leafer-ui 1.10.0 → 1.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/web.js CHANGED
@@ -831,9 +831,10 @@ var LeaferUI = function(exports) {
831
831
  getAtan2(t, to) {
832
832
  return atan2$2(to.y - t.y, to.x - t.x);
833
833
  },
834
- getDistancePoint(t, to, distance, changeTo) {
834
+ getDistancePoint(t, to, distance, changeTo, fromTo) {
835
835
  const r = getAtan2(t, to);
836
- to = changeTo ? to : {};
836
+ fromTo && (t = to);
837
+ changeTo || (to = {});
837
838
  to.x = t.x + cos$4(r) * distance;
838
839
  to.y = t.y + sin$4(r) * distance;
839
840
  return to;
@@ -843,6 +844,9 @@ var LeaferUI = function(exports) {
843
844
  if (isObject(originPoints[0])) points = [], originPoints.forEach(p => points.push(p.x, p.y));
844
845
  return points;
845
846
  },
847
+ isSame(t, point) {
848
+ return t.x === point.x && t.y === point.y;
849
+ },
846
850
  reset(t) {
847
851
  P$5.reset(t);
848
852
  }
@@ -904,8 +908,8 @@ var LeaferUI = function(exports) {
904
908
  getDistance(to) {
905
909
  return PointHelper.getDistance(this, to);
906
910
  }
907
- getDistancePoint(to, distance, changeTo) {
908
- return new Point(PointHelper.getDistancePoint(this, to, distance, changeTo));
911
+ getDistancePoint(to, distance, changeTo, fromTo) {
912
+ return new Point(PointHelper.getDistancePoint(this, to, distance, changeTo, fromTo));
909
913
  }
910
914
  getAngle(to) {
911
915
  return PointHelper.getAngle(this, to);
@@ -913,6 +917,9 @@ var LeaferUI = function(exports) {
913
917
  getAtan2(to) {
914
918
  return PointHelper.getAtan2(this, to);
915
919
  }
920
+ isSame(point) {
921
+ return PointHelper.isSame(this, point);
922
+ }
916
923
  reset() {
917
924
  PointHelper.reset(this);
918
925
  return this;
@@ -2689,6 +2696,14 @@ var LeaferUI = function(exports) {
2689
2696
  }
2690
2697
  }
2691
2698
  };
2699
+ const PathCommandNodeHelper = {
2700
+ toCommand(_nodes) {
2701
+ return [];
2702
+ },
2703
+ toNode(_data) {
2704
+ return [];
2705
+ }
2706
+ };
2692
2707
  const {M: M$4, m: m, L: L$5, l: l, H: H, h: h, V: V, v: v, C: C$3, c: c, S: S, s: s, Q: Q$3, q: q, T: T, t: t, A: A, a: a, Z: Z$4, z: z, N: N$3, D: D$4, X: X$3, G: G$3, F: F$4, O: O$3, P: P$3, U: U$3} = PathCommandMap;
2693
2708
  const {rect: rect$3, roundRect: roundRect$2, arcTo: arcTo$3, arc: arc$3, ellipse: ellipse$4, quadraticCurveTo: quadraticCurveTo$1} = BezierHelper;
2694
2709
  const {ellipticalArc: ellipticalArc} = EllipseHelper;
@@ -2962,30 +2977,34 @@ var LeaferUI = function(exports) {
2962
2977
  return data;
2963
2978
  },
2964
2979
  objectToCanvasData(list) {
2965
- const data = [];
2966
- list.forEach(item => {
2967
- switch (item.name) {
2968
- case "M":
2969
- data.push(M$4, item.x, item.y);
2970
- break;
2980
+ if (list[0].name.length > 1) {
2981
+ return PathCommandNodeHelper.toCommand(list);
2982
+ } else {
2983
+ const data = [];
2984
+ list.forEach(item => {
2985
+ switch (item.name) {
2986
+ case "M":
2987
+ data.push(M$4, item.x, item.y);
2988
+ break;
2971
2989
 
2972
- case "L":
2973
- data.push(L$5, item.x, item.y);
2974
- break;
2990
+ case "L":
2991
+ data.push(L$5, item.x, item.y);
2992
+ break;
2975
2993
 
2976
- case "C":
2977
- data.push(C$3, item.x1, item.y1, item.x2, item.y2, item.x, item.y);
2978
- break;
2994
+ case "C":
2995
+ data.push(C$3, item.x1, item.y1, item.x2, item.y2, item.x, item.y);
2996
+ break;
2979
2997
 
2980
- case "Q":
2981
- data.push(Q$3, item.x1, item.y1, item.x, item.y);
2982
- break;
2998
+ case "Q":
2999
+ data.push(Q$3, item.x1, item.y1, item.x, item.y);
3000
+ break;
2983
3001
 
2984
- case "Z":
2985
- data.push(Z$4);
2986
- }
2987
- });
2988
- return data;
3002
+ case "Z":
3003
+ data.push(Z$4);
3004
+ }
3005
+ });
3006
+ return data;
3007
+ }
2989
3008
  },
2990
3009
  copyData(data, old, index, count) {
2991
3010
  for (let i = index, end = index + count; i < end; i++) {
@@ -6428,7 +6447,7 @@ var LeaferUI = function(exports) {
6428
6447
  this.levelMap = null;
6429
6448
  }
6430
6449
  }
6431
- const version = "1.10.0";
6450
+ const version = "1.11.0";
6432
6451
  const debug$5 = Debug.get("LeaferCanvas");
6433
6452
  class LeaferCanvas extends LeaferCanvasBase {
6434
6453
  set zIndex(zIndex) {
@@ -7550,7 +7569,9 @@ var LeaferUI = function(exports) {
7550
7569
  };
7551
7570
  const {parse: parse, objectToCanvasData: objectToCanvasData} = PathConvert;
7552
7571
  const {stintSet: stintSet$3} = DataHelper, {hasTransparent: hasTransparent$2} = ColorConvert;
7553
- const emptyPaint = {};
7572
+ const emptyPaint = {
7573
+ originPaint: {}
7574
+ };
7554
7575
  const debug$2 = Debug.get("UIData");
7555
7576
  class UIData extends LeafData {
7556
7577
  get scale() {
@@ -8063,7 +8084,7 @@ var LeaferUI = function(exports) {
8063
8084
  drawer.roundRect(x, y, width, height, isNumber(cornerRadius) ? [ cornerRadius ] : cornerRadius);
8064
8085
  } else drawer.rect(x, y, width, height);
8065
8086
  }
8066
- drawImagePlaceholder(_image, canvas, renderOptions) {
8087
+ drawImagePlaceholder(_paint, canvas, renderOptions) {
8067
8088
  Paint.fill(this.__.placeholderColor, this, canvas, renderOptions);
8068
8089
  }
8069
8090
  animate(keyframe, _options, _type, _isTemp) {
@@ -8655,7 +8676,7 @@ var LeaferUI = function(exports) {
8655
8676
  const data = this.__, layout = this.__layout, {renderBounds: renderBounds, boxBounds: boxBounds} = layout, {overflow: overflow} = data;
8656
8677
  const childrenRenderBounds = layout.childrenRenderBounds || (layout.childrenRenderBounds = getBoundsData());
8657
8678
  super.__updateRenderBounds(childrenRenderBounds);
8658
- if (isScrollMode = overflow.includes("scroll")) {
8679
+ if (isScrollMode = overflow && overflow.includes("scroll")) {
8659
8680
  add(childrenRenderBounds, boxBounds);
8660
8681
  scroll(childrenRenderBounds, data);
8661
8682
  }
@@ -9664,10 +9685,12 @@ var LeaferUI = function(exports) {
9664
9685
  if (throughPath) this.dragData.throughPath = throughPath;
9665
9686
  this.dragData.path = path;
9666
9687
  if (this.moving) {
9688
+ data.moving = true;
9667
9689
  this.dragData.moveType = "drag";
9668
9690
  interaction.emit(exports.MoveEvent.BEFORE_MOVE, this.dragData);
9669
9691
  interaction.emit(exports.MoveEvent.MOVE, this.dragData);
9670
9692
  } else if (this.dragging) {
9693
+ data.dragging = true;
9671
9694
  this.dragReal();
9672
9695
  interaction.emit(exports.DragEvent.BEFORE_DRAG, this.dragData);
9673
9696
  interaction.emit(exports.DragEvent.DRAG, this.dragData);
@@ -9772,13 +9795,9 @@ var LeaferUI = function(exports) {
9772
9795
  if (!path && !data.path) return;
9773
9796
  let leaf;
9774
9797
  data.type = type;
9775
- if (path) {
9776
- data = Object.assign(Object.assign({}, data), {
9777
- path: path
9778
- });
9779
- } else {
9780
- path = data.path;
9781
- }
9798
+ if (path) data = Object.assign(Object.assign({}, data), {
9799
+ path: path
9800
+ }); else path = data.path;
9782
9801
  data.target = path.indexAt(0);
9783
9802
  try {
9784
9803
  for (let i = path.length - 1; i > -1; i--) {
@@ -10818,30 +10837,31 @@ var LeaferUI = function(exports) {
10818
10837
  fillPathOrText(ui, canvas, renderOptions);
10819
10838
  }
10820
10839
  function fills(fills, ui, canvas, renderOptions) {
10821
- let item;
10840
+ let item, originPaint, countImage;
10822
10841
  for (let i = 0, len = fills.length; i < len; i++) {
10823
- item = fills[i];
10842
+ item = fills[i], originPaint = item.originPaint;
10824
10843
  if (item.image) {
10844
+ countImage ? countImage++ : countImage = 1;
10825
10845
  if (PaintImage.checkImage(item, !ui.__.__font, ui, canvas, renderOptions)) continue;
10826
10846
  if (!item.style) {
10827
- if (!i && item.image.isPlacehold) ui.drawImagePlaceholder(item.image, canvas, renderOptions);
10847
+ if (countImage === 1 && item.image.isPlacehold) ui.drawImagePlaceholder(item, canvas, renderOptions);
10828
10848
  continue;
10829
10849
  }
10830
10850
  }
10831
10851
  canvas.fillStyle = item.style;
10832
- if (item.transform || item.scaleFixed) {
10852
+ if (item.transform || originPaint.scaleFixed) {
10833
10853
  canvas.save();
10834
10854
  if (item.transform) canvas.transform(item.transform);
10835
- if (item.scaleFixed) {
10855
+ if (originPaint.scaleFixed) {
10836
10856
  const {scaleX: scaleX, scaleY: scaleY} = ui.getRenderScaleData(true);
10837
- if (item.scaleFixed === true || item.scaleFixed === "zoom-in" && scaleX > 1 && scaleY > 1) canvas.scale(1 / scaleX, 1 / scaleY);
10857
+ if (originPaint.scaleFixed === true || originPaint.scaleFixed === "zoom-in" && scaleX > 1 && scaleY > 1) canvas.scale(1 / scaleX, 1 / scaleY);
10838
10858
  }
10839
- if (item.blendMode) canvas.blendMode = item.blendMode;
10859
+ if (originPaint.blendMode) canvas.blendMode = originPaint.blendMode;
10840
10860
  fillPathOrText(ui, canvas, renderOptions);
10841
10861
  canvas.restore();
10842
10862
  } else {
10843
- if (item.blendMode) {
10844
- canvas.saveBlendMode(item.blendMode);
10863
+ if (originPaint.blendMode) {
10864
+ canvas.saveBlendMode(originPaint.blendMode);
10845
10865
  fillPathOrText(ui, canvas, renderOptions);
10846
10866
  canvas.restoreBlendMode();
10847
10867
  } else fillPathOrText(ui, canvas, renderOptions);
@@ -10982,8 +11002,8 @@ var LeaferUI = function(exports) {
10982
11002
  const {strokeStyle: strokeStyle} = item;
10983
11003
  strokeStyle ? canvas.setStroke(item.style, data.__getRealStrokeWidth(strokeStyle) * strokeWidthScale, data, strokeStyle) : canvas.setStroke(item.style, data.__strokeWidth * strokeWidthScale, data);
10984
11004
  } else canvas.strokeStyle = item.style;
10985
- if (item.blendMode) {
10986
- canvas.saveBlendMode(item.blendMode);
11005
+ if (item.originPaint.blendMode) {
11006
+ canvas.saveBlendMode(item.originPaint.blendMode);
10987
11007
  isText ? Paint.drawTextStroke(ui, canvas, renderOptions) : canvas.stroke();
10988
11008
  canvas.restoreBlendMode();
10989
11009
  } else {
@@ -11074,61 +11094,62 @@ var LeaferUI = function(exports) {
11074
11094
  if (leafPaints.some(item => item.image)) isAlphaPixel = true;
11075
11095
  isTransparent = true;
11076
11096
  }
11077
- }
11078
- if (attrName === "fill") {
11079
- stintSet(data, "__isAlphaPixelFill", isAlphaPixel);
11080
- stintSet(data, "__isTransparentFill", isTransparent);
11097
+ if (attrName === "fill") {
11098
+ stintSet(data, "__isAlphaPixelFill", isAlphaPixel);
11099
+ stintSet(data, "__isTransparentFill", isTransparent);
11100
+ } else {
11101
+ stintSet(data, "__isAlphaPixelStroke", isAlphaPixel);
11102
+ stintSet(data, "__isTransparentStroke", isTransparent);
11103
+ stintSet(data, "__hasMultiStrokeStyle", maxChildStrokeWidth);
11104
+ }
11081
11105
  } else {
11082
- stintSet(data, "__isAlphaPixelStroke", isAlphaPixel);
11083
- stintSet(data, "__isTransparentStroke", isTransparent);
11084
- stintSet(data, "__hasMultiStrokeStyle", maxChildStrokeWidth);
11106
+ data.__removePaint(attrName, false);
11085
11107
  }
11086
11108
  }
11087
11109
  function getLeafPaint(attrName, paint, ui) {
11088
11110
  if (!isObject(paint) || paint.visible === false || paint.opacity === 0) return undefined;
11089
- let data;
11111
+ let leafPaint;
11090
11112
  const {boxBounds: boxBounds} = ui.__layout;
11091
11113
  switch (paint.type) {
11092
11114
  case "image":
11093
- data = PaintImage.image(ui, attrName, paint, boxBounds, !recycleMap || !recycleMap[paint.url]);
11115
+ leafPaint = PaintImage.image(ui, attrName, paint, boxBounds, !recycleMap || !recycleMap[paint.url]);
11094
11116
  break;
11095
11117
 
11096
11118
  case "linear":
11097
- data = PaintGradient.linearGradient(paint, boxBounds);
11119
+ leafPaint = PaintGradient.linearGradient(paint, boxBounds);
11098
11120
  break;
11099
11121
 
11100
11122
  case "radial":
11101
- data = PaintGradient.radialGradient(paint, boxBounds);
11123
+ leafPaint = PaintGradient.radialGradient(paint, boxBounds);
11102
11124
  break;
11103
11125
 
11104
11126
  case "angular":
11105
- data = PaintGradient.conicGradient(paint, boxBounds);
11127
+ leafPaint = PaintGradient.conicGradient(paint, boxBounds);
11106
11128
  break;
11107
11129
 
11108
11130
  case "solid":
11109
11131
  const {type: type, color: color, opacity: opacity} = paint;
11110
- data = {
11132
+ leafPaint = {
11111
11133
  type: type,
11112
11134
  style: ColorConvert.string(color, opacity)
11113
11135
  };
11114
11136
  break;
11115
11137
 
11116
11138
  default:
11117
- if (!isUndefined(paint.r)) data = {
11139
+ if (!isUndefined(paint.r)) leafPaint = {
11118
11140
  type: "solid",
11119
11141
  style: ColorConvert.string(paint)
11120
11142
  };
11121
11143
  }
11122
- if (data) {
11123
- if (isString(data.style) && hasTransparent$1(data.style)) data.isTransparent = true;
11144
+ if (leafPaint) {
11145
+ leafPaint.originPaint = paint;
11146
+ if (isString(leafPaint.style) && hasTransparent$1(leafPaint.style)) leafPaint.isTransparent = true;
11124
11147
  if (paint.style) {
11125
11148
  if (paint.style.strokeWidth === 0) return undefined;
11126
- data.strokeStyle = paint.style;
11149
+ leafPaint.strokeStyle = paint.style;
11127
11150
  }
11128
- if (paint.editing) data.editing = paint.editing;
11129
- if (paint.blendMode) data.blendMode = paint.blendMode;
11130
11151
  }
11131
- return data;
11152
+ return leafPaint;
11132
11153
  }
11133
11154
  const PaintModule = {
11134
11155
  compute: compute,
@@ -11246,10 +11267,6 @@ var LeaferUI = function(exports) {
11246
11267
  const tempScaleData = {};
11247
11268
  const tempImage = {};
11248
11269
  function createData(leafPaint, image, paint, box) {
11249
- const {changeful: changeful, sync: sync, scaleFixed: scaleFixed} = paint;
11250
- if (changeful) leafPaint.changeful = changeful;
11251
- if (sync) leafPaint.sync = sync;
11252
- if (scaleFixed) leafPaint.scaleFixed = scaleFixed;
11253
11270
  leafPaint.data = PaintImage.getPatternData(paint, box, image);
11254
11271
  }
11255
11272
  function getPatternData(paint, box, image) {
@@ -11460,14 +11477,14 @@ var LeaferUI = function(exports) {
11460
11477
  }
11461
11478
  function checkImage(paint, drawImage, ui, canvas, renderOptions) {
11462
11479
  const {scaleX: scaleX, scaleY: scaleY} = PaintImage.getImageRenderScaleData(paint, ui, canvas, renderOptions);
11463
- const {image: image, data: data} = paint, {exporting: exporting} = renderOptions;
11480
+ const {image: image, data: data, originPaint: originPaint} = paint, {exporting: exporting} = renderOptions;
11464
11481
  if (!data || paint.patternId === scaleX + "-" + scaleY && !exporting) {
11465
11482
  return false;
11466
11483
  } else {
11467
11484
  if (drawImage) {
11468
11485
  if (data.repeat) {
11469
11486
  drawImage = false;
11470
- } else if (!(paint.changeful || Platform.name === "miniapp" && ResizeEvent.isResizing(ui) || exporting)) {
11487
+ } else if (!(originPaint.changeful || Platform.name === "miniapp" && ResizeEvent.isResizing(ui) || exporting)) {
11471
11488
  drawImage = Platform.image.isLarge(image, scaleX, scaleY);
11472
11489
  }
11473
11490
  }
@@ -11479,15 +11496,15 @@ var LeaferUI = function(exports) {
11479
11496
  PaintImage.drawImage(paint, scaleX, scaleY, ui, canvas, renderOptions);
11480
11497
  return true;
11481
11498
  } else {
11482
- if (!paint.style || paint.sync || exporting) PaintImage.createPattern(paint, ui, canvas, renderOptions); else PaintImage.createPatternTask(paint, ui, canvas, renderOptions);
11499
+ if (!paint.style || originPaint.sync || exporting) PaintImage.createPattern(paint, ui, canvas, renderOptions); else PaintImage.createPatternTask(paint, ui, canvas, renderOptions);
11483
11500
  return false;
11484
11501
  }
11485
11502
  }
11486
11503
  }
11487
11504
  function drawImage(paint, _imageScaleX, _imageScaleY, ui, canvas, _renderOptions) {
11488
- const {data: data, image: image, blendMode: blendMode} = paint, {opacity: opacity, transform: transform} = data, view = image.getFull(data.filters), u = ui.__;
11505
+ const {data: data, image: image} = paint, {blendMode: blendMode} = paint.originPaint, {opacity: opacity, transform: transform} = data, view = image.getFull(data.filters), u = ui.__;
11489
11506
  let {width: width, height: height} = image, clipUI;
11490
- if (transform && !transform.onlyScale || (clipUI = u.path || u.cornerRadius) || opacity || blendMode) {
11507
+ if ((clipUI = transform && !transform.onlyScale || u.path || u.cornerRadius) || opacity || blendMode) {
11491
11508
  canvas.save();
11492
11509
  clipUI && canvas.clipUI(ui);
11493
11510
  blendMode && (canvas.blendMode = blendMode);
@@ -11501,7 +11518,7 @@ var LeaferUI = function(exports) {
11501
11518
  }
11502
11519
  }
11503
11520
  function getImageRenderScaleData(paint, ui, canvas, _renderOptions) {
11504
- const scaleData = ui.getRenderScaleData(true, paint.scaleFixed), {data: data} = paint;
11521
+ const scaleData = ui.getRenderScaleData(true, paint.originPaint.scaleFixed), {data: data} = paint;
11505
11522
  if (canvas) {
11506
11523
  const {pixelRatio: pixelRatio} = canvas;
11507
11524
  scaleData.scaleX *= pixelRatio;
@@ -12417,6 +12434,7 @@ var LeaferUI = function(exports) {
12417
12434
  exports.PathBounds = PathBounds;
12418
12435
  exports.PathCommandDataHelper = PathCommandDataHelper;
12419
12436
  exports.PathCommandMap = PathCommandMap;
12437
+ exports.PathCommandNodeHelper = PathCommandNodeHelper;
12420
12438
  exports.PathConvert = PathConvert;
12421
12439
  exports.PathCorner = PathCorner;
12422
12440
  exports.PathCreator = PathCreator;