leafer-ui 1.5.3 → 1.6.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/README.md +1 -1
- package/dist/web.cjs +68 -71
- package/dist/web.cjs.map +1 -1
- package/dist/web.esm.js +68 -71
- package/dist/web.esm.js.map +1 -1
- package/dist/web.esm.min.js +1 -1
- package/dist/web.esm.min.js.map +1 -1
- package/dist/web.js +303 -192
- package/dist/web.js.map +1 -1
- package/dist/web.min.cjs +1 -1
- package/dist/web.min.cjs.map +1 -1
- package/dist/web.min.js +1 -1
- package/dist/web.min.js.map +1 -1
- package/dist/web.module.js +303 -192
- package/dist/web.module.js.map +1 -1
- package/dist/web.module.min.js +1 -1
- package/dist/web.module.min.js.map +1 -1
- package/package.json +11 -12
package/dist/web.module.js
CHANGED
|
@@ -45,7 +45,7 @@ const IncrementId = {
|
|
|
45
45
|
};
|
|
46
46
|
const I$2 = IncrementId;
|
|
47
47
|
|
|
48
|
-
const { round, pow: pow$1, PI: PI$4 } = Math;
|
|
48
|
+
const { round: round$3, pow: pow$1, PI: PI$4 } = Math;
|
|
49
49
|
const MathHelper = {
|
|
50
50
|
within(value, min, max) {
|
|
51
51
|
if (typeof min === 'object')
|
|
@@ -109,7 +109,7 @@ const MathHelper = {
|
|
|
109
109
|
},
|
|
110
110
|
float(num, maxLength) {
|
|
111
111
|
const a = maxLength !== undefined ? pow$1(10, maxLength) : 1000000000000;
|
|
112
|
-
num = round(num * a) / a;
|
|
112
|
+
num = round$3(num * a) / a;
|
|
113
113
|
return num === -0 ? 0 : num;
|
|
114
114
|
},
|
|
115
115
|
getScaleData(scale, size, originSize, scaleData) {
|
|
@@ -132,8 +132,15 @@ const MathHelper = {
|
|
|
132
132
|
scaleData.scaleX = scale.x;
|
|
133
133
|
scaleData.scaleY = scale.y;
|
|
134
134
|
}
|
|
135
|
+
},
|
|
136
|
+
randInt,
|
|
137
|
+
randColor(opacity) {
|
|
138
|
+
return `rgba(${randInt(255)},${randInt(255)},${randInt(255)},${opacity || 1})`;
|
|
135
139
|
}
|
|
136
140
|
};
|
|
141
|
+
function randInt(num) {
|
|
142
|
+
return Math.round(Math.random() * num);
|
|
143
|
+
}
|
|
137
144
|
const OneRadian = PI$4 / 180;
|
|
138
145
|
const PI2 = PI$4 * 2;
|
|
139
146
|
const PI_2 = PI$4 / 2;
|
|
@@ -431,7 +438,7 @@ const MatrixHelper = {
|
|
|
431
438
|
const M$6 = MatrixHelper;
|
|
432
439
|
|
|
433
440
|
const { toInnerPoint: toInnerPoint$2, toOuterPoint: toOuterPoint$3 } = MatrixHelper;
|
|
434
|
-
const { sin: sin$4, cos: cos$4, abs: abs$4, sqrt: sqrt$2, atan2: atan2$2, min: min$1, PI: PI$3 } = Math;
|
|
441
|
+
const { sin: sin$4, cos: cos$4, abs: abs$4, sqrt: sqrt$2, atan2: atan2$2, min: min$1, round: round$2, PI: PI$3 } = Math;
|
|
435
442
|
const PointHelper = {
|
|
436
443
|
defaultPoint: getPointData(),
|
|
437
444
|
tempPoint: {},
|
|
@@ -452,6 +459,10 @@ const PointHelper = {
|
|
|
452
459
|
t.x = x;
|
|
453
460
|
t.y = y;
|
|
454
461
|
},
|
|
462
|
+
round(t, halfPixel) {
|
|
463
|
+
t.x = halfPixel ? round$2(t.x - 0.5) + 0.5 : round$2(t.x);
|
|
464
|
+
t.y = halfPixel ? round$2(t.y - 0.5) + 0.5 : round$2(t.y);
|
|
465
|
+
},
|
|
455
466
|
move(t, x, y) {
|
|
456
467
|
t.x += x;
|
|
457
468
|
t.y += y;
|
|
@@ -1317,6 +1328,7 @@ const StringNumberMap = {
|
|
|
1317
1328
|
'E': 1
|
|
1318
1329
|
};
|
|
1319
1330
|
|
|
1331
|
+
const { randColor } = MathHelper;
|
|
1320
1332
|
class Debug {
|
|
1321
1333
|
constructor(name) {
|
|
1322
1334
|
this.repeatMap = {};
|
|
@@ -1331,6 +1343,19 @@ class Debug {
|
|
|
1331
1343
|
static set exclude(name) {
|
|
1332
1344
|
this.excludeList = getNameList(name);
|
|
1333
1345
|
}
|
|
1346
|
+
static drawRepaint(canvas, bounds) {
|
|
1347
|
+
const color = randColor();
|
|
1348
|
+
canvas.fillWorld(bounds, color.replace('1)', '.1)'));
|
|
1349
|
+
canvas.strokeWorld(bounds, color);
|
|
1350
|
+
}
|
|
1351
|
+
static drawBounds(leaf, canvas, _options) {
|
|
1352
|
+
const showHit = Debug.showBounds === 'hit', w = leaf.__nowWorld, color = randColor();
|
|
1353
|
+
if (showHit)
|
|
1354
|
+
canvas.setWorld(w), leaf.__drawHitPath(canvas), canvas.fillStyle = color.replace('1)', '.2)'), canvas.fill();
|
|
1355
|
+
canvas.resetTransform();
|
|
1356
|
+
canvas.setStroke(color, 2);
|
|
1357
|
+
showHit ? canvas.stroke() : canvas.strokeWorld(w, color);
|
|
1358
|
+
}
|
|
1334
1359
|
log(...messages) {
|
|
1335
1360
|
if (D$4.enable) {
|
|
1336
1361
|
if (D$4.filterList.length && D$4.filterList.every(name => name !== this.name))
|
|
@@ -1417,7 +1442,7 @@ const Plugin = {
|
|
|
1417
1442
|
return rs;
|
|
1418
1443
|
},
|
|
1419
1444
|
need(name) {
|
|
1420
|
-
console.error('
|
|
1445
|
+
console.error('please install plugin: ' + (name.includes('-x') ? '' : '@leafer-in/') + name);
|
|
1421
1446
|
}
|
|
1422
1447
|
};
|
|
1423
1448
|
setTimeout(() => check.forEach(name => Plugin.has(name, true)));
|
|
@@ -2017,7 +2042,7 @@ __decorate([
|
|
|
2017
2042
|
contextMethod()
|
|
2018
2043
|
], Canvas$1.prototype, "strokeText", null);
|
|
2019
2044
|
|
|
2020
|
-
const { copy: copy$9 } = MatrixHelper;
|
|
2045
|
+
const { copy: copy$9, multiplyParent: multiplyParent$3 } = MatrixHelper, { round: round$1 } = Math;
|
|
2021
2046
|
const minSize = { width: 1, height: 1, pixelRatio: 1 };
|
|
2022
2047
|
const canvasSizeAttrs = ['width', 'height', 'pixelRatio'];
|
|
2023
2048
|
class LeaferCanvasBase extends Canvas$1 {
|
|
@@ -2026,6 +2051,8 @@ class LeaferCanvasBase extends Canvas$1 {
|
|
|
2026
2051
|
get pixelRatio() { return this.size.pixelRatio; }
|
|
2027
2052
|
get pixelWidth() { return this.width * this.pixelRatio; }
|
|
2028
2053
|
get pixelHeight() { return this.height * this.pixelRatio; }
|
|
2054
|
+
get pixelSnap() { return this.config.pixelSnap; }
|
|
2055
|
+
set pixelSnap(value) { this.config.pixelSnap = value; }
|
|
2029
2056
|
get allowBackgroundColor() { return this.view && this.parentView; }
|
|
2030
2057
|
constructor(config, manager) {
|
|
2031
2058
|
super();
|
|
@@ -2086,15 +2113,22 @@ class LeaferCanvasBase extends Canvas$1 {
|
|
|
2086
2113
|
stopAutoLayout() { }
|
|
2087
2114
|
setCursor(_cursor) { }
|
|
2088
2115
|
setWorld(matrix, parentMatrix) {
|
|
2089
|
-
const { pixelRatio } = this;
|
|
2090
|
-
|
|
2091
|
-
|
|
2092
|
-
|
|
2093
|
-
|
|
2094
|
-
|
|
2095
|
-
|
|
2096
|
-
|
|
2116
|
+
const { pixelRatio, pixelSnap } = this, w = this.worldTransform;
|
|
2117
|
+
if (parentMatrix)
|
|
2118
|
+
multiplyParent$3(matrix, parentMatrix, w);
|
|
2119
|
+
w.a = matrix.a * pixelRatio;
|
|
2120
|
+
w.b = matrix.b * pixelRatio;
|
|
2121
|
+
w.c = matrix.c * pixelRatio;
|
|
2122
|
+
w.d = matrix.d * pixelRatio;
|
|
2123
|
+
w.e = matrix.e * pixelRatio;
|
|
2124
|
+
w.f = matrix.f * pixelRatio;
|
|
2125
|
+
if (pixelSnap) {
|
|
2126
|
+
if (matrix.half && (matrix.half * pixelRatio) % 2)
|
|
2127
|
+
w.e = round$1(w.e - 0.5) + 0.5, w.f = round$1(w.f - 0.5) + 0.5;
|
|
2128
|
+
else
|
|
2129
|
+
w.e = round$1(w.e), w.f = round$1(w.f);
|
|
2097
2130
|
}
|
|
2131
|
+
this.setTransform(w.a, w.b, w.c, w.d, w.e, w.f);
|
|
2098
2132
|
}
|
|
2099
2133
|
useWorldTransform(worldTransform) {
|
|
2100
2134
|
if (worldTransform)
|
|
@@ -2237,12 +2271,13 @@ class LeaferCanvasBase extends Canvas$1 {
|
|
|
2237
2271
|
return this.width === size.width && this.height === size.height && (!size.pixelRatio || this.pixelRatio === size.pixelRatio);
|
|
2238
2272
|
}
|
|
2239
2273
|
getSameCanvas(useSameWorldTransform, useSameSmooth) {
|
|
2240
|
-
const canvas = this.manager ? this.manager.get(
|
|
2274
|
+
const { size, pixelSnap } = this, canvas = this.manager ? this.manager.get(size) : Creator.canvas(Object.assign({}, size));
|
|
2241
2275
|
canvas.save();
|
|
2242
2276
|
if (useSameWorldTransform)
|
|
2243
2277
|
copy$9(canvas.worldTransform, this.worldTransform), canvas.useWorldTransform();
|
|
2244
2278
|
if (useSameSmooth)
|
|
2245
2279
|
canvas.smooth = this.smooth;
|
|
2280
|
+
canvas.pixelSnap !== pixelSnap && (canvas.pixelSnap = pixelSnap);
|
|
2246
2281
|
return canvas;
|
|
2247
2282
|
}
|
|
2248
2283
|
recycle(clearBounds) {
|
|
@@ -3669,7 +3704,7 @@ const Resource = {
|
|
|
3669
3704
|
const R = Resource;
|
|
3670
3705
|
|
|
3671
3706
|
const ImageManager = {
|
|
3672
|
-
maxRecycled:
|
|
3707
|
+
maxRecycled: 10,
|
|
3673
3708
|
recycledList: [],
|
|
3674
3709
|
patternTasker: new TaskProcessor(),
|
|
3675
3710
|
get(config) {
|
|
@@ -4022,9 +4057,8 @@ function hitType(defaultValue) {
|
|
|
4022
4057
|
set(value) {
|
|
4023
4058
|
if (this.__setAttr(key, value)) {
|
|
4024
4059
|
this.__layout.hitCanvasChanged = true;
|
|
4025
|
-
if (Debug.
|
|
4060
|
+
if (Debug.showBounds === 'hit')
|
|
4026
4061
|
this.__layout.surfaceChanged || this.__layout.surfaceChange();
|
|
4027
|
-
}
|
|
4028
4062
|
if (this.leafer)
|
|
4029
4063
|
this.leafer.updateCursor();
|
|
4030
4064
|
}
|
|
@@ -4185,7 +4219,7 @@ function registerUIEvent() {
|
|
|
4185
4219
|
}
|
|
4186
4220
|
|
|
4187
4221
|
const { copy: copy$7, toInnerPoint: toInnerPoint$1, toOuterPoint: toOuterPoint$1, scaleOfOuter: scaleOfOuter$2, rotateOfOuter: rotateOfOuter$2, skewOfOuter, multiplyParent: multiplyParent$2, divideParent, getLayout } = MatrixHelper;
|
|
4188
|
-
const matrix$1 = {};
|
|
4222
|
+
const matrix$1 = {}, { round } = Math;
|
|
4189
4223
|
const LeafHelper = {
|
|
4190
4224
|
updateAllMatrix(leaf, checkAutoLayout, waitAutoLayout) {
|
|
4191
4225
|
if (checkAutoLayout && leaf.__hasAutoLayout && leaf.__layout.matrixChanged)
|
|
@@ -4259,6 +4293,8 @@ const LeafHelper = {
|
|
|
4259
4293
|
y = x.y, x = x.x;
|
|
4260
4294
|
x += t.x;
|
|
4261
4295
|
y += t.y;
|
|
4296
|
+
if (t.leafer && t.leafer.config.pointSnap)
|
|
4297
|
+
x = round(x), y = round(y);
|
|
4262
4298
|
transition ? t.animate({ x, y }, transition) : (t.x = x, t.y = y);
|
|
4263
4299
|
},
|
|
4264
4300
|
zoomOfWorld(t, origin, scaleX, scaleY, resize, transition) {
|
|
@@ -4497,6 +4533,7 @@ class LeafLayout {
|
|
|
4497
4533
|
set contentBounds(bounds) { this._contentBounds = bounds; }
|
|
4498
4534
|
get strokeBounds() { return this._strokeBounds || this.boxBounds; }
|
|
4499
4535
|
get renderBounds() { return this._renderBounds || this.boxBounds; }
|
|
4536
|
+
set renderBounds(bounds) { this._renderBounds = bounds; }
|
|
4500
4537
|
get localContentBounds() { toOuterOf$2(this.contentBounds, this.leaf.__localMatrix, this[localContent] || (this[localContent] = {})); return this[localContent]; }
|
|
4501
4538
|
get localStrokeBounds() { return this._localStrokeBounds || this; }
|
|
4502
4539
|
get localRenderBounds() { return this._localRenderBounds || this; }
|
|
@@ -4515,11 +4552,13 @@ class LeafLayout {
|
|
|
4515
4552
|
get height() { return this.boxBounds.height; }
|
|
4516
4553
|
constructor(leaf) {
|
|
4517
4554
|
this.leaf = leaf;
|
|
4518
|
-
this.boxBounds = { x: 0, y: 0, width: 0, height: 0 };
|
|
4519
4555
|
if (this.leaf.__local)
|
|
4520
4556
|
this._localRenderBounds = this._localStrokeBounds = this.leaf.__local;
|
|
4521
|
-
|
|
4522
|
-
|
|
4557
|
+
if (leaf.__world) {
|
|
4558
|
+
this.boxBounds = { x: 0, y: 0, width: 0, height: 0 };
|
|
4559
|
+
this.boxChange();
|
|
4560
|
+
this.matrixChange();
|
|
4561
|
+
}
|
|
4523
4562
|
}
|
|
4524
4563
|
createLocal() {
|
|
4525
4564
|
const local = this.leaf.__local = { a: 1, b: 0, c: 0, d: 1, e: 0, f: 0, x: 0, y: 0, width: 0, height: 0 };
|
|
@@ -4851,6 +4890,9 @@ class ResizeEvent extends Event {
|
|
|
4851
4890
|
}
|
|
4852
4891
|
this.old = oldSize;
|
|
4853
4892
|
}
|
|
4893
|
+
static isResizing(leaf) {
|
|
4894
|
+
return this.resizingKeys && this.resizingKeys[leaf.innerId] !== undefined;
|
|
4895
|
+
}
|
|
4854
4896
|
}
|
|
4855
4897
|
ResizeEvent.RESIZE = 'resize';
|
|
4856
4898
|
|
|
@@ -4893,6 +4935,7 @@ class RenderEvent extends Event {
|
|
|
4893
4935
|
}
|
|
4894
4936
|
RenderEvent.REQUEST = 'render.request';
|
|
4895
4937
|
RenderEvent.CHILD_START = 'render.child_start';
|
|
4938
|
+
RenderEvent.CHILD_END = 'render.child_end';
|
|
4896
4939
|
RenderEvent.START = 'render.start';
|
|
4897
4940
|
RenderEvent.BEFORE = 'render.before';
|
|
4898
4941
|
RenderEvent.RENDER = 'render';
|
|
@@ -5272,24 +5315,27 @@ const LeafBounds = {
|
|
|
5272
5315
|
const LeafRender = {
|
|
5273
5316
|
__render(canvas, options) {
|
|
5274
5317
|
if (this.__worldOpacity) {
|
|
5318
|
+
const data = this.__;
|
|
5275
5319
|
canvas.setWorld(this.__nowWorld = this.__getNowWorld(options));
|
|
5276
|
-
canvas.opacity =
|
|
5320
|
+
canvas.opacity = options.dimOpacity && !data.dimskip ? data.opacity * options.dimOpacity : data.opacity;
|
|
5277
5321
|
if (this.__.__single) {
|
|
5278
|
-
if (
|
|
5322
|
+
if (data.eraser === 'path')
|
|
5279
5323
|
return this.__renderEraser(canvas, options);
|
|
5280
5324
|
const tempCanvas = canvas.getSameCanvas(true, true);
|
|
5281
5325
|
this.__draw(tempCanvas, options, canvas);
|
|
5282
5326
|
if (this.__worldFlipped) {
|
|
5283
|
-
canvas.copyWorldByReset(tempCanvas, this.__nowWorld, null,
|
|
5327
|
+
canvas.copyWorldByReset(tempCanvas, this.__nowWorld, null, data.__blendMode, true);
|
|
5284
5328
|
}
|
|
5285
5329
|
else {
|
|
5286
|
-
canvas.copyWorldToInner(tempCanvas, this.__nowWorld, this.__layout.renderBounds,
|
|
5330
|
+
canvas.copyWorldToInner(tempCanvas, this.__nowWorld, this.__layout.renderBounds, data.__blendMode);
|
|
5287
5331
|
}
|
|
5288
5332
|
tempCanvas.recycle(this.__nowWorld);
|
|
5289
5333
|
}
|
|
5290
5334
|
else {
|
|
5291
5335
|
this.__draw(canvas, options);
|
|
5292
5336
|
}
|
|
5337
|
+
if (Debug.showBounds)
|
|
5338
|
+
Debug.drawBounds(this, canvas, options);
|
|
5293
5339
|
}
|
|
5294
5340
|
},
|
|
5295
5341
|
__clip(canvas, options) {
|
|
@@ -5319,14 +5365,19 @@ const BranchRender = {
|
|
|
5319
5365
|
__render(canvas, options) {
|
|
5320
5366
|
this.__nowWorld = this.__getNowWorld(options);
|
|
5321
5367
|
if (this.__worldOpacity) {
|
|
5322
|
-
|
|
5323
|
-
|
|
5368
|
+
const data = this.__;
|
|
5369
|
+
if (data.dim)
|
|
5370
|
+
options.dimOpacity = data.dim === true ? 0.2 : data.dim;
|
|
5371
|
+
else if (data.dimskip)
|
|
5372
|
+
options.dimOpacity && (options.dimOpacity = 0);
|
|
5373
|
+
if (data.__single) {
|
|
5374
|
+
if (data.eraser === 'path')
|
|
5324
5375
|
return this.__renderEraser(canvas, options);
|
|
5325
5376
|
const tempCanvas = canvas.getSameCanvas(false, true);
|
|
5326
5377
|
this.__renderBranch(tempCanvas, options);
|
|
5327
5378
|
const nowWorld = this.__nowWorld;
|
|
5328
|
-
canvas.opacity =
|
|
5329
|
-
canvas.copyWorldByReset(tempCanvas, nowWorld, nowWorld,
|
|
5379
|
+
canvas.opacity = options.dimOpacity ? data.opacity * options.dimOpacity : data.opacity;
|
|
5380
|
+
canvas.copyWorldByReset(tempCanvas, nowWorld, nowWorld, data.__blendMode, true);
|
|
5330
5381
|
tempCanvas.recycle(nowWorld);
|
|
5331
5382
|
}
|
|
5332
5383
|
else {
|
|
@@ -5401,9 +5452,11 @@ let Leaf = class Leaf {
|
|
|
5401
5452
|
reset(data) {
|
|
5402
5453
|
if (this.leafer)
|
|
5403
5454
|
this.leafer.forceRender(this.__world);
|
|
5404
|
-
|
|
5405
|
-
|
|
5406
|
-
|
|
5455
|
+
if (data !== 0) {
|
|
5456
|
+
this.__world = { a: 1, b: 0, c: 0, d: 1, e: 0, f: 0, x: 0, y: 0, width: 0, height: 0, scaleX: 1, scaleY: 1 };
|
|
5457
|
+
if (data !== null)
|
|
5458
|
+
this.__local = { a: 1, b: 0, c: 0, d: 1, e: 0, f: 0, x: 0, y: 0, width: 0, height: 0 };
|
|
5459
|
+
}
|
|
5407
5460
|
this.__worldOpacity = 1;
|
|
5408
5461
|
this.__ = new this.__DataProcessor(this);
|
|
5409
5462
|
this.__layout = new this.__LayoutProcessor(this);
|
|
@@ -5539,9 +5592,10 @@ let Leaf = class Leaf {
|
|
|
5539
5592
|
if (options.matrix) {
|
|
5540
5593
|
if (!this.__cameraWorld)
|
|
5541
5594
|
this.__cameraWorld = {};
|
|
5542
|
-
const cameraWorld = this.__cameraWorld;
|
|
5543
|
-
multiplyParent(
|
|
5595
|
+
const cameraWorld = this.__cameraWorld, world = this.__world;
|
|
5596
|
+
multiplyParent(world, options.matrix, cameraWorld, undefined, world);
|
|
5544
5597
|
toOuterOf(this.__layout.renderBounds, cameraWorld, cameraWorld);
|
|
5598
|
+
cameraWorld.half !== world.half && (cameraWorld.half = world.half);
|
|
5545
5599
|
return cameraWorld;
|
|
5546
5600
|
}
|
|
5547
5601
|
else {
|
|
@@ -5701,7 +5755,7 @@ let Leaf = class Leaf {
|
|
|
5701
5755
|
__updateHitCanvas() { }
|
|
5702
5756
|
__render(_canvas, _options) { }
|
|
5703
5757
|
__drawFast(_canvas, _options) { }
|
|
5704
|
-
__draw(_canvas, _options) { }
|
|
5758
|
+
__draw(_canvas, _options, _originCanvas) { }
|
|
5705
5759
|
__clip(_canvas, _options) { }
|
|
5706
5760
|
__renderShape(_canvas, _options, _ignoreFill, _ignoreStroke) { }
|
|
5707
5761
|
__updateWorldOpacity() { }
|
|
@@ -6071,7 +6125,7 @@ class LeafLevelList {
|
|
|
6071
6125
|
}
|
|
6072
6126
|
}
|
|
6073
6127
|
|
|
6074
|
-
const version = "1.
|
|
6128
|
+
const version = "1.6.0";
|
|
6075
6129
|
|
|
6076
6130
|
const debug$5 = Debug.get('LeaferCanvas');
|
|
6077
6131
|
class LeaferCanvas extends LeaferCanvasBase {
|
|
@@ -6492,7 +6546,6 @@ function updateChange(updateList) {
|
|
|
6492
6546
|
}
|
|
6493
6547
|
|
|
6494
6548
|
const { worldBounds } = LeafBoundsHelper;
|
|
6495
|
-
const bigBounds = { x: 0, y: 0, width: 100000, height: 100000 };
|
|
6496
6549
|
class LayoutBlockData {
|
|
6497
6550
|
constructor(list) {
|
|
6498
6551
|
this.updatedBounds = new Bounds();
|
|
@@ -6506,13 +6559,7 @@ class LayoutBlockData {
|
|
|
6506
6559
|
this.beforeBounds.setListWithFn(this.updatedList.list, worldBounds);
|
|
6507
6560
|
}
|
|
6508
6561
|
setAfter() {
|
|
6509
|
-
|
|
6510
|
-
if (list.some(leaf => leaf.noBounds)) {
|
|
6511
|
-
this.afterBounds.set(bigBounds);
|
|
6512
|
-
}
|
|
6513
|
-
else {
|
|
6514
|
-
this.afterBounds.setListWithFn(list, worldBounds);
|
|
6515
|
-
}
|
|
6562
|
+
this.afterBounds.setListWithFn(this.updatedList.list, worldBounds);
|
|
6516
6563
|
this.updatedBounds.setList([this.beforeBounds, this.afterBounds]);
|
|
6517
6564
|
}
|
|
6518
6565
|
merge(data) {
|
|
@@ -6714,6 +6761,13 @@ class Renderer {
|
|
|
6714
6761
|
requestLayout() {
|
|
6715
6762
|
this.target.emit(LayoutEvent.REQUEST);
|
|
6716
6763
|
}
|
|
6764
|
+
checkRender() {
|
|
6765
|
+
if (this.running) {
|
|
6766
|
+
if (this.changed && this.canvas.view)
|
|
6767
|
+
this.render();
|
|
6768
|
+
this.target.emit(RenderEvent.NEXT);
|
|
6769
|
+
}
|
|
6770
|
+
}
|
|
6717
6771
|
render(callback) {
|
|
6718
6772
|
if (!(this.running && this.canvas.view))
|
|
6719
6773
|
return this.update();
|
|
@@ -6722,8 +6776,6 @@ class Renderer {
|
|
|
6722
6776
|
this.totalBounds = new Bounds();
|
|
6723
6777
|
debug$3.log(target.innerName, '--->');
|
|
6724
6778
|
try {
|
|
6725
|
-
if (!target.isApp)
|
|
6726
|
-
target.app.emit(RenderEvent.CHILD_START, target);
|
|
6727
6779
|
this.emitRender(RenderEvent.START);
|
|
6728
6780
|
this.renderOnce(callback);
|
|
6729
6781
|
this.emitRender(RenderEvent.END, this.totalBounds);
|
|
@@ -6791,20 +6843,12 @@ class Renderer {
|
|
|
6791
6843
|
}
|
|
6792
6844
|
clipRender(block) {
|
|
6793
6845
|
const t = Run.start('PartRender');
|
|
6794
|
-
const { canvas } = this;
|
|
6795
|
-
const bounds = block.getIntersect(canvas.bounds);
|
|
6796
|
-
const includes = block.includes(this.target.__world);
|
|
6797
|
-
const realBounds = new Bounds(bounds);
|
|
6846
|
+
const { canvas } = this, bounds = block.getIntersect(canvas.bounds), realBounds = new Bounds(bounds);
|
|
6798
6847
|
canvas.save();
|
|
6799
|
-
|
|
6800
|
-
|
|
6801
|
-
|
|
6802
|
-
|
|
6803
|
-
bounds.spread(10 + 1 / this.canvas.pixelRatio).ceil();
|
|
6804
|
-
canvas.clearWorld(bounds, true);
|
|
6805
|
-
canvas.clipWorld(bounds, true);
|
|
6806
|
-
}
|
|
6807
|
-
this.__render(bounds, includes, realBounds);
|
|
6848
|
+
bounds.spread(Renderer.clipSpread).ceil();
|
|
6849
|
+
canvas.clearWorld(bounds, true);
|
|
6850
|
+
canvas.clipWorld(bounds, true);
|
|
6851
|
+
this.__render(bounds, block.includes(this.target.__world), realBounds);
|
|
6808
6852
|
canvas.restore();
|
|
6809
6853
|
Run.end(t);
|
|
6810
6854
|
}
|
|
@@ -6818,23 +6862,17 @@ class Renderer {
|
|
|
6818
6862
|
Run.end(t);
|
|
6819
6863
|
}
|
|
6820
6864
|
__render(bounds, includes, realBounds) {
|
|
6821
|
-
const options =
|
|
6865
|
+
const { canvas } = this, options = includes ? { includes } : { bounds, includes };
|
|
6822
6866
|
if (this.needFill)
|
|
6823
|
-
|
|
6867
|
+
canvas.fillWorld(bounds, this.config.fill);
|
|
6824
6868
|
if (Debug.showRepaint)
|
|
6825
|
-
|
|
6826
|
-
this.target.__render(
|
|
6869
|
+
Debug.drawRepaint(canvas, bounds);
|
|
6870
|
+
this.target.__render(canvas, options);
|
|
6827
6871
|
this.renderBounds = realBounds = realBounds || bounds;
|
|
6828
6872
|
this.renderOptions = options;
|
|
6829
6873
|
this.totalBounds.isEmpty() ? this.totalBounds = realBounds : this.totalBounds.add(realBounds);
|
|
6830
|
-
|
|
6831
|
-
|
|
6832
|
-
if (Debug.showBoundsView)
|
|
6833
|
-
this.renderBoundsView(options);
|
|
6834
|
-
this.canvas.updateRender(realBounds);
|
|
6835
|
-
}
|
|
6836
|
-
renderHitView(_options) { }
|
|
6837
|
-
renderBoundsView(_options) { }
|
|
6874
|
+
canvas.updateRender(realBounds);
|
|
6875
|
+
}
|
|
6838
6876
|
addBlock(block) {
|
|
6839
6877
|
if (!this.updateBlocks)
|
|
6840
6878
|
this.updateBlocks = [];
|
|
@@ -6850,17 +6888,24 @@ class Renderer {
|
|
|
6850
6888
|
}
|
|
6851
6889
|
}
|
|
6852
6890
|
__requestRender() {
|
|
6891
|
+
const target = this.target;
|
|
6892
|
+
if (target.parentApp)
|
|
6893
|
+
return target.parentApp.renderer.update(false);
|
|
6853
6894
|
if (this.requestTime)
|
|
6854
6895
|
return;
|
|
6855
6896
|
const requestTime = this.requestTime = Date.now();
|
|
6856
6897
|
Platform.requestRender(() => {
|
|
6857
6898
|
this.FPS = Math.min(60, Math.ceil(1000 / (Date.now() - requestTime)));
|
|
6858
6899
|
this.requestTime = 0;
|
|
6859
|
-
if (
|
|
6860
|
-
|
|
6861
|
-
|
|
6862
|
-
|
|
6900
|
+
if (target.isApp) {
|
|
6901
|
+
target.emit(RenderEvent.CHILD_START, target);
|
|
6902
|
+
target.children.forEach(leafer => {
|
|
6903
|
+
leafer.renderer.FPS = this.FPS;
|
|
6904
|
+
leafer.renderer.checkRender();
|
|
6905
|
+
});
|
|
6906
|
+
target.emit(RenderEvent.CHILD_END, target);
|
|
6863
6907
|
}
|
|
6908
|
+
this.checkRender();
|
|
6864
6909
|
});
|
|
6865
6910
|
}
|
|
6866
6911
|
__onResize(e) {
|
|
@@ -6918,6 +6963,7 @@ class Renderer {
|
|
|
6918
6963
|
}
|
|
6919
6964
|
}
|
|
6920
6965
|
}
|
|
6966
|
+
Renderer.clipSpread = 10;
|
|
6921
6967
|
|
|
6922
6968
|
const { hitRadiusPoint } = BoundsHelper;
|
|
6923
6969
|
class Picker {
|
|
@@ -7163,6 +7209,7 @@ class UIData extends LeafData {
|
|
|
7163
7209
|
return strokeWidth;
|
|
7164
7210
|
}
|
|
7165
7211
|
get __hasStroke() { return this.stroke && this.strokeWidth; }
|
|
7212
|
+
get __hasHalf() { const t = this; return (t.stroke && t.strokeAlign === 'center' && t.strokeWidth % 2) || undefined; }
|
|
7166
7213
|
get __hasMultiPaint() {
|
|
7167
7214
|
const t = this;
|
|
7168
7215
|
if ((t.__isFills && t.fill.length > 1) || (t.__isStrokes && t.stroke.length > 1) || t.__useEffect)
|
|
@@ -7207,14 +7254,14 @@ class UIData extends LeafData {
|
|
|
7207
7254
|
this.__removeInput('fill');
|
|
7208
7255
|
PaintImage.recycleImage('fill', this);
|
|
7209
7256
|
this.__isFills = false;
|
|
7210
|
-
|
|
7211
|
-
this.__pixelFill = false;
|
|
7257
|
+
this.__pixelFill && (this.__pixelFill = false);
|
|
7212
7258
|
}
|
|
7213
7259
|
this._fill = value;
|
|
7214
7260
|
}
|
|
7215
7261
|
else if (typeof value === 'object') {
|
|
7216
7262
|
this.__setInput('fill', value);
|
|
7217
|
-
|
|
7263
|
+
const layout = this.__leaf.__layout;
|
|
7264
|
+
layout.boxChanged || layout.boxChange();
|
|
7218
7265
|
this.__isFills = true;
|
|
7219
7266
|
this._fill || (this._fill = emptyPaint);
|
|
7220
7267
|
}
|
|
@@ -7225,14 +7272,14 @@ class UIData extends LeafData {
|
|
|
7225
7272
|
this.__removeInput('stroke');
|
|
7226
7273
|
PaintImage.recycleImage('stroke', this);
|
|
7227
7274
|
this.__isStrokes = false;
|
|
7228
|
-
|
|
7229
|
-
this.__pixelStroke = false;
|
|
7275
|
+
this.__pixelStroke && (this.__pixelStroke = false);
|
|
7230
7276
|
}
|
|
7231
7277
|
this._stroke = value;
|
|
7232
7278
|
}
|
|
7233
7279
|
else if (typeof value === 'object') {
|
|
7234
7280
|
this.__setInput('stroke', value);
|
|
7235
|
-
|
|
7281
|
+
const layout = this.__leaf.__layout;
|
|
7282
|
+
layout.boxChanged || layout.boxChange();
|
|
7236
7283
|
this.__isStrokes = true;
|
|
7237
7284
|
this._stroke || (this._stroke = emptyPaint);
|
|
7238
7285
|
}
|
|
@@ -7347,6 +7394,31 @@ class TextData extends UIData {
|
|
|
7347
7394
|
this._fontWeight = value;
|
|
7348
7395
|
}
|
|
7349
7396
|
}
|
|
7397
|
+
setBoxStyle(value) {
|
|
7398
|
+
let t = this.__leaf, box = t.__box;
|
|
7399
|
+
if (value) {
|
|
7400
|
+
const { boxStyle } = this;
|
|
7401
|
+
if (box)
|
|
7402
|
+
for (let key in boxStyle)
|
|
7403
|
+
box[key] = undefined;
|
|
7404
|
+
else
|
|
7405
|
+
box = t.__box = UICreator.get('Rect', 0);
|
|
7406
|
+
const layout = t.__layout, boxLayout = box.__layout;
|
|
7407
|
+
if (!boxStyle)
|
|
7408
|
+
box.parent = t, box.__world = t.__world, boxLayout.boxBounds = layout.boxBounds;
|
|
7409
|
+
box.set(value);
|
|
7410
|
+
if (boxLayout.strokeChanged)
|
|
7411
|
+
layout.strokeChange();
|
|
7412
|
+
if (boxLayout.renderChanged)
|
|
7413
|
+
layout.renderChange();
|
|
7414
|
+
box.__updateChange();
|
|
7415
|
+
}
|
|
7416
|
+
else if (box) {
|
|
7417
|
+
t.__box = box.parent = null;
|
|
7418
|
+
box.destroy();
|
|
7419
|
+
}
|
|
7420
|
+
this._boxStyle = value;
|
|
7421
|
+
}
|
|
7350
7422
|
}
|
|
7351
7423
|
|
|
7352
7424
|
class ImageData extends RectData {
|
|
@@ -7384,7 +7456,7 @@ class CanvasData extends RectData {
|
|
|
7384
7456
|
const UIBounds = {
|
|
7385
7457
|
__updateStrokeSpread() {
|
|
7386
7458
|
let width = 0, boxWidth = 0;
|
|
7387
|
-
const data = this.__, { strokeAlign, strokeWidth } = data;
|
|
7459
|
+
const data = this.__, { strokeAlign, strokeWidth } = data, box = this.__box;
|
|
7388
7460
|
if ((data.stroke || data.hitStroke === 'all') && strokeWidth && strokeAlign !== 'inside') {
|
|
7389
7461
|
boxWidth = width = strokeAlign === 'center' ? strokeWidth / 2 : strokeWidth;
|
|
7390
7462
|
if (!data.__boxStroke) {
|
|
@@ -7395,6 +7467,10 @@ const UIBounds = {
|
|
|
7395
7467
|
}
|
|
7396
7468
|
if (data.__useArrow)
|
|
7397
7469
|
width += strokeWidth * 5;
|
|
7470
|
+
if (box) {
|
|
7471
|
+
width = Math.max(box.__layout.strokeSpread = box.__updateStrokeSpread(), width);
|
|
7472
|
+
boxWidth = box.__layout.strokeBoxSpread;
|
|
7473
|
+
}
|
|
7398
7474
|
this.__layout.strokeBoxSpread = boxWidth;
|
|
7399
7475
|
return width;
|
|
7400
7476
|
},
|
|
@@ -7413,25 +7489,26 @@ const UIBounds = {
|
|
|
7413
7489
|
if (backgroundBlur)
|
|
7414
7490
|
shapeWidth = Math.max(shapeWidth, backgroundBlur);
|
|
7415
7491
|
this.__layout.renderShapeSpread = shapeWidth;
|
|
7416
|
-
|
|
7492
|
+
width += this.__layout.strokeSpread || 0;
|
|
7493
|
+
return this.__box ? Math.max(this.__box.__updateRenderSpread(), width) : width;
|
|
7417
7494
|
}
|
|
7418
7495
|
};
|
|
7419
7496
|
|
|
7420
7497
|
const UIRender = {
|
|
7421
7498
|
__updateChange() {
|
|
7422
|
-
const data = this.__;
|
|
7499
|
+
const data = this.__, w = this.__world;
|
|
7423
7500
|
if (data.__useEffect) {
|
|
7424
7501
|
const { shadow, innerShadow, blur, backgroundBlur, filter } = this.__;
|
|
7425
7502
|
data.__useEffect = !!(shadow || innerShadow || blur || backgroundBlur || filter);
|
|
7426
7503
|
}
|
|
7504
|
+
const half = data.__hasHalf;
|
|
7505
|
+
w.half !== half && (w.half = half);
|
|
7427
7506
|
data.__checkSingle();
|
|
7428
7507
|
const complex = data.__isFills || data.__isStrokes || data.cornerRadius || data.__useEffect;
|
|
7429
|
-
if (complex)
|
|
7508
|
+
if (complex)
|
|
7430
7509
|
data.__complex = true;
|
|
7431
|
-
|
|
7432
|
-
else {
|
|
7510
|
+
else
|
|
7433
7511
|
data.__complex && (data.__complex = false);
|
|
7434
|
-
}
|
|
7435
7512
|
},
|
|
7436
7513
|
__drawFast(canvas, options) {
|
|
7437
7514
|
drawFast(this, canvas, options);
|
|
@@ -7518,10 +7595,11 @@ function drawFast(ui, canvas, options) {
|
|
|
7518
7595
|
|
|
7519
7596
|
const RectRender = {
|
|
7520
7597
|
__drawFast(canvas, options) {
|
|
7521
|
-
let {
|
|
7598
|
+
let { x, y, width, height } = this.__layout.boxBounds;
|
|
7599
|
+
const { fill, stroke, __drawAfterFill } = this.__;
|
|
7522
7600
|
if (fill) {
|
|
7523
7601
|
canvas.fillStyle = fill;
|
|
7524
|
-
canvas.fillRect(
|
|
7602
|
+
canvas.fillRect(x, y, width, height);
|
|
7525
7603
|
}
|
|
7526
7604
|
if (__drawAfterFill)
|
|
7527
7605
|
this.__drawAfterFill(canvas, options);
|
|
@@ -7540,14 +7618,14 @@ const RectRender = {
|
|
|
7540
7618
|
if (width < 0 || height < 0) {
|
|
7541
7619
|
canvas.save();
|
|
7542
7620
|
this.__clip(canvas, options);
|
|
7543
|
-
canvas.strokeRect(half, half, width, height);
|
|
7621
|
+
canvas.strokeRect(x + half, y + half, width, height);
|
|
7544
7622
|
canvas.restore();
|
|
7545
7623
|
}
|
|
7546
7624
|
else
|
|
7547
|
-
canvas.strokeRect(half, half, width, height);
|
|
7625
|
+
canvas.strokeRect(x + half, y + half, width, height);
|
|
7548
7626
|
break;
|
|
7549
7627
|
case 'outside':
|
|
7550
|
-
canvas.strokeRect(-half, -half, width + __strokeWidth, height + __strokeWidth);
|
|
7628
|
+
canvas.strokeRect(x - half, y - half, width + __strokeWidth, height + __strokeWidth);
|
|
7551
7629
|
break;
|
|
7552
7630
|
}
|
|
7553
7631
|
}
|
|
@@ -7703,6 +7781,12 @@ __decorate([
|
|
|
7703
7781
|
__decorate([
|
|
7704
7782
|
surfaceType(false)
|
|
7705
7783
|
], UI.prototype, "locked", void 0);
|
|
7784
|
+
__decorate([
|
|
7785
|
+
surfaceType(false)
|
|
7786
|
+
], UI.prototype, "dim", void 0);
|
|
7787
|
+
__decorate([
|
|
7788
|
+
surfaceType(false)
|
|
7789
|
+
], UI.prototype, "dimskip", void 0);
|
|
7706
7790
|
__decorate([
|
|
7707
7791
|
sortType(0)
|
|
7708
7792
|
], UI.prototype, "zIndex", void 0);
|
|
@@ -7964,7 +8048,7 @@ let Leafer = Leafer_1 = class Leafer extends Group {
|
|
|
7964
8048
|
start: true,
|
|
7965
8049
|
hittable: true,
|
|
7966
8050
|
smooth: true,
|
|
7967
|
-
lazySpeard: 100
|
|
8051
|
+
lazySpeard: 100,
|
|
7968
8052
|
};
|
|
7969
8053
|
this.leafs = 0;
|
|
7970
8054
|
this.__eventIds = [];
|
|
@@ -8388,13 +8472,13 @@ let Box = class Box extends Group {
|
|
|
8388
8472
|
super.__updateRenderBounds();
|
|
8389
8473
|
copy$3(childrenRenderBounds, renderBounds);
|
|
8390
8474
|
this.__updateRectRenderBounds();
|
|
8391
|
-
isOverflow = !includes$1(renderBounds, childrenRenderBounds);
|
|
8475
|
+
isOverflow = !includes$1(renderBounds, childrenRenderBounds) || undefined;
|
|
8392
8476
|
if (isOverflow && this.__.overflow !== 'hide')
|
|
8393
8477
|
add(renderBounds, childrenRenderBounds);
|
|
8394
8478
|
}
|
|
8395
8479
|
else
|
|
8396
8480
|
this.__updateRectRenderBounds();
|
|
8397
|
-
|
|
8481
|
+
this.isOverflow !== isOverflow && (this.isOverflow = isOverflow);
|
|
8398
8482
|
}
|
|
8399
8483
|
__updateRectRenderBounds() { }
|
|
8400
8484
|
__updateRectChange() { }
|
|
@@ -8802,33 +8886,13 @@ Canvas = __decorate([
|
|
|
8802
8886
|
registerUI()
|
|
8803
8887
|
], Canvas);
|
|
8804
8888
|
|
|
8805
|
-
const { copyAndSpread, includes,
|
|
8889
|
+
const { copyAndSpread, includes, spread, setList } = BoundsHelper;
|
|
8806
8890
|
let Text = class Text extends UI {
|
|
8807
8891
|
get __tag() { return 'Text'; }
|
|
8808
|
-
get textDrawData() {
|
|
8809
|
-
this.__layout.update();
|
|
8810
|
-
return this.__.__textDrawData;
|
|
8811
|
-
}
|
|
8892
|
+
get textDrawData() { this.updateLayout(); return this.__.__textDrawData; }
|
|
8812
8893
|
constructor(data) {
|
|
8813
8894
|
super(data);
|
|
8814
8895
|
}
|
|
8815
|
-
__drawHitPath(canvas) {
|
|
8816
|
-
const { __lineHeight, fontSize, __baseLine, __textDrawData: data } = this.__;
|
|
8817
|
-
canvas.beginPath();
|
|
8818
|
-
if (this.__.__letterSpacing < 0) {
|
|
8819
|
-
this.__drawPathByData(canvas);
|
|
8820
|
-
}
|
|
8821
|
-
else {
|
|
8822
|
-
data.rows.forEach(row => canvas.rect(row.x, row.y - __baseLine, row.width, __lineHeight < fontSize ? fontSize : __lineHeight));
|
|
8823
|
-
}
|
|
8824
|
-
}
|
|
8825
|
-
__drawPathByData(drawer, _data) {
|
|
8826
|
-
const { x, y, width, height } = this.__layout.boxBounds;
|
|
8827
|
-
drawer.rect(x, y, width, height);
|
|
8828
|
-
}
|
|
8829
|
-
__drawRenderPath(canvas) {
|
|
8830
|
-
canvas.font = this.__.__font;
|
|
8831
|
-
}
|
|
8832
8896
|
__updateTextDrawData() {
|
|
8833
8897
|
const data = this.__;
|
|
8834
8898
|
const { lineHeight, letterSpacing, fontFamily, fontSize, fontWeight, italic, textCase, textOverflow, padding } = data;
|
|
@@ -8845,15 +8909,16 @@ let Text = class Text extends UI {
|
|
|
8845
8909
|
const layout = this.__layout;
|
|
8846
8910
|
const { fontSize, italic, padding, __autoWidth: autoWidth, __autoHeight: autoHeight } = data;
|
|
8847
8911
|
this.__updateTextDrawData();
|
|
8848
|
-
const { bounds } = data.__textDrawData;
|
|
8912
|
+
const { bounds: contentBounds } = data.__textDrawData;
|
|
8849
8913
|
const b = layout.boxBounds;
|
|
8914
|
+
layout.contentBounds = contentBounds;
|
|
8850
8915
|
if (data.__lineHeight < fontSize)
|
|
8851
|
-
spread(
|
|
8916
|
+
spread(contentBounds, fontSize / 2);
|
|
8852
8917
|
if (autoWidth || autoHeight) {
|
|
8853
|
-
b.x = autoWidth ?
|
|
8854
|
-
b.y = autoHeight ?
|
|
8855
|
-
b.width = autoWidth ?
|
|
8856
|
-
b.height = autoHeight ?
|
|
8918
|
+
b.x = autoWidth ? contentBounds.x : 0;
|
|
8919
|
+
b.y = autoHeight ? contentBounds.y : 0;
|
|
8920
|
+
b.width = autoWidth ? contentBounds.width : data.width;
|
|
8921
|
+
b.height = autoHeight ? contentBounds.height : data.height;
|
|
8857
8922
|
if (padding) {
|
|
8858
8923
|
const [top, right, bottom, left] = data.__padding;
|
|
8859
8924
|
if (autoWidth)
|
|
@@ -8867,23 +8932,45 @@ let Text = class Text extends UI {
|
|
|
8867
8932
|
super.__updateBoxBounds();
|
|
8868
8933
|
if (italic)
|
|
8869
8934
|
b.width += fontSize * 0.16;
|
|
8870
|
-
const
|
|
8871
|
-
if (
|
|
8872
|
-
|
|
8873
|
-
layout.renderChanged = true;
|
|
8874
|
-
setList(data.__textBoxBounds = {}, [b, bounds]);
|
|
8875
|
-
}
|
|
8935
|
+
const isOverflow = !includes(b, contentBounds) || undefined;
|
|
8936
|
+
if (isOverflow)
|
|
8937
|
+
setList(data.__textBoxBounds = {}, [b, contentBounds]), layout.renderChanged = true;
|
|
8876
8938
|
else
|
|
8877
|
-
data.__textBoxBounds =
|
|
8939
|
+
data.__textBoxBounds = b;
|
|
8940
|
+
this.isOverflow !== isOverflow && (this.isOverflow = isOverflow);
|
|
8941
|
+
}
|
|
8942
|
+
__onUpdateSize() {
|
|
8943
|
+
if (this.__box)
|
|
8944
|
+
this.__box.__onUpdateSize();
|
|
8945
|
+
super.__onUpdateSize();
|
|
8878
8946
|
}
|
|
8879
8947
|
__updateRenderSpread() {
|
|
8880
8948
|
let width = super.__updateRenderSpread();
|
|
8881
8949
|
if (!width)
|
|
8882
|
-
width = this.
|
|
8950
|
+
width = this.isOverflow ? 1 : 0;
|
|
8883
8951
|
return width;
|
|
8884
8952
|
}
|
|
8885
8953
|
__updateRenderBounds() {
|
|
8886
|
-
|
|
8954
|
+
const { renderBounds, renderSpread } = this.__layout;
|
|
8955
|
+
copyAndSpread(renderBounds, this.__.__textBoxBounds, renderSpread);
|
|
8956
|
+
if (this.__box)
|
|
8957
|
+
this.__box.__layout.renderBounds = renderBounds;
|
|
8958
|
+
}
|
|
8959
|
+
__drawRenderPath(canvas) {
|
|
8960
|
+
canvas.font = this.__.__font;
|
|
8961
|
+
}
|
|
8962
|
+
__draw(canvas, options, originCanvas) {
|
|
8963
|
+
const box = this.__box;
|
|
8964
|
+
if (box)
|
|
8965
|
+
box.__nowWorld = this.__nowWorld, box.__draw(canvas, options, originCanvas);
|
|
8966
|
+
if (this.textEditing && !Export.running)
|
|
8967
|
+
return;
|
|
8968
|
+
super.__draw(canvas, options, originCanvas);
|
|
8969
|
+
}
|
|
8970
|
+
destroy() {
|
|
8971
|
+
if (this.boxStyle)
|
|
8972
|
+
this.boxStyle = null;
|
|
8973
|
+
super.destroy();
|
|
8887
8974
|
}
|
|
8888
8975
|
};
|
|
8889
8976
|
__decorate([
|
|
@@ -8895,6 +8982,9 @@ __decorate([
|
|
|
8895
8982
|
__decorate([
|
|
8896
8983
|
boundsType(0)
|
|
8897
8984
|
], Text.prototype, "height", void 0);
|
|
8985
|
+
__decorate([
|
|
8986
|
+
surfaceType()
|
|
8987
|
+
], Text.prototype, "boxStyle", void 0);
|
|
8898
8988
|
__decorate([
|
|
8899
8989
|
dataType(false)
|
|
8900
8990
|
], Text.prototype, "resizeFontSize", void 0);
|
|
@@ -9058,26 +9148,25 @@ let App = class App extends Leafer {
|
|
|
9058
9148
|
this.leafer = this;
|
|
9059
9149
|
this.watcher.disable();
|
|
9060
9150
|
this.layouter.disable();
|
|
9061
|
-
this.__eventIds.push(this.on_(PropertyEvent.CHANGE, this.__onPropertyChange, this));
|
|
9062
9151
|
}
|
|
9063
9152
|
start() {
|
|
9064
9153
|
super.start();
|
|
9065
|
-
this.
|
|
9154
|
+
this.forEach(leafer => leafer.start());
|
|
9066
9155
|
}
|
|
9067
9156
|
stop() {
|
|
9068
|
-
this.
|
|
9157
|
+
this.forEach(leafer => leafer.stop());
|
|
9069
9158
|
super.stop();
|
|
9070
9159
|
}
|
|
9071
9160
|
unlockLayout() {
|
|
9072
9161
|
super.unlockLayout();
|
|
9073
|
-
this.
|
|
9162
|
+
this.forEach(leafer => leafer.unlockLayout());
|
|
9074
9163
|
}
|
|
9075
9164
|
lockLayout() {
|
|
9076
9165
|
super.lockLayout();
|
|
9077
|
-
this.
|
|
9166
|
+
this.forEach(leafer => leafer.lockLayout());
|
|
9078
9167
|
}
|
|
9079
9168
|
forceRender(bounds, sync) {
|
|
9080
|
-
this.
|
|
9169
|
+
this.forEach(leafer => leafer.forceRender(bounds, sync));
|
|
9081
9170
|
}
|
|
9082
9171
|
addLeafer(merge) {
|
|
9083
9172
|
const leafer = new Leafer(merge);
|
|
@@ -9097,9 +9186,8 @@ let App = class App extends Leafer {
|
|
|
9097
9186
|
leafer.canvas.childIndex = index;
|
|
9098
9187
|
this.__listenChildEvents(leafer);
|
|
9099
9188
|
}
|
|
9100
|
-
|
|
9101
|
-
|
|
9102
|
-
this.children.forEach(leafer => leafer.forceUpdate('surface'));
|
|
9189
|
+
forEach(fn) {
|
|
9190
|
+
this.children.forEach(fn);
|
|
9103
9191
|
}
|
|
9104
9192
|
__onCreated() {
|
|
9105
9193
|
this.created = this.children.every(child => child.created);
|
|
@@ -9122,18 +9210,18 @@ let App = class App extends Leafer {
|
|
|
9122
9210
|
const m = options.matrix;
|
|
9123
9211
|
if (m)
|
|
9124
9212
|
canvas.setTransform(m.a, m.b, m.c, m.d, m.e, m.f);
|
|
9125
|
-
this.
|
|
9213
|
+
this.forEach(leafer => canvas.copyWorld(leafer.canvas));
|
|
9126
9214
|
}
|
|
9127
9215
|
}
|
|
9128
9216
|
__onResize(event) {
|
|
9129
|
-
this.
|
|
9217
|
+
this.forEach(leafer => leafer.resize(event));
|
|
9130
9218
|
super.__onResize(event);
|
|
9131
9219
|
}
|
|
9132
9220
|
updateLayout() {
|
|
9133
|
-
this.
|
|
9221
|
+
this.forEach(leafer => leafer.updateLayout());
|
|
9134
9222
|
}
|
|
9135
9223
|
__getChildConfig(userConfig) {
|
|
9136
|
-
|
|
9224
|
+
const config = Object.assign({}, this.config);
|
|
9137
9225
|
config.hittable = config.realCanvas = undefined;
|
|
9138
9226
|
if (userConfig)
|
|
9139
9227
|
DataHelper.assign(config, userConfig);
|
|
@@ -9692,6 +9780,7 @@ const config = {
|
|
|
9692
9780
|
delta: { x: 80 / 4, y: 8.0 },
|
|
9693
9781
|
},
|
|
9694
9782
|
pointer: {
|
|
9783
|
+
snap: true,
|
|
9695
9784
|
hitRadius: 5,
|
|
9696
9785
|
tapTime: 120,
|
|
9697
9786
|
longPressTime: 800,
|
|
@@ -9786,7 +9875,7 @@ class InteractionBase {
|
|
|
9786
9875
|
if (this.downData) {
|
|
9787
9876
|
const canDrag = PointHelper.getDistance(this.downData, data) > this.p.dragDistance;
|
|
9788
9877
|
if (canDrag) {
|
|
9789
|
-
if (this.waitTap)
|
|
9878
|
+
if (this.waitTap || this.longPressTimer)
|
|
9790
9879
|
this.pointerWaitCancel();
|
|
9791
9880
|
this.waitRightTap = false;
|
|
9792
9881
|
}
|
|
@@ -10047,7 +10136,10 @@ class InteractionBase {
|
|
|
10047
10136
|
}
|
|
10048
10137
|
getLocal(clientPoint, updateClient) {
|
|
10049
10138
|
const clientBounds = this.canvas.getClientBounds(updateClient);
|
|
10050
|
-
|
|
10139
|
+
const point = { x: clientPoint.clientX - clientBounds.x, y: clientPoint.clientY - clientBounds.y };
|
|
10140
|
+
if (this.p.snap)
|
|
10141
|
+
PointHelper.round(point);
|
|
10142
|
+
return point;
|
|
10051
10143
|
}
|
|
10052
10144
|
emitTap(data) {
|
|
10053
10145
|
this.emit(PointerEvent$1.TAP, data);
|
|
@@ -10179,25 +10271,26 @@ const { toInnerRadiusPointOf, copy: copy$2, setRadius } = PointHelper;
|
|
|
10179
10271
|
const inner = {};
|
|
10180
10272
|
const leaf = Leaf.prototype;
|
|
10181
10273
|
leaf.__hitWorld = function (point) {
|
|
10182
|
-
|
|
10274
|
+
const data = this.__;
|
|
10275
|
+
if (!data.hitSelf)
|
|
10183
10276
|
return false;
|
|
10184
|
-
|
|
10277
|
+
const world = this.__world, layout = this.__layout;
|
|
10278
|
+
const isSmall = world.width < 10 && world.height < 10;
|
|
10279
|
+
if (data.hitRadius) {
|
|
10185
10280
|
copy$2(inner, point), point = inner;
|
|
10186
|
-
setRadius(point,
|
|
10281
|
+
setRadius(point, data.hitRadius);
|
|
10187
10282
|
}
|
|
10188
|
-
toInnerRadiusPointOf(point,
|
|
10189
|
-
|
|
10190
|
-
|
|
10191
|
-
if (this.__.hitBox || isSmall) {
|
|
10192
|
-
if (BoundsHelper.hitRadiusPoint(this.__layout.boxBounds, inner))
|
|
10283
|
+
toInnerRadiusPointOf(point, world, inner);
|
|
10284
|
+
if (data.hitBox || isSmall) {
|
|
10285
|
+
if (BoundsHelper.hitRadiusPoint(layout.boxBounds, inner))
|
|
10193
10286
|
return true;
|
|
10194
10287
|
if (isSmall)
|
|
10195
10288
|
return false;
|
|
10196
10289
|
}
|
|
10197
|
-
if (
|
|
10290
|
+
if (layout.hitCanvasChanged || !this.__hitCanvas) {
|
|
10198
10291
|
this.__updateHitCanvas();
|
|
10199
|
-
if (!
|
|
10200
|
-
|
|
10292
|
+
if (!layout.boundsChanged)
|
|
10293
|
+
layout.hitCanvasChanged = false;
|
|
10201
10294
|
}
|
|
10202
10295
|
return this.__hit(inner);
|
|
10203
10296
|
};
|
|
@@ -10210,7 +10303,9 @@ leaf.__drawHitPath = function (canvas) { if (canvas)
|
|
|
10210
10303
|
const matrix = new Matrix();
|
|
10211
10304
|
const ui$1 = UI.prototype;
|
|
10212
10305
|
ui$1.__updateHitCanvas = function () {
|
|
10213
|
-
|
|
10306
|
+
if (this.__box)
|
|
10307
|
+
this.__box.__updateHitCanvas();
|
|
10308
|
+
const data = this.__, { hitCanvasManager } = this.leafer || this.parent.leafer;
|
|
10214
10309
|
const isHitPixelFill = (data.__pixelFill || data.__isCanvas) && data.hitFill === 'pixel';
|
|
10215
10310
|
const isHitPixelStroke = data.__pixelStroke && data.hitStroke === 'pixel';
|
|
10216
10311
|
const isHitPixel = isHitPixelFill || isHitPixelStroke;
|
|
@@ -10237,6 +10332,8 @@ ui$1.__updateHitCanvas = function () {
|
|
|
10237
10332
|
h.setStrokeOptions(data);
|
|
10238
10333
|
};
|
|
10239
10334
|
ui$1.__hit = function (inner) {
|
|
10335
|
+
if (this.__box && this.__box.__hit(inner))
|
|
10336
|
+
return true;
|
|
10240
10337
|
const data = this.__;
|
|
10241
10338
|
if (data.__isHitPixel && this.__hitPixel(inner))
|
|
10242
10339
|
return true;
|
|
@@ -10285,6 +10382,15 @@ rect.__hitFill = box$1.__hitFill = function (inner) {
|
|
|
10285
10382
|
return this.__hitCanvas ? ui.__hitFill.call(this, inner) : BoundsHelper.hitRadiusPoint(this.__layout.boxBounds, inner);
|
|
10286
10383
|
};
|
|
10287
10384
|
|
|
10385
|
+
Text.prototype.__drawHitPath = function (canvas) {
|
|
10386
|
+
const { __lineHeight, fontSize, __baseLine, __letterSpacing, __textDrawData: data } = this.__;
|
|
10387
|
+
canvas.beginPath();
|
|
10388
|
+
if (__letterSpacing < 0)
|
|
10389
|
+
this.__drawPathByBox(canvas);
|
|
10390
|
+
else
|
|
10391
|
+
data.rows.forEach(row => canvas.rect(row.x, row.y - __baseLine, row.width, __lineHeight < fontSize ? fontSize : __lineHeight));
|
|
10392
|
+
};
|
|
10393
|
+
|
|
10288
10394
|
function getSelector(ui) {
|
|
10289
10395
|
return ui.leafer ? ui.leafer.selector : (Platform.selector || (Platform.selector = Creator.selector()));
|
|
10290
10396
|
}
|
|
@@ -10976,9 +11082,11 @@ const tempBox = new Bounds();
|
|
|
10976
11082
|
const tempPoint = {};
|
|
10977
11083
|
const tempScaleData = {};
|
|
10978
11084
|
function createData(leafPaint, image, paint, box) {
|
|
10979
|
-
const { blendMode, sync } = paint;
|
|
11085
|
+
const { blendMode, changeful, sync } = paint;
|
|
10980
11086
|
if (blendMode)
|
|
10981
11087
|
leafPaint.blendMode = blendMode;
|
|
11088
|
+
if (changeful)
|
|
11089
|
+
leafPaint.changeful = changeful;
|
|
10982
11090
|
if (sync)
|
|
10983
11091
|
leafPaint.sync = sync;
|
|
10984
11092
|
leafPaint.data = getPatternData(paint, box, image);
|
|
@@ -11211,40 +11319,32 @@ function createPattern(ui, paint, pixelRatio) {
|
|
|
11211
11319
|
}
|
|
11212
11320
|
|
|
11213
11321
|
const { abs } = Math;
|
|
11214
|
-
function checkImage(ui, canvas, paint,
|
|
11322
|
+
function checkImage(ui, canvas, paint, allowDraw) {
|
|
11215
11323
|
const { scaleX, scaleY } = ImageManager.patternLocked ? ui.__world : ui.__nowWorld;
|
|
11216
|
-
const { pixelRatio } = canvas;
|
|
11217
|
-
if (!
|
|
11324
|
+
const { pixelRatio } = canvas, { data } = paint;
|
|
11325
|
+
if (!data || (paint.patternId === scaleX + '-' + scaleY + '-' + pixelRatio && !Export.running)) {
|
|
11218
11326
|
return false;
|
|
11219
11327
|
}
|
|
11220
11328
|
else {
|
|
11221
|
-
|
|
11222
|
-
|
|
11223
|
-
|
|
11224
|
-
let { width, height } = data;
|
|
11225
|
-
width *= abs(scaleX) * pixelRatio;
|
|
11226
|
-
height *= abs(scaleY) * pixelRatio;
|
|
11227
|
-
if (data.scaleX) {
|
|
11228
|
-
width *= data.scaleX;
|
|
11229
|
-
height *= data.scaleY;
|
|
11230
|
-
}
|
|
11231
|
-
allowPaint = (width * height > Platform.image.maxCacheSize) || Export.running;
|
|
11329
|
+
if (allowDraw) {
|
|
11330
|
+
if (data.repeat) {
|
|
11331
|
+
allowDraw = false;
|
|
11232
11332
|
}
|
|
11233
11333
|
else {
|
|
11234
|
-
|
|
11334
|
+
if (!(paint.changeful || ResizeEvent.isResizing(ui) || Export.running)) {
|
|
11335
|
+
let { width, height } = data;
|
|
11336
|
+
width *= abs(scaleX) * pixelRatio;
|
|
11337
|
+
height *= abs(scaleY) * pixelRatio;
|
|
11338
|
+
if (data.scaleX) {
|
|
11339
|
+
width *= data.scaleX;
|
|
11340
|
+
height *= data.scaleY;
|
|
11341
|
+
}
|
|
11342
|
+
allowDraw = (width * height > Platform.image.maxCacheSize);
|
|
11343
|
+
}
|
|
11235
11344
|
}
|
|
11236
11345
|
}
|
|
11237
|
-
if (
|
|
11238
|
-
canvas
|
|
11239
|
-
ui.windingRule ? canvas.clip(ui.windingRule) : canvas.clip();
|
|
11240
|
-
if (paint.blendMode)
|
|
11241
|
-
canvas.blendMode = paint.blendMode;
|
|
11242
|
-
if (data.opacity)
|
|
11243
|
-
canvas.opacity *= data.opacity;
|
|
11244
|
-
if (data.transform)
|
|
11245
|
-
canvas.transform(data.transform);
|
|
11246
|
-
canvas.drawImage(paint.image.getFull(data.filters), 0, 0, data.width, data.height);
|
|
11247
|
-
canvas.restore();
|
|
11346
|
+
if (allowDraw) {
|
|
11347
|
+
drawImage(ui, canvas, paint, data);
|
|
11248
11348
|
return true;
|
|
11249
11349
|
}
|
|
11250
11350
|
else {
|
|
@@ -11265,13 +11365,26 @@ function checkImage(ui, canvas, paint, allowPaint) {
|
|
|
11265
11365
|
}
|
|
11266
11366
|
}
|
|
11267
11367
|
}
|
|
11368
|
+
function drawImage(ui, canvas, paint, data) {
|
|
11369
|
+
canvas.save();
|
|
11370
|
+
ui.windingRule ? canvas.clip(ui.windingRule) : canvas.clip();
|
|
11371
|
+
if (paint.blendMode)
|
|
11372
|
+
canvas.blendMode = paint.blendMode;
|
|
11373
|
+
if (data.opacity)
|
|
11374
|
+
canvas.opacity *= data.opacity;
|
|
11375
|
+
if (data.transform)
|
|
11376
|
+
canvas.transform(data.transform);
|
|
11377
|
+
canvas.drawImage(paint.image.getFull(data.filters), 0, 0, data.width, data.height);
|
|
11378
|
+
canvas.restore();
|
|
11379
|
+
}
|
|
11268
11380
|
|
|
11269
11381
|
function recycleImage(attrName, data) {
|
|
11270
11382
|
const paints = data['_' + attrName];
|
|
11271
11383
|
if (paints instanceof Array) {
|
|
11272
|
-
let image, recycleMap, input, url;
|
|
11384
|
+
let paint, image, recycleMap, input, url;
|
|
11273
11385
|
for (let i = 0, len = paints.length; i < len; i++) {
|
|
11274
|
-
|
|
11386
|
+
paint = paints[i];
|
|
11387
|
+
image = paint.image;
|
|
11275
11388
|
url = image && image.url;
|
|
11276
11389
|
if (url) {
|
|
11277
11390
|
if (!recycleMap)
|
|
@@ -11286,8 +11399,6 @@ function recycleImage(attrName, data) {
|
|
|
11286
11399
|
}
|
|
11287
11400
|
image.unload(paints[i].loadId, !input.some((item) => item.url === url));
|
|
11288
11401
|
}
|
|
11289
|
-
else
|
|
11290
|
-
paints[i].style = null;
|
|
11291
11402
|
}
|
|
11292
11403
|
}
|
|
11293
11404
|
return recycleMap;
|
|
@@ -11466,7 +11577,7 @@ const { toOffsetOutBounds } = BoundsHelper;
|
|
|
11466
11577
|
const offsetOutBounds = {};
|
|
11467
11578
|
function innerShadow(ui, current, shape) {
|
|
11468
11579
|
let copyBounds, spreadScale;
|
|
11469
|
-
const { __nowWorld: nowWorld, __layout
|
|
11580
|
+
const { __nowWorld: nowWorld, __layout } = ui;
|
|
11470
11581
|
const { innerShadow } = ui.__;
|
|
11471
11582
|
const { worldCanvas, bounds, shapeBounds, scaleX, scaleY } = shape;
|
|
11472
11583
|
const other = current.getSameCanvas();
|