@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.
- package/dist/esm/draw/box.d.ts +2 -0
- package/dist/esm/draw/box.js +12 -21
- package/dist/esm/draw/circle.js +28 -12
- package/dist/esm/draw/elements.js +4 -1
- package/dist/esm/draw/group.js +6 -4
- package/dist/esm/draw/html.js +4 -4
- package/dist/esm/draw/image.js +5 -5
- package/dist/esm/draw/path.js +2 -1
- package/dist/esm/draw/rect.js +2 -1
- package/dist/esm/draw/svg.js +4 -4
- package/dist/esm/draw/text.js +2 -1
- package/dist/esm/index.d.ts +3 -0
- package/dist/esm/index.js +7 -1
- package/dist/esm/loader.d.ts +4 -11
- package/dist/esm/loader.js +112 -99
- package/dist/index.global.js +189 -140
- package/dist/index.global.min.js +1 -1
- package/package.json +3 -3
package/dist/index.global.js
CHANGED
|
@@ -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 (
|
|
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
|
-
|
|
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 =
|
|
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
|
-
|
|
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
|
-
|
|
813
|
-
|
|
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 (
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
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 =
|
|
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
|
-
|
|
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 =
|
|
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
|
-
|
|
925
|
-
ctx.globalAlpha = opacity ? opacity : 1;
|
|
935
|
+
ctx.globalAlpha = getOpacity(elem) * parentOpacity;
|
|
926
936
|
ctx.drawImage(content, x2, y2, w2, h2);
|
|
927
|
-
ctx.globalAlpha =
|
|
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
|
-
|
|
941
|
-
ctx.globalAlpha = opacity ? opacity : 1;
|
|
950
|
+
ctx.globalAlpha = getOpacity(elem) * parentOpacity;
|
|
942
951
|
ctx.drawImage(content, x2, y2, w2, h2);
|
|
943
|
-
ctx.globalAlpha =
|
|
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,
|
|
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
|
|
1276
|
-
this
|
|
1277
|
-
this
|
|
1278
|
-
this
|
|
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.
|
|
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.
|
|
1293
|
-
height: elem.detail.
|
|
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.
|
|
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.
|
|
1339
|
+
if (__privateMethod(this, _isExistingErrorStorage, isExistingErrorStorage_fn).call(this, element)) {
|
|
1396
1340
|
return;
|
|
1397
1341
|
}
|
|
1398
1342
|
if (supportElementTypes.includes(element.type)) {
|
|
1399
|
-
this.
|
|
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
|
|
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();
|