2022-02-03 22:54:31 +08:00
|
|
|
|
import { isMac, addEventListener, removeEventListener } from '@/utils'
|
|
|
|
|
import { getChartEditStore } from './useStore.hook'
|
2022-02-04 12:17:50 +08:00
|
|
|
|
import { MenuEnum } from '@/views/chart/hooks/useContextMenu.hook'
|
2022-02-03 22:54:31 +08:00
|
|
|
|
|
|
|
|
|
const chartEditStore = getChartEditStore()
|
|
|
|
|
|
2022-02-04 12:17:50 +08:00
|
|
|
|
|
|
|
|
|
export const keyboardValue = {
|
|
|
|
|
[MenuEnum.COPY]: 'c',
|
|
|
|
|
[MenuEnum.CUT]: 'x',
|
|
|
|
|
[MenuEnum.PARSE]: 'v',
|
|
|
|
|
[MenuEnum.DELETE]: 'delete',
|
|
|
|
|
back: 'z',
|
|
|
|
|
}
|
|
|
|
|
|
2022-02-03 22:54:31 +08:00
|
|
|
|
const KeyboardHandle = (e: KeyboardEvent) => {
|
|
|
|
|
const ismacRes = isMac()
|
|
|
|
|
|
|
|
|
|
// 暂不支持mac,因为我没有😤👻
|
2022-02-04 12:17:50 +08:00
|
|
|
|
if (ismacRes) return
|
2022-02-03 22:54:31 +08:00
|
|
|
|
const key = e.key.toLowerCase()
|
|
|
|
|
|
2022-02-04 12:17:50 +08:00
|
|
|
|
// 删除
|
|
|
|
|
if (key === keyboardValue.delete) {
|
2022-02-03 22:54:31 +08:00
|
|
|
|
chartEditStore.removeComponentList()
|
|
|
|
|
return
|
|
|
|
|
}
|
2022-02-04 12:17:50 +08:00
|
|
|
|
// 前进
|
|
|
|
|
if (e.ctrlKey && e.shiftKey && key == keyboardValue.back) {
|
|
|
|
|
chartEditStore.setForward()
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
2022-02-03 22:54:31 +08:00
|
|
|
|
if (e.ctrlKey) {
|
|
|
|
|
switch (key) {
|
|
|
|
|
// 复制
|
2022-02-04 12:17:50 +08:00
|
|
|
|
case keyboardValue.copy: chartEditStore.setCopy()
|
|
|
|
|
break;
|
|
|
|
|
// 剪切
|
|
|
|
|
case keyboardValue.cut: chartEditStore.setCut()
|
2022-02-03 22:54:31 +08:00
|
|
|
|
break;
|
|
|
|
|
// 粘贴
|
2022-02-04 12:17:50 +08:00
|
|
|
|
case keyboardValue.parse: chartEditStore.setParse()
|
|
|
|
|
break;
|
|
|
|
|
// 撤回
|
|
|
|
|
case keyboardValue.back: chartEditStore.setBack()
|
2022-02-03 22:54:31 +08:00
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
e.preventDefault()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export const useAddKeyboard = () => {
|
|
|
|
|
addEventListener(document, 'keyup', KeyboardHandle)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export const useRemoveKeyboard = () => {
|
|
|
|
|
removeEventListener(document, 'keyup', KeyboardHandle)
|
|
|
|
|
}
|