leafer-ui 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.
package/dist/web.js CHANGED
@@ -119,6 +119,9 @@ var LeaferUI = function(exports) {
119
119
  const {path: path} = this;
120
120
  return path && path.length === 6 && path[0] === 1;
121
121
  }
122
+ get __usePathBox() {
123
+ return this.__pathInputed;
124
+ }
122
125
  get __blendMode() {
123
126
  if (this.eraser && this.eraser !== "path") return "destination-out";
124
127
  const {blendMode: blendMode} = this;
@@ -1080,10 +1083,10 @@ var LeaferUI = function(exports) {
1080
1083
  toPoint$5(align, box, to, onlyBoxSize, content, onlyContentSize);
1081
1084
  }
1082
1085
  };
1083
- const {tempPointBounds: tempPointBounds$1, setPoint: setPoint$2, addPoint: addPoint$2, toBounds: toBounds$3} = TwoPointBoundsHelper;
1086
+ const {tempPointBounds: tempPointBounds$1, setPoint: setPoint$2, addPoint: addPoint$2, toBounds: toBounds$2} = TwoPointBoundsHelper;
1084
1087
  const {toOuterPoint: toOuterPoint$2} = MatrixHelper;
1085
1088
  const {float: float, fourNumber: fourNumber} = MathHelper;
1086
- const {floor: floor$2, ceil: ceil$1} = Math;
1089
+ const {floor: floor$2, ceil: ceil$2} = Math;
1087
1090
  let right$1, bottom$1, boundsRight, boundsBottom;
1088
1091
  const point = {};
1089
1092
  const toPoint$4 = {};
@@ -1207,7 +1210,7 @@ var LeaferUI = function(exports) {
1207
1210
  point.x = t.x;
1208
1211
  toOuterPoint$2(matrix, point, toPoint$4);
1209
1212
  addPoint$2(tempPointBounds$1, toPoint$4.x, toPoint$4.y);
1210
- toBounds$3(tempPointBounds$1, to);
1213
+ toBounds$2(tempPointBounds$1, to);
1211
1214
  }
1212
1215
  },
