@tmagic/stage 1.3.0-alpha.2 → 1.3.0-alpha.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.3.0-alpha.2",
2
+ "version": "1.3.0-alpha.21",
3
3
  "name": "@tmagic/stage",
4
4
  "type": "module",
5
5
  "sideEffects": [
@@ -29,14 +29,14 @@
29
29
  "url": "https://github.com/Tencent/tmagic-editor.git"
30
30
  },
31
31
  "dependencies": {
32
- "@scena/guides": "^0.23.3",
33
- "@tmagic/core": "1.3.0-alpha.2",
34
- "@tmagic/schema": "1.3.0-alpha.2",
35
- "@tmagic/utils": "1.3.0-alpha.2",
32
+ "@scena/guides": "^0.29.2",
33
+ "@tmagic/core": "1.3.0-alpha.21",
34
+ "@tmagic/schema": "1.3.0-alpha.21",
35
+ "@tmagic/utils": "1.3.0-alpha.21",
36
36
  "events": "^3.3.0",
37
- "keycon": "^1.1.2",
37
+ "keycon": "^1.4.0",
38
38
  "lodash-es": "^4.17.21",
39
- "moveable": "^0.43.1",
39
+ "moveable": "^0.51.1",
40
40
  "moveable-helper": "^0.4.0"
41
41
  },
42
42
  "devDependencies": {
@@ -46,6 +46,6 @@
46
46
  "rimraf": "^3.0.2",
47
47
  "sass": "^1.35.1",
48
48
  "typescript": "^5.0.4",
49
- "vite": "^4.2.1"
49
+ "vite": "^4.4.4"
50
50
  }
51
51
  }
@@ -19,9 +19,10 @@ import EventEmitter from 'events';
19
19
 
20
20
  import KeyController from 'keycon';
21
21
  import { throttle } from 'lodash-es';
22
+ import type { MoveableOptions } from 'moveable';
22
23
 
23
24
  import { Env } from '@tmagic/core';
24
- import { Id } from '@tmagic/schema';
25
+ import type { Id } from '@tmagic/schema';
25
26
  import { addClassName, getDocument, removeClassNameByClassName } from '@tmagic/utils';
26
27
 
27
28
  import { CONTAINER_HIGHLIGHT_CLASS_NAME, GHOST_EL_ID_PREFIX, GuidesType, MouseButton, PAGE_CLASS } from './const';
