@leafer-draw/worker 1.0.0-rc.30 → 1.0.1

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.
@@ -48,6 +48,8 @@ const I$1 = IncrementId;
48
48
  const { round, pow: pow$1, PI: PI$4 } = Math;
49
49
  const MathHelper = {
50
50
  within(value, min, max) {
51
+ if (typeof min === 'object')
52
+ max = min.max, min = min.min;
51
53
  if (min !== undefined && value < min)
52
54
  value = min;
53
55
  if (max !== undefined && value > max)
@@ -150,10 +152,10 @@ const MatrixHelper = {
150
152
  t.e += x;
151
153
  t.f += y;
152
154
  },
153
- translateInner(t, x, y, isMoveOrigin) {
155
+ translateInner(t, x, y, hasOrigin) {
154
156
  t.e += t.a * x + t.c * y;
155
157
  t.f += t.b * x + t.d * y;
156
- if (isMoveOrigin)
158
+ if (hasOrigin)
157
159
  t.e -= x, t.f -= y;
158
160
  },
159
161
  scale(t, scaleX, scaleY = scaleX) {
@@ -312,7 +314,7 @@ const MatrixHelper = {
312
314
  to.y -= (f * a - e * b) * s;
313
315
  }
314
316
  },
315
- setLayout(t, layout, origin, bcChanged) {
317
+ setLayout(t, layout, origin, around, bcChanged) {
316
318
  const { x, y, scaleX, scaleY } = layout;
317
319
  if (bcChanged === undefined)
318
320
  bcChanged = layout.rotation || layout.skewX || layout.skewY;
@@ -344,10 +346,10 @@ const MatrixHelper = {
344
346
  }
345
347
  t.e = x;
346
348
  t.f = y;
347
- if (origin)
348
- M$6.translateInner(t, -origin.x, -origin.y, true);
349
+ if (origin = origin || around)
350
+ M$6.translateInner(t, -origin.x, -origin.y, !around);
349
351
  },
350
- getLayout(t, origin, firstSkewY) {
352
+ getLayout(t, origin, around, firstSkewY) {
351
353
  const { a, b, c, d, e, f } = t;
352
354
  let x = e, y = f, scaleX, scaleY, rotation, skewX, skewY;
353
355
  if (b || c) {
@@ -376,9 +378,11 @@ const MatrixHelper = {
376
378
  scaleY = d;
377
379
  rotation = skewX = skewY = 0;
378
380
  }
379
- if (origin) {
381
+ if (origin = around || origin) {
380
382
  x += origin.x * a + origin.y * c;
381
383
  y += origin.x * b + origin.y * d;
384
+ if (!around)
385
+ x -= origin.x, y -= origin.y;
382
386
  }
383
387
  return { x, y, scaleX, scaleY, rotation, skewX, skewY };
384
388
  },
@@ -706,12 +710,12 @@ class Matrix {
706
710
  toInnerPoint(outer, to, distance) {
707
711
  MatrixHelper.toInnerPoint(this, outer, to, distance);
708
712
  }
709
- setLayout(data, origin) {
710
- MatrixHelper.setLayout(this, data, origin);
713
+ setLayout(data, origin, around) {
714
+ MatrixHelper.setLayout(this, data, origin, around);
711
715
  return this;
712
716
  }
713
- getLayout(origin, firstSkewY) {
714
- return MatrixHelper.getLayout(this, origin, firstSkewY);
717
+ getLayout(origin, around, firstSkewY) {
718
+ return MatrixHelper.getLayout(this, origin, around, firstSkewY);
715
719
  }
716
720
  withScale(scaleX, scaleY) {
717
721
  return MatrixHelper.withScale(this, scaleX, scaleY);
@@ -1999,7 +2003,7 @@ class LeaferCanvasBase extends Canvas$1 {
1999
2003
  DataHelper.copyAttrs(this.size, size, canvasSizeAttrs);
2000
2004
  this.size.pixelRatio || (this.size.pixelRatio = 1);
2001
2005
  this.bounds = new Bounds(0, 0, this.width, this.height);
2002
- if (!this.unreal) {
2006
+ if (this.context && !this.unreal) {
2003
2007
  this.updateViewSize();
2004
2008
  this.smooth = this.config.smooth;
2005
2009
  }
@@ -2172,7 +2176,7 @@ class LeaferCanvasBase extends Canvas$1 {
2172
2176
  this.manager ? this.manager.recycle(this) : this.destroy();
2173
2177
  }
2174
2178
  }
2175
- updateRender() { }
2179
+ updateRender(_bounds) { }
2176
2180
  unrealCanvas() { }
2177
2181
  destroy() {
2178
2182
  this.manager = this.view = this.parentView = null;
@@ -4066,8 +4070,13 @@ const LeafHelper = {
4066
4070
  zoomOfLocal(t, origin, scaleX, scaleY = scaleX, resize) {
4067
4071
  copy$6(matrix, t.__localMatrix);
4068
4072
  scaleOfOuter$2(matrix, origin, scaleX, scaleY);
4069
- moveByMatrix(t, matrix);
4070
- t.scaleResize(scaleX, scaleY, resize !== true);
4073
+ if (t.origin || t.around) {
4074
+ L.setTransform(t, matrix, resize);
4075
+ }
4076
+ else {
4077
+ moveByMatrix(t, matrix);
4078
+ t.scaleResize(scaleX, scaleY, resize !== true);
4079
+ }
4071
4080
  },
4072
4081
  rotateOfWorld(t, origin, angle) {
4073
4082
  L.rotateOfLocal(t, getTempLocal(t, origin), angle);
@@ -4075,8 +4084,13 @@ const LeafHelper = {
4075
4084
  rotateOfLocal(t, origin, angle) {
4076
4085
  copy$6(matrix, t.__localMatrix);
4077
4086
  rotateOfOuter$2(matrix, origin, angle);
4078
- moveByMatrix(t, matrix);
4079
- t.rotation = MathHelper.formatRotation(t.rotation + angle);
4087
+ if (t.origin || t.around) {
4088
+ L.setTransform(t, matrix);
4089
+ }
4090
+ else {
4091
+ moveByMatrix(t, matrix);
4092
+ t.rotation = MathHelper.formatRotation(t.rotation + angle);
4093
+ }
4080
4094
  },
4081
4095
  skewOfWorld(t, origin, skewX, skewY, resize) {
4082
4096
  L.skewOfLocal(t, getTempLocal(t, origin), skewX, skewY, resize);
@@ -4099,7 +4113,7 @@ const LeafHelper = {
4099
4113
  L.setTransform(t, matrix, resize);
4100
4114
  },
4101
4115
  setTransform(t, transform, resize) {
4102
- const layout = getLayout(transform);
4116
+ const layout = getLayout(transform, t.origin && L.getInnerOrigin(t, t.origin), t.around && L.getInnerOrigin(t, t.around));
4103
4117
  if (resize) {
4104
4118
  const scaleX = layout.scaleX / t.scaleX;
4105
4119
  const scaleY = layout.scaleY / t.scaleY;
@@ -4112,13 +4126,19 @@ const LeafHelper = {
4112
4126
  t.set(layout);
4113
4127
  }
4114
4128
  },
4129
+ getFlipTransform(t, axis) {
4130
+ const m = getMatrixData();
4131
+ const sign = axis === 'x' ? 1 : -1;
4132
+ scaleOfOuter$2(m, L.getLocalOrigin(t, 'center'), -1 * sign, 1 * sign);
4133
+ return m;
4134
+ },
4115
4135
  getLocalOrigin(t, origin) {
4116
4136
  return PointHelper.tempToOuterOf(L.getInnerOrigin(t, origin), t.localTransform);
4117
4137
  },
4118
4138
  getInnerOrigin(t, origin) {
4119
- if (typeof origin === 'string')
4120
- AroundHelper.toPoint(origin, t.boxBounds, origin = {});
4121
- return origin;
4139
+ const innerOrigin = {};
4140
+ AroundHelper.toPoint(origin, t.boxBounds, innerOrigin);
4141
+ return innerOrigin;
4122
4142
  },
4123
4143
  getRelativeWorld(t, relative, temp) {
4124
4144
  copy$6(matrix, t.worldTransform);
@@ -4545,7 +4565,10 @@ const LeafEventer = {
4545
4565
  on(type, listener, options) {
4546
4566
  let capture, once;
4547
4567
  if (options) {
4548
- if (typeof options === 'boolean') {
4568
+ if (options === 'once') {
4569
+ once = true;
4570
+ }
4571
+ else if (typeof options === 'boolean') {
4549
4572
  capture = options;
4550
4573
  }
4551
4574
  else {
@@ -4576,7 +4599,7 @@ const LeafEventer = {
4576
4599
  if (listener) {
4577
4600
  let capture;
4578
4601
  if (options)
4579
- capture = typeof options === 'boolean' ? options : options.capture;
4602
+ capture = typeof options === 'boolean' ? options : (options === 'once' ? false : options.capture);
4580
4603
  let events, index;
4581
4604
  const map = __getListenerMap(this, capture);
4582
4605
  typeList.forEach(type => {
@@ -4878,7 +4901,7 @@ const LeafMatrix = {
4878
4901
  const layout = this.__layout, local = this.__local, data = this.__;
4879
4902
  if (layout.affectScaleOrRotation) {
4880
4903
  if (layout.scaleChanged || layout.rotationChanged) {
4881
- setLayout(local, data, null, layout.affectRotation);
4904
+ setLayout(local, data, null, null, layout.affectRotation);
4882
4905
  layout.scaleChanged = layout.rotationChanged = false;
4883
4906
  }
4884
4907
  }
@@ -4886,7 +4909,7 @@ const LeafMatrix = {
4886
4909
  local.f = data.y + data.offsetY;
4887
4910
  if (data.around || data.origin) {
4888
4911
  toPoint$3(data.around || data.origin, layout.boxBounds, tempPoint$1);
4889
- translateInner(local, -tempPoint$1.x, -tempPoint$1.y, data.origin);
4912
+ translateInner(local, -tempPoint$1.x, -tempPoint$1.y, !data.around);
4890
4913
  }
4891
4914
  }
4892
4915
  this.__layout.matrixChanged = false;
@@ -5115,7 +5138,7 @@ const { LEAF, create } = IncrementId;
5115
5138
  const { toInnerPoint, toOuterPoint, multiplyParent } = MatrixHelper;
5116
5139
  const { toOuterOf } = BoundsHelper;
5117
5140
  const { copy: copy$3 } = PointHelper;
5118
- const { moveLocal, zoomOfLocal, rotateOfLocal, skewOfLocal, moveWorld, zoomOfWorld, rotateOfWorld, skewOfWorld, transform, transformWorld, setTransform, getLocalOrigin, getRelativeWorld, drop } = LeafHelper;
5141
+ const { moveLocal, zoomOfLocal, rotateOfLocal, skewOfLocal, moveWorld, zoomOfWorld, rotateOfWorld, skewOfWorld, transform, transformWorld, setTransform, getFlipTransform, getLocalOrigin, getRelativeWorld, drop } = LeafHelper;
5119
5142
  let Leaf = class Leaf {
5120
5143
  get tag() { return this.__tag; }
5121
5144
  set tag(_value) { }
@@ -5141,6 +5164,8 @@ let Leaf = class Leaf {
5141
5164
  get __ignoreHitWorld() { return (this.__hasMask || this.__hasEraser) && this.__.hitChildren; }
5142
5165
  get __inLazyBounds() { const { leafer } = this; return leafer && leafer.created && leafer.lazyBounds.hit(this.__world); }
5143
5166
  get pathInputed() { return this.__.__pathInputed; }
5167
+ set event(map) { let event; for (let key in map)
5168
+ event = map[key], event instanceof Array ? this.on(key, event[0], event[1]) : this.on(key, event); }
5144
5169
  constructor(data) {
5145
5170
  this.innerId = create(LEAF);
5146
5171
  this.reset(data);
@@ -5400,6 +5425,9 @@ let Leaf = class Leaf {
5400
5425
  skewOfWorld(worldOrigin, skewX, skewY, resize) {
5401
5426
  skewOfWorld(this, worldOrigin, skewX, skewY, resize);
5402
5427
  }
5428
+ flip(axis) {
5429
+ transform(this, getFlipTransform(this, axis));
5430
+ }
5403
5431
  scaleResize(scaleX, scaleY = scaleX, _noResize) {
5404
5432
  this.scaleX *= scaleX;
5405
5433
  this.scaleY *= scaleY;
@@ -5757,7 +5785,7 @@ class LeafLevelList {
5757
5785
  }
5758
5786
  }
5759
5787
 
5760
- const version = "1.0.0-rc.30";
5788
+ const version = "1.0.1";
5761
5789
  const inviteCode = {};
5762
5790
 
5763
5791
  class LeaferCanvas extends LeaferCanvasBase {
@@ -5827,7 +5855,7 @@ function useCanvas(_canvasType, _power) {
5827
5855
  Platform.name = 'web';
5828
5856
  Platform.isWorker = true;
5829
5857
  Platform.requestRender = function (render) { requestAnimationFrame(render); };
5830
- Platform.devicePixelRatio = 1;
5858
+ defineKey(Platform, 'devicePixelRatio', { get() { return 1; } });
5831
5859
  const { userAgent } = navigator;
5832
5860
  if (userAgent.indexOf("Firefox") > -1) {
5833
5861
  Platform.conicGradientRotate90 = true;
@@ -6323,14 +6351,14 @@ class Renderer {
6323
6351
  if (Debug.showRepaint)
6324
6352
  this.canvas.strokeWorld(bounds, 'red');
6325
6353
  this.target.__render(this.canvas, options);
6326
- this.renderBounds = realBounds || bounds;
6354
+ this.renderBounds = realBounds = realBounds || bounds;
6327
6355
  this.renderOptions = options;
6328
- this.totalBounds.isEmpty() ? this.totalBounds = this.renderBounds : this.totalBounds.add(this.renderBounds);
6356
+ this.totalBounds.isEmpty() ? this.totalBounds = realBounds : this.totalBounds.add(realBounds);
6329
6357
  if (Debug.showHitView)
6330
6358
  this.renderHitView(options);
6331
6359
  if (Debug.showBoundsView)
6332
6360
  this.renderBoundsView(options);
6333
- this.canvas.updateRender();
6361
+ this.canvas.updateRender(realBounds);
6334
6362
  }
6335
6363
  renderHitView(_options) { }
6336
6364
  renderBoundsView(_options) { }
@@ -7381,7 +7409,7 @@ let Leafer = Leafer_1 = class Leafer extends Group {
7381
7409
  this.__controllers.push(this.renderer = Creator.renderer(this, canvas, config), this.watcher = Creator.watcher(this, config), this.layouter = Creator.layouter(this, config));
7382
7410
  if (this.isApp)
7383
7411
  this.__setApp();
7384
- this.__checkAutoLayout(config);
7412
+ this.__checkAutoLayout(config, parentApp);
7385
7413
  this.view = canvas.view;
7386
7414
  if (parentApp) {
7387
7415
  this.__bindApp(parentApp);
@@ -7482,9 +7510,10 @@ let Leafer = Leafer_1 = class Leafer extends Group {
7482
7510
  this.leafer = leafer;
7483
7511
  this.__level = 1;
7484
7512
  }
7485
- __checkAutoLayout(config) {
7486
- if (!config.width || !config.height) {
7487
- this.autoLayout = new AutoBounds(config);
7513
+ __checkAutoLayout(config, parentApp) {
7514
+ if (!parentApp) {
7515
+ if (!config.width || !config.height)
7516
+ this.autoLayout = new AutoBounds(config);
7488
7517
  this.canvas.startAutoLayout(this.autoLayout, this.__onResize.bind(this));
7489
7518
  }
7490
7519
  }
@@ -7619,7 +7648,9 @@ let Leafer = Leafer_1 = class Leafer extends Group {
7619
7648
  list.push(item);
7620
7649
  }
7621
7650
  }
7622
- zoom(_zoomType, _padding, _fixedScale) { return undefined; }
7651
+ zoom(_zoomType, _padding, _fixedScale) {
7652
+ return debug$1.error('need @leafer-in/view');
7653
+ }
7623
7654
  getValidMove(moveX, moveY) { return { x: moveX, y: moveY }; }
7624
7655
  getValidScale(changeScale) { return changeScale; }
7625
7656
  getWorldPointByClient(clientPoint, updateClient) {
@@ -8146,8 +8177,7 @@ let Canvas = class Canvas extends Rect {
8146
8177
  destroy() {
8147
8178
  if (this.canvas) {
8148
8179
  this.canvas.destroy();
8149
- this.canvas = null;
8150
- this.context = null;
8180
+ this.canvas = this.context = null;
8151
8181
  }
8152
8182
  super.destroy();
8153
8183
  }
@@ -8991,7 +9021,7 @@ function createPattern(ui, paint, pixelRatio) {
8991
9021
  const { abs } = Math;
8992
9022
  function checkImage(ui, canvas, paint, allowPaint) {
8993
9023
  const { scaleX, scaleY } = ImageManager.patternLocked ? ui.__world : ui.__nowWorld;
8994
- if (!paint.data || paint.patternId === scaleX + '-' + scaleY) {
9024
+ if (!paint.data || (paint.patternId === scaleX + '-' + scaleY && !Export.running)) {
8995
9025
  return false;
8996
9026
  }
8997
9027
  else {
@@ -9969,7 +9999,10 @@ const ExportModule = {
9969
9999
  const { x, y, width, height } = new Bounds(renderBounds).scale(scale);
9970
10000
  let canvas = Creator.canvas({ width: Math.round(width), height: Math.round(height), pixelRatio, smooth, contextSettings });
9971
10001
  const renderOptions = { matrix: matrix.scale(1 / scale).invert().translate(-x, -y).withScale(1 / scaleX * scale, 1 / scaleY * scale) };
10002
+ let sliceLeaf;
9972
10003
  if (slice) {
10004
+ sliceLeaf = leaf;
10005
+ sliceLeaf.__worldOpacity = 0;
9973
10006
  leaf = leafer;
9974
10007
  renderOptions.bounds = canvas.bounds;
9975
10008
  }
@@ -9984,6 +10017,8 @@ const ExportModule = {
9984
10017
  leaf.__render(canvas, renderOptions);
9985
10018
  }
9986
10019
  canvas.restore();
10020
+ if (sliceLeaf)
10021
+ sliceLeaf.__updateWorldOpacity();
9987
10022
  if (trim) {
9988
10023
  trimBounds = getTrimBounds(canvas);
9989
10024
  const old = canvas, { width, height } = trimBounds;