mirror of
https://gitee.com/dromara/go-view.git
synced 2025-04-06 03:58:04 +08:00
79 lines
2.1 KiB
TypeScript
79 lines
2.1 KiB
TypeScript
import { isMac, addEventListener, removeEventListener } from '@/utils'
|
||
import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore'
|
||
import { MenuEnum } from '@/enums/editPageEnum'
|
||
|
||
const chartEditStore = useChartEditStore()
|
||
|
||
export const keyboardValue = {
|
||
[MenuEnum.ARROW_UP]: 'arrowup',
|
||
[MenuEnum.ARROW_RIGHT]: 'arrowright',
|
||
[MenuEnum.ARROW_DOWN]: 'arrowdown',
|
||
[MenuEnum.ARROW_LEFT]: 'arrowleft',
|
||
[MenuEnum.COPY]: 'c',
|
||
[MenuEnum.CUT]: 'x',
|
||
[MenuEnum.PARSE]: 'v',
|
||
[MenuEnum.DELETE]: 'delete',
|
||
back: 'z',
|
||
}
|
||
|
||
const KeyboardHandle = (e: KeyboardEvent) => {
|
||
const isMacRes = isMac()
|
||
|
||
// 暂不支持mac,因为我没有😤👻
|
||
if (isMacRes) return
|
||
const key = e.key.toLowerCase()
|
||
|
||
// 删除(单纯的delete会和其他位置冲突)
|
||
// if (key === keyboardValue.delete) {
|
||
// chartEditStore.removeComponentList()
|
||
// return
|
||
// }
|
||
|
||
// 前进
|
||
if (e.altKey && e.shiftKey && key == keyboardValue.back) {
|
||
chartEditStore.setForward()
|
||
return
|
||
}
|
||
|
||
if (e.altKey) {
|
||
switch (key) {
|
||
// ↑
|
||
case keyboardValue.up: chartEditStore.setMove(MenuEnum.ARROW_UP)
|
||
break;
|
||
// →
|
||
case keyboardValue.right: chartEditStore.setMove(MenuEnum.ARROW_RIGHT)
|
||
break;
|
||
// ↓
|
||
case keyboardValue.down: chartEditStore.setMove(MenuEnum.ARROW_DOWN)
|
||
break;
|
||
// ←
|
||
case keyboardValue.left: chartEditStore.setMove(MenuEnum.ARROW_LEFT)
|
||
break;
|
||
// 删除
|
||
case keyboardValue.delete: chartEditStore.removeComponentList()
|
||
break;
|
||
// 复制
|
||
case keyboardValue.copy: chartEditStore.setCopy()
|
||
break;
|
||
// 剪切
|
||
case keyboardValue.cut: chartEditStore.setCut()
|
||
break;
|
||
// 粘贴
|
||
case keyboardValue.parse: chartEditStore.setParse()
|
||
break;
|
||
// 撤回
|
||
case keyboardValue.back: chartEditStore.setBack()
|
||
break;
|
||
}
|
||
e.preventDefault()
|
||
}
|
||
}
|
||
|
||
export const useAddKeyboard = () => {
|
||
addEventListener(document, 'keyup', KeyboardHandle, 20)
|
||
}
|
||
|
||
export const useRemoveKeyboard = () => {
|
||
removeEventListener(document, 'keyup', KeyboardHandle)
|
||
}
|