leafer-ui 1.3.1 → 1.3.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.
@@ -6007,7 +6007,7 @@ class LeafLevelList {
6007
6007
  }
6008
6008
  }
6009
6009
 
6010
- const version = "1.3.1";
6010
+ const version = "1.3.2";
6011
6011
 
6012
6012
  const debug$5 = Debug.get('LeaferCanvas');
6013
6013
  class LeaferCanvas extends LeaferCanvasBase {
@@ -6226,7 +6226,7 @@ function useCanvas(_canvasType, _power) {
6226
6226
  },
6227
6227
  loadImage(src) {
6228
6228
  return new Promise((resolve, reject) => {
6229
- const img = new Image();
6229
+ const img = new Platform.origin.Image();
6230
6230
  const { crossOrigin } = Platform.image;
6231
6231
  if (crossOrigin) {
6232
6232
  img.setAttribute('crossOrigin', crossOrigin);
@@ -6236,7 +6236,10 @@ function useCanvas(_canvasType, _power) {
6236
6236
  img.onerror = (e) => { reject(e); };
6237
6237
  img.src = Platform.image.getRealURL(src);
6238
6238
  });
6239
- }
6239
+ },
6240
+ Image,
6241
+ PointerEvent,
6242
+ DragEvent
6240
6243
  };
6241
6244
  Platform.event = {
6242
6245
  stopDefault(origin) { origin.preventDefault(); },
@@ -6712,7 +6715,7 @@ class Renderer {
6712
6715
  partRender() {
6713
6716
  const { canvas, updateBlocks: list } = this;
6714
6717
  if (!list)
6715
- return debug$3.warn('PartRender: need update attr');
6718
+ return;
6716
6719
  this.mergeBlocks();
6717
6720
  list.forEach(block => { if (canvas.bounds.hit(block) && !block.isEmpty())
6718
6721
  this.clipRender(block); });
@@ -7568,7 +7571,7 @@ let UI = UI_1 = class UI extends Leaf {
7568
7571
  animate(_keyframe, _options, _type, _isTemp) {
7569
7572
  return Plugin.need('animate');
7570
7573
  }
7571
- killAnimate(_type, _killStyle) { }
7574
+ killAnimate(_type, _nextStyle) { }
7572
7575
  export(_filename, _options) {
7573
7576
  return Plugin.need('export');
7574
7577
  }
@@ -8064,8 +8067,6 @@ let Leafer = Leafer_1 = class Leafer extends Group {
8064
8067
  this.created = true;
8065
8068
  }
8066
8069
  __onReady() {
8067
- if (this.ready)
8068
- return;
8069
8070
  this.ready = true;
8070
8071
  this.emitLeafer(LeaferEvent.BEFORE_READY);
8071
8072
  this.emitLeafer(LeaferEvent.READY);
@@ -8079,6 +8080,20 @@ let Leafer = Leafer_1 = class Leafer extends Group {
8079
8080
  this.emitLeafer(LeaferEvent.VIEW_READY);
8080
8081
  WaitHelper.run(this.__viewReadyWait);
8081
8082
  }
8083
+ __onLayoutEnd() {
8084
+ const { grow, growWidth, growHeight } = this.config;
8085
+ if (grow) {
8086
+ let { width, height, pixelRatio } = this;
8087
+ const bounds = grow === 'box' ? this.worldBoxBounds : this.__world;
8088
+ if (growWidth !== false)
8089
+ width = Math.max(1, bounds.x + bounds.width);
8090
+ if (growHeight !== false)
8091
+ height = Math.max(1, bounds.y + bounds.height);
8092
+ this.__doResize({ width, height, pixelRatio });
8093
+ }
8094
+ if (!this.ready)
8095
+ this.__onReady();
8096
+ }
8082
8097
  __onNextRender() {
8083
8098
  if (this.viewReady) {
8084
8099
  WaitHelper.run(this.__nextRenderWait);
@@ -8172,10 +8187,9 @@ let Leafer = Leafer_1 = class Leafer extends Group {
8172
8187
  const runId = Run.start('FirstCreate ' + this.innerName);
8173
8188
  this.once(LeaferEvent.START, () => Run.end(runId));
8174
8189
  this.once(LayoutEvent.START, () => this.updateLazyBounds());
8175
- this.once(LayoutEvent.END, () => this.__onReady());
8176
8190
  this.once(RenderEvent.START, () => this.__onCreated());
8177
8191
  this.once(RenderEvent.END, () => this.__onViewReady());
8178
- this.__eventIds.push(this.on_(WatchEvent.DATA, this.__onWatchData, this), this.on_(RenderEvent.NEXT, this.__onNextRender, this));
8192
+ this.__eventIds.push(this.on_(WatchEvent.DATA, this.__onWatchData, this), this.on_(LayoutEvent.END, this.__onLayoutEnd, this), this.on_(RenderEvent.NEXT, this.__onNextRender, this));
8179
8193
  }
8180
8194
  __removeListenEvents() {
8181
8195
  this.off_(this.__eventIds);
@@ -9104,34 +9118,34 @@ class UIEvent extends Event {
9104
9118
  }
9105
9119
  }
9106
9120
 
9107
- let PointerEvent = class PointerEvent extends UIEvent {
9121
+ let PointerEvent$1 = class PointerEvent extends UIEvent {
9108
9122
  };
9109
- PointerEvent.POINTER = 'pointer';
9110
- PointerEvent.BEFORE_DOWN = 'pointer.before_down';
9111
- PointerEvent.BEFORE_MOVE = 'pointer.before_move';
9112
- PointerEvent.BEFORE_UP = 'pointer.before_up';
9113
- PointerEvent.DOWN = 'pointer.down';
9114
- PointerEvent.MOVE = 'pointer.move';
9115
- PointerEvent.UP = 'pointer.up';
9116
- PointerEvent.OVER = 'pointer.over';
9117
- PointerEvent.OUT = 'pointer.out';
9118
- PointerEvent.ENTER = 'pointer.enter';
9119
- PointerEvent.LEAVE = 'pointer.leave';
9120
- PointerEvent.TAP = 'tap';
9121
- PointerEvent.DOUBLE_TAP = 'double_tap';
9122
- PointerEvent.CLICK = 'click';
9123
- PointerEvent.DOUBLE_CLICK = 'double_click';
9124
- PointerEvent.LONG_PRESS = 'long_press';
9125
- PointerEvent.LONG_TAP = 'long_tap';
9126
- PointerEvent.MENU = 'pointer.menu';
9127
- PointerEvent.MENU_TAP = 'pointer.menu_tap';
9128
- PointerEvent = __decorate([
9123
+ PointerEvent$1.POINTER = 'pointer';
9124
+ PointerEvent$1.BEFORE_DOWN = 'pointer.before_down';
9125
+ PointerEvent$1.BEFORE_MOVE = 'pointer.before_move';
9126
+ PointerEvent$1.BEFORE_UP = 'pointer.before_up';
9127
+ PointerEvent$1.DOWN = 'pointer.down';
9128
+ PointerEvent$1.MOVE = 'pointer.move';
9129
+ PointerEvent$1.UP = 'pointer.up';
9130
+ PointerEvent$1.OVER = 'pointer.over';
9131
+ PointerEvent$1.OUT = 'pointer.out';
9132
+ PointerEvent$1.ENTER = 'pointer.enter';
9133
+ PointerEvent$1.LEAVE = 'pointer.leave';
9134
+ PointerEvent$1.TAP = 'tap';
9135
+ PointerEvent$1.DOUBLE_TAP = 'double_tap';
9136
+ PointerEvent$1.CLICK = 'click';
9137
+ PointerEvent$1.DOUBLE_CLICK = 'double_click';
9138
+ PointerEvent$1.LONG_PRESS = 'long_press';
9139
+ PointerEvent$1.LONG_TAP = 'long_tap';
9140
+ PointerEvent$1.MENU = 'pointer.menu';
9141
+ PointerEvent$1.MENU_TAP = 'pointer.menu_tap';
9142
+ PointerEvent$1 = __decorate([
9129
9143
  registerUIEvent()
9130
- ], PointerEvent);
9131
- const MyPointerEvent = PointerEvent;
9144
+ ], PointerEvent$1);
9145
+ const MyPointerEvent = PointerEvent$1;
9132
9146
 
9133
9147
  const tempMove = {};
9134
- let DragEvent = class DragEvent extends PointerEvent {
9148
+ let DragEvent$1 = class DragEvent extends PointerEvent$1 {
9135
9149
  static setList(data) {
9136
9150
  this.list = data instanceof LeafList ? data : new LeafList(data);
9137
9151
  }
@@ -9212,25 +9226,25 @@ let DragEvent = class DragEvent extends PointerEvent {
9212
9226
  tempMove.y = total ? this.totalY : this.moveY;
9213
9227
  }
9214
9228
  };
9215
- DragEvent.BEFORE_DRAG = 'drag.before_drag';
9216
- DragEvent.START = 'drag.start';
9217
- DragEvent.DRAG = 'drag';
9218
- DragEvent.END = 'drag.end';
9219
- DragEvent.OVER = 'drag.over';
9220
- DragEvent.OUT = 'drag.out';
9221
- DragEvent.ENTER = 'drag.enter';
9222
- DragEvent.LEAVE = 'drag.leave';
9223
- DragEvent = __decorate([
9229
+ DragEvent$1.BEFORE_DRAG = 'drag.before_drag';
9230
+ DragEvent$1.START = 'drag.start';
9231
+ DragEvent$1.DRAG = 'drag';
9232
+ DragEvent$1.END = 'drag.end';
9233
+ DragEvent$1.OVER = 'drag.over';
9234
+ DragEvent$1.OUT = 'drag.out';
9235
+ DragEvent$1.ENTER = 'drag.enter';
9236
+ DragEvent$1.LEAVE = 'drag.leave';
9237
+ DragEvent$1 = __decorate([
9224
9238
  registerUIEvent()
9225
- ], DragEvent);
9226
- const MyDragEvent = DragEvent;
9239
+ ], DragEvent$1);
9240
+ const MyDragEvent = DragEvent$1;
9227
9241
 
9228
- let DropEvent = class DropEvent extends PointerEvent {
9242
+ let DropEvent = class DropEvent extends PointerEvent$1 {
9229
9243
  static setList(data) {
9230
- DragEvent.setList(data);
9244
+ DragEvent$1.setList(data);
9231
9245
  }
9232
9246
  static setData(data) {
9233
- DragEvent.setData(data);
9247
+ DragEvent$1.setData(data);
9234
9248
  }
9235
9249
  };
9236
9250
  DropEvent.DROP = 'drop';
@@ -9238,7 +9252,7 @@ DropEvent = __decorate([
9238
9252
  registerUIEvent()
9239
9253
  ], DropEvent);
9240
9254
 
9241
- let MoveEvent = class MoveEvent extends DragEvent {
9255
+ let MoveEvent = class MoveEvent extends DragEvent$1 {
9242
9256
  };
9243
9257
  MoveEvent.BEFORE_MOVE = 'move.before_move';
9244
9258
  MoveEvent.START = 'move.start';
@@ -9258,7 +9272,7 @@ RotateEvent = __decorate([
9258
9272
  registerUIEvent()
9259
9273
  ], RotateEvent);
9260
9274
 
9261
- let SwipeEvent = class SwipeEvent extends DragEvent {
9275
+ let SwipeEvent = class SwipeEvent extends DragEvent$1 {
9262
9276
  };
9263
9277
  SwipeEvent.SWIPE = 'swipe';
9264
9278
  SwipeEvent.LEFT = 'swipe.left';
@@ -9338,7 +9352,7 @@ const InteractionHelper = {
9338
9352
  return find;
9339
9353
  },
9340
9354
  pathCanDrag(path) {
9341
- return path && path.list.some(item => item.draggable || item.editable || (!item.isLeafer && item.hasEvent(DragEvent.DRAG)));
9355
+ return path && path.list.some(item => item.draggable || item.editable || (!item.isLeafer && item.hasEvent(DragEvent$1.DRAG)));
9342
9356
  },
9343
9357
  pathHasOutside(path) {
9344
9358
  return path && path.list.some(item => item.isOutside);
@@ -9361,7 +9375,7 @@ class Dragger {
9361
9375
  }
9362
9376
  getList(realDraggable, hover) {
9363
9377
  const { proxy } = this.interaction.selector;
9364
- const hasProxyList = proxy && proxy.list.length, dragList = DragEvent.list || this.draggableList || emptyList;
9378
+ const hasProxyList = proxy && proxy.list.length, dragList = DragEvent$1.list || this.draggableList || emptyList;
9365
9379
  return this.dragging && (hasProxyList ? (realDraggable ? emptyList : new LeafList(hover ? [...proxy.list, ...proxy.dragHoverExclude] : proxy.list)) : dragList);
9366
9380
  }
9367
9381
  checkDrag(data, canDrag) {
@@ -9385,7 +9399,7 @@ class Dragger {
9385
9399
  if (!this.dragging) {
9386
9400
  this.dragging = canDrag && PointerButton.left(data);
9387
9401
  if (this.dragging) {
9388
- this.interaction.emit(DragEvent.START, this.dragData);
9402
+ this.interaction.emit(DragEvent$1.START, this.dragData);
9389
9403
  this.getDraggableList(this.dragData.path);
9390
9404
  this.setDragStartPoints(this.realDraggableList = this.getList(true));
9391
9405
  }
@@ -9419,8 +9433,8 @@ class Dragger {
9419
9433
  }
9420
9434
  else if (this.dragging) {
9421
9435
  this.dragReal();
9422
- interaction.emit(DragEvent.BEFORE_DRAG, this.dragData);
9423
- interaction.emit(DragEvent.DRAG, this.dragData);
9436
+ interaction.emit(DragEvent$1.BEFORE_DRAG, this.dragData);
9437
+ interaction.emit(DragEvent$1.DRAG, this.dragData);
9424
9438
  }
9425
9439
  }
9426
9440
  dragReal() {
@@ -9428,7 +9442,7 @@ class Dragger {
9428
9442
  const list = this.realDraggableList;
9429
9443
  if (list.length && running) {
9430
9444
  const { totalX, totalY } = this.dragData;
9431
- list.forEach(leaf => leaf.draggable && leaf.move(DragEvent.getValidMove(leaf, this.dragStartPoints[leaf.innerId], { x: totalX, y: totalY })));
9445
+ list.forEach(leaf => leaf.draggable && leaf.move(DragEvent$1.getValidMove(leaf, this.dragStartPoints[leaf.innerId], { x: totalX, y: totalY })));
9432
9446
  }
9433
9447
  }
9434
9448
  dragOverOrOut(data) {
@@ -9438,19 +9452,19 @@ class Dragger {
9438
9452
  this.dragOverPath = path;
9439
9453
  if (dragOverPath) {
9440
9454
  if (path.indexAt(0) !== dragOverPath.indexAt(0)) {
9441
- interaction.emit(DragEvent.OUT, data, dragOverPath);
9442
- interaction.emit(DragEvent.OVER, data, path);
9455
+ interaction.emit(DragEvent$1.OUT, data, dragOverPath);
9456
+ interaction.emit(DragEvent$1.OVER, data, path);
9443
9457
  }
9444
9458
  }
9445
9459
  else
9446
- interaction.emit(DragEvent.OVER, data, path);
9460
+ interaction.emit(DragEvent$1.OVER, data, path);
9447
9461
  }
9448
9462
  dragEnterOrLeave(data) {
9449
9463
  const { interaction } = this;
9450
9464
  const { dragEnterPath } = this;
9451
9465
  const { path } = data;
9452
- interaction.emit(DragEvent.LEAVE, data, dragEnterPath, path);
9453
- interaction.emit(DragEvent.ENTER, data, path, dragEnterPath);
9466
+ interaction.emit(DragEvent$1.LEAVE, data, dragEnterPath, path);
9467
+ interaction.emit(DragEvent$1.ENTER, data, path, dragEnterPath);
9454
9468
  this.dragEnterPath = path;
9455
9469
  }
9456
9470
  dragEnd(data, speed) {
@@ -9477,7 +9491,7 @@ class Dragger {
9477
9491
  if (this.dragging) {
9478
9492
  const dropList = this.getList();
9479
9493
  this.dragging = false;
9480
- interaction.emit(DragEvent.END, endDragData);
9494
+ interaction.emit(DragEvent$1.END, endDragData);
9481
9495
  this.swipe(data, downData, dragData, endDragData);
9482
9496
  this.drop(data, dropList, this.dragEnterPath);
9483
9497
  }
@@ -9493,13 +9507,13 @@ class Dragger {
9493
9507
  }
9494
9508
  }
9495
9509
  drop(data, dropList, dragEnterPath) {
9496
- const dropData = getDropEventData(data, dropList, DragEvent.data);
9510
+ const dropData = getDropEventData(data, dropList, DragEvent$1.data);
9497
9511
  dropData.path = dragEnterPath;
9498
9512
  this.interaction.emit(DropEvent.DROP, dropData);
9499
- this.interaction.emit(DragEvent.LEAVE, data, dragEnterPath);
9513
+ this.interaction.emit(DragEvent$1.LEAVE, data, dragEnterPath);
9500
9514
  }
9501
9515
  dragReset() {
9502
- DragEvent.list = DragEvent.data = this.draggableList = this.dragData = this.downData = this.dragOverPath = this.dragEnterPath = null;
9516
+ DragEvent$1.list = DragEvent$1.data = this.draggableList = this.dragData = this.downData = this.dragOverPath = this.dragEnterPath = null;
9503
9517
  }
9504
9518
  checkDragEndAnimate(_data, _speed) { return false; }
9505
9519
  animate(_func, _off) { }
@@ -9646,8 +9660,8 @@ class InteractionBase {
9646
9660
  this.updateDownData(data);
9647
9661
  this.checkPath(data, useDefaultPath);
9648
9662
  this.downTime = Date.now();
9649
- this.emit(PointerEvent.BEFORE_DOWN, data);
9650
- this.emit(PointerEvent.DOWN, data);
9663
+ this.emit(PointerEvent$1.BEFORE_DOWN, data);
9664
+ this.emit(PointerEvent$1.DOWN, data);
9651
9665
  if (PointerButton.left(data)) {
9652
9666
  this.tapWait();
9653
9667
  this.longPressWait(data);
@@ -9674,7 +9688,7 @@ class InteractionBase {
9674
9688
  }
9675
9689
  pointerMoveReal(data) {
9676
9690
  const { dragHover, dragDistance } = this.p;
9677
- this.emit(PointerEvent.BEFORE_MOVE, data, this.defaultPath);
9691
+ this.emit(PointerEvent$1.BEFORE_MOVE, data, this.defaultPath);
9678
9692
  if (this.downData) {
9679
9693
  const canDrag = PointHelper.getDistance(this.downData, data) > dragDistance;
9680
9694
  if (canDrag) {
@@ -9687,7 +9701,7 @@ class InteractionBase {
9687
9701
  if (!this.dragger.moving) {
9688
9702
  this.updateHoverData(data);
9689
9703
  this.checkPath(data);
9690
- this.emit(PointerEvent.MOVE, data);
9704
+ this.emit(PointerEvent$1.MOVE, data);
9691
9705
  if (!(this.dragging && !dragHover))
9692
9706
  this.pointerHover(data);
9693
9707
  if (this.dragger.dragging) {
@@ -9710,8 +9724,8 @@ class InteractionBase {
9710
9724
  data.path.addList(downData.path.list);
9711
9725
  this.checkPath(data);
9712
9726
  this.downData = null;
9713
- this.emit(PointerEvent.BEFORE_UP, data);
9714
- this.emit(PointerEvent.UP, data);
9727
+ this.emit(PointerEvent$1.BEFORE_UP, data);
9728
+ this.emit(PointerEvent$1.UP, data);
9715
9729
  this.touchLeave(data);
9716
9730
  if (!data.isCancel) {
9717
9731
  this.tap(data);
@@ -9727,14 +9741,14 @@ class InteractionBase {
9727
9741
  }
9728
9742
  menu(data) {
9729
9743
  this.findPath(data);
9730
- this.emit(PointerEvent.MENU, data);
9744
+ this.emit(PointerEvent$1.MENU, data);
9731
9745
  this.waitMenuTap = true;
9732
9746
  if (!this.downData && this.waitRightTap)
9733
9747
  this.menuTap(data);
9734
9748
  }
9735
9749
  menuTap(data) {
9736
9750
  if (this.waitRightTap && this.waitMenuTap) {
9737
- this.emit(PointerEvent.MENU_TAP, data);
9751
+ this.emit(PointerEvent$1.MENU_TAP, data);
9738
9752
  this.waitRightTap = this.waitMenuTap = false;
9739
9753
  }
9740
9754
  }
@@ -9782,12 +9796,12 @@ class InteractionBase {
9782
9796
  this.overPath = path;
9783
9797
  if (overPath) {
9784
9798
  if (path.indexAt(0) !== overPath.indexAt(0)) {
9785
- this.emit(PointerEvent.OUT, data, overPath);
9786
- this.emit(PointerEvent.OVER, data, path);
9799
+ this.emit(PointerEvent$1.OUT, data, overPath);
9800
+ this.emit(PointerEvent$1.OVER, data, path);
9787
9801
  }
9788
9802
  }
9789
9803
  else {
9790
- this.emit(PointerEvent.OVER, data, path);
9804
+ this.emit(PointerEvent$1.OVER, data, path);
9791
9805
  }
9792
9806
  }
9793
9807
  pointerEnterOrLeave(data) {
@@ -9798,13 +9812,13 @@ class InteractionBase {
9798
9812
  }
9799
9813
  const { enterPath } = this;
9800
9814
  this.enterPath = path;
9801
- this.emit(PointerEvent.LEAVE, data, enterPath, path);
9802
- this.emit(PointerEvent.ENTER, data, path, enterPath);
9815
+ this.emit(PointerEvent$1.LEAVE, data, enterPath, path);
9816
+ this.emit(PointerEvent$1.ENTER, data, path, enterPath);
9803
9817
  }
9804
9818
  touchLeave(data) {
9805
9819
  if (data.pointerType === 'touch') {
9806
9820
  if (this.enterPath) {
9807
- this.emit(PointerEvent.LEAVE, data);
9821
+ this.emit(PointerEvent$1.LEAVE, data);
9808
9822
  if (this.dragger.dragging)
9809
9823
  this.emit(DropEvent.LEAVE, data);
9810
9824
  }
@@ -9820,7 +9834,7 @@ class InteractionBase {
9820
9834
  if (pointer.tapMore)
9821
9835
  this.emitTap(data);
9822
9836
  const useTime = Date.now() - this.downTime;
9823
- const hasDouble = [PointerEvent.DOUBLE_TAP, PointerEvent.DOUBLE_CLICK].some(type => pathHasEventType(data.path, type));
9837
+ const hasDouble = [PointerEvent$1.DOUBLE_TAP, PointerEvent$1.DOUBLE_CLICK].some(type => pathHasEventType(data.path, type));
9824
9838
  if (useTime < pointer.tapTime + 50 && hasDouble) {
9825
9839
  this.tapCount++;
9826
9840
  if (this.tapCount === 2) {
@@ -9904,7 +9918,7 @@ class InteractionBase {
9904
9918
  data = this.hoverData;
9905
9919
  if (!data)
9906
9920
  return;
9907
- this.findPath(data, { exclude: this.dragger.getList(false, true), name: PointerEvent.MOVE });
9921
+ this.findPath(data, { exclude: this.dragger.getList(false, true), name: PointerEvent$1.MOVE });
9908
9922
  this.hoverData = data;
9909
9923
  }
9910
9924
  updateCursor(data) {
@@ -9940,12 +9954,12 @@ class InteractionBase {
9940
9954
  return { x: clientPoint.clientX - clientBounds.x, y: clientPoint.clientY - clientBounds.y };
9941
9955
  }
9942
9956
  emitTap(data) {
9943
- this.emit(PointerEvent.TAP, data);
9944
- this.emit(PointerEvent.CLICK, data);
9957
+ this.emit(PointerEvent$1.TAP, data);
9958
+ this.emit(PointerEvent$1.CLICK, data);
9945
9959
  }
9946
9960
  emitDoubleTap(data) {
9947
- this.emit(PointerEvent.DOUBLE_TAP, data);
9948
- this.emit(PointerEvent.DOUBLE_CLICK, data);
9961
+ this.emit(PointerEvent$1.DOUBLE_TAP, data);
9962
+ this.emit(PointerEvent$1.DOUBLE_CLICK, data);
9949
9963
  }
9950
9964
  pointerWaitCancel() {
9951
9965
  this.tapWaitCancel();
@@ -9964,14 +9978,14 @@ class InteractionBase {
9964
9978
  clearTimeout(this.longPressTimer);
9965
9979
  this.longPressTimer = setTimeout(() => {
9966
9980
  this.longPressed = true;
9967
- this.emit(PointerEvent.LONG_PRESS, data);
9981
+ this.emit(PointerEvent$1.LONG_PRESS, data);
9968
9982
  }, this.p.longPressTime);
9969
9983
  }
9970
9984
  longTap(data) {
9971
9985
  let hasLong;
9972
9986
  if (this.longPressed) {
9973
- this.emit(PointerEvent.LONG_TAP, data);
9974
- if (pathHasEventType(data.path, PointerEvent.LONG_TAP) || pathHasEventType(data.path, PointerEvent.LONG_PRESS))
9987
+ this.emit(PointerEvent$1.LONG_TAP, data);
9988
+ if (pathHasEventType(data.path, PointerEvent$1.LONG_TAP) || pathHasEventType(data.path, PointerEvent$1.LONG_PRESS))
9975
9989
  hasLong = true;
9976
9990
  }
9977
9991
  this.longPressWaitCancel();
@@ -11726,7 +11740,7 @@ function layoutChar(drawData, style, width, _height) {
11726
11740
  rows.forEach(row => {
11727
11741
  if (row.words) {
11728
11742
  indentWidth = paraIndent && row.paraStart ? paraIndent : 0;
11729
- addWordWidth = (width && textAlign === 'justify' && row.words.length > 1) ? (width - row.width - indentWidth) / (row.words.length - 1) : 0;
11743
+ addWordWidth = (width && (textAlign === 'justify' || textAlign === 'both') && row.words.length > 1) ? (width - row.width - indentWidth) / (row.words.length - 1) : 0;
11730
11744
  mode = (letterSpacing || row.isOverflow) ? CharMode : (addWordWidth > 0.01 ? WordMode : TextMode);
11731
11745
  if (row.isOverflow && !letterSpacing)
11732
11746
  row.textMode = true;
@@ -11748,7 +11762,7 @@ function layoutChar(drawData, style, width, _height) {
11748
11762
  else {
11749
11763
  charX = toChar(word.data, charX, row.data, row.isOverflow);
11750
11764
  }
11751
- if (!row.paraEnd && addWordWidth) {
11765
+ if (addWordWidth && (!row.paraEnd || textAlign === 'both')) {
11752
11766
  charX += addWordWidth;
11753
11767
  row.width += addWordWidth;
11754
11768
  }
@@ -12004,4 +12018,4 @@ Object.assign(Creator, {
12004
12018
  });
12005
12019
  useCanvas();
12006
12020
 
12007
- export { AlignHelper, Answer, App, AroundHelper, AutoBounds, BezierHelper, Bounds, BoundsHelper, Box, BoxData, Branch, BranchHelper, BranchRender, Canvas, CanvasData, CanvasManager, ChildEvent, ColorConvert, Creator, Cursor, DataHelper, Debug, Direction4, Direction9, DragEvent, Dragger, DropEvent, Effect, Ellipse, EllipseData, EllipseHelper, Event, EventCreator, Eventer, Export, FileHelper, 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, LeaferImage, Line, LineData, MathHelper, Matrix, MatrixHelper, MoveEvent, MyDragEvent, MyImage, MyPointerEvent, NeedConvertToCanvasCommandMap, OneRadian, PI2, PI_2, Paint, PaintGradient, PaintImage, Path, PathArrow, PathBounds, PathCommandDataHelper, PathCommandMap, PathConvert, PathCorner, PathCreator, PathData, PathDrawer, PathHelper, PathNumberCommandLengthMap, PathNumberCommandMap, Pen, PenData, Picker, Platform, Plugin, Point, PointHelper, PointerButton, PointerEvent, Polygon, PolygonData, PropertyEvent, Rect, RectData, RectHelper, RectRender, RenderEvent, Renderer, ResizeEvent, RotateEvent, Run, Selector, Star, StarData, State, StringNumberMap, SwipeEvent, TaskItem, TaskProcessor, Text, TextConvert, TextData, Transition, TwoPointBoundsHelper, UI, UIBounds, UICreator, UIData, UIEvent, UIRender, UnitConvert, WaitHelper, WatchEvent, Watcher, ZoomEvent, affectRenderBoundsType, affectStrokeBoundsType, attr, autoLayoutType, boundsType, canvasPatch, canvasSizeAttrs, cursorType, dataProcessor, dataType, decorateLeafAttr, defineDataProcessor, defineKey, defineLeafAttr, doBoundsType, doStrokeType, effectType, emptyData, eraserType, getBoundsData, getDescriptor, getMatrixData, getPointData, hitType, isNull, layoutProcessor, maskType, naturalBoundsType, opacityType, pathInputType, pathType, pen, positionType, registerUI, registerUIEvent, resizeType, rewrite, rewriteAble, rotationType, scaleType, sortType, strokeType, surfaceType, tempBounds$1 as tempBounds, tempMatrix, tempPoint$3 as tempPoint, useCanvas, useModule, version, visibleType, zoomLayerType };
12021
+ export { AlignHelper, Answer, App, AroundHelper, AutoBounds, BezierHelper, Bounds, BoundsHelper, Box, BoxData, Branch, BranchHelper, BranchRender, Canvas, CanvasData, CanvasManager, ChildEvent, ColorConvert, Creator, Cursor, DataHelper, Debug, Direction4, Direction9, DragEvent$1 as DragEvent, Dragger, DropEvent, Effect, Ellipse, EllipseData, EllipseHelper, Event, EventCreator, Eventer, Export, FileHelper, 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, LeaferImage, Line, LineData, MathHelper, Matrix, MatrixHelper, MoveEvent, MyDragEvent, MyImage, MyPointerEvent, NeedConvertToCanvasCommandMap, OneRadian, PI2, PI_2, Paint, PaintGradient, PaintImage, Path, PathArrow, PathBounds, PathCommandDataHelper, PathCommandMap, PathConvert, PathCorner, PathCreator, PathData, PathDrawer, PathHelper, PathNumberCommandLengthMap, PathNumberCommandMap, Pen, PenData, Picker, Platform, Plugin, Point, PointHelper, PointerButton, PointerEvent$1 as PointerEvent, Polygon, PolygonData, PropertyEvent, Rect, RectData, RectHelper, RectRender, RenderEvent, Renderer, ResizeEvent, RotateEvent, Run, Selector, Star, StarData, State, StringNumberMap, SwipeEvent, TaskItem, TaskProcessor, Text, TextConvert, TextData, Transition, TwoPointBoundsHelper, UI, UIBounds, UICreator, UIData, UIEvent, UIRender, UnitConvert, WaitHelper, WatchEvent, Watcher, ZoomEvent, affectRenderBoundsType, affectStrokeBoundsType, attr, autoLayoutType, boundsType, canvasPatch, canvasSizeAttrs, cursorType, dataProcessor, dataType, decorateLeafAttr, defineDataProcessor, defineKey, defineLeafAttr, doBoundsType, doStrokeType, effectType, emptyData, eraserType, getBoundsData, getDescriptor, getMatrixData, getPointData, hitType, isNull, layoutProcessor, maskType, naturalBoundsType, opacityType, pathInputType, pathType, pen, positionType, registerUI, registerUIEvent, resizeType, rewrite, rewriteAble, rotationType, scaleType, sortType, strokeType, surfaceType, tempBounds$1 as tempBounds, tempMatrix, tempPoint$3 as tempPoint, useCanvas, useModule, version, visibleType, zoomLayerType };