import e from"../../core/Interaction.prod.js";import t from"../../utils/is.prod.js";import*as s from"../../utils/pointerUtils.prod.js";function n({interaction:e,iEvent:n,phase:a}){if("gesture"!==e.prepared.name)return;const r=e.pointers.map((e=>e.pointer)),i="start"===a,o="end"===a,c=e.interactable.options.deltaSource;if(n.touches=[r[0],r[1]],i)n.distance=s.touchDistance(r,c),n.box=s.touchBBox(r),n.scale=1,n.ds=0,n.angle=s.touchAngle(r,c),n.da=0,e.gesture.startDistance=n.distance,e.gesture.startAngle=n.angle;else if(o){const t=e.prevEvent;n.distance=t.distance,n.box=t.box,n.scale=t.scale,n.ds=0,n.angle=t.angle,n.da=0}else n.distance=s.touchDistance(r,c),n.box=s.touchBBox(r),n.scale=n.distance/e.gesture.startDistance,n.angle=s.touchAngle(r,c),n.ds=n.scale-e.gesture.scale,n.da=n.angle-e.gesture.angle;e.gesture.distance=n.distance,e.gesture.angle=n.angle,t.number(n.scale)&&n.scale!==1/0&&!isNaN(n.scale)&&(e.gesture.scale=n.scale)}const a={id:"actions/gesture",before:["actions/drag","actions/resize"],install(e){const{actions:s,Interactable:n,defaults:r}=e;n.prototype.gesturable=function(e){return t.object(e)?(this.options.gesture.enabled=!1!==e.enabled,this.setPerAction("gesture",e),this.setOnEvents("gesture",e),this):t.bool(e)?(this.options.gesture.enabled=e,this):this.options.gesture},s.map.gesture=a,s.methodDict.gesture="gesturable",r.actions.gesture=a.defaults},listeners:{"interactions:action-start":n,"interactions:action-move":n,"interactions:action-end":n,"interactions:new"({interaction:e}){e.gesture={angle:0,distance:0,scale:1,startAngle:0,startDistance:0}},"auto-start:check"(e){if(e.interaction.pointers.length<2)return;const t=e.interactable.options.gesture;return t&&t.enabled?(e.action={name:"gesture"},!1):void 0}},defaults:{},getCursor(){return""}};export default a; //# sourceMappingURL=plugin.prod.js.map