leafer-ui 2.0.5 → 2.0.7

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.
@@ -2896,6 +2896,32 @@ const BezierHelper = {
2896
2896
  getDerivative(t, fromV, v1, v2, toV) {
2897
2897
  const o = 1 - t;
2898
2898
  return 3 * o * o * (v1 - fromV) + 6 * o * t * (v2 - v1) + 3 * t * t * (toV - v2);
2899
+ },
2900
+ cut(t, fromX, fromY, x1, y1, x2, y2, toX, toY) {
2901
+ if (t <= 0) return {
2902
+ left: null,
2903
+ right: [ x1, y1, x2, y2, toX, toY ]
2904
+ }; else if (t >= 1) return {
2905
+ left: [ x1, y1, x2, y2, toX, toY ],
2906
+ right: null
2907
+ };
2908
+ const u = 1 - t;
2909
+ const leftX1 = fromX * u + x1 * t;
2910
+ const leftY1 = fromY * u + y1 * t;
2911
+ const P12x = x1 * u + x2 * t;
2912
+ const P12y = y1 * u + y2 * t;
2913
+ const rightX2 = x2 * u + toX * t;
2914
+ const rightY2 = y2 * u + toY * t;
2915
+ const leftX2 = leftX1 * u + P12x * t;
2916
+ const leftY2 = leftY1 * u + P12y * t;
2917
+ const rightX1 = P12x * u + rightX2 * t;
2918
+ const rightY1 = P12y * u + rightY2 * t;
2919
+ const leftX = leftX2 * u + rightX1 * t;
2920
+ const leftY = leftY2 * u + rightY1 * t;
2921
+ return {
2922
+ left: [ leftX1, leftY1, leftX2, leftY2, leftX, leftY ],
2923
+ right: [ rightX1, rightY1, rightX2, rightY2, toX, toY ]
2924
+ };
2899
2925
  }
2900
2926
  };
2901
2927
 
@@ -7053,7 +7079,7 @@ class LeafLevelList {
7053
7079
  }
7054
7080
  }
7055
7081
 
7056
- const version = "2.0.5";
7082
+ const version = "2.0.7";
7057
7083
 
7058
7084
  const debug$5 = Debug.get("LeaferCanvas");
7059
7085
 
