@leafer-ui/miniapp 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/dist/miniapp.cjs +68 -71
- package/dist/miniapp.cjs.map +1 -1
- package/dist/miniapp.esm.js +68 -71
- package/dist/miniapp.esm.js.map +1 -1
- package/dist/miniapp.esm.min.js +1 -1
- package/dist/miniapp.esm.min.js.map +1 -1
- package/dist/miniapp.min.cjs +1 -1
- package/dist/miniapp.min.cjs.map +1 -1
- package/dist/miniapp.module.js +303 -192
- package/dist/miniapp.module.js.map +1 -1
- package/dist/miniapp.module.min.js +1 -1
- package/dist/miniapp.module.min.js.map +1 -1
- package/package.json +12 -11
- package/src/core.ts +143 -0
- package/src/index.ts +2 -2
- package/types/index.d.ts +8 -1
package/dist/miniapp.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
|
class LeaferCanvas extends LeaferCanvasBase {
|
|
6077
6131
|
get allowBackgroundColor() { return false; }
|
|
@@ -6450,7 +6504,6 @@ function updateChange(updateList) {
|
|
|
6450
6504
|
}
|
|
6451
6505
|
|
|
6452
6506
|
const { worldBounds } = LeafBoundsHelper;
|
|
6453
|
-
const bigBounds = { x: 0, y: 0, width: 100000, height: 100000 };
|
|
6454
6507
|
class LayoutBlockData {
|
|
6455
6508
|
constructor(list) {
|
|
6456
6509
|
this.updatedBounds = new Bounds();
|
|
@@ -6464,13 +6517,7 @@ class LayoutBlockData {
|
|
|
6464
6517
|
this.beforeBounds.setListWithFn(this.updatedList.list, worldBounds);
|
|
6465
6518
|
}
|
|
6466
6519
|
setAfter() {
|
|
6467
|
-
|
|
6468
|
-
if (list.some(leaf => leaf.noBounds)) {
|
|
6469
|
-
this.afterBounds.set(bigBounds);
|
|
6470
|
-
}
|
|
6471
|
-
else {
|
|
6472
|
-
this.afterBounds.setListWithFn(list, worldBounds);
|
|
6473
|
-
}
|
|
6520
|
+
this.afterBounds.setListWithFn(this.updatedList.list, worldBounds);
|
|
6474
6521
|
this.updatedBounds.setList([this.beforeBounds, this.afterBounds]);
|
|
6475
6522
|
}
|
|
6476
6523
|
merge(data) {
|
|
@@ -6672,6 +6719,13 @@ class Renderer {
|
|
|
6672
6719
|
requestLayout() {
|
|
6673
6720
|
this.target.emit(LayoutEvent.REQUEST);
|
|
6674
6721
|
}
|
|
6722
|
+
checkRender() {
|
|
6723
|
+
if (this.running) {
|
|
6724
|
+
if (this.changed && this.canvas.view)
|
|
6725
|
+
this.render();
|
|
6726
|
+
this.target.emit(RenderEvent.NEXT);
|
|
6727
|
+
}
|
|
6728
|
+
}
|
|
6675
6729
|
render(callback) {
|
|
6676
6730
|
if (!(this.running && this.canvas.view))
|
|
6677
6731
|
return this.update();
|
|
@@ -6680,8 +6734,6 @@ class Renderer {
|
|
|
6680
6734
|
this.totalBounds = new Bounds();
|
|
6681
6735
|
debug$3.log(target.innerName, '--->');
|
|
6682
6736
|
try {
|
|
6683
|
-
if (!target.isApp)
|
|
6684
|
-
target.app.emit(RenderEvent.CHILD_START, target);
|
|
6685
6737
|
this.emitRender(RenderEvent.START);
|
|
6686
6738
|
this.renderOnce(callback);
|
|
6687
6739
|
this.emitRender(RenderEvent.END, this.totalBounds);
|
|
@@ -6749,20 +6801,12 @@ class Renderer {
|
|
|
6749
6801
|
}
|
|
6750
6802
|
clipRender(block) {
|
|
6751
6803
|
const t = Run.start('PartRender');
|
|
6752
|
-
const { canvas } = this;
|
|
6753
|
-
const bounds = block.getIntersect(canvas.bounds);
|
|
6754
|
-
const includes = block.includes(this.target.__world);
|
|
6755
|
-
const realBounds = new Bounds(bounds);
|
|
6804
|
+
const { canvas } = this, bounds = block.getIntersect(canvas.bounds), realBounds = new Bounds(bounds);
|
|
6756
6805
|
canvas.save();
|
|
6757
|
-
|
|
6758
|
-
|
|
6759
|
-
|
|
6760
|
-
|
|
6761
|
-
bounds.spread(10 + 1 / this.canvas.pixelRatio).ceil();
|
|
6762
|
-
canvas.clearWorld(bounds, true);
|
|
6763
|
-
canvas.clipWorld(bounds, true);
|
|
6764
|
-
}
|
|
6765
|
-
this.__render(bounds, includes, realBounds);
|
|
6806
|
+
bounds.spread(Renderer.clipSpread).ceil();
|
|
6807
|
+
canvas.clearWorld(bounds, true);
|
|
6808
|
+
canvas.clipWorld(bounds, true);
|
|
6809
|
+
this.__render(bounds, block.includes(this.target.__world), realBounds);
|
|
6766
6810
|
canvas.restore();
|
|
6767
6811
|
Run.end(t);
|
|
6768
6812
|
}
|
|
@@ -6776,23 +6820,17 @@ class Renderer {
|
|
|
6776
6820
|
Run.end(t);
|
|
6777
6821
|
}
|
|
6778
6822
|
__render(bounds, includes, realBounds) {
|
|
6779
|
-
const options =
|
|
6823
|
+
const { canvas } = this, options = includes ? { includes } : { bounds, includes };
|
|
6780
6824
|
if (this.needFill)
|
|
6781
|
-
|
|
6825
|
+
canvas.fillWorld(bounds, this.config.fill);
|
|
6782
6826
|
if (Debug.showRepaint)
|
|
6783
|
-
|
|
6784
|
-
this.target.__render(
|
|
6827
|
+
Debug.drawRepaint(canvas, bounds);
|
|
6828
|
+
this.target.__render(canvas, options);
|
|
6785
6829
|
this.renderBounds = realBounds = realBounds || bounds;
|
|
6786
6830
|
this.renderOptions = options;
|
|
6787
6831
|
this.totalBounds.isEmpty() ? this.totalBounds = realBounds : this.totalBounds.add(realBounds);
|
|
6788
|
-
|
|
6789
|
-
|
|
6790
|
-
if (Debug.showBoundsView)
|
|
6791
|
-
this.renderBoundsView(options);
|
|
6792
|
-
this.canvas.updateRender(realBounds);
|
|
6793
|
-
}
|
|
6794
|
-
renderHitView(_options) { }
|
|
6795
|
-
renderBoundsView(_options) { }
|
|
6832
|
+
canvas.updateRender(realBounds);
|
|
6833
|
+
}
|
|
6796
6834
|
addBlock(block) {
|
|
6797
6835
|
if (!this.updateBlocks)
|
|
6798
6836
|
this.updateBlocks = [];
|
|
@@ -6808,17 +6846,24 @@ class Renderer {
|
|
|
6808
6846
|
}
|
|
6809
6847
|
}
|
|
6810
6848
|
__requestRender() {
|
|
6849
|
+
const target = this.target;
|
|
6850
|
+
if (target.parentApp)
|
|
6851
|
+
return target.parentApp.renderer.update(false);
|
|
6811
6852
|
if (this.requestTime)
|
|
6812
6853
|
return;
|
|
6813
6854
|
const requestTime = this.requestTime = Date.now();
|
|
6814
6855
|
Platform.requestRender(() => {
|
|
6815
6856
|
this.FPS = Math.min(60, Math.ceil(1000 / (Date.now() - requestTime)));
|
|
6816
6857
|
this.requestTime = 0;
|
|
6817
|
-
if (
|
|
6818
|
-
|
|
6819
|
-
|
|
6820
|
-
|
|
6858
|
+
if (target.isApp) {
|
|
6859
|
+
target.emit(RenderEvent.CHILD_START, target);
|
|
6860
|
+
target.children.forEach(leafer => {
|
|
6861
|
+
leafer.renderer.FPS = this.FPS;
|
|
6862
|
+
leafer.renderer.checkRender();
|
|
6863
|
+
});
|
|
6864
|
+
target.emit(RenderEvent.CHILD_END, target);
|
|
6821
6865
|
}
|
|
6866
|
+
this.checkRender();
|
|
6822
6867
|
});
|
|
6823
6868
|
}
|
|
6824
6869
|
__onResize(e) {
|
|
@@ -6876,6 +6921,7 @@ class Renderer {
|
|
|
6876
6921
|
}
|
|
6877
6922
|
}
|
|
6878
6923
|
}
|
|
6924
|
+
Renderer.clipSpread = 10;
|
|
6879
6925
|
|
|
6880
6926
|
const { hitRadiusPoint } = BoundsHelper;
|
|
6881
6927
|
class Picker {
|
|
@@ -7121,6 +7167,7 @@ class UIData extends LeafData {
|
|
|
7121
7167
|
return strokeWidth;
|
|
7122
7168
|
}
|
|
7123
7169
|
get __hasStroke() { return this.stroke && this.strokeWidth; }
|
|
7170
|
+
get __hasHalf() { const t = this; return (t.stroke && t.strokeAlign === 'center' && t.strokeWidth % 2) || undefined; }
|
|
7124
7171
|
get __hasMultiPaint() {
|
|
7125
7172
|
const t = this;
|
|
7126
7173
|
if ((t.__isFills && t.fill.length > 1) || (t.__isStrokes && t.stroke.length > 1) || t.__useEffect)
|
|
@@ -7165,14 +7212,14 @@ class UIData extends LeafData {
|
|
|
7165
7212
|
this.__removeInput('fill');
|
|
7166
7213
|
PaintImage.recycleImage('fill', this);
|
|
7167
7214
|
this.__isFills = false;
|
|
7168
|
-
|
|
7169
|
-
this.__pixelFill = false;
|
|
7215
|
+
this.__pixelFill && (this.__pixelFill = false);
|
|
7170
7216
|
}
|
|
7171
7217
|
this._fill = value;
|
|
7172
7218
|
}
|
|
7173
7219
|
else if (typeof value === 'object') {
|
|
7174
7220
|
this.__setInput('fill', value);
|
|
7175
|
-
|
|
7221
|
+
const layout = this.__leaf.__layout;
|
|
7222
|
+
layout.boxChanged || layout.boxChange();
|
|
7176
7223
|
this.__isFills = true;
|
|
7177
7224
|
this._fill || (this._fill = emptyPaint);
|
|
7178
7225
|
}
|
|
@@ -7183,14 +7230,14 @@ class UIData extends LeafData {
|
|
|
7183
7230
|
this.__removeInput('stroke');
|
|
7184
7231
|
PaintImage.recycleImage('stroke', this);
|
|
7185
7232
|
this.__isStrokes = false;
|
|
7186
|
-
|
|
7187
|
-
this.__pixelStroke = false;
|
|
7233
|
+
this.__pixelStroke && (this.__pixelStroke = false);
|
|
7188
7234
|
}
|
|
7189
7235
|
this._stroke = value;
|
|
7190
7236
|
}
|
|
7191
7237
|
else if (typeof value === 'object') {
|
|
7192
7238
|
this.__setInput('stroke', value);
|
|
7193
|
-
|
|
7239
|
+
const layout = this.__leaf.__layout;
|
|
7240
|
+
layout.boxChanged || layout.boxChange();
|
|
7194
7241
|
this.__isStrokes = true;
|
|
7195
7242
|
this._stroke || (this._stroke = emptyPaint);
|
|
7196
7243
|
}
|
|
@@ -7305,6 +7352,31 @@ class TextData extends UIData {
|
|
|
7305
7352
|
this._fontWeight = value;
|
|
7306
7353
|
}
|
|
7307
7354
|
}
|
|
7355
|
+
setBoxStyle(value) {
|
|
7356
|
+
let t = this.__leaf, box = t.__box;
|
|
7357
|
+
if (value) {
|
|
7358
|
+
const { boxStyle } = this;
|
|
7359
|
+
if (box)
|
|
7360
|
+
for (let key in boxStyle)
|
|
7361
|
+
box[key] = undefined;
|
|
7362
|
+
else
|
|
7363
|
+
box = t.__box = UICreator.get('Rect', 0);
|
|
7364
|
+
const layout = t.__layout, boxLayout = box.__layout;
|
|
7365
|
+
if (!boxStyle)
|
|
7366
|
+
box.parent = t, box.__world = t.__world, boxLayout.boxBounds = layout.boxBounds;
|
|
7367
|
+
box.set(value);
|
|
7368
|
+
if (boxLayout.strokeChanged)
|
|
7369
|
+
layout.strokeChange();
|
|
7370
|
+
if (boxLayout.renderChanged)
|
|
7371
|
+
layout.renderChange();
|
|
7372
|
+
box.__updateChange();
|
|
7373
|
+
}
|
|
7374
|
+
else if (box) {
|
|
7375
|
+
t.__box = box.parent = null;
|
|
7376
|
+
box.destroy();
|
|
7377
|
+
}
|
|
7378
|
+
this._boxStyle = value;
|
|
7379
|
+
}
|
|
7308
7380
|
}
|
|
7309
7381
|
|
|
7310
7382
|
class ImageData extends RectData {
|
|
@@ -7342,7 +7414,7 @@ class CanvasData extends RectData {
|
|
|
7342
7414
|
const UIBounds = {
|
|
7343
7415
|
__updateStrokeSpread() {
|
|
7344
7416
|
let width = 0, boxWidth = 0;
|
|
7345
|
-
const data = this.__, { strokeAlign, strokeWidth } = data;
|
|
7417
|
+
const data = this.__, { strokeAlign, strokeWidth } = data, box = this.__box;
|
|
7346
7418
|
if ((data.stroke || data.hitStroke === 'all') && strokeWidth && strokeAlign !== 'inside') {
|
|
7347
7419
|
boxWidth = width = strokeAlign === 'center' ? strokeWidth / 2 : strokeWidth;
|
|
7348
7420
|
if (!data.__boxStroke) {
|
|
@@ -7353,6 +7425,10 @@ const UIBounds = {
|
|
|
7353
7425
|
}
|
|
7354
7426
|
if (data.__useArrow)
|
|
7355
7427
|
width += strokeWidth * 5;
|
|
7428
|
+
if (box) {
|
|
7429
|
+
width = Math.max(box.__layout.strokeSpread = box.__updateStrokeSpread(), width);
|
|
7430
|
+
boxWidth = box.__layout.strokeBoxSpread;
|
|
7431
|
+
}
|
|
7356
7432
|
this.__layout.strokeBoxSpread = boxWidth;
|
|
7357
7433
|
return width;
|
|
7358
7434
|
},
|
|
@@ -7371,25 +7447,26 @@ const UIBounds = {
|
|
|
7371
7447
|
if (backgroundBlur)
|
|
7372
7448
|
shapeWidth = Math.max(shapeWidth, backgroundBlur);
|
|
7373
7449
|
this.__layout.renderShapeSpread = shapeWidth;
|
|
7374
|
-
|
|
7450
|
+
width += this.__layout.strokeSpread || 0;
|
|
7451
|
+
return this.__box ? Math.max(this.__box.__updateRenderSpread(), width) : width;
|
|
7375
7452
|
}
|
|
7376
7453
|
};
|
|
7377
7454
|
|
|
7378
7455
|
const UIRender = {
|
|
7379
7456
|
__updateChange() {
|
|
7380
|
-
const data = this.__;
|
|
7457
|
+
const data = this.__, w = this.__world;
|
|
7381
7458
|
if (data.__useEffect) {
|
|
7382
7459
|
const { shadow, innerShadow, blur, backgroundBlur, filter } = this.__;
|
|
7383
7460
|
data.__useEffect = !!(shadow || innerShadow || blur || backgroundBlur || filter);
|
|
7384
7461
|
}
|
|
7462
|
+
const half = data.__hasHalf;
|
|
7463
|
+
w.half !== half && (w.half = half);
|
|
7385
7464
|
data.__checkSingle();
|
|
7386
7465
|
const complex = data.__isFills || data.__isStrokes || data.cornerRadius || data.__useEffect;
|
|
7387
|
-
if (complex)
|
|
7466
|
+
if (complex)
|
|
7388
7467
|
data.__complex = true;
|
|
7389
|
-
|
|
7390
|
-
else {
|
|
7468
|
+
else
|
|
7391
7469
|
data.__complex && (data.__complex = false);
|
|
7392
|
-
}
|
|
7393
7470
|
},
|
|
7394
7471
|
__drawFast(canvas, options) {
|
|
7395
7472
|
drawFast(this, canvas, options);
|
|
@@ -7476,10 +7553,11 @@ function drawFast(ui, canvas, options) {
|
|
|
7476
7553
|
|
|
7477
7554
|
const RectRender = {
|
|
7478
7555
|
__drawFast(canvas, options) {
|
|
7479
|
-
let {
|
|
7556
|
+
let { x, y, width, height } = this.__layout.boxBounds;
|
|
7557
|
+
const { fill, stroke, __drawAfterFill } = this.__;
|
|
7480
7558
|
if (fill) {
|
|
7481
7559
|
canvas.fillStyle = fill;
|
|
7482
|
-
canvas.fillRect(
|
|
7560
|
+
canvas.fillRect(x, y, width, height);
|
|
7483
7561
|
}
|
|
7484
7562
|
if (__drawAfterFill)
|
|
7485
7563
|
this.__drawAfterFill(canvas, options);
|
|
@@ -7498,14 +7576,14 @@ const RectRender = {
|
|
|
7498
7576
|
if (width < 0 || height < 0) {
|
|
7499
7577
|
canvas.save();
|
|
7500
7578
|
this.__clip(canvas, options);
|
|
7501
|
-
canvas.strokeRect(half, half, width, height);
|
|
7579
|
+
canvas.strokeRect(x + half, y + half, width, height);
|
|
7502
7580
|
canvas.restore();
|
|
7503
7581
|
}
|
|
7504
7582
|
else
|
|
7505
|
-
canvas.strokeRect(half, half, width, height);
|
|
7583
|
+
canvas.strokeRect(x + half, y + half, width, height);
|
|
7506
7584
|
break;
|
|
7507
7585
|
case 'outside':
|
|
7508
|
-
canvas.strokeRect(-half, -half, width + __strokeWidth, height + __strokeWidth);
|
|
7586
|
+
canvas.strokeRect(x - half, y - half, width + __strokeWidth, height + __strokeWidth);
|
|
7509
7587
|
break;
|
|
7510
7588
|
}
|
|
7511
7589
|
}
|
|
@@ -7661,6 +7739,12 @@ __decorate([
|
|
|
7661
7739
|
__decorate([
|
|
7662
7740
|
surfaceType(false)
|
|
7663
7741
|
], UI.prototype, "locked", void 0);
|
|
7742
|
+
__decorate([
|
|
7743
|
+
surfaceType(false)
|
|
7744
|
+
], UI.prototype, "dim", void 0);
|
|
7745
|
+
__decorate([
|
|
7746
|
+
surfaceType(false)
|
|
7747
|
+
], UI.prototype, "dimskip", void 0);
|
|
7664
7748
|
__decorate([
|
|
7665
7749
|
sortType(0)
|
|
7666
7750
|
], UI.prototype, "zIndex", void 0);
|
|
@@ -7922,7 +8006,7 @@ let Leafer = Leafer_1 = class Leafer extends Group {
|
|
|
7922
8006
|
start: true,
|
|
7923
8007
|
hittable: true,
|
|
7924
8008
|
smooth: true,
|
|
7925
|
-
lazySpeard: 100
|
|
8009
|
+
lazySpeard: 100,
|
|
7926
8010
|
};
|
|
7927
8011
|
this.leafs = 0;
|
|
7928
8012
|
this.__eventIds = [];
|
|
@@ -8346,13 +8430,13 @@ let Box = class Box extends Group {
|
|
|
8346
8430
|
super.__updateRenderBounds();
|
|
8347
8431
|
copy$3(childrenRenderBounds, renderBounds);
|
|
8348
8432
|
this.__updateRectRenderBounds();
|
|
8349
|
-
isOverflow = !includes$1(renderBounds, childrenRenderBounds);
|
|
8433
|
+
isOverflow = !includes$1(renderBounds, childrenRenderBounds) || undefined;
|
|
8350
8434
|
if (isOverflow && this.__.overflow !== 'hide')
|
|
8351
8435
|
add(renderBounds, childrenRenderBounds);
|
|
8352
8436
|
}
|
|
8353
8437
|
else
|
|
8354
8438
|
this.__updateRectRenderBounds();
|
|
8355
|
-
|
|
8439
|
+
this.isOverflow !== isOverflow && (this.isOverflow = isOverflow);
|
|
8356
8440
|
}
|
|
8357
8441
|
__updateRectRenderBounds() { }
|
|
8358
8442
|
__updateRectChange() { }
|
|
@@ -8760,33 +8844,13 @@ Canvas = __decorate([
|
|
|
8760
8844
|
registerUI()
|
|
8761
8845
|
], Canvas);
|
|
8762
8846
|
|
|
8763
|
-
const { copyAndSpread, includes,
|
|
8847
|
+
const { copyAndSpread, includes, spread, setList } = BoundsHelper;
|
|
8764
8848
|
let Text = class Text extends UI {
|
|
8765
8849
|
get __tag() { return 'Text'; }
|
|
8766
|
-
get textDrawData() {
|
|
8767
|
-
this.__layout.update();
|
|
8768
|
-
return this.__.__textDrawData;
|
|
8769
|
-
}
|
|
8850
|
+
get textDrawData() { this.updateLayout(); return this.__.__textDrawData; }
|
|
8770
8851
|
constructor(data) {
|
|
8771
8852
|
super(data);
|
|
8772
8853
|
}
|
|
8773
|
-
__drawHitPath(canvas) {
|
|
8774
|
-
const { __lineHeight, fontSize, __baseLine, __textDrawData: data } = this.__;
|
|
8775
|
-
canvas.beginPath();
|
|
8776
|
-
if (this.__.__letterSpacing < 0) {
|
|
8777
|
-
this.__drawPathByData(canvas);
|
|
8778
|
-
}
|
|
8779
|
-
else {
|
|
8780
|
-
data.rows.forEach(row => canvas.rect(row.x, row.y - __baseLine, row.width, __lineHeight < fontSize ? fontSize : __lineHeight));
|
|
8781
|
-
}
|
|
8782
|
-
}
|
|
8783
|
-
__drawPathByData(drawer, _data) {
|
|
8784
|
-
const { x, y, width, height } = this.__layout.boxBounds;
|
|
8785
|
-
drawer.rect(x, y, width, height);
|
|
8786
|
-
}
|
|
8787
|
-
__drawRenderPath(canvas) {
|
|
8788
|
-
canvas.font = this.__.__font;
|
|
8789
|
-
}
|
|
8790
8854
|
__updateTextDrawData() {
|
|
8791
8855
|
const data = this.__;
|
|
8792
8856
|
const { lineHeight, letterSpacing, fontFamily, fontSize, fontWeight, italic, textCase, textOverflow, padding } = data;
|
|
@@ -8803,15 +8867,16 @@ let Text = class Text extends UI {
|
|
|
8803
8867
|
const layout = this.__layout;
|
|
8804
8868
|
const { fontSize, italic, padding, __autoWidth: autoWidth, __autoHeight: autoHeight } = data;
|
|
8805
8869
|
this.__updateTextDrawData();
|
|
8806
|
-
const { bounds } = data.__textDrawData;
|
|
8870
|
+
const { bounds: contentBounds } = data.__textDrawData;
|
|
8807
8871
|
const b = layout.boxBounds;
|
|
8872
|
+
layout.contentBounds = contentBounds;
|
|
8808
8873
|
if (data.__lineHeight < fontSize)
|
|
8809
|
-
spread(
|
|
8874
|
+
spread(contentBounds, fontSize / 2);
|
|
8810
8875
|
if (autoWidth || autoHeight) {
|
|
8811
|
-
b.x = autoWidth ?
|
|
8812
|
-
b.y = autoHeight ?
|
|
8813
|
-
b.width = autoWidth ?
|
|
8814
|
-
b.height = autoHeight ?
|
|
8876
|
+
b.x = autoWidth ? contentBounds.x : 0;
|
|
8877
|
+
b.y = autoHeight ? contentBounds.y : 0;
|
|
8878
|
+
b.width = autoWidth ? contentBounds.width : data.width;
|
|
8879
|
+
b.height = autoHeight ? contentBounds.height : data.height;
|
|
8815
8880
|
if (padding) {
|
|
8816
8881
|
const [top, right, bottom, left] = data.__padding;
|
|
8817
8882
|
if (autoWidth)
|
|
@@ -8825,23 +8890,45 @@ let Text = class Text extends UI {
|
|
|
8825
8890
|
super.__updateBoxBounds();
|
|
8826
8891
|
if (italic)
|
|
8827
8892
|
b.width += fontSize * 0.16;
|
|
8828
|
-
const
|
|
8829
|
-
if (
|
|
8830
|
-
|
|
8831
|
-
layout.renderChanged = true;
|
|
8832
|
-
setList(data.__textBoxBounds = {}, [b, bounds]);
|
|
8833
|
-
}
|
|
8893
|
+
const isOverflow = !includes(b, contentBounds) || undefined;
|
|
8894
|
+
if (isOverflow)
|
|
8895
|
+
setList(data.__textBoxBounds = {}, [b, contentBounds]), layout.renderChanged = true;
|
|
8834
8896
|
else
|
|
8835
|
-
data.__textBoxBounds =
|
|
8897
|
+
data.__textBoxBounds = b;
|
|
8898
|
+
this.isOverflow !== isOverflow && (this.isOverflow = isOverflow);
|
|
8899
|
+
}
|
|
8900
|
+
__onUpdateSize() {
|
|
8901
|
+
if (this.__box)
|
|
8902
|
+
this.__box.__onUpdateSize();
|
|
8903
|
+
super.__onUpdateSize();
|
|
8836
8904
|
}
|
|
8837
8905
|
__updateRenderSpread() {
|
|
8838
8906
|
let width = super.__updateRenderSpread();
|
|
8839
8907
|
if (!width)
|
|
8840
|
-
width = this.
|
|
8908
|
+
width = this.isOverflow ? 1 : 0;
|
|
8841
8909
|
return width;
|
|
8842
8910
|
}
|
|
8843
8911
|
__updateRenderBounds() {
|
|
8844
|
-
|
|
8912
|
+
const { renderBounds, renderSpread } = this.__layout;
|
|
8913
|
+
copyAndSpread(renderBounds, this.__.__textBoxBounds, renderSpread);
|
|
8914
|
+
if (this.__box)
|
|
8915
|
+
this.__box.__layout.renderBounds = renderBounds;
|
|
8916
|
+
}
|
|
8917
|
+
__drawRenderPath(canvas) {
|
|
8918
|
+
canvas.font = this.__.__font;
|
|
8919
|
+
}
|
|
8920
|
+
__draw(canvas, options, originCanvas) {
|
|
8921
|
+
const box = this.__box;
|
|
8922
|
+
if (box)
|
|
8923
|
+
box.__nowWorld = this.__nowWorld, box.__draw(canvas, options, originCanvas);
|
|
8924
|
+
if (this.textEditing && !Export.running)
|
|
8925
|
+
return;
|
|
8926
|
+
super.__draw(canvas, options, originCanvas);
|
|
8927
|
+
}
|
|
8928
|
+
destroy() {
|
|
8929
|
+
if (this.boxStyle)
|
|
8930
|
+
this.boxStyle = null;
|
|
8931
|
+
super.destroy();
|
|
8845
8932
|
}
|
|
8846
8933
|
};
|
|
8847
8934
|
__decorate([
|
|
@@ -8853,6 +8940,9 @@ __decorate([
|
|
|
8853
8940
|
__decorate([
|
|
8854
8941
|
boundsType(0)
|
|
8855
8942
|
], Text.prototype, "height", void 0);
|
|
8943
|
+
__decorate([
|
|
8944
|
+
surfaceType()
|
|
8945
|
+
], Text.prototype, "boxStyle", void 0);
|
|
8856
8946
|
__decorate([
|
|
8857
8947
|
dataType(false)
|
|
8858
8948
|
], Text.prototype, "resizeFontSize", void 0);
|
|
@@ -9016,26 +9106,25 @@ let App = class App extends Leafer {
|
|
|
9016
9106
|
this.leafer = this;
|
|
9017
9107
|
this.watcher.disable();
|
|
9018
9108
|
this.layouter.disable();
|
|
9019
|
-
this.__eventIds.push(this.on_(PropertyEvent.CHANGE, this.__onPropertyChange, this));
|
|
9020
9109
|
}
|
|
9021
9110
|
start() {
|
|
9022
9111
|
super.start();
|
|
9023
|
-
this.
|
|
9112
|
+
this.forEach(leafer => leafer.start());
|
|
9024
9113
|
}
|
|
9025
9114
|
stop() {
|
|
9026
|
-
this.
|
|
9115
|
+
this.forEach(leafer => leafer.stop());
|
|
9027
9116
|
super.stop();
|
|
9028
9117
|
}
|
|
9029
9118
|
unlockLayout() {
|
|
9030
9119
|
super.unlockLayout();
|
|
9031
|
-
this.
|
|
9120
|
+
this.forEach(leafer => leafer.unlockLayout());
|
|
9032
9121
|
}
|
|
9033
9122
|
lockLayout() {
|
|
9034
9123
|
super.lockLayout();
|
|
9035
|
-
this.
|
|
9124
|
+
this.forEach(leafer => leafer.lockLayout());
|
|
9036
9125
|
}
|
|
9037
9126
|
forceRender(bounds, sync) {
|
|
9038
|
-
this.
|
|
9127
|
+
this.forEach(leafer => leafer.forceRender(bounds, sync));
|
|
9039
9128
|
}
|
|
9040
9129
|
addLeafer(merge) {
|
|
9041
9130
|
const leafer = new Leafer(merge);
|
|
@@ -9055,9 +9144,8 @@ let App = class App extends Leafer {
|
|
|
9055
9144
|
leafer.canvas.childIndex = index;
|
|
9056
9145
|
this.__listenChildEvents(leafer);
|
|
9057
9146
|
}
|
|
9058
|
-
|
|
9059
|
-
|
|
9060
|
-
this.children.forEach(leafer => leafer.forceUpdate('surface'));
|
|
9147
|
+
forEach(fn) {
|
|
9148
|
+
this.children.forEach(fn);
|
|
9061
9149
|
}
|
|
9062
9150
|
__onCreated() {
|
|
9063
9151
|
this.created = this.children.every(child => child.created);
|
|
@@ -9080,18 +9168,18 @@ let App = class App extends Leafer {
|
|
|
9080
9168
|
const m = options.matrix;
|
|
9081
9169
|
if (m)
|
|
9082
9170
|
canvas.setTransform(m.a, m.b, m.c, m.d, m.e, m.f);
|
|
9083
|
-
this.
|
|
9171
|
+
this.forEach(leafer => canvas.copyWorld(leafer.canvas));
|
|
9084
9172
|
}
|
|
9085
9173
|
}
|
|
9086
9174
|
__onResize(event) {
|
|
9087
|
-
this.
|
|
9175
|
+
this.forEach(leafer => leafer.resize(event));
|
|
9088
9176
|
super.__onResize(event);
|
|
9089
9177
|
}
|
|
9090
9178
|
updateLayout() {
|
|
9091
|
-
this.
|
|
9179
|
+
this.forEach(leafer => leafer.updateLayout());
|
|
9092
9180
|
}
|
|
9093
9181
|
__getChildConfig(userConfig) {
|
|
9094
|
-
|
|
9182
|
+
const config = Object.assign({}, this.config);
|
|
9095
9183
|
config.hittable = config.realCanvas = undefined;
|
|
9096
9184
|
if (userConfig)
|
|
9097
9185
|
DataHelper.assign(config, userConfig);
|
|
@@ -9650,6 +9738,7 @@ const config = {
|
|
|
9650
9738
|
delta: { x: 80 / 4, y: 8.0 },
|
|
9651
9739
|
},
|
|
9652
9740
|
pointer: {
|
|
9741
|
+
snap: true,
|
|
9653
9742
|
hitRadius: 5,
|
|
9654
9743
|
tapTime: 120,
|
|
9655
9744
|
longPressTime: 800,
|
|
@@ -9744,7 +9833,7 @@ class InteractionBase {
|
|
|
9744
9833
|
if (this.downData) {
|
|
9745
9834
|
const canDrag = PointHelper.getDistance(this.downData, data) > this.p.dragDistance;
|
|
9746
9835
|
if (canDrag) {
|
|
9747
|
-
if (this.waitTap)
|
|
9836
|
+
if (this.waitTap || this.longPressTimer)
|
|
9748
9837
|
this.pointerWaitCancel();
|
|
9749
9838
|
this.waitRightTap = false;
|
|
9750
9839
|
}
|
|
@@ -10005,7 +10094,10 @@ class InteractionBase {
|
|
|
10005
10094
|
}
|
|
10006
10095
|
getLocal(clientPoint, updateClient) {
|
|
10007
10096
|
const clientBounds = this.canvas.getClientBounds(updateClient);
|
|
10008
|
-
|
|
10097
|
+
const point = { x: clientPoint.clientX - clientBounds.x, y: clientPoint.clientY - clientBounds.y };
|
|
10098
|
+
if (this.p.snap)
|
|
10099
|
+
PointHelper.round(point);
|
|
10100
|
+
return point;
|
|
10009
10101
|
}
|
|
10010
10102
|
emitTap(data) {
|
|
10011
10103
|
this.emit(PointerEvent.TAP, data);
|
|
@@ -10137,25 +10229,26 @@ const { toInnerRadiusPointOf, copy: copy$2, setRadius } = PointHelper;
|
|
|
10137
10229
|
const inner = {};
|
|
10138
10230
|
const leaf = Leaf.prototype;
|
|
10139
10231
|
leaf.__hitWorld = function (point) {
|
|
10140
|
-
|
|
10232
|
+
const data = this.__;
|
|
10233
|
+
if (!data.hitSelf)
|
|
10141
10234
|
return false;
|
|
10142
|
-
|
|
10235
|
+
const world = this.__world, layout = this.__layout;
|
|
10236
|
+
const isSmall = world.width < 10 && world.height < 10;
|
|
10237
|
+
if (data.hitRadius) {
|
|
10143
10238
|
copy$2(inner, point), point = inner;
|
|
10144
|
-
setRadius(point,
|
|
10239
|
+
setRadius(point, data.hitRadius);
|
|
10145
10240
|
}
|
|
10146
|
-
toInnerRadiusPointOf(point,
|
|
10147
|
-
|
|
10148
|
-
|
|
10149
|
-
if (this.__.hitBox || isSmall) {
|
|
10150
|
-
if (BoundsHelper.hitRadiusPoint(this.__layout.boxBounds, inner))
|
|
10241
|
+
toInnerRadiusPointOf(point, world, inner);
|
|
10242
|
+
if (data.hitBox || isSmall) {
|
|
10243
|
+
if (BoundsHelper.hitRadiusPoint(layout.boxBounds, inner))
|
|
10151
10244
|
return true;
|
|
10152
10245
|
if (isSmall)
|
|
10153
10246
|
return false;
|
|
10154
10247
|
}
|
|
10155
|
-
if (
|
|
10248
|
+
if (layout.hitCanvasChanged || !this.__hitCanvas) {
|
|
10156
10249
|
this.__updateHitCanvas();
|
|
10157
|
-
if (!
|
|
10158
|
-
|
|
10250
|
+
if (!layout.boundsChanged)
|
|
10251
|
+
layout.hitCanvasChanged = false;
|
|
10159
10252
|
}
|
|
10160
10253
|
return this.__hit(inner);
|
|
10161
10254
|
};
|
|
@@ -10168,7 +10261,9 @@ leaf.__drawHitPath = function (canvas) { if (canvas)
|
|
|
10168
10261
|
const matrix = new Matrix();
|
|
10169
10262
|
const ui$1 = UI.prototype;
|
|
10170
10263
|
ui$1.__updateHitCanvas = function () {
|
|
10171
|
-
|
|
10264
|
+
if (this.__box)
|
|
10265
|
+
this.__box.__updateHitCanvas();
|
|
10266
|
+
const data = this.__, { hitCanvasManager } = this.leafer || this.parent.leafer;
|
|
10172
10267
|
const isHitPixelFill = (data.__pixelFill || data.__isCanvas) && data.hitFill === 'pixel';
|
|
10173
10268
|
const isHitPixelStroke = data.__pixelStroke && data.hitStroke === 'pixel';
|
|
10174
10269
|
const isHitPixel = isHitPixelFill || isHitPixelStroke;
|
|
@@ -10195,6 +10290,8 @@ ui$1.__updateHitCanvas = function () {
|
|
|
10195
10290
|
h.setStrokeOptions(data);
|
|
10196
10291
|
};
|
|
10197
10292
|
ui$1.__hit = function (inner) {
|
|
10293
|
+
if (this.__box && this.__box.__hit(inner))
|
|
10294
|
+
return true;
|
|
10198
10295
|
const data = this.__;
|
|
10199
10296
|
if (data.__isHitPixel && this.__hitPixel(inner))
|
|
10200
10297
|
return true;
|
|
@@ -10243,6 +10340,15 @@ rect.__hitFill = box$1.__hitFill = function (inner) {
|
|
|
10243
10340
|
return this.__hitCanvas ? ui.__hitFill.call(this, inner) : BoundsHelper.hitRadiusPoint(this.__layout.boxBounds, inner);
|
|
10244
10341
|
};
|
|
10245
10342
|
|
|
10343
|
+
Text.prototype.__drawHitPath = function (canvas) {
|
|
10344
|
+
const { __lineHeight, fontSize, __baseLine, __letterSpacing, __textDrawData: data } = this.__;
|
|
10345
|
+
canvas.beginPath();
|
|
10346
|
+
if (__letterSpacing < 0)
|
|
10347
|
+
this.__drawPathByBox(canvas);
|
|
10348
|
+
else
|
|
10349
|
+
data.rows.forEach(row => canvas.rect(row.x, row.y - __baseLine, row.width, __lineHeight < fontSize ? fontSize : __lineHeight));
|
|
10350
|
+
};
|
|
10351
|
+
|
|
10246
10352
|
function getSelector(ui) {
|
|
10247
10353
|
return ui.leafer ? ui.leafer.selector : (Platform.selector || (Platform.selector = Creator.selector()));
|
|
10248
10354
|
}
|
|
@@ -10730,9 +10836,11 @@ const tempBox = new Bounds();
|
|
|
10730
10836
|
const tempPoint = {};
|
|
10731
10837
|
const tempScaleData = {};
|
|
10732
10838
|
function createData(leafPaint, image, paint, box) {
|
|
10733
|
-
const { blendMode, sync } = paint;
|
|
10839
|
+
const { blendMode, changeful, sync } = paint;
|
|
10734
10840
|
if (blendMode)
|
|
10735
10841
|
leafPaint.blendMode = blendMode;
|
|
10842
|
+
if (changeful)
|
|
10843
|
+
leafPaint.changeful = changeful;
|
|
10736
10844
|
if (sync)
|
|
10737
10845
|
leafPaint.sync = sync;
|
|
10738
10846
|
leafPaint.data = getPatternData(paint, box, image);
|
|
@@ -10965,40 +11073,32 @@ function createPattern(ui, paint, pixelRatio) {
|
|
|
10965
11073
|
}
|
|
10966
11074
|
|
|
10967
11075
|
const { abs } = Math;
|
|
10968
|
-
function checkImage(ui, canvas, paint,
|
|
11076
|
+
function checkImage(ui, canvas, paint, allowDraw) {
|
|
10969
11077
|
const { scaleX, scaleY } = ImageManager.patternLocked ? ui.__world : ui.__nowWorld;
|
|
10970
|
-
const { pixelRatio } = canvas;
|
|
10971
|
-
if (!
|
|
11078
|
+
const { pixelRatio } = canvas, { data } = paint;
|
|
11079
|
+
if (!data || (paint.patternId === scaleX + '-' + scaleY + '-' + pixelRatio && !Export.running)) {
|
|
10972
11080
|
return false;
|
|
10973
11081
|
}
|
|
10974
11082
|
else {
|
|
10975
|
-
|
|
10976
|
-
|
|
10977
|
-
|
|
10978
|
-
let { width, height } = data;
|
|
10979
|
-
width *= abs(scaleX) * pixelRatio;
|
|
10980
|
-
height *= abs(scaleY) * pixelRatio;
|
|
10981
|
-
if (data.scaleX) {
|
|
10982
|
-
width *= data.scaleX;
|
|
10983
|
-
height *= data.scaleY;
|
|
10984
|
-
}
|
|
10985
|
-
allowPaint = (width * height > Platform.image.maxCacheSize) || Export.running;
|
|
11083
|
+
if (allowDraw) {
|
|
11084
|
+
if (data.repeat) {
|
|
11085
|
+
allowDraw = false;
|
|
10986
11086
|
}
|
|
10987
11087
|
else {
|
|
10988
|
-
|
|
11088
|
+
if (!(paint.changeful || ResizeEvent.isResizing(ui) || Export.running)) {
|
|
11089
|
+
let { width, height } = data;
|
|
11090
|
+
width *= abs(scaleX) * pixelRatio;
|
|
11091
|
+
height *= abs(scaleY) * pixelRatio;
|
|
11092
|
+
if (data.scaleX) {
|
|
11093
|
+
width *= data.scaleX;
|
|
11094
|
+
height *= data.scaleY;
|
|
11095
|
+
}
|
|
11096
|
+
allowDraw = (width * height > Platform.image.maxCacheSize);
|
|
11097
|
+
}
|
|
10989
11098
|
}
|
|
10990
11099
|
}
|
|
10991
|
-
if (
|
|
10992
|
-
canvas
|
|
10993
|
-
ui.windingRule ? canvas.clip(ui.windingRule) : canvas.clip();
|
|
10994
|
-
if (paint.blendMode)
|
|
10995
|
-
canvas.blendMode = paint.blendMode;
|
|
10996
|
-
if (data.opacity)
|
|
10997
|
-
canvas.opacity *= data.opacity;
|
|
10998
|
-
if (data.transform)
|
|
10999
|
-
canvas.transform(data.transform);
|
|
11000
|
-
canvas.drawImage(paint.image.getFull(data.filters), 0, 0, data.width, data.height);
|
|
11001
|
-
canvas.restore();
|
|
11100
|
+
if (allowDraw) {
|
|
11101
|
+
drawImage(ui, canvas, paint, data);
|
|
11002
11102
|
return true;
|
|
11003
11103
|
}
|
|
11004
11104
|
else {
|
|
@@ -11019,13 +11119,26 @@ function checkImage(ui, canvas, paint, allowPaint) {
|
|
|
11019
11119
|
}
|
|
11020
11120
|
}
|
|
11021
11121
|
}
|
|
11122
|
+
function drawImage(ui, canvas, paint, data) {
|
|
11123
|
+
canvas.save();
|
|
11124
|
+
ui.windingRule ? canvas.clip(ui.windingRule) : canvas.clip();
|
|
11125
|
+
if (paint.blendMode)
|
|
11126
|
+
canvas.blendMode = paint.blendMode;
|
|
11127
|
+
if (data.opacity)
|
|
11128
|
+
canvas.opacity *= data.opacity;
|
|
11129
|
+
if (data.transform)
|
|
11130
|
+
canvas.transform(data.transform);
|
|
11131
|
+
canvas.drawImage(paint.image.getFull(data.filters), 0, 0, data.width, data.height);
|
|
11132
|
+
canvas.restore();
|
|
11133
|
+
}
|
|
11022
11134
|
|
|
11023
11135
|
function recycleImage(attrName, data) {
|
|
11024
11136
|
const paints = data['_' + attrName];
|
|
11025
11137
|
if (paints instanceof Array) {
|
|
11026
|
-
let image, recycleMap, input, url;
|
|
11138
|
+
let paint, image, recycleMap, input, url;
|
|
11027
11139
|
for (let i = 0, len = paints.length; i < len; i++) {
|
|
11028
|
-
|
|
11140
|
+
paint = paints[i];
|
|
11141
|
+
image = paint.image;
|
|
11029
11142
|
url = image && image.url;
|
|
11030
11143
|
if (url) {
|
|
11031
11144
|
if (!recycleMap)
|
|
@@ -11040,8 +11153,6 @@ function recycleImage(attrName, data) {
|
|
|
11040
11153
|
}
|
|
11041
11154
|
image.unload(paints[i].loadId, !input.some((item) => item.url === url));
|
|
11042
11155
|
}
|
|
11043
|
-
else
|
|
11044
|
-
paints[i].style = null;
|
|
11045
11156
|
}
|
|
11046
11157
|
}
|
|
11047
11158
|
return recycleMap;
|
|
@@ -11220,7 +11331,7 @@ const { toOffsetOutBounds } = BoundsHelper;
|
|
|
11220
11331
|
const offsetOutBounds = {};
|
|
11221
11332
|
function innerShadow(ui, current, shape) {
|
|
11222
11333
|
let copyBounds, spreadScale;
|
|
11223
|
-
const { __nowWorld: nowWorld, __layout
|
|
11334
|
+
const { __nowWorld: nowWorld, __layout } = ui;
|
|
11224
11335
|
const { innerShadow } = ui.__;
|
|
11225
11336
|
const { worldCanvas, bounds, shapeBounds, scaleX, scaleY } = shape;
|
|
11226
11337
|
const other = current.getSameCanvas();
|