@leafer-ui/miniapp 1.9.4 → 1.9.5

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.
@@ -136,6 +136,9 @@ class LeafData {
136
136
  const {path: path} = this;
137
137
  return path && path.length === 6 && path[0] === 1;
138
138
  }
139
+ get __usePathBox() {
140
+ return this.__pathInputed;
141
+ }
139
142
  get __blendMode() {
140
143
  if (this.eraser && this.eraser !== "path") return "destination-out";
141
144
  const {blendMode: blendMode} = this;
@@ -1134,13 +1137,13 @@ const AlignHelper = {
1134
1137
  }
1135
1138
  };
1136
1139
 
1137
- const {tempPointBounds: tempPointBounds$1, setPoint: setPoint$2, addPoint: addPoint$2, toBounds: toBounds$3} = TwoPointBoundsHelper;
1140
+ const {tempPointBounds: tempPointBounds$1, setPoint: setPoint$2, addPoint: addPoint$2, toBounds: toBounds$2} = TwoPointBoundsHelper;
1138
1141
 
1139
1142
  const {toOuterPoint: toOuterPoint$2} = MatrixHelper;
1140
1143
 
1141
1144
  const {float: float, fourNumber: fourNumber} = MathHelper;
1142
1145
 
1143
- const {floor: floor$2, ceil: ceil$1} = Math;
1146
+ const {floor: floor$2, ceil: ceil$2} = Math;
1144
1147
 
1145
1148
  let right$1, bottom$1, boundsRight, boundsBottom;
1146
1149
 
@@ -1269,7 +1272,7 @@ const BoundsHelper = {
1269
1272
  point.x = t.x;
1270
1273
  toOuterPoint$2(matrix, point, toPoint$4);
1271
1274
  addPoint$2(tempPointBounds$1, toPoint$4.x, toPoint$4.y);
1272
- toBounds$3(tempPointBounds$1, to);
1275
+ toBounds$2(tempPointBounds$1, to);
1273
1276
  }
1274
1277
  },
