@idraw/util 0.4.0-beta.17 → 0.4.0-beta.19

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.
@@ -16,11 +16,11 @@ export { Context2D } from './lib/context2d';
16
16
  export { rotateElement, parseRadianToAngle, parseAngleToRadian, rotateElementVertexes, getElementRotateVertexes, calcElementCenter, calcElementCenterFromVertexes, rotatePointInGroup, limitAngle, calcRadian } from './lib/rotate';
17
17
  export { getSelectedElementUUIDs, validateElements, calcElementsContextSize, calcElementsViewInfo, getElemenetsAssetIds, findElementFromList, findElementsFromList, findElementFromListByPosition, findElementQueueFromListByPosition, findElementsFromListByPositions, getGroupQueueFromList, getGroupQueueByElementPosition, getElementSize, mergeElementAsset, filterElementAsset, isResourceElement, getElementPositionFromList, calcElementListSize } from './lib/element';
18
18
  export { checkRectIntersect } from './lib/rect';
19
- export { viewScale, viewScroll, calcViewElementSize, calcViewPointSize, calcViewVertexes, isViewPointInElement, getViewPointAtElement, isElementInView, calcViewScaleInfo, calcElementViewRectInfo, calcElementOriginRectInfo, calcElementViewRectInfoMap, originRectInfoToRangeRectInfo } from './lib/view-calc';
19
+ export { viewScale, viewScroll, calcViewElementSize, calcViewPointSize, calcViewVertexes, isViewPointInElement, getViewPointAtElement, isElementInView, calcViewScaleInfo, calcElementViewRectInfo, calcElementOriginRectInfo, calcElementViewRectInfoMap, originRectInfoToRangeRectInfo, isViewPointInElementSize, isViewPointInVertexes } from './lib/view-calc';
20
20
  export { sortElementsViewVisiableInfoMap, calcVisibleOriginCanvasRectInfo, updateViewVisibleInfoMapStatus } from './lib/view-visible';
21
21
  export { rotatePoint, rotateVertexes, rotateByCenter } from './lib/rotate';
22
22
  export { getElementVertexes, calcElementVertexesInGroup, calcElementVertexesQueueInGroup, calcElementQueueVertexesQueueInGroup } from './lib/vertex';
23
- export { calcElementSizeController } from './lib/controller';
23
+ export { calcElementSizeController, calcLayoutSizeController } from './lib/controller';
24
24
  export { generateSVGPath, parseSVGPath } from './lib/svg-path';
25
25
  export { generateHTML, parseHTML } from './lib/html';
26
26
  export { compressImage } from './lib/image';
package/dist/esm/index.js CHANGED
@@ -16,11 +16,11 @@ export { Context2D } from './lib/context2d';
16
16
  export { rotateElement, parseRadianToAngle, parseAngleToRadian, rotateElementVertexes, getElementRotateVertexes, calcElementCenter, calcElementCenterFromVertexes, rotatePointInGroup, limitAngle, calcRadian } from './lib/rotate';
17
17
  export { getSelectedElementUUIDs, validateElements, calcElementsContextSize, calcElementsViewInfo, getElemenetsAssetIds, findElementFromList, findElementsFromList, findElementFromListByPosition, findElementQueueFromListByPosition, findElementsFromListByPositions, getGroupQueueFromList, getGroupQueueByElementPosition, getElementSize, mergeElementAsset, filterElementAsset, isResourceElement, getElementPositionFromList, calcElementListSize } from './lib/element';
18
18
  export { checkRectIntersect } from './lib/rect';
19
- export { viewScale, viewScroll, calcViewElementSize, calcViewPointSize, calcViewVertexes, isViewPointInElement, getViewPointAtElement, isElementInView, calcViewScaleInfo, calcElementViewRectInfo, calcElementOriginRectInfo, calcElementViewRectInfoMap, originRectInfoToRangeRectInfo } from './lib/view-calc';
19
+ export { viewScale, viewScroll, calcViewElementSize, calcViewPointSize, calcViewVertexes, isViewPointInElement, getViewPointAtElement, isElementInView, calcViewScaleInfo, calcElementViewRectInfo, calcElementOriginRectInfo, calcElementViewRectInfoMap, originRectInfoToRangeRectInfo, isViewPointInElementSize, isViewPointInVertexes } from './lib/view-calc';
20
20
  export { sortElementsViewVisiableInfoMap, calcVisibleOriginCanvasRectInfo, updateViewVisibleInfoMapStatus } from './lib/view-visible';
21
21
  export { rotatePoint, rotateVertexes, rotateByCenter } from './lib/rotate';
22
22
  export { getElementVertexes, calcElementVertexesInGroup, calcElementVertexesQueueInGroup, calcElementQueueVertexesQueueInGroup } from './lib/vertex';
23
- export { calcElementSizeController } from './lib/controller';
23
+ export { calcElementSizeController, calcLayoutSizeController } from './lib/controller';
24
24
  export { generateSVGPath, parseSVGPath } from './lib/svg-path';
25
25
  export { generateHTML, parseHTML } from './lib/html';
26
26
  export { compressImage } from './lib/image';
