@idraw/util 0.4.0-beta.34 → 0.4.0-beta.36

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.
@@ -1,28 +1,14 @@
1
1
  var iDrawUtil = function(exports) {
2
- "use strict";var __accessCheck = (obj, member, msg) => {
3
- if (!member.has(obj))
4
- throw TypeError("Cannot " + msg);
5
- };
6
- var __privateGet = (obj, member, getter) => {
7
- __accessCheck(obj, member, "read from private field");
8
- return getter ? getter.call(obj) : member.get(obj);
9
- };
10
- var __privateAdd = (obj, member, value) => {
11
- if (member.has(obj))
12
- throw TypeError("Cannot add the same private member more than once");
13
- member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
14
- };
15
- var __privateSet = (obj, member, value, setter) => {
16
- __accessCheck(obj, member, "write to private field");
17
- setter ? setter.call(obj, value) : member.set(obj, value);
18
- return value;
19
- };
20
- var __privateMethod = (obj, member, method) => {
21
- __accessCheck(obj, member, "access private method");
22
- return method;
2
+ "use strict";var __typeError = (msg) => {
3
+ throw TypeError(msg);
23
4
  };
5
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
6
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
7
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
8
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
9
+ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
24
10
 
25
- var _ctx, _opts, _listeners, _temp, _backUpDefaultStorage, _createTempStorage, createTempStorage_fn;
11
+ var _ctx, _opts, _listeners, _temp, _backUpDefaultStorage, _static, _Store_instances, createTempStorage_fn;
26
12
  function compose(middleware) {
27
13
  return function(context, next) {
28
14
  return dispatch(0);
@@ -31,8 +17,7 @@ var __privateMethod = (obj, member, method) => {
31
17
  if (i === middleware.length && next) {
32
18
  fn = next;
33
19
  }
34
- if (!fn)
35
- return Promise.resolve();
20
+ if (!fn) return Promise.resolve();
36
21
  try {
37
22
  return Promise.resolve(fn(context, dispatch.bind(null, i + 1)));
38
23
  } catch (err) {
@@ -922,8 +907,8 @@ var __privateMethod = (obj, member, method) => {
922
907
  // private _width: number = 0;
923
908
  // private _height: number = 0;
924
909
  constructor(ctx, opts) {
925
- __privateAdd(this, _ctx, void 0);
926
- __privateAdd(this, _opts, void 0);
910
+ __privateAdd(this, _ctx);
911
+ __privateAdd(this, _opts);
927
912
  __privateSet(this, _ctx, ctx);
928
913
  __privateSet(this, _opts, { ...{ devicePixelRatio: 1, offscreenCanvas: null }, ...opts });
929
914
  this.$resetFont();
@@ -1310,7 +1295,7 @@ var __privateMethod = (obj, member, method) => {
1310
1295
  }
1311
1296
  class EventEmitter {
1312
1297
  constructor() {
1313
- __privateAdd(this, _listeners, void 0);
1298
+ __privateAdd(this, _listeners);
1314
1299
  __privateSet(this, _listeners, /* @__PURE__ */ new Map());
1315
1300
  }
1316
1301
  on(eventKey, callback) {
@@ -1396,11 +1381,13 @@ var __privateMethod = (obj, member, method) => {
1396
1381
  }
1397
1382
  class Store {
1398
1383
  constructor(opts) {
1399
- __privateAdd(this, _createTempStorage);
1400
- __privateAdd(this, _temp, void 0);
1401
- __privateAdd(this, _backUpDefaultStorage, void 0);
1384
+ __privateAdd(this, _Store_instances);
1385
+ __privateAdd(this, _temp);
1386
+ __privateAdd(this, _backUpDefaultStorage);
1387
+ __privateAdd(this, _static);
1402
1388
  __privateSet(this, _backUpDefaultStorage, deepClone(opts.defaultStorage));
1403
- __privateSet(this, _temp, __privateMethod(this, _createTempStorage, createTempStorage_fn).call(this));
1389
+ __privateSet(this, _temp, __privateMethod(this, _Store_instances, createTempStorage_fn).call(this));
1390
+ __privateSet(this, _static, opts.defaultStatic || {});
1404
1391
  }
1405
1392
  set(name, value) {
1406
1393
  __privateGet(this, _temp)[name] = value;
@@ -1408,6 +1395,12 @@ var __privateMethod = (obj, member, method) => {
1408
1395
  get(name) {
1409
1396
  return __privateGet(this, _temp)[name];
1410
1397
  }
1398
+ setStatic(name, value) {
1399
+ __privateGet(this, _static)[name] = value;
1400
+ }
1401
+ getStatic(name) {
1402
+ return __privateGet(this, _static)[name];
1403
+ }
1411
1404
  getSnapshot(opts) {
1412
1405
  if ((opts == null ? void 0 : opts.deepClone) === true) {
1413
1406
  return deepClone(__privateGet(this, _temp));
@@ -1415,15 +1408,17 @@ var __privateMethod = (obj, member, method) => {
1415
1408
  return { ...__privateGet(this, _temp) };
1416
1409
  }
1417
1410
  clear() {
1418
- __privateSet(this, _temp, __privateMethod(this, _createTempStorage, createTempStorage_fn).call(this));
1411
+ __privateSet(this, _temp, __privateMethod(this, _Store_instances, createTempStorage_fn).call(this));
1419
1412
  }
1420
1413
  destroy() {
1421
1414
  __privateSet(this, _temp, null);
1415
+ __privateSet(this, _static, null);
1422
1416
  }
1423
1417
  }
1424
1418
  _temp = new WeakMap();
1425
1419
  _backUpDefaultStorage = new WeakMap();
1426
- _createTempStorage = new WeakSet();
1420
+ _static = new WeakMap();
1421
+ _Store_instances = new WeakSet();
1427
1422
  createTempStorage_fn = function() {
1428
1423
  return deepClone(__privateGet(this, _backUpDefaultStorage));
1429
1424
  };
@@ -1496,16 +1491,10 @@ var __privateMethod = (obj, member, method) => {
1496
1491
  return calcElementCenter(elemSize);
1497
1492
  }
1498
1493
  function calcRadian(center, start, end) {
1499
- const startAngle = calcLineRadian(center, start);
1500
- const endAngle = calcLineRadian(center, end);
1501
- if (endAngle !== null && startAngle !== null) {
1502
- if (startAngle > Math.PI * 3 / 2 && endAngle < Math.PI / 2) {
1503
- return endAngle + (Math.PI * 2 - startAngle);
1504
- } else if (endAngle > Math.PI * 3 / 2 && startAngle < Math.PI / 2) {
1505
- return startAngle + (Math.PI * 2 - endAngle);
1506
- } else {
1507
- return endAngle - startAngle;
1508
- }
1494
+ const startRadian = calcLineRadian(center, start);
1495
+ const endRadian = calcLineRadian(center, end);
1496
+ if (endRadian !== null && startRadian !== null) {
1497
+ return endRadian - startRadian;
1509
1498
  } else {
1510
1499
  return 0;
1511
1500
  }
@@ -1631,12 +1620,14 @@ var __privateMethod = (obj, member, method) => {
1631
1620
  ];
1632
1621
  }
1633
1622
  function limitAngle(angle2) {
1634
- if (!(angle2 > 0 || angle2 < 0) || angle2 === 0) {
1623
+ if (!(angle2 > 0 || angle2 < 0) || angle2 === 0 || angle2 === 360) {
1635
1624
  return 0;
1636
1625
  }
1637
1626
  let num = angle2 % 360;
1638
1627
  if (num < 0) {
1639
1628
  num += 360;
1629
+ } else if (angle2 === 360) {
1630
+ num = 0;
1640
1631
  }
1641
1632
  return num;
1642
1633
  }
@@ -2042,6 +2033,36 @@ var __privateMethod = (obj, member, method) => {
2042
2033
  _loop(elements);
2043
2034
  return result;
2044
2035
  }
2036
+ function getElementPositionMapFromList(uuids, elements) {
2037
+ const currentPosition = [];
2038
+ const positionMap = {};
2039
+ let over = false;
2040
+ const _loop = (list) => {
2041
+ var _a;
2042
+ for (let i = 0; i < list.length; i++) {
2043
+ if (over === true) {
2044
+ break;
2045
+ }
2046
+ currentPosition.push(i);
2047
+ const elem = list[i];
2048
+ if (uuids.includes(elem.uuid)) {
2049
+ positionMap[elem.uuid] = [...currentPosition];
2050
+ if (Object.keys(positionMap).length === uuids.length) {
2051
+ over = true;
2052
+ break;
2053
+ }
2054
+ } else if (elem.type === "group") {
2055
+ _loop(((_a = elem == null ? void 0 : elem.detail) == null ? void 0 : _a.children) || []);
2056
+ }
2057
+ if (over) {
2058
+ break;
2059
+ }
2060
+ currentPosition.pop();
2061
+ }
2062
+ };
2063
+ _loop(elements);
2064
+ return positionMap;
2065
+ }
2045
2066
  function checkRectIntersect(rect1, rect2) {
2046
2067
  const rect1MinX = rect1.x;
2047
2068
  const rect1MinY = rect1.y;
@@ -2577,9 +2598,11 @@ var __privateMethod = (obj, member, method) => {
2577
2598
  };
2578
2599
  }
2579
2600
  function calcElementSizeController(elemSize, opts) {
2580
- const { groupQueue, controllerSize, viewScaleInfo } = opts;
2601
+ const { groupQueue, controllerSize, viewScaleInfo, rotateControllerSize, rotateControllerPosition } = opts;
2581
2602
  const ctrlSize = (controllerSize && controllerSize > 0 ? controllerSize : 8) / viewScaleInfo.scale;
2582
2603
  const { x: x2, y: y2, w: w2, h: h2, angle: angle2 = 0 } = elemSize;
2604
+ const rotateCtrlSize = rotateControllerSize;
2605
+ const rotateCtrlPos = rotateControllerPosition;
2583
2606
  const ctrlGroupQueue = [
2584
2607
  ...[
2585
2608
  {
@@ -2602,10 +2625,10 @@ var __privateMethod = (obj, member, method) => {
2602
2625
  const vertexes = calcElementVertexesInGroup(elemSize, { groupQueue });
2603
2626
  const rotateElemVertexes = calcElementVertexesInGroup(
2604
2627
  {
2605
- x: x2 - ctrlSize * 2,
2606
- y: y2 - ctrlSize * 2,
2607
- h: h2 + ctrlSize * 4,
2608
- w: w2 + ctrlSize * 4,
2628
+ x: x2,
2629
+ y: y2 - (rotateCtrlPos + rotateCtrlSize / 2) / viewScaleInfo.scale,
2630
+ h: h2 + (rotateCtrlPos * 2 + rotateCtrlSize) / viewScaleInfo.scale,
2631
+ w: w2,
2609
2632
  angle: angle2
2610
2633
  },
2611
2634
  { groupQueue: [...groupQueue] }
@@ -2639,74 +2662,91 @@ var __privateMethod = (obj, member, method) => {
2639
2662
  const bottomMiddleVertexes = calcElementVertexes(bottomMiddleSize);
2640
2663
  const leftMiddleVertexes = calcElementVertexes(leftMiddleSize);
2641
2664
  const rotateCenter = getCenterFromTwoPoints(rotateElemVertexes[0], rotateElemVertexes[1]);
2642
- const rotateSize = createControllerElementSizeFromCenter(rotateCenter, { size: ctrlSize, angle: totalAngle });
2665
+ const tempRotateSizeRepairRatio = 1.1;
2666
+ const rotateSize = createControllerElementSizeFromCenter(rotateCenter, {
2667
+ size: rotateControllerSize * tempRotateSizeRepairRatio / viewScaleInfo.scale,
2668
+ angle: totalAngle
2669
+ });
2643
2670
  const rotateVertexes2 = calcElementVertexes(rotateSize);
2644
2671
  const sizeController = {
2645
2672
  elementWrapper: vertexes,
2646
2673
  left: {
2647
2674
  type: "left",
2648
2675
  vertexes: leftVertexes,
2649
- center: leftCenter
2676
+ center: leftCenter,
2677
+ size: ctrlSize
2650
2678
  },
2651
2679
  right: {
2652
2680
  type: "right",
2653
2681
  vertexes: rightVertexes,
2654
- center: rightCenter
2682
+ center: rightCenter,
2683
+ size: ctrlSize
2655
2684
  },
2656
2685
  top: {
2657
2686
  type: "top",
2658
2687
  vertexes: topVertexes,
2659
- center: topCenter
2688
+ center: topCenter,
2689
+ size: ctrlSize
2660
2690
  },
2661
2691
  bottom: {
2662
2692
  type: "bottom",
2663
2693
  vertexes: bottomVertexes,
2664
- center: bottomCenter
2694
+ center: bottomCenter,
2695
+ size: ctrlSize
2665
2696
  },
2666
2697
  topLeft: {
2667
2698
  type: "top-left",
2668
2699
  vertexes: topLeftVertexes,
2669
- center: topLeftCenter
2700
+ center: topLeftCenter,
2701
+ size: ctrlSize
2670
2702
  },
2671
2703
  topRight: {
2672
2704
  type: "top-right",
2673
2705
  vertexes: topRightVertexes,
2674
- center: topRightCenter
2706
+ center: topRightCenter,
2707
+ size: ctrlSize
2675
2708
  },
2676
2709
  bottomLeft: {
2677
2710
  type: "bottom-left",
2678
2711
  vertexes: bottomLeftVertexes,
2679
- center: bottomLeftCenter
2712
+ center: bottomLeftCenter,
2713
+ size: ctrlSize
2680
2714
  },
2681
2715
  bottomRight: {
2682
2716
  type: "bottom-right",
2683
2717
  vertexes: bottomRightVertexes,
2684
- center: bottomRightCenter
2718
+ center: bottomRightCenter,
2719
+ size: ctrlSize
2685
2720
  },
2686
2721
  leftMiddle: {
2687
2722
  type: "left-middle",
2688
2723
  vertexes: leftMiddleVertexes,
2689
- center: leftCenter
2724
+ center: leftCenter,
2725
+ size: ctrlSize
2690
2726
  },
2691
2727
  rightMiddle: {
2692
2728
  type: "right-middle",
2693
2729
  vertexes: rightMiddleVertexes,
2694
- center: rightCenter
2730
+ center: rightCenter,
2731
+ size: ctrlSize
2695
2732
  },
2696
2733
  topMiddle: {
2697
2734
  type: "top-middle",
2698
2735
  vertexes: topMiddleVertexes,
2699
- center: topCenter
2736
+ center: topCenter,
2737
+ size: ctrlSize
2700
2738
  },
2701
2739
  bottomMiddle: {
2702
2740
  type: "bottom-middle",
2703
2741
  vertexes: bottomMiddleVertexes,
2704
- center: bottomCenter
2742
+ center: bottomCenter,
2743
+ size: ctrlSize
2705
2744
  },
2706
2745
  rotate: {
2707
2746
  type: "rotate",
2708
2747
  vertexes: rotateVertexes2,
2709
- center: rotateCenter
2748
+ center: rotateCenter,
2749
+ size: rotateControllerSize
2710
2750
  }
2711
2751
  };
2712
2752
  return sizeController;
@@ -2748,62 +2788,74 @@ var __privateMethod = (obj, member, method) => {
2748
2788
  left: {
2749
2789
  type: "left",
2750
2790
  vertexes: leftVertexes,
2751
- center: leftCenter
2791
+ center: leftCenter,
2792
+ size: ctrlSize
2752
2793
  },
2753
2794
  right: {
2754
2795
  type: "right",
2755
2796
  vertexes: rightVertexes,
2756
- center: rightCenter
2797
+ center: rightCenter,
2798
+ size: ctrlSize
2757
2799
  },
2758
2800
  top: {
2759
2801
  type: "top",
2760
2802
  vertexes: topVertexes,
2761
- center: topCenter
2803
+ center: topCenter,
2804
+ size: ctrlSize
2762
2805
  },
2763
2806
  bottom: {
2764
2807
  type: "bottom",
2765
2808
  vertexes: bottomVertexes,
2766
- center: bottomCenter
2809
+ center: bottomCenter,
2810
+ size: ctrlSize
2767
2811
  },
2768
2812
  topLeft: {
2769
2813
  type: "top-left",
2770
2814
  vertexes: topLeftVertexes,
2771
- center: topLeftCenter
2815
+ center: topLeftCenter,
2816
+ size: ctrlSize
2772
2817
  },
2773
2818
  topRight: {
2774
2819
  type: "top-right",
2775
2820
  vertexes: topRightVertexes,
2776
- center: topRightCenter
2821
+ center: topRightCenter,
2822
+ size: ctrlSize
2777
2823
  },
2778
2824
  bottomLeft: {
2779
2825
  type: "bottom-left",
2780
2826
  vertexes: bottomLeftVertexes,
2781
- center: bottomLeftCenter
2827
+ center: bottomLeftCenter,
2828
+ size: ctrlSize
2782
2829
  },
2783
2830
  bottomRight: {
2784
2831
  type: "bottom-right",
2785
2832
  vertexes: bottomRightVertexes,
2786
- center: bottomRightCenter
2833
+ center: bottomRightCenter,
2834
+ size: ctrlSize
2787
2835
  },
2788
2836
  leftMiddle: {
2789
2837
  type: "left-middle",
2790
2838
  vertexes: leftMiddleVertexes,
2791
- center: leftCenter
2839
+ center: leftCenter,
2840
+ size: ctrlSize
2792
2841
  },
2793
2842
  rightMiddle: {
2794
2843
  type: "right-middle",
2795
2844
  vertexes: rightMiddleVertexes,
2796
- center: rightCenter
2845
+ center: rightCenter,
2846
+ size: ctrlSize
2797
2847
  },
2798
2848
  topMiddle: {
2799
2849
  type: "top-middle",
2800
2850
  vertexes: topMiddleVertexes,
2801
- center: topCenter
2851
+ center: topCenter,
2852
+ size: ctrlSize
2802
2853
  },
2803
2854
  bottomMiddle: {
2804
2855
  type: "bottom-middle",
2805
2856
  vertexes: bottomMiddleVertexes,
2806
- center: bottomCenter
2857
+ center: bottomCenter,
2858
+ size: ctrlSize
2807
2859
  }
2808
2860
  };
2809
2861
  return sizeController;
@@ -3223,18 +3275,13 @@ var __privateMethod = (obj, member, method) => {
3223
3275
  function resizeElement(elem, opts) {
3224
3276
  const { type } = elem;
3225
3277
  resizeElementBase(elem, opts);
3226
- if (type === "circle")
3227
- ;
3278
+ if (type === "circle") ;
3228
3279
  else if (type === "text") {
3229
3280
  resizeTextElementDetail(elem, opts);
3230
- } else if (type === "image")
3231
- ;
3232
- else if (type === "svg")
3233
- ;
3234
- else if (type === "html")
3235
- ;
3236
- else if (type === "path")
3237
- ;
3281
+ } else if (type === "image") ;
3282
+ else if (type === "svg") ;
3283
+ else if (type === "html") ;
3284
+ else if (type === "path") ;
3238
3285
  else if (type === "group" && Array.isArray(elem.detail.children)) {
3239
3286
  elem.detail.children.forEach((child) => {
3240
3287
  resizeElement(child, opts);
@@ -3657,8 +3704,7 @@ var __privateMethod = (obj, member, method) => {
3657
3704
  }
3658
3705
  function _set(obj, path, value) {
3659
3706
  const keys = path.split(".");
3660
- if (typeof obj !== "object")
3661
- return obj;
3707
+ if (typeof obj !== "object") return obj;
3662
3708
  keys.reduce((o, k, i, _) => {
3663
3709
  if (i === _.length - 1) {
3664
3710
  o[k] = value;
@@ -3832,6 +3878,90 @@ var __privateMethod = (obj, member, method) => {
3832
3878
  }
3833
3879
  return elemeList;
3834
3880
  }
3881
+ function groupElementsByPosition(list, positions) {
3882
+ if (positions.length > 1) {
3883
+ let isValidPositions = true;
3884
+ let lastIndexs = [];
3885
+ for (let i = 1; i < positions.length; i++) {
3886
+ const prevPosition = positions[i - 1];
3887
+ const position = positions[i];
3888
+ if (!(prevPosition.length > 0 && position.length > 0)) {
3889
+ isValidPositions = false;
3890
+ break;
3891
+ }
3892
+ if (prevPosition.length !== position.length) {
3893
+ isValidPositions = false;
3894
+ break;
3895
+ }
3896
+ const temp1 = [...prevPosition];
3897
+ const temp2 = [...position];
3898
+ const lastIndex1 = temp1.pop();
3899
+ const lastIndex2 = temp2.pop();
3900
+ if (i === 1 && typeof lastIndex1 === "number" && lastIndex1 >= 0) {
3901
+ lastIndexs.push(lastIndex1);
3902
+ }
3903
+ if (typeof lastIndex2 === "number" && lastIndex2 >= 0) {
3904
+ lastIndexs.push(lastIndex2);
3905
+ }
3906
+ }
3907
+ if (isValidPositions !== true) {
3908
+ console.error("[idraw]: The grouped elements are not siblings!");
3909
+ return list;
3910
+ }
3911
+ lastIndexs.sort((a, b) => a - b);
3912
+ const groupParentPosition = [...positions[0]].splice(0, positions[0].length - 1);
3913
+ const groupChildren = [];
3914
+ const groupPosition = [...groupParentPosition, lastIndexs[0]];
3915
+ for (let i = 0; i < lastIndexs.length; i++) {
3916
+ const position = [...groupParentPosition, lastIndexs[i]];
3917
+ const elem = findElementFromListByPosition(position, list);
3918
+ if (elem) {
3919
+ groupChildren.push(elem);
3920
+ }
3921
+ }
3922
+ const groupSize = calcElementListSize(groupChildren);
3923
+ for (let i = 0; i < groupChildren.length; i++) {
3924
+ const elem = groupChildren[i];
3925
+ if (elem) {
3926
+ elem.x -= groupSize.x;
3927
+ elem.y -= groupSize.y;
3928
+ }
3929
+ }
3930
+ for (let i = lastIndexs.length - 1; i >= 0; i--) {
3931
+ const position = [...groupParentPosition, lastIndexs[i]];
3932
+ deleteElementInListByPosition(position, list);
3933
+ }
3934
+ const group = {
3935
+ name: "Group",
3936
+ uuid: createUUID(),
3937
+ type: "group",
3938
+ ...groupSize,
3939
+ detail: {
3940
+ children: groupChildren
3941
+ }
3942
+ };
3943
+ insertElementToListByPosition(group, groupPosition, list);
3944
+ }
3945
+ return list;
3946
+ }
3947
+ function ungroupElementsByPosition(list, position) {
3948
+ var _a;
3949
+ const elem = findElementFromListByPosition(position, list);
3950
+ if (!(elem && (elem == null ? void 0 : elem.type) === "group" && Array.isArray((_a = elem == null ? void 0 : elem.detail) == null ? void 0 : _a.children))) {
3951
+ console.error("[idraw]: The ungrouped element is not a group element!");
3952
+ }
3953
+ const groupParentPosition = [...position].splice(0, position.length - 1);
3954
+ const groupLastIndex = position[position.length - 1];
3955
+ const { x: x2, y: y2 } = elem;
3956
+ deleteElementInListByPosition(position, list);
3957
+ elem.detail.children.forEach((child, i) => {
3958
+ child.x += x2;
3959
+ child.y += y2;
3960
+ const elemPosition = [...groupParentPosition, groupLastIndex + i];
3961
+ insertElementToListByPosition(child, elemPosition, list);
3962
+ });
3963
+ return list;
3964
+ }
3835
3965
  exports.Context2D = Context2D;
3836
3966
  exports.EventEmitter = EventEmitter;
3837
3967
  exports.Store = Store;
@@ -3900,6 +4030,7 @@ var __privateMethod = (obj, member, method) => {
3900
4030
  exports.getDefaultElementRectDetail = getDefaultElementRectDetail;
3901
4031
  exports.getElemenetsAssetIds = getElemenetsAssetIds;
3902
4032
  exports.getElementPositionFromList = getElementPositionFromList;
4033
+ exports.getElementPositionMapFromList = getElementPositionMapFromList;
3903
4034
  exports.getElementRotateVertexes = getElementRotateVertexes;
3904
4035
  exports.getElementSize = getElementSize;
3905
4036
  exports.getElementVertexes = getElementVertexes;
@@ -3910,6 +4041,7 @@ var __privateMethod = (obj, member, method) => {
3910
4041
  exports.getViewPointAtElement = getViewPointAtElement;
3911
4042
  exports.getViewScaleInfoFromSnapshot = getViewScaleInfoFromSnapshot;
3912
4043
  exports.getViewSizeInfoFromSnapshot = getViewSizeInfoFromSnapshot;
4044
+ exports.groupElementsByPosition = groupElementsByPosition;
3913
4045
  exports.insertElementToListByPosition = insertElementToListByPosition;
3914
4046
  exports.is = is;
3915
4047
  exports.isAssetId = isAssetId;
@@ -3949,6 +4081,7 @@ var __privateMethod = (obj, member, method) => {
3949
4081
  exports.throttle = throttle;
3950
4082
  exports.toColorHexNum = toColorHexNum;
3951
4083
  exports.toColorHexStr = toColorHexStr;
4084
+ exports.ungroupElementsByPosition = ungroupElementsByPosition;
3952
4085
  exports.updateElementInList = updateElementInList;
3953
4086
  exports.updateElementInListByPosition = updateElementInListByPosition;
3954
4087
  exports.updateViewVisibleInfoMapStatus = updateViewVisibleInfoMapStatus;