@leafer-editor/worker 1.5.2 → 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/worker.js +480 -290
- package/dist/worker.js.map +1 -1
- package/dist/worker.min.js +1 -1
- package/dist/worker.min.js.map +1 -1
- package/dist/worker.module.js +480 -290
- package/dist/worker.module.js.map +1 -1
- package/dist/worker.module.min.js +1 -1
- package/dist/worker.module.min.js.map +1 -1
- package/package.json +15 -15
package/dist/worker.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$9 = MatrixHelper;
|
|
432
439
|
|
|
433
440
|
const { toInnerPoint: toInnerPoint$2, toOuterPoint: toOuterPoint$3 } = MatrixHelper;
|
|
434
|
-
const { sin: sin$4, cos: cos$4, abs: abs$6, sqrt: sqrt$2, atan2: atan2$2, min: min$1, PI: PI$3 } = Math;
|
|
441
|
+
const { sin: sin$4, cos: cos$4, abs: abs$6, 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$6.enable) {
|
|
1336
1361
|
if (D$6.filterList.length && D$6.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$c } = MatrixHelper;
|
|
2045
|
+
const { copy: copy$c, 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$c(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$a, toInnerPoint: toInnerPoint$1, toOuterPoint: toOuterPoint$1, scaleOfOuter: scaleOfOuter$2, rotateOfOuter: rotateOfOuter$2, skewOfOuter, multiplyParent: multiplyParent$2, divideParent, getLayout } = MatrixHelper;
|
|
4188
|
-
const matrix$3 = {};
|
|
4222
|
+
const matrix$3 = {}, { 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 true; }
|
|
@@ -6311,7 +6365,6 @@ function updateChange(updateList) {
|
|
|
6311
6365
|
}
|
|
6312
6366
|
|
|
6313
6367
|
const { worldBounds: worldBounds$1 } = LeafBoundsHelper;
|
|
6314
|
-
const bigBounds = { x: 0, y: 0, width: 100000, height: 100000 };
|
|
6315
6368
|
class LayoutBlockData {
|
|
6316
6369
|
constructor(list) {
|
|
6317
6370
|
this.updatedBounds = new Bounds();
|
|
@@ -6325,13 +6378,7 @@ class LayoutBlockData {
|
|
|
6325
6378
|
this.beforeBounds.setListWithFn(this.updatedList.list, worldBounds$1);
|
|
6326
6379
|
}
|
|
6327
6380
|
setAfter() {
|
|
6328
|
-
|
|
6329
|
-
if (list.some(leaf => leaf.noBounds)) {
|
|
6330
|
-
this.afterBounds.set(bigBounds);
|
|
6331
|
-
}
|
|
6332
|
-
else {
|
|
6333
|
-
this.afterBounds.setListWithFn(list, worldBounds$1);
|
|
6334
|
-
}
|
|
6381
|
+
this.afterBounds.setListWithFn(this.updatedList.list, worldBounds$1);
|
|
6335
6382
|
this.updatedBounds.setList([this.beforeBounds, this.afterBounds]);
|
|
6336
6383
|
}
|
|
6337
6384
|
merge(data) {
|
|
@@ -6533,6 +6580,13 @@ class Renderer {
|
|
|
6533
6580
|
requestLayout() {
|
|
6534
6581
|
this.target.emit(LayoutEvent.REQUEST);
|
|
6535
6582
|
}
|
|
6583
|
+
checkRender() {
|
|
6584
|
+
if (this.running) {
|
|
6585
|
+
if (this.changed && this.canvas.view)
|
|
6586
|
+
this.render();
|
|
6587
|
+
this.target.emit(RenderEvent.NEXT);
|
|
6588
|
+
}
|
|
6589
|
+
}
|
|
6536
6590
|
render(callback) {
|
|
6537
6591
|
if (!(this.running && this.canvas.view))
|
|
6538
6592
|
return this.update();
|
|
@@ -6541,8 +6595,6 @@ class Renderer {
|
|
|
6541
6595
|
this.totalBounds = new Bounds();
|
|
6542
6596
|
debug$6.log(target.innerName, '--->');
|
|
6543
6597
|
try {
|
|
6544
|
-
if (!target.isApp)
|
|
6545
|
-
target.app.emit(RenderEvent.CHILD_START, target);
|
|
6546
6598
|
this.emitRender(RenderEvent.START);
|
|
6547
6599
|
this.renderOnce(callback);
|
|
6548
6600
|
this.emitRender(RenderEvent.END, this.totalBounds);
|
|
@@ -6610,20 +6662,12 @@ class Renderer {
|
|
|
6610
6662
|
}
|
|
6611
6663
|
clipRender(block) {
|
|
6612
6664
|
const t = Run.start('PartRender');
|
|
6613
|
-
const { canvas } = this;
|
|
6614
|
-
const bounds = block.getIntersect(canvas.bounds);
|
|
6615
|
-
const includes = block.includes(this.target.__world);
|
|
6616
|
-
const realBounds = new Bounds(bounds);
|
|
6665
|
+
const { canvas } = this, bounds = block.getIntersect(canvas.bounds), realBounds = new Bounds(bounds);
|
|
6617
6666
|
canvas.save();
|
|
6618
|
-
|
|
6619
|
-
|
|
6620
|
-
|
|
6621
|
-
|
|
6622
|
-
bounds.spread(10 + 1 / this.canvas.pixelRatio).ceil();
|
|
6623
|
-
canvas.clearWorld(bounds, true);
|
|
6624
|
-
canvas.clipWorld(bounds, true);
|
|
6625
|
-
}
|
|
6626
|
-
this.__render(bounds, includes, realBounds);
|
|
6667
|
+
bounds.spread(Renderer.clipSpread).ceil();
|
|
6668
|
+
canvas.clearWorld(bounds, true);
|
|
6669
|
+
canvas.clipWorld(bounds, true);
|
|
6670
|
+
this.__render(bounds, block.includes(this.target.__world), realBounds);
|
|
6627
6671
|
canvas.restore();
|
|
6628
6672
|
Run.end(t);
|
|
6629
6673
|
}
|
|
@@ -6637,23 +6681,17 @@ class Renderer {
|
|
|
6637
6681
|
Run.end(t);
|
|
6638
6682
|
}
|
|
6639
6683
|
__render(bounds, includes, realBounds) {
|
|
6640
|
-
const options =
|
|
6684
|
+
const { canvas } = this, options = includes ? { includes } : { bounds, includes };
|
|
6641
6685
|
if (this.needFill)
|
|
6642
|
-
|
|
6686
|
+
canvas.fillWorld(bounds, this.config.fill);
|
|
6643
6687
|
if (Debug.showRepaint)
|
|
6644
|
-
|
|
6645
|
-
this.target.__render(
|
|
6688
|
+
Debug.drawRepaint(canvas, bounds);
|
|
6689
|
+
this.target.__render(canvas, options);
|
|
6646
6690
|
this.renderBounds = realBounds = realBounds || bounds;
|
|
6647
6691
|
this.renderOptions = options;
|
|
6648
6692
|
this.totalBounds.isEmpty() ? this.totalBounds = realBounds : this.totalBounds.add(realBounds);
|
|
6649
|
-
|
|
6650
|
-
|
|
6651
|
-
if (Debug.showBoundsView)
|
|
6652
|
-
this.renderBoundsView(options);
|
|
6653
|
-
this.canvas.updateRender(realBounds);
|
|
6654
|
-
}
|
|
6655
|
-
renderHitView(_options) { }
|
|
6656
|
-
renderBoundsView(_options) { }
|
|
6693
|
+
canvas.updateRender(realBounds);
|
|
6694
|
+
}
|
|
6657
6695
|
addBlock(block) {
|
|
6658
6696
|
if (!this.updateBlocks)
|
|
6659
6697
|
this.updateBlocks = [];
|
|
@@ -6669,17 +6707,24 @@ class Renderer {
|
|
|
6669
6707
|
}
|
|
6670
6708
|
}
|
|
6671
6709
|
__requestRender() {
|
|
6710
|
+
const target = this.target;
|
|
6711
|
+
if (target.parentApp)
|
|
6712
|
+
return target.parentApp.renderer.update(false);
|
|
6672
6713
|
if (this.requestTime)
|
|
6673
6714
|
return;
|
|
6674
6715
|
const requestTime = this.requestTime = Date.now();
|
|
6675
6716
|
Platform.requestRender(() => {
|
|
6676
6717
|
this.FPS = Math.min(60, Math.ceil(1000 / (Date.now() - requestTime)));
|
|
6677
6718
|
this.requestTime = 0;
|
|
6678
|
-
if (
|
|
6679
|
-
|
|
6680
|
-
|
|
6681
|
-
|
|
6719
|
+
if (target.isApp) {
|
|
6720
|
+
target.emit(RenderEvent.CHILD_START, target);
|
|
6721
|
+
target.children.forEach(leafer => {
|
|
6722
|
+
leafer.renderer.FPS = this.FPS;
|
|
6723
|
+
leafer.renderer.checkRender();
|
|
6724
|
+
});
|
|
6725
|
+
target.emit(RenderEvent.CHILD_END, target);
|
|
6682
6726
|
}
|
|
6727
|
+
this.checkRender();
|
|
6683
6728
|
});
|
|
6684
6729
|
}
|
|
6685
6730
|
__onResize(e) {
|
|
@@ -6737,6 +6782,7 @@ class Renderer {
|
|
|
6737
6782
|
}
|
|
6738
6783
|
}
|
|
6739
6784
|
}
|
|
6785
|
+
Renderer.clipSpread = 10;
|
|
6740
6786
|
|
|
6741
6787
|
const { hitRadiusPoint } = BoundsHelper;
|
|
6742
6788
|
class Picker {
|
|
@@ -6982,6 +7028,7 @@ class UIData extends LeafData {
|
|
|
6982
7028
|
return strokeWidth;
|
|
6983
7029
|
}
|
|
6984
7030
|
get __hasStroke() { return this.stroke && this.strokeWidth; }
|
|
7031
|
+
get __hasHalf() { const t = this; return (t.stroke && t.strokeAlign === 'center' && t.strokeWidth % 2) || undefined; }
|
|
6985
7032
|
get __hasMultiPaint() {
|
|
6986
7033
|
const t = this;
|
|
6987
7034
|
if ((t.__isFills && t.fill.length > 1) || (t.__isStrokes && t.stroke.length > 1) || t.__useEffect)
|
|
@@ -7026,14 +7073,14 @@ class UIData extends LeafData {
|
|
|
7026
7073
|
this.__removeInput('fill');
|
|
7027
7074
|
PaintImage.recycleImage('fill', this);
|
|
7028
7075
|
this.__isFills = false;
|
|
7029
|
-
|
|
7030
|
-
this.__pixelFill = false;
|
|
7076
|
+
this.__pixelFill && (this.__pixelFill = false);
|
|
7031
7077
|
}
|
|
7032
7078
|
this._fill = value;
|
|
7033
7079
|
}
|
|
7034
7080
|
else if (typeof value === 'object') {
|
|
7035
7081
|
this.__setInput('fill', value);
|
|
7036
|
-
|
|
7082
|
+
const layout = this.__leaf.__layout;
|
|
7083
|
+
layout.boxChanged || layout.boxChange();
|
|
7037
7084
|
this.__isFills = true;
|
|
7038
7085
|
this._fill || (this._fill = emptyPaint);
|
|
7039
7086
|
}
|
|
@@ -7044,14 +7091,14 @@ class UIData extends LeafData {
|
|
|
7044
7091
|
this.__removeInput('stroke');
|
|
7045
7092
|
PaintImage.recycleImage('stroke', this);
|
|
7046
7093
|
this.__isStrokes = false;
|
|
7047
|
-
|
|
7048
|
-
this.__pixelStroke = false;
|
|
7094
|
+
this.__pixelStroke && (this.__pixelStroke = false);
|
|
7049
7095
|
}
|
|
7050
7096
|
this._stroke = value;
|
|
7051
7097
|
}
|
|
7052
7098
|
else if (typeof value === 'object') {
|
|
7053
7099
|
this.__setInput('stroke', value);
|
|
7054
|
-
|
|
7100
|
+
const layout = this.__leaf.__layout;
|
|
7101
|
+
layout.boxChanged || layout.boxChange();
|
|
7055
7102
|
this.__isStrokes = true;
|
|
7056
7103
|
this._stroke || (this._stroke = emptyPaint);
|
|
7057
7104
|
}
|
|
@@ -7166,6 +7213,31 @@ class TextData extends UIData {
|
|
|
7166
7213
|
this._fontWeight = value;
|
|
7167
7214
|
}
|
|
7168
7215
|
}
|
|
7216
|
+
setBoxStyle(value) {
|
|
7217
|
+
let t = this.__leaf, box = t.__box;
|
|
7218
|
+
if (value) {
|
|
7219
|
+
const { boxStyle } = this;
|
|
7220
|
+
if (box)
|
|
7221
|
+
for (let key in boxStyle)
|
|
7222
|
+
box[key] = undefined;
|
|
7223
|
+
else
|
|
7224
|
+
box = t.__box = UICreator.get('Rect', 0);
|
|
7225
|
+
const layout = t.__layout, boxLayout = box.__layout;
|
|
7226
|
+
if (!boxStyle)
|
|
7227
|
+
box.parent = t, box.__world = t.__world, boxLayout.boxBounds = layout.boxBounds;
|
|
7228
|
+
box.set(value);
|
|
7229
|
+
if (boxLayout.strokeChanged)
|
|
7230
|
+
layout.strokeChange();
|
|
7231
|
+
if (boxLayout.renderChanged)
|
|
7232
|
+
layout.renderChange();
|
|
7233
|
+
box.__updateChange();
|
|
7234
|
+
}
|
|
7235
|
+
else if (box) {
|
|
7236
|
+
t.__box = box.parent = null;
|
|
7237
|
+
box.destroy();
|
|
7238
|
+
}
|
|
7239
|
+
this._boxStyle = value;
|
|
7240
|
+
}
|
|
7169
7241
|
}
|
|
7170
7242
|
|
|
7171
7243
|
class ImageData extends RectData {
|
|
@@ -7203,7 +7275,7 @@ class CanvasData extends RectData {
|
|
|
7203
7275
|
const UIBounds = {
|
|
7204
7276
|
__updateStrokeSpread() {
|
|
7205
7277
|
let width = 0, boxWidth = 0;
|
|
7206
|
-
const data = this.__, { strokeAlign, strokeWidth } = data;
|
|
7278
|
+
const data = this.__, { strokeAlign, strokeWidth } = data, box = this.__box;
|
|
7207
7279
|
if ((data.stroke || data.hitStroke === 'all') && strokeWidth && strokeAlign !== 'inside') {
|
|
7208
7280
|
boxWidth = width = strokeAlign === 'center' ? strokeWidth / 2 : strokeWidth;
|
|
7209
7281
|
if (!data.__boxStroke) {
|
|
@@ -7214,6 +7286,10 @@ const UIBounds = {
|
|
|
7214
7286
|
}
|
|
7215
7287
|
if (data.__useArrow)
|
|
7216
7288
|
width += strokeWidth * 5;
|
|
7289
|
+
if (box) {
|
|
7290
|
+
width = Math.max(box.__layout.strokeSpread = box.__updateStrokeSpread(), width);
|
|
7291
|
+
boxWidth = box.__layout.strokeBoxSpread;
|
|
7292
|
+
}
|
|
7217
7293
|
this.__layout.strokeBoxSpread = boxWidth;
|
|
7218
7294
|
return width;
|
|
7219
7295
|
},
|
|
@@ -7232,25 +7308,26 @@ const UIBounds = {
|
|
|
7232
7308
|
if (backgroundBlur)
|
|
7233
7309
|
shapeWidth = Math.max(shapeWidth, backgroundBlur);
|
|
7234
7310
|
this.__layout.renderShapeSpread = shapeWidth;
|
|
7235
|
-
|
|
7311
|
+
width += this.__layout.strokeSpread || 0;
|
|
7312
|
+
return this.__box ? Math.max(this.__box.__updateRenderSpread(), width) : width;
|
|
7236
7313
|
}
|
|
7237
7314
|
};
|
|
7238
7315
|
|
|
7239
7316
|
const UIRender = {
|
|
7240
7317
|
__updateChange() {
|
|
7241
|
-
const data = this.__;
|
|
7318
|
+
const data = this.__, w = this.__world;
|
|
7242
7319
|
if (data.__useEffect) {
|
|
7243
7320
|
const { shadow, innerShadow, blur, backgroundBlur, filter } = this.__;
|
|
7244
7321
|
data.__useEffect = !!(shadow || innerShadow || blur || backgroundBlur || filter);
|
|
7245
7322
|
}
|
|
7323
|
+
const half = data.__hasHalf;
|
|
7324
|
+
w.half !== half && (w.half = half);
|
|
7246
7325
|
data.__checkSingle();
|
|
7247
7326
|
const complex = data.__isFills || data.__isStrokes || data.cornerRadius || data.__useEffect;
|
|
7248
|
-
if (complex)
|
|
7327
|
+
if (complex)
|
|
7249
7328
|
data.__complex = true;
|
|
7250
|
-
|
|
7251
|
-
else {
|
|
7329
|
+
else
|
|
7252
7330
|
data.__complex && (data.__complex = false);
|
|
7253
|
-
}
|
|
7254
7331
|
},
|
|
7255
7332
|
__drawFast(canvas, options) {
|
|
7256
7333
|
drawFast(this, canvas, options);
|
|
@@ -7337,10 +7414,11 @@ function drawFast(ui, canvas, options) {
|
|
|
7337
7414
|
|
|
7338
7415
|
const RectRender = {
|
|
7339
7416
|
__drawFast(canvas, options) {
|
|
7340
|
-
let {
|
|
7417
|
+
let { x, y, width, height } = this.__layout.boxBounds;
|
|
7418
|
+
const { fill, stroke, __drawAfterFill } = this.__;
|
|
7341
7419
|
if (fill) {
|
|
7342
7420
|
canvas.fillStyle = fill;
|
|
7343
|
-
canvas.fillRect(
|
|
7421
|
+
canvas.fillRect(x, y, width, height);
|
|
7344
7422
|
}
|
|
7345
7423
|
if (__drawAfterFill)
|
|
7346
7424
|
this.__drawAfterFill(canvas, options);
|
|
@@ -7359,14 +7437,14 @@ const RectRender = {
|
|
|
7359
7437
|
if (width < 0 || height < 0) {
|
|
7360
7438
|
canvas.save();
|
|
7361
7439
|
this.__clip(canvas, options);
|
|
7362
|
-
canvas.strokeRect(half, half, width, height);
|
|
7440
|
+
canvas.strokeRect(x + half, y + half, width, height);
|
|
7363
7441
|
canvas.restore();
|
|
7364
7442
|
}
|
|
7365
7443
|
else
|
|
7366
|
-
canvas.strokeRect(half, half, width, height);
|
|
7444
|
+
canvas.strokeRect(x + half, y + half, width, height);
|
|
7367
7445
|
break;
|
|
7368
7446
|
case 'outside':
|
|
7369
|
-
canvas.strokeRect(-half, -half, width + __strokeWidth, height + __strokeWidth);
|
|
7447
|
+
canvas.strokeRect(x - half, y - half, width + __strokeWidth, height + __strokeWidth);
|
|
7370
7448
|
break;
|
|
7371
7449
|
}
|
|
7372
7450
|
}
|
|
@@ -7522,6 +7600,12 @@ __decorate([
|
|
|
7522
7600
|
__decorate([
|
|
7523
7601
|
surfaceType(false)
|
|
7524
7602
|
], UI.prototype, "locked", void 0);
|
|
7603
|
+
__decorate([
|
|
7604
|
+
surfaceType(false)
|
|
7605
|
+
], UI.prototype, "dim", void 0);
|
|
7606
|
+
__decorate([
|
|
7607
|
+
surfaceType(false)
|
|
7608
|
+
], UI.prototype, "dimskip", void 0);
|
|
7525
7609
|
__decorate([
|
|
7526
7610
|
sortType(0)
|
|
7527
7611
|
], UI.prototype, "zIndex", void 0);
|
|
@@ -7783,7 +7867,7 @@ let Leafer = Leafer_1 = class Leafer extends Group {
|
|
|
7783
7867
|
start: true,
|
|
7784
7868
|
hittable: true,
|
|
7785
7869
|
smooth: true,
|
|
7786
|
-
lazySpeard: 100
|
|
7870
|
+
lazySpeard: 100,
|
|
7787
7871
|
};
|
|
7788
7872
|
this.leafs = 0;
|
|
7789
7873
|
this.__eventIds = [];
|
|
@@ -8207,13 +8291,13 @@ let Box = class Box extends Group {
|
|
|
8207
8291
|
super.__updateRenderBounds();
|
|
8208
8292
|
copy$6(childrenRenderBounds, renderBounds);
|
|
8209
8293
|
this.__updateRectRenderBounds();
|
|
8210
|
-
isOverflow = !includes$1(renderBounds, childrenRenderBounds);
|
|
8294
|
+
isOverflow = !includes$1(renderBounds, childrenRenderBounds) || undefined;
|
|
8211
8295
|
if (isOverflow && this.__.overflow !== 'hide')
|
|
8212
8296
|
add(renderBounds, childrenRenderBounds);
|
|
8213
8297
|
}
|
|
8214
8298
|
else
|
|
8215
8299
|
this.__updateRectRenderBounds();
|
|
8216
|
-
|
|
8300
|
+
this.isOverflow !== isOverflow && (this.isOverflow = isOverflow);
|
|
8217
8301
|
}
|
|
8218
8302
|
__updateRectRenderBounds() { }
|
|
8219
8303
|
__updateRectChange() { }
|
|
@@ -8621,33 +8705,13 @@ Canvas = __decorate([
|
|
|
8621
8705
|
registerUI()
|
|
8622
8706
|
], Canvas);
|
|
8623
8707
|
|
|
8624
|
-
const { copyAndSpread, includes,
|
|
8708
|
+
const { copyAndSpread, includes, spread, setList } = BoundsHelper;
|
|
8625
8709
|
let Text = class Text extends UI {
|
|
8626
8710
|
get __tag() { return 'Text'; }
|
|
8627
|
-
get textDrawData() {
|
|
8628
|
-
this.__layout.update();
|
|
8629
|
-
return this.__.__textDrawData;
|
|
8630
|
-
}
|
|
8711
|
+
get textDrawData() { this.updateLayout(); return this.__.__textDrawData; }
|
|
8631
8712
|
constructor(data) {
|
|
8632
8713
|
super(data);
|
|
8633
8714
|
}
|
|
8634
|
-
__drawHitPath(canvas) {
|
|
8635
|
-
const { __lineHeight, fontSize, __baseLine, __textDrawData: data } = this.__;
|
|
8636
|
-
canvas.beginPath();
|
|
8637
|
-
if (this.__.__letterSpacing < 0) {
|
|
8638
|
-
this.__drawPathByData(canvas);
|
|
8639
|
-
}
|
|
8640
|
-
else {
|
|
8641
|
-
data.rows.forEach(row => canvas.rect(row.x, row.y - __baseLine, row.width, __lineHeight < fontSize ? fontSize : __lineHeight));
|
|
8642
|
-
}
|
|
8643
|
-
}
|
|
8644
|
-
__drawPathByData(drawer, _data) {
|
|
8645
|
-
const { x, y, width, height } = this.__layout.boxBounds;
|
|
8646
|
-
drawer.rect(x, y, width, height);
|
|
8647
|
-
}
|
|
8648
|
-
__drawRenderPath(canvas) {
|
|
8649
|
-
canvas.font = this.__.__font;
|
|
8650
|
-
}
|
|
8651
8715
|
__updateTextDrawData() {
|
|
8652
8716
|
const data = this.__;
|
|
8653
8717
|
const { lineHeight, letterSpacing, fontFamily, fontSize, fontWeight, italic, textCase, textOverflow, padding } = data;
|
|
@@ -8664,15 +8728,16 @@ let Text = class Text extends UI {
|
|
|
8664
8728
|
const layout = this.__layout;
|
|
8665
8729
|
const { fontSize, italic, padding, __autoWidth: autoWidth, __autoHeight: autoHeight } = data;
|
|
8666
8730
|
this.__updateTextDrawData();
|
|
8667
|
-
const { bounds } = data.__textDrawData;
|
|
8731
|
+
const { bounds: contentBounds } = data.__textDrawData;
|
|
8668
8732
|
const b = layout.boxBounds;
|
|
8733
|
+
layout.contentBounds = contentBounds;
|
|
8669
8734
|
if (data.__lineHeight < fontSize)
|
|
8670
|
-
spread(
|
|
8735
|
+
spread(contentBounds, fontSize / 2);
|
|
8671
8736
|
if (autoWidth || autoHeight) {
|
|
8672
|
-
b.x = autoWidth ?
|
|
8673
|
-
b.y = autoHeight ?
|
|
8674
|
-
b.width = autoWidth ?
|
|
8675
|
-
b.height = autoHeight ?
|
|
8737
|
+
b.x = autoWidth ? contentBounds.x : 0;
|
|
8738
|
+
b.y = autoHeight ? contentBounds.y : 0;
|
|
8739
|
+
b.width = autoWidth ? contentBounds.width : data.width;
|
|
8740
|
+
b.height = autoHeight ? contentBounds.height : data.height;
|
|
8676
8741
|
if (padding) {
|
|
8677
8742
|
const [top, right, bottom, left] = data.__padding;
|
|
8678
8743
|
if (autoWidth)
|
|
@@ -8686,23 +8751,45 @@ let Text = class Text extends UI {
|
|
|
8686
8751
|
super.__updateBoxBounds();
|
|
8687
8752
|
if (italic)
|
|
8688
8753
|
b.width += fontSize * 0.16;
|
|
8689
|
-
const
|
|
8690
|
-
if (
|
|
8691
|
-
|
|
8692
|
-
layout.renderChanged = true;
|
|
8693
|
-
setList(data.__textBoxBounds = {}, [b, bounds]);
|
|
8694
|
-
}
|
|
8754
|
+
const isOverflow = !includes(b, contentBounds) || undefined;
|
|
8755
|
+
if (isOverflow)
|
|
8756
|
+
setList(data.__textBoxBounds = {}, [b, contentBounds]), layout.renderChanged = true;
|
|
8695
8757
|
else
|
|
8696
|
-
data.__textBoxBounds =
|
|
8758
|
+
data.__textBoxBounds = b;
|
|
8759
|
+
this.isOverflow !== isOverflow && (this.isOverflow = isOverflow);
|
|
8760
|
+
}
|
|
8761
|
+
__onUpdateSize() {
|
|
8762
|
+
if (this.__box)
|
|
8763
|
+
this.__box.__onUpdateSize();
|
|
8764
|
+
super.__onUpdateSize();
|
|
8697
8765
|
}
|
|
8698
8766
|
__updateRenderSpread() {
|
|
8699
8767
|
let width = super.__updateRenderSpread();
|
|
8700
8768
|
if (!width)
|
|
8701
|
-
width = this.
|
|
8769
|
+
width = this.isOverflow ? 1 : 0;
|
|
8702
8770
|
return width;
|
|
8703
8771
|
}
|
|
8704
8772
|
__updateRenderBounds() {
|
|
8705
|
-
|
|
8773
|
+
const { renderBounds, renderSpread } = this.__layout;
|
|
8774
|
+
copyAndSpread(renderBounds, this.__.__textBoxBounds, renderSpread);
|
|
8775
|
+
if (this.__box)
|
|
8776
|
+
this.__box.__layout.renderBounds = renderBounds;
|
|
8777
|
+
}
|
|
8778
|
+
__drawRenderPath(canvas) {
|
|
8779
|
+
canvas.font = this.__.__font;
|
|
8780
|
+
}
|
|
8781
|
+
__draw(canvas, options, originCanvas) {
|
|
8782
|
+
const box = this.__box;
|
|
8783
|
+
if (box)
|
|
8784
|
+
box.__nowWorld = this.__nowWorld, box.__draw(canvas, options, originCanvas);
|
|
8785
|
+
if (this.textEditing && !Export.running)
|
|
8786
|
+
return;
|
|
8787
|
+
super.__draw(canvas, options, originCanvas);
|
|
8788
|
+
}
|
|
8789
|
+
destroy() {
|
|
8790
|
+
if (this.boxStyle)
|
|
8791
|
+
this.boxStyle = null;
|
|
8792
|
+
super.destroy();
|
|
8706
8793
|
}
|
|
8707
8794
|
};
|
|
8708
8795
|
__decorate([
|
|
@@ -8714,6 +8801,9 @@ __decorate([
|
|
|
8714
8801
|
__decorate([
|
|
8715
8802
|
boundsType(0)
|
|
8716
8803
|
], Text.prototype, "height", void 0);
|
|
8804
|
+
__decorate([
|
|
8805
|
+
surfaceType()
|
|
8806
|
+
], Text.prototype, "boxStyle", void 0);
|
|
8717
8807
|
__decorate([
|
|
8718
8808
|
dataType(false)
|
|
8719
8809
|
], Text.prototype, "resizeFontSize", void 0);
|
|
@@ -8877,26 +8967,25 @@ let App = class App extends Leafer {
|
|
|
8877
8967
|
this.leafer = this;
|
|
8878
8968
|
this.watcher.disable();
|
|
8879
8969
|
this.layouter.disable();
|
|
8880
|
-
this.__eventIds.push(this.on_(PropertyEvent.CHANGE, this.__onPropertyChange, this));
|
|
8881
8970
|
}
|
|
8882
8971
|
start() {
|
|
8883
8972
|
super.start();
|
|
8884
|
-
this.
|
|
8973
|
+
this.forEach(leafer => leafer.start());
|
|
8885
8974
|
}
|
|
8886
8975
|
stop() {
|
|
8887
|
-
this.
|
|
8976
|
+
this.forEach(leafer => leafer.stop());
|
|
8888
8977
|
super.stop();
|
|
8889
8978
|
}
|
|
8890
8979
|
unlockLayout() {
|
|
8891
8980
|
super.unlockLayout();
|
|
8892
|
-
this.
|
|
8981
|
+
this.forEach(leafer => leafer.unlockLayout());
|
|
8893
8982
|
}
|
|
8894
8983
|
lockLayout() {
|
|
8895
8984
|
super.lockLayout();
|
|
8896
|
-
this.
|
|
8985
|
+
this.forEach(leafer => leafer.lockLayout());
|
|
8897
8986
|
}
|
|
8898
8987
|
forceRender(bounds, sync) {
|
|
8899
|
-
this.
|
|
8988
|
+
this.forEach(leafer => leafer.forceRender(bounds, sync));
|
|
8900
8989
|
}
|
|
8901
8990
|
addLeafer(merge) {
|
|
8902
8991
|
const leafer = new Leafer(merge);
|
|
@@ -8916,9 +9005,8 @@ let App = class App extends Leafer {
|
|
|
8916
9005
|
leafer.canvas.childIndex = index;
|
|
8917
9006
|
this.__listenChildEvents(leafer);
|
|
8918
9007
|
}
|
|
8919
|
-
|
|
8920
|
-
|
|
8921
|
-
this.children.forEach(leafer => leafer.forceUpdate('surface'));
|
|
9008
|
+
forEach(fn) {
|
|
9009
|
+
this.children.forEach(fn);
|
|
8922
9010
|
}
|
|
8923
9011
|
__onCreated() {
|
|
8924
9012
|
this.created = this.children.every(child => child.created);
|
|
@@ -8941,18 +9029,18 @@ let App = class App extends Leafer {
|
|
|
8941
9029
|
const m = options.matrix;
|
|
8942
9030
|
if (m)
|
|
8943
9031
|
canvas.setTransform(m.a, m.b, m.c, m.d, m.e, m.f);
|
|
8944
|
-
this.
|
|
9032
|
+
this.forEach(leafer => canvas.copyWorld(leafer.canvas));
|
|
8945
9033
|
}
|
|
8946
9034
|
}
|
|
8947
9035
|
__onResize(event) {
|
|
8948
|
-
this.
|
|
9036
|
+
this.forEach(leafer => leafer.resize(event));
|
|
8949
9037
|
super.__onResize(event);
|
|
8950
9038
|
}
|
|
8951
9039
|
updateLayout() {
|
|
8952
|
-
this.
|
|
9040
|
+
this.forEach(leafer => leafer.updateLayout());
|
|
8953
9041
|
}
|
|
8954
9042
|
__getChildConfig(userConfig) {
|
|
8955
|
-
|
|
9043
|
+
const config = Object.assign({}, this.config);
|
|
8956
9044
|
config.hittable = config.realCanvas = undefined;
|
|
8957
9045
|
if (userConfig)
|
|
8958
9046
|
DataHelper.assign(config, userConfig);
|
|
@@ -9511,6 +9599,7 @@ const config$1 = {
|
|
|
9511
9599
|
delta: { x: 80 / 4, y: 8.0 },
|
|
9512
9600
|
},
|
|
9513
9601
|
pointer: {
|
|
9602
|
+
snap: true,
|
|
9514
9603
|
hitRadius: 5,
|
|
9515
9604
|
tapTime: 120,
|
|
9516
9605
|
longPressTime: 800,
|
|
@@ -9605,7 +9694,7 @@ class InteractionBase {
|
|
|
9605
9694
|
if (this.downData) {
|
|
9606
9695
|
const canDrag = PointHelper.getDistance(this.downData, data) > this.p.dragDistance;
|
|
9607
9696
|
if (canDrag) {
|
|
9608
|
-
if (this.waitTap)
|
|
9697
|
+
if (this.waitTap || this.longPressTimer)
|
|
9609
9698
|
this.pointerWaitCancel();
|
|
9610
9699
|
this.waitRightTap = false;
|
|
9611
9700
|
}
|
|
@@ -9866,7 +9955,10 @@ class InteractionBase {
|
|
|
9866
9955
|
}
|
|
9867
9956
|
getLocal(clientPoint, updateClient) {
|
|
9868
9957
|
const clientBounds = this.canvas.getClientBounds(updateClient);
|
|
9869
|
-
|
|
9958
|
+
const point = { x: clientPoint.clientX - clientBounds.x, y: clientPoint.clientY - clientBounds.y };
|
|
9959
|
+
if (this.p.snap)
|
|
9960
|
+
PointHelper.round(point);
|
|
9961
|
+
return point;
|
|
9870
9962
|
}
|
|
9871
9963
|
emitTap(data) {
|
|
9872
9964
|
this.emit(PointerEvent.TAP, data);
|
|
@@ -9998,25 +10090,26 @@ const { toInnerRadiusPointOf, copy: copy$5, setRadius } = PointHelper;
|
|
|
9998
10090
|
const inner = {};
|
|
9999
10091
|
const leaf$1 = Leaf.prototype;
|
|
10000
10092
|
leaf$1.__hitWorld = function (point) {
|
|
10001
|
-
|
|
10093
|
+
const data = this.__;
|
|
10094
|
+
if (!data.hitSelf)
|
|
10002
10095
|
return false;
|
|
10003
|
-
|
|
10096
|
+
const world = this.__world, layout = this.__layout;
|
|
10097
|
+
const isSmall = world.width < 10 && world.height < 10;
|
|
10098
|
+
if (data.hitRadius) {
|
|
10004
10099
|
copy$5(inner, point), point = inner;
|
|
10005
|
-
setRadius(point,
|
|
10100
|
+
setRadius(point, data.hitRadius);
|
|
10006
10101
|
}
|
|
10007
|
-
toInnerRadiusPointOf(point,
|
|
10008
|
-
|
|
10009
|
-
|
|
10010
|
-
if (this.__.hitBox || isSmall) {
|
|
10011
|
-
if (BoundsHelper.hitRadiusPoint(this.__layout.boxBounds, inner))
|
|
10102
|
+
toInnerRadiusPointOf(point, world, inner);
|
|
10103
|
+
if (data.hitBox || isSmall) {
|
|
10104
|
+
if (BoundsHelper.hitRadiusPoint(layout.boxBounds, inner))
|
|
10012
10105
|
return true;
|
|
10013
10106
|
if (isSmall)
|
|
10014
10107
|
return false;
|
|
10015
10108
|
}
|
|
10016
|
-
if (
|
|
10109
|
+
if (layout.hitCanvasChanged || !this.__hitCanvas) {
|
|
10017
10110
|
this.__updateHitCanvas();
|
|
10018
|
-
if (!
|
|
10019
|
-
|
|
10111
|
+
if (!layout.boundsChanged)
|
|
10112
|
+
layout.hitCanvasChanged = false;
|
|
10020
10113
|
}
|
|
10021
10114
|
return this.__hit(inner);
|
|
10022
10115
|
};
|
|
@@ -10029,7 +10122,9 @@ leaf$1.__drawHitPath = function (canvas) { if (canvas)
|
|
|
10029
10122
|
const matrix$2 = new Matrix();
|
|
10030
10123
|
const ui$2 = UI.prototype;
|
|
10031
10124
|
ui$2.__updateHitCanvas = function () {
|
|
10032
|
-
|
|
10125
|
+
if (this.__box)
|
|
10126
|
+
this.__box.__updateHitCanvas();
|
|
10127
|
+
const data = this.__, { hitCanvasManager } = this.leafer || this.parent.leafer;
|
|
10033
10128
|
const isHitPixelFill = (data.__pixelFill || data.__isCanvas) && data.hitFill === 'pixel';
|
|
10034
10129
|
const isHitPixelStroke = data.__pixelStroke && data.hitStroke === 'pixel';
|
|
10035
10130
|
const isHitPixel = isHitPixelFill || isHitPixelStroke;
|
|
@@ -10056,6 +10151,8 @@ ui$2.__updateHitCanvas = function () {
|
|
|
10056
10151
|
h.setStrokeOptions(data);
|
|
10057
10152
|
};
|
|
10058
10153
|
ui$2.__hit = function (inner) {
|
|
10154
|
+
if (this.__box && this.__box.__hit(inner))
|
|
10155
|
+
return true;
|
|
10059
10156
|
const data = this.__;
|
|
10060
10157
|
if (data.__isHitPixel && this.__hitPixel(inner))
|
|
10061
10158
|
return true;
|
|
@@ -10104,6 +10201,15 @@ rect.__hitFill = box$1.__hitFill = function (inner) {
|
|
|
10104
10201
|
return this.__hitCanvas ? ui$1.__hitFill.call(this, inner) : BoundsHelper.hitRadiusPoint(this.__layout.boxBounds, inner);
|
|
10105
10202
|
};
|
|
10106
10203
|
|
|
10204
|
+
Text.prototype.__drawHitPath = function (canvas) {
|
|
10205
|
+
const { __lineHeight, fontSize, __baseLine, __letterSpacing, __textDrawData: data } = this.__;
|
|
10206
|
+
canvas.beginPath();
|
|
10207
|
+
if (__letterSpacing < 0)
|
|
10208
|
+
this.__drawPathByBox(canvas);
|
|
10209
|
+
else
|
|
10210
|
+
data.rows.forEach(row => canvas.rect(row.x, row.y - __baseLine, row.width, __lineHeight < fontSize ? fontSize : __lineHeight));
|
|
10211
|
+
};
|
|
10212
|
+
|
|
10107
10213
|
function getSelector$1(ui) {
|
|
10108
10214
|
return ui.leafer ? ui.leafer.selector : (Platform.selector || (Platform.selector = Creator.selector()));
|
|
10109
10215
|
}
|
|
@@ -10486,9 +10592,11 @@ const tempBox = new Bounds();
|
|
|
10486
10592
|
const tempPoint = {};
|
|
10487
10593
|
const tempScaleData = {};
|
|
10488
10594
|
function createData(leafPaint, image, paint, box) {
|
|
10489
|
-
const { blendMode, sync } = paint;
|
|
10595
|
+
const { blendMode, changeful, sync } = paint;
|
|
10490
10596
|
if (blendMode)
|
|
10491
10597
|
leafPaint.blendMode = blendMode;
|
|
10598
|
+
if (changeful)
|
|
10599
|
+
leafPaint.changeful = changeful;
|
|
10492
10600
|
if (sync)
|
|
10493
10601
|
leafPaint.sync = sync;
|
|
10494
10602
|
leafPaint.data = getPatternData(paint, box, image);
|
|
@@ -10721,40 +10829,32 @@ function createPattern(ui, paint, pixelRatio) {
|
|
|
10721
10829
|
}
|
|
10722
10830
|
|
|
10723
10831
|
const { abs: abs$2 } = Math;
|
|
10724
|
-
function checkImage(ui, canvas, paint,
|
|
10832
|
+
function checkImage(ui, canvas, paint, allowDraw) {
|
|
10725
10833
|
const { scaleX, scaleY } = ImageManager.patternLocked ? ui.__world : ui.__nowWorld;
|
|
10726
|
-
const { pixelRatio } = canvas;
|
|
10727
|
-
if (!
|
|
10834
|
+
const { pixelRatio } = canvas, { data } = paint;
|
|
10835
|
+
if (!data || (paint.patternId === scaleX + '-' + scaleY + '-' + pixelRatio && !Export.running)) {
|
|
10728
10836
|
return false;
|
|
10729
10837
|
}
|
|
10730
10838
|
else {
|
|
10731
|
-
|
|
10732
|
-
|
|
10733
|
-
|
|
10734
|
-
let { width, height } = data;
|
|
10735
|
-
width *= abs$2(scaleX) * pixelRatio;
|
|
10736
|
-
height *= abs$2(scaleY) * pixelRatio;
|
|
10737
|
-
if (data.scaleX) {
|
|
10738
|
-
width *= data.scaleX;
|
|
10739
|
-
height *= data.scaleY;
|
|
10740
|
-
}
|
|
10741
|
-
allowPaint = (width * height > Platform.image.maxCacheSize) || Export.running;
|
|
10839
|
+
if (allowDraw) {
|
|
10840
|
+
if (data.repeat) {
|
|
10841
|
+
allowDraw = false;
|
|
10742
10842
|
}
|
|
10743
10843
|
else {
|
|
10744
|
-
|
|
10844
|
+
if (!(paint.changeful || ResizeEvent.isResizing(ui) || Export.running)) {
|
|
10845
|
+
let { width, height } = data;
|
|
10846
|
+
width *= abs$2(scaleX) * pixelRatio;
|
|
10847
|
+
height *= abs$2(scaleY) * pixelRatio;
|
|
10848
|
+
if (data.scaleX) {
|
|
10849
|
+
width *= data.scaleX;
|
|
10850
|
+
height *= data.scaleY;
|
|
10851
|
+
}
|
|
10852
|
+
allowDraw = (width * height > Platform.image.maxCacheSize);
|
|
10853
|
+
}
|
|
10745
10854
|
}
|
|
10746
10855
|
}
|
|
10747
|
-
if (
|
|
10748
|
-
canvas
|
|
10749
|
-
ui.windingRule ? canvas.clip(ui.windingRule) : canvas.clip();
|
|
10750
|
-
if (paint.blendMode)
|
|
10751
|
-
canvas.blendMode = paint.blendMode;
|
|
10752
|
-
if (data.opacity)
|
|
10753
|
-
canvas.opacity *= data.opacity;
|
|
10754
|
-
if (data.transform)
|
|
10755
|
-
canvas.transform(data.transform);
|
|
10756
|
-
canvas.drawImage(paint.image.getFull(data.filters), 0, 0, data.width, data.height);
|
|
10757
|
-
canvas.restore();
|
|
10856
|
+
if (allowDraw) {
|
|
10857
|
+
drawImage(ui, canvas, paint, data);
|
|
10758
10858
|
return true;
|
|
10759
10859
|
}
|
|
10760
10860
|
else {
|
|
@@ -10775,13 +10875,26 @@ function checkImage(ui, canvas, paint, allowPaint) {
|
|
|
10775
10875
|
}
|
|
10776
10876
|
}
|
|
10777
10877
|
}
|
|
10878
|
+
function drawImage(ui, canvas, paint, data) {
|
|
10879
|
+
canvas.save();
|
|
10880
|
+
ui.windingRule ? canvas.clip(ui.windingRule) : canvas.clip();
|
|
10881
|
+
if (paint.blendMode)
|
|
10882
|
+
canvas.blendMode = paint.blendMode;
|
|
10883
|
+
if (data.opacity)
|
|
10884
|
+
canvas.opacity *= data.opacity;
|
|
10885
|
+
if (data.transform)
|
|
10886
|
+
canvas.transform(data.transform);
|
|
10887
|
+
canvas.drawImage(paint.image.getFull(data.filters), 0, 0, data.width, data.height);
|
|
10888
|
+
canvas.restore();
|
|
10889
|
+
}
|
|
10778
10890
|
|
|
10779
10891
|
function recycleImage(attrName, data) {
|
|
10780
10892
|
const paints = data['_' + attrName];
|
|
10781
10893
|
if (paints instanceof Array) {
|
|
10782
|
-
let image, recycleMap, input, url;
|
|
10894
|
+
let paint, image, recycleMap, input, url;
|
|
10783
10895
|
for (let i = 0, len = paints.length; i < len; i++) {
|
|
10784
|
-
|
|
10896
|
+
paint = paints[i];
|
|
10897
|
+
image = paint.image;
|
|
10785
10898
|
url = image && image.url;
|
|
10786
10899
|
if (url) {
|
|
10787
10900
|
if (!recycleMap)
|
|
@@ -10796,8 +10909,6 @@ function recycleImage(attrName, data) {
|
|
|
10796
10909
|
}
|
|
10797
10910
|
image.unload(paints[i].loadId, !input.some((item) => item.url === url));
|
|
10798
10911
|
}
|
|
10799
|
-
else
|
|
10800
|
-
paints[i].style = null;
|
|
10801
10912
|
}
|
|
10802
10913
|
}
|
|
10803
10914
|
return recycleMap;
|
|
@@ -10976,7 +11087,7 @@ const { toOffsetOutBounds } = BoundsHelper;
|
|
|
10976
11087
|
const offsetOutBounds = {};
|
|
10977
11088
|
function innerShadow(ui, current, shape) {
|
|
10978
11089
|
let copyBounds, spreadScale;
|
|
10979
|
-
const { __nowWorld: nowWorld, __layout
|
|
11090
|
+
const { __nowWorld: nowWorld, __layout } = ui;
|
|
10980
11091
|
const { innerShadow } = ui.__;
|
|
10981
11092
|
const { worldCanvas, bounds, shapeBounds, scaleX, scaleY } = shape;
|
|
10982
11093
|
const other = current.getSameCanvas();
|
|
@@ -11706,15 +11817,52 @@ function targetAttr(fn) {
|
|
|
11706
11817
|
set(value) {
|
|
11707
11818
|
const old = this[privateKey];
|
|
11708
11819
|
if (old !== value) {
|
|
11709
|
-
|
|
11710
|
-
|
|
11711
|
-
|
|
11820
|
+
if (this.config) {
|
|
11821
|
+
const isSelect = key === 'target';
|
|
11822
|
+
if (isSelect) {
|
|
11823
|
+
if (value instanceof Array && value.length > 1 && value[0].locked)
|
|
11824
|
+
value.splice(0, 1);
|
|
11825
|
+
const { beforeSelect } = this.config;
|
|
11826
|
+
if (beforeSelect) {
|
|
11827
|
+
const check = beforeSelect({ target: value });
|
|
11828
|
+
if (typeof check === 'object')
|
|
11829
|
+
value = check;
|
|
11830
|
+
else if (check === false)
|
|
11831
|
+
return;
|
|
11832
|
+
}
|
|
11833
|
+
}
|
|
11834
|
+
const type = isSelect ? EditorEvent.BEFORE_SELECT : EditorEvent.BEFORE_HOVER;
|
|
11835
|
+
if (this.hasEvent(type))
|
|
11836
|
+
this.emitEvent(new EditorEvent(type, { editor: this, value: value, oldValue: old }));
|
|
11837
|
+
}
|
|
11712
11838
|
this[privateKey] = value, fn(this, old);
|
|
11713
11839
|
}
|
|
11714
11840
|
}
|
|
11715
11841
|
});
|
|
11716
11842
|
};
|
|
11717
11843
|
}
|
|
11844
|
+
function mergeConfigAttr() {
|
|
11845
|
+
return (target, key) => {
|
|
11846
|
+
defineKey(target, key, {
|
|
11847
|
+
get() {
|
|
11848
|
+
const { config, element, dragPoint } = this, mergeConfig = Object.assign({}, config);
|
|
11849
|
+
if (element && element.editConfig)
|
|
11850
|
+
Object.assign(mergeConfig, element.editConfig);
|
|
11851
|
+
if (dragPoint) {
|
|
11852
|
+
if (dragPoint.editConfig)
|
|
11853
|
+
Object.assign(mergeConfig, dragPoint.editConfig);
|
|
11854
|
+
if (mergeConfig.editSize === 'font-size')
|
|
11855
|
+
mergeConfig.lockRatio = true;
|
|
11856
|
+
if (dragPoint.pointType === 'resize-rotate') {
|
|
11857
|
+
mergeConfig.around || (mergeConfig.around = 'center');
|
|
11858
|
+
isNull(mergeConfig.lockRatio) && (mergeConfig.lockRatio = true);
|
|
11859
|
+
}
|
|
11860
|
+
}
|
|
11861
|
+
return this.mergedConfig = mergeConfig;
|
|
11862
|
+
}
|
|
11863
|
+
});
|
|
11864
|
+
};
|
|
11865
|
+
}
|
|
11718
11866
|
|
|
11719
11867
|
const { abs: abs$1 } = Math;
|
|
11720
11868
|
const { copy: copy$2, scale: scale$1 } = MatrixHelper;
|
|
@@ -11726,6 +11874,7 @@ class Stroker extends UI {
|
|
|
11726
11874
|
constructor() {
|
|
11727
11875
|
super();
|
|
11728
11876
|
this.list = [];
|
|
11877
|
+
this.visible = 0;
|
|
11729
11878
|
this.hittable = false;
|
|
11730
11879
|
this.strokeAlign = 'center';
|
|
11731
11880
|
}
|
|
@@ -11739,10 +11888,10 @@ class Stroker extends UI {
|
|
|
11739
11888
|
if (list.length) {
|
|
11740
11889
|
setListWithFn(bounds$2, list, worldBounds);
|
|
11741
11890
|
this.set(bounds$2);
|
|
11891
|
+
this.visible = true;
|
|
11742
11892
|
}
|
|
11743
|
-
else
|
|
11744
|
-
this.
|
|
11745
|
-
}
|
|
11893
|
+
else
|
|
11894
|
+
this.visible = 0;
|
|
11746
11895
|
}
|
|
11747
11896
|
__draw(canvas, options) {
|
|
11748
11897
|
const { list } = this;
|
|
@@ -11754,8 +11903,9 @@ class Stroker extends UI {
|
|
|
11754
11903
|
const { worldTransform, worldRenderBounds } = leaf;
|
|
11755
11904
|
if (worldRenderBounds.width && worldRenderBounds.height && (!bounds || bounds.hit(worldRenderBounds, options.matrix))) {
|
|
11756
11905
|
const aScaleX = abs$1(worldTransform.scaleX), aScaleY = abs$1(worldTransform.scaleY);
|
|
11906
|
+
copy$2(matrix$1, worldTransform);
|
|
11907
|
+
matrix$1.half = strokeWidth % 2;
|
|
11757
11908
|
if (aScaleX !== aScaleY) {
|
|
11758
|
-
copy$2(matrix$1, worldTransform);
|
|
11759
11909
|
scale$1(matrix$1, 1 / aScaleX, 1 / aScaleY);
|
|
11760
11910
|
canvas.setWorld(matrix$1, options.matrix);
|
|
11761
11911
|
canvas.beginPath();
|
|
@@ -11764,7 +11914,7 @@ class Stroker extends UI {
|
|
|
11764
11914
|
canvas.rect(x * aScaleX, y * aScaleY, width * aScaleX, height * aScaleY);
|
|
11765
11915
|
}
|
|
11766
11916
|
else {
|
|
11767
|
-
canvas.setWorld(
|
|
11917
|
+
canvas.setWorld(matrix$1, options.matrix);
|
|
11768
11918
|
canvas.beginPath();
|
|
11769
11919
|
if (leaf.__.__useArrow)
|
|
11770
11920
|
leaf.__drawPath(canvas);
|
|
@@ -11799,7 +11949,8 @@ class SelectArea extends Group {
|
|
|
11799
11949
|
super(data);
|
|
11800
11950
|
this.strokeArea = new Rect({ strokeAlign: 'center' });
|
|
11801
11951
|
this.fillArea = new Rect();
|
|
11802
|
-
this.visible =
|
|
11952
|
+
this.visible = 0;
|
|
11953
|
+
this.hittable = false;
|
|
11803
11954
|
this.addMany(this.fillArea, this.strokeArea);
|
|
11804
11955
|
}
|
|
11805
11956
|
setStyle(style, userStyle) {
|
|
@@ -11996,7 +12147,7 @@ class EditSelect extends Group {
|
|
|
11996
12147
|
if (e.multiTouch)
|
|
11997
12148
|
return;
|
|
11998
12149
|
if (this.dragging)
|
|
11999
|
-
this.originList = null, this.selectArea.visible =
|
|
12150
|
+
this.originList = null, this.selectArea.visible = 0;
|
|
12000
12151
|
}
|
|
12001
12152
|
onAutoMove(e) {
|
|
12002
12153
|
if (this.dragging) {
|
|
@@ -12144,8 +12295,11 @@ const EditDataHelper = {
|
|
|
12144
12295
|
scaleY = scaleY < 0 ? -scale : scale;
|
|
12145
12296
|
}
|
|
12146
12297
|
}
|
|
12147
|
-
scaleX
|
|
12148
|
-
|
|
12298
|
+
const useScaleX = scaleX !== 1, useScaleY = scaleY !== 1;
|
|
12299
|
+
if (useScaleX)
|
|
12300
|
+
scaleX /= changedScaleX;
|
|
12301
|
+
if (useScaleY)
|
|
12302
|
+
scaleY /= changedScaleY;
|
|
12149
12303
|
if (!flipable) {
|
|
12150
12304
|
const { worldTransform } = element;
|
|
12151
12305
|
if (scaleX < 0)
|
|
@@ -12160,22 +12314,27 @@ const EditDataHelper = {
|
|
|
12160
12314
|
localBounds.scaleOf(element.getLocalPointByInner(origin), scaleX, scaleY);
|
|
12161
12315
|
if (!BoundsHelper.includes(allowBounds, localBounds)) {
|
|
12162
12316
|
const realBounds = localBounds.getIntersect(allowBounds);
|
|
12163
|
-
|
|
12164
|
-
|
|
12317
|
+
const fitScaleX = realBounds.width / localBounds.width, fitScaleY = realBounds.height / localBounds.height;
|
|
12318
|
+
if (useScaleX)
|
|
12319
|
+
scaleX *= fitScaleX;
|
|
12320
|
+
if (useScaleY)
|
|
12321
|
+
scaleY *= fitScaleY;
|
|
12165
12322
|
}
|
|
12166
12323
|
}
|
|
12167
|
-
if (widthRange) {
|
|
12324
|
+
if (useScaleX && widthRange) {
|
|
12168
12325
|
const nowWidth = boxBounds.width * element.scaleX;
|
|
12169
12326
|
scaleX = within(nowWidth * scaleX, widthRange) / nowWidth;
|
|
12170
12327
|
}
|
|
12171
|
-
if (heightRange) {
|
|
12328
|
+
if (useScaleY && heightRange) {
|
|
12172
12329
|
const nowHeight = boxBounds.height * element.scaleY;
|
|
12173
12330
|
scaleY = within(nowHeight * scaleY, heightRange) / nowHeight;
|
|
12174
12331
|
}
|
|
12175
|
-
if (Math.abs(scaleX * worldBoxBounds.width) < 1)
|
|
12332
|
+
if (useScaleX && Math.abs(scaleX * worldBoxBounds.width) < 1)
|
|
12176
12333
|
scaleX = (scaleX < 0 ? -1 : 1) / worldBoxBounds.width;
|
|
12177
|
-
if (Math.abs(scaleY * worldBoxBounds.height) < 1)
|
|
12334
|
+
if (useScaleY && Math.abs(scaleY * worldBoxBounds.height) < 1)
|
|
12178
12335
|
scaleY = (scaleY < 0 ? -1 : 1) / worldBoxBounds.height;
|
|
12336
|
+
if (lockRatio && scaleX !== scaleY)
|
|
12337
|
+
scaleY = scaleX = Math.min(scaleX, scaleY);
|
|
12179
12338
|
return { origin, scaleX, scaleY, direction, lockRatio, around };
|
|
12180
12339
|
},
|
|
12181
12340
|
getRotateData(bounds, direction, current, last, around) {
|
|
@@ -12346,7 +12505,7 @@ class EditBox extends Group {
|
|
|
12346
12505
|
this.view = new Group();
|
|
12347
12506
|
this.rect = new Box({ name: 'rect', hitFill: 'all', hitStroke: 'none', strokeAlign: 'center', hitRadius: 5 });
|
|
12348
12507
|
this.circle = new EditPoint({ name: 'circle', strokeAlign: 'center', around: 'center', cursor: 'crosshair', hitRadius: 5 });
|
|
12349
|
-
this.buttons = new Group({ around: 'center', hitSelf: false });
|
|
12508
|
+
this.buttons = new Group({ around: 'center', hitSelf: false, visible: 0 });
|
|
12350
12509
|
this.resizePoints = [];
|
|
12351
12510
|
this.rotatePoints = [];
|
|
12352
12511
|
this.resizeLines = [];
|
|
@@ -12401,12 +12560,13 @@ class EditBox extends Group {
|
|
|
12401
12560
|
}
|
|
12402
12561
|
}
|
|
12403
12562
|
update(bounds) {
|
|
12404
|
-
const {
|
|
12405
|
-
const {
|
|
12563
|
+
const { rect, circle, buttons, resizePoints, rotatePoints, resizeLines, editor } = this;
|
|
12564
|
+
const { mergeConfig, element, multiple, editMask } = editor;
|
|
12565
|
+
const { middlePoint, resizeable, rotateable, hideOnSmall, editBox, mask } = mergeConfig;
|
|
12406
12566
|
this.visible = !element.locked;
|
|
12567
|
+
editMask.visible = mask ? true : 0;
|
|
12407
12568
|
if (this.view.worldOpacity) {
|
|
12408
12569
|
const { width, height } = bounds;
|
|
12409
|
-
const { rect, circle, buttons, resizePoints, rotatePoints, resizeLines } = this;
|
|
12410
12570
|
const smallSize = typeof hideOnSmall === 'number' ? hideOnSmall : 10;
|
|
12411
12571
|
const showPoints = editBox && !(hideOnSmall && width < smallSize && height < smallSize);
|
|
12412
12572
|
let point = {}, rotateP, resizeP, resizeL;
|
|
@@ -12441,10 +12601,12 @@ class EditBox extends Group {
|
|
|
12441
12601
|
if (rect.path)
|
|
12442
12602
|
rect.path = null;
|
|
12443
12603
|
rect.set(Object.assign(Object.assign({}, bounds), { visible: multiple ? true : editBox }));
|
|
12444
|
-
buttons.visible = showPoints && buttons.children.length > 0;
|
|
12604
|
+
buttons.visible = showPoints && buttons.children.length > 0 || 0;
|
|
12445
12605
|
if (buttons.visible)
|
|
12446
12606
|
this.layoutButtons(mergeConfig);
|
|
12447
12607
|
}
|
|
12608
|
+
else
|
|
12609
|
+
rect.set(bounds);
|
|
12448
12610
|
}
|
|
12449
12611
|
layoutCircle(config) {
|
|
12450
12612
|
const { circleDirection, circleMargin, buttonsMargin, buttonsDirection, middlePoint } = config;
|
|
@@ -12507,7 +12669,7 @@ class EditBox extends Group {
|
|
|
12507
12669
|
}
|
|
12508
12670
|
onDragStart(e) {
|
|
12509
12671
|
this.dragging = true;
|
|
12510
|
-
const point = this.dragPoint = e.current;
|
|
12672
|
+
const point = this.dragPoint = e.current, { pointType } = point;
|
|
12511
12673
|
const { editor, dragStartData } = this, { element } = editor;
|
|
12512
12674
|
if (point.name === 'rect') {
|
|
12513
12675
|
this.moving = true;
|
|
@@ -12518,43 +12680,53 @@ class EditBox extends Group {
|
|
|
12518
12680
|
dragStartData.point = { x: element.x, y: element.y };
|
|
12519
12681
|
dragStartData.bounds = Object.assign({}, element.getLayoutBounds('box', 'local'));
|
|
12520
12682
|
dragStartData.rotation = element.rotation;
|
|
12683
|
+
if (pointType && pointType.includes('resize'))
|
|
12684
|
+
ResizeEvent.resizingKeys = editor.leafList.keys;
|
|
12521
12685
|
}
|
|
12522
12686
|
onDragEnd(e) {
|
|
12523
12687
|
this.dragging = false;
|
|
12524
12688
|
this.dragPoint = null;
|
|
12525
12689
|
this.moving = false;
|
|
12526
|
-
|
|
12690
|
+
const { name, pointType } = e.current;
|
|
12691
|
+
if (name === 'rect')
|
|
12527
12692
|
this.editor.opacity = 1;
|
|
12693
|
+
if (pointType && pointType.includes('resize'))
|
|
12694
|
+
ResizeEvent.resizingKeys = null;
|
|
12528
12695
|
}
|
|
12529
12696
|
onDrag(e) {
|
|
12530
12697
|
const { editor } = this;
|
|
12531
12698
|
const { pointType } = this.enterPoint = e.current;
|
|
12532
|
-
if (pointType.includes('rotate') || e.metaKey || e.ctrlKey || !editor.mergeConfig.resizeable)
|
|
12699
|
+
if (pointType.includes('rotate') || e.metaKey || e.ctrlKey || !editor.mergeConfig.resizeable) {
|
|
12533
12700
|
editor.onRotate(e);
|
|
12534
|
-
|
|
12701
|
+
if (pointType === 'resize-rotate')
|
|
12702
|
+
editor.onScale(e);
|
|
12703
|
+
}
|
|
12704
|
+
else if (pointType === 'resize')
|
|
12535
12705
|
editor.onScale(e);
|
|
12536
12706
|
if (pointType === 'skew')
|
|
12537
12707
|
editor.onSkew(e);
|
|
12538
12708
|
updateCursor(editor, e);
|
|
12539
12709
|
}
|
|
12540
12710
|
onArrow(e) {
|
|
12541
|
-
|
|
12542
|
-
|
|
12711
|
+
const { editor } = this;
|
|
12712
|
+
if (editor.editing && editor.mergeConfig.keyEvent) {
|
|
12713
|
+
let x = 0, y = 0;
|
|
12543
12714
|
const distance = e.shiftKey ? 10 : 1;
|
|
12544
12715
|
switch (e.code) {
|
|
12545
12716
|
case 'ArrowDown':
|
|
12546
|
-
|
|
12717
|
+
y = distance;
|
|
12547
12718
|
break;
|
|
12548
12719
|
case 'ArrowUp':
|
|
12549
|
-
|
|
12720
|
+
y = -distance;
|
|
12550
12721
|
break;
|
|
12551
12722
|
case 'ArrowLeft':
|
|
12552
|
-
|
|
12723
|
+
x = -distance;
|
|
12553
12724
|
break;
|
|
12554
12725
|
case 'ArrowRight':
|
|
12555
|
-
|
|
12726
|
+
x = distance;
|
|
12556
12727
|
}
|
|
12557
|
-
|
|
12728
|
+
if (x || y)
|
|
12729
|
+
editor.move(x, y);
|
|
12558
12730
|
}
|
|
12559
12731
|
}
|
|
12560
12732
|
onDoubleTap(e) {
|
|
@@ -12620,22 +12792,32 @@ class EditBox extends Group {
|
|
|
12620
12792
|
}
|
|
12621
12793
|
}
|
|
12622
12794
|
|
|
12795
|
+
const bigBounds = { x: 0, y: 0, width: 100000, height: 100000 };
|
|
12623
12796
|
class EditMask extends UI {
|
|
12624
12797
|
constructor(editor) {
|
|
12625
12798
|
super();
|
|
12626
12799
|
this.editor = editor;
|
|
12627
12800
|
this.hittable = false;
|
|
12801
|
+
this.visible = 0;
|
|
12802
|
+
}
|
|
12803
|
+
__updateWorldBounds() {
|
|
12804
|
+
Object.assign(this.__local, bigBounds);
|
|
12805
|
+
Object.assign(this.__world, bigBounds);
|
|
12628
12806
|
}
|
|
12629
12807
|
__draw(canvas, options) {
|
|
12630
|
-
const { editor } = this;
|
|
12631
|
-
|
|
12632
|
-
if (mask && editor.list.length) {
|
|
12633
|
-
const { rect } = editor.editBox;
|
|
12634
|
-
const { width, height } = rect.__;
|
|
12635
|
-
canvas.resetTransform();
|
|
12808
|
+
const { editor } = this, { mask } = editor.mergedConfig;
|
|
12809
|
+
if (mask && editor.editing) {
|
|
12636
12810
|
canvas.fillWorld(canvas.bounds, mask === true ? 'rgba(0,0,0,0.8)' : mask);
|
|
12637
|
-
|
|
12638
|
-
|
|
12811
|
+
if (options.bounds && !options.bounds.hit(editor.editBox.rect.__world, options.matrix))
|
|
12812
|
+
return;
|
|
12813
|
+
canvas.saveBlendMode('destination-out');
|
|
12814
|
+
editor.list.forEach(item => {
|
|
12815
|
+
item.__renderShape(canvas, options);
|
|
12816
|
+
const { __box, parent } = item;
|
|
12817
|
+
if ((item = __box) || ((item = parent) && parent.textBox))
|
|
12818
|
+
item.__renderShape(canvas, options);
|
|
12819
|
+
});
|
|
12820
|
+
canvas.restoreBlendMode();
|
|
12639
12821
|
}
|
|
12640
12822
|
}
|
|
12641
12823
|
destroy() {
|
|
@@ -12743,11 +12925,7 @@ function simulate(editor) {
|
|
|
12743
12925
|
function onTarget(editor, oldValue) {
|
|
12744
12926
|
const { target } = editor;
|
|
12745
12927
|
if (target) {
|
|
12746
|
-
|
|
12747
|
-
if (!list.every(checkEditable)) {
|
|
12748
|
-
editor.target = list.filter(checkEditable);
|
|
12749
|
-
return;
|
|
12750
|
-
}
|
|
12928
|
+
editor.leafList = target instanceof LeafList ? target : new LeafList(target);
|
|
12751
12929
|
if (editor.multiple)
|
|
12752
12930
|
simulate(editor);
|
|
12753
12931
|
}
|
|
@@ -12774,9 +12952,6 @@ function onTarget(editor, oldValue) {
|
|
|
12774
12952
|
function onHover(editor, oldValue) {
|
|
12775
12953
|
editor.emitEvent(new EditorEvent(EditorEvent.HOVER, { editor, value: editor.hoverTarget, oldValue }));
|
|
12776
12954
|
}
|
|
12777
|
-
function checkEditable(item) {
|
|
12778
|
-
return item.editable && !item.locked;
|
|
12779
|
-
}
|
|
12780
12955
|
|
|
12781
12956
|
const order = (a, b) => a.parent.children.indexOf(a) - b.parent.children.indexOf(b);
|
|
12782
12957
|
const reverseOrder = (a, b) => b.parent.children.indexOf(b) - a.parent.children.indexOf(a);
|
|
@@ -12945,22 +13120,6 @@ class SimulateElement extends Rect {
|
|
|
12945
13120
|
}
|
|
12946
13121
|
|
|
12947
13122
|
class Editor extends Group {
|
|
12948
|
-
get mergeConfig() {
|
|
12949
|
-
const { config, element, dragPoint } = this, mergeConfig = Object.assign({}, config);
|
|
12950
|
-
if (element && element.editConfig)
|
|
12951
|
-
Object.assign(mergeConfig, element.editConfig);
|
|
12952
|
-
if (dragPoint) {
|
|
12953
|
-
if (dragPoint.editConfig)
|
|
12954
|
-
Object.assign(mergeConfig, dragPoint.editConfig);
|
|
12955
|
-
if (mergeConfig.editSize === 'font-size')
|
|
12956
|
-
mergeConfig.lockRatio = true;
|
|
12957
|
-
if (dragPoint.pointType === 'resize-rotate') {
|
|
12958
|
-
mergeConfig.around || (mergeConfig.around = 'center');
|
|
12959
|
-
isNull(mergeConfig.lockRatio) && (mergeConfig.lockRatio = true);
|
|
12960
|
-
}
|
|
12961
|
-
}
|
|
12962
|
-
return mergeConfig;
|
|
12963
|
-
}
|
|
12964
13123
|
get list() { return this.leafList.list; }
|
|
12965
13124
|
get dragHoverExclude() { return [this.editBox.rect]; }
|
|
12966
13125
|
get editing() { return !!this.list.length; }
|
|
@@ -12974,7 +13133,6 @@ class Editor extends Group {
|
|
|
12974
13133
|
get buttons() { return this.editBox.buttons; }
|
|
12975
13134
|
constructor(userConfig, data) {
|
|
12976
13135
|
super(data);
|
|
12977
|
-
this.config = DataHelper.clone(config);
|
|
12978
13136
|
this.leafList = new LeafList();
|
|
12979
13137
|
this.openedGroupList = new LeafList();
|
|
12980
13138
|
this.simulateTarget = new SimulateElement(this);
|
|
@@ -12983,8 +13141,10 @@ class Editor extends Group {
|
|
|
12983
13141
|
this.selector = new EditSelect(this);
|
|
12984
13142
|
this.editMask = new EditMask(this);
|
|
12985
13143
|
this.targetEventIds = [];
|
|
13144
|
+
let mergedConfig = DataHelper.clone(config);
|
|
12986
13145
|
if (userConfig)
|
|
12987
|
-
|
|
13146
|
+
mergedConfig = DataHelper.default(userConfig, mergedConfig);
|
|
13147
|
+
this.mergedConfig = this.config = mergedConfig;
|
|
12988
13148
|
this.addMany(this.editMask, this.selector, this.editBox);
|
|
12989
13149
|
if (!Plugin.has('resize'))
|
|
12990
13150
|
this.config.editSize = 'scale';
|
|
@@ -13324,8 +13484,7 @@ class Editor extends Group {
|
|
|
13324
13484
|
}
|
|
13325
13485
|
}
|
|
13326
13486
|
emitInnerEvent(type) {
|
|
13327
|
-
const { innerEditor } = this;
|
|
13328
|
-
const { editTarget } = innerEditor;
|
|
13487
|
+
const { innerEditor } = this, { editTarget } = innerEditor;
|
|
13329
13488
|
const event = new InnerEditorEvent(type, { editTarget, innerEditor });
|
|
13330
13489
|
this.emitEvent(event);
|
|
13331
13490
|
editTarget.emitEvent(event);
|
|
@@ -13350,25 +13509,40 @@ class Editor extends Group {
|
|
|
13350
13509
|
this.leafList.update();
|
|
13351
13510
|
}
|
|
13352
13511
|
}
|
|
13512
|
+
onAppRenderStart(app) {
|
|
13513
|
+
if (this.targetChanged = app.children.some(leafer => leafer !== this.leafer && leafer.renderer.changed))
|
|
13514
|
+
this.editBox.forceRender();
|
|
13515
|
+
}
|
|
13516
|
+
onRenderStart() {
|
|
13517
|
+
if (this.targetChanged)
|
|
13518
|
+
this.update();
|
|
13519
|
+
}
|
|
13520
|
+
onKey(e) {
|
|
13521
|
+
updateCursor(this, e);
|
|
13522
|
+
}
|
|
13353
13523
|
listenTargetEvents() {
|
|
13354
13524
|
if (!this.targetEventIds.length) {
|
|
13355
|
-
const { app, leafer } = this;
|
|
13525
|
+
const { app, leafer, editBox, editMask } = this;
|
|
13356
13526
|
this.targetEventIds = [
|
|
13357
|
-
leafer.on_(RenderEvent.START, this.
|
|
13358
|
-
app.on_(RenderEvent.CHILD_START, this.
|
|
13527
|
+
leafer.on_(RenderEvent.START, this.onRenderStart, this),
|
|
13528
|
+
app.on_(RenderEvent.CHILD_START, this.onAppRenderStart, this),
|
|
13359
13529
|
app.on_(MoveEvent.BEFORE_MOVE, this.onMove, this, true),
|
|
13360
13530
|
app.on_(ZoomEvent.BEFORE_ZOOM, this.onScale, this, true),
|
|
13361
13531
|
app.on_(RotateEvent.BEFORE_ROTATE, this.onRotate, this, true),
|
|
13362
|
-
app.on_([KeyEvent.HOLD, KeyEvent.UP],
|
|
13363
|
-
app.on_(KeyEvent.DOWN,
|
|
13532
|
+
app.on_([KeyEvent.HOLD, KeyEvent.UP], this.onKey, this),
|
|
13533
|
+
app.on_(KeyEvent.DOWN, editBox.onArrow, editBox)
|
|
13364
13534
|
];
|
|
13535
|
+
if (editMask.visible)
|
|
13536
|
+
editMask.forceRender();
|
|
13365
13537
|
}
|
|
13366
13538
|
}
|
|
13367
13539
|
removeTargetEvents() {
|
|
13368
|
-
const { targetEventIds } = this;
|
|
13540
|
+
const { targetEventIds, editMask } = this;
|
|
13369
13541
|
if (targetEventIds.length) {
|
|
13370
13542
|
this.off_(targetEventIds);
|
|
13371
13543
|
targetEventIds.length = 0;
|
|
13544
|
+
if (editMask.visible)
|
|
13545
|
+
editMask.forceRender();
|
|
13372
13546
|
}
|
|
13373
13547
|
}
|
|
13374
13548
|
destroy() {
|
|
@@ -13382,6 +13556,9 @@ class Editor extends Group {
|
|
|
13382
13556
|
}
|
|
13383
13557
|
}
|
|
13384
13558
|
}
|
|
13559
|
+
__decorate([
|
|
13560
|
+
mergeConfigAttr()
|
|
13561
|
+
], Editor.prototype, "mergeConfig", void 0);
|
|
13385
13562
|
__decorate([
|
|
13386
13563
|
targetAttr(onHover)
|
|
13387
13564
|
], Editor.prototype, "hoverTarget", void 0);
|
|
@@ -13446,9 +13623,7 @@ let EditTool = class EditTool extends InnerEditor {
|
|
|
13446
13623
|
const { moveX, moveY, editor } = e;
|
|
13447
13624
|
const { app, list } = editor;
|
|
13448
13625
|
app.lockLayout();
|
|
13449
|
-
list.forEach(target => {
|
|
13450
|
-
target.moveWorld(moveX, moveY);
|
|
13451
|
-
});
|
|
13626
|
+
list.forEach(target => { target.moveWorld(moveX, moveY); });
|
|
13452
13627
|
app.unlockLayout();
|
|
13453
13628
|
}
|
|
13454
13629
|
onScale(e) {
|
|
@@ -13457,12 +13632,10 @@ let EditTool = class EditTool extends InnerEditor {
|
|
|
13457
13632
|
app.lockLayout();
|
|
13458
13633
|
list.forEach(target => {
|
|
13459
13634
|
const resize = editor.getEditSize(target) !== 'scale';
|
|
13460
|
-
if (transform)
|
|
13635
|
+
if (transform)
|
|
13461
13636
|
target.transformWorld(transform, resize);
|
|
13462
|
-
|
|
13463
|
-
else {
|
|
13637
|
+
else
|
|
13464
13638
|
target.scaleOfWorld(worldOrigin, scaleX, scaleY, resize);
|
|
13465
|
-
}
|
|
13466
13639
|
});
|
|
13467
13640
|
app.unlockLayout();
|
|
13468
13641
|
}
|
|
@@ -13472,12 +13645,10 @@ let EditTool = class EditTool extends InnerEditor {
|
|
|
13472
13645
|
app.lockLayout();
|
|
13473
13646
|
list.forEach(target => {
|
|
13474
13647
|
const resize = editor.getEditSize(target) !== 'scale';
|
|
13475
|
-
if (transform)
|
|
13648
|
+
if (transform)
|
|
13476
13649
|
target.transformWorld(transform, resize);
|
|
13477
|
-
|
|
13478
|
-
else {
|
|
13650
|
+
else
|
|
13479
13651
|
target.rotateOfWorld(worldOrigin, rotation);
|
|
13480
|
-
}
|
|
13481
13652
|
});
|
|
13482
13653
|
app.unlockLayout();
|
|
13483
13654
|
}
|
|
@@ -13487,12 +13658,10 @@ let EditTool = class EditTool extends InnerEditor {
|
|
|
13487
13658
|
app.lockLayout();
|
|
13488
13659
|
list.forEach(target => {
|
|
13489
13660
|
const resize = editor.getEditSize(target) !== 'scale';
|
|
13490
|
-
if (transform)
|
|
13661
|
+
if (transform)
|
|
13491
13662
|
target.transformWorld(transform, resize);
|
|
13492
|
-
|
|
13493
|
-
else {
|
|
13663
|
+
else
|
|
13494
13664
|
target.skewOfWorld(worldOrigin, skewX, skewY, resize);
|
|
13495
|
-
}
|
|
13496
13665
|
});
|
|
13497
13666
|
app.unlockLayout();
|
|
13498
13667
|
}
|
|
@@ -13780,16 +13949,21 @@ leaf.__scaleResize = function (scaleX, scaleY) {
|
|
|
13780
13949
|
scaleResize(this, scaleX, scaleY);
|
|
13781
13950
|
};
|
|
13782
13951
|
leaf.resizeWidth = function (width) {
|
|
13783
|
-
const scale = width / this.getBounds('box', 'local').width;
|
|
13952
|
+
const scale = width / this.getBounds('box', 'local').width || 1;
|
|
13784
13953
|
this.scaleOf(this.__layout.boxBounds, scale, this.__.lockRatio ? scale : 1, true);
|
|
13785
13954
|
};
|
|
13786
13955
|
leaf.resizeHeight = function (height) {
|
|
13787
|
-
const scale = height / this.getBounds('box', 'local').height;
|
|
13956
|
+
const scale = height / this.getBounds('box', 'local').height || 1;
|
|
13788
13957
|
this.scaleOf(this.__layout.boxBounds, this.__.lockRatio ? scale : 1, scale, true);
|
|
13789
13958
|
};
|
|
13790
13959
|
Text.prototype.__scaleResize = function (scaleX, scaleY) {
|
|
13791
13960
|
const { app, editConfig } = this, editor = app && app.editor, dragPoint = editor && editor.dragPoint;
|
|
13792
|
-
|
|
13961
|
+
const { __autoWidth, __autoHeight, textAlign, verticalAlign } = this.__, { boxBounds } = this.__layout;
|
|
13962
|
+
if (__autoWidth && textAlign !== 'left' && scaleX !== 1)
|
|
13963
|
+
this.x += boxBounds.x;
|
|
13964
|
+
if (__autoHeight && verticalAlign !== 'top' && scaleY !== 1)
|
|
13965
|
+
this.y += boxBounds.y;
|
|
13966
|
+
if (this.__.resizeFontSize || (editConfig && editConfig.editSize === 'font-size') || (dragPoint && editor.mergedConfig.editSize === 'font-size')) {
|
|
13793
13967
|
scaleResizeFontSize(this, scaleX, scaleY, dragPoint && dragPoint.direction);
|
|
13794
13968
|
}
|
|
13795
13969
|
else {
|
|
@@ -14112,11 +14286,26 @@ interaction.transformEnd = function () {
|
|
|
14112
14286
|
this.transformer.transformEnd();
|
|
14113
14287
|
};
|
|
14114
14288
|
interaction.wheel = function (data) {
|
|
14115
|
-
const { wheel } = this.config;
|
|
14289
|
+
const { wheel, pointer } = this.config, { posDeltaSpeed, negDeltaSpeed } = wheel;
|
|
14116
14290
|
if (wheel.disabled)
|
|
14117
14291
|
return;
|
|
14292
|
+
if (data.deltaX > 0)
|
|
14293
|
+
posDeltaSpeed && (data.deltaX *= posDeltaSpeed);
|
|
14294
|
+
else
|
|
14295
|
+
negDeltaSpeed && (data.deltaX *= negDeltaSpeed);
|
|
14296
|
+
if (data.deltaY > 0)
|
|
14297
|
+
posDeltaSpeed && (data.deltaY *= posDeltaSpeed);
|
|
14298
|
+
else
|
|
14299
|
+
negDeltaSpeed && (data.deltaY *= negDeltaSpeed);
|
|
14118
14300
|
const scale = wheel.getScale ? wheel.getScale(data, wheel) : WheelEventHelper.getScale(data, wheel);
|
|
14119
|
-
scale !== 1
|
|
14301
|
+
if (scale !== 1)
|
|
14302
|
+
this.zoom(getZoomEventData(scale, data));
|
|
14303
|
+
else {
|
|
14304
|
+
const move = wheel.getMove ? wheel.getMove(data, wheel) : WheelEventHelper.getMove(data, wheel);
|
|
14305
|
+
if (pointer.snap)
|
|
14306
|
+
PointHelper.round(move);
|
|
14307
|
+
this.move(getMoveEventData(move, data));
|
|
14308
|
+
}
|
|
14120
14309
|
};
|
|
14121
14310
|
interaction.multiTouch = function (data, list) {
|
|
14122
14311
|
if (this.config.multiTouch.disabled)
|
|
@@ -15111,7 +15300,7 @@ let TextEditor = class TextEditor extends InnerEditor {
|
|
|
15111
15300
|
const { editor } = this;
|
|
15112
15301
|
const { config } = editor.app;
|
|
15113
15302
|
const text = this.editTarget;
|
|
15114
|
-
text.
|
|
15303
|
+
text.textEditing = true;
|
|
15115
15304
|
this.isHTMLText = !(text instanceof Text);
|
|
15116
15305
|
this._keyEvent = config.keyEvent;
|
|
15117
15306
|
config.keyEvent = false;
|
|
@@ -15228,7 +15417,7 @@ let TextEditor = class TextEditor extends InnerEditor {
|
|
|
15228
15417
|
const { editTarget: text, editor, editDom: dom } = this;
|
|
15229
15418
|
if (text) {
|
|
15230
15419
|
this.onInput();
|
|
15231
|
-
text.
|
|
15420
|
+
text.textEditing = undefined;
|
|
15232
15421
|
if (editor.app)
|
|
15233
15422
|
editor.app.config.keyEvent = this._keyEvent;
|
|
15234
15423
|
editor.off_(this.eventIds);
|
|
@@ -15246,6 +15435,7 @@ TextEditor = __decorate([
|
|
|
15246
15435
|
], TextEditor);
|
|
15247
15436
|
|
|
15248
15437
|
Plugin.add('text-editor', 'editor');
|
|
15438
|
+
Text.addAttr('textEditing', false, surfaceType);
|
|
15249
15439
|
|
|
15250
15440
|
class HTMLTextData extends ImageData {
|
|
15251
15441
|
setText(value) {
|