@@ -7349,7 +7375,6 @@ defineKey(Platform, "devicePixelRatio", {
7349
7375
  const {userAgent: userAgent} = navigator;
7350
7376
 
7351
7377
  if (userAgent.indexOf("Firefox") > -1) {
7352
- Platform.conicGradientRotate90 = true;
7353
7378
  Platform.intWheelDeltaY = true;
7354
7379
  Platform.syncDomFont = true;
7355
7380
  } else if (/iPhone|iPad|iPod/.test(navigator.userAgent) || /Macintosh/.test(navigator.userAgent) && /Version\/[\d.]+.*Safari/.test(navigator.userAgent)) {
@@ -8737,6 +8762,7 @@ let UI = UI_1 = class UI extends Leaf {
8737
8762
  createProxyData() {
8738
8763
  return undefined;
8739
8764
  }
8765
+ clearProxyData() {}
8740
8766
  find(_condition, _options) {
8741
8767
  return Plugin.need("find");
8742
8768
  }
@@ -8777,7 +8803,7 @@ let UI = UI_1 = class UI extends Leaf {
8777
8803
  __updateRenderPath(updateCache) {
8778
8804
  const data = this.__;
8779
8805
  if (data.path) {
8780
- data.__pathForRender = data.cornerRadius ? PathCorner.smooth(data.path, data.cornerRadius, data.cornerSmoothing) : data.path;
8806
+ data.__pathForRender = data.cornerRadius || data.path.radius ? PathCorner.smooth(data.path, data.cornerRadius, data.cornerSmoothing) : data.path;
8781
8807
  if (data.__useArrow) PathArrow.addArrows(this, updateCache);
8782
8808
  } else data.__pathForRender && (data.__pathForRender = undefined);
8783
8809
  }
@@ -9610,7 +9636,7 @@ let Ellipse = class Ellipse extends UI {
9610
9636
  }
9611
9637
  }
9612
9638
  if (!open) closePath$2(path);
9613
- if (Platform.ellipseToCurve || data.__useArrow) data.path = this.getPath(true);
9639
+ if (Platform.ellipseToCurve || data.__useArrow || data.cornerRadius) data.path = this.getPath(true);
9614
9640
  }
9615
9641
  };
9616
9642
 
@@ -9636,7 +9662,7 @@ let Polygon = class Polygon extends UI {
9636
9662
  const data = this.__;
9637
9663
  const path = data.path = [];
9638
9664
  if (data.points) {
9639
- drawPoints$1(path, data.points, data.curve, true);
9665
+ drawPoints$1(path, data.points, data.curve, data.closed);
9640
9666
  } else {
9641
9667
  const {width: width, height: height, sides: sides} = data;
9642
9668
  const rx = width / 2, ry = height / 2;
@@ -12337,17 +12363,19 @@ function image(ui, attrName, paint, boxBounds, firstUse) {
12337
12363
  }
12338
12364
 
12339
12365
  function checkSizeAndCreateData(ui, attrName, paint, image, leafPaint, boxBounds) {
12366
+ let needUpdate = true;
12340
12367
  const data = ui.__;
12341
12368
  if (attrName === "fill" && !data.__naturalWidth) {
12342
12369
  data.__naturalWidth = image.width / data.pixelRatio;
12343
12370
  data.__naturalHeight = image.height / data.pixelRatio;
12344
12371
  if (data.__autoSide) {
12345
12372
  ui.forceUpdate("width");
12373
+ LeafHelper.updateBounds(ui);
12346
12374
  if (ui.__proxyData) {
12347
12375
  ui.setProxyAttr("width", data.width);
12348
12376
  ui.setProxyAttr("height", data.height);
12349
12377
  }
12350
- return false;
12378
+ needUpdate = false;
12351
12379
  }
12352
12380
  }
12353
12381
  if (!leafPaint.data) {
@@ -12357,7 +12385,7 @@ function checkSizeAndCreateData(ui, attrName, paint, image, leafPaint, boxBounds
12357
12385
  if (clip || opacity && opacity < 1 || blendMode) leafPaint.complex = clip ? 2 : true;
12358
12386
  }
12359
12387
  if (paint.filter) PaintImage.applyFilter(leafPaint, image, paint.filter, ui);
12360
- return true;
12388
+ return needUpdate;
12361
12389
  }
12362
12390
 
12363
12391
  function onLoad(ui, event) {
@@ -12807,10 +12835,10 @@ const realFrom = {};
12807
12835
  const realTo = {};
12808
12836
 
12809
12837
  function conicGradient(paint, box) {
12810
- let {from: from, to: to, type: type, opacity: opacity, stretch: stretch} = paint;
12838
+ let {from: from, to: to, type: type, opacity: opacity, rotation: rotation, stretch: stretch} = paint;
12811
12839
  toPoint(from || "center", box, realFrom);
12812
12840
  toPoint(to || "bottom", box, realTo);
12813
- const style = Platform.conicGradientSupport ? Platform.canvas.createConicGradient(0, realFrom.x, realFrom.y) : Platform.canvas.createRadialGradient(realFrom.x, realFrom.y, 0, realFrom.x, realFrom.y, getDistance(realFrom, realTo));
12841
+ const style = Platform.conicGradientSupport ? Platform.canvas.createConicGradient(rotation ? rotation * OneRadian : 0, realFrom.x, realFrom.y) : Platform.canvas.createRadialGradient(realFrom.x, realFrom.y, 0, realFrom.x, realFrom.y, getDistance(realFrom, realTo));
12814
12842
  const data = {
12815
12843
  type: type,
12816
12844
  style: style