@idraw/renderer 0.4.0-beta.2 → 0.4.0-beta.4

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.
@@ -3,12 +3,12 @@ export declare function drawBox(ctx: ViewContext2D, viewElem: Element<ElementTyp
3
3
  originElem: Element<ElementType>;
4
4
  calcElemSize: ElementSize;
5
5
  pattern?: string | CanvasPattern | null;
6
- renderContent: Function;
6
+ renderContent: () => void;
7
7
  viewScaleInfo: ViewScaleInfo;
8
8
  viewSizeInfo: ViewSizeInfo;
9
9
  }): void;
10
10
  export declare function drawBoxShadow(ctx: ViewContext2D, viewElem: Element<ElementType>, opts: {
11
11
  viewScaleInfo: ViewScaleInfo;
12
12
  viewSizeInfo: ViewSizeInfo;
13
- renderContent: Function;
13
+ renderContent: () => void;
14
14
  }): void;
@@ -34,8 +34,8 @@ function drawClipPath(ctx, viewElem, opts) {
34
34
  const scaleH = h / originH;
35
35
  const viewOriginX = originX * scaleW;
36
36
  const viewOriginY = originY * scaleH;
37
- let internalX = x - viewOriginX;
38
- let internalY = y - viewOriginY;
37
+ const internalX = x - viewOriginX;
38
+ const internalY = y - viewOriginY;
39
39
  ctx.save();
40
40
  ctx.translate(internalX, internalY);
41
41
  ctx.scale(totalScale * scaleW, totalScale * scaleH);
@@ -56,8 +56,9 @@ function drawClipPath(ctx, viewElem, opts) {
56
56
  function drawBoxBackground(ctx, viewElem, opts) {
57
57
  var _a, _b;
58
58
  const { pattern, viewScaleInfo, viewSizeInfo } = opts;
59
- let transform = [];
60
- let { borderRadius, borderWidth } = viewElem.detail;
59
+ const transform = [];
60
+ let { borderRadius } = viewElem.detail;
61
+ const { borderWidth } = viewElem.detail;
61
62
  if (typeof borderWidth !== 'number') {
62
63
  borderRadius = 0;
63
64
  }
@@ -5,7 +5,7 @@ export function drawCircle(ctx, elem, opts) {
5
5
  const { detail, angle } = elem;
6
6
  const { background = '#000000', borderColor = '#000000', borderWidth = 0 } = detail;
7
7
  const { calculator, viewScaleInfo, viewSizeInfo } = opts;
8
- const { x, y, w, h } = calculator.elementSize({ x: elem.x, y: elem.y, w: elem.w, h: elem.h }, viewScaleInfo, viewSizeInfo);
8
+ const { x, y, w, h } = (calculator === null || calculator === void 0 ? void 0 : calculator.elementSize({ x: elem.x, y: elem.y, w: elem.w, h: elem.h }, viewScaleInfo, viewSizeInfo)) || elem;
9
9
  const viewElem = Object.assign(Object.assign({}, elem), { x, y, w, h, angle });
10
10
  rotateElement(ctx, { x, y, w, h, angle }, () => {
11
11
  drawBoxShadow(ctx, viewElem, {
@@ -2,14 +2,17 @@ import { getDefaultElementDetailConfig } from '@idraw/util';
2
2
  import { drawElement } from './group';
3
3
  const defaultDetail = getDefaultElementDetailConfig();
4
4
  export function drawElementList(ctx, data, opts) {
5
+ var _a;
5
6
  const { elements = [] } = data;
6
7
  for (let i = 0; i < elements.length; i++) {
7
8
  const element = elements[i];
8
9
  const elem = Object.assign(Object.assign({}, element), {
9
10
  detail: Object.assign(Object.assign({}, defaultDetail), element === null || element === void 0 ? void 0 : element.detail)
10
11
  });
11
- if (!opts.calculator.isElementInView(elem, opts.viewScaleInfo, opts.viewSizeInfo)) {
12
- continue;
12
+ if (opts.forceDrawAll !== true) {
13
+ if (!((_a = opts.calculator) === null || _a === void 0 ? void 0 : _a.isElementInView(elem, opts.viewScaleInfo, opts.viewSizeInfo))) {
14
+ continue;
15
+ }
13
16
  }
14
17
  try {
15
18
  drawElement(ctx, elem, opts);
@@ -58,7 +58,7 @@ export function drawElement(ctx, elem, opts) {
58
58
  }
59
59
  export function drawGroup(ctx, elem, opts) {
60
60
  const { calculator, viewScaleInfo, viewSizeInfo } = opts;
61
- const { x, y, w, h, angle } = calculator.elementSize({ x: elem.x, y: elem.y, w: elem.w, h: elem.h, angle: elem.angle }, viewScaleInfo, viewSizeInfo);
61
+ const { x, y, w, h, angle } = (calculator === null || calculator === void 0 ? void 0 : calculator.elementSize({ x: elem.x, y: elem.y, w: elem.w, h: elem.h, angle: elem.angle }, viewScaleInfo, viewSizeInfo)) || elem;
62
62
  const viewElem = Object.assign(Object.assign({}, elem), { x, y, w, h, angle });
63
63
  rotateElement(ctx, { x, y, w, h, angle }, () => {
64
64
  drawBoxShadow(ctx, viewElem, {
@@ -104,8 +104,10 @@ export function drawGroup(ctx, elem, opts) {
104
104
  x: newParentSize.x + child.x,
105
105
  y: newParentSize.y + child.y
106
106
  });
107
- if (!calculator.isElementInView(child, opts.viewScaleInfo, opts.viewSizeInfo)) {
108
- continue;
107
+ if (opts.forceDrawAll !== true) {
108
+ if (!(calculator === null || calculator === void 0 ? void 0 : calculator.isElementInView(child, opts.viewScaleInfo, opts.viewSizeInfo))) {
109
+ continue;
110
+ }
109
111
  }
110
112
  try {
111
113
  drawElement(ctx, child, Object.assign({}, opts));
@@ -2,7 +2,7 @@ import { rotateElement } from '@idraw/util';
2
2
  export function drawHTML(ctx, elem, opts) {
3
3
  const content = opts.loader.getContent(elem);
4
4
  const { calculator, viewScaleInfo, viewSizeInfo } = opts;
5
- const { x, y, w, h, angle } = calculator.elementSize(elem, viewScaleInfo, viewSizeInfo);
5
+ const { x, y, w, h, angle } = (calculator === null || calculator === void 0 ? void 0 : calculator.elementSize(elem, viewScaleInfo, viewSizeInfo)) || elem;
6
6
  rotateElement(ctx, { x, y, w, h, angle }, () => {
7
7
  if (!content) {
8
8
  opts.loader.load(elem, opts.elementAssets || {});
@@ -3,7 +3,7 @@ import { drawBox, drawBoxShadow } from './box';
3
3
  export function drawImage(ctx, elem, opts) {
4
4
  const content = opts.loader.getContent(elem);
5
5
  const { calculator, viewScaleInfo, viewSizeInfo } = opts;
6
- const { x, y, w, h, angle } = calculator.elementSize(elem, viewScaleInfo, viewSizeInfo);
6
+ const { x, y, w, h, angle } = (calculator === null || calculator === void 0 ? void 0 : calculator.elementSize(elem, viewScaleInfo, viewSizeInfo)) || elem;
7
7
  const viewElem = Object.assign(Object.assign({}, elem), { x, y, w, h, angle });
8
8
  rotateElement(ctx, { x, y, w, h, angle }, () => {
9
9
  drawBoxShadow(ctx, viewElem, {
@@ -4,7 +4,7 @@ export function drawPath(ctx, elem, opts) {
4
4
  const { detail } = elem;
5
5
  const { originX, originY, originW, originH } = detail;
6
6
  const { calculator, viewScaleInfo, viewSizeInfo } = opts;
7
- const { x, y, w, h, angle } = calculator.elementSize(elem, viewScaleInfo, viewSizeInfo);
7
+ const { x, y, w, h, angle } = (calculator === null || calculator === void 0 ? void 0 : calculator.elementSize(elem, viewScaleInfo, viewSizeInfo)) || elem;
8
8
  const scaleW = w / originW;
9
9
  const scaleH = h / originH;
10
10
  const viewOriginX = originX * scaleW;
@@ -2,7 +2,7 @@ import { rotateElement } from '@idraw/util';
2
2
  import { drawBox, drawBoxShadow } from './box';
3
3
  export function drawRect(ctx, elem, opts) {
4
4
  const { calculator, viewScaleInfo, viewSizeInfo } = opts;
5
- let { x, y, w, h, angle } = calculator.elementSize(elem, viewScaleInfo, viewSizeInfo);
5
+ const { x, y, w, h, angle } = (calculator === null || calculator === void 0 ? void 0 : calculator.elementSize(elem, viewScaleInfo, viewSizeInfo)) || elem;
6
6
  const viewElem = Object.assign(Object.assign({}, elem), { x, y, w, h, angle });
7
7
  rotateElement(ctx, { x, y, w, h, angle }, () => {
8
8
  drawBoxShadow(ctx, viewElem, {
@@ -2,7 +2,7 @@ import { rotateElement } from '@idraw/util';
2
2
  export function drawSVG(ctx, elem, opts) {
3
3
  const content = opts.loader.getContent(elem);
4
4
  const { calculator, viewScaleInfo, viewSizeInfo } = opts;
5
- const { x, y, w, h, angle } = calculator.elementSize(elem, viewScaleInfo, viewSizeInfo);
5
+ const { x, y, w, h, angle } = (calculator === null || calculator === void 0 ? void 0 : calculator.elementSize(elem, viewScaleInfo, viewSizeInfo)) || elem;
6
6
  rotateElement(ctx, { x, y, w, h, angle }, () => {
7
7
  if (!content) {
8
8
  opts.loader.load(elem, opts.elementAssets || {});
@@ -4,7 +4,7 @@ import { drawBox } from './box';
4
4
  const detailConfig = getDefaultElementDetailConfig();
5
5
  export function drawText(ctx, elem, opts) {
6
6
  const { calculator, viewScaleInfo, viewSizeInfo } = opts;
7
- const { x, y, w, h, angle } = calculator.elementSize(elem, viewScaleInfo, viewSizeInfo);
7
+ const { x, y, w, h, angle } = (calculator === null || calculator === void 0 ? void 0 : calculator.elementSize(elem, viewScaleInfo, viewSizeInfo)) || elem;
8
8
  const viewElem = Object.assign(Object.assign({}, elem), { x, y, w, h, angle });
9
9
  rotateElement(ctx, { x, y, w, h, angle }, () => {
10
10
  drawBox(ctx, viewElem, {
@@ -1,11 +1,12 @@
1
1
  import { EventEmitter } from '@idraw/util';
2
+ import type { LoadItemMap } from '@idraw/types';
2
3
  import type { Data, BoardRenderer, RendererOptions, RendererEventMap, RendererDrawOptions } from '@idraw/types';
3
4
  export declare class Renderer extends EventEmitter<RendererEventMap> implements BoardRenderer {
4
- private _opts;
5
- private _loader;
5
+ #private;
6
6
  constructor(opts: RendererOptions);
7
- private _init;
8
7
  updateOptions(opts: RendererOptions): void;
9
8
  drawData(data: Data, opts: RendererDrawOptions): void;
10
9
  scale(num: number): void;
10
+ setLoadItemMap(itemMap: LoadItemMap): void;
11
+ getLoadItemMap(): LoadItemMap;
11
12
  }
package/dist/esm/index.js CHANGED
@@ -1,28 +1,34 @@
1
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
+ if (kind === "m") throw new TypeError("Private method is not writable");
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
5
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
6
+ };
7
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
+ var _Renderer_instances, _Renderer_opts, _Renderer_loader, _Renderer_init;
1
13
  import { EventEmitter } from '@idraw/util';
2
14
  import { drawElementList } from './draw/index';
3
15
  import { Loader } from './loader';
4
16
  export class Renderer extends EventEmitter {
5
17
  constructor(opts) {
6
18
  super();
7
- this._loader = new Loader();
8
- this._opts = opts;
9
- this._init();
10
- }
11
- _init() {
12
- const { _loader: loader } = this;
13
- loader.on('load', (e) => {
14
- this.trigger('load', e);
15
- });
16
- loader.on('error', () => {
17
- });
19
+ _Renderer_instances.add(this);
20
+ _Renderer_opts.set(this, void 0);
21
+ _Renderer_loader.set(this, new Loader());
22
+ __classPrivateFieldSet(this, _Renderer_opts, opts, "f");
23
+ __classPrivateFieldGet(this, _Renderer_instances, "m", _Renderer_init).call(this);
18
24
  }
19
25
  updateOptions(opts) {
20
- this._opts = opts;
26
+ __classPrivateFieldSet(this, _Renderer_opts, opts, "f");
21
27
  }
22
28
  drawData(data, opts) {
23
- const { _loader: loader } = this;
24
- const { calculator } = this._opts;
25
- const { viewContext } = this._opts.viewContent;
29
+ const loader = __classPrivateFieldGet(this, _Renderer_loader, "f");
30
+ const { calculator } = __classPrivateFieldGet(this, _Renderer_opts, "f");
31
+ const viewContext = __classPrivateFieldGet(this, _Renderer_opts, "f").viewContext;
26
32
  viewContext.clearRect(0, 0, viewContext.canvas.width, viewContext.canvas.height);
27
33
  const parentElementSize = {
28
34
  x: 0,
@@ -35,7 +41,10 @@ export class Renderer extends EventEmitter {
35
41
  parentElementSize, elementAssets: data.assets }, opts));
36
42
  }
37
43
  scale(num) {
38
- const { sharer } = this._opts;
44
+ const { sharer } = __classPrivateFieldGet(this, _Renderer_opts, "f");
45
+ if (!sharer) {
46
+ return;
47
+ }
39
48
  const { data, offsetTop, offsetBottom, offsetLeft, offsetRight, width, height, contextHeight, contextWidth, devicePixelRatio } = sharer.getActiveStoreSnapshot();
40
49
  if (data) {
41
50
  this.drawData(data, {
@@ -56,4 +65,18 @@ export class Renderer extends EventEmitter {
56
65
  });
57
66
  }
58
67
  }
68
+ setLoadItemMap(itemMap) {
69
+ __classPrivateFieldGet(this, _Renderer_loader, "f").setLoadItemMap(itemMap);
70
+ }
71
+ getLoadItemMap() {
72
+ return __classPrivateFieldGet(this, _Renderer_loader, "f").getLoadItemMap();
73
+ }
59
74
  }
75
+ _Renderer_opts = new WeakMap(), _Renderer_loader = new WeakMap(), _Renderer_instances = new WeakSet(), _Renderer_init = function _Renderer_init() {
76
+ const loader = __classPrivateFieldGet(this, _Renderer_loader, "f");
77
+ loader.on('load', (e) => {
78
+ this.trigger('load', e);
79
+ });
80
+ loader.on('error', () => {
81
+ });
82
+ };
@@ -1,17 +1,10 @@
1
- import type { RendererLoader, LoaderEventMap, LoadContent, LoadElementType, Element, ElementAssets } from '@idraw/types';
1
+ import type { RendererLoader, LoaderEventMap, LoadContent, LoadItemMap, LoadElementType, Element, ElementAssets } from '@idraw/types';
2
2
  import { EventEmitter } from '@idraw/util';
3
3
  export declare class Loader extends EventEmitter<LoaderEventMap> implements RendererLoader {
4
- private _loadFuncMap;
5
- private _currentLoadItemMap;
6
- private _storageLoadItemMap;
4
+ #private;
7
5
  constructor();
8
- private _registerLoadFunc;
9
- private _getLoadElementSource;
10
- private _createLoadItem;
11
- private _emitLoad;
12
- private _emitError;
13
- private _loadResource;
14
- private _isExistingErrorStorage;
15
6
  load(element: Element<LoadElementType>, assets: ElementAssets): void;
16
7
  getContent(element: Element<LoadElementType>): LoadContent | null;
8
+ getLoadItemMap(): LoadItemMap;
9
+ setLoadItemMap(itemMap: LoadItemMap): void;
17
10
  }
@@ -7,6 +7,18 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
11
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
12
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
13
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
14
+ };
15
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
16
+ if (kind === "m") throw new TypeError("Private method is not writable");
17
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
18
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
19
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
20
+ };
21
+ var _Loader_instances, _Loader_loadFuncMap, _Loader_currentLoadItemMap, _Loader_storageLoadItemMap, _Loader_registerLoadFunc, _Loader_getLoadElementSource, _Loader_createLoadItem, _Loader_emitLoad, _Loader_emitError, _Loader_loadResource, _Loader_isExistingErrorStorage;
10
22
  import { loadImage, loadHTML, loadSVG, EventEmitter, createAssetId, isAssetId, createUUID } from '@idraw/util';
11
23
  const supportElementTypes = ['image', 'svg', 'html'];
12
24
  const getAssetIdFromElement = (element) => {
@@ -32,10 +44,11 @@ const getAssetIdFromElement = (element) => {
32
44
  export class Loader extends EventEmitter {
33
45
  constructor() {
34
46
  super();
35
- this._loadFuncMap = {};
36
- this._currentLoadItemMap = {};
37
- this._storageLoadItemMap = {};
38
- this._registerLoadFunc('image', (elem, assets) => __awaiter(this, void 0, void 0, function* () {
47
+ _Loader_instances.add(this);
48
+ _Loader_loadFuncMap.set(this, {});
49
+ _Loader_currentLoadItemMap.set(this, {});
50
+ _Loader_storageLoadItemMap.set(this, {});
51
+ __classPrivateFieldGet(this, _Loader_instances, "m", _Loader_registerLoadFunc).call(this, 'image', (elem, assets) => __awaiter(this, void 0, void 0, function* () {
39
52
  var _a;
40
53
  const src = ((_a = assets[elem.detail.src]) === null || _a === void 0 ? void 0 : _a.value) || elem.detail.src;
41
54
  const content = yield loadImage(src);
@@ -45,7 +58,7 @@ export class Loader extends EventEmitter {
45
58
  content
46
59
  };
47
60
  }));
48
- this._registerLoadFunc('html', (elem, assets) => __awaiter(this, void 0, void 0, function* () {
61
+ __classPrivateFieldGet(this, _Loader_instances, "m", _Loader_registerLoadFunc).call(this, 'html', (elem, assets) => __awaiter(this, void 0, void 0, function* () {
49
62
  var _b;
50
63
  const html = ((_b = assets[elem.detail.html]) === null || _b === void 0 ? void 0 : _b.value) || elem.detail.html;
51
64
  const content = yield loadHTML(html, {
@@ -58,7 +71,7 @@ export class Loader extends EventEmitter {
58
71
  content
59
72
  };
60
73
  }));
61
- this._registerLoadFunc('svg', (elem, assets) => __awaiter(this, void 0, void 0, function* () {
74
+ __classPrivateFieldGet(this, _Loader_instances, "m", _Loader_registerLoadFunc).call(this, 'svg', (elem, assets) => __awaiter(this, void 0, void 0, function* () {
62
75
  var _c;
63
76
  const svg = ((_c = assets[elem.detail.svg]) === null || _c === void 0 ? void 0 : _c.value) || elem.detail.svg;
64
77
  const content = yield loadSVG(svg);
@@ -69,105 +82,105 @@ export class Loader extends EventEmitter {
69
82
  };
70
83
  }));
71
84
  }
72
- _registerLoadFunc(type, func) {
73
- this._loadFuncMap[type] = func;
74
- }
75
- _getLoadElementSource(element) {
76
- var _a, _b, _c;
77
- let source = null;
78
- if (element.type === 'image') {
79
- source = ((_a = element === null || element === void 0 ? void 0 : element.detail) === null || _a === void 0 ? void 0 : _a.src) || null;
80
- }
81
- else if (element.type === 'svg') {
82
- source = ((_b = element === null || element === void 0 ? void 0 : element.detail) === null || _b === void 0 ? void 0 : _b.svg) || null;
83
- }
84
- else if (element.type === 'html') {
85
- source = ((_c = element === null || element === void 0 ? void 0 : element.detail) === null || _c === void 0 ? void 0 : _c.html) || null;
86
- }
87
- return source;
88
- }
89
- _createLoadItem(element) {
90
- return {
91
- element,
92
- status: 'null',
93
- content: null,
94
- error: null,
95
- startTime: -1,
96
- endTime: -1,
97
- source: this._getLoadElementSource(element)
98
- };
99
- }
100
- _emitLoad(item) {
101
- const assetId = getAssetIdFromElement(item.element);
102
- const storageItem = this._storageLoadItemMap[assetId];
103
- if (storageItem) {
104
- if (storageItem.startTime < item.startTime) {
105
- this._storageLoadItemMap[assetId] = item;
106
- this.trigger('load', Object.assign(Object.assign({}, item), { countTime: item.endTime - item.startTime }));
107
- }
108
- }
109
- else {
110
- this._storageLoadItemMap[assetId] = item;
111
- this.trigger('load', Object.assign(Object.assign({}, item), { countTime: item.endTime - item.startTime }));
112
- }
113
- }
114
- _emitError(item) {
115
- const assetId = getAssetIdFromElement(item.element);
116
- const storageItem = this._storageLoadItemMap[assetId];
117
- if (storageItem) {
118
- if (storageItem.startTime < item.startTime) {
119
- this._storageLoadItemMap[assetId] = item;
120
- this.trigger('error', Object.assign(Object.assign({}, item), { countTime: item.endTime - item.startTime }));
121
- }
122
- }
123
- else {
124
- this._storageLoadItemMap[assetId] = item;
125
- this.trigger('error', Object.assign(Object.assign({}, item), { countTime: item.endTime - item.startTime }));
126
- }
127
- }
128
- _loadResource(element, assets) {
129
- const item = this._createLoadItem(element);
130
- const assetId = getAssetIdFromElement(element);
131
- this._currentLoadItemMap[assetId] = item;
132
- const loadFunc = this._loadFuncMap[element.type];
133
- if (typeof loadFunc === 'function') {
134
- item.startTime = Date.now();
135
- loadFunc(element, assets)
136
- .then((result) => {
137
- item.content = result.content;
138
- item.endTime = Date.now();
139
- item.status = 'load';
140
- this._emitLoad(item);
141
- })
142
- .catch((err) => {
143
- console.warn(`Load element source "${item.source}" fail`, err, element);
144
- item.endTime = Date.now();
145
- item.status = 'error';
146
- item.error = err;
147
- this._emitError(item);
148
- });
149
- }
150
- }
151
- _isExistingErrorStorage(element) {
152
- var _a;
153
- const assetId = getAssetIdFromElement(element);
154
- const existItem = (_a = this._currentLoadItemMap) === null || _a === void 0 ? void 0 : _a[assetId];
155
- if (existItem && existItem.status === 'error' && existItem.source && existItem.source === this._getLoadElementSource(element)) {
156
- return true;
157
- }
158
- return false;
159
- }
160
85
  load(element, assets) {
161
- if (this._isExistingErrorStorage(element)) {
86
+ if (__classPrivateFieldGet(this, _Loader_instances, "m", _Loader_isExistingErrorStorage).call(this, element)) {
162
87
  return;
163
88
  }
164
89
  if (supportElementTypes.includes(element.type)) {
165
- this._loadResource(element, assets);
90
+ __classPrivateFieldGet(this, _Loader_instances, "m", _Loader_loadResource).call(this, element, assets);
166
91
  }
167
92
  }
168
93
  getContent(element) {
169
94
  var _a, _b;
170
95
  const assetId = getAssetIdFromElement(element);
171
- return ((_b = (_a = this._storageLoadItemMap) === null || _a === void 0 ? void 0 : _a[assetId]) === null || _b === void 0 ? void 0 : _b.content) || null;
96
+ return ((_b = (_a = __classPrivateFieldGet(this, _Loader_storageLoadItemMap, "f")) === null || _a === void 0 ? void 0 : _a[assetId]) === null || _b === void 0 ? void 0 : _b.content) || null;
97
+ }
98
+ getLoadItemMap() {
99
+ return __classPrivateFieldGet(this, _Loader_storageLoadItemMap, "f");
100
+ }
101
+ setLoadItemMap(itemMap) {
102
+ __classPrivateFieldSet(this, _Loader_storageLoadItemMap, itemMap, "f");
172
103
  }
173
104
  }
105
+ _Loader_loadFuncMap = new WeakMap(), _Loader_currentLoadItemMap = new WeakMap(), _Loader_storageLoadItemMap = new WeakMap(), _Loader_instances = new WeakSet(), _Loader_registerLoadFunc = function _Loader_registerLoadFunc(type, func) {
106
+ __classPrivateFieldGet(this, _Loader_loadFuncMap, "f")[type] = func;
107
+ }, _Loader_getLoadElementSource = function _Loader_getLoadElementSource(element) {
108
+ var _a, _b, _c;
109
+ let source = null;
110
+ if (element.type === 'image') {
111
+ source = ((_a = element === null || element === void 0 ? void 0 : element.detail) === null || _a === void 0 ? void 0 : _a.src) || null;
112
+ }
113
+ else if (element.type === 'svg') {
114
+ source = ((_b = element === null || element === void 0 ? void 0 : element.detail) === null || _b === void 0 ? void 0 : _b.svg) || null;
115
+ }
116
+ else if (element.type === 'html') {
117
+ source = ((_c = element === null || element === void 0 ? void 0 : element.detail) === null || _c === void 0 ? void 0 : _c.html) || null;
118
+ }
119
+ return source;
120
+ }, _Loader_createLoadItem = function _Loader_createLoadItem(element) {
121
+ return {
122
+ element,
123
+ status: 'null',
124
+ content: null,
125
+ error: null,
126
+ startTime: -1,
127
+ endTime: -1,
128
+ source: __classPrivateFieldGet(this, _Loader_instances, "m", _Loader_getLoadElementSource).call(this, element)
129
+ };
130
+ }, _Loader_emitLoad = function _Loader_emitLoad(item) {
131
+ const assetId = getAssetIdFromElement(item.element);
132
+ const storageItem = __classPrivateFieldGet(this, _Loader_storageLoadItemMap, "f")[assetId];
133
+ if (storageItem) {
134
+ if (storageItem.startTime < item.startTime) {
135
+ __classPrivateFieldGet(this, _Loader_storageLoadItemMap, "f")[assetId] = item;
136
+ this.trigger('load', Object.assign(Object.assign({}, item), { countTime: item.endTime - item.startTime }));
137
+ }
138
+ }
139
+ else {
140
+ __classPrivateFieldGet(this, _Loader_storageLoadItemMap, "f")[assetId] = item;
141
+ this.trigger('load', Object.assign(Object.assign({}, item), { countTime: item.endTime - item.startTime }));
142
+ }
143
+ }, _Loader_emitError = function _Loader_emitError(item) {
144
+ const assetId = getAssetIdFromElement(item.element);
145
+ const storageItem = __classPrivateFieldGet(this, _Loader_storageLoadItemMap, "f")[assetId];
146
+ if (storageItem) {
147
+ if (storageItem.startTime < item.startTime) {
148
+ __classPrivateFieldGet(this, _Loader_storageLoadItemMap, "f")[assetId] = item;
149
+ this.trigger('error', Object.assign(Object.assign({}, item), { countTime: item.endTime - item.startTime }));
150
+ }
151
+ }
152
+ else {
153
+ __classPrivateFieldGet(this, _Loader_storageLoadItemMap, "f")[assetId] = item;
154
+ this.trigger('error', Object.assign(Object.assign({}, item), { countTime: item.endTime - item.startTime }));
155
+ }
156
+ }, _Loader_loadResource = function _Loader_loadResource(element, assets) {
157
+ const item = __classPrivateFieldGet(this, _Loader_instances, "m", _Loader_createLoadItem).call(this, element);
158
+ const assetId = getAssetIdFromElement(element);
159
+ __classPrivateFieldGet(this, _Loader_currentLoadItemMap, "f")[assetId] = item;
160
+ const loadFunc = __classPrivateFieldGet(this, _Loader_loadFuncMap, "f")[element.type];
161
+ if (typeof loadFunc === 'function') {
162
+ item.startTime = Date.now();
163
+ loadFunc(element, assets)
164
+ .then((result) => {
165
+ item.content = result.content;
166
+ item.endTime = Date.now();
167
+ item.status = 'load';
168
+ __classPrivateFieldGet(this, _Loader_instances, "m", _Loader_emitLoad).call(this, item);
169
+ })
170
+ .catch((err) => {
171
+ console.warn(`Load element source "${item.source}" fail`, err, element);
172
+ item.endTime = Date.now();
173
+ item.status = 'error';
174
+ item.error = err;
175
+ __classPrivateFieldGet(this, _Loader_instances, "m", _Loader_emitError).call(this, item);
176
+ });
177
+ }
178
+ }, _Loader_isExistingErrorStorage = function _Loader_isExistingErrorStorage(element) {
179
+ var _a;
180
+ const assetId = getAssetIdFromElement(element);
181
+ const existItem = (_a = __classPrivateFieldGet(this, _Loader_currentLoadItemMap, "f")) === null || _a === void 0 ? void 0 : _a[assetId];
182
+ if (existItem && existItem.status === 'error' && existItem.source && existItem.source === __classPrivateFieldGet(this, _Loader_instances, "m", _Loader_getLoadElementSource).call(this, element)) {
183
+ return true;
184
+ }
185
+ return false;
186
+ };
@@ -1,5 +1,28 @@
1
1
  var iDrawRenderer = function(exports) {
2
- "use strict";
2
+ "use strict";var __accessCheck = (obj, member, msg) => {
3
+ if (!member.has(obj))
4
+ throw TypeError("Cannot " + msg);
5
+ };
6
+ var __privateGet = (obj, member, getter) => {
7
+ __accessCheck(obj, member, "read from private field");
8
+ return getter ? getter.call(obj) : member.get(obj);
9
+ };
10
+ var __privateAdd = (obj, member, value) => {
11
+ if (member.has(obj))
12
+ throw TypeError("Cannot add the same private member more than once");
13
+ member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
14
+ };
15
+ var __privateSet = (obj, member, value, setter) => {
16
+ __accessCheck(obj, member, "write to private field");
17
+ setter ? setter.call(obj, value) : member.set(obj, value);
18
+ return value;
19
+ };
20
+ var __privateMethod = (obj, member, method) => {
21
+ __accessCheck(obj, member, "access private method");
22
+ return method;
23
+ };
24
+
25
+ var _loadFuncMap, _currentLoadItemMap, _storageLoadItemMap, _registerLoadFunc, registerLoadFunc_fn, _getLoadElementSource, getLoadElementSource_fn, _createLoadItem, createLoadItem_fn, _emitLoad, emitLoad_fn, _emitError, emitError_fn, _loadResource, loadResource_fn, _isExistingErrorStorage, isExistingErrorStorage_fn, _opts, _loader, _init, init_fn;
3
26
  function isColorStr(color2) {
4
27
  return typeof color2 === "string" && (/^\#([0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(color2) || /^[a-z]{1,}$/i.test(color2));
5
28
  }
@@ -422,7 +445,8 @@ var iDrawRenderer = function(exports) {
422
445
  function calcViewBoxSize(viewElem, opts) {
423
446
  const { viewScaleInfo } = opts;
424
447
  const { scale } = viewScaleInfo;
425
- let { borderRadius: borderRadius2, boxSizing = defaultElemConfig$1.boxSizing, borderWidth: borderWidth2 } = viewElem.detail;
448
+ let { borderRadius: borderRadius2 } = viewElem.detail;
449
+ const { boxSizing = defaultElemConfig$1.boxSizing, borderWidth: borderWidth2 } = viewElem.detail;
426
450
  if (typeof borderWidth2 !== "number") {
427
451
  borderRadius2 = 0;
428
452
  }
@@ -543,8 +567,8 @@ var iDrawRenderer = function(exports) {
543
567
  const scaleH = h2 / originH;
544
568
  const viewOriginX = originX * scaleW;
545
569
  const viewOriginY = originY * scaleH;
546
- let internalX = x2 - viewOriginX;
547
- let internalY = y2 - viewOriginY;
570
+ const internalX = x2 - viewOriginX;
571
+ const internalY = y2 - viewOriginY;
548
572
  ctx.save();
549
573
  ctx.translate(internalX, internalY);
550
574
  ctx.scale(totalScale * scaleW, totalScale * scaleH);
@@ -564,7 +588,8 @@ var iDrawRenderer = function(exports) {
564
588
  function drawBoxBackground(ctx, viewElem, opts) {
565
589
  var _a, _b;
566
590
  const { pattern, viewScaleInfo, viewSizeInfo } = opts;
567
- let transform = [];
591
+ const transform = [];
592
+ viewElem.detail;
568
593
  viewElem.detail;
569
594
  if (viewElem.detail.background || pattern) {
570
595
  const { x: x2, y: y2, w: w2, h: h2, radiusList } = calcViewBoxSize(viewElem, {
@@ -777,7 +802,7 @@ var iDrawRenderer = function(exports) {
777
802
  const { detail, angle: angle2 } = elem;
778
803
  const { background = "#000000", borderColor = "#000000", borderWidth: borderWidth2 = 0 } = detail;
779
804
  const { calculator, viewScaleInfo, viewSizeInfo } = opts;
780
- const { x: x2, y: y2, w: w2, h: h2 } = calculator.elementSize({ x: elem.x, y: elem.y, w: elem.w, h: elem.h }, viewScaleInfo, viewSizeInfo);
805
+ const { x: x2, y: y2, w: w2, h: h2 } = (calculator == null ? void 0 : calculator.elementSize({ x: elem.x, y: elem.y, w: elem.w, h: elem.h }, viewScaleInfo, viewSizeInfo)) || elem;
781
806
  const viewElem = { ...elem, ...{ x: x2, y: y2, w: w2, h: h2, angle: angle2 } };
782
807
  rotateElement(ctx, { x: x2, y: y2, w: w2, h: h2, angle: angle2 }, () => {
783
808
  drawBoxShadow(ctx, viewElem, {
@@ -821,7 +846,7 @@ var iDrawRenderer = function(exports) {
821
846
  }
822
847
  function drawRect(ctx, elem, opts) {
823
848
  const { calculator, viewScaleInfo, viewSizeInfo } = opts;
824
- let { x: x2, y: y2, w: w2, h: h2, angle: angle2 } = calculator.elementSize(elem, viewScaleInfo, viewSizeInfo);
849
+ const { x: x2, y: y2, w: w2, h: h2, angle: angle2 } = (calculator == null ? void 0 : calculator.elementSize(elem, viewScaleInfo, viewSizeInfo)) || elem;
825
850
  const viewElem = { ...elem, ...{ x: x2, y: y2, w: w2, h: h2, angle: angle2 } };
826
851
  rotateElement(ctx, { x: x2, y: y2, w: w2, h: h2, angle: angle2 }, () => {
827
852
  drawBoxShadow(ctx, viewElem, {
@@ -843,7 +868,7 @@ var iDrawRenderer = function(exports) {
843
868
  function drawImage(ctx, elem, opts) {
844
869
  const content = opts.loader.getContent(elem);
845
870
  const { calculator, viewScaleInfo, viewSizeInfo } = opts;
846
- const { x: x2, y: y2, w: w2, h: h2, angle: angle2 } = calculator.elementSize(elem, viewScaleInfo, viewSizeInfo);
871
+ const { x: x2, y: y2, w: w2, h: h2, angle: angle2 } = (calculator == null ? void 0 : calculator.elementSize(elem, viewScaleInfo, viewSizeInfo)) || elem;
847
872
  const viewElem = { ...elem, ...{ x: x2, y: y2, w: w2, h: h2, angle: angle2 } };
848
873
  rotateElement(ctx, { x: x2, y: y2, w: w2, h: h2, angle: angle2 }, () => {
849
874
  drawBoxShadow(ctx, viewElem, {
@@ -890,7 +915,7 @@ var iDrawRenderer = function(exports) {
890
915
  function drawSVG(ctx, elem, opts) {
891
916
  const content = opts.loader.getContent(elem);
892
917
  const { calculator, viewScaleInfo, viewSizeInfo } = opts;
893
- const { x: x2, y: y2, w: w2, h: h2, angle: angle2 } = calculator.elementSize(elem, viewScaleInfo, viewSizeInfo);
918
+ const { x: x2, y: y2, w: w2, h: h2, angle: angle2 } = (calculator == null ? void 0 : calculator.elementSize(elem, viewScaleInfo, viewSizeInfo)) || elem;
894
919
  rotateElement(ctx, { x: x2, y: y2, w: w2, h: h2, angle: angle2 }, () => {
895
920
  if (!content) {
896
921
  opts.loader.load(elem, opts.elementAssets || {});
@@ -906,7 +931,7 @@ var iDrawRenderer = function(exports) {
906
931
  function drawHTML(ctx, elem, opts) {
907
932
  const content = opts.loader.getContent(elem);
908
933
  const { calculator, viewScaleInfo, viewSizeInfo } = opts;
909
- const { x: x2, y: y2, w: w2, h: h2, angle: angle2 } = calculator.elementSize(elem, viewScaleInfo, viewSizeInfo);
934
+ const { x: x2, y: y2, w: w2, h: h2, angle: angle2 } = (calculator == null ? void 0 : calculator.elementSize(elem, viewScaleInfo, viewSizeInfo)) || elem;
910
935
  rotateElement(ctx, { x: x2, y: y2, w: w2, h: h2, angle: angle2 }, () => {
911
936
  if (!content) {
912
937
  opts.loader.load(elem, opts.elementAssets || {});
@@ -922,7 +947,7 @@ var iDrawRenderer = function(exports) {
922
947
  const detailConfig = getDefaultElementDetailConfig();
923
948
  function drawText(ctx, elem, opts) {
924
949
  const { calculator, viewScaleInfo, viewSizeInfo } = opts;
925
- const { x: x2, y: y2, w: w2, h: h2, angle: angle2 } = calculator.elementSize(elem, viewScaleInfo, viewSizeInfo);
950
+ const { x: x2, y: y2, w: w2, h: h2, angle: angle2 } = (calculator == null ? void 0 : calculator.elementSize(elem, viewScaleInfo, viewSizeInfo)) || elem;
926
951
  const viewElem = { ...elem, ...{ x: x2, y: y2, w: w2, h: h2, angle: angle2 } };
927
952
  rotateElement(ctx, { x: x2, y: y2, w: w2, h: h2, angle: angle2 }, () => {
928
953
  drawBox(ctx, viewElem, {
@@ -1028,7 +1053,7 @@ var iDrawRenderer = function(exports) {
1028
1053
  const { detail } = elem;
1029
1054
  const { originX, originY, originW, originH } = detail;
1030
1055
  const { calculator, viewScaleInfo, viewSizeInfo } = opts;
1031
- const { x: x2, y: y2, w: w2, h: h2, angle: angle2 } = calculator.elementSize(elem, viewScaleInfo, viewSizeInfo);
1056
+ const { x: x2, y: y2, w: w2, h: h2, angle: angle2 } = (calculator == null ? void 0 : calculator.elementSize(elem, viewScaleInfo, viewSizeInfo)) || elem;
1032
1057
  const scaleW = w2 / originW;
1033
1058
  const scaleH = h2 / originH;
1034
1059
  const viewOriginX = originX * scaleW;
@@ -1127,7 +1152,7 @@ var iDrawRenderer = function(exports) {
1127
1152
  }
1128
1153
  function drawGroup(ctx, elem, opts) {
1129
1154
  const { calculator, viewScaleInfo, viewSizeInfo } = opts;
1130
- const { x: x2, y: y2, w: w2, h: h2, angle: angle2 } = calculator.elementSize({ x: elem.x, y: elem.y, w: elem.w, h: elem.h, angle: elem.angle }, viewScaleInfo, viewSizeInfo);
1155
+ const { x: x2, y: y2, w: w2, h: h2, angle: angle2 } = (calculator == null ? void 0 : calculator.elementSize({ x: elem.x, y: elem.y, w: elem.w, h: elem.h, angle: elem.angle }, viewScaleInfo, viewSizeInfo)) || elem;
1131
1156
  const viewElem = { ...elem, ...{ x: x2, y: y2, w: w2, h: h2, angle: angle2 } };
1132
1157
  rotateElement(ctx, { x: x2, y: y2, w: w2, h: h2, angle: angle2 }, () => {
1133
1158
  drawBoxShadow(ctx, viewElem, {
@@ -1176,8 +1201,10 @@ var iDrawRenderer = function(exports) {
1176
1201
  y: newParentSize.y + child.y
1177
1202
  }
1178
1203
  };
1179
- if (!calculator2.isElementInView(child, opts.viewScaleInfo, opts.viewSizeInfo)) {
1180
- continue;
1204
+ if (opts.forceDrawAll !== true) {
1205
+ if (!(calculator2 == null ? void 0 : calculator2.isElementInView(child, opts.viewScaleInfo, opts.viewSizeInfo))) {
1206
+ continue;
1207
+ }
1181
1208
  }
1182
1209
  try {
1183
1210
  drawElement(ctx, child, { ...opts });
@@ -1198,6 +1225,7 @@ var iDrawRenderer = function(exports) {
1198
1225
  }
1199
1226
  const defaultDetail = getDefaultElementDetailConfig();
1200
1227
  function drawElementList(ctx, data, opts) {
1228
+ var _a;
1201
1229
  const { elements = [] } = data;
1202
1230
  for (let i = 0; i < elements.length; i++) {
1203
1231
  const element = elements[i];
@@ -1210,8 +1238,10 @@ var iDrawRenderer = function(exports) {
1210
1238
  }
1211
1239
  }
1212
1240
  };
1213
- if (!opts.calculator.isElementInView(elem, opts.viewScaleInfo, opts.viewSizeInfo)) {
1214
- continue;
1241
+ if (opts.forceDrawAll !== true) {
1242
+ if (!((_a = opts.calculator) == null ? void 0 : _a.isElementInView(elem, opts.viewScaleInfo, opts.viewSizeInfo))) {
1243
+ continue;
1244
+ }
1215
1245
  }
1216
1246
  try {
1217
1247
  drawElement(ctx, elem, opts);
@@ -1242,10 +1272,17 @@ var iDrawRenderer = function(exports) {
1242
1272
  class Loader extends EventEmitter {
1243
1273
  constructor() {
1244
1274
  super();
1245
- this._loadFuncMap = {};
1246
- this._currentLoadItemMap = {};
1247
- this._storageLoadItemMap = {};
1248
- this._registerLoadFunc("image", async (elem, assets) => {
1275
+ __privateAdd(this, _registerLoadFunc);
1276
+ __privateAdd(this, _getLoadElementSource);
1277
+ __privateAdd(this, _createLoadItem);
1278
+ __privateAdd(this, _emitLoad);
1279
+ __privateAdd(this, _emitError);
1280
+ __privateAdd(this, _loadResource);
1281
+ __privateAdd(this, _isExistingErrorStorage);
1282
+ __privateAdd(this, _loadFuncMap, {});
1283
+ __privateAdd(this, _currentLoadItemMap, {});
1284
+ __privateAdd(this, _storageLoadItemMap, {});
1285
+ __privateMethod(this, _registerLoadFunc, registerLoadFunc_fn).call(this, "image", async (elem, assets) => {
1249
1286
  var _a;
1250
1287
  const src = ((_a = assets[elem.detail.src]) == null ? void 0 : _a.value) || elem.detail.src;
1251
1288
  const content = await loadImage(src);
@@ -1255,7 +1292,7 @@ var iDrawRenderer = function(exports) {
1255
1292
  content
1256
1293
  };
1257
1294
  });
1258
- this._registerLoadFunc("html", async (elem, assets) => {
1295
+ __privateMethod(this, _registerLoadFunc, registerLoadFunc_fn).call(this, "html", async (elem, assets) => {
1259
1296
  var _a;
1260
1297
  const html2 = ((_a = assets[elem.detail.html]) == null ? void 0 : _a.value) || elem.detail.html;
1261
1298
  const content = await loadHTML(html2, {
@@ -1268,7 +1305,7 @@ var iDrawRenderer = function(exports) {
1268
1305
  content
1269
1306
  };
1270
1307
  });
1271
- this._registerLoadFunc("svg", async (elem, assets) => {
1308
+ __privateMethod(this, _registerLoadFunc, registerLoadFunc_fn).call(this, "svg", async (elem, assets) => {
1272
1309
  var _a;
1273
1310
  const svg2 = ((_a = assets[elem.detail.svg]) == null ? void 0 : _a.value) || elem.detail.svg;
1274
1311
  const content = await loadSVG(svg2);
@@ -1279,127 +1316,137 @@ var iDrawRenderer = function(exports) {
1279
1316
  };
1280
1317
  });
1281
1318
  }
1282
- _registerLoadFunc(type, func) {
1283
- this._loadFuncMap[type] = func;
1284
- }
1285
- _getLoadElementSource(element) {
1286
- var _a, _b, _c;
1287
- let source = null;
1288
- if (element.type === "image") {
1289
- source = ((_a = element == null ? void 0 : element.detail) == null ? void 0 : _a.src) || null;
1290
- } else if (element.type === "svg") {
1291
- source = ((_b = element == null ? void 0 : element.detail) == null ? void 0 : _b.svg) || null;
1292
- } else if (element.type === "html") {
1293
- source = ((_c = element == null ? void 0 : element.detail) == null ? void 0 : _c.html) || null;
1294
- }
1295
- return source;
1296
- }
1297
- _createLoadItem(element) {
1298
- return {
1299
- element,
1300
- status: "null",
1301
- content: null,
1302
- error: null,
1303
- startTime: -1,
1304
- endTime: -1,
1305
- source: this._getLoadElementSource(element)
1306
- };
1307
- }
1308
- _emitLoad(item) {
1309
- const assetId = getAssetIdFromElement(item.element);
1310
- const storageItem = this._storageLoadItemMap[assetId];
1311
- if (storageItem) {
1312
- if (storageItem.startTime < item.startTime) {
1313
- this._storageLoadItemMap[assetId] = item;
1314
- this.trigger("load", { ...item, countTime: item.endTime - item.startTime });
1315
- }
1316
- } else {
1317
- this._storageLoadItemMap[assetId] = item;
1318
- this.trigger("load", { ...item, countTime: item.endTime - item.startTime });
1319
- }
1320
- }
1321
- _emitError(item) {
1322
- const assetId = getAssetIdFromElement(item.element);
1323
- const storageItem = this._storageLoadItemMap[assetId];
1324
- if (storageItem) {
1325
- if (storageItem.startTime < item.startTime) {
1326
- this._storageLoadItemMap[assetId] = item;
1327
- this.trigger("error", { ...item, countTime: item.endTime - item.startTime });
1328
- }
1329
- } else {
1330
- this._storageLoadItemMap[assetId] = item;
1331
- this.trigger("error", { ...item, countTime: item.endTime - item.startTime });
1332
- }
1333
- }
1334
- _loadResource(element, assets) {
1335
- const item = this._createLoadItem(element);
1336
- const assetId = getAssetIdFromElement(element);
1337
- this._currentLoadItemMap[assetId] = item;
1338
- const loadFunc = this._loadFuncMap[element.type];
1339
- if (typeof loadFunc === "function") {
1340
- item.startTime = Date.now();
1341
- loadFunc(element, assets).then((result) => {
1342
- item.content = result.content;
1343
- item.endTime = Date.now();
1344
- item.status = "load";
1345
- this._emitLoad(item);
1346
- }).catch((err) => {
1347
- console.warn(`Load element source "${item.source}" fail`, err, element);
1348
- item.endTime = Date.now();
1349
- item.status = "error";
1350
- item.error = err;
1351
- this._emitError(item);
1352
- });
1353
- }
1354
- }
1355
- _isExistingErrorStorage(element) {
1356
- var _a;
1357
- const assetId = getAssetIdFromElement(element);
1358
- const existItem = (_a = this._currentLoadItemMap) == null ? void 0 : _a[assetId];
1359
- if (existItem && existItem.status === "error" && existItem.source && existItem.source === this._getLoadElementSource(element)) {
1360
- return true;
1361
- }
1362
- return false;
1363
- }
1364
1319
  load(element, assets) {
1365
- if (this._isExistingErrorStorage(element)) {
1320
+ if (__privateMethod(this, _isExistingErrorStorage, isExistingErrorStorage_fn).call(this, element)) {
1366
1321
  return;
1367
1322
  }
1368
1323
  if (supportElementTypes.includes(element.type)) {
1369
- this._loadResource(element, assets);
1324
+ __privateMethod(this, _loadResource, loadResource_fn).call(this, element, assets);
1370
1325
  }
1371
1326
  }
1372
1327
  getContent(element) {
1373
1328
  var _a, _b;
1374
1329
  const assetId = getAssetIdFromElement(element);
1375
- return ((_b = (_a = this._storageLoadItemMap) == null ? void 0 : _a[assetId]) == null ? void 0 : _b.content) || null;
1330
+ return ((_b = (_a = __privateGet(this, _storageLoadItemMap)) == null ? void 0 : _a[assetId]) == null ? void 0 : _b.content) || null;
1331
+ }
1332
+ getLoadItemMap() {
1333
+ return __privateGet(this, _storageLoadItemMap);
1334
+ }
1335
+ setLoadItemMap(itemMap) {
1336
+ __privateSet(this, _storageLoadItemMap, itemMap);
1376
1337
  }
1377
1338
  }
1339
+ _loadFuncMap = new WeakMap();
1340
+ _currentLoadItemMap = new WeakMap();
1341
+ _storageLoadItemMap = new WeakMap();
1342
+ _registerLoadFunc = new WeakSet();
1343
+ registerLoadFunc_fn = function(type, func) {
1344
+ __privateGet(this, _loadFuncMap)[type] = func;
1345
+ };
1346
+ _getLoadElementSource = new WeakSet();
1347
+ getLoadElementSource_fn = function(element) {
1348
+ var _a, _b, _c;
1349
+ let source = null;
1350
+ if (element.type === "image") {
1351
+ source = ((_a = element == null ? void 0 : element.detail) == null ? void 0 : _a.src) || null;
1352
+ } else if (element.type === "svg") {
1353
+ source = ((_b = element == null ? void 0 : element.detail) == null ? void 0 : _b.svg) || null;
1354
+ } else if (element.type === "html") {
1355
+ source = ((_c = element == null ? void 0 : element.detail) == null ? void 0 : _c.html) || null;
1356
+ }
1357
+ return source;
1358
+ };
1359
+ _createLoadItem = new WeakSet();
1360
+ createLoadItem_fn = function(element) {
1361
+ return {
1362
+ element,
1363
+ status: "null",
1364
+ content: null,
1365
+ error: null,
1366
+ startTime: -1,
1367
+ endTime: -1,
1368
+ source: __privateMethod(this, _getLoadElementSource, getLoadElementSource_fn).call(this, element)
1369
+ };
1370
+ };
1371
+ _emitLoad = new WeakSet();
1372
+ emitLoad_fn = function(item) {
1373
+ const assetId = getAssetIdFromElement(item.element);
1374
+ const storageItem = __privateGet(this, _storageLoadItemMap)[assetId];
1375
+ if (storageItem) {
1376
+ if (storageItem.startTime < item.startTime) {
1377
+ __privateGet(this, _storageLoadItemMap)[assetId] = item;
1378
+ this.trigger("load", { ...item, countTime: item.endTime - item.startTime });
1379
+ }
1380
+ } else {
1381
+ __privateGet(this, _storageLoadItemMap)[assetId] = item;
1382
+ this.trigger("load", { ...item, countTime: item.endTime - item.startTime });
1383
+ }
1384
+ };
1385
+ _emitError = new WeakSet();
1386
+ emitError_fn = function(item) {
1387
+ const assetId = getAssetIdFromElement(item.element);
1388
+ const storageItem = __privateGet(this, _storageLoadItemMap)[assetId];
1389
+ if (storageItem) {
1390
+ if (storageItem.startTime < item.startTime) {
1391
+ __privateGet(this, _storageLoadItemMap)[assetId] = item;
1392
+ this.trigger("error", { ...item, countTime: item.endTime - item.startTime });
1393
+ }
1394
+ } else {
1395
+ __privateGet(this, _storageLoadItemMap)[assetId] = item;
1396
+ this.trigger("error", { ...item, countTime: item.endTime - item.startTime });
1397
+ }
1398
+ };
1399
+ _loadResource = new WeakSet();
1400
+ loadResource_fn = function(element, assets) {
1401
+ const item = __privateMethod(this, _createLoadItem, createLoadItem_fn).call(this, element);
1402
+ const assetId = getAssetIdFromElement(element);
1403
+ __privateGet(this, _currentLoadItemMap)[assetId] = item;
1404
+ const loadFunc = __privateGet(this, _loadFuncMap)[element.type];
1405
+ if (typeof loadFunc === "function") {
1406
+ item.startTime = Date.now();
1407
+ loadFunc(element, assets).then((result) => {
1408
+ item.content = result.content;
1409
+ item.endTime = Date.now();
1410
+ item.status = "load";
1411
+ __privateMethod(this, _emitLoad, emitLoad_fn).call(this, item);
1412
+ }).catch((err) => {
1413
+ console.warn(`Load element source "${item.source}" fail`, err, element);
1414
+ item.endTime = Date.now();
1415
+ item.status = "error";
1416
+ item.error = err;
1417
+ __privateMethod(this, _emitError, emitError_fn).call(this, item);
1418
+ });
1419
+ }
1420
+ };
1421
+ _isExistingErrorStorage = new WeakSet();
1422
+ isExistingErrorStorage_fn = function(element) {
1423
+ var _a;
1424
+ const assetId = getAssetIdFromElement(element);
1425
+ const existItem = (_a = __privateGet(this, _currentLoadItemMap)) == null ? void 0 : _a[assetId];
1426
+ if (existItem && existItem.status === "error" && existItem.source && existItem.source === __privateMethod(this, _getLoadElementSource, getLoadElementSource_fn).call(this, element)) {
1427
+ return true;
1428
+ }
1429
+ return false;
1430
+ };
1378
1431
  class Renderer extends EventEmitter {
1379
1432
  // private _draftContextTop: CanvasRenderingContext2D;
1380
1433
  // private _draftContextMiddle: CanvasRenderingContext2D;
1381
1434
  // private _draftContextBottom: CanvasRenderingContext2D;
1382
1435
  constructor(opts) {
1383
1436
  super();
1384
- this._loader = new Loader();
1385
- this._opts = opts;
1386
- this._init();
1387
- }
1388
- _init() {
1389
- const { _loader: loader } = this;
1390
- loader.on("load", (e) => {
1391
- this.trigger("load", e);
1392
- });
1393
- loader.on("error", () => {
1394
- });
1437
+ __privateAdd(this, _init);
1438
+ __privateAdd(this, _opts, void 0);
1439
+ __privateAdd(this, _loader, new Loader());
1440
+ __privateSet(this, _opts, opts);
1441
+ __privateMethod(this, _init, init_fn).call(this);
1395
1442
  }
1396
1443
  updateOptions(opts) {
1397
- this._opts = opts;
1444
+ __privateSet(this, _opts, opts);
1398
1445
  }
1399
1446
  drawData(data, opts) {
1400
- const { _loader: loader } = this;
1401
- const { calculator } = this._opts;
1402
- const { viewContext } = this._opts.viewContent;
1447
+ const loader = __privateGet(this, _loader);
1448
+ const { calculator } = __privateGet(this, _opts);
1449
+ const viewContext = __privateGet(this, _opts).viewContext;
1403
1450
  viewContext.clearRect(0, 0, viewContext.canvas.width, viewContext.canvas.height);
1404
1451
  const parentElementSize = {
1405
1452
  x: 0,
@@ -1416,7 +1463,10 @@ var iDrawRenderer = function(exports) {
1416
1463
  });
1417
1464
  }
1418
1465
  scale(num) {
1419
- const { sharer } = this._opts;
1466
+ const { sharer } = __privateGet(this, _opts);
1467
+ if (!sharer) {
1468
+ return;
1469
+ }
1420
1470
  const { data, offsetTop, offsetBottom, offsetLeft, offsetRight, width, height, contextHeight, contextWidth, devicePixelRatio } = sharer.getActiveStoreSnapshot();
1421
1471
  if (data) {
1422
1472
  this.drawData(data, {
@@ -1437,7 +1487,24 @@ var iDrawRenderer = function(exports) {
1437
1487
  });
1438
1488
  }
1439
1489
  }
1490
+ setLoadItemMap(itemMap) {
1491
+ __privateGet(this, _loader).setLoadItemMap(itemMap);
1492
+ }
1493
+ getLoadItemMap() {
1494
+ return __privateGet(this, _loader).getLoadItemMap();
1495
+ }
1440
1496
  }
1497
+ _opts = new WeakMap();
1498
+ _loader = new WeakMap();
1499
+ _init = new WeakSet();
1500
+ init_fn = function() {
1501
+ const loader = __privateGet(this, _loader);
1502
+ loader.on("load", (e) => {
1503
+ this.trigger("load", e);
1504
+ });
1505
+ loader.on("error", () => {
1506
+ });
1507
+ };
1441
1508
  exports.Renderer = Renderer;
1442
1509
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
1443
1510
  return exports;
@@ -1 +1 @@
1
- var iDrawRenderer=function(e){"use strict";function t(e){return"string"==typeof e&&(/^\#([0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(e)||/^[a-z]{1,}$/i.test(e))}function n(e,t){if(1===t)return e;let n=1;const o=/^\#[0-9a-f]{6,6}$/i;let i=e;if(o.test(e)?n=parseInt(e.substring(5,7).replace(/^\#/,"0x")):/^\#[0-9a-f]{8,8}$/i.test(e)&&(n=parseInt(e.substring(7,9).replace(/^\#/,"0x")),i=e.substring(0,7)),n*=t,o.test(i)&&n>0&&n<1){const e=Math.max(0,Math.min(255,Math.ceil(256*n)));i=`${i.toUpperCase()}${e.toString(16).toUpperCase()}`}return i}function o(){function e(){return(65536*(1+Math.random())|0).toString(16).substring(1)}return`${e()}${e()}-${e()}-${e()}-${e()}-${e()}${e()}${e()}`}function i(e){let t=0;for(let n=0;n<e.length;n++)t+=e.charCodeAt(n)*e.charCodeAt(n)*n*n;return t.toString(16).substring(0,4)}function a(e){const t=e.length,n=Math.floor(t/2),o=e.substring(0,4).padEnd(4,"0"),a=e.substring(0,4).padEnd(4,"0");return`@assets/${i(t.toString(16).padEnd(4,o))}${i(e.substring(n-4,n).padEnd(4,o)).padEnd(4,"f")}-${i(e.substring(n-8,n-4).padEnd(4,o)).padEnd(4,"f")}-${i(e.substring(n-12,n-8).padEnd(4,o)).padEnd(4,"f")}-${i(e.substring(n-16,n-12).padEnd(4,a)).padEnd(4,"f")}-${i(e.substring(n,n+4).padEnd(4,a)).padEnd(4,"f")}${i(e.substring(n+4,n+8).padEnd(4,a)).padEnd(4,"f")}${i(a.padEnd(4,o).padEnd(4,a))}`}function r(e){return(Object.prototype.toString.call(e)||"").replace(/(\[object|\])/gi,"").trim()}const l={type(e,t){const n=r(e);return!0===t?n.toLocaleLowerCase():n},array:e=>"Array"===r(e),json:e=>"Object"===r(e),function:e=>"Function"===r(e),asyncFunction:e=>"AsyncFunction"===r(e),string:e=>"String"===r(e),number:e=>"Number"===r(e),undefined:e=>"Undefined"===r(e),null:e=>"Null"===r(e),promise:e=>"Promise"===r(e)};var s=function(e,t,n,o){return new(n||(n=Promise))((function(i,a){function r(e){try{s(o.next(e))}catch(e){a(e)}}function l(e){try{s(o.throw(e))}catch(e){a(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(r,l)}s((o=o.apply(e,t||[])).next())}))};const{Image:c}=window;function d(e){return new Promise(((t,n)=>{const o=new c;o.crossOrigin="anonymous",o.onload=function(){t(o)},o.onabort=n,o.onerror=n,o.src=e}))}function h(e){return s(this,void 0,void 0,(function*(){const t=yield function(e){return new Promise(((t,n)=>{const o=new Blob([e],{type:"image/svg+xml;charset=utf-8"}),i=new FileReader;i.readAsDataURL(o),i.onload=function(e){var n;const o=null===(n=null==e?void 0:e.target)||void 0===n?void 0:n.result;t(o)},i.onerror=function(e){n(e)}}))}(e);return yield d(t)}))}function u(e,t){return s(this,void 0,void 0,(function*(){e=e.replace(/\&/gi,"&amp;");const n=yield function(e,t){const{width:n,height:o}=t;return new Promise(((t,i)=>{const a=new Blob([`\n <svg \n xmlns="http://www.w3.org/2000/svg" \n width="${n||""}" \n height = "${o||""}">\n <foreignObject width="100%" height="100%">\n <div xmlns = "http://www.w3.org/1999/xhtml">\n ${e}\n </div>\n </foreignObject>\n </svg>\n `],{type:"image/svg+xml;charset=utf-8"}),r=new FileReader;r.readAsDataURL(a),r.onload=function(e){var n;const o=null===(n=null==e?void 0:e.target)||void 0===n?void 0:n.result;t(o)},r.onerror=function(e){i(e)}}))}(e,t);return yield d(n)}))}function f(e){return"number"==typeof e&&(e>0||e<=0)}function g(e){return"number"==typeof e&&e>=0}function w(e){return"string"==typeof e&&/^(http:\/\/|https:\/\/|\.\/|\/)/.test(`${e}`)}function v(e){return"string"==typeof e&&/^(data:image\/)/.test(`${e}`)}const y={x:function(e){return f(e)},y:function(e){return f(e)},w:g,h:function(e){return"number"==typeof e&&e>=0},angle:function(e){return"number"==typeof e&&e>=-360&&e<=360},number:f,numberStr:function(e){return/^(-?\d+(?:\.\d+)?)$/.test(`${e}`)},borderWidth:function(e){return g(e)},borderRadius:function(e){return f(e)&&e>=0},color:function(e){return t(e)},imageSrc:function(e){return v(e)||w(e)},imageURL:w,imageBase64:v,svg:function(e){return"string"==typeof e&&/^(<svg[\s]{1,}|<svg>)/i.test(`${e}`.trim())&&/<\/[\s]{0,}svg>$/i.test(`${e}`.trim())},html:function(e){let t=!1;if("string"==typeof e){let n=document.createElement("div");n.innerHTML=e,n.children.length>0&&(t=!0),n=null}return t},text:function(e){return"string"==typeof e},fontSize:function(e){return f(e)&&e>0},lineHeight:function(e){return f(e)&&e>0},textAlign:function(e){return["center","left","right"].includes(e)},fontFamily:function(e){return"string"==typeof e&&e.length>0},fontWeight:function(e){return["bold"].includes(e)},strokeWidth:function(e){return f(e)&&e>0}};class m{constructor(){this._listeners=new Map}on(e,t){if(this._listeners.has(e)){const n=this._listeners.get(e)||[];null==n||n.push(t),this._listeners.set(e,n)}else this._listeners.set(e,[t])}off(e,t){if(this._listeners.has(e)){const n=this._listeners.get(e);if(Array.isArray(n))for(let e=0;e<(null==n?void 0:n.length);e++)if(n[e]===t){n.splice(e,1);break}this._listeners.set(e,n||[])}}trigger(e,t){const n=this._listeners.get(e);return!!Array.isArray(n)&&(n.forEach((e=>{e(t)})),!0)}has(e){if(this._listeners.has(e)){const t=this._listeners.get(e);if(Array.isArray(t)&&t.length>0)return!0}return!1}}function p(e,t,n,o){const i=function(e){return e/180*Math.PI}(t||0);n&&(i>0||i<0)&&(e.translate(n.x,n.y),e.rotate(i),e.translate(-n.x,-n.y)),o(e),n&&(i>0||i<0)&&(e.translate(n.x,n.y),e.rotate(-i),e.translate(-n.x,-n.y))}function x(e,t,n){const o={x:(i=t).x+i.w/2,y:i.y+i.h/2};var i;p(e,t.angle||0,o,(()=>{n(e)}))}function S(e){let t="";return e.forEach((e=>{t+=e.type+e.params.join(" ")})),t}const b={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 I(e,t){const{viewScaleInfo:n}=t,{scale:o}=n;let{borderRadius:i,boxSizing:a=b.boxSizing,borderWidth:r}=e.detail;"number"!=typeof r&&(i=0);let{x:l,y:s,w:c,h:d}=e,h=[0,0,0,0];if("number"==typeof i){const e=i*o;h=[e,e,e,e]}else Array.isArray(i)&&4===(null==i?void 0:i.length)&&(h=[i[0]*o,i[1]*o,i[2]*o,i[3]*o]);let u=0;return"number"==typeof r&&(u=(r||0)*o),"border-box"===a?(l=e.x+u/2,s=e.y+u/2,c=e.w-u,d=e.h-u):"content-box"===a?(l=e.x-u/2,s=e.y-u/2,c=e.w+u,d=e.h+u):(l=e.x,s=e.y,c=e.w,d=e.h),c=Math.max(c,1),d=Math.max(d,1),h=h.map((e=>Math.min(e,c/2,d/2))),{x:l,y:s,w:c,h:d,radiusList:h}}function z(e,t,o){if("string"==typeof t)return t;const{viewElementSize:i,viewScaleInfo:a,opacity:r=1}=o,{x:l,y:s}=i,{scale:c}=a;if("linear-gradient"===(null==t?void 0:t.type)){const{start:o,end:i,stops:a}=t,d={x:l+o.x*c,y:s+o.y*c},h={x:l+i.x*c,y:s+i.y*c},u=e.createLinearGradient(d.x,d.y,h.x,h.y);return a.forEach((e=>{u.addColorStop(e.offset,n(e.color,r))})),u}if("radial-gradient"===(null==t?void 0:t.type)){const{inner:o,outer:i,stops:a}=t,d={x:l+o.x*c,y:s+o.y*c,radius:o.radius*c},h={x:l+i.x*c,y:s+i.y*c,radius:i.radius*c},u=e.createRadialGradient(d.x,d.y,d.radius,h.x,h.y,h.radius);return a.forEach((e=>{u.addColorStop(e.offset,n(e.color,r))})),u}return"#000000"}const A={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 T(e,n,o){const{pattern:i,renderContent:a,originElem:r,calcElemSize:s,viewScaleInfo:c,viewSizeInfo:d}=o||{};!function(e,t,n){const{renderContent:o,originElem:i,calcElemSize:a,viewScaleInfo:r,viewSizeInfo:l}=n,s=r.scale*l.devicePixelRatio,{clipPath:c}=(null==i?void 0:i.detail)||{};if(c&&a&&c.commands){const{x:n,y:i,w:r,h:l}=a,{originW:d,originH:h,originX:u,originY:f}=c,g=r/d,w=l/h;let v=n-u*g,y=i-f*w;e.save(),e.translate(v,y),e.scale(s*g,s*w);const m=S(c.commands||[]),p=new Path2D(m);e.clip(p),e.translate(0-v,0-y),e.setTransform(1,0,0,1,0,0),x(e,{...t},(()=>{null==o||o()})),e.restore()}else null==o||o()}(e,n,{originElem:r,calcElemSize:s,viewScaleInfo:c,viewSizeInfo:d,renderContent:()=>{var o,r;void 0!==(null==(o=null==n?void 0:n.detail)?void 0:o.opacity)&&(null==(r=null==n?void 0:n.detail)?void 0:r.opacity)>=0?e.globalAlpha=n.detail.opacity:e.globalAlpha=1,function(e,t,n){var o,i;const{pattern:a,viewScaleInfo:r,viewSizeInfo:s}=n;let c=[];if(t.detail,t.detail.background||a){const{x:n,y:d,w:h,h:u,radiusList:f}=I(t,{viewScaleInfo:r,viewSizeInfo:s});if(e.beginPath(),e.moveTo(n+f[0],d),e.arcTo(n+h,d,n+h,d+u,f[1]),e.arcTo(n+h,d+u,n,d+u,f[2]),e.arcTo(n,d+u,n,d,f[3]),e.arcTo(n,d,n+h,d,f[0]),e.closePath(),"string"==typeof a)e.fillStyle=a;else if(["CanvasPattern"].includes(l.type(a)))e.fillStyle=a;else if("string"==typeof t.detail.background)e.fillStyle=t.detail.background;else if("linear-gradient"===(null==(o=t.detail.background)?void 0:o.type)){const o=z(e,t.detail.background,{viewElementSize:{x:n,y:d,w:h,h:u},viewScaleInfo:r,opacity:e.globalAlpha});e.fillStyle=o}else if("radial-gradient"===(null==(i=t.detail.background)?void 0:i.type)){const o=z(e,t.detail.background,{viewElementSize:{x:n,y:d,w:h,h:u},viewScaleInfo:r,opacity:e.globalAlpha});if(e.fillStyle=o,c&&c.length>0)for(let t=0;t<(null==c?void 0:c.length);t++){const o=c[t];"translate"===o.method?e.translate(o.args[0]+n,o.args[1]+d):"rotate"===o.method?e.rotate(...o.args):"scale"===o.method&&e.scale(...o.args)}}e.fill(),c&&c.length>0&&e.setTransform(1,0,0,1,0,0)}}(e,n,{pattern:i,viewScaleInfo:c,viewSizeInfo:d}),null==a||a(),function(e,n,o){var i,a;if(0===n.detail.borderWidth)return;if(!t(n.detail.borderColor))return;void 0!==(null==(i=null==n?void 0:n.detail)?void 0:i.opacity)&&(null==(a=null==n?void 0:n.detail)?void 0:a.opacity)>=0?e.globalAlpha=n.detail.opacity:e.globalAlpha=1;const{viewScaleInfo:r}=o,{scale:l}=r;let s=A.borderColor;!0===t(n.detail.borderColor)&&(s=n.detail.borderColor);const{borderWidth:c,borderRadius:d,borderDash:h,boxSizing:u=A.boxSizing}=n.detail;let f=0;"number"==typeof c&&(f=c||1);f*=l;let g=[0,0,0,0];if("number"==typeof d){const e=d*l;g=[e,e,e,e]}else Array.isArray(d)&&4===(null==d?void 0:d.length)&&(g=[d[0]*l,d[1]*l,d[2]*l,d[3]*l]);e.strokeStyle=s;let w=[];Array.isArray(h)&&h.length>0&&(w=h.map((e=>Math.ceil(e*l))));let v=0,y=0,m=0,p=0;Array.isArray(c)&&(v=(c[0]||0)*l,y=(c[1]||0)*l,m=(c[2]||0)*l,p=(c[3]||0)*l);if(p||y||v||m){e.lineCap="butt";let{x:t,y:o,w:i,h:a}=n;"border-box"===u?(t+=p/2,o+=v/2,i=i-p/2-y/2,a=a-v/2-m/2):"content-box"===u?(t-=p/2,o-=v/2,i=i+p/2+y/2,a=a+v/2+m/2):(t=n.x,o=n.y,i=n.w,a=n.h),v&&(e.beginPath(),e.lineWidth=v,e.moveTo(t-p/2,o),e.lineTo(t+i+y/2,o),e.closePath(),e.stroke()),y&&(e.beginPath(),e.lineWidth=y,e.moveTo(t+i,o-v/2),e.lineTo(t+i,o+a+m/2),e.closePath(),e.stroke()),m&&(e.beginPath(),e.lineWidth=m,e.moveTo(t-p/2,o+a),e.lineTo(t+i+y/2,o+a),e.closePath(),e.stroke()),p&&(e.beginPath(),e.lineWidth=p,e.moveTo(t,o-v/2),e.lineTo(t,o+a+m/2),e.closePath(),e.stroke())}else{let{x:t,y:o,w:i,h:a}=n;"border-box"===u?(t=n.x+f/2,o=n.y+f/2,i=n.w-f,a=n.h-f):"content-box"===u?(t=n.x-f/2,o=n.y-f/2,i=n.w+f,a=n.h+f):(t=n.x,o=n.y,i=n.w,a=n.h),w.length>0?e.lineCap="butt":e.lineCap="square",i=Math.max(i,1),a=Math.max(a,1),g=g.map((e=>Math.min(e,i/2,a/2))),e.setLineDash(w),e.lineWidth=f,e.beginPath(),e.moveTo(t+g[0],o),e.arcTo(t+i,o,t+i,o+a,g[1]),e.arcTo(t+i,o+a,t,o+a,g[2]),e.arcTo(t,o+a,t,o,g[3]),e.arcTo(t,o,t+i,o,g[0]),e.closePath(),e.stroke(),e.globalAlpha=1}e.setLineDash([])}(e,n,{viewScaleInfo:c,viewSizeInfo:d}),e.globalAlpha=1}})}function E(e,t,n){const{detail:o}=t,{viewScaleInfo:i,renderContent:a}=n,{shadowColor:r,shadowOffsetX:l,shadowOffsetY:s,shadowBlur:c}=o;y.number(c)?(e.save(),e.shadowColor=r||A.shadowColor,e.shadowOffsetX=(l||0)*i.scale,e.shadowOffsetY=(s||0)*i.scale,e.shadowBlur=(c||0)*i.scale,a(),e.restore()):a()}const C={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 _(e,n,o){var i;if(!0!==(null==(i=null==n?void 0:n.operations)?void 0:i.invisible))try{switch(n.type){case"rect":!function(e,t,n){const{calculator:o,viewScaleInfo:i,viewSizeInfo:a}=n;let{x:r,y:l,w:s,h:c,angle:d}=o.elementSize(t,i,a);const h={...t,x:r,y:l,w:s,h:c,angle:d};x(e,{x:r,y:l,w:s,h:c,angle:d},(()=>{E(e,h,{viewScaleInfo:i,viewSizeInfo:a,renderContent:()=>{T(e,h,{originElem:t,calcElemSize:{x:r,y:l,w:s,h:c,angle:d},viewScaleInfo:i,viewSizeInfo:a,renderContent:()=>{}})}})}))}(e,n,o);break;case"circle":!function(e,t,n){const{detail:o,angle:i}=t,{background:a="#000000",borderColor:r="#000000",borderWidth:l=0}=o,{calculator:s,viewScaleInfo:c,viewSizeInfo:d}=n,{x:h,y:u,w:f,h:g}=s.elementSize({x:t.x,y:t.y,w:t.w,h:t.h},c,d),w={...t,x:h,y:u,w:f,h:g,angle:i};x(e,{x:h,y:u,w:f,h:g,angle:i},(()=>{E(e,w,{viewScaleInfo:c,viewSizeInfo:d,renderContent:()=>{var n,o;const i=f/2,s=g/2,d=h+i,w=u+s;if(void 0!==(null==(n=null==t?void 0:t.detail)?void 0:n.opacity)&&(null==(o=null==t?void 0:t.detail)?void 0:o.opacity)>=0?e.globalAlpha=t.detail.opacity:e.globalAlpha=1,"number"==typeof l&&l>0){const t=l/2+i,n=l/2+s;e.beginPath(),e.strokeStyle=r,e.lineWidth=l,e.circle(d,w,t,n,0,0,2*Math.PI),e.closePath(),e.stroke()}e.beginPath();const v=z(e,a,{viewElementSize:{x:h,y:u,w:f,h:g},viewScaleInfo:c,opacity:e.globalAlpha});e.fillStyle=v,e.circle(d,w,i,s,0,0,2*Math.PI),e.closePath(),e.fill(),e.globalAlpha=1}})}))}(e,n,o);break;case"text":!function(e,n,o){const{calculator:i,viewScaleInfo:a,viewSizeInfo:r}=o,{x:l,y:s,w:c,h:d,angle:h}=i.elementSize(n,a,r),u={...n,x:l,y:s,w:c,h:d,angle:h};x(e,{x:l,y:s,w:c,h:d,angle:h},(()=>{T(e,u,{originElem:n,calcElemSize:{x:l,y:s,w:c,h:d,angle:h},viewScaleInfo:a,viewSizeInfo:r,renderContent:()=>{const o={...C,...n.detail},i=(o.fontSize||C.fontSize)*a.scale,r=o.lineHeight?o.lineHeight*a.scale:i;e.fillStyle=n.detail.color||C.color,e.textBaseline="top",e.$setFont({fontWeight:o.fontWeight,fontSize:i,fontFamily:o.fontFamily});const h=o.text.replace(/\r\n/gi,"\n"),u=r,f=h.split("\n"),g=[];let w=0;f.forEach(((t,n)=>{let o="";if(t.length>0){for(let i=0;i<t.length&&(e.measureText(o+(t[i]||"")).width<e.$doPixelRatio(c)?o+=t[i]||"":(g.push({text:o,width:e.$undoPixelRatio(e.measureText(o).width)}),o=t[i]||"",w++),!((w+1)*u>d));i++)if(t.length-1===i&&(w+1)*u<d){g.push({text:o,width:e.$undoPixelRatio(e.measureText(o).width)}),n<f.length-1&&w++;break}}else g.push({text:"",width:0})}));let v=0;g.length*u<d&&("top"===n.detail.verticalAlign?v=0:"bottom"===n.detail.verticalAlign?v+=d-g.length*u:v+=(d-g.length*u)/2);{const n=s+v;void 0!==o.textShadowColor&&t(o.textShadowColor)&&(e.shadowColor=o.textShadowColor),void 0!==o.textShadowOffsetX&&y.number(o.textShadowOffsetX)&&(e.shadowOffsetX=o.textShadowOffsetX),void 0!==o.textShadowOffsetY&&y.number(o.textShadowOffsetY)&&(e.shadowOffsetY=o.textShadowOffsetY),void 0!==o.textShadowBlur&&y.number(o.textShadowBlur)&&(e.shadowBlur=o.textShadowBlur),g.forEach(((t,i)=>{let a=l;"center"===o.textAlign?a=l+(c-t.width)/2:"right"===o.textAlign&&(a=l+(c-t.width)),e.fillText(t.text,a,n+u*i)}))}}})}))}(e,n,o);break;case"image":!function(e,t,n){const o=n.loader.getContent(t),{calculator:i,viewScaleInfo:a,viewSizeInfo:r}=n,{x:l,y:s,w:c,h:d,angle:h}=i.elementSize(t,a,r),u={...t,x:l,y:s,w:c,h:d,angle:h};x(e,{x:l,y:s,w:c,h:d,angle:h},(()=>{E(e,u,{viewScaleInfo:a,viewSizeInfo:r,renderContent:()=>{T(e,u,{originElem:t,calcElemSize:{x:l,y:s,w:c,h:d,angle:h},viewScaleInfo:a,viewSizeInfo:r,renderContent:()=>{if(o||n.loader.load(t,n.elementAssets||{}),"image"===t.type&&o){const{opacity:n}=t.detail;e.globalAlpha=n||1;const{x:i,y:l,w:s,h:c,radiusList:d}=I(u,{viewScaleInfo:a,viewSizeInfo:r});e.save(),e.fillStyle="transparent",e.beginPath(),e.moveTo(i+d[0],l),e.arcTo(i+s,l,i+s,l+c,d[1]),e.arcTo(i+s,l+c,i,l+c,d[2]),e.arcTo(i,l+c,i,l,d[3]),e.arcTo(i,l,i+s,l,d[0]),e.closePath(),e.fill(),e.clip(),e.drawImage(o,i,l,s,c),e.globalAlpha=1,e.restore()}}})}})}))}(e,n,o);break;case"svg":!function(e,t,n){const o=n.loader.getContent(t),{calculator:i,viewScaleInfo:a,viewSizeInfo:r}=n,{x:l,y:s,w:c,h:d,angle:h}=i.elementSize(t,a,r);x(e,{x:l,y:s,w:c,h:d,angle:h},(()=>{if(o||n.loader.load(t,n.elementAssets||{}),"svg"===t.type&&o){const{opacity:n}=t.detail;e.globalAlpha=n||1,e.drawImage(o,l,s,c,d),e.globalAlpha=1}}))}(e,n,o);break;case"html":!function(e,t,n){const o=n.loader.getContent(t),{calculator:i,viewScaleInfo:a,viewSizeInfo:r}=n,{x:l,y:s,w:c,h:d,angle:h}=i.elementSize(t,a,r);x(e,{x:l,y:s,w:c,h:d,angle:h},(()=>{if(o||n.loader.load(t,n.elementAssets||{}),"html"===t.type&&o){const{opacity:n}=t.detail;e.globalAlpha=n||1,e.drawImage(o,l,s,c,d),e.globalAlpha=1}}))}(e,n,o);break;case"path":!function(e,t,n){const{detail:o}=t,{originX:i,originY:a,originW:r,originH:l}=o,{calculator:s,viewScaleInfo:c,viewSizeInfo:d}=n,{x:h,y:u,w:f,h:g,angle:w}=s.elementSize(t,c,d),v=f/r,y=g/l,m=h-i*v,p=u-a*y,b=c.scale*d.devicePixelRatio,I={...t,x:h,y:u,w:f,h:g,angle:w};x(e,{x:h,y:u,w:f,h:g,angle:w},(()=>{T(e,I,{originElem:t,calcElemSize:{x:h,y:u,w:f,h:g,angle:w},viewScaleInfo:c,viewSizeInfo:d,renderContent:()=>{E(e,I,{viewScaleInfo:c,viewSizeInfo:d,renderContent:()=>{e.save(),e.translate(m,p),e.scale(b*v/c.scale,b*y/c.scale);const t=S(o.commands||[]),n=new Path2D(t);o.fill&&(e.fillStyle=o.fill,e.fill(n)),o.stroke&&0!==o.strokeWidth&&(e.strokeStyle=o.stroke,e.lineWidth=(o.strokeWidth||1)/d.devicePixelRatio,e.lineCap=o.strokeLineCap||"square",e.stroke(n)),e.translate(-m,-p),e.restore()}})}})}))}(e,n,o);break;case"group":{const t={...o.elementAssets||{},...n.detail.assets||{}};!function(e,t,n){const{calculator:o,viewScaleInfo:i,viewSizeInfo:a}=n,{x:r,y:l,w:s,h:c,angle:d}=o.elementSize({x:t.x,y:t.y,w:t.w,h:t.h,angle:t.angle},i,a),h={...t,x:r,y:l,w:s,h:c,angle:d};x(e,{x:r,y:l,w:s,h:c,angle:d},(()=>{E(e,h,{viewScaleInfo:i,viewSizeInfo:a,renderContent:()=>{T(e,h,{originElem:t,calcElemSize:{x:r,y:l,w:s,h:c,angle:d},viewScaleInfo:i,viewSizeInfo:a,renderContent:()=>{const{x:o,y:r,w:l,h:s,radiusList:c}=I(h,{viewScaleInfo:i,viewSizeInfo:a});if("hidden"===t.detail.overflow&&(e.save(),e.fillStyle="transparent",e.beginPath(),e.moveTo(o+c[0],r),e.arcTo(o+l,r,o+l,r+s,c[1]),e.arcTo(o+l,r+s,o,r+s,c[2]),e.arcTo(o,r+s,o,r,c[3]),e.arcTo(o,r,o+l,r,c[0]),e.closePath(),e.fill(),e.clip()),Array.isArray(t.detail.children)){const{parentElementSize:o}=n,i={x:o.x+t.x,y:o.y+t.y,w:t.w||o.w,h:t.h||o.h,angle:t.angle},{calculator:a}=n;for(let o=0;o<t.detail.children.length;o++){let r=t.detail.children[o];if(r={...r,x:i.x+r.x,y:i.y+r.y},a.isElementInView(r,n.viewScaleInfo,n.viewSizeInfo))try{_(e,r,{...n})}catch(e){console.error(e)}}}"hidden"===t.detail.overflow&&(e.globalAlpha=1,e.restore())}})}})}))}(e,n,{...o,elementAssets:t});break}}}catch(e){console.error(e)}}const $={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 P=["image","svg","html"],L=e=>{var t,n,i;let r=null;return"image"===e.type?r=(null==(t=null==e?void 0:e.detail)?void 0:t.src)||null:"svg"===e.type?r=(null==(n=null==e?void 0:e.detail)?void 0:n.svg)||null:"html"===e.type&&(r=(null==(i=null==e?void 0:e.detail)?void 0:i.html)||null),"string"==typeof r&&r?/^@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(`${r}`)?r:a(r):a(`${o()}-${e.uuid}-${o()}-${o()}`)};class M extends m{constructor(){super(),this._loadFuncMap={},this._currentLoadItemMap={},this._storageLoadItemMap={},this._registerLoadFunc("image",(async(e,t)=>{var n;const o=(null==(n=t[e.detail.src])?void 0:n.value)||e.detail.src,i=await d(o);return{uuid:e.uuid,lastModified:Date.now(),content:i}})),this._registerLoadFunc("html",(async(e,t)=>{var n;const o=(null==(n=t[e.detail.html])?void 0:n.value)||e.detail.html,i=await u(o,{width:e.detail.width||e.w,height:e.detail.height||e.h});return{uuid:e.uuid,lastModified:Date.now(),content:i}})),this._registerLoadFunc("svg",(async(e,t)=>{var n;const o=(null==(n=t[e.detail.svg])?void 0:n.value)||e.detail.svg,i=await h(o);return{uuid:e.uuid,lastModified:Date.now(),content:i}}))}_registerLoadFunc(e,t){this._loadFuncMap[e]=t}_getLoadElementSource(e){var t,n,o;let i=null;return"image"===e.type?i=(null==(t=null==e?void 0:e.detail)?void 0:t.src)||null:"svg"===e.type?i=(null==(n=null==e?void 0:e.detail)?void 0:n.svg)||null:"html"===e.type&&(i=(null==(o=null==e?void 0:e.detail)?void 0:o.html)||null),i}_createLoadItem(e){return{element:e,status:"null",content:null,error:null,startTime:-1,endTime:-1,source:this._getLoadElementSource(e)}}_emitLoad(e){const t=L(e.element),n=this._storageLoadItemMap[t];n?n.startTime<e.startTime&&(this._storageLoadItemMap[t]=e,this.trigger("load",{...e,countTime:e.endTime-e.startTime})):(this._storageLoadItemMap[t]=e,this.trigger("load",{...e,countTime:e.endTime-e.startTime}))}_emitError(e){const t=L(e.element),n=this._storageLoadItemMap[t];n?n.startTime<e.startTime&&(this._storageLoadItemMap[t]=e,this.trigger("error",{...e,countTime:e.endTime-e.startTime})):(this._storageLoadItemMap[t]=e,this.trigger("error",{...e,countTime:e.endTime-e.startTime}))}_loadResource(e,t){const n=this._createLoadItem(e),o=L(e);this._currentLoadItemMap[o]=n;const i=this._loadFuncMap[e.type];"function"==typeof i&&(n.startTime=Date.now(),i(e,t).then((e=>{n.content=e.content,n.endTime=Date.now(),n.status="load",this._emitLoad(n)})).catch((t=>{console.warn(`Load element source "${n.source}" fail`,t,e),n.endTime=Date.now(),n.status="error",n.error=t,this._emitError(n)})))}_isExistingErrorStorage(e){var t;const n=L(e),o=null==(t=this._currentLoadItemMap)?void 0:t[n];return!(!o||"error"!==o.status||!o.source||o.source!==this._getLoadElementSource(e))}load(e,t){this._isExistingErrorStorage(e)||P.includes(e.type)&&this._loadResource(e,t)}getContent(e){var t,n;const o=L(e);return(null==(n=null==(t=this._storageLoadItemMap)?void 0:t[o])?void 0:n.content)||null}}return e.Renderer=class extends m{constructor(e){super(),this._loader=new M,this._opts=e,this._init()}_init(){const{_loader:e}=this;e.on("load",(e=>{this.trigger("load",e)})),e.on("error",(()=>{}))}updateOptions(e){this._opts=e}drawData(e,t){const{_loader:n}=this,{calculator:o}=this._opts,{viewContext:i}=this._opts.viewContent;i.clearRect(0,0,i.canvas.width,i.canvas.height);!function(e,t,n){const{elements:o=[]}=t;for(let t=0;t<o.length;t++){const i=o[t],a={...i,detail:{...$,...null==i?void 0:i.detail}};if(n.calculator.isElementInView(a,n.viewScaleInfo,n.viewSizeInfo))try{_(e,a,n)}catch(e){console.error(e)}}}(i,e,{loader:n,calculator:o,parentElementSize:{x:0,y:0,w:t.viewSizeInfo.width,h:t.viewSizeInfo.height},elementAssets:e.assets,...t})}scale(e){const{sharer:t}=this._opts,{data:n,offsetTop:o,offsetBottom:i,offsetLeft:a,offsetRight:r,width:l,height:s,contextHeight:c,contextWidth:d,devicePixelRatio:h}=t.getActiveStoreSnapshot();n&&this.drawData(n,{viewScaleInfo:{scale:e,offsetTop:o,offsetBottom:i,offsetLeft:a,offsetRight:r},viewSizeInfo:{width:l,height:s,contextHeight:c,contextWidth:d,devicePixelRatio:h}})}},Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e}({});
1
+ var iDrawRenderer=function(e){"use strict";var t,n,i,o,l,a,r,s,c,d,h,f,u,g,w,v,y,m,p,S,x,b=(e,t,n)=>{if(!t.has(e))throw TypeError("Cannot "+n)},I=(e,t,n)=>(b(e,t,"read from private field"),n?n.call(e):t.get(e)),z=(e,t,n)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,n)},A=(e,t,n,i)=>(b(e,t,"write to private field"),i?i.call(e,n):t.set(e,n),n),T=(e,t,n)=>(b(e,t,"access private method"),n);function C(e){return"string"==typeof e&&(/^\#([0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(e)||/^[a-z]{1,}$/i.test(e))}function E(e,t){if(1===t)return e;let n=1;const i=/^\#[0-9a-f]{6,6}$/i;let o=e;if(i.test(e)?n=parseInt(e.substring(5,7).replace(/^\#/,"0x")):/^\#[0-9a-f]{8,8}$/i.test(e)&&(n=parseInt(e.substring(7,9).replace(/^\#/,"0x")),o=e.substring(0,7)),n*=t,i.test(o)&&n>0&&n<1){const e=Math.max(0,Math.min(255,Math.ceil(256*n)));o=`${o.toUpperCase()}${e.toString(16).toUpperCase()}`}return o}function k(){function e(){return(65536*(1+Math.random())|0).toString(16).substring(1)}return`${e()}${e()}-${e()}-${e()}-${e()}-${e()}${e()}${e()}`}function W(e){let t=0;for(let n=0;n<e.length;n++)t+=e.charCodeAt(n)*e.charCodeAt(n)*n*n;return t.toString(16).substring(0,4)}function $(e){const t=e.length,n=Math.floor(t/2),i=e.substring(0,4).padEnd(4,"0"),o=e.substring(0,4).padEnd(4,"0");return`@assets/${W(t.toString(16).padEnd(4,i))}${W(e.substring(n-4,n).padEnd(4,i)).padEnd(4,"f")}-${W(e.substring(n-8,n-4).padEnd(4,i)).padEnd(4,"f")}-${W(e.substring(n-12,n-8).padEnd(4,i)).padEnd(4,"f")}-${W(e.substring(n-16,n-12).padEnd(4,o)).padEnd(4,"f")}-${W(e.substring(n,n+4).padEnd(4,o)).padEnd(4,"f")}${W(e.substring(n+4,n+8).padEnd(4,o)).padEnd(4,"f")}${W(o.padEnd(4,i).padEnd(4,o))}`}function P(e){return(Object.prototype.toString.call(e)||"").replace(/(\[object|\])/gi,"").trim()}const M={type(e,t){const n=P(e);return!0===t?n.toLocaleLowerCase():n},array:e=>"Array"===P(e),json:e=>"Object"===P(e),function:e=>"Function"===P(e),asyncFunction:e=>"AsyncFunction"===P(e),string:e=>"String"===P(e),number:e=>"Number"===P(e),undefined:e=>"Undefined"===P(e),null:e=>"Null"===P(e),promise:e=>"Promise"===P(e)};var O=function(e,t,n,i){return new(n||(n=Promise))((function(o,l){function a(e){try{s(i.next(e))}catch(e){l(e)}}function r(e){try{s(i.throw(e))}catch(e){l(e)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,r)}s((i=i.apply(e,t||[])).next())}))};const{Image:R}=window;function L(e){return new Promise(((t,n)=>{const i=new R;i.crossOrigin="anonymous",i.onload=function(){t(i)},i.onabort=n,i.onerror=n,i.src=e}))}function D(e){return O(this,void 0,void 0,(function*(){const t=yield function(e){return new Promise(((t,n)=>{const i=new Blob([e],{type:"image/svg+xml;charset=utf-8"}),o=new FileReader;o.readAsDataURL(i),o.onload=function(e){var n;const i=null===(n=null==e?void 0:e.target)||void 0===n?void 0:n.result;t(i)},o.onerror=function(e){n(e)}}))}(e);return yield L(t)}))}function B(e,t){return O(this,void 0,void 0,(function*(){e=e.replace(/\&/gi,"&amp;");const n=yield function(e,t){const{width:n,height:i}=t;return new Promise(((t,o)=>{const l=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 ${e}\n </div>\n </foreignObject>\n </svg>\n `],{type:"image/svg+xml;charset=utf-8"}),a=new FileReader;a.readAsDataURL(l),a.onload=function(e){var n;const i=null===(n=null==e?void 0:e.target)||void 0===n?void 0:n.result;t(i)},a.onerror=function(e){o(e)}}))}(e,t);return yield L(n)}))}function F(e){return"number"==typeof e&&(e>0||e<=0)}function H(e){return"number"==typeof e&&e>=0}function X(e){return"string"==typeof e&&/^(http:\/\/|https:\/\/|\.\/|\/)/.test(`${e}`)}function Y(e){return"string"==typeof e&&/^(data:image\/)/.test(`${e}`)}const _={x:function(e){return F(e)},y:function(e){return F(e)},w:H,h:function(e){return"number"==typeof e&&e>=0},angle:function(e){return"number"==typeof e&&e>=-360&&e<=360},number:F,numberStr:function(e){return/^(-?\d+(?:\.\d+)?)$/.test(`${e}`)},borderWidth:function(e){return H(e)},borderRadius:function(e){return F(e)&&e>=0},color:function(e){return C(e)},imageSrc:function(e){return Y(e)||X(e)},imageURL:X,imageBase64:Y,svg:function(e){return"string"==typeof e&&/^(<svg[\s]{1,}|<svg>)/i.test(`${e}`.trim())&&/<\/[\s]{0,}svg>$/i.test(`${e}`.trim())},html:function(e){let t=!1;if("string"==typeof e){let n=document.createElement("div");n.innerHTML=e,n.children.length>0&&(t=!0),n=null}return t},text:function(e){return"string"==typeof e},fontSize:function(e){return F(e)&&e>0},lineHeight:function(e){return F(e)&&e>0},textAlign:function(e){return["center","left","right"].includes(e)},fontFamily:function(e){return"string"==typeof e&&e.length>0},fontWeight:function(e){return["bold"].includes(e)},strokeWidth:function(e){return F(e)&&e>0}};class j{constructor(){this._listeners=new Map}on(e,t){if(this._listeners.has(e)){const n=this._listeners.get(e)||[];null==n||n.push(t),this._listeners.set(e,n)}else this._listeners.set(e,[t])}off(e,t){if(this._listeners.has(e)){const n=this._listeners.get(e);if(Array.isArray(n))for(let e=0;e<(null==n?void 0:n.length);e++)if(n[e]===t){n.splice(e,1);break}this._listeners.set(e,n||[])}}trigger(e,t){const n=this._listeners.get(e);return!!Array.isArray(n)&&(n.forEach((e=>{e(t)})),!0)}has(e){if(this._listeners.has(e)){const t=this._listeners.get(e);if(Array.isArray(t)&&t.length>0)return!0}return!1}}function U(e,t,n,i){const o=function(e){return e/180*Math.PI}(t||0);n&&(o>0||o<0)&&(e.translate(n.x,n.y),e.rotate(o),e.translate(-n.x,-n.y)),i(e),n&&(o>0||o<0)&&(e.translate(n.x,n.y),e.rotate(-o),e.translate(-n.x,-n.y))}function q(e,t,n){const i={x:(o=t).x+o.w/2,y:o.y+o.h/2};var o;U(e,t.angle||0,i,(()=>{n(e)}))}function G(e){let t="";return e.forEach((e=>{t+=e.type+e.params.join(" ")})),t}const N={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 V(e,t){const{viewScaleInfo:n}=t,{scale:i}=n;let{borderRadius:o}=e.detail;const{boxSizing:l=N.boxSizing,borderWidth:a}=e.detail;"number"!=typeof a&&(o=0);let{x:r,y:s,w:c,h:d}=e,h=[0,0,0,0];if("number"==typeof o){const e=o*i;h=[e,e,e,e]}else Array.isArray(o)&&4===(null==o?void 0:o.length)&&(h=[o[0]*i,o[1]*i,o[2]*i,o[3]*i]);let f=0;return"number"==typeof a&&(f=(a||0)*i),"border-box"===l?(r=e.x+f/2,s=e.y+f/2,c=e.w-f,d=e.h-f):"content-box"===l?(r=e.x-f/2,s=e.y-f/2,c=e.w+f,d=e.h+f):(r=e.x,s=e.y,c=e.w,d=e.h),c=Math.max(c,1),d=Math.max(d,1),h=h.map((e=>Math.min(e,c/2,d/2))),{x:r,y:s,w:c,h:d,radiusList:h}}function J(e,t,n){if("string"==typeof t)return t;const{viewElementSize:i,viewScaleInfo:o,opacity:l=1}=n,{x:a,y:r}=i,{scale:s}=o;if("linear-gradient"===(null==t?void 0:t.type)){const{start:n,end:i,stops:o}=t,c={x:a+n.x*s,y:r+n.y*s},d={x:a+i.x*s,y:r+i.y*s},h=e.createLinearGradient(c.x,c.y,d.x,d.y);return o.forEach((e=>{h.addColorStop(e.offset,E(e.color,l))})),h}if("radial-gradient"===(null==t?void 0:t.type)){const{inner:n,outer:i,stops:o}=t,c={x:a+n.x*s,y:r+n.y*s,radius:n.radius*s},d={x:a+i.x*s,y:r+i.y*s,radius:i.radius*s},h=e.createRadialGradient(c.x,c.y,c.radius,d.x,d.y,d.radius);return o.forEach((e=>{h.addColorStop(e.offset,E(e.color,l))})),h}return"#000000"}const K={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 Q(e,t,n){const{pattern:i,renderContent:o,originElem:l,calcElemSize:a,viewScaleInfo:r,viewSizeInfo:s}=n||{};!function(e,t,n){const{renderContent:i,originElem:o,calcElemSize:l,viewScaleInfo:a,viewSizeInfo:r}=n,s=a.scale*r.devicePixelRatio,{clipPath:c}=(null==o?void 0:o.detail)||{};if(c&&l&&c.commands){const{x:n,y:o,w:a,h:r}=l,{originW:d,originH:h,originX:f,originY:u}=c,g=a/d,w=r/h,v=n-f*g,y=o-u*w;e.save(),e.translate(v,y),e.scale(s*g,s*w);const m=G(c.commands||[]),p=new Path2D(m);e.clip(p),e.translate(0-v,0-y),e.setTransform(1,0,0,1,0,0),q(e,{...t},(()=>{null==i||i()})),e.restore()}else null==i||i()}(e,t,{originElem:l,calcElemSize:a,viewScaleInfo:r,viewSizeInfo:s,renderContent:()=>{var n,l;void 0!==(null==(n=null==t?void 0:t.detail)?void 0:n.opacity)&&(null==(l=null==t?void 0:t.detail)?void 0:l.opacity)>=0?e.globalAlpha=t.detail.opacity:e.globalAlpha=1,function(e,t,n){var i,o;const{pattern:l,viewScaleInfo:a,viewSizeInfo:r}=n,s=[];if(t.detail,t.detail,t.detail.background||l){const{x:n,y:c,w:d,h:h,radiusList:f}=V(t,{viewScaleInfo:a,viewSizeInfo:r});if(e.beginPath(),e.moveTo(n+f[0],c),e.arcTo(n+d,c,n+d,c+h,f[1]),e.arcTo(n+d,c+h,n,c+h,f[2]),e.arcTo(n,c+h,n,c,f[3]),e.arcTo(n,c,n+d,c,f[0]),e.closePath(),"string"==typeof l)e.fillStyle=l;else if(["CanvasPattern"].includes(M.type(l)))e.fillStyle=l;else if("string"==typeof t.detail.background)e.fillStyle=t.detail.background;else if("linear-gradient"===(null==(i=t.detail.background)?void 0:i.type)){const i=J(e,t.detail.background,{viewElementSize:{x:n,y:c,w:d,h:h},viewScaleInfo:a,opacity:e.globalAlpha});e.fillStyle=i}else if("radial-gradient"===(null==(o=t.detail.background)?void 0:o.type)){const i=J(e,t.detail.background,{viewElementSize:{x:n,y:c,w:d,h:h},viewScaleInfo:a,opacity:e.globalAlpha});if(e.fillStyle=i,s&&s.length>0)for(let t=0;t<(null==s?void 0:s.length);t++){const i=s[t];"translate"===i.method?e.translate(i.args[0]+n,i.args[1]+c):"rotate"===i.method?e.rotate(...i.args):"scale"===i.method&&e.scale(...i.args)}}e.fill(),s&&s.length>0&&e.setTransform(1,0,0,1,0,0)}}(e,t,{pattern:i,viewScaleInfo:r,viewSizeInfo:s}),null==o||o(),function(e,t,n){var i,o;if(0===t.detail.borderWidth)return;if(!C(t.detail.borderColor))return;void 0!==(null==(i=null==t?void 0:t.detail)?void 0:i.opacity)&&(null==(o=null==t?void 0:t.detail)?void 0:o.opacity)>=0?e.globalAlpha=t.detail.opacity:e.globalAlpha=1;const{viewScaleInfo:l}=n,{scale:a}=l;let r=K.borderColor;!0===C(t.detail.borderColor)&&(r=t.detail.borderColor);const{borderWidth:s,borderRadius:c,borderDash:d,boxSizing:h=K.boxSizing}=t.detail;let f=0;"number"==typeof s&&(f=s||1);f*=a;let u=[0,0,0,0];if("number"==typeof c){const e=c*a;u=[e,e,e,e]}else Array.isArray(c)&&4===(null==c?void 0:c.length)&&(u=[c[0]*a,c[1]*a,c[2]*a,c[3]*a]);e.strokeStyle=r;let g=[];Array.isArray(d)&&d.length>0&&(g=d.map((e=>Math.ceil(e*a))));let w=0,v=0,y=0,m=0;Array.isArray(s)&&(w=(s[0]||0)*a,v=(s[1]||0)*a,y=(s[2]||0)*a,m=(s[3]||0)*a);if(m||v||w||y){e.lineCap="butt";let{x:n,y:i,w:o,h:l}=t;"border-box"===h?(n+=m/2,i+=w/2,o=o-m/2-v/2,l=l-w/2-y/2):"content-box"===h?(n-=m/2,i-=w/2,o=o+m/2+v/2,l=l+w/2+y/2):(n=t.x,i=t.y,o=t.w,l=t.h),w&&(e.beginPath(),e.lineWidth=w,e.moveTo(n-m/2,i),e.lineTo(n+o+v/2,i),e.closePath(),e.stroke()),v&&(e.beginPath(),e.lineWidth=v,e.moveTo(n+o,i-w/2),e.lineTo(n+o,i+l+y/2),e.closePath(),e.stroke()),y&&(e.beginPath(),e.lineWidth=y,e.moveTo(n-m/2,i+l),e.lineTo(n+o+v/2,i+l),e.closePath(),e.stroke()),m&&(e.beginPath(),e.lineWidth=m,e.moveTo(n,i-w/2),e.lineTo(n,i+l+y/2),e.closePath(),e.stroke())}else{let{x:n,y:i,w:o,h:l}=t;"border-box"===h?(n=t.x+f/2,i=t.y+f/2,o=t.w-f,l=t.h-f):"content-box"===h?(n=t.x-f/2,i=t.y-f/2,o=t.w+f,l=t.h+f):(n=t.x,i=t.y,o=t.w,l=t.h),g.length>0?e.lineCap="butt":e.lineCap="square",o=Math.max(o,1),l=Math.max(l,1),u=u.map((e=>Math.min(e,o/2,l/2))),e.setLineDash(g),e.lineWidth=f,e.beginPath(),e.moveTo(n+u[0],i),e.arcTo(n+o,i,n+o,i+l,u[1]),e.arcTo(n+o,i+l,n,i+l,u[2]),e.arcTo(n,i+l,n,i,u[3]),e.arcTo(n,i,n+o,i,u[0]),e.closePath(),e.stroke(),e.globalAlpha=1}e.setLineDash([])}(e,t,{viewScaleInfo:r,viewSizeInfo:s}),e.globalAlpha=1}})}function Z(e,t,n){const{detail:i}=t,{viewScaleInfo:o,renderContent:l}=n,{shadowColor:a,shadowOffsetX:r,shadowOffsetY:s,shadowBlur:c}=i;_.number(c)?(e.save(),e.shadowColor=a||K.shadowColor,e.shadowOffsetX=(r||0)*o.scale,e.shadowOffsetY=(s||0)*o.scale,e.shadowBlur=(c||0)*o.scale,l(),e.restore()):l()}const ee={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 te(e,t,n){var i;if(!0!==(null==(i=null==t?void 0:t.operations)?void 0:i.invisible))try{switch(t.type){case"rect":!function(e,t,n){const{calculator:i,viewScaleInfo:o,viewSizeInfo:l}=n,{x:a,y:r,w:s,h:c,angle:d}=(null==i?void 0:i.elementSize(t,o,l))||t,h={...t,x:a,y:r,w:s,h:c,angle:d};q(e,{x:a,y:r,w:s,h:c,angle:d},(()=>{Z(e,h,{viewScaleInfo:o,viewSizeInfo:l,renderContent:()=>{Q(e,h,{originElem:t,calcElemSize:{x:a,y:r,w:s,h:c,angle:d},viewScaleInfo:o,viewSizeInfo:l,renderContent:()=>{}})}})}))}(e,t,n);break;case"circle":!function(e,t,n){const{detail:i,angle:o}=t,{background:l="#000000",borderColor:a="#000000",borderWidth:r=0}=i,{calculator:s,viewScaleInfo:c,viewSizeInfo:d}=n,{x:h,y:f,w:u,h:g}=(null==s?void 0:s.elementSize({x:t.x,y:t.y,w:t.w,h:t.h},c,d))||t,w={...t,x:h,y:f,w:u,h:g,angle:o};q(e,{x:h,y:f,w:u,h:g,angle:o},(()=>{Z(e,w,{viewScaleInfo:c,viewSizeInfo:d,renderContent:()=>{var n,i;const o=u/2,s=g/2,d=h+o,w=f+s;if(void 0!==(null==(n=null==t?void 0:t.detail)?void 0:n.opacity)&&(null==(i=null==t?void 0:t.detail)?void 0:i.opacity)>=0?e.globalAlpha=t.detail.opacity:e.globalAlpha=1,"number"==typeof r&&r>0){const t=r/2+o,n=r/2+s;e.beginPath(),e.strokeStyle=a,e.lineWidth=r,e.circle(d,w,t,n,0,0,2*Math.PI),e.closePath(),e.stroke()}e.beginPath();const v=J(e,l,{viewElementSize:{x:h,y:f,w:u,h:g},viewScaleInfo:c,opacity:e.globalAlpha});e.fillStyle=v,e.circle(d,w,o,s,0,0,2*Math.PI),e.closePath(),e.fill(),e.globalAlpha=1}})}))}(e,t,n);break;case"text":!function(e,t,n){const{calculator:i,viewScaleInfo:o,viewSizeInfo:l}=n,{x:a,y:r,w:s,h:c,angle:d}=(null==i?void 0:i.elementSize(t,o,l))||t,h={...t,x:a,y:r,w:s,h:c,angle:d};q(e,{x:a,y:r,w:s,h:c,angle:d},(()=>{Q(e,h,{originElem:t,calcElemSize:{x:a,y:r,w:s,h:c,angle:d},viewScaleInfo:o,viewSizeInfo:l,renderContent:()=>{const n={...ee,...t.detail},i=(n.fontSize||ee.fontSize)*o.scale,l=n.lineHeight?n.lineHeight*o.scale:i;e.fillStyle=t.detail.color||ee.color,e.textBaseline="top",e.$setFont({fontWeight:n.fontWeight,fontSize:i,fontFamily:n.fontFamily});const d=n.text.replace(/\r\n/gi,"\n"),h=l,f=d.split("\n"),u=[];let g=0;f.forEach(((t,n)=>{let i="";if(t.length>0){for(let o=0;o<t.length&&(e.measureText(i+(t[o]||"")).width<e.$doPixelRatio(s)?i+=t[o]||"":(u.push({text:i,width:e.$undoPixelRatio(e.measureText(i).width)}),i=t[o]||"",g++),!((g+1)*h>c));o++)if(t.length-1===o&&(g+1)*h<c){u.push({text:i,width:e.$undoPixelRatio(e.measureText(i).width)}),n<f.length-1&&g++;break}}else u.push({text:"",width:0})}));let w=0;u.length*h<c&&("top"===t.detail.verticalAlign?w=0:"bottom"===t.detail.verticalAlign?w+=c-u.length*h:w+=(c-u.length*h)/2);{const t=r+w;void 0!==n.textShadowColor&&C(n.textShadowColor)&&(e.shadowColor=n.textShadowColor),void 0!==n.textShadowOffsetX&&_.number(n.textShadowOffsetX)&&(e.shadowOffsetX=n.textShadowOffsetX),void 0!==n.textShadowOffsetY&&_.number(n.textShadowOffsetY)&&(e.shadowOffsetY=n.textShadowOffsetY),void 0!==n.textShadowBlur&&_.number(n.textShadowBlur)&&(e.shadowBlur=n.textShadowBlur),u.forEach(((i,o)=>{let l=a;"center"===n.textAlign?l=a+(s-i.width)/2:"right"===n.textAlign&&(l=a+(s-i.width)),e.fillText(i.text,l,t+h*o)}))}}})}))}(e,t,n);break;case"image":!function(e,t,n){const i=n.loader.getContent(t),{calculator:o,viewScaleInfo:l,viewSizeInfo:a}=n,{x:r,y:s,w:c,h:d,angle:h}=(null==o?void 0:o.elementSize(t,l,a))||t,f={...t,x:r,y:s,w:c,h:d,angle:h};q(e,{x:r,y:s,w:c,h:d,angle:h},(()=>{Z(e,f,{viewScaleInfo:l,viewSizeInfo:a,renderContent:()=>{Q(e,f,{originElem:t,calcElemSize:{x:r,y:s,w:c,h:d,angle:h},viewScaleInfo:l,viewSizeInfo:a,renderContent:()=>{if(i||n.loader.load(t,n.elementAssets||{}),"image"===t.type&&i){const{opacity:n}=t.detail;e.globalAlpha=n||1;const{x:o,y:r,w:s,h:c,radiusList:d}=V(f,{viewScaleInfo:l,viewSizeInfo:a});e.save(),e.fillStyle="transparent",e.beginPath(),e.moveTo(o+d[0],r),e.arcTo(o+s,r,o+s,r+c,d[1]),e.arcTo(o+s,r+c,o,r+c,d[2]),e.arcTo(o,r+c,o,r,d[3]),e.arcTo(o,r,o+s,r,d[0]),e.closePath(),e.fill(),e.clip(),e.drawImage(i,o,r,s,c),e.globalAlpha=1,e.restore()}}})}})}))}(e,t,n);break;case"svg":!function(e,t,n){const i=n.loader.getContent(t),{calculator:o,viewScaleInfo:l,viewSizeInfo:a}=n,{x:r,y:s,w:c,h:d,angle:h}=(null==o?void 0:o.elementSize(t,l,a))||t;q(e,{x:r,y:s,w:c,h:d,angle:h},(()=>{if(i||n.loader.load(t,n.elementAssets||{}),"svg"===t.type&&i){const{opacity:n}=t.detail;e.globalAlpha=n||1,e.drawImage(i,r,s,c,d),e.globalAlpha=1}}))}(e,t,n);break;case"html":!function(e,t,n){const i=n.loader.getContent(t),{calculator:o,viewScaleInfo:l,viewSizeInfo:a}=n,{x:r,y:s,w:c,h:d,angle:h}=(null==o?void 0:o.elementSize(t,l,a))||t;q(e,{x:r,y:s,w:c,h:d,angle:h},(()=>{if(i||n.loader.load(t,n.elementAssets||{}),"html"===t.type&&i){const{opacity:n}=t.detail;e.globalAlpha=n||1,e.drawImage(i,r,s,c,d),e.globalAlpha=1}}))}(e,t,n);break;case"path":!function(e,t,n){const{detail:i}=t,{originX:o,originY:l,originW:a,originH:r}=i,{calculator:s,viewScaleInfo:c,viewSizeInfo:d}=n,{x:h,y:f,w:u,h:g,angle:w}=(null==s?void 0:s.elementSize(t,c,d))||t,v=u/a,y=g/r,m=h-o*v,p=f-l*y,S=c.scale*d.devicePixelRatio,x={...t,x:h,y:f,w:u,h:g,angle:w};q(e,{x:h,y:f,w:u,h:g,angle:w},(()=>{Q(e,x,{originElem:t,calcElemSize:{x:h,y:f,w:u,h:g,angle:w},viewScaleInfo:c,viewSizeInfo:d,renderContent:()=>{Z(e,x,{viewScaleInfo:c,viewSizeInfo:d,renderContent:()=>{e.save(),e.translate(m,p),e.scale(S*v/c.scale,S*y/c.scale);const t=G(i.commands||[]),n=new Path2D(t);i.fill&&(e.fillStyle=i.fill,e.fill(n)),i.stroke&&0!==i.strokeWidth&&(e.strokeStyle=i.stroke,e.lineWidth=(i.strokeWidth||1)/d.devicePixelRatio,e.lineCap=i.strokeLineCap||"square",e.stroke(n)),e.translate(-m,-p),e.restore()}})}})}))}(e,t,n);break;case"group":{const i={...n.elementAssets||{},...t.detail.assets||{}};!function(e,t,n){const{calculator:i,viewScaleInfo:o,viewSizeInfo:l}=n,{x:a,y:r,w:s,h:c,angle:d}=(null==i?void 0:i.elementSize({x:t.x,y:t.y,w:t.w,h:t.h,angle:t.angle},o,l))||t,h={...t,x:a,y:r,w:s,h:c,angle:d};q(e,{x:a,y:r,w:s,h:c,angle:d},(()=>{Z(e,h,{viewScaleInfo:o,viewSizeInfo:l,renderContent:()=>{Q(e,h,{originElem:t,calcElemSize:{x:a,y:r,w:s,h:c,angle:d},viewScaleInfo:o,viewSizeInfo:l,renderContent:()=>{const{x:i,y:a,w:r,h:s,radiusList:c}=V(h,{viewScaleInfo:o,viewSizeInfo:l});if("hidden"===t.detail.overflow&&(e.save(),e.fillStyle="transparent",e.beginPath(),e.moveTo(i+c[0],a),e.arcTo(i+r,a,i+r,a+s,c[1]),e.arcTo(i+r,a+s,i,a+s,c[2]),e.arcTo(i,a+s,i,a,c[3]),e.arcTo(i,a,i+r,a,c[0]),e.closePath(),e.fill(),e.clip()),Array.isArray(t.detail.children)){const{parentElementSize:i}=n,o={x:i.x+t.x,y:i.y+t.y,w:t.w||i.w,h:t.h||i.h,angle:t.angle},{calculator:l}=n;for(let i=0;i<t.detail.children.length;i++){let a=t.detail.children[i];if(a={...a,x:o.x+a.x,y:o.y+a.y},!0===n.forceDrawAll||(null==l?void 0:l.isElementInView(a,n.viewScaleInfo,n.viewSizeInfo)))try{te(e,a,{...n})}catch(e){console.error(e)}}}"hidden"===t.detail.overflow&&(e.globalAlpha=1,e.restore())}})}})}))}(e,t,{...n,elementAssets:i});break}}}catch(e){console.error(e)}}const ne={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 ie=["image","svg","html"],oe=e=>{var t,n,i;let o=null;return"image"===e.type?o=(null==(t=null==e?void 0:e.detail)?void 0:t.src)||null:"svg"===e.type?o=(null==(n=null==e?void 0:e.detail)?void 0:n.svg)||null:"html"===e.type&&(o=(null==(i=null==e?void 0:e.detail)?void 0:i.html)||null),"string"==typeof o&&o?/^@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(`${o}`)?o:$(o):$(`${k()}-${e.uuid}-${k()}-${k()}`)};class le extends j{constructor(){super(),z(this,o),z(this,a),z(this,s),z(this,d),z(this,f),z(this,g),z(this,v),z(this,t,{}),z(this,n,{}),z(this,i,{}),T(this,o,l).call(this,"image",(async(e,t)=>{var n;const i=(null==(n=t[e.detail.src])?void 0:n.value)||e.detail.src,o=await L(i);return{uuid:e.uuid,lastModified:Date.now(),content:o}})),T(this,o,l).call(this,"html",(async(e,t)=>{var n;const i=(null==(n=t[e.detail.html])?void 0:n.value)||e.detail.html,o=await B(i,{width:e.detail.width||e.w,height:e.detail.height||e.h});return{uuid:e.uuid,lastModified:Date.now(),content:o}})),T(this,o,l).call(this,"svg",(async(e,t)=>{var n;const i=(null==(n=t[e.detail.svg])?void 0:n.value)||e.detail.svg,o=await D(i);return{uuid:e.uuid,lastModified:Date.now(),content:o}}))}load(e,t){T(this,v,y).call(this,e)||ie.includes(e.type)&&T(this,g,w).call(this,e,t)}getContent(e){var t,n;const o=oe(e);return(null==(n=null==(t=I(this,i))?void 0:t[o])?void 0:n.content)||null}getLoadItemMap(){return I(this,i)}setLoadItemMap(e){A(this,i,e)}}t=new WeakMap,n=new WeakMap,i=new WeakMap,o=new WeakSet,l=function(e,n){I(this,t)[e]=n},a=new WeakSet,r=function(e){var t,n,i;let o=null;return"image"===e.type?o=(null==(t=null==e?void 0:e.detail)?void 0:t.src)||null:"svg"===e.type?o=(null==(n=null==e?void 0:e.detail)?void 0:n.svg)||null:"html"===e.type&&(o=(null==(i=null==e?void 0:e.detail)?void 0:i.html)||null),o},s=new WeakSet,c=function(e){return{element:e,status:"null",content:null,error:null,startTime:-1,endTime:-1,source:T(this,a,r).call(this,e)}},d=new WeakSet,h=function(e){const t=oe(e.element),n=I(this,i)[t];n?n.startTime<e.startTime&&(I(this,i)[t]=e,this.trigger("load",{...e,countTime:e.endTime-e.startTime})):(I(this,i)[t]=e,this.trigger("load",{...e,countTime:e.endTime-e.startTime}))},f=new WeakSet,u=function(e){const t=oe(e.element),n=I(this,i)[t];n?n.startTime<e.startTime&&(I(this,i)[t]=e,this.trigger("error",{...e,countTime:e.endTime-e.startTime})):(I(this,i)[t]=e,this.trigger("error",{...e,countTime:e.endTime-e.startTime}))},g=new WeakSet,w=function(e,i){const o=T(this,s,c).call(this,e),l=oe(e);I(this,n)[l]=o;const a=I(this,t)[e.type];"function"==typeof a&&(o.startTime=Date.now(),a(e,i).then((e=>{o.content=e.content,o.endTime=Date.now(),o.status="load",T(this,d,h).call(this,o)})).catch((t=>{console.warn(`Load element source "${o.source}" fail`,t,e),o.endTime=Date.now(),o.status="error",o.error=t,T(this,f,u).call(this,o)})))},v=new WeakSet,y=function(e){var t;const i=oe(e),o=null==(t=I(this,n))?void 0:t[i];return!(!o||"error"!==o.status||!o.source||o.source!==T(this,a,r).call(this,e))};return m=new WeakMap,p=new WeakMap,S=new WeakSet,x=function(){const e=I(this,p);e.on("load",(e=>{this.trigger("load",e)})),e.on("error",(()=>{}))},e.Renderer=class extends j{constructor(e){super(),z(this,S),z(this,m,void 0),z(this,p,new le),A(this,m,e),T(this,S,x).call(this)}updateOptions(e){A(this,m,e)}drawData(e,t){const n=I(this,p),{calculator:i}=I(this,m),o=I(this,m).viewContext;o.clearRect(0,0,o.canvas.width,o.canvas.height);!function(e,t,n){var i;const{elements:o=[]}=t;for(let t=0;t<o.length;t++){const l=o[t],a={...l,detail:{...ne,...null==l?void 0:l.detail}};if(!0===n.forceDrawAll||(null==(i=n.calculator)?void 0:i.isElementInView(a,n.viewScaleInfo,n.viewSizeInfo)))try{te(e,a,n)}catch(e){console.error(e)}}}(o,e,{loader:n,calculator:i,parentElementSize:{x:0,y:0,w:t.viewSizeInfo.width,h:t.viewSizeInfo.height},elementAssets:e.assets,...t})}scale(e){const{sharer:t}=I(this,m);if(!t)return;const{data:n,offsetTop:i,offsetBottom:o,offsetLeft:l,offsetRight:a,width:r,height:s,contextHeight:c,contextWidth:d,devicePixelRatio:h}=t.getActiveStoreSnapshot();n&&this.drawData(n,{viewScaleInfo:{scale:e,offsetTop:i,offsetBottom:o,offsetLeft:l,offsetRight:a},viewSizeInfo:{width:r,height:s,contextHeight:c,contextWidth:d,devicePixelRatio:h}})}setLoadItemMap(e){I(this,p).setLoadItemMap(e)}getLoadItemMap(){return I(this,p).getLoadItemMap()}},Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e}({});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@idraw/renderer",
3
- "version": "0.4.0-beta.2",
3
+ "version": "0.4.0-beta.4",
4
4
  "description": "",
5
5
  "main": "dist/esm/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -21,11 +21,11 @@
21
21
  "author": "chenshenhai",
22
22
  "license": "MIT",
23
23
  "devDependencies": {
24
- "@idraw/types": "^0.4.0-beta.2"
24
+ "@idraw/types": "^0.4.0-beta.4"
25
25
  },
26
26
  "dependencies": {},
27
27
  "peerDependencies": {
28
- "@idraw/util": "^0.4.0-beta.2"
28
+ "@idraw/util": "^0.4.0-beta.4"
29
29
  },
30
30
  "publishConfig": {
31
31
  "access": "public",