leafer-ui 2.2.0 → 2.2.2

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.
@@ -4531,11 +4531,15 @@ function affectRenderBoundsType(defaultValue) {
4531
4531
  function surfaceType(defaultValue) {
4532
4532
  return decorateLeafAttr(defaultValue, key => attr({
4533
4533
  set(value) {
4534
- this.__setAttr(key, value) && (this.__layout.surfaceChanged || this.__layout.surfaceChange());
4534
+ this.__setAttr(key, value) && doSurfaceType(this);
4535
4535
  }
4536
4536
  }));
4537
4537
  }
4538
4538
 
4539
+ function doSurfaceType(leaf) {
4540
+ leaf.__layout.surfaceChanged || leaf.__layout.surfaceChange();
4541
+ }
4542
+
4539
4543
  function dimType(defaultValue) {
4540
4544
  return decorateLeafAttr(defaultValue, key => attr({
4541
4545
  set(value) {
@@ -4601,12 +4605,12 @@ function sortType(defaultValue) {
4601
4605
  }));
4602
4606
  }
4603
4607
 
4604
- function maskType(defaultValue) {
4608
+ function maskType(defaultValue, updateSelf) {
4605
4609
  return decorateLeafAttr(defaultValue, key => attr({
4606
4610
  set(value) {
4607
4611
  if (this.__setAttr(key, value)) {
4608
4612
  this.__layout.boxChanged || this.__layout.boxChange();
4609
- this.waitParent(() => {
4613
+ updateSelf ? this.__updateMask() : this.waitParent(() => {
4610
4614
  this.parent.__updateMask(value);
4611
4615
  });
4612
4616
  }
@@ -6258,7 +6262,8 @@ const BranchRender = {
6258
6262
  if (this.__worldOpacity && hasSize(nowWorld)) {
6259
6263
  const data = this.__;
6260
6264
  if (data.__useDim) {
6261
- if (data.dim) options.dimOpacity = data.dim === true ? .2 : data.dim; else if (data.bright && !options.topRendering) return options.topList.add(this); else if (data.dimskip) options.dimOpacity && (options.dimOpacity = 0);
6265
+ if (data.bright && !options.topRendering) return options.topList.add(this);
6266
+ if (data.dim) options.dimOpacity = data.dim === true ? .2 : data.dim; else if (data.dimskip) options.dimOpacity && (options.dimOpacity = 0);
6262
6267
  }
6263
6268
  if (data.__single && !this.isBranchLeaf) {
6264
6269
  if (data.eraser === "path") return this.__renderEraser(canvas, options);
@@ -6282,6 +6287,7 @@ const BranchRender = {
6282
6287
  child = children[i];
6283
6288
  excludeRenderBounds$1(child, options) || (child.__hasComplex ? LeafHelper.renderComplex(child, canvas, options) : child.__render(canvas, options));
6284
6289
  }
6290
+ if (this.__hasMask === 0) this.__rerenderMask(canvas, options);
6285
6291
  }
6286
6292
  },
6287
6293
  __clip(canvas, options) {
@@ -6498,11 +6504,19 @@ let Leaf = class Leaf {
6498
6504
  updateLayout() {
6499
6505
  this.__layout.update();
6500
6506
  }
6501
- forceUpdate(attrName) {
6502
- if (isUndefined(attrName)) attrName = "width"; else if (attrName === "surface") attrName = "blendMode";
6503
- const value = this.__.__getInput(attrName);
6504
- this.__[attrName] = isUndefined(value) ? null : undefined;
6505
- this[attrName] = value;
6507
+ forceUpdate(typeOrAttrName) {
6508
+ let quick;
6509
+ if (!typeOrAttrName || typeOrAttrName === "bounds") doBoundsType(this), quick = true; else if (typeOrAttrName === "surface") doSurfaceType(this),
6510
+ quick = true; else if (typeOrAttrName === "stroke") doStrokeType(this), quick = true;
6511
+ if (quick) {
6512
+ const {leafer: leafer} = this;
6513
+ return leafer && leafer.watcher && leafer.watcher.__onAttrChange({
6514
+ target: this
6515
+ });
6516
+ }
6517
+ const value = this.__.__getInput(typeOrAttrName);
6518
+ this.__[typeOrAttrName] = isUndefined(value) ? null : undefined;
6519
+ this[typeOrAttrName] = value;
6506
6520
  }
6507
6521
  forceRender(_bounds, _sync) {
6508
6522
  this.forceUpdate("surface");
@@ -6521,7 +6535,8 @@ let Leaf = class Leaf {
6521
6535
  canvas.restore();
6522
6536
  }
6523
6537
  __updateMask(_value) {
6524
- this.__hasMask = this.children.some(item => item.__.mask && item.__.visible && item.__.opacity);
6538
+ const hasMask = this.children.some(item => item.__.mask && item.__.visible && item.__.opacity);
6539
+ this.__hasMask = this.__.maskskip ? hasMask && 0 : hasMask;
6525
6540
  }
6526
6541
  __getNowWorld(options) {
6527
6542
  if (options.matrix) {
@@ -6990,7 +7005,7 @@ class LeafLevelList {
6990
7005
  }
6991
7006
  }
6992
7007
 
6993
- const version = "2.2.0";
7008
+ const version = "2.2.1";
6994
7009
 
6995
7010
  const debug$5 = Debug.get("LeaferCanvas");
6996
7011
 
@@ -7902,7 +7917,7 @@ class Picker {
7902
7917
  for (let i = 0, len = list.length; i < len; i++) {
7903
7918
  find = list[i];
7904
7919
  if (ignoreHittable || LeafHelper.worldHittable(find)) {
7905
- this.hitChild(find, point);
7920
+ this.hitChild(find, find.hitThrough ? this.point : point);
7906
7921
  if (findList.length) {
7907
7922
  if (find.isBranchLeaf && list.some(item => item !== find && LeafHelper.hasParent(item, find))) {
7908
7923
  findList.reset();
@@ -7915,7 +7930,7 @@ class Picker {
7915
7930
  }
7916
7931
  if (bottomList) {
7917
7932
  for (let i = 0, len = bottomList.length; i < len; i++) {
7918
- this.hitChild(bottomList[i].target, this.point, bottomList[i].proxy);
7933
+ this.hitChild(bottomList[i].target, this.point, undefined, bottomList[i].proxy);
7919
7934
  if (findList.length) return findList.list[0];
7920
7935
  }
7921
7936
  }
@@ -7973,42 +7988,38 @@ class Picker {
7973
7988
  hitBranch(branch) {
7974
7989
  this.eachFind(branch.children, branch.__onlyHitMask);
7975
7990
  }
7976
- eachFind(children, hitMask) {
7991
+ eachFind(children, onlyHitMask) {
7977
7992
  let child, hit, data;
7978
7993
  const {point: point} = this, len = children.length;
7979
7994
  for (let i = len - 1; i > -1; i--) {
7980
7995
  child = children[i], data = child.__;
7981
- if (!data.visible || hitMask && !data.mask) continue;
7996
+ if (!data.visible || onlyHitMask && !data.mask) continue;
7982
7997
  hit = hitRadiusPoint$1(child.__world, data.hitRadius ? copyRadiusPoint$1(tempPoint$1, point, data.hitRadius) : point);
7983
7998
  if (child.isBranch) {
7984
7999
  if (hit || child.__ignoreHitWorld) {
7985
8000
  if (child.isBranchLeaf && data.__clipAfterFill && !child.__hitWorld(point, true)) continue;
7986
8001
  if (child.topChildren) this.eachFind(child.topChildren, false);
7987
8002
  this.eachFind(child.children, child.__onlyHitMask);
7988
- if (child.isBranchLeaf) this.hitChild(child, point);
8003
+ if (child.isBranchLeaf) this.hitChild(child, point, onlyHitMask);
7989
8004
  }
7990
8005
  } else {
7991
- if (hit) this.hitChild(child, point);
8006
+ if (hit) this.hitChild(child, point, onlyHitMask);
7992
8007
  }
7993
8008
  }
7994
8009
  }
7995
- hitChild(child, point, proxy) {
8010
+ hitChild(child, point, onlyHitMask, proxy) {
7996
8011
  if (this.exclude && this.exclude.has(child)) return;
7997
- if (child.__hitWorld(point)) {
7998
- const {parent: parent} = child;
7999
- if (parent && parent.__hasMask && !child.__.mask) {
8000
- let findMasks = [], item;
8001
- const {children: children} = parent;
8002
- for (let i = 0, len = children.length; i < len; i++) {
8003
- item = children[i];
8004
- if (item.__.mask) findMasks.push(item);
8005
- if (item === child) {
8006
- if (findMasks && !findMasks.every(value => value.__hitWorld(point))) return;
8007
- break;
8008
- }
8009
- }
8012
+ if (child.__hitWorld(point, onlyHitMask && child.mask === "path" ? true : undefined)) {
8013
+ const {parent: parent, mask: mask} = child;
8014
+ if (parent && parent.__hasMask && mask && !(mask === "clipping" || mask === "clipping-path")) {
8015
+ if (!parent.children.some(item => !item.mask && item.__hitWorld(point))) return;
8010
8016
  }
8011
- this.findList.add(proxy || child);
8017
+ const leaf = proxy || child, {hitThrough: hitThrough} = child, {findList: findList} = this;
8018
+ if (hitThrough) {
8019
+ const index = findList.list.findIndex(item => item[hitThrough] === child[hitThrough]);
8020
+ if (index > 0) return findList.addAt(leaf, index);
8021
+ }
8022
+ findList.add(leaf);
8012
8023
  }
8013
8024
  }
8014
8025
  clear() {
@@ -8870,6 +8881,8 @@ __decorate([ dataType(false) ], UI.prototype, "editable", void 0);
8870
8881
 
8871
8882
  __decorate([ hitType(true) ], UI.prototype, "hittable", void 0);
8872
8883
 
8884
+ __decorate([ hitType() ], UI.prototype, "hitThrough", void 0);
8885
+
8873
8886
  __decorate([ hitType("path") ], UI.prototype, "hitFill", void 0);
8874
8887
 
8875
8888
  __decorate([ strokeType("path") ], UI.prototype, "hitStroke", void 0);
@@ -10703,6 +10716,7 @@ class Dragger {
10703
10716
  }
10704
10717
  dragEnd(data) {
10705
10718
  if (!this.dragging && !this.moving) return;
10719
+ setTimeout(() => this.interaction.pointerMove(data));
10706
10720
  if (this.checkDragEndAnimate(data)) return;
10707
10721
  this.dragEndReal(data);
10708
10722
  }
@@ -12295,7 +12309,7 @@ function checkSizeAndCreateData(ui, attrName, paint, image, leafPaint, boxBounds
12295
12309
  data.__naturalWidth = image.width / data.pixelRatio;
12296
12310
  data.__naturalHeight = image.height / data.pixelRatio;
12297
12311
  if (data.__autoSide) {
12298
- ui.forceUpdate("width");
12312
+ ui.forceUpdate();
12299
12313
  LeafHelper.updateBounds(ui);
12300
12314
  ui.__layout.boundsChanged = true;
12301
12315
  if (ui.__proxyData) {
@@ -13575,4 +13589,4 @@ Object.assign(Creator, {
13575
13589
 
13576
13590
  useCanvas();
13577
13591
 
13578
- 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, 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, 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, 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 };
13592
+ 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, 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, 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 };