@@ -111,7 +112,7 @@ export default class ActionManager extends EventEmitter {
111
112
  this.dr = new StageDragResize({
112
113
  container: config.container,
113
114
  disabledDragStart: config.disabledDragStart,
114
- moveableOptions: this.changeCallback(config.moveableOptions),
115
+ moveableOptions: this.changeCallback(config.moveableOptions, false),
115
116
  dragResizeHelper: createDrHelper(),
116
117
  getRootContainer: config.getRootContainer,
117
118
  getRenderDocument: config.getRenderDocument,
@@ -120,7 +121,7 @@ export default class ActionManager extends EventEmitter {
120
121
  });
121
122
  this.multiDr = new StageMultiDragResize({
122
123
  container: config.container,
123
- multiMoveableOptions: config.multiMoveableOptions,
124
+ moveableOptions: this.changeCallback(config.moveableOptions, true),
124
125
  dragResizeHelper: createDrHelper(),
125
126
  getRootContainer: config.getRootContainer,
126
127
  getRenderDocument: config.getRenderDocument,
@@ -186,6 +187,15 @@ export default class ActionManager extends EventEmitter {
186
187
  return this.selectedElList;
187
188
  }
188
189
 
190
+ public getMoveableOption<K extends keyof MoveableOptions>(key: K): MoveableOptions[K] | undefined {
191
+ if (this.dr.getTarget()) {
192
+ return this.dr.getOption(key);
193
+ }
194
+ if (this.multiDr.targetList.length) {
195
+ return this.multiDr.getOption(key);
196
+ }
197
+ }
198
+
189
199
  /**
190
200
  * 获取鼠标下方第一个可选中元素,如果元素层叠,返回到是最上层元素
191
201
  * @param event 鼠标事件
@@ -343,14 +353,18 @@ export default class ActionManager extends EventEmitter {
343
353
  this.highlightLayer.destroy();
344
354
  }
345
355
 
346
- private changeCallback(options: CustomizeMoveableOptions): CustomizeMoveableOptions {
356
+ private changeCallback(options: CustomizeMoveableOptions, isMulti: boolean): CustomizeMoveableOptions {
347
357
  // 在actionManager才能获取到各种参数,在这里传好参数有比较好的扩展性
348
358
  if (typeof options === 'function') {
349
359
  return () => {
350
360
  // 要再判断一次,不然过不了ts检查
351
361
  if (typeof options === 'function') {
352
362
  const cfg: CustomizeMoveableOptionsCallbackConfig = {
363
+ targetEl: this.selectedEl,
353
364
  targetElId: this.selectedEl?.id,
365
+ targetEls: this.selectedElList,
366
+ targetElIds: this.selectedElList?.map((item) => item.id),
367
+ isMulti,
354
368
  };
355
369
  return options(cfg);
356
370
  }
@@ -1,13 +1,12 @@
1
1
  import { MoveableManagerInterface, Renderer } from 'moveable';
2
2
 
3
+ import ableCss from './moveable-able.css?raw';
3
4
  import { AbleActionEventType } from './types';
4
5
 
5
6
  export default (handler: (type: AbleActionEventType) => void) => ({
6
7
  name: 'actions',
7
- props: {
8
- selectParent: Boolean,
9
- },
10
- events: {},
8
+ props: [],
9
+ events: [],
11
10
  render(moveable: MoveableManagerInterface<any, any>, React: Renderer) {
12
11
  const rect = moveable.getRect();
13
12
  const { pos2 } = moveable.state;
@@ -24,34 +23,7 @@ export default (handler: (type: AbleActionEventType) => void) => ({
24
23
  transform-origin: 0px 0px;
25
24
  display: flex;
26
25
  }
27
- .moveable-button {
28
- width: 20px;
29
- height: 20px;
30
- background: #4af;
31
- border-radius: 4px;
32
- appearance: none;
33
- border: 0;
34
- color: white;
35
- font-size: 12px;
36
- font-weight: bold;
37
- margin-left: 2px;
38
- position: relative;
39
- }
40
- .moveable-remove-button:before, .moveable-remove-button:after {
41
- content: "";
42
- position: absolute;
43
- left: 50%;
44
- top: 50%;
45
- transform: translate(-50%, -50%) rotate(45deg);
46
- width: 14px;
47
- height: 2px;
48
- background: #fff;
49
- border-radius: 1px;
50
- cursor: pointer;
51
- }
52
- .moveable-remove-button:after {
53
- transform: translate(-50%, -50%) rotate(-45deg);
54
- }
26
+ ${ableCss}
55
27
  `,
56
28
  );
57
29
  // Add key (required)
@@ -61,7 +33,7 @@ export default (handler: (type: AbleActionEventType) => void) => ({
61
33
  {
62
34
  className: 'moveable-editable',
63
35
  style: {
64
- transform: `translate(${pos2[0] - 48}px, ${pos2[1] - 28}px) rotate(${rect.rotation}deg) translate(10px)`,
36
+ transform: `translate(${pos2[0] - 60}px, ${pos2[1] - 28}px) rotate(${rect.rotation}deg)`,
65
37
  },
66
38
  },
67
39
  [
@@ -74,27 +46,12 @@ export default (handler: (type: AbleActionEventType) => void) => ({
74
46
  handler(AbleActionEventType.SELECT_PARENT);
75
47
  },
76
48
  },
77
- React.createElement(
78
- 'svg',
79
- {
80
- width: '20px',
81
- height: '20px',
82
- viewBox: '0 0 16 16',
83
- fill: 'none',
84
- xmlns: 'http://www.w3.org/2000/svg',
85
- style: {
86
- transform: 'rotate(90deg)',
87
- position: 'absolute',
88
- left: 0,
89
- top: 0,
90
- },
91
- },
92
- React.createElement('path', {
93
- d: 'M13.0001 4V10H4.20718L5.85363 8.35355L5.14652 7.64645L2.64652 10.1464C2.45126 10.3417 2.45126 10.6583 2.64652 10.8536L5.14652 13.3536L5.85363 12.6464L4.20718 11H13.0001C13.5524 11 14.0001 10.5523 14.0001 10V4H13.0001Z',
94
- fill: 'currentColor',
95
- fillOpacity: '0.9',
96
- }),
97
- ),
49
+ React.createElement('div', {
50
+ className: 'moveable-select-parent-arrow-top-icon',
51
+ }),
52
+ React.createElement('div', {
53
+ className: 'moveable-select-parent-arrow-body-icon',
54
+ }),
98
55
  ),
99
56
  React.createElement('button', {
100
57
  className: 'moveable-button moveable-remove-button',
@@ -103,6 +60,31 @@ export default (handler: (type: AbleActionEventType) => void) => ({
103
60
  handler(AbleActionEventType.REMOVE);
104
61
  },
105
62
  }),
63
+ React.createElement(
64
+ 'button',
65
+ {
66
+ className: 'moveable-button moveable-drag-area-button',
67
+ title: '拖动',
68
+ },
69
+ React.createElement('div', {
70
+ className: 'moveable-select-parent-arrow-top-icon moveable-select-parent-arrow-top-icon-top',
71
+ }),
72
+ React.createElement('div', {
73
+ className: 'moveable-select-parent-arrow-top-icon moveable-select-parent-arrow-top-icon-bottom',
74
+ }),
75
+ React.createElement('div', {
76
+ className: 'moveable-select-parent-arrow-top-icon moveable-select-parent-arrow-top-icon-left',
77
+ }),
78
+ React.createElement('div', {
79
+ className: ' moveable-select-parent-arrow-top-icon moveable-select-parent-arrow-top-icon-right',
80
+ }),
81
+ React.createElement('div', {
82
+ className: 'moveable-select-parent-arrow-body-icon-horizontal',
83
+ }),
84
+ React.createElement('div', {
85
+ className: 'moveable-select-parent-arrow-body-icon-vertical',
86
+ }),
87
+ ),
106
88
  ],
107
89
  );
108
90
  },
@@ -36,6 +36,7 @@ export default class MoveableOptionsManager extends EventEmitter {
36
36
 
37
37
  /** 画布容器 */
38
38
  protected container: HTMLElement;
39
+ protected options: MoveableOptions = {};
39
40
 
40
41
  /** 水平参考线 */
41
42
  private horizontalGuidelines: number[] = [];
@@ -55,6 +56,10 @@ export default class MoveableOptionsManager extends EventEmitter {
55
56
  this.getRootContainer = config.getRootContainer;
56
57
  }
57
58
 
59
+ public getOption<K extends keyof MoveableOptions>(key: K): MoveableOptions[K] {
60
+ return this.options[key];
61
+ }
62
+
58
63
  /**
59
64
  * 设置水平/垂直参考线
60
65
  * @param type 参考线类型
@@ -106,7 +111,8 @@ export default class MoveableOptionsManager extends EventEmitter {
106
111
  const defaultOptions = this.getDefaultOptions(isMultiSelect);
107
112
  const customizedOptions = this.getCustomizeOptions();
108
113
 
109
- return merge(defaultOptions, customizedOptions, runtimeOptions);
114
+ this.options = merge(defaultOptions, customizedOptions, runtimeOptions);
115
+ return this.options;
110
116
  }
111
117
 
112
118
  /**
@@ -128,9 +134,8 @@ export default class MoveableOptionsManager extends EventEmitter {
128
134
  elementGuidelines: this.elementGuidelines,
129
135
  bounds: {
130
136
  top: 0,
131
- // 设置0的话无法移动到left为0,所以只能设置为-1
132
- left: -1,
133
- right: this.container.clientWidth - 1,
137
+ left: 0,
138
+ right: this.container.clientWidth,
134
139
  bottom: isSortable ? undefined : this.container.clientHeight,
135
140
  },
136
141
  };
@@ -171,7 +176,8 @@ export default class MoveableOptionsManager extends EventEmitter {
171
176
  left: isAbsolute,
172
177
  },
173
178
  isDisplayInnerSnapDigit: true,
174
-
179
+ dragTarget: '.moveable-drag-area-button',
180
+ dragTargetSelf: true,
175
181
  props: {
176
182
  actions: true,
177
183
  },
package/src/StageCore.ts CHANGED
@@ -18,13 +18,15 @@
18
18
 
19
19
  import { EventEmitter } from 'events';
20
20
 
21
- import { Id } from '@tmagic/schema';
21
+ import type { MoveableOptions } from 'moveable';
22
+
23
+ import type { Id } from '@tmagic/schema';
22
24
 
23
25
  import ActionManager from './ActionManager';
24
26
  import { DEFAULT_ZOOM } from './const';
25
27
  import StageMask from './StageMask';
26
28
  import StageRender from './StageRender';
27
- import {
29
+ import type {
28
30
  ActionManagerConfig,
29
31
  CustomizeRender,
30
32
  GuidesEventData,
@@ -123,6 +125,10 @@ export default class StageCore extends EventEmitter {
123
125
  this.actionManager.highlight(idOrEl);
124
126
  }
125
127
 
128
+ public clearHighlight(): void {
129
+ this.actionManager.clearHighlight();
130
+ }
131
+
126
132
  /**
127
133
  * 更新组件
128
134
  * @param data 更新组件的数据
@@ -207,6 +213,10 @@ export default class StageCore extends EventEmitter {
207
213
  return this.actionManager.delayedMarkContainer(event, excludeElList);
208
214
  }
209
215
 
216
+ public getMoveableOption<K extends keyof MoveableOptions>(key: K): MoveableOptions[K] | undefined {
217
+ return this.actionManager.getMoveableOption(key);
218
+ }
219
+
210
220
  /**
211
221
  * 销毁实例
212
222
  */
@@ -243,7 +253,6 @@ export default class StageCore extends EventEmitter {
243
253
  containerHighlightDuration: config.containerHighlightDuration,
244
254
  containerHighlightType: config.containerHighlightType,
245
255
  moveableOptions: config.moveableOptions,
246
- multiMoveableOptions: config.multiMoveableOptions,
247
256
  container: this.mask.content,
248
257
  disabledDragStart: config.disabledDragStart,
249
258
  canSelect: config.canSelect,
@@ -95,14 +95,14 @@ export default class StageDragResize extends MoveableOptionsManager {
95
95
  Object.entries(options).forEach(([key, value]) => {
96
96
  (this.moveable as any)[key] = value;
97
97
  });
98
- this.moveable.updateTarget();
98
+ this.moveable.updateRect();
99
99
  }
100
100
 
101
101
  public clearSelectStatus(): void {
102
102
  if (!this.moveable) return;
103
103
  this.dragResizeHelper.destroyShadowEl();
104
104
  this.moveable.target = null;
105
- this.moveable.updateTarget();
105
+ this.moveable.updateRect();
106
106
  }
107
107
 
108
108
  /**
@@ -28,7 +28,7 @@ export default class StageHighlight extends EventEmitter {
28
28
  public container: HTMLElement;
29
29
  public target?: HTMLElement;
30
30
  public moveable?: Moveable;
31
- public targetShadow: TargetShadow;
31
+ public targetShadow?: TargetShadow;
32
32
  private getRootContainer: GetRootContainer;
33
33
 
34
34
  constructor(config: StageHighlightConfig) {
@@ -52,14 +52,19 @@ export default class StageHighlight extends EventEmitter {
52
52
  public highlight(el: HTMLElement): void {
53
53
  if (!el || el === this.target) return;
54
54
  this.target = el;
55
- this.moveable?.destroy();
56
55
 
57
- this.moveable = new Moveable(this.container, {
58
- target: this.targetShadow.update(el),
59
- origin: false,
60
- rootContainer: this.getRootContainer(),
61
- zoom: 2,
62
- });
56
+ this.targetShadow?.update(el);
57
+ if (this.moveable) {
58
+ this.moveable.zoom = 2;
59
+ this.moveable.updateRect();
60
+ } else {
61
+ this.moveable = new Moveable(this.container, {
62
+ target: this.targetShadow?.el,
63
+ origin: false,
64
+ rootContainer: this.getRootContainer(),
65
+ zoom: 2,
66
+ });
67
+ }
63
68
  }
64
69
 
65
70
  /**
@@ -67,9 +72,9 @@ export default class StageHighlight extends EventEmitter {
67
72
  */
68
73
  public clearHighlight(): void {
69
74
  if (!this.moveable || !this.target) return;
75
+ this.moveable.zoom = 0;
76
+ this.moveable.updateRect();
70
77
  this.target = undefined;
71
- this.moveable.target = null;
72
- this.moveable.updateTarget();
73
78
  }
74
79
 
75
80
  /**
@@ -77,6 +82,8 @@ export default class StageHighlight extends EventEmitter {
77
82
  */
78
83
  public destroy(): void {
79
84
  this.moveable?.destroy();
80
- this.targetShadow.destroy();
85
+ this.targetShadow?.destroy();
86
+ this.moveable = undefined;
87
+ this.targetShadow = undefined;
81
88
  }
82
89
  }
@@ -47,7 +47,7 @@ export default class StageMultiDragResize extends MoveableOptionsManager {
47
47
  constructor(config: StageMultiDragResizeConfig) {
48
48
  const moveableOptionsManagerConfig: MoveableOptionsManagerConfig = {
49
49
  container: config.container,
50
- moveableOptions: config.multiMoveableOptions,
50
+ moveableOptions: config.moveableOptions,
51
51
  getRootContainer: config.getRootContainer,
52
52
  };
53
53
  super(moveableOptionsManagerConfig);
@@ -173,7 +173,7 @@ export default class StageMultiDragResize extends MoveableOptionsManager {
173
173
  Object.entries(options).forEach(([key, value]) => {
174
174
  (this.moveableForMulti as any)[key] = value;
175
175
  });
176
- this.moveableForMulti.updateTarget();
176
+ this.moveableForMulti.updateRect();
177
177
  }
178
178
 
179
179
  /**
@@ -0,0 +1,108 @@
1
+ .moveable-button {
2
+ width: 20px;
3
+ height: 20px;
4
+ background: #4af;
5
+ border-radius: 4px;
6
+ appearance: none;
7
+ border: 0;
8
+ color: white;
9
+ font-size: 12px;
10
+ font-weight: bold;
11
+ margin-left: 2px;
12
+ position: relative;
13
+ }
14
+ .moveable-remove-button:before, .moveable-remove-button:after {
15
+ content: "";
16
+ position: absolute;
17
+ left: 50%;
18
+ top: 50%;
19
+ transform: translate(-50%, -50%) rotate(45deg);
20
+ width: 14px;
21
+ height: 2px;
22
+ background: #fff;
23
+ border-radius: 1px;
24
+ cursor: pointer;
25
+ }
26
+ .moveable-remove-button:after {
27
+ transform: translate(-50%, -50%) rotate(-45deg);
28
+ }
29
+
30
+ .moveable-select-parent-arrow-top-icon {
31
+ transform: rotateZ(-45deg);
32
+ width: 4px;
33
+ height: 4px;
34
+ border-color: #fff;
35
+ border-width: 2px 2px 0 0;
36
+ border-style: solid;
37
+ position: absolute;
38
+ left: 4px;
39
+ top: 4px;
40
+ }
41
+
42
+ .moveable-select-parent-arrow-body-icon {
43
+ width: 7px;
44
+ height: 11px;
45
+ border-color: #fff;
46
+ border-width: 0 0 2px 2px;
47
+ border-style: solid;
48
+ }
49
+
50
+ .moveable-drag-area-button {
51
+ cursor: move;
52
+ }
53
+
54
+ .moveable-drag-area-button .moveable-select-parent-arrow-top-icon {
55
+ width: 2px;
56
+ height: 2px;
57
+ }
58
+
59
+ .moveable-drag-area-button .moveable-select-parent-arrow-top-icon-top {
60
+ transform: rotateZ(-45deg) translateX(-50%);
61
+ left: 50%;
62
+ top: 3px;
63
+ transform-origin: left;
64
+ }
65
+
66
+ .moveable-drag-area-button .moveable-select-parent-arrow-top-icon-bottom {
67
+ transform: rotateZ(135deg) translateX(-50%);
68
+ transform-origin: left;
69
+ left: 50%;
70
+ top: auto;
71
+ bottom: 3px;
72
+ }
73
+
74
+ .moveable-drag-area-button .moveable-select-parent-arrow-top-icon-right {
75
+ transform: rotateZ(45deg) translateY(-50%);
76
+ transform-origin: top;
77
+ right: 3px;
78
+ left: auto;
79
+ top: 50%;
80
+ }
81
+
82
+ .moveable-drag-area-button .moveable-select-parent-arrow-top-icon-left {
83
+ transform: rotateZ(235deg) translateY(-50%);
84
+ transform-origin: top;
85
+ left: 3px;
86
+ top: 50%;
87
+ }
88
+
89
+ .moveable-drag-area-button .moveable-select-parent-arrow-body-icon-horizontal {
90
+ width: 2px;
91
+ height: 11px;
92
+ background-color: #fff;
93
+ position: absolute;
94
+ transform: translateX(-50%);
95
+ left: 50%;
96
+ top: 4px;
97
+ }
98
+
99
+ .moveable-drag-area-button .moveable-select-parent-arrow-body-icon-vertical {
100
+ width: 11px;
101
+ height: 2px;
102
+ background-color: #fff;
103
+ position: absolute;
104
+ transform: translateY(-50%);
105
+ left: 4px;
106
+ top: 50%;;
107
+ }
108
+
package/src/types.ts CHANGED
@@ -65,7 +65,6 @@ export interface StageCoreConfig {
65
65
  containerHighlightDuration?: number;
66
66
  containerHighlightType?: ContainerHighlightType;
67
67
  moveableOptions?: CustomizeMoveableOptions;
68
- multiMoveableOptions?: CustomizeMoveableOptions;
69
68
  /** runtime 的HTML地址,可以是一个HTTP地址,如果和编辑器不同域,需要设置跨域,也可以是一个相对或绝对路径 */
70
69
  runtimeUrl?: string;
71
70
  render?: (renderer: StageCore) => Promise<HTMLElement> | HTMLElement;
@@ -80,7 +79,6 @@ export interface ActionManagerConfig {
80
79
  containerHighlightDuration?: number;
81
80
  containerHighlightType?: ContainerHighlightType;
82
81
  moveableOptions?: CustomizeMoveableOptions;
83
- multiMoveableOptions?: CustomizeMoveableOptions;
84
82
  disabledDragStart?: boolean;
85
83
  canSelect?: CanSelect;
86
84
  isContainer: IsContainer;
@@ -98,7 +96,11 @@ export interface MoveableOptionsManagerConfig {
98
96
  }
99
97
 
100
98
  export interface CustomizeMoveableOptionsCallbackConfig {
99
+ targetEl?: HTMLElement;
101
100
  targetElId?: string;
101
+ targetEls?: HTMLElement[];
102
+ targetElIds?: string[];
103
+ isMulti: boolean;
102
104
  }
103
105
 
104
106
  export interface StageRenderConfig {
@@ -125,7 +127,7 @@ export interface StageDragResizeConfig {
125
127
  export interface StageMultiDragResizeConfig {
126
128
  container: HTMLElement;
127
129
  dragResizeHelper: DragResizeHelper;
128
- multiMoveableOptions?: CustomizeMoveableOptions;
130
+ moveableOptions?: CustomizeMoveableOptions;
129
131
  getRootContainer: GetRootContainer;
130
132
  getRenderDocument: GetRenderDocument;
131
133
  markContainerEnd: MarkContainerEnd;
@@ -1,7 +1,8 @@
1
1
  /// <reference types="node" />
2
2
  /// <reference types="node" />
3
3
  import EventEmitter from 'events';
4
- import { Id } from '@tmagic/schema';
4
+ import type { MoveableOptions } from 'moveable';
5
+ import type { Id } from '@tmagic/schema';
5
6
  import { GuidesType } from './const';
6
7
  import { ActionManagerConfig, SelectStatus } from './types';
7
8
  /**
@@ -58,6 +59,7 @@ export default class ActionManager extends EventEmitter {
58
59
  setSelectedEl(el: HTMLElement): void;
59
60
  getSelectedEl(): HTMLElement | undefined;
60
61
  getSelectedElList(): HTMLElement[];
62
+ getMoveableOption<K extends keyof MoveableOptions>(key: K): MoveableOptions[K] | undefined;
61
63
  /**
62
64
  * 获取鼠标下方第一个可选中元素,如果元素层叠,返回到是最上层元素
63
65
  * @param event 鼠标事件
@@ -2,10 +2,8 @@ import { MoveableManagerInterface, Renderer } from 'moveable';
2
2
  import { AbleActionEventType } from './types';
3
3
  declare const _default: (handler: (type: AbleActionEventType) => void) => {
4
4
  name: string;
5
- props: {
6
- selectParent: BooleanConstructor;
7
- };
8
- events: {};
5
+ props: never[];
6
+ events: never[];
9
7
  render(moveable: MoveableManagerInterface<any, any>, React: Renderer): any;
10
8
  };
11
9
  export default _default;
@@ -12,6 +12,7 @@ export default class MoveableOptionsManager extends EventEmitter {
12
12
  mode: Mode;
13
13
  /** 画布容器 */
14
14
  protected container: HTMLElement;
15
+ protected options: MoveableOptions;
15
16
  /** 水平参考线 */
16
17
  private horizontalGuidelines;
17
18
  /** 垂直参考线 */
@@ -23,6 +24,7 @@ export default class MoveableOptionsManager extends EventEmitter {
23
24
  /** 获取整个画布的根元素(在StageCore的mount函数中挂载的container) */
24
25
  private getRootContainer;
25
26
  constructor(config: MoveableOptionsManagerConfig);
27
+ getOption<K extends keyof MoveableOptions>(key: K): MoveableOptions[K];
26
28
  /**
27
29
  * 设置水平/垂直参考线
28
30
  * @param type 参考线类型
@@ -1,10 +1,11 @@
1
1
  /// <reference types="node" />
2
2
  /// <reference types="node" />
3
3
  import { EventEmitter } from 'events';
4
- import { Id } from '@tmagic/schema';
4
+ import type { MoveableOptions } from 'moveable';
5
+ import type { Id } from '@tmagic/schema';
5
6
  import StageMask from './StageMask';
6
7
  import StageRender from './StageRender';
7
- import { RemoveData, StageCoreConfig, UpdateData } from './types';
8
+ import type { RemoveData, StageCoreConfig, UpdateData } from './types';
8
9
  /**
9
10
  * 负责管理画布,管理renderer、mask、actionManager三个核心类,并负责统一对外通信,包括提供接口和抛事件
10
11
  */
@@ -32,6 +33,7 @@ export default class StageCore extends EventEmitter {
32
33
  * @param el 要高亮的元素
33
34
  */
34
35
  highlight(idOrEl: Id | HTMLElement): void;
36
+ clearHighlight(): void;
35
37
  /**
36
38
  * 更新组件
37
39
  * @param data 更新组件的数据
@@ -69,6 +71,7 @@ export default class StageCore extends EventEmitter {
69
71
  * @returns timeoutId,调用方在鼠标移走时要取消该timeout,阻止标记
70
72
  */
71
73
  delayedMarkContainer(event: MouseEvent, excludeElList?: Element[]): NodeJS.Timeout | undefined;
74
+ getMoveableOption<K extends keyof MoveableOptions>(key: K): MoveableOptions[K] | undefined;
72
75
  /**
73
76
  * 销毁实例
74
77
  */
@@ -7,7 +7,7 @@ export default class StageHighlight extends EventEmitter {
7
7
  container: HTMLElement;
8
8
  target?: HTMLElement;
9
9
  moveable?: Moveable;
10
- targetShadow: TargetShadow;
10
+ targetShadow?: TargetShadow;
11
11
  private getRootContainer;
12
12
  constructor(config: StageHighlightConfig);
13
13
  /**