@tmagic/stage 1.3.16 → 1.4.0-beta.2

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/README.md CHANGED
@@ -35,7 +35,7 @@ mask是一个盖在画布区域的一个蒙层,主要作用是隔离鼠标事
35
35
  ## ActionManager
36
36
  - 负责监听鼠标和键盘事件,基于这些事件,形成单选、多选、高亮行为。主要监听的是蒙层上的鼠标事件,通过StageRender.getElementsFromPoint计算获得鼠标下方的组件,实现事件监听和实际组件的解构。
37
37
  - 向上负责跟StageCore双向通信,提供接口供core调用,并向core抛出事件
38
- - 向下管理StageDragResize、StageMultiDragResize、StageHightlight这三个单选、多选、高亮类,让它们协同工作
38
+ - 向下管理StageDragResize、StageMultiDragResize、StageHighlight这三个单选、多选、高亮类,让它们协同工作
39
39
  <br/><br/>
40
40
  ## StageDragResize
41
41
  负责单选相关逻辑,拖拽、改变大小、旋转等行为是依赖于开源库Moveable实现的,这些行为并不是直接作用于组件本身,而是在蒙层上创建了一个跟组件同等大小的边框div,实际拖拽的是边框div,在拖拽过程中同步更新组件。
@@ -47,7 +47,7 @@ mask是一个盖在画布区域的一个蒙层,主要作用是隔离鼠标事
47
47
  ## StageMultiDragResize
48
48
  功能跟StageDragResize类似,只是这个类是负责多选操作的,通过ctrl健选中多个组件,多选状态下不支持通过表单配置组件。
49
49
  <br/><br/>
50
- ## StageHightlight
50
+ ## StageHighlight
51
51
  在鼠标经过画布中的组件、或者鼠标经过组件目录树中的组件时,会触发组件高亮,高亮也是通过moveable实现的,这个类主要负责初始化moveable并管理高亮状态。
52
52
  <br/><br/>
53
53
  ## MoveableOptionsManager
@@ -44,6 +44,27 @@ var AbleActionEventType = /* @__PURE__ */ ((AbleActionEventType2) => {
44
44
  AbleActionEventType2["REMOVE"] = "remove";
45
45
  return AbleActionEventType2;
46
46
  })(AbleActionEventType || {});
47
+ var ContainerHighlightType = /* @__PURE__ */ ((ContainerHighlightType2) => {
48
+ ContainerHighlightType2["DEFAULT"] = "default";
49
+ ContainerHighlightType2["ALT"] = "alt";
50
+ return ContainerHighlightType2;
51
+ })(ContainerHighlightType || {});
52
+ var RenderType = /* @__PURE__ */ ((RenderType2) => {
53
+ RenderType2["IFRAME"] = "iframe";
54
+ RenderType2["NATIVE"] = "native";
55
+ return RenderType2;
56
+ })(RenderType || {});
57
+ var SelectStatus = /* @__PURE__ */ ((SelectStatus2) => {
58
+ SelectStatus2["SELECT"] = "select";
59
+ SelectStatus2["MULTI_SELECT"] = "multiSelect";
60
+ return SelectStatus2;
61
+ })(SelectStatus || {});
62
+ var StageDragStatus = /* @__PURE__ */ ((StageDragStatus2) => {
63
+ StageDragStatus2["START"] = "start";
64
+ StageDragStatus2["ING"] = "ing";
65
+ StageDragStatus2["END"] = "end";
66
+ return StageDragStatus2;
67
+ })(StageDragStatus || {});
47
68
 