1275
1278
  toInnerOf(t, matrix, to) {
@@ -1307,8 +1310,8 @@ const BoundsHelper = {
1307
1310
  const {x: x, y: y} = t;
1308
1311
  t.x = floor$2(t.x);
1309
1312
  t.y = floor$2(t.y);
1310
- t.width = x > t.x ? ceil$1(t.width + x - t.x) : ceil$1(t.width);
1311
- t.height = y > t.y ? ceil$1(t.height + y - t.y) : ceil$1(t.height);
1313
+ t.width = x > t.x ? ceil$2(t.width + x - t.x) : ceil$2(t.width);
1314
+ t.height = y > t.y ? ceil$2(t.height + y - t.y) : ceil$2(t.height);
1312
1315
  },
1313
1316
  unsign(t) {
1314
1317
  if (t.width < 0) {
@@ -1368,7 +1371,7 @@ const BoundsHelper = {
1368
1371
  },
1369
1372
  setPoints(t, points) {
1370
1373
  points.forEach((point, index) => index === 0 ? setPoint$2(tempPointBounds$1, point.x, point.y) : addPoint$2(tempPointBounds$1, point.x, point.y));
1371
- toBounds$3(tempPointBounds$1, t);
1374
+ toBounds$2(tempPointBounds$1, t);
1372
1375
  },
1373
1376
  setPoint(t, point) {
1374
1377
  B.set(t, point.x, point.y);
@@ -2221,15 +2224,15 @@ class LeaferCanvasBase extends Canvas$1 {
2221
2224
  DataHelper.copyAttrs(s, size, canvasSizeAttrs);
2222
2225
  canvasSizeAttrs.forEach(key => s[key] || (s[key] = 1));
2223
2226
  this.bounds = new Bounds(0, 0, this.width, this.height);
2224
- if (this.context && !this.unreal) {
2225
- this.updateViewSize();
2226
- this.smooth = this.config.smooth;
2227
- }
2227
+ this.updateViewSize();
2228
2228
  this.updateClientBounds();
2229
- if (this.context && !this.unreal && takeCanvas) {
2230
- this.clearWorld(takeCanvas.bounds);
2231
- this.copyWorld(takeCanvas);
2232
- takeCanvas.recycle();
2229
+ if (this.context) {
2230
+ this.smooth = this.config.smooth;
2231
+ if (!this.unreal && takeCanvas) {
2232
+ this.clearWorld(takeCanvas.bounds);
2233
+ this.copyWorld(takeCanvas);
2234
+ takeCanvas.recycle();
2235
+ }
2233
2236
  }
2234
2237
  }
2235
2238
  updateViewSize() {}
@@ -2543,7 +2546,7 @@ const RectHelper = {
2543
2546
  }
2544
2547
  };
2545
2548
 
2546
- const {sin: sin$3, cos: cos$3, atan2: atan2$1, ceil: ceil, abs: abs$2, PI: PI$2, sqrt: sqrt$1, pow: pow} = Math;
2549
+ const {sin: sin$3, cos: cos$3, hypot: hypot, atan2: atan2$1, ceil: ceil$1, abs: abs$2, PI: PI$2, sqrt: sqrt$1, pow: pow} = Math;
2547
2550
 
2548
2551
  const {setPoint: setPoint$1, addPoint: addPoint$1} = TwoPointBoundsHelper;
2549
2552
 
@@ -2614,9 +2617,11 @@ const BezierHelper = {
2614
2617
  const CBy = toY - y1;
2615
2618
  let startRadian = atan2$1(BAy, BAx);
2616
2619
  let endRadian = atan2$1(CBy, CBx);
2620
+ const lenBA = hypot(BAx, BAy);
2621
+ const lenCB = hypot(CBx, CBy);
2617
2622
  let totalRadian = endRadian - startRadian;
2618
2623
  if (totalRadian < 0) totalRadian += PI2;
2619
- if (totalRadian === PI$2 || abs$2(BAx + BAy) < 1e-12 || abs$2(CBx + CBy) < 1e-12) {
2624
+ if (lenBA < 1e-12 || lenCB < 1e-12 || totalRadian < 1e-12 || abs$2(totalRadian - PI$2) < 1e-12) {
2620
2625
  if (data) data.push(L$6, x1, y1);
2621
2626
  if (setPointBounds) {
2622
2627
  setPoint$1(setPointBounds, fromX, fromY);
@@ -2649,7 +2654,7 @@ const BezierHelper = {
2649
2654
  let totalRadian = endRadian - startRadian;
2650
2655
  if (totalRadian < 0) totalRadian += PI2; else if (totalRadian > PI2) totalRadian -= PI2;
2651
2656
  if (anticlockwise) totalRadian -= PI2;
2652
- const parts = ceil(abs$2(totalRadian / PI_2));
2657
+ const parts = ceil$1(abs$2(totalRadian / PI_2));
2653
2658
  const partRadian = totalRadian / parts;
2654
2659
  const partRadian4Sin = sin$3(partRadian / 4);
2655
2660
  const control = 8 / 3 * partRadian4Sin * partRadian4Sin / sin$3(partRadian / 2);
@@ -3208,11 +3213,7 @@ class PathCreator {
3208
3213
  this.set(path);
3209
3214
  }
3210
3215
  set(path) {
3211
- if (path) {
3212
- this.__path = isString(path) ? PathHelper.parse(path) : path;
3213
- } else {
3214
- this.__path = [];
3215
- }
3216
+ this.__path = path ? isString(path) ? PathHelper.parse(path) : path : [];
3216
3217
  return this;
3217
3218
  }
3218
3219
  beginPath() {
@@ -3380,7 +3381,7 @@ const {M: M$1, L: L$2, C: C, Q: Q, Z: Z$1, N: N, D: D$1, X: X, G: G, F: F$1, O:
3380
3381
 
3381
3382
  const {toTwoPointBounds: toTwoPointBounds, toTwoPointBoundsByQuadraticCurve: toTwoPointBoundsByQuadraticCurve, arcTo: arcTo$1, arc: arc, ellipse: ellipse$1} = BezierHelper;
3382
3383
 
3383
- const {addPointBounds: addPointBounds, copy: copy$7, addPoint: addPoint, setPoint: setPoint, addBounds: addBounds, toBounds: toBounds$2} = TwoPointBoundsHelper;
3384
+ const {addPointBounds: addPointBounds, copy: copy$7, addPoint: addPoint, setPoint: setPoint, addBounds: addBounds, toBounds: toBounds$1} = TwoPointBoundsHelper;
3384
3385
 
3385
3386
  const debug$a = Debug.get("PathBounds");
3386
3387
 
@@ -3395,7 +3396,7 @@ const setEndPoint = {};
3395
3396
  const PathBounds = {
3396
3397
  toBounds(data, setBounds) {
3397
3398
  PathBounds.toTwoPointBounds(data, setPointBounds);
3398
- toBounds$2(setPointBounds, setBounds);
3399
+ toBounds$1(setPointBounds, setBounds);
3399
3400
  },
3400
3401
  toTwoPointBounds(data, setPointBounds) {
3401
3402
  if (!data || !data.length) return setPoint(setPointBounds, 0, 0);
@@ -3582,14 +3583,18 @@ const PathCorner = {
3582
3583
  }
3583
3584
  };
3584
3585
 
3585
- PathHelper.creator = new PathCreator;
3586
+ function path(path) {
3587
+ return new PathCreator(path);
3588
+ }
3589
+
3590
+ const pen = path();
3591
+
3592
+ PathHelper.creator = path();
3586
3593
 
3587
3594
  PathHelper.parse = PathConvert.parse;
3588
3595
 
3589
3596
  PathHelper.convertToCanvasData = PathConvert.toCanvasData;
3590
3597
 
3591
- const pen = new PathCreator;
3592
-
3593
3598
  const {drawRoundRect: drawRoundRect} = RectHelper;
3594
3599
 
3595
3600
  function roundRect(drawer) {
@@ -3954,7 +3959,7 @@ const ImageManager = {
3954
3959
  return FileHelper.alphaPixelTypes.some(item => I$1.isFormat(item, config));
3955
3960
  },
3956
3961
  isFormat(format, config) {
3957
- if (config.format === format) return true;
3962
+ if (config.format) return config.format === format;
3958
3963
  const {url: url} = config;
3959
3964
  if (url.startsWith("data:")) {
3960
3965
  if (url.startsWith("data:" + FileHelper.mineType(format))) return true;
@@ -4048,7 +4053,7 @@ class LeaferImage {
4048
4053
  getFull(_filters) {
4049
4054
  return this.view;
4050
4055
  }
4051
- getCanvas(width, height, opacity, _filters, xGap, yGap) {
4056
+ getCanvas(width, height, opacity, _filters, xGap, yGap, smooth) {
4052
4057
  width || (width = this.width);
4053
4058
  height || (height = this.height);
4054
4059
  if (this.cache) {
@@ -4064,6 +4069,7 @@ class LeaferImage {
4064
4069
  const canvas = Platform.origin.createCanvas(max$1(floor$1(width + (xGap || 0)), 1), max$1(floor$1(height + (yGap || 0)), 1));
4065
4070
  const ctx = canvas.getContext("2d");
4066
4071
  if (opacity) ctx.globalAlpha = opacity;
4072
+ ctx.imageSmoothingEnabled = smooth === false ? false : true;
4067
4073
  ctx.drawImage(this.view, 0, 0, width, height);
4068
4074
  this.cache = this.use > 1 ? {
4069
4075
  data: canvas,
@@ -4715,8 +4721,9 @@ const L = LeafHelper;
4715
4721
 
4716
4722
  const {updateAllMatrix: updateAllMatrix$3, updateMatrix: updateMatrix$2, updateAllWorldOpacity: updateAllWorldOpacity, updateAllChange: updateAllChange$1, updateChange: updateChange$1} = L;
4717
4723
 
4718
- function getTempLocal(t, world) {
4719
- return t.parent ? PointHelper.tempToInnerOf(world, t.parent.scrollWorldTransform) : world;
4724
+ function getTempLocal(t, worldPoint) {
4725
+ t.updateLayout();
4726
+ return t.parent ? PointHelper.tempToInnerOf(worldPoint, t.parent.scrollWorldTransform) : worldPoint;
4720
4727
  }
4721
4728
 
4722
4729
  const LeafBoundsHelper = {
@@ -5734,7 +5741,7 @@ const {updateBounds: updateBounds$1} = BranchHelper;
5734
5741
 
5735
5742
  const {toOuterOf: toOuterOf$1, copyAndSpread: copyAndSpread$1, copy: copy$4} = BoundsHelper;
5736
5743
 
5737
- const {toBounds: toBounds$1} = PathBounds;
5744
+ const {toBounds: toBounds} = PathBounds;
5738
5745
 
5739
5746
  const LeafBounds = {
5740
5747
  __updateWorldBounds() {
@@ -5806,8 +5813,8 @@ const LeafBounds = {
5806
5813
  __updateBoxBounds(_secondLayout, _bounds) {
5807
5814
  const b = this.__layout.boxBounds;
5808
5815
  const data = this.__;
5809
- if (data.__pathInputed) {
5810
- toBounds$1(data.path, b);
5816
+ if (data.__usePathBox) {
5817
+ toBounds(data.path, b);
5811
5818
  } else {
5812
5819
  b.x = 0;
5813
5820
  b.y = 0;
@@ -6742,7 +6749,7 @@ class LeafLevelList {
6742
6749
  }
6743
6750
  }
6744
6751
 
6745
- const version = "1.9.4";
6752
+ const version = "1.9.5";
6746
6753
 
6747
6754
  class LeaferCanvas extends LeaferCanvasBase {
6748
6755
  get allowBackgroundColor() {
@@ -6796,6 +6803,7 @@ class LeaferCanvas extends LeaferCanvasBase {
6796
6803
  this.view = Platform.origin.createCanvas(1, 1);
6797
6804
  }
6798
6805
  updateViewSize() {
6806
+ if (this.unreal) return;
6799
6807
  const {width: width, height: height, pixelRatio: pixelRatio} = this;
6800
6808
  this.view.width = Math.ceil(width * pixelRatio);
6801
6809
  this.view.height = Math.ceil(height * pixelRatio);
@@ -6807,6 +6815,7 @@ class LeaferCanvas extends LeaferCanvasBase {
6807
6815
  });
6808
6816
  }
6809
6817
  startAutoLayout(autoBounds, listener) {
6818
+ if (this.resizeListener) return;
6810
6819
  this.resizeListener = listener;
6811
6820
  if (autoBounds) {
6812
6821
  this.checkSize = this.checkSize.bind(this);
@@ -7316,7 +7325,7 @@ class Renderer {
7316
7325
  this.times = 0;
7317
7326
  this.config = {
7318
7327
  usePartRender: true,
7319
- maxFPS: 60
7328
+ maxFPS: 120
7320
7329
  };
7321
7330
  this.target = target;
7322
7331
  this.canvas = canvas;
@@ -7471,11 +7480,15 @@ class Renderer {
7471
7480
  if (this.requestTime || !target) return;
7472
7481
  if (target.parentApp) return target.parentApp.requestRender(false);
7473
7482
  const requestTime = this.requestTime = Date.now();
7474
- Platform.requestRender(() => {
7475
- this.FPS = Math.min(60, Math.ceil(1e3 / (Date.now() - requestTime)));
7483
+ const render = () => {
7484
+ const nowFPS = 1e3 / (Date.now() - requestTime);
7485
+ const {maxFPS: maxFPS} = this.config;
7486
+ if (maxFPS && nowFPS > maxFPS - .5) return Platform.requestRender(render);
7487
+ this.FPS = Math.min(120, Math.ceil(nowFPS));
7476
7488
  this.requestTime = 0;
7477
7489
  this.checkRender();
7478
- });
7490
+ };
7491
+ Platform.requestRender(render);
7479
7492
  }
7480
7493
  __onResize(e) {
7481
7494
  if (this.canvas.unreal) return;
@@ -7518,7 +7531,8 @@ class Renderer {
7518
7531
  if (this.target) {
7519
7532
  this.stop();
7520
7533
  this.__removeListenEvents();
7521
- this.target = this.canvas = this.config = null;
7534
+ this.config = {};
7535
+ this.target = this.canvas = null;
7522
7536
  }
7523
7537
  }
7524
7538
  }
@@ -8009,7 +8023,11 @@ class LeaferData extends GroupData {
8009
8023
 
8010
8024
  class FrameData extends BoxData {}
8011
8025
 
8012
- class LineData extends UIData {}
8026
+ class LineData extends UIData {
8027
+ get __usePathBox() {
8028
+ return this.points || this.__pathInputed;
8029
+ }
8030
+ }
8013
8031
 
8014
8032
  class RectData extends UIData {
8015
8033
  get __boxStroke() {
@@ -8023,7 +8041,7 @@ class EllipseData extends UIData {
8023
8041
  }
8024
8042
  }
8025
8043
 
8026
- class PolygonData extends UIData {}
8044
+ class PolygonData extends LineData {}
8027
8045
 
8028
8046
  class StarData extends UIData {}
8029
8047
 
@@ -8333,20 +8351,9 @@ let UI = UI_1 = class UI extends Leaf {
8333
8351
  if (!path) this.__drawPathByBox(pen);
8334
8352
  return pen;
8335
8353
  }
8336
- constructor(data) {
8337
- super(data);
8338
- }
8339
8354
  reset(_data) {}
8340
- set(data, transition) {
8341
- if (data) {
8342
- if (transition) {
8343
- if (transition === "temp") {
8344
- this.lockNormalStyle = true;
8345
- Object.assign(this, data);
8346
- this.lockNormalStyle = false;
8347
- } else this.animate(data, transition);
8348
- } else Object.assign(this, data);
8349
- }
8355
+ set(data, _transition) {
8356
+ if (data) Object.assign(this, data);
8350
8357
  }
8351
8358
  get(name) {
8352
8359
  return isString(name) ? this.__.__getInput(name) : this.__.__getInputData(name);
@@ -8392,7 +8399,7 @@ let UI = UI_1 = class UI extends Leaf {
8392
8399
  const data = this.__;
8393
8400
  if (data.path) {
8394
8401
  data.__pathForRender = data.cornerRadius ? PathCorner.smooth(data.path, data.cornerRadius, data.cornerSmoothing) : data.path;
8395
- if (data.__useArrow) PathArrow.addArrows(this, !data.cornerRadius);
8402
+ if (data.__useArrow) PathArrow.addArrows(this);
8396
8403
  } else data.__pathForRender && (data.__pathForRender = undefined);
8397
8404
  }
8398
8405
  __drawRenderPath(canvas) {
@@ -8416,7 +8423,8 @@ let UI = UI_1 = class UI extends Leaf {
8416
8423
  drawImagePlaceholder(canvas, _image) {
8417
8424
  Paint.fill(this.__.placeholderColor, this, canvas);
8418
8425
  }
8419
- animate(_keyframe, _options, _type, _isTemp) {
8426
+ animate(keyframe, _options, _type, _isTemp) {
8427
+ this.set(keyframe);
8420
8428
  return Plugin.need("animate");
8421
8429
  }
8422
8430
  killAnimate(_type, _nextStyle) {}
@@ -8605,9 +8613,6 @@ let Group = class Group extends UI {
8605
8613
  get isBranch() {
8606
8614
  return true;
8607
8615
  }
8608
- constructor(data) {
8609
- super(data);
8610
- }
8611
8616
  reset(data) {
8612
8617
  this.__setBranch();
8613
8618
  super.reset(data);
@@ -8732,7 +8737,7 @@ let Leafer = Leafer_1 = class Leafer extends Group {
8732
8737
  const canvas = this.canvas = Creator.canvas(config);
8733
8738
  this.__controllers.push(this.renderer = Creator.renderer(this, canvas, config), this.watcher = Creator.watcher(this, config), this.layouter = Creator.layouter(this, config));
8734
8739
  if (this.isApp) this.__setApp();
8735
- this.__checkAutoLayout(config, parentApp);
8740
+ this.__checkAutoLayout();
8736
8741
  this.view = canvas.view;
8737
8742
  if (!parentApp) {
8738
8743
  this.selector = Creator.selector(this);
@@ -8831,7 +8836,8 @@ let Leafer = Leafer_1 = class Leafer extends Group {
8831
8836
  this.leafer = leafer;
8832
8837
  this.__level = 1;
8833
8838
  }
8834
- __checkAutoLayout(config, parentApp) {
8839
+ __checkAutoLayout() {
8840
+ const {config: config, parentApp: parentApp} = this;
8835
8841
  if (!parentApp) {
8836
8842
  if (!config.width || !config.height) this.autoLayout = new AutoBounds(config);
8837
8843
  this.canvas.startAutoLayout(this.autoLayout, this.__onResize.bind(this));
@@ -8857,9 +8863,10 @@ let Leafer = Leafer_1 = class Leafer extends Group {
8857
8863
  return super.__getAttr(attrName);
8858
8864
  }
8859
8865
  __changeCanvasSize(attrName, newValue) {
8860
- const data = DataHelper.copyAttrs({}, this.canvas, canvasSizeAttrs);
8861
- data[attrName] = this.config[attrName] = newValue;
8862
- if (newValue) this.canvas.stopAutoLayout();
8866
+ const {config: config, canvas: canvas} = this;
8867
+ const data = DataHelper.copyAttrs({}, canvas, canvasSizeAttrs);
8868
+ data[attrName] = config[attrName] = newValue;
8869
+ config.width && config.height ? canvas.stopAutoLayout() : this.__checkAutoLayout();
8863
8870
  this.__doResize(data);
8864
8871
  }
8865
8872
  __changeFill(newValue) {
@@ -9006,9 +9013,9 @@ let Leafer = Leafer_1 = class Leafer extends Group {
9006
9013
  if (!this.parent) {
9007
9014
  if (this.selector) this.selector.destroy();
9008
9015
  if (this.hitCanvasManager) this.hitCanvasManager.destroy();
9009
- this.canvasManager.destroy();
9016
+ if (this.canvasManager) this.canvasManager.destroy();
9010
9017
  }
9011
- this.canvas.destroy();
9018
+ if (this.canvas) this.canvas.destroy();
9012
9019
  this.config.view = this.view = this.parentApp = null;
9013
9020
  if (this.userConfig) this.userConfig.view = null;
9014
9021
  super.destroy();
@@ -9036,9 +9043,6 @@ let Rect = class Rect extends UI {
9036
9043
  get __tag() {
9037
9044
  return "Rect";
9038
9045
  }
9039
- constructor(data) {
9040
- super(data);
9041
- }
9042
9046
  };
9043
9047
 
9044
9048
  __decorate([ dataProcessor(RectData) ], Rect.prototype, "__", void 0);
@@ -9170,9 +9174,6 @@ let Frame = class Frame extends Box {
9170
9174
  get isFrame() {
9171
9175
  return true;
9172
9176
  }
9173
- constructor(data) {
9174
- super(data);
9175
- }
9176
9177
  };
9177
9178
 
9178
9179
  __decorate([ dataProcessor(FrameData) ], Frame.prototype, "__", void 0);
@@ -9189,9 +9190,6 @@ let Ellipse = class Ellipse extends UI {
9189
9190
  get __tag() {
9190
9191
  return "Ellipse";
9191
9192
  }
9192
- constructor(data) {
9193
- super(data);
9194
- }
9195
9193
  __updatePath() {
9196
9194
  const {width: width, height: height, innerRadius: innerRadius, startAngle: startAngle, endAngle: endAngle} = this.__;
9197
9195
  const rx = width / 2, ry = height / 2;
@@ -9235,8 +9233,6 @@ const {moveTo: moveTo$2, lineTo: lineTo$2, drawPoints: drawPoints$1} = PathComma
9235
9233
 
9236
9234
  const {rotate: rotate$1, getAngle: getAngle$1, getDistance: getDistance$2, defaultPoint: defaultPoint} = PointHelper;
9237
9235
 
9238
- const {toBounds: toBounds} = PathBounds;
9239
-
9240
9236
  let Line = class Line extends UI {
9241
9237
  get __tag() {
9242
9238
  return "Line";
@@ -9253,31 +9249,16 @@ let Line = class Line extends UI {
9253
9249
  this.rotation = getAngle$1(defaultPoint, value);
9254
9250
  if (this.height) this.height = 0;
9255
9251
  }
9256
- constructor(data) {
9257
- super(data);
9258
- }
9259
9252
  __updatePath() {
9260
9253
  const data = this.__;
9261
9254
  const path = data.path = [];
9262
9255
  if (data.points) {
9263
- drawPoints$1(path, data.points, false, data.closed);
9256
+ drawPoints$1(path, data.points, data.curve, data.closed);
9264
9257
  } else {
9265
9258
  moveTo$2(path, 0, 0);
9266
9259
  lineTo$2(path, this.width, 0);
9267
9260
  }
9268
9261
  }
9269
- __updateRenderPath() {
9270
- const data = this.__;
9271
- if (!this.pathInputed && data.points && data.curve) {
9272
- drawPoints$1(data.__pathForRender = [], data.points, data.curve, data.closed);
9273
- if (data.__useArrow) PathArrow.addArrows(this, false);
9274
- } else super.__updateRenderPath();
9275
- }
9276
- __updateBoxBounds() {
9277
- if (this.points) {
9278
- toBounds(this.__.__pathForRender, this.__layout.boxBounds);
9279
- } else super.__updateBoxBounds();
9280
- }
9281
9262
  };
9282
9263
 
9283
9264
  __decorate([ dataProcessor(LineData) ], Line.prototype, "__", void 0);
@@ -9304,15 +9285,13 @@ let Polygon = class Polygon extends UI {
9304
9285
  get __tag() {
9305
9286
  return "Polygon";
9306
9287
  }
9307
- constructor(data) {
9308
- super(data);
9309
- }
9310
9288
  __updatePath() {
9311
- const path = this.__.path = [];
9312
- if (this.__.points) {
9313
- drawPoints(path, this.__.points, false, true);
9289
+ const data = this.__;
9290
+ const path = data.path = [];
9291
+ if (data.points) {
9292
+ drawPoints(path, data.points, data.curve, true);
9314
9293
  } else {
9315
- const {width: width, height: height, sides: sides} = this.__;
9294
+ const {width: width, height: height, sides: sides} = data;
9316
9295
  const rx = width / 2, ry = height / 2;
9317
9296
  moveTo$1(path, rx, 0);
9318
9297
  for (let i = 1; i < sides; i++) {
@@ -9347,9 +9326,6 @@ let Star = class Star extends UI {
9347
9326
  get __tag() {
9348
9327
  return "Star";
9349
9328
  }
9350
- constructor(data) {
9351
- super(data);
9352
- }
9353
9329
  __updatePath() {
9354
9330
  const {width: width, height: height, corners: corners, innerRadius: innerRadius} = this.__;
9355
9331
  const rx = width / 2, ry = height / 2;
@@ -9382,9 +9358,6 @@ let Image = class Image extends Rect {
9382
9358
  const {fill: fill} = this.__;
9383
9359
  return isArray(fill) && fill[0].image;
9384
9360
  }
9385
- constructor(data) {
9386
- super(data);
9387
- }
9388
9361
  };
9389
9362
 
9390
9363
  __decorate([ dataProcessor(ImageData) ], Image.prototype, "__", void 0);
@@ -9484,9 +9457,6 @@ let Text = class Text extends UI {
9484
9457
  this.updateLayout();
9485
9458
  return this.__.__textDrawData;
9486
9459
  }
9487
- constructor(data) {
9488
- super(data);
9489
- }
9490
9460
  __updateTextDrawData() {
9491
9461
  const data = this.__;
9492
9462
  const {lineHeight: lineHeight, letterSpacing: letterSpacing, fontFamily: fontFamily, fontSize: fontSize, fontWeight: fontWeight, italic: italic, textCase: textCase, textOverflow: textOverflow, padding: padding} = data;
@@ -9619,9 +9589,6 @@ let Path = class Path extends UI {
9619
9589
  get __tag() {
9620
9590
  return "Path";
9621
9591
  }
9622
- constructor(data) {
9623
- super(data);
9624
- }
9625
9592
  };
9626
9593
 
9627
9594
  __decorate([ dataProcessor(PathData) ], Path.prototype, "__", void 0);
@@ -9634,9 +9601,6 @@ let Pen = class Pen extends Group {
9634
9601
  get __tag() {
9635
9602
  return "Pen";
9636
9603
  }
9637
- constructor(data) {
9638
- super(data);
9639
- }
9640
9604
  setStyle(data) {
9641
9605
  const path = this.pathElement = new Path(data);
9642
9606
  this.pathStyle = data;
@@ -11833,7 +11797,7 @@ function ignoreRender(ui, value) {
11833
11797
 
11834
11798
  const {get: get$1, scale: scale, copy: copy$1} = MatrixHelper;
11835
11799
 
11836
- const {floor: floor, max: max, abs: abs} = Math;
11800
+ const {floor: floor, ceil: ceil, max: max, abs: abs} = Math;
11837
11801
 
11838
11802
  function createPattern(ui, paint, pixelRatio) {
11839
11803
  let {scaleX: scaleX, scaleY: scaleY} = ui.getRenderScaleData(true, paint.scaleFixed);
@@ -11843,8 +11807,6 @@ function createPattern(ui, paint, pixelRatio) {
11843
11807
  let imageScale, imageMatrix, {width: width, height: height, scaleX: sx, scaleY: sy, transform: transform, repeat: repeat, gap: gap} = data;
11844
11808
  scaleX *= pixelRatio;
11845
11809
  scaleY *= pixelRatio;
11846
- const xGap = gap && gap.x * scaleX;
11847
- const yGap = gap && gap.y * scaleY;
11848
11810
  if (sx) {
11849
11811
  sx = abs(sx);
11850
11812
  sy = abs(sy);
@@ -11861,7 +11823,10 @@ function createPattern(ui, paint, pixelRatio) {
11861
11823
  if (size > Platform.image.maxCacheSize) return false;
11862
11824
  }
11863
11825
  let maxSize = Platform.image.maxPatternSize;
11864
- if (!image.isSVG) {
11826
+ if (image.isSVG) {
11827
+ const ws = width / image.width;
11828
+ if (ws > 1) imageScale = ws / ceil(ws);
11829
+ } else {
11865
11830
  const imageSize = image.width * image.height;
11866
11831
  if (maxSize > imageSize) maxSize = imageSize;
11867
11832
  }
@@ -11876,18 +11841,20 @@ function createPattern(ui, paint, pixelRatio) {
11876
11841
  scaleX /= sx;
11877
11842
  scaleY /= sy;
11878
11843
  }
11844
+ const xGap = gap && gap.x * scaleX;
11845
+ const yGap = gap && gap.y * scaleY;
11879
11846
  if (transform || scaleX !== 1 || scaleY !== 1) {
11847
+ const canvasWidth = width + (xGap || 0);
11848
+ const canvasHeight = height + (yGap || 0);
11849
+ scaleX /= canvasWidth / max(floor(canvasWidth), 1);
11850
+ scaleY /= canvasHeight / max(floor(canvasHeight), 1);
11880
11851
  if (!imageMatrix) {
11881
11852
  imageMatrix = get$1();
11882
11853
  if (transform) copy$1(imageMatrix, transform);
11883
11854
  }
11884
11855
  scale(imageMatrix, 1 / scaleX, 1 / scaleY);
11885
11856
  }
11886
- if (imageMatrix) {
11887
- const canvasWidth = width + (xGap || 0), canvasHeight = height + (yGap || 0);
11888
- scale(imageMatrix, canvasWidth / max(floor(canvasWidth), 1), canvasHeight / max(floor(canvasHeight), 1));
11889
- }
11890
- const canvas = image.getCanvas(width, height, data.opacity, data.filters, xGap, yGap);
11857
+ const canvas = image.getCanvas(width, height, data.opacity, data.filters, xGap, yGap, ui.leafer && ui.leafer.config.smooth);
11891
11858
  const pattern = image.getPattern(canvas, repeat || (Platform.origin.noRepeat || "no-repeat"), imageMatrix, paint);
11892
11859
  paint.style = pattern;
11893
11860
  paint.patternId = id;
@@ -12847,4 +12814,4 @@ try {
12847
12814
  if (wx) useCanvas("miniapp", wx);
12848
12815
  } catch (_a) {}
12849
12816
 
12850
- 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, DragBoundsHelper, 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, extraPropertyEventMap, getBoundsData, getDescriptor, getMatrixData, getPointData, hitType, isArray, isData, isEmptyData, isFinite, isNull, isNumber, isObject, isString, isUndefined, layoutProcessor, leaferTransformAttrMap, maskType, naturalBoundsType, opacityType, pathInputType, pathType, pen, positionType, registerUI, registerUIEvent, resizeType, rewrite, rewriteAble, rotationType, scaleType, scrollType, sortType, strokeType, surfaceType, tempBounds$1 as tempBounds, tempMatrix$1 as tempMatrix, tempPoint$2 as tempPoint, tryToNumber, useCanvas, useModule, version, visibleType, zoomLayerType };
12817
+ 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, DragBoundsHelper, 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, extraPropertyEventMap, getBoundsData, getDescriptor, getMatrixData, getPointData, hitType, isArray, isData, isEmptyData, isFinite, isNull, isNumber, isObject, isString, isUndefined, layoutProcessor, leaferTransformAttrMap, maskType, naturalBoundsType, opacityType, path, pathInputType, pathType, pen, positionType, registerUI, registerUIEvent, resizeType, rewrite, rewriteAble, rotationType, scaleType, scrollType, sortType, strokeType, surfaceType, tempBounds$1 as tempBounds, tempMatrix$1 as tempMatrix, tempPoint$2 as tempPoint, tryToNumber, useCanvas, useModule, version, visibleType, zoomLayerType };