// All material copyright Esri, All Rights Reserved, unless otherwise specified. // See https://js.arcgis.com/4.30/esri/copyright.txt for details. //>>built define("exports ../../core/has ../../core/handleUtils ../../core/mathUtils ../../core/screenUtils ./InputHandler ./InputManager ./IViewEvents".split(" "),function(t,u,y,z,v,A,B,C){function w(a){return!!x[a]}function D(a){for(const b of a)if(!w(b))return!1;return!0}function E(a){return{type:"focus",timestamp:a.timestamp,native:a.data.native,cancelable:a.cancelable,stopPropagation:()=>a.stopPropagation(),async:b=>a.async(b),preventDefault:()=>a.preventDefault()}}function F(a){return{type:"blur",timestamp:a.timestamp, native:a.data.native,cancelable:a.cancelable,stopPropagation:()=>a.stopPropagation(),async:b=>a.async(b),preventDefault:()=>a.preventDefault()}}function G(a,b){const {pointerType:d,button:e,buttons:f,x:c,y:g,native:h,eventId:k}=b.data,{cancelable:l,timestamp:m}=b,n=v.createScreenPoint(c,g);a=q(a,c,g);return{type:"click",pointerType:d,button:e,buttons:f,x:c,y:g,native:h,timestamp:m,screenPoint:n,mapPoint:a,eventId:k,cancelable:l,stopPropagation:()=>b.stopPropagation(),async:p=>b.async(p),preventDefault:()=> b.preventDefault()}}function H(a,b){const {pointerType:d,button:e,buttons:f,x:c,y:g,native:h,eventId:k}=b.data,{cancelable:l,timestamp:m}=b;return{type:"double-click",pointerType:d,button:e,buttons:f,x:c,y:g,native:h,timestamp:m,mapPoint:q(a,c,g),eventId:k,cancelable:l,stopPropagation:()=>b.stopPropagation(),async:n=>b.async(n),preventDefault:()=>b.preventDefault()}}function I(a,b){const {pointerType:d,button:e,buttons:f,x:c,y:g,native:h,eventId:k}=b.data,l=h.pointerId,{cancelable:m,timestamp:n}= b;return{type:"immediate-click",pointerId:l,pointerType:d,button:e,buttons:f,x:c,y:g,native:h,timestamp:n,mapPoint:q(a,c,g),eventId:k,cancelable:m,stopPropagation:()=>b.stopPropagation(),async:p=>b.async(p),preventDefault:()=>b.preventDefault()}}function J(a,b){const {pointerType:d,button:e,buttons:f,x:c,y:g,native:h,eventId:k}=b.data,l=h.pointerId,{cancelable:m,timestamp:n}=b;return{type:"immediate-double-click",pointerId:l,pointerType:d,button:e,buttons:f,x:c,y:g,native:h,timestamp:n,mapPoint:q(a, c,g),eventId:k,cancelable:m,stopPropagation:()=>b.stopPropagation(),async:p=>b.async(p),preventDefault:()=>b.preventDefault()}}function K(a,b){const {pointerType:d,button:e,buttons:f,x:c,y:g,native:h}=b.data,{cancelable:k,timestamp:l}=b;return{type:"hold",pointerType:d,button:e,buttons:f,x:c,y:g,native:h,timestamp:l,mapPoint:q(a,c,g),cancelable:k,stopPropagation:()=>b.stopPropagation(),async:m=>b.async(m),preventDefault:()=>b.preventDefault()}}function q(a,b,d){return a.toMap(v.createScreenPoint(b, d),{exclude:[]})}function L(a){const {key:b,repeat:d,native:e}=a.data,{cancelable:f,timestamp:c}=a;return{type:"key-down",key:b,repeat:d,native:e,timestamp:c,cancelable:f,stopPropagation:()=>a.stopPropagation(),async:g=>a.async(g),preventDefault:()=>a.preventDefault()}}function M(a){const {key:b,native:d}=a.data,{cancelable:e,timestamp:f}=a;return{type:"key-up",key:b,native:d,timestamp:f,cancelable:e,stopPropagation:()=>a.stopPropagation(),async:c=>a.async(c),preventDefault:()=>a.preventDefault()}} function r(a,b){const {x:d,y:e,button:f,buttons:c,native:g,eventId:h}=a.data,k=g.pointerId,l=g.pointerType,{cancelable:m,timestamp:n}=a;return{type:b,x:d,y:e,pointerId:k,pointerType:l,button:f,buttons:c,native:g,timestamp:n,eventId:h,cancelable:m,stopPropagation:()=>a.stopPropagation(),async:p=>a.async(p),preventDefault:()=>a.preventDefault()}}function N(a){const {x:b,y:d,buttons:e,native:f,eventId:c}=a.data.currentEvent,{button:g}=a.data.startEvent,h=a.data.startEvent.native.pointerId,k=a.data.startEvent.native.pointerType, l=a.data.action,m={x:a.data.startEvent.x,y:a.data.startEvent.y},{cancelable:n,timestamp:p}=a;return{type:"pointer-drag",x:b,y:d,pointerId:h,pointerType:k,button:g,buttons:e,action:l,origin:m,native:f,timestamp:p,eventId:c,cancelable:n,stopPropagation:()=>a.stopPropagation(),async:O=>a.async(O),preventDefault:()=>a.preventDefault()}}function P(a){const {cancelable:b,data:d,timestamp:e}=a,{x:f,y:c,deltaY:g,native:h}=d;return{type:"mouse-wheel",x:f,y:c,deltaY:g,native:h,timestamp:e,cancelable:b,stopPropagation:()=> a.stopPropagation(),async:k=>a.async(k),preventDefault:()=>a.preventDefault()}}function Q(a){const {action:b,state:d,device:e}=a.data,{cancelable:f,timestamp:c}=a,{buttons:g,axes:h}=d;return{type:"gamepad",device:e,timestamp:c,action:b,buttons:g,axes:h,cancelable:f,stopPropagation:()=>a.stopPropagation(),async:k=>a.async(k),preventDefault:()=>a.preventDefault()}}u="click double-click immediate-click immediate-double-click hold drag key-down key-up pointer-down pointer-move pointer-up pointer-drag mouse-wheel pointer-enter pointer-leave gamepad focus blur".split(" "); const x={};u.forEach(a=>{x[a]=!0});class R{constructor(a){this._handlers=new Map;this._counter=0;this._handlerCounts=new Map;this.view=a;this.inputManager=null}connect(a){a&&this.disconnect();this.inputManager=a;this._handlers.forEach(({handler:b,priority:d},e)=>this.inputManager?.installHandlers(e,[b],d))}disconnect(){this.inputManager&&this._handlers.forEach((a,b)=>this.inputManager?.uninstallHandlers(b));this.inputManager=null}destroy(){this.disconnect();this._handlers.clear();this.view=null}on(a, b,d,e){const f=Array.isArray(a)?a:a.split(",");if(!D(f))return f.some(w)&&console.error("Error: registering input events and other events on the view at the same time is not supported."),null;if(Array.isArray(b))a=b;else{var c=b;a=[]}"function"===typeof d?c=d:e=d;e=null!=e?e:B.ViewEventPriorities.DEFAULT;const g=this._createUniqueGroupName();d=new S(this.view,f,a,c);this._handlers.set(g,{handler:d,priority:e});for(const h of f)c=this._handlerCounts.get(h)||0,this._handlerCounts.set(h,c+1);this.inputManager&& this.inputManager.installHandlers(g,[d],e);return y.makeHandle(()=>this._removeHandler(g,f))}hasHandler(a){return!!this._handlerCounts.get(a)}_removeHandler(a,b){if(this._handlers.has(a)){this._handlers.delete(a);for(const d of b)b=this._handlerCounts.get(d),void 0!==b&&(1===b?this._handlerCounts.delete(d):this._handlerCounts.set(d,b-1))}this.inputManager&&this.inputManager.uninstallHandlers(a)}_createUniqueGroupName(){this._counter+=1;return`viewEvents_${this._counter}`}}class S extends A.InputHandler{constructor(a, b,d,e){super(!0);this._latestDragStart=void 0;this.view=a;for(const f of b)switch(f){case "click":this.registerIncoming("click",d,c=>e(G(a,c)));break;case "double-click":this.registerIncoming("double-click",d,c=>e(H(a,c)));break;case "immediate-click":this.registerIncoming("immediate-click",d,c=>e(I(a,c)));break;case "immediate-double-click":this.registerIncoming("immediate-double-click",d,c=>e(J(a,c)));break;case "hold":this.registerIncoming("hold",d,c=>e(K(a,c)));break;case "drag":this.registerIncoming("drag", d,c=>{(c=this._wrapDrag(c))&&e(c)});break;case "key-down":this.registerIncoming("key-down",d,c=>e(L(c)));break;case "key-up":this.registerIncoming("key-up",d,c=>e(M(c)));break;case "pointer-down":this.registerIncoming("pointer-down",d,c=>e(r(c,"pointer-down")));break;case "pointer-move":this.registerIncoming("pointer-move",d,c=>e(r(c,"pointer-move")));break;case "pointer-up":this.registerIncoming("pointer-up",d,c=>e(r(c,"pointer-up")));break;case "pointer-drag":this.registerIncoming("pointer-drag", d,c=>e(N(c)));break;case "mouse-wheel":this.registerIncoming("mouse-wheel",d,c=>e(P(c)));break;case "pointer-enter":this.registerIncoming("pointer-enter",d,c=>e(r(c,"pointer-enter")));break;case "pointer-leave":this.registerIncoming("pointer-leave",d,c=>e(r(c,"pointer-leave")));break;case "gamepad":this.registerIncoming("gamepad",d,c=>{e(Q(c))});break;case "focus":this.registerIncoming("focus",d,c=>{e(E(c))});break;case "blur":this.registerIncoming("blur",d,c=>{e(F(c))})}}_wrapDrag(a){const b=a.data, {x:d,y:e}=b.center,{action:f,pointerType:c,button:g}=b;"start"===f&&(this._latestDragStart=b);if(this._latestDragStart){var h=b.pointer.native,k=b.buttons,{cancelable:l,timestamp:m}=a,n={x:this._latestDragStart.center.x,y:this._latestDragStart.center.y};"end"===f&&(this._latestDragStart=void 0);return{type:"drag",action:f,x:d,y:e,origin:n,pointerType:c,button:g,buttons:k,radius:b.radius,angle:z.rad2deg(b.angle),native:h,timestamp:m,cancelable:l,stopPropagation:()=>a.stopPropagation(),async:p=>a.async(p), preventDefault:()=>a.preventDefault()}}}}Object.defineProperty(t,"MouseButton",{enumerable:!0,get:()=>C.MouseButton});t.ViewEvents=R;t.eventTypes=u;Object.defineProperty(t,Symbol.toStringTag,{value:"Module"})});