@leafer-ui/worker 1.6.7 → 1.7.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.
@@ -43,7 +43,7 @@ const IncrementId = {
43
43
  };
44
44
  const I$2 = IncrementId;
45
45
 
46
- const { round: round$3, pow: pow$1, PI: PI$4 } = Math;
46
+ const { round: round$3, pow: pow$1, PI: PI$3 } = Math;
47
47
  const MathHelper = {
48
48
  within(value, min, max) {
49
49
  if (typeof min === 'object')
@@ -139,9 +139,9 @@ const MathHelper = {
139
139
  function randInt(num) {
140
140
  return Math.round(Math.random() * num);
141
141
  }
142
- const OneRadian = PI$4 / 180;
143
- const PI2 = PI$4 * 2;
144
- const PI_2 = PI$4 / 2;
142
+ const OneRadian = PI$3 / 180;
143
+ const PI2 = PI$3 * 2;
144
+ const PI_2 = PI$3 / 2;
145
145
  function getPointData() { return { x: 0, y: 0 }; }
146
146
  function getBoundsData() { return { x: 0, y: 0, width: 0, height: 0 }; }
147
147
  function getMatrixData() { return { a: 1, b: 0, c: 0, d: 1, e: 0, f: 0 }; }
@@ -436,7 +436,7 @@ const MatrixHelper = {
436
436
  const M$6 = MatrixHelper;
437
437
 
438
438
  const { toInnerPoint: toInnerPoint$2, toOuterPoint: toOuterPoint$3 } = MatrixHelper;
439
- const { sin: sin$4, cos: cos$4, abs: abs$4, sqrt: sqrt$2, atan2: atan2$2, min: min$1, round: round$2, PI: PI$3 } = Math;
439
+ const { sin: sin$4, cos: cos$4, abs: abs$4, sqrt: sqrt$2, atan2: atan2$2, min: min$1, round: round$2 } = Math;
440
440
  const PointHelper = {
441
441
  defaultPoint: getPointData(),
442
442
  tempPoint: {},
@@ -549,10 +549,11 @@ const PointHelper = {
549
549
  getRadianFrom(fromX, fromY, originX, originY, toX, toY, toOriginX, toOriginY) {
550
550
  if (toOriginX === undefined)
551
551
  toOriginX = originX, toOriginY = originY;
552
- let fromAngle = atan2$2(fromY - originY, fromX - originX);
553
- let toAngle = atan2$2(toY - toOriginY, toX - toOriginX);
554
- const radian = toAngle - fromAngle;
555
- return radian < -PI$3 ? radian + PI2 : radian;
552
+ const a = fromX - originX;
553
+ const b = fromY - originY;
554
+ const c = toX - toOriginX;
555
+ const d = toY - toOriginY;
556
+ return Math.atan2(a * d - b * c, a * c + b * d);
556
557
  },
557
558
  getAtan2(t, to) {
558
559
  return atan2$2(to.y - t.y, to.x - t.x);
@@ -3339,7 +3340,7 @@ const { getCenterX, getCenterY } = PointHelper;
3339
3340
  const { arcTo } = PathCommandDataHelper;
3340
3341
  const PathCorner = {
3341
3342
  smooth(data, cornerRadius, _cornerSmoothing) {
3342
- let command, commandLen;
3343
+ let command, lastCommand, commandLen;
3343
3344
  let i = 0, x = 0, y = 0, startX = 0, startY = 0, secondX = 0, secondY = 0, lastX = 0, lastY = 0;
3344
3345
  const len = data.length;
3345
3346
  const smooth = [];
@@ -3377,8 +3378,10 @@ const PathCorner = {
3377
3378
  lastY = y;
3378
3379
  break;
3379
3380
  case Z:
3380
- arcTo(smooth, startX, startY, secondX, secondY, cornerRadius, lastX, lastY);
3381
- smooth.push(Z);
3381
+ if (lastCommand !== Z) {
3382
+ arcTo(smooth, startX, startY, secondX, secondY, cornerRadius, lastX, lastY);
3383
+ smooth.push(Z);
3384
+ }
3382
3385
  i += 1;
3383
3386
  break;
3384
3387
  default:
@@ -3387,6 +3390,7 @@ const PathCorner = {
3387
3390
  smooth.push(data[i + j]);
3388
3391
  i += commandLen;
3389
3392
  }
3393
+ lastCommand = command;
3390
3394
  }
3391
3395
  if (command !== Z) {
3392
3396
  smooth[1] = startX;
@@ -3883,12 +3887,12 @@ class LeaferImage {
3883
3887
  try {
3884
3888
  if (transform && pattern.setTransform) {
3885
3889
  pattern.setTransform(transform);
3886
- transform = null;
3890
+ transform = undefined;
3887
3891
  }
3888
3892
  }
3889
3893
  catch (_a) { }
3890
3894
  if (paint)
3891
- paint.transform = transform;
3895
+ DataHelper.stintSet(paint, 'transform', transform);
3892
3896
  return pattern;
3893
3897
  }
3894
3898
  destroy() {
@@ -3993,10 +3997,14 @@ function pathInputType(defaultValue) {
3993
3997
  }));
3994
3998
  }
3995
3999
  const pathType = boundsType;
3996
- function affectStrokeBoundsType(defaultValue) {
4000
+ function affectStrokeBoundsType(defaultValue, useStroke) {
3997
4001
  return decorateLeafAttr(defaultValue, (key) => attr({
3998
4002
  set(value) {
3999
- this.__setAttr(key, value) && doStrokeType(this);
4003
+ if (this.__setAttr(key, value)) {
4004
+ doStrokeType(this);
4005
+ if (useStroke)
4006
+ this.__.__useStroke = true;
4007
+ }
4000
4008
  }
4001
4009
  }));
4002
4010
  }
@@ -5422,6 +5430,8 @@ const LeafBounds = {
5422
5430
 
5423
5431
  const LeafRender = {
5424
5432
  __render(canvas, options) {
5433
+ if (options.shape)
5434
+ return this.__renderShape(canvas, options);
5425
5435
  if (this.__worldOpacity) {
5426
5436
  const data = this.__;
5427
5437
  canvas.setWorld(this.__nowWorld = this.__getNowWorld(options));
@@ -5431,12 +5441,10 @@ const LeafRender = {
5431
5441
  return this.__renderEraser(canvas, options);
5432
5442
  const tempCanvas = canvas.getSameCanvas(true, true);
5433
5443
  this.__draw(tempCanvas, options, canvas);
5434
- if (this.__worldFlipped) {
5444
+ if (this.__worldFlipped)
5435
5445
  canvas.copyWorldByReset(tempCanvas, this.__nowWorld, null, data.__blendMode, true);
5436
- }
5437
- else {
5446
+ else
5438
5447
  canvas.copyWorldToInner(tempCanvas, this.__nowWorld, this.__layout.renderBounds, data.__blendMode);
5439
- }
5440
5448
  tempCanvas.recycle(this.__nowWorld);
5441
5449
  }
5442
5450
  else {
@@ -5446,6 +5454,12 @@ const LeafRender = {
5446
5454
  Debug.drawBounds(this, canvas, options);
5447
5455
  }
5448
5456
  },
5457
+ __renderShape(canvas, options) {
5458
+ if (this.__worldOpacity) {
5459
+ canvas.setWorld(this.__nowWorld = this.__getNowWorld(options));
5460
+ this.__drawShape(canvas, options);
5461
+ }
5462
+ },
5449
5463
  __clip(canvas, options) {
5450
5464
  if (this.__worldOpacity) {
5451
5465
  canvas.setWorld(this.__nowWorld = this.__getNowWorld(options));
@@ -5865,7 +5879,8 @@ let Leaf = class Leaf {
5865
5879
  __drawFast(_canvas, _options) { }
5866
5880
  __draw(_canvas, _options, _originCanvas) { }
5867
5881
  __clip(_canvas, _options) { }
5868
- __renderShape(_canvas, _options, _ignoreFill, _ignoreStroke) { }
5882
+ __renderShape(_canvas, _options) { }
5883
+ __drawShape(_canvas, _options) { }
5869
5884
  __updateWorldOpacity() { }
5870
5885
  __updateChange() { }
5871
5886
  __drawPath(_canvas) { }
@@ -6233,7 +6248,7 @@ class LeafLevelList {
6233
6248
  }
6234
6249
  }
6235
6250
 
6236
- const version = "1.6.7";
6251
+ const version = "1.7.0";
6237
6252
 
6238
6253
  class LeaferCanvas extends LeaferCanvasBase {
6239
6254
  get allowBackgroundColor() { return true; }
@@ -7150,13 +7165,9 @@ class UIData extends LeafData {
7150
7165
  else
7151
7166
  return strokeWidth;
7152
7167
  }
7153
- get __hasStroke() { return this.stroke && this.strokeWidth; }
7154
- get __hasHalf() { const t = this; return (t.stroke && t.strokeAlign === 'center' && t.strokeWidth % 2) || undefined; }
7155
7168
  get __hasMultiPaint() {
7156
7169
  const t = this;
7157
- if ((t.__isFills && t.fill.length > 1) || (t.__isStrokes && t.stroke.length > 1) || t.__useEffect)
7158
- return true;
7159
- return t.fill && this.__hasStroke;
7170
+ return (t.fill && this.__useStroke) || (t.__isFills && t.fill.length > 1) || (t.__isStrokes && t.stroke.length > 1) || t.__useEffect;
7160
7171
  }
7161
7172
  get __clipAfterFill() { const t = this; return (t.cornerRadius || t.innerShadow || t.__pathInputed); }
7162
7173
  get __hasSurface() { const t = this; return (t.fill || t.stroke); }
@@ -7447,15 +7458,18 @@ const { stintSet: stintSet$1 } = DataHelper;
7447
7458
  const UIRender = {
7448
7459
  __updateChange() {
7449
7460
  const data = this.__;
7461
+ if (data.__useStroke) {
7462
+ const useStroke = data.__useStroke = !!(data.stroke && data.strokeWidth);
7463
+ stintSet$1(this.__world, 'half', useStroke && data.strokeAlign === 'center' && data.strokeWidth % 2);
7464
+ stintSet$1(data, '__fillAfterStroke', useStroke && data.strokeAlign === 'outside' && data.fill && !data.__isTransparentFill);
7465
+ }
7450
7466
  if (data.__useEffect) {
7451
7467
  const { shadow, fill, stroke } = data, otherEffect = data.innerShadow || data.blur || data.backgroundBlur || data.filter;
7452
7468
  stintSet$1(data, '__isFastShadow', shadow && !otherEffect && shadow.length < 2 && !shadow[0].spread && !(shadow[0].box && data.__isTransparentFill) && fill && !(fill instanceof Array && fill.length > 1) && (this.useFastShadow || !stroke || (stroke && data.strokeAlign === 'inside')));
7453
7469
  data.__useEffect = !!(shadow || otherEffect);
7454
7470
  }
7455
- stintSet$1(this.__world, 'half', data.__hasHalf);
7456
- stintSet$1(data, '__fillAfterStroke', data.stroke && data.strokeAlign === 'outside' && data.fill && !data.__isTransparentFill);
7457
7471
  data.__checkSingle();
7458
- stintSet$1(data, '__complex', data.__isFills || data.__isStrokes || data.cornerRadius || data.__useEffect);
7472
+ stintSet$1(data, '__complex', (data.__isFills || data.__isStrokes || data.cornerRadius || data.__useEffect));
7459
7473
  },
7460
7474
  __drawFast(canvas, options) {
7461
7475
  drawFast(this, canvas, options);
@@ -7513,18 +7527,15 @@ const UIRender = {
7513
7527
  this.__drawFast(canvas, options);
7514
7528
  }
7515
7529
  },
7516
- __renderShape(canvas, options, ignoreFill, ignoreStroke) {
7517
- if (this.__worldOpacity) {
7518
- canvas.setWorld(this.__nowWorld = this.__getNowWorld(options));
7519
- const { fill, stroke } = this.__;
7520
- this.__drawRenderPath(canvas);
7521
- if (fill && !ignoreFill)
7522
- this.__.__isAlphaPixelFill ? Paint.fills(fill, this, canvas) : Paint.fill('#000000', this, canvas);
7523
- if (this.__.__isCanvas)
7524
- this.__drawAfterFill(canvas, options);
7525
- if (stroke && !ignoreStroke)
7526
- this.__.__isAlphaPixelStroke ? Paint.strokes(stroke, this, canvas) : Paint.stroke('#000000', this, canvas);
7527
- }
7530
+ __drawShape(canvas, options) {
7531
+ this.__drawRenderPath(canvas);
7532
+ const data = this.__, { fill, stroke } = data;
7533
+ if (fill && !options.ignoreFill)
7534
+ data.__isAlphaPixelFill ? Paint.fills(fill, this, canvas) : Paint.fill('#000000', this, canvas);
7535
+ if (data.__isCanvas)
7536
+ this.__drawAfterFill(canvas, options);
7537
+ if (stroke && !options.ignoreStroke)
7538
+ data.__isAlphaPixelStroke ? Paint.strokes(stroke, this, canvas) : Paint.stroke('#000000', this, canvas);
7528
7539
  },
7529
7540
  __drawAfterFill(canvas, options) {
7530
7541
  if (this.__.__clipAfterFill) {
@@ -7649,12 +7660,14 @@ let UI = UI_1 = class UI extends Leaf {
7649
7660
  }
7650
7661
  }
7651
7662
  __updateRenderPath() {
7652
- if (this.__.path) {
7653
- const data = this.__;
7663
+ const data = this.__;
7664
+ if (data.path) {
7654
7665
  data.__pathForRender = data.cornerRadius ? PathCorner.smooth(data.path, data.cornerRadius, data.cornerSmoothing) : data.path;
7655
7666
  if (data.__useArrow)
7656
7667
  PathArrow.addArrows(this, !data.cornerRadius);
7657
7668
  }
7669
+ else
7670
+ data.__pathForRender && (data.__pathForRender = undefined);
7658
7671
  }
7659
7672
  __drawRenderPath(canvas) {
7660
7673
  canvas.beginPath();
@@ -7865,13 +7878,13 @@ __decorate([
7865
7878
  surfaceType()
7866
7879
  ], UI.prototype, "fill", void 0);
7867
7880
  __decorate([
7868
- strokeType()
7881
+ strokeType(undefined, true)
7869
7882
  ], UI.prototype, "stroke", void 0);
7870
7883
  __decorate([
7871
7884
  strokeType('inside')
7872
7885
  ], UI.prototype, "strokeAlign", void 0);
7873
7886
  __decorate([
7874
- strokeType(1)
7887
+ strokeType(1, true)
7875
7888
  ], UI.prototype, "strokeWidth", void 0);
7876
7889
  __decorate([
7877
7890
  strokeType(false)
@@ -8298,7 +8311,7 @@ let Leafer = Leafer_1 = class Leafer extends Group {
8298
8311
  list.push(item);
8299
8312
  this.requestRender();
8300
8313
  }
8301
- zoom(_zoomType, _padding, _fixedScale, _transition) {
8314
+ zoom(_zoomType, _optionsOrPadding, _scroll, _transition) {
8302
8315
  return Plugin.need('view');
8303
8316
  }
8304
8317
  getValidMove(moveX, moveY) { return { x: moveX, y: moveY }; }
@@ -8343,7 +8356,7 @@ let Leafer = Leafer_1 = class Leafer extends Group {
8343
8356
  Leafer_1.list.remove(this);
8344
8357
  try {
8345
8358
  this.stop();
8346
- this.emitEvent(new LeaferEvent(LeaferEvent.END, this));
8359
+ this.emitLeafer(LeaferEvent.END);
8347
8360
  this.__removeListenEvents();
8348
8361
  this.__controllers.forEach(item => !(this.parent && item === this.interaction) && item.destroy());
8349
8362
  this.__controllers.length = 0;
@@ -8471,7 +8484,7 @@ let Box = class Box extends Group {
8471
8484
  }
8472
8485
  __drawContent(canvas, options) {
8473
8486
  this.__renderGroup(canvas, options);
8474
- if (this.__.__hasStroke) {
8487
+ if (this.__.__useStroke) {
8475
8488
  canvas.setWorld(this.__nowWorld);
8476
8489
  this.__drawRenderPath(canvas);
8477
8490
  }
@@ -8691,8 +8704,8 @@ let Polygon = class Polygon extends UI {
8691
8704
  for (let i = 1; i < sides; i++) {
8692
8705
  lineTo$1(path, rx + rx * sin$1((i * 2 * PI$1) / sides), ry - ry * cos$1((i * 2 * PI$1) / sides));
8693
8706
  }
8707
+ closePath$1(path);
8694
8708
  }
8695
- closePath$1(path);
8696
8709
  }
8697
8710
  __updateRenderPath() { }
8698
8711
  __updateBoxBounds() { }
@@ -8930,6 +8943,11 @@ let Text = class Text extends UI {
8930
8943
  return;
8931
8944
  super.__draw(canvas, options, originCanvas);
8932
8945
  }
8946
+ __drawShape(canvas, options) {
8947
+ if (options.shape)
8948
+ this.__box && this.__box.__drawShape(canvas, options);
8949
+ super.__drawShape(canvas, options);
8950
+ }
8933
8951
  destroy() {
8934
8952
  if (this.boxStyle)
8935
8953
  this.boxStyle = null;
@@ -9751,6 +9769,7 @@ const config = {
9751
9769
  delta: { x: 80 / 4, y: 8.0 },
9752
9770
  },
9753
9771
  pointer: {
9772
+ type: 'pointer',
9754
9773
  snap: true,
9755
9774
  hitRadius: 5,
9756
9775
  tapTime: 120,
@@ -10294,7 +10313,7 @@ ui$1.__updateHitCanvas = function () {
10294
10313
  h.resize({ width, height, pixelRatio: 1 });
10295
10314
  h.clear();
10296
10315
  ImageManager.patternLocked = true;
10297
- this.__renderShape(h, { matrix: matrix.setWith(this.__world).scaleWith(1 / scale).invertWith().translate(-x, -y) }, !isHitPixelFill, !isHitPixelStroke);
10316
+ this.__renderShape(h, { matrix: matrix.setWith(this.__world).scaleWith(1 / scale).invertWith().translate(-x, -y), ignoreFill: !isHitPixelFill, ignoreStroke: !isHitPixelStroke });
10298
10317
  ImageManager.patternLocked = false;
10299
10318
  h.resetTransform();
10300
10319
  data.__isHitPixel = true;
@@ -10698,7 +10717,7 @@ const PaintModule = {
10698
10717
  };
10699
10718
 
10700
10719
  let origin = {};
10701
- const { get: get$3, rotateOfOuter: rotateOfOuter$1, translate: translate$1, scaleOfOuter: scaleOfOuter$1, scale: scaleHelper, rotate } = MatrixHelper;
10720
+ const { get: get$3, rotateOfOuter: rotateOfOuter$1, translate: translate$1, scaleOfOuter: scaleOfOuter$1, scale: scaleHelper, rotate, skew: skewHelper } = MatrixHelper;
10702
10721
  function fillOrFitMode(data, box, x, y, scaleX, scaleY, rotation) {
10703
10722
  const transform = get$3();
10704
10723
  translate$1(transform, box.x + x, box.y + y);
@@ -10707,13 +10726,15 @@ function fillOrFitMode(data, box, x, y, scaleX, scaleY, rotation) {
10707
10726
  rotateOfOuter$1(transform, { x: box.x + box.width / 2, y: box.y + box.height / 2 }, rotation);
10708
10727
  data.transform = transform;
10709
10728
  }
10710
- function clipMode(data, box, x, y, scaleX, scaleY, rotation) {
10729
+ function clipMode(data, box, x, y, scaleX, scaleY, rotation, skew) {
10711
10730
  const transform = get$3();
10712
- translate$1(transform, box.x + x, box.y + y);
10713
- if (scaleX)
10714
- scaleHelper(transform, scaleX, scaleY);
10715
10731
  if (rotation)
10716
10732
  rotate(transform, rotation);
10733
+ if (skew)
10734
+ skewHelper(transform, skew.x, skew.y);
10735
+ if (scaleX)
10736
+ scaleHelper(transform, scaleX, scaleY);
10737
+ translate$1(transform, box.x + x, box.y + y);
10717
10738
  data.transform = transform;
10718
10739
  }
10719
10740
  function repeatMode(data, box, width, height, x, y, scaleX, scaleY, rotation, align) {
@@ -10750,11 +10771,13 @@ const tempBox = new Bounds();
10750
10771
  const tempScaleData = {};
10751
10772
  const tempImage = {};
10752
10773
  function createData(leafPaint, image, paint, box) {
10753
- const { changeful, sync } = paint;
10774
+ const { changeful, sync, editing } = paint;
10754
10775
  if (changeful)
10755
10776
  leafPaint.changeful = changeful;
10756
10777
  if (sync)
10757
10778
  leafPaint.sync = sync;
10779
+ if (editing)
10780
+ leafPaint.editing = editing;
10758
10781
  leafPaint.data = getPatternData(paint, box, image);
10759
10782
  }
10760
10783
  function getPatternData(paint, box, image) {
@@ -10763,7 +10786,7 @@ function getPatternData(paint, box, image) {
10763
10786
  if (paint.mode === 'strench')
10764
10787
  paint.mode = 'stretch';
10765
10788
  let { width, height } = image;
10766
- const { opacity, mode, align, offset, scale, size, rotation, repeat, filters } = paint;
10789
+ const { opacity, mode, align, offset, scale, size, rotation, skew, repeat, filters } = paint;
10767
10790
  const sameBox = box.width === width && box.height === height;
10768
10791
  const data = { mode };
10769
10792
  const swapSize = align !== 'center' && (rotation || 0) % 180 === 90;
@@ -10797,8 +10820,8 @@ function getPatternData(paint, box, image) {
10797
10820
  break;
10798
10821
  case 'normal':
10799
10822
  case 'clip':
10800
- if (tempImage.x || tempImage.y || scaleX || rotation)
10801
- clipMode(data, box, tempImage.x, tempImage.y, scaleX, scaleY, rotation);
10823
+ if (tempImage.x || tempImage.y || scaleX || rotation || skew)
10824
+ clipMode(data, box, tempImage.x, tempImage.y, scaleX, scaleY, rotation, skew);
10802
10825
  break;
10803
10826
  case 'repeat':
10804
10827
  if (!sameBox || scaleX || rotation)
@@ -10875,11 +10898,11 @@ function image(ui, attrName, paint, boxBounds, firstUse) {
10875
10898
  }
10876
10899
  onLoadSuccess(ui, event);
10877
10900
  }
10878
- leafPaint.loadId = null;
10901
+ leafPaint.loadId = undefined;
10879
10902
  }, (error) => {
10880
10903
  ignoreRender(ui, false);
10881
10904
  onLoadError(ui, event, error);
10882
- leafPaint.loadId = null;
10905
+ leafPaint.loadId = undefined;
10883
10906
  });
10884
10907
  if (ui.placeholderColor) {
10885
10908
  if (!ui.placeholderDelay)
@@ -10945,6 +10968,8 @@ function createPattern(ui, paint, pixelRatio) {
10945
10968
  const { image, data } = paint;
10946
10969
  let imageScale, imageMatrix, { width, height, scaleX: sx, scaleY: sy, transform, repeat } = data;
10947
10970
  if (sx) {
10971
+ sx = abs$1(sx);
10972
+ sy = abs$1(sy);
10948
10973
  imageMatrix = get$1();
10949
10974
  copy$1(imageMatrix, transform);
10950
10975
  scale(imageMatrix, 1 / sx, 1 / sy);