@leafer-ui/core 1.9.10 → 1.9.11

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.min.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var t=require("@leafer-ui/draw"),e=require("@leafer/core");function i(t,e,i,s){var r,a=arguments.length,n=a<3?e:null===s?s=Object.getOwnPropertyDescriptor(e,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(t,e,i,s);else for(var o=t.length-1;o>=0;o--)(r=t[o])&&(n=(a<3?r(n):a>3?r(e,i,n):r(e,i))||n);return a>3&&n&&Object.defineProperty(e,i,n),n}"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||{type:t.type||"design"})),(r||a)&&(this.sky=this.addLeafer(r)),a&&e.Creator.editor(a,this)}}__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()}__updateLocalBounds(){this.forEach(t=>t.updateLayout()),super.__updateLocalBounds()}start(){super.start(),this.forEach(t=>t.start())}stop(){this.forEach(t=>t.stop()),super.stop()}unlockLayout(){super.unlockLayout(),this.forEach(t=>t.unlockLayout())}lockLayout(){super.lockLayout(),this.forEach(t=>t.lockLayout())}forceRender(t,e){this.forEach(i=>i.forceRender(t,e))}addLeafer(e){const i=new t.Leafer(e);return this.add(i),i}add(t,i){if(!t.view){if(this.realCanvas&&!this.canvas.bounds)return void setTimeout(()=>this.add(t,i),10);t.init(this.__getChildConfig(t.userConfig),this)}super.add(t,i),e.isUndefined(i)||(t.canvas.childIndex=i),this.__listenChildEvents(t)}forEach(t){this.children.forEach(t)}__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){t.context&&this.forEach(i=>e.matrix?i.__render(t,e):t.copyWorld(i.canvas,e.bounds))}__onResize(t){this.forEach(e=>e.resize(t)),super.__onResize(t)}updateLayout(){this.forEach(t=>t.updateLayout())}__getChildConfig(t){const 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,this],[e.RenderEvent.START,this.__onCreated,this],[e.RenderEvent.END,this.__onViewReady,this]]),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],isHoldKeys:(t,e)=>e?t(e):void 0,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 n 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)}isHoldKeys(t){return r.isHoldKeys(t,this)}getBoxPoint(t){return(t||this.current).getBoxPoint(this)}getInnerPoint(t){return(t||this.current).getInnerPoint(this)}getLocalPoint(t){return(t||this.current).getLocalPoint(this)}getPagePoint(){return this.current.getPagePoint(this)}getInner(t){return this.getInnerPoint(t)}getLocal(t){return this.getLocalPoint(t)}getPage(){return this.getPagePoint()}static changeName(t,i){e.EventCreator.changeName(t,i)}}const{float:o,sign:h}=e.MathHelper,{min:p,max:g,abs:d}=Math,l=new e.Bounds,c=new e.Bounds,u={limitMove(t,e){const{dragBounds:i,dragBoundsType:s}=t;i&&v.getValidMove(t.__localBoxBounds,v.getDragBounds(t),s,e,!0),v.axisMove(t,e)},limitScaleOf(t,e,i,s){const{dragBounds:r,dragBoundsType:a}=t;r&&v.getValidScaleOf(t.__localBoxBounds,v.getDragBounds(t),a,t.getLocalPointByInner(t.getInnerPointByBox(e)),i,s,!0)},axisMove(t,e){const{draggable:i}=t;"x"===i&&(e.y=0),"y"===i&&(e.x=0)},getDragBounds(t){const{dragBounds:e}=t;return"parent"===e?t.parent.boxBounds:e},isInnerMode:(t,e,i,s)=>"inner"===i||"auto"===i&&t[s]>e[s],getValidMove(t,e,i,s,r){const a=t.x+s.x,n=t.y+s.y,h=a+t.width,p=n+t.height,g=e.x+e.width,d=e.y+e.height;return r||(s=Object.assign({},s)),v.isInnerMode(t,e,i,"width")?a>e.x?s.x+=e.x-a:h<g&&(s.x+=g-h):a<e.x?s.x+=e.x-a:h>g&&(s.x+=g-h),v.isInnerMode(t,e,i,"height")?n>e.y?s.y+=e.y-n:p<d&&(s.y+=d-p):n<e.y?s.y+=e.y-n:p>d&&(s.y+=d-p),s.x=o(s.x),s.y=o(s.y),s},getValidScaleOf(t,i,s,r,a,n,u){u||(a=Object.assign({},a)),c.set(i),l.set(t).scaleOf(r,a.x,a.y);const E=(r.x-t.x)/t.width,x=1-E,_=(r.y-t.y)/t.height,m=1-_;let f,P,y,D,w,L;return v.isInnerMode(t,i,s,"width")?(f=a.x<0?1/a.x:1,a.x<0&&l.scaleOf(r,f,1),w=o(l.minX-c.minX),L=o(c.maxX-l.maxX),y=E&&w>0?1+w/(E*l.width):1,D=x&&L>0?1+L/(x*l.width):1,f*=g(y,D)):(a.x<0&&l.unsign(),w=o(c.minX-l.minX),L=o(l.maxX-c.maxX),y=E&&w>0?1-w/(E*l.width):1,D=x&&L>0?1-L/(x*l.width):1,f=p(y,D)),v.isInnerMode(t,i,s,"height")?(P=a.y<0?1/a.y:1,a.y<0&&l.scaleOf(r,1,P),w=o(l.minY-c.minY),L=o(c.maxY-l.maxY),y=_&&w>0?1+w/(_*l.height):1,D=m&&L>0?1+L/(m*l.height):1,P*=g(y,D),n&&(y=g(d(f),d(P)),f=h(f)*y,P=h(P)*y)):(a.y<0&&l.unsign(),w=o(c.minY-l.minY),L=o(l.maxY-c.maxY),y=_&&w>0?1-w/(_*l.height):1,D=m&&L>0?1-L/(m*l.height):1,P=p(y,D)),a.x*=e.isFinite(f)?f:1,a.y*=e.isFinite(P)?P:1,a}},v=u;exports.PointerEvent=class extends n{},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 E=exports.PointerEvent,x={};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}static getValidMove(t,i,s,r=!0){const a=t.getLocalPoint(s,null,!0);return e.PointHelper.move(a,i.x-t.x,i.y-t.y),r&&this.limitMove(t,a),u.axisMove(t,a),a}static limitMove(t,e){u.limitMove(t,e)}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)}getPageBounds(){const t=this.getPageTotal(),i=this.getPagePoint(),s={};return e.BoundsHelper.set(s,i.x-t.x,i.y-t.y,t.x,t.y),e.BoundsHelper.unsign(s),s}assignMove(t){x.x=t?this.totalX:this.moveX,x.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);const _=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 exports.PointerEvent{},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 exports.PointerEvent{},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 n{},exports.KeyEvent.BEFORE_DOWN="key.before_down",exports.KeyEvent.BEFORE_UP="key.before_up",exports.KeyEvent.DOWN="key.down",exports.KeyEvent.HOLD="key.hold",exports.KeyEvent.UP="key.up",exports.KeyEvent=i([e.registerUIEvent()],exports.KeyEvent);const m={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:f.getSwipeDirection(e.PointHelper.getAngle(t,s))}),getBase(t){const i=1===t.button?4:t.button;return{altKey:t.altKey,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,metaKey:t.metaKey,buttons:e.isUndefined(t.buttons)?1:0===t.buttons?i: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},pathCanDrag:t=>t&&t.list.some(t=>e.LeafHelper.draggable(t)||!t.isLeafer&&t.hasEvent(exports.DragEvent.DRAG)),pathHasOutside:t=>t&&t.list.some(t=>t.isOutside)},f=m,P=new e.LeafList,{getDragEventData:y,getDropEventData:D,getSwipeEventData:w}=m;class L{constructor(t){this.interaction=t}setDragData(t){this.animateWait&&this.dragEndReal(),this.downData=this.interaction.downData,this.dragData=y(t,t,t),this.canAnimate=this.canDragOut=!0}getList(t,i){const{proxy:s}=this.interaction.selector,r=s&&s.list.length,a=exports.DragEvent.list||this.draggableList||P;return this.dragging&&(r?t?P:new e.LeafList(i?[...s.list,...s.dragHoverExclude]:s.list):a)}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.isMobileDragEmpty)&&(this.dragData.moveType="drag",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.getDraggableList(this.dragData.path),this.setDragStartPoints(this.realDraggableList=this.getList(!0))))}setDragStartPoints(t){this.dragStartPoints={},t.forEach(t=>this.dragStartPoints[t.innerId]={x:t.x,y:t.y})}getDraggableList(t){let i;for(let s=0,r=t.length;s<r;s++)if(i=t.list[s],e.LeafHelper.draggable(i)){this.draggableList=new e.LeafList(i);break}}drag(t){const{interaction:e,dragData:i,downData:s}=this,{path:r,throughPath:a}=s;this.dragData=y(s,i,t),a&&(this.dragData.throughPath=a),this.dragData.path=r,this.moving?(this.dragData.moveType="drag",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(t){const{interaction:i}=this,{running:s}=i,r=this.realDraggableList;if(r.length&&s){const{totalX:s,totalY:a}=this.dragData,{dragLimitAnimate:n}=i.p,o=!n||!!t;r.forEach(i=>{if(i.draggable){const r=e.isString(i.draggable),h=exports.DragEvent.getValidMove(i,this.dragStartPoints[i.innerId],{x:s,y:a},o||r);n&&!r&&t?e.LeafHelper.animateMove(i,h,e.isNumber(n)?n:.3):i.move(h)}})}}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,e){(this.dragging||this.moving)&&(this.checkDragEndAnimate(t,e)||this.dragEndReal(t))}dragEndReal(t){const{interaction:e,downData:i,dragData:s}=this;t||(t=s);const{path:r,throughPath:a}=i,n=y(i,t,t);if(a&&(n.throughPath=a),n.path=r,this.moving&&(this.moving=!1,n.moveType="drag",e.emit(exports.MoveEvent.END,n)),this.dragging){const r=this.getList();this.dragging=!1,e.p.dragLimitAnimate&&this.dragReal(!0),e.emit(exports.DragEvent.END,n),this.swipe(t,i,s,n),this.drop(t,r,this.dragEnterPath)}this.autoMoveCancel(),this.dragReset(),this.animate(null,"off")}swipe(t,i,s,r){const{interaction:a}=this;if(e.PointHelper.getDistance(i,t)>a.config.pointer.swipeDistance){const t=w(i,s,r);this.interaction.emit(t.type,t)}}drop(t,e,i){const s=D(t,e,exports.DragEvent.data);s.path=i,this.interaction.emit(exports.DropEvent.DROP,s),this.interaction.emit(exports.DragEvent.LEAVE,t,i)}dragReset(){exports.DragEvent.list=exports.DragEvent.data=this.draggableList=this.dragData=this.downData=this.dragOverPath=this.dragEnterPath=null}checkDragEndAnimate(t,e){return!1}animate(t,e){}checkDragOut(t){}autoMoveOnDragOut(t){}autoMoveCancel(){}destroy(){this.dragReset()}}const O=e.Debug.get("emit");const R=["move","zoom","rotate","key"];function T(t,e,i,s,r){if(R.some(t=>e.startsWith(t))&&t.__.hitChildren&&!b(t,r)){let a;for(let n=0,o=t.children.length;n<o;n++)a=t.children[n],!i.path.has(a)&&a.__.hittable&&C(a,e,i,s,r)}}function C(i,s,r,a,n){if(i.destroyed)return!1;if(i.__.hitSelf&&!b(i,n)&&(t.State.updateEventStyle&&!a&&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 b(t,e){return e&&e.has(t)}const M={wheel:{zoomSpeed:.5,moveSpeed:.5,rotateSpeed:.5,delta:{x:20,y:8}},pointer:{type:"pointer",snap:!0,hitRadius:5,tapTime:120,longPressTime:800,transformTime:500,hover:!0,dragHover:!0,dragDistance:2,swipeDistance:20},touch:{preventDefault:"auto"},multiTouch:{},move:{autoDistance:2},zoom:{},cursor:!0,keyEvent:!0},{pathHasEventType:S,pathCanDrag:B,pathHasOutside:H}=m;class k{static set(t,e){this.custom[t]=e}static get(t){return this.custom[t]}}k.custom={};class A extends e.CanvasManager{constructor(){super(...arguments),this.maxTotal=1e3,this.pathList=new e.LeafList,this.pixelList=new e.LeafList}getPixelType(t,i){return this.__autoClear(),this.pixelList.add(t),e.Creator.hitCanvas(i)}getPathType(t){return this.__autoClear(),this.pathList.add(t),e.Creator.hitCanvas()}clearImageType(){this.__clearLeafList(this.pixelList)}clearPathType(){this.__clearLeafList(this.pathList)}__clearLeafList(t){t.length&&(t.forEach(t=>{t.__hitCanvas&&(t.__hitCanvas.destroy(),t.__hitCanvas=null)}),t.reset())}__autoClear(){this.pathList.length+this.pixelList.length>this.maxTotal&&this.clear()}clear(){this.clearPathType(),this.clearImageType()}}e.Platform.getSelector=function(t){return t.leafer?t.leafer.selector:e.Platform.selector||(e.Platform.selector=e.Creator.selector())};const{toInnerRadiusPointOf:I,copy:K,setRadius:U}=e.PointHelper,{hitRadiusPoint:F,hitPoint:N}=e.BoundsHelper,W={},V={},j=e.Leaf.prototype;j.hit=function(t,i=0){this.updateLayout(),K(V,t),U(V,i);const s=this.__world;return!!(i?F(s,V):N(s,V))&&(this.isBranch?e.Platform.getSelector(this).hitPoint(Object.assign({},V),i,{target:this}):this.__hitWorld(V))},j.__hitWorld=function(t){const i=this.__;if(!i.hitSelf)return!1;const s=this.__world,r=this.__layout,a=s.width<10&&s.height<10;if(i.hitRadius&&(K(W,t),U(t=W,i.hitRadius)),I(t,s,W),i.hitBox||a){if(e.BoundsHelper.hitRadiusPoint(r.boxBounds,W))return!0;if(a)return!1}return!r.hitCanvasChanged&&this.__hitCanvas||(this.__updateHitCanvas(),r.boundsChanged||(r.hitCanvasChanged=!1)),this.__hit(W)},j.__hitFill=function(t){const e=this.__hitCanvas;return e&&e.hitFill(t,this.__.windingRule)},j.__hitStroke=function(t,e){const i=this.__hitCanvas;return i&&i.hitStroke(t,e)},j.__hitPixel=function(t){const e=this.__hitCanvas;return e&&e.hitPixel(t,this.__layout.renderBounds,e.hitScale)},j.__drawHitPath=function(t){t&&this.__drawRenderPath(t)};const z=new e.Matrix,X=t.UI.prototype;X.__updateHitCanvas=function(){this.__box&&this.__box.__updateHitCanvas();const t=this.leafer||this.parent&&this.parent.leafer;if(!t)return;const i=this.__,{hitCanvasManager:s}=t,r=(i.__isAlphaPixelFill||i.__isCanvas)&&"pixel"===i.hitFill,a=i.__isAlphaPixelStroke&&"pixel"===i.hitStroke,n=r||a;this.__hitCanvas||(this.__hitCanvas=n?s.getPixelType(this,{contextSettings:{willReadFrequently:!0}}):s.getPathType(this));const o=this.__hitCanvas;if(n){const{renderBounds:t}=this.__layout,s=e.Platform.image.hitCanvasSize,n=o.hitScale=e.tempBounds.set(0,0,s,s).getFitMatrix(t).a,{x:h,y:p,width:g,height:d}=e.tempBounds.set(t).scale(n);o.resize({width:g,height:d,pixelRatio:1}),o.clear(),e.ImageManager.patternLocked=!0,this.__renderShape(o,{matrix:z.setWith(this.__world).scaleWith(1/n).invertWith().translate(-h,-p),ignoreFill:!r,ignoreStroke:!a}),e.ImageManager.patternLocked=!1,o.resetTransform(),i.__isHitPixel=!0}else i.__isHitPixel&&(i.__isHitPixel=!1);this.__drawHitPath(o),o.setStrokeOptions(i)},X.__hit=function(t){if(this.__box&&this.__box.__hit(t))return!0;const e=this.__;if(e.__isHitPixel&&this.__hitPixel(t))return!0;const{hitFill:i}=e,s=(e.fill||e.__isCanvas)&&("path"===i||"pixel"===i&&!(e.__isAlphaPixelFill||e.__isCanvas))||"all"===i;if(s&&this.__hitFill(t))return!0;const{hitStroke:r,__maxStrokeWidth:a}=e,n=e.stroke&&("path"===r||"pixel"===r&&!e.__isAlphaPixelStroke)||"all"===r;if(!s&&!n)return!1;const o=2*t.radiusX;let h=o;if(n)switch(e.strokeAlign){case"inside":if(h+=2*a,!s&&this.__hitFill(t)&&this.__hitStroke(t,h))return!0;h=o;break;case"center":h+=a;break;case"outside":if(h+=2*a,!s){if(!this.__hitFill(t)&&this.__hitStroke(t,h))return!0;h=o}}return!!h&&this.__hitStroke(t,h)};const Y=t.UI.prototype,G=t.Rect.prototype,Z=t.Box.prototype;G.__updateHitCanvas=Z.__updateHitCanvas=function(){this.stroke||this.cornerRadius||(this.fill||this.__.__isCanvas)&&"pixel"===this.hitFill||"all"===this.hitStroke?Y.__updateHitCanvas.call(this):this.__hitCanvas&&(this.__hitCanvas=null)},G.__hitFill=Z.__hitFill=function(t){return this.__hitCanvas?Y.__hitFill.call(this,t):e.BoundsHelper.hitRadiusPoint(this.__layout.boxBounds,t)},t.Text.prototype.__drawHitPath=function(t){const{__lineHeight:e,fontSize:i,__baseLine:s,__letterSpacing:r,__textDrawData:a}=this.__;t.beginPath(),r<0?this.__drawPathByBox(t):a.rows.forEach(r=>t.rect(r.x,r.y-s,r.width,e<i?i:e))},t.Group.prototype.pick=function(i,s){return s||(s=t.emptyData),this.updateLayout(),e.Platform.getSelector(this).getByPoint(i,s.hitRadius||0,Object.assign(Object.assign({},s),{target:this}))};const q=e.LeaferCanvasBase.prototype;q.hitFill=function(t,e){return e?this.context.isPointInPath(t.x,t.y,e):this.context.isPointInPath(t.x,t.y)},q.hitStroke=function(t,e){return this.strokeWidth=e,this.context.isPointInStroke(t.x,t.y)},q.hitPixel=function(t,i,s=1){let{x:r,y:a,radiusX:n,radiusY:o}=t;i&&(r-=i.x,a-=i.y),e.tempBounds.set(r-n,a-o,2*n,2*o).scale(s).ceil();const{data:h}=this.context.getImageData(e.tempBounds.x,e.tempBounds.y,e.tempBounds.width||1,e.tempBounds.height||1);for(let t=0,e=h.length;t<e;t+=4)if(h[t+3]>0)return!0;return h[3]>0},exports.Cursor=k,exports.DragBoundsHelper=u,exports.Dragger=L,exports.HitCanvasManager=A,exports.InteractionBase=class{get dragging(){return this.dragger.dragging}get transforming(){return this.transformer.transforming}get moveMode(){return!0===this.m.drag||this.isHoldSpaceKey||this.isHoldMiddleKey||this.isHoldRightKey&&this.dragger.moving||this.isDragEmpty}get canHover(){return this.p.hover&&!this.config.mobile}get isDragEmpty(){return this.m.dragEmpty&&this.isRootPath(this.hoverData)&&(!this.downData||this.isRootPath(this.downData))}get isMobileDragEmpty(){return this.m.dragEmpty&&!this.canHover&&this.downData&&this.isTreePath(this.downData)}get isHoldMiddleKey(){return this.m.holdMiddleKey&&this.downData&&a.middle(this.downData)}get isHoldRightKey(){return this.m.holdRightKey&&this.downData&&a.right(this.downData)}get isHoldSpaceKey(){return this.m.holdSpaceKey&&r.isHoldSpaceKey()}get m(){return this.config.move}get p(){return this.config.pointer}get hitRadius(){return this.p.hitRadius}constructor(t,i,s,r){this.config=e.DataHelper.clone(M),this.tapCount=0,this.downKeyMap={},this.target=t,this.canvas=i,this.selector=s,this.defaultPath=new e.LeafList(t),this.createTransformer(),this.dragger=new L(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)),this.waitRightTap=a.right(t),this.dragger.setDragData(t),this.isHoldRightKey||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.p.dragDistance;i&&(this.pointerWaitCancel(),this.waitRightTap=!1),this.dragger.checkDrag(t,i)}this.dragger.moving||(this.updateHoverData(t),this.checkPath(t),this.emit(exports.PointerEvent.MOVE,t),this.pointerHover(t),this.dragging&&(this.dragger.dragOverOrOut(t),this.dragger.dragEnterOrLeave(t))),this.updateCursor(this.downData||t)}pointerUp(t){const{downData:e}=this;if(t||(t=e),!e)return;a.defaultLeft(t),t.multiTouch=e.multiTouch,this.findPath(t);const i=Object.assign(Object.assign({},t),{path:t.path.clone()});t.path.addList(e.path.list),this.checkPath(t),this.downData=null,this.emit(exports.PointerEvent.BEFORE_UP,t),this.emit(exports.PointerEvent.UP,t),this.touchLeave(t),t.isCancel||(this.tap(t),this.menuTap(t)),this.dragger.dragEnd(t),this.updateCursor(i)}pointerCancel(){const t=Object.assign({},this.dragger.dragData);t.isCancel=!0,this.pointerUp(t)}menu(t){this.findPath(t),this.emit(exports.PointerEvent.MENU,t),this.waitMenuTap=!0,!this.downData&&this.waitRightTap&&this.menuTap(t)}menuTap(t){this.waitRightTap&&this.waitMenuTap&&(this.emit(exports.PointerEvent.MENU_TAP,t),this.waitRightTap=this.waitMenuTap=!1)}createTransformer(){}move(t){}zoom(t){}rotate(t){}transformEnd(){}wheel(t){}multiTouch(t,e){}keyDown(t){if(!this.config.keyEvent)return;this.emit(exports.KeyEvent.BEFORE_DOWN,t,this.defaultPath);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){if(!this.config.keyEvent)return;this.emit(exports.KeyEvent.BEFORE_UP,t,this.defaultPath);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.canHover||this.dragging&&!this.p.dragHover||(t.path||(t.path=new e.LeafList),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=>S(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,i){const{hitRadius:s,through:r}=this.p,{bottomList:a,target:n}=this;e.Platform.backgrounder||t.origin||n&&n.updateLayout();const o=this.selector.getByPoint(t,s,Object.assign({bottomList:a,name:t.type},i||{through:r}));return o.throughPath&&(t.throughPath=o.throughPath),t.path=o.path,o.path}isRootPath(t){return t&&t.path.list[0].isLeafer}isTreePath(t){const e=this.target.app;return!(!e||!e.isApp)&&(e.editor&&!t.path.has(e.editor)&&t.path.has(e.tree)&&!t.target.syncEventer)}checkPath(t,e){(e||this.moveMode&&!H(t.path))&&(t.path=this.defaultPath)}canMove(t){return t&&(this.moveMode||"auto"===this.m.drag&&!B(t.path))&&!H(t.path)}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(!1,!0),name:exports.PointerEvent.MOVE}),this.hoverData=t)}updateCursor(t){if(!this.config.cursor||!this.canHover)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.syncEventer&&e.syncEventer.cursor||e.cursor,!i);t++);this.setCursor(i)}setCursor(t){this.cursor=t}getLocal(t,i){const s=this.canvas.getClientBounds(i),r={x:t.clientX-s.x,y:t.clientY-s.y},{bounds:a}=this.canvas;return r.x*=a.width/s.width,r.y*=a.height/s.height,this.p.snap&&e.PointHelper.round(r),r}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(){this.waitTap&&(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.p.longPressTime)}longTap(t){let e;return this.longPressed&&(this.emit(exports.PointerEvent.LONG_TAP,t),(S(t.path,exports.PointerEvent.LONG_TAP)||S(t.path,exports.PointerEvent.LONG_PRESS))&&(e=!0)),this.longPressWaitCancel(),e}longPressWaitCancel(){this.longPressTimer&&(clearTimeout(this.longPressTimer),this.longPressed=!1)}__onResize(){const{dragOut:t}=this.m;this.shrinkCanvasBounds=new e.Bounds(this.canvas.bounds),this.shrinkCanvasBounds.spread(-(e.isNumber(t)?t: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],C(r,t,e,!0,s))return;r.isApp&&T(r,t,e,!0,s)}for(let a=0,n=i.length;a<n;a++)if(r=i.list[a],r.isApp&&T(r,t,e,!1,s),C(r,t,e,!1,s))return}catch(t){O.error(t)}}(t,e,i,s)}destroy(){this.__eventIds.length&&(this.stop(),this.__removeListenEvents(),this.dragger.destroy(),this.transformer&&this.transformer.destroy(),this.downData=this.overPath=this.enterPath=null)}},exports.InteractionHelper=m,exports.Keyboard=r,exports.MyDragEvent=_,exports.MyPointerEvent=E,exports.PointerButton=a,exports.UIEvent=n,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,n=a<3?e:null===s?s=Object.getOwnPropertyDescriptor(e,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(t,e,i,s);else for(var o=t.length-1;o>=0;o--)(r=t[o])&&(n=(a<3?r(n):a>3?r(e,i,n):r(e,i))||n);return a>3&&n&&Object.defineProperty(e,i,n),n}"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||{type:t.type||"design"})),(r||a)&&(this.sky=this.addLeafer(r)),a&&e.Creator.editor(a,this)}}__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()}__updateLocalBounds(){this.forEach(t=>t.updateLayout()),super.__updateLocalBounds()}start(){super.start(),this.forEach(t=>t.start())}stop(){this.forEach(t=>t.stop()),super.stop()}unlockLayout(){super.unlockLayout(),this.forEach(t=>t.unlockLayout())}lockLayout(){super.lockLayout(),this.forEach(t=>t.lockLayout())}forceRender(t,e){this.forEach(i=>i.forceRender(t,e))}addLeafer(e){const i=new t.Leafer(e);return this.add(i),i}add(t,i){if(!t.view){if(this.realCanvas&&!this.canvas.bounds)return void setTimeout(()=>this.add(t,i),10);t.init(this.__getChildConfig(t.userConfig),this)}super.add(t,i),e.isUndefined(i)||(t.canvas.childIndex=i),this.__listenChildEvents(t)}forEach(t){this.children.forEach(t)}__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){t.context&&this.forEach(i=>e.matrix?i.__render(t,e):t.copyWorld(i.canvas,e.bounds))}__onResize(t){this.forEach(e=>e.resize(t)),super.__onResize(t)}updateLayout(){this.forEach(t=>t.updateLayout())}__getChildConfig(t){const 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,this],[e.RenderEvent.START,this.__onCreated,this],[e.RenderEvent.END,this.__onViewReady,this]]),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],isHoldKeys:(t,e)=>e?t(e):void 0,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 n 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)}isHoldKeys(t){return r.isHoldKeys(t,this)}getBoxPoint(t){return(t||this.current).getBoxPoint(this)}getInnerPoint(t){return(t||this.current).getInnerPoint(this)}getLocalPoint(t){return(t||this.current).getLocalPoint(this)}getPagePoint(){return this.current.getPagePoint(this)}getInner(t){return this.getInnerPoint(t)}getLocal(t){return this.getLocalPoint(t)}getPage(){return this.getPagePoint()}static changeName(t,i){e.EventCreator.changeName(t,i)}}const{min:o,max:h,abs:p}=Math,{float:g,sign:d}=e.MathHelper,{minX:l,maxX:c,minY:u,maxY:v}=e.BoundsHelper,E=new e.Bounds,x=new e.Bounds,_={limitMove(t,e){const{dragBounds:i,dragBoundsType:s}=t;i&&m.getValidMove(t.__localBoxBounds,m.getDragBounds(t),s,e,!0),m.axisMove(t,e)},limitScaleOf(t,e,i,s){const{dragBounds:r,dragBoundsType:a}=t;r&&m.getValidScaleOf(t.__localBoxBounds,m.getDragBounds(t),a,t.getLocalPointByInner(t.getInnerPointByBox(e)),i,s,!0)},axisMove(t,e){const{draggable:i}=t;"x"===i&&(e.y=0),"y"===i&&(e.x=0)},getDragBounds(t){const{dragBounds:e}=t;return"parent"===e?t.parent.boxBounds:e},isInnerMode:(t,e,i,s)=>"inner"===i||"auto"===i&&t[s]>e[s],getValidMove(t,e,i,s,r){const a=t.x+s.x,n=t.y+s.y,o=a+t.width,h=n+t.height,p=e.x+e.width,d=e.y+e.height;return r||(s=Object.assign({},s)),m.isInnerMode(t,e,i,"width")?a>e.x?s.x+=e.x-a:o<p&&(s.x+=p-o):a<e.x?s.x+=e.x-a:o>p&&(s.x+=p-o),m.isInnerMode(t,e,i,"height")?n>e.y?s.y+=e.y-n:h<d&&(s.y+=d-h):n<e.y?s.y+=e.y-n:h>d&&(s.y+=d-h),s.x=g(s.x),s.y=g(s.y),s},getValidScaleOf(t,i,s,r,a,n,_){_||(a=Object.assign({},a)),x.set(i),E.set(t).scaleOf(r,a.x,a.y);const f=(r.x-t.x)/t.width,P=1-f,y=(r.y-t.y)/t.height,D=1-y;let w,L,O,R,T=1,C=1;return m.isInnerMode(t,i,s,"width")?(a.x<0&&E.scaleOf(r,T=1/a.x,1),O=g(E.minX-x.minX),R=g(x.maxX-E.maxX),w=f&&O>0?1+O/(f*E.width):1,L=P&&R>0?1+R/(P*E.width):1,T*=h(w,L)):(a.x<0&&((g(l(t)-l(i))<=0||g(c(i)-c(t))<=0)&&E.scaleOf(r,T=1/a.x,1),E.unsign()),O=g(x.minX-E.minX),R=g(E.maxX-x.maxX),w=f&&O>0?1-O/(f*E.width):1,L=P&&R>0?1-R/(P*E.width):1,T*=o(w,L)),m.isInnerMode(t,i,s,"height")?(a.y<0&&E.scaleOf(r,1,C=1/a.y),O=g(E.minY-x.minY),R=g(x.maxY-E.maxY),w=y&&O>0?1+O/(y*E.height):1,L=D&&R>0?1+R/(D*E.height):1,C*=h(w,L),n&&(w=h(p(T),p(C)),T=d(T)*w,C=d(C)*w)):(a.y<0&&((g(u(t)-u(i))<=0||g(v(i)-v(t))<=0)&&E.scaleOf(r,1,C=1/a.y),E.unsign()),O=g(x.minY-E.minY),R=g(E.maxY-x.maxY),w=y&&O>0?1-O/(y*E.height):1,L=D&&R>0?1-R/(D*E.height):1,C*=o(w,L)),a.x*=e.isFinite(T)?T:1,a.y*=e.isFinite(C)?C:1,a}},m=_;exports.PointerEvent=class extends n{},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 f=exports.PointerEvent,P={};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}static getValidMove(t,i,s,r=!0){const a=t.getLocalPoint(s,null,!0);return e.PointHelper.move(a,i.x-t.x,i.y-t.y),r&&this.limitMove(t,a),_.axisMove(t,a),a}static limitMove(t,e){_.limitMove(t,e)}getPageMove(t){return this.assignMove(t),this.current.getPagePoint(P,null,!0)}getInnerMove(t,e){return t||(t=this.current),this.assignMove(e),t.getInnerPoint(P,null,!0)}getLocalMove(t,e){return t||(t=this.current),this.assignMove(e),t.getLocalPoint(P,null,!0)}getPageTotal(){return this.getPageMove(!0)}getInnerTotal(t){return this.getInnerMove(t,!0)}getLocalTotal(t){return this.getLocalMove(t,!0)}getPageBounds(){const t=this.getPageTotal(),i=this.getPagePoint(),s={};return e.BoundsHelper.set(s,i.x-t.x,i.y-t.y,t.x,t.y),e.BoundsHelper.unsign(s),s}assignMove(t){P.x=t?this.totalX:this.moveX,P.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);const y=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 exports.PointerEvent{},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 exports.PointerEvent{},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 n{},exports.KeyEvent.BEFORE_DOWN="key.before_down",exports.KeyEvent.BEFORE_UP="key.before_up",exports.KeyEvent.DOWN="key.down",exports.KeyEvent.HOLD="key.hold",exports.KeyEvent.UP="key.up",exports.KeyEvent=i([e.registerUIEvent()],exports.KeyEvent);const D={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:w.getSwipeDirection(e.PointHelper.getAngle(t,s))}),getBase(t){const i=1===t.button?4:t.button;return{altKey:t.altKey,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,metaKey:t.metaKey,buttons:e.isUndefined(t.buttons)?1:0===t.buttons?i: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},pathCanDrag:t=>t&&t.list.some(t=>e.LeafHelper.draggable(t)||!t.isLeafer&&t.hasEvent(exports.DragEvent.DRAG)),pathHasOutside:t=>t&&t.list.some(t=>t.isOutside)},w=D,L=new e.LeafList,{getDragEventData:O,getDropEventData:R,getSwipeEventData:T}=D;class C{constructor(t){this.interaction=t}setDragData(t){this.animateWait&&this.dragEndReal(),this.downData=this.interaction.downData,this.dragData=O(t,t,t),this.canAnimate=this.canDragOut=!0}getList(t,i){const{proxy:s}=this.interaction.selector,r=s&&s.list.length,a=exports.DragEvent.list||this.draggableList||L;return this.dragging&&(r?t?L:new e.LeafList(i?[...s.list,...s.dragHoverExclude]:s.list):a)}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.isMobileDragEmpty)&&(this.dragData.moveType="drag",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.getDraggableList(this.dragData.path),this.setDragStartPoints(this.realDraggableList=this.getList(!0))))}setDragStartPoints(t){this.dragStartPoints={},t.forEach(t=>this.dragStartPoints[t.innerId]={x:t.x,y:t.y})}getDraggableList(t){let i;for(let s=0,r=t.length;s<r;s++)if(i=t.list[s],e.LeafHelper.draggable(i)){this.draggableList=new e.LeafList(i);break}}drag(t){const{interaction:e,dragData:i,downData:s}=this,{path:r,throughPath:a}=s;this.dragData=O(s,i,t),a&&(this.dragData.throughPath=a),this.dragData.path=r,this.moving?(this.dragData.moveType="drag",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(t){const{interaction:i}=this,{running:s}=i,r=this.realDraggableList;if(r.length&&s){const{totalX:s,totalY:a}=this.dragData,{dragLimitAnimate:n}=i.p,o=!n||!!t;r.forEach(i=>{if(i.draggable){const r=e.isString(i.draggable),h=exports.DragEvent.getValidMove(i,this.dragStartPoints[i.innerId],{x:s,y:a},o||r);n&&!r&&t?e.LeafHelper.animateMove(i,h,e.isNumber(n)?n:.3):i.move(h)}})}}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,e){(this.dragging||this.moving)&&(this.checkDragEndAnimate(t,e)||this.dragEndReal(t))}dragEndReal(t){const{interaction:e,downData:i,dragData:s}=this;t||(t=s);const{path:r,throughPath:a}=i,n=O(i,t,t);if(a&&(n.throughPath=a),n.path=r,this.moving&&(this.moving=!1,n.moveType="drag",e.emit(exports.MoveEvent.END,n)),this.dragging){const r=this.getList();this.dragging=!1,e.p.dragLimitAnimate&&this.dragReal(!0),e.emit(exports.DragEvent.END,n),this.swipe(t,i,s,n),this.drop(t,r,this.dragEnterPath)}this.autoMoveCancel(),this.dragReset(),this.animate(null,"off")}swipe(t,i,s,r){const{interaction:a}=this;if(e.PointHelper.getDistance(i,t)>a.config.pointer.swipeDistance){const t=T(i,s,r);this.interaction.emit(t.type,t)}}drop(t,e,i){const s=R(t,e,exports.DragEvent.data);s.path=i,this.interaction.emit(exports.DropEvent.DROP,s),this.interaction.emit(exports.DragEvent.LEAVE,t,i)}dragReset(){exports.DragEvent.list=exports.DragEvent.data=this.draggableList=this.dragData=this.downData=this.dragOverPath=this.dragEnterPath=null}checkDragEndAnimate(t,e){return!1}animate(t,e){}checkDragOut(t){}autoMoveOnDragOut(t){}autoMoveCancel(){}destroy(){this.dragReset()}}const b=e.Debug.get("emit");const M=["move","zoom","rotate","key"];function S(t,e,i,s,r){if(M.some(t=>e.startsWith(t))&&t.__.hitChildren&&!H(t,r)){let a;for(let n=0,o=t.children.length;n<o;n++)a=t.children[n],!i.path.has(a)&&a.__.hittable&&B(a,e,i,s,r)}}function B(i,s,r,a,n){if(i.destroyed)return!1;if(i.__.hitSelf&&!H(i,n)&&(t.State.updateEventStyle&&!a&&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 H(t,e){return e&&e.has(t)}const k={wheel:{zoomSpeed:.5,moveSpeed:.5,rotateSpeed:.5,delta:{x:20,y:8}},pointer:{type:"pointer",snap:!0,hitRadius:5,tapTime:120,longPressTime:800,transformTime:500,hover:!0,dragHover:!0,dragDistance:2,swipeDistance:20},touch:{preventDefault:"auto"},multiTouch:{},move:{autoDistance:2},zoom:{},cursor:!0,keyEvent:!0},{pathHasEventType:A,pathCanDrag:I,pathHasOutside:K}=D;class U{static set(t,e){this.custom[t]=e}static get(t){return this.custom[t]}}U.custom={};class F extends e.CanvasManager{constructor(){super(...arguments),this.maxTotal=1e3,this.pathList=new e.LeafList,this.pixelList=new e.LeafList}getPixelType(t,i){return this.__autoClear(),this.pixelList.add(t),e.Creator.hitCanvas(i)}getPathType(t){return this.__autoClear(),this.pathList.add(t),e.Creator.hitCanvas()}clearImageType(){this.__clearLeafList(this.pixelList)}clearPathType(){this.__clearLeafList(this.pathList)}__clearLeafList(t){t.length&&(t.forEach(t=>{t.__hitCanvas&&(t.__hitCanvas.destroy(),t.__hitCanvas=null)}),t.reset())}__autoClear(){this.pathList.length+this.pixelList.length>this.maxTotal&&this.clear()}clear(){this.clearPathType(),this.clearImageType()}}e.Platform.getSelector=function(t){return t.leafer?t.leafer.selector:e.Platform.selector||(e.Platform.selector=e.Creator.selector())};const{toInnerRadiusPointOf:N,copy:W,setRadius:V}=e.PointHelper,{hitRadiusPoint:j,hitPoint:X}=e.BoundsHelper,Y={},z={},G=e.Leaf.prototype;G.hit=function(t,i=0){this.updateLayout(),W(z,t),V(z,i);const s=this.__world;return!!(i?j(s,z):X(s,z))&&(this.isBranch?e.Platform.getSelector(this).hitPoint(Object.assign({},z),i,{target:this}):this.__hitWorld(z))},G.__hitWorld=function(t){const i=this.__;if(!i.hitSelf)return!1;const s=this.__world,r=this.__layout,a=s.width<10&&s.height<10;if(i.hitRadius&&(W(Y,t),V(t=Y,i.hitRadius)),N(t,s,Y),i.hitBox||a){if(e.BoundsHelper.hitRadiusPoint(r.boxBounds,Y))return!0;if(a)return!1}return!r.hitCanvasChanged&&this.__hitCanvas||(this.__updateHitCanvas(),r.boundsChanged||(r.hitCanvasChanged=!1)),this.__hit(Y)},G.__hitFill=function(t){const e=this.__hitCanvas;return e&&e.hitFill(t,this.__.windingRule)},G.__hitStroke=function(t,e){const i=this.__hitCanvas;return i&&i.hitStroke(t,e)},G.__hitPixel=function(t){const e=this.__hitCanvas;return e&&e.hitPixel(t,this.__layout.renderBounds,e.hitScale)},G.__drawHitPath=function(t){t&&this.__drawRenderPath(t)};const Z=new e.Matrix,q=t.UI.prototype;q.__updateHitCanvas=function(){this.__box&&this.__box.__updateHitCanvas();const{hitCanvasManager:t}=this.leafer||this.parent&&this.parent.leafer||{};if(!t)return;const i=this.__,s=(i.__isAlphaPixelFill||i.__isCanvas)&&"pixel"===i.hitFill,r=i.__isAlphaPixelStroke&&"pixel"===i.hitStroke,a=s||r;this.__hitCanvas||(this.__hitCanvas=a?t.getPixelType(this,{contextSettings:{willReadFrequently:!0}}):t.getPathType(this));const n=this.__hitCanvas;if(a){const{renderBounds:t}=this.__layout,a=e.Platform.image.hitCanvasSize,o=n.hitScale=e.tempBounds.set(0,0,a,a).getFitMatrix(t).a,{x:h,y:p,width:g,height:d}=e.tempBounds.set(t).scale(o);n.resize({width:g,height:d,pixelRatio:1}),n.clear(),e.ImageManager.patternLocked=!0,this.__renderShape(n,{matrix:Z.setWith(this.__world).scaleWith(1/o).invertWith().translate(-h,-p),ignoreFill:!s,ignoreStroke:!r}),e.ImageManager.patternLocked=!1,n.resetTransform(),i.__isHitPixel=!0}else i.__isHitPixel&&(i.__isHitPixel=!1);this.__drawHitPath(n),n.setStrokeOptions(i)},q.__hit=function(t){if(this.__box&&this.__box.__hit(t))return!0;const e=this.__;if(e.__isHitPixel&&this.__hitPixel(t))return!0;const{hitFill:i}=e,s=(e.fill||e.__isCanvas)&&("path"===i||"pixel"===i&&!(e.__isAlphaPixelFill||e.__isCanvas))||"all"===i;if(s&&this.__hitFill(t))return!0;const{hitStroke:r,__maxStrokeWidth:a}=e,n=e.stroke&&("path"===r||"pixel"===r&&!e.__isAlphaPixelStroke)||"all"===r;if(!s&&!n)return!1;const o=2*t.radiusX;let h=o;if(n)switch(e.strokeAlign){case"inside":if(h+=2*a,!s&&this.__hitFill(t)&&this.__hitStroke(t,h))return!0;h=o;break;case"center":h+=a;break;case"outside":if(h+=2*a,!s){if(!this.__hitFill(t)&&this.__hitStroke(t,h))return!0;h=o}}return!!h&&this.__hitStroke(t,h)};const J=t.UI.prototype,Q=t.Rect.prototype,$=t.Box.prototype;Q.__updateHitCanvas=$.__updateHitCanvas=function(){this.stroke||this.cornerRadius||(this.fill||this.__.__isCanvas)&&"pixel"===this.hitFill||"all"===this.hitStroke?J.__updateHitCanvas.call(this):this.__hitCanvas&&(this.__hitCanvas=null)},Q.__hitFill=$.__hitFill=function(t){return this.__hitCanvas?J.__hitFill.call(this,t):e.BoundsHelper.hitRadiusPoint(this.__layout.boxBounds,t)},t.Text.prototype.__drawHitPath=function(t){const{__lineHeight:e,fontSize:i,__baseLine:s,__letterSpacing:r,__textDrawData:a}=this.__;t.beginPath(),r<0?this.__drawPathByBox(t):a.rows.forEach(r=>t.rect(r.x,r.y-s,r.width,e<i?i:e))},t.Group.prototype.pick=function(i,s){return s||(s=t.emptyData),this.updateLayout(),e.Platform.getSelector(this).getByPoint(i,s.hitRadius||0,Object.assign(Object.assign({},s),{target:this}))};const tt=e.LeaferCanvasBase.prototype;tt.hitFill=function(t,e){return e?this.context.isPointInPath(t.x,t.y,e):this.context.isPointInPath(t.x,t.y)},tt.hitStroke=function(t,e){return this.strokeWidth=e,this.context.isPointInStroke(t.x,t.y)},tt.hitPixel=function(t,i,s=1){let{x:r,y:a,radiusX:n,radiusY:o}=t;i&&(r-=i.x,a-=i.y),e.tempBounds.set(r-n,a-o,2*n,2*o).scale(s).ceil();const{data:h}=this.context.getImageData(e.tempBounds.x,e.tempBounds.y,e.tempBounds.width||1,e.tempBounds.height||1);for(let t=0,e=h.length;t<e;t+=4)if(h[t+3]>0)return!0;return h[3]>0},exports.Cursor=U,exports.DragBoundsHelper=_,exports.Dragger=C,exports.HitCanvasManager=F,exports.InteractionBase=class{get dragging(){return this.dragger.dragging}get transforming(){return this.transformer.transforming}get moveMode(){return!0===this.m.drag||this.isHoldSpaceKey||this.isHoldMiddleKey||this.isHoldRightKey&&this.dragger.moving||this.isDragEmpty}get canHover(){return this.p.hover&&!this.config.mobile}get isDragEmpty(){return this.m.dragEmpty&&this.isRootPath(this.hoverData)&&(!this.downData||this.isRootPath(this.downData))}get isMobileDragEmpty(){return this.m.dragEmpty&&!this.canHover&&this.downData&&this.isTreePath(this.downData)}get isHoldMiddleKey(){return this.m.holdMiddleKey&&this.downData&&a.middle(this.downData)}get isHoldRightKey(){return this.m.holdRightKey&&this.downData&&a.right(this.downData)}get isHoldSpaceKey(){return this.m.holdSpaceKey&&r.isHoldSpaceKey()}get m(){return this.config.move}get p(){return this.config.pointer}get hitRadius(){return this.p.hitRadius}constructor(t,i,s,r){this.config=e.DataHelper.clone(k),this.tapCount=0,this.downKeyMap={},this.target=t,this.canvas=i,this.selector=s,this.defaultPath=new e.LeafList(t),this.createTransformer(),this.dragger=new C(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)),this.waitRightTap=a.right(t),this.dragger.setDragData(t),this.isHoldRightKey||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.p.dragDistance;i&&(this.pointerWaitCancel(),this.waitRightTap=!1),this.dragger.checkDrag(t,i)}this.dragger.moving||(this.updateHoverData(t),this.checkPath(t),this.emit(exports.PointerEvent.MOVE,t),this.pointerHover(t),this.dragging&&(this.dragger.dragOverOrOut(t),this.dragger.dragEnterOrLeave(t))),this.updateCursor(this.downData||t)}pointerUp(t){const{downData:e}=this;if(t||(t=e),!e)return;a.defaultLeft(t),t.multiTouch=e.multiTouch,this.findPath(t);const i=Object.assign(Object.assign({},t),{path:t.path.clone()});t.path.addList(e.path.list),this.checkPath(t),this.downData=null,this.emit(exports.PointerEvent.BEFORE_UP,t),this.emit(exports.PointerEvent.UP,t),this.touchLeave(t),t.isCancel||(this.tap(t),this.menuTap(t)),this.dragger.dragEnd(t),this.updateCursor(i)}pointerCancel(){const t=Object.assign({},this.dragger.dragData);t.isCancel=!0,this.pointerUp(t)}menu(t){this.findPath(t),this.emit(exports.PointerEvent.MENU,t),this.waitMenuTap=!0,!this.downData&&this.waitRightTap&&this.menuTap(t)}menuTap(t){this.waitRightTap&&this.waitMenuTap&&(this.emit(exports.PointerEvent.MENU_TAP,t),this.waitRightTap=this.waitMenuTap=!1)}createTransformer(){}move(t){}zoom(t){}rotate(t){}transformEnd(){}wheel(t){}multiTouch(t,e){}keyDown(t){if(!this.config.keyEvent)return;this.emit(exports.KeyEvent.BEFORE_DOWN,t,this.defaultPath);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){if(!this.config.keyEvent)return;this.emit(exports.KeyEvent.BEFORE_UP,t,this.defaultPath);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.canHover||this.dragging&&!this.p.dragHover||(t.path||(t.path=new e.LeafList),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=>A(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,i){const{hitRadius:s,through:r}=this.p,{bottomList:a,target:n}=this;e.Platform.backgrounder||t.origin||n&&n.updateLayout();const o=this.selector.getByPoint(t,s,Object.assign({bottomList:a,name:t.type},i||{through:r}));return o.throughPath&&(t.throughPath=o.throughPath),t.path=o.path,o.path}isRootPath(t){return t&&t.path.list[0].isLeafer}isTreePath(t){const e=this.target.app;return!(!e||!e.isApp)&&(e.editor&&!t.path.has(e.editor)&&t.path.has(e.tree)&&!t.target.syncEventer)}checkPath(t,e){(e||this.moveMode&&!K(t.path))&&(t.path=this.defaultPath)}canMove(t){return t&&(this.moveMode||"auto"===this.m.drag&&!I(t.path))&&!K(t.path)}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(!1,!0),name:exports.PointerEvent.MOVE}),this.hoverData=t)}updateCursor(t){if(!this.config.cursor||!this.canHover)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.syncEventer&&e.syncEventer.cursor||e.cursor,!i);t++);this.setCursor(i)}setCursor(t){this.cursor=t}getLocal(t,i){const s=this.canvas.getClientBounds(i),r={x:t.clientX-s.x,y:t.clientY-s.y},{bounds:a}=this.canvas;return r.x*=a.width/s.width,r.y*=a.height/s.height,this.p.snap&&e.PointHelper.round(r),r}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(){this.waitTap&&(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.p.longPressTime)}longTap(t){let e;return this.longPressed&&(this.emit(exports.PointerEvent.LONG_TAP,t),(A(t.path,exports.PointerEvent.LONG_TAP)||A(t.path,exports.PointerEvent.LONG_PRESS))&&(e=!0)),this.longPressWaitCancel(),e}longPressWaitCancel(){this.longPressTimer&&(clearTimeout(this.longPressTimer),this.longPressed=!1)}__onResize(){const{dragOut:t}=this.m;this.shrinkCanvasBounds=new e.Bounds(this.canvas.bounds),this.shrinkCanvasBounds.spread(-(e.isNumber(t)?t: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],B(r,t,e,!0,s))return;r.isApp&&S(r,t,e,!0,s)}for(let a=0,n=i.length;a<n;a++)if(r=i.list[a],r.isApp&&S(r,t,e,!1,s),B(r,t,e,!1,s))return}catch(t){b.error(t)}}(t,e,i,s)}destroy(){this.__eventIds.length&&(this.stop(),this.__removeListenEvents(),this.dragger.destroy(),this.transformer&&this.transformer.destroy(),this.downData=this.overPath=this.enterPath=null)}},exports.InteractionHelper=D,exports.Keyboard=r,exports.MyDragEvent=y,exports.MyPointerEvent=f,exports.PointerButton=a,exports.UIEvent=n,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]}})});
2
2
  //# sourceMappingURL=core.min.cjs.map