에디터 슬래시 상태와 단축키 판별 분리

This commit is contained in:
2026-07-27 12:09:47 +09:00
parent 358199e595
commit bf48af7bd3
10 changed files with 361 additions and 69 deletions

View File

@@ -0,0 +1,44 @@
/**
* 키보드 이벤트가 Cmd/Ctrl 조합인지 확인한다.
* @param {KeyboardEvent|Object} event - 키보드 이벤트
* @returns {boolean} Cmd/Ctrl 조합 여부
*/
export const hasEditorCommandModifier = (event) => Boolean(event?.metaKey || event?.ctrlKey)
/**
* 에디터 히스토리 단축키 동작을 계산한다.
* @param {KeyboardEvent|Object} event - 키보드 이벤트
* @returns {'undo'|'redo'|''} 히스토리 동작
*/
export const getEditorHistoryKeyboardAction = (event) => {
const key = String(event?.key ?? '').toLowerCase()
if (!hasEditorCommandModifier(event) || event?.altKey) {
return ''
}
if (!event?.shiftKey && key === 'z') {
return 'undo'
}
if (event?.shiftKey && key === 'z' || key === 'y') {
return 'redo'
}
return ''
}
/**
* 에디터 작성/미리보기 모드 전환 단축키인지 확인한다.
* @param {KeyboardEvent|Object} event - 키보드 이벤트
* @returns {boolean} 모드 전환 단축키 여부
*/
export const isEditorModeToggleShortcut = (event) => hasEditorCommandModifier(event)
&& String(event?.key ?? '').toLowerCase() === 'e'
/**
* 미디어 선택 모달을 닫는 키 입력인지 확인한다.
* @param {KeyboardEvent|Object} event - 키보드 이벤트
* @returns {boolean} 닫기 키 여부
*/
export const isMediaPickerCloseShortcut = (event) => event?.key === 'Escape'