@idraw/core 0.4.0-beta.10 → 0.4.0-beta.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.
@@ -22,7 +22,7 @@ var __privateMethod = (obj, member, method) => {
22
22
  return method;
23
23
  };
24
24
 
25
- var _board, _canvas, _container, _initContainer, initContainer_fn;
25
+ var _eventHub, _container, _cursorType, _resizeCursorBaseImage, _cursorImageMap, _init, init_fn, _loadResizeCursorBaseImage, loadResizeCursorBaseImage_fn, _resetCursor, resetCursor_fn, _setCursorResize, setCursorResize_fn, _appendRotateResizeImage, appendRotateResizeImage_fn, _board, _canvas, _container2, _initContainer, initContainer_fn;
26
26
  function throttle(fn, timeout) {
27
27
  let timer = -1;
28
28
  return function(...args) {
@@ -789,6 +789,9 @@ var __privateMethod = (obj, member, method) => {
789
789
  return false;
790
790
  }
791
791
  destroy() {
792
+ this.clear();
793
+ }
794
+ clear() {
792
795
  __classPrivateFieldGet$8(this, _EventEmitter_listeners, "f").clear();
793
796
  }
794
797
  }
@@ -869,6 +872,9 @@ var __privateMethod = (obj, member, method) => {
869
872
  };
870
873
  return sacelInfo;
871
874
  }
875
+ function parseRadianToAngle(radian) {
876
+ return radian / Math.PI * 180;
877
+ }
872
878
  function parseAngleToRadian(angle2) {
873
879
  return angle2 / 180 * Math.PI;
874
880
  }
@@ -886,7 +892,7 @@ var __privateMethod = (obj, member, method) => {
886
892
  ctx.translate(-center.x, -center.y);
887
893
  }
888
894
  }
