@leafer/worker 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/worker.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$5(r) * distance;
838
839
  to.y = t.y + sin$5(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$7.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$9, m: m, L: L$9, l: l, H: H, h: h, V: V, v: v, C: C$7, c: c, S: S, s: s, Q: Q$6, q: q, T: T, t: t, A: A, a: a, Z: Z$7, z: z, N: N$5, D: D$6, X: X$5, G: G$5, F: F$6, O: O$6, P: P$5, U: U$5} = 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$9, 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$9, item.x, item.y);
2988
+ break;
2971
2989
 
2972
- case "L":
2973
- data.push(L$9, item.x, item.y);
2974
- break;
2990
+ case "L":
2991
+ data.push(L$9, item.x, item.y);
2992
+ break;
2975
2993
 
2976
- case "C":
2977
- data.push(C$7, item.x1, item.y1, item.x2, item.y2, item.x, item.y);
2978
- break;
2994
+ case "C":
2995
+ data.push(C$7, item.x1, item.y1, item.x2, item.y2, item.x, item.y);
2996
+ break;
2979
2997
 
2980
- case "Q":
2981
- data.push(Q$6, item.x1, item.y1, item.x, item.y);
2982
- break;
2998
+ case "Q":
2999
+ data.push(Q$6, item.x1, item.y1, item.x, item.y);
3000
+ break;
2983
3001
 
