@leafer/miniapp 1.12.4 → 2.0.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/miniapp.module.js +120 -90
- package/dist/miniapp.module.min.js +1 -1
- package/dist/miniapp.module.min.js.map +1 -1
- package/package.json +21 -21
package/dist/miniapp.module.js
CHANGED
|
@@ -216,59 +216,6 @@ class LeafData {
|
|
|
216
216
|
}
|
|
217
217
|
}
|
|
218
218
|
|
|
219
|
-
const {floor: floor$3, max: max$7} = Math;
|
|
220
|
-
|
|
221
|
-
const Platform = {
|
|
222
|
-
toURL(text, fileType) {
|
|
223
|
-
let url = encodeURIComponent(text);
|
|
224
|
-
if (fileType === "text") url = "data:text/plain;charset=utf-8," + url; else if (fileType === "svg") url = "data:image/svg+xml," + url;
|
|
225
|
-
return url;
|
|
226
|
-
},
|
|
227
|
-
image: {
|
|
228
|
-
hitCanvasSize: 100,
|
|
229
|
-
maxCacheSize: 2560 * 1600,
|
|
230
|
-
maxPatternSize: 4096 * 2160,
|
|
231
|
-
crossOrigin: "anonymous",
|
|
232
|
-
isLarge(size, scaleX, scaleY, largeSize) {
|
|
233
|
-
return size.width * size.height * (scaleX ? scaleX * scaleY : 1) > (largeSize || image$1.maxCacheSize);
|
|
234
|
-
},
|
|
235
|
-
isSuperLarge(size, scaleX, scaleY) {
|
|
236
|
-
return image$1.isLarge(size, scaleX, scaleY, image$1.maxPatternSize);
|
|
237
|
-
},
|
|
238
|
-
getRealURL(url) {
|
|
239
|
-
const {prefix: prefix, suffix: suffix} = Platform.image;
|
|
240
|
-
if (suffix && !url.startsWith("data:") && !url.startsWith("blob:")) url += (url.includes("?") ? "&" : "?") + suffix;
|
|
241
|
-
if (prefix && url[0] === "/") url = prefix + url;
|
|
242
|
-
return url;
|
|
243
|
-
},
|
|
244
|
-
resize(image, width, height, xGap, yGap, clip, smooth, opacity, _filters) {
|
|
245
|
-
const canvas = Platform.origin.createCanvas(max$7(floor$3(width + (xGap || 0)), 1), max$7(floor$3(height + (yGap || 0)), 1));
|
|
246
|
-
const ctx = canvas.getContext("2d");
|
|
247
|
-
if (opacity) ctx.globalAlpha = opacity;
|
|
248
|
-
ctx.imageSmoothingEnabled = smooth === false ? false : true;
|
|
249
|
-
if (image) {
|
|
250
|
-
if (clip) {
|
|
251
|
-
const scaleX = width / clip.width, scaleY = height / clip.height;
|
|
252
|
-
ctx.setTransform(scaleX, 0, 0, scaleY, -clip.x * scaleX, -clip.y * scaleY);
|
|
253
|
-
ctx.drawImage(image, 0, 0, image.width, image.height);
|
|
254
|
-
} else ctx.drawImage(image, 0, 0, width, height);
|
|
255
|
-
}
|
|
256
|
-
return canvas;
|
|
257
|
-
},
|
|
258
|
-
setPatternTransform(pattern, transform, paint) {
|
|
259
|
-
try {
|
|
260
|
-
if (transform && pattern.setTransform) {
|
|
261
|
-
pattern.setTransform(transform);
|
|
262
|
-
transform = undefined;
|
|
263
|
-
}
|
|
264
|
-
} catch (_a) {}
|
|
265
|
-
if (paint) DataHelper.stintSet(paint, "transform", transform);
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
};
|
|
269
|
-
|
|
270
|
-
const {image: image$1} = Platform;
|
|
271
|
-
|
|
272
219
|
const IncrementId = {
|
|
273
220
|
RUNTIME: "runtime",
|
|
274
221
|
LEAF: "leaf",
|
|
@@ -291,7 +238,7 @@ const I$2 = IncrementId;
|
|
|
291
238
|
|
|
292
239
|
let tempA, tempB, tempTo;
|
|
293
240
|
|
|
294
|
-
const {max: max$
|
|
241
|
+
const {max: max$7} = Math, tempFour = [ 0, 0, 0, 0 ];
|
|
295
242
|
|
|
296
243
|
const FourNumberHelper = {
|
|
297
244
|
zero: [ ...tempFour ],
|
|
@@ -343,9 +290,9 @@ const FourNumberHelper = {
|
|
|
343
290
|
return data;
|
|
344
291
|
},
|
|
345
292
|
max(t, other, change) {
|
|
346
|
-
if (isNumber(t) && isNumber(other)) return max$
|
|
293
|
+
if (isNumber(t) && isNumber(other)) return max$7(t, other);
|
|
347
294
|
toTempAB(t, other, change);
|
|
348
|
-
return set$2(tempTo, max$
|
|
295
|
+
return set$2(tempTo, max$7(tempA[0], tempB[0]), max$7(tempA[1], tempB[1]), max$7(tempA[2], tempB[2]), max$7(tempA[3], tempB[3]));
|
|
349
296
|
},
|
|
350
297
|
add(t, other, change) {
|
|
351
298
|
if (isNumber(t) && isNumber(other)) return t + other;
|
|
@@ -362,7 +309,7 @@ const FourNumberHelper = {
|
|
|
362
309
|
|
|
363
310
|
const {set: set$2, get: get$5, setTemp: setTemp, toTempAB: toTempAB} = FourNumberHelper;
|
|
364
311
|
|
|
365
|
-
const {round: round$6, pow: pow$2, max: max$
|
|
312
|
+
const {round: round$6, pow: pow$2, max: max$6, floor: floor$3, PI: PI$4} = Math;
|
|
366
313
|
|
|
367
314
|
const MathHelper = {
|
|
368
315
|
within(value, min, max) {
|
|
@@ -416,7 +363,7 @@ const MathHelper = {
|
|
|
416
363
|
}
|
|
417
364
|
},
|
|
418
365
|
getFloorScale(num, min = 1) {
|
|
419
|
-
return max$
|
|
366
|
+
return max$6(floor$3(num), min) / num;
|
|
420
367
|
},
|
|
421
368
|
randInt: randInt,
|
|
422
369
|
randColor(opacity) {
|
|
@@ -1261,7 +1208,7 @@ const {toOuterPoint: toOuterPoint$2} = MatrixHelper;
|
|
|
1261
1208
|
|
|
1262
1209
|
const {float: float$3, fourNumber: fourNumber$1} = MathHelper;
|
|
1263
1210
|
|
|
1264
|
-
const {floor: floor$
|
|
1211
|
+
const {floor: floor$2, ceil: ceil$2} = Math;
|
|
1265
1212
|
|
|
1266
1213
|
let right$4, bottom$3, boundsRight, boundsBottom;
|
|
1267
1214
|
|
|
@@ -1418,8 +1365,8 @@ const BoundsHelper = {
|
|
|
1418
1365
|
},
|
|
1419
1366
|
ceil(t) {
|
|
1420
1367
|
const {x: x, y: y} = t;
|
|
1421
|
-
t.x = floor$
|
|
1422
|
-
t.y = floor$
|
|
1368
|
+
t.x = floor$2(t.x);
|
|
1369
|
+
t.y = floor$2(t.y);
|
|
1423
1370
|
t.width = x > t.x ? ceil$2(t.width + x - t.x) : ceil$2(t.width);
|
|
1424
1371
|
t.height = y > t.y ? ceil$2(t.height + y - t.y) : ceil$2(t.height);
|
|
1425
1372
|
},
|
|
@@ -1551,6 +1498,9 @@ const BoundsHelper = {
|
|
|
1551
1498
|
isEmpty(t) {
|
|
1552
1499
|
return t.x === 0 && t.y === 0 && t.width === 0 && t.height === 0;
|
|
1553
1500
|
},
|
|
1501
|
+
hasSize(t) {
|
|
1502
|
+
return t.width && t.height;
|
|
1503
|
+
},
|
|
1554
1504
|
reset(t) {
|
|
1555
1505
|
B.set(t);
|
|
1556
1506
|
}
|
|
@@ -1727,6 +1677,12 @@ class AutoBounds {
|
|
|
1727
1677
|
}
|
|
1728
1678
|
}
|
|
1729
1679
|
|
|
1680
|
+
const UnitConvertHelper = {
|
|
1681
|
+
number(value, percentRefer) {
|
|
1682
|
+
return isObject(value) ? value.type === "percent" ? value.value * percentRefer : value.value : value;
|
|
1683
|
+
}
|
|
1684
|
+
};
|
|
1685
|
+
|
|
1730
1686
|
const StringNumberMap = {
|
|
1731
1687
|
0: 1,
|
|
1732
1688
|
1: 1,
|
|
@@ -1743,6 +1699,69 @@ const StringNumberMap = {
|
|
|
1743
1699
|
E: 1
|
|
1744
1700
|
};
|
|
1745
1701
|
|
|
1702
|
+
const {floor: floor$1, max: max$5} = Math;
|
|
1703
|
+
|
|
1704
|
+
const Platform = {
|
|
1705
|
+
toURL(text, fileType) {
|
|
1706
|
+
let url = encodeURIComponent(text);
|
|
1707
|
+
if (fileType === "text") url = "data:text/plain;charset=utf-8," + url; else if (fileType === "svg") url = "data:image/svg+xml," + url;
|
|
1708
|
+
return url;
|
|
1709
|
+
},
|
|
1710
|
+
image: {
|
|
1711
|
+
hitCanvasSize: 100,
|
|
1712
|
+
maxCacheSize: 2560 * 1600,
|
|
1713
|
+
maxPatternSize: 4096 * 2160,
|
|
1714
|
+
crossOrigin: "anonymous",
|
|
1715
|
+
isLarge(size, scaleX, scaleY, largeSize) {
|
|
1716
|
+
return size.width * size.height * (scaleX ? scaleX * scaleY : 1) > (largeSize || image$1.maxCacheSize);
|
|
1717
|
+
},
|
|
1718
|
+
isSuperLarge(size, scaleX, scaleY) {
|
|
1719
|
+
return image$1.isLarge(size, scaleX, scaleY, image$1.maxPatternSize);
|
|
1720
|
+
},
|
|
1721
|
+
getRealURL(url) {
|
|
1722
|
+
const {prefix: prefix, suffix: suffix} = image$1;
|
|
1723
|
+
if (suffix && !url.startsWith("data:") && !url.startsWith("blob:")) url += (url.includes("?") ? "&" : "?") + suffix;
|
|
1724
|
+
if (prefix && url[0] === "/") url = prefix + url;
|
|
1725
|
+
return url;
|
|
1726
|
+
},
|
|
1727
|
+
resize(view, width, height, xGap, yGap, clip, smooth, opacity, _filters, interlace) {
|
|
1728
|
+
const realWidth = max$5(floor$1(width + (xGap || 0)), 1), realHeight = max$5(floor$1(height + (yGap || 0)), 1);
|
|
1729
|
+
let interlaceX, interlaceY, interlaceOffset;
|
|
1730
|
+
if (interlace && (interlaceOffset = UnitConvertHelper.number(interlace.offset, (interlaceX = interlace.type === "x") ? width : height))) interlaceX || (interlaceY = true);
|
|
1731
|
+
const canvas = Platform.origin.createCanvas(interlaceY ? realWidth * 2 : realWidth, interlaceX ? realHeight * 2 : realHeight);
|
|
1732
|
+
const ctx = canvas.getContext("2d");
|
|
1733
|
+
if (opacity) ctx.globalAlpha = opacity;
|
|
1734
|
+
ctx.imageSmoothingEnabled = smooth === false ? false : true;
|
|
1735
|
+
if (image$1.canUse(view)) {
|
|
1736
|
+
if (clip) {
|
|
1737
|
+
const scaleX = width / clip.width, scaleY = height / clip.height;
|
|
1738
|
+
ctx.setTransform(scaleX, 0, 0, scaleY, -clip.x * scaleX, -clip.y * scaleY);
|
|
1739
|
+
ctx.drawImage(view, 0, 0, view.width, view.height);
|
|
1740
|
+
} else ctx.drawImage(view, 0, 0, width, height);
|
|
1741
|
+
if (interlaceOffset) {
|
|
1742
|
+
ctx.drawImage(canvas, 0, 0, realWidth, realHeight, interlaceX ? interlaceOffset - realWidth : realWidth, interlaceX ? realHeight : interlaceOffset - realHeight, realWidth, realHeight);
|
|
1743
|
+
ctx.drawImage(canvas, 0, 0, realWidth, realHeight, interlaceX ? interlaceOffset : realWidth, interlaceX ? realHeight : interlaceOffset, realWidth, realHeight);
|
|
1744
|
+
}
|
|
1745
|
+
}
|
|
1746
|
+
return canvas;
|
|
1747
|
+
},
|
|
1748
|
+
canUse(view) {
|
|
1749
|
+
return view && view.width && !view.__closed;
|
|
1750
|
+
},
|
|
1751
|
+
setPatternTransform(pattern, transform, paint) {
|
|
1752
|
+
try {
|
|
1753
|
+
if (transform && pattern.setTransform) {
|
|
1754
|
+
pattern.setTransform(transform);
|
|
1755
|
+
transform = undefined;
|
|
1756
|
+
}
|
|
1757
|
+
} catch (_a) {}
|
|
1758
|
+
if (paint) DataHelper.stintSet(paint, "transform", transform);
|
|
1759
|
+
}
|
|
1760
|
+
}
|
|
1761
|
+
};
|
|
1762
|
+
|
|
1763
|
+
const {image: image$1} = Platform;
|
|
1764
|
+
|
|
1746
1765
|
const {randColor: randColor} = MathHelper;
|
|
1747
1766
|
|
|
1748
1767
|
class Debug {
|
|
@@ -3785,9 +3804,10 @@ class TaskItem {
|
|
|
3785
3804
|
run() {
|
|
3786
3805
|
return __awaiter(this, void 0, void 0, function*() {
|
|
3787
3806
|
try {
|
|
3788
|
-
if (this.isComplete) return;
|
|
3807
|
+
if (this.isComplete || this.runing) return;
|
|
3808
|
+
this.runing = true;
|
|
3789
3809
|
if (this.canUse && !this.canUse()) return this.cancel();
|
|
3790
|
-
if (this.task
|
|
3810
|
+
if (this.task) yield this.task();
|
|
3791
3811
|
} catch (error) {
|
|
3792
3812
|
debug$c.error(error);
|
|
3793
3813
|
}
|
|
@@ -3903,7 +3923,7 @@ class TaskProcessor {
|
|
|
3903
3923
|
stop() {
|
|
3904
3924
|
this.isComplete = true;
|
|
3905
3925
|
this.list.forEach(task => {
|
|
3906
|
-
if (!task.isComplete) task.
|
|
3926
|
+
if (!task.isComplete) task.run();
|
|
3907
3927
|
});
|
|
3908
3928
|
this.pause();
|
|
3909
3929
|
this.empty();
|
|
@@ -4193,7 +4213,7 @@ class LeaferImage {
|
|
|
4193
4213
|
getFull(_filters) {
|
|
4194
4214
|
return this.view;
|
|
4195
4215
|
}
|
|
4196
|
-
getCanvas(width, height, opacity, filters, xGap, yGap, smooth) {
|
|
4216
|
+
getCanvas(width, height, opacity, filters, xGap, yGap, smooth, interlace) {
|
|
4197
4217
|
width || (width = this.width);
|
|
4198
4218
|
height || (height = this.height);
|
|
4199
4219
|
if (this.cache) {
|
|
@@ -4206,7 +4226,7 @@ class LeaferImage {
|
|
|
4206
4226
|
}
|
|
4207
4227
|
if (data) return data;
|
|
4208
4228
|
}
|
|
4209
|
-
const canvas = Platform.image.resize(this.view, width, height, xGap, yGap, undefined, smooth, opacity, filters);
|
|
4229
|
+
const canvas = Platform.image.resize(this.view, width, height, xGap, yGap, undefined, smooth, opacity, filters, interlace);
|
|
4210
4230
|
this.cache = this.use > 1 ? {
|
|
4211
4231
|
data: canvas,
|
|
4212
4232
|
params: arguments
|
|
@@ -6098,7 +6118,7 @@ const LeafRender = {
|
|
|
6098
6118
|
}
|
|
6099
6119
|
};
|
|
6100
6120
|
|
|
6101
|
-
const {excludeRenderBounds: excludeRenderBounds$1} = LeafBoundsHelper;
|
|
6121
|
+
const {excludeRenderBounds: excludeRenderBounds$1} = LeafBoundsHelper, {hasSize: hasSize} = BoundsHelper;
|
|
6102
6122
|
|
|
6103
6123
|
const BranchRender = {
|
|
6104
6124
|
__updateChange() {
|
|
@@ -6110,8 +6130,8 @@ const BranchRender = {
|
|
|
6110
6130
|
this.__.__checkSingle();
|
|
6111
6131
|
},
|
|
6112
6132
|
__render(canvas, options) {
|
|
6113
|
-
this.__nowWorld = this.__getNowWorld(options);
|
|
6114
|
-
if (this.__worldOpacity) {
|
|
6133
|
+
const nowWorld = this.__nowWorld = this.__getNowWorld(options);
|
|
6134
|
+
if (this.__worldOpacity && hasSize(nowWorld)) {
|
|
6115
6135
|
const data = this.__;
|
|
6116
6136
|
if (data.__useDim) {
|
|
6117
6137
|
if (data.dim) options.dimOpacity = data.dim === true ? .2 : data.dim; else if (data.bright && !options.topRendering) return options.topList.add(this); else if (data.dimskip) options.dimOpacity && (options.dimOpacity = 0);
|
|
@@ -6120,7 +6140,6 @@ const BranchRender = {
|
|
|
6120
6140
|
if (data.eraser === "path") return this.__renderEraser(canvas, options);
|
|
6121
6141
|
const tempCanvas = canvas.getSameCanvas(false, true);
|
|
6122
6142
|
this.__renderBranch(tempCanvas, options);
|
|
6123
|
-
const nowWorld = this.__nowWorld;
|
|
6124
6143
|
canvas.opacity = options.dimOpacity ? data.opacity * options.dimOpacity : data.opacity;
|
|
6125
6144
|
canvas.copyWorldByReset(tempCanvas, nowWorld, nowWorld, data.__blendMode, true);
|
|
6126
6145
|
tempCanvas.recycle(nowWorld);
|
|
@@ -6960,7 +6979,7 @@ class LeafLevelList {
|
|
|
6960
6979
|
}
|
|
6961
6980
|
}
|
|
6962
6981
|
|
|
6963
|
-
const version = "
|
|
6982
|
+
const version = "2.0.0";
|
|
6964
6983
|
|
|
6965
6984
|
class LeaferCanvas extends LeaferCanvasBase {
|
|
6966
6985
|
get allowBackgroundColor() {
|
|
@@ -7540,6 +7559,7 @@ class Renderer {
|
|
|
7540
7559
|
this.times = 0;
|
|
7541
7560
|
this.config = {
|
|
7542
7561
|
usePartRender: true,
|
|
7562
|
+
ceilPartPixel: true,
|
|
7543
7563
|
maxFPS: 120
|
|
7544
7564
|
};
|
|
7545
7565
|
this.frames = [];
|
|
@@ -7648,8 +7668,9 @@ class Renderer {
|
|
|
7648
7668
|
const {canvas: canvas} = this, bounds = block.getIntersect(canvas.bounds), realBounds = new Bounds(bounds);
|
|
7649
7669
|
canvas.save();
|
|
7650
7670
|
bounds.spread(Renderer.clipSpread).ceil();
|
|
7651
|
-
|
|
7652
|
-
canvas.clipWorld(bounds);
|
|
7671
|
+
const {ceilPartPixel: ceilPartPixel} = this.config;
|
|
7672
|
+
canvas.clipWorld(bounds, ceilPartPixel);
|
|
7673
|
+
canvas.clearWorld(bounds, ceilPartPixel);
|
|
7653
7674
|
this.__render(bounds, realBounds);
|
|
7654
7675
|
canvas.restore();
|
|
7655
7676
|
Run.end(t);
|
|
@@ -8048,11 +8069,7 @@ const ColorConvert = {
|
|
|
8048
8069
|
hasTransparent: hasTransparent$3
|
|
8049
8070
|
};
|
|
8050
8071
|
|
|
8051
|
-
const UnitConvert =
|
|
8052
|
-
number(value, percentRefer) {
|
|
8053
|
-
return isObject(value) ? value.type === "percent" ? value.value * percentRefer : value.value : value;
|
|
8054
|
-
}
|
|
8055
|
-
};
|
|
8072
|
+
const UnitConvert = UnitConvertHelper;
|
|
8056
8073
|
|
|
8057
8074
|
const PathArrow = {};
|
|
8058
8075
|
|
|
@@ -9422,9 +9439,10 @@ let Ellipse = class Ellipse extends UI {
|
|
|
9422
9439
|
const {width: width, height: height, innerRadius: innerRadius, startAngle: startAngle, endAngle: endAngle} = this.__;
|
|
9423
9440
|
const rx = width / 2, ry = height / 2;
|
|
9424
9441
|
const path = this.__.path = [];
|
|
9442
|
+
let open;
|
|
9425
9443
|
if (innerRadius) {
|
|
9426
9444
|
if (startAngle || endAngle) {
|
|
9427
|
-
if (innerRadius < 1) ellipse(path, rx, ry, rx * innerRadius, ry * innerRadius, 0, startAngle, endAngle, false);
|
|
9445
|
+
if (innerRadius < 1) ellipse(path, rx, ry, rx * innerRadius, ry * innerRadius, 0, startAngle, endAngle, false); else open = true;
|
|
9428
9446
|
ellipse(path, rx, ry, rx, ry, 0, endAngle, startAngle, true);
|
|
9429
9447
|
} else {
|
|
9430
9448
|
if (innerRadius < 1) {
|
|
@@ -9441,7 +9459,7 @@ let Ellipse = class Ellipse extends UI {
|
|
|
9441
9459
|
ellipse(path, rx, ry, rx, ry);
|
|
9442
9460
|
}
|
|
9443
9461
|
}
|
|
9444
|
-
closePath$2(path);
|
|
9462
|
+
if (!open) closePath$2(path);
|
|
9445
9463
|
if (Platform.ellipseToCurve) this.__.path = this.getPath(true);
|
|
9446
9464
|
}
|
|
9447
9465
|
};
|
|
@@ -11306,6 +11324,7 @@ ui$5.__updateHitCanvas = function() {
|
|
|
11306
11324
|
ImageManager.patternLocked = true;
|
|
11307
11325
|
this.__renderShape(h, {
|
|
11308
11326
|
matrix: matrix$2.setWith(this.__world).scaleWith(1 / scale).invertWith().translate(-x, -y),
|
|
11327
|
+
snapshot: true,
|
|
11309
11328
|
ignoreFill: !isHitPixelFill,
|
|
11310
11329
|
ignoreStroke: !isHitPixelStroke
|
|
11311
11330
|
});
|
|
@@ -11991,7 +12010,7 @@ function getPatternData(paint, box, image) {
|
|
|
11991
12010
|
if (paint.padding) box = tempBox.set(box).shrink(paint.padding);
|
|
11992
12011
|
if (paint.mode === "strench") paint.mode = "stretch";
|
|
11993
12012
|
const {width: width, height: height} = image;
|
|
11994
|
-
const {opacity: opacity, mode: mode, align: align, offset: offset, scale: scale, size: size, rotation: rotation, skew: skew, clipSize: clipSize, repeat: repeat, gap: gap, filters: filters} = paint;
|
|
12013
|
+
const {opacity: opacity, mode: mode, align: align, offset: offset, scale: scale, size: size, rotation: rotation, skew: skew, clipSize: clipSize, repeat: repeat, gap: gap, filters: filters, interlace: interlace} = paint;
|
|
11995
12014
|
const sameBox = box.width === width && box.height === height;
|
|
11996
12015
|
const data = {
|
|
11997
12016
|
mode: mode
|
|
@@ -12057,6 +12076,10 @@ function getPatternData(paint, box, image) {
|
|
|
12057
12076
|
if (opacity && opacity < 1) data.opacity = opacity;
|
|
12058
12077
|
if (filters) data.filters = filters;
|
|
12059
12078
|
if (repeat) data.repeat = isString(repeat) ? repeat === "x" ? "repeat-x" : "repeat-y" : "repeat";
|
|
12079
|
+
if (interlace) data.interlace = isNumber(interlace) || interlace.type === "percent" ? {
|
|
12080
|
+
type: "x",
|
|
12081
|
+
offset: interlace
|
|
12082
|
+
} : interlace;
|
|
12060
12083
|
return data;
|
|
12061
12084
|
}
|
|
12062
12085
|
|
|
@@ -12190,7 +12213,7 @@ function createPattern(paint, ui, canvas, renderOptions) {
|
|
|
12190
12213
|
if (transform) copy$4(imageMatrix, transform);
|
|
12191
12214
|
scale$1(imageMatrix, 1 / scaleX, 1 / scaleY);
|
|
12192
12215
|
}
|
|
12193
|
-
const imageCanvas = image.getCanvas(width, height, data.opacity, data.filters, xGap, yGap, ui.leafer && ui.leafer.config.smooth);
|
|
12216
|
+
const imageCanvas = image.getCanvas(width, height, data.opacity, data.filters, xGap, yGap, ui.leafer && ui.leafer.config.smooth, data.interlace);
|
|
12194
12217
|
const pattern = image.getPattern(imageCanvas, data.repeat || (Platform.origin.noRepeat || "no-repeat"), imageMatrix, paint);
|
|
12195
12218
|
paint.style = pattern;
|
|
12196
12219
|
paint.patternId = id;
|
|
@@ -12212,8 +12235,8 @@ function getPatternFixScale(paint, imageScaleX, imageScaleY) {
|
|
|
12212
12235
|
|
|
12213
12236
|
function checkImage(paint, drawImage, ui, canvas, renderOptions) {
|
|
12214
12237
|
const {scaleX: scaleX, scaleY: scaleY} = PaintImage.getImageRenderScaleData(paint, ui, canvas, renderOptions);
|
|
12215
|
-
const {image: image, data: data, originPaint: originPaint} = paint, {exporting: exporting} = renderOptions;
|
|
12216
|
-
if (!data || paint.patternId === scaleX + "-" + scaleY && !exporting) {
|
|
12238
|
+
const {image: image, data: data, originPaint: originPaint} = paint, {exporting: exporting, snapshot: snapshot} = renderOptions;
|
|
12239
|
+
if (!data || paint.patternId === scaleX + "-" + scaleY && !exporting || snapshot) {
|
|
12217
12240
|
return false;
|
|
12218
12241
|
} else {
|
|
12219
12242
|
if (drawImage) {
|
|
@@ -12887,7 +12910,7 @@ const TextMode = 2;
|
|
|
12887
12910
|
|
|
12888
12911
|
function layoutChar(drawData, style, width, _height) {
|
|
12889
12912
|
const {rows: rows} = drawData;
|
|
12890
|
-
const {textAlign: textAlign, paraIndent: paraIndent,
|
|
12913
|
+
const {textAlign: textAlign, paraIndent: paraIndent, __letterSpacing: __letterSpacing} = style;
|
|
12891
12914
|
const justifyLast = width && textAlign.includes("both");
|
|
12892
12915
|
const justify = justifyLast || width && textAlign.includes("justify");
|
|
12893
12916
|
const justifyLetter = justify && textAlign.includes("letter");
|
|
@@ -12900,8 +12923,8 @@ function layoutChar(drawData, style, width, _height) {
|
|
|
12900
12923
|
remainingWidth = width - row.width - indentWidth;
|
|
12901
12924
|
if (justifyLetter) addLetterWidth = remainingWidth / (row.words.reduce((total, item) => total + item.data.length, 0) - 1); else addWordWidth = wordsLength > 1 ? remainingWidth / (wordsLength - 1) : 0;
|
|
12902
12925
|
}
|
|
12903
|
-
mode =
|
|
12904
|
-
if (row.isOverflow && !
|
|
12926
|
+
mode = __letterSpacing || row.isOverflow || justifyLetter ? CharMode : addWordWidth ? WordMode : TextMode;
|
|
12927
|
+
if (row.isOverflow && !__letterSpacing) row.textMode = true;
|
|
12905
12928
|
if (mode === TextMode) {
|
|
12906
12929
|
row.x += indentWidth;
|
|
12907
12930
|
toTextChar$1(row);
|
|
@@ -16255,13 +16278,14 @@ leafer.initType = function(type) {
|
|
|
16255
16278
|
};
|
|
16256
16279
|
|
|
16257
16280
|
leafer.getValidMove = function(moveX, moveY, checkLimit = true) {
|
|
16258
|
-
const {disabled: disabled} = this.app.config.move;
|
|
16281
|
+
const {disabled: disabled, scrollSpread: scrollSpread} = this.app.config.move;
|
|
16259
16282
|
move$4.set(moveX, moveY);
|
|
16260
16283
|
const scrollType = getScrollType(this);
|
|
16261
16284
|
if (scrollType) {
|
|
16262
16285
|
if (scrollType.includes("x")) move$4.y = 0; else if (scrollType.includes("y")) move$4.x = 0; else Math.abs(move$4.x) > Math.abs(move$4.y) ? move$4.y = 0 : move$4.x = 0;
|
|
16263
16286
|
if (checkLimit && scrollType.includes("limit")) {
|
|
16264
16287
|
bounds.set(this.__world).addPoint(this.zoomLayer);
|
|
16288
|
+
if (scrollSpread) bounds.spread(scrollSpread);
|
|
16265
16289
|
DragBoundsHelper.getValidMove(bounds, this.canvas.bounds, "auto", move$4, true);
|
|
16266
16290
|
if (scrollType.includes("x")) move$4.y = 0; else if (scrollType.includes("y")) move$4.x = 0;
|
|
16267
16291
|
}
|
|
@@ -19826,7 +19850,13 @@ const ExportModule = {
|
|
|
19826
19850
|
MathHelper.getScaleData(options.scale, options.size, renderBounds, scaleData);
|
|
19827
19851
|
let pixelRatio = options.pixelRatio || 1;
|
|
19828
19852
|
let {x: x, y: y, width: width, height: height} = new Bounds(renderBounds).scale(scaleData.scaleX, scaleData.scaleY);
|
|
19829
|
-
if (clip)
|
|
19853
|
+
if (clip) {
|
|
19854
|
+
x += clip.x, y += clip.y, width = clip.width, height = clip.height;
|
|
19855
|
+
if (clip.rotation) matrix.rotateOfInner({
|
|
19856
|
+
x: x,
|
|
19857
|
+
y: y
|
|
19858
|
+
}, -clip.rotation);
|
|
19859
|
+
}
|
|
19830
19860
|
const renderOptions = {
|
|
19831
19861
|
exporting: true,
|
|
19832
19862
|
matrix: matrix.scale(1 / scaleData.scaleX, 1 / scaleData.scaleY).invert().translate(-x, -y).withScale(1 / scaleX * scaleData.scaleX, 1 / scaleY * scaleData.scaleY)
|
|
@@ -20015,4 +20045,4 @@ Plugin.add("bright");
|
|
|
20015
20045
|
|
|
20016
20046
|
UI.addAttr("bright", false, dimType);
|
|
20017
20047
|
|
|
20018
|
-
export { AlignHelper, Animate, AnimateEasing, AnimateEvent, AnimateList, Answer, App, AroundHelper, Arrow, ArrowData, AutoBounds, BezierHelper, Bounds, BoundsEvent, BoundsHelper, Box, BoxData, Branch, BranchHelper, BranchRender, Canvas, CanvasData, CanvasManager, ChildEvent, ColorConvert, Creator, Cursor, DataHelper, Debug, Direction4, Direction9, DragBoundsHelper, DragEvent, Dragger, DropEvent, EditBox, EditDataHelper, EditPoint, EditSelect, EditSelectHelper, EditTool, EditToolCreator, Editor, EditorEvent, EditorGroupEvent, EditorHelper, EditorMoveEvent, EditorRotateEvent, EditorScaleEvent, EditorSkewEvent, Effect, Ellipse, EllipseData, EllipseHelper, Event, EventCreator, Eventer, Export, FileHelper, Filter, Finder, Flow, FourNumberHelper, Frame, FrameData, Group, GroupData, HighBezierHelper, HighCurveHelper, HitCanvasManager, Image, ImageData, ImageEvent, ImageManager, IncrementId, InnerEditor, InnerEditorEvent, Interaction, InteractionBase, InteractionHelper, KeyEvent, Keyboard, LayoutEvent, Layouter, Leaf, LeafBounds, LeafBoundsHelper, LeafData, LeafDataProxy, LeafEventer, LeafHelper, LeafLayout, LeafLevelList, LeafList, LeafMatrix, LeafRender, Leafer, LeaferCanvas, LeaferCanvasBase, LeaferData, LeaferEvent, LeaferImage, LeaferTypeCreator, Line, LineData, LineEditTool, MathHelper, Matrix, MatrixHelper, MoveEvent, MultiTouchHelper, MyDragEvent, MyImage, MyPointerEvent, MyTouchEvent, NeedConvertToCanvasCommandMap, OneRadian, PI2, PI_2, Paint, PaintGradient, PaintImage, Path, PathArrow, PathArrowModule, PathBounds, PathCommandDataHelper, PathCommandMap, PathCommandNodeHelper, PathConvert, PathCorner, PathCreator, PathData, PathDrawer, PathHelper, PathMatrixHelper, PathNodeHandleType, PathNumberCommandLengthMap, PathNumberCommandMap, PathScaler, Pen, PenData, Picker, Platform, Plugin, Point, PointHelper, PointerButton, PointerEvent, Polygon, PolygonData, PropertyEvent, Rect, RectData, RectHelper, RectRender, RenderEvent, Renderer, ResizeEvent, Resource, Robot, RobotData, RotateEvent, Run, ScrollBar, SelectArea, Selector, Star, StarData, State, StringNumberMap, Stroker, SwipeEvent, TaskItem, TaskProcessor, Text, TextConvert, TextData, TouchEvent, TransformTool, Transformer, Transition, TwoPointBoundsHelper, UI, UIBounds, UICreator, UIData, UIEvent, UIRender, UnitConvert, WaitHelper, WatchEvent, Watcher, WheelEventHelper, ZoomEvent, addViewport, addViewportConfig, affectRenderBoundsType, affectStrokeBoundsType, arrowType, attr, autoLayoutType, boundsType, canvasPatch, canvasSizeAttrs, createAttr, createDescriptor, cursorType, dataProcessor, dataType, decorateLeafAttr, defineDataProcessor, defineKey, defineLeafAttr, dimType, doBoundsType, doStrokeType, effectType, emptyData, eraserType, extraPropertyEventMap, getBoundsData, getDescriptor, getMatrixData, getPointData, hitType, isArray, isData, isEmptyData, isFinite$1 as isFinite, isNull, isNumber, isObject, isString, isUndefined, layoutProcessor, leaferTransformAttrMap, maskType, motionPathType, naturalBoundsType, opacityType, path, pathInputType, pathType, pen, positionType, registerEditTool, registerInnerEditor, registerUI, registerUIEvent, resizeType, rewrite, rewriteAble, rotationType, scaleResize, scaleResizeFontSize, scaleResizeGroup, scaleResizePath, scaleResizePoints, scaleType, scrollType, sortType, stateStyleType, stateType, strokeType, surfaceType, tempBounds$2 as tempBounds, tempMatrix$2 as tempMatrix, tempPoint$4 as tempPoint, tryToNumber, useCanvas, useModule, version, visibleType, zoomLayerType };
|
|
20048
|
+
export { AlignHelper, Animate, AnimateEasing, AnimateEvent, AnimateList, Answer, App, AroundHelper, Arrow, ArrowData, AutoBounds, BezierHelper, Bounds, BoundsEvent, BoundsHelper, Box, BoxData, Branch, BranchHelper, BranchRender, Canvas, CanvasData, CanvasManager, ChildEvent, ColorConvert, Creator, Cursor, DataHelper, Debug, Direction4, Direction9, DragBoundsHelper, DragEvent, Dragger, DropEvent, EditBox, EditDataHelper, EditPoint, EditSelect, EditSelectHelper, EditTool, EditToolCreator, Editor, EditorEvent, EditorGroupEvent, EditorHelper, EditorMoveEvent, EditorRotateEvent, EditorScaleEvent, EditorSkewEvent, Effect, Ellipse, EllipseData, EllipseHelper, Event, EventCreator, Eventer, Export, FileHelper, Filter, Finder, Flow, FourNumberHelper, Frame, FrameData, Group, GroupData, HighBezierHelper, HighCurveHelper, HitCanvasManager, Image, ImageData, ImageEvent, ImageManager, IncrementId, InnerEditor, InnerEditorEvent, Interaction, InteractionBase, InteractionHelper, KeyEvent, Keyboard, LayoutEvent, Layouter, Leaf, LeafBounds, LeafBoundsHelper, LeafData, LeafDataProxy, LeafEventer, LeafHelper, LeafLayout, LeafLevelList, LeafList, LeafMatrix, LeafRender, Leafer, LeaferCanvas, LeaferCanvasBase, LeaferData, LeaferEvent, LeaferImage, LeaferTypeCreator, Line, LineData, LineEditTool, MathHelper, Matrix, MatrixHelper, MoveEvent, MultiTouchHelper, MyDragEvent, MyImage, MyPointerEvent, MyTouchEvent, NeedConvertToCanvasCommandMap, OneRadian, PI2, PI_2, Paint, PaintGradient, PaintImage, Path, PathArrow, PathArrowModule, PathBounds, PathCommandDataHelper, PathCommandMap, PathCommandNodeHelper, PathConvert, PathCorner, PathCreator, PathData, PathDrawer, PathHelper, PathMatrixHelper, PathNodeHandleType, PathNumberCommandLengthMap, PathNumberCommandMap, PathScaler, Pen, PenData, Picker, Platform, Plugin, Point, PointHelper, PointerButton, PointerEvent, Polygon, PolygonData, PropertyEvent, Rect, RectData, RectHelper, RectRender, RenderEvent, Renderer, ResizeEvent, Resource, Robot, RobotData, RotateEvent, Run, ScrollBar, SelectArea, Selector, Star, StarData, State, StringNumberMap, Stroker, SwipeEvent, TaskItem, TaskProcessor, Text, TextConvert, TextData, TouchEvent, TransformTool, Transformer, Transition, TwoPointBoundsHelper, UI, UIBounds, UICreator, UIData, UIEvent, UIRender, UnitConvert, UnitConvertHelper, WaitHelper, WatchEvent, Watcher, WheelEventHelper, ZoomEvent, addViewport, addViewportConfig, affectRenderBoundsType, affectStrokeBoundsType, arrowType, attr, autoLayoutType, boundsType, canvasPatch, canvasSizeAttrs, createAttr, createDescriptor, cursorType, dataProcessor, dataType, decorateLeafAttr, defineDataProcessor, defineKey, defineLeafAttr, dimType, doBoundsType, doStrokeType, effectType, emptyData, eraserType, extraPropertyEventMap, getBoundsData, getDescriptor, getMatrixData, getPointData, hitType, isArray, isData, isEmptyData, isFinite$1 as isFinite, isNull, isNumber, isObject, isString, isUndefined, layoutProcessor, leaferTransformAttrMap, maskType, motionPathType, naturalBoundsType, opacityType, path, pathInputType, pathType, pen, positionType, registerEditTool, registerInnerEditor, registerUI, registerUIEvent, resizeType, rewrite, rewriteAble, rotationType, scaleResize, scaleResizeFontSize, scaleResizeGroup, scaleResizePath, scaleResizePoints, scaleType, scrollType, sortType, stateStyleType, stateType, strokeType, surfaceType, tempBounds$2 as tempBounds, tempMatrix$2 as tempMatrix, tempPoint$4 as tempPoint, tryToNumber, useCanvas, useModule, version, visibleType, zoomLayerType };
|