889
- function rotateElement(ctx, elemSize, callback) {
895
+ function rotateElement$1(ctx, elemSize, callback) {
890
896
  const center = calcElementCenter(elemSize);
891
897
  rotateByCenter(ctx, elemSize.angle || 0, center, () => {
892
898
  callback(ctx);
@@ -912,6 +918,21 @@ var __privateMethod = (obj, member, method) => {
912
918
  };
913
919
  return calcElementCenter(elemSize);
914
920
  }
921
+ function calcRadian(center, start, end) {
922
+ const startAngle = calcLineRadian(center, start);
923
+ const endAngle = calcLineRadian(center, end);
924
+ if (endAngle !== null && startAngle !== null) {
925
+ if (startAngle > Math.PI * 3 / 2 && endAngle < Math.PI / 2) {
926
+ return endAngle + (Math.PI * 2 - startAngle);
927
+ } else if (endAngle > Math.PI * 3 / 2 && startAngle < Math.PI / 2) {
928
+ return startAngle + (Math.PI * 2 - endAngle);
929
+ } else {
930
+ return endAngle - startAngle;
931
+ }
932
+ } else {
933
+ return 0;
934
+ }
935
+ }
915
936
  function calcLineRadian(center, p) {
916
937
  const x2 = p.x - center.x;
917
938
  const y2 = p.y - center.y;
@@ -1468,8 +1489,8 @@ var __privateMethod = (obj, member, method) => {
1468
1489
  };
1469
1490
  }
1470
1491
  function calcElementSizeController(elemSize, opts) {
1471
- const { groupQueue, controllerSize, viewScaleInfo } = opts;
1472
- const ctrlSize = (controllerSize && controllerSize > 0 ? controllerSize : 8) / viewScaleInfo.scale;
1492
+ const { groupQueue, controllerSize: controllerSize2, viewScaleInfo } = opts;
1493
+ const ctrlSize = (controllerSize2 && controllerSize2 > 0 ? controllerSize2 : 8) / viewScaleInfo.scale;
1473
1494
  const { x: x2, y: y2, w: w2, h: h2, angle: angle2 = 0 } = elemSize;
1474
1495
  const ctrlGroupQueue = [
1475
1496
  ...[
@@ -1491,6 +1512,13 @@ var __privateMethod = (obj, member, method) => {
1491
1512
  totalAngle += angle3;
1492
1513
  });
1493
1514
  const vertexes = calcElementVertexesInGroup(elemSize, { groupQueue });
1515
+ const rotateElemVertexes = calcElementVertexesInGroup({
1516
+ x: x2 - ctrlSize * 2,
1517
+ y: y2 - ctrlSize * 2,
1518
+ h: h2 + ctrlSize * 4,
1519
+ w: w2 + ctrlSize * 4,
1520
+ angle: angle2
1521
+ }, { groupQueue: [...groupQueue] });
1494
1522
  const topCenter = getCenterFromTwoPoints(vertexes[0], vertexes[1]);
1495
1523
  const rightCenter = getCenterFromTwoPoints(vertexes[1], vertexes[2]);
1496
1524
  const bottomCenter = getCenterFromTwoPoints(vertexes[2], vertexes[3]);
@@ -1519,6 +1547,9 @@ var __privateMethod = (obj, member, method) => {
1519
1547
  const rightMiddleVertexes = calcElementVertexes(rightMiddleSize);
1520
1548
  const bottomMiddleVertexes = calcElementVertexes(bottomMiddleSize);
1521
1549
  const leftMiddleVertexes = calcElementVertexes(leftMiddleSize);
1550
+ const rotateCenter = getCenterFromTwoPoints(rotateElemVertexes[0], rotateElemVertexes[1]);
1551
+ const rotateSize = createControllerElementSizeFromCenter(rotateCenter, { size: ctrlSize, angle: totalAngle });
1552
+ const rotateVertexes2 = calcElementVertexes(rotateSize);
1522
1553
  const sizeController = {
1523
1554
  elementWrapper: vertexes,
1524
1555
  left: {
@@ -1580,6 +1611,11 @@ var __privateMethod = (obj, member, method) => {
1580
1611
  type: "bottom-middle",
1581
1612
  vertexes: bottomMiddleVertexes,
1582
1613
  center: bottomCenter
1614
+ },
1615
+ rotate: {
1616
+ type: "rotate",
1617
+ vertexes: rotateVertexes2,
1618
+ center: rotateCenter
1583
1619
  }
1584
1620
  };
1585
1621
  return sizeController;
@@ -1859,7 +1895,7 @@ var __privateMethod = (obj, member, method) => {
1859
1895
  ctx.clip(path2d);
1860
1896
  ctx.translate(0 - internalX, 0 - internalY);
1861
1897
  ctx.setTransform(1, 0, 0, 1, 0, 0);
1862
- rotateElement(ctx, Object.assign({}, viewElem), () => {
1898
+ rotateElement$1(ctx, Object.assign({}, viewElem), () => {
1863
1899
  renderContent === null || renderContent === void 0 ? void 0 : renderContent();
1864
1900
  });
1865
1901
  ctx.restore();
@@ -2083,7 +2119,7 @@ var __privateMethod = (obj, member, method) => {
2083
2119
  const { calculator, viewScaleInfo, viewSizeInfo, parentOpacity } = opts;
2084
2120
  const { x: x2, y: y2, w: w2, h: h2 } = (calculator === null || calculator === void 0 ? void 0 : calculator.elementSize({ x: elem.x, y: elem.y, w: elem.w, h: elem.h }, viewScaleInfo, viewSizeInfo)) || elem;
2085
2121
  const viewElem = Object.assign(Object.assign({}, elem), { x: x2, y: y2, w: w2, h: h2, angle: angle2 });
2086
- rotateElement(ctx, { x: x2, y: y2, w: w2, h: h2, angle: angle2 }, () => {
2122
+ rotateElement$1(ctx, { x: x2, y: y2, w: w2, h: h2, angle: angle2 }, () => {
2087
2123
  drawBoxShadow(ctx, viewElem, {
2088
2124
  viewScaleInfo,
2089
2125
  viewSizeInfo,
@@ -2137,7 +2173,7 @@ var __privateMethod = (obj, member, method) => {
2137
2173
  const { calculator, viewScaleInfo, viewSizeInfo, parentOpacity } = opts;
2138
2174
  const { x: x2, y: y2, w: w2, h: h2, angle: angle2 } = (calculator === null || calculator === void 0 ? void 0 : calculator.elementSize(elem, viewScaleInfo, viewSizeInfo)) || elem;
2139
2175
  const viewElem = Object.assign(Object.assign({}, elem), { x: x2, y: y2, w: w2, h: h2, angle: angle2 });
2140
- rotateElement(ctx, { x: x2, y: y2, w: w2, h: h2, angle: angle2 }, () => {
2176
+ rotateElement$1(ctx, { x: x2, y: y2, w: w2, h: h2, angle: angle2 }, () => {
2141
2177
  drawBoxShadow(ctx, viewElem, {
2142
2178
  viewScaleInfo,
2143
2179
  viewSizeInfo,
@@ -2160,7 +2196,7 @@ var __privateMethod = (obj, member, method) => {
2160
2196
  const { calculator, viewScaleInfo, viewSizeInfo, parentOpacity } = opts;
2161
2197
  const { x: x2, y: y2, w: w2, h: h2, angle: angle2 } = (calculator === null || calculator === void 0 ? void 0 : calculator.elementSize(elem, viewScaleInfo, viewSizeInfo)) || elem;
2162
2198
  const viewElem = Object.assign(Object.assign({}, elem), { x: x2, y: y2, w: w2, h: h2, angle: angle2 });
2163
- rotateElement(ctx, { x: x2, y: y2, w: w2, h: h2, angle: angle2 }, () => {
2199
+ rotateElement$1(ctx, { x: x2, y: y2, w: w2, h: h2, angle: angle2 }, () => {
2164
2200
  drawBoxShadow(ctx, viewElem, {
2165
2201
  viewScaleInfo,
2166
2202
  viewSizeInfo,
@@ -2172,7 +2208,7 @@ var __privateMethod = (obj, member, method) => {
2172
2208
  viewSizeInfo,
2173
2209
  parentOpacity,
2174
2210
  renderContent: () => {
2175
- if (!content) {
2211
+ if (!content && !opts.loader.isDestroyed()) {
2176
2212
  opts.loader.load(elem, opts.elementAssets || {});
2177
2213
  }
2178
2214
  if (elem.type === "image" && content) {
@@ -2206,8 +2242,8 @@ var __privateMethod = (obj, member, method) => {
2206
2242
  const content = opts.loader.getContent(elem);
2207
2243
  const { calculator, viewScaleInfo, viewSizeInfo, parentOpacity } = opts;
2208
2244
  const { x: x2, y: y2, w: w2, h: h2, angle: angle2 } = (calculator === null || calculator === void 0 ? void 0 : calculator.elementSize(elem, viewScaleInfo, viewSizeInfo)) || elem;
2209
- rotateElement(ctx, { x: x2, y: y2, w: w2, h: h2, angle: angle2 }, () => {
2210
- if (!content) {
2245
+ rotateElement$1(ctx, { x: x2, y: y2, w: w2, h: h2, angle: angle2 }, () => {
2246
+ if (!content && !opts.loader.isDestroyed()) {
2211
2247
  opts.loader.load(elem, opts.elementAssets || {});
2212
2248
  }
2213
2249
  if (elem.type === "svg" && content) {
@@ -2221,8 +2257,8 @@ var __privateMethod = (obj, member, method) => {
2221
2257
  const content = opts.loader.getContent(elem);
2222
2258
  const { calculator, viewScaleInfo, viewSizeInfo, parentOpacity } = opts;
2223
2259
  const { x: x2, y: y2, w: w2, h: h2, angle: angle2 } = (calculator === null || calculator === void 0 ? void 0 : calculator.elementSize(elem, viewScaleInfo, viewSizeInfo)) || elem;
2224
- rotateElement(ctx, { x: x2, y: y2, w: w2, h: h2, angle: angle2 }, () => {
2225
- if (!content) {
2260
+ rotateElement$1(ctx, { x: x2, y: y2, w: w2, h: h2, angle: angle2 }, () => {
2261
+ if (!content && !opts.loader.isDestroyed()) {
2226
2262
  opts.loader.load(elem, opts.elementAssets || {});
2227
2263
  }
2228
2264
  if (elem.type === "html" && content) {
@@ -2237,7 +2273,7 @@ var __privateMethod = (obj, member, method) => {
2237
2273
  const { calculator, viewScaleInfo, viewSizeInfo, parentOpacity } = opts;
2238
2274
  const { x: x2, y: y2, w: w2, h: h2, angle: angle2 } = (calculator === null || calculator === void 0 ? void 0 : calculator.elementSize(elem, viewScaleInfo, viewSizeInfo)) || elem;
2239
2275
  const viewElem = Object.assign(Object.assign({}, elem), { x: x2, y: y2, w: w2, h: h2, angle: angle2 });
2240
- rotateElement(ctx, { x: x2, y: y2, w: w2, h: h2, angle: angle2 }, () => {
2276
+ rotateElement$1(ctx, { x: x2, y: y2, w: w2, h: h2, angle: angle2 }, () => {
2241
2277
  drawBox(ctx, viewElem, {
2242
2278
  originElem: elem,
2243
2279
  calcElemSize: { x: x2, y: y2, w: w2, h: h2, angle: angle2 },
@@ -2348,7 +2384,7 @@ var __privateMethod = (obj, member, method) => {
2348
2384
  const internalY = y2 - viewOriginY;
2349
2385
  const scaleNum = viewScaleInfo.scale * viewSizeInfo.devicePixelRatio;
2350
2386
  const viewElem = Object.assign(Object.assign({}, elem), { x: x2, y: y2, w: w2, h: h2, angle: angle2 });
2351
- rotateElement(ctx, { x: x2, y: y2, w: w2, h: h2, angle: angle2 }, () => {
2387
+ rotateElement$1(ctx, { x: x2, y: y2, w: w2, h: h2, angle: angle2 }, () => {
2352
2388
  drawBox(ctx, viewElem, {
2353
2389
  originElem: elem,
2354
2390
  calcElemSize: { x: x2, y: y2, w: w2, h: h2, angle: angle2 },
@@ -2440,7 +2476,7 @@ var __privateMethod = (obj, member, method) => {
2440
2476
  const { calculator, viewScaleInfo, viewSizeInfo, parentOpacity } = opts;
2441
2477
  const { x: x2, y: y2, w: w2, h: h2, angle: angle2 } = (calculator === null || calculator === void 0 ? void 0 : calculator.elementSize({ x: elem.x, y: elem.y, w: elem.w, h: elem.h, angle: elem.angle }, viewScaleInfo, viewSizeInfo)) || elem;
2442
2478
  const viewElem = Object.assign(Object.assign({}, elem), { x: x2, y: y2, w: w2, h: h2, angle: angle2 });
2443
- rotateElement(ctx, { x: x2, y: y2, w: w2, h: h2, angle: angle2 }, () => {
2479
+ rotateElement$1(ctx, { x: x2, y: y2, w: w2, h: h2, angle: angle2 }, () => {
2444
2480
  ctx.globalAlpha = getOpacity(elem) * parentOpacity;
2445
2481
  drawBoxShadow(ctx, viewElem, {
2446
2482
  viewScaleInfo,
@@ -2597,7 +2633,7 @@ var __privateMethod = (obj, member, method) => {
2597
2633
  throw new TypeError("Cannot write private member to an object whose class did not declare it");
2598
2634
  return kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value), value;
2599
2635
  };
2600
- var _Loader_instances, _Loader_loadFuncMap, _Loader_currentLoadItemMap, _Loader_storageLoadItemMap, _Loader_registerLoadFunc, _Loader_getLoadElementSource, _Loader_createLoadItem, _Loader_emitLoad, _Loader_emitError, _Loader_loadResource, _Loader_isExistingErrorStorage;
2636
+ var _Loader_instances, _Loader_loadFuncMap, _Loader_currentLoadItemMap, _Loader_storageLoadItemMap, _Loader_hasDestroyed, _Loader_registerLoadFunc, _Loader_getLoadElementSource, _Loader_createLoadItem, _Loader_emitLoad, _Loader_emitError, _Loader_loadResource, _Loader_isExistingErrorStorage;
2601
2637
  const supportElementTypes = ["image", "svg", "html"];
2602
2638
  const getAssetIdFromElement = (element) => {
2603
2639
  var _a, _b, _c;
@@ -2624,6 +2660,7 @@ var __privateMethod = (obj, member, method) => {
2624
2660
  _Loader_loadFuncMap.set(this, {});
2625
2661
  _Loader_currentLoadItemMap.set(this, {});
2626
2662
  _Loader_storageLoadItemMap.set(this, {});
2663
+ _Loader_hasDestroyed.set(this, false);
2627
2664
  __classPrivateFieldGet$6(this, _Loader_instances, "m", _Loader_registerLoadFunc).call(this, "image", (elem, assets) => __awaiter(this, void 0, void 0, function* () {
2628
2665
  var _a;
2629
2666
  const src = ((_a = assets[elem.detail.src]) === null || _a === void 0 ? void 0 : _a.value) || elem.detail.src;
@@ -2658,12 +2695,20 @@ var __privateMethod = (obj, member, method) => {
2658
2695
  };
2659
2696
  }));
2660
2697
  }
2698
+ isDestroyed() {
2699
+ return __classPrivateFieldGet$6(this, _Loader_hasDestroyed, "f");
2700
+ }
2661
2701
  destroy() {
2702
+ __classPrivateFieldSet$6(this, _Loader_hasDestroyed, true, "f");
2703
+ this.clear();
2662
2704
  __classPrivateFieldSet$6(this, _Loader_loadFuncMap, null, "f");
2663
2705
  __classPrivateFieldSet$6(this, _Loader_currentLoadItemMap, null, "f");
2664
2706
  __classPrivateFieldSet$6(this, _Loader_storageLoadItemMap, null, "f");
2665
2707
  }
2666
2708
  load(element, assets) {
2709
+ if (__classPrivateFieldGet$6(this, _Loader_hasDestroyed, "f") === true) {
2710
+ return;
2711
+ }
2667
2712
  if (__classPrivateFieldGet$6(this, _Loader_instances, "m", _Loader_isExistingErrorStorage).call(this, element)) {
2668
2713
  return;
2669
2714
  }
@@ -2683,7 +2728,7 @@ var __privateMethod = (obj, member, method) => {
2683
2728
  __classPrivateFieldSet$6(this, _Loader_storageLoadItemMap, itemMap, "f");
2684
2729
  }
2685
2730
  }
2686
- _Loader_loadFuncMap = /* @__PURE__ */ new WeakMap(), _Loader_currentLoadItemMap = /* @__PURE__ */ new WeakMap(), _Loader_storageLoadItemMap = /* @__PURE__ */ new WeakMap(), _Loader_instances = /* @__PURE__ */ new WeakSet(), _Loader_registerLoadFunc = function _Loader_registerLoadFunc2(type, func) {
2731
+ _Loader_loadFuncMap = /* @__PURE__ */ new WeakMap(), _Loader_currentLoadItemMap = /* @__PURE__ */ new WeakMap(), _Loader_storageLoadItemMap = /* @__PURE__ */ new WeakMap(), _Loader_hasDestroyed = /* @__PURE__ */ new WeakMap(), _Loader_instances = /* @__PURE__ */ new WeakSet(), _Loader_registerLoadFunc = function _Loader_registerLoadFunc2(type, func) {
2687
2732
  __classPrivateFieldGet$6(this, _Loader_loadFuncMap, "f")[type] = func;
2688
2733
  }, _Loader_getLoadElementSource = function _Loader_getLoadElementSource2(element) {
2689
2734
  var _a, _b, _c;
@@ -2709,40 +2754,46 @@ var __privateMethod = (obj, member, method) => {
2709
2754
  }, _Loader_emitLoad = function _Loader_emitLoad2(item) {
2710
2755
  const assetId = getAssetIdFromElement(item.element);
2711
2756
  const storageItem = __classPrivateFieldGet$6(this, _Loader_storageLoadItemMap, "f")[assetId];
2712
- if (storageItem) {
2713
- if (storageItem.startTime < item.startTime) {
2757
+ if (!__classPrivateFieldGet$6(this, _Loader_hasDestroyed, "f")) {
2758
+ if (storageItem) {
2759
+ if (storageItem.startTime < item.startTime) {
2760
+ __classPrivateFieldGet$6(this, _Loader_storageLoadItemMap, "f")[assetId] = item;
2761
+ this.trigger("load", Object.assign(Object.assign({}, item), { countTime: item.endTime - item.startTime }));
2762
+ }
2763
+ } else {
2714
2764
  __classPrivateFieldGet$6(this, _Loader_storageLoadItemMap, "f")[assetId] = item;
2715
2765
  this.trigger("load", Object.assign(Object.assign({}, item), { countTime: item.endTime - item.startTime }));
2716
2766
  }
2717
- } else {
2718
- __classPrivateFieldGet$6(this, _Loader_storageLoadItemMap, "f")[assetId] = item;
2719
- this.trigger("load", Object.assign(Object.assign({}, item), { countTime: item.endTime - item.startTime }));
2720
2767
  }
2721
2768
  }, _Loader_emitError = function _Loader_emitError2(item) {
2722
2769
  var _a;
2723
2770
  const assetId = getAssetIdFromElement(item.element);
2724
2771
  const storageItem = (_a = __classPrivateFieldGet$6(this, _Loader_storageLoadItemMap, "f")) === null || _a === void 0 ? void 0 : _a[assetId];
2725
- if (storageItem) {
2726
- if (storageItem.startTime < item.startTime) {
2772
+ if (!__classPrivateFieldGet$6(this, _Loader_hasDestroyed, "f")) {
2773
+ if (storageItem) {
2774
+ if (storageItem.startTime < item.startTime) {
2775
+ __classPrivateFieldGet$6(this, _Loader_storageLoadItemMap, "f")[assetId] = item;
2776
+ this.trigger("error", Object.assign(Object.assign({}, item), { countTime: item.endTime - item.startTime }));
2777
+ }
2778
+ } else {
2727
2779
  __classPrivateFieldGet$6(this, _Loader_storageLoadItemMap, "f")[assetId] = item;
2728
2780
  this.trigger("error", Object.assign(Object.assign({}, item), { countTime: item.endTime - item.startTime }));
2729
2781
  }
2730
- } else {
2731
- __classPrivateFieldGet$6(this, _Loader_storageLoadItemMap, "f")[assetId] = item;
2732
- this.trigger("error", Object.assign(Object.assign({}, item), { countTime: item.endTime - item.startTime }));
2733
2782
  }
2734
2783
  }, _Loader_loadResource = function _Loader_loadResource2(element, assets) {
2735
2784
  const item = __classPrivateFieldGet$6(this, _Loader_instances, "m", _Loader_createLoadItem).call(this, element);
2736
2785
  const assetId = getAssetIdFromElement(element);
2737
2786
  __classPrivateFieldGet$6(this, _Loader_currentLoadItemMap, "f")[assetId] = item;
2738
2787
  const loadFunc = __classPrivateFieldGet$6(this, _Loader_loadFuncMap, "f")[element.type];
2739
- if (typeof loadFunc === "function") {
2788
+ if (typeof loadFunc === "function" && !__classPrivateFieldGet$6(this, _Loader_hasDestroyed, "f")) {
2740
2789
  item.startTime = Date.now();
2741
2790
  loadFunc(element, assets).then((result) => {
2742
- item.content = result.content;
2743
- item.endTime = Date.now();
2744
- item.status = "load";
2745
- __classPrivateFieldGet$6(this, _Loader_instances, "m", _Loader_emitLoad).call(this, item);
2791
+ if (!__classPrivateFieldGet$6(this, _Loader_hasDestroyed, "f")) {
2792
+ item.content = result.content;
2793
+ item.endTime = Date.now();
2794
+ item.status = "load";
2795
+ __classPrivateFieldGet$6(this, _Loader_instances, "m", _Loader_emitLoad).call(this, item);
2796
+ }
2746
2797
  }).catch((err) => {
2747
2798
  console.warn(`Load element source "${item.source}" fail`, err, element);
2748
2799
  item.endTime = Date.now();
@@ -2776,20 +2827,26 @@ var __privateMethod = (obj, member, method) => {
2776
2827
  throw new TypeError("Cannot read private member from an object whose class did not declare it");
2777
2828
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
2778
2829
  };
2779
- var _Renderer_instances, _Renderer_opts, _Renderer_loader, _Renderer_init;
2830
+ var _Renderer_instances, _Renderer_opts, _Renderer_loader, _Renderer_hasDestroyed, _Renderer_init;
2780
2831
  class Renderer extends EventEmitter {
2781
2832
  constructor(opts) {
2782
2833
  super();
2783
2834
  _Renderer_instances.add(this);
2784
2835
  _Renderer_opts.set(this, void 0);
2785
2836
  _Renderer_loader.set(this, new Loader());
2837
+ _Renderer_hasDestroyed.set(this, false);
2786
2838
  __classPrivateFieldSet$5(this, _Renderer_opts, opts, "f");
2787
2839
  __classPrivateFieldGet$5(this, _Renderer_instances, "m", _Renderer_init).call(this);
2788
2840
  }
2841
+ isDestroyed() {
2842
+ return __classPrivateFieldGet$5(this, _Renderer_hasDestroyed, "f");
2843
+ }
2789
2844
  destroy() {
2845
+ this.clear();
2790
2846
  __classPrivateFieldSet$5(this, _Renderer_opts, null, "f");
2791
2847
  __classPrivateFieldGet$5(this, _Renderer_loader, "f").destroy();
2792
2848
  __classPrivateFieldSet$5(this, _Renderer_loader, null, "f");
2849
+ __classPrivateFieldSet$5(this, _Renderer_hasDestroyed, true, "f");
2793
2850
  }
2794
2851
  updateOptions(opts) {
2795
2852
  __classPrivateFieldSet$5(this, _Renderer_opts, opts, "f");
@@ -2856,7 +2913,7 @@ var __privateMethod = (obj, member, method) => {
2856
2913
  return __classPrivateFieldGet$5(this, _Renderer_loader, "f");
2857
2914
  }
2858
2915
  }
2859
- _Renderer_opts = /* @__PURE__ */ new WeakMap(), _Renderer_loader = /* @__PURE__ */ new WeakMap(), _Renderer_instances = /* @__PURE__ */ new WeakSet(), _Renderer_init = function _Renderer_init2() {
2916
+ _Renderer_opts = /* @__PURE__ */ new WeakMap(), _Renderer_loader = /* @__PURE__ */ new WeakMap(), _Renderer_hasDestroyed = /* @__PURE__ */ new WeakMap(), _Renderer_instances = /* @__PURE__ */ new WeakSet(), _Renderer_init = function _Renderer_init2() {
2860
2917
  const loader = __classPrivateFieldGet$5(this, _Renderer_loader, "f");
2861
2918
  loader.on("load", (e) => {
2862
2919
  this.trigger("load", e);
@@ -2926,7 +2983,7 @@ var __privateMethod = (obj, member, method) => {
2926
2983
  throw new TypeError("Cannot read private member from an object whose class did not declare it");
2927
2984
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
2928
2985
  };
2929
- var _BoardWatcher_instances, _BoardWatcher_opts, _BoardWatcher_store, _BoardWatcher_init, _BoardWatcher_onWheel, _BoardWatcher_onContextMenu, _BoardWatcher_onClick, _BoardWatcher_onPointLeave, _BoardWatcher_onPointEnd, _BoardWatcher_onPointMove, _BoardWatcher_onPointStart, _BoardWatcher_onHover, _BoardWatcher_isInTarget, _BoardWatcher_getPoint, _BoardWatcher_isVaildPoint;
2986
+ var _BoardWatcher_instances, _BoardWatcher_opts, _BoardWatcher_store, _BoardWatcher_hasDestroyed, _BoardWatcher_init, _BoardWatcher_onWheel, _BoardWatcher_onContextMenu, _BoardWatcher_onClick, _BoardWatcher_onPointLeave, _BoardWatcher_onPointEnd, _BoardWatcher_onPointMove, _BoardWatcher_onPointStart, _BoardWatcher_onHover, _BoardWatcher_isInTarget, _BoardWatcher_getPoint, _BoardWatcher_isVaildPoint;
2930
2987
  function isBoardAvailableNum(num) {
2931
2988
  return num > 0 || num < 0 || num === 0;
2932
2989
  }
@@ -2936,6 +2993,7 @@ var __privateMethod = (obj, member, method) => {
2936
2993
  _BoardWatcher_instances.add(this);
2937
2994
  _BoardWatcher_opts.set(this, void 0);
2938
2995
  _BoardWatcher_store.set(this, void 0);
2996
+ _BoardWatcher_hasDestroyed.set(this, false);
2939
2997
  _BoardWatcher_onWheel.set(this, (e) => {
2940
2998
  if (!__classPrivateFieldGet$3(this, _BoardWatcher_instances, "m", _BoardWatcher_isInTarget).call(this, e)) {
2941
2999
  return;
@@ -3047,7 +3105,21 @@ var __privateMethod = (obj, member, method) => {
3047
3105
  __classPrivateFieldSet$3(this, _BoardWatcher_opts, opts, "f");
3048
3106
  __classPrivateFieldGet$3(this, _BoardWatcher_instances, "m", _BoardWatcher_init).call(this);
3049
3107
  }
3050
- destroy() {
3108
+ onEvents() {
3109
+ if (__classPrivateFieldGet$3(this, _BoardWatcher_hasDestroyed, "f")) {
3110
+ return;
3111
+ }
3112
+ const container = window;
3113
+ container.addEventListener("mousemove", __classPrivateFieldGet$3(this, _BoardWatcher_onHover, "f"));
3114
+ container.addEventListener("mousedown", __classPrivateFieldGet$3(this, _BoardWatcher_onPointStart, "f"));
3115
+ container.addEventListener("mousemove", __classPrivateFieldGet$3(this, _BoardWatcher_onPointMove, "f"));
3116
+ container.addEventListener("mouseup", __classPrivateFieldGet$3(this, _BoardWatcher_onPointEnd, "f"));
3117
+ container.addEventListener("mouseleave", __classPrivateFieldGet$3(this, _BoardWatcher_onPointLeave, "f"));
3118
+ container.addEventListener("wheel", __classPrivateFieldGet$3(this, _BoardWatcher_onWheel, "f"), { passive: false });
3119
+ container.addEventListener("click", __classPrivateFieldGet$3(this, _BoardWatcher_onClick, "f"));
3120
+ container.addEventListener("contextmenu", __classPrivateFieldGet$3(this, _BoardWatcher_onContextMenu, "f"));
3121
+ }
3122
+ offEvents() {
3051
3123
  const container = window;
3052
3124
  container.removeEventListener("mousemove", __classPrivateFieldGet$3(this, _BoardWatcher_onHover, "f"));
3053
3125
  container.removeEventListener("mousedown", __classPrivateFieldGet$3(this, _BoardWatcher_onPointStart, "f"));
@@ -3058,17 +3130,14 @@ var __privateMethod = (obj, member, method) => {
3058
3130
  container.removeEventListener("click", __classPrivateFieldGet$3(this, _BoardWatcher_onClick, "f"));
3059
3131
  container.removeEventListener("contextmenu", __classPrivateFieldGet$3(this, _BoardWatcher_onContextMenu, "f"));
3060
3132
  }
3133
+ destroy() {
3134
+ this.offEvents();
3135
+ __classPrivateFieldGet$3(this, _BoardWatcher_store, "f").destroy();
3136
+ __classPrivateFieldSet$3(this, _BoardWatcher_hasDestroyed, true, "f");
3137
+ }
3061
3138
  }
3062
- _BoardWatcher_opts = /* @__PURE__ */ new WeakMap(), _BoardWatcher_store = /* @__PURE__ */ new WeakMap(), _BoardWatcher_onWheel = /* @__PURE__ */ new WeakMap(), _BoardWatcher_onContextMenu = /* @__PURE__ */ new WeakMap(), _BoardWatcher_onClick = /* @__PURE__ */ new WeakMap(), _BoardWatcher_onPointLeave = /* @__PURE__ */ new WeakMap(), _BoardWatcher_onPointEnd = /* @__PURE__ */ new WeakMap(), _BoardWatcher_onPointMove = /* @__PURE__ */ new WeakMap(), _BoardWatcher_onPointStart = /* @__PURE__ */ new WeakMap(), _BoardWatcher_onHover = /* @__PURE__ */ new WeakMap(), _BoardWatcher_instances = /* @__PURE__ */ new WeakSet(), _BoardWatcher_init = function _BoardWatcher_init2() {
3063
- const container = window;
3064
- container.addEventListener("mousemove", __classPrivateFieldGet$3(this, _BoardWatcher_onHover, "f"));
3065
- container.addEventListener("mousedown", __classPrivateFieldGet$3(this, _BoardWatcher_onPointStart, "f"));
3066
- container.addEventListener("mousemove", __classPrivateFieldGet$3(this, _BoardWatcher_onPointMove, "f"));
3067
- container.addEventListener("mouseup", __classPrivateFieldGet$3(this, _BoardWatcher_onPointEnd, "f"));
3068
- container.addEventListener("mouseleave", __classPrivateFieldGet$3(this, _BoardWatcher_onPointLeave, "f"));
3069
- container.addEventListener("wheel", __classPrivateFieldGet$3(this, _BoardWatcher_onWheel, "f"), { passive: false });
3070
- container.addEventListener("click", __classPrivateFieldGet$3(this, _BoardWatcher_onClick, "f"));
3071
- container.addEventListener("contextmenu", __classPrivateFieldGet$3(this, _BoardWatcher_onContextMenu, "f"));
3139
+ _BoardWatcher_opts = /* @__PURE__ */ new WeakMap(), _BoardWatcher_store = /* @__PURE__ */ new WeakMap(), _BoardWatcher_hasDestroyed = /* @__PURE__ */ new WeakMap(), _BoardWatcher_onWheel = /* @__PURE__ */ new WeakMap(), _BoardWatcher_onContextMenu = /* @__PURE__ */ new WeakMap(), _BoardWatcher_onClick = /* @__PURE__ */ new WeakMap(), _BoardWatcher_onPointLeave = /* @__PURE__ */ new WeakMap(), _BoardWatcher_onPointEnd = /* @__PURE__ */ new WeakMap(), _BoardWatcher_onPointMove = /* @__PURE__ */ new WeakMap(), _BoardWatcher_onPointStart = /* @__PURE__ */ new WeakMap(), _BoardWatcher_onHover = /* @__PURE__ */ new WeakMap(), _BoardWatcher_instances = /* @__PURE__ */ new WeakSet(), _BoardWatcher_init = function _BoardWatcher_init2() {
3140
+ this.onEvents();
3072
3141
  }, _BoardWatcher_isInTarget = function _BoardWatcher_isInTarget2(e) {
3073
3142
  return e.target === __classPrivateFieldGet$3(this, _BoardWatcher_opts, "f").boardContent.boardContext.canvas;
3074
3143
  }, _BoardWatcher_getPoint = function _BoardWatcher_getPoint2(e) {
@@ -3343,7 +3412,7 @@ var __privateMethod = (obj, member, method) => {
3343
3412
  throw new TypeError("Cannot read private member from an object whose class did not declare it");
3344
3413
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
3345
3414
  };
3346
- var _Board_instances, _Board_opts, _Board_middlewareMap, _Board_middlewares, _Board_activeMiddlewareObjs, _Board_watcher, _Board_renderer, _Board_sharer, _Board_viewer, _Board_calculator, _Board_eventHub, _Board_init, _Board_handlePointStart, _Board_handlePointEnd, _Board_handlePointMove, _Board_handleHover, _Board_handleDoubleClick, _Board_handleWheel, _Board_handleWheelScale, _Board_handleScrollX, _Board_handleScrollY, _Board_handleResize, _Board_handleClear, _Board_handleBeforeDrawFrame, _Board_handleAfterDrawFrame, _Board_resetActiveMiddlewareObjs;
3415
+ var _Board_instances, _Board_opts, _Board_middlewareMap, _Board_middlewares, _Board_activeMiddlewareObjs, _Board_watcher, _Board_renderer, _Board_sharer, _Board_viewer, _Board_calculator, _Board_eventHub, _Board_hasDestroyed, _Board_init, _Board_handlePointStart, _Board_handlePointEnd, _Board_handlePointMove, _Board_handleHover, _Board_handleDoubleClick, _Board_handleWheel, _Board_handleWheelScale, _Board_handleScrollX, _Board_handleScrollY, _Board_handleResize, _Board_handleClear, _Board_handleBeforeDrawFrame, _Board_handleAfterDrawFrame, _Board_resetActiveMiddlewareObjs;
3347
3416
  const throttleTime = 10;
3348
3417
  class Board {
3349
3418
  constructor(opts) {
@@ -3358,6 +3427,7 @@ var __privateMethod = (obj, member, method) => {
3358
3427
  _Board_viewer.set(this, void 0);
3359
3428
  _Board_calculator.set(this, void 0);
3360
3429
  _Board_eventHub.set(this, new EventEmitter());
3430
+ _Board_hasDestroyed.set(this, false);
3361
3431
  const { boardContent } = opts;
3362
3432
  const sharer = new Sharer();
3363
3433
  const calculator = new Calculator({ viewContext: boardContent.viewContext });
@@ -3390,11 +3460,15 @@ var __privateMethod = (obj, member, method) => {
3390
3460
  __classPrivateFieldGet(this, _Board_instances, "m", _Board_init).call(this);
3391
3461
  __classPrivateFieldGet(this, _Board_instances, "m", _Board_resetActiveMiddlewareObjs).call(this);
3392
3462
  }
3463
+ isDestroyed() {
3464
+ return __classPrivateFieldGet(this, _Board_hasDestroyed, "f");
3465
+ }
3393
3466
  destroy() {
3394
3467
  __classPrivateFieldGet(this, _Board_watcher, "f").destroy();
3395
3468
  __classPrivateFieldGet(this, _Board_renderer, "f").destroy();
3396
3469
  __classPrivateFieldGet(this, _Board_calculator, "f").destroy();
3397
3470
  __classPrivateFieldGet(this, _Board_eventHub, "f").destroy();
3471
+ __classPrivateFieldSet(this, _Board_hasDestroyed, true, "f");
3398
3472
  }
3399
3473
  getSharer() {
3400
3474
  return __classPrivateFieldGet(this, _Board_sharer, "f");
@@ -3495,8 +3569,14 @@ var __privateMethod = (obj, member, method) => {
3495
3569
  getEventHub() {
3496
3570
  return __classPrivateFieldGet(this, _Board_eventHub, "f");
3497
3571
  }
3572
+ onWatcherEvents() {
3573
+ __classPrivateFieldGet(this, _Board_watcher, "f").onEvents();
3574
+ }
3575
+ offWatcherEvents() {
3576
+ __classPrivateFieldGet(this, _Board_watcher, "f").offEvents();
3577
+ }
3498
3578
  }
3499
- _Board_opts = /* @__PURE__ */ new WeakMap(), _Board_middlewareMap = /* @__PURE__ */ new WeakMap(), _Board_middlewares = /* @__PURE__ */ new WeakMap(), _Board_activeMiddlewareObjs = /* @__PURE__ */ new WeakMap(), _Board_watcher = /* @__PURE__ */ new WeakMap(), _Board_renderer = /* @__PURE__ */ new WeakMap(), _Board_sharer = /* @__PURE__ */ new WeakMap(), _Board_viewer = /* @__PURE__ */ new WeakMap(), _Board_calculator = /* @__PURE__ */ new WeakMap(), _Board_eventHub = /* @__PURE__ */ new WeakMap(), _Board_instances = /* @__PURE__ */ new WeakSet(), _Board_init = function _Board_init2() {
3579
+ _Board_opts = /* @__PURE__ */ new WeakMap(), _Board_middlewareMap = /* @__PURE__ */ new WeakMap(), _Board_middlewares = /* @__PURE__ */ new WeakMap(), _Board_activeMiddlewareObjs = /* @__PURE__ */ new WeakMap(), _Board_watcher = /* @__PURE__ */ new WeakMap(), _Board_renderer = /* @__PURE__ */ new WeakMap(), _Board_sharer = /* @__PURE__ */ new WeakMap(), _Board_viewer = /* @__PURE__ */ new WeakMap(), _Board_calculator = /* @__PURE__ */ new WeakMap(), _Board_eventHub = /* @__PURE__ */ new WeakMap(), _Board_hasDestroyed = /* @__PURE__ */ new WeakMap(), _Board_instances = /* @__PURE__ */ new WeakSet(), _Board_init = function _Board_init2() {
3500
3580
  __classPrivateFieldGet(this, _Board_watcher, "f").on("pointStart", __classPrivateFieldGet(this, _Board_instances, "m", _Board_handlePointStart).bind(this));
3501
3581
  __classPrivateFieldGet(this, _Board_watcher, "f").on("pointEnd", __classPrivateFieldGet(this, _Board_instances, "m", _Board_handlePointEnd).bind(this));
3502
3582
  __classPrivateFieldGet(this, _Board_watcher, "f").on("pointMove", throttle((e) => {
@@ -3647,120 +3727,148 @@ var __privateMethod = (obj, member, method) => {
3647
3727
  const CURSOR_RESIZE = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAApCAYAAABHomvIAAAACXBIWXMAAAsTAAALEwEAmpwYAAAF92lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDYgNzkuMTY0NzUzLCAyMDIxLzAyLzE1LTExOjUyOjEzICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjIuMyAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMjMtMDktMTdUMTY6MzE6MjMrMDg6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDIzLTA5LTE3VDE2OjQ0OjIyKzA4OjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDIzLTA5LTE3VDE2OjQ0OjIyKzA4OjAwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjY0MTBhYjUzLWM0ZjEtNDVhNS04MjhkLTIxOTczOWFjOTk3MSIgeG1wTU06RG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjBkMDNmNjM5LTE5MzctY2Y0MC1hMTg0LTIyMjg0NzczNWNmYSIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjgyYjQwZGRmLWE0ZGEtNDY3MC1iYzc2LTBhYjY3ZmI5M2I0ZSI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6ODJiNDBkZGYtYTRkYS00NjcwLWJjNzYtMGFiNjdmYjkzYjRlIiBzdEV2dDp3aGVuPSIyMDIzLTA5LTE3VDE2OjMxOjIzKzA4OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjIuMyAoTWFjaW50b3NoKSIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NjQxMGFiNTMtYzRmMS00NWE1LTgyOGQtMjE5NzM5YWM5OTcxIiBzdEV2dDp3aGVuPSIyMDIzLTA5LTE3VDE2OjQ0OjIyKzA4OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjIuMyAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz57vRudAAAEk0lEQVRYhe3ZW0jbVxzA8e8/MX+NYnG9uI4xE3bvoLt0FzradRfGBtsYo32YdAhb6WQyBqV7KOylpYjzZShDGfjmyxgbgjjwyRm16SYMhgiNKDhbL3VtNF4xJOnf3x7+59i/Wf4aTbInf3AwJMdzPjnnf/n9/jFEhGzDMIxMb3uAIsDs6ek5urS05Dtz5syE+uwekAQS6u89YD19gC0NIpJ1c8GZQHlXV9fJRCIxGo/HxxoaGj4CngWOAEGgEihXfT07MeQC3MB1dna+lkgkRkXF6urq3xcuXPgUOAE8DzwGPOiGLARwEy4ej4+JiITD4elr167NiIgsLi7eqq2trQPeBI4Bj7sh8w10xZmmeds0zdn+/v5/RERisdjUuXPnvgLeAl50Q+YTaAA+oKy7u/uE3laNAwSQ4uLiu6FQ6G4G5DG13YeAMjWWkU+gBygJhULHNe769etTTpwDGXUiz58//yXwujp5qoAHgBLAk0+gNxKJHEulUiMKN2ma5gwgPp/vjhOXjlxYWJisq6urBV5RW30IKAW8eQPGYrGjlmXdEBEZHBy8aZrmFCCmac729fVtAHt7e6MO5N2+vr47IiJLS0s3L126dBZ4Sh2LZUBRwVdwYGBgVuwOYh/zsoF0bnPBVzDTMRgOh6dFhROokSIi8/Pz0+pEeaPQx+DGWdzV1XVSX2LcgCIic3NzMzU1NV8D7wIvq9WrLNRZvOk62NHRccqJTAdGo9Hb1dXV3wAfYt9VjgAPFfI66EQWAxU9PT0fuwEvXrzYBJwF3gFeAAJAhfrfrO4k/7lxZxnr2JlJqry8POnWyePx6H4JR0vhktVkHGOXQI20SkpKLLcOhmGsA5YCaZiVLS5XoADi9XpdkznDMERhnE0fCgUHZhvOW+CO4/8A5hR7wFxjD5hr7AFzjZyBlmVlrOYdYaS1HUUuQA/gWV9fd51URDyqn1c1j6MVFGjoidfW1oq2ABrYj0V82OmVzwHNajVdB88C5wOKTdM87NaxsrKyQsFKHC2BnTDo+/TWt8Bd5INeVC44NDT0xXYZdXNz8w/AaeyS8yjwCPdzQu92ht2m/OUjIyOfS1pkAoqItLS0fA+8D7wKPA0cxs6qC1O4T0xMfKYnb21tnXEDNjc3z+nXbW1t3wFvYz9dCAL7KUThHovFPtGTNjU1jQFSX18/lg68cuXKLUAaGxs3vkB7e/u3wHHgCQpUdnpTqdQvesJgMDisUVevXh3Xry9fvnxTv66qqprQ/cfHx/vVNj/J/couv0DAv7q6+pMDeYPNSalkwkUikX7s4ukl4FHgAODPN1CXnPsWFxd/dCAjW+GGhoZCwAfYpeczwMPAPjVW3gv3IvXN98disZ8dyBGNCwQC4/r94eHhfuy6+JS6zATUCeJXY+W9cNfIUuDAwsLCr05kIBDYeBQ8Ojr6h8Lpx25BtbWlGpfv62BG5PLy8m+SFpOTk38C76mVe84NVyhgOvLgysrK7xoXjUb/Uqt2XG1rEDiYCbcd0MgwsWtk+J1EI03An0wmw5Zlefx+/2n1eRKIO5r+rWTTpFsZ/gWFrGMmeObuqwAAAABJRU5ErkJggg==";
3648
3728
  const CURSOR_DRAG_DEFAULT = `data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAApCAYAAABHomvIAAAEvUlEQVRYhc2Y20/cVRDHP8v+uKzAWkpDCtZq8BYhJkq8PBoJxgj7I2m0ryaSyFN9IT74pI8+8WJiggRj/APApFkSTGRJ+qKGUiyxbGPEWsUSuVhYC12Wy8+HmeMeYPe3d3WSye/k/M7le+bMzJkZ+J9ToEJreGVYN+vihcytstjQocUlAw0WCSoIVCv3Ae8CXwIt+u8XHVeOG8qLqgAHqAFCQCNwGugCthBJGd7S/tM6LqTzHI5KuqzgaoAHgEvAtwrkG2AG8FzXvep5nue67lX9N6P/PR1/SefXlBtkFXKNDUA/RyX1D9uUbYzOb9D1ygbSQU7eDMxhSSsSiVz3AxiJRK57nuf19/fPad8coqONFCBJPyUOIKc1OvcbgiY9ICDT8+0DHge2gR0gBeyTtviM5HeKAGlrrfMZVwhdAVaAr4F3KNF4gkA9cBbowOc68+3LwDn1Mhdy4/OcYk54nPr6+m54nofruvPa9SFQ6wfQTweNgTwInAGuQWk6mEUvHwb+Au4Dexx7ffK9+0q+CHWIBIOZ9skHYKWfK9tQ8gZoLDjIyWCg3ORY+2T8aYOyg4EaRIFrkCs4QU1NTSvabC20zyIDzuyfkYzEahHX8jHwE/LwXwHeJ4P7KIVIu5ouxFDC+HgLAy4MfEF2v1UpgOezATSiNVf6EvAWsD01NXVtdnb2bk9Pz81sp/q3KIi8t83Ae4DX0tJy0z7t8PDwD4FAYIX/WILVwKMAzc3Nu/agoaGhzmg0ugcsV0hIvlSNoH8IuIiebHJycrls4sotwaxGYvueAPAjEg3jum79yMjIr5WUjFLOxMpBIopWoBN4GfhOJ+4NDg4ulVt6i4uLm7r+BvAscA4fCXrAAfJQJ5Fg8gPgMuCMjo62d3V1LW1sbKRKlpXSxMTEmjZ/5qQrOwHwUAGmkIjiHhJdfKrM/Pz8Y+3t7RvT09Ob5QAYi8X2tbmke2cEZwAaCdoAt5QvIzEbiUSitbe3tyoej++UCnBhYSGkzdu6d1aQxkgOkfwgieQMCeCu8iwSnpNKpcIdHR3BZDJ5UCy4SCSyvL6+/giiSou67wE+eYmhAKKkIaAJUdynkdflNcQF3dFTpooxjmg0aozDAz4DXkB8bxPy1OYM7QzIOuAU0AY8pQu9CrwJ3AK8UCj0RyHgZmZmli1w3wOvAM/oHo1kiZiygbSDh7PAE8DzQA/wBqKnnuM4a2NjY7dygbtw4cICRy31deBFJA09o7eWsU7kJ1KTLJmyRyOSn5zS70fAkwBtbW2/DwwMHHR3d9d3dnY2rK6u7o2Pj2/GYrH9eDzurK2tndM1vwI+QXT7T2BTD5skQz6SCyAcLRoZkGEFGQbeRqpbubK+BPA5MI14h00L3I6Cy2h4+eQbJsKuRa6iQcGFFfB5oBt4DpFsI+Ky7iDBxW3gBhBH/GtC+R7i1lKk3UxRAG2QpvxWr0AbtB3SA5jkx36djH/dVlDbyibN3M8GDvJPyI2PSulixm/u6kZ1OQCaJ/S+tndJX6tvsFBIxcCUdA3vW5ubxMrObc0hDMhd/Rqp5QQHxeW8dubnHGM7tzVv/IECMlxQ/bpcRfRMqaNRheNcUGG9XFWDACfzWs/6Fl3t/xtO//8gpbCORQAAAABJRU5ErkJggg==`;
3649
3729
  const CURSOR_DRAG_ACTIVE = `data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAER0lEQVRYhe2YT2hjRRjAf8lL22xsNsm6EWKrSKvuIkIh+O9QRFxEW18KUsoe7FHoRaWCN1FPetOrIHgVKS0q9P5OxaJbodkalgVrtVZjS7Ntd02z6abPw3yzmaT585q+elj2g2HmvZn35jffN/PNNwP35R6XgM/fuif4n+dO2klQvgsaZRc4NJJvoJbHdhrIAkJAN2ADHwFfAw9J3ZoB/b9I0AA6A0SBc0Aa2EVpSqddeZ+QdmfkO+u0gIPSQQR4HfhRQH4AHMDNZDJXXNd1M5nMFalzdB3wJTAOPAD0yEB9066G6wXepVZTd5MpTdporZ6jVqsatmMJoTR3HvgJQ1u2bS+3ArRte9l1XXdsbGyJo1pdBN6Wf3d3ChlAmSQO9LeC8fquQRpDWaerHWSjSr1iu4BkJyOsF9u2s67rkslkluTVxygltAVsJBZqdCngEj5osIlW+4EYytRNF04jeu3vulCT+7QkLH20dEOhumft97pQI4s3+iiRSPwtxVSbd39J8eEGvzFXc1NAs8KSFAZeBt4AHgNeBFDWObkEAne7HAK2gT2gCFQatdca1GbtBj4E3veFprVYVLXXcg4GqM6588BbAMlkcm1qamqzr6/v6ikBet5RgiizJoDPAXdgYGDZXHkzMzPrrk9CdRWngUeAsxxdCzVwpgZ/BigWiz1mo4mJif7jqMajeJrU5hywgGvAej6fvzA0NLThN1Eul9uT4g5VTbYFNKUIfAbsZ7PZvuHh4Wt+As7Ozu5IcY2j219TQB0NV4A7qODgO4CFhYWLg4ODOb8AHccpG4A68m6pRQ1YAQ6A28A+8BXwBcDq6upTqVTquh+AuVyuW4q/opRRaQdZD1gCbgE3ge+BT4HdfD7/ZDwe/z2bzRY6hRsfH1/e3Nx8FDX/sgbgoZfvg6jo4ixqW7oIPA+8CrwHrAJuJBLJd+JaHMf5k6qmPgGeQe1SCenXk0/U21xcIC8AzwGvAJPAEuAmEon1xcXFba9w8/Pz5oqdB14CnpY+oij35km0qwmjwqAU8ISM9hIwBeQA17KsG9PT07+1gxsZGdmgdqW+BjwLDAAPoo4ALU+W9arVwWoIpXp9kouKZpPAO8AwQCwW+2d0dLQ0OTkZSafT0UKhUJ6bm9t2HKeysrIS3tra0g7+KvABUJC0g5rrJdRcbLpImtleRzYashc1P2OSXwbebDVykX3gW+Ab1AHqhuQ3pe6AJlFMO0CoPROHDcio5I8DL1A9C8dQbmod+APYAK4DvwjQnsDdErgyVTfTEaCG1GFYGHXG7TVSo2OkdvhlAflXoHSuNdfStFqaRhEi2kfdprrj6M5LAt0I8EDaaMdflPal48CB95hMr3Bt8h4jD0kyL5E0pN6dysZzW7N2AqjbmhdIZjJvufTOpE19x3g+9s1XJ/ck5tVbfdhu+rxDfLiSO+lFToCjZwrXyH2/0Lwv95z8B1jAqXmDnj4YAAAAAElFTkSuQmCC`;
3730
+ const CURSOR_RESIZE_ROTATE = `data:image/png;base64,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`;
3650
3731
  class Cursor {
3651
3732
  constructor(container, opts) {
3652
- this._cursorType = null;
3653
- this._resizeCursorBaseImage = null;
3654
- this._cursorImageMap = {
3733
+ __privateAdd(this, _init);
3734
+ __privateAdd(this, _loadResizeCursorBaseImage);
3735
+ __privateAdd(this, _resetCursor);
3736
+ __privateAdd(this, _setCursorResize);
3737
+ __privateAdd(this, _appendRotateResizeImage);
3738
+ __privateAdd(this, _eventHub, void 0);
3739
+ __privateAdd(this, _container, void 0);
3740
+ __privateAdd(this, _cursorType, null);
3741
+ __privateAdd(this, _resizeCursorBaseImage, null);
3742
+ __privateAdd(this, _cursorImageMap, {
3655
3743
  auto: CURSOR,
3656
3744
  "drag-default": CURSOR_DRAG_DEFAULT,
3657
3745
  "drag-active": CURSOR_DRAG_ACTIVE,
3658
- "rotate-0": CURSOR_RESIZE
3659
- };
3660
- this._container = container;
3661
- this._eventHub = opts.eventHub;
3662
- this._init();
3663
- this._loadResizeCursorBaseImage();
3664
- }
3665
- _init() {
3666
- const { _eventHub: eventHub } = this;
3667
- this._resetCursor("auto");
3668
- eventHub.on("cursor", (e) => {
3669
- var _a;
3670
- if (e.type === "over-element" || !e.type) {
3671
- this._resetCursor("auto");
3672
- } else if (typeof e.type === "string" && ((_a = e.type) == null ? void 0 : _a.startsWith("resize-"))) {
3673
- this._setCursorResize(e);
3674
- } else if (e.type === "drag-default") {
3675
- this._resetCursor("drag-default");
3676
- } else if (e.type === "drag-active") {
3677
- this._resetCursor("drag-active");
3678
- } else {
3679
- this._resetCursor("auto");
3680
- }
3746
+ "rotate-0": CURSOR_RESIZE,
3747
+ rotate: CURSOR_RESIZE_ROTATE
3681
3748
  });
3749
+ __privateSet(this, _container, container);
3750
+ __privateSet(this, _eventHub, opts.eventHub);
3751
+ __privateMethod(this, _init, init_fn).call(this);
3752
+ __privateMethod(this, _loadResizeCursorBaseImage, loadResizeCursorBaseImage_fn).call(this);
3682
3753
  }
3683
- _loadResizeCursorBaseImage() {
3684
- loadImage(CURSOR_RESIZE).then((img) => {
3685
- this._resizeCursorBaseImage = img;
3686
- }).catch((err) => {
3687
- console.error(err);
3688
- });
3689
- }
3690
- _resetCursor(cursorKey) {
3691
- if (this._cursorType === cursorKey) {
3692
- return;
3693
- }
3694
- this._cursorType = cursorKey;
3695
- const image = this._cursorImageMap[this._cursorType] || this._cursorImageMap["auto"];
3696
- let offsetX = 0;
3697
- let offsetY = 0;
3698
- if (cursorKey.startsWith("rotate-") && this._cursorImageMap[this._cursorType]) {
3699
- offsetX = 10;
3700
- offsetY = 10;
3701
- }
3702
- this._container.style.cursor = `image-set(url(${image})2x) ${offsetX} ${offsetY}, auto`;
3703
- }
3704
- _setCursorResize(e) {
3754
+ }
3755
+ _eventHub = new WeakMap();
3756
+ _container = new WeakMap();
3757
+ _cursorType = new WeakMap();
3758
+ _resizeCursorBaseImage = new WeakMap();
3759
+ _cursorImageMap = new WeakMap();
3760
+ _init = new WeakSet();
3761
+ init_fn = function() {
3762
+ const eventHub = __privateGet(this, _eventHub);
3763
+ __privateMethod(this, _resetCursor, resetCursor_fn).call(this, "default");
3764
+ eventHub.on("cursor", (e) => {
3705
3765
  var _a;
3706
- let totalAngle = 0;
3707
- if (e.type === "resize-top") {
3708
- totalAngle += 0;
3709
- } else if (e.type === "resize-top-right") {
3710
- totalAngle += 45;
3711
- } else if (e.type === "resize-right") {
3712
- totalAngle += 90;
3713
- } else if (e.type === "resize-bottom-right") {
3714
- totalAngle += 135;
3715
- } else if (e.type === "resize-bottom") {
3716
- totalAngle += 180;
3717
- } else if (e.type === "resize-bottom-left") {
3718
- totalAngle += 225;
3719
- } else if (e.type === "resize-left") {
3720
- totalAngle += 270;
3721
- } else if (e.type === "resize-top-left") {
3722
- totalAngle += 315;
3723
- }
3724
- totalAngle += limitAngle(((_a = e == null ? void 0 : e.element) == null ? void 0 : _a.angle) || 0);
3725
- if (Array.isArray(e.groupQueue) && e.groupQueue.length > 0) {
3726
- e.groupQueue.forEach((group) => {
3727
- totalAngle += limitAngle(group.angle || 0);
3728
- });
3729
- }
3730
- totalAngle = limitAngle(totalAngle);
3731
- const cursorKey = this._appendRotateResizeImage(totalAngle);
3732
- this._resetCursor(cursorKey);
3733
- }
3734
- _appendRotateResizeImage(angle2) {
3735
- const key2 = `rotate-${angle2}`;
3736
- if (!this._cursorImageMap[key2]) {
3737
- const baseImage = this._resizeCursorBaseImage;
3738
- if (baseImage) {
3739
- const canvas = document.createElement("canvas");
3740
- const w2 = baseImage.width;
3741
- const h2 = baseImage.height;
3742
- const center = {
3743
- x: w2 / 2,
3744
- y: h2 / 2
3745
- };
3746
- canvas.width = w2;
3747
- canvas.height = h2;
3748
- const ctx = canvas.getContext("2d");
3749
- const radian = parseAngleToRadian(angle2);
3750
- ctx.translate(center.x, center.y);
3751
- ctx.rotate(radian);
3752
- ctx.translate(-center.x, -center.y);
3753
- ctx.drawImage(baseImage, 0, 0, w2, h2);
3754
- ctx.translate(center.x, center.y);
3755
- ctx.rotate(-radian);
3756
- ctx.translate(-center.x, -center.y);
3757
- const base = canvas.toDataURL("image/png");
3758
- this._cursorImageMap[key2] = base;
3759
- }
3766
+ if (e.type === "over-element" || !e.type) {
3767
+ __privateMethod(this, _resetCursor, resetCursor_fn).call(this, "auto");
3768
+ } else if (e.type === "resize-rotate") {
3769
+ __privateMethod(this, _resetCursor, resetCursor_fn).call(this, "rotate");
3770
+ } else if (typeof e.type === "string" && ((_a = e.type) == null ? void 0 : _a.startsWith("resize-"))) {
3771
+ __privateMethod(this, _setCursorResize, setCursorResize_fn).call(this, e);
3772
+ } else if (e.type === "drag-default") {
3773
+ __privateMethod(this, _resetCursor, resetCursor_fn).call(this, "drag-default");
3774
+ } else if (e.type === "drag-active") {
3775
+ __privateMethod(this, _resetCursor, resetCursor_fn).call(this, "drag-active");
3776
+ } else {
3777
+ __privateMethod(this, _resetCursor, resetCursor_fn).call(this, "auto");
3760
3778
  }
3761
- return key2;
3779
+ });
3780
+ };
3781
+ _loadResizeCursorBaseImage = new WeakSet();
3782
+ loadResizeCursorBaseImage_fn = function() {
3783
+ loadImage(CURSOR_RESIZE).then((img) => {
3784
+ __privateSet(this, _resizeCursorBaseImage, img);
3785
+ }).catch((err) => {
3786
+ console.error(err);
3787
+ });
3788
+ };
3789
+ _resetCursor = new WeakSet();
3790
+ resetCursor_fn = function(cursorKey) {
3791
+ if (__privateGet(this, _cursorType) === cursorKey) {
3792
+ return;
3762
3793
  }
3763
- }
3794
+ __privateSet(this, _cursorType, cursorKey);
3795
+ const image = __privateGet(this, _cursorImageMap)[__privateGet(this, _cursorType)] || __privateGet(this, _cursorImageMap)["auto"];
3796
+ let offsetX = 0;
3797
+ let offsetY = 0;
3798
+ if (cursorKey.startsWith("rotate-") && __privateGet(this, _cursorImageMap)[__privateGet(this, _cursorType)]) {
3799
+ offsetX = 10;
3800
+ offsetY = 10;
3801
+ } else if (cursorKey === "rotate") {
3802
+ offsetX = 10;
3803
+ offsetY = 10;
3804
+ }
3805
+ if (cursorKey === "default") {
3806
+ __privateGet(this, _container).style.cursor = "default";
3807
+ } else {
3808
+ __privateGet(this, _container).style.cursor = `image-set(url(${image})2x) ${offsetX} ${offsetY}, auto`;
3809
+ }
3810
+ };
3811
+ _setCursorResize = new WeakSet();
3812
+ setCursorResize_fn = function(e) {
3813
+ var _a;
3814
+ let totalAngle = 0;
3815
+ if (e.type === "resize-top") {
3816
+ totalAngle += 0;
3817
+ } else if (e.type === "resize-top-right") {
3818
+ totalAngle += 45;
3819
+ } else if (e.type === "resize-right") {
3820
+ totalAngle += 90;
3821
+ } else if (e.type === "resize-bottom-right") {
3822
+ totalAngle += 135;
3823
+ } else if (e.type === "resize-bottom") {
3824
+ totalAngle += 180;
3825
+ } else if (e.type === "resize-bottom-left") {
3826
+ totalAngle += 225;
3827
+ } else if (e.type === "resize-left") {
3828
+ totalAngle += 270;
3829
+ } else if (e.type === "resize-top-left") {
3830
+ totalAngle += 315;
3831
+ }
3832
+ totalAngle += limitAngle(((_a = e == null ? void 0 : e.element) == null ? void 0 : _a.angle) || 0);
3833
+ if (Array.isArray(e.groupQueue) && e.groupQueue.length > 0) {
3834
+ e.groupQueue.forEach((group) => {
3835
+ totalAngle += limitAngle(group.angle || 0);
3836
+ });
3837
+ }
3838
+ totalAngle = limitAngle(totalAngle);
3839
+ const cursorKey = __privateMethod(this, _appendRotateResizeImage, appendRotateResizeImage_fn).call(this, totalAngle);
3840
+ __privateMethod(this, _resetCursor, resetCursor_fn).call(this, cursorKey);
3841
+ };
3842
+ _appendRotateResizeImage = new WeakSet();
3843
+ appendRotateResizeImage_fn = function(angle2) {
3844
+ const key2 = `rotate-${angle2}`;
3845
+ if (!__privateGet(this, _cursorImageMap)[key2]) {
3846
+ const baseImage = __privateGet(this, _resizeCursorBaseImage);
3847
+ if (baseImage) {
3848
+ const canvas = document.createElement("canvas");
3849
+ const w2 = baseImage.width;
3850
+ const h2 = baseImage.height;
3851
+ const center = {
3852
+ x: w2 / 2,
3853
+ y: h2 / 2
3854
+ };
3855
+ canvas.width = w2;
3856
+ canvas.height = h2;
3857
+ const ctx = canvas.getContext("2d");
3858
+ const radian = parseAngleToRadian(angle2);
3859
+ ctx.translate(center.x, center.y);
3860
+ ctx.rotate(radian);
3861
+ ctx.translate(-center.x, -center.y);
3862
+ ctx.drawImage(baseImage, 0, 0, w2, h2);
3863
+ ctx.translate(center.x, center.y);
3864
+ ctx.rotate(-radian);
3865
+ ctx.translate(-center.x, -center.y);
3866
+ const base = canvas.toDataURL("image/png");
3867
+ __privateGet(this, _cursorImageMap)[key2] = base;
3868
+ }
3869
+ }
3870
+ return key2;
3871
+ };
3764
3872
  const key$2 = "SELECT";
3765
3873
  const keyActionType = Symbol(`${key$2}_actionType`);
3766
3874
  const keyResizeType = Symbol(`${key$2}_resizeType`);
@@ -3778,6 +3886,7 @@ var __privateMethod = (obj, member, method) => {
3778
3886
  const areaBorderWidth = 1;
3779
3887
  const wrapperColor = "#1973ba";
3780
3888
  const lockColor = "#5b5959b5";
3889
+ const controllerSize = 10;
3781
3890
  function drawVertexes(ctx, vertexes, opts) {
3782
3891
  const { borderColor: borderColor2, borderWidth: borderWidth2, background: background2, lineDash } = opts;
3783
3892
  ctx.setLineDash([]);
@@ -3795,6 +3904,42 @@ var __privateMethod = (obj, member, method) => {
3795
3904
  ctx.stroke();
3796
3905
  ctx.fill();
3797
3906
  }
3907
+ function drawLine(ctx, start, end, opts) {
3908
+ const { borderColor: borderColor2, borderWidth: borderWidth2, lineDash } = opts;
3909
+ ctx.setLineDash([]);
3910
+ ctx.lineWidth = borderWidth2;
3911
+ ctx.strokeStyle = borderColor2;
3912
+ ctx.setLineDash(lineDash);
3913
+ ctx.beginPath();
3914
+ ctx.moveTo(start.x, start.y);
3915
+ ctx.lineTo(end.x, end.y);
3916
+ ctx.closePath();
3917
+ ctx.stroke();
3918
+ }
3919
+ function drawCircleController(ctx, circleCenter, opts) {
3920
+ const { size, borderColor: borderColor2, borderWidth: borderWidth2, background: background2 } = opts;
3921
+ const center = circleCenter;
3922
+ const r = size / 2;
3923
+ const a = r;
3924
+ const b = r;
3925
+ if (a >= 0 && b >= 0) {
3926
+ if (typeof borderWidth2 === "number" && borderWidth2 > 0) {
3927
+ const ba = borderWidth2 / 2 + a;
3928
+ const bb = borderWidth2 / 2 + b;
3929
+ ctx.beginPath();
3930
+ ctx.strokeStyle = borderColor2;
3931
+ ctx.lineWidth = borderWidth2;
3932
+ ctx.circle(center.x, center.y, ba, bb, 0, 0, 2 * Math.PI);
3933
+ ctx.closePath();
3934
+ ctx.stroke();
3935
+ }
3936
+ ctx.beginPath();
3937
+ ctx.fillStyle = background2;
3938
+ ctx.circle(center.x, center.y, a, b, 0, 0, 2 * Math.PI);
3939
+ ctx.closePath();
3940
+ ctx.fill();
3941
+ }
3942
+ }
3798
3943
  function drawHoverVertexesWrapper(ctx, vertexes, opts) {
3799
3944
  if (!vertexes) {
3800
3945
  return;
@@ -3844,14 +3989,16 @@ var __privateMethod = (obj, member, method) => {
3844
3989
  if (!controller) {
3845
3990
  return;
3846
3991
  }
3847
- const { elementWrapper, topLeft, topRight, bottomLeft, bottomRight } = controller;
3992
+ const { elementWrapper, topLeft, topRight, bottomLeft, bottomRight, top, rotate } = controller;
3848
3993
  const wrapperOpts = { borderColor: wrapperColor, borderWidth: selectWrapperBorderWidth, background: "transparent", lineDash: [] };
3849
3994
  const ctrlOpts = { ...wrapperOpts, borderWidth: resizeControllerBorderWidth, background: "#FFFFFF" };
3995
+ drawLine(ctx, calcViewPointSize(top.center, opts), calcViewPointSize(rotate.center, opts), { ...ctrlOpts, borderWidth: 2 });
3850
3996
  drawVertexes(ctx, calcViewVertexes(elementWrapper, opts), wrapperOpts);
3851
3997
  drawVertexes(ctx, calcViewVertexes(topLeft.vertexes, opts), ctrlOpts);
3852
3998
  drawVertexes(ctx, calcViewVertexes(topRight.vertexes, opts), ctrlOpts);
3853
3999
  drawVertexes(ctx, calcViewVertexes(bottomLeft.vertexes, opts), ctrlOpts);
3854
4000
  drawVertexes(ctx, calcViewVertexes(bottomRight.vertexes, opts), ctrlOpts);
4001
+ drawCircleController(ctx, calcViewPointSize(rotate.center, opts), { ...ctrlOpts, size: controllerSize, borderWidth: 2 });
3855
4002
  }
3856
4003
  function drawArea(ctx, opts) {
3857
4004
  const { start, end } = opts;
@@ -3941,8 +4088,8 @@ var __privateMethod = (obj, member, method) => {
3941
4088
  };
3942
4089
  const { ctx, data, calculator, selectedElements, viewScaleInfo, viewSizeInfo, areaSize, groupQueue, selectedElementController } = opts;
3943
4090
  if (selectedElementController) {
3944
- const { left, right, top, bottom, topLeft, topRight, bottomLeft, bottomRight } = selectedElementController;
3945
- const ctrls = [left, right, top, bottom, topLeft, topRight, bottomLeft, bottomRight];
4091
+ const { left, right, top, bottom, topLeft, topRight, bottomLeft, bottomRight, rotate } = selectedElementController;
4092
+ const ctrls = [left, right, top, bottom, topLeft, topRight, bottomLeft, bottomRight, rotate];
3946
4093
  for (let i = 0; i < ctrls.length; i++) {
3947
4094
  const ctrl = ctrls[i];
3948
4095
  if (isPointInViewActiveVertexes(p, { ctx, vertexes: ctrl.vertexes, viewSizeInfo, viewScaleInfo })) {
@@ -4522,6 +4669,24 @@ var __privateMethod = (obj, member, method) => {
4522
4669
  }
4523
4670
  return { x: x2, y: y2, w: w2, h: h2, angle: elem.angle };
4524
4671
  }
4672
+ function rotateElement(elem, opts) {
4673
+ const { x: x2, y: y2, w: w2, h: h2, angle: angle2 = 0 } = elem;
4674
+ const { center, start, end, viewScaleInfo, viewSizeInfo } = opts;
4675
+ const elemCenter = calcViewPointSize(center, {
4676
+ viewScaleInfo,
4677
+ viewSizeInfo
4678
+ });
4679
+ const startAngle = limitAngle(angle2);
4680
+ const changedRadian = calcRadian(elemCenter, start, end);
4681
+ const endAngle = startAngle + parseRadianToAngle(changedRadian);
4682
+ return {
4683
+ x: x2,
4684
+ y: y2,
4685
+ w: w2,
4686
+ h: h2,
4687
+ angle: endAngle
4688
+ };
4689
+ }
4525
4690
  function getSelectedListArea(data, opts) {
4526
4691
  var _a;
4527
4692
  const indexes = [];
@@ -4731,10 +4896,10 @@ var __privateMethod = (obj, member, method) => {
4731
4896
  elemH = element.h * scale;
4732
4897
  }
4733
4898
  textarea.style.position = "absolute";
4734
- textarea.style.left = `${elemX}px`;
4735
- textarea.style.top = `${elemY}px`;
4736
- textarea.style.width = `${elemW}px`;
4737
- textarea.style.height = `${elemH}px`;
4899
+ textarea.style.left = `${elemX - 1}px`;
4900
+ textarea.style.top = `${elemY - 1}px`;
4901
+ textarea.style.width = `${elemW + 2}px`;
4902
+ textarea.style.height = `${elemH + 2}px`;
4738
4903
  textarea.style.transform = `rotate(${limitAngle(element.angle || 0)}deg)`;
4739
4904
  textarea.style.boxSizing = "border-box";
4740
4905
  textarea.style.border = "1px solid #1973ba";
@@ -4747,6 +4912,9 @@ var __privateMethod = (obj, member, method) => {
4747
4912
  textarea.style.lineHeight = `${detail.lineHeight * scale}px`;
4748
4913
  textarea.style.fontFamily = detail.fontFamily;
4749
4914
  textarea.style.fontWeight = `${detail.fontWeight}`;
4915
+ textarea.style.padding = "0";
4916
+ textarea.style.margin = "0";
4917
+ textarea.style.outline = "none";
4750
4918
  textarea.value = detail.text || "";
4751
4919
  parent.appendChild(textarea);
4752
4920
  };
@@ -4836,7 +5004,7 @@ var __privateMethod = (obj, member, method) => {
4836
5004
  if (list.length === 1) {
4837
5005
  const controller = calcElementSizeController(list[0], {
4838
5006
  groupQueue: sharer.getSharedStorage(keyGroupQueue),
4839
- controllerSize: 10,
5007
+ controllerSize,
4840
5008
  viewScaleInfo: sharer.getActiveViewScaleInfo()
4841
5009
  });
4842
5010
  sharer.setSharedStorage(keySelectedElementController, controller);
@@ -5063,6 +5231,8 @@ var __privateMethod = (obj, member, method) => {
5063
5231
  const data = sharer.getActiveStorage("data");
5064
5232
  const elems = getActiveElements();
5065
5233
  const scale = sharer.getActiveStorage("scale") || 1;
5234
+ const viewScaleInfo = sharer.getActiveViewScaleInfo();
5235
+ const viewSizeInfo = sharer.getActiveViewSizeInfo();
5066
5236
  const start = prevPoint;
5067
5237
  const end = e.point;
5068
5238
  const resizeType = sharer.getSharedStorage(keyResizeType);
@@ -5112,17 +5282,38 @@ var __privateMethod = (obj, member, method) => {
5112
5282
  resizeStart = rotatePointInGroup(start, pointGroupQueue);
5113
5283
  resizeEnd = rotatePointInGroup(end, pointGroupQueue);
5114
5284
  }
5115
- const resizedElemSize = resizeElement(elems[0], { scale, start: resizeStart, end: resizeEnd, resizeType, sharer });
5116
- elems[0].x = resizedElemSize.x;
5117
- elems[0].y = resizedElemSize.y;
5118
- if (elems[0].type === "group" && ((_c = elems[0].operations) == null ? void 0 : _c.deepResize) === true) {
5119
- deepResizeGroupElement(elems[0], {
5120
- w: resizedElemSize.w,
5121
- h: resizedElemSize.h
5285
+ if (resizeType === "resize-rotate") {
5286
+ const controller = sharer.getSharedStorage(keySelectedElementController);
5287
+ const viewVertexes = [
5288
+ controller.topLeft.center,
5289
+ controller.topRight.center,
5290
+ controller.bottomLeft.center,
5291
+ controller.bottomRight.center
5292
+ ];
5293
+ const viewCenter = calcElementCenterFromVertexes(viewVertexes);
5294
+ const resizedElemSize = rotateElement(elems[0], {
5295
+ center: viewCenter,
5296
+ viewScaleInfo,
5297
+ viewSizeInfo,
5298
+ start,
5299
+ end,
5300
+ resizeType,
5301
+ sharer
5122
5302
  });
5303
+ elems[0].angle = resizedElemSize.angle;
5123
5304
  } else {
5124
- elems[0].w = resizedElemSize.w;
5125
- elems[0].h = resizedElemSize.h;
5305
+ const resizedElemSize = resizeElement(elems[0], { scale, start: resizeStart, end: resizeEnd, resizeType, sharer });
5306
+ elems[0].x = resizedElemSize.x;
5307
+ elems[0].y = resizedElemSize.y;
5308
+ if (elems[0].type === "group" && ((_c = elems[0].operations) == null ? void 0 : _c.deepResize) === true) {
5309
+ deepResizeGroupElement(elems[0], {
5310
+ w: resizedElemSize.w,
5311
+ h: resizedElemSize.h
5312
+ });
5313
+ } else {
5314
+ elems[0].w = resizedElemSize.w;
5315
+ elems[0].h = resizedElemSize.h;
5316
+ }
5126
5317
  }
5127
5318
  updateSelectedElementList([elems[0]]);
5128
5319
  viewer.drawFrame();
@@ -5898,9 +6089,9 @@ var __privateMethod = (obj, member, method) => {
5898
6089
  __privateAdd(this, _board, void 0);
5899
6090
  // #opts: CoreOptions;
5900
6091
  __privateAdd(this, _canvas, void 0);
5901
- __privateAdd(this, _container, void 0);
6092
+ __privateAdd(this, _container2, void 0);
5902
6093
  const { devicePixelRatio = 1, width, height, createCustomContext2D } = opts;
5903
- __privateSet(this, _container, container);
6094
+ __privateSet(this, _container2, container);
5904
6095
  const canvas = document.createElement("canvas");
5905
6096
  __privateSet(this, _canvas, canvas);
5906
6097
  __privateMethod(this, _initContainer, initContainer_fn).call(this);
@@ -5922,6 +6113,9 @@ var __privateMethod = (obj, member, method) => {
5922
6113
  eventHub
5923
6114
  });
5924
6115
  }
6116
+ isDestroyed() {
6117
+ return __privateGet(this, _board).isDestroyed();
6118
+ }
5925
6119
  destroy() {
5926
6120
  __privateGet(this, _board).destroy();
5927
6121
  __privateGet(this, _canvas).remove();
@@ -5987,13 +6181,19 @@ var __privateMethod = (obj, member, method) => {
5987
6181
  getLoadItemMap() {
5988
6182
  return __privateGet(this, _board).getRenderer().getLoadItemMap();
5989
6183
  }
6184
+ onBoardWatcherEvents() {
6185
+ __privateGet(this, _board).onWatcherEvents();
6186
+ }
6187
+ offBoardWatcherEvents() {
6188
+ __privateGet(this, _board).offWatcherEvents();
6189
+ }
5990
6190
  }
5991
6191
  _board = new WeakMap();
5992
6192
  _canvas = new WeakMap();
5993
- _container = new WeakMap();
6193
+ _container2 = new WeakMap();
5994
6194
  _initContainer = new WeakSet();
5995
6195
  initContainer_fn = function() {
5996
- const container = __privateGet(this, _container);
6196
+ const container = __privateGet(this, _container2);
5997
6197
  container.style.position = "relative";
5998
6198
  };
5999
6199
  exports.Core = Core;