2984
- case "Z":
2985
- data.push(Z$7);
2986
- }
2987
- });
2988
- return data;
3002
+ case "Z":
3003
+ data.push(Z$7);
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
  class LeaferCanvas extends LeaferCanvasBase {
6433
6452
  get allowBackgroundColor() {
6434
6453
  return true;
@@ -7344,7 +7363,9 @@ var LeaferUI = function(exports) {
7344
7363
  };
7345
7364
  const {parse: parse, objectToCanvasData: objectToCanvasData} = PathConvert;
7346
7365
  const {stintSet: stintSet$3} = DataHelper, {hasTransparent: hasTransparent$2} = ColorConvert;
7347
- const emptyPaint = {};
7366
+ const emptyPaint = {
7367
+ originPaint: {}
7368
+ };
7348
7369
  const debug$5 = Debug.get("UIData");
7349
7370
  class UIData extends LeafData {
7350
7371
  get scale() {
@@ -7857,7 +7878,7 @@ var LeaferUI = function(exports) {
7857
7878
  drawer.roundRect(x, y, width, height, isNumber(cornerRadius) ? [ cornerRadius ] : cornerRadius);
7858
7879
  } else drawer.rect(x, y, width, height);
7859
7880
  }
7860
- drawImagePlaceholder(_image, canvas, renderOptions) {
7881
+ drawImagePlaceholder(_paint, canvas, renderOptions) {
7861
7882
  Paint.fill(this.__.placeholderColor, this, canvas, renderOptions);
7862
7883
  }
7863
7884
  animate(keyframe, _options, _type, _isTemp) {
@@ -8449,7 +8470,7 @@ var LeaferUI = function(exports) {
8449
8470
  const data = this.__, layout = this.__layout, {renderBounds: renderBounds, boxBounds: boxBounds} = layout, {overflow: overflow} = data;
8450
8471
  const childrenRenderBounds = layout.childrenRenderBounds || (layout.childrenRenderBounds = getBoundsData());
8451
8472
  super.__updateRenderBounds(childrenRenderBounds);
8452
- if (isScrollMode = overflow.includes("scroll")) {
8473
+ if (isScrollMode = overflow && overflow.includes("scroll")) {
8453
8474
  add(childrenRenderBounds, boxBounds);
8454
8475
  scroll(childrenRenderBounds, data);
8455
8476
  }
@@ -9458,10 +9479,12 @@ var LeaferUI = function(exports) {
9458
9479
  if (throughPath) this.dragData.throughPath = throughPath;
9459
9480
  this.dragData.path = path;
9460
9481
  if (this.moving) {
9482
+ data.moving = true;
9461
9483
  this.dragData.moveType = "drag";
9462
9484
  interaction.emit(exports.MoveEvent.BEFORE_MOVE, this.dragData);
9463
9485
  interaction.emit(exports.MoveEvent.MOVE, this.dragData);
9464
9486
  } else if (this.dragging) {
9487
+ data.dragging = true;
9465
9488
  this.dragReal();
9466
9489
  interaction.emit(exports.DragEvent.BEFORE_DRAG, this.dragData);
9467
9490
  interaction.emit(exports.DragEvent.DRAG, this.dragData);
@@ -9566,13 +9589,9 @@ var LeaferUI = function(exports) {
9566
9589
  if (!path && !data.path) return;
9567
9590
  let leaf;
9568
9591
  data.type = type;
9569
- if (path) {
9570
- data = Object.assign(Object.assign({}, data), {
9571
- path: path
9572
- });
9573
- } else {
9574
- path = data.path;
9575
- }
9592
+ if (path) data = Object.assign(Object.assign({}, data), {
9593
+ path: path
9594
+ }); else path = data.path;
9576
9595
  data.target = path.indexAt(0);
9577
9596
  try {
9578
9597
  for (let i = path.length - 1; i > -1; i--) {
@@ -10288,30 +10307,31 @@ var LeaferUI = function(exports) {
10288
10307
  fillPathOrText(ui, canvas, renderOptions);
10289
10308
  }
10290
10309
  function fills(fills, ui, canvas, renderOptions) {
10291
- let item;
10310
+ let item, originPaint, countImage;
10292
10311
  for (let i = 0, len = fills.length; i < len; i++) {
10293
- item = fills[i];
10312
+ item = fills[i], originPaint = item.originPaint;
10294
10313
  if (item.image) {
10314
+ countImage ? countImage++ : countImage = 1;
10295
10315
  if (PaintImage.checkImage(item, !ui.__.__font, ui, canvas, renderOptions)) continue;
10296
10316
  if (!item.style) {
10297
- if (!i && item.image.isPlacehold) ui.drawImagePlaceholder(item.image, canvas, renderOptions);
10317
+ if (countImage === 1 && item.image.isPlacehold) ui.drawImagePlaceholder(item, canvas, renderOptions);
10298
10318
  continue;
10299
10319
  }
10300
10320
  }
10301
10321
  canvas.fillStyle = item.style;
10302
- if (item.transform || item.scaleFixed) {
10322
+ if (item.transform || originPaint.scaleFixed) {
10303
10323
  canvas.save();
10304
10324
  if (item.transform) canvas.transform(item.transform);
10305
- if (item.scaleFixed) {
10325
+ if (originPaint.scaleFixed) {
10306
10326
  const {scaleX: scaleX, scaleY: scaleY} = ui.getRenderScaleData(true);
10307
- if (item.scaleFixed === true || item.scaleFixed === "zoom-in" && scaleX > 1 && scaleY > 1) canvas.scale(1 / scaleX, 1 / scaleY);
10327
+ if (originPaint.scaleFixed === true || originPaint.scaleFixed === "zoom-in" && scaleX > 1 && scaleY > 1) canvas.scale(1 / scaleX, 1 / scaleY);
10308
10328
  }
10309
- if (item.blendMode) canvas.blendMode = item.blendMode;
10329
+ if (originPaint.blendMode) canvas.blendMode = originPaint.blendMode;
10310
10330
  fillPathOrText(ui, canvas, renderOptions);
10311
10331
  canvas.restore();
10312
10332
  } else {
10313
- if (item.blendMode) {
10314
- canvas.saveBlendMode(item.blendMode);
10333
+ if (originPaint.blendMode) {
10334
+ canvas.saveBlendMode(originPaint.blendMode);
10315
10335
  fillPathOrText(ui, canvas, renderOptions);
10316
10336
  canvas.restoreBlendMode();
10317
10337
  } else fillPathOrText(ui, canvas, renderOptions);
@@ -10452,8 +10472,8 @@ var LeaferUI = function(exports) {
10452
10472
  const {strokeStyle: strokeStyle} = item;
10453
10473
  strokeStyle ? canvas.setStroke(item.style, data.__getRealStrokeWidth(strokeStyle) * strokeWidthScale, data, strokeStyle) : canvas.setStroke(item.style, data.__strokeWidth * strokeWidthScale, data);
10454
10474
  } else canvas.strokeStyle = item.style;
10455
- if (item.blendMode) {
10456
- canvas.saveBlendMode(item.blendMode);
10475
+ if (item.originPaint.blendMode) {
10476
+ canvas.saveBlendMode(item.originPaint.blendMode);
10457
10477
  isText ? Paint.drawTextStroke(ui, canvas, renderOptions) : canvas.stroke();
10458
10478
  canvas.restoreBlendMode();
10459
10479
  } else {
@@ -10544,61 +10564,62 @@ var LeaferUI = function(exports) {
10544
10564
  if (leafPaints.some(item => item.image)) isAlphaPixel = true;
10545
10565
  isTransparent = true;
10546
10566
  }
10547
- }
10548
- if (attrName === "fill") {
10549
- stintSet(data, "__isAlphaPixelFill", isAlphaPixel);
10550
- stintSet(data, "__isTransparentFill", isTransparent);
10567
+ if (attrName === "fill") {
10568
+ stintSet(data, "__isAlphaPixelFill", isAlphaPixel);
10569
+ stintSet(data, "__isTransparentFill", isTransparent);
10570
+ } else {
10571
+ stintSet(data, "__isAlphaPixelStroke", isAlphaPixel);
10572
+ stintSet(data, "__isTransparentStroke", isTransparent);
10573
+ stintSet(data, "__hasMultiStrokeStyle", maxChildStrokeWidth);
10574
+ }
10551
10575
  } else {
10552
- stintSet(data, "__isAlphaPixelStroke", isAlphaPixel);
10553
- stintSet(data, "__isTransparentStroke", isTransparent);
10554
- stintSet(data, "__hasMultiStrokeStyle", maxChildStrokeWidth);
10576
+ data.__removePaint(attrName, false);
10555
10577
  }
10556
10578
  }
10557
10579
  function getLeafPaint(attrName, paint, ui) {
10558
10580
  if (!isObject(paint) || paint.visible === false || paint.opacity === 0) return undefined;
10559
- let data;
10581
+ let leafPaint;
10560
10582
  const {boxBounds: boxBounds} = ui.__layout;
10561
10583
  switch (paint.type) {
10562
10584
  case "image":
10563
- data = PaintImage.image(ui, attrName, paint, boxBounds, !recycleMap || !recycleMap[paint.url]);
10585
+ leafPaint = PaintImage.image(ui, attrName, paint, boxBounds, !recycleMap || !recycleMap[paint.url]);
10564
10586
  break;
10565
10587
 
10566
10588
  case "linear":
10567
- data = PaintGradient.linearGradient(paint, boxBounds);
10589
+ leafPaint = PaintGradient.linearGradient(paint, boxBounds);
10568
10590
  break;
10569
10591
 
10570
10592
  case "radial":
10571
- data = PaintGradient.radialGradient(paint, boxBounds);
10593
+ leafPaint = PaintGradient.radialGradient(paint, boxBounds);
10572
10594
  break;
10573
10595
 
10574
10596
  case "angular":
10575
- data = PaintGradient.conicGradient(paint, boxBounds);
10597
+ leafPaint = PaintGradient.conicGradient(paint, boxBounds);
10576
10598
  break;
10577
10599
 
10578
10600
  case "solid":
10579
10601
  const {type: type, color: color, opacity: opacity} = paint;
10580
- data = {
10602
+ leafPaint = {
10581
10603
  type: type,
10582
10604
  style: ColorConvert.string(color, opacity)
10583
10605
  };
10584
10606
  break;
10585
10607
 
10586
10608
  default:
10587
- if (!isUndefined(paint.r)) data = {
10609
+ if (!isUndefined(paint.r)) leafPaint = {
10588
10610
  type: "solid",
10589
10611
  style: ColorConvert.string(paint)
10590
10612
  };
10591
10613
  }
10592
- if (data) {
10593
- if (isString(data.style) && hasTransparent$1(data.style)) data.isTransparent = true;
10614
+ if (leafPaint) {
10615
+ leafPaint.originPaint = paint;
10616
+ if (isString(leafPaint.style) && hasTransparent$1(leafPaint.style)) leafPaint.isTransparent = true;
10594
10617
  if (paint.style) {
10595
10618
  if (paint.style.strokeWidth === 0) return undefined;
10596
- data.strokeStyle = paint.style;
10619
+ leafPaint.strokeStyle = paint.style;
10597
10620
  }
10598
- if (paint.editing) data.editing = paint.editing;
10599
- if (paint.blendMode) data.blendMode = paint.blendMode;
10600
10621
  }
10601
- return data;
10622
+ return leafPaint;
10602
10623
  }
10603
10624
  const PaintModule = {
10604
10625
  compute: compute,
@@ -10716,10 +10737,6 @@ var LeaferUI = function(exports) {
10716
10737
  const tempScaleData = {};
10717
10738
  const tempImage = {};
10718
10739
  function createData(leafPaint, image, paint, box) {
10719
- const {changeful: changeful, sync: sync, scaleFixed: scaleFixed} = paint;
10720
- if (changeful) leafPaint.changeful = changeful;
10721
- if (sync) leafPaint.sync = sync;
10722
- if (scaleFixed) leafPaint.scaleFixed = scaleFixed;
10723
10740
  leafPaint.data = PaintImage.getPatternData(paint, box, image);
10724
10741
  }
10725
10742
  function getPatternData(paint, box, image) {
@@ -10930,14 +10947,14 @@ var LeaferUI = function(exports) {
10930
10947
  }
10931
10948
  function checkImage(paint, drawImage, ui, canvas, renderOptions) {
10932
10949
  const {scaleX: scaleX, scaleY: scaleY} = PaintImage.getImageRenderScaleData(paint, ui, canvas, renderOptions);
10933
- const {image: image, data: data} = paint, {exporting: exporting} = renderOptions;
10950
+ const {image: image, data: data, originPaint: originPaint} = paint, {exporting: exporting} = renderOptions;
10934
10951
  if (!data || paint.patternId === scaleX + "-" + scaleY && !exporting) {
10935
10952
  return false;
10936
10953
  } else {
10937
10954
  if (drawImage) {
10938
10955
  if (data.repeat) {
10939
10956
  drawImage = false;
10940
- } else if (!(paint.changeful || Platform.name === "miniapp" && ResizeEvent.isResizing(ui) || exporting)) {
10957
+ } else if (!(originPaint.changeful || Platform.name === "miniapp" && ResizeEvent.isResizing(ui) || exporting)) {
10941
10958
  drawImage = Platform.image.isLarge(image, scaleX, scaleY);
10942
10959
  }
10943
10960
  }
@@ -10949,15 +10966,15 @@ var LeaferUI = function(exports) {
10949
10966
  PaintImage.drawImage(paint, scaleX, scaleY, ui, canvas, renderOptions);
10950
10967
  return true;
10951
10968
  } else {
10952
- if (!paint.style || paint.sync || exporting) PaintImage.createPattern(paint, ui, canvas, renderOptions); else PaintImage.createPatternTask(paint, ui, canvas, renderOptions);
10969
+ if (!paint.style || originPaint.sync || exporting) PaintImage.createPattern(paint, ui, canvas, renderOptions); else PaintImage.createPatternTask(paint, ui, canvas, renderOptions);
10953
10970
  return false;
10954
10971
  }
10955
10972
  }
10956
10973
  }
10957
10974
  function drawImage(paint, _imageScaleX, _imageScaleY, ui, canvas, _renderOptions) {
10958
- const {data: data, image: image, blendMode: blendMode} = paint, {opacity: opacity, transform: transform} = data, view = image.getFull(data.filters), u = ui.__;
10975
+ const {data: data, image: image} = paint, {blendMode: blendMode} = paint.originPaint, {opacity: opacity, transform: transform} = data, view = image.getFull(data.filters), u = ui.__;
10959
10976
  let {width: width, height: height} = image, clipUI;
10960
- if (transform && !transform.onlyScale || (clipUI = u.path || u.cornerRadius) || opacity || blendMode) {
10977
+ if ((clipUI = transform && !transform.onlyScale || u.path || u.cornerRadius) || opacity || blendMode) {
10961
10978
  canvas.save();
10962
10979
  clipUI && canvas.clipUI(ui);
10963
10980
  blendMode && (canvas.blendMode = blendMode);
@@ -10971,7 +10988,7 @@ var LeaferUI = function(exports) {
10971
10988
  }
10972
10989
  }
10973
10990
  function getImageRenderScaleData(paint, ui, canvas, _renderOptions) {
10974
- const scaleData = ui.getRenderScaleData(true, paint.scaleFixed), {data: data} = paint;
10991
+ const scaleData = ui.getRenderScaleData(true, paint.originPaint.scaleFixed), {data: data} = paint;
10975
10992
  if (canvas) {
10976
10993
  const {pixelRatio: pixelRatio} = canvas;
10977
10994
  scaleData.scaleX *= pixelRatio;
@@ -13708,6 +13725,9 @@ var LeaferUI = function(exports) {
13708
13725
  hasItem(item) {
13709
13726
  return this.leafList.has(item);
13710
13727
  }
13728
+ getItem(index) {
13729
+ return this.list[index || 0];
13730
+ }
13711
13731
  addItem(item) {
13712
13732
  if (!this.hasItem(item) && !item.locked) this.leafList.add(item), this.target = this.leafList.list;
13713
13733
  }
@@ -14502,6 +14522,7 @@ var LeaferUI = function(exports) {
14502
14522
  this._keyEvent = config.keyEvent;
14503
14523
  config.keyEvent = false;
14504
14524
  const div = this.editDom = document.createElement("div");
14525
+ div.classList.add("leafer-text-editor");
14505
14526
  const {style: style} = div;
14506
14527
  div.contentEditable = "true";
14507
14528
  style.position = "fixed";
@@ -14534,8 +14555,10 @@ var LeaferUI = function(exports) {
14534
14555
  range.selectNodeContents(div);
14535
14556
  } else {
14536
14557
  const node = div.childNodes[0];
14537
- range.setStartAfter(node);
14538
- range.setEndAfter(node);
14558
+ if (node) {
14559
+ range.setStartAfter(node);
14560
+ range.setEndAfter(node);
14561
+ }
14539
14562
  range.collapse(true);
14540
14563
  }
14541
14564
  selection.removeAllRanges();
@@ -15461,8 +15484,9 @@ var LeaferUI = function(exports) {
15461
15484
  set(value) {
15462
15485
  if (this.__setAttr(key, value)) {
15463
15486
  const data = this.__;
15464
- data.__useArrow = data.startArrow !== "none" || data.endArrow !== "none";
15465
15487
  doStrokeType(this);
15488
+ const useArrow = data.startArrow !== "none" || data.endArrow !== "none";
15489
+ if (useArrow || data.__useArrow !== useArrow) doBoundsType(this);
15466
15490
  }
15467
15491
  }
15468
15492
  }));
@@ -18524,6 +18548,7 @@ var LeaferUI = function(exports) {
18524
18548
  exports.PathBounds = PathBounds;
18525
18549
  exports.PathCommandDataHelper = PathCommandDataHelper;
18526
18550
  exports.PathCommandMap = PathCommandMap;
18551
+ exports.PathCommandNodeHelper = PathCommandNodeHelper;
18527
18552
  exports.PathConvert = PathConvert;
18528
18553
  exports.PathCorner = PathCorner;
18529
18554
  exports.PathCreator = PathCreator;