UNPKG

myprint-design

Version:

操作简单,组件丰富的一站式打印解决方案打印设计器

1 lines 12.6 kB
{"version":3,"file":"keyboardUtil.mjs","sources":["../../../../src/utils/keyboardUtil.ts"],"sourcesContent":["import {\n moveableMoveOffset, moveableResizeOffset,\n removeSelectElement,\n selectAllElement,\n selectTabNext\n} from '@myprint/design/plugins/moveable/moveable';\nimport { redoPanel, undoPanel } from '@myprint/design/utils/historyUtil';\nimport { mitt } from '@myprint/design/utils/utils';\nimport { memoryClipboardUtil } from '@myprint/design/utils/memoryClipboardUtil';\n\n\nconst keyConvert = {\n Ctrl: ['Meta', 'Ctrl']\n} as Record<string, Array<string>>;\n\ninterface keyListener {\n keys: Array<string | ((event: KeyboardEvent) => boolean)>;\n callback: () => void;\n}\n\nconst eventListeners: Array<keyListener> = [];\nconst downKeyList = {} as any;\n\nexport function mountedKeyboardEvent() {\n addKeyboardEvent()\n // macos\n .subscribe([isCtrlShift, 'z'], () => {\n // console.log('isCtrl+Shift+z 重做')\n redoPanel();\n })\n // win\n .subscribe([isCtrlShift, 'y'], () => {\n // console.log('isCtrl+y 重做')\n redoPanel();\n })\n .subscribe([isCtrl, 'z'], () => {\n // console.log('isCtrl+z 撤销')\n undoPanel();\n })\n .subscribe([isCtrl, 'a'], () => {\n // console.log('isCtrl+a 全选');\n selectAllElement();\n })\n .subscribe([isCtrl, 'c'], () => {\n // console.log('isCtrl+c 复制')\n memoryClipboardUtil.copy();\n })\n .subscribe([isCtrl, 'x'], () => {\n // console.log('isCtrl+c 剪切')\n memoryClipboardUtil.cut();\n })\n .subscribe([isCtrl, 'v'], () => {\n // console.log('isCtrl+v 粘贴')\n memoryClipboardUtil.paste();\n })\n .subscribe([isCtrl, 'd'], () => {\n // console.log('isCtrl+d 副本')\n })\n .subscribe([isCtrl, 's'], () => {\n // console.log('isCtrl+s 保存')\n mitt.emit('saveTemplate', {} as any);\n })\n\n .subscribe(['Tab'], () => {\n // console.log('Tab切换')\n selectTabNext();\n })\n\n .subscribe([isCtrlShift, 'ArrowUp'], () => {\n // console.log('ArrowUp')\n moveableResizeOffset(0, -10);\n })\n .subscribe([isCtrlShift, 'ArrowDown'], () => {\n // console.log('ArrowDown')\n moveableResizeOffset(0, 10);\n })\n .subscribe([isCtrlShift, 'ArrowLeft'], () => {\n // console.log('ArrowLeft')\n moveableResizeOffset(-10, 0);\n })\n .subscribe([isCtrlShift, 'ArrowRight'], () => {\n // console.log('ArrowRight')\n moveableResizeOffset(10, 0);\n })\n\n .subscribe([isShift, 'ArrowUp'], () => {\n // console.log('ArrowUp')\n moveableMoveOffset(0, -10);\n })\n .subscribe([isShift, 'ArrowDown'], () => {\n moveableMoveOffset(0, 10);\n })\n .subscribe([isShift, 'ArrowLeft'], () => {\n moveableMoveOffset(-10, 0);\n })\n .subscribe([isShift, 'ArrowRight'], () => {\n moveableMoveOffset(10, 0);\n })\n\n .subscribe([isCtrl, 'ArrowUp'], () => {\n moveableResizeOffset(0, -1);\n })\n .subscribe([isCtrl, 'ArrowDown'], () => {\n moveableResizeOffset(0, 1);\n })\n .subscribe([isCtrl, 'ArrowLeft'], () => {\n moveableResizeOffset(-1, 0);\n })\n .subscribe([isCtrl, 'ArrowRight'], () => {\n moveableResizeOffset(1, 0);\n })\n\n .subscribe(['ArrowUp'], () => {\n moveableMoveOffset(0, -1);\n })\n .subscribe(['ArrowDown'], () => {\n moveableMoveOffset(0, 1);\n })\n .subscribe(['ArrowLeft'], () => {\n moveableMoveOffset(-1, 0);\n })\n .subscribe(['ArrowRight'], () => {\n moveableMoveOffset(1, 0);\n })\n\n .subscribe([isDelete], () => {\n // console.log('ArrowRight')\n removeSelectElement();\n });\n}\n\nexport function unMountedKeyboardEvent() {\n removeKeyboardEvent();\n}\n\nexport function addKeyboardEvent() {\n document.addEventListener('keydown', keyDown);\n document.addEventListener('keyup', keyUp);\n\n const handlers = {\n subscribe(keys: Array<string | ((event: KeyboardEvent) => boolean)>, callback: () => void) {\n eventListeners.push({\n keys,\n callback\n });\n return handlers;\n }\n };\n return handlers;\n}\n\nexport function removeKeyboardEvent() {\n document.removeEventListener('keydown', keyDown);\n document.removeEventListener('keyup', keyUp);\n}\n\nfunction keyUp(event: KeyboardEvent) {\n // console.log('up' + convertKey(event.key))\n delete downKeyList[convertKey(event.key)];\n // console.log(downKeyList)\n}\n\nfunction convertKey(key: string) {\n for (let keyConvertKey in keyConvert) {\n let convertList = keyConvert[keyConvertKey];\n if (convertList.includes(key)) {\n return keyConvertKey;\n }\n }\n return key;\n}\n\nfunction keyDown(event: KeyboardEvent) {\n // console.log(convertKey(event.key))\n // downKeyList[convertKey(event.key)] = true\n // console.log(downKeyList)\n // console.log(event.key)\n if ((event.target as HTMLElement).tagName === 'INPUT' || (event.target as HTMLElement).tagName === 'TEXTAREA') {\n // console.log('This event is triggered by an input or textarea!');\n return;\n }\n\n // const length = Object.getOwnPropertyNames(downKeyList).length\n for (let eventListener of eventListeners) {\n const { keys, callback } = eventListener;\n let isTrigger = true;\n\n // if (length !== keys.length) {\n // continue\n // }\n\n for (let key of keys) {\n // console.log(key, event.key)\n if (key instanceof Function) {\n if (!key(event)) {\n isTrigger = false;\n break;\n }\n } else {\n if (key != event.key) {\n isTrigger = false;\n break;\n }\n }\n\n // if (!downKeyList[key]) {\n // isTrigger = false\n // break\n // }\n }\n // console.log(isTrigger)\n if (isTrigger) {\n callback();\n event.preventDefault();\n event.stopPropagation();\n break;\n }\n }\n\n\n // if ((event.ctrlKey || event.metaKey) && event.key === 'z') {\n // console.log('Undo shortcut was pressed');\n // }\n // // 重做\n // if ((event.ctrlKey || event.metaKey) && (event.key === 'y' || (event.shiftKey && event.key === 'z'))) {\n // console.log('Redo shortcut was pressed');\n // }\n // // 方向键\n // if (['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'].includes(event.key)) {\n // console.log(`Arrow key was pressed: ${event.key}`);\n // }\n}\n\n// 兼容macos & win\nexport function isCtrl(event: KeyboardEvent) {\n return event.ctrlKey || event.metaKey;\n}\n\nexport function isShift(event: KeyboardEvent) {\n return event.shiftKey;\n}\n\nexport function isCtrlShift(event: KeyboardEvent) {\n // console.log(event)\n return (event.ctrlKey || event.metaKey) && event.shiftKey;\n}\n\nexport function isDelete(event: KeyboardEvent) {\n return event.key == 'Backspace';\n}\n"],"names":[],"mappings":"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"}