@leafer-draw/worker 2.0.1 → 2.0.3
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/worker.cjs +96 -67
- package/dist/worker.esm.js +84 -69
- package/dist/worker.esm.min.js +1 -1
- package/dist/worker.esm.min.js.map +1 -1
- package/dist/worker.js +234 -127
- package/dist/worker.min.cjs +1 -1
- package/dist/worker.min.cjs.map +1 -1
- package/dist/worker.min.js +1 -1
- package/dist/worker.min.js.map +1 -1
- package/dist/worker.module.js +241 -133
- package/dist/worker.module.min.js +1 -1
- package/dist/worker.module.min.js.map +1 -1
- package/package.json +7 -9
- package/src/index.ts +2 -2
- package/types/index.d.ts +1 -8
- package/src/core.ts +0 -86
package/dist/worker.module.js
CHANGED
|
@@ -7,6 +7,45 @@ var PathNodeHandleType;
|
|
|
7
7
|
PathNodeHandleType[PathNodeHandleType["mirror"] = 4] = "mirror";
|
|
8
8
|
})(PathNodeHandleType || (PathNodeHandleType = {}));
|
|
9
9
|
|
|
10
|
+
function __decorate(decorators, target, key, desc) {
|
|
11
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
12
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
13
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function __awaiter(thisArg, _arguments, P, generator) {
|
|
17
|
+
function adopt(value) {
|
|
18
|
+
return value instanceof P ? value : new P(function(resolve) {
|
|
19
|
+
resolve(value);
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
return new (P || (P = Promise))(function(resolve, reject) {
|
|
23
|
+
function fulfilled(value) {
|
|
24
|
+
try {
|
|
25
|
+
step(generator.next(value));
|
|
26
|
+
} catch (e) {
|
|
27
|
+
reject(e);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
function rejected(value) {
|
|
31
|
+
try {
|
|
32
|
+
step(generator["throw"](value));
|
|
33
|
+
} catch (e) {
|
|
34
|
+
reject(e);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function step(result) {
|
|
38
|
+
result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
|
|
39
|
+
}
|
|
40
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
typeof SuppressedError === "function" ? SuppressedError : function(error, suppressed, message) {
|
|
45
|
+
var e = new Error(message);
|
|
46
|
+
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
47
|
+
};
|
|
48
|
+
|
|
10
49
|
var Answer;
|
|
11
50
|
|
|
12
51
|
(function(Answer) {
|
|
@@ -213,6 +252,7 @@ class LeafData {
|
|
|
213
252
|
}
|
|
214
253
|
destroy() {
|
|
215
254
|
this.__input = this.__middle = null;
|
|
255
|
+
if (this.__complexData) this.__complexData.destroy();
|
|
216
256
|
}
|
|
217
257
|
}
|
|
218
258
|
|
|
@@ -311,6 +351,8 @@ const {set: set$2, get: get$5, setTemp: setTemp, toTempAB: toTempAB} = FourNumbe
|
|
|
311
351
|
|
|
312
352
|
const {round: round$3, pow: pow$1, max: max$3, floor: floor$2, PI: PI$3} = Math;
|
|
313
353
|
|
|
354
|
+
const tempScaleData$1 = {};
|
|
355
|
+
|
|
314
356
|
const MathHelper = {
|
|
315
357
|
within(value, min, max) {
|
|
316
358
|
if (isObject(min)) max = min.max, min = min.min;
|
|
@@ -354,6 +396,24 @@ const MathHelper = {
|
|
|
354
396
|
} else if (scale) MathHelper.assignScale(scaleData, scale);
|
|
355
397
|
return scaleData;
|
|
356
398
|
},
|
|
399
|
+
getScaleFixedData(worldScaleData, scaleFixed, unscale, abs, _localScaleData) {
|
|
400
|
+
let {scaleX: scaleX, scaleY: scaleY} = worldScaleData;
|
|
401
|
+
if (abs || scaleFixed) scaleX < 0 && (scaleX = -scaleX), scaleY < 0 && (scaleY = -scaleY);
|
|
402
|
+
if (scaleFixed) {
|
|
403
|
+
if (scaleFixed === true) {
|
|
404
|
+
scaleX = scaleY = unscale ? 1 : 1 / scaleX;
|
|
405
|
+
} else {
|
|
406
|
+
let minScale;
|
|
407
|
+
if (isNumber(scaleFixed)) minScale = scaleFixed; else if (scaleFixed === "zoom-in") minScale = 1;
|
|
408
|
+
if (minScale) {
|
|
409
|
+
if (scaleX > minScale || scaleY > minScale) scaleX = scaleY = unscale ? 1 : 1 / scaleX; else scaleX = scaleY = unscale ? 1 : 1 / minScale;
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
tempScaleData$1.scaleX = scaleX;
|
|
414
|
+
tempScaleData$1.scaleY = scaleY;
|
|
415
|
+
return tempScaleData$1;
|
|
416
|
+
},
|
|
357
417
|
assignScale(scaleData, scale) {
|
|
358
418
|
if (isNumber(scale)) {
|
|
359
419
|
scaleData.scaleX = scaleData.scaleY = scale;
|
|
@@ -850,8 +910,8 @@ const PointHelper = {
|
|
|
850
910
|
if (isObject(originPoints[0])) points = [], originPoints.forEach(p => points.push(p.x, p.y));
|
|
851
911
|
return points;
|
|
852
912
|
},
|
|
853
|
-
isSame(t, point) {
|
|
854
|
-
return float$1(t.x) === float$1(point.x) && float$1(t.y) === float$1(point.y);
|
|
913
|
+
isSame(t, point, quick) {
|
|
914
|
+
return quick ? t.x === point.x && t.y === point.y : float$1(t.x) === float$1(point.x) && float$1(t.y) === float$1(point.y);
|
|
855
915
|
},
|
|
856
916
|
reset(t) {
|
|
857
917
|
P$5.reset(t);
|
|
@@ -926,8 +986,8 @@ class Point {
|
|
|
926
986
|
getAtan2(to) {
|
|
927
987
|
return PointHelper.getAtan2(this, to);
|
|
928
988
|
}
|
|
929
|
-
isSame(point) {
|
|
930
|
-
return PointHelper.isSame(this, point);
|
|
989
|
+
isSame(point, quick) {
|
|
990
|
+
return PointHelper.isSame(this, point, quick);
|
|
931
991
|
}
|
|
932
992
|
reset() {
|
|
933
993
|
PointHelper.reset(this);
|
|
@@ -1183,9 +1243,9 @@ const AroundHelper = {
|
|
|
1183
1243
|
}
|
|
1184
1244
|
if (!onlyBoxSize) to.x += box.x, to.y += box.y;
|
|
1185
1245
|
},
|
|
1186
|
-
getPoint(around, box, to) {
|
|
1246
|
+
getPoint(around, box, to, onlyBoxSize = true) {
|
|
1187
1247
|
if (!to) to = {};
|
|
1188
|
-
AroundHelper.toPoint(around, box, to,
|
|
1248
|
+
AroundHelper.toPoint(around, box, to, onlyBoxSize);
|
|
1189
1249
|
return to;
|
|
1190
1250
|
}
|
|
1191
1251
|
};
|
|
@@ -1452,6 +1512,9 @@ const BoundsHelper = {
|
|
|
1452
1512
|
y: y + height
|
|
1453
1513
|
} ];
|
|
1454
1514
|
},
|
|
1515
|
+
getPoint(t, around, onlyBoxSize = false, to) {
|
|
1516
|
+
return AroundHelper.getPoint(around, t, to, onlyBoxSize);
|
|
1517
|
+
},
|
|
1455
1518
|
hitRadiusPoint(t, point, pointMatrix) {
|
|
1456
1519
|
if (pointMatrix) point = PointHelper.tempToInnerRadiusPointOf(point, pointMatrix);
|
|
1457
1520
|
return point.x >= t.x - point.radiusX && point.x <= t.x + t.width + point.radiusX && (point.y >= t.y - point.radiusY && point.y <= t.y + t.height + point.radiusY);
|
|
@@ -1623,6 +1686,9 @@ class Bounds {
|
|
|
1623
1686
|
getPoints() {
|
|
1624
1687
|
return BoundsHelper.getPoints(this);
|
|
1625
1688
|
}
|
|
1689
|
+
getPoint(around, onlyBoxSize, to) {
|
|
1690
|
+
return BoundsHelper.getPoint(this, around, onlyBoxSize, to);
|
|
1691
|
+
}
|
|
1626
1692
|
hitPoint(point, pointMatrix) {
|
|
1627
1693
|
return BoundsHelper.hitPoint(this, point, pointMatrix);
|
|
1628
1694
|
}
|
|
@@ -1897,7 +1963,10 @@ const UICreator = {
|
|
|
1897
1963
|
list$1[tag] = UI;
|
|
1898
1964
|
},
|
|
1899
1965
|
get(tag, data, x, y, width, height) {
|
|
1900
|
-
if (!list$1[tag])
|
|
1966
|
+
if (!list$1[tag]) {
|
|
1967
|
+
debug$d.warn("not register " + tag);
|
|
1968
|
+
return undefined;
|
|
1969
|
+
}
|
|
1901
1970
|
const ui = new list$1[tag](data);
|
|
1902
1971
|
if (!isUndefined(x)) {
|
|
1903
1972
|
ui.x = x;
|
|
@@ -1988,45 +2057,6 @@ class CanvasManager {
|
|
|
1988
2057
|
}
|
|
1989
2058
|
}
|
|
1990
2059
|
|
|
1991
|
-
function __decorate(decorators, target, key, desc) {
|
|
1992
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
1993
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
1994
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
1995
|
-
}
|
|
1996
|
-
|
|
1997
|
-
function __awaiter(thisArg, _arguments, P, generator) {
|
|
1998
|
-
function adopt(value) {
|
|
1999
|
-
return value instanceof P ? value : new P(function(resolve) {
|
|
2000
|
-
resolve(value);
|
|
2001
|
-
});
|
|
2002
|
-
}
|
|
2003
|
-
return new (P || (P = Promise))(function(resolve, reject) {
|
|
2004
|
-
function fulfilled(value) {
|
|
2005
|
-
try {
|
|
2006
|
-
step(generator.next(value));
|
|
2007
|
-
} catch (e) {
|
|
2008
|
-
reject(e);
|
|
2009
|
-
}
|
|
2010
|
-
}
|
|
2011
|
-
function rejected(value) {
|
|
2012
|
-
try {
|
|
2013
|
-
step(generator["throw"](value));
|
|
2014
|
-
} catch (e) {
|
|
2015
|
-
reject(e);
|
|
2016
|
-
}
|
|
2017
|
-
}
|
|
2018
|
-
function step(result) {
|
|
2019
|
-
result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
|
|
2020
|
-
}
|
|
2021
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
2022
|
-
});
|
|
2023
|
-
}
|
|
2024
|
-
|
|
2025
|
-
typeof SuppressedError === "function" ? SuppressedError : function(error, suppressed, message) {
|
|
2026
|
-
var e = new Error(message);
|
|
2027
|
-
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
2028
|
-
};
|
|
2029
|
-
|
|
2030
2060
|
function contextAttr(realName) {
|
|
2031
2061
|
return (target, key) => {
|
|
2032
2062
|
if (!realName) realName = key;
|
|
@@ -3754,10 +3784,10 @@ function canvasPatch(drawer) {
|
|
|
3754
3784
|
const FileHelper = {
|
|
3755
3785
|
alphaPixelTypes: [ "png", "webp", "svg" ],
|
|
3756
3786
|
upperCaseTypeMap: {},
|
|
3757
|
-
|
|
3758
|
-
if (!type || type.startsWith(
|
|
3787
|
+
mimeType(type, base = "image") {
|
|
3788
|
+
if (!type || type.startsWith(base)) return type;
|
|
3759
3789
|
if (type === "jpg") type = "jpeg";
|
|
3760
|
-
return "
|
|
3790
|
+
return base + "/" + type;
|
|
3761
3791
|
},
|
|
3762
3792
|
fileType(filename) {
|
|
3763
3793
|
const l = filename.split(".");
|
|
@@ -3790,6 +3820,8 @@ const FileHelper = {
|
|
|
3790
3820
|
|
|
3791
3821
|
const F = FileHelper;
|
|
3792
3822
|
|
|
3823
|
+
F.mineType = F.mimeType;
|
|
3824
|
+
|
|
3793
3825
|
F.alphaPixelTypes.forEach(type => F.upperCaseTypeMap[type] = type.toUpperCase());
|
|
3794
3826
|
|
|
3795
3827
|
const debug$8 = Debug.get("TaskProcessor");
|
|
@@ -4034,6 +4066,9 @@ const debug$7 = Debug.get("Resource");
|
|
|
4034
4066
|
|
|
4035
4067
|
const Resource = {
|
|
4036
4068
|
tasker: new TaskProcessor,
|
|
4069
|
+
queue: new TaskProcessor({
|
|
4070
|
+
parallel: 1
|
|
4071
|
+
}),
|
|
4037
4072
|
map: {},
|
|
4038
4073
|
get isComplete() {
|
|
4039
4074
|
return R.tasker.isComplete;
|
|
@@ -4070,6 +4105,12 @@ const Resource = {
|
|
|
4070
4105
|
R.set(key, value);
|
|
4071
4106
|
return value;
|
|
4072
4107
|
},
|
|
4108
|
+
loadFilm(_key, _format) {
|
|
4109
|
+
return undefined;
|
|
4110
|
+
},
|
|
4111
|
+
loadVideo(_key, _format) {
|
|
4112
|
+
return undefined;
|
|
4113
|
+
},
|
|
4073
4114
|
destroy() {
|
|
4074
4115
|
R.map = {};
|
|
4075
4116
|
}
|
|
@@ -4080,16 +4121,15 @@ const R = Resource;
|
|
|
4080
4121
|
const ImageManager = {
|
|
4081
4122
|
maxRecycled: 10,
|
|
4082
4123
|
recycledList: [],
|
|
4083
|
-
patternTasker:
|
|
4084
|
-
|
|
4085
|
-
}),
|
|
4086
|
-
get(config) {
|
|
4124
|
+
patternTasker: Resource.queue,
|
|
4125
|
+
get(config, type) {
|
|
4087
4126
|
let image = Resource.get(config.url);
|
|
4088
|
-
if (!image) Resource.set(config.url, image = Creator.image(config));
|
|
4127
|
+
if (!image) Resource.set(config.url, image = type === "film" ? Creator.film(config) : Creator.image(config));
|
|
4089
4128
|
image.use++;
|
|
4090
4129
|
return image;
|
|
4091
4130
|
},
|
|
4092
4131
|
recycle(image) {
|
|
4132
|
+
if (image.parent) image = image.parent;
|
|
4093
4133
|
image.use--;
|
|
4094
4134
|
setTimeout(() => {
|
|
4095
4135
|
if (!image.use) {
|
|
@@ -4120,7 +4160,7 @@ const ImageManager = {
|
|
|
4120
4160
|
if (config.format) return config.format === format;
|
|
4121
4161
|
const {url: url} = config;
|
|
4122
4162
|
if (url.startsWith("data:")) {
|
|
4123
|
-
if (url.startsWith("data:" + FileHelper.
|
|
4163
|
+
if (url.startsWith("data:" + FileHelper.mimeType(format))) return true;
|
|
4124
4164
|
} else {
|
|
4125
4165
|
if (url.includes("." + format) || url.includes("." + FileHelper.upperCaseTypeMap[format])) return true; else if (format === "png" && !url.includes(".")) return true;
|
|
4126
4166
|
}
|
|
@@ -4136,6 +4176,9 @@ const I = ImageManager;
|
|
|
4136
4176
|
const {IMAGE: IMAGE, create: create$1} = IncrementId;
|
|
4137
4177
|
|
|
4138
4178
|
class LeaferImage {
|
|
4179
|
+
get tag() {
|
|
4180
|
+
return "Image";
|
|
4181
|
+
}
|
|
4139
4182
|
get url() {
|
|
4140
4183
|
return this.config.url;
|
|
4141
4184
|
}
|
|
@@ -4164,7 +4207,7 @@ class LeaferImage {
|
|
|
4164
4207
|
if (!this.loading) {
|
|
4165
4208
|
this.loading = true;
|
|
4166
4209
|
Resource.tasker.add(() => __awaiter(this, void 0, void 0, function*() {
|
|
4167
|
-
return yield Platform.origin.
|
|
4210
|
+
return yield Platform.origin["load" + this.tag](this.getLoadUrl(thumbSize), this.crossOrigin, this).then(img => {
|
|
4168
4211
|
if (thumbSize) this.setThumbView(img);
|
|
4169
4212
|
this.setView(img);
|
|
4170
4213
|
}).catch(e => {
|
|
@@ -4238,6 +4281,9 @@ class LeaferImage {
|
|
|
4238
4281
|
Platform.image.setPatternTransform(pattern, transform, paint);
|
|
4239
4282
|
return pattern;
|
|
4240
4283
|
}
|
|
4284
|
+
render(canvas, x, y, width, height, _leaf, _paint, _imageScaleX, _imageScaleY) {
|
|
4285
|
+
canvas.drawImage(this.view, x, y, width, height);
|
|
4286
|
+
}
|
|
4241
4287
|
getLoadUrl(_thumbSize) {
|
|
4242
4288
|
return this.url;
|
|
4243
4289
|
}
|
|
@@ -4252,8 +4298,10 @@ class LeaferImage {
|
|
|
4252
4298
|
return undefined;
|
|
4253
4299
|
}
|
|
4254
4300
|
clearLevels(_checkUse) {}
|
|
4301
|
+
destroyFilter() {}
|
|
4255
4302
|
destroy() {
|
|
4256
4303
|
this.clearLevels();
|
|
4304
|
+
this.destroyFilter();
|
|
4257
4305
|
const {view: view} = this;
|
|
4258
4306
|
if (view && view.close) view.close();
|
|
4259
4307
|
this.config = {
|
|
@@ -4264,6 +4312,18 @@ class LeaferImage {
|
|
|
4264
4312
|
}
|
|
4265
4313
|
}
|
|
4266
4314
|
|
|
4315
|
+
class LeaferFilm extends LeaferImage {
|
|
4316
|
+
get tag() {
|
|
4317
|
+
return "Film";
|
|
4318
|
+
}
|
|
4319
|
+
}
|
|
4320
|
+
|
|
4321
|
+
class LeaferVideo extends LeaferImage {
|
|
4322
|
+
get tag() {
|
|
4323
|
+
return "Video";
|
|
4324
|
+
}
|
|
4325
|
+
}
|
|
4326
|
+
|
|
4267
4327
|
function defineKey(target, key, descriptor, noConfigurable) {
|
|
4268
4328
|
if (!noConfigurable) descriptor.configurable = descriptor.enumerable = true;
|
|
4269
4329
|
Object.defineProperty(target, key, descriptor);
|
|
@@ -4438,7 +4498,6 @@ function dimType(defaultValue) {
|
|
|
4438
4498
|
if (this.__setAttr(key, value)) {
|
|
4439
4499
|
const data = this.__;
|
|
4440
4500
|
DataHelper.stintSet(data, "__useDim", data.dim || data.bright || data.dimskip);
|
|
4441
|
-
this.__layout.surfaceChange();
|
|
4442
4501
|
}
|
|
4443
4502
|
}
|
|
4444
4503
|
}));
|
|
@@ -4488,7 +4547,6 @@ function sortType(defaultValue) {
|
|
|
4488
4547
|
return decorateLeafAttr(defaultValue, key => attr({
|
|
4489
4548
|
set(value) {
|
|
4490
4549
|
if (this.__setAttr(key, value)) {
|
|
4491
|
-
this.__layout.surfaceChange();
|
|
4492
4550
|
this.waitParent(() => {
|
|
4493
4551
|
this.parent.__layout.childrenSortChange();
|
|
4494
4552
|
});
|
|
@@ -4525,7 +4583,6 @@ function hitType(defaultValue) {
|
|
|
4525
4583
|
set(value) {
|
|
4526
4584
|
if (this.__setAttr(key, value)) {
|
|
4527
4585
|
this.__layout.hitCanvasChanged = true;
|
|
4528
|
-
if (Debug.showBounds === "hit") this.__layout.surfaceChange();
|
|
4529
4586
|
if (this.leafer) this.leafer.updateCursor();
|
|
4530
4587
|
}
|
|
4531
4588
|
}
|
|
@@ -4731,6 +4788,10 @@ const LeafHelper = {
|
|
|
4731
4788
|
if (layout.stateStyleChanged) leaf.updateState();
|
|
4732
4789
|
if (layout.opacityChanged) updateAllWorldOpacity(leaf);
|
|
4733
4790
|
leaf.__updateChange();
|
|
4791
|
+
if (layout.surfaceChanged) {
|
|
4792
|
+
if (leaf.__hasComplex) L.updateComplex(leaf);
|
|
4793
|
+
layout.surfaceChanged = false;
|
|
4794
|
+
}
|
|
4734
4795
|
},
|
|
4735
4796
|
updateAllChange(leaf) {
|
|
4736
4797
|
updateChange$1(leaf);
|
|
@@ -4755,6 +4816,9 @@ const LeafHelper = {
|
|
|
4755
4816
|
if (!fromWorld) fromWorld = leaf.__nowWorld;
|
|
4756
4817
|
if (leaf.__worldFlipped || Platform.fullImageShadow) currentCanvas.copyWorldByReset(fromCanvas, fromWorld, leaf.__nowWorld, blendMode, onlyResetTransform); else currentCanvas.copyWorldToInner(fromCanvas, fromWorld, leaf.__layout.renderBounds, blendMode);
|
|
4757
4818
|
},
|
|
4819
|
+
renderComplex(_leaf, _canvas, _options) {},
|
|
4820
|
+
updateComplex(_leaf) {},
|
|
4821
|
+
checkComplex(_leaf) {},
|
|
4758
4822
|
moveWorld(t, x, y = 0, isInnerPoint, transition) {
|
|
4759
4823
|
const local = isObject(x) ? Object.assign({}, x) : {
|
|
4760
4824
|
x: x,
|
|
@@ -4866,6 +4930,9 @@ const LeafHelper = {
|
|
|
4866
4930
|
divideParent(matrix, relative.scrollWorldTransform);
|
|
4867
4931
|
return temp ? matrix : Object.assign({}, matrix);
|
|
4868
4932
|
},
|
|
4933
|
+
updateScaleFixedWorld(_t) {},
|
|
4934
|
+
updateOuterBounds(_t) {},
|
|
4935
|
+
cacheId(_t) {},
|
|
4869
4936
|
drop(t, parent, index, resize) {
|
|
4870
4937
|
t.setTransform(L.getRelativeWorld(t, parent, true), resize);
|
|
4871
4938
|
parent.add(t, index);
|
|
@@ -4916,7 +4983,8 @@ const LeafBoundsHelper = {
|
|
|
4916
4983
|
return target.__.eraser || target.__.visible === 0 ? null : target.__layout.localStrokeBounds;
|
|
4917
4984
|
},
|
|
4918
4985
|
localRenderBounds(target) {
|
|
4919
|
-
|
|
4986
|
+
const {__: __, __layout: __layout} = target;
|
|
4987
|
+
return __.eraser || __.visible === 0 ? null : __layout.localOuterBounds || __layout.localRenderBounds;
|
|
4920
4988
|
},
|
|
4921
4989
|
maskLocalBoxBounds(target, index) {
|
|
4922
4990
|
return checkMask(target, index) && target.__localBoxBounds;
|
|
@@ -4925,7 +4993,8 @@ const LeafBoundsHelper = {
|
|
|
4925
4993
|
return checkMask(target, index) && target.__layout.localStrokeBounds;
|
|
4926
4994
|
},
|
|
4927
4995
|
maskLocalRenderBounds(target, index) {
|
|
4928
|
-
|
|
4996
|
+
const {__layout: __layout} = target;
|
|
4997
|
+
return checkMask(target, index) && (__layout.localOuterBounds || __layout.localRenderBounds);
|
|
4929
4998
|
},
|
|
4930
4999
|
excludeRenderBounds(child, options) {
|
|
4931
5000
|
if (options.bounds && !options.bounds.hit(child.__world, options.matrix)) return true;
|
|
@@ -5445,7 +5514,6 @@ class LeafLayout {
|
|
|
5445
5514
|
}
|
|
5446
5515
|
opacityChange() {
|
|
5447
5516
|
this.opacityChanged = true;
|
|
5448
|
-
this.surfaceChanged || this.surfaceChange();
|
|
5449
5517
|
}
|
|
5450
5518
|
childrenSortChange() {
|
|
5451
5519
|
if (!this.childrenSortChanged) {
|
|
@@ -5938,6 +6006,7 @@ const LeafMatrix = {
|
|
|
5938
6006
|
const {parent: parent, __layout: __layout, __world: __world, __scrollWorld: __scrollWorld, __: __} = this;
|
|
5939
6007
|
multiplyParent$2(this.__local || __layout, parent ? parent.__scrollWorld || parent.__world : defaultWorld, __world, !!__layout.affectScaleOrRotation, __);
|
|
5940
6008
|
if (__scrollWorld) translateInner(Object.assign(__scrollWorld, __world), __.scrollX, __.scrollY);
|
|
6009
|
+
if (__layout.scaleFixed) LeafHelper.updateScaleFixedWorld(this);
|
|
5941
6010
|
},
|
|
5942
6011
|
__updateLocalMatrix() {
|
|
5943
6012
|
if (this.__local) {
|
|
@@ -5971,6 +6040,7 @@ const LeafBounds = {
|
|
|
5971
6040
|
__updateWorldBounds() {
|
|
5972
6041
|
const {__layout: __layout, __world: __world} = this;
|
|
5973
6042
|
toOuterOf$2(__layout.renderBounds, __world, __world);
|
|
6043
|
+
if (this.__hasComplex) LeafHelper.checkComplex(this);
|
|
5974
6044
|
if (__layout.resized) {
|
|
5975
6045
|
if (__layout.resized === "inner") this.__onUpdateSize();
|
|
5976
6046
|
if (this.__hasLocalEvent) BoundsEvent.emitLocal(this);
|
|
@@ -6020,6 +6090,7 @@ const LeafBounds = {
|
|
|
6020
6090
|
layout.renderChanged = undefined;
|
|
6021
6091
|
if (this.parent) this.parent.__layout.renderChange();
|
|
6022
6092
|
}
|
|
6093
|
+
if (layout.outerScale) LeafHelper.updateOuterBounds(this);
|
|
6023
6094
|
layout.resized || (layout.resized = "local");
|
|
6024
6095
|
layout.boundsChanged = undefined;
|
|
6025
6096
|
},
|
|
@@ -6086,7 +6157,7 @@ const LeafRender = {
|
|
|
6086
6157
|
const data = this.__;
|
|
6087
6158
|
if (data.bright && !options.topRendering) return options.topList.add(this);
|
|
6088
6159
|
canvas.setWorld(this.__nowWorld = this.__getNowWorld(options));
|
|
6089
|
-
canvas.opacity = options.dimOpacity && !data.dimskip ? data.opacity * options.dimOpacity : data.opacity;
|
|
6160
|
+
canvas.opacity = options.ignoreOpacity ? 1 : options.dimOpacity && !data.dimskip ? data.opacity * options.dimOpacity : data.opacity;
|
|
6090
6161
|
if (this.__.__single) {
|
|
6091
6162
|
if (data.eraser === "path") return this.__renderEraser(canvas, options);
|
|
6092
6163
|
const tempCanvas = canvas.getSameCanvas(true, true);
|
|
@@ -6140,7 +6211,7 @@ const BranchRender = {
|
|
|
6140
6211
|
if (data.eraser === "path") return this.__renderEraser(canvas, options);
|
|
6141
6212
|
const tempCanvas = canvas.getSameCanvas(false, true);
|
|
6142
6213
|
this.__renderBranch(tempCanvas, options);
|
|
6143
|
-
canvas.opacity = options.dimOpacity ? data.opacity * options.dimOpacity : data.opacity;
|
|
6214
|
+
canvas.opacity = options.ignoreOpacity ? 1 : options.dimOpacity ? data.opacity * options.dimOpacity : data.opacity;
|
|
6144
6215
|
canvas.copyWorldByReset(tempCanvas, nowWorld, nowWorld, data.__blendMode, true);
|
|
6145
6216
|
tempCanvas.recycle(nowWorld);
|
|
6146
6217
|
} else {
|
|
@@ -6152,9 +6223,11 @@ const BranchRender = {
|
|
|
6152
6223
|
if (this.__hasMask) {
|
|
6153
6224
|
this.__renderMask(canvas, options);
|
|
6154
6225
|
} else {
|
|
6226
|
+
let child;
|
|
6155
6227
|
const {children: children} = this;
|
|
6156
6228
|
for (let i = 0, len = children.length; i < len; i++) {
|
|
6157
|
-
|
|
6229
|
+
child = children[i];
|
|
6230
|
+
excludeRenderBounds$1(child, options) || (child.__hasComplex ? LeafHelper.renderComplex(child, canvas, options) : child.__render(canvas, options));
|
|
6158
6231
|
}
|
|
6159
6232
|
}
|
|
6160
6233
|
},
|
|
@@ -6168,8 +6241,6 @@ const BranchRender = {
|
|
|
6168
6241
|
}
|
|
6169
6242
|
};
|
|
6170
6243
|
|
|
6171
|
-
const tempScaleData$1 = {};
|
|
6172
|
-
|
|
6173
6244
|
const {LEAF: LEAF, create: create} = IncrementId;
|
|
6174
6245
|
|
|
6175
6246
|
const {stintSet: stintSet$4} = DataHelper;
|
|
@@ -6180,6 +6251,8 @@ const {toOuterOf: toOuterOf$1} = BoundsHelper;
|
|
|
6180
6251
|
|
|
6181
6252
|
const {copy: copy$2, move: move$2} = PointHelper;
|
|
6182
6253
|
|
|
6254
|
+
const {getScaleFixedData: getScaleFixedData} = MathHelper;
|
|
6255
|
+
|
|
6183
6256
|
const {moveLocal: moveLocal, zoomOfLocal: zoomOfLocal, rotateOfLocal: rotateOfLocal, skewOfLocal: skewOfLocal, moveWorld: moveWorld, zoomOfWorld: zoomOfWorld, rotateOfWorld: rotateOfWorld, skewOfWorld: skewOfWorld, transform: transform, transformWorld: transformWorld, setTransform: setTransform, getFlipTransform: getFlipTransform, getLocalOrigin: getLocalOrigin, getRelativeWorld: getRelativeWorld, drop: drop} = LeafHelper;
|
|
6184
6257
|
|
|
6185
6258
|
let Leaf = class Leaf {
|
|
@@ -6338,6 +6411,7 @@ let Leaf = class Leaf {
|
|
|
6338
6411
|
this.__level = this.parent ? this.parent.__level + 1 : 1;
|
|
6339
6412
|
if (this.animation) this.__runAnimation("in");
|
|
6340
6413
|
if (this.__bubbleMap) this.__emitLifeEvent(ChildEvent.MOUNTED);
|
|
6414
|
+
if (leafer.cacheId) LeafHelper.cacheId(this);
|
|
6341
6415
|
} else {
|
|
6342
6416
|
this.__emitLifeEvent(ChildEvent.UNMOUNTED);
|
|
6343
6417
|
}
|
|
@@ -6467,13 +6541,8 @@ let Leaf = class Leaf {
|
|
|
6467
6541
|
if (scaleX < 0) scaleX = -scaleX;
|
|
6468
6542
|
return scaleX > 1 ? scaleX : 1;
|
|
6469
6543
|
}
|
|
6470
|
-
getRenderScaleData(abs, scaleFixed) {
|
|
6471
|
-
|
|
6472
|
-
if (abs) scaleX < 0 && (scaleX = -scaleX), scaleY < 0 && (scaleY = -scaleY);
|
|
6473
|
-
if (scaleFixed === true || scaleFixed === "zoom-in" && scaleX > 1 && scaleY > 1) scaleX = scaleY = 1;
|
|
6474
|
-
tempScaleData$1.scaleX = scaleX;
|
|
6475
|
-
tempScaleData$1.scaleY = scaleY;
|
|
6476
|
-
return tempScaleData$1;
|
|
6544
|
+
getRenderScaleData(abs, scaleFixed, unscale = true) {
|
|
6545
|
+
return getScaleFixedData(ImageManager.patternLocked ? this.__world : this.__nowWorld || this.__world, scaleFixed, unscale, abs);
|
|
6477
6546
|
}
|
|
6478
6547
|
getTransform(relative) {
|
|
6479
6548
|
return this.__layout.getTransform(relative || "local");
|
|
@@ -6645,7 +6714,7 @@ let Leaf = class Leaf {
|
|
|
6645
6714
|
__drawPath(_canvas) {}
|
|
6646
6715
|
__drawRenderPath(_canvas) {}
|
|
6647
6716
|
__updatePath() {}
|
|
6648
|
-
__updateRenderPath() {}
|
|
6717
|
+
__updateRenderPath(_updateCache) {}
|
|
6649
6718
|
getMotionPathData() {
|
|
6650
6719
|
return Plugin.need("path");
|
|
6651
6720
|
}
|
|
@@ -6719,9 +6788,11 @@ let Branch = class Branch extends Leaf {
|
|
|
6719
6788
|
return 0;
|
|
6720
6789
|
}
|
|
6721
6790
|
__updateRenderSpread() {
|
|
6791
|
+
let layout;
|
|
6722
6792
|
const {children: children} = this;
|
|
6723
6793
|
for (let i = 0, len = children.length; i < len; i++) {
|
|
6724
|
-
|
|
6794
|
+
layout = children[i].__layout;
|
|
6795
|
+
if (layout.renderSpread || layout.localOuterBounds) return 1;
|
|
6725
6796
|
}
|
|
6726
6797
|
return 0;
|
|
6727
6798
|
}
|
|
@@ -6754,6 +6825,7 @@ let Branch = class Branch extends Leaf {
|
|
|
6754
6825
|
this.add(item, index);
|
|
6755
6826
|
noIndex || index++;
|
|
6756
6827
|
}); else child = UICreator.get(child.tag, child);
|
|
6828
|
+
if (!child) return;
|
|
6757
6829
|
}
|
|
6758
6830
|
if (child.parent) child.parent.remove(child);
|
|
6759
6831
|
child.parent = this;
|
|
@@ -6979,7 +7051,7 @@ class LeafLevelList {
|
|
|
6979
7051
|
}
|
|
6980
7052
|
}
|
|
6981
7053
|
|
|
6982
|
-
const version = "2.0.
|
|
7054
|
+
const version = "2.0.3";
|
|
6983
7055
|
|
|
6984
7056
|
class LeaferCanvas extends LeaferCanvasBase {
|
|
6985
7057
|
get allowBackgroundColor() {
|
|
@@ -7005,8 +7077,6 @@ canvasPatch(OffscreenCanvasRenderingContext2D.prototype);
|
|
|
7005
7077
|
|
|
7006
7078
|
canvasPatch(Path2D.prototype);
|
|
7007
7079
|
|
|
7008
|
-
const {mineType: mineType} = FileHelper;
|
|
7009
|
-
|
|
7010
7080
|
Object.assign(Creator, {
|
|
7011
7081
|
canvas: (options, manager) => new LeaferCanvas(options, manager),
|
|
7012
7082
|
image: options => new LeaferImage(options)
|
|
@@ -7017,7 +7087,7 @@ function useCanvas(_canvasType, _power) {
|
|
|
7017
7087
|
createCanvas: (width, height) => new OffscreenCanvas(width, height),
|
|
7018
7088
|
canvasToDataURL: (canvas, type, quality) => new Promise((resolve, reject) => {
|
|
7019
7089
|
canvas.convertToBlob({
|
|
7020
|
-
type:
|
|
7090
|
+
type: FileHelper.mimeType(type),
|
|
7021
7091
|
quality: quality
|
|
7022
7092
|
}).then(blob => {
|
|
7023
7093
|
var reader = new FileReader;
|
|
@@ -7029,14 +7099,14 @@ function useCanvas(_canvasType, _power) {
|
|
|
7029
7099
|
});
|
|
7030
7100
|
}),
|
|
7031
7101
|
canvasToBolb: (canvas, type, quality) => canvas.convertToBlob({
|
|
7032
|
-
type:
|
|
7102
|
+
type: FileHelper.mimeType(type),
|
|
7033
7103
|
quality: quality
|
|
7034
7104
|
}),
|
|
7035
7105
|
canvasSaveAs: (_canvas, _filename, _quality) => new Promise(resolve => resolve()),
|
|
7036
7106
|
download(_url, _filename) {
|
|
7037
7107
|
return undefined;
|
|
7038
7108
|
},
|
|
7039
|
-
loadImage(src) {
|
|
7109
|
+
loadImage(src, _crossOrigin, _leaferImage) {
|
|
7040
7110
|
return new Promise((resolve, reject) => {
|
|
7041
7111
|
let req = new XMLHttpRequest;
|
|
7042
7112
|
req.open("GET", Platform.image.getRealURL(src), true);
|
|
@@ -7051,6 +7121,13 @@ function useCanvas(_canvasType, _power) {
|
|
|
7051
7121
|
req.onerror = e => reject(e);
|
|
7052
7122
|
req.send();
|
|
7053
7123
|
});
|
|
7124
|
+
},
|
|
7125
|
+
loadContent(url_1) {
|
|
7126
|
+
return __awaiter(this, arguments, void 0, function*(url, responseType = "text") {
|
|
7127
|
+
const response = yield fetch(url);
|
|
7128
|
+
if (!response.ok) throw new Error(`${response.status}`);
|
|
7129
|
+
return yield response[responseType]();
|
|
7130
|
+
});
|
|
7054
7131
|
}
|
|
7055
7132
|
};
|
|
7056
7133
|
Platform.canvas = Creator.canvas();
|
|
@@ -7550,7 +7627,7 @@ class Renderer {
|
|
|
7550
7627
|
getCellList() {
|
|
7551
7628
|
return undefined;
|
|
7552
7629
|
}
|
|
7553
|
-
addBlock(block) {
|
|
7630
|
+
addBlock(block, _leafList) {
|
|
7554
7631
|
if (!this.updateBlocks) this.updateBlocks = [];
|
|
7555
7632
|
this.updateBlocks.push(block);
|
|
7556
7633
|
}
|
|
@@ -7598,7 +7675,8 @@ class Renderer {
|
|
|
7598
7675
|
__onLayoutEnd(event) {
|
|
7599
7676
|
if (event.data) event.data.map(item => {
|
|
7600
7677
|
let empty;
|
|
7601
|
-
|
|
7678
|
+
const {updatedList: updatedList} = item;
|
|
7679
|
+
if (updatedList) updatedList.list.some(leaf => {
|
|
7602
7680
|
empty = !leaf.__world.width || !leaf.__world.height;
|
|
7603
7681
|
if (empty) {
|
|
7604
7682
|
if (!leaf.isLeafer) debug$2.tip(leaf.innerName, ": empty");
|
|
@@ -7606,7 +7684,7 @@ class Renderer {
|
|
|
7606
7684
|
}
|
|
7607
7685
|
return empty;
|
|
7608
7686
|
});
|
|
7609
|
-
this.addBlock(empty ? this.canvas.bounds : item.updatedBounds);
|
|
7687
|
+
this.addBlock(empty ? this.canvas.bounds : item.updatedBounds, updatedList);
|
|
7610
7688
|
});
|
|
7611
7689
|
}
|
|
7612
7690
|
emitRender(type, bounds, options) {
|
|
@@ -7654,7 +7732,9 @@ function effectType(defaultValue) {
|
|
|
7654
7732
|
set(value) {
|
|
7655
7733
|
this.__setAttr(key, value);
|
|
7656
7734
|
if (value) this.__.__useEffect = true;
|
|
7657
|
-
|
|
7735
|
+
const layout = this.__layout;
|
|
7736
|
+
layout.renderChanged || layout.renderChange();
|
|
7737
|
+
layout.surfaceChange();
|
|
7658
7738
|
}
|
|
7659
7739
|
}));
|
|
7660
7740
|
}
|
|
@@ -7868,15 +7948,16 @@ class UIData extends LeafData {
|
|
|
7868
7948
|
this.__needComputePaint = undefined;
|
|
7869
7949
|
}
|
|
7870
7950
|
__getRealStrokeWidth(childStyle) {
|
|
7871
|
-
let {strokeWidth: strokeWidth,
|
|
7951
|
+
let {strokeWidth: strokeWidth, strokeScaleFixed: strokeScaleFixed} = this;
|
|
7872
7952
|
if (childStyle) {
|
|
7873
7953
|
if (childStyle.strokeWidth) strokeWidth = childStyle.strokeWidth;
|
|
7874
|
-
if (!isUndefined(childStyle.
|
|
7954
|
+
if (!isUndefined(childStyle.strokeScaleFixed)) strokeScaleFixed = childStyle.strokeScaleFixed;
|
|
7875
7955
|
}
|
|
7876
|
-
if (
|
|
7877
|
-
const
|
|
7878
|
-
|
|
7879
|
-
}
|
|
7956
|
+
if (strokeScaleFixed) {
|
|
7957
|
+
const {scaleX: scaleX} = this.__leaf.getRenderScaleData(true, strokeScaleFixed, false);
|
|
7958
|
+
if (scaleX !== 1) return strokeWidth * scaleX;
|
|
7959
|
+
}
|
|
7960
|
+
return strokeWidth;
|
|
7880
7961
|
}
|
|
7881
7962
|
__setPaint(attrName, value) {
|
|
7882
7963
|
this.__setInput(attrName, value);
|
|
@@ -8014,13 +8095,16 @@ class TextData extends UIData {
|
|
|
8014
8095
|
}
|
|
8015
8096
|
|
|
8016
8097
|
class ImageData extends RectData {
|
|
8098
|
+
get __urlType() {
|
|
8099
|
+
return "image";
|
|
8100
|
+
}
|
|
8017
8101
|
setUrl(value) {
|
|
8018
8102
|
this.__setImageFill(value);
|
|
8019
8103
|
this._url = value;
|
|
8020
8104
|
}
|
|
8021
8105
|
__setImageFill(value) {
|
|
8022
8106
|
this.fill = value ? {
|
|
8023
|
-
type:
|
|
8107
|
+
type: this.__urlType,
|
|
8024
8108
|
mode: "stretch",
|
|
8025
8109
|
url: value
|
|
8026
8110
|
} : undefined;
|
|
@@ -8059,7 +8143,7 @@ const UIBounds = {
|
|
|
8059
8143
|
const data = this.__, {strokeAlign: strokeAlign, __maxStrokeWidth: strokeWidth} = data, box = this.__box;
|
|
8060
8144
|
if ((data.stroke || data.hitStroke === "all") && strokeWidth && strokeAlign !== "inside") {
|
|
8061
8145
|
boxSpread = spread = strokeAlign === "center" ? strokeWidth / 2 : strokeWidth;
|
|
8062
|
-
if (!data.__boxStroke) {
|
|
8146
|
+
if (!data.__boxStroke || data.__useArrow) {
|
|
8063
8147
|
const miterLimitAddWidth = data.__isLinePath ? 0 : 10 * spread;
|
|
8064
8148
|
const storkeCapAddWidth = data.strokeCap === "none" ? 0 : strokeWidth;
|
|
8065
8149
|
spread += Math.max(miterLimitAddWidth, storkeCapAddWidth);
|
|
@@ -8216,6 +8300,12 @@ let UI = UI_1 = class UI extends Leaf {
|
|
|
8216
8300
|
get isFrame() {
|
|
8217
8301
|
return false;
|
|
8218
8302
|
}
|
|
8303
|
+
set strokeWidthFixed(value) {
|
|
8304
|
+
this.strokeScaleFixed = value;
|
|
8305
|
+
}
|
|
8306
|
+
get strokeWidthFixed() {
|
|
8307
|
+
return this.strokeScaleFixed;
|
|
8308
|
+
}
|
|
8219
8309
|
set scale(value) {
|
|
8220
8310
|
MathHelper.assignScale(this, value);
|
|
8221
8311
|
}
|
|
@@ -8271,6 +8361,9 @@ let UI = UI_1 = class UI extends Leaf {
|
|
|
8271
8361
|
getPathString(curve, pathForRender, floatLength) {
|
|
8272
8362
|
return PathConvert.stringify(this.getPath(curve, pathForRender), floatLength);
|
|
8273
8363
|
}
|
|
8364
|
+
asPath(curve, pathForRender) {
|
|
8365
|
+
this.path = this.getPath(curve, pathForRender);
|
|
8366
|
+
}
|
|
8274
8367
|
load() {
|
|
8275
8368
|
this.__.__computePaint();
|
|
8276
8369
|
}
|
|
@@ -8280,16 +8373,18 @@ let UI = UI_1 = class UI extends Leaf {
|
|
|
8280
8373
|
data.lazy && !this.__inLazyBounds && !Export.running ? data.__needComputePaint = true : data.__computePaint();
|
|
8281
8374
|
}
|
|
8282
8375
|
}
|
|
8283
|
-
__updateRenderPath() {
|
|
8376
|
+
__updateRenderPath(updateCache) {
|
|
8284
8377
|
const data = this.__;
|
|
8285
8378
|
if (data.path) {
|
|
8286
8379
|
data.__pathForRender = data.cornerRadius ? PathCorner.smooth(data.path, data.cornerRadius, data.cornerSmoothing) : data.path;
|
|
8287
|
-
if (data.__useArrow) PathArrow.addArrows(this);
|
|
8380
|
+
if (data.__useArrow) PathArrow.addArrows(this, updateCache);
|
|
8288
8381
|
} else data.__pathForRender && (data.__pathForRender = undefined);
|
|
8289
8382
|
}
|
|
8290
8383
|
__drawRenderPath(canvas) {
|
|
8384
|
+
const data = this.__;
|
|
8291
8385
|
canvas.beginPath();
|
|
8292
|
-
|
|
8386
|
+
if (data.__useArrow) PathArrow.updateArrow(this);
|
|
8387
|
+
this.__drawPathByData(canvas, data.__pathForRender);
|
|
8293
8388
|
}
|
|
8294
8389
|
__drawPath(canvas) {
|
|
8295
8390
|
canvas.beginPath();
|
|
@@ -8338,6 +8433,7 @@ let UI = UI_1 = class UI extends Leaf {
|
|
|
8338
8433
|
static setEditOuter(_toolName) {}
|
|
8339
8434
|
static setEditInner(_editorName) {}
|
|
8340
8435
|
destroy() {
|
|
8436
|
+
this.__.__willDestroy = true;
|
|
8341
8437
|
this.fill = this.stroke = null;
|
|
8342
8438
|
if (this.__animate) this.killAnimate();
|
|
8343
8439
|
super.destroy();
|
|
@@ -8454,7 +8550,7 @@ __decorate([ strokeType("inside") ], UI.prototype, "strokeAlign", void 0);
|
|
|
8454
8550
|
|
|
8455
8551
|
__decorate([ strokeType(1, true) ], UI.prototype, "strokeWidth", void 0);
|
|
8456
8552
|
|
|
8457
|
-
__decorate([ strokeType(false) ], UI.prototype, "
|
|
8553
|
+
__decorate([ strokeType(false) ], UI.prototype, "strokeScaleFixed", void 0);
|
|
8458
8554
|
|
|
8459
8555
|
__decorate([ strokeType("none") ], UI.prototype, "strokeCap", void 0);
|
|
8460
8556
|
|
|
@@ -8520,7 +8616,10 @@ let Group = class Group extends UI {
|
|
|
8520
8616
|
}
|
|
8521
8617
|
toJSON(options) {
|
|
8522
8618
|
const data = super.toJSON(options);
|
|
8523
|
-
if (!this.childlessJSON)
|
|
8619
|
+
if (!this.childlessJSON) {
|
|
8620
|
+
const children = data.children = [];
|
|
8621
|
+
this.children.forEach(child => child.skipJSON || children.push(child.toJSON(options)));
|
|
8622
|
+
}
|
|
8524
8623
|
return data;
|
|
8525
8624
|
}
|
|
8526
8625
|
pick(_hitPoint, _options) {
|
|
@@ -8669,12 +8768,12 @@ let Leafer = Leafer_1 = class Leafer extends Group {
|
|
|
8669
8768
|
this.emitLeafer(LeaferEvent.STOP);
|
|
8670
8769
|
}
|
|
8671
8770
|
}
|
|
8672
|
-
unlockLayout() {
|
|
8771
|
+
unlockLayout(updateLayout = true) {
|
|
8673
8772
|
this.layouter.start();
|
|
8674
|
-
this.updateLayout();
|
|
8773
|
+
if (updateLayout) this.updateLayout();
|
|
8675
8774
|
}
|
|
8676
|
-
lockLayout() {
|
|
8677
|
-
this.updateLayout();
|
|
8775
|
+
lockLayout(updateLayout = true) {
|
|
8776
|
+
if (updateLayout) this.updateLayout();
|
|
8678
8777
|
this.layouter.stop();
|
|
8679
8778
|
}
|
|
8680
8779
|
resize(size) {
|
|
@@ -9083,9 +9182,9 @@ let Ellipse = class Ellipse extends UI {
|
|
|
9083
9182
|
return "Ellipse";
|
|
9084
9183
|
}
|
|
9085
9184
|
__updatePath() {
|
|
9086
|
-
const {width: width, height: height, innerRadius: innerRadius, startAngle: startAngle, endAngle: endAngle} =
|
|
9185
|
+
const data = this.__, {width: width, height: height, innerRadius: innerRadius, startAngle: startAngle, endAngle: endAngle} = data;
|
|
9087
9186
|
const rx = width / 2, ry = height / 2;
|
|
9088
|
-
const path =
|
|
9187
|
+
const path = data.path = [];
|
|
9089
9188
|
let open;
|
|
9090
9189
|
if (innerRadius) {
|
|
9091
9190
|
if (startAngle || endAngle) {
|
|
@@ -9107,7 +9206,7 @@ let Ellipse = class Ellipse extends UI {
|
|
|
9107
9206
|
}
|
|
9108
9207
|
}
|
|
9109
9208
|
if (!open) closePath$2(path);
|
|
9110
|
-
if (Platform.ellipseToCurve)
|
|
9209
|
+
if (Platform.ellipseToCurve || data.__useArrow) data.path = this.getPath(true);
|
|
9111
9210
|
}
|
|
9112
9211
|
};
|
|
9113
9212
|
|
|
@@ -9582,8 +9681,8 @@ function fills(fills, ui, canvas, renderOptions) {
|
|
|
9582
9681
|
canvas.save();
|
|
9583
9682
|
if (item.transform) canvas.transform(item.transform);
|
|
9584
9683
|
if (originPaint.scaleFixed) {
|
|
9585
|
-
const {scaleX: scaleX, scaleY: scaleY} = ui.getRenderScaleData(true);
|
|
9586
|
-
if (
|
|
9684
|
+
const {scaleX: scaleX, scaleY: scaleY} = ui.getRenderScaleData(true, originPaint.scaleFixed, false);
|
|
9685
|
+
if (scaleX !== 1) canvas.scale(scaleX, scaleY);
|
|
9587
9686
|
}
|
|
9588
9687
|
if (originPaint.blendMode) canvas.blendMode = originPaint.blendMode;
|
|
9589
9688
|
fillPathOrText(ui, canvas, renderOptions);
|
|
@@ -9857,11 +9956,14 @@ function compute(attrName, ui) {
|
|
|
9857
9956
|
function getLeafPaint(attrName, paint, ui) {
|
|
9858
9957
|
if (!isObject(paint) || paint.visible === false || paint.opacity === 0) return undefined;
|
|
9859
9958
|
let leafPaint;
|
|
9860
|
-
const {boxBounds: boxBounds} = ui.__layout;
|
|
9861
|
-
switch (
|
|
9959
|
+
const {boxBounds: boxBounds} = ui.__layout, {type: type} = paint;
|
|
9960
|
+
switch (type) {
|
|
9862
9961
|
case "image":
|
|
9962
|
+
case "film":
|
|
9963
|
+
case "video":
|
|
9863
9964
|
if (!paint.url) return undefined;
|
|
9864
9965
|
leafPaint = PaintImage.image(ui, attrName, paint, boxBounds, !recycleMap || !recycleMap[paint.url]);
|
|
9966
|
+
if (type !== "image") PaintImage[type](leafPaint);
|
|
9865
9967
|
break;
|
|
9866
9968
|
|
|
9867
9969
|
case "linear":
|
|
@@ -9877,7 +9979,7 @@ function getLeafPaint(attrName, paint, ui) {
|
|
|
9877
9979
|
break;
|
|
9878
9980
|
|
|
9879
9981
|
case "solid":
|
|
9880
|
-
const {
|
|
9982
|
+
const {color: color, opacity: opacity} = paint;
|
|
9881
9983
|
leafPaint = {
|
|
9882
9984
|
type: type,
|
|
9883
9985
|
style: ColorConvert.string(color, opacity)
|
|
@@ -9921,7 +10023,7 @@ const {isSame: isSame} = BoundsHelper;
|
|
|
9921
10023
|
|
|
9922
10024
|
function image(ui, attrName, paint, boxBounds, firstUse) {
|
|
9923
10025
|
let leafPaint, event;
|
|
9924
|
-
const image = ImageManager.get(paint);
|
|
10026
|
+
const image = ImageManager.get(paint, paint.type);
|
|
9925
10027
|
if (cache && paint === cache.paint && isSame(boxBounds, cache.boxBounds)) {
|
|
9926
10028
|
leafPaint = cache.leafPaint;
|
|
9927
10029
|
} else {
|
|
@@ -9982,8 +10084,8 @@ function image(ui, attrName, paint, boxBounds, firstUse) {
|
|
|
9982
10084
|
}
|
|
9983
10085
|
|
|
9984
10086
|
function checkSizeAndCreateData(ui, attrName, paint, image, leafPaint, boxBounds) {
|
|
9985
|
-
|
|
9986
|
-
|
|
10087
|
+
const data = ui.__;
|
|
10088
|
+
if (attrName === "fill" && !data.__naturalWidth) {
|
|
9987
10089
|
data.__naturalWidth = image.width / data.pixelRatio;
|
|
9988
10090
|
data.__naturalHeight = image.height / data.pixelRatio;
|
|
9989
10091
|
if (data.__autoSide) {
|
|
@@ -9995,7 +10097,13 @@ function checkSizeAndCreateData(ui, attrName, paint, image, leafPaint, boxBounds
|
|
|
9995
10097
|
return false;
|
|
9996
10098
|
}
|
|
9997
10099
|
}
|
|
9998
|
-
if (!leafPaint.data)
|
|
10100
|
+
if (!leafPaint.data) {
|
|
10101
|
+
PaintImage.createData(leafPaint, image, paint, boxBounds);
|
|
10102
|
+
const {transform: transform} = leafPaint.data, {opacity: opacity, blendMode: blendMode} = paint;
|
|
10103
|
+
const clip = transform && !transform.onlyScale || data.path || data.cornerRadius;
|
|
10104
|
+
if (clip || opacity && opacity < 1 || blendMode) leafPaint.complex = clip ? 2 : true;
|
|
10105
|
+
}
|
|
10106
|
+
if (paint.filter) PaintImage.applyFilter(leafPaint, image, paint.filter, ui);
|
|
9999
10107
|
return true;
|
|
10000
10108
|
}
|
|
10001
10109
|
|
|
@@ -10038,7 +10146,7 @@ function getPatternData(paint, box, image) {
|
|
|
10038
10146
|
if (paint.padding) box = tempBox.set(box).shrink(paint.padding);
|
|
10039
10147
|
if (paint.mode === "strench") paint.mode = "stretch";
|
|
10040
10148
|
const {width: width, height: height} = image;
|
|
10041
|
-
const {
|
|
10149
|
+
const {mode: mode, align: align, offset: offset, scale: scale, size: size, rotation: rotation, skew: skew, clipSize: clipSize, repeat: repeat, gap: gap, interlace: interlace} = paint;
|
|
10042
10150
|
const sameBox = box.width === width && box.height === height;
|
|
10043
10151
|
const data = {
|
|
10044
10152
|
mode: mode
|
|
@@ -10101,8 +10209,6 @@ function getPatternData(paint, box, image) {
|
|
|
10101
10209
|
data.scaleX = scaleX;
|
|
10102
10210
|
data.scaleY = scaleY;
|
|
10103
10211
|
}
|
|
10104
|
-
if (opacity && opacity < 1) data.opacity = opacity;
|
|
10105
|
-
if (filters) data.filters = filters;
|
|
10106
10212
|
if (repeat) data.repeat = isString(repeat) ? repeat === "x" ? "repeat-x" : "repeat-y" : "repeat";
|
|
10107
10213
|
if (interlace) data.interlace = isNumber(interlace) || interlace.type === "percent" ? {
|
|
10108
10214
|
type: "x",
|
|
@@ -10133,7 +10239,7 @@ const {get: get$2, set: set, rotateOfOuter: rotateOfOuter$1, translate: translat
|
|
|
10133
10239
|
|
|
10134
10240
|
function stretchMode(data, box, scaleX, scaleY) {
|
|
10135
10241
|
const transform = get$2(), {x: x, y: y} = box;
|
|
10136
|
-
if (x || y) translate(transform, x, y); else transform.onlyScale = true;
|
|
10242
|
+
if (x || y) translate(transform, x, y); else if (scaleX > 0 && scaleY > 0) transform.onlyScale = true;
|
|
10137
10243
|
scaleHelper(transform, scaleX, scaleY);
|
|
10138
10244
|
data.transform = transform;
|
|
10139
10245
|
}
|
|
@@ -10222,10 +10328,10 @@ function createPatternTask(paint, ui, canvas, renderOptions) {
|
|
|
10222
10328
|
}
|
|
10223
10329
|
|
|
10224
10330
|
function createPattern(paint, ui, canvas, renderOptions) {
|
|
10225
|
-
let {scaleX: scaleX, scaleY: scaleY} = PaintImage.getImageRenderScaleData(paint, ui, canvas, renderOptions), id = scaleX + "-" + scaleY;
|
|
10331
|
+
let {scaleX: scaleX, scaleY: scaleY} = PaintImage.getImageRenderScaleData(paint, ui, canvas, renderOptions), id = paint.film ? paint.nowIndex : scaleX + "-" + scaleY;
|
|
10226
10332
|
if (paint.patternId !== id && !ui.destroyed) {
|
|
10227
10333
|
if (!(Platform.image.isLarge(paint.image, scaleX, scaleY) && !paint.data.repeat)) {
|
|
10228
|
-
const {image: image, data: data} = paint, {transform: transform, gap: gap} = data, fixScale = PaintImage.getPatternFixScale(paint, scaleX, scaleY);
|
|
10334
|
+
const {image: image, data: data} = paint, {opacity: opacity} = paint.originPaint, {transform: transform, gap: gap} = data, fixScale = PaintImage.getPatternFixScale(paint, scaleX, scaleY);
|
|
10229
10335
|
let imageMatrix, xGap, yGap, {width: width, height: height} = image;
|
|
10230
10336
|
if (fixScale) scaleX *= fixScale, scaleY *= fixScale;
|
|
10231
10337
|
width *= scaleX;
|
|
@@ -10241,7 +10347,7 @@ function createPattern(paint, ui, canvas, renderOptions) {
|
|
|
10241
10347
|
if (transform) copy$1(imageMatrix, transform);
|
|
10242
10348
|
scale(imageMatrix, 1 / scaleX, 1 / scaleY);
|
|
10243
10349
|
}
|
|
10244
|
-
const imageCanvas = image.getCanvas(width, height,
|
|
10350
|
+
const imageCanvas = image.getCanvas(width, height, opacity, undefined, xGap, yGap, ui.leafer && ui.leafer.config.smooth, data.interlace);
|
|
10245
10351
|
const pattern = image.getPattern(imageCanvas, data.repeat || (Platform.origin.noRepeat || "no-repeat"), imageMatrix, paint);
|
|
10246
10352
|
paint.style = pattern;
|
|
10247
10353
|
paint.patternId = id;
|
|
@@ -10262,15 +10368,15 @@ function getPatternFixScale(paint, imageScaleX, imageScaleY) {
|
|
|
10262
10368
|
}
|
|
10263
10369
|
|
|
10264
10370
|
function checkImage(paint, drawImage, ui, canvas, renderOptions) {
|
|
10265
|
-
const {scaleX: scaleX, scaleY: scaleY} = PaintImage.getImageRenderScaleData(paint, ui, canvas, renderOptions);
|
|
10371
|
+
const {scaleX: scaleX, scaleY: scaleY} = PaintImage.getImageRenderScaleData(paint, ui, canvas, renderOptions), id = paint.film ? paint.nowIndex : scaleX + "-" + scaleY;
|
|
10266
10372
|
const {image: image, data: data, originPaint: originPaint} = paint, {exporting: exporting, snapshot: snapshot} = renderOptions;
|
|
10267
|
-
if (!data || paint.patternId ===
|
|
10373
|
+
if (!data || paint.patternId === id && !exporting || snapshot) {
|
|
10268
10374
|
return false;
|
|
10269
10375
|
} else {
|
|
10270
10376
|
if (drawImage) {
|
|
10271
10377
|
if (data.repeat) {
|
|
10272
10378
|
drawImage = false;
|
|
10273
|
-
} else if (!(originPaint.changeful || Platform.name === "miniapp" && ResizeEvent.isResizing(ui) || exporting)) {
|
|
10379
|
+
} else if (!(originPaint.changeful || paint.film || Platform.name === "miniapp" && ResizeEvent.isResizing(ui) || exporting)) {
|
|
10274
10380
|
drawImage = Platform.image.isLarge(image, scaleX, scaleY) || image.width * scaleX > 8096 || image.height * scaleY > 8096;
|
|
10275
10381
|
}
|
|
10276
10382
|
}
|
|
@@ -10288,20 +10394,21 @@ function checkImage(paint, drawImage, ui, canvas, renderOptions) {
|
|
|
10288
10394
|
}
|
|
10289
10395
|
}
|
|
10290
10396
|
|
|
10291
|
-
function drawImage(paint,
|
|
10292
|
-
const {data: data, image: image
|
|
10293
|
-
let {width: width, height: height} = image
|
|
10294
|
-
if (
|
|
10397
|
+
function drawImage(paint, imageScaleX, imageScaleY, ui, canvas, _renderOptions) {
|
|
10398
|
+
const {data: data, image: image, complex: complex} = paint;
|
|
10399
|
+
let {width: width, height: height} = image;
|
|
10400
|
+
if (complex) {
|
|
10401
|
+
const {blendMode: blendMode, opacity: opacity} = paint.originPaint, {transform: transform} = data;
|
|
10295
10402
|
canvas.save();
|
|
10296
|
-
|
|
10403
|
+
complex === 2 && canvas.clipUI(ui);
|
|
10297
10404
|
blendMode && (canvas.blendMode = blendMode);
|
|
10298
10405
|
opacity && (canvas.opacity *= opacity);
|
|
10299
10406
|
transform && canvas.transform(transform);
|
|
10300
|
-
|
|
10407
|
+
image.render(canvas, 0, 0, width, height, ui, paint, imageScaleX, imageScaleY);
|
|
10301
10408
|
canvas.restore();
|
|
10302
10409
|
} else {
|
|
10303
10410
|
if (data.scaleX) width *= data.scaleX, height *= data.scaleY;
|
|
10304
|
-
|
|
10411
|
+
image.render(canvas, 0, 0, width, height, ui, paint, imageScaleX, imageScaleY);
|
|
10305
10412
|
}
|
|
10306
10413
|
}
|
|
10307
10414
|
|
|
@@ -10331,6 +10438,7 @@ function recycleImage(attrName, data) {
|
|
|
10331
10438
|
if (!recycleMap) recycleMap = {};
|
|
10332
10439
|
recycleMap[url] = true;
|
|
10333
10440
|
ImageManager.recyclePaint(paint);
|
|
10441
|
+
if (data.__willDestroy && image.parent) PaintImage.recycleFilter(image, data.__leaf);
|
|
10334
10442
|
if (image.loading) {
|
|
10335
10443
|
if (!input) {
|
|
10336
10444
|
input = data.__input && data.__input[attrName] || [];
|
|
@@ -11240,4 +11348,4 @@ Object.assign(Effect, EffectModule);
|
|
|
11240
11348
|
|
|
11241
11349
|
useCanvas();
|
|
11242
11350
|
|
|
11243
|
-
export { AlignHelper, Answer, AroundHelper, AutoBounds, BezierHelper, Bounds, BoundsEvent, BoundsHelper, Box, BoxData, Branch, BranchHelper, BranchRender, Canvas, CanvasData, CanvasManager, ChildEvent, ColorConvert, Creator, DataHelper, Debug, Direction4, Direction9, Effect, Ellipse, EllipseData, EllipseHelper, Event, EventCreator, Eventer, Export, FileHelper, Filter, FourNumberHelper, Frame, FrameData, Group, GroupData, Image, ImageData, ImageEvent, ImageManager, IncrementId, LayoutEvent, Layouter, Leaf, LeafBounds, LeafBoundsHelper, LeafData, LeafDataProxy, LeafEventer, LeafHelper, LeafLayout, LeafLevelList, LeafList, LeafMatrix, LeafRender, Leafer, LeaferCanvas, LeaferCanvasBase, LeaferData, LeaferEvent, LeaferImage, Line, LineData, MathHelper, Matrix, MatrixHelper, MyImage, NeedConvertToCanvasCommandMap, OneRadian, PI2, PI_2, Paint, PaintGradient, PaintImage, Path, PathArrow, PathBounds, PathCommandDataHelper, PathCommandMap, PathCommandNodeHelper, PathConvert, PathCorner, PathCreator, PathData, PathDrawer, PathHelper, PathNodeHandleType, PathNumberCommandLengthMap, PathNumberCommandMap, Pen, PenData, Platform, Plugin, Point, PointHelper, Polygon, PolygonData, PropertyEvent, Rect, RectData, RectHelper, RectRender, RenderEvent, Renderer, ResizeEvent, Resource, Run, Star, StarData, State, StringNumberMap, TaskItem, TaskProcessor, Text, TextConvert, TextData, Transition, TwoPointBoundsHelper, UI, UIBounds, UICreator, UIData, UIRender, UnitConvert, UnitConvertHelper, WaitHelper, WatchEvent, Watcher, affectRenderBoundsType, affectStrokeBoundsType, 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, isNull, isNumber, isObject, isString, isUndefined, layoutProcessor, leaferTransformAttrMap, maskType, naturalBoundsType, opacityType, path, pathInputType, pathType, pen, positionType, registerUI, registerUIEvent, resizeType, rewrite, rewriteAble, rotationType, scaleType, scrollType, sortType, strokeType, surfaceType, tempBounds$2 as tempBounds, tempMatrix$2 as tempMatrix, tempPoint$2 as tempPoint, tryToNumber, useCanvas, useModule, version, visibleType, zoomLayerType };
|
|
11351
|
+
export { AlignHelper, Answer, AroundHelper, AutoBounds, BezierHelper, Bounds, BoundsEvent, BoundsHelper, Box, BoxData, Branch, BranchHelper, BranchRender, Canvas, CanvasData, CanvasManager, ChildEvent, ColorConvert, Creator, DataHelper, Debug, Direction4, Direction9, Effect, Ellipse, EllipseData, EllipseHelper, Event, EventCreator, Eventer, Export, FileHelper, Filter, FourNumberHelper, Frame, FrameData, Group, GroupData, Image, ImageData, ImageEvent, ImageManager, IncrementId, LayoutEvent, Layouter, Leaf, LeafBounds, LeafBoundsHelper, LeafData, LeafDataProxy, LeafEventer, LeafHelper, LeafLayout, LeafLevelList, LeafList, LeafMatrix, LeafRender, Leafer, LeaferCanvas, LeaferCanvasBase, LeaferData, LeaferEvent, LeaferFilm, LeaferImage, LeaferVideo, Line, LineData, MathHelper, Matrix, MatrixHelper, MyImage, NeedConvertToCanvasCommandMap, OneRadian, PI2, PI_2, Paint, PaintGradient, PaintImage, Path, PathArrow, PathBounds, PathCommandDataHelper, PathCommandMap, PathCommandNodeHelper, PathConvert, PathCorner, PathCreator, PathData, PathDrawer, PathHelper, PathNodeHandleType, PathNumberCommandLengthMap, PathNumberCommandMap, Pen, PenData, Platform, Plugin, Point, PointHelper, Polygon, PolygonData, PropertyEvent, Rect, RectData, RectHelper, RectRender, RenderEvent, Renderer, ResizeEvent, Resource, Run, Star, StarData, State, StringNumberMap, TaskItem, TaskProcessor, Text, TextConvert, TextData, Transition, TwoPointBoundsHelper, UI, UIBounds, UICreator, UIData, UIRender, UnitConvert, UnitConvertHelper, WaitHelper, WatchEvent, Watcher, affectRenderBoundsType, affectStrokeBoundsType, 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, isNull, isNumber, isObject, isString, isUndefined, layoutProcessor, leaferTransformAttrMap, maskType, naturalBoundsType, opacityType, path, pathInputType, pathType, pen, positionType, registerUI, registerUIEvent, resizeType, rewrite, rewriteAble, rotationType, scaleType, scrollType, sortType, strokeType, surfaceType, tempBounds$2 as tempBounds, tempMatrix$2 as tempMatrix, tempPoint$2 as tempPoint, tryToNumber, useCanvas, useModule, version, visibleType, zoomLayerType };
|