@tmagic/stage 1.3.10 → 1.3.12

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.
@@ -2,7 +2,7 @@ import EventEmitter, { EventEmitter as EventEmitter$1 } from 'events';
2
2
  import KeyController from 'keycon';
3
3
  import { merge, throttle } from 'lodash-es';
4
4
  import { Env } from '@tmagic/core';
5
- import { removeClassName, addClassName, removeClassNameByClassName, getDocument, createDiv, injectStyle, isSameDomain, getHost } from '@tmagic/utils';
5
+ import { removeClassName, guid, addClassName, removeClassNameByClassName, getDocument, createDiv, injectStyle, isSameDomain, getHost } from '@tmagic/utils';
6
6
  import MoveableHelper from 'moveable-helper';
7
7
  import Moveable from 'moveable';
8
8
  import Guides from '@scena/guides';
@@ -82,6 +82,7 @@ const getTargetElStyle = (el, zIndex) => {
82
82
  width: ${el.clientWidth}px;
83
83
  height: ${el.clientHeight}px;
84
84
  border: ${border};
85
+ opacity: 0;
85
86
  ${typeof zIndex !== "undefined" ? `z-index: ${zIndex};` : ""}
86
87
  `;
87
88
  };
@@ -252,7 +253,7 @@ const getBorderWidth = (el) => {
252
253
  class TargetShadow {
253
254
  el;
254
255
  els = [];
255
- idPrefix = "target_calibrate_";
256
+ idPrefix = `target_calibrate_${guid()}`;
256
257
  container;
257
258
  scrollLeft = 0;
258
259
  scrollTop = 0;
@@ -267,7 +268,7 @@ class TargetShadow {
267
268
  this.zIndex = config.zIndex;
268
269
  }
269
270
  if (config.idPrefix) {
270
- this.idPrefix = config.idPrefix;
271
+ this.idPrefix = `${config.idPrefix}_${guid()}`;
271
272
  }
272
273
  this.container.addEventListener("customScroll", this.scrollHandler);
273
274
  }
@@ -1620,7 +1621,7 @@ class ActionManager extends EventEmitter {
1620
1621
  return;
1621
1622
  const els = this.getElementsFromPoint(event);
1622
1623
  for (const el of els) {
1623
- if (!el.id.startsWith(GHOST_EL_ID_PREFIX) && await this.isContainer(el) && !excludeElList.includes(el)) {
1624
+ if (!el.id.startsWith(GHOST_EL_ID_PREFIX) && await this.isContainer?.(el) && !excludeElList.includes(el)) {
1624
1625
  addClassName(el, doc, this.containerHighlightClassName);
1625
1626
  break;
1626
1627
  }
@@ -1649,6 +1650,7 @@ class ActionManager extends EventEmitter {
1649
1650
  this.container.removeEventListener("mousemove", this.mouseMoveHandler);
1650
1651
  this.container.removeEventListener("mouseleave", this.mouseLeaveHandler);
1651
1652
  this.container.removeEventListener("wheel", this.mouseWheelHandler);
1653
+ this.container.removeEventListener("dblclick", this.dblclickHandler);
1652
1654
  this.dr.destroy();
1653
1655
  this.multiDr?.destroy();
1654
1656
  this.highlightLayer.destroy();
@@ -1772,6 +1774,7 @@ class ActionManager extends EventEmitter {
1772
1774
  this.container.addEventListener("mousemove", this.mouseMoveHandler);
1773
1775
  this.container.addEventListener("mouseleave", this.mouseLeaveHandler);
1774
1776
  this.container.addEventListener("wheel", this.mouseWheelHandler);
1777
+ this.container.addEventListener("dblclick", this.dblclickHandler);
1775
1778
  }
1776
1779
  /**
1777
1780
  * 初始化键盘事件监听
@@ -1862,6 +1865,9 @@ class ActionManager extends EventEmitter {
1862
1865
  mouseWheelHandler = () => {
1863
1866
  this.clearHighlight();
1864
1867
  };
1868
+ dblclickHandler = (event) => {
1869
+ this.emit("dblclick", event);
1870
+ };
1865
1871
  }
1866
1872
 
1867
1873
  class Rule extends EventEmitter {
@@ -2611,6 +2617,9 @@ class StageCore extends EventEmitter$1 {
2611
2617
  * 监听页面大小变化
2612
2618
  */
2613
2619
  observePageResize(page) {
2620
+ if (this.pageResizeObserver) {
2621
+ this.pageResizeObserver.disconnect();
2622
+ }
2614
2623
  if (typeof ResizeObserver !== "undefined") {
2615
2624
  this.pageResizeObserver = new ResizeObserver((entries) => {
2616
2625
  this.mask.pageResize(entries);
@@ -2676,6 +2685,8 @@ class StageCore extends EventEmitter$1 {
2676
2685
  this.multiSelect(idOrElList);
2677
2686
  }).on("multi-select", (selectedElList, event) => {
2678
2687
  this.emit("multi-select", selectedElList, event);
2688
+ }).on("dblclick", (event) => {
2689
+ this.emit("dblclick", event);
2679
2690
  });
2680
2691
  }
2681
2692
  /**
@@ -2726,4 +2737,3 @@ class StageCore extends EventEmitter$1 {
2726
2737
  }
2727
2738
 
2728
2739
  export { AbleActionEventType, CONTAINER_HIGHLIGHT_CLASS_NAME, ContainerHighlightType, DEFAULT_ZOOM, DRAG_EL_ID_PREFIX, GHOST_EL_ID_PREFIX, GuidesType, HIGHLIGHT_EL_ID_PREFIX, Mode, MouseButton, PAGE_CLASS, RenderType, SELECTED_CLASS, SelectStatus, StageDragResize, StageDragStatus, StageMask, StageRender, ZIndex, addSelectedClassName, calcValueByFontsize, StageCore as default, down, getAbsolutePosition, getBorderWidth, getMarginValue, getMode, getOffset, getScrollParent, getTargetElStyle, isAbsolute, isFixed, isFixedParent, isMoveableButton, isRelative, isStatic, removeSelectedClassName, up };
2729
- //# sourceMappingURL=tmagic-stage.js.map
@@ -79,6 +79,7 @@
79
79
  width: ${el.clientWidth}px;
80
80
  height: ${el.clientHeight}px;
81
81
  border: ${border};
82
+ opacity: 0;
82
83
  ${typeof zIndex !== "undefined" ? `z-index: ${zIndex};` : ""}
83
84
  `;
84
85
  };
