@tomorrowevening/hermes
Version:
An extendable set of Web Tools controlled via a separate window for non-intereference with content.
2 lines (1 loc) • 1.33 kB
JavaScript
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=a(["ctrlKey","metaKey","shiftKey","button","pointerId","pointerType","clientX","clientY","pageX","pageY"]),p=a(["clientX","clientY","deltaX","deltaY","deltaMode"]),y=a(["ctrlKey","metaKey","shiftKey","keyCode"]);function h(e,n){e.preventDefault(),p(e,n)}function f(e){e.preventDefault()}function m(e,n,t){for(const r of n)t[r]=e[r]}function a(e){return function(t,r){const o={type:t.type};m(t,e,o),r(o)}}function c(e,n){const t=[],r={type:e.type,touches:t};for(let o=0;o<e.touches.length;++o){const i=e.touches[o];t.push({pageX:i.pageX,pageY:i.pageY})}n(r)}const v={37:!0,38:!0,39:!0,40:!0};function w(e,n){const{keyCode:t}=e;v[t]&&(e.preventDefault(),y(e,n))}const g={contextmenu:f,mousedown:s,mousemove:s,mouseup:s,pointerdown:s,pointermove:s,pointerup:s,touchstart:c,touchmove:c,touchend:c,wheel:h,keydown:w};let E=0;class H{id;worker;constructor(n,t,r){this.id=E++,this.worker=t;const o=d=>{this.worker.postMessage({type:"event",id:this.id,data:d})};t.postMessage({type:"makeProxy",id:this.id});for(const[d,l]of Object.entries(r))n.addEventListener(d,u=>{l(u,o)});function i(){o({type:"resize",left:0,top:0,width:innerWidth,height:innerHeight})}window.addEventListener("resize",i),i()}}exports.ElementProxy=H;exports.WebworkerEventHandlers=g;