leafer-ui 2.2.10 → 2.3.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.
@@ -470,7 +470,7 @@ function getMatrixData() {
470
470
 
471
471
  const {sin: sin$5, cos: cos$5, acos: acos, sqrt: sqrt$3} = Math;
472
472
 
473
- const {float: float$3} = MathHelper;
473
+ const {float: float$4} = MathHelper;
474
474
 
475
475
  const tempPoint$5 = {};
476
476
 
@@ -721,12 +721,12 @@ const MatrixHelper = {
721
721
  const cosR = c / scaleY;
722
722
  rotation = PI_2 - (d > 0 ? acos(-cosR) : -acos(cosR));
723
723
  }
724
- const cosR = float$3(cos$5(rotation));
724
+ const cosR = float$4(cos$5(rotation));
725
725
  const sinR = sin$5(rotation);
726
- scaleX = float$3(scaleX), scaleY = float$3(scaleY);
727
- skewX = cosR ? float$3((c / scaleY + sinR) / cosR / OneRadian, 9) : 0;
728
- skewY = cosR ? float$3((b / scaleX - sinR) / cosR / OneRadian, 9) : 0;
729
- rotation = float$3(rotation / OneRadian);
726
+ scaleX = float$4(scaleX), scaleY = float$4(scaleY);
727
+ skewX = cosR ? float$4((c / scaleY + sinR) / cosR / OneRadian, 9) : 0;
728
+ skewY = cosR ? float$4((b / scaleX - sinR) / cosR / OneRadian, 9) : 0;
729
+ rotation = float$4(rotation / OneRadian);
730
730
  } else {
731
731
  scaleX = a;
732
732
  scaleY = d;
@@ -770,7 +770,7 @@ const MatrixHelper = {
770
770
 
771
771
  const M$6 = MatrixHelper;
772
772
 
773
- const {float: float$2} = MathHelper;
773
+ const {float: float$3} = MathHelper;
774
774
 
775
775
  const {toInnerPoint: toInnerPoint$2, toOuterPoint: toOuterPoint$3} = MatrixHelper;
776
776
 
@@ -916,7 +916,7 @@ const PointHelper = {
916
916
  return points;
917
917
  },
918
918
  isSame(t, point, quick) {
919
- return quick ? t.x === point.x && t.y === point.y : float$2(t.x) === float$2(point.x) && float$2(t.y) === float$2(point.y);
919
+ return quick ? t.x === point.x && t.y === point.y : float$3(t.x) === float$3(point.x) && float$3(t.y) === float$3(point.y);
920
920
  },
921
921
  reset(t) {
922
922
  t.x = t.y = 0;
@@ -1272,7 +1272,7 @@ const {tempPointBounds: tempPointBounds$1, setPoint: setPoint$2, addPoint: addPo
1272
1272
 
1273
1273
  const {toOuterPoint: toOuterPoint$2} = MatrixHelper;
1274
1274
 
1275
- const {float: float$1, fourNumber: fourNumber} = MathHelper;
1275
+ const {float: float$2, fourNumber: fourNumber} = MathHelper;
1276
1276
 
1277
1277
  const {floor: floor$1, ceil: ceil$1} = Math;
1278
1278
 
@@ -1447,10 +1447,10 @@ const BoundsHelper = {
1447
1447
  }
1448
1448
  },
1449
1449
  float(t, maxLength) {
1450
- t.x = float$1(t.x, maxLength);
1451
- t.y = float$1(t.y, maxLength);
1452
- t.width = float$1(t.width, maxLength);
1453
- t.height = float$1(t.height, maxLength);
1450
+ t.x = float$2(t.x, maxLength);
1451
+ t.y = float$2(t.y, maxLength);
1452
+ t.width = float$2(t.width, maxLength);
1453
+ t.height = float$2(t.height, maxLength);
1454
1454
  },
1455
1455
  add(t, bounds, isPoint) {
1456
1456
  right$1 = t.x + t.width;
@@ -3742,6 +3742,8 @@ const {getCenterX: getCenterX, getCenterY: getCenterY} = PointHelper;
3742
3742
 
3743
3743
  const {arcTo: arcTo} = PathCommandDataHelper;
3744
3744
 
3745
+ const {float: float$1} = MathHelper;
3746
+
3745
3747
  const PathCorner = {
3746
3748
  smooth(data, cornerRadius, _cornerSmoothing) {
3747
3749
  let command, lastCommand, commandLen, startXIndex, startYIndex, smoothLen;
@@ -3782,7 +3784,8 @@ const PathCorner = {
3782
3784
  break;
3783
3785
 
3784
3786
  case Z:
3785
- arcTo(smooth, x, y, startX, startY, cornerRadius, lastX, lastY, three);
3787
+ if (float$1(x) === float$1(startX) && float$1(y) === float$1(startY)) x = lastX,
3788
+ y = lastY; else arcTo(smooth, x, y, startX, startY, cornerRadius, lastX, lastY, three);
3786
3789
  break;
3787
3790
 
3788
3791
  default:
@@ -4607,39 +4610,44 @@ function doVisible(leaf, key, value, oldValue) {
4607
4610
  }
4608
4611
  }
4609
4612
 
4613
+ function sortParentChange(parent) {
4614
+ parent.__layout.childrenSortChange();
4615
+ if (parent.__.flow) parent.__layout.boxChange();
4616
+ }
4617
+
4610
4618
  function sortType(defaultValue) {
4611
4619
  return decorateLeafAttr(defaultValue, key => attr({
4612
4620
  set(value) {
4613
4621
  if (this.__setAttr(key, value)) {
4614
- this.waitParent(() => {
4615
- const {parent: parent} = this;
4616
- parent.__layout.childrenSortChange();
4617
- if (parent.__.flow) parent.__layout.boxChange();
4618
- });
4622
+ this.waitParentChange(sortParentChange);
4619
4623
  }
4620
4624
  }
4621
4625
  }));
4622
4626
  }
4623
4627
 
4628
+ function maskParentChange(parent) {
4629
+ parent.__updateMask();
4630
+ }
4631
+
4624
4632
  function maskType(defaultValue, updateSelf) {
4625
4633
  return decorateLeafAttr(defaultValue, key => attr({
4626
4634
  set(value) {
4627
4635
  if (this.__setAttr(key, value)) {
4628
4636
  this.__layout.boxChanged || this.__layout.boxChange();
4629
- updateSelf ? this.__updateMask() : this.waitParent(() => {
4630
- this.parent.__updateMask(value);
4631
- });
4637
+ updateSelf ? this.__updateMask() : this.waitParentChange(maskParentChange);
4632
4638
  }
4633
4639
  }
4634
4640
  }));
4635
4641
  }
4636
4642
 
4643
+ function eraserParentChange(parent) {
4644
+ parent.__updateEraser();
4645
+ }
4646
+
4637
4647
  function eraserType(defaultValue) {
4638
4648
  return decorateLeafAttr(defaultValue, key => attr({
4639
4649
  set(value) {
4640
- this.__setAttr(key, value) && this.waitParent(() => {
4641
- this.parent.__updateEraser(value);
4642
- });
4650
+ this.__setAttr(key, value) && this.waitParentChange(eraserParentChange);
4643
4651
  }
4644
4652
  }));
4645
4653
  }
@@ -5017,10 +5025,11 @@ const LeafHelper = {
5017
5025
  hasOffset(t) {
5018
5026
  return t.offsetX || t.offsetY;
5019
5027
  },
5020
- hasParent(p, parent) {
5028
+ hasParent(p, parent, minLevel) {
5021
5029
  if (!parent) return false;
5022
5030
  while (p) {
5023
5031
  if (parent === p) return true;
5032
+ if (minLevel && p.__level === minLevel) return;
5024
5033
  p = p.parent;
5025
5034
  }
5026
5035
  },
@@ -5038,6 +5047,10 @@ const LeafHelper = {
5038
5047
  }
5039
5048
  };
5040
5049
 
5050
+ function isTrackChanges(leafer) {
5051
+ return leafer && leafer.config.trackChanges;
5052
+ }
5053
+
5041
5054
  const L = LeafHelper;
5042
5055
 
5043
5056
  const {updateAllMatrix: updateAllMatrix$3, updateMatrix: updateMatrix$1, updateAllWorldOpacity: updateAllWorldOpacity, updateAllChange: updateAllChange$1, updateChange: updateChange} = L;
@@ -5092,6 +5105,16 @@ const BranchHelper = {
5092
5105
  sort(a, b) {
5093
5106
  return a.__.zIndex === b.__.zIndex ? a.__tempNumber - b.__tempNumber : a.__.zIndex - b.__.zIndex;
5094
5107
  },
5108
+ zIndex(branch, child, index) {
5109
+ const {children: children} = branch, before = children[index - 1], after = children[index];
5110
+ if (before && after) {
5111
+ if (child.zIndex < before.zIndex || child.zIndex > after.zIndex) child.zIndex = (before.zIndex + after.zIndex) / 2;
5112
+ } else if (before) {
5113
+ if (child.zIndex < before.zIndex) child.zIndex = before.zIndex + 1;
5114
+ } else if (after) {
5115
+ if (child.zIndex > after.zIndex) child.zIndex = after.zIndex - 1;
5116
+ }
5117
+ },
5095
5118
  pushAllChildBranch(branch, leafList) {
5096
5119
  branch.__tempNumber = 1;
5097
5120
  if (branch.__.__childBranchNumber) {
@@ -6058,7 +6081,7 @@ const LeafDataProxy = {
6058
6081
  },
6059
6082
  emitPropertyEvent(type, name, oldValue, newValue) {
6060
6083
  const {leafer: leafer} = this;
6061
- if (leafer.config.trackChanges || leafer.zoomLayer === this) {
6084
+ if (isTrackChanges(leafer) || leafer.zoomLayer === this) {
6062
6085
  const event = new PropertyEvent(type, this, name, oldValue, newValue);
6063
6086
  this.isLeafer || this.hasEvent(type) && this.emitEvent(event);
6064
6087
  leafer.emitEvent(event);
@@ -6473,6 +6496,11 @@ let Leaf = class Leaf {
6473
6496
  this.__hasMask = this.__hasEraser = null;
6474
6497
  this.forceUpdate();
6475
6498
  }
6499
+ waitParentChange(item) {
6500
+ this.__parentChange || (this.__parentChange = []);
6501
+ if (!this.__parentChange.includes(item)) this.__parentChange.push(item);
6502
+ if (this.parent) item(this.parent, this);
6503
+ }
6476
6504
  waitParent(item, bind) {
6477
6505
  if (bind) item = item.bind(bind);
6478
6506
  this.parent ? item() : this.on(ChildEvent.ADD, item, "once");
@@ -6508,7 +6536,6 @@ let Leaf = class Leaf {
6508
6536
  }
6509
6537
  }
6510
6538
  __bindFrame(frame) {
6511
- if (this.isFrame && frame !== null) frame = this;
6512
6539
  this.frame = frame;
6513
6540
  if (this.isBranch) {
6514
6541
  const {children: children} = this;
@@ -6560,8 +6587,8 @@ let Leaf = class Leaf {
6560
6587
  __extraUpdate() {
6561
6588
  if (this.leaferIsReady) this.leafer.layouter.addExtra(this);
6562
6589
  }
6563
- __updateEraser(value) {
6564
- this.__hasEraser = value ? true : this.children.some(item => item.__.eraser);
6590
+ __updateEraser() {
6591
+ this.__hasEraser = this.children.some(item => item.__.eraser);
6565
6592
  }
6566
6593
  __renderEraser(canvas, options) {
6567
6594
  canvas.save();
@@ -6570,7 +6597,7 @@ let Leaf = class Leaf {
6570
6597
  canvas.clearRect(r.x, r.y, r.width, r.height);
6571
6598
  canvas.restore();
6572
6599
  }
6573
- __updateMask(_value) {
6600
+ __updateMask() {
6574
6601
  const hasMask = this.children.some(item => item.__.mask && item.__.visible && item.__.opacity);
6575
6602
  this.__hasMask = this.__.maskskip ? hasMask && 0 : hasMask;
6576
6603
  }
@@ -6819,13 +6846,17 @@ let Branch = class Branch extends Leaf {
6819
6846
  }
6820
6847
  if (child.parent) child.parent.remove(child);
6821
6848
  child.parent = this;
6822
- noIndex ? this.children.push(child) : this.children.splice(index, 0, child);
6849
+ if (noIndex) this.children.push(child); else {
6850
+ BranchHelper.zIndex(this, child, index);
6851
+ this.children.splice(index, 0, child);
6852
+ }
6823
6853
  if (child.isBranch) this.__.__childBranchNumber = (this.__.__childBranchNumber || 0) + 1;
6824
6854
  const childLayout = child.__layout;
6825
6855
  childLayout.boxChanged || childLayout.boxChange();
6826
6856
  childLayout.matrixChanged || childLayout.matrixChange();
6857
+ if (child.__parentChange) child.__parentChange.forEach(item => item(this, child));
6827
6858
  if (child.__bubbleMap) child.__emitLifeEvent(ChildEvent.ADD);
6828
- if (this.isFrame) child.__bindFrame(this);
6859
+ if (this.frame) child.__bindFrame(this.frame);
6829
6860
  if (this.leafer) {
6830
6861
  child.__bindLeafer(this.leafer);
6831
6862
  if (this.leafer.created) this.__emitChildEvent(ChildEvent.ADD, child);
@@ -6885,11 +6916,11 @@ let Branch = class Branch extends Leaf {
6885
6916
  if (this.leafer.hitCanvasManager) this.leafer.hitCanvasManager.clear();
6886
6917
  }
6887
6918
  }
6888
- if (this.isFrame) child.__bindFrame(null);
6919
+ if (child.frame && !child.isFrame) child.__bindFrame(null);
6889
6920
  }
6890
6921
  __emitChildEvent(type, child) {
6891
6922
  const {leafer: leafer} = this;
6892
- if (leafer.config.trackChanges || leafer.zoomLayer === this) {
6923
+ if (isTrackChanges(leafer) || leafer.zoomLayer === this) {
6893
6924
  const event = new ChildEvent(type, child, this);
6894
6925
  if (this.hasEvent(type) && !this.isLeafer) this.emitEvent(event);
6895
6926
  leafer.emitEvent(event);
@@ -7046,7 +7077,13 @@ class LeafLevelList {
7046
7077
  }
7047
7078
  }
7048
7079
 
7049
- const version = "2.2.10";
7080
+ const version = "2.3.0";
7081
+
7082
+ if (typeof globalThis !== "undefined") {
7083
+ const globalLeafer = globalThis.Leafer || (globalThis.Leafer = {});
7084
+ globalLeafer.version = version;
7085
+ globalLeafer.Plugin = Plugin;
7086
+ }
7050
7087
 
7051
7088
  const debug$5 = Debug.get("LeaferCanvas");
7052
7089
 
@@ -8192,6 +8229,17 @@ function zoomLayerType() {
8192
8229
  };
8193
8230
  }
8194
8231
 
8232
+ function frameType() {
8233
+ return (target, key) => {
8234
+ defineKey(target, key, {
8235
+ set(_value) {},
8236
+ get() {
8237
+ return this;
8238
+ }
8239
+ });
8240
+ };
8241
+ }
8242
+
8195
8243
  function createAttr(defaultValue) {
8196
8244
  return (target, key) => {
8197
8245
  defineKey(target, key, createDescriptor(key, defaultValue));
@@ -9595,6 +9643,8 @@ let Frame = class Frame extends Box {
9595
9643
  }
9596
9644
  };
9597
9645
 
9646
+ __decorate([ frameType() ], Frame.prototype, "frame", void 0);
9647
+
9598
9648
  __decorate([ dataProcessor(FrameData) ], Frame.prototype, "__", void 0);
9599
9649
 
9600
9650
  __decorate([ surfaceType("#FFFFFF") ], Frame.prototype, "fill", void 0);
@@ -13696,4 +13746,4 @@ Object.assign(Creator, {
13696
13746
 
13697
13747
  useCanvas();
13698
13748
 
13699
- export { AlignHelper, Answer, App, AroundHelper, AutoBounds, BezierHelper, Bounds, BoundsEvent, BoundsHelper, Box, BoxData, Branch, BranchHelper, BranchRender, Canvas, CanvasData, CanvasManager, ChildEvent, ColorConvert, Creator, Cursor, DataHelper, Debug, Direction4, Direction9, DragBoundsHelper, DragEvent$1 as DragEvent, Dragger, DropEvent, Effect, Ellipse, EllipseData, EllipseHelper, Event, EventCreator, Eventer, Export, FileHelper, Filter, FourNumberHelper, Frame, FrameData, Group, GroupData, HitCanvasManager, Image$1 as Image, ImageData, ImageEvent, ImageManager, IncrementId, Interaction, InteractionBase, InteractionHelper, KeyEvent, Keyboard, LayoutEvent, Layouter, LayouterHelper, Leaf, LeafBounds, LeafBoundsHelper, LeafData, LeafDataProxy, LeafEventer, LeafHelper, LeafLayout, LeafLevelList, LeafList, LeafMatrix, LeafRender, Leafer, LeaferCanvas, LeaferCanvasBase, LeaferData, LeaferEvent, LeaferFilm, LeaferImage, LeaferVideo, Line, LineData, MathHelper, Matrix, MatrixHelper, MoveEvent, MyDragEvent, MyImage, MyPointerEvent, MyTouchEvent, NeedConvertToCanvasCommandMap, OneRadian, PI2, PI_2, Paint, PaintGradient, PaintImage, Path, PathArrow, PathBounds, PathCommandDataHelper, PathCommandMap, PathCommandNodeHelper, PathConvert, PathCorner, PathCreator, PathData, PathDrawer, PathHelper, PathNodeHandleType, PathNumberCommandLengthMap, PathNumberCommandMap, Pen, PenData, Picker, Platform, Plugin, Point, PointHelper, PointerButton, PointerEvent$1 as PointerEvent, Polygon, PolygonData, PropertyEvent, Rect, RectData, RectHelper, RectRender, RenderEvent, Renderer, ResizeEvent, Resource, RotateEvent, Run, Selector, Star, StarData, State, StringNumberMap, SwipeEvent, TaskItem, TaskProcessor, Text, TextConvert, TextData, TouchEvent, Transition, TwoPointBoundsHelper, UI, UIBounds, UICreator, UIData, UIEvent, UIRender, UnitConvert, UnitConvertHelper, WaitHelper, WatchEvent, Watcher, ZoomEvent, affectRenderBoundsType, affectStrokeBoundsType, attr, autoLayoutType, boundsType, canvasPatch, canvasSizeAttrs, createAttr, createDescriptor, cursorType, dataProcessor, dataType, decorateLeafAttr, defineDataProcessor, defineKey, defineLeafAttr, dimType, doBoundsType, doStrokeType, doSurfaceType, effectType, emptyData, eraserType, extraPropertyEventMap, getBoundsData, getDescriptor, getMatrixData, getPointData, hitType, isArray, isData, isEmptyData, isFinite, isNull, isNumber, isObject, isString, isUndefined, layoutProcessor, leaferTransformAttrMap, maskType, naturalBoundsType, opacityType, path, pathInputType, pathType, pen, positionType, registerPointsCurve, registerUI, registerUIEvent, resizeType, rewrite, rewriteAble, rotationType, scaleType, scrollType, sortType, strokeType, surfaceType, tempBounds$2 as tempBounds, tempMatrix$2 as tempMatrix, tempPoint$4 as tempPoint, tryToNumber, useCanvas, useModule, version, visibleType, zoomLayerType };
13749
+ export { AlignHelper, Answer, App, AroundHelper, AutoBounds, BezierHelper, Bounds, BoundsEvent, BoundsHelper, Box, BoxData, Branch, BranchHelper, BranchRender, Canvas, CanvasData, CanvasManager, ChildEvent, ColorConvert, Creator, Cursor, DataHelper, Debug, Direction4, Direction9, DragBoundsHelper, DragEvent$1 as DragEvent, Dragger, DropEvent, Effect, Ellipse, EllipseData, EllipseHelper, Event, EventCreator, Eventer, Export, FileHelper, Filter, FourNumberHelper, Frame, FrameData, Group, GroupData, HitCanvasManager, Image$1 as Image, ImageData, ImageEvent, ImageManager, IncrementId, Interaction, InteractionBase, InteractionHelper, KeyEvent, Keyboard, LayoutEvent, Layouter, LayouterHelper, Leaf, LeafBounds, LeafBoundsHelper, LeafData, LeafDataProxy, LeafEventer, LeafHelper, LeafLayout, LeafLevelList, LeafList, LeafMatrix, LeafRender, Leafer, LeaferCanvas, LeaferCanvasBase, LeaferData, LeaferEvent, LeaferFilm, LeaferImage, LeaferVideo, Line, LineData, MathHelper, Matrix, MatrixHelper, MoveEvent, MyDragEvent, MyImage, MyPointerEvent, MyTouchEvent, NeedConvertToCanvasCommandMap, OneRadian, PI2, PI_2, Paint, PaintGradient, PaintImage, Path, PathArrow, PathBounds, PathCommandDataHelper, PathCommandMap, PathCommandNodeHelper, PathConvert, PathCorner, PathCreator, PathData, PathDrawer, PathHelper, PathNodeHandleType, PathNumberCommandLengthMap, PathNumberCommandMap, Pen, PenData, Picker, Platform, Plugin, Point, PointHelper, PointerButton, PointerEvent$1 as PointerEvent, Polygon, PolygonData, PropertyEvent, Rect, RectData, RectHelper, RectRender, RenderEvent, Renderer, ResizeEvent, Resource, RotateEvent, Run, Selector, Star, StarData, State, StringNumberMap, SwipeEvent, TaskItem, TaskProcessor, Text, TextConvert, TextData, TouchEvent, Transition, TwoPointBoundsHelper, UI, UIBounds, UICreator, UIData, UIEvent, UIRender, UnitConvert, UnitConvertHelper, WaitHelper, WatchEvent, Watcher, ZoomEvent, affectRenderBoundsType, affectStrokeBoundsType, attr, autoLayoutType, boundsType, canvasPatch, canvasSizeAttrs, createAttr, createDescriptor, cursorType, dataProcessor, dataType, decorateLeafAttr, defineDataProcessor, defineKey, defineLeafAttr, dimType, doBoundsType, doStrokeType, doSurfaceType, effectType, emptyData, eraserType, extraPropertyEventMap, frameType, getBoundsData, getDescriptor, getMatrixData, getPointData, hitType, isArray, isData, isEmptyData, isFinite, isNull, isNumber, isObject, isString, isTrackChanges, isUndefined, layoutProcessor, leaferTransformAttrMap, maskType, naturalBoundsType, opacityType, path, pathInputType, pathType, pen, positionType, registerPointsCurve, registerUI, registerUIEvent, resizeType, rewrite, rewriteAble, rotationType, scaleType, scrollType, sortType, strokeType, surfaceType, tempBounds$2 as tempBounds, tempMatrix$2 as tempMatrix, tempPoint$4 as tempPoint, tryToNumber, useCanvas, useModule, version, visibleType, zoomLayerType };