1213
1216
  toInnerOf(t, matrix, to) {
@@ -1245,8 +1248,8 @@ var LeaferUI = function(exports) {
1245
1248
  const {x: x, y: y} = t;
1246
1249
  t.x = floor$2(t.x);
1247
1250
  t.y = floor$2(t.y);
1248
- t.width = x > t.x ? ceil$1(t.width + x - t.x) : ceil$1(t.width);
1249
- t.height = y > t.y ? ceil$1(t.height + y - t.y) : ceil$1(t.height);
1251
+ t.width = x > t.x ? ceil$2(t.width + x - t.x) : ceil$2(t.width);
1252
+ t.height = y > t.y ? ceil$2(t.height + y - t.y) : ceil$2(t.height);
1250
1253
  },
1251
1254
  unsign(t) {
1252
1255
  if (t.width < 0) {
@@ -1306,7 +1309,7 @@ var LeaferUI = function(exports) {
1306
1309
  },
1307
1310
  setPoints(t, points) {
1308
1311
  points.forEach((point, index) => index === 0 ? setPoint$2(tempPointBounds$1, point.x, point.y) : addPoint$2(tempPointBounds$1, point.x, point.y));
1309
- toBounds$3(tempPointBounds$1, t);
1312
+ toBounds$2(tempPointBounds$1, t);
1310
1313
  },
1311
1314
  setPoint(t, point) {
1312
1315
  B.set(t, point.x, point.y);
@@ -2063,15 +2066,15 @@ var LeaferUI = function(exports) {
2063
2066
  DataHelper.copyAttrs(s, size, canvasSizeAttrs);
2064
2067
  canvasSizeAttrs.forEach(key => s[key] || (s[key] = 1));
2065
2068
  this.bounds = new Bounds(0, 0, this.width, this.height);
2066
- if (this.context && !this.unreal) {
2067
- this.updateViewSize();
2068
- this.smooth = this.config.smooth;
2069
- }
2069
+ this.updateViewSize();
2070
2070
  this.updateClientBounds();
2071
- if (this.context && !this.unreal && takeCanvas) {
2072
- this.clearWorld(takeCanvas.bounds);
2073
- this.copyWorld(takeCanvas);
2074
- takeCanvas.recycle();
2071
+ if (this.context) {
2072
+ this.smooth = this.config.smooth;
2073
+ if (!this.unreal && takeCanvas) {
2074
+ this.clearWorld(takeCanvas.bounds);
2075
+ this.copyWorld(takeCanvas);
2076
+ takeCanvas.recycle();
2077
+ }
2075
2078
  }
2076
2079
  }
2077
2080
  updateViewSize() {}
@@ -2372,7 +2375,7 @@ var LeaferUI = function(exports) {
2372
2375
  data[0] ? drawer.arcTo(x, y, right, y, data[0]) : drawer.lineTo(x, y);
2373
2376
  }
2374
2377
  };
2375
- const {sin: sin$3, cos: cos$3, atan2: atan2$1, ceil: ceil, abs: abs$2, PI: PI$2, sqrt: sqrt$1, pow: pow} = Math;
2378
+ 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;
2376
2379
  const {setPoint: setPoint$1, addPoint: addPoint$1} = TwoPointBoundsHelper;
2377
2380
  const {set: set, toNumberPoints: toNumberPoints} = PointHelper;
2378
2381
  const {M: M$5, L: L$6, C: C$4, Q: Q$4, Z: Z$5} = PathCommandMap;
@@ -2438,9 +2441,11 @@ var LeaferUI = function(exports) {
2438
2441
  const CBy = toY - y1;
2439
2442
  let startRadian = atan2$1(BAy, BAx);
2440
2443
  let endRadian = atan2$1(CBy, CBx);
2444
+ const lenBA = hypot(BAx, BAy);
2445
+ const lenCB = hypot(CBx, CBy);
2441
2446
  let totalRadian = endRadian - startRadian;
2442
2447
  if (totalRadian < 0) totalRadian += PI2;
2443
- if (totalRadian === PI$2 || abs$2(BAx + BAy) < 1e-12 || abs$2(CBx + CBy) < 1e-12) {
2448
+ if (lenBA < 1e-12 || lenCB < 1e-12 || totalRadian < 1e-12 || abs$2(totalRadian - PI$2) < 1e-12) {
2444
2449
  if (data) data.push(L$6, x1, y1);
2445
2450
  if (setPointBounds) {
2446
2451
  setPoint$1(setPointBounds, fromX, fromY);
@@ -2473,7 +2478,7 @@ var LeaferUI = function(exports) {
2473
2478
  let totalRadian = endRadian - startRadian;
2474
2479
  if (totalRadian < 0) totalRadian += PI2; else if (totalRadian > PI2) totalRadian -= PI2;
2475
2480
  if (anticlockwise) totalRadian -= PI2;
2476
- const parts = ceil(abs$2(totalRadian / PI_2));
2481
+ const parts = ceil$1(abs$2(totalRadian / PI_2));
2477
2482
  const partRadian = totalRadian / parts;
2478
2483
  const partRadian4Sin = sin$3(partRadian / 4);
2479
2484
  const control = 8 / 3 * partRadian4Sin * partRadian4Sin / sin$3(partRadian / 2);
@@ -3013,11 +3018,7 @@ var LeaferUI = function(exports) {
3013
3018
  this.set(path);
3014
3019
  }
3015
3020
  set(path) {
3016
- if (path) {
3017
- this.__path = isString(path) ? PathHelper.parse(path) : path;
3018
- } else {
3019
- this.__path = [];
3020
- }
3021
+ this.__path = path ? isString(path) ? PathHelper.parse(path) : path : [];
3021
3022
  return this;
3022
3023
  }
3023
3024
  beginPath() {
@@ -3179,7 +3180,7 @@ var LeaferUI = function(exports) {
3179
3180
  };
3180
3181
  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: O, P: P, U: U} = PathCommandMap;
3181
3182
  const {toTwoPointBounds: toTwoPointBounds, toTwoPointBoundsByQuadraticCurve: toTwoPointBoundsByQuadraticCurve, arcTo: arcTo$1, arc: arc, ellipse: ellipse$1} = BezierHelper;
3182
- const {addPointBounds: addPointBounds, copy: copy$7, addPoint: addPoint, setPoint: setPoint, addBounds: addBounds, toBounds: toBounds$2} = TwoPointBoundsHelper;
3183
+ const {addPointBounds: addPointBounds, copy: copy$7, addPoint: addPoint, setPoint: setPoint, addBounds: addBounds, toBounds: toBounds$1} = TwoPointBoundsHelper;
3183
3184
  const debug$b = Debug.get("PathBounds");
3184
3185
  let radius, radiusX, radiusY;
3185
3186
  const tempPointBounds = {};
@@ -3188,7 +3189,7 @@ var LeaferUI = function(exports) {
3188
3189
  const PathBounds = {
3189
3190
  toBounds(data, setBounds) {
3190
3191
  PathBounds.toTwoPointBounds(data, setPointBounds);
3191
- toBounds$2(setPointBounds, setBounds);
3192
+ toBounds$1(setPointBounds, setBounds);
3192
3193
  },
3193
3194
  toTwoPointBounds(data, setPointBounds) {
3194
3195
  if (!data || !data.length) return setPoint(setPointBounds, 0, 0);
@@ -3370,10 +3371,13 @@ var LeaferUI = function(exports) {
3370
3371
  return smooth;
3371
3372
  }
3372
3373
  };
3373
- PathHelper.creator = new PathCreator;
3374
+ function path(path) {
3375
+ return new PathCreator(path);
3376
+ }
3377
+ const pen = path();
3378
+ PathHelper.creator = path();
3374
3379
  PathHelper.parse = PathConvert.parse;
3375
3380
  PathHelper.convertToCanvasData = PathConvert.toCanvasData;
3376
- const pen = new PathCreator;
3377
3381
  const {drawRoundRect: drawRoundRect} = RectHelper;
3378
3382
  function roundRect(drawer) {
3379
3383
  if (drawer && !drawer.roundRect) {
@@ -3726,7 +3730,7 @@ var LeaferUI = function(exports) {
3726
3730
  return FileHelper.alphaPixelTypes.some(item => I$1.isFormat(item, config));
3727
3731
  },
3728
3732
  isFormat(format, config) {
3729
- if (config.format === format) return true;
3733
+ if (config.format) return config.format === format;
3730
3734
  const {url: url} = config;
3731
3735
  if (url.startsWith("data:")) {
3732
3736
  if (url.startsWith("data:" + FileHelper.mineType(format))) return true;
@@ -3816,7 +3820,7 @@ var LeaferUI = function(exports) {
3816
3820
  getFull(_filters) {
3817
3821
  return this.view;
3818
3822
  }
3819
- getCanvas(width, height, opacity, _filters, xGap, yGap) {
3823
+ getCanvas(width, height, opacity, _filters, xGap, yGap, smooth) {
3820
3824
  width || (width = this.width);
3821
3825
  height || (height = this.height);
3822
3826
  if (this.cache) {
@@ -3832,6 +3836,7 @@ var LeaferUI = function(exports) {
3832
3836
  const canvas = Platform.origin.createCanvas(max$1(floor$1(width + (xGap || 0)), 1), max$1(floor$1(height + (yGap || 0)), 1));
3833
3837
  const ctx = canvas.getContext("2d");
3834
3838
  if (opacity) ctx.globalAlpha = opacity;
3839
+ ctx.imageSmoothingEnabled = smooth === false ? false : true;
3835
3840
  ctx.drawImage(this.view, 0, 0, width, height);
3836
3841
  this.cache = this.use > 1 ? {
3837
3842
  data: canvas,
@@ -4431,8 +4436,9 @@ var LeaferUI = function(exports) {
4431
4436
  };
4432
4437
  const L = LeafHelper;
4433
4438
  const {updateAllMatrix: updateAllMatrix$3, updateMatrix: updateMatrix$2, updateAllWorldOpacity: updateAllWorldOpacity, updateAllChange: updateAllChange$1, updateChange: updateChange$1} = L;
4434
- function getTempLocal(t, world) {
4435
- return t.parent ? PointHelper.tempToInnerOf(world, t.parent.scrollWorldTransform) : world;
4439
+ function getTempLocal(t, worldPoint) {
4440
+ t.updateLayout();
4441
+ return t.parent ? PointHelper.tempToInnerOf(worldPoint, t.parent.scrollWorldTransform) : worldPoint;
4436
4442
  }
4437
4443
  const LeafBoundsHelper = {
4438
4444
  worldBounds(target) {
@@ -5357,7 +5363,7 @@ var LeaferUI = function(exports) {
5357
5363
  const {updateMatrix: updateMatrix$1, updateAllMatrix: updateAllMatrix$2} = LeafHelper;
5358
5364
  const {updateBounds: updateBounds$1} = BranchHelper;
5359
5365
  const {toOuterOf: toOuterOf$1, copyAndSpread: copyAndSpread$1, copy: copy$4} = BoundsHelper;
5360
- const {toBounds: toBounds$1} = PathBounds;
5366
+ const {toBounds: toBounds} = PathBounds;
5361
5367
  const LeafBounds = {
5362
5368
  __updateWorldBounds() {
5363
5369
  const layout = this.__layout;
@@ -5428,8 +5434,8 @@ var LeaferUI = function(exports) {
5428
5434
  __updateBoxBounds(_secondLayout, _bounds) {
5429
5435
  const b = this.__layout.boxBounds;
5430
5436
  const data = this.__;
5431
- if (data.__pathInputed) {
5432
- toBounds$1(data.path, b);
5437
+ if (data.__usePathBox) {
5438
+ toBounds(data.path, b);
5433
5439
  } else {
5434
5440
  b.x = 0;
5435
5441
  b.y = 0;
@@ -6344,7 +6350,7 @@ var LeaferUI = function(exports) {
6344
6350
  this.levelMap = null;
6345
6351
  }
6346
6352
  }
6347
- const version = "1.9.4";
6353
+ const version = "1.9.5";
6348
6354
  const debug$5 = Debug.get("LeaferCanvas");
6349
6355
  class LeaferCanvas extends LeaferCanvasBase {
6350
6356
  set zIndex(zIndex) {
@@ -6433,10 +6439,22 @@ var LeaferUI = function(exports) {
6433
6439
  updateViewSize() {
6434
6440
  const {width: width, height: height, pixelRatio: pixelRatio} = this;
6435
6441
  const {style: style} = this.view;
6436
- style.width = width + "px";
6437
- style.height = height + "px";
6438
- this.view.width = Math.ceil(width * pixelRatio);
6439
- this.view.height = Math.ceil(height * pixelRatio);
6442
+ if (this.unreal) {
6443
+ const {config: config, autoWidthStr: autoWidthStr, autoHeightStr: autoHeightStr} = this;
6444
+ if (config.width) {
6445
+ if (isUndefined(autoWidthStr)) this.autoWidthStr = style.width || "";
6446
+ style.width = config.width + "px";
6447
+ } else if (!isUndefined(autoWidthStr)) style.width = autoWidthStr;
6448
+ if (config.height) {
6449
+ if (isUndefined(autoHeightStr)) this.autoHeightStr = style.height || "";
6450
+ style.height = config.height + "px";
6451
+ } else if (!isUndefined(autoHeightStr)) style.height = autoHeightStr;
6452
+ } else {
6453
+ style.width = width + "px";
6454
+ style.height = height + "px";
6455
+ this.view.width = Math.ceil(width * pixelRatio);
6456
+ this.view.height = Math.ceil(height * pixelRatio);
6457
+ }
6440
6458
  }
6441
6459
  updateClientBounds() {
6442
6460
  if (this.view.parentElement) this.clientBounds = this.view.getBoundingClientRect();
@@ -6445,6 +6463,7 @@ var LeaferUI = function(exports) {
6445
6463
  this.resizeListener = listener;
6446
6464
  if (autoBounds) {
6447
6465
  this.autoBounds = autoBounds;
6466
+ if (this.resizeObserver) return;
6448
6467
  try {
6449
6468
  this.resizeObserver = new ResizeObserver(entries => {
6450
6469
  this.updateClientBounds();
@@ -6461,18 +6480,10 @@ var LeaferUI = function(exports) {
6461
6480
  } catch (_a) {
6462
6481
  this.imitateResizeObserver();
6463
6482
  }
6483
+ this.stopListenPixelRatio();
6464
6484
  } else {
6465
- window.addEventListener("resize", this.windowListener = () => {
6466
- const pixelRatio = Platform.devicePixelRatio;
6467
- if (!this.config.pixelRatio && this.pixelRatio !== pixelRatio) {
6468
- const {width: width, height: height} = this;
6469
- this.emitResize({
6470
- width: width,
6471
- height: height,
6472
- pixelRatio: pixelRatio
6473
- });
6474
- }
6475
- });
6485
+ this.listenPixelRatio();
6486
+ if (this.unreal) this.updateViewSize();
6476
6487
  }
6477
6488
  }
6478
6489
  imitateResizeObserver() {
@@ -6481,6 +6492,25 @@ var LeaferUI = function(exports) {
6481
6492
  Platform.requestRender(this.imitateResizeObserver.bind(this));
6482
6493
  }
6483
6494
  }
6495
+ listenPixelRatio() {
6496
+ if (!this.windowListener) window.addEventListener("resize", this.windowListener = () => {
6497
+ const pixelRatio = Platform.devicePixelRatio;
6498
+ if (!this.config.pixelRatio && this.pixelRatio !== pixelRatio) {
6499
+ const {width: width, height: height} = this;
6500
+ this.emitResize({
6501
+ width: width,
6502
+ height: height,
6503
+ pixelRatio: pixelRatio
6504
+ });
6505
+ }
6506
+ });
6507
+ }
6508
+ stopListenPixelRatio() {
6509
+ if (this.windowListener) {
6510
+ window.removeEventListener("resize", this.windowListener);
6511
+ this.windowListener = null;
6512
+ }
6513
+ }
6484
6514
  checkAutoBounds(parentSize) {
6485
6515
  const view = this.view;
6486
6516
  const {x: x, y: y, width: width, height: height} = this.autoBounds.getBoundsFrom(parentSize);
@@ -6518,10 +6548,7 @@ var LeaferUI = function(exports) {
6518
6548
  destroy() {
6519
6549
  if (this.view) {
6520
6550
  this.stopAutoLayout();
6521
- if (this.windowListener) {
6522
- window.removeEventListener("resize", this.windowListener);
6523
- this.windowListener = null;
6524
- }
6551
+ this.stopListenPixelRatio();
6525
6552
  if (!this.unreal) {
6526
6553
  const view = this.view;
6527
6554
  if (view.parentElement) view.remove();
@@ -6925,7 +6952,7 @@ var LeaferUI = function(exports) {
6925
6952
  this.times = 0;
6926
6953
  this.config = {
6927
6954
  usePartRender: true,
6928
- maxFPS: 60
6955
+ maxFPS: 120
6929
6956
  };
6930
6957
  this.target = target;
6931
6958
  this.canvas = canvas;
@@ -7080,11 +7107,15 @@ var LeaferUI = function(exports) {
7080
7107
  if (this.requestTime || !target) return;
7081
7108
  if (target.parentApp) return target.parentApp.requestRender(false);
7082
7109
  const requestTime = this.requestTime = Date.now();
7083
- Platform.requestRender(() => {
7084
- this.FPS = Math.min(60, Math.ceil(1e3 / (Date.now() - requestTime)));
7110
+ const render = () => {
7111
+ const nowFPS = 1e3 / (Date.now() - requestTime);
7112
+ const {maxFPS: maxFPS} = this.config;
7113
+ if (maxFPS && nowFPS > maxFPS - .5) return Platform.requestRender(render);
7114
+ this.FPS = Math.min(120, Math.ceil(nowFPS));
7085
7115
  this.requestTime = 0;
7086
7116
  this.checkRender();
7087
- });
7117
+ };
7118
+ Platform.requestRender(render);
7088
7119
  }
7089
7120
  __onResize(e) {
7090
7121
  if (this.canvas.unreal) return;
@@ -7127,7 +7158,8 @@ var LeaferUI = function(exports) {
7127
7158
  if (this.target) {
7128
7159
  this.stop();
7129
7160
  this.__removeListenEvents();
7130
- this.target = this.canvas = this.config = null;
7161
+ this.config = {};
7162
+ this.target = this.canvas = null;
7131
7163
  }
7132
7164
  }
7133
7165
  }
@@ -7584,7 +7616,11 @@ var LeaferUI = function(exports) {
7584
7616
  }
7585
7617
  }
7586
7618
  class FrameData extends BoxData {}
7587
- class LineData extends UIData {}
7619
+ class LineData extends UIData {
7620
+ get __usePathBox() {
7621
+ return this.points || this.__pathInputed;
7622
+ }
7623
+ }
7588
7624
  class RectData extends UIData {
7589
7625
  get __boxStroke() {
7590
7626
  return !this.__pathInputed;
@@ -7595,7 +7631,7 @@ var LeaferUI = function(exports) {
7595
7631
  return !this.__pathInputed;
7596
7632
  }
7597
7633
  }
7598
- class PolygonData extends UIData {}
7634
+ class PolygonData extends LineData {}
7599
7635
  class StarData extends UIData {}
7600
7636
  class PathData extends UIData {
7601
7637
  get __pathInputed() {
@@ -7889,20 +7925,9 @@ var LeaferUI = function(exports) {
7889
7925
  if (!path) this.__drawPathByBox(pen);
7890
7926
  return pen;
7891
7927
  }
7892
- constructor(data) {
7893
- super(data);
7894
- }
7895
7928
  reset(_data) {}
7896
- set(data, transition) {
7897
- if (data) {
7898
- if (transition) {
7899
- if (transition === "temp") {
7900
- this.lockNormalStyle = true;
7901
- Object.assign(this, data);
7902
- this.lockNormalStyle = false;
7903
- } else this.animate(data, transition);
7904
- } else Object.assign(this, data);
7905
- }
7929
+ set(data, _transition) {
7930
+ if (data) Object.assign(this, data);
7906
7931
  }
7907
7932
  get(name) {
7908
7933
  return isString(name) ? this.__.__getInput(name) : this.__.__getInputData(name);
@@ -7948,7 +7973,7 @@ var LeaferUI = function(exports) {
7948
7973
  const data = this.__;
7949
7974
  if (data.path) {
7950
7975
  data.__pathForRender = data.cornerRadius ? PathCorner.smooth(data.path, data.cornerRadius, data.cornerSmoothing) : data.path;
7951
- if (data.__useArrow) PathArrow.addArrows(this, !data.cornerRadius);
7976
+ if (data.__useArrow) PathArrow.addArrows(this);
7952
7977
  } else data.__pathForRender && (data.__pathForRender = undefined);
7953
7978
  }
7954
7979
  __drawRenderPath(canvas) {
@@ -7972,7 +7997,8 @@ var LeaferUI = function(exports) {
7972
7997
  drawImagePlaceholder(canvas, _image) {
7973
7998
  Paint.fill(this.__.placeholderColor, this, canvas);
7974
7999
  }
7975
- animate(_keyframe, _options, _type, _isTemp) {
8000
+ animate(keyframe, _options, _type, _isTemp) {
8001
+ this.set(keyframe);
7976
8002
  return Plugin.need("animate");
7977
8003
  }
7978
8004
  killAnimate(_type, _nextStyle) {}
@@ -8086,9 +8112,6 @@ var LeaferUI = function(exports) {
8086
8112
  get isBranch() {
8087
8113
  return true;
8088
8114
  }
8089
- constructor(data) {
8090
- super(data);
8091
- }
8092
8115
  reset(data) {
8093
8116
  this.__setBranch();
8094
8117
  super.reset(data);
@@ -8206,7 +8229,7 @@ var LeaferUI = function(exports) {
8206
8229
  const canvas = this.canvas = Creator.canvas(config);
8207
8230
  this.__controllers.push(this.renderer = Creator.renderer(this, canvas, config), this.watcher = Creator.watcher(this, config), this.layouter = Creator.layouter(this, config));
8208
8231
  if (this.isApp) this.__setApp();
8209
- this.__checkAutoLayout(config, parentApp);
8232
+ this.__checkAutoLayout();
8210
8233
  this.view = canvas.view;
8211
8234
  if (!parentApp) {
8212
8235
  this.selector = Creator.selector(this);
@@ -8305,7 +8328,8 @@ var LeaferUI = function(exports) {
8305
8328
  this.leafer = leafer;
8306
8329
  this.__level = 1;
8307
8330
  }
8308
- __checkAutoLayout(config, parentApp) {
8331
+ __checkAutoLayout() {
8332
+ const {config: config, parentApp: parentApp} = this;
8309
8333
  if (!parentApp) {
8310
8334
  if (!config.width || !config.height) this.autoLayout = new AutoBounds(config);
8311
8335
  this.canvas.startAutoLayout(this.autoLayout, this.__onResize.bind(this));
@@ -8331,9 +8355,10 @@ var LeaferUI = function(exports) {
8331
8355
  return super.__getAttr(attrName);
8332
8356
  }
8333
8357
  __changeCanvasSize(attrName, newValue) {
8334
- const data = DataHelper.copyAttrs({}, this.canvas, canvasSizeAttrs);
8335
- data[attrName] = this.config[attrName] = newValue;
8336
- if (newValue) this.canvas.stopAutoLayout();
8358
+ const {config: config, canvas: canvas} = this;
8359
+ const data = DataHelper.copyAttrs({}, canvas, canvasSizeAttrs);
8360
+ data[attrName] = config[attrName] = newValue;
8361
+ config.width && config.height ? canvas.stopAutoLayout() : this.__checkAutoLayout();
8337
8362
  this.__doResize(data);
8338
8363
  }
8339
8364
  __changeFill(newValue) {
@@ -8480,9 +8505,9 @@ var LeaferUI = function(exports) {
8480
8505
  if (!this.parent) {
8481
8506
  if (this.selector) this.selector.destroy();
8482
8507
  if (this.hitCanvasManager) this.hitCanvasManager.destroy();
8483
- this.canvasManager.destroy();
8508
+ if (this.canvasManager) this.canvasManager.destroy();
8484
8509
  }
8485
- this.canvas.destroy();
8510
+ if (this.canvas) this.canvas.destroy();
8486
8511
  this.config.view = this.view = this.parentApp = null;
8487
8512
  if (this.userConfig) this.userConfig.view = null;
8488
8513
  super.destroy();
@@ -8505,9 +8530,6 @@ var LeaferUI = function(exports) {
8505
8530
  get __tag() {
8506
8531
  return "Rect";
8507
8532
  }
8508
- constructor(data) {
8509
- super(data);
8510
- }
8511
8533
  };
8512
8534
  __decorate([ dataProcessor(RectData) ], exports.Rect.prototype, "__", void 0);
8513
8535
  exports.Rect = __decorate([ useModule(RectRender), rewriteAble(), registerUI() ], exports.Rect);
@@ -8619,9 +8641,6 @@ var LeaferUI = function(exports) {
8619
8641
  get isFrame() {
8620
8642
  return true;
8621
8643
  }
8622
- constructor(data) {
8623
- super(data);
8624
- }
8625
8644
  };
8626
8645
  __decorate([ dataProcessor(FrameData) ], exports.Frame.prototype, "__", void 0);
8627
8646
  __decorate([ surfaceType("#FFFFFF") ], exports.Frame.prototype, "fill", void 0);
@@ -8632,9 +8651,6 @@ var LeaferUI = function(exports) {
8632
8651
  get __tag() {
8633
8652
  return "Ellipse";
8634
8653
  }
8635
- constructor(data) {
8636
- super(data);
8637
- }
8638
8654
  __updatePath() {
8639
8655
  const {width: width, height: height, innerRadius: innerRadius, startAngle: startAngle, endAngle: endAngle} = this.__;
8640
8656
  const rx = width / 2, ry = height / 2;
@@ -8670,7 +8686,6 @@ var LeaferUI = function(exports) {
8670
8686
  exports.Ellipse = __decorate([ registerUI() ], exports.Ellipse);
8671
8687
  const {moveTo: moveTo$2, lineTo: lineTo$2, drawPoints: drawPoints$1} = PathCommandDataHelper;
8672
8688
  const {rotate: rotate$1, getAngle: getAngle$1, getDistance: getDistance$2, defaultPoint: defaultPoint} = PointHelper;
8673
- const {toBounds: toBounds} = PathBounds;
8674
8689
  exports.Line = class Line extends exports.UI {
8675
8690
  get __tag() {
8676
8691
  return "Line";
@@ -8687,31 +8702,16 @@ var LeaferUI = function(exports) {
8687
8702
  this.rotation = getAngle$1(defaultPoint, value);
8688
8703
  if (this.height) this.height = 0;
8689
8704
  }
8690
- constructor(data) {
8691
- super(data);
8692
- }
8693
8705
  __updatePath() {
8694
8706
  const data = this.__;
8695
8707
  const path = data.path = [];
8696
8708
  if (data.points) {
8697
- drawPoints$1(path, data.points, false, data.closed);
8709
+ drawPoints$1(path, data.points, data.curve, data.closed);
8698
8710
  } else {
8699
8711
  moveTo$2(path, 0, 0);
8700
8712
  lineTo$2(path, this.width, 0);
8701
8713
  }
8702
8714
  }
8703
- __updateRenderPath() {
8704
- const data = this.__;
8705
- if (!this.pathInputed && data.points && data.curve) {
8706
- drawPoints$1(data.__pathForRender = [], data.points, data.curve, data.closed);
8707
- if (data.__useArrow) PathArrow.addArrows(this, false);
8708
- } else super.__updateRenderPath();
8709
- }
8710
- __updateBoxBounds() {
8711
- if (this.points) {
8712
- toBounds(this.__.__pathForRender, this.__layout.boxBounds);
8713
- } else super.__updateBoxBounds();
8714
- }
8715
8715
  };
8716
8716
  __decorate([ dataProcessor(LineData) ], exports.Line.prototype, "__", void 0);
8717
8717
  __decorate([ affectStrokeBoundsType("center") ], exports.Line.prototype, "strokeAlign", void 0);
@@ -8727,15 +8727,13 @@ var LeaferUI = function(exports) {
8727
8727
  get __tag() {
8728
8728
  return "Polygon";
8729
8729
  }
8730
- constructor(data) {
8731
- super(data);
8732
- }
8733
8730
  __updatePath() {
8734
- const path = this.__.path = [];
8735
- if (this.__.points) {
8736
- drawPoints(path, this.__.points, false, true);
8731
+ const data = this.__;
8732
+ const path = data.path = [];
8733
+ if (data.points) {
8734
+ drawPoints(path, data.points, data.curve, true);
8737
8735
  } else {
8738
- const {width: width, height: height, sides: sides} = this.__;
8736
+ const {width: width, height: height, sides: sides} = data;
8739
8737
  const rx = width / 2, ry = height / 2;
8740
8738
  moveTo$1(path, rx, 0);
8741
8739
  for (let i = 1; i < sides; i++) {
@@ -8760,9 +8758,6 @@ var LeaferUI = function(exports) {
8760
8758
  get __tag() {
8761
8759
  return "Star";
8762
8760
  }
8763
- constructor(data) {
8764
- super(data);
8765
- }
8766
8761
  __updatePath() {
8767
8762
  const {width: width, height: height, corners: corners, innerRadius: innerRadius} = this.__;
8768
8763
  const rx = width / 2, ry = height / 2;
@@ -8790,9 +8785,6 @@ var LeaferUI = function(exports) {
8790
8785
  const {fill: fill} = this.__;
8791
8786
  return isArray(fill) && fill[0].image;
8792
8787
  }
8793
- constructor(data) {
8794
- super(data);
8795
- }
8796
8788
  };
8797
8789
  __decorate([ dataProcessor(ImageData) ], exports.Image.prototype, "__", void 0);
8798
8790
  __decorate([ boundsType("") ], exports.Image.prototype, "url", void 0);
@@ -8877,9 +8869,6 @@ var LeaferUI = function(exports) {
8877
8869
  this.updateLayout();
8878
8870
  return this.__.__textDrawData;
8879
8871
  }
8880
- constructor(data) {
8881
- super(data);
8882
- }
8883
8872
  __updateTextDrawData() {
8884
8873
  const data = this.__;
8885
8874
  const {lineHeight: lineHeight, letterSpacing: letterSpacing, fontFamily: fontFamily, fontSize: fontSize, fontWeight: fontWeight, italic: italic, textCase: textCase, textOverflow: textOverflow, padding: padding} = data;
@@ -8983,9 +8972,6 @@ var LeaferUI = function(exports) {
8983
8972
  get __tag() {
8984
8973
  return "Path";
8985
8974
  }
8986
- constructor(data) {
8987
- super(data);
8988
- }
8989
8975
  };
8990
8976
  __decorate([ dataProcessor(PathData) ], exports.Path.prototype, "__", void 0);
8991
8977
  __decorate([ affectStrokeBoundsType("center") ], exports.Path.prototype, "strokeAlign", void 0);
@@ -8994,9 +8980,6 @@ var LeaferUI = function(exports) {
8994
8980
  get __tag() {
8995
8981
  return "Pen";
8996
8982
  }
8997
- constructor(data) {
8998
- super(data);
8999
- }
9000
8983
  setStyle(data) {
9001
8984
  const path = this.pathElement = new exports.Path(data);
9002
8985
  this.pathStyle = data;
@@ -11239,7 +11222,7 @@ var LeaferUI = function(exports) {
11239
11222
  if (leafer && leafer.viewReady) leafer.renderer.ignore = value;
11240
11223
  }
11241
11224
  const {get: get$1, scale: scale, copy: copy$1} = MatrixHelper;
11242
- const {floor: floor, max: max, abs: abs} = Math;
11225
+ const {floor: floor, ceil: ceil, max: max, abs: abs} = Math;
11243
11226
  function createPattern(ui, paint, pixelRatio) {
11244
11227
  let {scaleX: scaleX, scaleY: scaleY} = ui.getRenderScaleData(true, paint.scaleFixed);
11245
11228
  const id = scaleX + "-" + scaleY + "-" + pixelRatio;
@@ -11248,8 +11231,6 @@ var LeaferUI = function(exports) {
11248
11231
  let imageScale, imageMatrix, {width: width, height: height, scaleX: sx, scaleY: sy, transform: transform, repeat: repeat, gap: gap} = data;
11249
11232
  scaleX *= pixelRatio;
11250
11233
  scaleY *= pixelRatio;
11251
- const xGap = gap && gap.x * scaleX;
11252
- const yGap = gap && gap.y * scaleY;
11253
11234
  if (sx) {
11254
11235
  sx = abs(sx);
11255
11236
  sy = abs(sy);
@@ -11266,7 +11247,10 @@ var LeaferUI = function(exports) {
11266
11247
  if (size > Platform.image.maxCacheSize) return false;
11267
11248
  }
11268
11249
  let maxSize = Platform.image.maxPatternSize;
11269
- if (!image.isSVG) {
11250
+ if (image.isSVG) {
11251
+ const ws = width / image.width;
11252
+ if (ws > 1) imageScale = ws / ceil(ws);
11253
+ } else {
11270
11254
  const imageSize = image.width * image.height;
11271
11255
  if (maxSize > imageSize) maxSize = imageSize;
11272
11256
  }
@@ -11281,18 +11265,20 @@ var LeaferUI = function(exports) {
11281
11265
  scaleX /= sx;
11282
11266
  scaleY /= sy;
11283
11267
  }
11268
+ const xGap = gap && gap.x * scaleX;
11269
+ const yGap = gap && gap.y * scaleY;
11284
11270
  if (transform || scaleX !== 1 || scaleY !== 1) {
11271
+ const canvasWidth = width + (xGap || 0);
11272
+ const canvasHeight = height + (yGap || 0);
11273
+ scaleX /= canvasWidth / max(floor(canvasWidth), 1);
11274
+ scaleY /= canvasHeight / max(floor(canvasHeight), 1);
11285
11275
  if (!imageMatrix) {
11286
11276
  imageMatrix = get$1();
11287
11277
  if (transform) copy$1(imageMatrix, transform);
11288
11278
  }
11289
11279
  scale(imageMatrix, 1 / scaleX, 1 / scaleY);
11290
11280
  }
11291
- if (imageMatrix) {
11292
- const canvasWidth = width + (xGap || 0), canvasHeight = height + (yGap || 0);
11293
- scale(imageMatrix, canvasWidth / max(floor(canvasWidth), 1), canvasHeight / max(floor(canvasHeight), 1));
11294
- }
11295
- const canvas = image.getCanvas(width, height, data.opacity, data.filters, xGap, yGap);
11281
+ const canvas = image.getCanvas(width, height, data.opacity, data.filters, xGap, yGap, ui.leafer && ui.leafer.config.smooth);
11296
11282
  const pattern = image.getPattern(canvas, repeat || (Platform.origin.noRepeat || "no-repeat"), imageMatrix, paint);
11297
11283
  paint.style = pattern;
11298
11284
  paint.patternId = id;
@@ -12306,6 +12292,7 @@ var LeaferUI = function(exports) {
12306
12292
  exports.maskType = maskType;
12307
12293
  exports.naturalBoundsType = naturalBoundsType;
12308
12294
  exports.opacityType = opacityType;
12295
+ exports.path = path;
12309
12296
  exports.pathInputType = pathInputType;
12310
12297
  exports.pathType = pathType;
12311
12298
  exports.pen = pen;