에디터 슬래시 상태와 단축키 판별 분리
This commit is contained in:
44
lib/markdown-editor-keyboard.js
Normal file
44
lib/markdown-editor-keyboard.js
Normal 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'
|
||||
Reference in New Issue
Block a user