import PointerInteraction from"./Pointer.js";import{FALSE}from"../functions.js";import{altShiftKeysOnly,mouseActionButton,mouseOnly}from"../events/condition.js";import{disable}from"../rotationconstraint.js";class DragRotate extends PointerInteraction{constructor(t){t=t||{},super({stopDown:FALSE}),this.condition_=t.condition||altShiftKeysOnly,this.lastAngle_=void 0,this.duration_=void 0!==t.duration?t.duration:250}handleDragEvent(t){if(mouseOnly(t)){const o=t.map,i=o.getView();var n;i.getConstraints().rotation!==disable&&(n=o.getSize(),t=t.pixel,t=Math.atan2(n[1]/2-t[1],t[0]-n[0]/2),void 0!==this.lastAngle_&&(n=t-this.lastAngle_,i.adjustRotationInternal(-n)),this.lastAngle_=t)}}handleUpEvent(t){if(!mouseOnly(t))return!0;const n=t.map,o=n.getView();return o.endInteraction(this.duration_),!1}handleDownEvent(t){if(!mouseOnly(t))return!1;if(mouseActionButton(t)&&this.condition_(t)){const n=t.map;return n.getView().beginInteraction(),!(this.lastAngle_=void 0)}return!1}}export default DragRotate;