@idraw/renderer 0.4.0-beta.3 → 0.4.0-beta.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -22,7 +22,7 @@ var __privateMethod = (obj, member, method) => {
22
22
  return method;
23
23
  };
24
24
 
25
- var _opts, _loader, _init, init_fn;
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;
26
26
  function isColorStr(color2) {
27
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));
28
28
  }
@@ -447,7 +447,7 @@ var __privateMethod = (obj, member, method) => {
447
447
  const { scale } = viewScaleInfo;
448
448
  let { borderRadius: borderRadius2 } = viewElem.detail;
449
449
  const { boxSizing = defaultElemConfig$1.boxSizing, borderWidth: borderWidth2 } = viewElem.detail;
450
- if (typeof borderWidth2 !== "number") {
450
+ if (Array.isArray(borderWidth2)) {
451
451
  borderRadius2 = 0;
452
452
  }
453
453
  let { x: x2, y: y2, w: w2, h: h2 } = viewElem;
@@ -535,24 +535,29 @@ var __privateMethod = (obj, member, method) => {
535
535
  return "#000000";
536
536
  }
537
537
  const defaultElemConfig = getDefaultElementDetailConfig();
538
+ function getOpacity(elem) {
539
+ var _a, _b, _c, _d;
540
+ let opacity = 1;
541
+ 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) {
542
+ opacity = (_d = elem == null ? void 0 : elem.detail) == null ? void 0 : _d.opacity;
543
+ }
544
+ return opacity;
545
+ }
538
546
  function drawBox(ctx, viewElem, opts) {
539
547
  const { pattern, renderContent, originElem, calcElemSize, viewScaleInfo, viewSizeInfo } = opts || {};
548
+ const { parentOpacity } = opts;
549
+ const opacity = getOpacity(originElem) * parentOpacity;
540
550
  drawClipPath(ctx, viewElem, {
541
551
  originElem,
542
552
  calcElemSize,
543
553
  viewScaleInfo,
544
554
  viewSizeInfo,
545
555
  renderContent: () => {
546
- var _a, _b;
547
- 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) {
548
- ctx.globalAlpha = viewElem.detail.opacity;
549
- } else {
550
- ctx.globalAlpha = 1;
551
- }
556
+ ctx.globalAlpha = opacity;
552
557
  drawBoxBackground(ctx, viewElem, { pattern, viewScaleInfo, viewSizeInfo });
553
558
  renderContent == null ? void 0 : renderContent();
554
559
  drawBoxBorder(ctx, viewElem, { viewScaleInfo, viewSizeInfo });
555
- ctx.globalAlpha = 1;
560
+ ctx.globalAlpha = parentOpacity;
556
561
  }
557
562
  });
558
563
  }
