@idraw/renderer 0.4.0-beta.1 → 0.4.0-beta.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,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, _hasDestroyed, _registerLoadFunc, registerLoadFunc_fn, _getLoadElementSource, getLoadElementSource_fn, _createLoadItem, createLoadItem_fn, _emitLoad, emitLoad_fn, _emitError, emitError_fn, _loadResource, loadResource_fn, _isExistingErrorStorage, isExistingErrorStorage_fn, _opts, _loader, _hasDestroyed2, _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
  }
@@ -310,22 +333,40 @@ var iDrawRenderer = function(exports) {
310
333
  throw new TypeError("Cannot read private member from an object whose class did not declare it");
311
334
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
312
335
  });
336
+ var __classPrivateFieldSet = function(receiver, state, value, kind, f) {
337
+ if (kind === "m")
338
+ throw new TypeError("Private method is not writable");
339
+ if (kind === "a" && !f)
340
+ throw new TypeError("Private accessor was defined without a setter");
341
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
342
+ throw new TypeError("Cannot write private member to an object whose class did not declare it");
343
+ return kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value), value;
344
+ };
345
+ var __classPrivateFieldGet = function(receiver, state, kind, f) {
346
+ if (kind === "a" && !f)
347
+ throw new TypeError("Private accessor was defined without a getter");
348
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
349
+ throw new TypeError("Cannot read private member from an object whose class did not declare it");
350
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
351
+ };
352
+ var _EventEmitter_listeners;
313
353
  class EventEmitter {
314
354
  constructor() {
315
- this._listeners = /* @__PURE__ */ new Map();
355
+ _EventEmitter_listeners.set(this, void 0);
356
+ __classPrivateFieldSet(this, _EventEmitter_listeners, /* @__PURE__ */ new Map(), "f");
316
357
  }
317
358
  on(eventKey, callback) {
318
- if (this._listeners.has(eventKey)) {
319
- const callbacks = this._listeners.get(eventKey) || [];
359
+ if (__classPrivateFieldGet(this, _EventEmitter_listeners, "f").has(eventKey)) {
360
+ const callbacks = __classPrivateFieldGet(this, _EventEmitter_listeners, "f").get(eventKey) || [];
320
361
  callbacks === null || callbacks === void 0 ? void 0 : callbacks.push(callback);
321
- this._listeners.set(eventKey, callbacks);
362
+ __classPrivateFieldGet(this, _EventEmitter_listeners, "f").set(eventKey, callbacks);
322
363
  } else {
323
- this._listeners.set(eventKey, [callback]);
364
+ __classPrivateFieldGet(this, _EventEmitter_listeners, "f").set(eventKey, [callback]);
324
365
  }
325
366
  }
326
367
  off(eventKey, callback) {
327
- if (this._listeners.has(eventKey)) {
328
- const callbacks = this._listeners.get(eventKey);
368
+ if (__classPrivateFieldGet(this, _EventEmitter_listeners, "f").has(eventKey)) {
369
+ const callbacks = __classPrivateFieldGet(this, _EventEmitter_listeners, "f").get(eventKey);
329
370
  if (Array.isArray(callbacks)) {
330
371
  for (let i = 0; i < (callbacks === null || callbacks === void 0 ? void 0 : callbacks.length); i++) {
331
372
  if (callbacks[i] === callback) {
@@ -334,11 +375,11 @@ var iDrawRenderer = function(exports) {
334
375
  }
335
376
  }
336
377
  }
337
- this._listeners.set(eventKey, callbacks || []);
378
+ __classPrivateFieldGet(this, _EventEmitter_listeners, "f").set(eventKey, callbacks || []);
338
379
  }
339
380
  }
340
381
  trigger(eventKey, e) {
341
- const callbacks = this._listeners.get(eventKey);
382
+ const callbacks = __classPrivateFieldGet(this, _EventEmitter_listeners, "f").get(eventKey);
342
383
  if (Array.isArray(callbacks)) {
343
384
  callbacks.forEach((cb) => {
344
385
  cb(e);
@@ -349,15 +390,38 @@ var iDrawRenderer = function(exports) {
349
390
  }
350
391
  }
351
392
  has(name) {
352
- if (this._listeners.has(name)) {
353
- const list = this._listeners.get(name);
393
+ if (__classPrivateFieldGet(this, _EventEmitter_listeners, "f").has(name)) {
394
+ const list = __classPrivateFieldGet(this, _EventEmitter_listeners, "f").get(name);
354
395
  if (Array.isArray(list) && list.length > 0) {
355
396
  return true;
356
397
  }
357
398
  }
358
399
  return false;
359
400
  }
401
+ destroy() {
402
+ this.clear();
403
+ }
404
+ clear() {
405
+ __classPrivateFieldGet(this, _EventEmitter_listeners, "f").clear();
406
+ }
360
407
  }
408
+ _EventEmitter_listeners = /* @__PURE__ */ new WeakMap();
409
+ (function(receiver, state, value, kind, f) {
410
+ if (kind === "m")
411
+ throw new TypeError("Private method is not writable");
412
+ if (kind === "a" && !f)
413
+ throw new TypeError("Private accessor was defined without a setter");
414
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
415
+ throw new TypeError("Cannot write private member to an object whose class did not declare it");
416
+ return kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value), value;
417
+ });
418
+ (function(receiver, state, kind, f) {
419
+ if (kind === "a" && !f)
420
+ throw new TypeError("Private accessor was defined without a getter");
421
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
422
+ throw new TypeError("Cannot read private member from an object whose class did not declare it");
423
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
424
+ });
361
425
  function parseAngleToRadian(angle2) {
362
426
  return angle2 / 180 * Math.PI;
363
427
  }
@@ -422,8 +486,9 @@ var iDrawRenderer = function(exports) {
422
486
  function calcViewBoxSize(viewElem, opts) {
423
487
  const { viewScaleInfo } = opts;
424
488
  const { scale } = viewScaleInfo;
425
- let { borderRadius: borderRadius2, boxSizing = defaultElemConfig$1.boxSizing, borderWidth: borderWidth2 } = viewElem.detail;
426
- if (typeof borderWidth2 !== "number") {
489
+ let { borderRadius: borderRadius2 } = viewElem.detail;
490
+ const { boxSizing = defaultElemConfig$1.boxSizing, borderWidth: borderWidth2 } = viewElem.detail;
491
+ if (Array.isArray(borderWidth2)) {
427
492
  borderRadius2 = 0;
428
493
  }
429
494
  let { x: x2, y: y2, w: w2, h: h2 } = viewElem;
@@ -511,30 +576,35 @@ var iDrawRenderer = function(exports) {
511
576
  return "#000000";
512
577
  }
513
578
  const defaultElemConfig = getDefaultElementDetailConfig();
579
+ function getOpacity(elem) {
580
+ var _a, _b, _c, _d;
581
+ let opacity = 1;
582
+ if (((_a = elem == null ? void 0 : elem.detail) == null ? void 0 : _a.opacity) !== void 0 && ((_b = elem == null ? void 0 : elem.detail) == null ? void 0 : _b.opacity) >= 0 && ((_c = elem == null ? void 0 : elem.detail) == null ? void 0 : _c.opacity) <= 1) {
583
+ opacity = (_d = elem == null ? void 0 : elem.detail) == null ? void 0 : _d.opacity;
584
+ }
585
+ return opacity;
586
+ }
514
587
  function drawBox(ctx, viewElem, opts) {
515
588
  const { pattern, renderContent, originElem, calcElemSize, viewScaleInfo, viewSizeInfo } = opts || {};
589
+ const { parentOpacity } = opts;
590
+ const opacity = getOpacity(originElem) * parentOpacity;
516
591
  drawClipPath(ctx, viewElem, {
517
592
  originElem,
518
593
  calcElemSize,
519
594
  viewScaleInfo,
520
595
  viewSizeInfo,
521
596
  renderContent: () => {
522
- var _a, _b;
523
- if (((_a = viewElem == null ? void 0 : viewElem.detail) == null ? void 0 : _a.opacity) !== void 0 && ((_b = viewElem == null ? void 0 : viewElem.detail) == null ? void 0 : _b.opacity) >= 0) {
524
- ctx.globalAlpha = viewElem.detail.opacity;
525
- } else {
526
- ctx.globalAlpha = 1;
527
- }
597
+ ctx.globalAlpha = opacity;
528
598
  drawBoxBackground(ctx, viewElem, { pattern, viewScaleInfo, viewSizeInfo });
529
599
  renderContent == null ? void 0 : renderContent();
530
600
  drawBoxBorder(ctx, viewElem, { viewScaleInfo, viewSizeInfo });
531
- ctx.globalAlpha = 1;
601
+ ctx.globalAlpha = parentOpacity;
532
602
  }
533
603
  });
534
604
  }
535
605
  function drawClipPath(ctx, viewElem, opts) {
536
- const { renderContent, originElem, calcElemSize, viewScaleInfo, viewSizeInfo } = opts;
537
- const totalScale = viewScaleInfo.scale * viewSizeInfo.devicePixelRatio;
606
+ const { renderContent, originElem, calcElemSize, viewSizeInfo } = opts;
607
+ const totalScale = viewSizeInfo.devicePixelRatio;
538
608
  const { clipPath } = (originElem == null ? void 0 : originElem.detail) || {};
539
609
  if (clipPath && calcElemSize && clipPath.commands) {
540
610
  const { x: x2, y: y2, w: w2, h: h2 } = calcElemSize;
@@ -543,8 +613,8 @@ var iDrawRenderer = function(exports) {
543
613
  const scaleH = h2 / originH;
544
614
  const viewOriginX = originX * scaleW;
545
615
  const viewOriginY = originY * scaleH;
546
- let internalX = x2 - viewOriginX;
547
- let internalY = y2 - viewOriginY;
616
+ const internalX = x2 - viewOriginX;
617
+ const internalY = y2 - viewOriginY;
548
618
  ctx.save();
549
619
  ctx.translate(internalX, internalY);
550
620
  ctx.scale(totalScale * scaleW, totalScale * scaleH);
@@ -564,8 +634,7 @@ var iDrawRenderer = function(exports) {
564
634
  function drawBoxBackground(ctx, viewElem, opts) {
565
635
  var _a, _b;
566
636
  const { pattern, viewScaleInfo, viewSizeInfo } = opts;
567
- let transform = [];
568
- viewElem.detail;
637
+ const transform = [];
569
638
  if (viewElem.detail.background || pattern) {
570
639
  const { x: x2, y: y2, w: w2, h: h2, radiusList } = calcViewBoxSize(viewElem, {
571
640
  viewScaleInfo,
@@ -618,18 +687,12 @@ var iDrawRenderer = function(exports) {
618
687
  }
619
688
  }
620
689
  function drawBoxBorder(ctx, viewElem, opts) {
621
- var _a, _b;
622
690
  if (viewElem.detail.borderWidth === 0) {
623
691
  return;
624
692
  }
625
693
  if (!isColorStr(viewElem.detail.borderColor)) {
626
694
  return;
627
695
  }
628
- if (((_a = viewElem == null ? void 0 : viewElem.detail) == null ? void 0 : _a.opacity) !== void 0 && ((_b = viewElem == null ? void 0 : viewElem.detail) == null ? void 0 : _b.opacity) >= 0) {
629
- ctx.globalAlpha = viewElem.detail.opacity;
630
- } else {
631
- ctx.globalAlpha = 1;
632
- }
633
696
  const { viewScaleInfo } = opts;
634
697
  const { scale } = viewScaleInfo;
635
698
  let borderColor = defaultElemConfig.borderColor;
@@ -753,7 +816,6 @@ var iDrawRenderer = function(exports) {
753
816
  ctx.arcTo(x2, y2, x2 + w2, y2, radiusList[0]);
754
817
  ctx.closePath();
755
818
  ctx.stroke();
756
- ctx.globalAlpha = 1;
757
819
  }
758
820
  ctx.setLineDash([]);
759
821
  }
@@ -775,53 +837,69 @@ var iDrawRenderer = function(exports) {
775
837
  }
776
838
  function drawCircle(ctx, elem, opts) {
777
839
  const { detail, angle: angle2 } = elem;
778
- const { background = "#000000", borderColor = "#000000", borderWidth: borderWidth2 = 0 } = detail;
779
- 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);
840
+ const { background = "#000000", borderColor = "#000000", boxSizing, borderWidth: borderWidth2 = 0 } = detail;
841
+ let bw = 0;
842
+ if (typeof borderWidth2 === "number" && borderWidth2 > 0) {
843
+ bw = borderWidth2;
844
+ } else if (Array.isArray(borderWidth2) && typeof borderWidth2[0] === "number" && borderWidth2[0] > 0) {
845
+ bw = borderWidth2[0];
846
+ }
847
+ const { calculator, viewScaleInfo, viewSizeInfo, parentOpacity } = opts;
848
+ 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
849
  const viewElem = { ...elem, ...{ x: x2, y: y2, w: w2, h: h2, angle: angle2 } };
782
850
  rotateElement(ctx, { x: x2, y: y2, w: w2, h: h2, angle: angle2 }, () => {
783
851
  drawBoxShadow(ctx, viewElem, {
784
852
  viewScaleInfo,
785
853
  viewSizeInfo,
786
854
  renderContent: () => {
787
- var _a, _b;
788
- const a = w2 / 2;
789
- const b = h2 / 2;
855
+ let a = w2 / 2;
856
+ let b = h2 / 2;
790
857
  const centerX = x2 + a;
791
858
  const centerY = y2 + b;
792
- if (((_a = elem == null ? void 0 : elem.detail) == null ? void 0 : _a.opacity) !== void 0 && ((_b = elem == null ? void 0 : elem.detail) == null ? void 0 : _b.opacity) >= 0) {
793
- ctx.globalAlpha = elem.detail.opacity;
794
- } else {
795
- ctx.globalAlpha = 1;
859
+ if (bw > 0) {
860
+ if (boxSizing === "border-box") {
861
+ a = a - bw;
862
+ b = b - bw;
863
+ } else if (boxSizing === "center-line") {
864
+ a = a - bw / 2;
865
+ b = b - bw / 2;
866
+ } else {
867
+ a = a - bw;
868
+ b = b - bw;
869
+ }
796
870
  }
797
- if (typeof borderWidth2 === "number" && borderWidth2 > 0) {
798
- const ba = borderWidth2 / 2 + a;
799
- const bb = borderWidth2 / 2 + b;
871
+ if (a >= 0 && b >= 0) {
872
+ const opacity = getOpacity(viewElem) * parentOpacity;
873
+ ctx.globalAlpha = opacity;
874
+ if (typeof borderWidth2 === "number" && borderWidth2 > 0) {
875
+ const ba = borderWidth2 / 2 + a;
876
+ const bb = borderWidth2 / 2 + b;
877
+ ctx.beginPath();
878
+ ctx.strokeStyle = borderColor;
879
+ ctx.lineWidth = borderWidth2;
880
+ ctx.circle(centerX, centerY, ba, bb, 0, 0, 2 * Math.PI);
881
+ ctx.closePath();
882
+ ctx.stroke();
883
+ }
800
884
  ctx.beginPath();
801
- ctx.strokeStyle = borderColor;
802
- ctx.lineWidth = borderWidth2;
803
- ctx.circle(centerX, centerY, ba, bb, 0, 0, 2 * Math.PI);
885
+ const fillStyle = createColorStyle(ctx, background, {
886
+ viewElementSize: { x: x2, y: y2, w: w2, h: h2 },
887
+ viewScaleInfo,
888
+ opacity: ctx.globalAlpha
889
+ });
890
+ ctx.fillStyle = fillStyle;
891
+ ctx.circle(centerX, centerY, a, b, 0, 0, 2 * Math.PI);
804
892
  ctx.closePath();
805
- ctx.stroke();
893
+ ctx.fill();
894
+ ctx.globalAlpha = parentOpacity;
806
895
  }
807
- ctx.beginPath();
808
- const fillStyle = createColorStyle(ctx, background, {
809
- viewElementSize: { x: x2, y: y2, w: w2, h: h2 },
810
- viewScaleInfo,
811
- opacity: ctx.globalAlpha
812
- });
813
- ctx.fillStyle = fillStyle;
814
- ctx.circle(centerX, centerY, a, b, 0, 0, 2 * Math.PI);
815
- ctx.closePath();
816
- ctx.fill();
817
- ctx.globalAlpha = 1;
818
896
  }
819
897
  });
820
898
  });
821
899
  }
822
900
  function drawRect(ctx, elem, opts) {
823
- const { calculator, viewScaleInfo, viewSizeInfo } = opts;
824
- let { x: x2, y: y2, w: w2, h: h2, angle: angle2 } = calculator.elementSize(elem, viewScaleInfo, viewSizeInfo);
901
+ const { calculator, viewScaleInfo, viewSizeInfo, parentOpacity } = opts;
902
+ const { x: x2, y: y2, w: w2, h: h2, angle: angle2 } = (calculator == null ? void 0 : calculator.elementSize(elem, viewScaleInfo, viewSizeInfo)) || elem;
825
903
  const viewElem = { ...elem, ...{ x: x2, y: y2, w: w2, h: h2, angle: angle2 } };
826
904
  rotateElement(ctx, { x: x2, y: y2, w: w2, h: h2, angle: angle2 }, () => {
827
905
  drawBoxShadow(ctx, viewElem, {
@@ -833,6 +911,7 @@ var iDrawRenderer = function(exports) {
833
911
  calcElemSize: { x: x2, y: y2, w: w2, h: h2, angle: angle2 },
834
912
  viewScaleInfo,
835
913
  viewSizeInfo,
914
+ parentOpacity,
836
915
  renderContent: () => {
837
916
  }
838
917
  });
@@ -842,8 +921,8 @@ var iDrawRenderer = function(exports) {
842
921
  }
843
922
  function drawImage(ctx, elem, opts) {
844
923
  const content = opts.loader.getContent(elem);
845
- const { calculator, viewScaleInfo, viewSizeInfo } = opts;
846
- const { x: x2, y: y2, w: w2, h: h2, angle: angle2 } = calculator.elementSize(elem, viewScaleInfo, viewSizeInfo);
924
+ const { calculator, viewScaleInfo, viewSizeInfo, parentOpacity } = opts;
925
+ const { x: x2, y: y2, w: w2, h: h2, angle: angle2 } = (calculator == null ? void 0 : calculator.elementSize(elem, viewScaleInfo, viewSizeInfo)) || elem;
847
926
  const viewElem = { ...elem, ...{ x: x2, y: y2, w: w2, h: h2, angle: angle2 } };
848
927
  rotateElement(ctx, { x: x2, y: y2, w: w2, h: h2, angle: angle2 }, () => {
849
928
  drawBoxShadow(ctx, viewElem, {
@@ -855,13 +934,13 @@ var iDrawRenderer = function(exports) {
855
934
  calcElemSize: { x: x2, y: y2, w: w2, h: h2, angle: angle2 },
856
935
  viewScaleInfo,
857
936
  viewSizeInfo,
937
+ parentOpacity,
858
938
  renderContent: () => {
859
- if (!content) {
939
+ if (!content && !opts.loader.isDestroyed()) {
860
940
  opts.loader.load(elem, opts.elementAssets || {});
861
941
  }
862
942
  if (elem.type === "image" && content) {
863
- const { opacity } = elem.detail;
864
- ctx.globalAlpha = opacity ? opacity : 1;
943
+ ctx.globalAlpha = getOpacity(elem) * parentOpacity;
865
944
  const { x: x22, y: y22, w: w22, h: h22, radiusList } = calcViewBoxSize(viewElem, {
866
945
  viewScaleInfo,
867
946
  viewSizeInfo
@@ -878,7 +957,7 @@ var iDrawRenderer = function(exports) {
878
957
  ctx.fill();
879
958
  ctx.clip();
880
959
  ctx.drawImage(content, x22, y22, w22, h22);
881
- ctx.globalAlpha = 1;
960
+ ctx.globalAlpha = parentOpacity;
882
961
  ctx.restore();
883
962
  }
884
963
  }
@@ -889,40 +968,38 @@ var iDrawRenderer = function(exports) {
889
968
  }
890
969
  function drawSVG(ctx, elem, opts) {
891
970
  const content = opts.loader.getContent(elem);
892
- const { calculator, viewScaleInfo, viewSizeInfo } = opts;
893
- const { x: x2, y: y2, w: w2, h: h2, angle: angle2 } = calculator.elementSize(elem, viewScaleInfo, viewSizeInfo);
971
+ const { calculator, viewScaleInfo, viewSizeInfo, parentOpacity } = opts;
972
+ const { x: x2, y: y2, w: w2, h: h2, angle: angle2 } = (calculator == null ? void 0 : calculator.elementSize(elem, viewScaleInfo, viewSizeInfo)) || elem;
894
973
  rotateElement(ctx, { x: x2, y: y2, w: w2, h: h2, angle: angle2 }, () => {
895
- if (!content) {
974
+ if (!content && !opts.loader.isDestroyed()) {
896
975
  opts.loader.load(elem, opts.elementAssets || {});
897
976
  }
898
977
  if (elem.type === "svg" && content) {
899
- const { opacity } = elem.detail;
900
- ctx.globalAlpha = opacity ? opacity : 1;
978
+ ctx.globalAlpha = getOpacity(elem) * parentOpacity;
901
979
  ctx.drawImage(content, x2, y2, w2, h2);
902
- ctx.globalAlpha = 1;
980
+ ctx.globalAlpha = parentOpacity;
903
981
  }
904
982
  });
905
983
  }
906
984
  function drawHTML(ctx, elem, opts) {
907
985
  const content = opts.loader.getContent(elem);
908
- const { calculator, viewScaleInfo, viewSizeInfo } = opts;
909
- const { x: x2, y: y2, w: w2, h: h2, angle: angle2 } = calculator.elementSize(elem, viewScaleInfo, viewSizeInfo);
986
+ const { calculator, viewScaleInfo, viewSizeInfo, parentOpacity } = opts;
987
+ const { x: x2, y: y2, w: w2, h: h2, angle: angle2 } = (calculator == null ? void 0 : calculator.elementSize(elem, viewScaleInfo, viewSizeInfo)) || elem;
910
988
  rotateElement(ctx, { x: x2, y: y2, w: w2, h: h2, angle: angle2 }, () => {
911
- if (!content) {
989
+ if (!content && !opts.loader.isDestroyed()) {
912
990
  opts.loader.load(elem, opts.elementAssets || {});
913
991
  }
914
992
  if (elem.type === "html" && content) {
915
- const { opacity } = elem.detail;
916
- ctx.globalAlpha = opacity ? opacity : 1;
993
+ ctx.globalAlpha = getOpacity(elem) * parentOpacity;
917
994
  ctx.drawImage(content, x2, y2, w2, h2);
918
- ctx.globalAlpha = 1;
995
+ ctx.globalAlpha = parentOpacity;
919
996
  }
920
997
  });
921
998
  }
922
999
  const detailConfig = getDefaultElementDetailConfig();
923
1000
  function drawText(ctx, elem, opts) {
924
- const { calculator, viewScaleInfo, viewSizeInfo } = opts;
925
- const { x: x2, y: y2, w: w2, h: h2, angle: angle2 } = calculator.elementSize(elem, viewScaleInfo, viewSizeInfo);
1001
+ const { calculator, viewScaleInfo, viewSizeInfo, parentOpacity } = opts;
1002
+ const { x: x2, y: y2, w: w2, h: h2, angle: angle2 } = (calculator == null ? void 0 : calculator.elementSize(elem, viewScaleInfo, viewSizeInfo)) || elem;
926
1003
  const viewElem = { ...elem, ...{ x: x2, y: y2, w: w2, h: h2, angle: angle2 } };
927
1004
  rotateElement(ctx, { x: x2, y: y2, w: w2, h: h2, angle: angle2 }, () => {
928
1005
  drawBox(ctx, viewElem, {
@@ -930,6 +1007,7 @@ var iDrawRenderer = function(exports) {
930
1007
  calcElemSize: { x: x2, y: y2, w: w2, h: h2, angle: angle2 },
931
1008
  viewScaleInfo,
932
1009
  viewSizeInfo,
1010
+ parentOpacity,
933
1011
  renderContent: () => {
934
1012
  const detail = {
935
1013
  ...detailConfig,
@@ -1027,8 +1105,8 @@ var iDrawRenderer = function(exports) {
1027
1105
  function drawPath(ctx, elem, opts) {
1028
1106
  const { detail } = elem;
1029
1107
  const { originX, originY, originW, originH } = detail;
1030
- const { calculator, viewScaleInfo, viewSizeInfo } = opts;
1031
- const { x: x2, y: y2, w: w2, h: h2, angle: angle2 } = calculator.elementSize(elem, viewScaleInfo, viewSizeInfo);
1108
+ const { calculator, viewScaleInfo, viewSizeInfo, parentOpacity } = opts;
1109
+ const { x: x2, y: y2, w: w2, h: h2, angle: angle2 } = (calculator == null ? void 0 : calculator.elementSize(elem, viewScaleInfo, viewSizeInfo)) || elem;
1032
1110
  const scaleW = w2 / originW;
1033
1111
  const scaleH = h2 / originH;
1034
1112
  const viewOriginX = originX * scaleW;
@@ -1043,6 +1121,7 @@ var iDrawRenderer = function(exports) {
1043
1121
  calcElemSize: { x: x2, y: y2, w: w2, h: h2, angle: angle2 },
1044
1122
  viewScaleInfo,
1045
1123
  viewSizeInfo,
1124
+ parentOpacity,
1046
1125
  renderContent: () => {
1047
1126
  drawBoxShadow(ctx, viewElem, {
1048
1127
  viewScaleInfo,
@@ -1076,6 +1155,11 @@ var iDrawRenderer = function(exports) {
1076
1155
  if (((_a = elem == null ? void 0 : elem.operations) == null ? void 0 : _a.invisible) === true) {
1077
1156
  return;
1078
1157
  }
1158
+ const { w: w2, h: h2 } = elem;
1159
+ const { scale } = opts.viewScaleInfo;
1160
+ if (scale < 1 && (w2 * scale < 1 || h2 * scale < 1) || opts.parentOpacity === 0) {
1161
+ return;
1162
+ }
1079
1163
  try {
1080
1164
  switch (elem.type) {
1081
1165
  case "rect": {
@@ -1126,10 +1210,11 @@ var iDrawRenderer = function(exports) {
1126
1210
  }
1127
1211
  }
1128
1212
  function drawGroup(ctx, elem, opts) {
1129
- 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);
1213
+ const { calculator, viewScaleInfo, viewSizeInfo, parentOpacity } = opts;
1214
+ 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
1215
  const viewElem = { ...elem, ...{ x: x2, y: y2, w: w2, h: h2, angle: angle2 } };
1132
1216
  rotateElement(ctx, { x: x2, y: y2, w: w2, h: h2, angle: angle2 }, () => {
1217
+ ctx.globalAlpha = getOpacity(elem) * parentOpacity;
1133
1218
  drawBoxShadow(ctx, viewElem, {
1134
1219
  viewScaleInfo,
1135
1220
  viewSizeInfo,
@@ -1139,6 +1224,7 @@ var iDrawRenderer = function(exports) {
1139
1224
  calcElemSize: { x: x2, y: y2, w: w2, h: h2, angle: angle2 },
1140
1225
  viewScaleInfo,
1141
1226
  viewSizeInfo,
1227
+ parentOpacity,
1142
1228
  renderContent: () => {
1143
1229
  const { x: x22, y: y22, w: w22, h: h22, radiusList } = calcViewBoxSize(viewElem, {
1144
1230
  viewScaleInfo,
@@ -1176,29 +1262,33 @@ var iDrawRenderer = function(exports) {
1176
1262
  y: newParentSize.y + child.y
1177
1263
  }
1178
1264
  };
1179
- if (!calculator2.isElementInView(child, opts.viewScaleInfo, opts.viewSizeInfo)) {
1180
- continue;
1265
+ if (opts.forceDrawAll !== true) {
1266
+ if (!(calculator2 == null ? void 0 : calculator2.isElementInView(child, opts.viewScaleInfo, opts.viewSizeInfo))) {
1267
+ continue;
1268
+ }
1181
1269
  }
1182
1270
  try {
1183
- drawElement(ctx, child, { ...opts });
1271
+ drawElement(ctx, child, { ...opts, ...{ parentOpacity: parentOpacity * getOpacity(elem) } });
1184
1272
  } catch (err) {
1185
1273
  console.error(err);
1186
1274
  }
1187
1275
  }
1188
1276
  }
1189
1277
  if (elem.detail.overflow === "hidden") {
1190
- ctx.globalAlpha = 1;
1191
1278
  ctx.restore();
1192
1279
  }
1193
1280
  }
1194
1281
  });
1195
1282
  }
1196
1283
  });
1284
+ ctx.globalAlpha = parentOpacity;
1197
1285
  });
1198
1286
  }
1199
1287
  const defaultDetail = getDefaultElementDetailConfig();
1200
1288
  function drawElementList(ctx, data, opts) {
1289
+ var _a;
1201
1290
  const { elements = [] } = data;
1291
+ const { parentOpacity } = opts;
1202
1292
  for (let i = 0; i < elements.length; i++) {
1203
1293
  const element = elements[i];
1204
1294
  const elem = {
@@ -1210,16 +1300,45 @@ var iDrawRenderer = function(exports) {
1210
1300
  }
1211
1301
  }
1212
1302
  };
1213
- if (!opts.calculator.isElementInView(elem, opts.viewScaleInfo, opts.viewSizeInfo)) {
1214
- continue;
1303
+ if (opts.forceDrawAll !== true) {
1304
+ if (!((_a = opts.calculator) == null ? void 0 : _a.isElementInView(elem, opts.viewScaleInfo, opts.viewSizeInfo))) {
1305
+ continue;
1306
+ }
1215
1307
  }
1216
1308
  try {
1217
- drawElement(ctx, elem, opts);
1309
+ drawElement(ctx, elem, {
1310
+ ...opts,
1311
+ ...{
1312
+ parentOpacity
1313
+ }
1314
+ });
1218
1315
  } catch (err) {
1219
1316
  console.error(err);
1220
1317
  }
1221
1318
  }
1222
1319
  }
1320
+ function drawUnderlay(ctx, underlay, opts) {
1321
+ const { calculator, viewScaleInfo, viewSizeInfo, parentOpacity } = opts;
1322
+ const elem = { uuid: "underlay", ...underlay };
1323
+ const { x: x2, y: y2, w: w2, h: h2 } = (calculator == null ? void 0 : calculator.elementSize(elem, viewScaleInfo, viewSizeInfo)) || elem;
1324
+ const angle2 = 0;
1325
+ const viewElem = { ...elem, ...{ x: x2, y: y2, w: w2, h: h2, angle: angle2 } };
1326
+ drawBoxShadow(ctx, viewElem, {
1327
+ viewScaleInfo,
1328
+ viewSizeInfo,
1329
+ renderContent: () => {
1330
+ drawBox(ctx, viewElem, {
1331
+ originElem: elem,
1332
+ calcElemSize: { x: x2, y: y2, w: w2, h: h2, angle: angle2 },
1333
+ viewScaleInfo,
1334
+ viewSizeInfo,
1335
+ parentOpacity,
1336
+ renderContent: () => {
1337
+ }
1338
+ });
1339
+ }
1340
+ });
1341
+ }
1223
1342
  const supportElementTypes = ["image", "svg", "html"];
1224
1343
  const getAssetIdFromElement = (element) => {
1225
1344
  var _a, _b, _c;
@@ -1242,10 +1361,18 @@ var iDrawRenderer = function(exports) {
1242
1361
  class Loader extends EventEmitter {
1243
1362
  constructor() {
1244
1363
  super();
1245
- this._loadFuncMap = {};
1246
- this._currentLoadItemMap = {};
1247
- this._storageLoadItemMap = {};
1248
- this._registerLoadFunc("image", async (elem, assets) => {
1364
+ __privateAdd(this, _registerLoadFunc);
1365
+ __privateAdd(this, _getLoadElementSource);
1366
+ __privateAdd(this, _createLoadItem);
1367
+ __privateAdd(this, _emitLoad);
1368
+ __privateAdd(this, _emitError);
1369
+ __privateAdd(this, _loadResource);
1370
+ __privateAdd(this, _isExistingErrorStorage);
1371
+ __privateAdd(this, _loadFuncMap, {});
1372
+ __privateAdd(this, _currentLoadItemMap, {});
1373
+ __privateAdd(this, _storageLoadItemMap, {});
1374
+ __privateAdd(this, _hasDestroyed, false);
1375
+ __privateMethod(this, _registerLoadFunc, registerLoadFunc_fn).call(this, "image", async (elem, assets) => {
1249
1376
  var _a;
1250
1377
  const src = ((_a = assets[elem.detail.src]) == null ? void 0 : _a.value) || elem.detail.src;
1251
1378
  const content = await loadImage(src);
@@ -1255,12 +1382,12 @@ var iDrawRenderer = function(exports) {
1255
1382
  content
1256
1383
  };
1257
1384
  });
1258
- this._registerLoadFunc("html", async (elem, assets) => {
1385
+ __privateMethod(this, _registerLoadFunc, registerLoadFunc_fn).call(this, "html", async (elem, assets) => {
1259
1386
  var _a;
1260
1387
  const html2 = ((_a = assets[elem.detail.html]) == null ? void 0 : _a.value) || elem.detail.html;
1261
1388
  const content = await loadHTML(html2, {
1262
- width: elem.detail.width || elem.w,
1263
- height: elem.detail.height || elem.h
1389
+ width: elem.detail.originW || elem.w,
1390
+ height: elem.detail.originH || elem.h
1264
1391
  });
1265
1392
  return {
1266
1393
  uuid: elem.uuid,
@@ -1268,7 +1395,7 @@ var iDrawRenderer = function(exports) {
1268
1395
  content
1269
1396
  };
1270
1397
  });
1271
- this._registerLoadFunc("svg", async (elem, assets) => {
1398
+ __privateMethod(this, _registerLoadFunc, registerLoadFunc_fn).call(this, "svg", async (elem, assets) => {
1272
1399
  var _a;
1273
1400
  const svg2 = ((_a = assets[elem.detail.svg]) == null ? void 0 : _a.value) || elem.detail.svg;
1274
1401
  const content = await loadSVG(svg2);
@@ -1279,127 +1406,166 @@ var iDrawRenderer = function(exports) {
1279
1406
  };
1280
1407
  });
1281
1408
  }
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;
1409
+ isDestroyed() {
1410
+ return __privateGet(this, _hasDestroyed);
1411
+ }
1412
+ destroy() {
1413
+ __privateSet(this, _hasDestroyed, true);
1414
+ this.clear();
1415
+ __privateSet(this, _loadFuncMap, null);
1416
+ __privateSet(this, _currentLoadItemMap, null);
1417
+ __privateSet(this, _storageLoadItemMap, null);
1418
+ }
1419
+ load(element, assets) {
1420
+ if (__privateGet(this, _hasDestroyed) === true) {
1421
+ return;
1294
1422
  }
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
- };
1423
+ if (__privateMethod(this, _isExistingErrorStorage, isExistingErrorStorage_fn).call(this, element)) {
1424
+ return;
1425
+ }
1426
+ if (supportElementTypes.includes(element.type)) {
1427
+ __privateMethod(this, _loadResource, loadResource_fn).call(this, element, assets);
1428
+ }
1429
+ }
1430
+ getContent(element) {
1431
+ var _a, _b;
1432
+ const assetId = getAssetIdFromElement(element);
1433
+ return ((_b = (_a = __privateGet(this, _storageLoadItemMap)) == null ? void 0 : _a[assetId]) == null ? void 0 : _b.content) || null;
1434
+ }
1435
+ getLoadItemMap() {
1436
+ return __privateGet(this, _storageLoadItemMap);
1437
+ }
1438
+ setLoadItemMap(itemMap) {
1439
+ __privateSet(this, _storageLoadItemMap, itemMap);
1440
+ }
1441
+ }
1442
+ _loadFuncMap = new WeakMap();
1443
+ _currentLoadItemMap = new WeakMap();
1444
+ _storageLoadItemMap = new WeakMap();
1445
+ _hasDestroyed = new WeakMap();
1446
+ _registerLoadFunc = new WeakSet();
1447
+ registerLoadFunc_fn = function(type, func) {
1448
+ __privateGet(this, _loadFuncMap)[type] = func;
1449
+ };
1450
+ _getLoadElementSource = new WeakSet();
1451
+ getLoadElementSource_fn = function(element) {
1452
+ var _a, _b, _c;
1453
+ let source = null;
1454
+ if (element.type === "image") {
1455
+ source = ((_a = element == null ? void 0 : element.detail) == null ? void 0 : _a.src) || null;
1456
+ } else if (element.type === "svg") {
1457
+ source = ((_b = element == null ? void 0 : element.detail) == null ? void 0 : _b.svg) || null;
1458
+ } else if (element.type === "html") {
1459
+ source = ((_c = element == null ? void 0 : element.detail) == null ? void 0 : _c.html) || null;
1307
1460
  }
1308
- _emitLoad(item) {
1309
- const assetId = getAssetIdFromElement(item.element);
1310
- const storageItem = this._storageLoadItemMap[assetId];
1461
+ return source;
1462
+ };
1463
+ _createLoadItem = new WeakSet();
1464
+ createLoadItem_fn = function(element) {
1465
+ return {
1466
+ element,
1467
+ status: "null",
1468
+ content: null,
1469
+ error: null,
1470
+ startTime: -1,
1471
+ endTime: -1,
1472
+ source: __privateMethod(this, _getLoadElementSource, getLoadElementSource_fn).call(this, element)
1473
+ };
1474
+ };
1475
+ _emitLoad = new WeakSet();
1476
+ emitLoad_fn = function(item) {
1477
+ const assetId = getAssetIdFromElement(item.element);
1478
+ const storageItem = __privateGet(this, _storageLoadItemMap)[assetId];
1479
+ if (!__privateGet(this, _hasDestroyed)) {
1311
1480
  if (storageItem) {
1312
1481
  if (storageItem.startTime < item.startTime) {
1313
- this._storageLoadItemMap[assetId] = item;
1482
+ __privateGet(this, _storageLoadItemMap)[assetId] = item;
1314
1483
  this.trigger("load", { ...item, countTime: item.endTime - item.startTime });
1315
1484
  }
1316
1485
  } else {
1317
- this._storageLoadItemMap[assetId] = item;
1486
+ __privateGet(this, _storageLoadItemMap)[assetId] = item;
1318
1487
  this.trigger("load", { ...item, countTime: item.endTime - item.startTime });
1319
1488
  }
1320
1489
  }
1321
- _emitError(item) {
1322
- const assetId = getAssetIdFromElement(item.element);
1323
- const storageItem = this._storageLoadItemMap[assetId];
1490
+ };
1491
+ _emitError = new WeakSet();
1492
+ emitError_fn = function(item) {
1493
+ var _a;
1494
+ const assetId = getAssetIdFromElement(item.element);
1495
+ const storageItem = (_a = __privateGet(this, _storageLoadItemMap)) == null ? void 0 : _a[assetId];
1496
+ if (!__privateGet(this, _hasDestroyed)) {
1324
1497
  if (storageItem) {
1325
1498
  if (storageItem.startTime < item.startTime) {
1326
- this._storageLoadItemMap[assetId] = item;
1499
+ __privateGet(this, _storageLoadItemMap)[assetId] = item;
1327
1500
  this.trigger("error", { ...item, countTime: item.endTime - item.startTime });
1328
1501
  }
1329
1502
  } else {
1330
- this._storageLoadItemMap[assetId] = item;
1503
+ __privateGet(this, _storageLoadItemMap)[assetId] = item;
1331
1504
  this.trigger("error", { ...item, countTime: item.endTime - item.startTime });
1332
1505
  }
1333
1506
  }
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) => {
1507
+ };
1508
+ _loadResource = new WeakSet();
1509
+ loadResource_fn = function(element, assets) {
1510
+ const item = __privateMethod(this, _createLoadItem, createLoadItem_fn).call(this, element);
1511
+ const assetId = getAssetIdFromElement(element);
1512
+ __privateGet(this, _currentLoadItemMap)[assetId] = item;
1513
+ const loadFunc = __privateGet(this, _loadFuncMap)[element.type];
1514
+ if (typeof loadFunc === "function" && !__privateGet(this, _hasDestroyed)) {
1515
+ item.startTime = Date.now();
1516
+ loadFunc(element, assets).then((result) => {
1517
+ if (!__privateGet(this, _hasDestroyed)) {
1342
1518
  item.content = result.content;
1343
1519
  item.endTime = Date.now();
1344
1520
  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
- load(element, assets) {
1365
- if (this._isExistingErrorStorage(element)) {
1366
- return;
1367
- }
1368
- if (supportElementTypes.includes(element.type)) {
1369
- this._loadResource(element, assets);
1370
- }
1521
+ __privateMethod(this, _emitLoad, emitLoad_fn).call(this, item);
1522
+ }
1523
+ }).catch((err) => {
1524
+ console.warn(`Load element source "${item.source}" fail`, err, element);
1525
+ item.endTime = Date.now();
1526
+ item.status = "error";
1527
+ item.error = err;
1528
+ __privateMethod(this, _emitError, emitError_fn).call(this, item);
1529
+ });
1371
1530
  }
1372
- getContent(element) {
1373
- var _a, _b;
1374
- const assetId = getAssetIdFromElement(element);
1375
- return ((_b = (_a = this._storageLoadItemMap) == null ? void 0 : _a[assetId]) == null ? void 0 : _b.content) || null;
1531
+ };
1532
+ _isExistingErrorStorage = new WeakSet();
1533
+ isExistingErrorStorage_fn = function(element) {
1534
+ var _a;
1535
+ const assetId = getAssetIdFromElement(element);
1536
+ const existItem = (_a = __privateGet(this, _currentLoadItemMap)) == null ? void 0 : _a[assetId];
1537
+ if (existItem && existItem.status === "error" && existItem.source && existItem.source === __privateMethod(this, _getLoadElementSource, getLoadElementSource_fn).call(this, element)) {
1538
+ return true;
1376
1539
  }
1377
- }
1540
+ return false;
1541
+ };
1378
1542
  class Renderer extends EventEmitter {
1379
- // private _draftContextTop: CanvasRenderingContext2D;
1380
- // private _draftContextMiddle: CanvasRenderingContext2D;
1381
- // private _draftContextBottom: CanvasRenderingContext2D;
1382
1543
  constructor(opts) {
1383
1544
  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
- });
1545
+ __privateAdd(this, _init);
1546
+ __privateAdd(this, _opts, void 0);
1547
+ __privateAdd(this, _loader, new Loader());
1548
+ __privateAdd(this, _hasDestroyed2, false);
1549
+ __privateSet(this, _opts, opts);
1550
+ __privateMethod(this, _init, init_fn).call(this);
1551
+ }
1552
+ isDestroyed() {
1553
+ return __privateGet(this, _hasDestroyed2);
1554
+ }
1555
+ destroy() {
1556
+ this.clear();
1557
+ __privateSet(this, _opts, null);
1558
+ __privateGet(this, _loader).destroy();
1559
+ __privateSet(this, _loader, null);
1560
+ __privateSet(this, _hasDestroyed2, true);
1395
1561
  }
1396
1562
  updateOptions(opts) {
1397
- this._opts = opts;
1563
+ __privateSet(this, _opts, opts);
1398
1564
  }
1399
1565
  drawData(data, opts) {
1400
- const { _loader: loader } = this;
1401
- const { calculator } = this._opts;
1402
- const { viewContext } = this._opts.viewContent;
1566
+ const loader = __privateGet(this, _loader);
1567
+ const { calculator } = __privateGet(this, _opts);
1568
+ const viewContext = __privateGet(this, _opts).viewContext;
1403
1569
  viewContext.clearRect(0, 0, viewContext.canvas.width, viewContext.canvas.height);
1404
1570
  const parentElementSize = {
1405
1571
  x: 0,
@@ -1407,16 +1573,29 @@ var iDrawRenderer = function(exports) {
1407
1573
  w: opts.viewSizeInfo.width,
1408
1574
  h: opts.viewSizeInfo.height
1409
1575
  };
1576
+ if (data.underlay) {
1577
+ drawUnderlay(viewContext, data.underlay, {
1578
+ loader,
1579
+ calculator,
1580
+ parentElementSize,
1581
+ parentOpacity: 1,
1582
+ ...opts
1583
+ });
1584
+ }
1410
1585
  drawElementList(viewContext, data, {
1411
1586
  loader,
1412
1587
  calculator,
1413
1588
  parentElementSize,
1414
1589
  elementAssets: data.assets,
1590
+ parentOpacity: 1,
1415
1591
  ...opts
1416
1592
  });
1417
1593
  }
1418
1594
  scale(num) {
1419
- const { sharer } = this._opts;
1595
+ const { sharer } = __privateGet(this, _opts);
1596
+ if (!sharer) {
1597
+ return;
1598
+ }
1420
1599
  const { data, offsetTop, offsetBottom, offsetLeft, offsetRight, width, height, contextHeight, contextWidth, devicePixelRatio } = sharer.getActiveStoreSnapshot();
1421
1600
  if (data) {
1422
1601
  this.drawData(data, {
@@ -1437,8 +1616,30 @@ var iDrawRenderer = function(exports) {
1437
1616
  });
1438
1617
  }
1439
1618
  }
1619
+ setLoadItemMap(itemMap) {
1620
+ __privateGet(this, _loader).setLoadItemMap(itemMap);
1621
+ }
1622
+ getLoadItemMap() {
1623
+ return __privateGet(this, _loader).getLoadItemMap();
1624
+ }
1625
+ getLoader() {
1626
+ return __privateGet(this, _loader);
1627
+ }
1440
1628
  }
1629
+ _opts = new WeakMap();
1630
+ _loader = new WeakMap();
1631
+ _hasDestroyed2 = new WeakMap();
1632
+ _init = new WeakSet();
1633
+ init_fn = function() {
1634
+ const loader = __privateGet(this, _loader);
1635
+ loader.on("load", (e) => {
1636
+ this.trigger("load", e);
1637
+ });
1638
+ loader.on("error", () => {
1639
+ });
1640
+ };
1441
1641
  exports.Renderer = Renderer;
1642
+ exports.drawRect = drawRect;
1442
1643
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
1443
1644
  return exports;
1444
1645
  }({});