/** * 키보드 이벤트가 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'