feat: 合并多选功能,解决冲突,升级版本到2.0.4

This commit is contained in:
奔跑的面条
2022-08-19 10:44:44 +08:00
55 changed files with 1746 additions and 641 deletions
+37 -16
View File
@@ -24,6 +24,8 @@ export const winKeyboardValue = {
[MenuEnum.BACK]: winCtrlMerge('z'),
[MenuEnum.FORWORD]: winCtrlMerge(winShiftMerge('z')),
[MenuEnum.SAVE]: winCtrlMerge('s'),
[MenuEnum.GROUP]: winCtrlMerge('g'),
[MenuEnum.UN_GROUP]: winCtrlMerge(winShiftMerge('g')),
}
// 这个 Ctrl 后面还是换成了 ⌘
@@ -44,6 +46,8 @@ export const macKeyboardValue = {
[MenuEnum.BACK]: macCtrlMerge('z'),
[MenuEnum.FORWORD]: macCtrlMerge(macShiftMerge('z')),
[MenuEnum.SAVE]: macCtrlMerge('s'),
[MenuEnum.GROUP]: macCtrlMerge('g'),
[MenuEnum.UN_GROUP]: macCtrlMerge(macShiftMerge('g')),
}
// Win 快捷键列表
@@ -62,6 +66,8 @@ const winKeyList: Array<string> = [
winKeyboardValue.forward,
winKeyboardValue.save,
winKeyboardValue.group,
winKeyboardValue.unGroup,
]
// Mac 快捷键列表
@@ -80,65 +86,80 @@ const macKeyList: Array<string> = [
macKeyboardValue.forward,
macKeyboardValue.save,
macKeyboardValue.group,
macKeyboardValue.unGroup,
]
// 处理键盘记录
const keyRecordHandle = () => {
document.onkeydown = throttle((e: KeyboardEvent) => {
if(window.$KeyboardActive) window.$KeyboardActive.add(e.key.toLocaleLowerCase())
else window.$KeyboardActive = new Set([e.key])
}, 200)
// 初始化清空
if(window.$KeyboardActive) window.$KeyboardActive = new Set([])
document.onkeyup = throttle((e: KeyboardEvent) => {
document.onkeydown = (e: KeyboardEvent) => {
if(window.$KeyboardActive) window.$KeyboardActive.add(e.key.toLocaleLowerCase())
else window.$KeyboardActive = new Set([e.key.toLocaleLowerCase()])
}
document.onkeyup = (e: KeyboardEvent) => {
if(window.$KeyboardActive) window.$KeyboardActive.delete(e.key.toLocaleLowerCase())
}, 200)
}
}
// 初始化监听事件
export const useAddKeyboard = () => {
const throttleTime = 50
const switchHandle = (keyboardValue: typeof winKeyboardValue, e: string) => {
switch (e) {
// ct+↑
case keyboardValue.up:
keymaster(e, throttle(() => { chartEditStore.setMove(MenuEnum.ARROW_UP); return false }, 200))
keymaster(e, throttle(() => { chartEditStore.setMove(MenuEnum.ARROW_UP); return false }, throttleTime))
break;
// ct+→
case keyboardValue.right:
keymaster(e, throttle(() => { chartEditStore.setMove(MenuEnum.ARROW_RIGHT); return false }, 200))
keymaster(e, throttle(() => { chartEditStore.setMove(MenuEnum.ARROW_RIGHT); return false }, throttleTime))
break;
// ct+↓
case keyboardValue.down:
keymaster(e, throttle(() => { chartEditStore.setMove(MenuEnum.ARROW_DOWN); return false }, 200))
keymaster(e, throttle(() => { chartEditStore.setMove(MenuEnum.ARROW_DOWN); return false }, throttleTime))
break;
// ct+←
case keyboardValue.left:
keymaster(e, throttle(() => { chartEditStore.setMove(MenuEnum.ARROW_LEFT); return false }, 200))
keymaster(e, throttle(() => { chartEditStore.setMove(MenuEnum.ARROW_LEFT); return false }, throttleTime))
break;
// 删除 delete
case keyboardValue.delete:
keymaster(e, debounce(() => { chartEditStore.removeComponentList(); return false }, 200))
keymaster(e, debounce(() => { chartEditStore.removeComponentList(); return false }, throttleTime))
break;
// 复制 ct+v
case keyboardValue.copy:
keymaster(e, debounce(() => { chartEditStore.setCopy(); return false }, 200))
keymaster(e, debounce(() => { chartEditStore.setCopy(); return false }, throttleTime))
break;
// 剪切 ct+x
case keyboardValue.cut:
keymaster(e, debounce(() => { chartEditStore.setCut(); return false }, 200))
keymaster(e, debounce(() => { chartEditStore.setCut(); return false }, throttleTime))
break;
// 粘贴 ct+v
case keyboardValue.parse:
keymaster(e, throttle(() => { chartEditStore.setParse(); return false }, 200))
keymaster(e, throttle(() => { chartEditStore.setParse(); return false }, throttleTime))
break;
// 撤回 ct+z
case keyboardValue.back:
keymaster(e, throttle(() => { chartEditStore.setBack(); return false }, 200))
keymaster(e, throttle(() => { chartEditStore.setBack(); return false }, throttleTime))
break;
// 前进 ct+sh+z
case keyboardValue.forward:
keymaster(e, throttle(() => { chartEditStore.setForward(); return false }, 200))
keymaster(e, throttle(() => { chartEditStore.setForward(); return false }, throttleTime))
break;
// 创建分组 ct+g
case keyboardValue.group:
keymaster(e, throttle(() => { chartEditStore.setGroup(); return false }, throttleTime))
break;
// 解除分组 ct+sh+g
case keyboardValue.unGroup:
keymaster(e, throttle(() => { chartEditStore.setUnGroup(); return false }, throttleTime))
break;
// 保存 ct+s