@leafer-ui/miniapp 1.6.7 → 1.8.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.
@@ -43,7 +43,7 @@ const IncrementId = {
43
43
  };
44
44
  const I$2 = IncrementId;
45
45
 
46
- const { round: round$3, pow: pow$1, PI: PI$4 } = Math;
46
+ const { round: round$3, pow: pow$1, PI: PI$3 } = Math;
47
47
  const MathHelper = {
48
48
  within(value, min, max) {
49
49
  if (typeof min === 'object')
@@ -139,9 +139,9 @@ const MathHelper = {
139
139
  function randInt(num) {
140
140
  return Math.round(Math.random() * num);
141
141
  }
142
- const OneRadian = PI$4 / 180;
143
- const PI2 = PI$4 * 2;
144
- const PI_2 = PI$4 / 2;
142
+ const OneRadian = PI$3 / 180;
143
+ const PI2 = PI$3 * 2;
144
+ const PI_2 = PI$3 / 2;
145
145
  function getPointData() { return { x: 0, y: 0 }; }
146
146
  function getBoundsData() { return { x: 0, y: 0, width: 0, height: 0 }; }
147
147
  function getMatrixData() { return { a: 1, b: 0, c: 0, d: 1, e: 0, f: 0 }; }
@@ -436,7 +436,7 @@ const MatrixHelper = {
436
436
  const M$6 = MatrixHelper;
437
437
 
438
438
  const { toInnerPoint: toInnerPoint$2, toOuterPoint: toOuterPoint$3 } = MatrixHelper;
439
- 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;
439
+ const { sin: sin$4, cos: cos$4, abs: abs$3, sqrt: sqrt$2, atan2: atan2$2, min: min$1, round: round$2 } = Math;
440
440
  const PointHelper = {
441
441
  defaultPoint: getPointData(),
442
442
  tempPoint: {},
@@ -531,8 +531,8 @@ const PointHelper = {
531
531
  return getDistanceFrom(t.x, t.y, point.x, point.y);
532
532
  },
533
533
  getDistanceFrom(x1, y1, x2, y2) {
534
- const x = abs$4(x2 - x1);
535
- const y = abs$4(y2 - y1);
534
+ const x = abs$3(x2 - x1);
535
+ const y = abs$3(y2 - y1);
536
536
  return sqrt$2(x * x + y * y);
537
537
  },
538
538
  getMinDistanceFrom(x1, y1, x2, y2, x3, y3) {
@@ -549,10 +549,11 @@ const PointHelper = {
549
549
  getRadianFrom(fromX, fromY, originX, originY, toX, toY, toOriginX, toOriginY) {
550
550
  if (toOriginX === undefined)
551
551
  toOriginX = originX, toOriginY = originY;
552
- let fromAngle = atan2$2(fromY - originY, fromX - originX);
553
- let toAngle = atan2$2(toY - toOriginY, toX - toOriginX);
554
- const radian = toAngle - fromAngle;
555
- return radian < -PI$3 ? radian + PI2 : radian;
552
+ const a = fromX - originX;
553
+ const b = fromY - originY;
554
+ const c = toX - toOriginX;
555
+ const d = toY - toOriginY;
556
+ return Math.atan2(a * d - b * c, a * c + b * d);
556
557
  },
557
558
  getAtan2(t, to) {
558
559
  return atan2$2(to.y - t.y, to.x - t.x);
@@ -762,7 +763,7 @@ class Matrix {
762
763
  MatrixHelper.reset(this);
763
764
  }
764
765
  }
765
- const tempMatrix = new Matrix();
766
+ const tempMatrix$1 = new Matrix();
766
767
 
767
768
  const TwoPointBoundsHelper = {
768
769
  tempPointBounds: {},
@@ -859,6 +860,12 @@ const AroundHelper = {
859
860
  }
860
861
  if (!onlyBoxSize)
861
862
  to.x += box.x, to.y += box.y;
863
+ },
864
+ getPoint(around, box, to) {
865
+ if (!to)
866
+ to = {};
867
+ AroundHelper.toPoint(around, box, to, true);
868
+ return to;
862
869
  }
863
870
  };
864
871
  function get$4(around) {
@@ -1787,10 +1794,13 @@ function contextAttr(realName) {
1787
1794
  return (target, key) => {
1788
1795
  if (!realName)
1789
1796
  realName = key;
1790
- Object.defineProperty(target, key, {
1797
+ const property = {
1791
1798
  get() { return this.context[realName]; },
1792
1799
  set(value) { this.context[realName] = value; }
1793
- });
1800
+ };
1801
+ if (key === 'strokeCap')
1802
+ property.set = function (value) { this.context[realName] = value === 'none' ? 'butt' : value; };
1803
+ Object.defineProperty(target, key, property);
1794
1804
  };
1795
1805
  }
1796
1806
  const contextMethodNameList = [];
@@ -2066,15 +2076,15 @@ __decorate([
2066
2076
  contextMethod()
2067
2077
  ], Canvas$1.prototype, "strokeText", null);
2068
2078
 
2069
- const { copy: copy$9, multiplyParent: multiplyParent$3 } = MatrixHelper, { round: round$1 } = Math;
2079
+ const { copy: copy$9, multiplyParent: multiplyParent$4 } = MatrixHelper, { round: round$1 } = Math;
2070
2080
  const minSize = { width: 1, height: 1, pixelRatio: 1 };
2071
2081
  const canvasSizeAttrs = ['width', 'height', 'pixelRatio'];
2072
2082
  class LeaferCanvasBase extends Canvas$1 {
2073
2083
  get width() { return this.size.width; }
2074
2084
  get height() { return this.size.height; }
2075
2085
  get pixelRatio() { return this.size.pixelRatio; }
2076
- get pixelWidth() { return this.width * this.pixelRatio; }
2077
- get pixelHeight() { return this.height * this.pixelRatio; }
2086
+ get pixelWidth() { return this.width * this.pixelRatio || 0; }
2087
+ get pixelHeight() { return this.height * this.pixelRatio || 0; }
2078
2088
  get pixelSnap() { return this.config.pixelSnap; }
2079
2089
  set pixelSnap(value) { this.config.pixelSnap = value; }
2080
2090
  get allowBackgroundColor() { return this.view && this.parentView; }
@@ -2139,7 +2149,7 @@ class LeaferCanvasBase extends Canvas$1 {
2139
2149
  setWorld(matrix, parentMatrix) {
2140
2150
  const { pixelRatio, pixelSnap } = this, w = this.worldTransform;
2141
2151
  if (parentMatrix)
2142
- multiplyParent$3(matrix, parentMatrix, w);
2152
+ multiplyParent$4(matrix, parentMatrix, w);
2143
2153
  w.a = matrix.a * pixelRatio;
2144
2154
  w.b = matrix.b * pixelRatio;
2145
2155
  w.c = matrix.c * pixelRatio;
@@ -2161,20 +2171,33 @@ class LeaferCanvasBase extends Canvas$1 {
2161
2171
  if (w)
2162
2172
  this.setTransform(w.a, w.b, w.c, w.d, w.e, w.f);
2163
2173
  }
2164
- setStroke(color, strokeWidth, options) {
2174
+ setStroke(color, strokeWidth, options, childOptions) {
2165
2175
  if (strokeWidth)
2166
2176
  this.strokeWidth = strokeWidth;
2167
2177
  if (color)
2168
2178
  this.strokeStyle = color;
2169
2179
  if (options)
2170
- this.setStrokeOptions(options);
2171
- }
2172
- setStrokeOptions(options) {
2173
- this.strokeCap = options.strokeCap === 'none' ? 'butt' : options.strokeCap;
2174
- this.strokeJoin = options.strokeJoin;
2175
- this.dashPattern = options.dashPattern;
2176
- this.dashOffset = options.dashOffset;
2177
- this.miterLimit = options.miterLimit;
2180
+ this.setStrokeOptions(options, childOptions);
2181
+ }
2182
+ setStrokeOptions(options, childOptions) {
2183
+ let { strokeCap, strokeJoin, dashPattern, dashOffset, miterLimit } = options;
2184
+ if (childOptions) {
2185
+ if (childOptions.strokeCap)
2186
+ strokeCap = childOptions.strokeCap;
2187
+ if (childOptions.strokeJoin)
2188
+ strokeJoin = childOptions.strokeJoin;
2189
+ if (childOptions.dashPattern !== undefined)
2190
+ dashPattern = childOptions.dashPattern;
2191
+ if (childOptions.dashOffset !== undefined)
2192
+ dashOffset = childOptions.dashOffset;
2193
+ if (childOptions.miterLimit)
2194
+ miterLimit = childOptions.miterLimit;
2195
+ }
2196
+ this.strokeCap = strokeCap;
2197
+ this.strokeJoin = strokeJoin;
2198
+ this.dashPattern = dashPattern;
2199
+ this.dashOffset = dashOffset;
2200
+ this.miterLimit = miterLimit;
2178
2201
  }
2179
2202
  saveBlendMode(blendMode) {
2180
2203
  this.savedBlendMode = this.blendMode;
@@ -2408,7 +2431,7 @@ const RectHelper = {
2408
2431
  }
2409
2432
  };
2410
2433
 
2411
- const { sin: sin$3, cos: cos$3, atan2: atan2$1, ceil: ceil$1, abs: abs$3, PI: PI$2, sqrt: sqrt$1, pow } = Math;
2434
+ const { sin: sin$3, cos: cos$3, atan2: atan2$1, ceil: ceil$1, abs: abs$2, PI: PI$2, sqrt: sqrt$1, pow } = Math;
2412
2435
  const { setPoint: setPoint$1, addPoint: addPoint$1 } = TwoPointBoundsHelper;
2413
2436
  const { set, toNumberPoints } = PointHelper;
2414
2437
  const { M: M$5, L: L$6, C: C$4, Q: Q$4, Z: Z$5 } = PathCommandMap;
@@ -2483,7 +2506,7 @@ const BezierHelper = {
2483
2506
  let totalRadian = endRadian - startRadian;
2484
2507
  if (totalRadian < 0)
2485
2508
  totalRadian += PI2;
2486
- if (totalRadian === PI$2 || (abs$3(BAx + BAy) < 1.e-12) || (abs$3(CBx + CBy) < 1.e-12)) {
2509
+ if (totalRadian === PI$2 || (abs$2(BAx + BAy) < 1.e-12) || (abs$2(CBx + CBy) < 1.e-12)) {
2487
2510
  if (data)
2488
2511
  data.push(L$6, x1, y1);
2489
2512
  if (setPointBounds) {
@@ -2525,7 +2548,7 @@ const BezierHelper = {
2525
2548
  totalRadian -= PI2;
2526
2549
  if (anticlockwise)
2527
2550
  totalRadian -= PI2;
2528
- const parts = ceil$1(abs$3(totalRadian / PI_2));
2551
+ const parts = ceil$1(abs$2(totalRadian / PI_2));
2529
2552
  const partRadian = totalRadian / parts;
2530
2553
  const partRadian4Sin = sin$3(partRadian / 4);
2531
2554
  const control = 8 / 3 * partRadian4Sin * partRadian4Sin / sin$3(partRadian / 2);
@@ -2970,7 +2993,7 @@ const { current, pushData, copyData } = PathConvert;
2970
2993
 
2971
2994
  const { M: M$3, L: L$4, C: C$2, Q: Q$2, Z: Z$3, N: N$2, D: D$2, X: X$2, G: G$2, F: F$3, O: O$2, P: P$2, U: U$2 } = PathCommandMap;
2972
2995
  const { getMinDistanceFrom, getRadianFrom } = PointHelper;
2973
- const { tan, min, abs: abs$2 } = Math;
2996
+ const { tan, min, abs: abs$1 } = Math;
2974
2997
  const startPoint = {};
2975
2998
  const PathCommandDataHelper = {
2976
2999
  beginPath(data) {
@@ -3033,7 +3056,7 @@ const PathCommandDataHelper = {
3033
3056
  arcTo(data, x1, y1, x2, y2, radius, lastX, lastY) {
3034
3057
  if (lastX !== undefined) {
3035
3058
  const d = getMinDistanceFrom(lastX, lastY, x1, y1, x2, y2);
3036
- radius = min(radius, min(d / 2, d / 2 * abs$2(tan(getRadianFrom(lastX, lastY, x1, y1, x2, y2) / 2))));
3059
+ radius = min(radius, min(d / 2, d / 2 * abs$1(tan(getRadianFrom(lastX, lastY, x1, y1, x2, y2) / 2))));
3037
3060
  }
3038
3061
  data.push(U$2, x1, y1, x2, y2, radius);
3039
3062
  },
@@ -3339,7 +3362,7 @@ const { getCenterX, getCenterY } = PointHelper;
3339
3362
  const { arcTo } = PathCommandDataHelper;
3340
3363
  const PathCorner = {
3341
3364
  smooth(data, cornerRadius, _cornerSmoothing) {
3342
- let command, commandLen;
3365
+ let command, lastCommand, commandLen;
3343
3366
  let i = 0, x = 0, y = 0, startX = 0, startY = 0, secondX = 0, secondY = 0, lastX = 0, lastY = 0;
3344
3367
  const len = data.length;
3345
3368
  const smooth = [];
@@ -3377,8 +3400,10 @@ const PathCorner = {
3377
3400
  lastY = y;
3378
3401
  break;
3379
3402
  case Z:
3380
- arcTo(smooth, startX, startY, secondX, secondY, cornerRadius, lastX, lastY);
3381
- smooth.push(Z);
3403
+ if (lastCommand !== Z) {
3404
+ arcTo(smooth, startX, startY, secondX, secondY, cornerRadius, lastX, lastY);
3405
+ smooth.push(Z);
3406
+ }
3382
3407
  i += 1;
3383
3408
  break;
3384
3409
  default:
@@ -3387,6 +3412,7 @@ const PathCorner = {
3387
3412
  smooth.push(data[i + j]);
3388
3413
  i += commandLen;
3389
3414
  }
3415
+ lastCommand = command;
3390
3416
  }
3391
3417
  if (command !== Z) {
3392
3418
  smooth[1] = startX;
@@ -3883,12 +3909,12 @@ class LeaferImage {
3883
3909
  try {
3884
3910
  if (transform && pattern.setTransform) {
3885
3911
  pattern.setTransform(transform);
3886
- transform = null;
3912
+ transform = undefined;
3887
3913
  }
3888
3914
  }
3889
3915
  catch (_a) { }
3890
3916
  if (paint)
3891
- paint.transform = transform;
3917
+ DataHelper.stintSet(paint, 'transform', transform);
3892
3918
  return pattern;
3893
3919
  }
3894
3920
  destroy() {
@@ -3906,6 +3932,13 @@ function defineKey(target, key, descriptor, noConfigurable) {
3906
3932
  function getDescriptor(object, name) {
3907
3933
  return Object.getOwnPropertyDescriptor(object, name);
3908
3934
  }
3935
+ function createDescriptor(key, defaultValue) {
3936
+ const privateKey = '_' + key;
3937
+ return {
3938
+ get() { const v = this[privateKey]; return v === undefined ? defaultValue : v; },
3939
+ set(value) { this[privateKey] = value; }
3940
+ };
3941
+ }
3909
3942
  function getNames(object) {
3910
3943
  return Object.getOwnPropertyNames(object);
3911
3944
  }
@@ -3993,10 +4026,14 @@ function pathInputType(defaultValue) {
3993
4026
  }));
3994
4027
  }
3995
4028
  const pathType = boundsType;
3996
- function affectStrokeBoundsType(defaultValue) {
4029
+ function affectStrokeBoundsType(defaultValue, useStroke) {
3997
4030
  return decorateLeafAttr(defaultValue, (key) => attr({
3998
4031
  set(value) {
3999
- this.__setAttr(key, value) && doStrokeType(this);
4032
+ if (this.__setAttr(key, value)) {
4033
+ doStrokeType(this);
4034
+ if (useStroke)
4035
+ this.__.__useStroke = true;
4036
+ }
4000
4037
  }
4001
4038
  }));
4002
4039
  }
@@ -4134,15 +4171,7 @@ function defineDataProcessor(target, key, defaultValue) {
4134
4171
  const data = target.__DataProcessor.prototype;
4135
4172
  const computedKey = '_' + key;
4136
4173
  const setMethodName = getSetMethodName(key);
4137
- const property = {
4138
- get() {
4139
- const v = this[computedKey];
4140
- return v === undefined ? defaultValue : v;
4141
- },
4142
- set(value) {
4143
- this[computedKey] = value;
4144
- }
4145
- };
4174
+ const property = createDescriptor(key, defaultValue);
4146
4175
  if (defaultValue === undefined) {
4147
4176
  property.get = function () { return this[computedKey]; };
4148
4177
  }
@@ -4257,7 +4286,7 @@ function registerUIEvent() {
4257
4286
  };
4258
4287
  }
4259
4288
 
4260
- const { copy: copy$7, toInnerPoint: toInnerPoint$1, toOuterPoint: toOuterPoint$1, scaleOfOuter: scaleOfOuter$2, rotateOfOuter: rotateOfOuter$2, skewOfOuter, multiplyParent: multiplyParent$2, divideParent, getLayout } = MatrixHelper;
4289
+ const { copy: copy$7, toInnerPoint: toInnerPoint$1, toOuterPoint: toOuterPoint$1, scaleOfOuter: scaleOfOuter$2, rotateOfOuter: rotateOfOuter$2, skewOfOuter, multiplyParent: multiplyParent$3, divideParent, getLayout } = MatrixHelper;
4261
4290
  const matrix$1 = {}, { round } = Math;
4262
4291
  const LeafHelper = {
4263
4292
  updateAllMatrix(leaf, checkAutoLayout, waitAutoLayout) {
@@ -4329,6 +4358,14 @@ const LeafHelper = {
4329
4358
  }
4330
4359
  return true;
4331
4360
  },
4361
+ copyCanvasByWorld(leaf, currentCanvas, fromCanvas, fromWorld, blendMode, onlyResetTransform) {
4362
+ if (!fromWorld)
4363
+ fromWorld = leaf.__nowWorld;
4364
+ if (leaf.__worldFlipped || Platform.fullImageShadow)
4365
+ currentCanvas.copyWorldByReset(fromCanvas, fromWorld, leaf.__nowWorld, blendMode, onlyResetTransform);
4366
+ else
4367
+ currentCanvas.copyWorldToInner(fromCanvas, fromWorld, leaf.__layout.renderBounds, blendMode);
4368
+ },
4332
4369
  moveWorld(t, x, y = 0, isInnerPoint, transition) {
4333
4370
  const local = typeof x === 'object' ? Object.assign({}, x) : { x, y };
4334
4371
  isInnerPoint ? toOuterPoint$1(t.localTransform, local, local, true) : (t.parent && toInnerPoint$1(t.parent.worldTransform, local, local, true));
@@ -4388,14 +4425,14 @@ const LeafHelper = {
4388
4425
  },
4389
4426
  transformWorld(t, transform, resize, transition) {
4390
4427
  copy$7(matrix$1, t.worldTransform);
4391
- multiplyParent$2(matrix$1, transform);
4428
+ multiplyParent$3(matrix$1, transform);
4392
4429
  if (t.parent)
4393
4430
  divideParent(matrix$1, t.parent.worldTransform);
4394
4431
  L.setTransform(t, matrix$1, resize, transition);
4395
4432
  },
4396
4433
  transform(t, transform, resize, transition) {
4397
4434
  copy$7(matrix$1, t.localTransform);
4398
- multiplyParent$2(matrix$1, transform);
4435
+ multiplyParent$3(matrix$1, transform);
4399
4436
  L.setTransform(t, matrix$1, resize, transition);
4400
4437
  },
4401
4438
  setTransform(t, transform, resize, transition) {
@@ -5257,17 +5294,18 @@ const LeafDataProxy = {
5257
5294
  }
5258
5295
  };
5259
5296
 
5260
- const { setLayout, multiplyParent: multiplyParent$1, translateInner, defaultWorld } = MatrixHelper;
5297
+ const { setLayout, multiplyParent: multiplyParent$2, translateInner, defaultWorld } = MatrixHelper;
5261
5298
  const { toPoint: toPoint$3, tempPoint } = AroundHelper;
5262
5299
  const LeafMatrix = {
5263
5300
  __updateWorldMatrix() {
5264
- multiplyParent$1(this.__local || this.__layout, this.parent ? this.parent.__world : defaultWorld, this.__world, !!this.__layout.affectScaleOrRotation, this.__, this.parent && this.parent.__);
5301
+ const { parent, __layout } = this;
5302
+ multiplyParent$2(this.__local || __layout, parent ? parent.__world : defaultWorld, this.__world, !!__layout.affectScaleOrRotation, this.__, parent && (parent.scrollY || parent.scrollX) && parent.__);
5265
5303
  },
5266
5304
  __updateLocalMatrix() {
5267
5305
  if (this.__local) {
5268
5306
  const layout = this.__layout, local = this.__local, data = this.__;
5269
5307
  if (layout.affectScaleOrRotation) {
5270
- if ((layout.scaleChanged && (layout.resized = 'scale')) || layout.rotationChanged) {
5308
+ if ((layout.scaleChanged && (layout.resized || (layout.resized = 'scale'))) || layout.rotationChanged) {
5271
5309
  setLayout(local, data, null, null, layout.affectRotation);
5272
5310
  layout.scaleChanged = layout.rotationChanged = undefined;
5273
5311
  }
@@ -5422,6 +5460,8 @@ const LeafBounds = {
5422
5460
 
5423
5461
  const LeafRender = {
5424
5462
  __render(canvas, options) {
5463
+ if (options.shape)
5464
+ return this.__renderShape(canvas, options);
5425
5465
  if (this.__worldOpacity) {
5426
5466
  const data = this.__;
5427
5467
  canvas.setWorld(this.__nowWorld = this.__getNowWorld(options));
@@ -5431,12 +5471,7 @@ const LeafRender = {
5431
5471
  return this.__renderEraser(canvas, options);
5432
5472
  const tempCanvas = canvas.getSameCanvas(true, true);
5433
5473
  this.__draw(tempCanvas, options, canvas);
5434
- if (this.__worldFlipped) {
5435
- canvas.copyWorldByReset(tempCanvas, this.__nowWorld, null, data.__blendMode, true);
5436
- }
5437
- else {
5438
- canvas.copyWorldToInner(tempCanvas, this.__nowWorld, this.__layout.renderBounds, data.__blendMode);
5439
- }
5474
+ LeafHelper.copyCanvasByWorld(this, canvas, tempCanvas, this.__nowWorld, data.__blendMode, true);
5440
5475
  tempCanvas.recycle(this.__nowWorld);
5441
5476
  }
5442
5477
  else {
@@ -5446,6 +5481,12 @@ const LeafRender = {
5446
5481
  Debug.drawBounds(this, canvas, options);
5447
5482
  }
5448
5483
  },
5484
+ __renderShape(canvas, options) {
5485
+ if (this.__worldOpacity) {
5486
+ canvas.setWorld(this.__nowWorld = this.__getNowWorld(options));
5487
+ this.__drawShape(canvas, options);
5488
+ }
5489
+ },
5449
5490
  __clip(canvas, options) {
5450
5491
  if (this.__worldOpacity) {
5451
5492
  canvas.setWorld(this.__nowWorld = this.__getNowWorld(options));
@@ -5478,7 +5519,7 @@ const BranchRender = {
5478
5519
  options.dimOpacity = data.dim === true ? 0.2 : data.dim;
5479
5520
  else if (data.dimskip)
5480
5521
  options.dimOpacity && (options.dimOpacity = 0);
5481
- if (data.__single) {
5522
+ if (data.__single && !this.isBranchLeaf) {
5482
5523
  if (data.eraser === 'path')
5483
5524
  return this.__renderEraser(canvas, options);
5484
5525
  const tempCanvas = canvas.getSameCanvas(false, true);
@@ -5500,9 +5541,7 @@ const BranchRender = {
5500
5541
  else {
5501
5542
  const { children } = this;
5502
5543
  for (let i = 0, len = children.length; i < len; i++) {
5503
- if (excludeRenderBounds$1(children[i], options))
5504
- continue;
5505
- children[i].__render(canvas, options);
5544
+ excludeRenderBounds$1(children[i], options) || children[i].__render(canvas, options);
5506
5545
  }
5507
5546
  }
5508
5547
  },
@@ -5510,16 +5549,15 @@ const BranchRender = {
5510
5549
  if (this.__worldOpacity) {
5511
5550
  const { children } = this;
5512
5551
  for (let i = 0, len = children.length; i < len; i++) {
5513
- if (excludeRenderBounds$1(children[i], options))
5514
- continue;
5515
- children[i].__clip(canvas, options);
5552
+ excludeRenderBounds$1(children[i], options) || children[i].__clip(canvas, options);
5516
5553
  }
5517
5554
  }
5518
5555
  }
5519
5556
  };
5520
5557
 
5558
+ const tempScaleData$1 = {};
5521
5559
  const { LEAF, create } = IncrementId;
5522
- const { toInnerPoint, toOuterPoint, multiplyParent } = MatrixHelper;
5560
+ const { toInnerPoint, toOuterPoint, multiplyParent: multiplyParent$1 } = MatrixHelper;
5523
5561
  const { toOuterOf } = BoundsHelper;
5524
5562
  const { copy: copy$4, move } = PointHelper;
5525
5563
  const { moveLocal, zoomOfLocal, rotateOfLocal, skewOfLocal, moveWorld, zoomOfWorld, rotateOfWorld, skewOfWorld, transform, transformWorld, setTransform, getFlipTransform, getLocalOrigin, getRelativeWorld, drop } = LeafHelper;
@@ -5701,7 +5739,7 @@ let Leaf = class Leaf {
5701
5739
  if (!this.__cameraWorld)
5702
5740
  this.__cameraWorld = {};
5703
5741
  const cameraWorld = this.__cameraWorld, world = this.__world;
5704
- multiplyParent(world, options.matrix, cameraWorld, undefined, world);
5742
+ multiplyParent$1(world, options.matrix, cameraWorld, undefined, world);
5705
5743
  toOuterOf(this.__layout.renderBounds, cameraWorld, cameraWorld);
5706
5744
  cameraWorld.half !== world.half && (cameraWorld.half = world.half);
5707
5745
  return cameraWorld;
@@ -5710,6 +5748,22 @@ let Leaf = class Leaf {
5710
5748
  return this.__world;
5711
5749
  }
5712
5750
  }
5751
+ getClampRenderScale() {
5752
+ let { scaleX } = this.__nowWorld || this.__world;
5753
+ if (scaleX < 0)
5754
+ scaleX = -scaleX;
5755
+ return scaleX > 1 ? scaleX : 1;
5756
+ }
5757
+ getRenderScaleData(abs, scaleFixed) {
5758
+ const { scaleX, scaleY } = ImageManager.patternLocked ? this.__world : this.__nowWorld;
5759
+ if (scaleFixed)
5760
+ tempScaleData$1.scaleX = tempScaleData$1.scaleY = 1;
5761
+ else if (abs)
5762
+ tempScaleData$1.scaleX = scaleX < 0 ? -scaleX : scaleX, tempScaleData$1.scaleY = scaleY < 0 ? -scaleY : scaleY;
5763
+ else
5764
+ tempScaleData$1.scaleX = scaleX, tempScaleData$1.scaleY = scaleY;
5765
+ return tempScaleData$1;
5766
+ }
5713
5767
  getTransform(relative) {
5714
5768
  return this.__layout.getTransform(relative || 'local');
5715
5769
  }
@@ -5865,7 +5919,8 @@ let Leaf = class Leaf {
5865
5919
  __drawFast(_canvas, _options) { }
5866
5920
  __draw(_canvas, _options, _originCanvas) { }
5867
5921
  __clip(_canvas, _options) { }
5868
- __renderShape(_canvas, _options, _ignoreFill, _ignoreStroke) { }
5922
+ __renderShape(_canvas, _options) { }
5923
+ __drawShape(_canvas, _options) { }
5869
5924
  __updateWorldOpacity() { }
5870
5925
  __updateChange() { }
5871
5926
  __drawPath(_canvas) { }
@@ -6233,7 +6288,7 @@ class LeafLevelList {
6233
6288
  }
6234
6289
  }
6235
6290
 
6236
- const version = "1.6.7";
6291
+ const version = "1.8.0";
6237
6292
 
6238
6293
  class LeaferCanvas extends LeaferCanvasBase {
6239
6294
  get allowBackgroundColor() { return false; }
@@ -7220,6 +7275,11 @@ function zoomLayerType() {
7220
7275
  });
7221
7276
  };
7222
7277
  }
7278
+ function createAttr(defaultValue) {
7279
+ return (target, key) => {
7280
+ defineKey(target, key, createDescriptor(key, defaultValue));
7281
+ };
7282
+ }
7223
7283
 
7224
7284
  function hasTransparent$3(color) {
7225
7285
  if (!color || color.length === 7 || color.length === 4)
@@ -7277,26 +7337,9 @@ const emptyPaint = {};
7277
7337
  const debug$2 = Debug.get('UIData');
7278
7338
  class UIData extends LeafData {
7279
7339
  get scale() { const { scaleX, scaleY } = this; return scaleX !== scaleY ? { x: scaleX, y: scaleY } : scaleX; }
7280
- get __strokeWidth() {
7281
- const { strokeWidth, strokeWidthFixed } = this;
7282
- if (strokeWidthFixed) {
7283
- const ui = this.__leaf;
7284
- let { scaleX } = ui.__nowWorld || ui.__world;
7285
- if (scaleX < 0)
7286
- scaleX = -scaleX;
7287
- return scaleX > 1 ? strokeWidth / scaleX : strokeWidth;
7288
- }
7289
- else
7290
- return strokeWidth;
7291
- }
7292
- get __hasStroke() { return this.stroke && this.strokeWidth; }
7293
- get __hasHalf() { const t = this; return (t.stroke && t.strokeAlign === 'center' && t.strokeWidth % 2) || undefined; }
7294
- get __hasMultiPaint() {
7295
- const t = this;
7296
- if ((t.__isFills && t.fill.length > 1) || (t.__isStrokes && t.stroke.length > 1) || t.__useEffect)
7297
- return true;
7298
- return t.fill && this.__hasStroke;
7299
- }
7340
+ get __strokeWidth() { return this.__getRealStrokeWidth(); }
7341
+ get __maxStrokeWidth() { const t = this; return t.__hasMultiStrokeStyle ? Math.max(t.__hasMultiStrokeStyle, t.strokeWidth) : t.strokeWidth; }
7342
+ get __hasMultiPaint() { const t = this; return (t.fill && this.__useStroke) || (t.__isFills && t.fill.length > 1) || (t.__isStrokes && t.stroke.length > 1) || t.__useEffect; }
7300
7343
  get __clipAfterFill() { const t = this; return (t.cornerRadius || t.innerShadow || t.__pathInputed); }
7301
7344
  get __hasSurface() { const t = this; return (t.fill || t.stroke); }
7302
7345
  get __autoWidth() { return !this._width; }
@@ -7378,6 +7421,21 @@ class UIData extends LeafData {
7378
7421
  Paint.compute('stroke', this.__leaf);
7379
7422
  this.__needComputePaint = undefined;
7380
7423
  }
7424
+ __getRealStrokeWidth(childStyle) {
7425
+ let { strokeWidth, strokeWidthFixed } = this;
7426
+ if (childStyle) {
7427
+ if (childStyle.strokeWidth)
7428
+ strokeWidth = childStyle.strokeWidth;
7429
+ if (childStyle.strokeWidthFixed !== undefined)
7430
+ strokeWidthFixed = childStyle.strokeWidthFixed;
7431
+ }
7432
+ if (strokeWidthFixed) {
7433
+ const scale = this.__leaf.getClampRenderScale();
7434
+ return scale > 1 ? strokeWidth / scale : strokeWidth;
7435
+ }
7436
+ else
7437
+ return strokeWidth;
7438
+ }
7381
7439
  __setPaint(attrName, value) {
7382
7440
  this.__setInput(attrName, value);
7383
7441
  const layout = this.__leaf.__layout;
@@ -7402,6 +7460,7 @@ class UIData extends LeafData {
7402
7460
  }
7403
7461
  else {
7404
7462
  stintSet$2(this, '__isAlphaPixelStroke', undefined);
7463
+ stintSet$2(this, '__hasMultiStrokeStyle', undefined);
7405
7464
  this._stroke = this.__isStrokes = undefined;
7406
7465
  }
7407
7466
  }
@@ -7423,8 +7482,8 @@ class GroupData extends UIData {
7423
7482
 
7424
7483
  class BoxData extends GroupData {
7425
7484
  get __boxStroke() { return !this.__pathInputed; }
7426
- get __drawAfterFill() { const t = this; return (t.overflow === 'hide' && (t.__clipAfterFill || t.innerShadow) && t.__leaf.children.length); }
7427
- get __clipAfterFill() { return this.__leaf.isOverflow || super.__clipAfterFill; }
7485
+ get __drawAfterFill() { const t = this; return t.__single || t.__clipAfterFill; }
7486
+ get __clipAfterFill() { const t = this; return t.overflow === 'hide' && t.__leaf.children.length && (t.__leaf.isOverflow || super.__clipAfterFill); }
7428
7487
  }
7429
7488
 
7430
7489
  class LeaferData extends GroupData {
@@ -7544,7 +7603,7 @@ class CanvasData extends RectData {
7544
7603
  const UIBounds = {
7545
7604
  __updateStrokeSpread() {
7546
7605
  let width = 0, boxWidth = 0;
7547
- const data = this.__, { strokeAlign, strokeWidth } = data, box = this.__box;
7606
+ const data = this.__, { strokeAlign, __maxStrokeWidth: strokeWidth } = data, box = this.__box;
7548
7607
  if ((data.stroke || data.hitStroke === 'all') && strokeWidth && strokeAlign !== 'inside') {
7549
7608
  boxWidth = width = strokeAlign === 'center' ? strokeWidth / 2 : strokeWidth;
7550
7609
  if (!data.__boxStroke) {
@@ -7564,13 +7623,15 @@ const UIBounds = {
7564
7623
  },
7565
7624
  __updateRenderSpread() {
7566
7625
  let width = 0;
7567
- const { shadow, innerShadow, blur, backgroundBlur, filter } = this.__;
7626
+ const { shadow, innerShadow, blur, backgroundBlur, filter, renderSpread } = this.__;
7568
7627
  if (shadow)
7569
7628
  shadow.forEach(item => width = Math.max(width, Math.max(Math.abs(item.y), Math.abs(item.x)) + (item.spread > 0 ? item.spread : 0) + item.blur * 1.5));
7570
7629
  if (blur)
7571
7630
  width = Math.max(width, blur);
7572
7631
  if (filter)
7573
7632
  width += Filter.getSpread(filter);
7633
+ if (renderSpread)
7634
+ width += renderSpread;
7574
7635
  let shapeWidth = width = Math.ceil(width);
7575
7636
  if (innerShadow)
7576
7637
  innerShadow.forEach(item => shapeWidth = Math.max(shapeWidth, Math.max(Math.abs(item.y), Math.abs(item.x)) + (item.spread < 0 ? -item.spread : 0) + item.blur * 1.5));
@@ -7586,15 +7647,18 @@ const { stintSet: stintSet$1 } = DataHelper;
7586
7647
  const UIRender = {
7587
7648
  __updateChange() {
7588
7649
  const data = this.__;
7650
+ if (data.__useStroke) {
7651
+ const useStroke = data.__useStroke = !!(data.stroke && data.strokeWidth);
7652
+ stintSet$1(this.__world, 'half', useStroke && data.strokeAlign === 'center' && data.strokeWidth % 2);
7653
+ stintSet$1(data, '__fillAfterStroke', useStroke && data.strokeAlign === 'outside' && data.fill && !data.__isTransparentFill);
7654
+ }
7589
7655
  if (data.__useEffect) {
7590
7656
  const { shadow, fill, stroke } = data, otherEffect = data.innerShadow || data.blur || data.backgroundBlur || data.filter;
7591
- stintSet$1(data, '__isFastShadow', shadow && !otherEffect && shadow.length < 2 && !shadow[0].spread && !(shadow[0].box && data.__isTransparentFill) && fill && !(fill instanceof Array && fill.length > 1) && (this.useFastShadow || !stroke || (stroke && data.strokeAlign === 'inside')));
7657
+ stintSet$1(data, '__isFastShadow', shadow && !otherEffect && shadow.length < 2 && !shadow[0].spread && fill && !data.__isTransparentFill && !(fill instanceof Array && fill.length > 1) && (this.useFastShadow || !stroke || (stroke && data.strokeAlign === 'inside')));
7592
7658
  data.__useEffect = !!(shadow || otherEffect);
7593
7659
  }
7594
- stintSet$1(this.__world, 'half', data.__hasHalf);
7595
- stintSet$1(data, '__fillAfterStroke', data.stroke && data.strokeAlign === 'outside' && data.fill && !data.__isTransparentFill);
7596
7660
  data.__checkSingle();
7597
- stintSet$1(data, '__complex', data.__isFills || data.__isStrokes || data.cornerRadius || data.__useEffect);
7661
+ stintSet$1(data, '__complex', (data.__isFills || data.__isStrokes || data.cornerRadius || data.__useEffect));
7598
7662
  },
7599
7663
  __drawFast(canvas, options) {
7600
7664
  drawFast(this, canvas, options);
@@ -7652,18 +7716,15 @@ const UIRender = {
7652
7716
  this.__drawFast(canvas, options);
7653
7717
  }
7654
7718
  },
7655
- __renderShape(canvas, options, ignoreFill, ignoreStroke) {
7656
- if (this.__worldOpacity) {
7657
- canvas.setWorld(this.__nowWorld = this.__getNowWorld(options));
7658
- const { fill, stroke } = this.__;
7659
- this.__drawRenderPath(canvas);
7660
- if (fill && !ignoreFill)
7661
- this.__.__isAlphaPixelFill ? Paint.fills(fill, this, canvas) : Paint.fill('#000000', this, canvas);
7662
- if (this.__.__isCanvas)
7663
- this.__drawAfterFill(canvas, options);
7664
- if (stroke && !ignoreStroke)
7665
- this.__.__isAlphaPixelStroke ? Paint.strokes(stroke, this, canvas) : Paint.stroke('#000000', this, canvas);
7666
- }
7719
+ __drawShape(canvas, options) {
7720
+ this.__drawRenderPath(canvas);
7721
+ const data = this.__, { fill, stroke } = data;
7722
+ if (fill && !options.ignoreFill)
7723
+ data.__isAlphaPixelFill ? Paint.fills(fill, this, canvas) : Paint.fill('#000000', this, canvas);
7724
+ if (data.__isCanvas)
7725
+ this.__drawAfterFill(canvas, options);
7726
+ if (stroke && !options.ignoreStroke)
7727
+ data.__isAlphaPixelStroke ? Paint.strokes(stroke, this, canvas) : Paint.stroke('#000000', this, canvas);
7667
7728
  },
7668
7729
  __drawAfterFill(canvas, options) {
7669
7730
  if (this.__.__clipAfterFill) {
@@ -7700,17 +7761,17 @@ const RectRender = {
7700
7761
  if (__drawAfterFill)
7701
7762
  this.__drawAfterFill(canvas, options);
7702
7763
  if (stroke) {
7703
- const { strokeAlign, __strokeWidth } = this.__;
7704
- if (!__strokeWidth)
7764
+ const { strokeAlign, __strokeWidth: strokeWidth } = this.__;
7765
+ if (!strokeWidth)
7705
7766
  return;
7706
- canvas.setStroke(stroke, __strokeWidth, this.__);
7707
- const half = __strokeWidth / 2;
7767
+ canvas.setStroke(stroke, strokeWidth, this.__);
7768
+ const half = strokeWidth / 2;
7708
7769
  switch (strokeAlign) {
7709
7770
  case 'center':
7710
7771
  canvas.strokeRect(0, 0, width, height);
7711
7772
  break;
7712
7773
  case 'inside':
7713
- width -= __strokeWidth, height -= __strokeWidth;
7774
+ width -= strokeWidth, height -= strokeWidth;
7714
7775
  if (width < 0 || height < 0) {
7715
7776
  canvas.save();
7716
7777
  this.__clip(canvas, options);
@@ -7721,7 +7782,7 @@ const RectRender = {
7721
7782
  canvas.strokeRect(x + half, y + half, width, height);
7722
7783
  break;
7723
7784
  case 'outside':
7724
- canvas.strokeRect(x - half, y - half, width + __strokeWidth, height + __strokeWidth);
7785
+ canvas.strokeRect(x - half, y - half, width + strokeWidth, height + strokeWidth);
7725
7786
  break;
7726
7787
  }
7727
7788
  }
@@ -7734,6 +7795,8 @@ let UI = UI_1 = class UI extends Leaf {
7734
7795
  get isFrame() { return false; }
7735
7796
  set scale(value) { MathHelper.assignScale(this, value); }
7736
7797
  get scale() { return this.__.scale; }
7798
+ get isAutoWidth() { const t = this.__; return t.__autoWidth || t.autoWidth; }
7799
+ get isAutoHeight() { const t = this.__; return t.__autoHeight || t.autoHeight; }
7737
7800
  get pen() {
7738
7801
  const { path } = this.__;
7739
7802
  pen.set(this.path = path || []);
@@ -7788,12 +7851,14 @@ let UI = UI_1 = class UI extends Leaf {
7788
7851
  }
7789
7852
  }
7790
7853
  __updateRenderPath() {
7791
- if (this.__.path) {
7792
- const data = this.__;
7854
+ const data = this.__;
7855
+ if (data.path) {
7793
7856
  data.__pathForRender = data.cornerRadius ? PathCorner.smooth(data.path, data.cornerRadius, data.cornerSmoothing) : data.path;
7794
7857
  if (data.__useArrow)
7795
7858
  PathArrow.addArrows(this, !data.cornerRadius);
7796
7859
  }
7860
+ else
7861
+ data.__pathForRender && (data.__pathForRender = undefined);
7797
7862
  }
7798
7863
  __drawRenderPath(canvas) {
7799
7864
  canvas.beginPath();
@@ -7946,6 +8011,9 @@ __decorate([
7946
8011
  __decorate([
7947
8012
  naturalBoundsType(1)
7948
8013
  ], UI.prototype, "pixelRatio", void 0);
8014
+ __decorate([
8015
+ affectRenderBoundsType(0)
8016
+ ], UI.prototype, "renderSpread", void 0);
7949
8017
  __decorate([
7950
8018
  pathInputType()
7951
8019
  ], UI.prototype, "path", void 0);
@@ -8004,13 +8072,13 @@ __decorate([
8004
8072
  surfaceType()
8005
8073
  ], UI.prototype, "fill", void 0);
8006
8074
  __decorate([
8007
- strokeType()
8075
+ strokeType(undefined, true)
8008
8076
  ], UI.prototype, "stroke", void 0);
8009
8077
  __decorate([
8010
8078
  strokeType('inside')
8011
8079
  ], UI.prototype, "strokeAlign", void 0);
8012
8080
  __decorate([
8013
- strokeType(1)
8081
+ strokeType(1, true)
8014
8082
  ], UI.prototype, "strokeWidth", void 0);
8015
8083
  __decorate([
8016
8084
  strokeType(false)
@@ -8102,7 +8170,8 @@ let Group = class Group extends UI {
8102
8170
  }
8103
8171
  toJSON(options) {
8104
8172
  const data = super.toJSON(options);
8105
- data.children = this.children.map(child => child.toJSON(options));
8173
+ if (!this.childlessJSON)
8174
+ data.children = this.children.map(child => child.toJSON(options));
8106
8175
  return data;
8107
8176
  }
8108
8177
  pick(_hitPoint, _options) { return undefined; }
@@ -8437,7 +8506,7 @@ let Leafer = Leafer_1 = class Leafer extends Group {
8437
8506
  list.push(item);
8438
8507
  this.requestRender();
8439
8508
  }
8440
- zoom(_zoomType, _padding, _fixedScale, _transition) {
8509
+ zoom(_zoomType, _optionsOrPadding, _scroll, _transition) {
8441
8510
  return Plugin.need('view');
8442
8511
  }
8443
8512
  getValidMove(moveX, moveY) { return { x: moveX, y: moveY }; }
@@ -8482,7 +8551,7 @@ let Leafer = Leafer_1 = class Leafer extends Group {
8482
8551
  Leafer_1.list.remove(this);
8483
8552
  try {
8484
8553
  this.stop();
8485
- this.emitEvent(new LeaferEvent(LeaferEvent.END, this));
8554
+ this.emitLeafer(LeaferEvent.END);
8486
8555
  this.__removeListenEvents();
8487
8556
  this.__controllers.forEach(item => !(this.parent && item === this.interaction) && item.destroy());
8488
8557
  this.__controllers.length = 0;
@@ -8549,8 +8618,8 @@ let Box = class Box extends Group {
8549
8618
  __updateRenderSpread() { return this.__updateRectRenderSpread() || -1; }
8550
8619
  __updateRectBoxBounds() { }
8551
8620
  __updateBoxBounds(_secondLayout) {
8552
- const data = this.__;
8553
8621
  if (this.children.length && !this.pathInputed) {
8622
+ const data = this.__;
8554
8623
  if (data.__autoSide) {
8555
8624
  if (data.__hasSurface)
8556
8625
  this.__extraUpdate();
@@ -8577,20 +8646,26 @@ let Box = class Box extends Group {
8577
8646
  __updateStrokeBounds() { }
8578
8647
  __updateRenderBounds() {
8579
8648
  let isOverflow;
8580
- const { renderBounds } = this.__layout;
8581
8649
  if (this.children.length) {
8650
+ const data = this.__, { renderBounds, boxBounds } = this.__layout;
8582
8651
  super.__updateRenderBounds();
8583
8652
  copy$3(childrenRenderBounds, renderBounds);
8584
8653
  this.__updateRectRenderBounds();
8585
- isOverflow = !includes$1(renderBounds, childrenRenderBounds);
8586
- if (isOverflow && this.__.overflow !== 'hide')
8654
+ if (data.scrollY || data.scrollX) {
8655
+ childrenRenderBounds.x += data.scrollX;
8656
+ childrenRenderBounds.y += data.scrollY;
8657
+ }
8658
+ isOverflow = !includes$1(boxBounds, childrenRenderBounds);
8659
+ if (isOverflow && data.overflow !== 'hide')
8587
8660
  add(renderBounds, childrenRenderBounds);
8588
8661
  }
8589
8662
  else
8590
8663
  this.__updateRectRenderBounds();
8591
8664
  DataHelper.stintSet(this, 'isOverflow', isOverflow);
8665
+ this.__updateScrollBar();
8592
8666
  }
8593
8667
  __updateRectRenderBounds() { }
8668
+ __updateScrollBar() { }
8594
8669
  __updateRectChange() { }
8595
8670
  __updateChange() {
8596
8671
  super.__updateChange();
@@ -8607,10 +8682,12 @@ let Box = class Box extends Group {
8607
8682
  if (this.children.length)
8608
8683
  this.__renderGroup(canvas, options);
8609
8684
  }
8685
+ if (this.scrollBar)
8686
+ this.scrollBar.__render(canvas, options);
8610
8687
  }
8611
8688
  __drawContent(canvas, options) {
8612
8689
  this.__renderGroup(canvas, options);
8613
- if (this.__.__hasStroke) {
8690
+ if (this.__.__useStroke || this.__.__useEffect) {
8614
8691
  canvas.setWorld(this.__nowWorld);
8615
8692
  this.__drawRenderPath(canvas);
8616
8693
  }
@@ -8830,8 +8907,8 @@ let Polygon = class Polygon extends UI {
8830
8907
  for (let i = 1; i < sides; i++) {
8831
8908
  lineTo$1(path, rx + rx * sin$1((i * 2 * PI$1) / sides), ry - ry * cos$1((i * 2 * PI$1) / sides));
8832
8909
  }
8910
+ closePath$1(path);
8833
8911
  }
8834
- closePath$1(path);
8835
8912
  }
8836
8913
  __updateRenderPath() { }
8837
8914
  __updateBoxBounds() { }
@@ -9069,6 +9146,11 @@ let Text = class Text extends UI {
9069
9146
  return;
9070
9147
  super.__draw(canvas, options, originCanvas);
9071
9148
  }
9149
+ __drawShape(canvas, options) {
9150
+ if (options.shape)
9151
+ this.__box && this.__box.__drawShape(canvas, options);
9152
+ super.__drawShape(canvas, options);
9153
+ }
9072
9154
  destroy() {
9073
9155
  if (this.boxStyle)
9074
9156
  this.boxStyle = null;
@@ -9890,6 +9972,7 @@ const config = {
9890
9972
  delta: { x: 80 / 4, y: 8.0 },
9891
9973
  },
9892
9974
  pointer: {
9975
+ type: 'pointer',
9893
9976
  snap: true,
9894
9977
  hitRadius: 5,
9895
9978
  tapTime: 120,
@@ -10407,18 +10490,20 @@ leaf.__hitWorld = function (point) {
10407
10490
  }
10408
10491
  return this.__hit(inner);
10409
10492
  };
10410
- leaf.__hitFill = function (inner) { var _a; return (_a = this.__hitCanvas) === null || _a === void 0 ? void 0 : _a.hitFill(inner, this.__.windingRule); };
10411
- leaf.__hitStroke = function (inner, strokeWidth) { var _a; return (_a = this.__hitCanvas) === null || _a === void 0 ? void 0 : _a.hitStroke(inner, strokeWidth); };
10412
- leaf.__hitPixel = function (inner) { var _a; return (_a = this.__hitCanvas) === null || _a === void 0 ? void 0 : _a.hitPixel(inner, this.__layout.renderBounds, this.__hitCanvas.hitScale); };
10413
- leaf.__drawHitPath = function (canvas) { if (canvas)
10414
- this.__drawRenderPath(canvas); };
10493
+ leaf.__hitFill = function (inner) { const h = this.__hitCanvas; return h && h.hitFill(inner, this.__.windingRule); };
10494
+ leaf.__hitStroke = function (inner, strokeWidth) { const h = this.__hitCanvas; return h && h.hitStroke(inner, strokeWidth); };
10495
+ leaf.__hitPixel = function (inner) { const h = this.__hitCanvas; return h && h.hitPixel(inner, this.__layout.renderBounds, h.hitScale); };
10496
+ leaf.__drawHitPath = function (canvas) { canvas && this.__drawRenderPath(canvas); };
10415
10497
 
10416
10498
  const matrix = new Matrix();
10417
10499
  const ui$1 = UI.prototype;
10418
10500
  ui$1.__updateHitCanvas = function () {
10419
10501
  if (this.__box)
10420
10502
  this.__box.__updateHitCanvas();
10421
- const data = this.__, { hitCanvasManager } = this.leafer || this.parent.leafer;
10503
+ const leafer = this.leafer || (this.parent && this.parent.leafer);
10504
+ if (!leafer)
10505
+ return;
10506
+ const data = this.__, { hitCanvasManager } = leafer;
10422
10507
  const isHitPixelFill = (data.__isAlphaPixelFill || data.__isCanvas) && data.hitFill === 'pixel';
10423
10508
  const isHitPixelStroke = data.__isAlphaPixelStroke && data.hitStroke === 'pixel';
10424
10509
  const isHitPixel = isHitPixelFill || isHitPixelStroke;
@@ -10433,7 +10518,7 @@ ui$1.__updateHitCanvas = function () {
10433
10518
  h.resize({ width, height, pixelRatio: 1 });
10434
10519
  h.clear();
10435
10520
  ImageManager.patternLocked = true;
10436
- this.__renderShape(h, { matrix: matrix.setWith(this.__world).scaleWith(1 / scale).invertWith().translate(-x, -y) }, !isHitPixelFill, !isHitPixelStroke);
10521
+ this.__renderShape(h, { matrix: matrix.setWith(this.__world).scaleWith(1 / scale).invertWith().translate(-x, -y), ignoreFill: !isHitPixelFill, ignoreStroke: !isHitPixelStroke });
10437
10522
  ImageManager.patternLocked = false;
10438
10523
  h.resetTransform();
10439
10524
  data.__isHitPixel = true;
@@ -10454,7 +10539,7 @@ ui$1.__hit = function (inner) {
10454
10539
  const needHitFillPath = ((data.fill || data.__isCanvas) && (hitFill === 'path' || (hitFill === 'pixel' && !(data.__isAlphaPixelFill || data.__isCanvas)))) || hitFill === 'all';
10455
10540
  if (needHitFillPath && this.__hitFill(inner))
10456
10541
  return true;
10457
- const { hitStroke, __strokeWidth } = data;
10542
+ const { hitStroke, __maxStrokeWidth: strokeWidth } = data;
10458
10543
  const needHitStrokePath = (data.stroke && (hitStroke === 'path' || (hitStroke === 'pixel' && !data.__isAlphaPixelStroke))) || hitStroke === 'all';
10459
10544
  if (!needHitFillPath && !needHitStrokePath)
10460
10545
  return false;
@@ -10463,16 +10548,16 @@ ui$1.__hit = function (inner) {
10463
10548
  if (needHitStrokePath) {
10464
10549
  switch (data.strokeAlign) {
10465
10550
  case 'inside':
10466
- hitWidth += __strokeWidth * 2;
10551
+ hitWidth += strokeWidth * 2;
10467
10552
  if (!needHitFillPath && this.__hitFill(inner) && this.__hitStroke(inner, hitWidth))
10468
10553
  return true;
10469
10554
  hitWidth = radiusWidth;
10470
10555
  break;
10471
10556
  case 'center':
10472
- hitWidth += __strokeWidth;
10557
+ hitWidth += strokeWidth;
10473
10558
  break;
10474
10559
  case 'outside':
10475
- hitWidth += __strokeWidth * 2;
10560
+ hitWidth += strokeWidth * 2;
10476
10561
  if (!needHitFillPath) {
10477
10562
  if (!this.__hitFill(inner) && this.__hitStroke(inner, hitWidth))
10478
10563
  return true;
@@ -10677,9 +10762,14 @@ function fills(fills, ui, canvas) {
10677
10762
  }
10678
10763
  }
10679
10764
  canvas.fillStyle = item.style;
10680
- if (item.transform) {
10765
+ if (item.transform || item.scaleFixed) {
10681
10766
  canvas.save();
10682
- canvas.transform(item.transform);
10767
+ if (item.transform)
10768
+ canvas.transform(item.transform);
10769
+ if (item.scaleFixed) {
10770
+ const { scaleX, scaleY } = ui.getRenderScaleData(true);
10771
+ canvas.scale(1 / scaleX, 1 / scaleY);
10772
+ }
10683
10773
  if (item.blendMode)
10684
10774
  canvas.blendMode = item.blendMode;
10685
10775
  fillPathOrText(ui, canvas);
@@ -10715,8 +10805,13 @@ function strokeText(stroke, ui, canvas) {
10715
10805
  }
10716
10806
  function drawCenter$1(stroke, strokeWidthScale, ui, canvas) {
10717
10807
  const data = ui.__;
10718
- canvas.setStroke(!data.__isStrokes && stroke, data.strokeWidth * strokeWidthScale, data);
10719
- data.__isStrokes ? drawStrokesStyle(stroke, true, ui, canvas) : drawTextStroke(ui, canvas);
10808
+ if (typeof stroke === 'object') {
10809
+ drawStrokesStyle(stroke, strokeWidthScale, true, ui, canvas);
10810
+ }
10811
+ else {
10812
+ canvas.setStroke(stroke, data.__strokeWidth * strokeWidthScale, data);
10813
+ drawTextStroke(ui, canvas);
10814
+ }
10720
10815
  }
10721
10816
  function drawAlign(stroke, align, ui, canvas) {
10722
10817
  const out = canvas.getSameCanvas(true, true);
@@ -10725,15 +10820,9 @@ function drawAlign(stroke, align, ui, canvas) {
10725
10820
  out.blendMode = align === 'outside' ? 'destination-out' : 'destination-in';
10726
10821
  fillText(ui, out);
10727
10822
  out.blendMode = 'normal';
10728
- copyWorld(canvas, out, ui);
10823
+ LeafHelper.copyCanvasByWorld(ui, canvas, out);
10729
10824
  out.recycle(ui.__nowWorld);
10730
10825
  }
10731
- function copyWorld(canvas, out, ui) {
10732
- if (ui.__worldFlipped || Platform.fullImageShadow)
10733
- canvas.copyWorldByReset(out, ui.__nowWorld);
10734
- else
10735
- canvas.copyWorldToInner(out, ui.__nowWorld, ui.__layout.renderBounds);
10736
- }
10737
10826
  function drawTextStroke(ui, canvas) {
10738
10827
  let row, data = ui.__.__textDrawData;
10739
10828
  const { rows, decorationY } = data;
@@ -10749,14 +10838,21 @@ function drawTextStroke(ui, canvas) {
10749
10838
  rows.forEach(row => decorationY.forEach(value => canvas.strokeRect(row.x, row.y + value, row.width, decorationHeight)));
10750
10839
  }
10751
10840
  }
10752
- function drawStrokesStyle(strokes, isText, ui, canvas) {
10841
+ function drawStrokesStyle(strokes, strokeWidthScale, isText, ui, canvas) {
10753
10842
  let item;
10843
+ const data = ui.__, { __hasMultiStrokeStyle } = data;
10844
+ __hasMultiStrokeStyle || canvas.setStroke(undefined, data.__strokeWidth * strokeWidthScale, data);
10754
10845
  for (let i = 0, len = strokes.length; i < len; i++) {
10755
10846
  item = strokes[i];
10756
10847
  if (item.image && PaintImage.checkImage(ui, canvas, item, false))
10757
10848
  continue;
10758
10849
  if (item.style) {
10759
- canvas.strokeStyle = item.style;
10850
+ if (__hasMultiStrokeStyle) {
10851
+ const { strokeStyle } = item;
10852
+ strokeStyle ? canvas.setStroke(item.style, data.__getRealStrokeWidth(strokeStyle) * strokeWidthScale, data, strokeStyle) : canvas.setStroke(item.style, data.__strokeWidth * strokeWidthScale, data);
10853
+ }
10854
+ else
10855
+ canvas.strokeStyle = item.style;
10760
10856
  if (item.blendMode) {
10761
10857
  canvas.saveBlendMode(item.blendMode);
10762
10858
  isText ? drawTextStroke(ui, canvas) : canvas.stroke();
@@ -10795,8 +10891,13 @@ function strokes(strokes, ui, canvas) {
10795
10891
  }
10796
10892
  function drawCenter(stroke, strokeWidthScale, ui, canvas) {
10797
10893
  const data = ui.__;
10798
- canvas.setStroke(!data.__isStrokes && stroke, data.__strokeWidth * strokeWidthScale, data);
10799
- data.__isStrokes ? drawStrokesStyle(stroke, false, ui, canvas) : canvas.stroke();
10894
+ if (typeof stroke === 'object') {
10895
+ drawStrokesStyle(stroke, strokeWidthScale, false, ui, canvas);
10896
+ }
10897
+ else {
10898
+ canvas.setStroke(stroke, data.__strokeWidth * strokeWidthScale, data);
10899
+ canvas.stroke();
10900
+ }
10800
10901
  if (data.__useArrow)
10801
10902
  Paint.strokeArrow(stroke, ui, canvas);
10802
10903
  }
@@ -10818,7 +10919,7 @@ function drawOutside(stroke, ui, canvas) {
10818
10919
  drawCenter(stroke, 2, ui, out);
10819
10920
  out.clipUI(data);
10820
10921
  out.clearWorld(renderBounds);
10821
- copyWorld(canvas, out, ui);
10922
+ LeafHelper.copyCanvasByWorld(ui, canvas, out);
10822
10923
  out.recycle(ui.__nowWorld);
10823
10924
  }
10824
10925
  }
@@ -10873,8 +10974,16 @@ function compute(attrName, ui) {
10873
10974
  if (!(paints instanceof Array))
10874
10975
  paints = [paints];
10875
10976
  recycleMap = PaintImage.recycleImage(attrName, data);
10977
+ let maxChildStrokeWidth;
10876
10978
  for (let i = 0, len = paints.length, item; i < len; i++) {
10877
- (item = getLeafPaint(attrName, paints[i], ui)) && leafPaints.push(item);
10979
+ if (item = getLeafPaint(attrName, paints[i], ui)) {
10980
+ leafPaints.push(item);
10981
+ if (item.strokeStyle) {
10982
+ maxChildStrokeWidth || (maxChildStrokeWidth = 1);
10983
+ if (item.strokeStyle.strokeWidth)
10984
+ maxChildStrokeWidth = Math.max(maxChildStrokeWidth, item.strokeStyle.strokeWidth);
10985
+ }
10986
+ }
10878
10987
  }
10879
10988
  data['_' + attrName] = leafPaints.length ? leafPaints : undefined;
10880
10989
  if (leafPaints.length) {
@@ -10891,6 +11000,7 @@ function compute(attrName, ui) {
10891
11000
  else {
10892
11001
  stintSet(data, '__isAlphaPixelStroke', isAlphaPixel);
10893
11002
  stintSet(data, '__isTransparentStroke', isTransparent);
11003
+ stintSet(data, '__hasMultiStrokeStyle', maxChildStrokeWidth);
10894
11004
  }
10895
11005
  }
10896
11006
  function getLeafPaint(attrName, paint, ui) {
@@ -10922,6 +11032,11 @@ function getLeafPaint(attrName, paint, ui) {
10922
11032
  if (data) {
10923
11033
  if (typeof data.style === 'string' && hasTransparent$1(data.style))
10924
11034
  data.isTransparent = true;
11035
+ if (paint.style) {
11036
+ if (paint.style.strokeWidth === 0)
11037
+ return undefined;
11038
+ data.strokeStyle = paint.style;
11039
+ }
10925
11040
  if (paint.blendMode)
10926
11041
  data.blendMode = paint.blendMode;
10927
11042
  }
@@ -10941,8 +11056,8 @@ const PaintModule = {
10941
11056
  shape
10942
11057
  };
10943
11058
 
10944
- let origin = {};
10945
- const { get: get$3, rotateOfOuter: rotateOfOuter$1, translate: translate$1, scaleOfOuter: scaleOfOuter$1, scale: scaleHelper, rotate } = MatrixHelper;
11059
+ let origin = {}, tempMatrix = getMatrixData();
11060
+ const { get: get$3, rotateOfOuter: rotateOfOuter$1, translate: translate$1, scaleOfOuter: scaleOfOuter$1, multiplyParent, scale: scaleHelper, rotate, skew: skewHelper } = MatrixHelper;
10946
11061
  function fillOrFitMode(data, box, x, y, scaleX, scaleY, rotation) {
10947
11062
  const transform = get$3();
10948
11063
  translate$1(transform, box.x + x, box.y + y);
@@ -10951,13 +11066,19 @@ function fillOrFitMode(data, box, x, y, scaleX, scaleY, rotation) {
10951
11066
  rotateOfOuter$1(transform, { x: box.x + box.width / 2, y: box.y + box.height / 2 }, rotation);
10952
11067
  data.transform = transform;
10953
11068
  }
10954
- function clipMode(data, box, x, y, scaleX, scaleY, rotation) {
11069
+ function clipMode(data, box, x, y, scaleX, scaleY, rotation, skew, clipSize) {
10955
11070
  const transform = get$3();
10956
- translate$1(transform, box.x + x, box.y + y);
10957
- if (scaleX)
10958
- scaleHelper(transform, scaleX, scaleY);
10959
11071
  if (rotation)
10960
11072
  rotate(transform, rotation);
11073
+ if (skew)
11074
+ skewHelper(transform, skew.x, skew.y);
11075
+ if (scaleX)
11076
+ scaleHelper(transform, scaleX, scaleY);
11077
+ translate$1(transform, box.x + x, box.y + y);
11078
+ if (clipSize) {
11079
+ tempMatrix.a = box.width / clipSize.width, tempMatrix.d = box.height / clipSize.height;
11080
+ multiplyParent(transform, tempMatrix);
11081
+ }
10961
11082
  data.transform = transform;
10962
11083
  }
10963
11084
  function repeatMode(data, box, width, height, x, y, scaleX, scaleY, rotation, align) {
@@ -10994,11 +11115,15 @@ const tempBox = new Bounds();
10994
11115
  const tempScaleData = {};
10995
11116
  const tempImage = {};
10996
11117
  function createData(leafPaint, image, paint, box) {
10997
- const { changeful, sync } = paint;
11118
+ const { changeful, sync, editing, scaleFixed } = paint;
10998
11119
  if (changeful)
10999
11120
  leafPaint.changeful = changeful;
11000
11121
  if (sync)
11001
11122
  leafPaint.sync = sync;
11123
+ if (editing)
11124
+ leafPaint.editing = editing;
11125
+ if (scaleFixed)
11126
+ leafPaint.scaleFixed = scaleFixed;
11002
11127
  leafPaint.data = getPatternData(paint, box, image);
11003
11128
  }
11004
11129
  function getPatternData(paint, box, image) {
@@ -11007,7 +11132,7 @@ function getPatternData(paint, box, image) {
11007
11132
  if (paint.mode === 'strench')
11008
11133
  paint.mode = 'stretch';
11009
11134
  let { width, height } = image;
11010
- const { opacity, mode, align, offset, scale, size, rotation, repeat, filters } = paint;
11135
+ const { opacity, mode, align, offset, scale, size, rotation, skew, clipSize, repeat, filters } = paint;
11011
11136
  const sameBox = box.width === width && box.height === height;
11012
11137
  const data = { mode };
11013
11138
  const swapSize = align !== 'center' && (rotation || 0) % 180 === 90;
@@ -11041,8 +11166,8 @@ function getPatternData(paint, box, image) {
11041
11166
  break;
11042
11167
  case 'normal':
11043
11168
  case 'clip':
11044
- if (tempImage.x || tempImage.y || scaleX || rotation)
11045
- clipMode(data, box, tempImage.x, tempImage.y, scaleX, scaleY, rotation);
11169
+ if (tempImage.x || tempImage.y || scaleX || clipSize || rotation || skew)
11170
+ clipMode(data, box, tempImage.x, tempImage.y, scaleX, scaleY, rotation, skew, paint.clipSize);
11046
11171
  break;
11047
11172
  case 'repeat':
11048
11173
  if (!sameBox || scaleX || rotation)
@@ -11119,11 +11244,11 @@ function image(ui, attrName, paint, boxBounds, firstUse) {
11119
11244
  }
11120
11245
  onLoadSuccess(ui, event);
11121
11246
  }
11122
- leafPaint.loadId = null;
11247
+ leafPaint.loadId = undefined;
11123
11248
  }, (error) => {
11124
11249
  ignoreRender(ui, false);
11125
11250
  onLoadError(ui, event, error);
11126
- leafPaint.loadId = null;
11251
+ leafPaint.loadId = undefined;
11127
11252
  });
11128
11253
  if (ui.placeholderColor) {
11129
11254
  if (!ui.placeholderDelay)
@@ -11179,16 +11304,16 @@ function ignoreRender(ui, value) {
11179
11304
  }
11180
11305
 
11181
11306
  const { get: get$1, scale, copy: copy$1 } = MatrixHelper;
11182
- const { ceil, abs: abs$1 } = Math;
11307
+ const { ceil, abs } = Math;
11183
11308
  function createPattern(ui, paint, pixelRatio) {
11184
- let { scaleX, scaleY } = ImageManager.patternLocked ? ui.__world : ui.__nowWorld;
11309
+ let { scaleX, scaleY } = ui.getRenderScaleData(true, paint.scaleFixed);
11185
11310
  const id = scaleX + '-' + scaleY + '-' + pixelRatio;
11186
11311
  if (paint.patternId !== id && !ui.destroyed) {
11187
- scaleX = abs$1(scaleX);
11188
- scaleY = abs$1(scaleY);
11189
11312
  const { image, data } = paint;
11190
11313
  let imageScale, imageMatrix, { width, height, scaleX: sx, scaleY: sy, transform, repeat } = data;
11191
11314
  if (sx) {
11315
+ sx = abs(sx);
11316
+ sy = abs(sy);
11192
11317
  imageMatrix = get$1();
11193
11318
  copy$1(imageMatrix, transform);
11194
11319
  scale(imageMatrix, 1 / sx, 1 / sy);
@@ -11241,9 +11366,8 @@ function createPattern(ui, paint, pixelRatio) {
11241
11366
  }
11242
11367
  }
11243
11368
 
11244
- const { abs } = Math;
11245
11369
  function checkImage(ui, canvas, paint, allowDraw) {
11246
- const { scaleX, scaleY } = ImageManager.patternLocked ? ui.__world : ui.__nowWorld;
11370
+ const { scaleX, scaleY } = ui.getRenderScaleData(true, paint.scaleFixed);
11247
11371
  const { pixelRatio } = canvas, { data } = paint;
11248
11372
  if (!data || (paint.patternId === scaleX + '-' + scaleY + '-' + pixelRatio && !Export.running)) {
11249
11373
  return false;
@@ -11256,8 +11380,8 @@ function checkImage(ui, canvas, paint, allowDraw) {
11256
11380
  else {
11257
11381
  if (!(paint.changeful || ResizeEvent.isResizing(ui) || Export.running)) {
11258
11382
  let { width, height } = data;
11259
- width *= abs(scaleX) * pixelRatio;
11260
- height *= abs(scaleY) * pixelRatio;
11383
+ width *= scaleX * pixelRatio;
11384
+ height *= scaleY * pixelRatio;
11261
11385
  if (data.scaleX) {
11262
11386
  width *= data.scaleX;
11263
11387
  height *= data.scaleY;
@@ -11267,6 +11391,10 @@ function checkImage(ui, canvas, paint, allowDraw) {
11267
11391
  }
11268
11392
  }
11269
11393
  if (allowDraw) {
11394
+ if (ui.__.__isFastShadow) {
11395
+ canvas.fillStyle = paint.style || '#000';
11396
+ canvas.fill();
11397
+ }
11270
11398
  drawImage(ui, canvas, paint, data);
11271
11399
  return true;
11272
11400
  }
@@ -11455,10 +11583,7 @@ function shadow(ui, current, shape) {
11455
11583
  }
11456
11584
  worldCanvas ? other.copyWorld(worldCanvas, nowWorld, nowWorld, 'destination-out') : other.copyWorld(shape.canvas, shapeBounds, bounds, 'destination-out');
11457
11585
  }
11458
- if (ui.__worldFlipped)
11459
- current.copyWorldByReset(other, copyBounds, nowWorld, item.blendMode);
11460
- else
11461
- current.copyWorldToInner(other, copyBounds, __layout.renderBounds, item.blendMode);
11586
+ LeafHelper.copyCanvasByWorld(ui, current, other, copyBounds, item.blendMode);
11462
11587
  if (end && index < end)
11463
11588
  other.clearWorld(copyBounds, true);
11464
11589
  });
@@ -11517,10 +11642,7 @@ function innerShadow(ui, current, shape) {
11517
11642
  copyBounds = bounds;
11518
11643
  }
11519
11644
  other.fillWorld(copyBounds, ColorConvert.string(item.color), 'source-in');
11520
- if (ui.__worldFlipped)
11521
- current.copyWorldByReset(other, copyBounds, nowWorld, item.blendMode);
11522
- else
11523
- current.copyWorldToInner(other, copyBounds, __layout.renderBounds, item.blendMode);
11645
+ LeafHelper.copyCanvasByWorld(ui, current, other, copyBounds, item.blendMode);
11524
11646
  if (end && index < end)
11525
11647
  other.clearWorld(copyBounds, true);
11526
11648
  });
@@ -11576,12 +11698,11 @@ Group.prototype.__renderMask = function (canvas, options) {
11576
11698
  contentCanvas = getCanvas(canvas);
11577
11699
  child.__render(maskCanvas, options);
11578
11700
  }
11579
- if (!(mask === 'clipping' || mask === 'clipping-path'))
11580
- continue;
11581
- }
11582
- if (excludeRenderBounds(child, options))
11701
+ if (mask === 'clipping' || mask === 'clipping-path')
11702
+ excludeRenderBounds(child, options) || child.__render(canvas, options);
11583
11703
  continue;
11584
- child.__render(contentCanvas || canvas, options);
11704
+ }
11705
+ excludeRenderBounds(child, options) || child.__render(contentCanvas || canvas, options);
11585
11706
  }
11586
11707
  maskEnd(this, currentMask, canvas, contentCanvas, maskCanvas, maskOpacity);
11587
11708
  };
@@ -12175,4 +12296,4 @@ try {
12175
12296
  }
12176
12297
  catch (_a) { }
12177
12298
 
12178
- export { AlignHelper, Answer, App, AroundHelper, AutoBounds, BezierHelper, Bounds, BoundsEvent, BoundsHelper, Box, BoxData, Branch, BranchHelper, BranchRender, Canvas, CanvasData, CanvasManager, ChildEvent, ColorConvert, Creator, Cursor, DataHelper, Debug, Direction4, Direction9, DragEvent, Dragger, DropEvent, Effect, Ellipse, EllipseData, EllipseHelper, Event, EventCreator, Eventer, Export, FileHelper, Filter, Frame, FrameData, Group, GroupData, HitCanvasManager, Image, ImageData, ImageEvent, ImageManager, IncrementId, Interaction, InteractionBase, InteractionHelper, KeyEvent, Keyboard, LayoutEvent, Layouter, Leaf, LeafBounds, LeafBoundsHelper, LeafData, LeafDataProxy, LeafEventer, LeafHelper, LeafLayout, LeafLevelList, LeafList, LeafMatrix, LeafRender, Leafer, LeaferCanvas, LeaferCanvasBase, LeaferData, LeaferEvent, LeaferImage, Line, LineData, MathHelper, Matrix, MatrixHelper, MoveEvent, MyDragEvent, MyImage, MyPointerEvent, NeedConvertToCanvasCommandMap, OneRadian, PI2, PI_2, Paint, PaintGradient, PaintImage, Path, PathArrow, PathBounds, PathCommandDataHelper, PathCommandMap, PathConvert, PathCorner, PathCreator, PathData, PathDrawer, PathHelper, PathNumberCommandLengthMap, PathNumberCommandMap, Pen, PenData, Picker, Platform, Plugin, Point, PointHelper, PointerButton, PointerEvent, Polygon, PolygonData, PropertyEvent, Rect, RectData, RectHelper, RectRender, RenderEvent, Renderer, ResizeEvent, Resource, RotateEvent, Run, Selector, Star, StarData, State, StringNumberMap, SwipeEvent, TaskItem, TaskProcessor, Text, TextConvert, TextData, Transition, TwoPointBoundsHelper, UI, UIBounds, UICreator, UIData, UIEvent, UIRender, UnitConvert, WaitHelper, WatchEvent, Watcher, ZoomEvent, affectRenderBoundsType, affectStrokeBoundsType, attr, autoLayoutType, boundsType, canvasPatch, canvasSizeAttrs, cursorType, dataProcessor, dataType, decorateLeafAttr, defineDataProcessor, defineKey, defineLeafAttr, doBoundsType, doStrokeType, effectType, emptyData, eraserType, getBoundsData, getDescriptor, getMatrixData, getPointData, hitType, isEmptyData, isNull, layoutProcessor, maskType, naturalBoundsType, opacityType, pathInputType, pathType, pen, positionType, registerUI, registerUIEvent, resizeType, rewrite, rewriteAble, rotationType, scaleType, sortType, strokeType, surfaceType, tempBounds$1 as tempBounds, tempMatrix, tempPoint$2 as tempPoint, useCanvas, useModule, version, visibleType, zoomLayerType };
12299
+ export { AlignHelper, Answer, App, AroundHelper, AutoBounds, BezierHelper, Bounds, BoundsEvent, BoundsHelper, Box, BoxData, Branch, BranchHelper, BranchRender, Canvas, CanvasData, CanvasManager, ChildEvent, ColorConvert, Creator, Cursor, DataHelper, Debug, Direction4, Direction9, DragEvent, Dragger, DropEvent, Effect, Ellipse, EllipseData, EllipseHelper, Event, EventCreator, Eventer, Export, FileHelper, Filter, Frame, FrameData, Group, GroupData, HitCanvasManager, Image, ImageData, ImageEvent, ImageManager, IncrementId, Interaction, InteractionBase, InteractionHelper, KeyEvent, Keyboard, LayoutEvent, Layouter, Leaf, LeafBounds, LeafBoundsHelper, LeafData, LeafDataProxy, LeafEventer, LeafHelper, LeafLayout, LeafLevelList, LeafList, LeafMatrix, LeafRender, Leafer, LeaferCanvas, LeaferCanvasBase, LeaferData, LeaferEvent, LeaferImage, Line, LineData, MathHelper, Matrix, MatrixHelper, MoveEvent, MyDragEvent, MyImage, MyPointerEvent, NeedConvertToCanvasCommandMap, OneRadian, PI2, PI_2, Paint, PaintGradient, PaintImage, Path, PathArrow, PathBounds, PathCommandDataHelper, PathCommandMap, PathConvert, PathCorner, PathCreator, PathData, PathDrawer, PathHelper, PathNumberCommandLengthMap, PathNumberCommandMap, Pen, PenData, Picker, Platform, Plugin, Point, PointHelper, PointerButton, PointerEvent, Polygon, PolygonData, PropertyEvent, Rect, RectData, RectHelper, RectRender, RenderEvent, Renderer, ResizeEvent, Resource, RotateEvent, Run, Selector, Star, StarData, State, StringNumberMap, SwipeEvent, TaskItem, TaskProcessor, Text, TextConvert, TextData, Transition, TwoPointBoundsHelper, UI, UIBounds, UICreator, UIData, UIEvent, UIRender, UnitConvert, WaitHelper, WatchEvent, Watcher, ZoomEvent, affectRenderBoundsType, affectStrokeBoundsType, attr, autoLayoutType, boundsType, canvasPatch, canvasSizeAttrs, createAttr, createDescriptor, cursorType, dataProcessor, dataType, decorateLeafAttr, defineDataProcessor, defineKey, defineLeafAttr, doBoundsType, doStrokeType, effectType, emptyData, eraserType, getBoundsData, getDescriptor, getMatrixData, getPointData, hitType, isEmptyData, isNull, layoutProcessor, maskType, naturalBoundsType, opacityType, pathInputType, pathType, pen, positionType, registerUI, registerUIEvent, resizeType, rewrite, rewriteAble, rotationType, scaleType, sortType, strokeType, surfaceType, tempBounds$1 as tempBounds, tempMatrix$1 as tempMatrix, tempPoint$2 as tempPoint, useCanvas, useModule, version, visibleType, zoomLayerType };