@leafer-ui/core 1.0.0-rc.18 → 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
@@ -576,7 +576,7 @@ class Dragger {
576
576
  return;
577
577
  }
578
578
  if (!this.moving && canDrag) {
579
- if (this.moving = interaction.moveMode || interaction.isHoldRightKey)
579
+ if (this.moving = interaction.canMove(this.downData) || interaction.isHoldRightKey)
580
580
  interaction.emit(exports.MoveEvent.START, this.dragData);
581
581
  }
582
582
  if (!this.moving) {
@@ -850,7 +850,7 @@ const config = {
850
850
  const { pathHasEventType, getMoveEventData, getZoomEventData, getRotateEventData } = InteractionHelper;
851
851
  class InteractionBase {
852
852
  get dragging() { return this.dragger.dragging; }
853
- 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)); }
854
854
  get isHoldRightKey() { return this.config.move.holdRightKey && this.downData && PointerButton.right(this.downData); }
855
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; }
856
856
  get hitRadius() { return this.config.pointer.hitRadius; }
@@ -882,19 +882,16 @@ class InteractionBase {
882
882
  return;
883
883
  PointerButton.defaultLeft(data);
884
884
  this.updateDownData(data);
885
- if (useDefaultPath)
886
- data.path = this.defaultPath;
885
+ this.checkPath(data, useDefaultPath);
887
886
  this.downTime = Date.now();
888
- if (this.downed = !this.moveMode) {
889
- this.emit(exports.PointerEvent.BEFORE_DOWN, data);
890
- this.emit(exports.PointerEvent.DOWN, data);
891
- if (PointerButton.left(data)) {
892
- this.tapWait();
893
- this.longPressWait(data);
894
- }
895
- else if (PointerButton.right(data)) {
896
- this.waitMenuTap = true;
897
- }
887
+ this.emit(exports.PointerEvent.BEFORE_DOWN, data);
888
+ this.emit(exports.PointerEvent.DOWN, data);
889
+ if (PointerButton.left(data)) {
890
+ this.tapWait();
891
+ this.longPressWait(data);
892
+ }
893
+ else if (PointerButton.right(data)) {
894
+ this.waitMenuTap = true;
898
895
  }
899
896
  this.dragger.setDragData(data);
900
897
  this.updateCursor(data);
@@ -909,10 +906,6 @@ class InteractionBase {
909
906
  PointerButton.defaultLeft(data);
910
907
  const hit = this.canvas.bounds.hitPoint(data);
911
908
  if (hit || downData) {
912
- if (hit && !downData && PointerButton.left(data)) {
913
- this.pointerDown(data, true);
914
- this.dragger.canDragOut = false;
915
- }
916
909
  this.pointerMoveReal(data);
917
910
  if (downData)
918
911
  this.dragger.checkDragOut(data);
@@ -931,8 +924,7 @@ class InteractionBase {
931
924
  }
932
925
  if (!this.dragger.moving) {
933
926
  this.updateHoverData(data);
934
- if (this.moveMode)
935
- data.path = this.defaultPath;
927
+ this.checkPath(data);
936
928
  this.emit(exports.PointerEvent.MOVE, data);
937
929
  if (!(this.dragging && !this.config.pointer.dragHover))
938
930
  this.pointerHover(data);
@@ -944,26 +936,22 @@ class InteractionBase {
944
936
  this.updateCursor(this.downData || data);
945
937
  }
946
938
  pointerUp(data) {
947
- const { downData, oldDownData } = this;
939
+ const { downData } = this;
948
940
  if (!data)
949
941
  data = downData;
950
942
  if (!downData)
951
943
  return;
952
944
  PointerButton.defaultLeft(data);
945
+ this.downData = null;
953
946
  this.findPath(data);
954
- if (this.downed) {
955
- this.downed = false;
956
- this.emit(exports.PointerEvent.BEFORE_UP, data);
957
- this.emit(exports.PointerEvent.UP, data);
958
- if (oldDownData)
959
- this.emit(exports.PointerEvent.UP, oldDownData, undefined, data.path);
960
- this.emit(exports.PointerEvent.UP, downData, undefined, data.path);
961
- this.touchLeave(data);
962
- this.tap(data);
963
- this.menuTap(data);
964
- }
947
+ data.path.addList(downData.path.list);
948
+ this.checkPath(data);
949
+ this.emit(exports.PointerEvent.BEFORE_UP, data);
950
+ this.emit(exports.PointerEvent.UP, data);
951
+ this.touchLeave(data);
952
+ this.tap(data);
953
+ this.menuTap(data);
965
954
  this.dragger.dragEnd(data);
966
- this.downData = this.oldDownData = null;
967
955
  this.updateCursor(data);
968
956
  }
969
957
  pointerCancel() {
@@ -1096,12 +1084,21 @@ class InteractionBase {
1096
1084
  data.path = find.path;
1097
1085
  return find.path;
1098
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
+ }
1099
1097
  isDrag(leaf) {
1100
1098
  return this.dragger.getList().has(leaf);
1101
1099
  }
1102
1100
  isPress(leaf) {
1103
- const { downData, oldDownData } = this;
1104
- return this.downed && ((downData && downData.path.has(leaf)) || (oldDownData && oldDownData.path.has(leaf)));
1101
+ return this.downData && this.downData.path.has(leaf);
1105
1102
  }
1106
1103
  isHover(leaf) {
1107
1104
  return this.enterPath && this.enterPath.has(leaf);
@@ -1116,14 +1113,15 @@ class InteractionBase {
1116
1113
  this.pointerHover(hoverData);
1117
1114
  }
1118
1115
  }
1119
- updateDownData(data, options) {
1116
+ updateDownData(data, options, merge) {
1120
1117
  const { downData } = this;
1121
1118
  if (!data && downData)
1122
- data = Object.assign({}, downData);
1119
+ data = downData;
1123
1120
  if (!data)
1124
1121
  return;
1125
- this.oldDownData = downData;
1126
1122
  this.findPath(data, options);
1123
+ if (merge && downData)
1124
+ data.path.addList(downData.path.list);
1127
1125
  this.downData = data;
1128
1126
  }
1129
1127
  updateHoverData(data) {
@@ -1144,7 +1142,7 @@ class InteractionBase {
1144
1142
  if (this.dragger.moving) {
1145
1143
  return this.setCursor('grabbing');
1146
1144
  }
1147
- else if (this.moveMode) {
1145
+ else if (this.canMove(data)) {
1148
1146
  return this.setCursor(this.downData ? 'grabbing' : 'grab');
1149
1147
  }
1150
1148
  else if (!data)
@@ -1284,7 +1282,8 @@ const inner = {};
1284
1282
  core.Leaf.prototype.__hitWorld = function (point) {
1285
1283
  if (this.__layout.hitCanvasChanged || !this.__hitCanvas) {
1286
1284
  this.__updateHitCanvas();
1287
- this.__layout.hitCanvasChanged = false;
1285
+ if (!this.__layout.boundsChanged)
1286
+ this.__layout.hitCanvasChanged = false;
1288
1287
  }
1289
1288
  if (this.__.hitRadius) {
1290
1289
  copy(inner, point), point = inner;
package/lib/core.esm.js CHANGED
@@ -575,7 +575,7 @@ class Dragger {
575
575
  return;
576
576
  }
577
577
  if (!this.moving && canDrag) {
578
- if (this.moving = interaction.moveMode || interaction.isHoldRightKey)
578
+ if (this.moving = interaction.canMove(this.downData) || interaction.isHoldRightKey)
579
579
  interaction.emit(MoveEvent.START, this.dragData);
580
580
  }
581
581
  if (!this.moving) {
@@ -849,7 +849,7 @@ const config = {
849
849
  const { pathHasEventType, getMoveEventData, getZoomEventData, getRotateEventData } = InteractionHelper;
850
850
  class InteractionBase {
851
851
  get dragging() { return this.dragger.dragging; }
852
- 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)); }
853
853
  get isHoldRightKey() { return this.config.move.holdRightKey && this.downData && PointerButton.right(this.downData); }
854
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; }
855
855
  get hitRadius() { return this.config.pointer.hitRadius; }
@@ -881,19 +881,16 @@ class InteractionBase {
881
881
  return;
882
882
  PointerButton.defaultLeft(data);
883
883
  this.updateDownData(data);
884
- if (useDefaultPath)
885
- data.path = this.defaultPath;
884
+ this.checkPath(data, useDefaultPath);
886
885
  this.downTime = Date.now();
887
- if (this.downed = !this.moveMode) {
888
- this.emit(PointerEvent.BEFORE_DOWN, data);
889
- this.emit(PointerEvent.DOWN, data);
890
- if (PointerButton.left(data)) {
891
- this.tapWait();
892
- this.longPressWait(data);
893
- }
894
- else if (PointerButton.right(data)) {
895
- this.waitMenuTap = true;
896
- }
886
+ this.emit(PointerEvent.BEFORE_DOWN, data);
887
+ this.emit(PointerEvent.DOWN, data);
888
+ if (PointerButton.left(data)) {
889
+ this.tapWait();
890
+ this.longPressWait(data);
891
+ }
892
+ else if (PointerButton.right(data)) {
893
+ this.waitMenuTap = true;
897
894
  }
898
895
  this.dragger.setDragData(data);
899
896
  this.updateCursor(data);
@@ -908,10 +905,6 @@ class InteractionBase {
908
905
  PointerButton.defaultLeft(data);
909
906
  const hit = this.canvas.bounds.hitPoint(data);
910
907
  if (hit || downData) {
911
- if (hit && !downData && PointerButton.left(data)) {
912
- this.pointerDown(data, true);
913
- this.dragger.canDragOut = false;
914
- }
915
908
  this.pointerMoveReal(data);
916
909
  if (downData)
917
910
  this.dragger.checkDragOut(data);
@@ -930,8 +923,7 @@ class InteractionBase {
930
923
  }
931
924
  if (!this.dragger.moving) {
932
925
  this.updateHoverData(data);
933
- if (this.moveMode)
934
- data.path = this.defaultPath;
926
+ this.checkPath(data);
935
927
  this.emit(PointerEvent.MOVE, data);
936
928
  if (!(this.dragging && !this.config.pointer.dragHover))
937
929
  this.pointerHover(data);
@@ -943,26 +935,22 @@ class InteractionBase {
943
935
  this.updateCursor(this.downData || data);
944
936
  }
945
937
  pointerUp(data) {
946
- const { downData, oldDownData } = this;
938
+ const { downData } = this;
947
939
  if (!data)
948
940
  data = downData;
949
941
  if (!downData)
950
942
  return;
951
943
  PointerButton.defaultLeft(data);
944
+ this.downData = null;
952
945
  this.findPath(data);
953
- if (this.downed) {
954
- this.downed = false;
955
- this.emit(PointerEvent.BEFORE_UP, data);
956
- this.emit(PointerEvent.UP, data);
957
- if (oldDownData)
958
- this.emit(PointerEvent.UP, oldDownData, undefined, data.path);
959
- this.emit(PointerEvent.UP, downData, undefined, data.path);
960
- this.touchLeave(data);
961
- this.tap(data);
962
- this.menuTap(data);
963
- }
946
+ data.path.addList(downData.path.list);
947
+ this.checkPath(data);
948
+ this.emit(PointerEvent.BEFORE_UP, data);
949
+ this.emit(PointerEvent.UP, data);
950
+ this.touchLeave(data);
951
+ this.tap(data);
952
+ this.menuTap(data);
964
953
  this.dragger.dragEnd(data);
965
- this.downData = this.oldDownData = null;
966
954
  this.updateCursor(data);
967
955
  }
968
956
  pointerCancel() {
@@ -1095,12 +1083,21 @@ class InteractionBase {
1095
1083
  data.path = find.path;
1096
1084
  return find.path;
1097
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
+ }
1098
1096
  isDrag(leaf) {
1099
1097
  return this.dragger.getList().has(leaf);
1100
1098
  }
1101
1099
  isPress(leaf) {
1102
- const { downData, oldDownData } = this;
1103
- return this.downed && ((downData && downData.path.has(leaf)) || (oldDownData && oldDownData.path.has(leaf)));
1100
+ return this.downData && this.downData.path.has(leaf);
1104
1101
  }
1105
1102
  isHover(leaf) {
1106
1103
  return this.enterPath && this.enterPath.has(leaf);
@@ -1115,14 +1112,15 @@ class InteractionBase {
1115
1112
  this.pointerHover(hoverData);
1116
1113
  }
1117
1114
  }
1118
- updateDownData(data, options) {
1115
+ updateDownData(data, options, merge) {
1119
1116
  const { downData } = this;
1120
1117
  if (!data && downData)
1121
- data = Object.assign({}, downData);
1118
+ data = downData;
1122
1119
  if (!data)
1123
1120
  return;
1124
- this.oldDownData = downData;
1125
1121
  this.findPath(data, options);
1122
+ if (merge && downData)
1123
+ data.path.addList(downData.path.list);
1126
1124
  this.downData = data;
1127
1125
  }
1128
1126
  updateHoverData(data) {
@@ -1143,7 +1141,7 @@ class InteractionBase {
1143
1141
  if (this.dragger.moving) {
1144
1142
  return this.setCursor('grabbing');
1145
1143
  }
1146
- else if (this.moveMode) {
1144
+ else if (this.canMove(data)) {
1147
1145
  return this.setCursor(this.downData ? 'grabbing' : 'grab');
1148
1146
  }
1149
1147
  else if (!data)
@@ -1283,7 +1281,8 @@ const inner = {};
1283
1281
  Leaf.prototype.__hitWorld = function (point) {
1284
1282
  if (this.__layout.hitCanvasChanged || !this.__hitCanvas) {
1285
1283
  this.__updateHitCanvas();
1286
- this.__layout.hitCanvasChanged = false;
1284
+ if (!this.__layout.boundsChanged)
1285
+ this.__layout.hitCanvasChanged = false;
1287
1286
  }
1288
1287
  if (this.__.hitRadius) {
1289
1288
  copy(inner, point), point = inner;
@@ -1 +1 @@
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 g,LayoutEvent as c,RenderEvent as l,Event as u,EventCreator as p,registerUIEvent as m,LeafList as v,PointHelper as _,BoundsHelper as f,Bounds as D,ResizeEvent as E,LeaferEvent as y,CanvasManager as O,Leaf as T,Platform as w}from"@leafer/core";function P(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 R=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,g),e.view=this.realCanvas?void 0:this.view,e.fill=void 0,e}__listenChildEvents(t){t.once(c.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))}};R=P([r()],R);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=P([m()],A);const x={};let S=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}};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=P([m()],S);let k=class extends A{static setList(t){S.setList(t)}static setData(t){S.setData(t)}};k.DROP="drop",k=P([m()],k);let B=class extends S{};B.BEFORE_MOVE="move.before_move",B.START="move.start",B.MOVE="move",B.END="move.end",B=P([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=P([m()],H);let N=class extends S{};N.SWIPE="swipe",N.LEFT="swipe.left",N.RIGHT="swipe.right",N.UP="swipe.up",N.DOWN="swipe.down",N=P([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=P([m()],W);let j=class extends M{};j.DOWN="key.down",j.HOLD="key.hold",j.UP="key.up",j=P([m()],j);const I=h.get("LeaferTypeCreator"),U={list:{},register(t,e){V[t]?I.repeat(t):V[t]=e},run(t,e){const i=V[t];i?i(e):I.error("no",t)}},{list:V,register:z}=U;z("draw",(function(t){const{config:e}=t;e.move.dragOut=!1})),z("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){U.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:S.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.moveMode||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(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 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(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(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(S.OUT,t,i),e.emit(S.OVER,t,a)):e.emit(S.OVER,t,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.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(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,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(),S.data);e.path=this.dragEnterPath,this.interaction.emit(k.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,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),g=f.maxY(n),c=t.x<o?s:d<t.x?-s:0,l=t.y<h?s:g<t.y?-s:0;let u=0,p=0;this.autoMoveTimer=setInterval((()=>{u+=c,p+=l,_.move(i,c,l),_.move(this.dragData,c,l),e.move(Object.assign(Object.assign({},t),{moveX:c,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.hoverData&&this.hoverData.path.list[0].isLeafer&&(!this.downData||this.downData.path.list[0].isLeafer)}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),e&&(t.path=this.defaultPath),this.downTime=Date.now(),(this.downed=!this.moveMode)&&(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);const i=this.canvas.bounds.hitPoint(t);(i||e)&&(i&&!e&&b.left(t)&&(this.pointerDown(t,!0),this.dragger.canDragOut=!1),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.moveMode&&(t.path=this.defaultPath),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,oldDownData:i}=this;t||(t=e),e&&(b.defaultLeft(t),this.findPath(t),this.downed&&(this.downed=!1,this.emit(A.BEFORE_UP,t),this.emit(A.UP,t),i&&this.emit(A.UP,i,void 0,t.path),this.emit(A.UP,e,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}=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(j.HOLD,t,this.defaultPath),this.moveMode&&(this.cancelHover(),this.updateCursor())),this.emit(j.DOWN,t,this.defaultPath)}keyUp(t){const{code:e}=t;this.downKeyMap[e]=!1,L.setUpCode(e),this.emit(j.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(k.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}isDrag(t){return this.dragger.getList().has(t)}isPress(t){const{downData:e,oldDownData:i}=this;return this.downed&&(e&&e.path.has(t)||i&&i.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){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: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.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(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 D(this.canvas.bounds),this.shrinkCanvasBounds.spread(-2)}__listenEvents(){const{target:t}=this;this.__eventIds=[t.on_(E.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 gt{static set(t,e){this.custom[t]=e}static get(t){return this.custom[t]}}gt.custom={};class ct 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.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"===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 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{R as App,gt as Cursor,S as DragEvent,k as DropEvent,ct as HitCanvasManager,dt as InteractionBase,F as InteractionHelper,j as KeyEvent,L as Keyboard,U 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};
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=>{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 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.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 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),this.canAnimate=this.canDragOut=!0}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.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,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=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,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),v=t.x<h?a:g<t.x?-a:0,c=t.y<p?a:d<t.y?-a:0;let l=0,E=0;this.autoMoveTimer=setInterval((()=>{l+=v,E+=c,e.PointHelper.move(s,v,c),e.PointHelper.move(this.dragData,v,c),i.move(Object.assign(Object.assign({},t),{moveX:v,moveY:c,totalX:l,totalY:E})),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}=c;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.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,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(t,i){return this.__hitCanvas?U.__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.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.downTime=Date.now(),(this.downed=!this.moveMode)&&(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);const i=this.canvas.bounds.hitPoint(t);(i||e)&&(i&&!e&&a.left(t)&&(this.pointerDown(t,!0),this.dragger.canDragOut=!1),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.moveMode&&(t.path=this.defaultPath),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,oldDownData:i}=this;t||(t=e),e&&(a.defaultLeft(t),this.findPath(t),this.downed&&(this.downed=!1,this.emit(exports.PointerEvent.BEFORE_UP,t),this.emit(exports.PointerEvent.UP,t),i&&this.emit(exports.PointerEvent.UP,i,void 0,t.path),this.emit(exports.PointerEvent.UP,e,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.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}isDrag(t){return this.dragger.getList().has(t)}isPress(t){const{downData:e,oldDownData:i}=this;return this.downed&&(e&&e.path.has(t)||i&&i.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){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.18",
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.18",
33
- "@leafer-ui/app": "1.0.0-rc.18",
34
- "@leafer-ui/type": "1.0.0-rc.18",
35
- "@leafer-ui/interaction": "1.0.0-rc.18",
36
- "@leafer-ui/event": "1.0.0-rc.18",
37
- "@leafer-ui/hit": "1.0.0-rc.18"
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
  }