@@ -589,8 +594,6 @@ var __privateMethod = (obj, member, method) => {
589
594
  var _a, _b;
590
595
  const { pattern, viewScaleInfo, viewSizeInfo } = opts;
591
596
  const transform = [];
592
- viewElem.detail;
593
- viewElem.detail;
594
597
  if (viewElem.detail.background || pattern) {
595
598
  const { x: x2, y: y2, w: w2, h: h2, radiusList } = calcViewBoxSize(viewElem, {
596
599
  viewScaleInfo,
@@ -643,18 +646,12 @@ var __privateMethod = (obj, member, method) => {
643
646
  }
644
647
  }
645
648
  function drawBoxBorder(ctx, viewElem, opts) {
646
- var _a, _b;
647
649
  if (viewElem.detail.borderWidth === 0) {
648
650
  return;
649
651
  }
650
652
  if (!isColorStr(viewElem.detail.borderColor)) {
651
653
  return;
652
654
  }
653
- 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) {
654
- ctx.globalAlpha = viewElem.detail.opacity;
655
- } else {
656
- ctx.globalAlpha = 1;
657
- }
658
655
  const { viewScaleInfo } = opts;
659
656
  const { scale } = viewScaleInfo;
660
657
  let borderColor = defaultElemConfig.borderColor;
@@ -778,7 +775,6 @@ var __privateMethod = (obj, member, method) => {
778
775
  ctx.arcTo(x2, y2, x2 + w2, y2, radiusList[0]);
779
776
  ctx.closePath();
780
777
  ctx.stroke();
781
- ctx.globalAlpha = 1;
782
778
  }
783
779
  ctx.setLineDash([]);
784
780
  }
@@ -800,8 +796,14 @@ var __privateMethod = (obj, member, method) => {
800
796
  }
801
797
  function drawCircle(ctx, elem, opts) {
802
798
  const { detail, angle: angle2 } = elem;
803
- const { background = "#000000", borderColor = "#000000", borderWidth: borderWidth2 = 0 } = detail;
804
- const { calculator, viewScaleInfo, viewSizeInfo } = opts;
799
+ const { background = "#000000", borderColor = "#000000", boxSizing, borderWidth: borderWidth2 = 0 } = detail;
800
+ let bw = 0;
801
+ if (typeof borderWidth2 === "number" && borderWidth2 > 0) {
802
+ bw = borderWidth2;
803
+ } else if (Array.isArray(borderWidth2) && typeof borderWidth2[0] === "number" && borderWidth2[0] > 0) {
804
+ bw = borderWidth2[0];
805
+ }
806
+ const { calculator, viewScaleInfo, viewSizeInfo, parentOpacity } = opts;
805
807
  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;
806
808
  const viewElem = { ...elem, ...{ x: x2, y: y2, w: w2, h: h2, angle: angle2 } };
807
809
  rotateElement(ctx, { x: x2, y: y2, w: w2, h: h2, angle: angle2 }, () => {
@@ -809,16 +811,24 @@ var __privateMethod = (obj, member, method) => {
809
811
  viewScaleInfo,
810
812
  viewSizeInfo,
811
813
  renderContent: () => {
812
- var _a, _b;
813
- const a = w2 / 2;
814
- const b = h2 / 2;
814
+ let a = w2 / 2;
815
+ let b = h2 / 2;
815
816
  const centerX = x2 + a;
816
817
  const centerY = y2 + b;
817
- 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) {
818
- ctx.globalAlpha = elem.detail.opacity;
819
- } else {
820
- ctx.globalAlpha = 1;
818
+ if (bw > 0) {
819
+ if (boxSizing === "border-box") {
820
+ a = a - bw;
821
+ b = b - bw;
822
+ } else if (boxSizing === "center-line") {
823
+ a = a - bw / 2;
824
+ b = b - bw / 2;
825
+ } else {
826
+ a = a - bw;
827
+ b = b - bw;
828
+ }
821
829
  }
830
+ const opacity = getOpacity(viewElem) * parentOpacity;
831
+ ctx.globalAlpha = opacity;
822
832
  if (typeof borderWidth2 === "number" && borderWidth2 > 0) {
823
833
  const ba = borderWidth2 / 2 + a;
824
834
  const bb = borderWidth2 / 2 + b;
@@ -839,13 +849,13 @@ var __privateMethod = (obj, member, method) => {
839
849
  ctx.circle(centerX, centerY, a, b, 0, 0, 2 * Math.PI);
840
850
  ctx.closePath();
841
851
  ctx.fill();
842
- ctx.globalAlpha = 1;
852
+ ctx.globalAlpha = parentOpacity;
843
853
  }
844
854
  });
845
855
  });
846
856
  }
847
857
  function drawRect(ctx, elem, opts) {
848
- const { calculator, viewScaleInfo, viewSizeInfo } = opts;
858
+ const { calculator, viewScaleInfo, viewSizeInfo, parentOpacity } = opts;
849
859
  const { x: x2, y: y2, w: w2, h: h2, angle: angle2 } = (calculator == null ? void 0 : calculator.elementSize(elem, viewScaleInfo, viewSizeInfo)) || elem;
850
860
  const viewElem = { ...elem, ...{ x: x2, y: y2, w: w2, h: h2, angle: angle2 } };
851
861
  rotateElement(ctx, { x: x2, y: y2, w: w2, h: h2, angle: angle2 }, () => {
@@ -858,6 +868,7 @@ var __privateMethod = (obj, member, method) => {
858
868
  calcElemSize: { x: x2, y: y2, w: w2, h: h2, angle: angle2 },
859
869
  viewScaleInfo,
860
870
  viewSizeInfo,
871
+ parentOpacity,
861
872
  renderContent: () => {
862
873
  }
863
874
  });
@@ -867,7 +878,7 @@ var __privateMethod = (obj, member, method) => {
867
878
  }
868
879
  function drawImage(ctx, elem, opts) {
869
880
  const content = opts.loader.getContent(elem);
870
- const { calculator, viewScaleInfo, viewSizeInfo } = opts;
881
+ const { calculator, viewScaleInfo, viewSizeInfo, parentOpacity } = opts;
871
882
  const { x: x2, y: y2, w: w2, h: h2, angle: angle2 } = (calculator == null ? void 0 : calculator.elementSize(elem, viewScaleInfo, viewSizeInfo)) || elem;
872
883
  const viewElem = { ...elem, ...{ x: x2, y: y2, w: w2, h: h2, angle: angle2 } };
873
884
  rotateElement(ctx, { x: x2, y: y2, w: w2, h: h2, angle: angle2 }, () => {
@@ -880,13 +891,13 @@ var __privateMethod = (obj, member, method) => {
880
891
  calcElemSize: { x: x2, y: y2, w: w2, h: h2, angle: angle2 },
881
892
  viewScaleInfo,
882
893
  viewSizeInfo,
894
+ parentOpacity,
883
895
  renderContent: () => {
884
896
  if (!content) {
885
897
  opts.loader.load(elem, opts.elementAssets || {});
886
898
  }
887
899
  if (elem.type === "image" && content) {
888
- const { opacity } = elem.detail;
889
- ctx.globalAlpha = opacity ? opacity : 1;
900
+ ctx.globalAlpha = getOpacity(elem) * parentOpacity;
890
901
  const { x: x22, y: y22, w: w22, h: h22, radiusList } = calcViewBoxSize(viewElem, {
891
902
  viewScaleInfo,
892
903
  viewSizeInfo
@@ -903,7 +914,7 @@ var __privateMethod = (obj, member, method) => {
903
914
  ctx.fill();
904
915
  ctx.clip();
905
916
  ctx.drawImage(content, x22, y22, w22, h22);
906
- ctx.globalAlpha = 1;
917
+ ctx.globalAlpha = parentOpacity;
907
918
  ctx.restore();
908
919
  }
909
920
  }
@@ -914,39 +925,37 @@ var __privateMethod = (obj, member, method) => {
914
925
  }
915
926
  function drawSVG(ctx, elem, opts) {
916
927
  const content = opts.loader.getContent(elem);
917
- const { calculator, viewScaleInfo, viewSizeInfo } = opts;
928
+ const { calculator, viewScaleInfo, viewSizeInfo, parentOpacity } = opts;
918
929
  const { x: x2, y: y2, w: w2, h: h2, angle: angle2 } = (calculator == null ? void 0 : calculator.elementSize(elem, viewScaleInfo, viewSizeInfo)) || elem;
919
930
  rotateElement(ctx, { x: x2, y: y2, w: w2, h: h2, angle: angle2 }, () => {
920
931
  if (!content) {
921
932
  opts.loader.load(elem, opts.elementAssets || {});
922
933
  }
923
934
  if (elem.type === "svg" && content) {
924
- const { opacity } = elem.detail;
925
- ctx.globalAlpha = opacity ? opacity : 1;
935
+ ctx.globalAlpha = getOpacity(elem) * parentOpacity;
926
936
  ctx.drawImage(content, x2, y2, w2, h2);
927
- ctx.globalAlpha = 1;
937
+ ctx.globalAlpha = parentOpacity;
928
938
  }
929
939
  });
930
940
  }
931
941
  function drawHTML(ctx, elem, opts) {
932
942
  const content = opts.loader.getContent(elem);
933
- const { calculator, viewScaleInfo, viewSizeInfo } = opts;
943
+ const { calculator, viewScaleInfo, viewSizeInfo, parentOpacity } = opts;
934
944
  const { x: x2, y: y2, w: w2, h: h2, angle: angle2 } = (calculator == null ? void 0 : calculator.elementSize(elem, viewScaleInfo, viewSizeInfo)) || elem;
935
945
  rotateElement(ctx, { x: x2, y: y2, w: w2, h: h2, angle: angle2 }, () => {
936
946
  if (!content) {
937
947
  opts.loader.load(elem, opts.elementAssets || {});
938
948
  }
939
949
  if (elem.type === "html" && content) {
940
- const { opacity } = elem.detail;
941
- ctx.globalAlpha = opacity ? opacity : 1;
950
+ ctx.globalAlpha = getOpacity(elem) * parentOpacity;
942
951
  ctx.drawImage(content, x2, y2, w2, h2);
943
- ctx.globalAlpha = 1;
952
+ ctx.globalAlpha = parentOpacity;
944
953
  }
945
954
  });
946
955
  }
947
956
  const detailConfig = getDefaultElementDetailConfig();
948
957
  function drawText(ctx, elem, opts) {
949
- const { calculator, viewScaleInfo, viewSizeInfo } = opts;
958
+ const { calculator, viewScaleInfo, viewSizeInfo, parentOpacity } = opts;
950
959
  const { x: x2, y: y2, w: w2, h: h2, angle: angle2 } = (calculator == null ? void 0 : calculator.elementSize(elem, viewScaleInfo, viewSizeInfo)) || elem;
951
960
  const viewElem = { ...elem, ...{ x: x2, y: y2, w: w2, h: h2, angle: angle2 } };
952
961
  rotateElement(ctx, { x: x2, y: y2, w: w2, h: h2, angle: angle2 }, () => {
@@ -955,6 +964,7 @@ var __privateMethod = (obj, member, method) => {
955
964
  calcElemSize: { x: x2, y: y2, w: w2, h: h2, angle: angle2 },
956
965
  viewScaleInfo,
957
966
  viewSizeInfo,
967
+ parentOpacity,
958
968
  renderContent: () => {
959
969
  const detail = {
960
970
  ...detailConfig,
@@ -1052,7 +1062,7 @@ var __privateMethod = (obj, member, method) => {
1052
1062
  function drawPath(ctx, elem, opts) {
1053
1063
  const { detail } = elem;
1054
1064
  const { originX, originY, originW, originH } = detail;
1055
- const { calculator, viewScaleInfo, viewSizeInfo } = opts;
1065
+ const { calculator, viewScaleInfo, viewSizeInfo, parentOpacity } = opts;
1056
1066
  const { x: x2, y: y2, w: w2, h: h2, angle: angle2 } = (calculator == null ? void 0 : calculator.elementSize(elem, viewScaleInfo, viewSizeInfo)) || elem;
1057
1067
  const scaleW = w2 / originW;
1058
1068
  const scaleH = h2 / originH;
@@ -1068,6 +1078,7 @@ var __privateMethod = (obj, member, method) => {
1068
1078
  calcElemSize: { x: x2, y: y2, w: w2, h: h2, angle: angle2 },
1069
1079
  viewScaleInfo,
1070
1080
  viewSizeInfo,
1081
+ parentOpacity,
1071
1082
  renderContent: () => {
1072
1083
  drawBoxShadow(ctx, viewElem, {
1073
1084
  viewScaleInfo,
@@ -1151,10 +1162,11 @@ var __privateMethod = (obj, member, method) => {
1151
1162
  }
1152
1163
  }
1153
1164
  function drawGroup(ctx, elem, opts) {
1154
- const { calculator, viewScaleInfo, viewSizeInfo } = opts;
1165
+ const { calculator, viewScaleInfo, viewSizeInfo, parentOpacity } = opts;
1155
1166
  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;
1156
1167
  const viewElem = { ...elem, ...{ x: x2, y: y2, w: w2, h: h2, angle: angle2 } };
1157
1168
  rotateElement(ctx, { x: x2, y: y2, w: w2, h: h2, angle: angle2 }, () => {
1169
+ ctx.globalAlpha = getOpacity(elem) * parentOpacity;
1158
1170
  drawBoxShadow(ctx, viewElem, {
1159
1171
  viewScaleInfo,
1160
1172
  viewSizeInfo,
@@ -1164,6 +1176,7 @@ var __privateMethod = (obj, member, method) => {
1164
1176
  calcElemSize: { x: x2, y: y2, w: w2, h: h2, angle: angle2 },
1165
1177
  viewScaleInfo,
1166
1178
  viewSizeInfo,
1179
+ parentOpacity,
1167
1180
  renderContent: () => {
1168
1181
  const { x: x22, y: y22, w: w22, h: h22, radiusList } = calcViewBoxSize(viewElem, {
1169
1182
  viewScaleInfo,
@@ -1207,26 +1220,27 @@ var __privateMethod = (obj, member, method) => {
1207
1220
  }
1208
1221
  }
1209
1222
  try {
1210
- drawElement(ctx, child, { ...opts });
1223
+ drawElement(ctx, child, { ...opts, ...{ parentOpacity: parentOpacity * getOpacity(elem) } });
1211
1224
  } catch (err) {
1212
1225
  console.error(err);
1213
1226
  }
1214
1227
  }
1215
1228
  }
1216
1229
  if (elem.detail.overflow === "hidden") {
1217
- ctx.globalAlpha = 1;
1218
1230
  ctx.restore();
1219
1231
  }
1220
1232
  }
1221
1233
  });
1222
1234
  }
1223
1235
  });
1236
+ ctx.globalAlpha = parentOpacity;
1224
1237
  });
1225
1238
  }
1226
1239
  const defaultDetail = getDefaultElementDetailConfig();
1227
1240
  function drawElementList(ctx, data, opts) {
1228
1241
  var _a;
1229
1242
  const { elements = [] } = data;
1243
+ const { parentOpacity } = opts;
1230
1244
  for (let i = 0; i < elements.length; i++) {
1231
1245
  const element = elements[i];
1232
1246
  const elem = {
@@ -1244,7 +1258,12 @@ var __privateMethod = (obj, member, method) => {
1244
1258
  }
1245
1259
  }
1246
1260
  try {
1247
- drawElement(ctx, elem, opts);
1261
+ drawElement(ctx, elem, {
1262
+ ...opts,
1263
+ ...{
1264
+ parentOpacity
1265
+ }
1266
+ });
1248
1267
  } catch (err) {
1249
1268
  console.error(err);
1250
1269
  }
@@ -1272,10 +1291,17 @@ var __privateMethod = (obj, member, method) => {
1272
1291
  class Loader extends EventEmitter {
1273
1292
  constructor() {
1274
1293
  super();
1275
- this._loadFuncMap = {};
1276
- this._currentLoadItemMap = {};
1277
- this._storageLoadItemMap = {};
1278
- this._registerLoadFunc("image", async (elem, assets) => {
1294
+ __privateAdd(this, _registerLoadFunc);
1295
+ __privateAdd(this, _getLoadElementSource);
1296
+ __privateAdd(this, _createLoadItem);
1297
+ __privateAdd(this, _emitLoad);
1298
+ __privateAdd(this, _emitError);
1299
+ __privateAdd(this, _loadResource);
1300
+ __privateAdd(this, _isExistingErrorStorage);
1301
+ __privateAdd(this, _loadFuncMap, {});
1302
+ __privateAdd(this, _currentLoadItemMap, {});
1303
+ __privateAdd(this, _storageLoadItemMap, {});
1304
+ __privateMethod(this, _registerLoadFunc, registerLoadFunc_fn).call(this, "image", async (elem, assets) => {
1279
1305
  var _a;
1280
1306
  const src = ((_a = assets[elem.detail.src]) == null ? void 0 : _a.value) || elem.detail.src;
1281
1307
  const content = await loadImage(src);
@@ -1285,12 +1311,12 @@ var __privateMethod = (obj, member, method) => {
1285
1311
  content
1286
1312
  };
1287
1313
  });
1288
- this._registerLoadFunc("html", async (elem, assets) => {
1314
+ __privateMethod(this, _registerLoadFunc, registerLoadFunc_fn).call(this, "html", async (elem, assets) => {
1289
1315
  var _a;
1290
1316
  const html2 = ((_a = assets[elem.detail.html]) == null ? void 0 : _a.value) || elem.detail.html;
1291
1317
  const content = await loadHTML(html2, {
1292
- width: elem.detail.width || elem.w,
1293
- height: elem.detail.height || elem.h
1318
+ width: elem.detail.originW || elem.w,
1319
+ height: elem.detail.originH || elem.h
1294
1320
  });
1295
1321
  return {
1296
1322
  uuid: elem.uuid,
@@ -1298,7 +1324,7 @@ var __privateMethod = (obj, member, method) => {
1298
1324
  content
1299
1325
  };
1300
1326
  });
1301
- this._registerLoadFunc("svg", async (elem, assets) => {
1327
+ __privateMethod(this, _registerLoadFunc, registerLoadFunc_fn).call(this, "svg", async (elem, assets) => {
1302
1328
  var _a;
1303
1329
  const svg2 = ((_a = assets[elem.detail.svg]) == null ? void 0 : _a.value) || elem.detail.svg;
1304
1330
  const content = await loadSVG(svg2);
@@ -1309,102 +1335,118 @@ var __privateMethod = (obj, member, method) => {
1309
1335
  };
1310
1336
  });
1311
1337
  }
1312
- _registerLoadFunc(type, func) {
1313
- this._loadFuncMap[type] = func;
1314
- }
1315
- _getLoadElementSource(element) {
1316
- var _a, _b, _c;
1317
- let source = null;
1318
- if (element.type === "image") {
1319
- source = ((_a = element == null ? void 0 : element.detail) == null ? void 0 : _a.src) || null;
1320
- } else if (element.type === "svg") {
1321
- source = ((_b = element == null ? void 0 : element.detail) == null ? void 0 : _b.svg) || null;
1322
- } else if (element.type === "html") {
1323
- source = ((_c = element == null ? void 0 : element.detail) == null ? void 0 : _c.html) || null;
1324
- }
1325
- return source;
1326
- }
1327
- _createLoadItem(element) {
1328
- return {
1329
- element,
1330
- status: "null",
1331
- content: null,
1332
- error: null,
1333
- startTime: -1,
1334
- endTime: -1,
1335
- source: this._getLoadElementSource(element)
1336
- };
1337
- }
1338
- _emitLoad(item) {
1339
- const assetId = getAssetIdFromElement(item.element);
1340
- const storageItem = this._storageLoadItemMap[assetId];
1341
- if (storageItem) {
1342
- if (storageItem.startTime < item.startTime) {
1343
- this._storageLoadItemMap[assetId] = item;
1344
- this.trigger("load", { ...item, countTime: item.endTime - item.startTime });
1345
- }
1346
- } else {
1347
- this._storageLoadItemMap[assetId] = item;
1348
- this.trigger("load", { ...item, countTime: item.endTime - item.startTime });
1349
- }
1350
- }
1351
- _emitError(item) {
1352
- const assetId = getAssetIdFromElement(item.element);
1353
- const storageItem = this._storageLoadItemMap[assetId];
1354
- if (storageItem) {
1355
- if (storageItem.startTime < item.startTime) {
1356
- this._storageLoadItemMap[assetId] = item;
1357
- this.trigger("error", { ...item, countTime: item.endTime - item.startTime });
1358
- }
1359
- } else {
1360
- this._storageLoadItemMap[assetId] = item;
1361
- this.trigger("error", { ...item, countTime: item.endTime - item.startTime });
1362
- }
1363
- }
1364
- _loadResource(element, assets) {
1365
- const item = this._createLoadItem(element);
1366
- const assetId = getAssetIdFromElement(element);
1367
- this._currentLoadItemMap[assetId] = item;
1368
- const loadFunc = this._loadFuncMap[element.type];
1369
- if (typeof loadFunc === "function") {
1370
- item.startTime = Date.now();
1371
- loadFunc(element, assets).then((result) => {
1372
- item.content = result.content;
1373
- item.endTime = Date.now();
1374
- item.status = "load";
1375
- this._emitLoad(item);
1376
- }).catch((err) => {
1377
- console.warn(`Load element source "${item.source}" fail`, err, element);
1378
- item.endTime = Date.now();
1379
- item.status = "error";
1380
- item.error = err;
1381
- this._emitError(item);
1382
- });
1383
- }
1384
- }
1385
- _isExistingErrorStorage(element) {
1386
- var _a;
1387
- const assetId = getAssetIdFromElement(element);
1388
- const existItem = (_a = this._currentLoadItemMap) == null ? void 0 : _a[assetId];
1389
- if (existItem && existItem.status === "error" && existItem.source && existItem.source === this._getLoadElementSource(element)) {
1390
- return true;
1391
- }
1392
- return false;
1393
- }
1394
1338
  load(element, assets) {
1395
- if (this._isExistingErrorStorage(element)) {
1339
+ if (__privateMethod(this, _isExistingErrorStorage, isExistingErrorStorage_fn).call(this, element)) {
1396
1340
  return;
1397
1341
  }
1398
1342
  if (supportElementTypes.includes(element.type)) {
1399
- this._loadResource(element, assets);
1343
+ __privateMethod(this, _loadResource, loadResource_fn).call(this, element, assets);
1400
1344
  }
1401
1345
  }
1402
1346
  getContent(element) {
1403
1347
  var _a, _b;
1404
1348
  const assetId = getAssetIdFromElement(element);
1405
- return ((_b = (_a = this._storageLoadItemMap) == null ? void 0 : _a[assetId]) == null ? void 0 : _b.content) || null;
1349
+ return ((_b = (_a = __privateGet(this, _storageLoadItemMap)) == null ? void 0 : _a[assetId]) == null ? void 0 : _b.content) || null;
1350
+ }
1351
+ getLoadItemMap() {
1352
+ return __privateGet(this, _storageLoadItemMap);
1353
+ }
1354
+ setLoadItemMap(itemMap) {
1355
+ __privateSet(this, _storageLoadItemMap, itemMap);
1406
1356
  }
1407
1357
  }
1358
+ _loadFuncMap = new WeakMap();
1359
+ _currentLoadItemMap = new WeakMap();
1360
+ _storageLoadItemMap = new WeakMap();
1361
+ _registerLoadFunc = new WeakSet();
1362
+ registerLoadFunc_fn = function(type, func) {
1363
+ __privateGet(this, _loadFuncMap)[type] = func;
1364
+ };
1365
+ _getLoadElementSource = new WeakSet();
1366
+ getLoadElementSource_fn = function(element) {
1367
+ var _a, _b, _c;
1368
+ let source = null;
1369
+ if (element.type === "image") {
1370
+ source = ((_a = element == null ? void 0 : element.detail) == null ? void 0 : _a.src) || null;
1371
+ } else if (element.type === "svg") {
1372
+ source = ((_b = element == null ? void 0 : element.detail) == null ? void 0 : _b.svg) || null;
1373
+ } else if (element.type === "html") {
1374
+ source = ((_c = element == null ? void 0 : element.detail) == null ? void 0 : _c.html) || null;
1375
+ }
1376
+ return source;
1377
+ };
1378
+ _createLoadItem = new WeakSet();
1379
+ createLoadItem_fn = function(element) {
1380
+ return {
1381
+ element,
1382
+ status: "null",
1383
+ content: null,
1384
+ error: null,
1385
+ startTime: -1,
1386
+ endTime: -1,
1387
+ source: __privateMethod(this, _getLoadElementSource, getLoadElementSource_fn).call(this, element)
1388
+ };
1389
+ };
1390
+ _emitLoad = new WeakSet();
1391
+ emitLoad_fn = function(item) {
1392
+ const assetId = getAssetIdFromElement(item.element);
1393
+ const storageItem = __privateGet(this, _storageLoadItemMap)[assetId];
1394
+ if (storageItem) {
1395
+ if (storageItem.startTime < item.startTime) {
1396
+ __privateGet(this, _storageLoadItemMap)[assetId] = item;
1397
+ this.trigger("load", { ...item, countTime: item.endTime - item.startTime });
1398
+ }
1399
+ } else {
1400
+ __privateGet(this, _storageLoadItemMap)[assetId] = item;
1401
+ this.trigger("load", { ...item, countTime: item.endTime - item.startTime });
1402
+ }
1403
+ };
1404
+ _emitError = new WeakSet();
1405
+ emitError_fn = function(item) {
1406
+ const assetId = getAssetIdFromElement(item.element);
1407
+ const storageItem = __privateGet(this, _storageLoadItemMap)[assetId];
1408
+ if (storageItem) {
1409
+ if (storageItem.startTime < item.startTime) {
1410
+ __privateGet(this, _storageLoadItemMap)[assetId] = item;
1411
+ this.trigger("error", { ...item, countTime: item.endTime - item.startTime });
1412
+ }
1413
+ } else {
1414
+ __privateGet(this, _storageLoadItemMap)[assetId] = item;
1415
+ this.trigger("error", { ...item, countTime: item.endTime - item.startTime });
1416
+ }
1417
+ };
1418
+ _loadResource = new WeakSet();
1419
+ loadResource_fn = function(element, assets) {
1420
+ const item = __privateMethod(this, _createLoadItem, createLoadItem_fn).call(this, element);
1421
+ const assetId = getAssetIdFromElement(element);
1422
+ __privateGet(this, _currentLoadItemMap)[assetId] = item;
1423
+ const loadFunc = __privateGet(this, _loadFuncMap)[element.type];
1424
+ if (typeof loadFunc === "function") {
1425
+ item.startTime = Date.now();
1426
+ loadFunc(element, assets).then((result) => {
1427
+ item.content = result.content;
1428
+ item.endTime = Date.now();
1429
+ item.status = "load";
1430
+ __privateMethod(this, _emitLoad, emitLoad_fn).call(this, item);
1431
+ }).catch((err) => {
1432
+ console.warn(`Load element source "${item.source}" fail`, err, element);
1433
+ item.endTime = Date.now();
1434
+ item.status = "error";
1435
+ item.error = err;
1436
+ __privateMethod(this, _emitError, emitError_fn).call(this, item);
1437
+ });
1438
+ }
1439
+ };
1440
+ _isExistingErrorStorage = new WeakSet();
1441
+ isExistingErrorStorage_fn = function(element) {
1442
+ var _a;
1443
+ const assetId = getAssetIdFromElement(element);
1444
+ const existItem = (_a = __privateGet(this, _currentLoadItemMap)) == null ? void 0 : _a[assetId];
1445
+ if (existItem && existItem.status === "error" && existItem.source && existItem.source === __privateMethod(this, _getLoadElementSource, getLoadElementSource_fn).call(this, element)) {
1446
+ return true;
1447
+ }
1448
+ return false;
1449
+ };
1408
1450
  class Renderer extends EventEmitter {
1409
1451
  // private _draftContextTop: CanvasRenderingContext2D;
1410
1452
  // private _draftContextMiddle: CanvasRenderingContext2D;
@@ -1436,6 +1478,7 @@ var __privateMethod = (obj, member, method) => {
1436
1478
  calculator,
1437
1479
  parentElementSize,
1438
1480
  elementAssets: data.assets,
1481
+ parentOpacity: 1,
1439
1482
  ...opts
1440
1483
  });
1441
1484
  }
@@ -1464,6 +1507,12 @@ var __privateMethod = (obj, member, method) => {
1464
1507
  });
1465
1508
  }
1466
1509
  }
1510
+ setLoadItemMap(itemMap) {
1511
+ __privateGet(this, _loader).setLoadItemMap(itemMap);
1512
+ }
1513
+ getLoadItemMap() {
1514
+ return __privateGet(this, _loader).getLoadItemMap();
1515
+ }
1467
1516
  }
1468
1517
  _opts = new WeakMap();
1469
1518
  _loader = new WeakMap();