48
69
  const getParents = (el, relative) => {
49
70
  let cur = el.parentElement;
@@ -302,7 +323,7 @@ class TargetShadow {
302
323
  }
303
324
  updateEl(target, src) {
304
325
  const el = src || globalThis.document.createElement("div");
305
- el.id = `${this.idPrefix}${target.id}`;
326
+ el.id = `${this.idPrefix}_${target.id}`;
306
327
  el.style.cssText = getTargetElStyle(target, this.zIndex);
307
328
  if (typeof this.updateDragEl === "function") {
308
329
  this.updateDragEl(el, target, this.container);
@@ -478,6 +499,7 @@ class DragResizeHelper {
478
499
  */
479
500
  onResizeGroup(e) {
480
501
  const { events } = e;
502
+ this.moveableHelper.onResizeGroup(e);
481
503
  events.forEach((ev) => {
482
504
  const { width, height, beforeTranslate } = ev.drag;
483
505
  const frameSnapShot = this.framesSnapShot.find(
@@ -499,23 +521,23 @@ class DragResizeHelper {
499
521
  targeEl.style.width = `${width}px`;
500
522
  targeEl.style.height = `${height}px`;
501
523
  });
502
- this.moveableHelper.onResizeGroup(e);
503
524
  }
504
525
  onDragGroupStart(e) {
505
- const { events } = e;
506
526
  this.moveableHelper.onDragGroupStart(e);
527
+ const { events } = e;
507
528
  this.setFramesSnapShot(events);
508
529
  }
509
530
  onDragGroup(e) {
531
+ this.moveableHelper.onDragGroup(e);
510
532
  const { events } = e;
511
533
  events.forEach((ev) => {
512
534
  const frameSnapShot = this.framesSnapShot.find(
513
- (frameItem) => frameItem.id === ev.target.id.replace(DRAG_EL_ID_PREFIX, "")
535
+ (frameItem) => ev.target.id.startsWith(DRAG_EL_ID_PREFIX) && ev.target.id.endsWith(frameItem.id)
514
536
  );
515
537
  if (!frameSnapShot)
516
538
  return;
517
539
  const targeEl = this.targetList.find(
518
- (targetItem) => targetItem.id === ev.target.id.replace(DRAG_EL_ID_PREFIX, "")
540
+ (targetItem) => ev.target.id.startsWith(DRAG_EL_ID_PREFIX) && ev.target.id.endsWith(targetItem.id)
519
541
  );
520
542
  if (!targeEl)
521
543
  return;
@@ -526,7 +548,6 @@ class DragResizeHelper {
526
548
  targeEl.style.top = `${frameSnapShot.top + ev.beforeTranslate[1] - marginTop}px`;
527
549
  }
528
550
  });
529
- this.moveableHelper.onDragGroup(e);
530
551
  }
531
552
  getUpdatedElRect(el, parentEl, doc) {
532
553
  const offset = this.mode === Mode.SORTABLE ? { left: 0, top: 0 } : { left: el.offsetLeft, top: el.offsetTop };
@@ -561,7 +582,7 @@ class DragResizeHelper {
561
582
  return;
562
583
  events.forEach((ev) => {
563
584
  const matchEventTarget = this.targetList.find(
564
- (targetItem) => targetItem.id === ev.target.id.replace(DRAG_EL_ID_PREFIX, "")
585
+ (targetItem) => ev.target.id.startsWith(DRAG_EL_ID_PREFIX) && ev.target.id.endsWith(targetItem.id)
565
586
  );
566
587
  if (!matchEventTarget)
567
588
  return;
@@ -622,7 +643,7 @@ const MoveableActionsAble = (handler) => ({
622
643
  left: 0px;
623
644
  top: 0px;
624
645
  will-change: transform;
625
- transform-origin: 0px 0px;
646
+ transform-origin: 60px 28px;
626
647
  display: flex;
627
648
  }
628
649
  ${ableCss}
@@ -899,31 +920,9 @@ class MoveableOptionsManager extends EventEmitter {
899
920
  }
900
921
  }
901
922
 
902
- var ContainerHighlightType = /* @__PURE__ */ ((ContainerHighlightType2) => {
903
- ContainerHighlightType2["DEFAULT"] = "default";
904
- ContainerHighlightType2["ALT"] = "alt";
905
- return ContainerHighlightType2;
906
- })(ContainerHighlightType || {});
907
- var RenderType = /* @__PURE__ */ ((RenderType2) => {
908
- RenderType2["IFRAME"] = "iframe";
909
- RenderType2["NATIVE"] = "native";
910
- return RenderType2;
911
- })(RenderType || {});
912
- var SelectStatus = /* @__PURE__ */ ((SelectStatus2) => {
913
- SelectStatus2["SELECT"] = "select";
914
- SelectStatus2["MULTI_SELECT"] = "multiSelect";
915
- return SelectStatus2;
916
- })(SelectStatus || {});
917
- var StageDragStatus = /* @__PURE__ */ ((StageDragStatus2) => {
918
- StageDragStatus2["START"] = "start";
919
- StageDragStatus2["ING"] = "ing";
920
- StageDragStatus2["END"] = "end";
921
- return StageDragStatus2;
922
- })(StageDragStatus || {});
923
-
924
923
  class StageDragResize extends MoveableOptionsManager {
925
924
  /** 目标节点 */
926
- target;
925
+ target = null;
927
926
  /** Moveable拖拽类实例 */
928
927
  moveable;
929
928
  /** 拖动状态 */
@@ -956,6 +955,11 @@ class StageDragResize extends MoveableOptionsManager {
956
955
  * @param event 鼠标事件
957
956
  */
958
957
  select(el, event) {
958
+ if (!el) {
959
+ this.moveable?.destroy();
960
+ this.moveable = void 0;
961
+ return;
962
+ }
959
963
  if (!this.moveable || el !== this.target) {
960
964
  this.initMoveable(el);
961
965
  } else {
@@ -998,6 +1002,12 @@ class StageDragResize extends MoveableOptionsManager {
998
1002
  this.dragStatus = StageDragStatus.END;
999
1003
  this.removeAllListeners();
1000
1004
  }
1005
+ on(eventName, listener) {
1006
+ return super.on(eventName, listener);
1007
+ }
1008
+ emit(eventName, ...args) {
1009
+ return super.emit(eventName, ...args);
1010
+ }
1001
1011
  init(el) {
1002
1012
  if (/(auto|scroll)/.test(el.style.overflow)) {
1003
1013
  el.style.overflow = "hidden";
@@ -1098,16 +1108,19 @@ class StageDragResize extends MoveableOptionsManager {
1098
1108
  }).on("rotateEnd", (e) => {
1099
1109
  this.dragStatus = StageDragStatus.END;
1100
1110
  const frame = this.dragResizeHelper?.getFrame(e.target);
1101
- this.emit("update", {
1102
- data: [
1103
- {
1104
- el: this.target,
1105
- style: {
1106
- transform: frame?.get("transform")
1111
+ if (this.target && frame) {
1112
+ this.emit("update", {
1113
+ data: [
1114
+ {
1115
+ el: this.target,
1116
+ style: {
1117
+ transform: frame.get("transform")
1118
+ }
1107
1119
  }
1108
- }
1109
- ]
1110
- });
1120
+ ],
1121
+ parentEl: null
1122
+ });
1123
+ }
1111
1124
  });
1112
1125
  }
1113
1126
  bindScaleEvent() {
@@ -1124,16 +1137,19 @@ class StageDragResize extends MoveableOptionsManager {
1124
1137
  }).on("scaleEnd", (e) => {
1125
1138
  this.dragStatus = StageDragStatus.END;
1126
1139
  const frame = this.dragResizeHelper.getFrame(e.target);
1127
- this.emit("update", {
1128
- data: [
1129
- {
1130
- el: this.target,
1131
- style: {
1132
- transform: frame?.get("transform")
1140
+ if (this.target && frame) {
1141
+ this.emit("update", {
1142
+ data: [
1143
+ {
1144
+ el: this.target,
1145
+ style: {
1146
+ transform: frame.get("transform")
1147
+ }
1133
1148
  }
1134
- }
1135
- ]
1136
- });
1149
+ ],
1150
+ parentEl: null
1151
+ });
1152
+ }
1137
1153
  });
1138
1154
  }
1139
1155
  sort() {
@@ -1305,6 +1321,10 @@ class StageMultiDragResize extends MoveableOptionsManager {
1305
1321
  this.dragResizeHelper.onDragGroup(e);
1306
1322
  this.dragStatus = StageDragStatus.ING;
1307
1323
  }).on("dragGroupEnd", () => {
1324
+ if (timeout) {
1325
+ globalThis.clearTimeout(timeout);
1326
+ timeout = void 0;
1327
+ }
1308
1328
  const parentEl = this.markContainerEnd();
1309
1329
  this.update(false, parentEl);
1310
1330
  this.dragStatus = StageDragStatus.END;
@@ -1364,6 +1384,12 @@ class StageMultiDragResize extends MoveableOptionsManager {
1364
1384
  this.moveableForMulti?.destroy();
1365
1385
  this.dragResizeHelper.destroy();
1366
1386
  }
1387
+ on(eventName, listener) {
1388
+ return super.on(eventName, listener);
1389
+ }
1390
+ emit(eventName, ...args) {
1391
+ return super.emit(eventName, ...args);
1392
+ }
1367
1393
  /**
1368
1394
  * 拖拽完成后将更新的位置信息暴露给上层业务方,业务方可以接收事件进行保存
1369
1395
  * @param isResize 是否进行大小缩放
@@ -1394,7 +1420,7 @@ class ActionManager extends EventEmitter {
1394
1420
  /** 单选、多选、高亮的容器(蒙层的content) */
1395
1421
  container;
1396
1422
  /** 当前选中的节点 */
1397
- selectedEl;
1423
+ selectedEl = null;
1398
1424
  /** 多选选中的节点组 */
1399
1425
  selectedElList = [];
1400
1426
  /** 当前高亮的节点 */
@@ -1425,7 +1451,7 @@ class ActionManager extends EventEmitter {
1425
1451
  return;
1426
1452
  }
1427
1453
  this.emit("mousemove", event);
1428
- this.highlight(el);
1454
+ this.highlight(el.id);
1429
1455
  }, throttleTime);
1430
1456
  constructor(config) {
1431
1457
  super();
@@ -1529,6 +1555,7 @@ class ActionManager extends EventEmitter {
1529
1555
  return el;
1530
1556
  }
1531
1557
  }
1558
+ return null;
1532
1559
  }
1533
1560
  /**
1534
1561
  * 判断一个元素能否在当前场景被选中
@@ -1565,8 +1592,14 @@ class ActionManager extends EventEmitter {
1565
1592
  this.clearSelectStatus(SelectStatus.MULTI_SELECT);
1566
1593
  this.dr.select(el, event);
1567
1594
  }
1568
- multiSelect(idOrElList) {
1569
- this.selectedElList = idOrElList.map((idOrEl) => this.getTargetElement(idOrEl));
1595
+ multiSelect(ids) {
1596
+ this.selectedElList = [];
1597
+ ids.forEach((id) => {
1598
+ const el = this.getTargetElement(id);
1599
+ if (el) {
1600
+ this.selectedElList.push(el);
1601
+ }
1602
+ });
1570
1603
  this.clearSelectStatus(SelectStatus.SELECT);
1571
1604
  this.multiDr?.multiSelect(this.selectedElList);
1572
1605
  }
@@ -1576,10 +1609,10 @@ class ActionManager extends EventEmitter {
1576
1609
  setHighlightEl(el) {
1577
1610
  this.highlightedEl = el;
1578
1611
  }
1579
- highlight(idOrEl) {
1612
+ highlight(id) {
1580
1613
  let el;
1581
1614
  try {
1582
- el = this.getTargetElement(idOrEl);
1615
+ el = this.getTargetElement(id);
1583
1616
  } catch (error) {
1584
1617
  this.clearHighlight();
1585
1618
  return;
@@ -1655,6 +1688,12 @@ class ActionManager extends EventEmitter {
1655
1688
  this.multiDr?.destroy();
1656
1689
  this.highlightLayer.destroy();
1657
1690
  }
1691
+ on(eventName, listener) {
1692
+ return super.on(eventName, listener);
1693
+ }
1694
+ emit(eventName, ...args) {
1695
+ return super.emit(eventName, ...args);
1696
+ }
1658
1697
  createDr(config) {
1659
1698
  const createDrHelper = () => new DragResizeHelper({
1660
1699
  container: config.container,
@@ -1674,9 +1713,9 @@ class ActionManager extends EventEmitter {
1674
1713
  setTimeout(() => this.emit("update", data));
1675
1714
  }).on("sort", (data) => {
1676
1715
  setTimeout(() => this.emit("sort", data));
1677
- }).on("select-parent", () => {
1716
+ }).on(AbleActionEventType.SELECT_PARENT, () => {
1678
1717
  this.emit("select-parent");
1679
- }).on("remove", () => {
1718
+ }).on(AbleActionEventType.REMOVE, () => {
1680
1719
  const drTarget = this.dr.getTarget();
1681
1720
  if (!drTarget)
1682
1721
  return;
@@ -1705,11 +1744,10 @@ class ActionManager extends EventEmitter {
1705
1744
  });
1706
1745
  multiDr?.on("update", (data) => {
1707
1746
  this.emit("multi-update", data);
1708
- }).on("change-to-select", async (id, e) => {
1747
+ }).on("change-to-select", (id, e) => {
1709
1748
  if (this.isMultiSelectStatus)
1710
- return false;
1711
- const el = this.getTargetElement(id);
1712
- this.emit("change-to-select", el, e);
1749
+ return;
1750
+ this.emit("change-to-select", id, e);
1713
1751
  });
1714
1752
  return multiDr;
1715
1753
  }
@@ -1743,11 +1781,13 @@ class ActionManager extends EventEmitter {
1743
1781
  return;
1744
1782
  if (this.selectedEl && !this.selectedEl.className.includes(PAGE_CLASS)) {
1745
1783
  this.selectedElList.push(this.selectedEl);
1746
- this.setSelectedEl(void 0);
1784
+ this.setSelectedEl(null);
1747
1785
  }
1748
1786
  const existIndex = this.selectedElList.findIndex((selectedDom) => selectedDom.id === el.id);
1749
1787
  if (existIndex !== -1) {
1750
- this.selectedElList.splice(existIndex, 1);
1788
+ if (this.selectedElList.length > 1) {
1789
+ this.selectedElList.splice(existIndex, 1);
1790
+ }
1751
1791
  } else {
1752
1792
  this.selectedElList.push(el);
1753
1793
  }
@@ -2134,6 +2174,12 @@ class StageMask extends Rule {
2134
2174
  this.wrapperResizeObserver?.disconnect();
2135
2175
  super.destroy();
2136
2176
  }
2177
+ on(eventName, listener) {
2178
+ return super.on(eventName, listener);
2179
+ }
2180
+ emit(eventName, ...args) {
2181
+ return super.emit(eventName, ...args);
2182
+ }
2137
2183
  /**
2138
2184
  * 监听选中元素是否在画布可视区域内,如果目标元素不在可视区域内,通过滚动使该元素出现在可视区域
2139
2185
  */
@@ -2309,14 +2355,11 @@ class StageRender extends EventEmitter$1 {
2309
2355
  const runtime = await this.getRuntime();
2310
2356
  runtime?.update?.(data);
2311
2357
  }
2312
- async select(els) {
2358
+ async select(ids) {
2313
2359
  const runtime = await this.getRuntime();
2314
- for (const el of els) {
2315
- await runtime?.select?.(el.id);
2316
- if (runtime?.beforeSelect) {
2317
- await runtime.beforeSelect(el);
2318
- }
2319
- this.flagSelectedEl(el);
2360
+ for (const id of ids) {
2361
+ await runtime?.select?.(id);
2362
+ this.flagSelectedEl(this.getTargetElement(id));
2320
2363
  }
2321
2364
  }
2322
2365
  setZoom(zoom = DEFAULT_ZOOM) {
@@ -2372,14 +2415,8 @@ class StageRender extends EventEmitter$1 {
2372
2415
  }
2373
2416
  return this.getDocument()?.elementsFromPoint(x / this.zoom, y / this.zoom);
2374
2417
  }
2375
- getTargetElement(idOrEl) {
2376
- if (typeof idOrEl === "string" || typeof idOrEl === "number") {
2377
- const el = this.getDocument()?.getElementById(`${idOrEl}`);
2378
- if (!el)
2379
- throw new Error(`不存在ID为${idOrEl}的元素`);
2380
- return el;
2381
- }
2382
- return idOrEl;
2418
+ getTargetElement(id) {
2419
+ return this.getDocument()?.getElementById(`${id}`) || null;
2383
2420
  }
2384
2421
  /**
2385
2422
  * 销毁实例
@@ -2391,6 +2428,12 @@ class StageRender extends EventEmitter$1 {
2391
2428
  this.iframe = void 0;
2392
2429
  this.removeAllListeners();
2393
2430
  }
2431
+ on(eventName, listener) {
2432
+ return super.on(eventName, listener);
2433
+ }
2434
+ emit(eventName, ...args) {
2435
+ return super.emit(eventName, ...args);
2436
+ }
2394
2437
  createIframe() {
2395
2438
  this.iframe = globalThis.document.createElement("iframe");
2396
2439
  this.iframe.src = this.runtimeUrl && isSameDomain(this.runtimeUrl) ? this.runtimeUrl : "";
@@ -2421,7 +2464,7 @@ class StageRender extends EventEmitter$1 {
2421
2464
  const doc = this.getDocument();
2422
2465
  if (doc) {
2423
2466
  removeSelectedClassName(doc);
2424
- addSelectedClassName(el, doc);
2467
+ el && addSelectedClassName(el, doc);
2425
2468
  }
2426
2469
  }
2427
2470
  iframeLoadHandler = async () => {
@@ -2484,33 +2527,33 @@ class StageCore extends EventEmitter$1 {
2484
2527
  }
2485
2528
  /**
2486
2529
  * 单选选中元素
2487
- * @param idOrEl 选中的id或者元素
2530
+ * @param id 选中的id
2488
2531
  */
2489
- async select(idOrEl, event) {
2490
- const el = this.renderer.getTargetElement(idOrEl);
2532
+ async select(id, event) {
2533
+ const el = this.renderer.getTargetElement(id);
2491
2534
  if (el === this.actionManager.getSelectedEl())
2492
2535
  return;
2493
- await this.renderer.select([el]);
2494
- this.mask.setLayout(el);
2536
+ await this.renderer.select([id]);
2537
+ el && this.mask.setLayout(el);
2495
2538
  this.actionManager.select(el, event);
2496
- if (this.autoScrollIntoView || el.dataset.autoScrollIntoView) {
2539
+ if (el && (this.autoScrollIntoView || el.dataset.autoScrollIntoView)) {
2497
2540
  this.mask.observerIntersection(el);
2498
2541
  }
2499
2542
  }
2500
2543
  /**
2501
2544
  * 多选选中多个元素
2502
- * @param idOrElList 选中元素的id或元素列表
2545
+ * @param ids 选中元素的id列表
2503
2546
  */
2504
- async multiSelect(idOrElList) {
2505
- const els = idOrElList.map((idOrEl) => this.renderer.getTargetElement(idOrEl));
2547
+ async multiSelect(ids) {
2548
+ const els = ids.map((id) => this.renderer.getTargetElement(id)).filter((el) => Boolean(el));
2506
2549
  if (els.length === 0)
2507
2550
  return;
2508
2551
  const lastEl = els[els.length - 1];
2509
2552
  const isReduceSelect = els.length < this.actionManager.getSelectedElList().length;
2510
- await this.renderer.select(els);
2511
- this.mask.setLayout(lastEl);
2512
- this.actionManager.multiSelect(idOrElList);
2513
- if ((this.autoScrollIntoView || lastEl.dataset.autoScrollIntoView) && !isReduceSelect) {
2553
+ await this.renderer.select(ids);
2554
+ lastEl && this.mask.setLayout(lastEl);
2555
+ this.actionManager.multiSelect(ids);
2556
+ if (lastEl && (this.autoScrollIntoView || lastEl.dataset.autoScrollIntoView) && !isReduceSelect) {
2514
2557
  this.mask.observerIntersection(lastEl);
2515
2558
  }
2516
2559
  }
@@ -2518,8 +2561,8 @@ class StageCore extends EventEmitter$1 {
2518
2561
  * 高亮选中元素
2519
2562
  * @param el 要高亮的元素
2520
2563
  */
2521
- highlight(idOrEl) {
2522
- this.actionManager.highlight(idOrEl);
2564
+ highlight(id) {
2565
+ this.actionManager.highlight(id);
2523
2566
  }
2524
2567
  clearHighlight() {
2525
2568
  this.actionManager.clearHighlight();
@@ -2615,6 +2658,12 @@ class StageCore extends EventEmitter$1 {
2615
2658
  this.removeAllListeners();
2616
2659
  this.container = void 0;
2617
2660
  }
2661
+ on(eventName, listener) {
2662
+ return super.on(eventName, listener);
2663
+ }
2664
+ emit(eventName, ...args) {
2665
+ return super.emit(eventName, ...args);
2666
+ }
2618
2667
  /**
2619
2668
  * 监听页面大小变化
2620
2669
  */
@@ -2644,7 +2693,7 @@ class StageCore extends EventEmitter$1 {
2644
2693
  updateDragEl: config.updateDragEl,
2645
2694
  getRootContainer: () => this.container,
2646
2695
  getRenderDocument: () => this.renderer.getDocument(),
2647
- getTargetElement: (idOrEl) => this.renderer.getTargetElement(idOrEl),
2696
+ getTargetElement: (id) => this.renderer.getTargetElement(id),
2648
2697
  getElementsFromPoint: (point) => this.renderer.getElementsFromPoint(point)
2649
2698
  };
2650
2699
  return actionManagerConfig;
@@ -2679,12 +2728,12 @@ class StageCore extends EventEmitter$1 {
2679
2728
  * 初始化ActionManager类本身抛出来的事件监听
2680
2729
  */
2681
2730
  initActionManagerEvent() {
2682
- this.actionManager.on("before-select", (idOrEl, event) => {
2683
- this.select(idOrEl, event);
2731
+ this.actionManager.on("before-select", (el, event) => {
2732
+ this.select(el.id, event);
2684
2733
  }).on("select", (selectedEl, event) => {
2685
2734
  this.emit("select", selectedEl, event);
2686
- }).on("before-multi-select", (idOrElList) => {
2687
- this.multiSelect(idOrElList);
2735
+ }).on("before-multi-select", (els) => {
2736
+ this.multiSelect(els.map((el) => el.id));
2688
2737
  }).on("multi-select", (selectedElList, event) => {
2689
2738
  this.emit("multi-select", selectedElList, event);
2690
2739
  }).on("dblclick", (event) => {
@@ -2709,9 +2758,12 @@ class StageCore extends EventEmitter$1 {
2709
2758
  * 初始化MultiDragResize类通过ActionManager抛出来的事件监听
2710
2759
  */
2711
2760
  initMulDrEvent() {
2712
- this.actionManager.on("change-to-select", (el, e) => {
2713
- this.select(el);
2714
- setTimeout(() => this.emit("select", el, e));
2761
+ this.actionManager.on("change-to-select", (id, e) => {
2762
+ this.select(id);
2763
+ setTimeout(() => {
2764
+ const el = this.renderer.getTargetElement(id);
2765
+ el && this.emit("select", el, e);
2766
+ });
2715
2767
  }).on("multi-update", (data) => {
2716
2768
  this.emit("update", data);
2717
2769
  });
@@ -2720,7 +2772,7 @@ class StageCore extends EventEmitter$1 {
2720
2772
  * 初始化Highlight类通过ActionManager抛出来的事件监听
2721
2773
  */
2722
2774
  initHighlightEvent() {
2723
- this.actionManager.on("highlight", async (highlightEl) => {
2775
+ this.actionManager.on("highlight", (highlightEl) => {
2724
2776
  this.emit("highlight", highlightEl);
2725
2777
  });
2726
2778
  }