From 17101687bfbaa852f93a3b8c6856e13d916294cf Mon Sep 17 00:00:00 2001 From: roymondchen Date: Thu, 6 Jul 2023 16:29:42 +0800 Subject: [PATCH] =?UTF-8?q?feat(stage):=20feat(stage):=20=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E8=8E=B7=E5=8F=96moveable=E9=85=8D=E7=BD=AE=E7=9A=84?= =?UTF-8?q?=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit re #521 --- packages/stage/src/ActionManager.ts | 12 +++++++++++- packages/stage/src/MoveableOptionsManager.ts | 8 +++++++- packages/stage/src/StageCore.ts | 10 ++++++++-- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/packages/stage/src/ActionManager.ts b/packages/stage/src/ActionManager.ts index 5420d8d64..096accb91 100644 --- a/packages/stage/src/ActionManager.ts +++ b/packages/stage/src/ActionManager.ts @@ -19,9 +19,10 @@ import EventEmitter from 'events'; import KeyController from 'keycon'; import { throttle } from 'lodash-es'; +import type { MoveableOptions } from 'moveable'; import { Env } from '@tmagic/core'; -import { Id } from '@tmagic/schema'; +import type { Id } from '@tmagic/schema'; import { addClassName, getDocument, removeClassNameByClassName } from '@tmagic/utils'; import { CONTAINER_HIGHLIGHT_CLASS_NAME, GHOST_EL_ID_PREFIX, GuidesType, MouseButton, PAGE_CLASS } from './const'; @@ -186,6 +187,15 @@ export default class ActionManager extends EventEmitter { return this.selectedElList; } + public getMoveableOption(key: K): MoveableOptions[K] | undefined { + if (this.dr.getTarget()) { + return this.dr.getOption(key); + } + if (this.multiDr.targetList.length) { + return this.multiDr.getOption(key); + } + } + /** * 获取鼠标下方第一个可选中元素,如果元素层叠,返回到是最上层元素 * @param event 鼠标事件 diff --git a/packages/stage/src/MoveableOptionsManager.ts b/packages/stage/src/MoveableOptionsManager.ts index f718237f5..7ff78e711 100644 --- a/packages/stage/src/MoveableOptionsManager.ts +++ b/packages/stage/src/MoveableOptionsManager.ts @@ -36,6 +36,7 @@ export default class MoveableOptionsManager extends EventEmitter { /** 画布容器 */ protected container: HTMLElement; + protected options: MoveableOptions = {}; /** 水平参考线 */ private horizontalGuidelines: number[] = []; @@ -55,6 +56,10 @@ export default class MoveableOptionsManager extends EventEmitter { this.getRootContainer = config.getRootContainer; } + public getOption(key: K): MoveableOptions[K] { + return this.options[key]; + } + /** * 设置水平/垂直参考线 * @param type 参考线类型 @@ -106,7 +111,8 @@ export default class MoveableOptionsManager extends EventEmitter { const defaultOptions = this.getDefaultOptions(isMultiSelect); const customizedOptions = this.getCustomizeOptions(); - return merge(defaultOptions, customizedOptions, runtimeOptions); + this.options = merge(defaultOptions, customizedOptions, runtimeOptions); + return this.options; } /** diff --git a/packages/stage/src/StageCore.ts b/packages/stage/src/StageCore.ts index c37cd5a1a..085327e47 100644 --- a/packages/stage/src/StageCore.ts +++ b/packages/stage/src/StageCore.ts @@ -18,13 +18,15 @@ import { EventEmitter } from 'events'; -import { Id } from '@tmagic/schema'; +import type { MoveableOptions } from 'moveable'; + +import type { Id } from '@tmagic/schema'; import ActionManager from './ActionManager'; import { DEFAULT_ZOOM } from './const'; import StageMask from './StageMask'; import StageRender from './StageRender'; -import { +import type { ActionManagerConfig, CustomizeRender, GuidesEventData, @@ -207,6 +209,10 @@ export default class StageCore extends EventEmitter { return this.actionManager.delayedMarkContainer(event, excludeElList); } + public getMoveableOption(key: K): MoveableOptions[K] | undefined { + return this.actionManager.getMoveableOption(key); + } + /** * 销毁实例 */