import PointerInteraction from"./Pointer.js";import{mouseOnly,shiftKeyOnly}from"../events/condition.js";class DragRotateAndZoom extends PointerInteraction{constructor(t){t=t||{};super(t),this.condition_=t.condition||shiftKeyOnly,this.lastAngle_=void 0,this.lastMagnitude_=void 0,this.lastScaleDelta_=0,this.duration_=void 0!==t.duration?t.duration:400}handleDragEvent(t){if(mouseOnly(t)){const e=t.map;var i=e.getSize(),t=t.pixel,n=t[0]-i[0]/2,i=i[1]/2-t[1],t=Math.atan2(i,n),n=Math.sqrt(n*n+i*i);const a=e.getView();void 0!==this.lastAngle_&&(i=this.lastAngle_-t,a.adjustRotationInternal(i)),this.lastAngle_=t,void 0!==this.lastMagnitude_&&a.adjustResolutionInternal(this.lastMagnitude_/n),void 0!==this.lastMagnitude_&&(this.lastScaleDelta_=this.lastMagnitude_/n),this.lastMagnitude_=n}}handleUpEvent(t){if(!mouseOnly(t))return!0;const i=t.map,n=i.getView();t=1<this.lastScaleDelta_?1:-1;return n.endInteraction(this.duration_,t),this.lastScaleDelta_=0,!1}handleDownEvent(t){return!!mouseOnly(t)&&(!!this.condition_(t)&&(t.map.getView().beginInteraction(),this.lastAngle_=void 0,!(this.lastMagnitude_=void 0)))}}export default DragRotateAndZoom;