@@ -249,7 +250,7 @@
249
250
  class TargetShadow {
250
251
  el;
251
252
  els = [];
252
- idPrefix = "target_calibrate_";
253
+ idPrefix = `target_calibrate_${utils.guid()}`;
253
254
  container;
254
255
  scrollLeft = 0;
255
256
  scrollTop = 0;
@@ -264,7 +265,7 @@
264
265
  this.zIndex = config.zIndex;
265
266
  }
266
267
  if (config.idPrefix) {
267
- this.idPrefix = config.idPrefix;
268
+ this.idPrefix = `${config.idPrefix}_${utils.guid()}`;
268
269
  }
269
270
  this.container.addEventListener("customScroll", this.scrollHandler);
270
271
  }
@@ -1617,7 +1618,7 @@
1617
1618
  return;
1618
1619
  const els = this.getElementsFromPoint(event);
1619
1620
  for (const el of els) {
1620
- if (!el.id.startsWith(GHOST_EL_ID_PREFIX) && await this.isContainer(el) && !excludeElList.includes(el)) {
1621
+ if (!el.id.startsWith(GHOST_EL_ID_PREFIX) && await this.isContainer?.(el) && !excludeElList.includes(el)) {
1621
1622
  utils.addClassName(el, doc, this.containerHighlightClassName);
1622
1623
  break;
1623
1624
  }
@@ -1646,6 +1647,7 @@
1646
1647
  this.container.removeEventListener("mousemove", this.mouseMoveHandler);
1647
1648
  this.container.removeEventListener("mouseleave", this.mouseLeaveHandler);
1648
1649
  this.container.removeEventListener("wheel", this.mouseWheelHandler);
1650
+ this.container.removeEventListener("dblclick", this.dblclickHandler);
1649
1651
  this.dr.destroy();
1650
1652
  this.multiDr?.destroy();
1651
1653
  this.highlightLayer.destroy();
@@ -1769,6 +1771,7 @@
1769
1771
  this.container.addEventListener("mousemove", this.mouseMoveHandler);
1770
1772
  this.container.addEventListener("mouseleave", this.mouseLeaveHandler);
1771
1773
  this.container.addEventListener("wheel", this.mouseWheelHandler);
1774
+ this.container.addEventListener("dblclick", this.dblclickHandler);
1772
1775
  }
1773
1776
  /**
1774
1777
  * 初始化键盘事件监听
@@ -1859,6 +1862,9 @@
1859
1862
  mouseWheelHandler = () => {
1860
1863
  this.clearHighlight();
1861
1864
  };
1865
+ dblclickHandler = (event) => {
1866
+ this.emit("dblclick", event);
1867
+ };
1862
1868
  }
1863
1869
 
1864
1870
  class Rule extends EventEmitter {
@@ -2608,6 +2614,9 @@
2608
2614
  * 监听页面大小变化
2609
2615
  */
2610
2616
  observePageResize(page) {
2617
+ if (this.pageResizeObserver) {
2618
+ this.pageResizeObserver.disconnect();
2619
+ }
2611
2620
  if (typeof ResizeObserver !== "undefined") {
2612
2621
  this.pageResizeObserver = new ResizeObserver((entries) => {
2613
2622
  this.mask.pageResize(entries);
@@ -2673,6 +2682,8 @@
2673
2682
  this.multiSelect(idOrElList);
2674
2683
  }).on("multi-select", (selectedElList, event) => {
2675
2684
  this.emit("multi-select", selectedElList, event);
2685
+ }).on("dblclick", (event) => {
2686
+ this.emit("dblclick", event);
2676
2687
  });
2677
2688
  }
2678
2689
  /**
@@ -2764,4 +2775,3 @@
2764
2775
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
2765
2776
 
2766
2777
  }));
2767
- //# sourceMappingURL=tmagic-stage.umd.cjs.map
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.3.10",
2
+ "version": "1.3.12",
3
3
  "name": "@tmagic/stage",
4
4
  "type": "module",
5
5
  "sideEffects": [
@@ -26,9 +26,9 @@
26
26
  },
27
27
  "dependencies": {
28
28
  "@scena/guides": "^0.29.2",
29
- "@tmagic/core": "1.3.10",
30
- "@tmagic/schema": "1.3.10",
31
- "@tmagic/utils": "1.3.10",
29
+ "@tmagic/core": "1.3.12",
30
+ "@tmagic/schema": "1.3.12",
31
+ "@tmagic/utils": "1.3.12",
32
32
  "events": "^3.3.0",
33
33
  "keycon": "^1.4.0",
34
34
  "lodash-es": "^4.17.21",
@@ -79,7 +79,7 @@ export default class ActionManager extends EventEmitter {
79
79
  private getTargetElement: GetTargetElement;
80
80
  private getElementsFromPoint: GetElementsFromPoint;
81
81
  private canSelect: CanSelect;
82
- private isContainer: IsContainer;
82
+ private isContainer?: IsContainer;
83
83
  private getRenderDocument: GetRenderDocument;
84
84
  private disabledMultiSelect = false;
85
85
  private config: ActionManagerConfig;
@@ -328,7 +328,7 @@ export default class ActionManager extends EventEmitter {
328
328
  const els = this.getElementsFromPoint(event);
329
329
 
330
330
  for (const el of els) {
331
- if (!el.id.startsWith(GHOST_EL_ID_PREFIX) && (await this.isContainer(el)) && !excludeElList.includes(el)) {
331
+ if (!el.id.startsWith(GHOST_EL_ID_PREFIX) && (await this.isContainer?.(el)) && !excludeElList.includes(el)) {
332
332
  addClassName(el, doc, this.containerHighlightClassName);
333
333
  break;
334
334
  }
@@ -360,6 +360,7 @@ export default class ActionManager extends EventEmitter {
360
360
  this.container.removeEventListener('mousemove', this.mouseMoveHandler);
361
361
  this.container.removeEventListener('mouseleave', this.mouseLeaveHandler);
362
362
  this.container.removeEventListener('wheel', this.mouseWheelHandler);
363
+ this.container.removeEventListener('dblclick', this.dblclickHandler);
363
364
  this.dr.destroy();
364
365
  this.multiDr?.destroy();
365
366
  this.highlightLayer.destroy();
@@ -512,6 +513,7 @@ export default class ActionManager extends EventEmitter {
512
513
  this.container.addEventListener('mousemove', this.mouseMoveHandler);
513
514
  this.container.addEventListener('mouseleave', this.mouseLeaveHandler);
514
515
  this.container.addEventListener('wheel', this.mouseWheelHandler);
516
+ this.container.addEventListener('dblclick', this.dblclickHandler);
515
517
  }
516
518
 
517
519
  /**
@@ -619,4 +621,8 @@ export default class ActionManager extends EventEmitter {
619
621
  private mouseWheelHandler = () => {
620
622
  this.clearHighlight();
621
623
  };
624
+
625
+ private dblclickHandler = (event: MouseEvent) => {
626
+ this.emit('dblclick', event);
627
+ };
622
628
  }
package/src/StageCore.ts CHANGED
@@ -46,8 +46,8 @@ export default class StageCore extends EventEmitter {
46
46
  public container?: HTMLDivElement;
47
47
  public renderer: StageRender;
48
48
  public mask: StageMask;
49
+ public actionManager: ActionManager;
49
50
 
50
- private actionManager: ActionManager;
51
51
  private pageResizeObserver: ResizeObserver | null = null;
52
52
  private autoScrollIntoView: boolean | undefined;
53
53
  private customizedRender?: CustomizeRender;
@@ -252,6 +252,10 @@ export default class StageCore extends EventEmitter {
252
252
  * 监听页面大小变化
253
253
  */
254
254
  private observePageResize(page: HTMLElement): void {
255
+ if (this.pageResizeObserver) {
256
+ this.pageResizeObserver.disconnect();
257
+ }
258
+
255
259
  if (typeof ResizeObserver !== 'undefined') {
256
260
  this.pageResizeObserver = new ResizeObserver((entries) => {
257
261
  this.mask.pageResize(entries);
@@ -329,6 +333,9 @@ export default class StageCore extends EventEmitter {
329
333
  })
330
334
  .on('multi-select', (selectedElList: HTMLElement[], event: MouseEvent) => {
331
335
  this.emit('multi-select', selectedElList, event);
336
+ })
337
+ .on('dblclick', (event: MouseEvent) => {
338
+ this.emit('dblclick', event);
332
339
  });
333
340
  }
334
341
 
@@ -15,6 +15,8 @@
15
15
  * See the License for the specific language governing permissions and
16
16
  * limitations under the License.
17
17
  */
18
+ import { guid } from '@tmagic/utils';
19
+
18
20
  import { Mode, ZIndex } from './const';
19
21
  import type { TargetElement as ShadowElement, TargetShadowConfig, UpdateDragEl } from './types';
20
22
  import { getTargetElStyle, isFixedParent } from './util';
@@ -26,7 +28,7 @@ export default class TargetShadow {
26
28
  public el?: ShadowElement;
27
29
  public els: ShadowElement[] = [];
28
30
 
29
- private idPrefix = 'target_calibrate_';
31
+ private idPrefix = `target_calibrate_${guid()}`;
30
32
  private container: HTMLElement;
31
33
  private scrollLeft = 0;
32
34
  private scrollTop = 0;
@@ -46,7 +48,7 @@ export default class TargetShadow {
46
48
  }
47
49
 
48
50
  if (config.idPrefix) {
49
- this.idPrefix = config.idPrefix;
51
+ this.idPrefix = `${config.idPrefix}_${guid()}`;
50
52
  }
51
53
 
52
54
  this.container.addEventListener('customScroll', this.scrollHandler);
package/src/types.ts CHANGED
@@ -66,7 +66,7 @@ export interface StageCoreConfig {
66
66
  /** 放大倍数,默认1倍 */
67
67
  zoom?: number;
68
68
  canSelect?: CanSelect;
69
- isContainer: IsContainer;
69
+ isContainer?: IsContainer;
70
70
  containerHighlightClassName?: string;
71
71
  containerHighlightDuration?: number;
72
72
  containerHighlightType?: ContainerHighlightType;
@@ -91,7 +91,7 @@ export interface ActionManagerConfig {
91
91
  disabledDragStart?: boolean;
92
92
  disabledMultiSelect?: boolean;
93
93
  canSelect?: CanSelect;
94
- isContainer: IsContainer;
94
+ isContainer?: IsContainer;
95
95
  getRootContainer: GetRootContainer;
96
96
  getRenderDocument: GetRenderDocument;
97
97
  updateDragEl?: UpdateDragEl;
package/src/util.ts CHANGED
@@ -66,6 +66,7 @@ export const getTargetElStyle = (el: TargetElement, zIndex?: ZIndex) => {
66
66
  width: ${el.clientWidth}px;
67
67
  height: ${el.clientHeight}px;
68
68
  border: ${border};
69
+ opacity: 0;
69
70
  ${typeof zIndex !== 'undefined' ? `z-index: ${zIndex};` : ''}
70
71
  `;
71
72
  };
@@ -33,7 +33,7 @@ export default class ActionManager extends EventEmitter {
33
33
  private getTargetElement;
34
34
  private getElementsFromPoint;
35
35
  private canSelect;
36
- private isContainer;
36
+ private isContainer?;
37
37
  private getRenderDocument;
38
38
  private disabledMultiSelect;
39
39
  private config;
@@ -143,4 +143,5 @@ export default class ActionManager extends EventEmitter {
143
143
  private mouseUpHandler;
144
144
  private mouseLeaveHandler;
145
145
  private mouseWheelHandler;
146
+ private dblclickHandler;
146
147
  }
@@ -3,6 +3,7 @@
3
3
  import { EventEmitter } from 'events';
4
4
  import type { MoveableOptions } from 'moveable';
5
5
  import type { Id } from '@tmagic/schema';
6
+ import ActionManager from './ActionManager';
6
7
  import StageMask from './StageMask';
7
8
  import StageRender from './StageRender';
8
9
  import type { RemoveData, StageCoreConfig, UpdateData } from './types';
@@ -13,7 +14,7 @@ export default class StageCore extends EventEmitter {
13
14
  container?: HTMLDivElement;
14
15
  renderer: StageRender;
15
16
  mask: StageMask;
16
- private actionManager;
17
+ actionManager: ActionManager;
17
18
  private pageResizeObserver;
18
19
  private autoScrollIntoView;
19
20
  private customizedRender?;
package/types/types.d.ts CHANGED
@@ -38,7 +38,7 @@ export interface StageCoreConfig {
38
38
  /** 放大倍数,默认1倍 */
39
39
  zoom?: number;
40
40
  canSelect?: CanSelect;
41
- isContainer: IsContainer;
41
+ isContainer?: IsContainer;
42
42
  containerHighlightClassName?: string;
43
43
  containerHighlightDuration?: number;
44
44
  containerHighlightType?: ContainerHighlightType;
@@ -62,7 +62,7 @@ export interface ActionManagerConfig {
62
62
  disabledDragStart?: boolean;
63
63
  disabledMultiSelect?: boolean;
64
64
  canSelect?: CanSelect;
65
- isContainer: IsContainer;
65
+ isContainer?: IsContainer;
66
66
  getRootContainer: GetRootContainer;
67
67
  getRenderDocument: GetRenderDocument;
68
68
  updateDragEl?: UpdateDragEl;