From 27481e856aec25a454a0a2ecd96eea5a0f09874b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8C=B4=E8=B5=9B=E9=9B=B7?= Date: Fri, 18 Oct 2024 16:06:47 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=87=E7=BA=A7=E4=BA=86=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 13 ++-- package.json | 4 +- .../core/hotkeys/actions/key-action-copy.ts | 18 ++++- .../core/hotkeys/actions/key-action-paste.ts | 17 +++- .../actions/key-action-remove-models.ts | 78 ++++++++++++------- 5 files changed, 87 insertions(+), 43 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5532a4c..6d11e94 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,15 +1,15 @@ { "name": "ddei-editor", - "version": "1.2.41-211-3", + "version": "1.2.41-211-10", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ddei-editor", - "version": "1.2.41-211-3", + "version": "1.2.41-211-10", "license": "Apache License 2.0", "dependencies": { - "ddei-framework": "file:///Users/hoslay/work/ddei/ddei-framework/ddei-framework-1.2.41-211.tgz" + "ddei-framework": "^1.2.41" }, "devDependencies": { "@tsconfig/node18": "^18.2.0", @@ -518,10 +518,9 @@ "integrity": "sha512-tdMuLdcJyreope1BWfnYqTQaIkSIrU/KtY9yX5mNGd+tYeJ0Y99ARHDuYnEABPX/8yh/r0Kl169v5ODg2vr98g==" }, "node_modules/ddei-framework": { - "version": "1.2.41-211", - "resolved": "file:../ddei-framework/ddei-framework-1.2.41-211.tgz", - "integrity": "sha512-HHO9DiumwucTt3DNPzQqcF7zfvu8t7I2EvGNIpSuWysk27wr8GpjvtDF1px2UfjMgxegvQybEa8Q0nFJIgVgmg==", - "license": "Apache License 2.0", + "version": "1.2.41", + "resolved": "https://registry.npmjs.org/ddei-framework/-/ddei-framework-1.2.41.tgz", + "integrity": "sha512-zcdAf54qLILPE8wN8VTQ7VOqLtBSQDUK+H9wDZjioBvWYMBkDwdpqJgOYXZPkl3JyWScYDNVlp26KJUxI5nJbg==", "dependencies": { "ddei-autolink": "^1.1.1", "lodash": "^4.17.21", diff --git a/package.json b/package.json index 4ce159f..71f4de8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ddei-editor", - "version": "1.2.41-211-3", + "version": "1.2.41", "private": false, "type": "module", "author": "hoslay <3697355039@qq.com>", @@ -49,7 +49,7 @@ "type-check": "vue-tsc --noEmit -p tsconfig.app.json --composite false" }, "dependencies": { - "ddei-framework": "file:///Users/hoslay/work/ddei/ddei-framework/ddei-framework-1.2.41-211.tgz" + "ddei-framework": "^1.2.41" }, "devDependencies": { "@tsconfig/node18": "^18.2.0", diff --git a/plugins/core/hotkeys/actions/key-action-copy.ts b/plugins/core/hotkeys/actions/key-action-copy.ts index 36e1b79..42455cd 100644 --- a/plugins/core/hotkeys/actions/key-action-copy.ts +++ b/plugins/core/hotkeys/actions/key-action-copy.ts @@ -27,6 +27,17 @@ class DDeiKeyActionCopy extends DDeiKeyAction { ] } + isActive(element: object): boolean { + if (!element) { + return true + } + if (element.tagName == 'BODY' || element.tagName == 'HEAD' || element.tagName == 'HTML') { + return true + } + + return false + } + getHotKeys(editor) { return [this]; } @@ -57,9 +68,9 @@ class DDeiKeyActionCopy extends DDeiKeyAction { // ============================ 方法 =============================== - async action(evt: Event, ddInstance: DDei, editor: DDeiEditor): void { + async action(evt: Event, ddInstance: DDei, editor: DDeiEditor): boolean { //修改当前操作控件坐标 - if (ddInstance && ddInstance.stage) { + if (ddInstance && ddInstance.stage && this.isActive(document.activeElement)) { //当前激活的图层 let selectedControls = ddInstance.stage.selectedModels; let rsState = DDeiUtil.invokeCallbackFunc("EVENT_COPY_BEFORE", "COPY", { models: selectedControls}, ddInstance) @@ -214,9 +225,12 @@ class DDeiKeyActionCopy extends DDeiKeyAction { if (!DDeiConfig.ALLOW_CLIPBOARD) { window.DDEI_CLIPBOARD = blob } + return true; } } } + + return false } } diff --git a/plugins/core/hotkeys/actions/key-action-paste.ts b/plugins/core/hotkeys/actions/key-action-paste.ts index e1a2f42..cc57281 100644 --- a/plugins/core/hotkeys/actions/key-action-paste.ts +++ b/plugins/core/hotkeys/actions/key-action-paste.ts @@ -60,11 +60,21 @@ class DDeiKeyActionPaste extends DDeiKeyAction { return DDeiKeyActionPaste; } + isActive(element: object): boolean { + if (!element) { + return true + } + if (element.tagName == 'BODY' || element.tagName == 'HEAD' || element.tagName == 'HTML') { + return true + } + + return false + } // ============================ 方法 =============================== - action(evt: Event, ddInstance: DDei): void { + action(evt: Event, ddInstance: DDei): boolean { //修改当前操作控件坐标 - if (ddInstance && ddInstance.stage) { + if (ddInstance && ddInstance.stage && this.isActive(document.activeElement)) { let modeName = DDeiUtil.getConfigValue("MODE_NAME", ddInstance); let accessCreate = DDeiUtil.isAccess( DDeiEnumOperateType.CREATE, null, null, modeName, @@ -73,8 +83,11 @@ class DDeiKeyActionPaste extends DDeiKeyAction { //校验权限 if (accessCreate) { this.doPaste(evt, ddInstance); + return true; } } + + return false } /** diff --git a/plugins/core/hotkeys/actions/key-action-remove-models.ts b/plugins/core/hotkeys/actions/key-action-remove-models.ts index f6a981d..69f2584 100644 --- a/plugins/core/hotkeys/actions/key-action-remove-models.ts +++ b/plugins/core/hotkeys/actions/key-action-remove-models.ts @@ -1,4 +1,4 @@ -import {DDeiConfig} from "ddei-framework"; +import { DDeiEditorUtil } from "ddei-framework"; import {DDei} from "ddei-framework"; import {DDeiKeyAction} from "ddei-framework"; import {DDeiEnumBusCommandType} from "ddei-framework"; @@ -52,43 +52,61 @@ class DDeiKeyActionRemoveModels extends DDeiKeyAction { } return DDeiKeyActionRemoveModels; } + + isActive(element: object): boolean { + if (!element) { + return true + } + if (element.tagName == 'BODY' || element.tagName == 'HEAD' || element.tagName == 'HTML') { + return true + } + + return false + } // ============================ 方法 =============================== - action(evt: Event, ddInstance: DDei): void { + action(evt: Event, ddInstance: DDei):boolean { //修改当前操作控件坐标 if (ddInstance && ddInstance.stage) { - let stageRender = ddInstance.stage.render; - let optContainer = stageRender.currentOperateContainer; - if (optContainer) { - let selectedModels = optContainer.getSelectedModels(); - //加载事件的配置 - let rsState = DDeiUtil.invokeCallbackFunc("EVENT_CONTROL_DEL_BEFORE", DDeiEnumOperateType.DEL, { models: Array.from(selectedModels.values()) }, ddInstance, evt) - if (rsState == 0 || rsState == 1) { - let models = Array.from(selectedModels.values()) - models[0].layer.opPoints = []; + //必须是canvas的子控件 + if (this.isActive(document.activeElement)){ + let stageRender = ddInstance.stage.render; + let optContainer = stageRender.currentOperateContainer; + if (optContainer) { + let selectedModels = optContainer.getSelectedModels(); + //加载事件的配置 + let rsState = DDeiUtil.invokeCallbackFunc("EVENT_CONTROL_DEL_BEFORE", DDeiEnumOperateType.DEL, { models: Array.from(selectedModels.values()) }, ddInstance, evt) + if (rsState == 0 || rsState == 1) { + let models = Array.from(selectedModels.values()) + models[0].layer.opPoints = []; - if (models[0].layer.opLine?.render) { - models[0].layer.opLine.render.enableRefreshShape() + if (models[0].layer.opLine?.render) { + models[0].layer.opLine.render.enableRefreshShape() + } + delete models[0].layer.opLine; + optContainer.removeModels(models, true) + optContainer.cascadeRemoveSelf() + + + ddInstance.bus.push(DDeiEnumBusCommandType.UpdatePaperArea); + ddInstance.bus.push(DDeiEnumBusCommandType.StageChangeSelectModels); + ddInstance.bus.push(DDeiEnumBusCommandType.UpdateSelectorBounds); + ddInstance.bus.push(DDeiEnumBusCommandType.NodifyChange); + ddInstance.bus.push(DDeiEnumBusCommandType.AddHistroy); + ddInstance.bus.push(DDeiEnumBusCommandType.ChangeStageWPV, { + dragObj: { dx: 0, dy: 0 }, x: 0, y: 0 + }) + //渲染图形 + ddInstance.bus.push(DDeiEnumBusCommandType.RefreshShape); + + ddInstance.bus.executeAll(); + + return true; } - delete models[0].layer.opLine; - optContainer.removeModels(models, true) - optContainer.cascadeRemoveSelf() - - - ddInstance.bus.push(DDeiEnumBusCommandType.UpdatePaperArea); - ddInstance.bus.push(DDeiEnumBusCommandType.StageChangeSelectModels); - ddInstance.bus.push(DDeiEnumBusCommandType.UpdateSelectorBounds); - ddInstance.bus.push(DDeiEnumBusCommandType.NodifyChange); - ddInstance.bus.push(DDeiEnumBusCommandType.AddHistroy); - ddInstance.bus.push(DDeiEnumBusCommandType.ChangeStageWPV, { - dragObj: { dx: 0, dy: 0 }, x: 0, y: 0 - }) - //渲染图形 - ddInstance.bus.push(DDeiEnumBusCommandType.RefreshShape); - - ddInstance.bus.executeAll(); } } } + + return false; } }