@@ -15,7 +15,6 @@ export function getDefaultElementDetailConfig() {
15
15
  textAlign: 'left',
16
16
  verticalAlign: 'top',
17
17
  fontSize: 16,
18
- lineHeight: 20,
19
18
  fontFamily: 'sans-serif',
20
19
  fontWeight: 400,
21
20
  overflow: 'hidden'
@@ -1,6 +1,10 @@
1
- import type { Element, ElementSize, ElementSizeController, ViewScaleInfo } from '@idraw/types';
1
+ import type { Element, ElementSize, ElementSizeController, ViewScaleInfo, LayoutSizeController } from '@idraw/types';
2
2
  export declare function calcElementSizeController(elemSize: ElementSize, opts: {
3
3
  groupQueue: Element<'group'>[];
4
4
  controllerSize?: number;
5
5
  viewScaleInfo: ViewScaleInfo;
6
6
  }): ElementSizeController;
7
+ export declare function calcLayoutSizeController(layoutSize: Pick<ElementSize, 'x' | 'y' | 'w' | 'h'>, opts: {
8
+ controllerSize?: number;
9
+ viewScaleInfo: ViewScaleInfo;
10
+ }): LayoutSizeController;
@@ -1,6 +1,8 @@
1
1
  import { createUUID } from './uuid';
2
2
  import { getCenterFromTwoPoints } from './point';
3
3
  import { calcElementVertexesInGroup, calcElementVertexes } from './vertex';
4
+ import { calcViewElementSize } from './view-calc';
5
+ import { calcElementCenter } from './rotate';
4
6
  function createControllerElementSizeFromCenter(center, opts) {
5
7
  const { x, y } = center;
6
8
  const { size, angle } = opts;
@@ -144,3 +146,100 @@ export function calcElementSizeController(elemSize, opts) {
144
146
  };
145
147
  return sizeController;
146
148
  }
149
+ export function calcLayoutSizeController(layoutSize, opts) {
150
+ const { controllerSize, viewScaleInfo } = opts;
151
+ const ctrlSize = controllerSize && controllerSize > 0 ? controllerSize : 8;
152
+ const { x, y, w, h } = calcViewElementSize(layoutSize, { viewScaleInfo });
153
+ const center = calcElementCenter({ x, y, w, h });
154
+ const topCenter = { x: center.x, y };
155
+ const rightCenter = { x: x + w, y: center.y };
156
+ const bottomCenter = { x: center.x, y: y + h };
157
+ const leftCenter = { x, y: center.y };
158
+ const topLeftCenter = { x, y };
159
+ const topRightCenter = { x: x + w, y };
160
+ const bottomRightCenter = { x: x + w, y: y + h };
161
+ const bottomLeftCenter = { x, y: y + h };
162
+ const topMiddleSize = createControllerElementSizeFromCenter(topCenter, { size: ctrlSize, angle: 0 });
163
+ const rightMiddleSize = createControllerElementSizeFromCenter(rightCenter, { size: ctrlSize, angle: 0 });
164
+ const bottomMiddleSize = createControllerElementSizeFromCenter(bottomCenter, { size: ctrlSize, angle: 0 });
165
+ const leftMiddleSize = createControllerElementSizeFromCenter(leftCenter, { size: ctrlSize, angle: 0 });
166
+ const topLeftSize = createControllerElementSizeFromCenter(topLeftCenter, { size: ctrlSize, angle: 0 });
167
+ const topRightSize = createControllerElementSizeFromCenter(topRightCenter, { size: ctrlSize, angle: 0 });
168
+ const bottomLeftSize = createControllerElementSizeFromCenter(bottomLeftCenter, { size: ctrlSize, angle: 0 });
169
+ const bottomRightSize = createControllerElementSizeFromCenter(bottomRightCenter, { size: ctrlSize, angle: 0 });
170
+ const topLeftVertexes = calcElementVertexes(topLeftSize);
171
+ const topRightVertexes = calcElementVertexes(topRightSize);
172
+ const bottomLeftVertexes = calcElementVertexes(bottomLeftSize);
173
+ const bottomRightVertexes = calcElementVertexes(bottomRightSize);
174
+ const topVertexes = [topLeftVertexes[1], topRightVertexes[0], topRightVertexes[3], topLeftVertexes[2]];
175
+ const rightVertexes = [topRightVertexes[3], topRightVertexes[2], bottomRightVertexes[1], bottomRightVertexes[0]];
176
+ const bottomVertexes = [bottomLeftVertexes[1], bottomRightVertexes[0], bottomRightVertexes[3], bottomLeftVertexes[2]];
177
+ const leftVertexes = [topLeftVertexes[3], topLeftVertexes[2], bottomLeftVertexes[1], bottomLeftVertexes[0]];
178
+ const topMiddleVertexes = calcElementVertexes(topMiddleSize);
179
+ const rightMiddleVertexes = calcElementVertexes(rightMiddleSize);
180
+ const bottomMiddleVertexes = calcElementVertexes(bottomMiddleSize);
181
+ const leftMiddleVertexes = calcElementVertexes(leftMiddleSize);
182
+ const sizeController = {
183
+ left: {
184
+ type: 'left',
185
+ vertexes: leftVertexes,
186
+ center: leftCenter
187
+ },
188
+ right: {
189
+ type: 'right',
190
+ vertexes: rightVertexes,
191
+ center: rightCenter
192
+ },
193
+ top: {
194
+ type: 'top',
195
+ vertexes: topVertexes,
196
+ center: topCenter
197
+ },
198
+ bottom: {
199
+ type: 'bottom',
200
+ vertexes: bottomVertexes,
201
+ center: bottomCenter
202
+ },
203
+ topLeft: {
204
+ type: 'top-left',
205
+ vertexes: topLeftVertexes,
206
+ center: topLeftCenter
207
+ },
208
+ topRight: {
209
+ type: 'top-right',
210
+ vertexes: topRightVertexes,
211
+ center: topRightCenter
212
+ },
213
+ bottomLeft: {
214
+ type: 'bottom-left',
215
+ vertexes: bottomLeftVertexes,
216
+ center: bottomLeftCenter
217
+ },
218
+ bottomRight: {
219
+ type: 'bottom-right',
220
+ vertexes: bottomRightVertexes,
221
+ center: bottomRightCenter
222
+ },
223
+ leftMiddle: {
224
+ type: 'left-middle',
225
+ vertexes: leftMiddleVertexes,
226
+ center: leftCenter
227
+ },
228
+ rightMiddle: {
229
+ type: 'right-middle',
230
+ vertexes: rightMiddleVertexes,
231
+ center: rightCenter
232
+ },
233
+ topMiddle: {
234
+ type: 'top-middle',
235
+ vertexes: topMiddleVertexes,
236
+ center: topCenter
237
+ },
238
+ bottomMiddle: {
239
+ type: 'bottom-middle',
240
+ vertexes: bottomMiddleVertexes,
241
+ center: bottomCenter
242
+ }
243
+ };
244
+ return sizeController;
245
+ }
@@ -23,7 +23,6 @@ export declare function viewScroll(opts: {
23
23
  }): ViewScaleInfo;
24
24
  export declare function calcViewElementSize(size: ElementSize, opts: {
25
25
  viewScaleInfo: ViewScaleInfo;
26
- viewSizeInfo: ViewSizeInfo;
27
26
  }): ElementSize;
28
27
  export declare function calcViewPointSize(size: PointSize, opts: {
29
28
  viewScaleInfo: ViewScaleInfo;
@@ -38,6 +37,12 @@ export declare function isViewPointInElement(p: Point, opts: {
38
37
  viewScaleInfo: ViewScaleInfo;
39
38
  viewSizeInfo: ViewSizeInfo;
40
39
  }): boolean;
40
+ export declare function isViewPointInElementSize(p: Point, elemSize: ElementSize, opts?: {
41
+ includeBorder?: boolean;
42
+ }): boolean;
43
+ export declare function isViewPointInVertexes(p: Point, vertexes: ViewRectVertexes, opts?: {
44
+ includeBorder?: boolean;
45
+ }): boolean;
41
46
  export declare function getViewPointAtElement(p: Point, opts: {
42
47
  context2d: ViewContext2D;
43
48
  data: Data;
@@ -1,6 +1,6 @@
1
1
  import { rotateElementVertexes } from './rotate';
2
2
  import { checkRectIntersect } from './rect';
3
- import { calcElementVertexesInGroup } from './vertex';
3
+ import { calcElementVertexesInGroup, calcElementVertexes } from './vertex';
4
4
  import { getCenterFromTwoPoints } from './point';
5
5
  export function calcViewScaleInfo(info, opts) {
6
6
  const { scale, offsetX, offsetY } = info;
@@ -88,9 +88,9 @@ export function calcViewVertexes(vertexes, opts) {
88
88
  ];
89
89
  }
90
90
  export function isViewPointInElement(p, opts) {
91
- const { context2d: ctx, element: elem, viewScaleInfo, viewSizeInfo } = opts;
91
+ const { context2d: ctx, element: elem, viewScaleInfo } = opts;
92
92
  const { angle = 0 } = elem;
93
- const { x, y, w, h } = calcViewElementSize(elem, { viewScaleInfo, viewSizeInfo });
93
+ const { x, y, w, h } = calcViewElementSize(elem, { viewScaleInfo });
94
94
  const vertexes = rotateElementVertexes({ x, y, w, h, angle });
95
95
  if (vertexes.length >= 2) {
96
96
  ctx.beginPath();
@@ -105,6 +105,25 @@ export function isViewPointInElement(p, opts) {
105
105
  }
106
106
  return false;
107
107
  }
108
+ export function isViewPointInElementSize(p, elemSize, opts) {
109
+ const vertexes = calcElementVertexes(elemSize);
110
+ return isViewPointInVertexes(p, vertexes, opts);
111
+ }
112
+ export function isViewPointInVertexes(p, vertexes, opts) {
113
+ const xList = [vertexes[0].x, vertexes[1].x, vertexes[2].x, vertexes[3].x];
114
+ const yList = [vertexes[0].y, vertexes[1].y, vertexes[2].y, vertexes[3].y];
115
+ const mixX = Math.min(...xList);
116
+ const maxX = Math.max(...xList);
117
+ const mixY = Math.min(...yList);
118
+ const maxY = Math.max(...yList);
119
+ if (p.x > mixX && p.x < maxX && p.y > mixY && p.y < maxY) {
120
+ return true;
121
+ }
122
+ if ((opts === null || opts === void 0 ? void 0 : opts.includeBorder) === true && (p.x === mixX || p.x === maxX || p.y === mixY || p.y === maxY)) {
123
+ return true;
124
+ }
125
+ return false;
126
+ }
108
127
  export function getViewPointAtElement(p, opts) {
109
128
  var _a, _b, _c;
110
129
  const { context2d: ctx, data, viewScaleInfo, viewSizeInfo, groupQueue } = opts;
@@ -176,7 +195,7 @@ export function isElementInView(elem, opts) {
176
195
  const { viewSizeInfo, viewScaleInfo } = opts;
177
196
  const { width, height } = viewSizeInfo;
178
197
  const { angle } = elem;
179
- const { x, y, w, h } = calcViewElementSize(elem, { viewScaleInfo, viewSizeInfo });
198
+ const { x, y, w, h } = calcViewElementSize(elem, { viewScaleInfo });
180
199
  const ves = rotateElementVertexes({ x, y, w, h, angle });
181
200
  const viewSize = { x: 0, y: 0, w: width, h: height };
182
201
  const elemStartX = Math.min(ves[0].x, ves[1].x, ves[2].x, ves[3].x);
@@ -330,7 +349,6 @@ export function calcElementViewRectInfoMap(elemSize, opts) {
330
349
  };
331
350
  return {
332
351
  originRectInfo,
333
- viewRectInfo,
334
352
  rangeRectInfo
335
353
  };
336
354
  }
@@ -1,7 +1,8 @@
1
1
  import { rotateElementVertexes } from './rotate';
2
2
  import { formatNumber } from './number';
3
+ import { is } from './is';
3
4
  export function calcViewCenterContent(data, opts) {
4
- var _a, _b, _c, _d, _e, _f, _g, _h;
5
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
5
6
  let offsetX = 0;
6
7
  let offsetY = 0;
7
8
  let scale = 1;
@@ -10,34 +11,51 @@ export function calcViewCenterContent(data, opts) {
10
11
  let contentW = ((_f = (_e = data === null || data === void 0 ? void 0 : data.elements) === null || _e === void 0 ? void 0 : _e[0]) === null || _f === void 0 ? void 0 : _f.w) || 0;
11
12
  let contentH = ((_h = (_g = data === null || data === void 0 ? void 0 : data.elements) === null || _g === void 0 ? void 0 : _g[0]) === null || _h === void 0 ? void 0 : _h.h) || 0;
12
13
  const { width, height } = opts.viewSizeInfo;
13
- data.elements.forEach((elem) => {
14
- const elemSize = {
15
- x: elem.x,
16
- y: elem.y,
17
- w: elem.w,
18
- h: elem.h,
19
- angle: elem.angle
20
- };
21
- if (elemSize.angle && (elemSize.angle > 0 || elemSize.angle < 0)) {
22
- const ves = rotateElementVertexes(elemSize);
23
- if (ves.length === 4) {
24
- const xList = [ves[0].x, ves[1].x, ves[2].x, ves[3].x];
25
- const yList = [ves[0].y, ves[1].y, ves[2].y, ves[3].y];
26
- elemSize.x = Math.min(...xList);
27
- elemSize.y = Math.min(...yList);
28
- elemSize.w = Math.abs(Math.max(...xList) - Math.min(...xList));
29
- elemSize.h = Math.abs(Math.max(...yList) - Math.min(...yList));
14
+ if (data.layout && ((_k = (_j = data.layout) === null || _j === void 0 ? void 0 : _j.detail) === null || _k === void 0 ? void 0 : _k.overflow) === 'hidden') {
15
+ contentX = 0;
16
+ contentY = 0;
17
+ contentW = data.layout.w || 0;
18
+ contentH = data.layout.h || 0;
19
+ }
20
+ else {
21
+ data.elements.forEach((elem) => {
22
+ const elemSize = {
23
+ x: elem.x,
24
+ y: elem.y,
25
+ w: elem.w,
26
+ h: elem.h,
27
+ angle: elem.angle
28
+ };
29
+ if (elemSize.angle && (elemSize.angle > 0 || elemSize.angle < 0)) {
30
+ const ves = rotateElementVertexes(elemSize);
31
+ if (ves.length === 4) {
32
+ const xList = [ves[0].x, ves[1].x, ves[2].x, ves[3].x];
33
+ const yList = [ves[0].y, ves[1].y, ves[2].y, ves[3].y];
34
+ elemSize.x = Math.min(...xList);
35
+ elemSize.y = Math.min(...yList);
36
+ elemSize.w = Math.abs(Math.max(...xList) - Math.min(...xList));
37
+ elemSize.h = Math.abs(Math.max(...yList) - Math.min(...yList));
38
+ }
30
39
  }
40
+ const areaStartX = Math.min(elemSize.x, contentX);
41
+ const areaStartY = Math.min(elemSize.y, contentY);
42
+ const areaEndX = Math.max(elemSize.x + elemSize.w, contentX + contentW);
43
+ const areaEndY = Math.max(elemSize.y + elemSize.h, contentY + contentH);
44
+ contentX = areaStartX;
45
+ contentY = areaStartY;
46
+ contentW = Math.abs(areaEndX - areaStartX);
47
+ contentH = Math.abs(areaEndY - areaStartY);
48
+ });
49
+ }
50
+ if (data.layout) {
51
+ const { x, y, w, h } = data.layout;
52
+ if (is.x(x) && is.y(y) && is.w(w) && is.h(h)) {
53
+ contentX = Math.min(contentX, x);
54
+ contentY = Math.min(contentY, y);
55
+ contentW = Math.max(contentW, w);
56
+ contentH = Math.max(contentH, h);
31
57
  }
32
- const areaStartX = Math.min(elemSize.x, contentX);
33
- const areaStartY = Math.min(elemSize.y, contentY);
34
- const areaEndX = Math.max(elemSize.x + elemSize.w, contentX + contentW);
35
- const areaEndY = Math.max(elemSize.y + elemSize.h, contentY + contentH);
36
- contentX = areaStartX;
37
- contentY = areaStartY;
38
- contentW = Math.abs(areaEndX - areaStartX);
39
- contentH = Math.abs(areaEndY - areaStartY);
40
- });
58
+ }
41
59
  if (contentW > 0 && contentH > 0) {
42
60
  const scaleW = formatNumber(width / contentW, { decimalPlaces: 4 });
43
61
  const scaleH = formatNumber(height / contentH, { decimalPlaces: 4 });
@@ -2210,9 +2210,9 @@ var __privateMethod = (obj, member, method) => {
2210
2210
  ];
2211
2211
  }
2212
2212
  function isViewPointInElement(p, opts) {
2213
- const { context2d: ctx, element: elem, viewScaleInfo, viewSizeInfo } = opts;
2213
+ const { context2d: ctx, element: elem, viewScaleInfo } = opts;
2214
2214
  const { angle: angle2 = 0 } = elem;
2215
- const { x: x2, y: y2, w: w2, h: h2 } = calcViewElementSize(elem, { viewScaleInfo, viewSizeInfo });
2215
+ const { x: x2, y: y2, w: w2, h: h2 } = calcViewElementSize(elem, { viewScaleInfo });
2216
2216
  const vertexes = rotateElementVertexes({ x: x2, y: y2, w: w2, h: h2, angle: angle2 });
2217
2217
  if (vertexes.length >= 2) {
2218
2218
  ctx.beginPath();
@@ -2227,6 +2227,25 @@ var __privateMethod = (obj, member, method) => {
2227
2227
  }
2228
2228
  return false;
2229
2229
  }
2230
+ function isViewPointInElementSize(p, elemSize, opts) {
2231
+ const vertexes = calcElementVertexes(elemSize);
2232
+ return isViewPointInVertexes(p, vertexes, opts);
2233
+ }
2234
+ function isViewPointInVertexes(p, vertexes, opts) {
2235
+ const xList = [vertexes[0].x, vertexes[1].x, vertexes[2].x, vertexes[3].x];
2236
+ const yList = [vertexes[0].y, vertexes[1].y, vertexes[2].y, vertexes[3].y];
2237
+ const mixX = Math.min(...xList);
2238
+ const maxX = Math.max(...xList);
2239
+ const mixY = Math.min(...yList);
2240
+ const maxY = Math.max(...yList);
2241
+ if (p.x > mixX && p.x < maxX && p.y > mixY && p.y < maxY) {
2242
+ return true;
2243
+ }
2244
+ if ((opts == null ? void 0 : opts.includeBorder) === true && (p.x === mixX || p.x === maxX || p.y === mixY || p.y === maxY)) {
2245
+ return true;
2246
+ }
2247
+ return false;
2248
+ }
2230
2249
  function getViewPointAtElement(p, opts) {
2231
2250
  var _a, _b, _c;
2232
2251
  const { context2d: ctx, data, viewScaleInfo, viewSizeInfo, groupQueue } = opts;
@@ -2297,7 +2316,7 @@ var __privateMethod = (obj, member, method) => {
2297
2316
  const { viewSizeInfo, viewScaleInfo } = opts;
2298
2317
  const { width, height } = viewSizeInfo;
2299
2318
  const { angle: angle2 } = elem;
2300
- const { x: x2, y: y2, w: w2, h: h2 } = calcViewElementSize(elem, { viewScaleInfo, viewSizeInfo });
2319
+ const { x: x2, y: y2, w: w2, h: h2 } = calcViewElementSize(elem, { viewScaleInfo });
2301
2320
  const ves = rotateElementVertexes({ x: x2, y: y2, w: w2, h: h2, angle: angle2 });
2302
2321
  const viewSize = { x: 0, y: 0, w: width, h: height };
2303
2322
  const elemStartX = Math.min(ves[0].x, ves[1].x, ves[2].x, ves[3].x);
@@ -2451,7 +2470,7 @@ var __privateMethod = (obj, member, method) => {
2451
2470
  };
2452
2471
  return {
2453
2472
  originRectInfo,
2454
- viewRectInfo,
2473
+ // viewRectInfo,
2455
2474
  rangeRectInfo
2456
2475
  };
2457
2476
  }
@@ -2692,6 +2711,103 @@ var __privateMethod = (obj, member, method) => {
2692
2711
  };
2693
2712
  return sizeController;
2694
2713
  }
2714
+ function calcLayoutSizeController(layoutSize, opts) {
2715
+ const { controllerSize, viewScaleInfo } = opts;
2716
+ const ctrlSize = controllerSize && controllerSize > 0 ? controllerSize : 8;
2717
+ const { x: x2, y: y2, w: w2, h: h2 } = calcViewElementSize(layoutSize, { viewScaleInfo });
2718
+ const center = calcElementCenter({ x: x2, y: y2, w: w2, h: h2 });
2719
+ const topCenter = { x: center.x, y: y2 };
2720
+ const rightCenter = { x: x2 + w2, y: center.y };
2721
+ const bottomCenter = { x: center.x, y: y2 + h2 };
2722
+ const leftCenter = { x: x2, y: center.y };
2723
+ const topLeftCenter = { x: x2, y: y2 };
2724
+ const topRightCenter = { x: x2 + w2, y: y2 };
2725
+ const bottomRightCenter = { x: x2 + w2, y: y2 + h2 };
2726
+ const bottomLeftCenter = { x: x2, y: y2 + h2 };
2727
+ const topMiddleSize = createControllerElementSizeFromCenter(topCenter, { size: ctrlSize, angle: 0 });
2728
+ const rightMiddleSize = createControllerElementSizeFromCenter(rightCenter, { size: ctrlSize, angle: 0 });
2729
+ const bottomMiddleSize = createControllerElementSizeFromCenter(bottomCenter, { size: ctrlSize, angle: 0 });
2730
+ const leftMiddleSize = createControllerElementSizeFromCenter(leftCenter, { size: ctrlSize, angle: 0 });
2731
+ const topLeftSize = createControllerElementSizeFromCenter(topLeftCenter, { size: ctrlSize, angle: 0 });
2732
+ const topRightSize = createControllerElementSizeFromCenter(topRightCenter, { size: ctrlSize, angle: 0 });
2733
+ const bottomLeftSize = createControllerElementSizeFromCenter(bottomLeftCenter, { size: ctrlSize, angle: 0 });
2734
+ const bottomRightSize = createControllerElementSizeFromCenter(bottomRightCenter, { size: ctrlSize, angle: 0 });
2735
+ const topLeftVertexes = calcElementVertexes(topLeftSize);
2736
+ const topRightVertexes = calcElementVertexes(topRightSize);
2737
+ const bottomLeftVertexes = calcElementVertexes(bottomLeftSize);
2738
+ const bottomRightVertexes = calcElementVertexes(bottomRightSize);
2739
+ const topVertexes = [topLeftVertexes[1], topRightVertexes[0], topRightVertexes[3], topLeftVertexes[2]];
2740
+ const rightVertexes = [topRightVertexes[3], topRightVertexes[2], bottomRightVertexes[1], bottomRightVertexes[0]];
2741
+ const bottomVertexes = [bottomLeftVertexes[1], bottomRightVertexes[0], bottomRightVertexes[3], bottomLeftVertexes[2]];
2742
+ const leftVertexes = [topLeftVertexes[3], topLeftVertexes[2], bottomLeftVertexes[1], bottomLeftVertexes[0]];
2743
+ const topMiddleVertexes = calcElementVertexes(topMiddleSize);
2744
+ const rightMiddleVertexes = calcElementVertexes(rightMiddleSize);
2745
+ const bottomMiddleVertexes = calcElementVertexes(bottomMiddleSize);
2746
+ const leftMiddleVertexes = calcElementVertexes(leftMiddleSize);
2747
+ const sizeController = {
2748
+ left: {
2749
+ type: "left",
2750
+ vertexes: leftVertexes,
2751
+ center: leftCenter
2752
+ },
2753
+ right: {
2754
+ type: "right",
2755
+ vertexes: rightVertexes,
2756
+ center: rightCenter
2757
+ },
2758
+ top: {
2759
+ type: "top",
2760
+ vertexes: topVertexes,
2761
+ center: topCenter
2762
+ },
2763
+ bottom: {
2764
+ type: "bottom",
2765
+ vertexes: bottomVertexes,
2766
+ center: bottomCenter
2767
+ },
2768
+ topLeft: {
2769
+ type: "top-left",
2770
+ vertexes: topLeftVertexes,
2771
+ center: topLeftCenter
2772
+ },
2773
+ topRight: {
2774
+ type: "top-right",
2775
+ vertexes: topRightVertexes,
2776
+ center: topRightCenter
2777
+ },
2778
+ bottomLeft: {
2779
+ type: "bottom-left",
2780
+ vertexes: bottomLeftVertexes,
2781
+ center: bottomLeftCenter
2782
+ },
2783
+ bottomRight: {
2784
+ type: "bottom-right",
2785
+ vertexes: bottomRightVertexes,
2786
+ center: bottomRightCenter
2787
+ },
2788
+ leftMiddle: {
2789
+ type: "left-middle",
2790
+ vertexes: leftMiddleVertexes,
2791
+ center: leftCenter
2792
+ },
2793
+ rightMiddle: {
2794
+ type: "right-middle",
2795
+ vertexes: rightMiddleVertexes,
2796
+ center: rightCenter
2797
+ },
2798
+ topMiddle: {
2799
+ type: "top-middle",
2800
+ vertexes: topMiddleVertexes,
2801
+ center: topCenter
2802
+ },
2803
+ bottomMiddle: {
2804
+ type: "bottom-middle",
2805
+ vertexes: bottomMiddleVertexes,
2806
+ center: bottomCenter
2807
+ }
2808
+ };
2809
+ return sizeController;
2810
+ }
2695
2811
  const cmdReg = /([astvzqmhlc])([^astvzqmhlc]*)/gi;
2696
2812
  const numReg = /(-?\d+(?:\.\d+)?)/gi;
2697
2813
  function parseSVGPath(path) {
@@ -2942,7 +3058,7 @@ var __privateMethod = (obj, member, method) => {
2942
3058
  textAlign: "left",
2943
3059
  verticalAlign: "top",
2944
3060
  fontSize: 16,
2945
- lineHeight: 20,
3061
+ // lineHeight: 20,
2946
3062
  fontFamily: "sans-serif",
2947
3063
  fontWeight: 400,
2948
3064
  overflow: "hidden"
@@ -3376,7 +3492,7 @@ var __privateMethod = (obj, member, method) => {
3376
3492
  return elem;
3377
3493
  }
3378
3494
  function calcViewCenterContent(data, opts) {
3379
- var _a, _b, _c, _d, _e, _f, _g, _h;
3495
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
3380
3496
  let offsetX = 0;
3381
3497
  let offsetY = 0;
3382
3498
  let scale = 1;
@@ -3385,34 +3501,50 @@ var __privateMethod = (obj, member, method) => {
3385
3501
  let contentW = ((_f = (_e = data == null ? void 0 : data.elements) == null ? void 0 : _e[0]) == null ? void 0 : _f.w) || 0;
3386
3502
  let contentH = ((_h = (_g = data == null ? void 0 : data.elements) == null ? void 0 : _g[0]) == null ? void 0 : _h.h) || 0;
3387
3503
  const { width, height } = opts.viewSizeInfo;
3388
- data.elements.forEach((elem) => {
3389
- const elemSize = {
3390
- x: elem.x,
3391
- y: elem.y,
3392
- w: elem.w,
3393
- h: elem.h,
3394
- angle: elem.angle
3395
- };
3396
- if (elemSize.angle && (elemSize.angle > 0 || elemSize.angle < 0)) {
3397
- const ves = rotateElementVertexes(elemSize);
3398
- if (ves.length === 4) {
3399
- const xList = [ves[0].x, ves[1].x, ves[2].x, ves[3].x];
3400
- const yList = [ves[0].y, ves[1].y, ves[2].y, ves[3].y];
3401
- elemSize.x = Math.min(...xList);
3402
- elemSize.y = Math.min(...yList);
3403
- elemSize.w = Math.abs(Math.max(...xList) - Math.min(...xList));
3404
- elemSize.h = Math.abs(Math.max(...yList) - Math.min(...yList));
3504
+ if (data.layout && ((_j = (_i = data.layout) == null ? void 0 : _i.detail) == null ? void 0 : _j.overflow) === "hidden") {
3505
+ contentX = 0;
3506
+ contentY = 0;
3507
+ contentW = data.layout.w || 0;
3508
+ contentH = data.layout.h || 0;
3509
+ } else {
3510
+ data.elements.forEach((elem) => {
3511
+ const elemSize = {
3512
+ x: elem.x,
3513
+ y: elem.y,
3514
+ w: elem.w,
3515
+ h: elem.h,
3516
+ angle: elem.angle
3517
+ };
3518
+ if (elemSize.angle && (elemSize.angle > 0 || elemSize.angle < 0)) {
3519
+ const ves = rotateElementVertexes(elemSize);
3520
+ if (ves.length === 4) {
3521
+ const xList = [ves[0].x, ves[1].x, ves[2].x, ves[3].x];
3522
+ const yList = [ves[0].y, ves[1].y, ves[2].y, ves[3].y];
3523
+ elemSize.x = Math.min(...xList);
3524
+ elemSize.y = Math.min(...yList);
3525
+ elemSize.w = Math.abs(Math.max(...xList) - Math.min(...xList));
3526
+ elemSize.h = Math.abs(Math.max(...yList) - Math.min(...yList));
3527
+ }
3405
3528
  }
3529
+ const areaStartX = Math.min(elemSize.x, contentX);
3530
+ const areaStartY = Math.min(elemSize.y, contentY);
3531
+ const areaEndX = Math.max(elemSize.x + elemSize.w, contentX + contentW);
3532
+ const areaEndY = Math.max(elemSize.y + elemSize.h, contentY + contentH);
3533
+ contentX = areaStartX;
3534
+ contentY = areaStartY;
3535
+ contentW = Math.abs(areaEndX - areaStartX);
3536
+ contentH = Math.abs(areaEndY - areaStartY);
3537
+ });
3538
+ }
3539
+ if (data.layout) {
3540
+ const { x: x2, y: y2, w: w2, h: h2 } = data.layout;
3541
+ if (is.x(x2) && is.y(y2) && is.w(w2) && is.h(h2)) {
3542
+ contentX = Math.min(contentX, x2);
3543
+ contentY = Math.min(contentY, y2);
3544
+ contentW = Math.max(contentW, w2);
3545
+ contentH = Math.max(contentH, h2);
3406
3546
  }
3407
- const areaStartX = Math.min(elemSize.x, contentX);
3408
- const areaStartY = Math.min(elemSize.y, contentY);
3409
- const areaEndX = Math.max(elemSize.x + elemSize.w, contentX + contentW);
3410
- const areaEndY = Math.max(elemSize.y + elemSize.h, contentY + contentH);
3411
- contentX = areaStartX;
3412
- contentY = areaStartY;
3413
- contentW = Math.abs(areaEndX - areaStartX);
3414
- contentH = Math.abs(areaEndY - areaStartY);
3415
- });
3547
+ }
3416
3548
  if (contentW > 0 && contentH > 0) {
3417
3549
  const scaleW = formatNumber(width / contentW, { decimalPlaces: 4 });
3418
3550
  const scaleH = formatNumber(height / contentH, { decimalPlaces: 4 });
@@ -3547,6 +3679,7 @@ var __privateMethod = (obj, member, method) => {
3547
3679
  exports.calcElementViewRectInfoMap = calcElementViewRectInfoMap;
3548
3680
  exports.calcElementsContextSize = calcElementsContextSize;
3549
3681
  exports.calcElementsViewInfo = calcElementsViewInfo;
3682
+ exports.calcLayoutSizeController = calcLayoutSizeController;
3550
3683
  exports.calcRadian = calcRadian;
3551
3684
  exports.calcSpeed = calcSpeed;
3552
3685
  exports.calcViewBoxSize = calcViewBoxSize;
@@ -3613,6 +3746,8 @@ var __privateMethod = (obj, member, method) => {
3613
3746
  exports.isElementInView = isElementInView;
3614
3747
  exports.isResourceElement = isResourceElement;
3615
3748
  exports.isViewPointInElement = isViewPointInElement;
3749
+ exports.isViewPointInElementSize = isViewPointInElementSize;
3750
+ exports.isViewPointInVertexes = isViewPointInVertexes;
3616
3751
  exports.istype = istype;
3617
3752
  exports.limitAngle = limitAngle;
3618
3753
  exports.loadHTML = loadHTML;
@@ -1 +1 @@
1
- var iDrawUtil=function(t){"use strict";var e,n,i,o,r,a,l,s=(t,e,n)=>{if(!e.has(t))throw TypeError("Cannot "+n)},c=(t,e,n)=>(s(t,e,"read from private field"),n?n.call(t):e.get(t)),h=(t,e,n)=>{if(e.has(t))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(t):e.set(t,n)},f=(t,e,n,i)=>(s(t,e,"write to private field"),i?i.call(t,n):e.set(t,n),n),u=(t,e,n)=>(s(t,e,"access private method"),n);function d(t){return"string"==typeof t&&(/^\#([0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(t)||/^[a-z]{1,}$/i.test(t))}const g={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4","indianred ":"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};function m(){function t(){return(65536*(1+Math.random())|0).toString(16).substring(1)}return`${t()}${t()}-${t()}-${t()}-${t()}-${t()}${t()}${t()}`}function x(t){let e=0;for(let n=0;n<t.length;n++)e+=t.charCodeAt(n)*t.charCodeAt(n)*n*n;return e.toString(16).substring(0,4)}function y(t){const e=t.length,n=Math.floor(e/2),i=t.substring(0,4).padEnd(4,"0"),o=t.substring(0,4).padEnd(4,"0");return`@assets/${x(e.toString(16).padEnd(4,i))}${x(t.substring(n-4,n).padEnd(4,i)).padEnd(4,"f")}-${x(t.substring(n-8,n-4).padEnd(4,i)).padEnd(4,"f")}-${x(t.substring(n-12,n-8).padEnd(4,i)).padEnd(4,"f")}-${x(t.substring(n-16,n-12).padEnd(4,o)).padEnd(4,"f")}-${x(t.substring(n,n+4).padEnd(4,o)).padEnd(4,"f")}${x(t.substring(n+4,n+8).padEnd(4,o)).padEnd(4,"f")}${x(o.padEnd(4,i).padEnd(4,o))}`}function p(t){return/^@assets\/[0-9a-z]{8,8}\-[0-9a-z]{4,4}\-[0-9a-z]{4,4}\-[0-9a-z]{4,4}\-[0-9a-z]{12,12}$/.test(`${t}`)}function w(t){return function t(e){const n=function(t){return Object.prototype.toString.call(t).replace(/[\]|\[]{1,1}/gi,"").split(" ")[1]}(e);if(["Null","Number","String","Boolean","Undefined"].indexOf(n)>=0)return e;if("Array"===n){const n=[];return e.forEach((e=>{n.push(t(e))})),n}if("Object"===n){const n={};Object.keys(e).forEach((i=>{n[i]=t(e[i])}));return Object.getOwnPropertySymbols(e).forEach((i=>{n[i]=t(e[i])})),n}}(t)}function v(t){return(Object.prototype.toString.call(t)||"").replace(/(\[object|\])/gi,"").trim()}const b={type(t,e){const n=v(t);return!0===e?n.toLocaleLowerCase():n},array:t=>"Array"===v(t),json:t=>"Object"===v(t),function:t=>"Function"===v(t),asyncFunction:t=>"AsyncFunction"===v(t),boolean:t=>"Boolean"===v(t),string:t=>"String"===v(t),number:t=>"Number"===v(t),undefined:t=>"Undefined"===v(t),null:t=>"Null"===v(t),promise:t=>"Promise"===v(t)};const{Image:M}=window;function R(t){return new Promise(((e,n)=>{const i=new M;i.crossOrigin="anonymous",i.onload=function(){e(i)},i.onabort=n,i.onerror=n,i.src=t}))}function P(t){return"number"==typeof t&&(t>0||t<=0)}function I(t){return"number"==typeof t&&t>=0}function S(t){return"string"==typeof t&&/^(http:\/\/|https:\/\/|\.\/|\/)/.test(`${t}`)}function L(t){return"string"==typeof t&&/^(data:image\/)/.test(`${t}`)}const E={x:function(t){return P(t)},y:function(t){return P(t)},w:I,h:function(t){return"number"==typeof t&&t>=0},angle:function(t){return"number"==typeof t&&t>=-360&&t<=360},number:P,numberStr:function(t){return/^(-?\d+(?:\.\d+)?)$/.test(`${t}`)},borderWidth:function(t){return I(t)},borderRadius:function(t){return P(t)&&t>=0},color:function(t){return d(t)},imageSrc:function(t){return L(t)||S(t)},imageURL:S,imageBase64:L,svg:function(t){return"string"==typeof t&&/^(<svg[\s]{1,}|<svg>)/i.test(`${t}`.trim())&&/<\/[\s]{0,}svg>$/i.test(`${t}`.trim())},html:function(t){let e=!1;if("string"==typeof t){let n=document.createElement("div");n.innerHTML=t,n.children.length>0&&(e=!0),n=null}return e},text:function(t){return"string"==typeof t},fontSize:function(t){return P(t)&&t>0},lineHeight:function(t){return P(t)&&t>0},textAlign:function(t){return["center","left","right"].includes(t)},fontFamily:function(t){return"string"==typeof t&&t.length>0},fontWeight:function(t){return["bold"].includes(t)},strokeWidth:function(t){return P(t)&&t>0}};function $(t={}){const{borderColor:e,borderRadius:n,borderWidth:i}=t;return!(t.hasOwnProperty("borderColor")&&!E.color(e))&&(!(t.hasOwnProperty("borderRadius")&&!E.number(n))&&!(t.hasOwnProperty("borderWidth")&&!E.number(i)))}const A={attrs:function(t){const{x:e,y:n,w:i,h:o,angle:r}=t;return!!(E.x(e)&&E.y(n)&&E.w(i)&&E.h(o)&&E.angle(r))&&(r>=-360&&r<=360)},textDesc:function(t){const{text:e,color:n,fontSize:i,lineHeight:o,fontFamily:r,textAlign:a,fontWeight:l,background:s,strokeWidth:c,strokeColor:h}=t;return!!E.text(e)&&(!!E.color(n)&&(!!E.fontSize(i)&&(!(t.hasOwnProperty("background")&&!E.color(s))&&(!(t.hasOwnProperty("fontWeight")&&!E.fontWeight(l))&&(!(t.hasOwnProperty("lineHeight")&&!E.lineHeight(o))&&(!(t.hasOwnProperty("fontFamily")&&!E.fontFamily(r))&&(!(t.hasOwnProperty("textAlign")&&!E.textAlign(a))&&(!(t.hasOwnProperty("strokeWidth")&&!E.strokeWidth(c))&&(!(t.hasOwnProperty("strokeColor")&&!E.color(h))&&!!$(t))))))))))},rectDesc:function(t){const{background:e}=t;return!(t.hasOwnProperty("background")&&!E.color(e))&&!!$(t)},circleDesc:function(t){const{background:e,borderColor:n,borderWidth:i}=t;return!(t.hasOwnProperty("background")&&!E.color(e))&&(!(t.hasOwnProperty("borderColor")&&!E.color(n))&&!(t.hasOwnProperty("borderWidth")&&!E.number(i)))},imageDesc:function(t){const{src:e}=t;return!!E.imageSrc(e)},svgDesc:function(t){const{svg:e}=t;return!!E.svg(e)},htmlDesc:function(t){const{html:e}=t;return!!E.html(e)}};class C{constructor(t,i){h(this,e,void 0),h(this,n,void 0),f(this,e,t),f(this,n,{devicePixelRatio:1,offscreenCanvas:null,...i}),this.$resetFont()}$undoPixelRatio(t){return t/c(this,n).devicePixelRatio}$doPixelRatio(t){return c(this,n).devicePixelRatio*t}$getContext(){return c(this,e)}$setContext(t){f(this,e,t)}$setFont(t){const n=[];t.fontWeight&&n.push(`${t.fontWeight}`),n.push(`${this.$doPixelRatio(t.fontSize||12)}px`),n.push(`${t.fontFamily||"sans-serif"}`),c(this,e).font=`${n.join(" ")}`}$resetFont(){this.$setFont({fontSize:12,fontFamily:"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'",fontWeight:"400"})}$getOffscreenCanvas(){return c(this,n).offscreenCanvas}$resize(t){const{width:i,height:o,devicePixelRatio:r,resetStyle:a}=t,{canvas:l}=c(this,e);l.width=i*r,l.height=o*r,f(this,n,{...c(this,n),devicePixelRatio:r}),!0===a&&(l.style.width=`${i}px`,l.style.height=`${o}px`)}$getSize(){const{devicePixelRatio:t}=c(this,n),{width:i,height:o}=c(this,e).canvas;return{width:i/t,height:o/t,devicePixelRatio:t}}get canvas(){return c(this,e).canvas}get fillStyle(){return c(this,e).fillStyle}set fillStyle(t){c(this,e).fillStyle=t}get strokeStyle(){return c(this,e).strokeStyle}set strokeStyle(t){c(this,e).strokeStyle=t}get lineWidth(){return this.$undoPixelRatio(c(this,e).lineWidth)}set lineWidth(t){c(this,e).lineWidth=this.$doPixelRatio(t)}get textAlign(){return c(this,e).textAlign}set textAlign(t){c(this,e).textAlign=t}get textBaseline(){return c(this,e).textBaseline}set textBaseline(t){c(this,e).textBaseline=t}get globalAlpha(){return c(this,e).globalAlpha}set globalAlpha(t){c(this,e).globalAlpha=t}get shadowColor(){return c(this,e).shadowColor}set shadowColor(t){c(this,e).shadowColor=t}get shadowOffsetX(){return this.$undoPixelRatio(c(this,e).shadowOffsetX)}set shadowOffsetX(t){c(this,e).shadowOffsetX=this.$doPixelRatio(t)}get shadowOffsetY(){return this.$undoPixelRatio(c(this,e).shadowOffsetY)}set shadowOffsetY(t){c(this,e).shadowOffsetY=this.$doPixelRatio(t)}get shadowBlur(){return this.$undoPixelRatio(c(this,e).shadowBlur)}set shadowBlur(t){c(this,e).shadowBlur=this.$doPixelRatio(t)}get lineCap(){return c(this,e).lineCap}set lineCap(t){c(this,e).lineCap=t}get globalCompositeOperation(){return c(this,e).globalCompositeOperation}set globalCompositeOperation(t){c(this,e).globalCompositeOperation=t}fill(...t){return c(this,e).fill(...t)}arc(t,n,i,o,r,a){return c(this,e).arc(this.$doPixelRatio(t),this.$doPixelRatio(n),this.$doPixelRatio(i),o,r,a)}rect(t,n,i,o){return c(this,e).rect(this.$doPixelRatio(t),this.$doPixelRatio(n),this.$doPixelRatio(i),this.$doPixelRatio(o))}fillRect(t,n,i,o){return c(this,e).fillRect(this.$doPixelRatio(t),this.$doPixelRatio(n),this.$doPixelRatio(i),this.$doPixelRatio(o))}clearRect(t,n,i,o){return c(this,e).clearRect(this.$doPixelRatio(t),this.$doPixelRatio(n),this.$doPixelRatio(i),this.$doPixelRatio(o))}beginPath(){return c(this,e).beginPath()}closePath(){return c(this,e).closePath()}lineTo(t,n){return c(this,e).lineTo(this.$doPixelRatio(t),this.$doPixelRatio(n))}moveTo(t,n){return c(this,e).moveTo(this.$doPixelRatio(t),this.$doPixelRatio(n))}arcTo(t,n,i,o,r){return c(this,e).arcTo(this.$doPixelRatio(t),this.$doPixelRatio(n),this.$doPixelRatio(i),this.$doPixelRatio(o),this.$doPixelRatio(r))}getLineDash(){return c(this,e).getLineDash()}setLineDash(t){const n=t.map((t=>this.$doPixelRatio(t)));return c(this,e).setLineDash(n)}stroke(t){return t?c(this,e).stroke(t):c(this,e).stroke()}translate(t,n){return c(this,e).translate(this.$doPixelRatio(t),this.$doPixelRatio(n))}rotate(t){return c(this,e).rotate(t)}drawImage(...t){const n=t[0],i=t[1],o=t[2],r=t[3],a=t[4],l=t[t.length-4],s=t[t.length-3],h=t[t.length-2],f=t[t.length-1];return 9===t.length?c(this,e).drawImage(n,this.$doPixelRatio(i),this.$doPixelRatio(o),this.$doPixelRatio(r),this.$doPixelRatio(a),this.$doPixelRatio(l),this.$doPixelRatio(s),this.$doPixelRatio(h),this.$doPixelRatio(f)):c(this,e).drawImage(n,this.$doPixelRatio(l),this.$doPixelRatio(s),this.$doPixelRatio(h),this.$doPixelRatio(f))}createPattern(t,n){return c(this,e).createPattern(t,n)}measureText(t){return c(this,e).measureText(t)}fillText(t,n,i,o){return void 0!==o?c(this,e).fillText(t,this.$doPixelRatio(n),this.$doPixelRatio(i),this.$doPixelRatio(o)):c(this,e).fillText(t,this.$doPixelRatio(n),this.$doPixelRatio(i))}strokeText(t,n,i,o){return void 0!==o?c(this,e).strokeText(t,this.$doPixelRatio(n),this.$doPixelRatio(i),this.$doPixelRatio(o)):c(this,e).strokeText(t,this.$doPixelRatio(n),this.$doPixelRatio(i))}save(){c(this,e).save()}restore(){c(this,e).restore()}scale(t,n){c(this,e).scale(t,n)}circle(t,n,i,o,r,a,l,s){c(this,e).ellipse(this.$doPixelRatio(t),this.$doPixelRatio(n),this.$doPixelRatio(i),this.$doPixelRatio(o),r,a,l,s)}isPointInPath(t,n){return c(this,e).isPointInPath(this.$doPixelRatio(t),this.$doPixelRatio(n))}clip(...t){return c(this,e).clip(...t)}setTransform(t,n,i,o,r,a){return c(this,e).setTransform(t,n,i,o,r,a)}getTransform(){return c(this,e).getTransform()}createLinearGradient(t,n,i,o){return c(this,e).createLinearGradient(this.$doPixelRatio(t),this.$doPixelRatio(n),this.$doPixelRatio(i),this.$doPixelRatio(o))}createRadialGradient(t,n,i,o,r,a){return c(this,e).createRadialGradient(this.$doPixelRatio(t),this.$doPixelRatio(n),this.$doPixelRatio(i),this.$doPixelRatio(o),this.$doPixelRatio(r),this.$doPixelRatio(a))}createConicGradient(t,n,i){return c(this,e).createConicGradient(t,this.$doPixelRatio(n),this.$doPixelRatio(i))}}function k(t){const{width:e,height:n,ctx:i,devicePixelRatio:o}=t;let r=i;if(!r){const t=document.createElement("canvas");t.width=e*o,t.height=n*o,r=t.getContext("2d")}return new C(r,t)}function z(t){const{width:e,height:n,devicePixelRatio:i}=t,o=new OffscreenCanvas(e*i,n*i),r=o.getContext("2d").canvas.getContext("2d");return new C(r,{devicePixelRatio:i,offscreenCanvas:o})}e=new WeakMap,n=new WeakMap;function O(t,e){const n=(t.x-e.x)*(t.x-e.x)+(t.y-e.y)*(t.y-e.y);return 0===n?n:Math.sqrt(n)}function T(t,e){return t.x===e.x&&t.y===e.y&&t.t===e.t}function D(t){return t>=0||t<0}function j(t){return D(t.x)&&D(t.y)&&t.t>0}function W(t,e){return{x:t.x+(e.x-t.x)/2,y:t.y+(e.y-t.y)/2}}i=new WeakMap;function V(t){return t/180*Math.PI}function F(t,e,n,i){const o=V(e||0);n&&(o>0||o<0)&&(t.translate(n.x,n.y),t.rotate(o),t.translate(-n.x,-n.y)),i(t),n&&(o>0||o<0)&&(t.translate(n.x,n.y),t.rotate(-o),t.translate(-n.x,-n.y))}function H(t){return{x:t.x+t.w/2,y:t.y+t.h/2}}function N(t){const e=Math.min(t[0].x,t[1].x,t[2].x,t[3].x),n=Math.min(t[0].y,t[1].y,t[2].y,t[3].y);return H({x:e,y:n,w:Math.max(t[0].x,t[1].x,t[2].x,t[3].x)-e,h:Math.max(t[0].y,t[1].y,t[2].y,t[3].y)-n})}function B(t,e){const n=e.x-t.x,i=e.y-t.y;if(0===n){if(i<0)return 0;if(i>0)return Math.PI}else if(0===i){if(n<0)return 3*Math.PI/2;if(n>0)return Math.PI/2}return n>0&&i<0?Math.atan(Math.abs(n)/Math.abs(i)):n>0&&i>0?Math.PI-Math.atan(Math.abs(n)/Math.abs(i)):n<0&&i>0?Math.PI+Math.atan(Math.abs(n)/Math.abs(i)):n<0&&i<0?2*Math.PI-Math.atan(Math.abs(n)/Math.abs(i)):0}function Q(t,e,n){let i=B(t,e)+n;i>2*Math.PI?i-=2*Math.PI:i<0-2*Math.PI&&(i+=2*Math.PI),i<0&&(i+=2*Math.PI);const o=O(t,e);let r=0,a=0;return 0===i?(r=0,a=0-o):i>0&&i<Math.PI/2?(r=Math.sin(i)*o,a=0-Math.cos(i)*o):i===Math.PI/2?(r=o,a=0):i>Math.PI/2&&i<Math.PI?(r=Math.sin(Math.PI-i)*o,a=Math.cos(Math.PI-i)*o):i===Math.PI?(r=0,a=o):i>Math.PI&&i<1.5*Math.PI?(r=0-Math.sin(i-Math.PI)*o,a=Math.cos(i-Math.PI)*o):i===1.5*Math.PI?(r=0-o,a=0):i>1.5*Math.PI&&i<2*Math.PI?(r=0-Math.sin(2*Math.PI-i)*o,a=0-Math.cos(2*Math.PI-i)*o):i===2*Math.PI&&(r=0,a=0-o),r+=t.x,a+=t.y,{x:r,y:a}}function G(t,e,n){const{x:i,y:o,w:r,h:a}=t;let l={x:i,y:o},s={x:i+r,y:o},c={x:i+r,y:o+a},h={x:i,y:o+a};if(n&&(n>0||n<0)){const t=V(X(n));l=Q(e,l,t),s=Q(e,s,t),c=Q(e,c,t),h=Q(e,h,t)}return[l,s,c,h]}function U(t){const{angle:e=0}=t;return G(t,H(t),e)}function Y(t,e,n){return[Q(t,{x:e[0].x,y:e[0].y},n),Q(t,{x:e[1].x,y:e[1].y},n),Q(t,{x:e[2].x,y:e[2].y},n),Q(t,{x:e[3].x,y:e[3].y},n)]}function X(t){if(!(t>0||t<0)||0===t)return 0;let e=t%360;return e<0&&(e+=360),e}function q(t,e){const n={x:0,y:0,w:0,h:0};t.forEach((t=>{const e={x:t.x,y:t.y,w:t.w,h:t.h,angle:t.angle};if(e.angle&&(e.angle>0||e.angle<0)){const t=U(e);if(4===t.length){const n=[t[0].x,t[1].x,t[2].x,t[3].x],i=[t[0].y,t[1].y,t[2].y,t[3].y];e.x=Math.min(...n),e.y=Math.min(...i),e.w=Math.abs(Math.max(...n)-Math.min(...n)),e.h=Math.abs(Math.max(...i)-Math.min(...i))}}const i=Math.min(e.x,n.x),o=Math.min(e.y,n.y),r=Math.max(e.x+e.w,n.x+n.w),a=Math.max(e.y+e.h,n.y+n.h);n.x=i,n.y=o,n.w=Math.abs(r-i),n.h=Math.abs(a-o)})),(null==e?void 0:e.extend)&&(n.x=Math.min(n.x,0),n.y=Math.min(n.y,0));const i={contextWidth:n.w,contextHeight:n.h};return(null==e?void 0:e.viewWidth)&&(null==e?void 0:e.viewHeight)&&(null==e?void 0:e.viewWidth)>0&&(null==e?void 0:e.viewHeight)>0&&(e.viewWidth>n.x+n.w&&(i.contextWidth=e.viewWidth-n.x),e.viewHeight>n.y+n.h&&(i.contextHeight=e.viewHeight-n.y)),i}function Z(t,e){var n;const i=[];let o=t;if(e.length>1)for(let t=0;t<e.length-1;t++){const r=o[e[t]];if("group"!==(null==r?void 0:r.type)||!Array.isArray(null==(n=null==r?void 0:r.detail)?void 0:n.children))return null;i.push(r),o=r.detail.children}return i}function J(t,e){let n=null,i=e;for(let e=0;e<t.length;e++){const o=i[t[e]];if(e<t.length-1&&"group"===o.type)i=o.detail.children;else{if(e!==t.length-1)break;n=o}}return n}function K(t,e){const n=[];let i=!1;const o=e=>{var r;for(let a=0;a<e.length&&!0!==i;a++){n.push(a);const l=e[a];if(l.uuid===t){i=!0;break}if("group"===l.type&&o((null==(r=null==l?void 0:l.detail)?void 0:r.children)||[]),i)break;n.pop()}};return o(e),n}function _(t,e){const n=t.x,i=t.y,o=t.x+t.w,r=t.y+t.h,a=e.x,l=e.y,s=e.x+e.w,c=e.y+e.h;return n<=s&&o>=a&&i<=c&&r>=l}function tt(t){const{x:e,y:n,h:i,w:o}=t;return[{x:e,y:n},{x:e+o,y:n},{x:e+o,y:n+i},{x:e,y:n+i}]}function et(t){const{x:e,y:n,w:i,h:o,angle:r=0}=t;return 0===r?tt(t):G(t,H({x:e,y:n,w:i,h:o,angle:r}),r)}function nt(t){const e=[];let n=0,i=0;const o=[],r=[...t];for(let t=0;t<r.length;t++){const{x:a,y:l,w:s,h:c,angle:h=0}=r[t];let f;if(n+=a,i+=l,0===t){const t={x:n,y:i,w:s,h:c,angle:h};f=et({x:a,y:l,w:s,h:c,angle:h}),o.push({center:H(t),angle:h,radian:V(h)})}else{f=tt({x:n,y:i,w:s,h:c,angle:h});for(let t=0;t<o.length;t++){const{center:e,radian:n}=o[t];f=Y(e,f,n)}const t=N(f);if(h>0||h<0){f=Y(t,f,V(h))}o.push({center:t,angle:h,radian:V(h)})}e.push(f)}return e}function it(t,e){const{groupQueue:n}=e;if(!(n.length>0))return[et(t)];return nt([...n,t])}function ot(t,e){return it(t,e).pop()||null}function rt(t,e){const{viewScaleInfo:n}=e,{x:i,y:o,w:r,h:a,angle:l}=t,{scale:s,offsetTop:c,offsetLeft:h}=n;return{x:i*s+h,y:o*s+c,w:r*s,h:a*s,angle:l}}function at(t,e){const{viewScaleInfo:n}=e,{x:i,y:o}=t,{scale:r,offsetTop:a,offsetLeft:l}=n;return{x:i*r+l,y:o*r+a}}function lt(t,e){const{context2d:n,element:i,viewScaleInfo:o,viewSizeInfo:r}=e,{angle:a=0}=i,{x:l,y:s,w:c,h:h}=rt(i,{viewScaleInfo:o,viewSizeInfo:r}),f=U({x:l,y:s,w:c,h:h,angle:a});if(f.length>=2){n.beginPath(),n.moveTo(f[0].x,f[0].y);for(let t=1;t<f.length;t++)n.lineTo(f[t].x,f[t].y);n.closePath()}return!!n.isPointInPath(t.x,t.y)}function st(t,e){const{groupQueue:n}=e,i=ot(t,{groupQueue:n}),o=W(i[0],i[1]),r=W(i[1],i[2]),a=W(i[2],i[3]),l=W(i[3],i[0]),s=i[0],c=i[1],h=i[2],f=i[3],u=Math.max(s.x,c.x,h.x,f.x),d=Math.max(s.y,c.y,h.y,f.y);return{center:{x:(u+Math.min(s.x,c.x,h.x,f.x))/2,y:(d+Math.min(s.y,c.y,h.y,f.y))/2},topLeft:s,topRight:c,bottomLeft:f,bottomRight:h,top:o,right:r,left:l,bottom:a}}function ct(t){const e=Math.max(t.topLeft.x,t.topRight.x,t.bottomRight.x,t.bottomLeft.x),n=Math.max(t.topLeft.y,t.topRight.y,t.bottomRight.y,t.bottomLeft.y),i=Math.min(t.topLeft.x,t.topRight.x,t.bottomRight.x,t.bottomLeft.x),o=Math.min(t.topLeft.y,t.topRight.y,t.bottomRight.y,t.bottomLeft.y),r={x:t.center.x,y:t.center.y},a={x:i,y:o},l={x:e,y:o},s={x:e,y:n},c={x:i,y:n},h=W(a,l),f=W(c,s),u=W(a,c);return{center:r,topLeft:a,topRight:l,bottomLeft:c,bottomRight:s,top:h,right:W(l,s),left:u,bottom:f}}function ht(t,e){const n=ft(e);let i=0,o=0;return Object.keys(t).forEach((e=>{const r=t[e];r.isVisibleInView=function(t,e){const n=Math.min(t.topLeft.x,t.topRight.x,t.bottomLeft.x,t.bottomRight.x),i=Math.max(t.topLeft.x,t.topRight.x,t.bottomLeft.x,t.bottomRight.x),o=Math.min(t.topLeft.y,t.topRight.y,t.bottomLeft.y,t.bottomRight.y),r=Math.max(t.topLeft.y,t.topRight.y,t.bottomLeft.y,t.bottomRight.y),a=Math.min(e.topLeft.x,e.topRight.x,e.bottomLeft.x,e.bottomRight.x),l=Math.max(e.topLeft.x,e.topRight.x,e.bottomLeft.x,e.bottomRight.x),s=Math.min(e.topLeft.y,e.topRight.y,e.bottomLeft.y,e.bottomRight.y),c=Math.max(e.topLeft.y,e.topRight.y,e.bottomLeft.y,e.bottomRight.y);return n<=l&&i>=a&&o<=c&&r>=s||l<=r&&l>=r&&l<=r&&l>=r}(r.rangeRectInfo,n),r.isVisibleInView?i++:o++})),{viewVisibleInfoMap:t,visibleCount:i,invisibleCount:o}}function ft(t){const{viewScaleInfo:e,viewSizeInfo:n}=t,{scale:i,offsetTop:o,offsetLeft:r}=e,{width:a,height:l}=n,s=0-r/i,c=0-o/i,h=a/i,f=l/i,u=H({x:s,y:c,w:h,h:f});return{center:u,topLeft:{x:s,y:c},topRight:{x:s+h,y:c},bottomLeft:{x:s,y:c+f},bottomRight:{x:s+h,y:c+f},left:{x:s,y:u.y},top:{x:u.x,y:c},right:{x:s+h,y:u.y},bottom:{x:u.x,y:c+f}}}function ut(t,e){const{x:n,y:i}=t,{size:o,angle:r}=e;return{x:n-o/2,y:i-o/2,w:o,h:o,angle:r}}o=new WeakMap,r=new WeakMap,a=new WeakSet,l=function(){return w(c(this,r))};const dt=/([astvzqmhlc])([^astvzqmhlc]*)/gi,gt=/(-?\d+(?:\.\d+)?)/gi;const mt=/\s([^'"/\s><]+?)[\s/>]|([^\s=]+)=\s?(".*?"|'.*?')/g,xt=/<[a-zA-Z0-9\-\!\/](?:"[^"]*"|'[^']*'|[^'">])*>/g,yt=/^\s*$/,pt={};function wt(t){const e={type:"element",name:"",isVoid:!1,attributes:{},children:[]},n=t.match(/<\/?([^\s]+?)[/\s>]/);if(n&&(e.name=n[1],(pt[n[1]]||"/"===t.charAt(t.length-2))&&(e.isVoid=!0),e.name.startsWith("!--"))){const e=t.indexOf("--\x3e");return{type:"comment",name:null,attributes:{},children:[],isVoid:!1,comment:-1!==e?t.slice(4,e):""}}const i=new RegExp(mt);let o=null;for(;o=i.exec(t),null!==o;)if(o[0].trim())if(o[1]){const t=o[1].trim();let n=[t,""];t.indexOf("=")>-1&&(n=t.split("=")),e.attributes[n[0]]=n[1],i.lastIndex--}else o[2]&&(e.attributes[o[2]]=o[3].trim().substring(1,o[3].length-1));return e}function vt(t,e){switch(e.type){case"text":return t+e.textContent;case"element":return t+="<"+e.name+(e.attributes?function(t){const e=[];for(let n in t)e.push(n+'="'+t[n]+'"');return e.length?" "+e.join(" "):""}(e.attributes):"")+(e.isVoid?"/>":">"),e.isVoid?t:t+e.children.reduce(vt,"")+"</"+e.name+">";case"comment":return t+="\x3c!--"+e.comment+"--\x3e"}}function bt(t,e){let n=2;return void 0!==(null==e?void 0:e.decimalPlaces)&&(null==e?void 0:e.decimalPlaces)>=0&&(n=e.decimalPlaces),parseFloat(t.toFixed(n))}function Mt(t){return t[1]!=-1*t[3]||t[4]!=t[0]||t[0]*t[4]-t[3]*t[1]!=1?null:Math.acos(t[0])}const Rt="Text Element";function Pt(){return{boxSizing:"border-box",borderWidth:0,borderColor:"#000000",shadowColor:"#000000",borderRadius:0,borderDash:[],shadowOffsetX:0,shadowOffsetY:0,shadowBlur:0,opacity:1,color:"#000000",textAlign:"left",verticalAlign:"top",fontSize:16,lineHeight:20,fontFamily:"sans-serif",fontWeight:400,overflow:"hidden"}}function It(){return{background:"#D9D9D9"}}const St={boxSizing:"border-box",borderWidth:0,borderColor:"#000000",shadowColor:"#000000",borderRadius:0,borderDash:[],shadowOffsetX:0,shadowOffsetY:0,shadowBlur:0,opacity:1,color:"#000000",textAlign:"left",verticalAlign:"top",fontSize:16,lineHeight:20,fontFamily:"sans-serif",fontWeight:400,overflow:"hidden"};const Lt=t=>bt(t,{decimalPlaces:4});function Et(t,e){const{detail:n}=t,{xRatio:i,yRatio:o,maxRatio:r}=e,a=(i+o)/2,{borderWidth:l,borderRadius:s,borderDash:c,shadowOffsetX:h,shadowOffsetY:f,shadowBlur:u}=n;if("number"==typeof l)n.borderWidth=Lt(l*a);else if(Array.isArray(n.borderWidth)){const t=l;n.borderWidth=[Lt(t[0]*o),Lt(t[1]*i),Lt(t[2]*o),Lt(t[3]*i)]}if("number"==typeof s)n.borderRadius=Lt(s*a);else if(Array.isArray(n.borderRadius)){const t=s;n.borderRadius=[t[0]*i,t[1]*i,t[2]*o,t[3]*o]}Array.isArray(c)&&c.forEach(((t,e)=>{n.borderDash[e]=Lt(t*r)})),"number"==typeof h&&(n.shadowOffsetX=Lt(h*r)),"number"==typeof f&&(n.shadowOffsetX=Lt(f*r)),"number"==typeof u&&(n.shadowOffsetX=Lt(u*r))}function $t(t,e){const{type:n}=t;!function(t,e){const{xRatio:n,yRatio:i}=e,{x:o,y:r,w:a,h:l}=t;t.x=Lt(o*n),t.y=Lt(r*i),t.w=Lt(a*n),t.h=Lt(l*i),Et(t,e)}(t,e),"circle"===n||("text"===n?function(t,e){const{minRatio:n,maxRatio:i}=e,{fontSize:o,lineHeight:r}=t.detail,a=(n+i)/2;o&&o>0&&(t.detail.fontSize=Lt(o*a)),r&&r>0&&(t.detail.lineHeight=Lt(r*a))}(t,e):"image"===n||"svg"===n||"html"===n||"path"===n||"group"===n&&Array.isArray(t.detail.children)&&t.detail.children.forEach((t=>{$t(t,e)})))}function At(t,e){const n=e.w&&e.w>0?e.w:t.w,i=e.h&&e.h>0?e.h:t.h,o=n/t.w,r=i/t.h;if(o===r&&1===o)return t;const a=Math.min(o,r),l=Math.max(o,r);t.w=n,t.h=i;const s={xRatio:o,yRatio:r,minRatio:a,maxRatio:l};return"group"===t.type&&Array.isArray(t.detail.children)&&t.detail.children.forEach((t=>{$t(t,s)})),Et(t,s),t}const Ct=200,kt=200;function zt(t,e,n){let i=!1;if(1===e.length){const o=e[0];n.splice(o,0,t),i=!0}else if(e.length>1){let o=n;for(let n=0;n<e.length;n++){const r=o[e[n]];if(n===e.length-1){const r=e[n];o.splice(r,0,t),i=!0}else{if(!(n<e.length-1&&"group"===r.type))break;o=r.detail.children}}}return i}function Ot(t,e){let n=!1;if(1===t.length){const i=t[0];e.splice(i,1),n=!0}else if(t.length>1){let i=e;for(let e=0;e<t.length;e++){const o=i[t[e]];if(e===t.length-1){const o=t[e];i.splice(o,1),n=!0}else{if(!(e<t.length-1&&"group"===o.type))break;i=o.detail.children}}}return n}function Tt(t,e){const n=[...e.from],i=[...e.to];if(0===n.length||0===i.length)return{elements:t,from:n,to:i};if(n.length<=i.length)for(let e=0;e<n.length;e++)if(i[e]!==n[e]);else if(e===n.length-1)return{elements:t,from:n,to:i};const o=J(n,t);if(o){if(!zt(o,i,t))return{elements:t,from:n,to:i};let e=-1;for(let t=0;t<n.length&&i[t]>=0;t++)i[t]!==n[t]&&i[t]<n[t]&&t==i.length-1&&(e=t);e>=0&&(n[e]=n[e]+1),Ot(n,t)}return{elements:t,from:n,to:i}}function Dt(t,e){var n;const i=Object.keys(e);for(let o=0;o<i.length;o++){const r=i[o];["x","y","w","h","angle","name"].includes(r)?t[r]=e[r]:["detail","operations"].includes(r)&&(b.json(e[r])?((null==t?void 0:t.hasOwnProperty(r))||(t[r]={}),b.json(t[r])&&(t[r]={...t[r],...e[r]})):b.array(e[r])&&((null==t?void 0:t.hasOwnProperty(r))||(t[r]=[]),b.array(t[r])&&(null==(n=null==e?void 0:e[r])||n.forEach(((e,n)=>{t[r][n]=e})),t[r]=[...t[r],...e[r]])))}return t}function jt(t,e,n){var i;const o=J(t,n);return o&&("group"===o.type&&!0===(null==(i=o.operations)?void 0:i.deepResize)&&(e.w&&e.w>0||e.h&&e.h>0)&&At(o,{w:e.w,h:e.h}),Dt(o,e)),o}function Wt(t,e,n=void 0){const i=e.split(".").reduce(((t,e)=>Object(t)[e]),t);return void 0===i?n:i}function Vt(t,e,n){const i=e.split(".");return"object"!=typeof t||i.reduce(((t,e,i,o)=>i===o.length-1?(t[e]=n,null):(e in t||(t[e]=/^[0-9]{1,}$/.test(o[i+1])?[]:{}),t[e])),t),t}return t.Context2D=C,t.EventEmitter=class{constructor(){h(this,i,void 0),f(this,i,new Map)}on(t,e){if(c(this,i).has(t)){const n=c(this,i).get(t)||[];null==n||n.push(e),c(this,i).set(t,n)}else c(this,i).set(t,[e])}off(t,e){if(c(this,i).has(t)){const n=c(this,i).get(t);if(Array.isArray(n))for(let t=0;t<(null==n?void 0:n.length);t++)if(n[t]===e){n.splice(t,1);break}c(this,i).set(t,n||[])}}trigger(t,e){const n=c(this,i).get(t);return!!Array.isArray(n)&&(n.forEach((t=>{t(e)})),!0)}has(t){if(c(this,i).has(t)){const e=c(this,i).get(t);if(Array.isArray(e)&&e.length>0)return!0}return!1}destroy(){this.clear()}clear(){c(this,i).clear()}},t.Store=class{constructor(t){h(this,a),h(this,o,void 0),h(this,r,void 0),f(this,r,w(t.defaultStorage)),f(this,o,u(this,a,l).call(this))}set(t,e){c(this,o)[t]=e}get(t){return c(this,o)[t]}getSnapshot(t){return!0===(null==t?void 0:t.deepClone)?w(c(this,o)):{...c(this,o)}}clear(){f(this,o,u(this,a,l).call(this))}destroy(){f(this,o,null)}},t.calcDistance=O,t.calcElementCenter=H,t.calcElementCenterFromVertexes=N,t.calcElementListSize=function(t){var e;const n={x:0,y:0,w:0,h:0};let i=null;for(let o=0;o<t.length;o++){const r=t[o];if(null==(e=null==r?void 0:r.operations)?void 0:e.invisible)continue;const a={x:r.x,y:r.y,w:r.w,h:r.h,angle:r.angle||0};if(a.angle&&(a.angle>0||a.angle<0)){const t=U(a);if(4===t.length){const e=[t[0].x,t[1].x,t[2].x,t[3].x],n=[t[0].y,t[1].y,t[2].y,t[3].y];a.x=Math.min(...e),a.y=Math.min(...n),a.w=Math.abs(Math.max(...e)-Math.min(...e)),a.h=Math.abs(Math.max(...n)-Math.min(...n))}}if(i){const t=Math.min(a.x,n.x),e=Math.min(a.y,n.y),i=Math.max(a.x+a.w,n.x+n.w),o=Math.max(a.y+a.h,n.y+n.h);n.x=t,n.y=e,n.w=Math.abs(i-t),n.h=Math.abs(o-e)}else n.x=a.x,n.y=a.y,n.w=a.w,n.h=a.h;i=a}return{x:Math.floor(n.x),y:Math.floor(n.y),w:Math.ceil(n.w),h:Math.ceil(n.h)}},t.calcElementOriginRectInfo=st,t.calcElementQueueVertexesQueueInGroup=nt,t.calcElementSizeController=function(t,e){const{groupQueue:n,controllerSize:i,viewScaleInfo:o}=e,r=(i&&i>0?i:8)/o.scale,{x:a,y:l,w:s,h:c,angle:h=0}=t,f=[{uuid:m(),x:a,y:l,w:s,h:c,angle:h,type:"group",detail:{children:[]}},...n];let u=0;f.forEach((({angle:t=0})=>{u+=t}));const d=ot(t,{groupQueue:n}),g=ot({x:a-2*r,y:l-2*r,h:c+4*r,w:s+4*r,angle:h},{groupQueue:[...n]}),x=W(d[0],d[1]),y=W(d[1],d[2]),p=W(d[2],d[3]),w=W(d[3],d[0]),v=d[0],b=d[1],M=d[2],R=d[3],P=ut(x,{size:r,angle:u}),I=ut(y,{size:r,angle:u}),S=ut(p,{size:r,angle:u}),L=ut(w,{size:r,angle:u}),E=ut(v,{size:r,angle:u}),$=ut(b,{size:r,angle:u}),A=ut(R,{size:r,angle:u}),C=ut(M,{size:r,angle:u}),k=et(E),z=et($),O=et(A),T=et(C),D=[k[1],z[0],z[3],k[2]],j=[z[3],z[2],T[1],T[0]],V=[O[1],T[0],T[3],O[2]],F=[k[3],k[2],O[1],O[0]],H=et(P),N=et(I),B=et(S),Q=et(L),G=W(g[0],g[1]);return{elementWrapper:d,left:{type:"left",vertexes:F,center:w},right:{type:"right",vertexes:j,center:y},top:{type:"top",vertexes:D,center:x},bottom:{type:"bottom",vertexes:V,center:p},topLeft:{type:"top-left",vertexes:k,center:v},topRight:{type:"top-right",vertexes:z,center:b},bottomLeft:{type:"bottom-left",vertexes:O,center:R},bottomRight:{type:"bottom-right",vertexes:T,center:M},leftMiddle:{type:"left-middle",vertexes:Q,center:w},rightMiddle:{type:"right-middle",vertexes:N,center:y},topMiddle:{type:"top-middle",vertexes:H,center:x},bottomMiddle:{type:"bottom-middle",vertexes:B,center:p},rotate:{type:"rotate",vertexes:et(ut(G,{size:r,angle:u})),center:G}}},t.calcElementVertexesInGroup=ot,t.calcElementVertexesQueueInGroup=it,t.calcElementViewRectInfo=function(t,e){const{groupQueue:n,viewScaleInfo:i,range:o}=e,r=st(t,{groupQueue:n}),{center:a,top:l,bottom:s,left:c,right:h,topLeft:f,topRight:u,bottomLeft:d,bottomRight:g}=r,m={center:at(a,{viewScaleInfo:i}),topLeft:at(f,{viewScaleInfo:i}),topRight:at(u,{viewScaleInfo:i}),bottomLeft:at(d,{viewScaleInfo:i}),bottomRight:at(g,{viewScaleInfo:i}),top:at(l,{viewScaleInfo:i}),right:at(h,{viewScaleInfo:i}),left:at(c,{viewScaleInfo:i}),bottom:at(s,{viewScaleInfo:i})};if(!0===o){const t=Math.max(m.topLeft.x,m.topRight.x,m.bottomRight.x,m.bottomLeft.x),e=Math.max(m.topLeft.y,m.topRight.y,m.bottomRight.y,m.bottomLeft.y),n=Math.min(m.topLeft.x,m.topRight.x,m.bottomRight.x,m.bottomLeft.x),i=Math.min(m.topLeft.y,m.topRight.y,m.bottomRight.y,m.bottomLeft.y),o={x:m.center.x,y:m.center.y},r={x:n,y:i},a={x:t,y:i},l={x:t,y:e},s={x:n,y:e},c=W(r,a),h=W(s,l),f=W(r,s);return{center:o,topLeft:r,topRight:a,bottomLeft:s,bottomRight:l,top:c,right:W(a,l),left:f,bottom:h}}return m},t.calcElementViewRectInfoMap=function(t,e){const{groupQueue:n,viewScaleInfo:i}=e,o=st(t,{groupQueue:n}),{center:r,top:a,bottom:l,left:s,right:c,topLeft:h,topRight:f,bottomLeft:u,bottomRight:d}=o,g={center:at(r,{viewScaleInfo:i}),topLeft:at(h,{viewScaleInfo:i}),topRight:at(f,{viewScaleInfo:i}),bottomLeft:at(u,{viewScaleInfo:i}),bottomRight:at(d,{viewScaleInfo:i}),top:at(a,{viewScaleInfo:i}),right:at(c,{viewScaleInfo:i}),left:at(s,{viewScaleInfo:i}),bottom:at(l,{viewScaleInfo:i})},m=Math.max(g.topLeft.x,g.topRight.x,g.bottomRight.x,g.bottomLeft.x),x=Math.max(g.topLeft.y,g.topRight.y,g.bottomRight.y,g.bottomLeft.y),y=Math.min(g.topLeft.x,g.topRight.x,g.bottomRight.x,g.bottomLeft.x),p=Math.min(g.topLeft.y,g.topRight.y,g.bottomRight.y,g.bottomLeft.y),w={x:g.center.x,y:g.center.y},v={x:y,y:p},b={x:m,y:p},M={x:m,y:x},R={x:y,y:x},P=W(v,b),I=W(R,M),S=W(v,R);return{originRectInfo:o,viewRectInfo:g,rangeRectInfo:{center:w,topLeft:v,topRight:b,bottomLeft:R,bottomRight:M,top:P,right:W(b,M),left:S,bottom:I}}},t.calcElementsContextSize=q,t.calcElementsViewInfo=function(t,e,n){const i=q(t,{viewWidth:e.width,viewHeight:e.height,extend:null==n?void 0:n.extend});return!0===(null==n?void 0:n.extend)&&(i.contextWidth=Math.max(i.contextWidth,e.contextWidth),i.contextHeight=Math.max(i.contextHeight,e.contextHeight)),{contextSize:i}},t.calcRadian=function(t,e,n){const i=B(t,e),o=B(t,n);return null!==o&&null!==i?i>3*Math.PI/2&&o<Math.PI/2?o+(2*Math.PI-i):o>3*Math.PI/2&&i<Math.PI/2?i+(2*Math.PI-o):o-i:0},t.calcSpeed=function(t,e){return O(t,e)/Math.abs(e.t-t.t)},t.calcViewBoxSize=function(t,e){const{viewScaleInfo:n}=e,{scale:i}=n;let{borderRadius:o}=t.detail;const{boxSizing:r=St.boxSizing,borderWidth:a}=t.detail;Array.isArray(a)&&(o=0);let{x:l,y:s,w:c,h:h}=t,f=[0,0,0,0];if("number"==typeof o){const t=o*i;f=[t,t,t,t]}else Array.isArray(o)&&4===(null==o?void 0:o.length)&&(f=[o[0]*i,o[1]*i,o[2]*i,o[3]*i]);let u=0;return"number"==typeof a&&(u=(a||0)*i),"border-box"===r?(l=t.x+u/2,s=t.y+u/2,c=t.w-u,h=t.h-u):"content-box"===r?(l=t.x-u/2,s=t.y-u/2,c=t.w+u,h=t.h+u):(l=t.x,s=t.y,c=t.w,h=t.h),c=Math.max(c,1),h=Math.max(h,1),f=f.map((t=>Math.min(t,c/2,h/2))),{x:l,y:s,w:c,h:h,radiusList:f}},t.calcViewCenter=function(t){let e=0,n=0;if(t){const{viewScaleInfo:i,viewSizeInfo:o}=t,{offsetLeft:r,offsetTop:a,scale:l}=i,{width:s,height:c}=o;e=0-r+s/l/2,n=0-a+c/l/2}return{x:e,y:n}},t.calcViewCenterContent=function(t,e){var n,i,o,r,a,l,s,c;let h=0,f=0,u=1,d=(null==(i=null==(n=null==t?void 0:t.elements)?void 0:n[0])?void 0:i.x)||0,g=(null==(r=null==(o=null==t?void 0:t.elements)?void 0:o[0])?void 0:r.y)||0,m=(null==(l=null==(a=null==t?void 0:t.elements)?void 0:a[0])?void 0:l.w)||0,x=(null==(c=null==(s=null==t?void 0:t.elements)?void 0:s[0])?void 0:c.h)||0;const{width:y,height:p}=e.viewSizeInfo;if(t.elements.forEach((t=>{const e={x:t.x,y:t.y,w:t.w,h:t.h,angle:t.angle};if(e.angle&&(e.angle>0||e.angle<0)){const t=U(e);if(4===t.length){const n=[t[0].x,t[1].x,t[2].x,t[3].x],i=[t[0].y,t[1].y,t[2].y,t[3].y];e.x=Math.min(...n),e.y=Math.min(...i),e.w=Math.abs(Math.max(...n)-Math.min(...n)),e.h=Math.abs(Math.max(...i)-Math.min(...i))}}const n=Math.min(e.x,d),i=Math.min(e.y,g),o=Math.max(e.x+e.w,d+m),r=Math.max(e.y+e.h,g+x);d=n,g=i,m=Math.abs(o-n),x=Math.abs(r-i)})),m>0&&x>0){const t=bt(y/m,{decimalPlaces:4}),e=bt(p/x,{decimalPlaces:4});u=Math.min(t,e,1),h=(m*u-y)/2/u+d,f=(x*u-p)/2/u+g}return{offsetX:bt(h,{decimalPlaces:0}),offsetY:bt(f,{decimalPlaces:0}),scale:u}},t.calcViewElementSize=rt,t.calcViewPointSize=at,t.calcViewScaleInfo=function(t,e){const{scale:n,offsetX:i,offsetY:o}=t,{viewSizeInfo:r}=e,{width:a,height:l,contextWidth:s,contextHeight:c}=r,h=0-i*n,f=0-o*n;return{scale:n,offsetLeft:h,offsetTop:f,offsetRight:a-(s*n+h/n),offsetBottom:l-(c*n+f/n)}},t.calcViewVertexes=function(t,e){return[at(t[0],e),at(t[1],e),at(t[2],e),at(t[3],e)]},t.calcVisibleOriginCanvasRectInfo=ft,t.check=A,t.checkRectIntersect=_,t.colorNameToHex=function(t){const e=t.toLowerCase(),n=g[e];return"string"==typeof n?n:null},t.colorToCSS=function(t){let e="transparent";if("string"==typeof t)e=t;else if("linear-gradient"===(null==t?void 0:t.type)){const n=[];"number"==typeof t.angle?n.push(`${t.angle}deg`):n.push("180deg"),Array.isArray(t.stops)&&t.stops.forEach((t=>{n.push(`${t.color} ${100*t.offset}%`)})),e=`linear-gradient(${n.join(", ")})`}else if("radial-gradient"===(null==t?void 0:t.type)){const n=[];Array.isArray(t.stops)&&t.stops.forEach((t=>{n.push(`${t.color} ${100*t.offset}%`)})),e=`radial-gradient(circle, ${n.join(", ")})`}return e},t.colorToLinearGradientCSS=function(t){let e="transparent";if("string"==typeof t)e=t;else if("radial-gradient"===(null==t?void 0:t.type)||"linear-gradient"===(null==t?void 0:t.type)){const n=[];Array.isArray(t.stops)&&t.stops.length>0&&(t.stops.forEach(((e,i)=>{n.push(`${e.color} ${100*e.offset}%`),i===t.stops.length-1&&e.offset<1&&n.push(`${e.color} ${100*e.offset}%`)})),e=`linear-gradient(90deg, ${n.join(", ")})`)}return e},t.compose=function(t){return function(e,n){return function i(o){let r=t[o];o===t.length&&n&&(r=n);if(!r)return Promise.resolve();try{return Promise.resolve(r(e,i.bind(null,o+1)))}catch(t){return Promise.reject(t)}}(0)}},t.compressImage=function(t,e){let n=.5;const i=(null==e?void 0:e.type)||"image/png";return(null==e?void 0:e.radio)&&(null==e?void 0:e.radio)>0&&(null==e?void 0:e.radio)<=1&&(n=null==e?void 0:e.radio),new Promise(((e,o)=>{const r=new Image;r.addEventListener("load",(()=>{const{width:t,height:o}=r,a=t*n,l=o*n;let s=document.createElement("canvas");s.width=a,s.height=l;s.getContext("2d").drawImage(r,0,0,a,l);const c=s.toDataURL(i);s=null,e(c)})),r.addEventListener("error",(t=>{o(t)})),r.src=t}))},t.createAssetId=y,t.createBoardContent=function(t,e){const{width:n,height:i,devicePixelRatio:o,offscreen:r,createCustomContext2D:a}=e,l={width:n,height:i,devicePixelRatio:o},s=t.getContext("2d");if(a){const t=a(l),e=a(l),n=a(l),i=k({ctx:s,...l}),o=()=>{const{width:o,height:r}=t.$getSize();i.clearRect(0,0,o,r),i.drawImage(n.canvas,0,0,o,r),i.drawImage(t.canvas,0,0,o,r),i.drawImage(e.canvas,0,0,o,r),n.clearRect(0,0,o,r),t.clearRect(0,0,o,r),e.clearRect(0,0,o,r)};return{underContext:n,viewContext:t,helperContext:e,boardContext:i,drawView:o}}if(!0===r){const t=z(l),e=z(l),n=z(l),i=k({ctx:s,...l}),o=()=>{const{width:o,height:r}=t.$getSize();i.clearRect(0,0,o,r),i.drawImage(n.canvas,0,0,o,r),i.drawImage(t.canvas,0,0,o,r),i.drawImage(e.canvas,0,0,o,r),n.clearRect(0,0,o,r),t.clearRect(0,0,o,r),e.clearRect(0,0,o,r)};return{underContext:n,viewContext:t,helperContext:e,boardContext:i,drawView:o}}{const t=k(l),e=k(l),o=k(l),r=k({ctx:s,...l}),a=()=>{r.clearRect(0,0,n,i),r.drawImage(o.canvas,0,0,n,i),r.drawImage(t.canvas,0,0,n,i),r.drawImage(e.canvas,0,0,n,i),o.clearRect(0,0,n,i),t.clearRect(0,0,n,i),e.clearRect(0,0,n,i)};return{underContext:o,viewContext:t,helperContext:e,boardContext:r,drawView:a}}},t.createContext2D=k,t.createElement=function(t,e,n){const i=function(t,e){let n=0,i=0,o=Ct,r=kt;if(e){const{viewScaleInfo:a,viewSizeInfo:l}=e,{scale:s,offsetLeft:c,offsetTop:h}=a,{width:f,height:u}=l,d=f/4,g=u/4;o=Ct>=d?d/s:Ct/s,r=kt>=g?g/s:kt/s,["circle","svg","image"].includes(t)?o=r=Math.max(o,r):"text"===t&&(r=o/Rt.length*2),n=(0-c+f/2-o*s/2)/s,i=(0-h+u/2-r*s/2)/s}return{x:n,y:i,w:o,h:r}}(t,n);let o={};return"rect"===t?o={background:"#D9D9D9"}:"circle"===t?o={background:"#D9D9D9",radius:0}:"text"===t?o=function(t){const e={boxSizing:"border-box",borderWidth:0,borderColor:"#000000",shadowColor:"#000000",borderRadius:0,borderDash:[],shadowOffsetX:0,shadowOffsetY:0,shadowBlur:0,opacity:1,color:"#000000",textAlign:"left",verticalAlign:"top",fontSize:16,lineHeight:20,fontFamily:"sans-serif",fontWeight:400,overflow:"hidden"};return{text:Rt,color:e.color,fontFamily:e.fontFamily,fontWeight:e.fontWeight,lineHeight:t.w/Rt.length,fontSize:t.w/Rt.length,textAlign:"center",verticalAlign:"middle"}}(i):"svg"===t?o={svg:'<svg t="1701004189871" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="200" height="200"><path d="M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3-12.3 12.7-12.1 32.9 0.6 45.3l183.7 179.1-43.4 252.9c-1.2 6.9-0.1 14.1 3.2 20.3 8.2 15.6 27.6 21.7 43.2 13.4L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3zM664.8 561.6l36.1 210.3L512 672.7 323.1 772l36.1-210.3-152.8-149L417.6 382 512 190.7 606.4 382l211.2 30.7-152.8 148.9z" fill="#2c2c2c"></path></svg>'}:"image"===t?o={src:"data:image/svg+xml;base64,PHN2ZyAgIHZpZXdCb3g9IjAgMCAxMDI0IDEwMjQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiAgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiPjxwYXRoIGQ9Ik05MjggMTYwSDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NDBjMCAxNy43IDE0LjMgMzIgMzIgMzJoODMyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE5MmMwLTE3LjctMTQuMy0zMi0zMi0zMnogbS00MCA2MzJIMTM2di0zOS45bDEzOC41LTE2NC4zIDE1MC4xIDE3OEw2NTguMSA0ODkgODg4IDc2MS42Vjc5MnogbTAtMTI5LjhMNjY0LjIgMzk2LjhjLTMuMi0zLjgtOS0zLjgtMTIuMiAwTDQyNC42IDY2Ni40bC0xNDQtMTcwLjdjLTMuMi0zLjgtOS0zLjgtMTIuMiAwTDEzNiA2NTIuN1YyMzJoNzUydjQzMC4yeiIgIGZpbGw9IiM1MTUxNTEiPjwvcGF0aD48cGF0aCBkPSJNMzA0IDQ1NmM0OC42IDAgODgtMzkuNCA4OC04OHMtMzkuNC04OC04OC04OC04OCAzOS40LTg4IDg4IDM5LjQgODggODggODh6IG0wLTExNmMxNS41IDAgMjggMTIuNSAyOCAyOHMtMTIuNSAyOC0yOCAyOC0yOC0xMi41LTI4LTI4IDEyLjUtMjggMjgtMjh6IiAgZmlsbD0iIzUxNTE1MSI+PC9wYXRoPjwvc3ZnPg=="}:"group"===t&&(o={children:[],background:"#D9D9D9",overflow:"hidden"}),{...i,...e,uuid:m(),type:t,detail:{...o,...e.detail||{}}}},t.createOffscreenContext2D=z,t.createUUID=m,t.debounce=function(t,e){let n=-1;return function(...i){n>=0&&window.clearTimeout(n),n=setTimeout((()=>{t(...i),n=-1}),e)}},t.deepClone=w,t.deepCloneElement=function(t){const e=w(t),n=t=>{t.uuid=m(),"group"===t.type&&t.detail.children&&t.detail.children.forEach((t=>{n(t)}))};return n(e),e},t.deepResizeGroupElement=At,t.delay=function(t){return new Promise((e=>{setTimeout((()=>{e()}),t)}))},t.deleteElementInList=function(t,e){return Ot(K(t,e),e)},t.deleteElementInListByPosition=Ot,t.downloadFileFromText=function(t,e){const{fileName:n}=e,i=function(t){const e=(new TextEncoder).encode(t),n=new Blob([e],{type:"text/plain;charset=utf-8"});return window.URL.createObjectURL(n)}(t);let o=document.createElement("a");o.href=i,o.download=n,o.click(),o=null},t.downloadImageFromCanvas=function(t,e){const{fileName:n,type:i="image/jpeg"}=e,o=t.toDataURL(i);let r=document.createElement("a");r.href=o,r.download=n,r.click(),r=null},t.equalPoint=T,t.equalTouchPoint=function(t,e){return!0===T(t,e)&&t.f===e.f},t.filterCompactData=function(t,e){const n=t.assets||{},i=w(t),o=(null==e?void 0:e.loadItemMap)||{},r=t=>{t.forEach((t=>{var e,i,a;if("image"===t.type&&t.detail.src){const i=t.detail.src;if(p(i)&&!n[i]&&o[i]&&"string"==typeof(null==(e=o[i])?void 0:e.source))n[i]={type:"image",value:o[i].source};else if(!n[i]){const e=y(i);n[e]||(n[e]={type:"image",value:i}),t.detail.src=e}}else if("svg"===t.type){const e=t.detail.svg;if(p(e)&&!n[e]&&o[e]&&"string"==typeof(null==(i=o[e])?void 0:i.source))n[e]={type:"svg",value:o[e].source};else if(!n[e]){const i=y(e);n[i]||(n[i]={type:"svg",value:e}),t.detail.svg=i}}else if("html"===t.type){const e=t.detail.html;if(p(e)&&!n[e]&&o[e]&&"string"==typeof(null==(a=o[e])?void 0:a.source))n[e]={type:"html",value:o[e].source};else if(!n[e]){const i=y(e);n[i]||(n[i]={type:"html",value:e}),t.detail.html=i}}else if("group"===t.type&&Array.isArray(t.detail.children)){const e=t.detail.assets||{};Object.keys(e).forEach((t=>{n[t]||(n[t]=e[t])})),delete t.detail.assets,r(t.detail.children)}}))};return r(i.elements),i.assets=n,i},t.filterElementAsset=function(t){let e=null,n=null,i=null;return"image"===t.type?i=t.detail.src:"svg"===t.type?i=t.detail.svg:"html"===t.type&&(i=t.detail.html),"string"!=typeof i||p(i)||(e=y(i),n={type:t.type,value:i},"image"===t.type?t.detail.src=e:"svg"===t.type?t.detail.svg=e:"html"===t.type&&(t.detail.html=e)),{element:t,assetId:e,assetItem:n}},t.findElementFromList=function t(e,n){var i;let o=null;for(let r=0;r<n.length;r++){const a=n[r];if(a.uuid===e){o=a;break}if(!o&&"group"===a.type){const n=t(e,(null==(i=null==a?void 0:a.detail)?void 0:i.children)||[]);if((null==n?void 0:n.uuid)===e){o=n;break}}}return o},t.findElementFromListByPosition=J,t.findElementQueueFromListByPosition=function(t,e){const n=[];let i=e;for(let e=0;e<t.length;e++){const o=i[t[e]];if(!o)break;if(n.push(o),!(e<t.length-1&&"group"===o.type))break;i=o.detail.children}return n},t.findElementsFromList=function(t,e){const n=[];return function e(i){var o;for(let r=0;r<i.length;r++){const a=i[r];t.includes(a.uuid)?n.push(a):"group"===a.type&&e((null==(o=null==a?void 0:a.detail)?void 0:o.children)||[])}}(e),n},t.findElementsFromListByPositions=function(t,e){const n=[];return t.forEach((t=>{const i=J(t,e);i&&n.push(i)})),n},t.formatNumber=bt,t.generateHTML=function(t){return t.reduce((function(t,e){return t+vt("",e)}),"")},t.generateSVGPath=function(t){let e="";return t.forEach((t=>{e+=t.type+t.params.join(" ")})),e},t.getCenterFromTwoPoints=W,t.getDefaultElementDetailConfig=Pt,t.getDefaultElementRectDetail=It,t.getElemenetsAssetIds=function(t){const e=[],n=t=>{t.forEach((t=>{"image"===t.type&&p(t.detail.src)?e.push(t.detail.src):"svg"===t.type&&p(t.detail.svg)?e.push(t.detail.svg):"html"===t.type&&t.detail.html?e.push(t.detail.html):"group"===t.type&&Array.isArray(t.detail.children)&&n(t.detail.children)}))};return n(t),e},t.getElementPositionFromList=K,t.getElementRotateVertexes=G,t.getElementSize=function(t){const{x:e,y:n,w:i,h:o,angle:r}=t;return{x:e,y:n,w:i,h:o,angle:r}},t.getElementVertexes=tt,t.getGroupQueueByElementPosition=Z,t.getGroupQueueFromList=function(t,e){const n=[];return function t(e,i){var o;let r=null;for(let a=0;a<i.length;a++){const l=i[a];if(l.uuid===e){r=l;break}if(!r&&"group"===l.type){n.push(l);const i=t(e,(null==(o=null==l?void 0:l.detail)?void 0:o.children)||[]);if((null==i?void 0:i.uuid)===e){r=i;break}n.pop()}}return r}(t,e),n},t.getModifiedElement=function(t,e){const n={},i=[],o=t=>{if(b.json(t)){Object.keys(t).forEach((r=>{if(i.push(r),b.json(t[r])||b.array(t[r]))o(t[r]);else{const t=i.join(".");if("uuid"!==t){const o=Wt(e,t);Vt(n,i.join("."),o)}}i.pop()}))}else b.array(t)&&t.forEach((r=>{if(i.push(r),b.json(t[r])||b.array(t[r]))o(t[r]);else{const t=Wt(e,i.join("."));Vt(n,i.join("."),t)}i.pop()}))};return o(t),n},t.getSelectedElementUUIDs=function(t,e){var n;let i=[];return Array.isArray(null==t?void 0:t.elements)&&(null==(n=null==t?void 0:t.elements)?void 0:n.length)>0&&Array.isArray(e)&&e.length>0&&e.forEach((e=>{var n;"number"==typeof e?(null==(n=null==t?void 0:t.elements)?void 0:n[e])&&i.push(t.elements[e].uuid):"string"==typeof e&&(i=i.concat(function(t,e){var n;const i=[];if("string"==typeof e&&/^\d+(\.\d+)*$/.test(e)){const o=e.split(".");let r=t;for(;o.length>0;){const t=o.shift();if("string"==typeof t){const e=r[parseInt(t)];e&&0===o.length?i.push(e.uuid):"group"===e.type&&o.length>0&&(r=(null==(n=null==e?void 0:e.detail)?void 0:n.children)||[])}break}}return i}(t.elements,e)))})),i},t.getViewPointAtElement=function(t,e){var n,i,o;const{context2d:r,data:a,viewScaleInfo:l,viewSizeInfo:s,groupQueue:c}=e,h={index:-1,element:null,groupQueueIndex:-1};if(c&&Array.isArray(c)&&(null==c?void 0:c.length)>0)for(let e=c.length-1;e>=0;e--){let o=0,a=0,f=0;for(let t=0;t<=e;t++)o+=c[t].x,a+=c[t].y,f+=c[t].angle||0;const u=c[e];if(u&&"group"===u.type&&Array.isArray(null==(n=u.detail)?void 0:n.children))for(let n=0;n<u.detail.children.length;n++){const d=u.detail.children[n];if(!0!==(null==(i=null==d?void 0:d.operations)?void 0:i.invisible)){if(!d)break;if(lt(t,{context2d:r,element:{x:o+d.x,y:a+d.y,w:d.w,h:d.h,angle:f+(d.angle||0)},viewScaleInfo:l,viewSizeInfo:s})){h.element=d,(e<c.length-1||"group"!==d.type)&&(h.groupQueueIndex=e);break}}}if(h.element)break}if(h.element)return h;for(let e=a.elements.length-1;e>=0;e--){const n=a.elements[e];if(!0!==(null==(o=null==n?void 0:n.operations)?void 0:o.invisible)&&lt(t,{context2d:r,element:n,viewScaleInfo:l,viewSizeInfo:s})){h.index=e,h.element=n;break}}return h},t.getViewScaleInfoFromSnapshot=function(t){const{activeStore:e}=t;return{scale:null==e?void 0:e.scale,offsetTop:null==e?void 0:e.offsetTop,offsetBottom:null==e?void 0:e.offsetBottom,offsetLeft:null==e?void 0:e.offsetLeft,offsetRight:null==e?void 0:e.offsetRight}},t.getViewSizeInfoFromSnapshot=function(t){const{activeStore:e}=t;return{devicePixelRatio:e.devicePixelRatio,width:null==e?void 0:e.width,height:null==e?void 0:e.height,contextWidth:null==e?void 0:e.contextWidth,contextHeight:null==e?void 0:e.contextHeight}},t.insertElementToListByPosition=zt,t.is=E,t.isAssetId=p,t.isColorStr=d,t.isElementInView=function(t,e){const{viewSizeInfo:n,viewScaleInfo:i}=e,{width:o,height:r}=n,{angle:a}=t,{x:l,y:s,w:c,h:h}=rt(t,{viewScaleInfo:i,viewSizeInfo:n}),f=U({x:l,y:s,w:c,h:h,angle:a}),u={x:0,y:0,w:o,h:r},d=Math.min(f[0].x,f[1].x,f[2].x,f[3].x),g=Math.min(f[0].y,f[1].y,f[2].y,f[3].y);return _(u,{x:d,y:g,w:Math.max(f[0].x,f[1].x,f[2].x,f[3].x)-d,h:Math.max(f[0].y,f[1].y,f[2].y,f[3].y)-g})},t.isResourceElement=function(t){return["image","svg","html"].includes(null==t?void 0:t.type)},t.isViewPointInElement=lt,t.istype=b,t.limitAngle=X,t.loadHTML=async function(t,e){t=t.replace(/\&/gi,"&amp;");const n=await function(t,e){const{width:n,height:i}=e;return new Promise(((e,o)=>{const r=new Blob([`\n <svg \n xmlns="http://www.w3.org/2000/svg" \n width="${n||""}" \n height = "${i||""}">\n <foreignObject width="100%" height="100%">\n <div xmlns = "http://www.w3.org/1999/xhtml">\n ${t}\n </div>\n </foreignObject>\n </svg>\n `],{type:"image/svg+xml;charset=utf-8"}),a=new FileReader;a.readAsDataURL(r),a.onload=function(t){var n;const i=null==(n=null==t?void 0:t.target)?void 0:n.result;e(i)},a.onerror=function(t){o(t)}}))}(t,e);return await R(n)},t.loadImage=R,t.loadSVG=async function(t){const e=await function(t){return new Promise(((e,n)=>{const i=new Blob([t],{type:"image/svg+xml;charset=utf-8"}),o=new FileReader;o.readAsDataURL(i),o.onload=function(t){var n;const i=null==(n=null==t?void 0:t.target)?void 0:n.result;e(i)},o.onerror=function(t){n(t)}}))}(t);return await R(e)},t.matrixToAngle=function(t){const e=Mt(t);if("number"==typeof e){return 180*e/Math.PI}return e},t.matrixToRadian=Mt,t.mergeElementAsset=function(t,e){const n=t;let i=null,o=null;return"image"===n.type?i=n.detail.src:"svg"===n.type?i=n.detail.svg:"html"===n.type&&(i=n.detail.html),i&&(null==i?void 0:i.startsWith("@assets/"))&&(o=e[i]),(null==o?void 0:o.type)===n.type&&"string"==typeof(null==o?void 0:o.value)&&(null==o?void 0:o.value)&&("image"===n.type?n.detail.src=o.value:"svg"===n.type?n.detail.svg=o.value:"html"===n.type&&(n.detail.html=o.value)),n},t.mergeHexColorAlpha=function(t,e){if(1===e)return t;let n=1;const i=/^\#[0-9a-f]{6,6}$/i;let o=t;if(i.test(t)?n=parseInt(t.substring(5,7).replace(/^\#/,"0x")):/^\#[0-9a-f]{8,8}$/i.test(t)&&(n=parseInt(t.substring(7,9).replace(/^\#/,"0x")),o=t.substring(0,7)),n*=e,i.test(o)&&n>0&&n<1){const t=Math.max(0,Math.min(255,Math.ceil(256*n)));o=`${o.toUpperCase()}${t.toString(16).toUpperCase()}`}return o},t.modifyElement=function(t,e){const{type:n}=e,i={...e.content};if("addElement"===n){const n=e,{element:i,position:o}=n.content;(null==o?void 0:o.length)>0?zt(i,[...o],t.elements):t.elements.push(i)}else if("deleteElement"===n){const n=e,{position:i}=n.content;Ot(i,t.elements)}else if("moveElement"===n){const n=e,{from:o,to:r}=n.content,a=Tt(t.elements,{from:o,to:r});i.from=a.from,i.to=a.to,t.elements=a.elements}else if("updateElement"===n){const n=e,{position:i,afterModifiedElement:o}=n.content;jt(i,o,t.elements)}return{data:t,content:i}},t.moveElementPosition=Tt,t.originRectInfoToRangeRectInfo=ct,t.parseAngleToRadian=V,t.parseFileToBase64=function(t){return new Promise((function(e,n){let i=new FileReader;i.addEventListener("load",(function(){e(i.result),i=null})),i.addEventListener("error",(function(t){n(t),i=null})),i.addEventListener("abort",(function(){n(new Error("abort")),i=null})),i.readAsDataURL(t)}))},t.parseFileToText=function(t){return new Promise((function(e,n){let i=new FileReader;i.addEventListener("load",(function(){e(i.result),i=null})),i.addEventListener("error",(function(t){n(t),i=null})),i.addEventListener("abort",(function(){n(new Error("abort")),i=null})),i.readAsText(t)}))},t.parseHTML=function(t){const e=[],n=[];let i,o=-1;return t.replace(xt,((r,a)=>{const l="/"!==r.charAt(1),s=r.startsWith("\x3c!--"),c=a+r.length,h=t.charAt(c);let f;if(s){const t=wt(r);return o<0?(e.push(t),r):(f=n[o],f.children.push(t),r)}if(l){if(o++,i=wt(r),!i.isVoid&&h&&"<"!==h){const e=t.slice(c,t.indexOf("<",c));e.trim()&&i.children.push({type:"text",name:null,attributes:{},children:[],isVoid:!1,textContent:e.trim()})}0===o&&e.push(i),f=n[o-1],f&&f.children.push(i),n[o]=i}if((!l||!Array.isArray(i)&&i.isVoid)&&(o>-1&&!Array.isArray(i)&&(i.isVoid||i.name===r.slice(2,-1))&&(o--,i=-1===o?e:n[o]),"<"!==h&&h)){f=-1===o?e:n[o].children;const i=t.indexOf("<",c);let r=t.slice(c,-1===i?void 0:i);yt.test(r)&&(r=" "),(i>-1&&o+f.length>=0||" "!==r)&&r.trim()&&f.push({type:"text",name:null,attributes:{},children:[],isVoid:!1,textContent:r.trim()})}return r})),e},t.parseRadianToAngle=function(t){return t/Math.PI*180},t.parseSVGPath=function(t){const e=[];return t.replace(dt,((t,n,i)=>{const o=i.match(gt),r={type:n,params:o?o.map(Number):[]};return e.push(r),t})),e},t.pickFile=function(t){const{accept:e,success:n,error:i}=t;let o=document.createElement("input");o.type="file",e&&(o.accept=e),o.addEventListener("change",(function(){var t;const e=null==(t=o.files)?void 0:t[0];n({file:e}),o=null})),o.addEventListener("error",(function(t){"function"==typeof i&&i(t),o=null})),o.click()},t.rotateByCenter=F,t.rotateElement=function(t,e,n){const i=H(e);F(t,e.angle||0,i,(()=>{n(t)}))},t.rotateElementVertexes=U,t.rotatePoint=Q,t.rotatePointInGroup=function(t,e){if((null==e?void 0:e.length)>0){let n=t.x,i=t.y;return e.forEach((t=>{const{x:e,y:o,w:r,h:a,angle:l=0}=t,s=Q(H({x:e,y:o,w:r,h:a,angle:l}),{x:n,y:i},V(l));n=s.x,i=s.y})),{x:n,y:i}}return t},t.rotateVertexes=Y,t.sortDataAsserts=function(t,e){const n=t.assets||{};let i=t;!0===(null==e?void 0:e.clone)&&(i=w(t));const o=t=>{t.forEach((t=>{if("image"===t.type&&t.detail.src){const e=t.detail.src,i=y(e);n[i]||(n[i]={type:"image",value:e}),t.detail.src=i}else if("svg"===t.type){const e=t.detail.svg,i=y(e);n[i]||(n[i]={type:"svg",value:e}),t.detail.svg=i}else if("html"===t.type){const e=t.detail.html,i=y(e);n[i]||(n[i]={type:"html",value:e}),t.detail.html=i}else if("group"===t.type&&Array.isArray(t.detail.children)){const e=t.detail.assets||{};Object.keys(e).forEach((t=>{n[t]||(n[t]=e[t])})),delete t.detail.assets,o(t.detail.children)}}))};return o(i.elements),i.assets=n,i},t.sortElementsViewVisiableInfoMap=function(t,e){const n={},i=[],o=e=>{const r={isVisibleInView:!0,isGroup:"group"===e.type,position:[...i]};let a=null;a=st(e,{groupQueue:Z(t,i)||[]}),n[e.uuid]={...r,originRectInfo:a,rangeRectInfo:E.angle(e.angle)?ct(a):a},"group"===e.type&&e.detail.children.forEach(((t,e)=>{i.push(e),o(t),i.pop()}))};return t.forEach(((t,e)=>{i.push(e),o(t),i.pop()})),ht(n,e)},t.throttle=function(t,e){let n=-1;return function(...i){n>=0||(n=setTimeout((()=>{t(...i),n=-1}),e))}},t.toColorHexNum=function(t){return parseInt(t.replace(/^\#/,"0x"))},t.toColorHexStr=function(t){return"#"+t.toString(16)},t.updateElementInList=function t(e,n,i){var o,r;let a=null;for(let l=0;l<i.length;l++){const s=i[l];if(s.uuid===e){"group"===s.type&&!0===(null==(o=s.operations)?void 0:o.deepResize)&&(n.w&&n.w>0||n.h&&n.h>0)&&At(s,{w:n.w,h:n.h}),Dt(s,n),a=s;break}"group"===s.type&&(a=t(e,n,(null==(r=null==s?void 0:s.detail)?void 0:r.children)||[]))}return a},t.updateElementInListByPosition=jt,t.updateViewVisibleInfoMapStatus=ht,t.vaildPoint=j,t.vaildTouchPoint=function(t){return!0===j(t)&&t.f>=0},t.validateElements=function t(e){let n=!0;if(Array.isArray(e)){const i=[];e.forEach((e=>{var o;"string"==typeof e.uuid&&e.uuid?i.includes(e.uuid)?(n=!1,console.warn(`Duplicate uuids: ${e.uuid}`)):i.push(e.uuid):(n=!1,console.warn("Element missing uuid",e)),"group"===e.type&&(n=t(null==(o=null==e?void 0:e.detail)?void 0:o.children))}))}return n},t.viewScale=function(t){const{scale:e,point:n,viewScaleInfo:i}=t,{offsetLeft:o,offsetTop:r}=i,a=e/i.scale,l=n.x,s=n.y;return{moveX:l-l*a+(o*a-o),moveY:s-s*a+(r*a-r)}},t.viewScroll=function(t){const{moveX:e=0,moveY:n=0,viewScaleInfo:i,viewSizeInfo:o}=t,{scale:r}=i,{width:a,height:l,contextWidth:s,contextHeight:c}=o;let h=i.offsetLeft,f=i.offsetRight,u=i.offsetTop,d=i.offsetBottom;return h+=e,u+=n,f=a-(s*r+h),d=l-(c*r+u),{scale:r,offsetTop:u,offsetLeft:h,offsetRight:f,offsetBottom:d}},Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),t}({});
1
+ var iDrawUtil=function(t){"use strict";var e,n,i,o,r,a,l,s=(t,e,n)=>{if(!e.has(t))throw TypeError("Cannot "+n)},c=(t,e,n)=>(s(t,e,"read from private field"),n?n.call(t):e.get(t)),h=(t,e,n)=>{if(e.has(t))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(t):e.set(t,n)},f=(t,e,n,i)=>(s(t,e,"write to private field"),i?i.call(t,n):e.set(t,n),n),u=(t,e,n)=>(s(t,e,"access private method"),n);function d(t){return"string"==typeof t&&(/^\#([0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(t)||/^[a-z]{1,}$/i.test(t))}const g={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4","indianred ":"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};function m(){function t(){return(65536*(1+Math.random())|0).toString(16).substring(1)}return`${t()}${t()}-${t()}-${t()}-${t()}-${t()}${t()}${t()}`}function y(t){let e=0;for(let n=0;n<t.length;n++)e+=t.charCodeAt(n)*t.charCodeAt(n)*n*n;return e.toString(16).substring(0,4)}function x(t){const e=t.length,n=Math.floor(e/2),i=t.substring(0,4).padEnd(4,"0"),o=t.substring(0,4).padEnd(4,"0");return`@assets/${y(e.toString(16).padEnd(4,i))}${y(t.substring(n-4,n).padEnd(4,i)).padEnd(4,"f")}-${y(t.substring(n-8,n-4).padEnd(4,i)).padEnd(4,"f")}-${y(t.substring(n-12,n-8).padEnd(4,i)).padEnd(4,"f")}-${y(t.substring(n-16,n-12).padEnd(4,o)).padEnd(4,"f")}-${y(t.substring(n,n+4).padEnd(4,o)).padEnd(4,"f")}${y(t.substring(n+4,n+8).padEnd(4,o)).padEnd(4,"f")}${y(o.padEnd(4,i).padEnd(4,o))}`}function p(t){return/^@assets\/[0-9a-z]{8,8}\-[0-9a-z]{4,4}\-[0-9a-z]{4,4}\-[0-9a-z]{4,4}\-[0-9a-z]{12,12}$/.test(`${t}`)}function v(t){return function t(e){const n=function(t){return Object.prototype.toString.call(t).replace(/[\]|\[]{1,1}/gi,"").split(" ")[1]}(e);if(["Null","Number","String","Boolean","Undefined"].indexOf(n)>=0)return e;if("Array"===n){const n=[];return e.forEach((e=>{n.push(t(e))})),n}if("Object"===n){const n={};Object.keys(e).forEach((i=>{n[i]=t(e[i])}));return Object.getOwnPropertySymbols(e).forEach((i=>{n[i]=t(e[i])})),n}}(t)}function w(t){return(Object.prototype.toString.call(t)||"").replace(/(\[object|\])/gi,"").trim()}const b={type(t,e){const n=w(t);return!0===e?n.toLocaleLowerCase():n},array:t=>"Array"===w(t),json:t=>"Object"===w(t),function:t=>"Function"===w(t),asyncFunction:t=>"AsyncFunction"===w(t),boolean:t=>"Boolean"===w(t),string:t=>"String"===w(t),number:t=>"Number"===w(t),undefined:t=>"Undefined"===w(t),null:t=>"Null"===w(t),promise:t=>"Promise"===w(t)};const{Image:M}=window;function R(t){return new Promise(((e,n)=>{const i=new M;i.crossOrigin="anonymous",i.onload=function(){e(i)},i.onabort=n,i.onerror=n,i.src=t}))}function P(t){return"number"==typeof t&&(t>0||t<=0)}function I(t){return"number"==typeof t&&t>=0}function S(t){return"string"==typeof t&&/^(http:\/\/|https:\/\/|\.\/|\/)/.test(`${t}`)}function L(t){return"string"==typeof t&&/^(data:image\/)/.test(`${t}`)}const E={x:function(t){return P(t)},y:function(t){return P(t)},w:I,h:function(t){return"number"==typeof t&&t>=0},angle:function(t){return"number"==typeof t&&t>=-360&&t<=360},number:P,numberStr:function(t){return/^(-?\d+(?:\.\d+)?)$/.test(`${t}`)},borderWidth:function(t){return I(t)},borderRadius:function(t){return P(t)&&t>=0},color:function(t){return d(t)},imageSrc:function(t){return L(t)||S(t)},imageURL:S,imageBase64:L,svg:function(t){return"string"==typeof t&&/^(<svg[\s]{1,}|<svg>)/i.test(`${t}`.trim())&&/<\/[\s]{0,}svg>$/i.test(`${t}`.trim())},html:function(t){let e=!1;if("string"==typeof t){let n=document.createElement("div");n.innerHTML=t,n.children.length>0&&(e=!0),n=null}return e},text:function(t){return"string"==typeof t},fontSize:function(t){return P(t)&&t>0},lineHeight:function(t){return P(t)&&t>0},textAlign:function(t){return["center","left","right"].includes(t)},fontFamily:function(t){return"string"==typeof t&&t.length>0},fontWeight:function(t){return["bold"].includes(t)},strokeWidth:function(t){return P(t)&&t>0}};function $(t={}){const{borderColor:e,borderRadius:n,borderWidth:i}=t;return!(t.hasOwnProperty("borderColor")&&!E.color(e))&&(!(t.hasOwnProperty("borderRadius")&&!E.number(n))&&!(t.hasOwnProperty("borderWidth")&&!E.number(i)))}const A={attrs:function(t){const{x:e,y:n,w:i,h:o,angle:r}=t;return!!(E.x(e)&&E.y(n)&&E.w(i)&&E.h(o)&&E.angle(r))&&(r>=-360&&r<=360)},textDesc:function(t){const{text:e,color:n,fontSize:i,lineHeight:o,fontFamily:r,textAlign:a,fontWeight:l,background:s,strokeWidth:c,strokeColor:h}=t;return!!E.text(e)&&(!!E.color(n)&&(!!E.fontSize(i)&&(!(t.hasOwnProperty("background")&&!E.color(s))&&(!(t.hasOwnProperty("fontWeight")&&!E.fontWeight(l))&&(!(t.hasOwnProperty("lineHeight")&&!E.lineHeight(o))&&(!(t.hasOwnProperty("fontFamily")&&!E.fontFamily(r))&&(!(t.hasOwnProperty("textAlign")&&!E.textAlign(a))&&(!(t.hasOwnProperty("strokeWidth")&&!E.strokeWidth(c))&&(!(t.hasOwnProperty("strokeColor")&&!E.color(h))&&!!$(t))))))))))},rectDesc:function(t){const{background:e}=t;return!(t.hasOwnProperty("background")&&!E.color(e))&&!!$(t)},circleDesc:function(t){const{background:e,borderColor:n,borderWidth:i}=t;return!(t.hasOwnProperty("background")&&!E.color(e))&&(!(t.hasOwnProperty("borderColor")&&!E.color(n))&&!(t.hasOwnProperty("borderWidth")&&!E.number(i)))},imageDesc:function(t){const{src:e}=t;return!!E.imageSrc(e)},svgDesc:function(t){const{svg:e}=t;return!!E.svg(e)},htmlDesc:function(t){const{html:e}=t;return!!E.html(e)}};class C{constructor(t,i){h(this,e,void 0),h(this,n,void 0),f(this,e,t),f(this,n,{devicePixelRatio:1,offscreenCanvas:null,...i}),this.$resetFont()}$undoPixelRatio(t){return t/c(this,n).devicePixelRatio}$doPixelRatio(t){return c(this,n).devicePixelRatio*t}$getContext(){return c(this,e)}$setContext(t){f(this,e,t)}$setFont(t){const n=[];t.fontWeight&&n.push(`${t.fontWeight}`),n.push(`${this.$doPixelRatio(t.fontSize||12)}px`),n.push(`${t.fontFamily||"sans-serif"}`),c(this,e).font=`${n.join(" ")}`}$resetFont(){this.$setFont({fontSize:12,fontFamily:"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'",fontWeight:"400"})}$getOffscreenCanvas(){return c(this,n).offscreenCanvas}$resize(t){const{width:i,height:o,devicePixelRatio:r,resetStyle:a}=t,{canvas:l}=c(this,e);l.width=i*r,l.height=o*r,f(this,n,{...c(this,n),devicePixelRatio:r}),!0===a&&(l.style.width=`${i}px`,l.style.height=`${o}px`)}$getSize(){const{devicePixelRatio:t}=c(this,n),{width:i,height:o}=c(this,e).canvas;return{width:i/t,height:o/t,devicePixelRatio:t}}get canvas(){return c(this,e).canvas}get fillStyle(){return c(this,e).fillStyle}set fillStyle(t){c(this,e).fillStyle=t}get strokeStyle(){return c(this,e).strokeStyle}set strokeStyle(t){c(this,e).strokeStyle=t}get lineWidth(){return this.$undoPixelRatio(c(this,e).lineWidth)}set lineWidth(t){c(this,e).lineWidth=this.$doPixelRatio(t)}get textAlign(){return c(this,e).textAlign}set textAlign(t){c(this,e).textAlign=t}get textBaseline(){return c(this,e).textBaseline}set textBaseline(t){c(this,e).textBaseline=t}get globalAlpha(){return c(this,e).globalAlpha}set globalAlpha(t){c(this,e).globalAlpha=t}get shadowColor(){return c(this,e).shadowColor}set shadowColor(t){c(this,e).shadowColor=t}get shadowOffsetX(){return this.$undoPixelRatio(c(this,e).shadowOffsetX)}set shadowOffsetX(t){c(this,e).shadowOffsetX=this.$doPixelRatio(t)}get shadowOffsetY(){return this.$undoPixelRatio(c(this,e).shadowOffsetY)}set shadowOffsetY(t){c(this,e).shadowOffsetY=this.$doPixelRatio(t)}get shadowBlur(){return this.$undoPixelRatio(c(this,e).shadowBlur)}set shadowBlur(t){c(this,e).shadowBlur=this.$doPixelRatio(t)}get lineCap(){return c(this,e).lineCap}set lineCap(t){c(this,e).lineCap=t}get globalCompositeOperation(){return c(this,e).globalCompositeOperation}set globalCompositeOperation(t){c(this,e).globalCompositeOperation=t}fill(...t){return c(this,e).fill(...t)}arc(t,n,i,o,r,a){return c(this,e).arc(this.$doPixelRatio(t),this.$doPixelRatio(n),this.$doPixelRatio(i),o,r,a)}rect(t,n,i,o){return c(this,e).rect(this.$doPixelRatio(t),this.$doPixelRatio(n),this.$doPixelRatio(i),this.$doPixelRatio(o))}fillRect(t,n,i,o){return c(this,e).fillRect(this.$doPixelRatio(t),this.$doPixelRatio(n),this.$doPixelRatio(i),this.$doPixelRatio(o))}clearRect(t,n,i,o){return c(this,e).clearRect(this.$doPixelRatio(t),this.$doPixelRatio(n),this.$doPixelRatio(i),this.$doPixelRatio(o))}beginPath(){return c(this,e).beginPath()}closePath(){return c(this,e).closePath()}lineTo(t,n){return c(this,e).lineTo(this.$doPixelRatio(t),this.$doPixelRatio(n))}moveTo(t,n){return c(this,e).moveTo(this.$doPixelRatio(t),this.$doPixelRatio(n))}arcTo(t,n,i,o,r){return c(this,e).arcTo(this.$doPixelRatio(t),this.$doPixelRatio(n),this.$doPixelRatio(i),this.$doPixelRatio(o),this.$doPixelRatio(r))}getLineDash(){return c(this,e).getLineDash()}setLineDash(t){const n=t.map((t=>this.$doPixelRatio(t)));return c(this,e).setLineDash(n)}stroke(t){return t?c(this,e).stroke(t):c(this,e).stroke()}translate(t,n){return c(this,e).translate(this.$doPixelRatio(t),this.$doPixelRatio(n))}rotate(t){return c(this,e).rotate(t)}drawImage(...t){const n=t[0],i=t[1],o=t[2],r=t[3],a=t[4],l=t[t.length-4],s=t[t.length-3],h=t[t.length-2],f=t[t.length-1];return 9===t.length?c(this,e).drawImage(n,this.$doPixelRatio(i),this.$doPixelRatio(o),this.$doPixelRatio(r),this.$doPixelRatio(a),this.$doPixelRatio(l),this.$doPixelRatio(s),this.$doPixelRatio(h),this.$doPixelRatio(f)):c(this,e).drawImage(n,this.$doPixelRatio(l),this.$doPixelRatio(s),this.$doPixelRatio(h),this.$doPixelRatio(f))}createPattern(t,n){return c(this,e).createPattern(t,n)}measureText(t){return c(this,e).measureText(t)}fillText(t,n,i,o){return void 0!==o?c(this,e).fillText(t,this.$doPixelRatio(n),this.$doPixelRatio(i),this.$doPixelRatio(o)):c(this,e).fillText(t,this.$doPixelRatio(n),this.$doPixelRatio(i))}strokeText(t,n,i,o){return void 0!==o?c(this,e).strokeText(t,this.$doPixelRatio(n),this.$doPixelRatio(i),this.$doPixelRatio(o)):c(this,e).strokeText(t,this.$doPixelRatio(n),this.$doPixelRatio(i))}save(){c(this,e).save()}restore(){c(this,e).restore()}scale(t,n){c(this,e).scale(t,n)}circle(t,n,i,o,r,a,l,s){c(this,e).ellipse(this.$doPixelRatio(t),this.$doPixelRatio(n),this.$doPixelRatio(i),this.$doPixelRatio(o),r,a,l,s)}isPointInPath(t,n){return c(this,e).isPointInPath(this.$doPixelRatio(t),this.$doPixelRatio(n))}clip(...t){return c(this,e).clip(...t)}setTransform(t,n,i,o,r,a){return c(this,e).setTransform(t,n,i,o,r,a)}getTransform(){return c(this,e).getTransform()}createLinearGradient(t,n,i,o){return c(this,e).createLinearGradient(this.$doPixelRatio(t),this.$doPixelRatio(n),this.$doPixelRatio(i),this.$doPixelRatio(o))}createRadialGradient(t,n,i,o,r,a){return c(this,e).createRadialGradient(this.$doPixelRatio(t),this.$doPixelRatio(n),this.$doPixelRatio(i),this.$doPixelRatio(o),this.$doPixelRatio(r),this.$doPixelRatio(a))}createConicGradient(t,n,i){return c(this,e).createConicGradient(t,this.$doPixelRatio(n),this.$doPixelRatio(i))}}function z(t){const{width:e,height:n,ctx:i,devicePixelRatio:o}=t;let r=i;if(!r){const t=document.createElement("canvas");t.width=e*o,t.height=n*o,r=t.getContext("2d")}return new C(r,t)}function k(t){const{width:e,height:n,devicePixelRatio:i}=t,o=new OffscreenCanvas(e*i,n*i),r=o.getContext("2d").canvas.getContext("2d");return new C(r,{devicePixelRatio:i,offscreenCanvas:o})}e=new WeakMap,n=new WeakMap;function O(t,e){const n=(t.x-e.x)*(t.x-e.x)+(t.y-e.y)*(t.y-e.y);return 0===n?n:Math.sqrt(n)}function T(t,e){return t.x===e.x&&t.y===e.y&&t.t===e.t}function D(t){return t>=0||t<0}function j(t){return D(t.x)&&D(t.y)&&t.t>0}function V(t,e){return{x:t.x+(e.x-t.x)/2,y:t.y+(e.y-t.y)/2}}i=new WeakMap;function W(t){return t/180*Math.PI}function F(t,e,n,i){const o=W(e||0);n&&(o>0||o<0)&&(t.translate(n.x,n.y),t.rotate(o),t.translate(-n.x,-n.y)),i(t),n&&(o>0||o<0)&&(t.translate(n.x,n.y),t.rotate(-o),t.translate(-n.x,-n.y))}function B(t){return{x:t.x+t.w/2,y:t.y+t.h/2}}function N(t){const e=Math.min(t[0].x,t[1].x,t[2].x,t[3].x),n=Math.min(t[0].y,t[1].y,t[2].y,t[3].y);return B({x:e,y:n,w:Math.max(t[0].x,t[1].x,t[2].x,t[3].x)-e,h:Math.max(t[0].y,t[1].y,t[2].y,t[3].y)-n})}function H(t,e){const n=e.x-t.x,i=e.y-t.y;if(0===n){if(i<0)return 0;if(i>0)return Math.PI}else if(0===i){if(n<0)return 3*Math.PI/2;if(n>0)return Math.PI/2}return n>0&&i<0?Math.atan(Math.abs(n)/Math.abs(i)):n>0&&i>0?Math.PI-Math.atan(Math.abs(n)/Math.abs(i)):n<0&&i>0?Math.PI+Math.atan(Math.abs(n)/Math.abs(i)):n<0&&i<0?2*Math.PI-Math.atan(Math.abs(n)/Math.abs(i)):0}function Q(t,e,n){let i=H(t,e)+n;i>2*Math.PI?i-=2*Math.PI:i<0-2*Math.PI&&(i+=2*Math.PI),i<0&&(i+=2*Math.PI);const o=O(t,e);let r=0,a=0;return 0===i?(r=0,a=0-o):i>0&&i<Math.PI/2?(r=Math.sin(i)*o,a=0-Math.cos(i)*o):i===Math.PI/2?(r=o,a=0):i>Math.PI/2&&i<Math.PI?(r=Math.sin(Math.PI-i)*o,a=Math.cos(Math.PI-i)*o):i===Math.PI?(r=0,a=o):i>Math.PI&&i<1.5*Math.PI?(r=0-Math.sin(i-Math.PI)*o,a=Math.cos(i-Math.PI)*o):i===1.5*Math.PI?(r=0-o,a=0):i>1.5*Math.PI&&i<2*Math.PI?(r=0-Math.sin(2*Math.PI-i)*o,a=0-Math.cos(2*Math.PI-i)*o):i===2*Math.PI&&(r=0,a=0-o),r+=t.x,a+=t.y,{x:r,y:a}}function G(t,e,n){const{x:i,y:o,w:r,h:a}=t;let l={x:i,y:o},s={x:i+r,y:o},c={x:i+r,y:o+a},h={x:i,y:o+a};if(n&&(n>0||n<0)){const t=W(X(n));l=Q(e,l,t),s=Q(e,s,t),c=Q(e,c,t),h=Q(e,h,t)}return[l,s,c,h]}function U(t){const{angle:e=0}=t;return G(t,B(t),e)}function Y(t,e,n){return[Q(t,{x:e[0].x,y:e[0].y},n),Q(t,{x:e[1].x,y:e[1].y},n),Q(t,{x:e[2].x,y:e[2].y},n),Q(t,{x:e[3].x,y:e[3].y},n)]}function X(t){if(!(t>0||t<0)||0===t)return 0;let e=t%360;return e<0&&(e+=360),e}function q(t,e){const n={x:0,y:0,w:0,h:0};t.forEach((t=>{const e={x:t.x,y:t.y,w:t.w,h:t.h,angle:t.angle};if(e.angle&&(e.angle>0||e.angle<0)){const t=U(e);if(4===t.length){const n=[t[0].x,t[1].x,t[2].x,t[3].x],i=[t[0].y,t[1].y,t[2].y,t[3].y];e.x=Math.min(...n),e.y=Math.min(...i),e.w=Math.abs(Math.max(...n)-Math.min(...n)),e.h=Math.abs(Math.max(...i)-Math.min(...i))}}const i=Math.min(e.x,n.x),o=Math.min(e.y,n.y),r=Math.max(e.x+e.w,n.x+n.w),a=Math.max(e.y+e.h,n.y+n.h);n.x=i,n.y=o,n.w=Math.abs(r-i),n.h=Math.abs(a-o)})),(null==e?void 0:e.extend)&&(n.x=Math.min(n.x,0),n.y=Math.min(n.y,0));const i={contextWidth:n.w,contextHeight:n.h};return(null==e?void 0:e.viewWidth)&&(null==e?void 0:e.viewHeight)&&(null==e?void 0:e.viewWidth)>0&&(null==e?void 0:e.viewHeight)>0&&(e.viewWidth>n.x+n.w&&(i.contextWidth=e.viewWidth-n.x),e.viewHeight>n.y+n.h&&(i.contextHeight=e.viewHeight-n.y)),i}function Z(t,e){var n;const i=[];let o=t;if(e.length>1)for(let t=0;t<e.length-1;t++){const r=o[e[t]];if("group"!==(null==r?void 0:r.type)||!Array.isArray(null==(n=null==r?void 0:r.detail)?void 0:n.children))return null;i.push(r),o=r.detail.children}return i}function J(t,e){let n=null,i=e;for(let e=0;e<t.length;e++){const o=i[t[e]];if(e<t.length-1&&"group"===o.type)i=o.detail.children;else{if(e!==t.length-1)break;n=o}}return n}function K(t,e){const n=[];let i=!1;const o=e=>{var r;for(let a=0;a<e.length&&!0!==i;a++){n.push(a);const l=e[a];if(l.uuid===t){i=!0;break}if("group"===l.type&&o((null==(r=null==l?void 0:l.detail)?void 0:r.children)||[]),i)break;n.pop()}};return o(e),n}function _(t,e){const n=t.x,i=t.y,o=t.x+t.w,r=t.y+t.h,a=e.x,l=e.y,s=e.x+e.w,c=e.y+e.h;return n<=s&&o>=a&&i<=c&&r>=l}function tt(t){const{x:e,y:n,h:i,w:o}=t;return[{x:e,y:n},{x:e+o,y:n},{x:e+o,y:n+i},{x:e,y:n+i}]}function et(t){const{x:e,y:n,w:i,h:o,angle:r=0}=t;return 0===r?tt(t):G(t,B({x:e,y:n,w:i,h:o,angle:r}),r)}function nt(t){const e=[];let n=0,i=0;const o=[],r=[...t];for(let t=0;t<r.length;t++){const{x:a,y:l,w:s,h:c,angle:h=0}=r[t];let f;if(n+=a,i+=l,0===t){const t={x:n,y:i,w:s,h:c,angle:h};f=et({x:a,y:l,w:s,h:c,angle:h}),o.push({center:B(t),angle:h,radian:W(h)})}else{f=tt({x:n,y:i,w:s,h:c,angle:h});for(let t=0;t<o.length;t++){const{center:e,radian:n}=o[t];f=Y(e,f,n)}const t=N(f);if(h>0||h<0){f=Y(t,f,W(h))}o.push({center:t,angle:h,radian:W(h)})}e.push(f)}return e}function it(t,e){const{groupQueue:n}=e;if(!(n.length>0))return[et(t)];return nt([...n,t])}function ot(t,e){return it(t,e).pop()||null}function rt(t,e){const{viewScaleInfo:n}=e,{x:i,y:o,w:r,h:a,angle:l}=t,{scale:s,offsetTop:c,offsetLeft:h}=n;return{x:i*s+h,y:o*s+c,w:r*s,h:a*s,angle:l}}function at(t,e){const{viewScaleInfo:n}=e,{x:i,y:o}=t,{scale:r,offsetTop:a,offsetLeft:l}=n;return{x:i*r+l,y:o*r+a}}function lt(t,e){const{context2d:n,element:i,viewScaleInfo:o}=e,{angle:r=0}=i,{x:a,y:l,w:s,h:c}=rt(i,{viewScaleInfo:o}),h=U({x:a,y:l,w:s,h:c,angle:r});if(h.length>=2){n.beginPath(),n.moveTo(h[0].x,h[0].y);for(let t=1;t<h.length;t++)n.lineTo(h[t].x,h[t].y);n.closePath()}return!!n.isPointInPath(t.x,t.y)}function st(t,e,n){const i=[e[0].x,e[1].x,e[2].x,e[3].x],o=[e[0].y,e[1].y,e[2].y,e[3].y],r=Math.min(...i),a=Math.max(...i),l=Math.min(...o),s=Math.max(...o);return t.x>r&&t.x<a&&t.y>l&&t.y<s||!0===(null==n?void 0:n.includeBorder)&&(t.x===r||t.x===a||t.y===l||t.y===s)}function ct(t,e){const{groupQueue:n}=e,i=ot(t,{groupQueue:n}),o=V(i[0],i[1]),r=V(i[1],i[2]),a=V(i[2],i[3]),l=V(i[3],i[0]),s=i[0],c=i[1],h=i[2],f=i[3],u=Math.max(s.x,c.x,h.x,f.x),d=Math.max(s.y,c.y,h.y,f.y);return{center:{x:(u+Math.min(s.x,c.x,h.x,f.x))/2,y:(d+Math.min(s.y,c.y,h.y,f.y))/2},topLeft:s,topRight:c,bottomLeft:f,bottomRight:h,top:o,right:r,left:l,bottom:a}}function ht(t){const e=Math.max(t.topLeft.x,t.topRight.x,t.bottomRight.x,t.bottomLeft.x),n=Math.max(t.topLeft.y,t.topRight.y,t.bottomRight.y,t.bottomLeft.y),i=Math.min(t.topLeft.x,t.topRight.x,t.bottomRight.x,t.bottomLeft.x),o=Math.min(t.topLeft.y,t.topRight.y,t.bottomRight.y,t.bottomLeft.y),r={x:t.center.x,y:t.center.y},a={x:i,y:o},l={x:e,y:o},s={x:e,y:n},c={x:i,y:n},h=V(a,l),f=V(c,s),u=V(a,c);return{center:r,topLeft:a,topRight:l,bottomLeft:c,bottomRight:s,top:h,right:V(l,s),left:u,bottom:f}}function ft(t,e){const n=ut(e);let i=0,o=0;return Object.keys(t).forEach((e=>{const r=t[e];r.isVisibleInView=function(t,e){const n=Math.min(t.topLeft.x,t.topRight.x,t.bottomLeft.x,t.bottomRight.x),i=Math.max(t.topLeft.x,t.topRight.x,t.bottomLeft.x,t.bottomRight.x),o=Math.min(t.topLeft.y,t.topRight.y,t.bottomLeft.y,t.bottomRight.y),r=Math.max(t.topLeft.y,t.topRight.y,t.bottomLeft.y,t.bottomRight.y),a=Math.min(e.topLeft.x,e.topRight.x,e.bottomLeft.x,e.bottomRight.x),l=Math.max(e.topLeft.x,e.topRight.x,e.bottomLeft.x,e.bottomRight.x),s=Math.min(e.topLeft.y,e.topRight.y,e.bottomLeft.y,e.bottomRight.y),c=Math.max(e.topLeft.y,e.topRight.y,e.bottomLeft.y,e.bottomRight.y);return n<=l&&i>=a&&o<=c&&r>=s||l<=r&&l>=r&&l<=r&&l>=r}(r.rangeRectInfo,n),r.isVisibleInView?i++:o++})),{viewVisibleInfoMap:t,visibleCount:i,invisibleCount:o}}function ut(t){const{viewScaleInfo:e,viewSizeInfo:n}=t,{scale:i,offsetTop:o,offsetLeft:r}=e,{width:a,height:l}=n,s=0-r/i,c=0-o/i,h=a/i,f=l/i,u=B({x:s,y:c,w:h,h:f});return{center:u,topLeft:{x:s,y:c},topRight:{x:s+h,y:c},bottomLeft:{x:s,y:c+f},bottomRight:{x:s+h,y:c+f},left:{x:s,y:u.y},top:{x:u.x,y:c},right:{x:s+h,y:u.y},bottom:{x:u.x,y:c+f}}}function dt(t,e){const{x:n,y:i}=t,{size:o,angle:r}=e;return{x:n-o/2,y:i-o/2,w:o,h:o,angle:r}}o=new WeakMap,r=new WeakMap,a=new WeakSet,l=function(){return v(c(this,r))};const gt=/([astvzqmhlc])([^astvzqmhlc]*)/gi,mt=/(-?\d+(?:\.\d+)?)/gi;const yt=/\s([^'"/\s><]+?)[\s/>]|([^\s=]+)=\s?(".*?"|'.*?')/g,xt=/<[a-zA-Z0-9\-\!\/](?:"[^"]*"|'[^']*'|[^'">])*>/g,pt=/^\s*$/,vt={};function wt(t){const e={type:"element",name:"",isVoid:!1,attributes:{},children:[]},n=t.match(/<\/?([^\s]+?)[/\s>]/);if(n&&(e.name=n[1],(vt[n[1]]||"/"===t.charAt(t.length-2))&&(e.isVoid=!0),e.name.startsWith("!--"))){const e=t.indexOf("--\x3e");return{type:"comment",name:null,attributes:{},children:[],isVoid:!1,comment:-1!==e?t.slice(4,e):""}}const i=new RegExp(yt);let o=null;for(;o=i.exec(t),null!==o;)if(o[0].trim())if(o[1]){const t=o[1].trim();let n=[t,""];t.indexOf("=")>-1&&(n=t.split("=")),e.attributes[n[0]]=n[1],i.lastIndex--}else o[2]&&(e.attributes[o[2]]=o[3].trim().substring(1,o[3].length-1));return e}function bt(t,e){switch(e.type){case"text":return t+e.textContent;case"element":return t+="<"+e.name+(e.attributes?function(t){const e=[];for(let n in t)e.push(n+'="'+t[n]+'"');return e.length?" "+e.join(" "):""}(e.attributes):"")+(e.isVoid?"/>":">"),e.isVoid?t:t+e.children.reduce(bt,"")+"</"+e.name+">";case"comment":return t+="\x3c!--"+e.comment+"--\x3e"}}function Mt(t,e){let n=2;return void 0!==(null==e?void 0:e.decimalPlaces)&&(null==e?void 0:e.decimalPlaces)>=0&&(n=e.decimalPlaces),parseFloat(t.toFixed(n))}function Rt(t){return t[1]!=-1*t[3]||t[4]!=t[0]||t[0]*t[4]-t[3]*t[1]!=1?null:Math.acos(t[0])}const Pt="Text Element";function It(){return{boxSizing:"border-box",borderWidth:0,borderColor:"#000000",shadowColor:"#000000",borderRadius:0,borderDash:[],shadowOffsetX:0,shadowOffsetY:0,shadowBlur:0,opacity:1,color:"#000000",textAlign:"left",verticalAlign:"top",fontSize:16,fontFamily:"sans-serif",fontWeight:400,overflow:"hidden"}}function St(){return{background:"#D9D9D9"}}const Lt={boxSizing:"border-box",borderWidth:0,borderColor:"#000000",shadowColor:"#000000",borderRadius:0,borderDash:[],shadowOffsetX:0,shadowOffsetY:0,shadowBlur:0,opacity:1,color:"#000000",textAlign:"left",verticalAlign:"top",fontSize:16,fontFamily:"sans-serif",fontWeight:400,overflow:"hidden"};const Et=t=>Mt(t,{decimalPlaces:4});function $t(t,e){const{detail:n}=t,{xRatio:i,yRatio:o,maxRatio:r}=e,a=(i+o)/2,{borderWidth:l,borderRadius:s,borderDash:c,shadowOffsetX:h,shadowOffsetY:f,shadowBlur:u}=n;if("number"==typeof l)n.borderWidth=Et(l*a);else if(Array.isArray(n.borderWidth)){const t=l;n.borderWidth=[Et(t[0]*o),Et(t[1]*i),Et(t[2]*o),Et(t[3]*i)]}if("number"==typeof s)n.borderRadius=Et(s*a);else if(Array.isArray(n.borderRadius)){const t=s;n.borderRadius=[t[0]*i,t[1]*i,t[2]*o,t[3]*o]}Array.isArray(c)&&c.forEach(((t,e)=>{n.borderDash[e]=Et(t*r)})),"number"==typeof h&&(n.shadowOffsetX=Et(h*r)),"number"==typeof f&&(n.shadowOffsetX=Et(f*r)),"number"==typeof u&&(n.shadowOffsetX=Et(u*r))}function At(t,e){const{type:n}=t;!function(t,e){const{xRatio:n,yRatio:i}=e,{x:o,y:r,w:a,h:l}=t;t.x=Et(o*n),t.y=Et(r*i),t.w=Et(a*n),t.h=Et(l*i),$t(t,e)}(t,e),"circle"===n||("text"===n?function(t,e){const{minRatio:n,maxRatio:i}=e,{fontSize:o,lineHeight:r}=t.detail,a=(n+i)/2;o&&o>0&&(t.detail.fontSize=Et(o*a)),r&&r>0&&(t.detail.lineHeight=Et(r*a))}(t,e):"image"===n||"svg"===n||"html"===n||"path"===n||"group"===n&&Array.isArray(t.detail.children)&&t.detail.children.forEach((t=>{At(t,e)})))}function Ct(t,e){const n=e.w&&e.w>0?e.w:t.w,i=e.h&&e.h>0?e.h:t.h,o=n/t.w,r=i/t.h;if(o===r&&1===o)return t;const a=Math.min(o,r),l=Math.max(o,r);t.w=n,t.h=i;const s={xRatio:o,yRatio:r,minRatio:a,maxRatio:l};return"group"===t.type&&Array.isArray(t.detail.children)&&t.detail.children.forEach((t=>{At(t,s)})),$t(t,s),t}const zt=200,kt=200;function Ot(t,e,n){let i=!1;if(1===e.length){const o=e[0];n.splice(o,0,t),i=!0}else if(e.length>1){let o=n;for(let n=0;n<e.length;n++){const r=o[e[n]];if(n===e.length-1){const r=e[n];o.splice(r,0,t),i=!0}else{if(!(n<e.length-1&&"group"===r.type))break;o=r.detail.children}}}return i}function Tt(t,e){let n=!1;if(1===t.length){const i=t[0];e.splice(i,1),n=!0}else if(t.length>1){let i=e;for(let e=0;e<t.length;e++){const o=i[t[e]];if(e===t.length-1){const o=t[e];i.splice(o,1),n=!0}else{if(!(e<t.length-1&&"group"===o.type))break;i=o.detail.children}}}return n}function Dt(t,e){const n=[...e.from],i=[...e.to];if(0===n.length||0===i.length)return{elements:t,from:n,to:i};if(n.length<=i.length)for(let e=0;e<n.length;e++)if(i[e]!==n[e]);else if(e===n.length-1)return{elements:t,from:n,to:i};const o=J(n,t);if(o){if(!Ot(o,i,t))return{elements:t,from:n,to:i};let e=-1;for(let t=0;t<n.length&&i[t]>=0;t++)i[t]!==n[t]&&i[t]<n[t]&&t==i.length-1&&(e=t);e>=0&&(n[e]=n[e]+1),Tt(n,t)}return{elements:t,from:n,to:i}}function jt(t,e){var n;const i=Object.keys(e);for(let o=0;o<i.length;o++){const r=i[o];["x","y","w","h","angle","name"].includes(r)?t[r]=e[r]:["detail","operations"].includes(r)&&(b.json(e[r])?((null==t?void 0:t.hasOwnProperty(r))||(t[r]={}),b.json(t[r])&&(t[r]={...t[r],...e[r]})):b.array(e[r])&&((null==t?void 0:t.hasOwnProperty(r))||(t[r]=[]),b.array(t[r])&&(null==(n=null==e?void 0:e[r])||n.forEach(((e,n)=>{t[r][n]=e})),t[r]=[...t[r],...e[r]])))}return t}function Vt(t,e,n){var i;const o=J(t,n);return o&&("group"===o.type&&!0===(null==(i=o.operations)?void 0:i.deepResize)&&(e.w&&e.w>0||e.h&&e.h>0)&&Ct(o,{w:e.w,h:e.h}),jt(o,e)),o}function Wt(t,e,n=void 0){const i=e.split(".").reduce(((t,e)=>Object(t)[e]),t);return void 0===i?n:i}function Ft(t,e,n){const i=e.split(".");return"object"!=typeof t||i.reduce(((t,e,i,o)=>i===o.length-1?(t[e]=n,null):(e in t||(t[e]=/^[0-9]{1,}$/.test(o[i+1])?[]:{}),t[e])),t),t}return t.Context2D=C,t.EventEmitter=class{constructor(){h(this,i,void 0),f(this,i,new Map)}on(t,e){if(c(this,i).has(t)){const n=c(this,i).get(t)||[];null==n||n.push(e),c(this,i).set(t,n)}else c(this,i).set(t,[e])}off(t,e){if(c(this,i).has(t)){const n=c(this,i).get(t);if(Array.isArray(n))for(let t=0;t<(null==n?void 0:n.length);t++)if(n[t]===e){n.splice(t,1);break}c(this,i).set(t,n||[])}}trigger(t,e){const n=c(this,i).get(t);return!!Array.isArray(n)&&(n.forEach((t=>{t(e)})),!0)}has(t){if(c(this,i).has(t)){const e=c(this,i).get(t);if(Array.isArray(e)&&e.length>0)return!0}return!1}destroy(){this.clear()}clear(){c(this,i).clear()}},t.Store=class{constructor(t){h(this,a),h(this,o,void 0),h(this,r,void 0),f(this,r,v(t.defaultStorage)),f(this,o,u(this,a,l).call(this))}set(t,e){c(this,o)[t]=e}get(t){return c(this,o)[t]}getSnapshot(t){return!0===(null==t?void 0:t.deepClone)?v(c(this,o)):{...c(this,o)}}clear(){f(this,o,u(this,a,l).call(this))}destroy(){f(this,o,null)}},t.calcDistance=O,t.calcElementCenter=B,t.calcElementCenterFromVertexes=N,t.calcElementListSize=function(t){var e;const n={x:0,y:0,w:0,h:0};let i=null;for(let o=0;o<t.length;o++){const r=t[o];if(null==(e=null==r?void 0:r.operations)?void 0:e.invisible)continue;const a={x:r.x,y:r.y,w:r.w,h:r.h,angle:r.angle||0};if(a.angle&&(a.angle>0||a.angle<0)){const t=U(a);if(4===t.length){const e=[t[0].x,t[1].x,t[2].x,t[3].x],n=[t[0].y,t[1].y,t[2].y,t[3].y];a.x=Math.min(...e),a.y=Math.min(...n),a.w=Math.abs(Math.max(...e)-Math.min(...e)),a.h=Math.abs(Math.max(...n)-Math.min(...n))}}if(i){const t=Math.min(a.x,n.x),e=Math.min(a.y,n.y),i=Math.max(a.x+a.w,n.x+n.w),o=Math.max(a.y+a.h,n.y+n.h);n.x=t,n.y=e,n.w=Math.abs(i-t),n.h=Math.abs(o-e)}else n.x=a.x,n.y=a.y,n.w=a.w,n.h=a.h;i=a}return{x:Math.floor(n.x),y:Math.floor(n.y),w:Math.ceil(n.w),h:Math.ceil(n.h)}},t.calcElementOriginRectInfo=ct,t.calcElementQueueVertexesQueueInGroup=nt,t.calcElementSizeController=function(t,e){const{groupQueue:n,controllerSize:i,viewScaleInfo:o}=e,r=(i&&i>0?i:8)/o.scale,{x:a,y:l,w:s,h:c,angle:h=0}=t,f=[{uuid:m(),x:a,y:l,w:s,h:c,angle:h,type:"group",detail:{children:[]}},...n];let u=0;f.forEach((({angle:t=0})=>{u+=t}));const d=ot(t,{groupQueue:n}),g=ot({x:a-2*r,y:l-2*r,h:c+4*r,w:s+4*r,angle:h},{groupQueue:[...n]}),y=V(d[0],d[1]),x=V(d[1],d[2]),p=V(d[2],d[3]),v=V(d[3],d[0]),w=d[0],b=d[1],M=d[2],R=d[3],P=dt(y,{size:r,angle:u}),I=dt(x,{size:r,angle:u}),S=dt(p,{size:r,angle:u}),L=dt(v,{size:r,angle:u}),E=dt(w,{size:r,angle:u}),$=dt(b,{size:r,angle:u}),A=dt(R,{size:r,angle:u}),C=dt(M,{size:r,angle:u}),z=et(E),k=et($),O=et(A),T=et(C),D=[z[1],k[0],k[3],z[2]],j=[k[3],k[2],T[1],T[0]],W=[O[1],T[0],T[3],O[2]],F=[z[3],z[2],O[1],O[0]],B=et(P),N=et(I),H=et(S),Q=et(L),G=V(g[0],g[1]);return{elementWrapper:d,left:{type:"left",vertexes:F,center:v},right:{type:"right",vertexes:j,center:x},top:{type:"top",vertexes:D,center:y},bottom:{type:"bottom",vertexes:W,center:p},topLeft:{type:"top-left",vertexes:z,center:w},topRight:{type:"top-right",vertexes:k,center:b},bottomLeft:{type:"bottom-left",vertexes:O,center:R},bottomRight:{type:"bottom-right",vertexes:T,center:M},leftMiddle:{type:"left-middle",vertexes:Q,center:v},rightMiddle:{type:"right-middle",vertexes:N,center:x},topMiddle:{type:"top-middle",vertexes:B,center:y},bottomMiddle:{type:"bottom-middle",vertexes:H,center:p},rotate:{type:"rotate",vertexes:et(dt(G,{size:r,angle:u})),center:G}}},t.calcElementVertexesInGroup=ot,t.calcElementVertexesQueueInGroup=it,t.calcElementViewRectInfo=function(t,e){const{groupQueue:n,viewScaleInfo:i,range:o}=e,r=ct(t,{groupQueue:n}),{center:a,top:l,bottom:s,left:c,right:h,topLeft:f,topRight:u,bottomLeft:d,bottomRight:g}=r,m={center:at(a,{viewScaleInfo:i}),topLeft:at(f,{viewScaleInfo:i}),topRight:at(u,{viewScaleInfo:i}),bottomLeft:at(d,{viewScaleInfo:i}),bottomRight:at(g,{viewScaleInfo:i}),top:at(l,{viewScaleInfo:i}),right:at(h,{viewScaleInfo:i}),left:at(c,{viewScaleInfo:i}),bottom:at(s,{viewScaleInfo:i})};if(!0===o){const t=Math.max(m.topLeft.x,m.topRight.x,m.bottomRight.x,m.bottomLeft.x),e=Math.max(m.topLeft.y,m.topRight.y,m.bottomRight.y,m.bottomLeft.y),n=Math.min(m.topLeft.x,m.topRight.x,m.bottomRight.x,m.bottomLeft.x),i=Math.min(m.topLeft.y,m.topRight.y,m.bottomRight.y,m.bottomLeft.y),o={x:m.center.x,y:m.center.y},r={x:n,y:i},a={x:t,y:i},l={x:t,y:e},s={x:n,y:e},c=V(r,a),h=V(s,l),f=V(r,s);return{center:o,topLeft:r,topRight:a,bottomLeft:s,bottomRight:l,top:c,right:V(a,l),left:f,bottom:h}}return m},t.calcElementViewRectInfoMap=function(t,e){const{groupQueue:n,viewScaleInfo:i}=e,o=ct(t,{groupQueue:n}),{center:r,top:a,bottom:l,left:s,right:c,topLeft:h,topRight:f,bottomLeft:u,bottomRight:d}=o,g={center:at(r,{viewScaleInfo:i}),topLeft:at(h,{viewScaleInfo:i}),topRight:at(f,{viewScaleInfo:i}),bottomLeft:at(u,{viewScaleInfo:i}),bottomRight:at(d,{viewScaleInfo:i}),top:at(a,{viewScaleInfo:i}),right:at(c,{viewScaleInfo:i}),left:at(s,{viewScaleInfo:i}),bottom:at(l,{viewScaleInfo:i})},m=Math.max(g.topLeft.x,g.topRight.x,g.bottomRight.x,g.bottomLeft.x),y=Math.max(g.topLeft.y,g.topRight.y,g.bottomRight.y,g.bottomLeft.y),x=Math.min(g.topLeft.x,g.topRight.x,g.bottomRight.x,g.bottomLeft.x),p=Math.min(g.topLeft.y,g.topRight.y,g.bottomRight.y,g.bottomLeft.y),v={x:g.center.x,y:g.center.y},w={x:x,y:p},b={x:m,y:p},M={x:m,y:y},R={x:x,y:y},P=V(w,b),I=V(R,M),S=V(w,R);return{originRectInfo:o,rangeRectInfo:{center:v,topLeft:w,topRight:b,bottomLeft:R,bottomRight:M,top:P,right:V(b,M),left:S,bottom:I}}},t.calcElementsContextSize=q,t.calcElementsViewInfo=function(t,e,n){const i=q(t,{viewWidth:e.width,viewHeight:e.height,extend:null==n?void 0:n.extend});return!0===(null==n?void 0:n.extend)&&(i.contextWidth=Math.max(i.contextWidth,e.contextWidth),i.contextHeight=Math.max(i.contextHeight,e.contextHeight)),{contextSize:i}},t.calcLayoutSizeController=function(t,e){const{controllerSize:n,viewScaleInfo:i}=e,o=n&&n>0?n:8,{x:r,y:a,w:l,h:s}=rt(t,{viewScaleInfo:i}),c=B({x:r,y:a,w:l,h:s}),h={x:c.x,y:a},f={x:r+l,y:c.y},u={x:c.x,y:a+s},d={x:r,y:c.y},g={x:r,y:a},m={x:r+l,y:a},y={x:r+l,y:a+s},x={x:r,y:a+s},p=dt(h,{size:o,angle:0}),v=dt(f,{size:o,angle:0}),w=dt(u,{size:o,angle:0}),b=dt(d,{size:o,angle:0}),M=dt(g,{size:o,angle:0}),R=dt(m,{size:o,angle:0}),P=dt(x,{size:o,angle:0}),I=dt(y,{size:o,angle:0}),S=et(M),L=et(R),E=et(P),$=et(I),A=[S[1],L[0],L[3],S[2]],C=[L[3],L[2],$[1],$[0]],z=[E[1],$[0],$[3],E[2]],k=[S[3],S[2],E[1],E[0]],O=et(p),T=et(v),D=et(w);return{left:{type:"left",vertexes:k,center:d},right:{type:"right",vertexes:C,center:f},top:{type:"top",vertexes:A,center:h},bottom:{type:"bottom",vertexes:z,center:u},topLeft:{type:"top-left",vertexes:S,center:g},topRight:{type:"top-right",vertexes:L,center:m},bottomLeft:{type:"bottom-left",vertexes:E,center:x},bottomRight:{type:"bottom-right",vertexes:$,center:y},leftMiddle:{type:"left-middle",vertexes:et(b),center:d},rightMiddle:{type:"right-middle",vertexes:T,center:f},topMiddle:{type:"top-middle",vertexes:O,center:h},bottomMiddle:{type:"bottom-middle",vertexes:D,center:u}}},t.calcRadian=function(t,e,n){const i=H(t,e),o=H(t,n);return null!==o&&null!==i?i>3*Math.PI/2&&o<Math.PI/2?o+(2*Math.PI-i):o>3*Math.PI/2&&i<Math.PI/2?i+(2*Math.PI-o):o-i:0},t.calcSpeed=function(t,e){return O(t,e)/Math.abs(e.t-t.t)},t.calcViewBoxSize=function(t,e){const{viewScaleInfo:n}=e,{scale:i}=n;let{borderRadius:o}=t.detail;const{boxSizing:r=Lt.boxSizing,borderWidth:a}=t.detail;Array.isArray(a)&&(o=0);let{x:l,y:s,w:c,h:h}=t,f=[0,0,0,0];if("number"==typeof o){const t=o*i;f=[t,t,t,t]}else Array.isArray(o)&&4===(null==o?void 0:o.length)&&(f=[o[0]*i,o[1]*i,o[2]*i,o[3]*i]);let u=0;return"number"==typeof a&&(u=(a||0)*i),"border-box"===r?(l=t.x+u/2,s=t.y+u/2,c=t.w-u,h=t.h-u):"content-box"===r?(l=t.x-u/2,s=t.y-u/2,c=t.w+u,h=t.h+u):(l=t.x,s=t.y,c=t.w,h=t.h),c=Math.max(c,1),h=Math.max(h,1),f=f.map((t=>Math.min(t,c/2,h/2))),{x:l,y:s,w:c,h:h,radiusList:f}},t.calcViewCenter=function(t){let e=0,n=0;if(t){const{viewScaleInfo:i,viewSizeInfo:o}=t,{offsetLeft:r,offsetTop:a,scale:l}=i,{width:s,height:c}=o;e=0-r+s/l/2,n=0-a+c/l/2}return{x:e,y:n}},t.calcViewCenterContent=function(t,e){var n,i,o,r,a,l,s,c,h,f;let u=0,d=0,g=1,m=(null==(i=null==(n=null==t?void 0:t.elements)?void 0:n[0])?void 0:i.x)||0,y=(null==(r=null==(o=null==t?void 0:t.elements)?void 0:o[0])?void 0:r.y)||0,x=(null==(l=null==(a=null==t?void 0:t.elements)?void 0:a[0])?void 0:l.w)||0,p=(null==(c=null==(s=null==t?void 0:t.elements)?void 0:s[0])?void 0:c.h)||0;const{width:v,height:w}=e.viewSizeInfo;if(t.layout&&"hidden"===(null==(f=null==(h=t.layout)?void 0:h.detail)?void 0:f.overflow)?(m=0,y=0,x=t.layout.w||0,p=t.layout.h||0):t.elements.forEach((t=>{const e={x:t.x,y:t.y,w:t.w,h:t.h,angle:t.angle};if(e.angle&&(e.angle>0||e.angle<0)){const t=U(e);if(4===t.length){const n=[t[0].x,t[1].x,t[2].x,t[3].x],i=[t[0].y,t[1].y,t[2].y,t[3].y];e.x=Math.min(...n),e.y=Math.min(...i),e.w=Math.abs(Math.max(...n)-Math.min(...n)),e.h=Math.abs(Math.max(...i)-Math.min(...i))}}const n=Math.min(e.x,m),i=Math.min(e.y,y),o=Math.max(e.x+e.w,m+x),r=Math.max(e.y+e.h,y+p);m=n,y=i,x=Math.abs(o-n),p=Math.abs(r-i)})),t.layout){const{x:e,y:n,w:i,h:o}=t.layout;E.x(e)&&E.y(n)&&E.w(i)&&E.h(o)&&(m=Math.min(m,e),y=Math.min(y,n),x=Math.max(x,i),p=Math.max(p,o))}if(x>0&&p>0){const t=Mt(v/x,{decimalPlaces:4}),e=Mt(w/p,{decimalPlaces:4});g=Math.min(t,e,1),u=(x*g-v)/2/g+m,d=(p*g-w)/2/g+y}return{offsetX:Mt(u,{decimalPlaces:0}),offsetY:Mt(d,{decimalPlaces:0}),scale:g}},t.calcViewElementSize=rt,t.calcViewPointSize=at,t.calcViewScaleInfo=function(t,e){const{scale:n,offsetX:i,offsetY:o}=t,{viewSizeInfo:r}=e,{width:a,height:l,contextWidth:s,contextHeight:c}=r,h=0-i*n,f=0-o*n;return{scale:n,offsetLeft:h,offsetTop:f,offsetRight:a-(s*n+h/n),offsetBottom:l-(c*n+f/n)}},t.calcViewVertexes=function(t,e){return[at(t[0],e),at(t[1],e),at(t[2],e),at(t[3],e)]},t.calcVisibleOriginCanvasRectInfo=ut,t.check=A,t.checkRectIntersect=_,t.colorNameToHex=function(t){const e=t.toLowerCase(),n=g[e];return"string"==typeof n?n:null},t.colorToCSS=function(t){let e="transparent";if("string"==typeof t)e=t;else if("linear-gradient"===(null==t?void 0:t.type)){const n=[];"number"==typeof t.angle?n.push(`${t.angle}deg`):n.push("180deg"),Array.isArray(t.stops)&&t.stops.forEach((t=>{n.push(`${t.color} ${100*t.offset}%`)})),e=`linear-gradient(${n.join(", ")})`}else if("radial-gradient"===(null==t?void 0:t.type)){const n=[];Array.isArray(t.stops)&&t.stops.forEach((t=>{n.push(`${t.color} ${100*t.offset}%`)})),e=`radial-gradient(circle, ${n.join(", ")})`}return e},t.colorToLinearGradientCSS=function(t){let e="transparent";if("string"==typeof t)e=t;else if("radial-gradient"===(null==t?void 0:t.type)||"linear-gradient"===(null==t?void 0:t.type)){const n=[];Array.isArray(t.stops)&&t.stops.length>0&&(t.stops.forEach(((e,i)=>{n.push(`${e.color} ${100*e.offset}%`),i===t.stops.length-1&&e.offset<1&&n.push(`${e.color} ${100*e.offset}%`)})),e=`linear-gradient(90deg, ${n.join(", ")})`)}return e},t.compose=function(t){return function(e,n){return function i(o){let r=t[o];o===t.length&&n&&(r=n);if(!r)return Promise.resolve();try{return Promise.resolve(r(e,i.bind(null,o+1)))}catch(t){return Promise.reject(t)}}(0)}},t.compressImage=function(t,e){let n=.5;const i=(null==e?void 0:e.type)||"image/png";return(null==e?void 0:e.radio)&&(null==e?void 0:e.radio)>0&&(null==e?void 0:e.radio)<=1&&(n=null==e?void 0:e.radio),new Promise(((e,o)=>{const r=new Image;r.addEventListener("load",(()=>{const{width:t,height:o}=r,a=t*n,l=o*n;let s=document.createElement("canvas");s.width=a,s.height=l;s.getContext("2d").drawImage(r,0,0,a,l);const c=s.toDataURL(i);s=null,e(c)})),r.addEventListener("error",(t=>{o(t)})),r.src=t}))},t.createAssetId=x,t.createBoardContent=function(t,e){const{width:n,height:i,devicePixelRatio:o,offscreen:r,createCustomContext2D:a}=e,l={width:n,height:i,devicePixelRatio:o},s=t.getContext("2d");if(a){const t=a(l),e=a(l),n=a(l),i=z({ctx:s,...l}),o=()=>{const{width:o,height:r}=t.$getSize();i.clearRect(0,0,o,r),i.drawImage(n.canvas,0,0,o,r),i.drawImage(t.canvas,0,0,o,r),i.drawImage(e.canvas,0,0,o,r),n.clearRect(0,0,o,r),t.clearRect(0,0,o,r),e.clearRect(0,0,o,r)};return{underContext:n,viewContext:t,helperContext:e,boardContext:i,drawView:o}}if(!0===r){const t=k(l),e=k(l),n=k(l),i=z({ctx:s,...l}),o=()=>{const{width:o,height:r}=t.$getSize();i.clearRect(0,0,o,r),i.drawImage(n.canvas,0,0,o,r),i.drawImage(t.canvas,0,0,o,r),i.drawImage(e.canvas,0,0,o,r),n.clearRect(0,0,o,r),t.clearRect(0,0,o,r),e.clearRect(0,0,o,r)};return{underContext:n,viewContext:t,helperContext:e,boardContext:i,drawView:o}}{const t=z(l),e=z(l),o=z(l),r=z({ctx:s,...l}),a=()=>{r.clearRect(0,0,n,i),r.drawImage(o.canvas,0,0,n,i),r.drawImage(t.canvas,0,0,n,i),r.drawImage(e.canvas,0,0,n,i),o.clearRect(0,0,n,i),t.clearRect(0,0,n,i),e.clearRect(0,0,n,i)};return{underContext:o,viewContext:t,helperContext:e,boardContext:r,drawView:a}}},t.createContext2D=z,t.createElement=function(t,e,n){const i=function(t,e){let n=0,i=0,o=zt,r=kt;if(e){const{viewScaleInfo:a,viewSizeInfo:l}=e,{scale:s,offsetLeft:c,offsetTop:h}=a,{width:f,height:u}=l,d=f/4,g=u/4;o=zt>=d?d/s:zt/s,r=kt>=g?g/s:kt/s,["circle","svg","image"].includes(t)?o=r=Math.max(o,r):"text"===t&&(r=o/Pt.length*2),n=(0-c+f/2-o*s/2)/s,i=(0-h+u/2-r*s/2)/s}return{x:n,y:i,w:o,h:r}}(t,n);let o={};return"rect"===t?o={background:"#D9D9D9"}:"circle"===t?o={background:"#D9D9D9",radius:0}:"text"===t?o=function(t){const e={boxSizing:"border-box",borderWidth:0,borderColor:"#000000",shadowColor:"#000000",borderRadius:0,borderDash:[],shadowOffsetX:0,shadowOffsetY:0,shadowBlur:0,opacity:1,color:"#000000",textAlign:"left",verticalAlign:"top",fontSize:16,fontFamily:"sans-serif",fontWeight:400,overflow:"hidden"};return{text:Pt,color:e.color,fontFamily:e.fontFamily,fontWeight:e.fontWeight,lineHeight:t.w/Pt.length,fontSize:t.w/Pt.length,textAlign:"center",verticalAlign:"middle"}}(i):"svg"===t?o={svg:'<svg t="1701004189871" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="200" height="200"><path d="M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3-12.3 12.7-12.1 32.9 0.6 45.3l183.7 179.1-43.4 252.9c-1.2 6.9-0.1 14.1 3.2 20.3 8.2 15.6 27.6 21.7 43.2 13.4L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3zM664.8 561.6l36.1 210.3L512 672.7 323.1 772l36.1-210.3-152.8-149L417.6 382 512 190.7 606.4 382l211.2 30.7-152.8 148.9z" fill="#2c2c2c"></path></svg>'}:"image"===t?o={src:"data:image/svg+xml;base64,PHN2ZyAgIHZpZXdCb3g9IjAgMCAxMDI0IDEwMjQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiAgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiPjxwYXRoIGQ9Ik05MjggMTYwSDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NDBjMCAxNy43IDE0LjMgMzIgMzIgMzJoODMyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE5MmMwLTE3LjctMTQuMy0zMi0zMi0zMnogbS00MCA2MzJIMTM2di0zOS45bDEzOC41LTE2NC4zIDE1MC4xIDE3OEw2NTguMSA0ODkgODg4IDc2MS42Vjc5MnogbTAtMTI5LjhMNjY0LjIgMzk2LjhjLTMuMi0zLjgtOS0zLjgtMTIuMiAwTDQyNC42IDY2Ni40bC0xNDQtMTcwLjdjLTMuMi0zLjgtOS0zLjgtMTIuMiAwTDEzNiA2NTIuN1YyMzJoNzUydjQzMC4yeiIgIGZpbGw9IiM1MTUxNTEiPjwvcGF0aD48cGF0aCBkPSJNMzA0IDQ1NmM0OC42IDAgODgtMzkuNCA4OC04OHMtMzkuNC04OC04OC04OC04OCAzOS40LTg4IDg4IDM5LjQgODggODggODh6IG0wLTExNmMxNS41IDAgMjggMTIuNSAyOCAyOHMtMTIuNSAyOC0yOCAyOC0yOC0xMi41LTI4LTI4IDEyLjUtMjggMjgtMjh6IiAgZmlsbD0iIzUxNTE1MSI+PC9wYXRoPjwvc3ZnPg=="}:"group"===t&&(o={children:[],background:"#D9D9D9",overflow:"hidden"}),{...i,...e,uuid:m(),type:t,detail:{...o,...e.detail||{}}}},t.createOffscreenContext2D=k,t.createUUID=m,t.debounce=function(t,e){let n=-1;return function(...i){n>=0&&window.clearTimeout(n),n=setTimeout((()=>{t(...i),n=-1}),e)}},t.deepClone=v,t.deepCloneElement=function(t){const e=v(t),n=t=>{t.uuid=m(),"group"===t.type&&t.detail.children&&t.detail.children.forEach((t=>{n(t)}))};return n(e),e},t.deepResizeGroupElement=Ct,t.delay=function(t){return new Promise((e=>{setTimeout((()=>{e()}),t)}))},t.deleteElementInList=function(t,e){return Tt(K(t,e),e)},t.deleteElementInListByPosition=Tt,t.downloadFileFromText=function(t,e){const{fileName:n}=e,i=function(t){const e=(new TextEncoder).encode(t),n=new Blob([e],{type:"text/plain;charset=utf-8"});return window.URL.createObjectURL(n)}(t);let o=document.createElement("a");o.href=i,o.download=n,o.click(),o=null},t.downloadImageFromCanvas=function(t,e){const{fileName:n,type:i="image/jpeg"}=e,o=t.toDataURL(i);let r=document.createElement("a");r.href=o,r.download=n,r.click(),r=null},t.equalPoint=T,t.equalTouchPoint=function(t,e){return!0===T(t,e)&&t.f===e.f},t.filterCompactData=function(t,e){const n=t.assets||{},i=v(t),o=(null==e?void 0:e.loadItemMap)||{},r=t=>{t.forEach((t=>{var e,i,a;if("image"===t.type&&t.detail.src){const i=t.detail.src;if(p(i)&&!n[i]&&o[i]&&"string"==typeof(null==(e=o[i])?void 0:e.source))n[i]={type:"image",value:o[i].source};else if(!n[i]){const e=x(i);n[e]||(n[e]={type:"image",value:i}),t.detail.src=e}}else if("svg"===t.type){const e=t.detail.svg;if(p(e)&&!n[e]&&o[e]&&"string"==typeof(null==(i=o[e])?void 0:i.source))n[e]={type:"svg",value:o[e].source};else if(!n[e]){const i=x(e);n[i]||(n[i]={type:"svg",value:e}),t.detail.svg=i}}else if("html"===t.type){const e=t.detail.html;if(p(e)&&!n[e]&&o[e]&&"string"==typeof(null==(a=o[e])?void 0:a.source))n[e]={type:"html",value:o[e].source};else if(!n[e]){const i=x(e);n[i]||(n[i]={type:"html",value:e}),t.detail.html=i}}else if("group"===t.type&&Array.isArray(t.detail.children)){const e=t.detail.assets||{};Object.keys(e).forEach((t=>{n[t]||(n[t]=e[t])})),delete t.detail.assets,r(t.detail.children)}}))};return r(i.elements),i.assets=n,i},t.filterElementAsset=function(t){let e=null,n=null,i=null;return"image"===t.type?i=t.detail.src:"svg"===t.type?i=t.detail.svg:"html"===t.type&&(i=t.detail.html),"string"!=typeof i||p(i)||(e=x(i),n={type:t.type,value:i},"image"===t.type?t.detail.src=e:"svg"===t.type?t.detail.svg=e:"html"===t.type&&(t.detail.html=e)),{element:t,assetId:e,assetItem:n}},t.findElementFromList=function t(e,n){var i;let o=null;for(let r=0;r<n.length;r++){const a=n[r];if(a.uuid===e){o=a;break}if(!o&&"group"===a.type){const n=t(e,(null==(i=null==a?void 0:a.detail)?void 0:i.children)||[]);if((null==n?void 0:n.uuid)===e){o=n;break}}}return o},t.findElementFromListByPosition=J,t.findElementQueueFromListByPosition=function(t,e){const n=[];let i=e;for(let e=0;e<t.length;e++){const o=i[t[e]];if(!o)break;if(n.push(o),!(e<t.length-1&&"group"===o.type))break;i=o.detail.children}return n},t.findElementsFromList=function(t,e){const n=[];return function e(i){var o;for(let r=0;r<i.length;r++){const a=i[r];t.includes(a.uuid)?n.push(a):"group"===a.type&&e((null==(o=null==a?void 0:a.detail)?void 0:o.children)||[])}}(e),n},t.findElementsFromListByPositions=function(t,e){const n=[];return t.forEach((t=>{const i=J(t,e);i&&n.push(i)})),n},t.formatNumber=Mt,t.generateHTML=function(t){return t.reduce((function(t,e){return t+bt("",e)}),"")},t.generateSVGPath=function(t){let e="";return t.forEach((t=>{e+=t.type+t.params.join(" ")})),e},t.getCenterFromTwoPoints=V,t.getDefaultElementDetailConfig=It,t.getDefaultElementRectDetail=St,t.getElemenetsAssetIds=function(t){const e=[],n=t=>{t.forEach((t=>{"image"===t.type&&p(t.detail.src)?e.push(t.detail.src):"svg"===t.type&&p(t.detail.svg)?e.push(t.detail.svg):"html"===t.type&&t.detail.html?e.push(t.detail.html):"group"===t.type&&Array.isArray(t.detail.children)&&n(t.detail.children)}))};return n(t),e},t.getElementPositionFromList=K,t.getElementRotateVertexes=G,t.getElementSize=function(t){const{x:e,y:n,w:i,h:o,angle:r}=t;return{x:e,y:n,w:i,h:o,angle:r}},t.getElementVertexes=tt,t.getGroupQueueByElementPosition=Z,t.getGroupQueueFromList=function(t,e){const n=[];return function t(e,i){var o;let r=null;for(let a=0;a<i.length;a++){const l=i[a];if(l.uuid===e){r=l;break}if(!r&&"group"===l.type){n.push(l);const i=t(e,(null==(o=null==l?void 0:l.detail)?void 0:o.children)||[]);if((null==i?void 0:i.uuid)===e){r=i;break}n.pop()}}return r}(t,e),n},t.getModifiedElement=function(t,e){const n={},i=[],o=t=>{if(b.json(t)){Object.keys(t).forEach((r=>{if(i.push(r),b.json(t[r])||b.array(t[r]))o(t[r]);else{const t=i.join(".");if("uuid"!==t){const o=Wt(e,t);Ft(n,i.join("."),o)}}i.pop()}))}else b.array(t)&&t.forEach((r=>{if(i.push(r),b.json(t[r])||b.array(t[r]))o(t[r]);else{const t=Wt(e,i.join("."));Ft(n,i.join("."),t)}i.pop()}))};return o(t),n},t.getSelectedElementUUIDs=function(t,e){var n;let i=[];return Array.isArray(null==t?void 0:t.elements)&&(null==(n=null==t?void 0:t.elements)?void 0:n.length)>0&&Array.isArray(e)&&e.length>0&&e.forEach((e=>{var n;"number"==typeof e?(null==(n=null==t?void 0:t.elements)?void 0:n[e])&&i.push(t.elements[e].uuid):"string"==typeof e&&(i=i.concat(function(t,e){var n;const i=[];if("string"==typeof e&&/^\d+(\.\d+)*$/.test(e)){const o=e.split(".");let r=t;for(;o.length>0;){const t=o.shift();if("string"==typeof t){const e=r[parseInt(t)];e&&0===o.length?i.push(e.uuid):"group"===e.type&&o.length>0&&(r=(null==(n=null==e?void 0:e.detail)?void 0:n.children)||[])}break}}return i}(t.elements,e)))})),i},t.getViewPointAtElement=function(t,e){var n,i,o;const{context2d:r,data:a,viewScaleInfo:l,viewSizeInfo:s,groupQueue:c}=e,h={index:-1,element:null,groupQueueIndex:-1};if(c&&Array.isArray(c)&&(null==c?void 0:c.length)>0)for(let e=c.length-1;e>=0;e--){let o=0,a=0,f=0;for(let t=0;t<=e;t++)o+=c[t].x,a+=c[t].y,f+=c[t].angle||0;const u=c[e];if(u&&"group"===u.type&&Array.isArray(null==(n=u.detail)?void 0:n.children))for(let n=0;n<u.detail.children.length;n++){const d=u.detail.children[n];if(!0!==(null==(i=null==d?void 0:d.operations)?void 0:i.invisible)){if(!d)break;if(lt(t,{context2d:r,element:{x:o+d.x,y:a+d.y,w:d.w,h:d.h,angle:f+(d.angle||0)},viewScaleInfo:l,viewSizeInfo:s})){h.element=d,(e<c.length-1||"group"!==d.type)&&(h.groupQueueIndex=e);break}}}if(h.element)break}if(h.element)return h;for(let e=a.elements.length-1;e>=0;e--){const n=a.elements[e];if(!0!==(null==(o=null==n?void 0:n.operations)?void 0:o.invisible)&&lt(t,{context2d:r,element:n,viewScaleInfo:l,viewSizeInfo:s})){h.index=e,h.element=n;break}}return h},t.getViewScaleInfoFromSnapshot=function(t){const{activeStore:e}=t;return{scale:null==e?void 0:e.scale,offsetTop:null==e?void 0:e.offsetTop,offsetBottom:null==e?void 0:e.offsetBottom,offsetLeft:null==e?void 0:e.offsetLeft,offsetRight:null==e?void 0:e.offsetRight}},t.getViewSizeInfoFromSnapshot=function(t){const{activeStore:e}=t;return{devicePixelRatio:e.devicePixelRatio,width:null==e?void 0:e.width,height:null==e?void 0:e.height,contextWidth:null==e?void 0:e.contextWidth,contextHeight:null==e?void 0:e.contextHeight}},t.insertElementToListByPosition=Ot,t.is=E,t.isAssetId=p,t.isColorStr=d,t.isElementInView=function(t,e){const{viewSizeInfo:n,viewScaleInfo:i}=e,{width:o,height:r}=n,{angle:a}=t,{x:l,y:s,w:c,h:h}=rt(t,{viewScaleInfo:i}),f=U({x:l,y:s,w:c,h:h,angle:a}),u={x:0,y:0,w:o,h:r},d=Math.min(f[0].x,f[1].x,f[2].x,f[3].x),g=Math.min(f[0].y,f[1].y,f[2].y,f[3].y);return _(u,{x:d,y:g,w:Math.max(f[0].x,f[1].x,f[2].x,f[3].x)-d,h:Math.max(f[0].y,f[1].y,f[2].y,f[3].y)-g})},t.isResourceElement=function(t){return["image","svg","html"].includes(null==t?void 0:t.type)},t.isViewPointInElement=lt,t.isViewPointInElementSize=function(t,e,n){return st(t,et(e),n)},t.isViewPointInVertexes=st,t.istype=b,t.limitAngle=X,t.loadHTML=async function(t,e){t=t.replace(/\&/gi,"&amp;");const n=await function(t,e){const{width:n,height:i}=e;return new Promise(((e,o)=>{const r=new Blob([`\n <svg \n xmlns="http://www.w3.org/2000/svg" \n width="${n||""}" \n height = "${i||""}">\n <foreignObject width="100%" height="100%">\n <div xmlns = "http://www.w3.org/1999/xhtml">\n ${t}\n </div>\n </foreignObject>\n </svg>\n `],{type:"image/svg+xml;charset=utf-8"}),a=new FileReader;a.readAsDataURL(r),a.onload=function(t){var n;const i=null==(n=null==t?void 0:t.target)?void 0:n.result;e(i)},a.onerror=function(t){o(t)}}))}(t,e);return await R(n)},t.loadImage=R,t.loadSVG=async function(t){const e=await function(t){return new Promise(((e,n)=>{const i=new Blob([t],{type:"image/svg+xml;charset=utf-8"}),o=new FileReader;o.readAsDataURL(i),o.onload=function(t){var n;const i=null==(n=null==t?void 0:t.target)?void 0:n.result;e(i)},o.onerror=function(t){n(t)}}))}(t);return await R(e)},t.matrixToAngle=function(t){const e=Rt(t);if("number"==typeof e){return 180*e/Math.PI}return e},t.matrixToRadian=Rt,t.mergeElementAsset=function(t,e){const n=t;let i=null,o=null;return"image"===n.type?i=n.detail.src:"svg"===n.type?i=n.detail.svg:"html"===n.type&&(i=n.detail.html),i&&(null==i?void 0:i.startsWith("@assets/"))&&(o=e[i]),(null==o?void 0:o.type)===n.type&&"string"==typeof(null==o?void 0:o.value)&&(null==o?void 0:o.value)&&("image"===n.type?n.detail.src=o.value:"svg"===n.type?n.detail.svg=o.value:"html"===n.type&&(n.detail.html=o.value)),n},t.mergeHexColorAlpha=function(t,e){if(1===e)return t;let n=1;const i=/^\#[0-9a-f]{6,6}$/i;let o=t;if(i.test(t)?n=parseInt(t.substring(5,7).replace(/^\#/,"0x")):/^\#[0-9a-f]{8,8}$/i.test(t)&&(n=parseInt(t.substring(7,9).replace(/^\#/,"0x")),o=t.substring(0,7)),n*=e,i.test(o)&&n>0&&n<1){const t=Math.max(0,Math.min(255,Math.ceil(256*n)));o=`${o.toUpperCase()}${t.toString(16).toUpperCase()}`}return o},t.modifyElement=function(t,e){const{type:n}=e,i={...e.content};if("addElement"===n){const n=e,{element:i,position:o}=n.content;(null==o?void 0:o.length)>0?Ot(i,[...o],t.elements):t.elements.push(i)}else if("deleteElement"===n){const n=e,{position:i}=n.content;Tt(i,t.elements)}else if("moveElement"===n){const n=e,{from:o,to:r}=n.content,a=Dt(t.elements,{from:o,to:r});i.from=a.from,i.to=a.to,t.elements=a.elements}else if("updateElement"===n){const n=e,{position:i,afterModifiedElement:o}=n.content;Vt(i,o,t.elements)}return{data:t,content:i}},t.moveElementPosition=Dt,t.originRectInfoToRangeRectInfo=ht,t.parseAngleToRadian=W,t.parseFileToBase64=function(t){return new Promise((function(e,n){let i=new FileReader;i.addEventListener("load",(function(){e(i.result),i=null})),i.addEventListener("error",(function(t){n(t),i=null})),i.addEventListener("abort",(function(){n(new Error("abort")),i=null})),i.readAsDataURL(t)}))},t.parseFileToText=function(t){return new Promise((function(e,n){let i=new FileReader;i.addEventListener("load",(function(){e(i.result),i=null})),i.addEventListener("error",(function(t){n(t),i=null})),i.addEventListener("abort",(function(){n(new Error("abort")),i=null})),i.readAsText(t)}))},t.parseHTML=function(t){const e=[],n=[];let i,o=-1;return t.replace(xt,((r,a)=>{const l="/"!==r.charAt(1),s=r.startsWith("\x3c!--"),c=a+r.length,h=t.charAt(c);let f;if(s){const t=wt(r);return o<0?(e.push(t),r):(f=n[o],f.children.push(t),r)}if(l){if(o++,i=wt(r),!i.isVoid&&h&&"<"!==h){const e=t.slice(c,t.indexOf("<",c));e.trim()&&i.children.push({type:"text",name:null,attributes:{},children:[],isVoid:!1,textContent:e.trim()})}0===o&&e.push(i),f=n[o-1],f&&f.children.push(i),n[o]=i}if((!l||!Array.isArray(i)&&i.isVoid)&&(o>-1&&!Array.isArray(i)&&(i.isVoid||i.name===r.slice(2,-1))&&(o--,i=-1===o?e:n[o]),"<"!==h&&h)){f=-1===o?e:n[o].children;const i=t.indexOf("<",c);let r=t.slice(c,-1===i?void 0:i);pt.test(r)&&(r=" "),(i>-1&&o+f.length>=0||" "!==r)&&r.trim()&&f.push({type:"text",name:null,attributes:{},children:[],isVoid:!1,textContent:r.trim()})}return r})),e},t.parseRadianToAngle=function(t){return t/Math.PI*180},t.parseSVGPath=function(t){const e=[];return t.replace(gt,((t,n,i)=>{const o=i.match(mt),r={type:n,params:o?o.map(Number):[]};return e.push(r),t})),e},t.pickFile=function(t){const{accept:e,success:n,error:i}=t;let o=document.createElement("input");o.type="file",e&&(o.accept=e),o.addEventListener("change",(function(){var t;const e=null==(t=o.files)?void 0:t[0];n({file:e}),o=null})),o.addEventListener("error",(function(t){"function"==typeof i&&i(t),o=null})),o.click()},t.rotateByCenter=F,t.rotateElement=function(t,e,n){const i=B(e);F(t,e.angle||0,i,(()=>{n(t)}))},t.rotateElementVertexes=U,t.rotatePoint=Q,t.rotatePointInGroup=function(t,e){if((null==e?void 0:e.length)>0){let n=t.x,i=t.y;return e.forEach((t=>{const{x:e,y:o,w:r,h:a,angle:l=0}=t,s=Q(B({x:e,y:o,w:r,h:a,angle:l}),{x:n,y:i},W(l));n=s.x,i=s.y})),{x:n,y:i}}return t},t.rotateVertexes=Y,t.sortDataAsserts=function(t,e){const n=t.assets||{};let i=t;!0===(null==e?void 0:e.clone)&&(i=v(t));const o=t=>{t.forEach((t=>{if("image"===t.type&&t.detail.src){const e=t.detail.src,i=x(e);n[i]||(n[i]={type:"image",value:e}),t.detail.src=i}else if("svg"===t.type){const e=t.detail.svg,i=x(e);n[i]||(n[i]={type:"svg",value:e}),t.detail.svg=i}else if("html"===t.type){const e=t.detail.html,i=x(e);n[i]||(n[i]={type:"html",value:e}),t.detail.html=i}else if("group"===t.type&&Array.isArray(t.detail.children)){const e=t.detail.assets||{};Object.keys(e).forEach((t=>{n[t]||(n[t]=e[t])})),delete t.detail.assets,o(t.detail.children)}}))};return o(i.elements),i.assets=n,i},t.sortElementsViewVisiableInfoMap=function(t,e){const n={},i=[],o=e=>{const r={isVisibleInView:!0,isGroup:"group"===e.type,position:[...i]};let a=null;a=ct(e,{groupQueue:Z(t,i)||[]}),n[e.uuid]={...r,originRectInfo:a,rangeRectInfo:E.angle(e.angle)?ht(a):a},"group"===e.type&&e.detail.children.forEach(((t,e)=>{i.push(e),o(t),i.pop()}))};return t.forEach(((t,e)=>{i.push(e),o(t),i.pop()})),ft(n,e)},t.throttle=function(t,e){let n=-1;return function(...i){n>=0||(n=setTimeout((()=>{t(...i),n=-1}),e))}},t.toColorHexNum=function(t){return parseInt(t.replace(/^\#/,"0x"))},t.toColorHexStr=function(t){return"#"+t.toString(16)},t.updateElementInList=function t(e,n,i){var o,r;let a=null;for(let l=0;l<i.length;l++){const s=i[l];if(s.uuid===e){"group"===s.type&&!0===(null==(o=s.operations)?void 0:o.deepResize)&&(n.w&&n.w>0||n.h&&n.h>0)&&Ct(s,{w:n.w,h:n.h}),jt(s,n),a=s;break}"group"===s.type&&(a=t(e,n,(null==(r=null==s?void 0:s.detail)?void 0:r.children)||[]))}return a},t.updateElementInListByPosition=Vt,t.updateViewVisibleInfoMapStatus=ft,t.vaildPoint=j,t.vaildTouchPoint=function(t){return!0===j(t)&&t.f>=0},t.validateElements=function t(e){let n=!0;if(Array.isArray(e)){const i=[];e.forEach((e=>{var o;"string"==typeof e.uuid&&e.uuid?i.includes(e.uuid)?(n=!1,console.warn(`Duplicate uuids: ${e.uuid}`)):i.push(e.uuid):(n=!1,console.warn("Element missing uuid",e)),"group"===e.type&&(n=t(null==(o=null==e?void 0:e.detail)?void 0:o.children))}))}return n},t.viewScale=function(t){const{scale:e,point:n,viewScaleInfo:i}=t,{offsetLeft:o,offsetTop:r}=i,a=e/i.scale,l=n.x,s=n.y;return{moveX:l-l*a+(o*a-o),moveY:s-s*a+(r*a-r)}},t.viewScroll=function(t){const{moveX:e=0,moveY:n=0,viewScaleInfo:i,viewSizeInfo:o}=t,{scale:r}=i,{width:a,height:l,contextWidth:s,contextHeight:c}=o;let h=i.offsetLeft,f=i.offsetRight,u=i.offsetTop,d=i.offsetBottom;return h+=e,u+=n,f=a-(s*r+h),d=l-(c*r+u),{scale:r,offsetTop:u,offsetLeft:h,offsetRight:f,offsetBottom:d}},Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),t}({});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@idraw/util",
3
- "version": "0.4.0-beta.17",
3
+ "version": "0.4.0-beta.19",
4
4
  "description": "",
5
5
  "main": "dist/esm/index.js",
6
6
  "module": "dist/esm/index.js",