@leafer-ui/core 1.0.0-rc.17 → 1.0.0-rc.19

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.
package/lib/core.cjs CHANGED
@@ -358,17 +358,21 @@ exports.KeyEvent = __decorate([
358
358
  function design(leafer) {
359
359
  if (leafer.isApp)
360
360
  return;
361
- leafer.__eventIds.push(leafer.on_(exports.MoveEvent.BEFORE_MOVE, (e) => leafer.zoomLayer.move(e.moveX, e.moveY)), leafer.on_(exports.ZoomEvent.BEFORE_ZOOM, (e) => {
361
+ leafer.__eventIds.push(leafer.on_(exports.MoveEvent.BEFORE_MOVE, (e) => {
362
+ let { moveX, moveY } = e;
363
+ if (leafer.config.move.scroll) {
364
+ if (Math.abs(moveX) > Math.abs(moveY))
365
+ moveY = 0;
366
+ else
367
+ moveX = 0;
368
+ }
369
+ leafer.zoomLayer.move(moveX, moveY);
370
+ }), leafer.on_(exports.ZoomEvent.BEFORE_ZOOM, (e) => {
362
371
  const { zoomLayer } = leafer;
363
- const { scaleX } = zoomLayer.__, { min, max } = leafer.app.config.zoom;
364
- let { scale } = e, absScale = Math.abs(scaleX * scale);
365
- if (absScale < min)
366
- scale = min / scaleX;
367
- else if (absScale > max)
368
- scale = max / scaleX;
369
- if (scale !== 1) {
370
- core.PointHelper.scaleOf(zoomLayer, e, scale);
371
- zoomLayer.scale = scaleX * scale;
372
+ const changeScale = leafer.validScale(e.scale);
373
+ if (changeScale !== 1) {
374
+ core.PointHelper.scaleOf(zoomLayer, e, changeScale);
375
+ zoomLayer.scale = zoomLayer.__.scaleX * changeScale;
372
376
  }
373
377
  }));
374
378
  }
@@ -412,6 +416,7 @@ class Transformer {
412
416
  const { path } = interaction.selector.getByPoint(data, interaction.hitRadius);
413
417
  data.path = path;
414
418
  this.moveData = Object.assign(Object.assign({}, data), { moveX: 0, moveY: 0 });
419
+ interaction.cancelHover();
415
420
  interaction.emit(exports.MoveEvent.START, this.moveData);
416
421
  }
417
422
  data.path = this.moveData.path;
@@ -425,6 +430,7 @@ class Transformer {
425
430
  const { path } = interaction.selector.getByPoint(data, interaction.hitRadius);
426
431
  data.path = path;
427
432
  this.zoomData = Object.assign(Object.assign({}, data), { scale: 1 });
433
+ interaction.cancelHover();
428
434
  interaction.emit(exports.ZoomEvent.START, this.zoomData);
429
435
  }
430
436
  data.path = this.zoomData.path;
@@ -438,6 +444,7 @@ class Transformer {
438
444
  const { path } = interaction.selector.getByPoint(data, interaction.hitRadius);
439
445
  data.path = path;
440
446
  this.rotateData = Object.assign(Object.assign({}, data), { rotation: 0 });
447
+ interaction.cancelHover();
441
448
  interaction.emit(exports.RotateEvent.START, this.rotateData);
442
449
  }
443
450
  data.path = this.rotateData.path;
@@ -555,6 +562,7 @@ class Dragger {
555
562
  this.dragEndReal();
556
563
  this.downData = this.interaction.downData;
557
564
  this.dragData = getDragEventData(data, data, data);
565
+ this.canAnimate = this.canDragOut = true;
558
566
  }
559
567
  getList() {
560
568
  const { proxy } = this.interaction.selector;
@@ -567,11 +575,8 @@ class Dragger {
567
575
  interaction.pointerCancel();
568
576
  return;
569
577
  }
570
- else {
571
- this.canAnimate = true;
572
- }
573
578
  if (!this.moving && canDrag) {
574
- if (this.moving = interaction.moveMode || interaction.isHoldRightKey)
579
+ if (this.moving = interaction.canMove(this.downData) || interaction.isHoldRightKey)
575
580
  interaction.emit(exports.MoveEvent.START, this.dragData);
576
581
  }
577
582
  if (!this.moving) {
@@ -620,13 +625,14 @@ class Dragger {
620
625
  const list = this.getList();
621
626
  if (list.length && running) {
622
627
  const { moveX, moveY } = this.dragData;
623
- list.forEach(leaf => core.LeafHelper.moveWorld(leaf, moveX, moveY));
628
+ list.forEach(leaf => leaf.moveWorld(moveX, moveY));
624
629
  }
625
630
  }
626
631
  dragOverOrOut(data) {
627
632
  const { interaction } = this;
628
633
  const { dragOverPath } = this;
629
634
  const { path } = data;
635
+ this.dragOverPath = path;
630
636
  if (dragOverPath) {
631
637
  if (path.indexAt(0) !== dragOverPath.indexAt(0)) {
632
638
  interaction.emit(exports.DragEvent.OUT, data, dragOverPath);
@@ -636,7 +642,6 @@ class Dragger {
636
642
  else {
637
643
  interaction.emit(exports.DragEvent.OVER, data, path);
638
644
  }
639
- this.dragOverPath = path;
640
645
  }
641
646
  dragEnterOrLeave(data) {
642
647
  const { interaction } = this;
@@ -650,7 +655,7 @@ class Dragger {
650
655
  if (!this.dragData)
651
656
  return;
652
657
  const { moveX, moveY } = this.dragData;
653
- if (this.canAnimate && this.moving && (Math.abs(moveX) > 1 || Math.abs(moveY) > 1)) {
658
+ if (this.interaction.config.move.dragAnimate && this.canAnimate && this.moving && (Math.abs(moveX) > 1 || Math.abs(moveY) > 1)) {
654
659
  data = Object.assign({}, data);
655
660
  speed = (speed || (data.pointerType === 'touch' ? 2 : 1)) * 0.9;
656
661
  core.PointHelper.move(data, moveX * speed, moveY * speed);
@@ -684,12 +689,11 @@ class Dragger {
684
689
  animate(func, off) {
685
690
  const animateWait = func || this.animateWait;
686
691
  if (animateWait)
687
- this.interaction.target.nextRender(animateWait, off);
692
+ this.interaction.target.nextRender(animateWait, null, off);
688
693
  this.animateWait = func;
689
694
  }
690
695
  swipe(data, endDragData) {
691
- const { interaction } = this;
692
- const { downData } = interaction;
696
+ const { interaction, downData } = this;
693
697
  if (core.PointHelper.getDistance(downData, data) > interaction.config.pointer.swipeDistance) {
694
698
  const swipeData = getSwipeEventData(downData, this.dragData, endDragData);
695
699
  this.interaction.emit(swipeData.type, swipeData);
@@ -712,9 +716,9 @@ class Dragger {
712
716
  this.autoMoveOnDragOut(data);
713
717
  }
714
718
  autoMoveOnDragOut(data) {
715
- const { interaction, downData } = this;
719
+ const { interaction, downData, canDragOut } = this;
716
720
  const { autoDistance, dragOut } = interaction.config.move;
717
- if (!dragOut || !autoDistance)
721
+ if (!dragOut || !canDragOut || !autoDistance)
718
722
  return;
719
723
  const bounds = interaction.shrinkCanvasBounds;
720
724
  const { x, y } = bounds;
@@ -790,12 +794,16 @@ function emitAppChildren(leaf, type, data, capture, excludePath) {
790
794
  function emitEvent(leaf, type, data, capture, excludePath) {
791
795
  if (leaf.destroyed)
792
796
  return true;
793
- if (leaf.__.hitSelf && leaf.hasEvent(type, capture) && !exclude(leaf, excludePath)) {
794
- data.phase = capture ? 1 : ((leaf === data.target) ? 2 : 3);
795
- const event = core.EventCreator.get(type, data);
796
- leaf.emitEvent(event, capture);
797
- if (event.isStop)
798
- return true;
797
+ if (leaf.__.hitSelf && !exclude(leaf, excludePath)) {
798
+ if (draw$1.State.updateEventStyle)
799
+ draw$1.State.updateEventStyle(leaf, type);
800
+ if (leaf.hasEvent(type, capture)) {
801
+ data.phase = capture ? 1 : ((leaf === data.target) ? 2 : 3);
802
+ const event = core.EventCreator.get(type, data);
803
+ leaf.emitEvent(event, capture);
804
+ if (event.isStop)
805
+ return true;
806
+ }
799
807
  }
800
808
  return false;
801
809
  }
@@ -820,7 +828,6 @@ const MultiTouchHelper = {
820
828
 
821
829
  const config = {
822
830
  wheel: {
823
- zoomMode: false,
824
831
  zoomSpeed: 0.5,
825
832
  moveSpeed: 0.5,
826
833
  rotateSpeed: 0.5,
@@ -829,14 +836,12 @@ const config = {
829
836
  },
830
837
  pointer: {
831
838
  hitRadius: 5,
832
- through: false,
833
839
  tapTime: 120,
834
840
  longPressTime: 800,
835
841
  transformTime: 500,
836
842
  dragHover: true,
837
843
  dragDistance: 2,
838
844
  swipeDistance: 20,
839
- ignoreMove: false,
840
845
  preventDefaultMenu: true
841
846
  },
842
847
  cursor: {}
@@ -845,7 +850,7 @@ const config = {
845
850
  const { pathHasEventType, getMoveEventData, getZoomEventData, getRotateEventData } = InteractionHelper;
846
851
  class InteractionBase {
847
852
  get dragging() { return this.dragger.dragging; }
848
- get isDragEmpty() { return this.config.move.dragEmpty && (this.hoverData && this.hoverData.path.list[0].isLeafer) && (!this.downData || this.downData.path.list[0].isLeafer); }
853
+ get isDragEmpty() { return this.config.move.dragEmpty && this.isRootPath(this.hoverData) && (!this.downData || this.isRootPath(this.downData)); }
849
854
  get isHoldRightKey() { return this.config.move.holdRightKey && this.downData && PointerButton.right(this.downData); }
850
855
  get moveMode() { return this.config.move.drag || (this.config.move.holdSpaceKey && Keyboard.isHoldSpaceKey()) || (this.downData && ((this.config.move.holdMiddleKey && PointerButton.middle(this.downData)) || (this.isHoldRightKey && this.dragger.moving))) || this.isDragEmpty; }
851
856
  get hitRadius() { return this.config.pointer.hitRadius; }
@@ -877,12 +882,10 @@ class InteractionBase {
877
882
  return;
878
883
  PointerButton.defaultLeft(data);
879
884
  this.updateDownData(data);
880
- if (useDefaultPath)
881
- data.path = this.defaultPath;
885
+ this.checkPath(data, useDefaultPath);
886
+ this.downTime = Date.now();
882
887
  this.emit(exports.PointerEvent.BEFORE_DOWN, data);
883
888
  this.emit(exports.PointerEvent.DOWN, data);
884
- this.downTime = Date.now();
885
- this.dragger.setDragData(data);
886
889
  if (PointerButton.left(data)) {
887
890
  this.tapWait();
888
891
  this.longPressWait(data);
@@ -890,6 +893,7 @@ class InteractionBase {
890
893
  else if (PointerButton.right(data)) {
891
894
  this.waitMenuTap = true;
892
895
  }
896
+ this.dragger.setDragData(data);
893
897
  this.updateCursor(data);
894
898
  }
895
899
  pointerMove(data) {
@@ -897,14 +901,14 @@ class InteractionBase {
897
901
  data = this.hoverData;
898
902
  if (!data)
899
903
  return;
900
- if (this.downData)
904
+ const { downData } = this;
905
+ if (downData)
901
906
  PointerButton.defaultLeft(data);
902
907
  const hit = this.canvas.bounds.hitPoint(data);
903
- if (hit || this.downData) {
904
- if (hit && !this.downData && PointerButton.left(data))
905
- this.pointerDown(data, true);
908
+ if (hit || downData) {
906
909
  this.pointerMoveReal(data);
907
- this.dragger.checkDragOut(data);
910
+ if (downData)
911
+ this.dragger.checkDragOut(data);
908
912
  }
909
913
  }
910
914
  pointerMoveReal(data) {
@@ -920,9 +924,10 @@ class InteractionBase {
920
924
  }
921
925
  if (!this.dragger.moving) {
922
926
  this.updateHoverData(data);
927
+ this.checkPath(data);
923
928
  this.emit(exports.PointerEvent.MOVE, data);
924
- this.pointerOverOrOut(data);
925
- this.pointerEnterOrLeave(data);
929
+ if (!(this.dragging && !this.config.pointer.dragHover))
930
+ this.pointerHover(data);
926
931
  if (this.dragger.dragging) {
927
932
  this.dragger.dragOverOrOut(data);
928
933
  this.dragger.dragEnterOrLeave(data);
@@ -931,22 +936,22 @@ class InteractionBase {
931
936
  this.updateCursor(this.downData || data);
932
937
  }
933
938
  pointerUp(data) {
939
+ const { downData } = this;
934
940
  if (!data)
935
- data = this.downData;
936
- if (!this.downData)
941
+ data = downData;
942
+ if (!downData)
937
943
  return;
938
944
  PointerButton.defaultLeft(data);
945
+ this.downData = null;
939
946
  this.findPath(data);
947
+ data.path.addList(downData.path.list);
948
+ this.checkPath(data);
940
949
  this.emit(exports.PointerEvent.BEFORE_UP, data);
941
950
  this.emit(exports.PointerEvent.UP, data);
942
- if (this.oldDownData)
943
- this.emit(exports.PointerEvent.UP, this.oldDownData, undefined, data.path);
944
- this.emit(exports.PointerEvent.UP, this.downData, undefined, data.path);
945
951
  this.touchLeave(data);
946
952
  this.tap(data);
947
953
  this.menuTap(data);
948
954
  this.dragger.dragEnd(data);
949
- this.downData = this.oldDownData = null;
950
955
  this.updateCursor(data);
951
956
  }
952
957
  pointerCancel() {
@@ -984,8 +989,10 @@ class InteractionBase {
984
989
  this.downKeyMap[code] = true;
985
990
  Keyboard.setDownCode(code);
986
991
  this.emit(exports.KeyEvent.HOLD, data, this.defaultPath);
987
- if (this.moveMode)
992
+ if (this.moveMode) {
993
+ this.cancelHover();
988
994
  this.updateCursor();
995
+ }
989
996
  }
990
997
  this.emit(exports.KeyEvent.DOWN, data, this.defaultPath);
991
998
  }
@@ -997,32 +1004,34 @@ class InteractionBase {
997
1004
  if (this.cursor === 'grab')
998
1005
  this.updateCursor();
999
1006
  }
1007
+ pointerHover(data) {
1008
+ this.pointerOverOrOut(data);
1009
+ this.pointerEnterOrLeave(data);
1010
+ }
1000
1011
  pointerOverOrOut(data) {
1001
- if (this.dragger.moving)
1002
- return;
1003
- if (this.dragging && !this.config.pointer.dragHover)
1004
- return;
1005
1012
  const { path } = data;
1006
- if (this.overPath) {
1007
- if (path.indexAt(0) !== this.overPath.indexAt(0)) {
1008
- this.emit(exports.PointerEvent.OUT, data, this.overPath);
1013
+ const { overPath } = this;
1014
+ this.overPath = path;
1015
+ if (overPath) {
1016
+ if (path.indexAt(0) !== overPath.indexAt(0)) {
1017
+ this.emit(exports.PointerEvent.OUT, data, overPath);
1009
1018
  this.emit(exports.PointerEvent.OVER, data, path);
1010
1019
  }
1011
1020
  }
1012
1021
  else {
1013
1022
  this.emit(exports.PointerEvent.OVER, data, path);
1014
1023
  }
1015
- this.overPath = path;
1016
1024
  }
1017
1025
  pointerEnterOrLeave(data) {
1018
- if (this.dragger.moving)
1019
- return;
1020
- if (this.dragging && !this.config.pointer.dragHover)
1021
- return;
1022
- const { path } = data;
1023
- this.emit(exports.PointerEvent.LEAVE, data, this.enterPath, path);
1024
- this.emit(exports.PointerEvent.ENTER, data, path, this.enterPath);
1026
+ let { path } = data;
1027
+ if (this.downData && !this.moveMode) {
1028
+ path = path.clone();
1029
+ this.downData.path.forEach(leaf => path.add(leaf));
1030
+ }
1031
+ const { enterPath } = this;
1025
1032
  this.enterPath = path;
1033
+ this.emit(exports.PointerEvent.LEAVE, data, enterPath, path);
1034
+ this.emit(exports.PointerEvent.ENTER, data, path, enterPath);
1026
1035
  }
1027
1036
  touchLeave(data) {
1028
1037
  if (data.pointerType === 'touch') {
@@ -1075,17 +1084,44 @@ class InteractionBase {
1075
1084
  data.path = find.path;
1076
1085
  return find.path;
1077
1086
  }
1087
+ isRootPath(data) {
1088
+ return data && data.path.list[0].isLeafer;
1089
+ }
1090
+ checkPath(data, useDefaultPath) {
1091
+ if (useDefaultPath || this.canMove(data))
1092
+ data.path = this.defaultPath;
1093
+ }
1094
+ canMove(data) {
1095
+ return this.moveMode && data && data.path.list.every(item => !item.isOutside);
1096
+ }
1078
1097
  isDrag(leaf) {
1079
1098
  return this.dragger.getList().has(leaf);
1080
1099
  }
1081
- updateDownData(data, options) {
1100
+ isPress(leaf) {
1101
+ return this.downData && this.downData.path.has(leaf);
1102
+ }
1103
+ isHover(leaf) {
1104
+ return this.enterPath && this.enterPath.has(leaf);
1105
+ }
1106
+ isFocus(leaf) {
1107
+ return this.focusData === leaf;
1108
+ }
1109
+ cancelHover() {
1110
+ const { hoverData } = this;
1111
+ if (hoverData) {
1112
+ hoverData.path = this.defaultPath;
1113
+ this.pointerHover(hoverData);
1114
+ }
1115
+ }
1116
+ updateDownData(data, options, merge) {
1082
1117
  const { downData } = this;
1083
1118
  if (!data && downData)
1084
- data = Object.assign({}, downData);
1119
+ data = downData;
1085
1120
  if (!data)
1086
1121
  return;
1087
- this.oldDownData = downData;
1088
1122
  this.findPath(data, options);
1123
+ if (merge && downData)
1124
+ data.path.addList(downData.path.list);
1089
1125
  this.downData = data;
1090
1126
  }
1091
1127
  updateHoverData(data) {
@@ -1106,13 +1142,12 @@ class InteractionBase {
1106
1142
  if (this.dragger.moving) {
1107
1143
  return this.setCursor('grabbing');
1108
1144
  }
1109
- else if (this.moveMode) {
1145
+ else if (this.canMove(data)) {
1110
1146
  return this.setCursor(this.downData ? 'grabbing' : 'grab');
1111
1147
  }
1112
1148
  else if (!data)
1113
1149
  return;
1114
- let leaf;
1115
- let cursor;
1150
+ let leaf, cursor;
1116
1151
  const { path } = data;
1117
1152
  for (let i = 0, len = path.length; i < len; i++) {
1118
1153
  leaf = path.list[i];
@@ -1242,12 +1277,13 @@ class HitCanvasManager extends core.CanvasManager {
1242
1277
  }
1243
1278
  }
1244
1279
 
1245
- const { toInnerRadiusPointOf, copy, setRadius } = draw$1.PointHelper;
1280
+ const { toInnerRadiusPointOf, copy, setRadius } = core.PointHelper;
1246
1281
  const inner = {};
1247
- draw$1.Leaf.prototype.__hitWorld = function (point) {
1282
+ core.Leaf.prototype.__hitWorld = function (point) {
1248
1283
  if (this.__layout.hitCanvasChanged || !this.__hitCanvas) {
1249
1284
  this.__updateHitCanvas();
1250
- this.__layout.hitCanvasChanged = false;
1285
+ if (!this.__layout.boundsChanged)
1286
+ this.__layout.hitCanvasChanged = false;
1251
1287
  }
1252
1288
  if (this.__.hitRadius) {
1253
1289
  copy(inner, point), point = inner;
@@ -1255,7 +1291,7 @@ draw$1.Leaf.prototype.__hitWorld = function (point) {
1255
1291
  }
1256
1292
  toInnerRadiusPointOf(point, this.__world, inner);
1257
1293
  if (this.__.hitBox) {
1258
- if (draw$1.BoundsHelper.hitRadiusPoint(this.__layout.boxBounds, inner))
1294
+ if (core.BoundsHelper.hitRadiusPoint(this.__layout.boxBounds, inner))
1259
1295
  return true;
1260
1296
  }
1261
1297
  return this.__hit(inner);
@@ -1310,7 +1346,7 @@ draw$1.Rect.prototype.__updateHitCanvas = function () {
1310
1346
  ui.__updateHitCanvas.call(this);
1311
1347
  };
1312
1348
  draw$1.Rect.prototype.__hitFill = function (inner, windingRule) {
1313
- return this.__hitCanvas ? ui.__hitFill.call(this, inner, windingRule) : draw$1.BoundsHelper.hitRadiusPoint(this.__layout.boxBounds, inner);
1349
+ return this.__hitCanvas ? ui.__hitFill.call(this, inner, windingRule) : core.BoundsHelper.hitRadiusPoint(this.__layout.boxBounds, inner);
1314
1350
  };
1315
1351
 
1316
1352
  draw$1.UI.prototype.find = function (condition, options) {
package/lib/core.esm.js CHANGED
@@ -1,6 +1,6 @@
1
- import { Leafer, Leaf, BoundsHelper as BoundsHelper$1, PointHelper as PointHelper$1, UI, Rect, Group } from '@leafer-ui/draw';
1
+ import { Leafer, State, UI, Rect, Group } from '@leafer-ui/draw';
2
2
  export * from '@leafer-ui/draw';
3
- import { registerUI, Creator, PropertyEvent, Debug, DataHelper, canvasSizeAttrs, LayoutEvent, RenderEvent, Event, EventCreator, registerUIEvent, LeafList, PointHelper, LeafHelper, BoundsHelper, Bounds, ResizeEvent, LeaferEvent, CanvasManager, Platform } from '@leafer/core';
3
+ import { registerUI, Creator, PropertyEvent, Debug, DataHelper, canvasSizeAttrs, LayoutEvent, RenderEvent, Event, EventCreator, registerUIEvent, LeafList, PointHelper, BoundsHelper, Bounds, ResizeEvent, LeaferEvent, CanvasManager, Leaf, Platform } from '@leafer/core';
4
4
 
5
5
  /******************************************************************************
6
6
  Copyright (c) Microsoft Corporation.
@@ -357,17 +357,21 @@ KeyEvent = __decorate([
357
357
  function design(leafer) {
358
358
  if (leafer.isApp)
359
359
  return;
360
- leafer.__eventIds.push(leafer.on_(MoveEvent.BEFORE_MOVE, (e) => leafer.zoomLayer.move(e.moveX, e.moveY)), leafer.on_(ZoomEvent.BEFORE_ZOOM, (e) => {
360
+ leafer.__eventIds.push(leafer.on_(MoveEvent.BEFORE_MOVE, (e) => {
361
+ let { moveX, moveY } = e;
362
+ if (leafer.config.move.scroll) {
363
+ if (Math.abs(moveX) > Math.abs(moveY))
364
+ moveY = 0;
365
+ else
366
+ moveX = 0;
367
+ }
368
+ leafer.zoomLayer.move(moveX, moveY);
369
+ }), leafer.on_(ZoomEvent.BEFORE_ZOOM, (e) => {
361
370
  const { zoomLayer } = leafer;
362
- const { scaleX } = zoomLayer.__, { min, max } = leafer.app.config.zoom;
363
- let { scale } = e, absScale = Math.abs(scaleX * scale);
364
- if (absScale < min)
365
- scale = min / scaleX;
366
- else if (absScale > max)
367
- scale = max / scaleX;
368
- if (scale !== 1) {
369
- PointHelper.scaleOf(zoomLayer, e, scale);
370
- zoomLayer.scale = scaleX * scale;
371
+ const changeScale = leafer.validScale(e.scale);
372
+ if (changeScale !== 1) {
373
+ PointHelper.scaleOf(zoomLayer, e, changeScale);
374
+ zoomLayer.scale = zoomLayer.__.scaleX * changeScale;
371
375
  }
372
376
  }));
373
377
  }
@@ -411,6 +415,7 @@ class Transformer {
411
415
  const { path } = interaction.selector.getByPoint(data, interaction.hitRadius);
412
416
  data.path = path;
413
417
  this.moveData = Object.assign(Object.assign({}, data), { moveX: 0, moveY: 0 });
418
+ interaction.cancelHover();
414
419
  interaction.emit(MoveEvent.START, this.moveData);
415
420
  }
416
421
  data.path = this.moveData.path;
@@ -424,6 +429,7 @@ class Transformer {
424
429
  const { path } = interaction.selector.getByPoint(data, interaction.hitRadius);
425
430
  data.path = path;
426
431
  this.zoomData = Object.assign(Object.assign({}, data), { scale: 1 });
432
+ interaction.cancelHover();
427
433
  interaction.emit(ZoomEvent.START, this.zoomData);
428
434
  }
429
435
  data.path = this.zoomData.path;
@@ -437,6 +443,7 @@ class Transformer {
437
443
  const { path } = interaction.selector.getByPoint(data, interaction.hitRadius);
438
444
  data.path = path;
439
445
  this.rotateData = Object.assign(Object.assign({}, data), { rotation: 0 });
446
+ interaction.cancelHover();
440
447
  interaction.emit(RotateEvent.START, this.rotateData);
441
448
  }
442
449
  data.path = this.rotateData.path;
@@ -554,6 +561,7 @@ class Dragger {
554
561
  this.dragEndReal();
555
562
  this.downData = this.interaction.downData;
556
563
  this.dragData = getDragEventData(data, data, data);
564
+ this.canAnimate = this.canDragOut = true;
557
565
  }
558
566
  getList() {
559
567
  const { proxy } = this.interaction.selector;
@@ -566,11 +574,8 @@ class Dragger {
566
574
  interaction.pointerCancel();
567
575
  return;
568
576
  }
569
- else {
570
- this.canAnimate = true;
571
- }
572
577
  if (!this.moving && canDrag) {
573
- if (this.moving = interaction.moveMode || interaction.isHoldRightKey)
578
+ if (this.moving = interaction.canMove(this.downData) || interaction.isHoldRightKey)
574
579
  interaction.emit(MoveEvent.START, this.dragData);
575
580
  }
576
581
  if (!this.moving) {
@@ -619,13 +624,14 @@ class Dragger {
619
624
  const list = this.getList();
620
625
  if (list.length && running) {
621
626
  const { moveX, moveY } = this.dragData;
622
- list.forEach(leaf => LeafHelper.moveWorld(leaf, moveX, moveY));
627
+ list.forEach(leaf => leaf.moveWorld(moveX, moveY));
623
628
  }
624
629
  }
625
630
  dragOverOrOut(data) {
626
631
  const { interaction } = this;
627
632
  const { dragOverPath } = this;
628
633
  const { path } = data;
634
+ this.dragOverPath = path;
629
635
  if (dragOverPath) {
630
636
  if (path.indexAt(0) !== dragOverPath.indexAt(0)) {
631
637
  interaction.emit(DragEvent.OUT, data, dragOverPath);
@@ -635,7 +641,6 @@ class Dragger {
635
641
  else {
636
642
  interaction.emit(DragEvent.OVER, data, path);
637
643
  }
638
- this.dragOverPath = path;
639
644
  }
640
645
  dragEnterOrLeave(data) {
641
646
  const { interaction } = this;
@@ -649,7 +654,7 @@ class Dragger {
649
654
  if (!this.dragData)
650
655
  return;
651
656
  const { moveX, moveY } = this.dragData;
652
- if (this.canAnimate && this.moving && (Math.abs(moveX) > 1 || Math.abs(moveY) > 1)) {
657
+ if (this.interaction.config.move.dragAnimate && this.canAnimate && this.moving && (Math.abs(moveX) > 1 || Math.abs(moveY) > 1)) {
653
658
  data = Object.assign({}, data);
654
659
  speed = (speed || (data.pointerType === 'touch' ? 2 : 1)) * 0.9;
655
660
  PointHelper.move(data, moveX * speed, moveY * speed);
@@ -683,12 +688,11 @@ class Dragger {
683
688
  animate(func, off) {
684
689
  const animateWait = func || this.animateWait;
685
690
  if (animateWait)
686
- this.interaction.target.nextRender(animateWait, off);
691
+ this.interaction.target.nextRender(animateWait, null, off);
687
692
  this.animateWait = func;
688
693
  }
689
694
  swipe(data, endDragData) {
690
- const { interaction } = this;
691
- const { downData } = interaction;
695
+ const { interaction, downData } = this;
692
696
  if (PointHelper.getDistance(downData, data) > interaction.config.pointer.swipeDistance) {
693
697
  const swipeData = getSwipeEventData(downData, this.dragData, endDragData);
694
698
  this.interaction.emit(swipeData.type, swipeData);
@@ -711,9 +715,9 @@ class Dragger {
711
715
  this.autoMoveOnDragOut(data);
712
716
  }
713
717
  autoMoveOnDragOut(data) {
714
- const { interaction, downData } = this;
718
+ const { interaction, downData, canDragOut } = this;
715
719
  const { autoDistance, dragOut } = interaction.config.move;
716
- if (!dragOut || !autoDistance)
720
+ if (!dragOut || !canDragOut || !autoDistance)
717
721
  return;
718
722
  const bounds = interaction.shrinkCanvasBounds;
719
723
  const { x, y } = bounds;
@@ -789,12 +793,16 @@ function emitAppChildren(leaf, type, data, capture, excludePath) {
789
793
  function emitEvent(leaf, type, data, capture, excludePath) {
790
794
  if (leaf.destroyed)
791
795
  return true;
792
- if (leaf.__.hitSelf && leaf.hasEvent(type, capture) && !exclude(leaf, excludePath)) {
793
- data.phase = capture ? 1 : ((leaf === data.target) ? 2 : 3);
794
- const event = EventCreator.get(type, data);
795
- leaf.emitEvent(event, capture);
796
- if (event.isStop)
797
- return true;
796
+ if (leaf.__.hitSelf && !exclude(leaf, excludePath)) {
797
+ if (State.updateEventStyle)
798
+ State.updateEventStyle(leaf, type);
799
+ if (leaf.hasEvent(type, capture)) {
800
+ data.phase = capture ? 1 : ((leaf === data.target) ? 2 : 3);
801
+ const event = EventCreator.get(type, data);
802
+ leaf.emitEvent(event, capture);
803
+ if (event.isStop)
804
+ return true;
805
+ }
798
806
  }
799
807
  return false;
800
808
  }
@@ -819,7 +827,6 @@ const MultiTouchHelper = {
819
827
 
820
828
  const config = {
821
829
  wheel: {
822
- zoomMode: false,
823
830
  zoomSpeed: 0.5,
824
831
  moveSpeed: 0.5,
825
832
  rotateSpeed: 0.5,
@@ -828,14 +835,12 @@ const config = {
828
835
  },
829
836
  pointer: {
830
837
  hitRadius: 5,
831
- through: false,
832
838
  tapTime: 120,
833
839
  longPressTime: 800,
834
840
  transformTime: 500,
835
841
  dragHover: true,
836
842
  dragDistance: 2,
837
843
  swipeDistance: 20,
838
- ignoreMove: false,
839
844
  preventDefaultMenu: true
840
845
  },
841
846
  cursor: {}
@@ -844,7 +849,7 @@ const config = {
844
849
  const { pathHasEventType, getMoveEventData, getZoomEventData, getRotateEventData } = InteractionHelper;
845
850
  class InteractionBase {
846
851
  get dragging() { return this.dragger.dragging; }
847
- get isDragEmpty() { return this.config.move.dragEmpty && (this.hoverData && this.hoverData.path.list[0].isLeafer) && (!this.downData || this.downData.path.list[0].isLeafer); }
852
+ get isDragEmpty() { return this.config.move.dragEmpty && this.isRootPath(this.hoverData) && (!this.downData || this.isRootPath(this.downData)); }
848
853
  get isHoldRightKey() { return this.config.move.holdRightKey && this.downData && PointerButton.right(this.downData); }
849
854
  get moveMode() { return this.config.move.drag || (this.config.move.holdSpaceKey && Keyboard.isHoldSpaceKey()) || (this.downData && ((this.config.move.holdMiddleKey && PointerButton.middle(this.downData)) || (this.isHoldRightKey && this.dragger.moving))) || this.isDragEmpty; }
850
855
  get hitRadius() { return this.config.pointer.hitRadius; }
@@ -876,12 +881,10 @@ class InteractionBase {
876
881
  return;
877
882
  PointerButton.defaultLeft(data);
878
883
  this.updateDownData(data);
879
- if (useDefaultPath)
880
- data.path = this.defaultPath;
884
+ this.checkPath(data, useDefaultPath);
885
+ this.downTime = Date.now();
881
886
  this.emit(PointerEvent.BEFORE_DOWN, data);
882
887
  this.emit(PointerEvent.DOWN, data);
883
- this.downTime = Date.now();
884
- this.dragger.setDragData(data);
885
888
  if (PointerButton.left(data)) {
886
889
  this.tapWait();
887
890
  this.longPressWait(data);
@@ -889,6 +892,7 @@ class InteractionBase {
889
892
  else if (PointerButton.right(data)) {
890
893
  this.waitMenuTap = true;
891
894
  }
895
+ this.dragger.setDragData(data);
892
896
  this.updateCursor(data);
893
897
  }
894
898
  pointerMove(data) {
@@ -896,14 +900,14 @@ class InteractionBase {
896
900
  data = this.hoverData;
897
901
  if (!data)
898
902
  return;
899
- if (this.downData)
903
+ const { downData } = this;
904
+ if (downData)
900
905
  PointerButton.defaultLeft(data);
901
906
  const hit = this.canvas.bounds.hitPoint(data);
902
- if (hit || this.downData) {
903
- if (hit && !this.downData && PointerButton.left(data))
904
- this.pointerDown(data, true);
907
+ if (hit || downData) {
905
908
  this.pointerMoveReal(data);
906
- this.dragger.checkDragOut(data);
909
+ if (downData)
910
+ this.dragger.checkDragOut(data);
907
911
  }
908
912
  }
909
913
  pointerMoveReal(data) {
@@ -919,9 +923,10 @@ class InteractionBase {
919
923
  }
920
924
  if (!this.dragger.moving) {
921
925
  this.updateHoverData(data);
926
+ this.checkPath(data);
922
927
  this.emit(PointerEvent.MOVE, data);
923
- this.pointerOverOrOut(data);
924
- this.pointerEnterOrLeave(data);
928
+ if (!(this.dragging && !this.config.pointer.dragHover))
929
+ this.pointerHover(data);
925
930
  if (this.dragger.dragging) {
926
931
  this.dragger.dragOverOrOut(data);
927
932
  this.dragger.dragEnterOrLeave(data);
@@ -930,22 +935,22 @@ class InteractionBase {
930
935
  this.updateCursor(this.downData || data);
931
936
  }
932
937
  pointerUp(data) {
938
+ const { downData } = this;
933
939
  if (!data)
934
- data = this.downData;
935
- if (!this.downData)
940
+ data = downData;
941
+ if (!downData)
936
942
  return;
937
943
  PointerButton.defaultLeft(data);
944
+ this.downData = null;
938
945
  this.findPath(data);
946
+ data.path.addList(downData.path.list);
947
+ this.checkPath(data);
939
948
  this.emit(PointerEvent.BEFORE_UP, data);
940
949
  this.emit(PointerEvent.UP, data);
941
- if (this.oldDownData)
942
- this.emit(PointerEvent.UP, this.oldDownData, undefined, data.path);
943
- this.emit(PointerEvent.UP, this.downData, undefined, data.path);
944
950
  this.touchLeave(data);
945
951
  this.tap(data);
946
952
  this.menuTap(data);
947
953
  this.dragger.dragEnd(data);
948
- this.downData = this.oldDownData = null;
949
954
  this.updateCursor(data);
950
955
  }
951
956
  pointerCancel() {
@@ -983,8 +988,10 @@ class InteractionBase {
983
988
  this.downKeyMap[code] = true;
984
989
  Keyboard.setDownCode(code);
985
990
  this.emit(KeyEvent.HOLD, data, this.defaultPath);
986
- if (this.moveMode)
991
+ if (this.moveMode) {
992
+ this.cancelHover();
987
993
  this.updateCursor();
994
+ }
988
995
  }
989
996
  this.emit(KeyEvent.DOWN, data, this.defaultPath);
990
997
  }
@@ -996,32 +1003,34 @@ class InteractionBase {
996
1003
  if (this.cursor === 'grab')
997
1004
  this.updateCursor();
998
1005
  }
1006
+ pointerHover(data) {
1007
+ this.pointerOverOrOut(data);
1008
+ this.pointerEnterOrLeave(data);
1009
+ }
999
1010
  pointerOverOrOut(data) {
1000
- if (this.dragger.moving)
1001
- return;
1002
- if (this.dragging && !this.config.pointer.dragHover)
1003
- return;
1004
1011
  const { path } = data;
1005
- if (this.overPath) {
1006
- if (path.indexAt(0) !== this.overPath.indexAt(0)) {
1007
- this.emit(PointerEvent.OUT, data, this.overPath);
1012
+ const { overPath } = this;
1013
+ this.overPath = path;
1014
+ if (overPath) {
1015
+ if (path.indexAt(0) !== overPath.indexAt(0)) {
1016
+ this.emit(PointerEvent.OUT, data, overPath);
1008
1017
  this.emit(PointerEvent.OVER, data, path);
1009
1018
  }
1010
1019
  }
1011
1020
  else {
1012
1021
  this.emit(PointerEvent.OVER, data, path);
1013
1022
  }
1014
- this.overPath = path;
1015
1023
  }
1016
1024
  pointerEnterOrLeave(data) {
1017
- if (this.dragger.moving)
1018
- return;
1019
- if (this.dragging && !this.config.pointer.dragHover)
1020
- return;
1021
- const { path } = data;
1022
- this.emit(PointerEvent.LEAVE, data, this.enterPath, path);
1023
- this.emit(PointerEvent.ENTER, data, path, this.enterPath);
1025
+ let { path } = data;
1026
+ if (this.downData && !this.moveMode) {
1027
+ path = path.clone();
1028
+ this.downData.path.forEach(leaf => path.add(leaf));
1029
+ }
1030
+ const { enterPath } = this;
1024
1031
  this.enterPath = path;
1032
+ this.emit(PointerEvent.LEAVE, data, enterPath, path);
1033
+ this.emit(PointerEvent.ENTER, data, path, enterPath);
1025
1034
  }
1026
1035
  touchLeave(data) {
1027
1036
  if (data.pointerType === 'touch') {
@@ -1074,17 +1083,44 @@ class InteractionBase {
1074
1083
  data.path = find.path;
1075
1084
  return find.path;
1076
1085
  }
1086
+ isRootPath(data) {
1087
+ return data && data.path.list[0].isLeafer;
1088
+ }
1089
+ checkPath(data, useDefaultPath) {
1090
+ if (useDefaultPath || this.canMove(data))
1091
+ data.path = this.defaultPath;
1092
+ }
1093
+ canMove(data) {
1094
+ return this.moveMode && data && data.path.list.every(item => !item.isOutside);
1095
+ }
1077
1096
  isDrag(leaf) {
1078
1097
  return this.dragger.getList().has(leaf);
1079
1098
  }
1080
- updateDownData(data, options) {
1099
+ isPress(leaf) {
1100
+ return this.downData && this.downData.path.has(leaf);
1101
+ }
1102
+ isHover(leaf) {
1103
+ return this.enterPath && this.enterPath.has(leaf);
1104
+ }
1105
+ isFocus(leaf) {
1106
+ return this.focusData === leaf;
1107
+ }
1108
+ cancelHover() {
1109
+ const { hoverData } = this;
1110
+ if (hoverData) {
1111
+ hoverData.path = this.defaultPath;
1112
+ this.pointerHover(hoverData);
1113
+ }
1114
+ }
1115
+ updateDownData(data, options, merge) {
1081
1116
  const { downData } = this;
1082
1117
  if (!data && downData)
1083
- data = Object.assign({}, downData);
1118
+ data = downData;
1084
1119
  if (!data)
1085
1120
  return;
1086
- this.oldDownData = downData;
1087
1121
  this.findPath(data, options);
1122
+ if (merge && downData)
1123
+ data.path.addList(downData.path.list);
1088
1124
  this.downData = data;
1089
1125
  }
1090
1126
  updateHoverData(data) {
@@ -1105,13 +1141,12 @@ class InteractionBase {
1105
1141
  if (this.dragger.moving) {
1106
1142
  return this.setCursor('grabbing');
1107
1143
  }
1108
- else if (this.moveMode) {
1144
+ else if (this.canMove(data)) {
1109
1145
  return this.setCursor(this.downData ? 'grabbing' : 'grab');
1110
1146
  }
1111
1147
  else if (!data)
1112
1148
  return;
1113
- let leaf;
1114
- let cursor;
1149
+ let leaf, cursor;
1115
1150
  const { path } = data;
1116
1151
  for (let i = 0, len = path.length; i < len; i++) {
1117
1152
  leaf = path.list[i];
@@ -1241,12 +1276,13 @@ class HitCanvasManager extends CanvasManager {
1241
1276
  }
1242
1277
  }
1243
1278
 
1244
- const { toInnerRadiusPointOf, copy, setRadius } = PointHelper$1;
1279
+ const { toInnerRadiusPointOf, copy, setRadius } = PointHelper;
1245
1280
  const inner = {};
1246
1281
  Leaf.prototype.__hitWorld = function (point) {
1247
1282
  if (this.__layout.hitCanvasChanged || !this.__hitCanvas) {
1248
1283
  this.__updateHitCanvas();
1249
- this.__layout.hitCanvasChanged = false;
1284
+ if (!this.__layout.boundsChanged)
1285
+ this.__layout.hitCanvasChanged = false;
1250
1286
  }
1251
1287
  if (this.__.hitRadius) {
1252
1288
  copy(inner, point), point = inner;
@@ -1254,7 +1290,7 @@ Leaf.prototype.__hitWorld = function (point) {
1254
1290
  }
1255
1291
  toInnerRadiusPointOf(point, this.__world, inner);
1256
1292
  if (this.__.hitBox) {
1257
- if (BoundsHelper$1.hitRadiusPoint(this.__layout.boxBounds, inner))
1293
+ if (BoundsHelper.hitRadiusPoint(this.__layout.boxBounds, inner))
1258
1294
  return true;
1259
1295
  }
1260
1296
  return this.__hit(inner);
@@ -1309,7 +1345,7 @@ Rect.prototype.__updateHitCanvas = function () {
1309
1345
  ui.__updateHitCanvas.call(this);
1310
1346
  };
1311
1347
  Rect.prototype.__hitFill = function (inner, windingRule) {
1312
- return this.__hitCanvas ? ui.__hitFill.call(this, inner, windingRule) : BoundsHelper$1.hitRadiusPoint(this.__layout.boxBounds, inner);
1348
+ return this.__hitCanvas ? ui.__hitFill.call(this, inner, windingRule) : BoundsHelper.hitRadiusPoint(this.__layout.boxBounds, inner);
1313
1349
  };
1314
1350
 
1315
1351
  UI.prototype.find = function (condition, options) {
@@ -1 +1 @@
1
- import{Leafer as t,Leaf as e,BoundsHelper as i,PointHelper as a,UI as s,Rect as r,Group as n}from"@leafer-ui/draw";export*from"@leafer-ui/draw";import{registerUI as o,Creator as h,PropertyEvent as d,Debug as g,DataHelper as c,canvasSizeAttrs as l,LayoutEvent as u,RenderEvent as p,Event as m,EventCreator as v,registerUIEvent as _,LeafList as f,PointHelper as D,LeafHelper as E,BoundsHelper as y,Bounds as O,ResizeEvent as T,LeaferEvent as R,CanvasManager as P,Platform as w}from"@leafer/core";function C(t,e,i,a){var s,r=arguments.length,n=r<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,i):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(t,e,i,a);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(n=(r<3?s(n):r>3?s(e,i,n):s(e,i))||n);return r>3&&n&&Object.defineProperty(e,i,n),n}"function"==typeof SuppressedError&&SuppressedError;let L=class extends t{get __tag(){return"App"}get isApp(){return!0}constructor(t,e){super(t,e)}init(t,e){if(super.init(t,e),t){const{ground:e,tree:i,sky:a,editor:s}=t;e&&(this.ground=this.addLeafer(e)),(i||s)&&(this.tree=this.addLeafer(i)),(a||s)&&(this.sky=this.addLeafer(a||{type:"draw",usePartRender:!1})),s&&(this.editor=h.editor(s),this.sky.add(this.editor))}}__setApp(){const{canvas:t}=this,{realCanvas:e,view:i}=this.config;e||i===this.canvas.view||!t.parentView?this.realCanvas=!0:t.unrealCanvas(),this.leafer=this,this.watcher.disable(),this.layouter.disable(),this.__eventIds.push(this.on_(d.CHANGE,this.__onPropertyChange,this))}start(){super.start(),this.children.forEach((t=>t.start()))}stop(){this.children.forEach((t=>t.stop())),super.stop()}unlockLayout(){super.unlockLayout(),this.children.forEach((t=>t.unlockLayout()))}lockLayout(){super.lockLayout(),this.children.forEach((t=>t.lockLayout()))}forceRender(t){this.children.forEach((e=>e.forceRender(t)))}addLeafer(e){const i=new t(e);return this.add(i),i}add(t){if(!t.view){if(this.realCanvas&&!this.canvas.bounds)return void setTimeout((()=>this.add(t)),10);t.init(this.__getChildConfig(t.userConfig),this)}super.add(t),this.__listenChildEvents(t)}__onPropertyChange(){g.showHitView&&this.children.forEach((t=>t.forceUpdate("surface")))}__onCreated(){this.created=this.children.every((t=>t.created))}__onReady(){this.children.every((t=>t.ready))&&super.__onReady()}__onViewReady(){this.children.every((t=>t.viewReady))&&super.__onViewReady()}__onChildRenderEnd(t){this.renderer.addBlock(t.renderBounds),this.viewReady&&this.renderer.update()}__render(t,e){this.children.forEach((e=>t.copyWorld(e.canvas)))}__onResize(t){this.children.forEach((e=>e.resize(t))),super.__onResize(t)}__checkUpdateLayout(){this.children.forEach((t=>t.__layout.update()))}__getChildConfig(t){let e=Object.assign({},this.config);return e.hittable=e.realCanvas=void 0,t&&c.assign(e,t),this.autoLayout&&c.copyAttrs(e,this,l),e.view=this.realCanvas?void 0:this.view,e.fill=void 0,e}__listenChildEvents(t){t.once(u.END,(()=>this.__onReady())),t.once(p.START,(()=>this.__onCreated())),t.once(p.END,(()=>this.__onViewReady())),this.realCanvas&&this.__eventIds.push(t.on_(p.END,this.__onChildRenderEnd,this))}};L=C([o()],L);const b={},M={isHoldSpaceKey:()=>M.isHold("Space"),isHold:t=>b[t],setDownCode(t){b[t]||(b[t]=!0)},setUpCode(t){b[t]=!1}},A={LEFT:1,RIGHT:2,MIDDLE:4,defaultLeft(t){t.buttons||(t.buttons=1)},left:t=>1===t.buttons,right:t=>2===t.buttons,middle:t=>4===t.buttons};class x extends m{get spaceKey(){return M.isHoldSpaceKey()}get left(){return A.left(this)}get right(){return A.right(this)}get middle(){return A.middle(this)}constructor(t){super(t.type),this.bubbles=!0,Object.assign(this,t)}getPage(){return this.current.getPagePoint(this)}getInner(t){return t||(t=this.current),t.getInnerPoint(this)}getLocal(t){return t||(t=this.current),t.getLocalPoint(this)}static changeName(t,e){v.changeName(t,e)}}let B=class extends x{};B.POINTER="pointer",B.BEFORE_DOWN="pointer.before_down",B.BEFORE_MOVE="pointer.before_move",B.BEFORE_UP="pointer.before_up",B.DOWN="pointer.down",B.MOVE="pointer.move",B.UP="pointer.up",B.OVER="pointer.over",B.OUT="pointer.out",B.ENTER="pointer.enter",B.LEAVE="pointer.leave",B.TAP="tap",B.DOUBLE_TAP="double_tap",B.CLICK="click",B.DOUBLE_CLICK="double_click",B.LONG_PRESS="long_press",B.LONG_TAP="long_tap",B.MENU="pointer.menu",B.MENU_TAP="pointer.menu_tap",B=C([_()],B);const k={};let S=class extends B{static setList(t){this.list=t instanceof f?t:new f(t)}static setData(t){this.data=t}getPageMove(t){return this.assignMove(t),this.current.getPagePoint(k,null,!0)}getInnerMove(t,e){return t||(t=this.current),this.assignMove(e),t.getInnerPoint(k,null,!0)}getLocalMove(t,e){return t||(t=this.current),this.assignMove(e),t.getLocalPoint(k,null,!0)}getPageTotal(){return this.getPageMove(!0)}getInnerTotal(t){return this.getInnerMove(t,!0)}getLocalTotal(t){return this.getLocalMove(t,!0)}assignMove(t){k.x=t?this.totalX:this.moveX,k.y=t?this.totalY:this.moveY}};S.BEFORE_DRAG="drag.before_drag",S.START="drag.start",S.DRAG="drag",S.END="drag.end",S.OVER="drag.over",S.OUT="drag.out",S.ENTER="drag.enter",S.LEAVE="drag.leave",S=C([_()],S);let N=class extends B{static setList(t){S.setList(t)}static setData(t){S.setData(t)}};N.DROP="drop",N=C([_()],N);let W=class extends S{};W.BEFORE_MOVE="move.before_move",W.START="move.start",W.MOVE="move",W.END="move.end",W=C([_()],W);let j=class extends x{};j.BEFORE_ROTATE="rotate.before_rotate",j.START="rotate.start",j.ROTATE="rotate",j.END="rotate.end",j=C([_()],j);let z=class extends S{};z.SWIPE="swipe",z.LEFT="swipe.left",z.RIGHT="swipe.right",z.UP="swipe.up",z.DOWN="swipe.down",z=C([_()],z);let H=class extends x{};H.BEFORE_ZOOM="zoom.before_zoom",H.START="zoom.start",H.ZOOM="zoom",H.END="zoom.end",H=C([_()],H);let I=class extends x{};I.DOWN="key.down",I.HOLD="key.hold",I.UP="key.up",I=C([_()],I);const U=g.get("LeaferTypeCreator"),V={list:{},register(t,e){K[t]?U.repeat(t):K[t]=e},run(t,e){const i=K[t];i?i(e):U.error("no",t)}},{list:K,register:F}=V;F("draw",(function(t){const{config:e}=t;e.move.dragOut=!1})),F("design",(function(t){t.isApp||t.__eventIds.push(t.on_(W.BEFORE_MOVE,(e=>t.zoomLayer.move(e.moveX,e.moveY))),t.on_(H.BEFORE_ZOOM,(e=>{const{zoomLayer:i}=t,{scaleX:a}=i.__,{min:s,max:r}=t.app.config.zoom;let{scale:n}=e,o=Math.abs(a*n);o<s?n=s/a:o>r&&(n=r/a),1!==n&&(D.scaleOf(i,e,n),i.scale=a*n)})))})),t.prototype.initType=function(t){V.run(t,this)};class X{constructor(t){this.interaction=t}move(t){const{interaction:e}=this;if(!this.moveData){const{path:i}=e.selector.getByPoint(t,e.hitRadius);t.path=i,this.moveData=Object.assign(Object.assign({},t),{moveX:0,moveY:0}),e.emit(W.START,this.moveData)}t.path=this.moveData.path,e.emit(W.BEFORE_MOVE,t),e.emit(W.MOVE,t),this.transformEndWait()}zoom(t){const{interaction:e}=this;if(!this.zoomData){const{path:i}=e.selector.getByPoint(t,e.hitRadius);t.path=i,this.zoomData=Object.assign(Object.assign({},t),{scale:1}),e.emit(H.START,this.zoomData)}t.path=this.zoomData.path,e.emit(H.BEFORE_ZOOM,t),e.emit(H.ZOOM,t),this.transformEndWait()}rotate(t){const{interaction:e}=this;if(!this.rotateData){const{path:i}=e.selector.getByPoint(t,e.hitRadius);t.path=i,this.rotateData=Object.assign(Object.assign({},t),{rotation:0}),e.emit(j.START,this.rotateData)}t.path=this.rotateData.path,e.emit(j.BEFORE_ROTATE,t),e.emit(j.ROTATE,t),this.transformEndWait()}transformEndWait(){clearTimeout(this.transformTimer),this.transformTimer=setTimeout((()=>{this.transformEnd()}),this.interaction.config.pointer.transformTime)}transformEnd(){this.moveEnd(),this.zoomEnd(),this.rotateEnd()}moveEnd(){this.moveData&&(this.interaction.emit(W.END,this.moveData),this.moveData=null)}zoomEnd(){this.zoomData&&(this.interaction.emit(H.END,this.zoomData),this.zoomData=null)}rotateEnd(){this.rotateData&&(this.interaction.emit(j.END,this.rotateData),this.rotateData=null)}destroy(){this.zoomData=this.moveData=this.rotateData=null}}const Y={getMoveEventData:(t,e,i)=>Object.assign(Object.assign({},i),{x:t.x,y:t.y,moveX:e.x,moveY:e.y}),getRotateEventData:(t,e,i)=>Object.assign(Object.assign({},i),{x:t.x,y:t.y,rotation:e}),getZoomEventData:(t,e,i)=>Object.assign(Object.assign({},i),{x:t.x,y:t.y,scale:e}),getDragEventData:(t,e,i)=>Object.assign(Object.assign({},i),{x:i.x,y:i.y,moveX:i.x-e.x,moveY:i.y-e.y,totalX:i.x-t.x,totalY:i.y-t.y}),getDropEventData:(t,e,i)=>Object.assign(Object.assign({},t),{list:e,data:i}),getSwipeDirection:t=>t<-45&&t>-135?z.UP:t>45&&t<135?z.DOWN:t<=45&&t>=-45?z.RIGHT:z.LEFT,getSwipeEventData:(t,e,i)=>Object.assign(Object.assign({},i),{moveX:e.moveX,moveY:e.moveY,totalX:i.x-t.x,totalY:i.y-t.y,type:G.getSwipeDirection(D.getAngle(t,i))}),getBase(t){const e=1===t.button?4:t.button;return{altKey:t.altKey,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,metaKey:t.metaKey,buttons:void 0===t.buttons?1:0===t.buttons?e:t.buttons,origin:t}},pathHasEventType(t,e){const{list:i}=t;for(let t=0,a=i.length;t<a;t++)if(i[t].hasEvent(e))return!0;return!1},filterPathByEventType(t,e){const i=new f,{list:a}=t;for(let t=0,s=a.length;t<s;t++)a[t].hasEvent(e)&&i.add(a[t]);return i}},G=Y,Z=new f,{getDragEventData:q,getDropEventData:J,getSwipeEventData:Q}=Y;class ${constructor(t){this.interaction=t}setDragData(t){this.animateWait&&this.dragEndReal(),this.downData=this.interaction.downData,this.dragData=q(t,t,t)}getList(){const{proxy:t}=this.interaction.selector;return!this.dragging||t&&t.list.length?Z:S.list||this.dragableList||Z}checkDrag(t,e){const{interaction:i}=this;if(this.moving&&t.buttons<1)return this.canAnimate=!1,void i.pointerCancel();this.canAnimate=!0,!this.moving&&e&&(this.moving=i.moveMode||i.isHoldRightKey)&&i.emit(W.START,this.dragData),this.moving||this.dragStart(t,e),this.drag(t)}dragStart(t,e){this.dragging||(this.dragging=e&&A.left(t),this.dragging&&(this.interaction.emit(S.START,this.dragData),this.getDragableList(this.dragData.path)))}getDragableList(t){let e;for(let i=0,a=t.length;i<a;i++)if(e=t.list[i],(e.__.draggable||e.__.editable)&&e.__.hitSelf&&!e.__.locked){this.dragableList=new f(e);break}}drag(t){const{interaction:e,dragData:i,downData:a}=this,{path:s,throughPath:r}=a;this.dragData=q(a,i,t),r&&(this.dragData.throughPath=r),this.dragData.path=s,this.moving?(e.emit(W.BEFORE_MOVE,this.dragData),e.emit(W.MOVE,this.dragData)):this.dragging&&(this.dragReal(),e.emit(S.BEFORE_DRAG,this.dragData),e.emit(S.DRAG,this.dragData))}dragReal(){const{running:t}=this.interaction,e=this.getList();if(e.length&&t){const{moveX:t,moveY:i}=this.dragData;e.forEach((e=>E.moveWorld(e,t,i)))}}dragOverOrOut(t){const{interaction:e}=this,{dragOverPath:i}=this,{path:a}=t;i?a.indexAt(0)!==i.indexAt(0)&&(e.emit(S.OUT,t,i),e.emit(S.OVER,t,a)):e.emit(S.OVER,t,a),this.dragOverPath=a}dragEnterOrLeave(t){const{interaction:e}=this,{dragEnterPath:i}=this,{path:a}=t;e.emit(S.LEAVE,t,i,a),e.emit(S.ENTER,t,a,i),this.dragEnterPath=a}dragEnd(t,e){if(!this.dragData)return;const{moveX:i,moveY:a}=this.dragData;this.canAnimate&&this.moving&&(Math.abs(i)>1||Math.abs(a)>1)?(t=Object.assign({},t),e=.9*(e||("touch"===t.pointerType?2:1)),D.move(t,i*e,a*e),this.drag(t),this.animate((()=>{this.dragEnd(t,1)}))):this.dragEndReal(t)}dragEndReal(t){const{interaction:e,downData:i,dragData:a}=this;t||(t=a);const{path:s,throughPath:r}=i,n=q(i,t,t);r&&(n.throughPath=r),n.path=s,this.moving&&e.emit(W.END,n),this.dragging&&(e.emit(S.END,n),this.swipe(t,n),this.drop(t)),this.autoMoveCancel(),this.dragReset(),this.animate(null,"off")}animate(t,e){const i=t||this.animateWait;i&&this.interaction.target.nextRender(i,e),this.animateWait=t}swipe(t,e){const{interaction:i}=this,{downData:a}=i;if(D.getDistance(a,t)>i.config.pointer.swipeDistance){const t=Q(a,this.dragData,e);this.interaction.emit(t.type,t)}}drop(t){const e=J(t,this.getList(),S.data);e.path=this.dragEnterPath,this.interaction.emit(N.DROP,e),this.interaction.emit(S.LEAVE,t,this.dragEnterPath)}dragReset(){S.list=S.data=this.dragableList=this.dragData=this.downData=this.dragOverPath=this.dragEnterPath=null,this.dragging=this.moving=!1}checkDragOut(t){const{interaction:e}=this;this.autoMoveCancel(),this.dragging&&!e.shrinkCanvasBounds.hitPoint(t)&&this.autoMoveOnDragOut(t)}autoMoveOnDragOut(t){const{interaction:e,downData:i}=this,{autoDistance:a,dragOut:s}=e.config.move;if(!s||!a)return;const r=e.shrinkCanvasBounds,{x:n,y:o}=r,h=y.maxX(r),d=y.maxY(r),g=t.x<n?a:h<t.x?-a:0,c=t.y<o?a:d<t.y?-a:0;let l=0,u=0;this.autoMoveTimer=setInterval((()=>{l+=g,u+=c,D.move(i,g,c),D.move(this.dragData,g,c),e.move(Object.assign(Object.assign({},t),{moveX:g,moveY:c,totalX:l,totalY:u})),e.pointerMoveReal(t)}),10)}autoMoveCancel(){this.autoMoveTimer&&(clearInterval(this.autoMoveTimer),this.autoMoveTimer=0)}destroy(){this.dragReset()}}const tt=g.get("emit");const et=["move","zoom","rotate","key"];function it(t,e,i,a,s){if(et.some((t=>e.startsWith(t)))&&t.__.hitChildren&&!st(t,s)){let r;for(let n=0,o=t.children.length;n<o;n++)r=t.children[n],!i.path.has(r)&&r.__.hittable&&at(r,e,i,a,s)}}function at(t,e,i,a,s){if(t.destroyed)return!0;if(t.__.hitSelf&&t.hasEvent(e,a)&&!st(t,s)){i.phase=a?1:t===i.target?2:3;const s=v.get(e,i);if(t.emitEvent(s,a),s.isStop)return!0}return!1}function st(t,e){return e&&e.has(t)}const rt={getData(t){const e=t[0],i=t[1],a=D.getCenter(e.from,i.from),s=D.getCenter(e.to,i.to),r={x:s.x-a.x,y:s.y-a.y},n=D.getDistance(e.from,i.from);return{move:r,scale:D.getDistance(e.to,i.to)/n,angle:D.getRotation(e.from,i.from,e.to,i.to),center:s}}},nt={wheel:{zoomMode:!1,zoomSpeed:.5,moveSpeed:.5,rotateSpeed:.5,delta:{x:20,y:8},preventDefault:!0},pointer:{hitRadius:5,through:!1,tapTime:120,longPressTime:800,transformTime:500,dragHover:!0,dragDistance:2,swipeDistance:20,ignoreMove:!1,preventDefaultMenu:!0},cursor:{}},{pathHasEventType:ot,getMoveEventData:ht,getZoomEventData:dt,getRotateEventData:gt}=Y;class ct{get dragging(){return this.dragger.dragging}get isDragEmpty(){return this.config.move.dragEmpty&&this.hoverData&&this.hoverData.path.list[0].isLeafer&&(!this.downData||this.downData.path.list[0].isLeafer)}get isHoldRightKey(){return this.config.move.holdRightKey&&this.downData&&A.right(this.downData)}get moveMode(){return this.config.move.drag||this.config.move.holdSpaceKey&&M.isHoldSpaceKey()||this.downData&&(this.config.move.holdMiddleKey&&A.middle(this.downData)||this.isHoldRightKey&&this.dragger.moving)||this.isDragEmpty}get hitRadius(){return this.config.pointer.hitRadius}constructor(t,e,i,a){this.config=nt,this.tapCount=0,this.downKeyMap={},this.target=t,this.canvas=e,this.selector=i,this.defaultPath=new f(t),this.transformer=new X(this),this.dragger=new $(this),a&&(this.config=c.default(a,this.config)),this.__listenEvents()}start(){this.running=!0}stop(){this.running=!1}receive(t){}pointerDown(t,e){t||(t=this.hoverData),t&&(A.defaultLeft(t),this.updateDownData(t),e&&(t.path=this.defaultPath),this.emit(B.BEFORE_DOWN,t),this.emit(B.DOWN,t),this.downTime=Date.now(),this.dragger.setDragData(t),A.left(t)?(this.tapWait(),this.longPressWait(t)):A.right(t)&&(this.waitMenuTap=!0),this.updateCursor(t))}pointerMove(t){if(t||(t=this.hoverData),!t)return;this.downData&&A.defaultLeft(t);const e=this.canvas.bounds.hitPoint(t);(e||this.downData)&&(e&&!this.downData&&A.left(t)&&this.pointerDown(t,!0),this.pointerMoveReal(t),this.dragger.checkDragOut(t))}pointerMoveReal(t){if(this.emit(B.BEFORE_MOVE,t,this.defaultPath),this.downData){const e=D.getDistance(this.downData,t)>this.config.pointer.dragDistance;e&&(this.waitTap&&this.pointerWaitCancel(),this.waitMenuTap=!1),this.dragger.checkDrag(t,e)}this.dragger.moving||(this.updateHoverData(t),this.emit(B.MOVE,t),this.pointerOverOrOut(t),this.pointerEnterOrLeave(t),this.dragger.dragging&&(this.dragger.dragOverOrOut(t),this.dragger.dragEnterOrLeave(t))),this.updateCursor(this.downData||t)}pointerUp(t){t||(t=this.downData),this.downData&&(A.defaultLeft(t),this.findPath(t),this.emit(B.BEFORE_UP,t),this.emit(B.UP,t),this.oldDownData&&this.emit(B.UP,this.oldDownData,void 0,t.path),this.emit(B.UP,this.downData,void 0,t.path),this.touchLeave(t),this.tap(t),this.menuTap(t),this.dragger.dragEnd(t),this.downData=this.oldDownData=null,this.updateCursor(t))}pointerCancel(){this.pointerUp(this.dragger.dragData)}multiTouch(t,e){const{move:i,angle:a,scale:s,center:r}=rt.getData(e);this.rotate(gt(r,a,t)),this.zoom(dt(r,s,t)),this.move(ht(r,i,t))}menu(t){this.findPath(t),this.emit(B.MENU,t)}menuTap(t){this.waitMenuTap&&this.emit(B.MENU_TAP,t)}move(t){this.transformer.move(t)}zoom(t){this.transformer.zoom(t)}rotate(t){this.transformer.rotate(t)}transformEnd(){this.transformer.transformEnd()}keyDown(t){const{code:e}=t;this.downKeyMap[e]||(this.downKeyMap[e]=!0,M.setDownCode(e),this.emit(I.HOLD,t,this.defaultPath),this.moveMode&&this.updateCursor()),this.emit(I.DOWN,t,this.defaultPath)}keyUp(t){const{code:e}=t;this.downKeyMap[e]=!1,M.setUpCode(e),this.emit(I.UP,t,this.defaultPath),"grab"===this.cursor&&this.updateCursor()}pointerOverOrOut(t){if(this.dragger.moving)return;if(this.dragging&&!this.config.pointer.dragHover)return;const{path:e}=t;this.overPath?e.indexAt(0)!==this.overPath.indexAt(0)&&(this.emit(B.OUT,t,this.overPath),this.emit(B.OVER,t,e)):this.emit(B.OVER,t,e),this.overPath=e}pointerEnterOrLeave(t){if(this.dragger.moving)return;if(this.dragging&&!this.config.pointer.dragHover)return;const{path:e}=t;this.emit(B.LEAVE,t,this.enterPath,e),this.emit(B.ENTER,t,e,this.enterPath),this.enterPath=e}touchLeave(t){"touch"===t.pointerType&&this.enterPath&&(this.emit(B.LEAVE,t),this.dragger.dragging&&this.emit(N.LEAVE,t))}tap(t){const{pointer:e}=this.config,i=this.longTap(t);if(!e.tapMore&&i)return;if(!this.waitTap)return;e.tapMore&&this.emitTap(t);const a=Date.now()-this.downTime,s=[B.DOUBLE_TAP,B.DOUBLE_CLICK].some((e=>ot(t.path,e)));a<e.tapTime+50&&s?(this.tapCount++,2===this.tapCount?(this.tapWaitCancel(),this.emitDoubleTap(t)):(clearTimeout(this.tapTimer),this.tapTimer=setTimeout((()=>{e.tapMore||(this.tapWaitCancel(),this.emitTap(t))}),e.tapTime))):e.tapMore||(this.tapWaitCancel(),this.emitTap(t))}findPath(t,e){const{hitRadius:i,through:a}=this.config.pointer,s=this.selector.getByPoint(t,i,e||{through:a});return s.throughPath&&(t.throughPath=s.throughPath),t.path=s.path,s.path}isDrag(t){return this.dragger.getList().has(t)}updateDownData(t,e){const{downData:i}=this;!t&&i&&(t=Object.assign({},i)),t&&(this.oldDownData=i,this.findPath(t,e),this.downData=t)}updateHoverData(t){t||(t=this.hoverData),t&&(this.findPath(t,{exclude:this.dragger.getList(),name:B.MOVE}),this.hoverData=t)}updateCursor(t){if(this.config.cursor.stop)return;if(t||(this.updateHoverData(),t=this.downData||this.hoverData),this.dragger.moving)return this.setCursor("grabbing");if(this.moveMode)return this.setCursor(this.downData?"grabbing":"grab");if(!t)return;let e,i;const{path:a}=t;for(let t=0,s=a.length;t<s&&(e=a.list[t],i=e.cursor,!i);t++);this.setCursor(i)}setCursor(t){this.cursor=t}emitTap(t){this.emit(B.TAP,t),this.emit(B.CLICK,t)}emitDoubleTap(t){this.emit(B.DOUBLE_TAP,t),this.emit(B.DOUBLE_CLICK,t)}pointerWaitCancel(){this.tapWaitCancel(),this.longPressWaitCancel()}tapWait(){clearTimeout(this.tapTimer),this.waitTap=!0}tapWaitCancel(){clearTimeout(this.tapTimer),this.waitTap=!1,this.tapCount=0}longPressWait(t){clearTimeout(this.longPressTimer),this.longPressTimer=setTimeout((()=>{this.longPressed=!0,this.emit(B.LONG_PRESS,t)}),this.config.pointer.longPressTime)}longTap(t){let e;return this.longPressed&&(this.emit(B.LONG_TAP,t),ot(t.path,B.LONG_TAP)&&(e=!0)),this.longPressWaitCancel(),e}longPressWaitCancel(){clearTimeout(this.longPressTimer),this.longPressed=!1}__onResize(){this.shrinkCanvasBounds=new O(this.canvas.bounds),this.shrinkCanvasBounds.spread(-2)}__listenEvents(){const{target:t}=this;this.__eventIds=[t.on_(T.RESIZE,this.__onResize,this)],t.once(R.READY,(()=>this.__onResize()))}__removeListenEvents(){this.target.off_(this.__eventIds),this.__eventIds.length=0}emit(t,e,i,a){this.running&&function(t,e,i,a){if(!i&&!e.path)return;let s;e.type=t,i?e=Object.assign(Object.assign({},e),{path:i}):i=e.path,e.target=i.indexAt(0);try{for(let r=i.length-1;r>-1;r--){if(s=i.list[r],at(s,t,e,!0,a))return;s.isApp&&it(s,t,e,!0,a)}for(let r=0,n=i.length;r<n;r++)if(s=i.list[r],s.isApp&&it(s,t,e,!1,a),at(s,t,e,!1,a))return}catch(t){tt.error(t)}}(t,e,i,a)}destroy(){this.__eventIds.length&&(this.stop(),this.__removeListenEvents(),this.dragger.destroy(),this.transformer.destroy(),this.downData=this.overPath=this.enterPath=null)}}class lt{static set(t,e){this.custom[t]=e}static get(t){return this.custom[t]}}lt.custom={};class ut extends P{constructor(){super(...arguments),this.pathTypeList=new f,this.imageTypeList=new f}getImageType(t,e){return this.imageTypeList.add(t),h.hitCanvas(e)}getPathType(t){return this.pathTypeList.add(t),h.hitCanvas()}clearImageType(){this.__clearLeafList(this.imageTypeList)}clearPathType(){this.__clearLeafList(this.pathTypeList)}__clearLeafList(t){t.length&&(t.forEach((t=>{t.__hitCanvas&&(t.__hitCanvas.destroy(),t.__hitCanvas=null)})),t.reset())}clear(){this.clearPathType(),this.clearImageType()}}const{toInnerRadiusPointOf:pt,copy:mt,setRadius:vt}=a,_t={};e.prototype.__hitWorld=function(t){return!this.__layout.hitCanvasChanged&&this.__hitCanvas||(this.__updateHitCanvas(),this.__layout.hitCanvasChanged=!1),this.__.hitRadius&&(mt(_t,t),vt(t=_t,this.__.hitRadius)),pt(t,this.__world,_t),!(!this.__.hitBox||!i.hitRadiusPoint(this.__layout.boxBounds,_t))||this.__hit(_t)},s.prototype.__updateHitCanvas=function(){this.__hitCanvas||(this.__hitCanvas=this.leafer.hitCanvasManager.getPathType(this));const t=this.__hitCanvas;this.__drawHitPath(t),t.setStrokeOptions(this.__)},s.prototype.__hit=function(t){"miniapp"===w.name&&this.__drawHitPath(this.__hitCanvas);const{fill:e,hitFill:i,windingRule:a}=this.__,s=e&&"path"===i||"all"===i,r=this.__hitFill(t,a);if(s&&r)return!0;const{stroke:n,hitStroke:o,__strokeWidth:h,strokeAlign:d}=this.__,g=n&&"path"===o||"all"===o,c=2*t.radiusX;let l=c;if(g)switch(d){case"inside":if(l+=2*h,!s&&r&&this.__hitStroke(t,l))return!0;l=c;break;case"center":l+=h;break;case"outside":if(l+=2*h,!s){if(!r&&this.__hitStroke(t,l))return!0;l=c}}return!!l&&this.__hitStroke(t,l)};const ft=new s;r.prototype.__updateHitCanvas=function(){(this.stroke||this.cornerRadius)&&ft.__updateHitCanvas.call(this)},r.prototype.__hitFill=function(t,e){return this.__hitCanvas?ft.__hitFill.call(this,t,e):i.hitRadiusPoint(this.__layout.boxBounds,t)},s.prototype.find=function(t,e){return this.leafer?this.leafer.selector.getBy(t,this,!1,e):[]},s.prototype.findOne=function(t,e){return this.leafer?this.leafer.selector.getBy(t,this,!0,e):null},n.prototype.pick=function(t,e){return this.__layout.update(),e||(e={}),this.leafer?this.leafer.selector.getByPoint(t,e.hitRadius||0,Object.assign(Object.assign({},e),{target:this})):null};export{L as App,lt as Cursor,S as DragEvent,N as DropEvent,ut as HitCanvasManager,ct as InteractionBase,Y as InteractionHelper,I as KeyEvent,M as Keyboard,V as LeaferTypeCreator,W as MoveEvent,rt as MultiTouchHelper,A as PointerButton,B as PointerEvent,j as RotateEvent,z as SwipeEvent,x as UIEvent,H as ZoomEvent};
1
+ import{Leafer as t,State as e,UI as i,Rect as a,Group as s}from"@leafer-ui/draw";export*from"@leafer-ui/draw";import{registerUI as r,Creator as n,PropertyEvent as o,Debug as h,DataHelper as d,canvasSizeAttrs as c,LayoutEvent as g,RenderEvent as l,Event as u,EventCreator as p,registerUIEvent as m,LeafList as v,PointHelper as _,BoundsHelper as f,Bounds as E,ResizeEvent as D,LeaferEvent as y,CanvasManager as O,Leaf as T,Platform as P}from"@leafer/core";function R(t,e,i,a){var s,r=arguments.length,n=r<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,i):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(t,e,i,a);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(n=(r<3?s(n):r>3?s(e,i,n):s(e,i))||n);return r>3&&n&&Object.defineProperty(e,i,n),n}"function"==typeof SuppressedError&&SuppressedError;let w=class extends t{get __tag(){return"App"}get isApp(){return!0}constructor(t,e){super(t,e)}init(t,e){if(super.init(t,e),t){const{ground:e,tree:i,sky:a,editor:s}=t;e&&(this.ground=this.addLeafer(e)),(i||s)&&(this.tree=this.addLeafer(i)),(a||s)&&(this.sky=this.addLeafer(a||{type:"draw",usePartRender:!1})),s&&(this.editor=n.editor(s),this.sky.add(this.editor))}}__setApp(){const{canvas:t}=this,{realCanvas:e,view:i}=this.config;e||i===this.canvas.view||!t.parentView?this.realCanvas=!0:t.unrealCanvas(),this.leafer=this,this.watcher.disable(),this.layouter.disable(),this.__eventIds.push(this.on_(o.CHANGE,this.__onPropertyChange,this))}start(){super.start(),this.children.forEach((t=>t.start()))}stop(){this.children.forEach((t=>t.stop())),super.stop()}unlockLayout(){super.unlockLayout(),this.children.forEach((t=>t.unlockLayout()))}lockLayout(){super.lockLayout(),this.children.forEach((t=>t.lockLayout()))}forceRender(t){this.children.forEach((e=>e.forceRender(t)))}addLeafer(e){const i=new t(e);return this.add(i),i}add(t){if(!t.view){if(this.realCanvas&&!this.canvas.bounds)return void setTimeout((()=>this.add(t)),10);t.init(this.__getChildConfig(t.userConfig),this)}super.add(t),this.__listenChildEvents(t)}__onPropertyChange(){h.showHitView&&this.children.forEach((t=>t.forceUpdate("surface")))}__onCreated(){this.created=this.children.every((t=>t.created))}__onReady(){this.children.every((t=>t.ready))&&super.__onReady()}__onViewReady(){this.children.every((t=>t.viewReady))&&super.__onViewReady()}__onChildRenderEnd(t){this.renderer.addBlock(t.renderBounds),this.viewReady&&this.renderer.update()}__render(t,e){this.children.forEach((e=>t.copyWorld(e.canvas)))}__onResize(t){this.children.forEach((e=>e.resize(t))),super.__onResize(t)}__checkUpdateLayout(){this.children.forEach((t=>t.__layout.update()))}__getChildConfig(t){let e=Object.assign({},this.config);return e.hittable=e.realCanvas=void 0,t&&d.assign(e,t),this.autoLayout&&d.copyAttrs(e,this,c),e.view=this.realCanvas?void 0:this.view,e.fill=void 0,e}__listenChildEvents(t){t.once(g.END,(()=>this.__onReady())),t.once(l.START,(()=>this.__onCreated())),t.once(l.END,(()=>this.__onViewReady())),this.realCanvas&&this.__eventIds.push(t.on_(l.END,this.__onChildRenderEnd,this))}};w=R([r()],w);const C={},L={isHoldSpaceKey:()=>L.isHold("Space"),isHold:t=>C[t],setDownCode(t){C[t]||(C[t]=!0)},setUpCode(t){C[t]=!1}},b={LEFT:1,RIGHT:2,MIDDLE:4,defaultLeft(t){t.buttons||(t.buttons=1)},left:t=>1===t.buttons,right:t=>2===t.buttons,middle:t=>4===t.buttons};class M extends u{get spaceKey(){return L.isHoldSpaceKey()}get left(){return b.left(this)}get right(){return b.right(this)}get middle(){return b.middle(this)}constructor(t){super(t.type),this.bubbles=!0,Object.assign(this,t)}getPage(){return this.current.getPagePoint(this)}getInner(t){return t||(t=this.current),t.getInnerPoint(this)}getLocal(t){return t||(t=this.current),t.getLocalPoint(this)}static changeName(t,e){p.changeName(t,e)}}let A=class extends M{};A.POINTER="pointer",A.BEFORE_DOWN="pointer.before_down",A.BEFORE_MOVE="pointer.before_move",A.BEFORE_UP="pointer.before_up",A.DOWN="pointer.down",A.MOVE="pointer.move",A.UP="pointer.up",A.OVER="pointer.over",A.OUT="pointer.out",A.ENTER="pointer.enter",A.LEAVE="pointer.leave",A.TAP="tap",A.DOUBLE_TAP="double_tap",A.CLICK="click",A.DOUBLE_CLICK="double_click",A.LONG_PRESS="long_press",A.LONG_TAP="long_tap",A.MENU="pointer.menu",A.MENU_TAP="pointer.menu_tap",A=R([m()],A);const x={};let k=class extends A{static setList(t){this.list=t instanceof v?t:new v(t)}static setData(t){this.data=t}getPageMove(t){return this.assignMove(t),this.current.getPagePoint(x,null,!0)}getInnerMove(t,e){return t||(t=this.current),this.assignMove(e),t.getInnerPoint(x,null,!0)}getLocalMove(t,e){return t||(t=this.current),this.assignMove(e),t.getLocalPoint(x,null,!0)}getPageTotal(){return this.getPageMove(!0)}getInnerTotal(t){return this.getInnerMove(t,!0)}getLocalTotal(t){return this.getLocalMove(t,!0)}assignMove(t){x.x=t?this.totalX:this.moveX,x.y=t?this.totalY:this.moveY}};k.BEFORE_DRAG="drag.before_drag",k.START="drag.start",k.DRAG="drag",k.END="drag.end",k.OVER="drag.over",k.OUT="drag.out",k.ENTER="drag.enter",k.LEAVE="drag.leave",k=R([m()],k);let S=class extends A{static setList(t){k.setList(t)}static setData(t){k.setData(t)}};S.DROP="drop",S=R([m()],S);let B=class extends k{};B.BEFORE_MOVE="move.before_move",B.START="move.start",B.MOVE="move",B.END="move.end",B=R([m()],B);let H=class extends M{};H.BEFORE_ROTATE="rotate.before_rotate",H.START="rotate.start",H.ROTATE="rotate",H.END="rotate.end",H=R([m()],H);let N=class extends k{};N.SWIPE="swipe",N.LEFT="swipe.left",N.RIGHT="swipe.right",N.UP="swipe.up",N.DOWN="swipe.down",N=R([m()],N);let W=class extends M{};W.BEFORE_ZOOM="zoom.before_zoom",W.START="zoom.start",W.ZOOM="zoom",W.END="zoom.end",W=R([m()],W);let I=class extends M{};I.DOWN="key.down",I.HOLD="key.hold",I.UP="key.up",I=R([m()],I);const j=h.get("LeaferTypeCreator"),V={list:{},register(t,e){z[t]?j.repeat(t):z[t]=e},run(t,e){const i=z[t];i?i(e):j.error("no",t)}},{list:z,register:U}=V;U("draw",(function(t){const{config:e}=t;e.move.dragOut=!1})),U("design",(function(t){t.isApp||t.__eventIds.push(t.on_(B.BEFORE_MOVE,(e=>{let{moveX:i,moveY:a}=e;t.config.move.scroll&&(Math.abs(i)>Math.abs(a)?a=0:i=0),t.zoomLayer.move(i,a)})),t.on_(W.BEFORE_ZOOM,(e=>{const{zoomLayer:i}=t,a=t.validScale(e.scale);1!==a&&(_.scaleOf(i,e,a),i.scale=i.__.scaleX*a)})))})),t.prototype.initType=function(t){V.run(t,this)};class K{constructor(t){this.interaction=t}move(t){const{interaction:e}=this;if(!this.moveData){const{path:i}=e.selector.getByPoint(t,e.hitRadius);t.path=i,this.moveData=Object.assign(Object.assign({},t),{moveX:0,moveY:0}),e.cancelHover(),e.emit(B.START,this.moveData)}t.path=this.moveData.path,e.emit(B.BEFORE_MOVE,t),e.emit(B.MOVE,t),this.transformEndWait()}zoom(t){const{interaction:e}=this;if(!this.zoomData){const{path:i}=e.selector.getByPoint(t,e.hitRadius);t.path=i,this.zoomData=Object.assign(Object.assign({},t),{scale:1}),e.cancelHover(),e.emit(W.START,this.zoomData)}t.path=this.zoomData.path,e.emit(W.BEFORE_ZOOM,t),e.emit(W.ZOOM,t),this.transformEndWait()}rotate(t){const{interaction:e}=this;if(!this.rotateData){const{path:i}=e.selector.getByPoint(t,e.hitRadius);t.path=i,this.rotateData=Object.assign(Object.assign({},t),{rotation:0}),e.cancelHover(),e.emit(H.START,this.rotateData)}t.path=this.rotateData.path,e.emit(H.BEFORE_ROTATE,t),e.emit(H.ROTATE,t),this.transformEndWait()}transformEndWait(){clearTimeout(this.transformTimer),this.transformTimer=setTimeout((()=>{this.transformEnd()}),this.interaction.config.pointer.transformTime)}transformEnd(){this.moveEnd(),this.zoomEnd(),this.rotateEnd()}moveEnd(){this.moveData&&(this.interaction.emit(B.END,this.moveData),this.moveData=null)}zoomEnd(){this.zoomData&&(this.interaction.emit(W.END,this.zoomData),this.zoomData=null)}rotateEnd(){this.rotateData&&(this.interaction.emit(H.END,this.rotateData),this.rotateData=null)}destroy(){this.zoomData=this.moveData=this.rotateData=null}}const F={getMoveEventData:(t,e,i)=>Object.assign(Object.assign({},i),{x:t.x,y:t.y,moveX:e.x,moveY:e.y}),getRotateEventData:(t,e,i)=>Object.assign(Object.assign({},i),{x:t.x,y:t.y,rotation:e}),getZoomEventData:(t,e,i)=>Object.assign(Object.assign({},i),{x:t.x,y:t.y,scale:e}),getDragEventData:(t,e,i)=>Object.assign(Object.assign({},i),{x:i.x,y:i.y,moveX:i.x-e.x,moveY:i.y-e.y,totalX:i.x-t.x,totalY:i.y-t.y}),getDropEventData:(t,e,i)=>Object.assign(Object.assign({},t),{list:e,data:i}),getSwipeDirection:t=>t<-45&&t>-135?N.UP:t>45&&t<135?N.DOWN:t<=45&&t>=-45?N.RIGHT:N.LEFT,getSwipeEventData:(t,e,i)=>Object.assign(Object.assign({},i),{moveX:e.moveX,moveY:e.moveY,totalX:i.x-t.x,totalY:i.y-t.y,type:X.getSwipeDirection(_.getAngle(t,i))}),getBase(t){const e=1===t.button?4:t.button;return{altKey:t.altKey,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,metaKey:t.metaKey,buttons:void 0===t.buttons?1:0===t.buttons?e:t.buttons,origin:t}},pathHasEventType(t,e){const{list:i}=t;for(let t=0,a=i.length;t<a;t++)if(i[t].hasEvent(e))return!0;return!1},filterPathByEventType(t,e){const i=new v,{list:a}=t;for(let t=0,s=a.length;t<s;t++)a[t].hasEvent(e)&&i.add(a[t]);return i}},X=F,Y=new v,{getDragEventData:G,getDropEventData:Z,getSwipeEventData:q}=F;class J{constructor(t){this.interaction=t}setDragData(t){this.animateWait&&this.dragEndReal(),this.downData=this.interaction.downData,this.dragData=G(t,t,t),this.canAnimate=this.canDragOut=!0}getList(){const{proxy:t}=this.interaction.selector;return!this.dragging||t&&t.list.length?Y:k.list||this.dragableList||Y}checkDrag(t,e){const{interaction:i}=this;if(this.moving&&t.buttons<1)return this.canAnimate=!1,void i.pointerCancel();!this.moving&&e&&(this.moving=i.canMove(this.downData)||i.isHoldRightKey)&&i.emit(B.START,this.dragData),this.moving||this.dragStart(t,e),this.drag(t)}dragStart(t,e){this.dragging||(this.dragging=e&&b.left(t),this.dragging&&(this.interaction.emit(k.START,this.dragData),this.getDragableList(this.dragData.path)))}getDragableList(t){let e;for(let i=0,a=t.length;i<a;i++)if(e=t.list[i],(e.__.draggable||e.__.editable)&&e.__.hitSelf&&!e.__.locked){this.dragableList=new v(e);break}}drag(t){const{interaction:e,dragData:i,downData:a}=this,{path:s,throughPath:r}=a;this.dragData=G(a,i,t),r&&(this.dragData.throughPath=r),this.dragData.path=s,this.moving?(e.emit(B.BEFORE_MOVE,this.dragData),e.emit(B.MOVE,this.dragData)):this.dragging&&(this.dragReal(),e.emit(k.BEFORE_DRAG,this.dragData),e.emit(k.DRAG,this.dragData))}dragReal(){const{running:t}=this.interaction,e=this.getList();if(e.length&&t){const{moveX:t,moveY:i}=this.dragData;e.forEach((e=>e.moveWorld(t,i)))}}dragOverOrOut(t){const{interaction:e}=this,{dragOverPath:i}=this,{path:a}=t;this.dragOverPath=a,i?a.indexAt(0)!==i.indexAt(0)&&(e.emit(k.OUT,t,i),e.emit(k.OVER,t,a)):e.emit(k.OVER,t,a)}dragEnterOrLeave(t){const{interaction:e}=this,{dragEnterPath:i}=this,{path:a}=t;e.emit(k.LEAVE,t,i,a),e.emit(k.ENTER,t,a,i),this.dragEnterPath=a}dragEnd(t,e){if(!this.dragData)return;const{moveX:i,moveY:a}=this.dragData;this.interaction.config.move.dragAnimate&&this.canAnimate&&this.moving&&(Math.abs(i)>1||Math.abs(a)>1)?(t=Object.assign({},t),e=.9*(e||("touch"===t.pointerType?2:1)),_.move(t,i*e,a*e),this.drag(t),this.animate((()=>{this.dragEnd(t,1)}))):this.dragEndReal(t)}dragEndReal(t){const{interaction:e,downData:i,dragData:a}=this;t||(t=a);const{path:s,throughPath:r}=i,n=G(i,t,t);r&&(n.throughPath=r),n.path=s,this.moving&&e.emit(B.END,n),this.dragging&&(e.emit(k.END,n),this.swipe(t,n),this.drop(t)),this.autoMoveCancel(),this.dragReset(),this.animate(null,"off")}animate(t,e){const i=t||this.animateWait;i&&this.interaction.target.nextRender(i,null,e),this.animateWait=t}swipe(t,e){const{interaction:i,downData:a}=this;if(_.getDistance(a,t)>i.config.pointer.swipeDistance){const t=q(a,this.dragData,e);this.interaction.emit(t.type,t)}}drop(t){const e=Z(t,this.getList(),k.data);e.path=this.dragEnterPath,this.interaction.emit(S.DROP,e),this.interaction.emit(k.LEAVE,t,this.dragEnterPath)}dragReset(){k.list=k.data=this.dragableList=this.dragData=this.downData=this.dragOverPath=this.dragEnterPath=null,this.dragging=this.moving=!1}checkDragOut(t){const{interaction:e}=this;this.autoMoveCancel(),this.dragging&&!e.shrinkCanvasBounds.hitPoint(t)&&this.autoMoveOnDragOut(t)}autoMoveOnDragOut(t){const{interaction:e,downData:i,canDragOut:a}=this,{autoDistance:s,dragOut:r}=e.config.move;if(!r||!a||!s)return;const n=e.shrinkCanvasBounds,{x:o,y:h}=n,d=f.maxX(n),c=f.maxY(n),g=t.x<o?s:d<t.x?-s:0,l=t.y<h?s:c<t.y?-s:0;let u=0,p=0;this.autoMoveTimer=setInterval((()=>{u+=g,p+=l,_.move(i,g,l),_.move(this.dragData,g,l),e.move(Object.assign(Object.assign({},t),{moveX:g,moveY:l,totalX:u,totalY:p})),e.pointerMoveReal(t)}),10)}autoMoveCancel(){this.autoMoveTimer&&(clearInterval(this.autoMoveTimer),this.autoMoveTimer=0)}destroy(){this.dragReset()}}const Q=h.get("emit");const $=["move","zoom","rotate","key"];function tt(t,e,i,a,s){if($.some((t=>e.startsWith(t)))&&t.__.hitChildren&&!it(t,s)){let r;for(let n=0,o=t.children.length;n<o;n++)r=t.children[n],!i.path.has(r)&&r.__.hittable&&et(r,e,i,a,s)}}function et(t,i,a,s,r){if(t.destroyed)return!0;if(t.__.hitSelf&&!it(t,r)&&(e.updateEventStyle&&e.updateEventStyle(t,i),t.hasEvent(i,s))){a.phase=s?1:t===a.target?2:3;const e=p.get(i,a);if(t.emitEvent(e,s),e.isStop)return!0}return!1}function it(t,e){return e&&e.has(t)}const at={getData(t){const e=t[0],i=t[1],a=_.getCenter(e.from,i.from),s=_.getCenter(e.to,i.to),r={x:s.x-a.x,y:s.y-a.y},n=_.getDistance(e.from,i.from);return{move:r,scale:_.getDistance(e.to,i.to)/n,angle:_.getRotation(e.from,i.from,e.to,i.to),center:s}}},st={wheel:{zoomSpeed:.5,moveSpeed:.5,rotateSpeed:.5,delta:{x:20,y:8},preventDefault:!0},pointer:{hitRadius:5,tapTime:120,longPressTime:800,transformTime:500,dragHover:!0,dragDistance:2,swipeDistance:20,preventDefaultMenu:!0},cursor:{}},{pathHasEventType:rt,getMoveEventData:nt,getZoomEventData:ot,getRotateEventData:ht}=F;class dt{get dragging(){return this.dragger.dragging}get isDragEmpty(){return this.config.move.dragEmpty&&this.isRootPath(this.hoverData)&&(!this.downData||this.isRootPath(this.downData))}get isHoldRightKey(){return this.config.move.holdRightKey&&this.downData&&b.right(this.downData)}get moveMode(){return this.config.move.drag||this.config.move.holdSpaceKey&&L.isHoldSpaceKey()||this.downData&&(this.config.move.holdMiddleKey&&b.middle(this.downData)||this.isHoldRightKey&&this.dragger.moving)||this.isDragEmpty}get hitRadius(){return this.config.pointer.hitRadius}constructor(t,e,i,a){this.config=st,this.tapCount=0,this.downKeyMap={},this.target=t,this.canvas=e,this.selector=i,this.defaultPath=new v(t),this.transformer=new K(this),this.dragger=new J(this),a&&(this.config=d.default(a,this.config)),this.__listenEvents()}start(){this.running=!0}stop(){this.running=!1}receive(t){}pointerDown(t,e){t||(t=this.hoverData),t&&(b.defaultLeft(t),this.updateDownData(t),this.checkPath(t,e),this.downTime=Date.now(),this.emit(A.BEFORE_DOWN,t),this.emit(A.DOWN,t),b.left(t)?(this.tapWait(),this.longPressWait(t)):b.right(t)&&(this.waitMenuTap=!0),this.dragger.setDragData(t),this.updateCursor(t))}pointerMove(t){if(t||(t=this.hoverData),!t)return;const{downData:e}=this;e&&b.defaultLeft(t);(this.canvas.bounds.hitPoint(t)||e)&&(this.pointerMoveReal(t),e&&this.dragger.checkDragOut(t))}pointerMoveReal(t){if(this.emit(A.BEFORE_MOVE,t,this.defaultPath),this.downData){const e=_.getDistance(this.downData,t)>this.config.pointer.dragDistance;e&&(this.waitTap&&this.pointerWaitCancel(),this.waitMenuTap=!1),this.dragger.checkDrag(t,e)}this.dragger.moving||(this.updateHoverData(t),this.checkPath(t),this.emit(A.MOVE,t),this.dragging&&!this.config.pointer.dragHover||this.pointerHover(t),this.dragger.dragging&&(this.dragger.dragOverOrOut(t),this.dragger.dragEnterOrLeave(t))),this.updateCursor(this.downData||t)}pointerUp(t){const{downData:e}=this;t||(t=e),e&&(b.defaultLeft(t),this.downData=null,this.findPath(t),t.path.addList(e.path.list),this.checkPath(t),this.emit(A.BEFORE_UP,t),this.emit(A.UP,t),this.touchLeave(t),this.tap(t),this.menuTap(t),this.dragger.dragEnd(t),this.updateCursor(t))}pointerCancel(){this.pointerUp(this.dragger.dragData)}multiTouch(t,e){const{move:i,angle:a,scale:s,center:r}=at.getData(e);this.rotate(ht(r,a,t)),this.zoom(ot(r,s,t)),this.move(nt(r,i,t))}menu(t){this.findPath(t),this.emit(A.MENU,t)}menuTap(t){this.waitMenuTap&&this.emit(A.MENU_TAP,t)}move(t){this.transformer.move(t)}zoom(t){this.transformer.zoom(t)}rotate(t){this.transformer.rotate(t)}transformEnd(){this.transformer.transformEnd()}keyDown(t){const{code:e}=t;this.downKeyMap[e]||(this.downKeyMap[e]=!0,L.setDownCode(e),this.emit(I.HOLD,t,this.defaultPath),this.moveMode&&(this.cancelHover(),this.updateCursor())),this.emit(I.DOWN,t,this.defaultPath)}keyUp(t){const{code:e}=t;this.downKeyMap[e]=!1,L.setUpCode(e),this.emit(I.UP,t,this.defaultPath),"grab"===this.cursor&&this.updateCursor()}pointerHover(t){this.pointerOverOrOut(t),this.pointerEnterOrLeave(t)}pointerOverOrOut(t){const{path:e}=t,{overPath:i}=this;this.overPath=e,i?e.indexAt(0)!==i.indexAt(0)&&(this.emit(A.OUT,t,i),this.emit(A.OVER,t,e)):this.emit(A.OVER,t,e)}pointerEnterOrLeave(t){let{path:e}=t;this.downData&&!this.moveMode&&(e=e.clone(),this.downData.path.forEach((t=>e.add(t))));const{enterPath:i}=this;this.enterPath=e,this.emit(A.LEAVE,t,i,e),this.emit(A.ENTER,t,e,i)}touchLeave(t){"touch"===t.pointerType&&this.enterPath&&(this.emit(A.LEAVE,t),this.dragger.dragging&&this.emit(S.LEAVE,t))}tap(t){const{pointer:e}=this.config,i=this.longTap(t);if(!e.tapMore&&i)return;if(!this.waitTap)return;e.tapMore&&this.emitTap(t);const a=Date.now()-this.downTime,s=[A.DOUBLE_TAP,A.DOUBLE_CLICK].some((e=>rt(t.path,e)));a<e.tapTime+50&&s?(this.tapCount++,2===this.tapCount?(this.tapWaitCancel(),this.emitDoubleTap(t)):(clearTimeout(this.tapTimer),this.tapTimer=setTimeout((()=>{e.tapMore||(this.tapWaitCancel(),this.emitTap(t))}),e.tapTime))):e.tapMore||(this.tapWaitCancel(),this.emitTap(t))}findPath(t,e){const{hitRadius:i,through:a}=this.config.pointer,s=this.selector.getByPoint(t,i,e||{through:a});return s.throughPath&&(t.throughPath=s.throughPath),t.path=s.path,s.path}isRootPath(t){return t&&t.path.list[0].isLeafer}checkPath(t,e){(e||this.canMove(t))&&(t.path=this.defaultPath)}canMove(t){return this.moveMode&&t&&t.path.list.every((t=>!t.isOutside))}isDrag(t){return this.dragger.getList().has(t)}isPress(t){return this.downData&&this.downData.path.has(t)}isHover(t){return this.enterPath&&this.enterPath.has(t)}isFocus(t){return this.focusData===t}cancelHover(){const{hoverData:t}=this;t&&(t.path=this.defaultPath,this.pointerHover(t))}updateDownData(t,e,i){const{downData:a}=this;!t&&a&&(t=a),t&&(this.findPath(t,e),i&&a&&t.path.addList(a.path.list),this.downData=t)}updateHoverData(t){t||(t=this.hoverData),t&&(this.findPath(t,{exclude:this.dragger.getList(),name:A.MOVE}),this.hoverData=t)}updateCursor(t){if(this.config.cursor.stop)return;if(t||(this.updateHoverData(),t=this.downData||this.hoverData),this.dragger.moving)return this.setCursor("grabbing");if(this.canMove(t))return this.setCursor(this.downData?"grabbing":"grab");if(!t)return;let e,i;const{path:a}=t;for(let t=0,s=a.length;t<s&&(e=a.list[t],i=e.cursor,!i);t++);this.setCursor(i)}setCursor(t){this.cursor=t}emitTap(t){this.emit(A.TAP,t),this.emit(A.CLICK,t)}emitDoubleTap(t){this.emit(A.DOUBLE_TAP,t),this.emit(A.DOUBLE_CLICK,t)}pointerWaitCancel(){this.tapWaitCancel(),this.longPressWaitCancel()}tapWait(){clearTimeout(this.tapTimer),this.waitTap=!0}tapWaitCancel(){clearTimeout(this.tapTimer),this.waitTap=!1,this.tapCount=0}longPressWait(t){clearTimeout(this.longPressTimer),this.longPressTimer=setTimeout((()=>{this.longPressed=!0,this.emit(A.LONG_PRESS,t)}),this.config.pointer.longPressTime)}longTap(t){let e;return this.longPressed&&(this.emit(A.LONG_TAP,t),rt(t.path,A.LONG_TAP)&&(e=!0)),this.longPressWaitCancel(),e}longPressWaitCancel(){clearTimeout(this.longPressTimer),this.longPressed=!1}__onResize(){this.shrinkCanvasBounds=new E(this.canvas.bounds),this.shrinkCanvasBounds.spread(-2)}__listenEvents(){const{target:t}=this;this.__eventIds=[t.on_(D.RESIZE,this.__onResize,this)],t.once(y.READY,(()=>this.__onResize()))}__removeListenEvents(){this.target.off_(this.__eventIds),this.__eventIds.length=0}emit(t,e,i,a){this.running&&function(t,e,i,a){if(!i&&!e.path)return;let s;e.type=t,i?e=Object.assign(Object.assign({},e),{path:i}):i=e.path,e.target=i.indexAt(0);try{for(let r=i.length-1;r>-1;r--){if(s=i.list[r],et(s,t,e,!0,a))return;s.isApp&&tt(s,t,e,!0,a)}for(let r=0,n=i.length;r<n;r++)if(s=i.list[r],s.isApp&&tt(s,t,e,!1,a),et(s,t,e,!1,a))return}catch(t){Q.error(t)}}(t,e,i,a)}destroy(){this.__eventIds.length&&(this.stop(),this.__removeListenEvents(),this.dragger.destroy(),this.transformer.destroy(),this.downData=this.overPath=this.enterPath=null)}}class ct{static set(t,e){this.custom[t]=e}static get(t){return this.custom[t]}}ct.custom={};class gt extends O{constructor(){super(...arguments),this.pathTypeList=new v,this.imageTypeList=new v}getImageType(t,e){return this.imageTypeList.add(t),n.hitCanvas(e)}getPathType(t){return this.pathTypeList.add(t),n.hitCanvas()}clearImageType(){this.__clearLeafList(this.imageTypeList)}clearPathType(){this.__clearLeafList(this.pathTypeList)}__clearLeafList(t){t.length&&(t.forEach((t=>{t.__hitCanvas&&(t.__hitCanvas.destroy(),t.__hitCanvas=null)})),t.reset())}clear(){this.clearPathType(),this.clearImageType()}}const{toInnerRadiusPointOf:lt,copy:ut,setRadius:pt}=_,mt={};T.prototype.__hitWorld=function(t){return!this.__layout.hitCanvasChanged&&this.__hitCanvas||(this.__updateHitCanvas(),this.__layout.boundsChanged||(this.__layout.hitCanvasChanged=!1)),this.__.hitRadius&&(ut(mt,t),pt(t=mt,this.__.hitRadius)),lt(t,this.__world,mt),!(!this.__.hitBox||!f.hitRadiusPoint(this.__layout.boxBounds,mt))||this.__hit(mt)},i.prototype.__updateHitCanvas=function(){this.__hitCanvas||(this.__hitCanvas=this.leafer.hitCanvasManager.getPathType(this));const t=this.__hitCanvas;this.__drawHitPath(t),t.setStrokeOptions(this.__)},i.prototype.__hit=function(t){"miniapp"===P.name&&this.__drawHitPath(this.__hitCanvas);const{fill:e,hitFill:i,windingRule:a}=this.__,s=e&&"path"===i||"all"===i,r=this.__hitFill(t,a);if(s&&r)return!0;const{stroke:n,hitStroke:o,__strokeWidth:h,strokeAlign:d}=this.__,c=n&&"path"===o||"all"===o,g=2*t.radiusX;let l=g;if(c)switch(d){case"inside":if(l+=2*h,!s&&r&&this.__hitStroke(t,l))return!0;l=g;break;case"center":l+=h;break;case"outside":if(l+=2*h,!s){if(!r&&this.__hitStroke(t,l))return!0;l=g}}return!!l&&this.__hitStroke(t,l)};const vt=new i;a.prototype.__updateHitCanvas=function(){(this.stroke||this.cornerRadius)&&vt.__updateHitCanvas.call(this)},a.prototype.__hitFill=function(t,e){return this.__hitCanvas?vt.__hitFill.call(this,t,e):f.hitRadiusPoint(this.__layout.boxBounds,t)},i.prototype.find=function(t,e){return this.leafer?this.leafer.selector.getBy(t,this,!1,e):[]},i.prototype.findOne=function(t,e){return this.leafer?this.leafer.selector.getBy(t,this,!0,e):null},s.prototype.pick=function(t,e){return this.__layout.update(),e||(e={}),this.leafer?this.leafer.selector.getByPoint(t,e.hitRadius||0,Object.assign(Object.assign({},e),{target:this})):null};export{w as App,ct as Cursor,k as DragEvent,S as DropEvent,gt as HitCanvasManager,dt as InteractionBase,F as InteractionHelper,I as KeyEvent,L as Keyboard,V as LeaferTypeCreator,B as MoveEvent,at as MultiTouchHelper,b as PointerButton,A as PointerEvent,H as RotateEvent,N as SwipeEvent,M as UIEvent,W as ZoomEvent};
package/lib/core.min.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var t=require("@leafer-ui/draw"),e=require("@leafer/core");function i(t,e,i,s){var r,a=arguments.length,o=a<3?e:null===s?s=Object.getOwnPropertyDescriptor(e,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,i,s);else for(var n=t.length-1;n>=0;n--)(r=t[n])&&(o=(a<3?r(o):a>3?r(e,i,o):r(e,i))||o);return a>3&&o&&Object.defineProperty(e,i,o),o}"function"==typeof SuppressedError&&SuppressedError,exports.App=class extends t.Leafer{get __tag(){return"App"}get isApp(){return!0}constructor(t,e){super(t,e)}init(t,i){if(super.init(t,i),t){const{ground:i,tree:s,sky:r,editor:a}=t;i&&(this.ground=this.addLeafer(i)),(s||a)&&(this.tree=this.addLeafer(s)),(r||a)&&(this.sky=this.addLeafer(r||{type:"draw",usePartRender:!1})),a&&(this.editor=e.Creator.editor(a),this.sky.add(this.editor))}}__setApp(){const{canvas:t}=this,{realCanvas:i,view:s}=this.config;i||s===this.canvas.view||!t.parentView?this.realCanvas=!0:t.unrealCanvas(),this.leafer=this,this.watcher.disable(),this.layouter.disable(),this.__eventIds.push(this.on_(e.PropertyEvent.CHANGE,this.__onPropertyChange,this))}start(){super.start(),this.children.forEach((t=>t.start()))}stop(){this.children.forEach((t=>t.stop())),super.stop()}unlockLayout(){super.unlockLayout(),this.children.forEach((t=>t.unlockLayout()))}lockLayout(){super.lockLayout(),this.children.forEach((t=>t.lockLayout()))}forceRender(t){this.children.forEach((e=>e.forceRender(t)))}addLeafer(e){const i=new t.Leafer(e);return this.add(i),i}add(t){if(!t.view){if(this.realCanvas&&!this.canvas.bounds)return void setTimeout((()=>this.add(t)),10);t.init(this.__getChildConfig(t.userConfig),this)}super.add(t),this.__listenChildEvents(t)}__onPropertyChange(){e.Debug.showHitView&&this.children.forEach((t=>t.forceUpdate("surface")))}__onCreated(){this.created=this.children.every((t=>t.created))}__onReady(){this.children.every((t=>t.ready))&&super.__onReady()}__onViewReady(){this.children.every((t=>t.viewReady))&&super.__onViewReady()}__onChildRenderEnd(t){this.renderer.addBlock(t.renderBounds),this.viewReady&&this.renderer.update()}__render(t,e){this.children.forEach((e=>t.copyWorld(e.canvas)))}__onResize(t){this.children.forEach((e=>e.resize(t))),super.__onResize(t)}__checkUpdateLayout(){this.children.forEach((t=>t.__layout.update()))}__getChildConfig(t){let i=Object.assign({},this.config);return i.hittable=i.realCanvas=void 0,t&&e.DataHelper.assign(i,t),this.autoLayout&&e.DataHelper.copyAttrs(i,this,e.canvasSizeAttrs),i.view=this.realCanvas?void 0:this.view,i.fill=void 0,i}__listenChildEvents(t){t.once(e.LayoutEvent.END,(()=>this.__onReady())),t.once(e.RenderEvent.START,(()=>this.__onCreated())),t.once(e.RenderEvent.END,(()=>this.__onViewReady())),this.realCanvas&&this.__eventIds.push(t.on_(e.RenderEvent.END,this.__onChildRenderEnd,this))}},exports.App=i([e.registerUI()],exports.App);const s={},r={isHoldSpaceKey:()=>r.isHold("Space"),isHold:t=>s[t],setDownCode(t){s[t]||(s[t]=!0)},setUpCode(t){s[t]=!1}},a={LEFT:1,RIGHT:2,MIDDLE:4,defaultLeft(t){t.buttons||(t.buttons=1)},left:t=>1===t.buttons,right:t=>2===t.buttons,middle:t=>4===t.buttons};class o extends e.Event{get spaceKey(){return r.isHoldSpaceKey()}get left(){return a.left(this)}get right(){return a.right(this)}get middle(){return a.middle(this)}constructor(t){super(t.type),this.bubbles=!0,Object.assign(this,t)}getPage(){return this.current.getPagePoint(this)}getInner(t){return t||(t=this.current),t.getInnerPoint(this)}getLocal(t){return t||(t=this.current),t.getLocalPoint(this)}static changeName(t,i){e.EventCreator.changeName(t,i)}}exports.PointerEvent=class extends o{},exports.PointerEvent.POINTER="pointer",exports.PointerEvent.BEFORE_DOWN="pointer.before_down",exports.PointerEvent.BEFORE_MOVE="pointer.before_move",exports.PointerEvent.BEFORE_UP="pointer.before_up",exports.PointerEvent.DOWN="pointer.down",exports.PointerEvent.MOVE="pointer.move",exports.PointerEvent.UP="pointer.up",exports.PointerEvent.OVER="pointer.over",exports.PointerEvent.OUT="pointer.out",exports.PointerEvent.ENTER="pointer.enter",exports.PointerEvent.LEAVE="pointer.leave",exports.PointerEvent.TAP="tap",exports.PointerEvent.DOUBLE_TAP="double_tap",exports.PointerEvent.CLICK="click",exports.PointerEvent.DOUBLE_CLICK="double_click",exports.PointerEvent.LONG_PRESS="long_press",exports.PointerEvent.LONG_TAP="long_tap",exports.PointerEvent.MENU="pointer.menu",exports.PointerEvent.MENU_TAP="pointer.menu_tap",exports.PointerEvent=i([e.registerUIEvent()],exports.PointerEvent);const n={};exports.DragEvent=class extends exports.PointerEvent{static setList(t){this.list=t instanceof e.LeafList?t:new e.LeafList(t)}static setData(t){this.data=t}getPageMove(t){return this.assignMove(t),this.current.getPagePoint(n,null,!0)}getInnerMove(t,e){return t||(t=this.current),this.assignMove(e),t.getInnerPoint(n,null,!0)}getLocalMove(t,e){return t||(t=this.current),this.assignMove(e),t.getLocalPoint(n,null,!0)}getPageTotal(){return this.getPageMove(!0)}getInnerTotal(t){return this.getInnerMove(t,!0)}getLocalTotal(t){return this.getLocalMove(t,!0)}assignMove(t){n.x=t?this.totalX:this.moveX,n.y=t?this.totalY:this.moveY}},exports.DragEvent.BEFORE_DRAG="drag.before_drag",exports.DragEvent.START="drag.start",exports.DragEvent.DRAG="drag",exports.DragEvent.END="drag.end",exports.DragEvent.OVER="drag.over",exports.DragEvent.OUT="drag.out",exports.DragEvent.ENTER="drag.enter",exports.DragEvent.LEAVE="drag.leave",exports.DragEvent=i([e.registerUIEvent()],exports.DragEvent),exports.DropEvent=class extends exports.PointerEvent{static setList(t){exports.DragEvent.setList(t)}static setData(t){exports.DragEvent.setData(t)}},exports.DropEvent.DROP="drop",exports.DropEvent=i([e.registerUIEvent()],exports.DropEvent),exports.MoveEvent=class extends exports.DragEvent{},exports.MoveEvent.BEFORE_MOVE="move.before_move",exports.MoveEvent.START="move.start",exports.MoveEvent.MOVE="move",exports.MoveEvent.END="move.end",exports.MoveEvent=i([e.registerUIEvent()],exports.MoveEvent),exports.RotateEvent=class extends o{},exports.RotateEvent.BEFORE_ROTATE="rotate.before_rotate",exports.RotateEvent.START="rotate.start",exports.RotateEvent.ROTATE="rotate",exports.RotateEvent.END="rotate.end",exports.RotateEvent=i([e.registerUIEvent()],exports.RotateEvent),exports.SwipeEvent=class extends exports.DragEvent{},exports.SwipeEvent.SWIPE="swipe",exports.SwipeEvent.LEFT="swipe.left",exports.SwipeEvent.RIGHT="swipe.right",exports.SwipeEvent.UP="swipe.up",exports.SwipeEvent.DOWN="swipe.down",exports.SwipeEvent=i([e.registerUIEvent()],exports.SwipeEvent),exports.ZoomEvent=class extends o{},exports.ZoomEvent.BEFORE_ZOOM="zoom.before_zoom",exports.ZoomEvent.START="zoom.start",exports.ZoomEvent.ZOOM="zoom",exports.ZoomEvent.END="zoom.end",exports.ZoomEvent=i([e.registerUIEvent()],exports.ZoomEvent),exports.KeyEvent=class extends o{},exports.KeyEvent.DOWN="key.down",exports.KeyEvent.HOLD="key.hold",exports.KeyEvent.UP="key.up",exports.KeyEvent=i([e.registerUIEvent()],exports.KeyEvent);const h=e.Debug.get("LeaferTypeCreator"),p={list:{},register(t,e){g[t]?h.repeat(t):g[t]=e},run(t,e){const i=g[t];i?i(e):h.error("no",t)}},{list:g,register:d}=p;d("draw",(function(t){const{config:e}=t;e.move.dragOut=!1})),d("design",(function(t){t.isApp||t.__eventIds.push(t.on_(exports.MoveEvent.BEFORE_MOVE,(e=>t.zoomLayer.move(e.moveX,e.moveY))),t.on_(exports.ZoomEvent.BEFORE_ZOOM,(i=>{const{zoomLayer:s}=t,{scaleX:r}=s.__,{min:a,max:o}=t.app.config.zoom;let{scale:n}=i,h=Math.abs(r*n);h<a?n=a/r:h>o&&(n=o/r),1!==n&&(e.PointHelper.scaleOf(s,i,n),s.scale=r*n)})))})),t.Leafer.prototype.initType=function(t){p.run(t,this)};class v{constructor(t){this.interaction=t}move(t){const{interaction:e}=this;if(!this.moveData){const{path:i}=e.selector.getByPoint(t,e.hitRadius);t.path=i,this.moveData=Object.assign(Object.assign({},t),{moveX:0,moveY:0}),e.emit(exports.MoveEvent.START,this.moveData)}t.path=this.moveData.path,e.emit(exports.MoveEvent.BEFORE_MOVE,t),e.emit(exports.MoveEvent.MOVE,t),this.transformEndWait()}zoom(t){const{interaction:e}=this;if(!this.zoomData){const{path:i}=e.selector.getByPoint(t,e.hitRadius);t.path=i,this.zoomData=Object.assign(Object.assign({},t),{scale:1}),e.emit(exports.ZoomEvent.START,this.zoomData)}t.path=this.zoomData.path,e.emit(exports.ZoomEvent.BEFORE_ZOOM,t),e.emit(exports.ZoomEvent.ZOOM,t),this.transformEndWait()}rotate(t){const{interaction:e}=this;if(!this.rotateData){const{path:i}=e.selector.getByPoint(t,e.hitRadius);t.path=i,this.rotateData=Object.assign(Object.assign({},t),{rotation:0}),e.emit(exports.RotateEvent.START,this.rotateData)}t.path=this.rotateData.path,e.emit(exports.RotateEvent.BEFORE_ROTATE,t),e.emit(exports.RotateEvent.ROTATE,t),this.transformEndWait()}transformEndWait(){clearTimeout(this.transformTimer),this.transformTimer=setTimeout((()=>{this.transformEnd()}),this.interaction.config.pointer.transformTime)}transformEnd(){this.moveEnd(),this.zoomEnd(),this.rotateEnd()}moveEnd(){this.moveData&&(this.interaction.emit(exports.MoveEvent.END,this.moveData),this.moveData=null)}zoomEnd(){this.zoomData&&(this.interaction.emit(exports.ZoomEvent.END,this.zoomData),this.zoomData=null)}rotateEnd(){this.rotateData&&(this.interaction.emit(exports.RotateEvent.END,this.rotateData),this.rotateData=null)}destroy(){this.zoomData=this.moveData=this.rotateData=null}}const c={getMoveEventData:(t,e,i)=>Object.assign(Object.assign({},i),{x:t.x,y:t.y,moveX:e.x,moveY:e.y}),getRotateEventData:(t,e,i)=>Object.assign(Object.assign({},i),{x:t.x,y:t.y,rotation:e}),getZoomEventData:(t,e,i)=>Object.assign(Object.assign({},i),{x:t.x,y:t.y,scale:e}),getDragEventData:(t,e,i)=>Object.assign(Object.assign({},i),{x:i.x,y:i.y,moveX:i.x-e.x,moveY:i.y-e.y,totalX:i.x-t.x,totalY:i.y-t.y}),getDropEventData:(t,e,i)=>Object.assign(Object.assign({},t),{list:e,data:i}),getSwipeDirection:t=>t<-45&&t>-135?exports.SwipeEvent.UP:t>45&&t<135?exports.SwipeEvent.DOWN:t<=45&&t>=-45?exports.SwipeEvent.RIGHT:exports.SwipeEvent.LEFT,getSwipeEventData:(t,i,s)=>Object.assign(Object.assign({},s),{moveX:i.moveX,moveY:i.moveY,totalX:s.x-t.x,totalY:s.y-t.y,type:l.getSwipeDirection(e.PointHelper.getAngle(t,s))}),getBase(t){const e=1===t.button?4:t.button;return{altKey:t.altKey,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,metaKey:t.metaKey,buttons:void 0===t.buttons?1:0===t.buttons?e:t.buttons,origin:t}},pathHasEventType(t,e){const{list:i}=t;for(let t=0,s=i.length;t<s;t++)if(i[t].hasEvent(e))return!0;return!1},filterPathByEventType(t,i){const s=new e.LeafList,{list:r}=t;for(let t=0,e=r.length;t<e;t++)r[t].hasEvent(i)&&s.add(r[t]);return s}},l=c,E=new e.LeafList,{getDragEventData:u,getDropEventData:m,getSwipeEventData:D}=c;class f{constructor(t){this.interaction=t}setDragData(t){this.animateWait&&this.dragEndReal(),this.downData=this.interaction.downData,this.dragData=u(t,t,t)}getList(){const{proxy:t}=this.interaction.selector;return!this.dragging||t&&t.list.length?E:exports.DragEvent.list||this.dragableList||E}checkDrag(t,e){const{interaction:i}=this;if(this.moving&&t.buttons<1)return this.canAnimate=!1,void i.pointerCancel();this.canAnimate=!0,!this.moving&&e&&(this.moving=i.moveMode||i.isHoldRightKey)&&i.emit(exports.MoveEvent.START,this.dragData),this.moving||this.dragStart(t,e),this.drag(t)}dragStart(t,e){this.dragging||(this.dragging=e&&a.left(t),this.dragging&&(this.interaction.emit(exports.DragEvent.START,this.dragData),this.getDragableList(this.dragData.path)))}getDragableList(t){let i;for(let s=0,r=t.length;s<r;s++)if(i=t.list[s],(i.__.draggable||i.__.editable)&&i.__.hitSelf&&!i.__.locked){this.dragableList=new e.LeafList(i);break}}drag(t){const{interaction:e,dragData:i,downData:s}=this,{path:r,throughPath:a}=s;this.dragData=u(s,i,t),a&&(this.dragData.throughPath=a),this.dragData.path=r,this.moving?(e.emit(exports.MoveEvent.BEFORE_MOVE,this.dragData),e.emit(exports.MoveEvent.MOVE,this.dragData)):this.dragging&&(this.dragReal(),e.emit(exports.DragEvent.BEFORE_DRAG,this.dragData),e.emit(exports.DragEvent.DRAG,this.dragData))}dragReal(){const{running:t}=this.interaction,i=this.getList();if(i.length&&t){const{moveX:t,moveY:s}=this.dragData;i.forEach((i=>e.LeafHelper.moveWorld(i,t,s)))}}dragOverOrOut(t){const{interaction:e}=this,{dragOverPath:i}=this,{path:s}=t;i?s.indexAt(0)!==i.indexAt(0)&&(e.emit(exports.DragEvent.OUT,t,i),e.emit(exports.DragEvent.OVER,t,s)):e.emit(exports.DragEvent.OVER,t,s),this.dragOverPath=s}dragEnterOrLeave(t){const{interaction:e}=this,{dragEnterPath:i}=this,{path:s}=t;e.emit(exports.DragEvent.LEAVE,t,i,s),e.emit(exports.DragEvent.ENTER,t,s,i),this.dragEnterPath=s}dragEnd(t,i){if(!this.dragData)return;const{moveX:s,moveY:r}=this.dragData;this.canAnimate&&this.moving&&(Math.abs(s)>1||Math.abs(r)>1)?(t=Object.assign({},t),i=.9*(i||("touch"===t.pointerType?2:1)),e.PointHelper.move(t,s*i,r*i),this.drag(t),this.animate((()=>{this.dragEnd(t,1)}))):this.dragEndReal(t)}dragEndReal(t){const{interaction:e,downData:i,dragData:s}=this;t||(t=s);const{path:r,throughPath:a}=i,o=u(i,t,t);a&&(o.throughPath=a),o.path=r,this.moving&&e.emit(exports.MoveEvent.END,o),this.dragging&&(e.emit(exports.DragEvent.END,o),this.swipe(t,o),this.drop(t)),this.autoMoveCancel(),this.dragReset(),this.animate(null,"off")}animate(t,e){const i=t||this.animateWait;i&&this.interaction.target.nextRender(i,e),this.animateWait=t}swipe(t,i){const{interaction:s}=this,{downData:r}=s;if(e.PointHelper.getDistance(r,t)>s.config.pointer.swipeDistance){const t=D(r,this.dragData,i);this.interaction.emit(t.type,t)}}drop(t){const e=m(t,this.getList(),exports.DragEvent.data);e.path=this.dragEnterPath,this.interaction.emit(exports.DropEvent.DROP,e),this.interaction.emit(exports.DragEvent.LEAVE,t,this.dragEnterPath)}dragReset(){exports.DragEvent.list=exports.DragEvent.data=this.dragableList=this.dragData=this.downData=this.dragOverPath=this.dragEnterPath=null,this.dragging=this.moving=!1}checkDragOut(t){const{interaction:e}=this;this.autoMoveCancel(),this.dragging&&!e.shrinkCanvasBounds.hitPoint(t)&&this.autoMoveOnDragOut(t)}autoMoveOnDragOut(t){const{interaction:i,downData:s}=this,{autoDistance:r,dragOut:a}=i.config.move;if(!a||!r)return;const o=i.shrinkCanvasBounds,{x:n,y:h}=o,p=e.BoundsHelper.maxX(o),g=e.BoundsHelper.maxY(o),d=t.x<n?r:p<t.x?-r:0,v=t.y<h?r:g<t.y?-r:0;let c=0,l=0;this.autoMoveTimer=setInterval((()=>{c+=d,l+=v,e.PointHelper.move(s,d,v),e.PointHelper.move(this.dragData,d,v),i.move(Object.assign(Object.assign({},t),{moveX:d,moveY:v,totalX:c,totalY:l})),i.pointerMoveReal(t)}),10)}autoMoveCancel(){this.autoMoveTimer&&(clearInterval(this.autoMoveTimer),this.autoMoveTimer=0)}destroy(){this.dragReset()}}const _=e.Debug.get("emit");const x=["move","zoom","rotate","key"];function P(t,e,i,s,r){if(x.some((t=>e.startsWith(t)))&&t.__.hitChildren&&!O(t,r)){let a;for(let o=0,n=t.children.length;o<n;o++)a=t.children[o],!i.path.has(a)&&a.__.hittable&&y(a,e,i,s,r)}}function y(t,i,s,r,a){if(t.destroyed)return!0;if(t.__.hitSelf&&t.hasEvent(i,r)&&!O(t,a)){s.phase=r?1:t===s.target?2:3;const a=e.EventCreator.get(i,s);if(t.emitEvent(a,r),a.isStop)return!0}return!1}function O(t,e){return e&&e.has(t)}const R={getData(t){const i=t[0],s=t[1],r=e.PointHelper.getCenter(i.from,s.from),a=e.PointHelper.getCenter(i.to,s.to),o={x:a.x-r.x,y:a.y-r.y},n=e.PointHelper.getDistance(i.from,s.from);return{move:o,scale:e.PointHelper.getDistance(i.to,s.to)/n,angle:e.PointHelper.getRotation(i.from,s.from,i.to,s.to),center:a}}},T={wheel:{zoomMode:!1,zoomSpeed:.5,moveSpeed:.5,rotateSpeed:.5,delta:{x:20,y:8},preventDefault:!0},pointer:{hitRadius:5,through:!1,tapTime:120,longPressTime:800,transformTime:500,dragHover:!0,dragDistance:2,swipeDistance:20,ignoreMove:!1,preventDefaultMenu:!0},cursor:{}},{pathHasEventType:w,getMoveEventData:L,getZoomEventData:C,getRotateEventData:b}=c;class M{static set(t,e){this.custom[t]=e}static get(t){return this.custom[t]}}M.custom={};class A extends e.CanvasManager{constructor(){super(...arguments),this.pathTypeList=new e.LeafList,this.imageTypeList=new e.LeafList}getImageType(t,i){return this.imageTypeList.add(t),e.Creator.hitCanvas(i)}getPathType(t){return this.pathTypeList.add(t),e.Creator.hitCanvas()}clearImageType(){this.__clearLeafList(this.imageTypeList)}clearPathType(){this.__clearLeafList(this.pathTypeList)}__clearLeafList(t){t.length&&(t.forEach((t=>{t.__hitCanvas&&(t.__hitCanvas.destroy(),t.__hitCanvas=null)})),t.reset())}clear(){this.clearPathType(),this.clearImageType()}}const{toInnerRadiusPointOf:H,copy:S,setRadius:B}=t.PointHelper,I={};t.Leaf.prototype.__hitWorld=function(e){return!this.__layout.hitCanvasChanged&&this.__hitCanvas||(this.__updateHitCanvas(),this.__layout.hitCanvasChanged=!1),this.__.hitRadius&&(S(I,e),B(e=I,this.__.hitRadius)),H(e,this.__world,I),!(!this.__.hitBox||!t.BoundsHelper.hitRadiusPoint(this.__layout.boxBounds,I))||this.__hit(I)},t.UI.prototype.__updateHitCanvas=function(){this.__hitCanvas||(this.__hitCanvas=this.leafer.hitCanvasManager.getPathType(this));const t=this.__hitCanvas;this.__drawHitPath(t),t.setStrokeOptions(this.__)},t.UI.prototype.__hit=function(t){"miniapp"===e.Platform.name&&this.__drawHitPath(this.__hitCanvas);const{fill:i,hitFill:s,windingRule:r}=this.__,a=i&&"path"===s||"all"===s,o=this.__hitFill(t,r);if(a&&o)return!0;const{stroke:n,hitStroke:h,__strokeWidth:p,strokeAlign:g}=this.__,d=n&&"path"===h||"all"===h,v=2*t.radiusX;let c=v;if(d)switch(g){case"inside":if(c+=2*p,!a&&o&&this.__hitStroke(t,c))return!0;c=v;break;case"center":c+=p;break;case"outside":if(c+=2*p,!a){if(!o&&this.__hitStroke(t,c))return!0;c=v}}return!!c&&this.__hitStroke(t,c)};const U=new t.UI;t.Rect.prototype.__updateHitCanvas=function(){(this.stroke||this.cornerRadius)&&U.__updateHitCanvas.call(this)},t.Rect.prototype.__hitFill=function(e,i){return this.__hitCanvas?U.__hitFill.call(this,e,i):t.BoundsHelper.hitRadiusPoint(this.__layout.boxBounds,e)},t.UI.prototype.find=function(t,e){return this.leafer?this.leafer.selector.getBy(t,this,!1,e):[]},t.UI.prototype.findOne=function(t,e){return this.leafer?this.leafer.selector.getBy(t,this,!0,e):null},t.Group.prototype.pick=function(t,e){return this.__layout.update(),e||(e={}),this.leafer?this.leafer.selector.getByPoint(t,e.hitRadius||0,Object.assign(Object.assign({},e),{target:this})):null},exports.Cursor=M,exports.HitCanvasManager=A,exports.InteractionBase=class{get dragging(){return this.dragger.dragging}get isDragEmpty(){return this.config.move.dragEmpty&&this.hoverData&&this.hoverData.path.list[0].isLeafer&&(!this.downData||this.downData.path.list[0].isLeafer)}get isHoldRightKey(){return this.config.move.holdRightKey&&this.downData&&a.right(this.downData)}get moveMode(){return this.config.move.drag||this.config.move.holdSpaceKey&&r.isHoldSpaceKey()||this.downData&&(this.config.move.holdMiddleKey&&a.middle(this.downData)||this.isHoldRightKey&&this.dragger.moving)||this.isDragEmpty}get hitRadius(){return this.config.pointer.hitRadius}constructor(t,i,s,r){this.config=T,this.tapCount=0,this.downKeyMap={},this.target=t,this.canvas=i,this.selector=s,this.defaultPath=new e.LeafList(t),this.transformer=new v(this),this.dragger=new f(this),r&&(this.config=e.DataHelper.default(r,this.config)),this.__listenEvents()}start(){this.running=!0}stop(){this.running=!1}receive(t){}pointerDown(t,e){t||(t=this.hoverData),t&&(a.defaultLeft(t),this.updateDownData(t),e&&(t.path=this.defaultPath),this.emit(exports.PointerEvent.BEFORE_DOWN,t),this.emit(exports.PointerEvent.DOWN,t),this.downTime=Date.now(),this.dragger.setDragData(t),a.left(t)?(this.tapWait(),this.longPressWait(t)):a.right(t)&&(this.waitMenuTap=!0),this.updateCursor(t))}pointerMove(t){if(t||(t=this.hoverData),!t)return;this.downData&&a.defaultLeft(t);const e=this.canvas.bounds.hitPoint(t);(e||this.downData)&&(e&&!this.downData&&a.left(t)&&this.pointerDown(t,!0),this.pointerMoveReal(t),this.dragger.checkDragOut(t))}pointerMoveReal(t){if(this.emit(exports.PointerEvent.BEFORE_MOVE,t,this.defaultPath),this.downData){const i=e.PointHelper.getDistance(this.downData,t)>this.config.pointer.dragDistance;i&&(this.waitTap&&this.pointerWaitCancel(),this.waitMenuTap=!1),this.dragger.checkDrag(t,i)}this.dragger.moving||(this.updateHoverData(t),this.emit(exports.PointerEvent.MOVE,t),this.pointerOverOrOut(t),this.pointerEnterOrLeave(t),this.dragger.dragging&&(this.dragger.dragOverOrOut(t),this.dragger.dragEnterOrLeave(t))),this.updateCursor(this.downData||t)}pointerUp(t){t||(t=this.downData),this.downData&&(a.defaultLeft(t),this.findPath(t),this.emit(exports.PointerEvent.BEFORE_UP,t),this.emit(exports.PointerEvent.UP,t),this.oldDownData&&this.emit(exports.PointerEvent.UP,this.oldDownData,void 0,t.path),this.emit(exports.PointerEvent.UP,this.downData,void 0,t.path),this.touchLeave(t),this.tap(t),this.menuTap(t),this.dragger.dragEnd(t),this.downData=this.oldDownData=null,this.updateCursor(t))}pointerCancel(){this.pointerUp(this.dragger.dragData)}multiTouch(t,e){const{move:i,angle:s,scale:r,center:a}=R.getData(e);this.rotate(b(a,s,t)),this.zoom(C(a,r,t)),this.move(L(a,i,t))}menu(t){this.findPath(t),this.emit(exports.PointerEvent.MENU,t)}menuTap(t){this.waitMenuTap&&this.emit(exports.PointerEvent.MENU_TAP,t)}move(t){this.transformer.move(t)}zoom(t){this.transformer.zoom(t)}rotate(t){this.transformer.rotate(t)}transformEnd(){this.transformer.transformEnd()}keyDown(t){const{code:e}=t;this.downKeyMap[e]||(this.downKeyMap[e]=!0,r.setDownCode(e),this.emit(exports.KeyEvent.HOLD,t,this.defaultPath),this.moveMode&&this.updateCursor()),this.emit(exports.KeyEvent.DOWN,t,this.defaultPath)}keyUp(t){const{code:e}=t;this.downKeyMap[e]=!1,r.setUpCode(e),this.emit(exports.KeyEvent.UP,t,this.defaultPath),"grab"===this.cursor&&this.updateCursor()}pointerOverOrOut(t){if(this.dragger.moving)return;if(this.dragging&&!this.config.pointer.dragHover)return;const{path:e}=t;this.overPath?e.indexAt(0)!==this.overPath.indexAt(0)&&(this.emit(exports.PointerEvent.OUT,t,this.overPath),this.emit(exports.PointerEvent.OVER,t,e)):this.emit(exports.PointerEvent.OVER,t,e),this.overPath=e}pointerEnterOrLeave(t){if(this.dragger.moving)return;if(this.dragging&&!this.config.pointer.dragHover)return;const{path:e}=t;this.emit(exports.PointerEvent.LEAVE,t,this.enterPath,e),this.emit(exports.PointerEvent.ENTER,t,e,this.enterPath),this.enterPath=e}touchLeave(t){"touch"===t.pointerType&&this.enterPath&&(this.emit(exports.PointerEvent.LEAVE,t),this.dragger.dragging&&this.emit(exports.DropEvent.LEAVE,t))}tap(t){const{pointer:e}=this.config,i=this.longTap(t);if(!e.tapMore&&i)return;if(!this.waitTap)return;e.tapMore&&this.emitTap(t);const s=Date.now()-this.downTime,r=[exports.PointerEvent.DOUBLE_TAP,exports.PointerEvent.DOUBLE_CLICK].some((e=>w(t.path,e)));s<e.tapTime+50&&r?(this.tapCount++,2===this.tapCount?(this.tapWaitCancel(),this.emitDoubleTap(t)):(clearTimeout(this.tapTimer),this.tapTimer=setTimeout((()=>{e.tapMore||(this.tapWaitCancel(),this.emitTap(t))}),e.tapTime))):e.tapMore||(this.tapWaitCancel(),this.emitTap(t))}findPath(t,e){const{hitRadius:i,through:s}=this.config.pointer,r=this.selector.getByPoint(t,i,e||{through:s});return r.throughPath&&(t.throughPath=r.throughPath),t.path=r.path,r.path}isDrag(t){return this.dragger.getList().has(t)}updateDownData(t,e){const{downData:i}=this;!t&&i&&(t=Object.assign({},i)),t&&(this.oldDownData=i,this.findPath(t,e),this.downData=t)}updateHoverData(t){t||(t=this.hoverData),t&&(this.findPath(t,{exclude:this.dragger.getList(),name:exports.PointerEvent.MOVE}),this.hoverData=t)}updateCursor(t){if(this.config.cursor.stop)return;if(t||(this.updateHoverData(),t=this.downData||this.hoverData),this.dragger.moving)return this.setCursor("grabbing");if(this.moveMode)return this.setCursor(this.downData?"grabbing":"grab");if(!t)return;let e,i;const{path:s}=t;for(let t=0,r=s.length;t<r&&(e=s.list[t],i=e.cursor,!i);t++);this.setCursor(i)}setCursor(t){this.cursor=t}emitTap(t){this.emit(exports.PointerEvent.TAP,t),this.emit(exports.PointerEvent.CLICK,t)}emitDoubleTap(t){this.emit(exports.PointerEvent.DOUBLE_TAP,t),this.emit(exports.PointerEvent.DOUBLE_CLICK,t)}pointerWaitCancel(){this.tapWaitCancel(),this.longPressWaitCancel()}tapWait(){clearTimeout(this.tapTimer),this.waitTap=!0}tapWaitCancel(){clearTimeout(this.tapTimer),this.waitTap=!1,this.tapCount=0}longPressWait(t){clearTimeout(this.longPressTimer),this.longPressTimer=setTimeout((()=>{this.longPressed=!0,this.emit(exports.PointerEvent.LONG_PRESS,t)}),this.config.pointer.longPressTime)}longTap(t){let e;return this.longPressed&&(this.emit(exports.PointerEvent.LONG_TAP,t),w(t.path,exports.PointerEvent.LONG_TAP)&&(e=!0)),this.longPressWaitCancel(),e}longPressWaitCancel(){clearTimeout(this.longPressTimer),this.longPressed=!1}__onResize(){this.shrinkCanvasBounds=new e.Bounds(this.canvas.bounds),this.shrinkCanvasBounds.spread(-2)}__listenEvents(){const{target:t}=this;this.__eventIds=[t.on_(e.ResizeEvent.RESIZE,this.__onResize,this)],t.once(e.LeaferEvent.READY,(()=>this.__onResize()))}__removeListenEvents(){this.target.off_(this.__eventIds),this.__eventIds.length=0}emit(t,e,i,s){this.running&&function(t,e,i,s){if(!i&&!e.path)return;let r;e.type=t,i?e=Object.assign(Object.assign({},e),{path:i}):i=e.path,e.target=i.indexAt(0);try{for(let a=i.length-1;a>-1;a--){if(r=i.list[a],y(r,t,e,!0,s))return;r.isApp&&P(r,t,e,!0,s)}for(let a=0,o=i.length;a<o;a++)if(r=i.list[a],r.isApp&&P(r,t,e,!1,s),y(r,t,e,!1,s))return}catch(t){_.error(t)}}(t,e,i,s)}destroy(){this.__eventIds.length&&(this.stop(),this.__removeListenEvents(),this.dragger.destroy(),this.transformer.destroy(),this.downData=this.overPath=this.enterPath=null)}},exports.InteractionHelper=c,exports.Keyboard=r,exports.LeaferTypeCreator=p,exports.MultiTouchHelper=R,exports.PointerButton=a,exports.UIEvent=o,Object.keys(t).forEach((function(e){"default"===e||Object.prototype.hasOwnProperty.call(exports,e)||Object.defineProperty(exports,e,{enumerable:!0,get:function(){return t[e]}})}));
1
+ "use strict";var t=require("@leafer-ui/draw"),e=require("@leafer/core");function i(t,e,i,s){var r,a=arguments.length,o=a<3?e:null===s?s=Object.getOwnPropertyDescriptor(e,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,i,s);else for(var n=t.length-1;n>=0;n--)(r=t[n])&&(o=(a<3?r(o):a>3?r(e,i,o):r(e,i))||o);return a>3&&o&&Object.defineProperty(e,i,o),o}"function"==typeof SuppressedError&&SuppressedError,exports.App=class extends t.Leafer{get __tag(){return"App"}get isApp(){return!0}constructor(t,e){super(t,e)}init(t,i){if(super.init(t,i),t){const{ground:i,tree:s,sky:r,editor:a}=t;i&&(this.ground=this.addLeafer(i)),(s||a)&&(this.tree=this.addLeafer(s)),(r||a)&&(this.sky=this.addLeafer(r||{type:"draw",usePartRender:!1})),a&&(this.editor=e.Creator.editor(a),this.sky.add(this.editor))}}__setApp(){const{canvas:t}=this,{realCanvas:i,view:s}=this.config;i||s===this.canvas.view||!t.parentView?this.realCanvas=!0:t.unrealCanvas(),this.leafer=this,this.watcher.disable(),this.layouter.disable(),this.__eventIds.push(this.on_(e.PropertyEvent.CHANGE,this.__onPropertyChange,this))}start(){super.start(),this.children.forEach((t=>t.start()))}stop(){this.children.forEach((t=>t.stop())),super.stop()}unlockLayout(){super.unlockLayout(),this.children.forEach((t=>t.unlockLayout()))}lockLayout(){super.lockLayout(),this.children.forEach((t=>t.lockLayout()))}forceRender(t){this.children.forEach((e=>e.forceRender(t)))}addLeafer(e){const i=new t.Leafer(e);return this.add(i),i}add(t){if(!t.view){if(this.realCanvas&&!this.canvas.bounds)return void setTimeout((()=>this.add(t)),10);t.init(this.__getChildConfig(t.userConfig),this)}super.add(t),this.__listenChildEvents(t)}__onPropertyChange(){e.Debug.showHitView&&this.children.forEach((t=>t.forceUpdate("surface")))}__onCreated(){this.created=this.children.every((t=>t.created))}__onReady(){this.children.every((t=>t.ready))&&super.__onReady()}__onViewReady(){this.children.every((t=>t.viewReady))&&super.__onViewReady()}__onChildRenderEnd(t){this.renderer.addBlock(t.renderBounds),this.viewReady&&this.renderer.update()}__render(t,e){this.children.forEach((e=>t.copyWorld(e.canvas)))}__onResize(t){this.children.forEach((e=>e.resize(t))),super.__onResize(t)}__checkUpdateLayout(){this.children.forEach((t=>t.__layout.update()))}__getChildConfig(t){let i=Object.assign({},this.config);return i.hittable=i.realCanvas=void 0,t&&e.DataHelper.assign(i,t),this.autoLayout&&e.DataHelper.copyAttrs(i,this,e.canvasSizeAttrs),i.view=this.realCanvas?void 0:this.view,i.fill=void 0,i}__listenChildEvents(t){t.once(e.LayoutEvent.END,(()=>this.__onReady())),t.once(e.RenderEvent.START,(()=>this.__onCreated())),t.once(e.RenderEvent.END,(()=>this.__onViewReady())),this.realCanvas&&this.__eventIds.push(t.on_(e.RenderEvent.END,this.__onChildRenderEnd,this))}},exports.App=i([e.registerUI()],exports.App);const s={},r={isHoldSpaceKey:()=>r.isHold("Space"),isHold:t=>s[t],setDownCode(t){s[t]||(s[t]=!0)},setUpCode(t){s[t]=!1}},a={LEFT:1,RIGHT:2,MIDDLE:4,defaultLeft(t){t.buttons||(t.buttons=1)},left:t=>1===t.buttons,right:t=>2===t.buttons,middle:t=>4===t.buttons};class o extends e.Event{get spaceKey(){return r.isHoldSpaceKey()}get left(){return a.left(this)}get right(){return a.right(this)}get middle(){return a.middle(this)}constructor(t){super(t.type),this.bubbles=!0,Object.assign(this,t)}getPage(){return this.current.getPagePoint(this)}getInner(t){return t||(t=this.current),t.getInnerPoint(this)}getLocal(t){return t||(t=this.current),t.getLocalPoint(this)}static changeName(t,i){e.EventCreator.changeName(t,i)}}exports.PointerEvent=class extends o{},exports.PointerEvent.POINTER="pointer",exports.PointerEvent.BEFORE_DOWN="pointer.before_down",exports.PointerEvent.BEFORE_MOVE="pointer.before_move",exports.PointerEvent.BEFORE_UP="pointer.before_up",exports.PointerEvent.DOWN="pointer.down",exports.PointerEvent.MOVE="pointer.move",exports.PointerEvent.UP="pointer.up",exports.PointerEvent.OVER="pointer.over",exports.PointerEvent.OUT="pointer.out",exports.PointerEvent.ENTER="pointer.enter",exports.PointerEvent.LEAVE="pointer.leave",exports.PointerEvent.TAP="tap",exports.PointerEvent.DOUBLE_TAP="double_tap",exports.PointerEvent.CLICK="click",exports.PointerEvent.DOUBLE_CLICK="double_click",exports.PointerEvent.LONG_PRESS="long_press",exports.PointerEvent.LONG_TAP="long_tap",exports.PointerEvent.MENU="pointer.menu",exports.PointerEvent.MENU_TAP="pointer.menu_tap",exports.PointerEvent=i([e.registerUIEvent()],exports.PointerEvent);const n={};exports.DragEvent=class extends exports.PointerEvent{static setList(t){this.list=t instanceof e.LeafList?t:new e.LeafList(t)}static setData(t){this.data=t}getPageMove(t){return this.assignMove(t),this.current.getPagePoint(n,null,!0)}getInnerMove(t,e){return t||(t=this.current),this.assignMove(e),t.getInnerPoint(n,null,!0)}getLocalMove(t,e){return t||(t=this.current),this.assignMove(e),t.getLocalPoint(n,null,!0)}getPageTotal(){return this.getPageMove(!0)}getInnerTotal(t){return this.getInnerMove(t,!0)}getLocalTotal(t){return this.getLocalMove(t,!0)}assignMove(t){n.x=t?this.totalX:this.moveX,n.y=t?this.totalY:this.moveY}},exports.DragEvent.BEFORE_DRAG="drag.before_drag",exports.DragEvent.START="drag.start",exports.DragEvent.DRAG="drag",exports.DragEvent.END="drag.end",exports.DragEvent.OVER="drag.over",exports.DragEvent.OUT="drag.out",exports.DragEvent.ENTER="drag.enter",exports.DragEvent.LEAVE="drag.leave",exports.DragEvent=i([e.registerUIEvent()],exports.DragEvent),exports.DropEvent=class extends exports.PointerEvent{static setList(t){exports.DragEvent.setList(t)}static setData(t){exports.DragEvent.setData(t)}},exports.DropEvent.DROP="drop",exports.DropEvent=i([e.registerUIEvent()],exports.DropEvent),exports.MoveEvent=class extends exports.DragEvent{},exports.MoveEvent.BEFORE_MOVE="move.before_move",exports.MoveEvent.START="move.start",exports.MoveEvent.MOVE="move",exports.MoveEvent.END="move.end",exports.MoveEvent=i([e.registerUIEvent()],exports.MoveEvent),exports.RotateEvent=class extends o{},exports.RotateEvent.BEFORE_ROTATE="rotate.before_rotate",exports.RotateEvent.START="rotate.start",exports.RotateEvent.ROTATE="rotate",exports.RotateEvent.END="rotate.end",exports.RotateEvent=i([e.registerUIEvent()],exports.RotateEvent),exports.SwipeEvent=class extends exports.DragEvent{},exports.SwipeEvent.SWIPE="swipe",exports.SwipeEvent.LEFT="swipe.left",exports.SwipeEvent.RIGHT="swipe.right",exports.SwipeEvent.UP="swipe.up",exports.SwipeEvent.DOWN="swipe.down",exports.SwipeEvent=i([e.registerUIEvent()],exports.SwipeEvent),exports.ZoomEvent=class extends o{},exports.ZoomEvent.BEFORE_ZOOM="zoom.before_zoom",exports.ZoomEvent.START="zoom.start",exports.ZoomEvent.ZOOM="zoom",exports.ZoomEvent.END="zoom.end",exports.ZoomEvent=i([e.registerUIEvent()],exports.ZoomEvent),exports.KeyEvent=class extends o{},exports.KeyEvent.DOWN="key.down",exports.KeyEvent.HOLD="key.hold",exports.KeyEvent.UP="key.up",exports.KeyEvent=i([e.registerUIEvent()],exports.KeyEvent);const h=e.Debug.get("LeaferTypeCreator"),p={list:{},register(t,e){g[t]?h.repeat(t):g[t]=e},run(t,e){const i=g[t];i?i(e):h.error("no",t)}},{list:g,register:d}=p;d("draw",(function(t){const{config:e}=t;e.move.dragOut=!1})),d("design",(function(t){t.isApp||t.__eventIds.push(t.on_(exports.MoveEvent.BEFORE_MOVE,(e=>{let{moveX:i,moveY:s}=e;t.config.move.scroll&&(Math.abs(i)>Math.abs(s)?s=0:i=0),t.zoomLayer.move(i,s)})),t.on_(exports.ZoomEvent.BEFORE_ZOOM,(i=>{const{zoomLayer:s}=t,r=t.validScale(i.scale);1!==r&&(e.PointHelper.scaleOf(s,i,r),s.scale=s.__.scaleX*r)})))})),t.Leafer.prototype.initType=function(t){p.run(t,this)};class c{constructor(t){this.interaction=t}move(t){const{interaction:e}=this;if(!this.moveData){const{path:i}=e.selector.getByPoint(t,e.hitRadius);t.path=i,this.moveData=Object.assign(Object.assign({},t),{moveX:0,moveY:0}),e.cancelHover(),e.emit(exports.MoveEvent.START,this.moveData)}t.path=this.moveData.path,e.emit(exports.MoveEvent.BEFORE_MOVE,t),e.emit(exports.MoveEvent.MOVE,t),this.transformEndWait()}zoom(t){const{interaction:e}=this;if(!this.zoomData){const{path:i}=e.selector.getByPoint(t,e.hitRadius);t.path=i,this.zoomData=Object.assign(Object.assign({},t),{scale:1}),e.cancelHover(),e.emit(exports.ZoomEvent.START,this.zoomData)}t.path=this.zoomData.path,e.emit(exports.ZoomEvent.BEFORE_ZOOM,t),e.emit(exports.ZoomEvent.ZOOM,t),this.transformEndWait()}rotate(t){const{interaction:e}=this;if(!this.rotateData){const{path:i}=e.selector.getByPoint(t,e.hitRadius);t.path=i,this.rotateData=Object.assign(Object.assign({},t),{rotation:0}),e.cancelHover(),e.emit(exports.RotateEvent.START,this.rotateData)}t.path=this.rotateData.path,e.emit(exports.RotateEvent.BEFORE_ROTATE,t),e.emit(exports.RotateEvent.ROTATE,t),this.transformEndWait()}transformEndWait(){clearTimeout(this.transformTimer),this.transformTimer=setTimeout((()=>{this.transformEnd()}),this.interaction.config.pointer.transformTime)}transformEnd(){this.moveEnd(),this.zoomEnd(),this.rotateEnd()}moveEnd(){this.moveData&&(this.interaction.emit(exports.MoveEvent.END,this.moveData),this.moveData=null)}zoomEnd(){this.zoomData&&(this.interaction.emit(exports.ZoomEvent.END,this.zoomData),this.zoomData=null)}rotateEnd(){this.rotateData&&(this.interaction.emit(exports.RotateEvent.END,this.rotateData),this.rotateData=null)}destroy(){this.zoomData=this.moveData=this.rotateData=null}}const v={getMoveEventData:(t,e,i)=>Object.assign(Object.assign({},i),{x:t.x,y:t.y,moveX:e.x,moveY:e.y}),getRotateEventData:(t,e,i)=>Object.assign(Object.assign({},i),{x:t.x,y:t.y,rotation:e}),getZoomEventData:(t,e,i)=>Object.assign(Object.assign({},i),{x:t.x,y:t.y,scale:e}),getDragEventData:(t,e,i)=>Object.assign(Object.assign({},i),{x:i.x,y:i.y,moveX:i.x-e.x,moveY:i.y-e.y,totalX:i.x-t.x,totalY:i.y-t.y}),getDropEventData:(t,e,i)=>Object.assign(Object.assign({},t),{list:e,data:i}),getSwipeDirection:t=>t<-45&&t>-135?exports.SwipeEvent.UP:t>45&&t<135?exports.SwipeEvent.DOWN:t<=45&&t>=-45?exports.SwipeEvent.RIGHT:exports.SwipeEvent.LEFT,getSwipeEventData:(t,i,s)=>Object.assign(Object.assign({},s),{moveX:i.moveX,moveY:i.moveY,totalX:s.x-t.x,totalY:s.y-t.y,type:l.getSwipeDirection(e.PointHelper.getAngle(t,s))}),getBase(t){const e=1===t.button?4:t.button;return{altKey:t.altKey,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,metaKey:t.metaKey,buttons:void 0===t.buttons?1:0===t.buttons?e:t.buttons,origin:t}},pathHasEventType(t,e){const{list:i}=t;for(let t=0,s=i.length;t<s;t++)if(i[t].hasEvent(e))return!0;return!1},filterPathByEventType(t,i){const s=new e.LeafList,{list:r}=t;for(let t=0,e=r.length;t<e;t++)r[t].hasEvent(i)&&s.add(r[t]);return s}},l=v,u=new e.LeafList,{getDragEventData:E,getDropEventData:m,getSwipeEventData:D}=v;class f{constructor(t){this.interaction=t}setDragData(t){this.animateWait&&this.dragEndReal(),this.downData=this.interaction.downData,this.dragData=E(t,t,t),this.canAnimate=this.canDragOut=!0}getList(){const{proxy:t}=this.interaction.selector;return!this.dragging||t&&t.list.length?u:exports.DragEvent.list||this.dragableList||u}checkDrag(t,e){const{interaction:i}=this;if(this.moving&&t.buttons<1)return this.canAnimate=!1,void i.pointerCancel();!this.moving&&e&&(this.moving=i.canMove(this.downData)||i.isHoldRightKey)&&i.emit(exports.MoveEvent.START,this.dragData),this.moving||this.dragStart(t,e),this.drag(t)}dragStart(t,e){this.dragging||(this.dragging=e&&a.left(t),this.dragging&&(this.interaction.emit(exports.DragEvent.START,this.dragData),this.getDragableList(this.dragData.path)))}getDragableList(t){let i;for(let s=0,r=t.length;s<r;s++)if(i=t.list[s],(i.__.draggable||i.__.editable)&&i.__.hitSelf&&!i.__.locked){this.dragableList=new e.LeafList(i);break}}drag(t){const{interaction:e,dragData:i,downData:s}=this,{path:r,throughPath:a}=s;this.dragData=E(s,i,t),a&&(this.dragData.throughPath=a),this.dragData.path=r,this.moving?(e.emit(exports.MoveEvent.BEFORE_MOVE,this.dragData),e.emit(exports.MoveEvent.MOVE,this.dragData)):this.dragging&&(this.dragReal(),e.emit(exports.DragEvent.BEFORE_DRAG,this.dragData),e.emit(exports.DragEvent.DRAG,this.dragData))}dragReal(){const{running:t}=this.interaction,e=this.getList();if(e.length&&t){const{moveX:t,moveY:i}=this.dragData;e.forEach((e=>e.moveWorld(t,i)))}}dragOverOrOut(t){const{interaction:e}=this,{dragOverPath:i}=this,{path:s}=t;this.dragOverPath=s,i?s.indexAt(0)!==i.indexAt(0)&&(e.emit(exports.DragEvent.OUT,t,i),e.emit(exports.DragEvent.OVER,t,s)):e.emit(exports.DragEvent.OVER,t,s)}dragEnterOrLeave(t){const{interaction:e}=this,{dragEnterPath:i}=this,{path:s}=t;e.emit(exports.DragEvent.LEAVE,t,i,s),e.emit(exports.DragEvent.ENTER,t,s,i),this.dragEnterPath=s}dragEnd(t,i){if(!this.dragData)return;const{moveX:s,moveY:r}=this.dragData;this.interaction.config.move.dragAnimate&&this.canAnimate&&this.moving&&(Math.abs(s)>1||Math.abs(r)>1)?(t=Object.assign({},t),i=.9*(i||("touch"===t.pointerType?2:1)),e.PointHelper.move(t,s*i,r*i),this.drag(t),this.animate((()=>{this.dragEnd(t,1)}))):this.dragEndReal(t)}dragEndReal(t){const{interaction:e,downData:i,dragData:s}=this;t||(t=s);const{path:r,throughPath:a}=i,o=E(i,t,t);a&&(o.throughPath=a),o.path=r,this.moving&&e.emit(exports.MoveEvent.END,o),this.dragging&&(e.emit(exports.DragEvent.END,o),this.swipe(t,o),this.drop(t)),this.autoMoveCancel(),this.dragReset(),this.animate(null,"off")}animate(t,e){const i=t||this.animateWait;i&&this.interaction.target.nextRender(i,null,e),this.animateWait=t}swipe(t,i){const{interaction:s,downData:r}=this;if(e.PointHelper.getDistance(r,t)>s.config.pointer.swipeDistance){const t=D(r,this.dragData,i);this.interaction.emit(t.type,t)}}drop(t){const e=m(t,this.getList(),exports.DragEvent.data);e.path=this.dragEnterPath,this.interaction.emit(exports.DropEvent.DROP,e),this.interaction.emit(exports.DragEvent.LEAVE,t,this.dragEnterPath)}dragReset(){exports.DragEvent.list=exports.DragEvent.data=this.dragableList=this.dragData=this.downData=this.dragOverPath=this.dragEnterPath=null,this.dragging=this.moving=!1}checkDragOut(t){const{interaction:e}=this;this.autoMoveCancel(),this.dragging&&!e.shrinkCanvasBounds.hitPoint(t)&&this.autoMoveOnDragOut(t)}autoMoveOnDragOut(t){const{interaction:i,downData:s,canDragOut:r}=this,{autoDistance:a,dragOut:o}=i.config.move;if(!o||!r||!a)return;const n=i.shrinkCanvasBounds,{x:h,y:p}=n,g=e.BoundsHelper.maxX(n),d=e.BoundsHelper.maxY(n),c=t.x<h?a:g<t.x?-a:0,v=t.y<p?a:d<t.y?-a:0;let l=0,u=0;this.autoMoveTimer=setInterval((()=>{l+=c,u+=v,e.PointHelper.move(s,c,v),e.PointHelper.move(this.dragData,c,v),i.move(Object.assign(Object.assign({},t),{moveX:c,moveY:v,totalX:l,totalY:u})),i.pointerMoveReal(t)}),10)}autoMoveCancel(){this.autoMoveTimer&&(clearInterval(this.autoMoveTimer),this.autoMoveTimer=0)}destroy(){this.dragReset()}}const _=e.Debug.get("emit");const x=["move","zoom","rotate","key"];function P(t,e,i,s,r){if(x.some((t=>e.startsWith(t)))&&t.__.hitChildren&&!O(t,r)){let a;for(let o=0,n=t.children.length;o<n;o++)a=t.children[o],!i.path.has(a)&&a.__.hittable&&y(a,e,i,s,r)}}function y(i,s,r,a,o){if(i.destroyed)return!0;if(i.__.hitSelf&&!O(i,o)&&(t.State.updateEventStyle&&t.State.updateEventStyle(i,s),i.hasEvent(s,a))){r.phase=a?1:i===r.target?2:3;const t=e.EventCreator.get(s,r);if(i.emitEvent(t,a),t.isStop)return!0}return!1}function O(t,e){return e&&e.has(t)}const R={getData(t){const i=t[0],s=t[1],r=e.PointHelper.getCenter(i.from,s.from),a=e.PointHelper.getCenter(i.to,s.to),o={x:a.x-r.x,y:a.y-r.y},n=e.PointHelper.getDistance(i.from,s.from);return{move:o,scale:e.PointHelper.getDistance(i.to,s.to)/n,angle:e.PointHelper.getRotation(i.from,s.from,i.to,s.to),center:a}}},T={wheel:{zoomSpeed:.5,moveSpeed:.5,rotateSpeed:.5,delta:{x:20,y:8},preventDefault:!0},pointer:{hitRadius:5,tapTime:120,longPressTime:800,transformTime:500,dragHover:!0,dragDistance:2,swipeDistance:20,preventDefaultMenu:!0},cursor:{}},{pathHasEventType:w,getMoveEventData:L,getZoomEventData:C,getRotateEventData:b}=v;class M{static set(t,e){this.custom[t]=e}static get(t){return this.custom[t]}}M.custom={};class H extends e.CanvasManager{constructor(){super(...arguments),this.pathTypeList=new e.LeafList,this.imageTypeList=new e.LeafList}getImageType(t,i){return this.imageTypeList.add(t),e.Creator.hitCanvas(i)}getPathType(t){return this.pathTypeList.add(t),e.Creator.hitCanvas()}clearImageType(){this.__clearLeafList(this.imageTypeList)}clearPathType(){this.__clearLeafList(this.pathTypeList)}__clearLeafList(t){t.length&&(t.forEach((t=>{t.__hitCanvas&&(t.__hitCanvas.destroy(),t.__hitCanvas=null)})),t.reset())}clear(){this.clearPathType(),this.clearImageType()}}const{toInnerRadiusPointOf:A,copy:S,setRadius:B}=e.PointHelper,I={};e.Leaf.prototype.__hitWorld=function(t){return!this.__layout.hitCanvasChanged&&this.__hitCanvas||(this.__updateHitCanvas(),this.__layout.boundsChanged||(this.__layout.hitCanvasChanged=!1)),this.__.hitRadius&&(S(I,t),B(t=I,this.__.hitRadius)),A(t,this.__world,I),!(!this.__.hitBox||!e.BoundsHelper.hitRadiusPoint(this.__layout.boxBounds,I))||this.__hit(I)},t.UI.prototype.__updateHitCanvas=function(){this.__hitCanvas||(this.__hitCanvas=this.leafer.hitCanvasManager.getPathType(this));const t=this.__hitCanvas;this.__drawHitPath(t),t.setStrokeOptions(this.__)},t.UI.prototype.__hit=function(t){"miniapp"===e.Platform.name&&this.__drawHitPath(this.__hitCanvas);const{fill:i,hitFill:s,windingRule:r}=this.__,a=i&&"path"===s||"all"===s,o=this.__hitFill(t,r);if(a&&o)return!0;const{stroke:n,hitStroke:h,__strokeWidth:p,strokeAlign:g}=this.__,d=n&&"path"===h||"all"===h,c=2*t.radiusX;let v=c;if(d)switch(g){case"inside":if(v+=2*p,!a&&o&&this.__hitStroke(t,v))return!0;v=c;break;case"center":v+=p;break;case"outside":if(v+=2*p,!a){if(!o&&this.__hitStroke(t,v))return!0;v=c}}return!!v&&this.__hitStroke(t,v)};const k=new t.UI;t.Rect.prototype.__updateHitCanvas=function(){(this.stroke||this.cornerRadius)&&k.__updateHitCanvas.call(this)},t.Rect.prototype.__hitFill=function(t,i){return this.__hitCanvas?k.__hitFill.call(this,t,i):e.BoundsHelper.hitRadiusPoint(this.__layout.boxBounds,t)},t.UI.prototype.find=function(t,e){return this.leafer?this.leafer.selector.getBy(t,this,!1,e):[]},t.UI.prototype.findOne=function(t,e){return this.leafer?this.leafer.selector.getBy(t,this,!0,e):null},t.Group.prototype.pick=function(t,e){return this.__layout.update(),e||(e={}),this.leafer?this.leafer.selector.getByPoint(t,e.hitRadius||0,Object.assign(Object.assign({},e),{target:this})):null},exports.Cursor=M,exports.HitCanvasManager=H,exports.InteractionBase=class{get dragging(){return this.dragger.dragging}get isDragEmpty(){return this.config.move.dragEmpty&&this.isRootPath(this.hoverData)&&(!this.downData||this.isRootPath(this.downData))}get isHoldRightKey(){return this.config.move.holdRightKey&&this.downData&&a.right(this.downData)}get moveMode(){return this.config.move.drag||this.config.move.holdSpaceKey&&r.isHoldSpaceKey()||this.downData&&(this.config.move.holdMiddleKey&&a.middle(this.downData)||this.isHoldRightKey&&this.dragger.moving)||this.isDragEmpty}get hitRadius(){return this.config.pointer.hitRadius}constructor(t,i,s,r){this.config=T,this.tapCount=0,this.downKeyMap={},this.target=t,this.canvas=i,this.selector=s,this.defaultPath=new e.LeafList(t),this.transformer=new c(this),this.dragger=new f(this),r&&(this.config=e.DataHelper.default(r,this.config)),this.__listenEvents()}start(){this.running=!0}stop(){this.running=!1}receive(t){}pointerDown(t,e){t||(t=this.hoverData),t&&(a.defaultLeft(t),this.updateDownData(t),this.checkPath(t,e),this.downTime=Date.now(),this.emit(exports.PointerEvent.BEFORE_DOWN,t),this.emit(exports.PointerEvent.DOWN,t),a.left(t)?(this.tapWait(),this.longPressWait(t)):a.right(t)&&(this.waitMenuTap=!0),this.dragger.setDragData(t),this.updateCursor(t))}pointerMove(t){if(t||(t=this.hoverData),!t)return;const{downData:e}=this;e&&a.defaultLeft(t);(this.canvas.bounds.hitPoint(t)||e)&&(this.pointerMoveReal(t),e&&this.dragger.checkDragOut(t))}pointerMoveReal(t){if(this.emit(exports.PointerEvent.BEFORE_MOVE,t,this.defaultPath),this.downData){const i=e.PointHelper.getDistance(this.downData,t)>this.config.pointer.dragDistance;i&&(this.waitTap&&this.pointerWaitCancel(),this.waitMenuTap=!1),this.dragger.checkDrag(t,i)}this.dragger.moving||(this.updateHoverData(t),this.checkPath(t),this.emit(exports.PointerEvent.MOVE,t),this.dragging&&!this.config.pointer.dragHover||this.pointerHover(t),this.dragger.dragging&&(this.dragger.dragOverOrOut(t),this.dragger.dragEnterOrLeave(t))),this.updateCursor(this.downData||t)}pointerUp(t){const{downData:e}=this;t||(t=e),e&&(a.defaultLeft(t),this.downData=null,this.findPath(t),t.path.addList(e.path.list),this.checkPath(t),this.emit(exports.PointerEvent.BEFORE_UP,t),this.emit(exports.PointerEvent.UP,t),this.touchLeave(t),this.tap(t),this.menuTap(t),this.dragger.dragEnd(t),this.updateCursor(t))}pointerCancel(){this.pointerUp(this.dragger.dragData)}multiTouch(t,e){const{move:i,angle:s,scale:r,center:a}=R.getData(e);this.rotate(b(a,s,t)),this.zoom(C(a,r,t)),this.move(L(a,i,t))}menu(t){this.findPath(t),this.emit(exports.PointerEvent.MENU,t)}menuTap(t){this.waitMenuTap&&this.emit(exports.PointerEvent.MENU_TAP,t)}move(t){this.transformer.move(t)}zoom(t){this.transformer.zoom(t)}rotate(t){this.transformer.rotate(t)}transformEnd(){this.transformer.transformEnd()}keyDown(t){const{code:e}=t;this.downKeyMap[e]||(this.downKeyMap[e]=!0,r.setDownCode(e),this.emit(exports.KeyEvent.HOLD,t,this.defaultPath),this.moveMode&&(this.cancelHover(),this.updateCursor())),this.emit(exports.KeyEvent.DOWN,t,this.defaultPath)}keyUp(t){const{code:e}=t;this.downKeyMap[e]=!1,r.setUpCode(e),this.emit(exports.KeyEvent.UP,t,this.defaultPath),"grab"===this.cursor&&this.updateCursor()}pointerHover(t){this.pointerOverOrOut(t),this.pointerEnterOrLeave(t)}pointerOverOrOut(t){const{path:e}=t,{overPath:i}=this;this.overPath=e,i?e.indexAt(0)!==i.indexAt(0)&&(this.emit(exports.PointerEvent.OUT,t,i),this.emit(exports.PointerEvent.OVER,t,e)):this.emit(exports.PointerEvent.OVER,t,e)}pointerEnterOrLeave(t){let{path:e}=t;this.downData&&!this.moveMode&&(e=e.clone(),this.downData.path.forEach((t=>e.add(t))));const{enterPath:i}=this;this.enterPath=e,this.emit(exports.PointerEvent.LEAVE,t,i,e),this.emit(exports.PointerEvent.ENTER,t,e,i)}touchLeave(t){"touch"===t.pointerType&&this.enterPath&&(this.emit(exports.PointerEvent.LEAVE,t),this.dragger.dragging&&this.emit(exports.DropEvent.LEAVE,t))}tap(t){const{pointer:e}=this.config,i=this.longTap(t);if(!e.tapMore&&i)return;if(!this.waitTap)return;e.tapMore&&this.emitTap(t);const s=Date.now()-this.downTime,r=[exports.PointerEvent.DOUBLE_TAP,exports.PointerEvent.DOUBLE_CLICK].some((e=>w(t.path,e)));s<e.tapTime+50&&r?(this.tapCount++,2===this.tapCount?(this.tapWaitCancel(),this.emitDoubleTap(t)):(clearTimeout(this.tapTimer),this.tapTimer=setTimeout((()=>{e.tapMore||(this.tapWaitCancel(),this.emitTap(t))}),e.tapTime))):e.tapMore||(this.tapWaitCancel(),this.emitTap(t))}findPath(t,e){const{hitRadius:i,through:s}=this.config.pointer,r=this.selector.getByPoint(t,i,e||{through:s});return r.throughPath&&(t.throughPath=r.throughPath),t.path=r.path,r.path}isRootPath(t){return t&&t.path.list[0].isLeafer}checkPath(t,e){(e||this.canMove(t))&&(t.path=this.defaultPath)}canMove(t){return this.moveMode&&t&&t.path.list.every((t=>!t.isOutside))}isDrag(t){return this.dragger.getList().has(t)}isPress(t){return this.downData&&this.downData.path.has(t)}isHover(t){return this.enterPath&&this.enterPath.has(t)}isFocus(t){return this.focusData===t}cancelHover(){const{hoverData:t}=this;t&&(t.path=this.defaultPath,this.pointerHover(t))}updateDownData(t,e,i){const{downData:s}=this;!t&&s&&(t=s),t&&(this.findPath(t,e),i&&s&&t.path.addList(s.path.list),this.downData=t)}updateHoverData(t){t||(t=this.hoverData),t&&(this.findPath(t,{exclude:this.dragger.getList(),name:exports.PointerEvent.MOVE}),this.hoverData=t)}updateCursor(t){if(this.config.cursor.stop)return;if(t||(this.updateHoverData(),t=this.downData||this.hoverData),this.dragger.moving)return this.setCursor("grabbing");if(this.canMove(t))return this.setCursor(this.downData?"grabbing":"grab");if(!t)return;let e,i;const{path:s}=t;for(let t=0,r=s.length;t<r&&(e=s.list[t],i=e.cursor,!i);t++);this.setCursor(i)}setCursor(t){this.cursor=t}emitTap(t){this.emit(exports.PointerEvent.TAP,t),this.emit(exports.PointerEvent.CLICK,t)}emitDoubleTap(t){this.emit(exports.PointerEvent.DOUBLE_TAP,t),this.emit(exports.PointerEvent.DOUBLE_CLICK,t)}pointerWaitCancel(){this.tapWaitCancel(),this.longPressWaitCancel()}tapWait(){clearTimeout(this.tapTimer),this.waitTap=!0}tapWaitCancel(){clearTimeout(this.tapTimer),this.waitTap=!1,this.tapCount=0}longPressWait(t){clearTimeout(this.longPressTimer),this.longPressTimer=setTimeout((()=>{this.longPressed=!0,this.emit(exports.PointerEvent.LONG_PRESS,t)}),this.config.pointer.longPressTime)}longTap(t){let e;return this.longPressed&&(this.emit(exports.PointerEvent.LONG_TAP,t),w(t.path,exports.PointerEvent.LONG_TAP)&&(e=!0)),this.longPressWaitCancel(),e}longPressWaitCancel(){clearTimeout(this.longPressTimer),this.longPressed=!1}__onResize(){this.shrinkCanvasBounds=new e.Bounds(this.canvas.bounds),this.shrinkCanvasBounds.spread(-2)}__listenEvents(){const{target:t}=this;this.__eventIds=[t.on_(e.ResizeEvent.RESIZE,this.__onResize,this)],t.once(e.LeaferEvent.READY,(()=>this.__onResize()))}__removeListenEvents(){this.target.off_(this.__eventIds),this.__eventIds.length=0}emit(t,e,i,s){this.running&&function(t,e,i,s){if(!i&&!e.path)return;let r;e.type=t,i?e=Object.assign(Object.assign({},e),{path:i}):i=e.path,e.target=i.indexAt(0);try{for(let a=i.length-1;a>-1;a--){if(r=i.list[a],y(r,t,e,!0,s))return;r.isApp&&P(r,t,e,!0,s)}for(let a=0,o=i.length;a<o;a++)if(r=i.list[a],r.isApp&&P(r,t,e,!1,s),y(r,t,e,!1,s))return}catch(t){_.error(t)}}(t,e,i,s)}destroy(){this.__eventIds.length&&(this.stop(),this.__removeListenEvents(),this.dragger.destroy(),this.transformer.destroy(),this.downData=this.overPath=this.enterPath=null)}},exports.InteractionHelper=v,exports.Keyboard=r,exports.LeaferTypeCreator=p,exports.MultiTouchHelper=R,exports.PointerButton=a,exports.UIEvent=o,Object.keys(t).forEach((function(e){"default"===e||Object.prototype.hasOwnProperty.call(exports,e)||Object.defineProperty(exports,e,{enumerable:!0,get:function(){return t[e]}})}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leafer-ui/core",
3
- "version": "1.0.0-rc.17",
3
+ "version": "1.0.0-rc.19",
4
4
  "description": "@leafer-ui/core",
5
5
  "author": "Chao (Leafer) Wan",
6
6
  "license": "MIT",
@@ -29,11 +29,11 @@
29
29
  "leaferjs"
30
30
  ],
31
31
  "dependencies": {
32
- "@leafer-ui/draw": "1.0.0-rc.17",
33
- "@leafer-ui/app": "1.0.0-rc.17",
34
- "@leafer-ui/type": "1.0.0-rc.17",
35
- "@leafer-ui/interaction": "1.0.0-rc.17",
36
- "@leafer-ui/event": "1.0.0-rc.17",
37
- "@leafer-ui/hit": "1.0.0-rc.17"
32
+ "@leafer-ui/draw": "1.0.0-rc.19",
33
+ "@leafer-ui/app": "1.0.0-rc.19",
34
+ "@leafer-ui/type": "1.0.0-rc.19",
35
+ "@leafer-ui/interaction": "1.0.0-rc.19",
36
+ "@leafer-ui/event": "1.0.0-rc.19",
37
+ "@leafer-ui/hit": "1.0.0-rc.19"
38
38
  }
39
39
  }