@leafer-draw/worker 1.9.3 → 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/worker.js CHANGED
@@ -49,7 +49,7 @@ var LeaferUI = function(exports) {
49
49
  return value === undefined;
50
50
  }
51
51
  function isNull(value) {
52
- return value === undefined || value === null;
52
+ return value == null;
53
53
  }
54
54
  function isString(value) {
55
55
  return typeof value === "string";
@@ -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;
@@ -285,6 +288,9 @@ var LeaferUI = function(exports) {
285
288
  num = round$3(num * a) / a;
286
289
  return num === -0 ? 0 : num;
287
290
  },
291
+ sign(num) {
292
+ return num < 0 ? -1 : 1;
293
+ },
288
294
  getScaleData(scale, size, originSize, scaleData) {
289
295
  if (!scaleData) scaleData = {};
290
296
  if (size) {
@@ -1077,10 +1083,10 @@ var LeaferUI = function(exports) {
1077
1083
  toPoint$5(align, box, to, onlyBoxSize, content, onlyContentSize);
1078
1084
  }
1079
1085
  };
1080
- 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;
1081
1087
  const {toOuterPoint: toOuterPoint$2} = MatrixHelper;
1082
1088
  const {float: float, fourNumber: fourNumber} = MathHelper;
1083
- const {floor: floor$2, ceil: ceil$1} = Math;
1089
+ const {floor: floor$2, ceil: ceil$2} = Math;
1084
1090
  let right$1, bottom$1, boundsRight, boundsBottom;
1085
1091
  const point = {};
1086
1092
  const toPoint$4 = {};
@@ -1204,7 +1210,7 @@ var LeaferUI = function(exports) {
1204
1210
  point.x = t.x;
1205
1211
  toOuterPoint$2(matrix, point, toPoint$4);
1206
1212
  addPoint$2(tempPointBounds$1, toPoint$4.x, toPoint$4.y);
1207
- toBounds$3(tempPointBounds$1, to);
1213
+ toBounds$2(tempPointBounds$1, to);
1208
1214
  }
1209
1215
  },
1210
1216
  toInnerOf(t, matrix, to) {
@@ -1242,8 +1248,8 @@ var LeaferUI = function(exports) {
1242
1248
  const {x: x, y: y} = t;
1243
1249
  t.x = floor$2(t.x);
1244
1250
  t.y = floor$2(t.y);
1245
- t.width = x > t.x ? ceil$1(t.width + x - t.x) : ceil$1(t.width);
1246
- 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);
1247
1253
  },
1248
1254
  unsign(t) {
1249
1255
  if (t.width < 0) {
@@ -1303,7 +1309,7 @@ var LeaferUI = function(exports) {
1303
1309
  },
1304
1310
  setPoints(t, points) {
1305
1311
  points.forEach((point, index) => index === 0 ? setPoint$2(tempPointBounds$1, point.x, point.y) : addPoint$2(tempPointBounds$1, point.x, point.y));
1306
- toBounds$3(tempPointBounds$1, t);
1312
+ toBounds$2(tempPointBounds$1, t);
1307
1313
  },
1308
1314
  setPoint(t, point) {
1309
1315
  B.set(t, point.x, point.y);
@@ -2060,15 +2066,15 @@ var LeaferUI = function(exports) {
2060
2066
  DataHelper.copyAttrs(s, size, canvasSizeAttrs);
2061
2067
  canvasSizeAttrs.forEach(key => s[key] || (s[key] = 1));
2062
2068
  this.bounds = new Bounds(0, 0, this.width, this.height);
2063
- if (this.context && !this.unreal) {
2064
- this.updateViewSize();
2065
- this.smooth = this.config.smooth;
2066
- }
2069
+ this.updateViewSize();
2067
2070
  this.updateClientBounds();
2068
- if (this.context && !this.unreal && takeCanvas) {
2069
- this.clearWorld(takeCanvas.bounds);
2070
- this.copyWorld(takeCanvas);
2071
- 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
+ }
2072
2078
  }
2073
2079
  }
2074
2080
  updateViewSize() {}
@@ -2369,7 +2375,7 @@ var LeaferUI = function(exports) {
2369
2375
  data[0] ? drawer.arcTo(x, y, right, y, data[0]) : drawer.lineTo(x, y);
2370
2376
  }
2371
2377
  };
2372
- 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;
2373
2379
  const {setPoint: setPoint$1, addPoint: addPoint$1} = TwoPointBoundsHelper;
2374
2380
  const {set: set, toNumberPoints: toNumberPoints} = PointHelper;
2375
2381
  const {M: M$5, L: L$6, C: C$4, Q: Q$4, Z: Z$5} = PathCommandMap;
@@ -2435,9 +2441,11 @@ var LeaferUI = function(exports) {
2435
2441
  const CBy = toY - y1;
2436
2442
  let startRadian = atan2$1(BAy, BAx);
2437
2443
  let endRadian = atan2$1(CBy, CBx);
2444
+ const lenBA = hypot(BAx, BAy);
2445
+ const lenCB = hypot(CBx, CBy);
2438
2446
  let totalRadian = endRadian - startRadian;
2439
2447
  if (totalRadian < 0) totalRadian += PI2;
2440
- 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) {
2441
2449
  if (data) data.push(L$6, x1, y1);
2442
2450
  if (setPointBounds) {
2443
2451
  setPoint$1(setPointBounds, fromX, fromY);
@@ -2470,7 +2478,7 @@ var LeaferUI = function(exports) {
2470
2478
  let totalRadian = endRadian - startRadian;
2471
2479
  if (totalRadian < 0) totalRadian += PI2; else if (totalRadian > PI2) totalRadian -= PI2;
2472
2480
  if (anticlockwise) totalRadian -= PI2;
2473
- const parts = ceil(abs$2(totalRadian / PI_2));
2481
+ const parts = ceil$1(abs$2(totalRadian / PI_2));
2474
2482
  const partRadian = totalRadian / parts;
2475
2483
  const partRadian4Sin = sin$3(partRadian / 4);
2476
2484
  const control = 8 / 3 * partRadian4Sin * partRadian4Sin / sin$3(partRadian / 2);
@@ -3010,11 +3018,7 @@ var LeaferUI = function(exports) {
3010
3018
  this.set(path);
3011
3019
  }
3012
3020
  set(path) {
3013
- if (path) {
3014
- this.__path = isString(path) ? PathHelper.parse(path) : path;
3015
- } else {
3016
- this.__path = [];
3017
- }
3021
+ this.__path = path ? isString(path) ? PathHelper.parse(path) : path : [];
3018
3022
  return this;
3019
3023
  }
3020
3024
  beginPath() {
@@ -3176,7 +3180,7 @@ var LeaferUI = function(exports) {
3176
3180
  };
3177
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;
3178
3182
  const {toTwoPointBounds: toTwoPointBounds, toTwoPointBoundsByQuadraticCurve: toTwoPointBoundsByQuadraticCurve, arcTo: arcTo$1, arc: arc, ellipse: ellipse$1} = BezierHelper;
3179
- const {addPointBounds: addPointBounds, copy: copy$6, addPoint: addPoint, setPoint: setPoint, addBounds: addBounds, toBounds: toBounds$2} = TwoPointBoundsHelper;
3183
+ const {addPointBounds: addPointBounds, copy: copy$6, addPoint: addPoint, setPoint: setPoint, addBounds: addBounds, toBounds: toBounds$1} = TwoPointBoundsHelper;
3180
3184
  const debug$9 = Debug.get("PathBounds");
3181
3185
  let radius, radiusX, radiusY;
3182
3186
  const tempPointBounds = {};
@@ -3185,7 +3189,7 @@ var LeaferUI = function(exports) {
3185
3189
  const PathBounds = {
3186
3190
  toBounds(data, setBounds) {
3187
3191
  PathBounds.toTwoPointBounds(data, setPointBounds);
3188
- toBounds$2(setPointBounds, setBounds);
3192
+ toBounds$1(setPointBounds, setBounds);
3189
3193
  },
3190
3194
  toTwoPointBounds(data, setPointBounds) {
3191
3195
  if (!data || !data.length) return setPoint(setPointBounds, 0, 0);
@@ -3367,10 +3371,13 @@ var LeaferUI = function(exports) {
3367
3371
  return smooth;
3368
3372
  }
3369
3373
  };
3370
- PathHelper.creator = new PathCreator;
3374
+ function path(path) {
3375
+ return new PathCreator(path);
3376
+ }
3377
+ const pen = path();
3378
+ PathHelper.creator = path();
3371
3379
  PathHelper.parse = PathConvert.parse;
3372
3380
  PathHelper.convertToCanvasData = PathConvert.toCanvasData;
3373
- const pen = new PathCreator;
3374
3381
  const {drawRoundRect: drawRoundRect} = RectHelper;
3375
3382
  function roundRect(drawer) {
3376
3383
  if (drawer && !drawer.roundRect) {
@@ -3723,7 +3730,7 @@ var LeaferUI = function(exports) {
3723
3730
  return FileHelper.alphaPixelTypes.some(item => I.isFormat(item, config));
3724
3731
  },
3725
3732
  isFormat(format, config) {
3726
- if (config.format === format) return true;
3733
+ if (config.format) return config.format === format;
3727
3734
  const {url: url} = config;
3728
3735
  if (url.startsWith("data:")) {
3729
3736
  if (url.startsWith("data:" + FileHelper.mineType(format))) return true;
@@ -3813,7 +3820,7 @@ var LeaferUI = function(exports) {
3813
3820
  getFull(_filters) {
3814
3821
  return this.view;
3815
3822
  }
3816
- getCanvas(width, height, opacity, _filters, xGap, yGap) {
3823
+ getCanvas(width, height, opacity, _filters, xGap, yGap, smooth) {
3817
3824
  width || (width = this.width);
3818
3825
  height || (height = this.height);
3819
3826
  if (this.cache) {
@@ -3829,6 +3836,7 @@ var LeaferUI = function(exports) {
3829
3836
  const canvas = Platform.origin.createCanvas(max$1(floor$1(width + (xGap || 0)), 1), max$1(floor$1(height + (yGap || 0)), 1));
3830
3837
  const ctx = canvas.getContext("2d");
3831
3838
  if (opacity) ctx.globalAlpha = opacity;
3839
+ ctx.imageSmoothingEnabled = smooth === false ? false : true;
3832
3840
  ctx.drawImage(this.view, 0, 0, width, height);
3833
3841
  this.cache = this.use > 1 ? {
3834
3842
  data: canvas,
@@ -3867,7 +3875,7 @@ var LeaferUI = function(exports) {
3867
3875
  return {
3868
3876
  get() {
3869
3877
  const v = this[privateKey];
3870
- return isUndefined(v) ? defaultValue : v;
3878
+ return v == null ? defaultValue : v;
3871
3879
  },
3872
3880
  set(value) {
3873
3881
  this[privateKey] = value;
@@ -4120,21 +4128,21 @@ var LeaferUI = function(exports) {
4120
4128
  };
4121
4129
  } else if (typeof defaultValue === "function") {
4122
4130
  property.get = function() {
4123
- let v = this[computedKey];
4124
- return v === undefined ? defaultValue(this.__leaf) : v;
4131
+ const v = this[computedKey];
4132
+ return v == null ? defaultValue(this.__leaf) : v;
4125
4133
  };
4126
4134
  } else if (isObject(defaultValue)) {
4127
4135
  const isEmpty = isEmptyData(defaultValue);
4128
4136
  property.get = function() {
4129
- let v = this[computedKey];
4130
- return v === undefined ? this[computedKey] = isEmpty ? {} : DataHelper.clone(defaultValue) : v;
4137
+ const v = this[computedKey];
4138
+ return v == null ? this[computedKey] = isEmpty ? {} : DataHelper.clone(defaultValue) : v;
4131
4139
  };
4132
4140
  }
4133
4141
  const isBox = target.isBranchLeaf;
4134
4142
  if (key === "width") {
4135
4143
  property.get = function() {
4136
4144
  const v = this[computedKey];
4137
- if (v === undefined) {
4145
+ if (v == null) {
4138
4146
  const t = this, naturalWidth = t.__naturalWidth, leaf = t.__leaf;
4139
4147
  if (!defaultValue || leaf.pathInputed) return leaf.boxBounds.width;
4140
4148
  if (naturalWidth) return t._height && t.__useNaturalRatio ? t._height * naturalWidth / t.__naturalHeight : naturalWidth;
@@ -4144,7 +4152,7 @@ var LeaferUI = function(exports) {
4144
4152
  } else if (key === "height") {
4145
4153
  property.get = function() {
4146
4154
  const v = this[computedKey];
4147
- if (v === undefined) {
4155
+ if (v == null) {
4148
4156
  const t = this, naturalHeight = t.__naturalHeight, leaf = t.__leaf;
4149
4157
  if (!defaultValue || leaf.pathInputed) return leaf.boxBounds.height;
4150
4158
  if (naturalHeight) return t._width && t.__useNaturalRatio ? t._width * naturalHeight / t.__naturalWidth : naturalHeight;
@@ -4428,8 +4436,9 @@ var LeaferUI = function(exports) {
4428
4436
  };
4429
4437
  const L = LeafHelper;
4430
4438
  const {updateAllMatrix: updateAllMatrix$3, updateMatrix: updateMatrix$2, updateAllWorldOpacity: updateAllWorldOpacity, updateAllChange: updateAllChange$1, updateChange: updateChange$1} = L;
4431
- function getTempLocal(t, world) {
4432
- 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;
4433
4442
  }
4434
4443
  const LeafBoundsHelper = {
4435
4444
  worldBounds(target) {
@@ -4876,7 +4885,7 @@ var LeaferUI = function(exports) {
4876
4885
  }
4877
4886
  boxChange() {
4878
4887
  this.boxChanged = true;
4879
- this.localBoxChanged || this.localBoxChange();
4888
+ this.localBoxChanged ? this.boundsChanged || (this.boundsChanged = true) : this.localBoxChange();
4880
4889
  this.hitCanvasChanged = true;
4881
4890
  }
4882
4891
  localBoxChange() {
@@ -4910,7 +4919,7 @@ var LeaferUI = function(exports) {
4910
4919
  }
4911
4920
  matrixChange() {
4912
4921
  this.matrixChanged = true;
4913
- this.localBoxChanged || this.localBoxChange();
4922
+ this.localBoxChanged ? this.boundsChanged || (this.boundsChanged = true) : this.localBoxChange();
4914
4923
  }
4915
4924
  surfaceChange() {
4916
4925
  this.surfaceChanged = true;
@@ -5354,7 +5363,7 @@ var LeaferUI = function(exports) {
5354
5363
  const {updateMatrix: updateMatrix$1, updateAllMatrix: updateAllMatrix$2} = LeafHelper;
5355
5364
  const {updateBounds: updateBounds$1} = BranchHelper;
5356
5365
  const {toOuterOf: toOuterOf$1, copyAndSpread: copyAndSpread$1, copy: copy$3} = BoundsHelper;
5357
- const {toBounds: toBounds$1} = PathBounds;
5366
+ const {toBounds: toBounds} = PathBounds;
5358
5367
  const LeafBounds = {
5359
5368
  __updateWorldBounds() {
5360
5369
  const layout = this.__layout;
@@ -5425,8 +5434,8 @@ var LeaferUI = function(exports) {
5425
5434
  __updateBoxBounds(_secondLayout, _bounds) {
5426
5435
  const b = this.__layout.boxBounds;
5427
5436
  const data = this.__;
5428
- if (data.__pathInputed) {
5429
- toBounds$1(data.path, b);
5437
+ if (data.__usePathBox) {
5438
+ toBounds(data.path, b);
5430
5439
  } else {
5431
5440
  b.x = 0;
5432
5441
  b.y = 0;
@@ -5884,10 +5893,10 @@ var LeaferUI = function(exports) {
5884
5893
  relative.innerToWorld(world, to, distance);
5885
5894
  world = to ? to : world;
5886
5895
  }
5887
- toInnerPoint(this.worldTransform, world, to, distance);
5896
+ toInnerPoint(this.scrollWorldTransform, world, to, distance);
5888
5897
  }
5889
5898
  innerToWorld(inner, to, distance, relative) {
5890
- toOuterPoint(this.worldTransform, inner, to, distance);
5899
+ toOuterPoint(this.scrollWorldTransform, inner, to, distance);
5891
5900
  if (relative) relative.worldToInner(to ? to : inner, null, distance);
5892
5901
  }
5893
5902
  getBoxPoint(world, relative, distance, change) {
@@ -6341,7 +6350,7 @@ var LeaferUI = function(exports) {
6341
6350
  this.levelMap = null;
6342
6351
  }
6343
6352
  }
6344
- const version = "1.9.3";
6353
+ const version = "1.9.5";
6345
6354
  class LeaferCanvas extends LeaferCanvasBase {
6346
6355
  get allowBackgroundColor() {
6347
6356
  return true;
@@ -6737,7 +6746,7 @@ var LeaferUI = function(exports) {
6737
6746
  this.times = 0;
6738
6747
  this.config = {
6739
6748
  usePartRender: true,
6740
- maxFPS: 60
6749
+ maxFPS: 120
6741
6750
  };
6742
6751
  this.target = target;
6743
6752
  this.canvas = canvas;
@@ -6892,11 +6901,15 @@ var LeaferUI = function(exports) {
6892
6901
  if (this.requestTime || !target) return;
6893
6902
  if (target.parentApp) return target.parentApp.requestRender(false);
6894
6903
  const requestTime = this.requestTime = Date.now();
6895
- Platform.requestRender(() => {
6896
- this.FPS = Math.min(60, Math.ceil(1e3 / (Date.now() - requestTime)));
6904
+ const render = () => {
6905
+ const nowFPS = 1e3 / (Date.now() - requestTime);
6906
+ const {maxFPS: maxFPS} = this.config;
6907
+ if (maxFPS && nowFPS > maxFPS - .5) return Platform.requestRender(render);
6908
+ this.FPS = Math.min(120, Math.ceil(nowFPS));
6897
6909
  this.requestTime = 0;
6898
6910
  this.checkRender();
6899
- });
6911
+ };
6912
+ Platform.requestRender(render);
6900
6913
  }
6901
6914
  __onResize(e) {
6902
6915
  if (this.canvas.unreal) return;
@@ -6939,7 +6952,8 @@ var LeaferUI = function(exports) {
6939
6952
  if (this.target) {
6940
6953
  this.stop();
6941
6954
  this.__removeListenEvents();
6942
- this.target = this.canvas = this.config = null;
6955
+ this.config = {};
6956
+ this.target = this.canvas = null;
6943
6957
  }
6944
6958
  }
6945
6959
  }
@@ -7216,7 +7230,11 @@ var LeaferUI = function(exports) {
7216
7230
  }
7217
7231
  }
7218
7232
  class FrameData extends BoxData {}
7219
- class LineData extends UIData {}
7233
+ class LineData extends UIData {
7234
+ get __usePathBox() {
7235
+ return this.points || this.__pathInputed;
7236
+ }
7237
+ }
7220
7238
  class RectData extends UIData {
7221
7239
  get __boxStroke() {
7222
7240
  return !this.__pathInputed;
@@ -7227,7 +7245,7 @@ var LeaferUI = function(exports) {
7227
7245
  return !this.__pathInputed;
7228
7246
  }
7229
7247
  }
7230
- class PolygonData extends UIData {}
7248
+ class PolygonData extends LineData {}
7231
7249
  class StarData extends UIData {}
7232
7250
  class PathData extends UIData {
7233
7251
  get __pathInputed() {
@@ -7521,20 +7539,9 @@ var LeaferUI = function(exports) {
7521
7539
  if (!path) this.__drawPathByBox(pen);
7522
7540
  return pen;
7523
7541
  }
7524
- constructor(data) {
7525
- super(data);
7526
- }
7527
7542
  reset(_data) {}
7528
- set(data, transition) {
7529
- if (data) {
7530
- if (transition) {
7531
- if (transition === "temp") {
7532
- this.lockNormalStyle = true;
7533
- Object.assign(this, data);
7534
- this.lockNormalStyle = false;
7535
- } else this.animate(data, transition);
7536
- } else Object.assign(this, data);
7537
- }
7543
+ set(data, _transition) {
7544
+ if (data) Object.assign(this, data);
7538
7545
  }
7539
7546
  get(name) {
7540
7547
  return isString(name) ? this.__.__getInput(name) : this.__.__getInputData(name);
@@ -7580,7 +7587,7 @@ var LeaferUI = function(exports) {
7580
7587
  const data = this.__;
7581
7588
  if (data.path) {
7582
7589
  data.__pathForRender = data.cornerRadius ? PathCorner.smooth(data.path, data.cornerRadius, data.cornerSmoothing) : data.path;
7583
- if (data.__useArrow) PathArrow.addArrows(this, !data.cornerRadius);
7590
+ if (data.__useArrow) PathArrow.addArrows(this);
7584
7591
  } else data.__pathForRender && (data.__pathForRender = undefined);
7585
7592
  }
7586
7593
  __drawRenderPath(canvas) {
@@ -7604,7 +7611,8 @@ var LeaferUI = function(exports) {
7604
7611
  drawImagePlaceholder(canvas, _image) {
7605
7612
  Paint.fill(this.__.placeholderColor, this, canvas);
7606
7613
  }
7607
- animate(_keyframe, _options, _type, _isTemp) {
7614
+ animate(keyframe, _options, _type, _isTemp) {
7615
+ this.set(keyframe);
7608
7616
  return Plugin.need("animate");
7609
7617
  }
7610
7618
  killAnimate(_type, _nextStyle) {}
@@ -7718,9 +7726,6 @@ var LeaferUI = function(exports) {
7718
7726
  get isBranch() {
7719
7727
  return true;
7720
7728
  }
7721
- constructor(data) {
7722
- super(data);
7723
- }
7724
7729
  reset(data) {
7725
7730
  this.__setBranch();
7726
7731
  super.reset(data);
@@ -7838,7 +7843,7 @@ var LeaferUI = function(exports) {
7838
7843
  const canvas = this.canvas = Creator.canvas(config);
7839
7844
  this.__controllers.push(this.renderer = Creator.renderer(this, canvas, config), this.watcher = Creator.watcher(this, config), this.layouter = Creator.layouter(this, config));
7840
7845
  if (this.isApp) this.__setApp();
7841
- this.__checkAutoLayout(config, parentApp);
7846
+ this.__checkAutoLayout();
7842
7847
  this.view = canvas.view;
7843
7848
  if (!parentApp) {
7844
7849
  this.selector = Creator.selector(this);
@@ -7937,7 +7942,8 @@ var LeaferUI = function(exports) {
7937
7942
  this.leafer = leafer;
7938
7943
  this.__level = 1;
7939
7944
  }
7940
- __checkAutoLayout(config, parentApp) {
7945
+ __checkAutoLayout() {
7946
+ const {config: config, parentApp: parentApp} = this;
7941
7947
  if (!parentApp) {
7942
7948
  if (!config.width || !config.height) this.autoLayout = new AutoBounds(config);
7943
7949
  this.canvas.startAutoLayout(this.autoLayout, this.__onResize.bind(this));
@@ -7963,9 +7969,10 @@ var LeaferUI = function(exports) {
7963
7969
  return super.__getAttr(attrName);
7964
7970
  }
7965
7971
  __changeCanvasSize(attrName, newValue) {
7966
- const data = DataHelper.copyAttrs({}, this.canvas, canvasSizeAttrs);
7967
- data[attrName] = this.config[attrName] = newValue;
7968
- if (newValue) this.canvas.stopAutoLayout();
7972
+ const {config: config, canvas: canvas} = this;
7973
+ const data = DataHelper.copyAttrs({}, canvas, canvasSizeAttrs);
7974
+ data[attrName] = config[attrName] = newValue;
7975
+ config.width && config.height ? canvas.stopAutoLayout() : this.__checkAutoLayout();
7969
7976
  this.__doResize(data);
7970
7977
  }
7971
7978
  __changeFill(newValue) {
@@ -8112,9 +8119,9 @@ var LeaferUI = function(exports) {
8112
8119
  if (!this.parent) {
8113
8120
  if (this.selector) this.selector.destroy();
8114
8121
  if (this.hitCanvasManager) this.hitCanvasManager.destroy();
8115
- this.canvasManager.destroy();
8122
+ if (this.canvasManager) this.canvasManager.destroy();
8116
8123
  }
8117
- this.canvas.destroy();
8124
+ if (this.canvas) this.canvas.destroy();
8118
8125
  this.config.view = this.view = this.parentApp = null;
8119
8126
  if (this.userConfig) this.userConfig.view = null;
8120
8127
  super.destroy();
@@ -8137,9 +8144,6 @@ var LeaferUI = function(exports) {
8137
8144
  get __tag() {
8138
8145
  return "Rect";
8139
8146
  }
8140
- constructor(data) {
8141
- super(data);
8142
- }
8143
8147
  };
8144
8148
  __decorate([ dataProcessor(RectData) ], exports.Rect.prototype, "__", void 0);
8145
8149
  exports.Rect = __decorate([ useModule(RectRender), rewriteAble(), registerUI() ], exports.Rect);
@@ -8188,29 +8192,24 @@ var LeaferUI = function(exports) {
8188
8192
  }
8189
8193
  __updateStrokeBounds() {}
8190
8194
  __updateRenderBounds() {
8191
- let isOverflow;
8195
+ let isOverflow, isScrollMode;
8192
8196
  if (this.children.length) {
8193
- const data = this.__, layout = this.__layout, {renderBounds: renderBounds, boxBounds: boxBounds} = layout;
8197
+ const data = this.__, layout = this.__layout, {renderBounds: renderBounds, boxBounds: boxBounds} = layout, {overflow: overflow} = data;
8194
8198
  const childrenRenderBounds = layout.childrenRenderBounds || (layout.childrenRenderBounds = getBoundsData());
8195
8199
  super.__updateRenderBounds(childrenRenderBounds);
8196
- if (data.overflow.includes("scroll")) {
8200
+ if (isScrollMode = overflow.includes("scroll")) {
8197
8201
  add(childrenRenderBounds, boxBounds);
8198
8202
  scroll(childrenRenderBounds, data);
8199
8203
  }
8200
8204
  this.__updateRectRenderBounds();
8201
8205
  isOverflow = !includes$1(boxBounds, childrenRenderBounds);
8202
- if (isOverflow && data.overflow === "show") add(renderBounds, childrenRenderBounds);
8206
+ if (isOverflow && overflow === "show") add(renderBounds, childrenRenderBounds);
8203
8207
  } else this.__updateRectRenderBounds();
8204
8208
  DataHelper.stintSet(this, "isOverflow", isOverflow);
8205
- this.__checkScroll();
8209
+ this.__checkScroll(isScrollMode);
8206
8210
  }
8207
8211
  __updateRectRenderBounds() {}
8208
- __updateWorldBounds() {
8209
- if (this.hasScroller) this.__updateScroll();
8210
- super.__updateWorldBounds();
8211
- }
8212
- __checkScroll() {}
8213
- __updateScroll() {}
8212
+ __checkScroll(_isScrollMode) {}
8214
8213
  __updateRectChange() {}
8215
8214
  __updateChange() {
8216
8215
  super.__updateChange();
@@ -8256,9 +8255,6 @@ var LeaferUI = function(exports) {
8256
8255
  get isFrame() {
8257
8256
  return true;
8258
8257
  }
8259
- constructor(data) {
8260
- super(data);
8261
- }
8262
8258
  };
8263
8259
  __decorate([ dataProcessor(FrameData) ], exports.Frame.prototype, "__", void 0);
8264
8260
  __decorate([ surfaceType("#FFFFFF") ], exports.Frame.prototype, "fill", void 0);
@@ -8269,9 +8265,6 @@ var LeaferUI = function(exports) {
8269
8265
  get __tag() {
8270
8266
  return "Ellipse";
8271
8267
  }
8272
- constructor(data) {
8273
- super(data);
8274
- }
8275
8268
  __updatePath() {
8276
8269
  const {width: width, height: height, innerRadius: innerRadius, startAngle: startAngle, endAngle: endAngle} = this.__;
8277
8270
  const rx = width / 2, ry = height / 2;
@@ -8307,7 +8300,6 @@ var LeaferUI = function(exports) {
8307
8300
  exports.Ellipse = __decorate([ registerUI() ], exports.Ellipse);
8308
8301
  const {moveTo: moveTo$2, lineTo: lineTo$2, drawPoints: drawPoints$1} = PathCommandDataHelper;
8309
8302
  const {rotate: rotate$1, getAngle: getAngle$1, getDistance: getDistance$2, defaultPoint: defaultPoint} = PointHelper;
8310
- const {toBounds: toBounds} = PathBounds;
8311
8303
  exports.Line = class Line extends exports.UI {
8312
8304
  get __tag() {
8313
8305
  return "Line";
@@ -8324,31 +8316,16 @@ var LeaferUI = function(exports) {
8324
8316
  this.rotation = getAngle$1(defaultPoint, value);
8325
8317
  if (this.height) this.height = 0;
8326
8318
  }
8327
- constructor(data) {
8328
- super(data);
8329
- }
8330
8319
  __updatePath() {
8331
8320
  const data = this.__;
8332
8321
  const path = data.path = [];
8333
8322
  if (data.points) {
8334
- drawPoints$1(path, data.points, false, data.closed);
8323
+ drawPoints$1(path, data.points, data.curve, data.closed);
8335
8324
  } else {
8336
8325
  moveTo$2(path, 0, 0);
8337
8326
  lineTo$2(path, this.width, 0);
8338
8327
  }
8339
8328
  }
8340
- __updateRenderPath() {
8341
- const data = this.__;
8342
- if (!this.pathInputed && data.points && data.curve) {
8343
- drawPoints$1(data.__pathForRender = [], data.points, data.curve, data.closed);
8344
- if (data.__useArrow) PathArrow.addArrows(this, false);
8345
- } else super.__updateRenderPath();
8346
- }
8347
- __updateBoxBounds() {
8348
- if (this.points) {
8349
- toBounds(this.__.__pathForRender, this.__layout.boxBounds);
8350
- } else super.__updateBoxBounds();
8351
- }
8352
8329
  };
8353
8330
  __decorate([ dataProcessor(LineData) ], exports.Line.prototype, "__", void 0);
8354
8331
  __decorate([ affectStrokeBoundsType("center") ], exports.Line.prototype, "strokeAlign", void 0);
@@ -8364,15 +8341,13 @@ var LeaferUI = function(exports) {
8364
8341
  get __tag() {
8365
8342
  return "Polygon";
8366
8343
  }
8367
- constructor(data) {
8368
- super(data);
8369
- }
8370
8344
  __updatePath() {
8371
- const path = this.__.path = [];
8372
- if (this.__.points) {
8373
- drawPoints(path, this.__.points, false, true);
8345
+ const data = this.__;
8346
+ const path = data.path = [];
8347
+ if (data.points) {
8348
+ drawPoints(path, data.points, data.curve, true);
8374
8349
  } else {
8375
- const {width: width, height: height, sides: sides} = this.__;
8350
+ const {width: width, height: height, sides: sides} = data;
8376
8351
  const rx = width / 2, ry = height / 2;
8377
8352
  moveTo$1(path, rx, 0);
8378
8353
  for (let i = 1; i < sides; i++) {
@@ -8397,9 +8372,6 @@ var LeaferUI = function(exports) {
8397
8372
  get __tag() {
8398
8373
  return "Star";
8399
8374
  }
8400
- constructor(data) {
8401
- super(data);
8402
- }
8403
8375
  __updatePath() {
8404
8376
  const {width: width, height: height, corners: corners, innerRadius: innerRadius} = this.__;
8405
8377
  const rx = width / 2, ry = height / 2;
@@ -8427,9 +8399,6 @@ var LeaferUI = function(exports) {
8427
8399
  const {fill: fill} = this.__;
8428
8400
  return isArray(fill) && fill[0].image;
8429
8401
  }
8430
- constructor(data) {
8431
- super(data);
8432
- }
8433
8402
  };
8434
8403
  __decorate([ dataProcessor(ImageData) ], exports.Image.prototype, "__", void 0);
8435
8404
  __decorate([ boundsType("") ], exports.Image.prototype, "url", void 0);
@@ -8514,9 +8483,6 @@ var LeaferUI = function(exports) {
8514
8483
  this.updateLayout();
8515
8484
  return this.__.__textDrawData;
8516
8485
  }
8517
- constructor(data) {
8518
- super(data);
8519
- }
8520
8486
  __updateTextDrawData() {
8521
8487
  const data = this.__;
8522
8488
  const {lineHeight: lineHeight, letterSpacing: letterSpacing, fontFamily: fontFamily, fontSize: fontSize, fontWeight: fontWeight, italic: italic, textCase: textCase, textOverflow: textOverflow, padding: padding} = data;
@@ -8620,9 +8586,6 @@ var LeaferUI = function(exports) {
8620
8586
  get __tag() {
8621
8587
  return "Path";
8622
8588
  }
8623
- constructor(data) {
8624
- super(data);
8625
- }
8626
8589
  };
8627
8590
  __decorate([ dataProcessor(PathData) ], exports.Path.prototype, "__", void 0);
8628
8591
  __decorate([ affectStrokeBoundsType("center") ], exports.Path.prototype, "strokeAlign", void 0);
@@ -8631,9 +8594,6 @@ var LeaferUI = function(exports) {
8631
8594
  get __tag() {
8632
8595
  return "Pen";
8633
8596
  }
8634
- constructor(data) {
8635
- super(data);
8636
- }
8637
8597
  setStyle(data) {
8638
8598
  const path = this.pathElement = new exports.Path(data);
8639
8599
  this.pathStyle = data;
@@ -9279,7 +9239,7 @@ var LeaferUI = function(exports) {
9279
9239
  if (leafer && leafer.viewReady) leafer.renderer.ignore = value;
9280
9240
  }
9281
9241
  const {get: get$1, scale: scale, copy: copy$1} = MatrixHelper;
9282
- const {floor: floor, max: max, abs: abs} = Math;
9242
+ const {floor: floor, ceil: ceil, max: max, abs: abs} = Math;
9283
9243
  function createPattern(ui, paint, pixelRatio) {
9284
9244
  let {scaleX: scaleX, scaleY: scaleY} = ui.getRenderScaleData(true, paint.scaleFixed);
9285
9245
  const id = scaleX + "-" + scaleY + "-" + pixelRatio;
@@ -9288,8 +9248,6 @@ var LeaferUI = function(exports) {
9288
9248
  let imageScale, imageMatrix, {width: width, height: height, scaleX: sx, scaleY: sy, transform: transform, repeat: repeat, gap: gap} = data;
9289
9249
  scaleX *= pixelRatio;
9290
9250
  scaleY *= pixelRatio;
9291
- const xGap = gap && gap.x * scaleX;
9292
- const yGap = gap && gap.y * scaleY;
9293
9251
  if (sx) {
9294
9252
  sx = abs(sx);
9295
9253
  sy = abs(sy);
@@ -9306,7 +9264,10 @@ var LeaferUI = function(exports) {
9306
9264
  if (size > Platform.image.maxCacheSize) return false;
9307
9265
  }
9308
9266
  let maxSize = Platform.image.maxPatternSize;
9309
- if (!image.isSVG) {
9267
+ if (image.isSVG) {
9268
+ const ws = width / image.width;
9269
+ if (ws > 1) imageScale = ws / ceil(ws);
9270
+ } else {
9310
9271
  const imageSize = image.width * image.height;
9311
9272
  if (maxSize > imageSize) maxSize = imageSize;
9312
9273
  }
@@ -9321,18 +9282,20 @@ var LeaferUI = function(exports) {
9321
9282
  scaleX /= sx;
9322
9283
  scaleY /= sy;
9323
9284
  }
9285
+ const xGap = gap && gap.x * scaleX;
9286
+ const yGap = gap && gap.y * scaleY;
9324
9287
  if (transform || scaleX !== 1 || scaleY !== 1) {
9288
+ const canvasWidth = width + (xGap || 0);
9289
+ const canvasHeight = height + (yGap || 0);
9290
+ scaleX /= canvasWidth / max(floor(canvasWidth), 1);
9291
+ scaleY /= canvasHeight / max(floor(canvasHeight), 1);
9325
9292
  if (!imageMatrix) {
9326
9293
  imageMatrix = get$1();
9327
9294
  if (transform) copy$1(imageMatrix, transform);
9328
9295
  }
9329
9296
  scale(imageMatrix, 1 / scaleX, 1 / scaleY);
9330
9297
  }
9331
- if (imageMatrix) {
9332
- const canvasWidth = width + (xGap || 0), canvasHeight = height + (yGap || 0);
9333
- scale(imageMatrix, canvasWidth / max(floor(canvasWidth), 1), canvasHeight / max(floor(canvasHeight), 1));
9334
- }
9335
- const canvas = image.getCanvas(width, height, data.opacity, data.filters, xGap, yGap);
9298
+ const canvas = image.getCanvas(width, height, data.opacity, data.filters, xGap, yGap, ui.leafer && ui.leafer.config.smooth);
9336
9299
  const pattern = image.getPattern(canvas, repeat || (Platform.origin.noRepeat || "no-repeat"), imageMatrix, paint);
9337
9300
  paint.style = pattern;
9338
9301
  paint.patternId = id;
@@ -10328,6 +10291,7 @@ var LeaferUI = function(exports) {
10328
10291
  exports.maskType = maskType;
10329
10292
  exports.naturalBoundsType = naturalBoundsType;
10330
10293
  exports.opacityType = opacityType;
10294
+ exports.path = path;
10331
10295
  exports.pathInputType = pathInputType;
10332
10296
  exports.pathType = pathType;
10333
10297
  exports.pen = pen;