@leafer-draw/miniapp 1.0.0 → 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,13 +5785,14 @@ 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 {
5764
5792
  get allowBackgroundColor() { return false; }
5765
5793
  init() {
5766
- let { view } = this.config;
5794
+ const { config } = this;
5795
+ let view = config.view || config.canvas;
5767
5796
  if (view) {
5768
5797
  if (typeof view === 'string') {
5769
5798
  if (view[0] !== '#')
@@ -5793,16 +5822,18 @@ class LeaferCanvas extends LeaferCanvasBase {
5793
5822
  else {
5794
5823
  this.view = view.view || view;
5795
5824
  }
5796
- this.__createContext();
5825
+ this.view.getContext ? this.__createContext() : this.unrealCanvas();
5797
5826
  const { width, height, pixelRatio } = this.config;
5798
5827
  const size = { width: width || view.width, height: height || view.height, pixelRatio };
5799
5828
  this.resize(size);
5800
- if (this.context.roundRect) {
5801
- this.roundRect = function (x, y, width, height, radius) {
5802
- this.context.roundRect(x, y, width, height, typeof radius === 'number' ? [radius] : radius);
5803
- };
5829
+ if (this.context) {
5830
+ if (this.context.roundRect) {
5831
+ this.roundRect = function (x, y, width, height, radius) {
5832
+ this.context.roundRect(x, y, width, height, typeof radius === 'number' ? [radius] : radius);
5833
+ };
5834
+ }
5835
+ canvasPatch(this.context.__proto__);
5804
5836
  }
5805
- canvasPatch(this.context.__proto__);
5806
5837
  }
5807
5838
  __createView() {
5808
5839
  this.view = Platform.origin.createCanvas(1, 1);
@@ -5820,10 +5851,12 @@ class LeaferCanvas extends LeaferCanvasBase {
5820
5851
  callback();
5821
5852
  });
5822
5853
  }
5823
- startAutoLayout(_autoBounds, listener) {
5854
+ startAutoLayout(autoBounds, listener) {
5824
5855
  this.resizeListener = listener;
5825
- this.checkSize = this.checkSize.bind(this);
5826
- Platform.miniapp.onWindowResize(this.checkSize);
5856
+ if (autoBounds) {
5857
+ this.checkSize = this.checkSize.bind(this);
5858
+ Platform.miniapp.onWindowResize(this.checkSize);
5859
+ }
5827
5860
  }
5828
5861
  checkSize() {
5829
5862
  if (this.viewSelect) {
@@ -5832,13 +5865,8 @@ class LeaferCanvas extends LeaferCanvasBase {
5832
5865
  const { width, height } = this.clientBounds;
5833
5866
  const { pixelRatio } = this;
5834
5867
  const size = { width, height, pixelRatio };
5835
- if (!this.isSameSize(size)) {
5836
- const oldSize = {};
5837
- DataHelper.copyAttrs(oldSize, this, canvasSizeAttrs);
5838
- this.resize(size);
5839
- if (this.width !== undefined)
5840
- this.resizeListener(new ResizeEvent(size, oldSize));
5841
- }
5868
+ if (!this.isSameSize(size))
5869
+ this.emitResize(size);
5842
5870
  });
5843
5871
  }, 500);
5844
5872
  }
@@ -5848,6 +5876,16 @@ class LeaferCanvas extends LeaferCanvasBase {
5848
5876
  this.resizeListener = null;
5849
5877
  Platform.miniapp.offWindowResize(this.checkSize);
5850
5878
  }
5879
+ unrealCanvas() {
5880
+ this.unreal = true;
5881
+ }
5882
+ emitResize(size) {
5883
+ const oldSize = {};
5884
+ DataHelper.copyAttrs(oldSize, this, canvasSizeAttrs);
5885
+ this.resize(size);
5886
+ if (this.width !== undefined)
5887
+ this.resizeListener(new ResizeEvent(size, oldSize));
5888
+ }
5851
5889
  }
5852
5890
 
5853
5891
  const { mineType, fileType } = FileHelper;
@@ -5969,7 +6007,7 @@ function useCanvas(_canvasType, app) {
5969
6007
  }
5970
6008
  Platform.name = 'miniapp';
5971
6009
  Platform.requestRender = function (render) { Platform.canvas.view.requestAnimationFrame(render); };
5972
- Platform.devicePixelRatio = wx.getSystemInfoSync().pixelRatio;
6010
+ defineKey(Platform, 'devicePixelRatio', { get() { return Math.max(1, wx.getSystemInfoSync().pixelRatio); } });
5973
6011
 
5974
6012
  class Watcher {
5975
6013
  get childrenChanged() { return this.hasAdd || this.hasRemove || this.hasVisible; }
@@ -6447,14 +6485,14 @@ class Renderer {
6447
6485
  if (Debug.showRepaint)
6448
6486
  this.canvas.strokeWorld(bounds, 'red');
6449
6487
  this.target.__render(this.canvas, options);
6450
- this.renderBounds = realBounds || bounds;
6488
+ this.renderBounds = realBounds = realBounds || bounds;
6451
6489
  this.renderOptions = options;
6452
- this.totalBounds.isEmpty() ? this.totalBounds = this.renderBounds : this.totalBounds.add(this.renderBounds);
6490
+ this.totalBounds.isEmpty() ? this.totalBounds = realBounds : this.totalBounds.add(realBounds);
6453
6491
  if (Debug.showHitView)
6454
6492
  this.renderHitView(options);
6455
6493
  if (Debug.showBoundsView)
6456
6494
  this.renderBoundsView(options);
6457
- this.canvas.updateRender();
6495
+ this.canvas.updateRender(realBounds);
6458
6496
  }
6459
6497
  renderHitView(_options) { }
6460
6498
  renderBoundsView(_options) { }
@@ -7505,7 +7543,7 @@ let Leafer = Leafer_1 = class Leafer extends Group {
7505
7543
  this.__controllers.push(this.renderer = Creator.renderer(this, canvas, config), this.watcher = Creator.watcher(this, config), this.layouter = Creator.layouter(this, config));
7506
7544
  if (this.isApp)
7507
7545
  this.__setApp();
7508
- this.__checkAutoLayout(config);
7546
+ this.__checkAutoLayout(config, parentApp);
7509
7547
  this.view = canvas.view;
7510
7548
  if (parentApp) {
7511
7549
  this.__bindApp(parentApp);
@@ -7606,9 +7644,10 @@ let Leafer = Leafer_1 = class Leafer extends Group {
7606
7644
  this.leafer = leafer;
7607
7645
  this.__level = 1;
7608
7646
  }
7609
- __checkAutoLayout(config) {
7610
- if (!config.width || !config.height) {
7611
- this.autoLayout = new AutoBounds(config);
7647
+ __checkAutoLayout(config, parentApp) {
7648
+ if (!parentApp) {
7649
+ if (!config.width || !config.height)
7650
+ this.autoLayout = new AutoBounds(config);
7612
7651
  this.canvas.startAutoLayout(this.autoLayout, this.__onResize.bind(this));
7613
7652
  }
7614
7653
  }
@@ -7743,7 +7782,9 @@ let Leafer = Leafer_1 = class Leafer extends Group {
7743
7782
  list.push(item);
7744
7783
  }
7745
7784
  }
7746
- zoom(_zoomType, _padding, _fixedScale) { return undefined; }
7785
+ zoom(_zoomType, _padding, _fixedScale) {
7786
+ return debug$1.error('need @leafer-in/view');
7787
+ }
7747
7788
  getValidMove(moveX, moveY) { return { x: moveX, y: moveY }; }
7748
7789
  getValidScale(changeScale) { return changeScale; }
7749
7790
  getWorldPointByClient(clientPoint, updateClient) {
@@ -8270,8 +8311,7 @@ let Canvas = class Canvas extends Rect {
8270
8311
  destroy() {
8271
8312
  if (this.canvas) {
8272
8313
  this.canvas.destroy();
8273
- this.canvas = null;
8274
- this.context = null;
8314
+ this.canvas = this.context = null;
8275
8315
  }
8276
8316
  super.destroy();
8277
8317
  }
@@ -9115,7 +9155,7 @@ function createPattern(ui, paint, pixelRatio) {
9115
9155
  const { abs } = Math;
9116
9156
  function checkImage(ui, canvas, paint, allowPaint) {
9117
9157
  const { scaleX, scaleY } = ImageManager.patternLocked ? ui.__world : ui.__nowWorld;
9118
- if (!paint.data || paint.patternId === scaleX + '-' + scaleY) {
9158
+ if (!paint.data || (paint.patternId === scaleX + '-' + scaleY && !Export.running)) {
9119
9159
  return false;
9120
9160
  }
9121
9161
  else {
@@ -10093,7 +10133,10 @@ const ExportModule = {
10093
10133
  const { x, y, width, height } = new Bounds(renderBounds).scale(scale);
10094
10134
  let canvas = Creator.canvas({ width: Math.round(width), height: Math.round(height), pixelRatio, smooth, contextSettings });
10095
10135
  const renderOptions = { matrix: matrix.scale(1 / scale).invert().translate(-x, -y).withScale(1 / scaleX * scale, 1 / scaleY * scale) };
10136
+ let sliceLeaf;
10096
10137
  if (slice) {
10138
+ sliceLeaf = leaf;
10139
+ sliceLeaf.__worldOpacity = 0;
10097
10140
  leaf = leafer;
10098
10141
  renderOptions.bounds = canvas.bounds;
10099
10142
  }
@@ -10108,6 +10151,8 @@ const ExportModule = {
10108
10151
  leaf.__render(canvas, renderOptions);
10109
10152
  }
10110
10153
  canvas.restore();
10154
+ if (sliceLeaf)
10155
+ sliceLeaf.__updateWorldOpacity();
10111
10156
  if (trim) {
10112
10157
  trimBounds = getTrimBounds(canvas);
10113
10158
  const old = canvas, { width, height } = trimBounds;