leafer-draw 1.2.1 → 1.3.0
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/web.cjs +17 -201
- package/dist/web.esm.js +18 -202
- package/dist/web.esm.min.js +1 -1
- package/dist/web.js +137 -306
- package/dist/web.min.cjs +1 -1
- package/dist/web.min.js +1 -1
- package/dist/web.module.js +137 -306
- package/dist/web.module.min.js +1 -1
- package/package.json +2 -2
package/dist/web.module.js
CHANGED
|
@@ -765,8 +765,8 @@ const TwoPointBoundsHelper = {
|
|
|
765
765
|
t.maxY = y > t.maxY ? y : t.maxY;
|
|
766
766
|
},
|
|
767
767
|
addBounds(t, x, y, width, height) {
|
|
768
|
-
addPoint$
|
|
769
|
-
addPoint$
|
|
768
|
+
addPoint$3(t, x, y);
|
|
769
|
+
addPoint$3(t, x + width, y + height);
|
|
770
770
|
},
|
|
771
771
|
copy(t, pb) {
|
|
772
772
|
t.minX = pb.minX;
|
|
@@ -787,9 +787,9 @@ const TwoPointBoundsHelper = {
|
|
|
787
787
|
setBounds.height = t.maxY - t.minY;
|
|
788
788
|
}
|
|
789
789
|
};
|
|
790
|
-
const { addPoint: addPoint$
|
|
790
|
+
const { addPoint: addPoint$3 } = TwoPointBoundsHelper;
|
|
791
791
|
|
|
792
|
-
const { tempPointBounds: tempPointBounds$1, setPoint: setPoint$
|
|
792
|
+
const { tempPointBounds: tempPointBounds$1, setPoint: setPoint$2, addPoint: addPoint$2, toBounds: toBounds$3 } = TwoPointBoundsHelper;
|
|
793
793
|
const { toOuterPoint: toOuterPoint$2 } = MatrixHelper;
|
|
794
794
|
const { float, fourNumber } = MathHelper;
|
|
795
795
|
const { floor, ceil: ceil$2 } = Math;
|
|
@@ -905,17 +905,17 @@ const BoundsHelper = {
|
|
|
905
905
|
point.x = t.x;
|
|
906
906
|
point.y = t.y;
|
|
907
907
|
toOuterPoint$2(matrix, point, toPoint$5);
|
|
908
|
-
setPoint$
|
|
908
|
+
setPoint$2(tempPointBounds$1, toPoint$5.x, toPoint$5.y);
|
|
909
909
|
point.x = t.x + t.width;
|
|
910
910
|
toOuterPoint$2(matrix, point, toPoint$5);
|
|
911
|
-
addPoint$
|
|
911
|
+
addPoint$2(tempPointBounds$1, toPoint$5.x, toPoint$5.y);
|
|
912
912
|
point.y = t.y + t.height;
|
|
913
913
|
toOuterPoint$2(matrix, point, toPoint$5);
|
|
914
|
-
addPoint$
|
|
914
|
+
addPoint$2(tempPointBounds$1, toPoint$5.x, toPoint$5.y);
|
|
915
915
|
point.x = t.x;
|
|
916
916
|
toOuterPoint$2(matrix, point, toPoint$5);
|
|
917
|
-
addPoint$
|
|
918
|
-
toBounds$
|
|
917
|
+
addPoint$2(tempPointBounds$1, toPoint$5.x, toPoint$5.y);
|
|
918
|
+
toBounds$3(tempPointBounds$1, to);
|
|
919
919
|
}
|
|
920
920
|
},
|
|
921
921
|
toInnerOf(t, matrix, to) {
|
|
@@ -1005,8 +1005,8 @@ const BoundsHelper = {
|
|
|
1005
1005
|
B.reset(t);
|
|
1006
1006
|
},
|
|
1007
1007
|
setPoints(t, points) {
|
|
1008
|
-
points.forEach((point, index) => index === 0 ? setPoint$
|
|
1009
|
-
toBounds$
|
|
1008
|
+
points.forEach((point, index) => index === 0 ? setPoint$2(tempPointBounds$1, point.x, point.y) : addPoint$2(tempPointBounds$1, point.x, point.y));
|
|
1009
|
+
toBounds$3(tempPointBounds$1, t);
|
|
1010
1010
|
},
|
|
1011
1011
|
setPoint(t, point) {
|
|
1012
1012
|
B.set(t, point.x, point.y);
|
|
@@ -1374,7 +1374,7 @@ function getNameList(name) {
|
|
|
1374
1374
|
}
|
|
1375
1375
|
const D$4 = Debug;
|
|
1376
1376
|
|
|
1377
|
-
const debug$
|
|
1377
|
+
const debug$e = Debug.get('RunTime');
|
|
1378
1378
|
const Run = {
|
|
1379
1379
|
currentId: 0,
|
|
1380
1380
|
currentName: '',
|
|
@@ -1392,7 +1392,7 @@ const Run = {
|
|
|
1392
1392
|
const time = R.idMap[id], name = R.nameMap[id];
|
|
1393
1393
|
const duration = microsecond ? (performance.now() - time) / 1000 : Date.now() - time;
|
|
1394
1394
|
R.idMap[id] = R.nameMap[id] = R.nameToIdMap[name] = undefined;
|
|
1395
|
-
debug$
|
|
1395
|
+
debug$e.log(name, duration, 'ms');
|
|
1396
1396
|
},
|
|
1397
1397
|
endOfName(name, microsecond) {
|
|
1398
1398
|
const id = R.nameToIdMap[name];
|
|
@@ -1402,34 +1402,37 @@ const Run = {
|
|
|
1402
1402
|
};
|
|
1403
1403
|
const R = Run;
|
|
1404
1404
|
|
|
1405
|
+
const check = [];
|
|
1405
1406
|
const Plugin = {
|
|
1406
1407
|
list: {},
|
|
1407
|
-
add(name) {
|
|
1408
|
+
add(name, ...needPlugins) {
|
|
1408
1409
|
this.list[name] = true;
|
|
1410
|
+
check.push(...needPlugins);
|
|
1409
1411
|
},
|
|
1410
|
-
|
|
1412
|
+
has(name, tip) {
|
|
1411
1413
|
const rs = this.list[name];
|
|
1412
1414
|
if (!rs && tip)
|
|
1413
1415
|
this.need(name);
|
|
1414
1416
|
return rs;
|
|
1415
1417
|
},
|
|
1416
1418
|
need(name) {
|
|
1417
|
-
console.error('need plugin: @leafer-in/' + name);
|
|
1419
|
+
console.error('need plugin: ' + (name.includes('-x') ? '' : '@leafer-in/') + name);
|
|
1418
1420
|
}
|
|
1419
1421
|
};
|
|
1422
|
+
setTimeout(() => check.forEach(name => Plugin.has(name, true)));
|
|
1420
1423
|
|
|
1421
|
-
const debug$
|
|
1424
|
+
const debug$d = Debug.get('UICreator');
|
|
1422
1425
|
const UICreator = {
|
|
1423
1426
|
list: {},
|
|
1424
1427
|
register(UI) {
|
|
1425
1428
|
const { __tag: tag } = UI.prototype;
|
|
1426
1429
|
if (list$1[tag])
|
|
1427
|
-
debug$
|
|
1430
|
+
debug$d.repeat(tag);
|
|
1428
1431
|
list$1[tag] = UI;
|
|
1429
1432
|
},
|
|
1430
1433
|
get(tag, data, x, y, width, height) {
|
|
1431
1434
|
if (!list$1[tag])
|
|
1432
|
-
debug$
|
|
1435
|
+
debug$d.error('not register ' + tag);
|
|
1433
1436
|
const ui = new list$1[tag](data);
|
|
1434
1437
|
if (x !== undefined) {
|
|
1435
1438
|
ui.x = x;
|
|
@@ -1445,7 +1448,7 @@ const UICreator = {
|
|
|
1445
1448
|
};
|
|
1446
1449
|
const { list: list$1 } = UICreator;
|
|
1447
1450
|
|
|
1448
|
-
const debug$
|
|
1451
|
+
const debug$c = Debug.get('EventCreator');
|
|
1449
1452
|
const EventCreator = {
|
|
1450
1453
|
nameList: {},
|
|
1451
1454
|
register(Event) {
|
|
@@ -1453,7 +1456,7 @@ const EventCreator = {
|
|
|
1453
1456
|
Object.keys(Event).forEach(key => {
|
|
1454
1457
|
name = Event[key];
|
|
1455
1458
|
if (typeof name === 'string')
|
|
1456
|
-
nameList[name] && debug$
|
|
1459
|
+
nameList[name] && debug$c.repeat(name), nameList[name] = Event;
|
|
1457
1460
|
});
|
|
1458
1461
|
},
|
|
1459
1462
|
changeName(oldName, newName) {
|
|
@@ -2047,11 +2050,11 @@ class LeaferCanvasBase extends Canvas$1 {
|
|
|
2047
2050
|
toBlob(_type, _quality) { return undefined; }
|
|
2048
2051
|
toDataURL(_type, _quality) { return undefined; }
|
|
2049
2052
|
saveAs(_filename, _quality) { return undefined; }
|
|
2050
|
-
resize(size) {
|
|
2053
|
+
resize(size, safeResize = true) {
|
|
2051
2054
|
if (this.isSameSize(size))
|
|
2052
2055
|
return;
|
|
2053
2056
|
let takeCanvas;
|
|
2054
|
-
if (this.context && !this.unreal && this.width) {
|
|
2057
|
+
if (this.context && !this.unreal && safeResize && this.width) {
|
|
2055
2058
|
takeCanvas = this.getSameCanvas();
|
|
2056
2059
|
takeCanvas.copyWorld(this);
|
|
2057
2060
|
}
|
|
@@ -2342,7 +2345,7 @@ const RectHelper = {
|
|
|
2342
2345
|
};
|
|
2343
2346
|
|
|
2344
2347
|
const { sin: sin$3, cos: cos$3, atan2: atan2$1, ceil: ceil$1, abs: abs$3, PI: PI$2, sqrt: sqrt$1, pow } = Math;
|
|
2345
|
-
const { setPoint: setPoint$
|
|
2348
|
+
const { setPoint: setPoint$1, addPoint: addPoint$1 } = TwoPointBoundsHelper;
|
|
2346
2349
|
const { set, toNumberPoints } = PointHelper;
|
|
2347
2350
|
const { M: M$5, L: L$6, C: C$5, Q: Q$4, Z: Z$5 } = PathCommandMap;
|
|
2348
2351
|
const tempPoint$2 = {};
|
|
@@ -2418,8 +2421,8 @@ const BezierHelper = {
|
|
|
2418
2421
|
if (data)
|
|
2419
2422
|
data.push(L$6, x1, y1);
|
|
2420
2423
|
if (setPointBounds) {
|
|
2421
|
-
setPoint$
|
|
2422
|
-
addPoint$
|
|
2424
|
+
setPoint$1(setPointBounds, fromX, fromY);
|
|
2425
|
+
addPoint$1(setPointBounds, x1, y1);
|
|
2423
2426
|
}
|
|
2424
2427
|
if (setStartPoint)
|
|
2425
2428
|
set(setStartPoint, fromX, fromY);
|
|
@@ -2471,7 +2474,7 @@ const BezierHelper = {
|
|
|
2471
2474
|
if (data)
|
|
2472
2475
|
data.push(data.length ? L$6 : M$5, fromX, fromY);
|
|
2473
2476
|
if (setPointBounds)
|
|
2474
|
-
setPoint$
|
|
2477
|
+
setPoint$1(setPointBounds, fromX, fromY);
|
|
2475
2478
|
if (setStartPoint)
|
|
2476
2479
|
set(setStartPoint, fromX, fromY);
|
|
2477
2480
|
for (let i = 0; i < parts; i++) {
|
|
@@ -2533,11 +2536,11 @@ const BezierHelper = {
|
|
|
2533
2536
|
if (0 < t2 && t2 < 1)
|
|
2534
2537
|
tList.push(t2);
|
|
2535
2538
|
}
|
|
2536
|
-
addMode ? addPoint$
|
|
2537
|
-
addPoint$
|
|
2539
|
+
addMode ? addPoint$1(pointBounds, fromX, fromY) : setPoint$1(pointBounds, fromX, fromY);
|
|
2540
|
+
addPoint$1(pointBounds, toX, toY);
|
|
2538
2541
|
for (let i = 0, len = tList.length; i < len; i++) {
|
|
2539
2542
|
getPointAndSet(tList[i], fromX, fromY, x1, y1, x2, y2, toX, toY, tempPoint$2);
|
|
2540
|
-
addPoint$
|
|
2543
|
+
addPoint$1(pointBounds, tempPoint$2.x, tempPoint$2.y);
|
|
2541
2544
|
}
|
|
2542
2545
|
},
|
|
2543
2546
|
getPointAndSet(t, fromX, fromY, x1, y1, x2, y2, toX, toY, setPoint) {
|
|
@@ -2609,7 +2612,7 @@ const EllipseHelper = {
|
|
|
2609
2612
|
const { M: M$4, m, L: L$5, l, H, h, V, v, C: C$4, c, S, s, Q: Q$3, q, T, t, A, a, Z: Z$4, z, N: N$3, D: D$3, X: X$3, G: G$3, F: F$4, O: O$3, P: P$3, U: U$3 } = PathCommandMap;
|
|
2610
2613
|
const { rect: rect$2, roundRect: roundRect$2, arcTo: arcTo$3, arc: arc$3, ellipse: ellipse$4, quadraticCurveTo: quadraticCurveTo$1 } = BezierHelper;
|
|
2611
2614
|
const { ellipticalArc } = EllipseHelper;
|
|
2612
|
-
const debug$
|
|
2615
|
+
const debug$b = Debug.get('PathConvert');
|
|
2613
2616
|
const setEndPoint$1 = {};
|
|
2614
2617
|
const PathConvert = {
|
|
2615
2618
|
current: { dot: 0 },
|
|
@@ -2850,7 +2853,7 @@ const PathConvert = {
|
|
|
2850
2853
|
i += 6;
|
|
2851
2854
|
break;
|
|
2852
2855
|
default:
|
|
2853
|
-
debug$
|
|
2856
|
+
debug$b.error(`command: ${command} [index:${i}]`, old);
|
|
2854
2857
|
return data;
|
|
2855
2858
|
}
|
|
2856
2859
|
lastCommand = command;
|
|
@@ -3075,7 +3078,7 @@ class PathCreator {
|
|
|
3075
3078
|
}
|
|
3076
3079
|
|
|
3077
3080
|
const { M: M$2, L: L$3, C: C$2, Q: Q$1, Z: Z$2, N: N$1, D: D$1, X: X$1, G: G$1, F: F$2, O: O$1, P: P$1, U: U$1 } = PathCommandMap;
|
|
3078
|
-
const debug$
|
|
3081
|
+
const debug$a = Debug.get('PathDrawer');
|
|
3079
3082
|
const PathDrawer = {
|
|
3080
3083
|
drawPathByData(drawer, data) {
|
|
3081
3084
|
if (!data)
|
|
@@ -3138,7 +3141,7 @@ const PathDrawer = {
|
|
|
3138
3141
|
i += 6;
|
|
3139
3142
|
break;
|
|
3140
3143
|
default:
|
|
3141
|
-
debug$
|
|
3144
|
+
debug$a.error(`command: ${command} [index:${i}]`, data);
|
|
3142
3145
|
return;
|
|
3143
3146
|
}
|
|
3144
3147
|
}
|
|
@@ -3147,8 +3150,8 @@ const PathDrawer = {
|
|
|
3147
3150
|
|
|
3148
3151
|
const { M: M$1, L: L$2, C: C$1, Q, Z: Z$1, N, D, X, G, F: F$1, O, P, U } = PathCommandMap;
|
|
3149
3152
|
const { toTwoPointBounds, toTwoPointBoundsByQuadraticCurve, arcTo: arcTo$1, arc, ellipse: ellipse$1 } = BezierHelper;
|
|
3150
|
-
const { addPointBounds, copy: copy$7, addPoint
|
|
3151
|
-
const debug$
|
|
3153
|
+
const { addPointBounds, copy: copy$7, addPoint, setPoint, addBounds, toBounds: toBounds$2 } = TwoPointBoundsHelper;
|
|
3154
|
+
const debug$9 = Debug.get('PathBounds');
|
|
3152
3155
|
let radius, radiusX, radiusY;
|
|
3153
3156
|
const tempPointBounds = {};
|
|
3154
3157
|
const setPointBounds = {};
|
|
@@ -3156,21 +3159,21 @@ const setEndPoint = {};
|
|
|
3156
3159
|
const PathBounds = {
|
|
3157
3160
|
toBounds(data, setBounds) {
|
|
3158
3161
|
PathBounds.toTwoPointBounds(data, setPointBounds);
|
|
3159
|
-
toBounds$
|
|
3162
|
+
toBounds$2(setPointBounds, setBounds);
|
|
3160
3163
|
},
|
|
3161
3164
|
toTwoPointBounds(data, setPointBounds) {
|
|
3162
3165
|
if (!data || !data.length)
|
|
3163
|
-
return setPoint
|
|
3166
|
+
return setPoint(setPointBounds, 0, 0);
|
|
3164
3167
|
let i = 0, x = 0, y = 0, x1, y1, toX, toY, command;
|
|
3165
3168
|
const len = data.length;
|
|
3166
3169
|
while (i < len) {
|
|
3167
3170
|
command = data[i];
|
|
3168
3171
|
if (i === 0) {
|
|
3169
3172
|
if (command === Z$1 || command === C$1 || command === Q) {
|
|
3170
|
-
setPoint
|
|
3173
|
+
setPoint(setPointBounds, x, y);
|
|
3171
3174
|
}
|
|
3172
3175
|
else {
|
|
3173
|
-
setPoint
|
|
3176
|
+
setPoint(setPointBounds, data[i + 1], data[i + 2]);
|
|
3174
3177
|
}
|
|
3175
3178
|
}
|
|
3176
3179
|
switch (command) {
|
|
@@ -3178,7 +3181,7 @@ const PathBounds = {
|
|
|
3178
3181
|
case L$2:
|
|
3179
3182
|
x = data[i + 1];
|
|
3180
3183
|
y = data[i + 2];
|
|
3181
|
-
addPoint
|
|
3184
|
+
addPoint(setPointBounds, x, y);
|
|
3182
3185
|
i += 3;
|
|
3183
3186
|
break;
|
|
3184
3187
|
case C$1:
|
|
@@ -3256,7 +3259,7 @@ const PathBounds = {
|
|
|
3256
3259
|
i += 6;
|
|
3257
3260
|
break;
|
|
3258
3261
|
default:
|
|
3259
|
-
debug$
|
|
3262
|
+
debug$9.error(`command: ${command} [index:${i}]`, data);
|
|
3260
3263
|
return;
|
|
3261
3264
|
}
|
|
3262
3265
|
}
|
|
@@ -3372,7 +3375,7 @@ const FileHelper = {
|
|
|
3372
3375
|
const F = FileHelper;
|
|
3373
3376
|
F.opacityTypes.forEach(type => F.upperCaseTypeMap[type] = type.toUpperCase());
|
|
3374
3377
|
|
|
3375
|
-
const debug$
|
|
3378
|
+
const debug$8 = Debug.get('TaskProcessor');
|
|
3376
3379
|
class TaskItem {
|
|
3377
3380
|
constructor(task) {
|
|
3378
3381
|
this.parallel = true;
|
|
@@ -3387,7 +3390,7 @@ class TaskItem {
|
|
|
3387
3390
|
yield this.task();
|
|
3388
3391
|
}
|
|
3389
3392
|
catch (error) {
|
|
3390
|
-
debug$
|
|
3393
|
+
debug$8.error(error);
|
|
3391
3394
|
}
|
|
3392
3395
|
});
|
|
3393
3396
|
}
|
|
@@ -4074,7 +4077,7 @@ function defineDataProcessor(target, key, defaultValue) {
|
|
|
4074
4077
|
defineKey(data, key, property);
|
|
4075
4078
|
}
|
|
4076
4079
|
|
|
4077
|
-
const debug$
|
|
4080
|
+
const debug$7 = new Debug('rewrite');
|
|
4078
4081
|
const list = [];
|
|
4079
4082
|
const excludeNames = ['destroy', 'constructor'];
|
|
4080
4083
|
function rewrite(method) {
|
|
@@ -4091,7 +4094,7 @@ function doRewrite(error) {
|
|
|
4091
4094
|
if (list.length) {
|
|
4092
4095
|
list.forEach(item => {
|
|
4093
4096
|
if (error)
|
|
4094
|
-
debug$
|
|
4097
|
+
debug$7.error(item.name, '需在Class上装饰@rewriteAble()');
|
|
4095
4098
|
item.run();
|
|
4096
4099
|
});
|
|
4097
4100
|
list.length = 0;
|
|
@@ -4253,18 +4256,21 @@ const LeafHelper = {
|
|
|
4253
4256
|
L.setTransform(t, matrix, resize);
|
|
4254
4257
|
},
|
|
4255
4258
|
setTransform(t, transform, resize) {
|
|
4256
|
-
const
|
|
4259
|
+
const data = t.__, originPoint = data.origin && L.getInnerOrigin(t, data.origin);
|
|
4260
|
+
const layout = getLayout(transform, originPoint, data.around && L.getInnerOrigin(t, data.around));
|
|
4257
4261
|
if (resize) {
|
|
4258
|
-
const scaleX = layout.scaleX / t.scaleX;
|
|
4259
|
-
|
|
4260
|
-
|
|
4261
|
-
|
|
4262
|
+
const scaleX = layout.scaleX / t.scaleX, scaleY = layout.scaleY / t.scaleY;
|
|
4263
|
+
delete layout.scaleX, delete layout.scaleY;
|
|
4264
|
+
if (originPoint) {
|
|
4265
|
+
BoundsHelper.scale(t.boxBounds, Math.abs(scaleX), Math.abs(scaleY));
|
|
4266
|
+
const changedPoint = L.getInnerOrigin(t, data.origin);
|
|
4267
|
+
PointHelper.move(layout, originPoint.x - changedPoint.x, originPoint.y - changedPoint.y);
|
|
4268
|
+
}
|
|
4262
4269
|
t.set(layout);
|
|
4263
|
-
t.scaleResize(scaleX, scaleY,
|
|
4270
|
+
t.scaleResize(scaleX, scaleY, false);
|
|
4264
4271
|
}
|
|
4265
|
-
else
|
|
4272
|
+
else
|
|
4266
4273
|
t.set(layout);
|
|
4267
|
-
}
|
|
4268
4274
|
},
|
|
4269
4275
|
getFlipTransform(t, axis) {
|
|
4270
4276
|
const m = getMatrixData();
|
|
@@ -4805,7 +4811,6 @@ class LayoutEvent extends Event {
|
|
|
4805
4811
|
}
|
|
4806
4812
|
}
|
|
4807
4813
|
}
|
|
4808
|
-
LayoutEvent.CHECK_UPDATE = 'layout.check_update';
|
|
4809
4814
|
LayoutEvent.REQUEST = 'layout.request';
|
|
4810
4815
|
LayoutEvent.START = 'layout.start';
|
|
4811
4816
|
LayoutEvent.BEFORE = 'layout.before';
|
|
@@ -4947,14 +4952,15 @@ class Eventer {
|
|
|
4947
4952
|
if (list) {
|
|
4948
4953
|
let item;
|
|
4949
4954
|
for (let i = 0, len = list.length; i < len; i++) {
|
|
4950
|
-
item = list[i]
|
|
4951
|
-
|
|
4952
|
-
|
|
4953
|
-
|
|
4954
|
-
|
|
4955
|
+
if (item = list[i]) {
|
|
4956
|
+
item.listener(event);
|
|
4957
|
+
if (item.once) {
|
|
4958
|
+
this.off(type, item.listener, capture);
|
|
4959
|
+
i--, len--;
|
|
4960
|
+
}
|
|
4961
|
+
if (event && event.isStopNow)
|
|
4962
|
+
break;
|
|
4955
4963
|
}
|
|
4956
|
-
if (event && event.isStopNow)
|
|
4957
|
-
break;
|
|
4958
4964
|
}
|
|
4959
4965
|
}
|
|
4960
4966
|
this.syncEventer && this.syncEventer.emitEvent(event, capture);
|
|
@@ -4999,13 +5005,13 @@ const { on, on_, off, off_, once, emit: emit$1, emitEvent, hasEvent, destroy } =
|
|
|
4999
5005
|
const LeafEventer = { on, on_, off, off_, once, emit: emit$1, emitEvent, hasEvent, destroyEventer: destroy };
|
|
5000
5006
|
|
|
5001
5007
|
const { isFinite } = Number;
|
|
5002
|
-
const debug$
|
|
5008
|
+
const debug$6 = Debug.get('setAttr');
|
|
5003
5009
|
const LeafDataProxy = {
|
|
5004
5010
|
__setAttr(name, newValue, checkFiniteNumber) {
|
|
5005
5011
|
if (this.leaferIsCreated) {
|
|
5006
5012
|
const oldValue = this.__.__getInput(name);
|
|
5007
5013
|
if (checkFiniteNumber && !isFinite(newValue) && newValue !== undefined) {
|
|
5008
|
-
debug$
|
|
5014
|
+
debug$6.warn(this.innerName, name, newValue);
|
|
5009
5015
|
newValue = undefined;
|
|
5010
5016
|
}
|
|
5011
5017
|
if (typeof newValue === 'object' || oldValue !== newValue) {
|
|
@@ -5075,7 +5081,7 @@ const LeafMatrix = {
|
|
|
5075
5081
|
const { updateMatrix: updateMatrix$1, updateAllMatrix: updateAllMatrix$2 } = LeafHelper;
|
|
5076
5082
|
const { updateBounds: updateBounds$1 } = BranchHelper;
|
|
5077
5083
|
const { toOuterOf: toOuterOf$1, copyAndSpread: copyAndSpread$1, copy: copy$4 } = BoundsHelper;
|
|
5078
|
-
const { toBounds: toBounds$
|
|
5084
|
+
const { toBounds: toBounds$1 } = PathBounds;
|
|
5079
5085
|
const LeafBounds = {
|
|
5080
5086
|
__updateWorldBounds() {
|
|
5081
5087
|
toOuterOf$1(this.__layout.renderBounds, this.__world, this.__world);
|
|
@@ -5157,7 +5163,7 @@ const LeafBounds = {
|
|
|
5157
5163
|
const b = this.__layout.boxBounds;
|
|
5158
5164
|
const data = this.__;
|
|
5159
5165
|
if (data.__pathInputed) {
|
|
5160
|
-
toBounds$
|
|
5166
|
+
toBounds$1(data.path, b);
|
|
5161
5167
|
}
|
|
5162
5168
|
else {
|
|
5163
5169
|
b.x = 0;
|
|
@@ -5705,7 +5711,7 @@ Leaf = __decorate([
|
|
|
5705
5711
|
const { setListWithFn } = BoundsHelper;
|
|
5706
5712
|
const { sort } = BranchHelper;
|
|
5707
5713
|
const { localBoxBounds, localStrokeBounds, localRenderBounds, maskLocalBoxBounds, maskLocalStrokeBounds, maskLocalRenderBounds } = LeafBoundsHelper;
|
|
5708
|
-
const debug$
|
|
5714
|
+
const debug$5 = new Debug('Branch');
|
|
5709
5715
|
let Branch = class Branch extends Leaf {
|
|
5710
5716
|
__updateStrokeSpread() {
|
|
5711
5717
|
const { children } = this;
|
|
@@ -5747,7 +5753,7 @@ let Branch = class Branch extends Leaf {
|
|
|
5747
5753
|
}
|
|
5748
5754
|
add(child, index) {
|
|
5749
5755
|
if (child === this || child.destroyed)
|
|
5750
|
-
return debug$
|
|
5756
|
+
return debug$5.warn('add self or destroyed');
|
|
5751
5757
|
const noIndex = index === undefined;
|
|
5752
5758
|
if (!child.__) {
|
|
5753
5759
|
if (child instanceof Array)
|
|
@@ -6001,9 +6007,9 @@ class LeafLevelList {
|
|
|
6001
6007
|
}
|
|
6002
6008
|
}
|
|
6003
6009
|
|
|
6004
|
-
const version = "1.
|
|
6010
|
+
const version = "1.3.0";
|
|
6005
6011
|
|
|
6006
|
-
const debug$
|
|
6012
|
+
const debug$4 = Debug.get('LeaferCanvas');
|
|
6007
6013
|
class LeaferCanvas extends LeaferCanvasBase {
|
|
6008
6014
|
set zIndex(zIndex) {
|
|
6009
6015
|
const { style } = this.view;
|
|
@@ -6075,7 +6081,7 @@ class LeaferCanvas extends LeaferCanvasBase {
|
|
|
6075
6081
|
}
|
|
6076
6082
|
}
|
|
6077
6083
|
else {
|
|
6078
|
-
debug$
|
|
6084
|
+
debug$4.error(`no id: ${inputView}`);
|
|
6079
6085
|
this.__createView();
|
|
6080
6086
|
}
|
|
6081
6087
|
}
|
|
@@ -6093,7 +6099,8 @@ class LeaferCanvas extends LeaferCanvasBase {
|
|
|
6093
6099
|
this.view.height = Math.ceil(height * pixelRatio);
|
|
6094
6100
|
}
|
|
6095
6101
|
updateClientBounds() {
|
|
6096
|
-
|
|
6102
|
+
if (this.view.parentElement)
|
|
6103
|
+
this.clientBounds = this.view.getBoundingClientRect();
|
|
6097
6104
|
}
|
|
6098
6105
|
startAutoLayout(autoBounds, listener) {
|
|
6099
6106
|
this.resizeListener = listener;
|
|
@@ -6112,7 +6119,7 @@ class LeaferCanvas extends LeaferCanvasBase {
|
|
|
6112
6119
|
}
|
|
6113
6120
|
else {
|
|
6114
6121
|
this.checkAutoBounds(this.view);
|
|
6115
|
-
debug$
|
|
6122
|
+
debug$4.warn('no parent');
|
|
6116
6123
|
}
|
|
6117
6124
|
}
|
|
6118
6125
|
catch (_a) {
|
|
@@ -6448,7 +6455,7 @@ class LayoutBlockData {
|
|
|
6448
6455
|
}
|
|
6449
6456
|
|
|
6450
6457
|
const { updateAllMatrix, updateAllChange } = LeafHelper;
|
|
6451
|
-
const debug$
|
|
6458
|
+
const debug$3 = Debug.get('Layouter');
|
|
6452
6459
|
class Layouter {
|
|
6453
6460
|
constructor(target, userConfig) {
|
|
6454
6461
|
this.totalTimes = 0;
|
|
@@ -6483,7 +6490,7 @@ class Layouter {
|
|
|
6483
6490
|
target.emitEvent(new LayoutEvent(LayoutEvent.END, this.layoutedBlocks, this.times));
|
|
6484
6491
|
}
|
|
6485
6492
|
catch (e) {
|
|
6486
|
-
debug$
|
|
6493
|
+
debug$3.error(e);
|
|
6487
6494
|
}
|
|
6488
6495
|
this.layoutedBlocks = null;
|
|
6489
6496
|
}
|
|
@@ -6497,9 +6504,9 @@ class Layouter {
|
|
|
6497
6504
|
}
|
|
6498
6505
|
layoutOnce() {
|
|
6499
6506
|
if (this.layouting)
|
|
6500
|
-
return debug$
|
|
6507
|
+
return debug$3.warn('layouting');
|
|
6501
6508
|
if (this.times > 3)
|
|
6502
|
-
return debug$
|
|
6509
|
+
return debug$3.warn('layout max times');
|
|
6503
6510
|
this.times++;
|
|
6504
6511
|
this.totalTimes++;
|
|
6505
6512
|
this.layouting = true;
|
|
@@ -6603,7 +6610,7 @@ class Layouter {
|
|
|
6603
6610
|
}
|
|
6604
6611
|
}
|
|
6605
6612
|
|
|
6606
|
-
const debug$
|
|
6613
|
+
const debug$2 = Debug.get('Renderer');
|
|
6607
6614
|
class Renderer {
|
|
6608
6615
|
get needFill() { return !!(!this.canvas.allowBackgroundColor && this.config.fill); }
|
|
6609
6616
|
constructor(target, canvas, userConfig) {
|
|
@@ -6641,7 +6648,7 @@ class Renderer {
|
|
|
6641
6648
|
const { target } = this;
|
|
6642
6649
|
this.times = 0;
|
|
6643
6650
|
this.totalBounds = new Bounds();
|
|
6644
|
-
debug$
|
|
6651
|
+
debug$2.log(target.innerName, '--->');
|
|
6645
6652
|
try {
|
|
6646
6653
|
if (!target.isApp)
|
|
6647
6654
|
target.app.emit(RenderEvent.CHILD_START, target);
|
|
@@ -6652,9 +6659,9 @@ class Renderer {
|
|
|
6652
6659
|
}
|
|
6653
6660
|
catch (e) {
|
|
6654
6661
|
this.rendering = false;
|
|
6655
|
-
debug$
|
|
6662
|
+
debug$2.error(e);
|
|
6656
6663
|
}
|
|
6657
|
-
debug$
|
|
6664
|
+
debug$2.log('-------------|');
|
|
6658
6665
|
}
|
|
6659
6666
|
renderAgain() {
|
|
6660
6667
|
if (this.rendering) {
|
|
@@ -6666,9 +6673,9 @@ class Renderer {
|
|
|
6666
6673
|
}
|
|
6667
6674
|
renderOnce(callback) {
|
|
6668
6675
|
if (this.rendering)
|
|
6669
|
-
return debug$
|
|
6676
|
+
return debug$2.warn('rendering');
|
|
6670
6677
|
if (this.times > 3)
|
|
6671
|
-
return debug$
|
|
6678
|
+
return debug$2.warn('render max times');
|
|
6672
6679
|
this.times++;
|
|
6673
6680
|
this.totalTimes++;
|
|
6674
6681
|
this.rendering = true;
|
|
@@ -6705,7 +6712,7 @@ class Renderer {
|
|
|
6705
6712
|
partRender() {
|
|
6706
6713
|
const { canvas, updateBlocks: list } = this;
|
|
6707
6714
|
if (!list)
|
|
6708
|
-
return debug$
|
|
6715
|
+
return debug$2.warn('PartRender: need update attr');
|
|
6709
6716
|
this.mergeBlocks();
|
|
6710
6717
|
list.forEach(block => { if (canvas.bounds.hit(block) && !block.isEmpty())
|
|
6711
6718
|
this.clipRender(block); });
|
|
@@ -6808,7 +6815,7 @@ class Renderer {
|
|
|
6808
6815
|
empty = (!leaf.__world.width || !leaf.__world.height);
|
|
6809
6816
|
if (empty) {
|
|
6810
6817
|
if (!leaf.isLeafer)
|
|
6811
|
-
debug$
|
|
6818
|
+
debug$2.tip(leaf.innerName, ': empty');
|
|
6812
6819
|
empty = (!leaf.isBranch || leaf.isBranchLeaf);
|
|
6813
6820
|
}
|
|
6814
6821
|
return empty;
|
|
@@ -6910,7 +6917,7 @@ const Transition = {
|
|
|
6910
6917
|
|
|
6911
6918
|
const { parse, objectToCanvasData } = PathConvert;
|
|
6912
6919
|
const emptyPaint = {};
|
|
6913
|
-
const debug$
|
|
6920
|
+
const debug$1 = Debug.get('UIData');
|
|
6914
6921
|
class UIData extends LeafData {
|
|
6915
6922
|
get scale() { const { scaleX, scaleY } = this; return scaleX !== scaleY ? { x: scaleX, y: scaleY } : scaleX; }
|
|
6916
6923
|
get __strokeWidth() {
|
|
@@ -6947,7 +6954,7 @@ class UIData extends LeafData {
|
|
|
6947
6954
|
if (value < 0) {
|
|
6948
6955
|
this._width = -value;
|
|
6949
6956
|
this.__leaf.scaleX *= -1;
|
|
6950
|
-
debug$
|
|
6957
|
+
debug$1.warn('width < 0, instead -scaleX ', this);
|
|
6951
6958
|
}
|
|
6952
6959
|
else
|
|
6953
6960
|
this._width = value;
|
|
@@ -6956,7 +6963,7 @@ class UIData extends LeafData {
|
|
|
6956
6963
|
if (value < 0) {
|
|
6957
6964
|
this._height = -value;
|
|
6958
6965
|
this.__leaf.scaleY *= -1;
|
|
6959
|
-
debug$
|
|
6966
|
+
debug$1.warn('height < 0, instead -scaleY', this);
|
|
6960
6967
|
}
|
|
6961
6968
|
else
|
|
6962
6969
|
this._height = value;
|
|
@@ -7333,25 +7340,27 @@ let UI = UI_1 = class UI extends Leaf {
|
|
|
7333
7340
|
}
|
|
7334
7341
|
reset(_data) { }
|
|
7335
7342
|
set(data, transition) {
|
|
7336
|
-
if (
|
|
7337
|
-
if (transition
|
|
7338
|
-
|
|
7339
|
-
|
|
7340
|
-
|
|
7343
|
+
if (data) {
|
|
7344
|
+
if (transition) {
|
|
7345
|
+
if (transition === 'temp') {
|
|
7346
|
+
this.lockNormalStyle = true;
|
|
7347
|
+
Object.assign(this, data);
|
|
7348
|
+
this.lockNormalStyle = false;
|
|
7349
|
+
}
|
|
7350
|
+
else
|
|
7351
|
+
this.animate(data, transition);
|
|
7341
7352
|
}
|
|
7342
7353
|
else
|
|
7343
|
-
|
|
7354
|
+
Object.assign(this, data);
|
|
7344
7355
|
}
|
|
7345
|
-
else
|
|
7346
|
-
Object.assign(this, data);
|
|
7347
7356
|
}
|
|
7348
7357
|
get(name) {
|
|
7349
7358
|
return typeof name === 'string' ? this.__.__getInput(name) : this.__.__getInputData(name);
|
|
7350
7359
|
}
|
|
7351
7360
|
createProxyData() { return undefined; }
|
|
7352
|
-
find(_condition, _options) { return
|
|
7361
|
+
find(_condition, _options) { return Plugin.need('find'); }
|
|
7353
7362
|
findTag(tag) { return this.find({ tag }); }
|
|
7354
|
-
findOne(_condition, _options) { return
|
|
7363
|
+
findOne(_condition, _options) { return Plugin.need('find'); }
|
|
7355
7364
|
findId(id) { return this.findOne({ id }); }
|
|
7356
7365
|
getPath(curve, pathForRender) {
|
|
7357
7366
|
this.__layout.update();
|
|
@@ -7403,9 +7412,9 @@ let UI = UI_1 = class UI extends Leaf {
|
|
|
7403
7412
|
animate(_keyframe, _options, _type, _isTemp) {
|
|
7404
7413
|
return Plugin.need('animate');
|
|
7405
7414
|
}
|
|
7406
|
-
killAnimate(_type) { }
|
|
7407
|
-
export(
|
|
7408
|
-
return
|
|
7415
|
+
killAnimate(_type, _killStyle) { }
|
|
7416
|
+
export(_filename, _options) {
|
|
7417
|
+
return Plugin.need('export');
|
|
7409
7418
|
}
|
|
7410
7419
|
clone(data) {
|
|
7411
7420
|
const json = this.toJSON();
|
|
@@ -7651,16 +7660,18 @@ let Group = class Group extends UI {
|
|
|
7651
7660
|
this.children = [];
|
|
7652
7661
|
}
|
|
7653
7662
|
set(data, transition) {
|
|
7654
|
-
if (data
|
|
7655
|
-
|
|
7656
|
-
|
|
7657
|
-
|
|
7658
|
-
|
|
7659
|
-
|
|
7660
|
-
|
|
7663
|
+
if (data) {
|
|
7664
|
+
if (data.children) {
|
|
7665
|
+
const { children } = data;
|
|
7666
|
+
delete data.children;
|
|
7667
|
+
this.children ? this.clear() : this.__setBranch();
|
|
7668
|
+
super.set(data, transition);
|
|
7669
|
+
children.forEach(child => this.add(child));
|
|
7670
|
+
data.children = children;
|
|
7671
|
+
}
|
|
7672
|
+
else
|
|
7673
|
+
super.set(data, transition);
|
|
7661
7674
|
}
|
|
7662
|
-
else
|
|
7663
|
-
super.set(data, transition);
|
|
7664
7675
|
}
|
|
7665
7676
|
toJSON(options) {
|
|
7666
7677
|
const data = super.toJSON(options);
|
|
@@ -7692,7 +7703,7 @@ Group = __decorate([
|
|
|
7692
7703
|
], Group);
|
|
7693
7704
|
|
|
7694
7705
|
var Leafer_1;
|
|
7695
|
-
const debug
|
|
7706
|
+
const debug = Debug.get('Leafer');
|
|
7696
7707
|
let Leafer = Leafer_1 = class Leafer extends Group {
|
|
7697
7708
|
get __tag() { return 'Leafer'; }
|
|
7698
7709
|
get isApp() { return false; }
|
|
@@ -7857,7 +7868,7 @@ let Leafer = Leafer_1 = class Leafer extends Group {
|
|
|
7857
7868
|
if (this.canvas) {
|
|
7858
7869
|
if (canvasSizeAttrs.includes(attrName)) {
|
|
7859
7870
|
if (!newValue)
|
|
7860
|
-
debug
|
|
7871
|
+
debug.warn(attrName + ' is 0');
|
|
7861
7872
|
this.__changeCanvasSize(attrName, newValue);
|
|
7862
7873
|
}
|
|
7863
7874
|
else if (attrName === 'fill') {
|
|
@@ -7923,6 +7934,8 @@ let Leafer = Leafer_1 = class Leafer extends Group {
|
|
|
7923
7934
|
this.requestRender();
|
|
7924
7935
|
}
|
|
7925
7936
|
}
|
|
7937
|
+
else
|
|
7938
|
+
this.requestRender();
|
|
7926
7939
|
}
|
|
7927
7940
|
__checkViewCompleted(emit = true) {
|
|
7928
7941
|
this.nextRender(() => {
|
|
@@ -7996,9 +8009,6 @@ let Leafer = Leafer_1 = class Leafer extends Group {
|
|
|
7996
8009
|
this.canvas && this.canvas.updateClientBounds();
|
|
7997
8010
|
}
|
|
7998
8011
|
receiveEvent(_event) { }
|
|
7999
|
-
__checkUpdateLayout() {
|
|
8000
|
-
this.__layout.update();
|
|
8001
|
-
}
|
|
8002
8012
|
emitLeafer(type) {
|
|
8003
8013
|
this.emitEvent(new LeaferEvent(type, this));
|
|
8004
8014
|
}
|
|
@@ -8009,7 +8019,7 @@ let Leafer = Leafer_1 = class Leafer extends Group {
|
|
|
8009
8019
|
this.once(LayoutEvent.END, () => this.__onReady());
|
|
8010
8020
|
this.once(RenderEvent.START, () => this.__onCreated());
|
|
8011
8021
|
this.once(RenderEvent.END, () => this.__onViewReady());
|
|
8012
|
-
this.__eventIds.push(this.on_(WatchEvent.DATA, this.__onWatchData, this), this.on_(RenderEvent.NEXT, this.__onNextRender, this)
|
|
8022
|
+
this.__eventIds.push(this.on_(WatchEvent.DATA, this.__onWatchData, this), this.on_(RenderEvent.NEXT, this.__onNextRender, this));
|
|
8013
8023
|
}
|
|
8014
8024
|
__removeListenEvents() {
|
|
8015
8025
|
this.off_(this.__eventIds);
|
|
@@ -8040,7 +8050,7 @@ let Leafer = Leafer_1 = class Leafer extends Group {
|
|
|
8040
8050
|
setTimeout(() => { ImageManager.clearRecycled(); }, 100);
|
|
8041
8051
|
}
|
|
8042
8052
|
catch (e) {
|
|
8043
|
-
debug
|
|
8053
|
+
debug.error(e);
|
|
8044
8054
|
}
|
|
8045
8055
|
}
|
|
8046
8056
|
};
|
|
@@ -8269,7 +8279,7 @@ Ellipse = __decorate([
|
|
|
8269
8279
|
|
|
8270
8280
|
const { moveTo: moveTo$2, lineTo: lineTo$2, drawPoints: drawPoints$1 } = PathCommandDataHelper;
|
|
8271
8281
|
const { rotate: rotate$1, getAngle: getAngle$1, getDistance: getDistance$2, defaultPoint } = PointHelper;
|
|
8272
|
-
const { toBounds
|
|
8282
|
+
const { toBounds } = PathBounds;
|
|
8273
8283
|
let Line = class Line extends UI {
|
|
8274
8284
|
get __tag() { return 'Line'; }
|
|
8275
8285
|
get toPoint() {
|
|
@@ -8313,7 +8323,7 @@ let Line = class Line extends UI {
|
|
|
8313
8323
|
}
|
|
8314
8324
|
__updateBoxBounds() {
|
|
8315
8325
|
if (this.points) {
|
|
8316
|
-
toBounds
|
|
8326
|
+
toBounds(this.__.__pathForRender, this.__layout.boxBounds);
|
|
8317
8327
|
}
|
|
8318
8328
|
else
|
|
8319
8329
|
super.__updateBoxBounds();
|
|
@@ -8488,10 +8498,10 @@ let Canvas = class Canvas extends Rect {
|
|
|
8488
8498
|
__updateSize() {
|
|
8489
8499
|
const { canvas } = this;
|
|
8490
8500
|
if (canvas) {
|
|
8491
|
-
const { smooth } = this.__;
|
|
8501
|
+
const { smooth, safeResize } = this.__;
|
|
8502
|
+
canvas.resize(this.__, safeResize);
|
|
8492
8503
|
if (canvas.smooth !== smooth)
|
|
8493
8504
|
canvas.smooth = smooth;
|
|
8494
|
-
canvas.resize(this.__);
|
|
8495
8505
|
}
|
|
8496
8506
|
}
|
|
8497
8507
|
destroy() {
|
|
@@ -8517,6 +8527,9 @@ __decorate([
|
|
|
8517
8527
|
__decorate([
|
|
8518
8528
|
resizeType(true)
|
|
8519
8529
|
], Canvas.prototype, "smooth", void 0);
|
|
8530
|
+
__decorate([
|
|
8531
|
+
dataType(false)
|
|
8532
|
+
], Canvas.prototype, "safeResize", void 0);
|
|
8520
8533
|
__decorate([
|
|
8521
8534
|
resizeType()
|
|
8522
8535
|
], Canvas.prototype, "contextSettings", void 0);
|
|
@@ -8662,6 +8675,9 @@ __decorate([
|
|
|
8662
8675
|
__decorate([
|
|
8663
8676
|
boundsType(0)
|
|
8664
8677
|
], Text.prototype, "paraSpacing", void 0);
|
|
8678
|
+
__decorate([
|
|
8679
|
+
boundsType('x')
|
|
8680
|
+
], Text.prototype, "writingMode", void 0);
|
|
8665
8681
|
__decorate([
|
|
8666
8682
|
boundsType('left')
|
|
8667
8683
|
], Text.prototype, "textAlign", void 0);
|
|
@@ -10226,197 +10242,12 @@ const ColorConvertModule = {
|
|
|
10226
10242
|
string
|
|
10227
10243
|
};
|
|
10228
10244
|
|
|
10229
|
-
const { setPoint, addPoint, toBounds } = TwoPointBoundsHelper;
|
|
10230
|
-
function getTrimBounds(canvas) {
|
|
10231
|
-
const { width, height } = canvas.view;
|
|
10232
|
-
const { data } = canvas.context.getImageData(0, 0, width, height);
|
|
10233
|
-
let x, y, pointBounds, index = 0;
|
|
10234
|
-
for (let i = 0; i < data.length; i += 4) {
|
|
10235
|
-
if (data[i + 3] !== 0) {
|
|
10236
|
-
x = index % width;
|
|
10237
|
-
y = (index - x) / width;
|
|
10238
|
-
pointBounds ? addPoint(pointBounds, x, y) : setPoint(pointBounds = {}, x, y);
|
|
10239
|
-
}
|
|
10240
|
-
index++;
|
|
10241
|
-
}
|
|
10242
|
-
const bounds = new Bounds();
|
|
10243
|
-
toBounds(pointBounds, bounds);
|
|
10244
|
-
return bounds.scale(1 / canvas.pixelRatio).ceil();
|
|
10245
|
-
}
|
|
10246
|
-
|
|
10247
|
-
const ExportModule = {
|
|
10248
|
-
export(leaf, filename, options) {
|
|
10249
|
-
this.running = true;
|
|
10250
|
-
const fileType = FileHelper.fileType(filename);
|
|
10251
|
-
const isDownload = filename.includes('.');
|
|
10252
|
-
options = FileHelper.getExportOptions(options);
|
|
10253
|
-
return addTask((success) => new Promise((resolve) => {
|
|
10254
|
-
const over = (result) => {
|
|
10255
|
-
success(result);
|
|
10256
|
-
resolve();
|
|
10257
|
-
this.running = false;
|
|
10258
|
-
};
|
|
10259
|
-
const { toURL } = Platform;
|
|
10260
|
-
const { download } = Platform.origin;
|
|
10261
|
-
if (fileType === 'json') {
|
|
10262
|
-
isDownload && download(toURL(JSON.stringify(leaf.toJSON(options.json)), 'text'), filename);
|
|
10263
|
-
return over({ data: isDownload ? true : leaf.toJSON(options.json) });
|
|
10264
|
-
}
|
|
10265
|
-
if (fileType === 'svg') {
|
|
10266
|
-
isDownload && download(toURL(leaf.toSVG(), 'svg'), filename);
|
|
10267
|
-
return over({ data: isDownload ? true : leaf.toSVG() });
|
|
10268
|
-
}
|
|
10269
|
-
const { leafer } = leaf;
|
|
10270
|
-
if (leafer) {
|
|
10271
|
-
checkLazy(leaf);
|
|
10272
|
-
leafer.waitViewCompleted(() => __awaiter(this, void 0, void 0, function* () {
|
|
10273
|
-
let renderBounds, trimBounds, scaleX = 1, scaleY = 1;
|
|
10274
|
-
const { worldTransform, isLeafer, isFrame } = leaf;
|
|
10275
|
-
const { slice, trim, onCanvas } = options;
|
|
10276
|
-
const smooth = options.smooth === undefined ? leafer.config.smooth : options.smooth;
|
|
10277
|
-
const contextSettings = options.contextSettings || leafer.config.contextSettings;
|
|
10278
|
-
const screenshot = options.screenshot || leaf.isApp;
|
|
10279
|
-
const fill = (isLeafer && screenshot) ? (options.fill === undefined ? leaf.fill : options.fill) : options.fill;
|
|
10280
|
-
const needFill = FileHelper.isOpaqueImage(filename) || fill, matrix = new Matrix();
|
|
10281
|
-
if (screenshot) {
|
|
10282
|
-
renderBounds = screenshot === true ? (isLeafer ? leafer.canvas.bounds : leaf.worldRenderBounds) : screenshot;
|
|
10283
|
-
}
|
|
10284
|
-
else {
|
|
10285
|
-
let relative = options.relative || (isLeafer ? 'inner' : 'local');
|
|
10286
|
-
scaleX = worldTransform.scaleX;
|
|
10287
|
-
scaleY = worldTransform.scaleY;
|
|
10288
|
-
switch (relative) {
|
|
10289
|
-
case 'inner':
|
|
10290
|
-
matrix.set(worldTransform);
|
|
10291
|
-
break;
|
|
10292
|
-
case 'local':
|
|
10293
|
-
matrix.set(worldTransform).divide(leaf.localTransform);
|
|
10294
|
-
scaleX /= leaf.scaleX;
|
|
10295
|
-
scaleY /= leaf.scaleY;
|
|
10296
|
-
break;
|
|
10297
|
-
case 'world':
|
|
10298
|
-
scaleX = 1;
|
|
10299
|
-
scaleY = 1;
|
|
10300
|
-
break;
|
|
10301
|
-
case 'page':
|
|
10302
|
-
relative = leaf.leafer;
|
|
10303
|
-
default:
|
|
10304
|
-
matrix.set(worldTransform).divide(leaf.getTransform(relative));
|
|
10305
|
-
const l = relative.worldTransform;
|
|
10306
|
-
scaleX /= scaleX / l.scaleX;
|
|
10307
|
-
scaleY /= scaleY / l.scaleY;
|
|
10308
|
-
}
|
|
10309
|
-
renderBounds = leaf.getBounds('render', relative);
|
|
10310
|
-
}
|
|
10311
|
-
const scaleData = { scaleX: 1, scaleY: 1 };
|
|
10312
|
-
MathHelper.getScaleData(options.scale, options.size, renderBounds, scaleData);
|
|
10313
|
-
let pixelRatio = options.pixelRatio || 1;
|
|
10314
|
-
if (leaf.isApp) {
|
|
10315
|
-
scaleData.scaleX *= pixelRatio;
|
|
10316
|
-
scaleData.scaleY *= pixelRatio;
|
|
10317
|
-
pixelRatio = leaf.app.pixelRatio;
|
|
10318
|
-
}
|
|
10319
|
-
const { x, y, width, height } = new Bounds(renderBounds).scale(scaleData.scaleX, scaleData.scaleY);
|
|
10320
|
-
const renderOptions = { matrix: matrix.scale(1 / scaleData.scaleX, 1 / scaleData.scaleY).invert().translate(-x, -y).withScale(1 / scaleX * scaleData.scaleX, 1 / scaleY * scaleData.scaleY) };
|
|
10321
|
-
let canvas = Creator.canvas({ width: Math.round(width), height: Math.round(height), pixelRatio, smooth, contextSettings });
|
|
10322
|
-
let sliceLeaf;
|
|
10323
|
-
if (slice) {
|
|
10324
|
-
sliceLeaf = leaf;
|
|
10325
|
-
sliceLeaf.__worldOpacity = 0;
|
|
10326
|
-
leaf = leafer;
|
|
10327
|
-
renderOptions.bounds = canvas.bounds;
|
|
10328
|
-
}
|
|
10329
|
-
canvas.save();
|
|
10330
|
-
if (isFrame && fill !== undefined) {
|
|
10331
|
-
const oldFill = leaf.get('fill');
|
|
10332
|
-
leaf.fill = '';
|
|
10333
|
-
leaf.__render(canvas, renderOptions);
|
|
10334
|
-
leaf.fill = oldFill;
|
|
10335
|
-
}
|
|
10336
|
-
else {
|
|
10337
|
-
leaf.__render(canvas, renderOptions);
|
|
10338
|
-
}
|
|
10339
|
-
canvas.restore();
|
|
10340
|
-
if (sliceLeaf)
|
|
10341
|
-
sliceLeaf.__updateWorldOpacity();
|
|
10342
|
-
if (trim) {
|
|
10343
|
-
trimBounds = getTrimBounds(canvas);
|
|
10344
|
-
const old = canvas, { width, height } = trimBounds;
|
|
10345
|
-
const config = { x: 0, y: 0, width, height, pixelRatio };
|
|
10346
|
-
canvas = Creator.canvas(config);
|
|
10347
|
-
canvas.copyWorld(old, trimBounds, config);
|
|
10348
|
-
}
|
|
10349
|
-
if (needFill)
|
|
10350
|
-
canvas.fillWorld(canvas.bounds, fill || '#FFFFFF', 'destination-over');
|
|
10351
|
-
if (onCanvas)
|
|
10352
|
-
onCanvas(canvas);
|
|
10353
|
-
const data = filename === 'canvas' ? canvas : yield canvas.export(filename, options);
|
|
10354
|
-
over({ data, width: canvas.pixelWidth, height: canvas.pixelHeight, renderBounds, trimBounds });
|
|
10355
|
-
}));
|
|
10356
|
-
}
|
|
10357
|
-
else {
|
|
10358
|
-
over({ data: false });
|
|
10359
|
-
}
|
|
10360
|
-
}));
|
|
10361
|
-
}
|
|
10362
|
-
};
|
|
10363
|
-
let tasker;
|
|
10364
|
-
function addTask(task) {
|
|
10365
|
-
if (!tasker)
|
|
10366
|
-
tasker = new TaskProcessor();
|
|
10367
|
-
return new Promise((resolve) => {
|
|
10368
|
-
tasker.add(() => __awaiter(this, void 0, void 0, function* () { return yield task(resolve); }), { parallel: false });
|
|
10369
|
-
});
|
|
10370
|
-
}
|
|
10371
|
-
function checkLazy(leaf) {
|
|
10372
|
-
if (leaf.__.__needComputePaint)
|
|
10373
|
-
leaf.__.__computePaint();
|
|
10374
|
-
if (leaf.isBranch)
|
|
10375
|
-
leaf.children.forEach(child => checkLazy(child));
|
|
10376
|
-
}
|
|
10377
|
-
|
|
10378
|
-
const canvas = LeaferCanvasBase.prototype;
|
|
10379
|
-
const debug = Debug.get('@leafer-ui/export');
|
|
10380
|
-
canvas.export = function (filename, options) {
|
|
10381
|
-
const { quality, blob } = FileHelper.getExportOptions(options);
|
|
10382
|
-
if (filename.includes('.'))
|
|
10383
|
-
return this.saveAs(filename, quality);
|
|
10384
|
-
else if (blob)
|
|
10385
|
-
return this.toBlob(filename, quality);
|
|
10386
|
-
else
|
|
10387
|
-
return this.toDataURL(filename, quality);
|
|
10388
|
-
};
|
|
10389
|
-
canvas.toBlob = function (type, quality) {
|
|
10390
|
-
return new Promise((resolve) => {
|
|
10391
|
-
Platform.origin.canvasToBolb(this.view, type, quality).then((blob) => {
|
|
10392
|
-
resolve(blob);
|
|
10393
|
-
}).catch((e) => {
|
|
10394
|
-
debug.error(e);
|
|
10395
|
-
resolve(null);
|
|
10396
|
-
});
|
|
10397
|
-
});
|
|
10398
|
-
};
|
|
10399
|
-
canvas.toDataURL = function (type, quality) {
|
|
10400
|
-
return Platform.origin.canvasToDataURL(this.view, type, quality);
|
|
10401
|
-
};
|
|
10402
|
-
canvas.saveAs = function (filename, quality) {
|
|
10403
|
-
return new Promise((resolve) => {
|
|
10404
|
-
Platform.origin.canvasSaveAs(this.view, filename, quality).then(() => {
|
|
10405
|
-
resolve(true);
|
|
10406
|
-
}).catch((e) => {
|
|
10407
|
-
debug.error(e);
|
|
10408
|
-
resolve(false);
|
|
10409
|
-
});
|
|
10410
|
-
});
|
|
10411
|
-
};
|
|
10412
|
-
|
|
10413
10245
|
Object.assign(TextConvert, TextConvertModule);
|
|
10414
10246
|
Object.assign(ColorConvert, ColorConvertModule);
|
|
10415
10247
|
Object.assign(Paint, PaintModule);
|
|
10416
10248
|
Object.assign(PaintImage, PaintImageModule);
|
|
10417
10249
|
Object.assign(PaintGradient, PaintGradientModule);
|
|
10418
10250
|
Object.assign(Effect, EffectModule);
|
|
10419
|
-
Object.assign(Export, ExportModule);
|
|
10420
10251
|
|
|
10421
10252
|
useCanvas();
|
|
10422
10253
|
|