@omnipad/core 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/chunk-42WBUPM3.cjs +1 -0
  2. package/dist/chunk-45F3BQT7.cjs +1 -0
  3. package/dist/chunk-52YF3VHH.cjs +1 -0
  4. package/dist/chunk-6XY2ZHZ3.mjs +1 -0
  5. package/dist/chunk-AK3RL7NL.mjs +1 -0
  6. package/dist/chunk-EYKCVOUA.mjs +1 -0
  7. package/dist/chunk-HCOFKHVV.cjs +1 -0
  8. package/dist/chunk-HQNUZXP5.mjs +1 -0
  9. package/dist/chunk-J5SVBM6K.mjs +1 -0
  10. package/dist/chunk-NB4FTDOP.cjs +1 -0
  11. package/dist/chunk-OVV5DKL6.cjs +1 -0
  12. package/dist/chunk-YAS6LFBF.mjs +1 -0
  13. package/dist/dom/index.cjs +1 -1
  14. package/dist/dom/index.d.cts +105 -36
  15. package/dist/dom/index.d.ts +105 -36
  16. package/dist/dom/index.mjs +1 -1
  17. package/dist/guest/index.cjs +1 -0
  18. package/dist/guest/index.d.cts +21 -0
  19. package/dist/guest/index.d.ts +21 -0
  20. package/dist/guest/index.mjs +1 -0
  21. package/dist/{index-DVegtw8s.d.cts → index-Dd0aHJaA.d.cts} +739 -27
  22. package/dist/{index-DVegtw8s.d.ts → index-Dd0aHJaA.d.ts} +739 -27
  23. package/dist/index.cjs +1 -1
  24. package/dist/index.d.cts +282 -5
  25. package/dist/index.d.ts +282 -5
  26. package/dist/index.mjs +1 -1
  27. package/dist/sticky-CCj0ECTY.d.cts +285 -0
  28. package/dist/sticky-d_z_GU83.d.ts +285 -0
  29. package/dist/utils/index.cjs +1 -1
  30. package/dist/utils/index.d.cts +122 -69
  31. package/dist/utils/index.d.ts +122 -69
  32. package/dist/utils/index.mjs +1 -1
  33. package/package.json +9 -1
  34. package/dist/chunk-FSJTQU4W.cjs +0 -1
  35. package/dist/chunk-MKVX5ALC.mjs +0 -1
  36. package/dist/chunk-PACTGVBB.mjs +0 -1
  37. package/dist/chunk-U52W5J3K.cjs +0 -1
  38. package/dist/chunk-V7AHGFPB.mjs +0 -1
  39. package/dist/chunk-VHF3K5X6.cjs +0 -1
  40. package/dist/chunk-ZHPNS73J.cjs +0 -1
  41. package/dist/chunk-ZM2LX5IW.mjs +0 -1
  42. package/dist/sticky-4yk5DLzG.d.cts +0 -59
  43. package/dist/sticky-CLBq1EPa.d.ts +0 -59
  44. package/dist/traits-D6ePqSA6.d.cts +0 -152
  45. package/dist/traits-dAndzyWS.d.ts +0 -152
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- 'use strict';var chunkU52W5J3K_cjs=require('./chunk-U52W5J3K.cjs'),chunkVHF3K5X6_cjs=require('./chunk-VHF3K5X6.cjs'),chunkZHPNS73J_cjs=require('./chunk-ZHPNS73J.cjs');var S=class{constructor(){chunkZHPNS73J_cjs.a(this,"listeners",new Set);}subscribe(s){return this.listeners.add(s),()=>this.listeners.delete(s)}emit(s){this.listeners.forEach(t=>{try{t(s);}catch(e){console.error("[OmniPad-Core] Emitter callback error:",e);}});}clear(){this.listeners.clear();}};var l=class{constructor(s,t,e,i){chunkZHPNS73J_cjs.a(this,"uid");chunkZHPNS73J_cjs.a(this,"type");chunkZHPNS73J_cjs.a(this,"config");chunkZHPNS73J_cjs.a(this,"state");chunkZHPNS73J_cjs.a(this,"rectProvider",null);chunkZHPNS73J_cjs.a(this,"_onMarkDirtyCb",null);chunkZHPNS73J_cjs.a(this,"stateEmitter",new S);chunkZHPNS73J_cjs.a(this,"configEmitter",new S);this.uid=s,this.type=t,this.config=e,this.state=i;}getConfig(){return this.config}subscribeConfig(s){return s(this.config),this.configEmitter.subscribe(s)}updateConfig(s){this.config={...this.config,...s},this.configEmitter.emit(this.config);}getState(){return this.state}setState(s){this.state={...this.state,...s},this.stateEmitter.emit(this.state);}subscribeState(s){return s(this.state),this.stateEmitter.subscribe(s)}destroy(){this.reset(),this.stateEmitter.clear(),this.configEmitter.clear(),chunkZHPNS73J_cjs.h.getInstance().unregister(this.uid);}get rect(){return this.rectProvider?this.rectProvider():null}bindRectProvider(s,t){this.rectProvider=s,t&&(this._onMarkDirtyCb=t);}markRectDirty(){this._onMarkDirtyCb?.();}};var c=class{constructor(s,t){chunkZHPNS73J_cjs.a(this,"isPressed",false);chunkZHPNS73J_cjs.a(this,"mapping");chunkZHPNS73J_cjs.a(this,"targetId");this.update(s,t);}update(s,t){this.isPressed&&this.reset(),this.targetId=s,this.mapping=this.hydrate(t);}hydrate(s){if(!s)return;let t={...s};if(t.type==="mouse")return t.button=t.button??0,t;let{key:e,code:i,keyCode:o}=t;if(e||i||o){t.type="keyboard";let a=Object.values(chunkZHPNS73J_cjs.b).find(p=>p.code===i||p.key===e||p.keyCode===o);a&&(t.key=e??a.key,t.code=i??a.code,t.keyCode=o??a.keyCode);}return t}press(){if(!this.mapping||this.isPressed)return;this.isPressed=true;let s=this.mapping.type==="keyboard"?chunkZHPNS73J_cjs.d.KEYDOWN:chunkZHPNS73J_cjs.d.MOUSEDOWN;this.emitSignal(s);}release(s=true){if(!this.mapping||!this.isPressed)return;this.isPressed=false;let t=this.mapping.type==="keyboard"?chunkZHPNS73J_cjs.d.KEYUP:chunkZHPNS73J_cjs.d.MOUSEUP;this.emitSignal(t),this.mapping.type==="mouse"&&s&&this.emitSignal(chunkZHPNS73J_cjs.d.CLICK);}move(s){this.mapping?.type==="mouse"&&this.emitSignal(chunkZHPNS73J_cjs.d.MOUSEMOVE,s);}reset(){this.isPressed&&this.release(false);}async tap(s=true){this.isPressed||(this.press(),await chunkVHF3K5X6_cjs.c(2),this.isPressed&&this.release(s));}emitSignal(s,t={}){this.mapping&&chunkZHPNS73J_cjs.h.getInstance().broadcastSignal({targetStageId:this.targetId||"",type:s,payload:{key:this.mapping.key,code:this.mapping.code,keyCode:this.mapping.keyCode,button:this.mapping.button,point:this.mapping.fixedPoint,...t}});}};var x={isActive:false,isPressed:false,pointerId:null,value:0},w=class extends l{constructor(t,e,i){super(t,i||chunkZHPNS73J_cjs.c.BUTTON,e,x);chunkZHPNS73J_cjs.a(this,"emitter");this.emitter=new c(e.targetStageId,e.mapping);}get activePointerId(){return this.state.pointerId}onPointerDown(t){this.setState({isActive:true,isPressed:true,pointerId:t.pointerId}),this.emitter.press();}onPointerUp(t){!this.state.isActive||t.pointerId!==this.state.pointerId||this.handleRelease(true);}onPointerCancel(){this.handleRelease(false);}onPointerMove(){}reset(){this.setState(x),this.emitter.reset();}updateConfig(t){super.updateConfig(t),this.emitter.update(this.config.targetStageId,this.config.mapping);}handleRelease(t){this.setState(x),this.emitter.release(t);}triggerDown(){this.state.isPressed||(this.setState({isActive:true,isPressed:true}),this.emitter.press());}triggerUp(){this.state.isPressed&&(this.setState({isActive:false,isPressed:false}),this.emitter.release(true));}};var K={isActive:false,pointerId:null,vector:{x:0,y:0}},X=.002,L=.3,M=class extends l{constructor(t,e,i){super(t,i||chunkZHPNS73J_cjs.c.D_PAD,e,K);chunkZHPNS73J_cjs.a(this,"emitters");let o=e.targetStageId;this.emitters={up:new c(o,e.mapping?.up),down:new c(o,e.mapping?.down),left:new c(o,e.mapping?.left),right:new c(o,e.mapping?.right)};}get activePointerId(){return this.state.pointerId}onPointerDown(t){this.setState({isActive:true,pointerId:t.pointerId,vector:{x:0,y:0}}),this.processInput(t,true);}onPointerMove(t){!this.state.isActive||t.pointerId!==this.state.pointerId||this.processInput(t);}onPointerUp(t){!this.state.isActive||t.pointerId!==this.state.pointerId||this.reset();}onPointerCancel(){this.reset();}processInput(t,e=false){if(!this.state.isActive)return;let i=this.rect;if(!i)return;let o=i.left+i.width/2,a=i.top+i.height/2,p=i.width/2,f=i.height/2,P=(t.clientX-o)/p,b=(t.clientY-a)/f;if(e&&(P!=chunkU52W5J3K_cjs.d(P,-1,1)||b!=chunkU52W5J3K_cjs.d(b,-1,1))){this.setState({vector:{x:0,y:0}}),this.markRectDirty();return}let A={x:chunkU52W5J3K_cjs.d(P,-1,1),y:chunkU52W5J3K_cjs.d(b,-1,1)};chunkU52W5J3K_cjs.s(A,this.state.vector,X)||(this.setState({vector:A}),this.handleDigitalKeys(A));}handleDigitalKeys(t){let e=this.config.threshold??.3;t.y<-e?(this.emitters.up.press(),this.emitters.down.release()):t.y>e?(this.emitters.down.press(),this.emitters.up.release()):(this.emitters.up.release(),this.emitters.down.release()),t.x<-e?(this.emitters.left.press(),this.emitters.right.release()):t.x>e?(this.emitters.right.press(),this.emitters.left.release()):(this.emitters.left.release(),this.emitters.right.release());}reset(){this.emitters.up.reset(),this.emitters.down.reset(),this.emitters.left.reset(),this.emitters.right.reset(),this.setState(K);}updateConfig(t){super.updateConfig(t),this.emitters.up.update(this.config.targetStageId,this.config.mapping?.up),this.emitters.down.update(this.config.targetStageId,this.config.mapping?.down),this.emitters.left.update(this.config.targetStageId,this.config.mapping?.left),this.emitters.right.update(this.config.targetStageId,this.config.mapping?.right);}triggerVector(t,e){let i=this.config.threshold??.3;if(Math.abs(t)<i&&Math.abs(e)<i){this.state.isActive&&this.reset();return}this.state.isActive||this.setState({isActive:true});let o=chunkU52W5J3K_cjs.e(this.state.vector.x,t,L),a=chunkU52W5J3K_cjs.e(this.state.vector.y,e,L),p={x:o,y:a};chunkU52W5J3K_cjs.s(p,this.state.vector,X)||(this.setState({vector:p}),this.handleDigitalKeys(p));}};var q={isDynamicActive:false,dynamicPointerId:null,dynamicPosition:{x:0,y:0}},k=class extends l{constructor(t,e,i){super(t,i||chunkZHPNS73J_cjs.c.INPUT_ZONE,e,q);chunkZHPNS73J_cjs.a(this,"delegates",{dynamicWidgetPointerDown:()=>{},dynamicWidgetPointerMove:()=>{},dynamicWidgetPointerUp:()=>{},dynamicWidgetPointerCancel:()=>{}});}bindDelegate(t,e){Object.prototype.hasOwnProperty.call(this.delegates,t)?this.delegates[t]=e:undefined?.DEV&&console.warn(`[OmniPad-Core] TargetZone attempted to bind unknown delegate: ${t}`);}get activePointerId(){return this.state.dynamicPointerId}onPointerDown(t){if(this.state.isDynamicActive)return;let e=this.calculateRelativePosition(t.clientX,t.clientY);this.setState({isDynamicActive:true,dynamicPointerId:t.pointerId,dynamicPosition:e}),this.delegates.dynamicWidgetPointerDown?.(t);}onPointerMove(t){this.state.isDynamicActive&&this.delegates.dynamicWidgetPointerMove?.(t);}onPointerUp(t){this.delegates.dynamicWidgetPointerUp?.(t),this.reset();}onPointerCancel(t){this.delegates.dynamicWidgetPointerCancel?.(t),this.reset();}calculateRelativePosition(t,e){let i=this.rect;return i?{x:chunkU52W5J3K_cjs.o(t-i.left,i.width),y:chunkU52W5J3K_cjs.o(e-i.top,i.height)}:{x:0,y:0}}get isInterceptorRequired(){return !!(this.config.dynamicWidgetId||this.config.preventFocusLoss)}reset(){this.setState({isDynamicActive:false,dynamicPointerId:null});}};var T=class{constructor(s={}){chunkZHPNS73J_cjs.a(this,"options");chunkZHPNS73J_cjs.a(this,"startTime",0);chunkZHPNS73J_cjs.a(this,"startPos",{x:0,y:0});chunkZHPNS73J_cjs.a(this,"lastTapTime",0);chunkZHPNS73J_cjs.a(this,"hasMoved",false);chunkZHPNS73J_cjs.a(this,"isDoubleTapHolding",false);this.options={tapTime:250,tapDistance:10,doubleTapGap:300,...s};}onPointerDown(s,t){let e=Date.now();this.startTime=e,this.startPos={x:s,y:t},this.hasMoved=false,e-this.lastTapTime<this.options.doubleTapGap?(this.isDoubleTapHolding=true,this.options.onDoubleTapHoldStart?.()):this.isDoubleTapHolding=false;}onPointerMove(s,t){this.hasMoved||Math.hypot(s-this.startPos.x,t-this.startPos.y)>this.options.tapDistance&&(this.hasMoved=true);}onPointerUp(){let s=Date.now(),t=s-this.startTime;this.isDoubleTapHolding?(this.isDoubleTapHolding=false,this.options.onDoubleTapHoldEnd?.(),this.lastTapTime=0):t<=this.options.tapTime&&!this.hasMoved&&(this.options.onTap?.(),s-this.lastTapTime<this.options.doubleTapGap?(this.options.onDoubleTap?.(),this.lastTapTime=0):this.lastTapTime=s);}reset(){this.isDoubleTapHolding&&this.options.onDoubleTapHoldEnd?.(),this.isDoubleTapHolding=false,this.hasMoved=false,this.startTime=0,this.lastTapTime=0;}};var W={isActive:false,isPressed:false,pointerId:null,value:0,vector:{x:0,y:0}},O=.002,G=.3,R=class extends l{constructor(t,e,i){super(t,i||chunkZHPNS73J_cjs.c.JOYSTICK,e,W);chunkZHPNS73J_cjs.a(this,"emitters");chunkZHPNS73J_cjs.a(this,"stickEmitter");chunkZHPNS73J_cjs.a(this,"cursorEmitter");chunkZHPNS73J_cjs.a(this,"gesture");chunkZHPNS73J_cjs.a(this,"ticker");let o=e.targetStageId,a=e.mapping||{};this.emitters={up:new c(o,a.up),down:new c(o,a.down),left:new c(o,a.left),right:new c(o,a.right)},this.stickEmitter=new c(o,a.stick),this.cursorEmitter=new c(o,{type:"mouse"}),this.gesture=new T({onTap:async()=>{this.setState({isPressed:true}),await this.stickEmitter.tap(),this.setState({isPressed:false});},onDoubleTapHoldStart:()=>{this.setState({isPressed:true}),this.stickEmitter.press();},onDoubleTapHoldEnd:()=>{this.setState({isPressed:false}),this.stickEmitter.release(false);}}),this.ticker=chunkVHF3K5X6_cjs.b(()=>{this.handleCursorTick();});}get activePointerId(){return this.state.pointerId}onPointerDown(t){this.setState({isActive:true,pointerId:t.pointerId,vector:{x:0,y:0}}),this.gesture.onPointerDown(t.clientX,t.clientY),this.processInput(t,true);}onPointerMove(t){!this.state.isActive||t.pointerId!==this.state.pointerId||(this.gesture.onPointerMove(t.clientX,t.clientY),this.config.cursorMode&&this.ticker.start(),this.processInput(t));}onPointerUp(t){!this.state.isActive||t.pointerId!==this.state.pointerId||(this.gesture.onPointerUp(),this.handleRelease());}onPointerCancel(){this.handleRelease();}handleRelease(){this.setState({isActive:false,pointerId:null,vector:{x:0,y:0}}),this.ticker.stop(),Object.values(this.emitters).forEach(t=>t?.reset());}processInput(t,e=false){if(!this.state.isActive)return;let i=this.rect;if(!i)return;let o=i.left+i.width/2,a=i.top+i.height/2,p=i.width/2,f=i.height/2,P=(t.clientX-o)/p,b=(t.clientY-a)/f;if(e&&(P!=chunkU52W5J3K_cjs.d(P,-1,1)||b!=chunkU52W5J3K_cjs.d(b,-1,1))){this.setState({vector:{x:0,y:0}}),this.markRectDirty();return}let D=chunkU52W5J3K_cjs.u({x:P,y:b},1,this.config.threshold||.15);chunkU52W5J3K_cjs.s(D,this.state.vector,O)||(this.setState({vector:D}),this.handleDigitalKeys(D));}handleCursorTick(){let{vector:t,isActive:e}=this.state;if(!e||!this.config.cursorMode||chunkU52W5J3K_cjs.s(t,{x:0,y:0},O)){this.ticker.stop();return}let i=this.config.cursorSensitivity??1,o={x:t.x*Math.abs(t.x)*i,y:t.y*Math.abs(t.y)*i};(Math.abs(o.x)>0||Math.abs(o.y)>0)&&this.cursorEmitter.move({delta:o});}handleDigitalKeys(t){let e=this.config.threshold??.3;t.y<-e?(this.emitters.up.press(),this.emitters.down.release()):t.y>e?(this.emitters.down.press(),this.emitters.up.release()):(this.emitters.up.release(),this.emitters.down.release()),t.x<-e?(this.emitters.left.press(),this.emitters.right.release()):t.x>e?(this.emitters.right.press(),this.emitters.left.release()):(this.emitters.left.release(),this.emitters.right.release());}reset(){this.setState(W),this.gesture.reset(),this.handleRelease(),this.stickEmitter.reset(),this.cursorEmitter.reset();}updateConfig(t){super.updateConfig(t);let e=this.config.targetStageId,i=this.config.mapping||{};this.emitters.up.update(e,i.up),this.emitters.down.update(e,i.down),this.emitters.left.update(e,i.left),this.emitters.right.update(e,i.right),this.stickEmitter.update(e,i.stick),this.cursorEmitter.update(e);}triggerDown(){this.state.isPressed||(this.setState({isActive:true,isPressed:true}),this.stickEmitter.press());}triggerUp(){this.state.isPressed&&(this.setState({isActive:false,isPressed:false}),this.stickEmitter.release(true));}triggerVector(t,e){let i=this.config.threshold??.15;if(Math.hypot(t,e)<i){this.state.isActive&&this.handleRelease();return}this.state.isActive||this.setState({isActive:true});let a=chunkU52W5J3K_cjs.e(this.state.vector.x,t,G),p=chunkU52W5J3K_cjs.e(this.state.vector.y,e,G),f={x:a,y:p};chunkU52W5J3K_cjs.s(f,this.state.vector,O)||(this.setState({vector:f}),this.handleDigitalKeys(f)),this.config.cursorMode&&this.ticker.start();}};var z={isHighlighted:false},Y=class extends l{constructor(s,t,e){super(s,e||chunkZHPNS73J_cjs.c.ROOT_LAYER,t,z);}reset(){}};var j={position:{x:50,y:50},isVisible:false,isPointerDown:false,isFocusReturning:false},v=1,H=class extends l{constructor(t,e,i){super(t,i||chunkZHPNS73J_cjs.c.TARGET_ZONE,e,j);chunkZHPNS73J_cjs.a(this,"hideTimer",null);chunkZHPNS73J_cjs.a(this,"focusFeedbackTimer",null);chunkZHPNS73J_cjs.a(this,"throttledMoveExecution");chunkZHPNS73J_cjs.a(this,"delegates",{dispatchKeyboardEvent:()=>{},dispatchPointerEventAtPos:()=>{},reclaimFocusAtPos:()=>{}});this.throttledMoveExecution=chunkVHF3K5X6_cjs.a(o=>{this.executeMouseAction(chunkZHPNS73J_cjs.d.POINTERMOVE,o);});}bindDelegate(t,e){Object.prototype.hasOwnProperty.call(this.delegates,t)?this.delegates[t]=e:undefined?.DEV&&console.warn(`[OmniPad-Core] TargetZone attempted to bind unknown delegate: ${t}`);}get activePointerId(){return null}onPointerDown(t){this.processPhysicalEvent(t,chunkZHPNS73J_cjs.d.MOUSEDOWN);}onPointerMove(t){this.processPhysicalEvent(t,chunkZHPNS73J_cjs.d.MOUSEMOVE);}onPointerUp(t){this.processPhysicalEvent(t,chunkZHPNS73J_cjs.d.MOUSEUP),this.processPhysicalEvent(t,chunkZHPNS73J_cjs.d.CLICK);}onPointerCancel(t){this.processPhysicalEvent(t,chunkZHPNS73J_cjs.d.MOUSEUP);}processPhysicalEvent(t,e){let i=this.rect;if(!i)return;let o={x:chunkU52W5J3K_cjs.o(t.clientX-i.left,i.width),y:chunkU52W5J3K_cjs.o(t.clientY-i.top,i.height)};this.handleSignal({targetStageId:this.uid,type:e,payload:{point:o,button:t.button}});}handleSignal(t){let{type:e,payload:i}=t;switch(this.ensureFocus(),e){case chunkZHPNS73J_cjs.d.KEYDOWN:case chunkZHPNS73J_cjs.d.KEYUP:this.delegates.dispatchKeyboardEvent?.(e,i);break;case chunkZHPNS73J_cjs.d.MOUSEMOVE:i.point?this.updateCursorPosition(i.point):i.delta&&this.updateCursorPositionByDelta(i.delta),this.config.cursorEnabled&&this.showCursor(),this.throttledMoveExecution(i);break;case chunkZHPNS73J_cjs.d.MOUSEDOWN:case chunkZHPNS73J_cjs.d.MOUSEUP:case chunkZHPNS73J_cjs.d.CLICK:i.point&&this.updateCursorPosition(i.point),this.config.cursorEnabled&&this.showCursor(),this.executeMouseAction(e.startsWith(chunkZHPNS73J_cjs.d.MOUSE)?e.replace(chunkZHPNS73J_cjs.d.MOUSE,chunkZHPNS73J_cjs.d.POINTER):e,i);break}}executeMouseAction(t,e){let i=this.rect;if(!i)return;t===chunkZHPNS73J_cjs.d.POINTERDOWN&&this.setState({isPointerDown:true}),t===chunkZHPNS73J_cjs.d.POINTERUP&&this.setState({isPointerDown:false});let o=e.point||this.state.position,a=chunkU52W5J3K_cjs.d(i.left+chunkU52W5J3K_cjs.n(o.x,i.width),i.left+v,i.left+i.width-v),p=chunkU52W5J3K_cjs.d(i.top+chunkU52W5J3K_cjs.n(o.y,i.height),i.top+v,i.top+i.height-v);this.delegates.dispatchPointerEventAtPos?.(t,a,p,{button:e.button??0,buttons:this.state.isPointerDown?1:0,pressure:this.state.isPointerDown?.5:0});}ensureFocus(){let t=this.rect;if(!t)return;let e=chunkU52W5J3K_cjs.d(t.left+chunkU52W5J3K_cjs.n(this.state.position.x,t.width),t.left+v,t.left+t.width-v),i=chunkU52W5J3K_cjs.d(t.top+chunkU52W5J3K_cjs.n(this.state.position.y,t.height),t.top+v,t.top+t.height-v);this.delegates.reclaimFocusAtPos?.(e,i,()=>this.triggerFocusFeedback());}triggerFocusFeedback(){this.setState({isFocusReturning:true}),this.focusFeedbackTimer&&clearTimeout(this.focusFeedbackTimer),this.focusFeedbackTimer=setTimeout(()=>this.setState({isFocusReturning:false}),500);}updateCursorPosition(t){chunkU52W5J3K_cjs.s(t,this.state.position)||this.setState({position:{...t}});}updateCursorPositionByDelta(t){if(chunkU52W5J3K_cjs.s(t,{x:0,y:0}))return;let e=this.rect;if(!e)return;let i=chunkU52W5J3K_cjs.o(t.x,e.width),o=chunkU52W5J3K_cjs.o(t.y,e.height);this.updateCursorPosition({x:chunkU52W5J3K_cjs.d(this.state.position.x+i,0,100),y:chunkU52W5J3K_cjs.d(this.state.position.y+o,0,100)});}showCursor(){this.setState({isVisible:true}),this.hideTimer&&clearTimeout(this.hideTimer),this.config.cursorAutoDelay&&this.config.cursorAutoDelay>0&&(this.hideTimer=setTimeout(()=>this.setState({isVisible:false}),this.config.cursorAutoDelay));}reset(){this.state.isPointerDown&&this.executeMouseAction(chunkZHPNS73J_cjs.d.POINTERUP,{}),this.hideTimer&&clearTimeout(this.hideTimer),this.focusFeedbackTimer&&clearTimeout(this.focusFeedbackTimer),this.setState({isVisible:false,isPointerDown:false,isFocusReturning:false});}};var Z={isActive:false,isPressed:false,pointerId:null,value:0},U=class extends l{constructor(t,e,i){super(t,i||chunkZHPNS73J_cjs.c.TRACKPAD,e,Z);chunkZHPNS73J_cjs.a(this,"lastPointerPos",{x:0,y:0});chunkZHPNS73J_cjs.a(this,"gesture");chunkZHPNS73J_cjs.a(this,"emitter");let o=e.mapping||{type:"mouse"};this.emitter=new c(e.targetStageId,o),this.gesture=new T({onTap:()=>{this.setState({isPressed:true}),this.emitter.tap();},onDoubleTapHoldStart:()=>{this.setState({isPressed:true}),this.emitter.press();},onDoubleTapHoldEnd:()=>{this.setState({isPressed:false}),this.emitter.release(false);}});}get activePointerId(){return this.state.pointerId}onPointerDown(t){this.lastPointerPos={x:t.clientX,y:t.clientY},this.gesture.onPointerDown(t.clientX,t.clientY),this.setState({isActive:true,pointerId:t.pointerId});}onPointerMove(t){!this.state.isActive||t.pointerId!==this.state.pointerId||(this.gesture.onPointerMove(t.clientX,t.clientY),this.processInput(t));}processInput(t){if(!this.state.isActive)return;let e=t.clientX-this.lastPointerPos.x,i=t.clientY-this.lastPointerPos.y,o=this.rect;if(!o)return;let a=e/o.width*100*(this.config.sensitivity??1),p=i/o.height*100*(this.config.sensitivity??1),f={x:a,y:p};chunkU52W5J3K_cjs.s(f,{x:0,y:0})||this.emitter.move({delta:f}),this.lastPointerPos={x:t.clientX,y:t.clientY};}onPointerUp(t){!this.state.isActive||t.pointerId!==this.state.pointerId||(this.gesture.onPointerUp(),this.handleRelease());}onPointerCancel(){this.handleRelease();}reset(){this.gesture.reset(),this.emitter.reset(),this.handleRelease();}updateConfig(t){super.updateConfig(t),this.emitter.update(this.config.targetStageId,this.config.mapping);}handleRelease(){this.setState(Z);}};var ye={ActionTypes:chunkZHPNS73J_cjs.d,Context:chunkZHPNS73J_cjs.f,Keys:chunkZHPNS73J_cjs.b,Types:chunkZHPNS73J_cjs.c};Object.defineProperty(exports,"ACTION_TYPES",{enumerable:true,get:function(){return chunkZHPNS73J_cjs.d}});Object.defineProperty(exports,"CMP_TYPES",{enumerable:true,get:function(){return chunkZHPNS73J_cjs.c}});Object.defineProperty(exports,"CONTEXT",{enumerable:true,get:function(){return chunkZHPNS73J_cjs.f}});Object.defineProperty(exports,"KEYS",{enumerable:true,get:function(){return chunkZHPNS73J_cjs.b}});Object.defineProperty(exports,"Registry",{enumerable:true,get:function(){return chunkZHPNS73J_cjs.h}});Object.defineProperty(exports,"VALID_UNITS",{enumerable:true,get:function(){return chunkZHPNS73J_cjs.e}});Object.defineProperty(exports,"setGlobalSignalHandler",{enumerable:true,get:function(){return chunkZHPNS73J_cjs.g}});exports.BaseEntity=l;exports.ButtonCore=w;exports.DPadCore=M;exports.InputZoneCore=k;exports.JoystickCore=R;exports.OmniPad=ye;exports.RootLayerCore=Y;exports.TargetZoneCore=H;exports.TrackpadCore=U;
1
+ 'use strict';var chunkOVV5DKL6_cjs=require('./chunk-OVV5DKL6.cjs'),chunkNB4FTDOP_cjs=require('./chunk-NB4FTDOP.cjs'),chunk52YF3VHH_cjs=require('./chunk-52YF3VHH.cjs'),chunkHCOFKHVV_cjs=require('./chunk-HCOFKHVV.cjs');function Tt(n,s){if(!(!n||!s)&&"bindDelegate"in n&&typeof n.bindDelegate=="function"){let t=Object.entries(s);for(let i=0;i<t.length;i++){let[e,o]=t[i];typeof o=="function"&&n.bindDelegate(e,o);}}}function Et(n,s,t,i,e){if(!n.uid)return ()=>{};let o=n.uid;if("bindRectProvider"in n){let c=n,d=chunk52YF3VHH_cjs.f(()=>i(s));c.bindRectProvider(d.get,()=>{d.markDirty(),e&&e.markDirty();}),t.observeResize(o,s,()=>{c.markRectDirty();});}if("reset"in n){let c=n;t.observeIntersect(o,s,d=>{d||c.reset();});}return ()=>{t.disconnect(o);}}function It(n=[],s){return n?.filter(t=>t.uid!==s)||[]}function St(n,s){return chunkOVV5DKL6_cjs.a(n,s)}function Ct(n,s,t,i,e,o){let c=chunkOVV5DKL6_cjs.c(i,e,o);return c.id=s,c.baseType=n,c.parentId=t,c.layout=chunkOVV5DKL6_cjs.c(i.layout,e.layout,o.layout),c}function At(n,s=[],t){let i=s?.find(o=>o.uid===t),e=n.length>0;return n.length>1&&console.error(`[OmniPad-Validation] InputZone ${t} has multiple dynamic widgets in slot. Only the first one will be activated.`),e&&i&&console.warn(`[OmniPad-Validation] InputZone ${t} has both Slot and Config dynamic widgets. Config ignored.`),{nodeToRender:e?n[0]:i||null,isFromSlot:e}}function Dt(n,s){if(!n||Object.keys(n??{}).length===0)return;if(!(n.config?.baseType===s||n.type===s)){undefined?.DEV&&console.warn(`[OmniPad-Validation] Type mismatch! Expected "${s}", received "${n.type}". Config ignored.`);return}return n}function Rt(n){if(!n||typeof n!="object")throw new Error("[OmniPad-Validation] Profile must be a valid JSON object.");if(n=chunk52YF3VHH_cjs.m(n),!Array.isArray(n.items))throw new Error('[OmniPad-Validation] "items" must be an array.');let s={name:n.meta?.name||"Untitled Profile",version:n.meta?.version||"1.0.0",author:n.meta?.author||"Unknown"},t=n.items.map((e,o)=>{if(!e.id||!e.type)throw new Error(`[OmniPad-Validation] Item at index ${o} is missing "id" or "type".`);return {id:String(e.id),type:String(e.type),parentId:e.parentId?String(e.parentId):void 0,config:{...e.config,layout:chunk52YF3VHH_cjs.M(e.config.layout),cssClass:chunk52YF3VHH_cjs.l(e.config.cssClass)}}}),i=n.gamepadMappings;return {meta:s,items:t,gamepadMappings:i}}function Nt(n){let{items:s,gamepadMappings:t}=n,i=new Map,e=(r,p="node")=>chunk52YF3VHH_cjs.h(r)?r:(i.has(r)||i.set(r,chunk52YF3VHH_cjs.g(p)),i.get(r));s.forEach(r=>e(r.id,r.type));let o=[];t&&t.forEach(r=>{let p={};if(r.buttons){p.buttons={};for(let[u,b]of Object.entries(r.buttons))p.buttons[u]=e(b);}r.dpad&&(p.dpad=e(r.dpad)),r.leftStick&&(p.leftStick=e(r.leftStick)),r.rightStick&&(p.rightStick=e(r.rightStick)),o.push(p);});let c=new Map,d=[];s.forEach(r=>{r.parentId?(c.has(r.parentId)||c.set(r.parentId,[]),c.get(r.parentId).push(r)):d.push(r);});let h=(r,p)=>{if(p.has(r.id))throw new Error(`[OmniPad-Core] Circular dependency detected at node: ${r.id}`);p.add(r.id);let u={...r.config};u?.targetStageId&&(u.targetStageId=e(u.targetStageId)),u?.dynamicWidgetId&&(u.dynamicWidgetId=e(u.dynamicWidgetId));let V=(c.get(r.id)||[]).map(K=>h(K,new Set(p)));return {uid:e(r.id),type:r.type,config:u,children:V}},f={};return d.forEach(r=>{f[r.id]=h(r,new Set);}),{roots:f,runtimeGamepadMappings:o}}function Yt(n,s,t){let i=chunkNB4FTDOP_cjs.b.getInstance(),e=[];if(!s||s.length===0)e=i.getAllEntities();else {let r=new Set;s.forEach(p=>{i.getEntitiesByRoot(p).forEach(b=>r.add(b));}),e=Array.from(r);}let o=new Map,c=0,d=r=>chunk52YF3VHH_cjs.h(r)?r:(o.has(r)||o.set(r,`node_${++c}`),o.get(r)),h=e.map(r=>{let p=r.getConfig(),u=r.uid,b={...p};b.targetStageId&&(b.targetStageId=d(b.targetStageId)),b.dynamicWidgetId&&(b.dynamicWidgetId=d(b.dynamicWidgetId));let{id:V,parentId:K,...W}=b;return {id:d(u),type:r.type,parentId:p.parentId?d(p.parentId):void 0,config:{...W,layout:chunk52YF3VHH_cjs.N(W.layout)}}}),f=[];return t&&t.forEach(r=>{let p={};if(r.buttons){p.buttons={};for(let[u,b]of Object.entries(r.buttons))o.has(b)&&(p.buttons[u]=o.get(b));}r.dpad&&o.has(r.dpad)&&(p.dpad=o.get(r.dpad)),r.leftStick&&o.has(r.leftStick)&&(p.leftStick=o.get(r.leftStick)),r.rightStick&&o.has(r.rightStick)&&(p.rightStick=o.get(r.rightStick)),Object.keys(p).length>0?f.push(p):f.push({});}),{meta:n,items:h,gamepadMappings:Object.keys(f).length>0?f:void 0}}var x=class{constructor(){chunkHCOFKHVV_cjs.a(this,"listeners",new Set);}subscribe(s){return this.listeners.add(s),()=>this.listeners.delete(s)}emit(s){this.listeners.forEach(t=>{try{t(s);}catch(i){console.error("[OmniPad-Core] Emitter callback error:",i);}});}clear(){this.listeners.clear();}};var g=class{constructor(s,t,i,e){chunkHCOFKHVV_cjs.a(this,"uid");chunkHCOFKHVV_cjs.a(this,"type");chunkHCOFKHVV_cjs.a(this,"config");chunkHCOFKHVV_cjs.a(this,"state");chunkHCOFKHVV_cjs.a(this,"rectProvider",null);chunkHCOFKHVV_cjs.a(this,"_onMarkDirtyCb",null);chunkHCOFKHVV_cjs.a(this,"stateEmitter",new x);chunkHCOFKHVV_cjs.a(this,"configEmitter",new x);this.uid=s,this.type=t,this.config=i,this.state=e;}getConfig(){return this.config}subscribeConfig(s){return s(this.config),this.configEmitter.subscribe(s)}updateConfig(s){this.config={...this.config,...s},this.configEmitter.emit(this.config);}getState(){return this.state}setState(s){this.state={...this.state,...s},this.stateEmitter.emit(this.state);}subscribeState(s){return s(this.state),this.stateEmitter.subscribe(s)}destroy(){this.reset(),this.stateEmitter.clear(),this.configEmitter.clear(),chunkNB4FTDOP_cjs.b.getInstance().unregister(this.uid);}get rect(){return this.rectProvider?this.rectProvider():null}bindRectProvider(s,t){this.rectProvider=s,t&&(this._onMarkDirtyCb=t);}markRectDirty(){this._onMarkDirtyCb?.();}};var it=32,dt=255,m=class{constructor(s,t){chunkHCOFKHVV_cjs.a(this,"isPressed",false);chunkHCOFKHVV_cjs.a(this,"mapping");chunkHCOFKHVV_cjs.a(this,"targetId");this.update(s,t);}update(s,t){this.isPressed&&this.reset(),this.targetId=s,this.mapping=typeof t=="string"?chunk52YF3VHH_cjs.a[t]??void 0:this.hydrate(t);}hydrate(s){if(!s||typeof s!="object")return;let{type:t,key:i,code:e,keyCode:o,button:c,fixedPoint:d}=s;if(t==="mouse")return {type:"mouse",button:typeof c=="number"&&c>=0&&c<=2?c:0,fixedPoint:d&&typeof d.x=="number"?{x:Number(d.x),y:Number(d.y)}:void 0};let h=typeof i=="string"?i.substring(0,it):void 0,f=typeof e=="string"?e.substring(0,it):void 0,r=typeof o=="number"&&Number.isFinite(o)?Math.floor(Math.min(o,dt)):void 0;if(h||f||r){let p=Object.values(chunk52YF3VHH_cjs.a).find(u=>u.type!=="keyboard"?false:u.code===f||u.key===h||u.keyCode===r);return p?{type:"keyboard",key:h??p.key,code:f??p.code,keyCode:r??p.keyCode}:{type:"keyboard",key:h||"unknown",code:f||"Unknown",keyCode:r||0}}}press(){if(!this.mapping||this.isPressed)return;this.isPressed=true;let s=this.mapping.type==="keyboard"?chunk52YF3VHH_cjs.c.KEYDOWN:chunk52YF3VHH_cjs.c.MOUSEDOWN;this.emitSignal(s);}release(s=true){if(!this.mapping||!this.isPressed)return;this.isPressed=false;let t=this.mapping.type==="keyboard"?chunk52YF3VHH_cjs.c.KEYUP:chunk52YF3VHH_cjs.c.MOUSEUP;this.emitSignal(t),this.mapping.type==="mouse"&&s&&this.emitSignal(chunk52YF3VHH_cjs.c.CLICK);}move(s){this.mapping?.type==="mouse"&&this.emitSignal(chunk52YF3VHH_cjs.c.MOUSEMOVE,s);}reset(){this.isPressed&&this.release(false);}async tap(s=true){this.isPressed||(this.press(),await chunkNB4FTDOP_cjs.g(2),this.isPressed&&this.release(s));}emitSignal(s,t={}){this.mapping&&chunkNB4FTDOP_cjs.b.getInstance().broadcastSignal({targetStageId:this.targetId||"",type:s,payload:{key:this.mapping.key,code:this.mapping.code,keyCode:this.mapping.keyCode,button:this.mapping.button,point:this.mapping.fixedPoint,...t}});}};var k={isActive:false,isPressed:false,pointerId:null,value:0},O=class extends g{constructor(t,i,e){super(t,e||chunk52YF3VHH_cjs.b.BUTTON,i,k);chunkHCOFKHVV_cjs.a(this,"emitter");this.emitter=new m(i.targetStageId,i.mapping);}get activePointerId(){return this.state.pointerId}onPointerDown(t){this.setState({isActive:true,isPressed:true,pointerId:t.pointerId}),this.emitter.press();}onPointerUp(t){!this.state.isActive||t.pointerId!==this.state.pointerId||this.handleRelease(true);}onPointerCancel(){this.handleRelease(false);}onPointerMove(){}reset(){this.setState(k),this.emitter.reset();}updateConfig(t){super.updateConfig(t),this.emitter.update(this.config.targetStageId,this.config.mapping);}handleRelease(t){this.setState(k),this.emitter.release(t);}triggerDown(){this.state.isPressed||(this.setState({isActive:true,isPressed:true}),this.emitter.press());}triggerUp(){this.state.isPressed&&(this.setState({isActive:false,isPressed:false}),this.emitter.release(true));}};var st={isActive:false,pointerId:null,vector:{x:0,y:0}},rt=.15,ot=.002,nt=.3,R=class extends g{constructor(t,i,e){super(t,e||chunk52YF3VHH_cjs.b.D_PAD,i,st);chunkHCOFKHVV_cjs.a(this,"emitters");let o=i.targetStageId;this.emitters={up:new m(o,i.mapping?.up),down:new m(o,i.mapping?.down),left:new m(o,i.mapping?.left),right:new m(o,i.mapping?.right)};}get activePointerId(){return this.state.pointerId}onPointerDown(t){this.setState({isActive:true,pointerId:t.pointerId,vector:{x:0,y:0}}),this.processInput(t,true);}onPointerMove(t){!this.state.isActive||t.pointerId!==this.state.pointerId||this.processInput(t);}onPointerUp(t){!this.state.isActive||t.pointerId!==this.state.pointerId||this.reset();}onPointerCancel(){this.reset();}processInput(t,i=false){if(!this.state.isActive)return;let e=this.rect;if(!e)return;let o=e.left+e.width/2,c=e.top+e.height/2,d=e.width/2,h=e.height/2,f=(t.clientX-o)/d,r=(t.clientY-c)/h;if(i&&(f!=chunk52YF3VHH_cjs.q(f,-1,1)||r!=chunk52YF3VHH_cjs.q(r,-1,1))){this.setState({vector:{x:0,y:0}}),this.markRectDirty();return}let p={x:chunk52YF3VHH_cjs.q(f,-1,1),y:chunk52YF3VHH_cjs.q(r,-1,1)};chunk52YF3VHH_cjs.F(p,this.state.vector,ot)||(this.setState({vector:p}),this.handleDigitalKeys(p));}handleDigitalKeys(t){let i=this.config.threshold??rt;t.y<-i?(this.emitters.up.press(),this.emitters.down.release()):t.y>i?(this.emitters.down.press(),this.emitters.up.release()):(this.emitters.up.release(),this.emitters.down.release()),t.x<-i?(this.emitters.left.press(),this.emitters.right.release()):t.x>i?(this.emitters.right.press(),this.emitters.left.release()):(this.emitters.left.release(),this.emitters.right.release());}reset(){this.emitters.up.reset(),this.emitters.down.reset(),this.emitters.left.reset(),this.emitters.right.reset(),this.setState(st);}updateConfig(t){super.updateConfig(t),this.emitters.up.update(this.config.targetStageId,this.config.mapping?.up),this.emitters.down.update(this.config.targetStageId,this.config.mapping?.down),this.emitters.left.update(this.config.targetStageId,this.config.mapping?.left),this.emitters.right.update(this.config.targetStageId,this.config.mapping?.right);}triggerVector(t,i){let e=this.config.threshold??rt;if(Math.abs(t)<e&&Math.abs(i)<e){this.state.isActive&&this.reset();return}this.state.isActive||this.setState({isActive:true});let o=chunk52YF3VHH_cjs.r(this.state.vector.x,t,nt),c=chunk52YF3VHH_cjs.r(this.state.vector.y,i,nt),d={x:o,y:c};chunk52YF3VHH_cjs.F(d,this.state.vector,ot)||(this.setState({vector:d}),this.handleDigitalKeys(d));}};var lt={isDynamicActive:false,dynamicPointerId:null,dynamicPosition:{x:0,y:0}},N=class extends g{constructor(t,i,e){super(t,e||chunk52YF3VHH_cjs.b.INPUT_ZONE,i,lt);chunkHCOFKHVV_cjs.a(this,"delegates",{dynamicWidgetPointerDown:()=>{},dynamicWidgetPointerMove:()=>{},dynamicWidgetPointerUp:()=>{},dynamicWidgetPointerCancel:()=>{}});}bindDelegate(t,i){Object.prototype.hasOwnProperty.call(this.delegates,t)?this.delegates[t]=i:undefined?.DEV&&console.warn(`[OmniPad-Core] TargetZone attempted to bind unknown delegate: ${t}`);}get activePointerId(){return this.state.dynamicPointerId}onPointerDown(t){if(this.state.isDynamicActive)return;let i=this.calculateRelativePosition(t.clientX,t.clientY);this.setState({isDynamicActive:true,dynamicPointerId:t.pointerId,dynamicPosition:i}),this.delegates.dynamicWidgetPointerDown?.(t);}onPointerMove(t){this.state.isDynamicActive&&this.delegates.dynamicWidgetPointerMove?.(t);}onPointerUp(t){this.delegates.dynamicWidgetPointerUp?.(t),this.reset();}onPointerCancel(t){this.delegates.dynamicWidgetPointerCancel?.(t),this.reset();}calculateRelativePosition(t,i){let e=this.rect;return e?{x:chunk52YF3VHH_cjs.B(t-e.left,e.width),y:chunk52YF3VHH_cjs.B(i-e.top,e.height)}:{x:0,y:0}}get isInterceptorRequired(){return !!(this.config.dynamicWidgetId||this.config.preventFocusLoss)}reset(){this.setState({isDynamicActive:false,dynamicPointerId:null});}};var C=class{constructor(s={}){chunkHCOFKHVV_cjs.a(this,"options");chunkHCOFKHVV_cjs.a(this,"startTime",0);chunkHCOFKHVV_cjs.a(this,"startPos",{x:0,y:0});chunkHCOFKHVV_cjs.a(this,"lastTapTime",0);chunkHCOFKHVV_cjs.a(this,"hasMoved",false);chunkHCOFKHVV_cjs.a(this,"isDoubleTapHolding",false);this.options={tapTime:250,tapDistance:10,doubleTapGap:300,...s};}onPointerDown(s,t){let i=Date.now();this.startTime=i,this.startPos={x:s,y:t},this.hasMoved=false,i-this.lastTapTime<this.options.doubleTapGap?(this.isDoubleTapHolding=true,this.options.onDoubleTapHoldStart?.()):this.isDoubleTapHolding=false;}onPointerMove(s,t){this.hasMoved||Math.hypot(s-this.startPos.x,t-this.startPos.y)>this.options.tapDistance&&(this.hasMoved=true);}onPointerUp(){let s=Date.now(),t=s-this.startTime;this.isDoubleTapHolding?(this.isDoubleTapHolding=false,this.options.onDoubleTapHoldEnd?.(),this.lastTapTime=0):t<=this.options.tapTime&&!this.hasMoved&&(this.options.onTap?.(),s-this.lastTapTime<this.options.doubleTapGap?(this.options.onDoubleTap?.(),this.lastTapTime=0):this.lastTapTime=s);}reset(){this.isDoubleTapHolding&&this.options.onDoubleTapHoldEnd?.(),this.isDoubleTapHolding=false,this.hasMoved=false,this.startTime=0,this.lastTapTime=0;}};var at={isActive:false,isPressed:false,pointerId:null,value:0,vector:{x:0,y:0}},Y=.15,U=.002,ct=.3,H=class extends g{constructor(t,i,e){super(t,e||chunk52YF3VHH_cjs.b.JOYSTICK,i,at);chunkHCOFKHVV_cjs.a(this,"emitters");chunkHCOFKHVV_cjs.a(this,"stickEmitter");chunkHCOFKHVV_cjs.a(this,"cursorEmitter");chunkHCOFKHVV_cjs.a(this,"gesture");chunkHCOFKHVV_cjs.a(this,"ticker");let o=i.targetStageId,c=i.mapping||{};this.emitters={up:new m(o,c.up),down:new m(o,c.down),left:new m(o,c.left),right:new m(o,c.right)},this.stickEmitter=new m(o,c.stick),this.cursorEmitter=new m(o,"Mouse"),this.gesture=new C({onTap:async()=>{this.setState({isPressed:true}),await this.stickEmitter.tap(),this.setState({isPressed:false});},onDoubleTapHoldStart:()=>{this.setState({isPressed:true}),this.stickEmitter.press();},onDoubleTapHoldEnd:()=>{this.setState({isPressed:false}),this.stickEmitter.release(false);}}),this.ticker=chunkNB4FTDOP_cjs.f(()=>{this.handleCursorTick();});}get activePointerId(){return this.state.pointerId}onPointerDown(t){this.setState({isActive:true,pointerId:t.pointerId,vector:{x:0,y:0}}),this.gesture.onPointerDown(t.clientX,t.clientY),this.processInput(t,true);}onPointerMove(t){!this.state.isActive||t.pointerId!==this.state.pointerId||(this.gesture.onPointerMove(t.clientX,t.clientY),this.config.cursorMode&&this.ticker.start(),this.processInput(t));}onPointerUp(t){!this.state.isActive||t.pointerId!==this.state.pointerId||(this.gesture.onPointerUp(),this.handleRelease());}onPointerCancel(){this.handleRelease();}handleRelease(){this.setState({isActive:false,pointerId:null,vector:{x:0,y:0}}),this.ticker.stop(),Object.values(this.emitters).forEach(t=>t?.reset());}processInput(t,i=false){if(!this.state.isActive)return;let e=this.rect;if(!e)return;let o=e.left+e.width/2,c=e.top+e.height/2,d=e.width/2,h=e.height/2,f=(t.clientX-o)/d,r=(t.clientY-c)/h;if(i&&(f!=chunk52YF3VHH_cjs.q(f,-1,1)||r!=chunk52YF3VHH_cjs.q(r,-1,1))){this.setState({vector:{x:0,y:0}}),this.markRectDirty();return}let u=chunk52YF3VHH_cjs.H({x:f,y:r},1,this.config.threshold??Y);chunk52YF3VHH_cjs.F(u,this.state.vector,U)||(this.setState({vector:u}),this.handleDigitalKeys(u));}handleCursorTick(){let{vector:t,isActive:i}=this.state;if(!i||!this.config.cursorMode||chunk52YF3VHH_cjs.F(t,{x:0,y:0},U)){this.ticker.stop();return}let e=this.config.cursorSensitivity??1,o={x:t.x*Math.abs(t.x)*e,y:t.y*Math.abs(t.y)*e};(Math.abs(o.x)>0||Math.abs(o.y)>0)&&this.cursorEmitter.move({delta:o});}handleDigitalKeys(t){let i=this.config.threshold??Y;t.y<-i?(this.emitters.up.press(),this.emitters.down.release()):t.y>i?(this.emitters.down.press(),this.emitters.up.release()):(this.emitters.up.release(),this.emitters.down.release()),t.x<-i?(this.emitters.left.press(),this.emitters.right.release()):t.x>i?(this.emitters.right.press(),this.emitters.left.release()):(this.emitters.left.release(),this.emitters.right.release());}reset(){this.setState(at),this.gesture.reset(),this.handleRelease(),this.stickEmitter.reset(),this.cursorEmitter.reset();}updateConfig(t){super.updateConfig(t);let i=this.config.targetStageId,e=this.config.mapping||{};this.emitters.up.update(i,e.up),this.emitters.down.update(i,e.down),this.emitters.left.update(i,e.left),this.emitters.right.update(i,e.right),this.stickEmitter.update(i,e.stick),this.cursorEmitter.update(i);}triggerDown(){this.state.isPressed||(this.setState({isActive:true,isPressed:true}),this.stickEmitter.press());}triggerUp(){this.state.isPressed&&(this.setState({isActive:false,isPressed:false}),this.stickEmitter.release(true));}triggerVector(t,i){let e=this.config.threshold??Y;if(Math.hypot(t,i)<e){this.state.isActive&&this.handleRelease();return}this.state.isActive||this.setState({isActive:true});let c=chunk52YF3VHH_cjs.r(this.state.vector.x,t,ct),d=chunk52YF3VHH_cjs.r(this.state.vector.y,i,ct),h={x:c,y:d};chunk52YF3VHH_cjs.F(h,this.state.vector,U)||(this.setState({vector:h}),this.handleDigitalKeys(h)),this.config.cursorMode&&this.ticker.start();}};var ut={isHighlighted:false},F=class extends g{constructor(s,t,i){super(s,i||chunk52YF3VHH_cjs.b.ROOT_LAYER,t,ut);}reset(){}};var ht={position:{x:50,y:50},isVisible:false,isPointerDown:false,isFocusReturning:false},E=1,_=class extends g{constructor(t,i,e){super(t,e||chunk52YF3VHH_cjs.b.TARGET_ZONE,i,ht);chunkHCOFKHVV_cjs.a(this,"hideTimer",null);chunkHCOFKHVV_cjs.a(this,"focusFeedbackTimer",null);chunkHCOFKHVV_cjs.a(this,"throttledMoveExecution");chunkHCOFKHVV_cjs.a(this,"delegates",{dispatchKeyboardEvent:()=>{},dispatchPointerEventAtPos:()=>{},reclaimFocusAtPos:()=>{}});this.throttledMoveExecution=chunkNB4FTDOP_cjs.e(o=>{this.executeMouseAction(chunk52YF3VHH_cjs.c.POINTERMOVE,o);});}bindDelegate(t,i){Object.prototype.hasOwnProperty.call(this.delegates,t)?this.delegates[t]=i:undefined?.DEV&&console.warn(`[OmniPad-Core] TargetZone attempted to bind unknown delegate: ${t}`);}get activePointerId(){return null}onPointerDown(t){this.processPhysicalEvent(t,chunk52YF3VHH_cjs.c.MOUSEDOWN);}onPointerMove(t){this.processPhysicalEvent(t,chunk52YF3VHH_cjs.c.MOUSEMOVE);}onPointerUp(t){this.processPhysicalEvent(t,chunk52YF3VHH_cjs.c.MOUSEUP),this.processPhysicalEvent(t,chunk52YF3VHH_cjs.c.CLICK);}onPointerCancel(t){this.processPhysicalEvent(t,chunk52YF3VHH_cjs.c.MOUSEUP);}processPhysicalEvent(t,i){let e=this.rect;if(!e)return;let o={x:chunk52YF3VHH_cjs.B(t.clientX-e.left,e.width),y:chunk52YF3VHH_cjs.B(t.clientY-e.top,e.height)};this.handleSignal({targetStageId:this.uid,type:i,payload:{point:o,button:t.button}});}handleSignal(t){let{type:i,payload:e}=t;switch(this.ensureFocus(),i){case chunk52YF3VHH_cjs.c.KEYDOWN:case chunk52YF3VHH_cjs.c.KEYUP:this.delegates.dispatchKeyboardEvent?.(i,e);break;case chunk52YF3VHH_cjs.c.MOUSEMOVE:e.point?this.updateCursorPosition(e.point):e.delta&&this.updateCursorPositionByDelta(e.delta),this.config.cursorEnabled&&this.showCursor(),this.throttledMoveExecution(e);break;case chunk52YF3VHH_cjs.c.MOUSEDOWN:case chunk52YF3VHH_cjs.c.MOUSEUP:case chunk52YF3VHH_cjs.c.CLICK:e.point&&this.updateCursorPosition(e.point),this.config.cursorEnabled&&this.showCursor(),this.executeMouseAction(i.startsWith(chunk52YF3VHH_cjs.c.MOUSE)?i.replace(chunk52YF3VHH_cjs.c.MOUSE,chunk52YF3VHH_cjs.c.POINTER):i,e);break}}executeMouseAction(t,i){let e=this.rect;if(!e)return;t===chunk52YF3VHH_cjs.c.POINTERDOWN&&this.setState({isPointerDown:true}),t===chunk52YF3VHH_cjs.c.POINTERUP&&this.setState({isPointerDown:false});let o=i.point||this.state.position,c=chunk52YF3VHH_cjs.q(e.left+chunk52YF3VHH_cjs.A(o.x,e.width),e.left+E,e.left+e.width-E),d=chunk52YF3VHH_cjs.q(e.top+chunk52YF3VHH_cjs.A(o.y,e.height),e.top+E,e.top+e.height-E);this.delegates.dispatchPointerEventAtPos?.(t,c,d,{button:i.button??0,buttons:this.state.isPointerDown?1:0,pressure:this.state.isPointerDown?.5:0});}ensureFocus(){let t=this.rect;if(!t)return;let i=chunk52YF3VHH_cjs.q(t.left+chunk52YF3VHH_cjs.A(this.state.position.x,t.width),t.left+E,t.left+t.width-E),e=chunk52YF3VHH_cjs.q(t.top+chunk52YF3VHH_cjs.A(this.state.position.y,t.height),t.top+E,t.top+t.height-E);this.delegates.reclaimFocusAtPos?.(i,e,()=>this.triggerFocusFeedback());}triggerFocusFeedback(){this.setState({isFocusReturning:true}),this.focusFeedbackTimer&&clearTimeout(this.focusFeedbackTimer),this.focusFeedbackTimer=setTimeout(()=>this.setState({isFocusReturning:false}),500);}updateCursorPosition(t){chunk52YF3VHH_cjs.F(t,this.state.position)||this.setState({position:{...t}});}updateCursorPositionByDelta(t){if(chunk52YF3VHH_cjs.F(t,{x:0,y:0}))return;let i=this.rect;if(!i)return;let e=chunk52YF3VHH_cjs.B(t.x,i.width),o=chunk52YF3VHH_cjs.B(t.y,i.height);this.updateCursorPosition({x:chunk52YF3VHH_cjs.q(this.state.position.x+e,0,100),y:chunk52YF3VHH_cjs.q(this.state.position.y+o,0,100)});}showCursor(){this.setState({isVisible:true}),this.hideTimer&&clearTimeout(this.hideTimer),this.config.cursorAutoDelay&&this.config.cursorAutoDelay>0&&(this.hideTimer=setTimeout(()=>this.setState({isVisible:false}),this.config.cursorAutoDelay));}reset(){this.state.isPointerDown&&this.executeMouseAction(chunk52YF3VHH_cjs.c.POINTERUP,{}),this.hideTimer&&clearTimeout(this.hideTimer),this.focusFeedbackTimer&&clearTimeout(this.focusFeedbackTimer),this.setState({isVisible:false,isPointerDown:false,isFocusReturning:false});}};var pt={isActive:false,isPressed:false,pointerId:null,value:0},B=class extends g{constructor(t,i,e){super(t,e||chunk52YF3VHH_cjs.b.TRACKPAD,i,pt);chunkHCOFKHVV_cjs.a(this,"lastPointerPos",{x:0,y:0});chunkHCOFKHVV_cjs.a(this,"gesture");chunkHCOFKHVV_cjs.a(this,"emitter");let o=i.mapping||"Mouse";this.emitter=new m(i.targetStageId,o),this.gesture=new C({onTap:()=>{this.setState({isPressed:true}),this.emitter.tap();},onDoubleTapHoldStart:()=>{this.setState({isPressed:true}),this.emitter.press();},onDoubleTapHoldEnd:()=>{this.setState({isPressed:false}),this.emitter.release(false);}});}get activePointerId(){return this.state.pointerId}onPointerDown(t){this.lastPointerPos={x:t.clientX,y:t.clientY},this.gesture.onPointerDown(t.clientX,t.clientY),this.setState({isActive:true,pointerId:t.pointerId});}onPointerMove(t){!this.state.isActive||t.pointerId!==this.state.pointerId||(this.gesture.onPointerMove(t.clientX,t.clientY),this.processInput(t));}processInput(t){if(!this.state.isActive)return;let i=t.clientX-this.lastPointerPos.x,e=t.clientY-this.lastPointerPos.y,o=this.rect;if(!o)return;let c=i/o.width*100*(this.config.sensitivity??1),d=e/o.height*100*(this.config.sensitivity??1),h={x:c,y:d};chunk52YF3VHH_cjs.F(h,{x:0,y:0})||this.emitter.move({delta:h}),this.lastPointerPos={x:t.clientX,y:t.clientY};}onPointerUp(t){!this.state.isActive||t.pointerId!==this.state.pointerId||(this.gesture.onPointerUp(),this.handleRelease());}onPointerCancel(){this.handleRelease();}reset(){this.gesture.reset(),this.emitter.reset(),this.handleRelease();}updateConfig(t){super.updateConfig(t),this.emitter.update(this.config.targetStageId,this.config.mapping);}handleRelease(){this.setState(pt);}};var di={ActionTypes:chunk52YF3VHH_cjs.c,Context:chunk52YF3VHH_cjs.e,Keys:chunk52YF3VHH_cjs.a,Types:chunk52YF3VHH_cjs.b};Object.defineProperty(exports,"Registry",{enumerable:true,get:function(){return chunkNB4FTDOP_cjs.b}});Object.defineProperty(exports,"StickyController",{enumerable:true,get:function(){return chunkNB4FTDOP_cjs.d}});Object.defineProperty(exports,"StickyProvider",{enumerable:true,get:function(){return chunkNB4FTDOP_cjs.c}});Object.defineProperty(exports,"setGlobalSignalHandler",{enumerable:true,get:function(){return chunkNB4FTDOP_cjs.a}});Object.defineProperty(exports,"ACTION_TYPES",{enumerable:true,get:function(){return chunk52YF3VHH_cjs.c}});Object.defineProperty(exports,"CMP_TYPES",{enumerable:true,get:function(){return chunk52YF3VHH_cjs.b}});Object.defineProperty(exports,"CONTEXT",{enumerable:true,get:function(){return chunk52YF3VHH_cjs.e}});Object.defineProperty(exports,"KEYS",{enumerable:true,get:function(){return chunk52YF3VHH_cjs.a}});Object.defineProperty(exports,"VALID_UNITS",{enumerable:true,get:function(){return chunk52YF3VHH_cjs.d}});Object.defineProperty(exports,"OMNIPAD_IPC_SIGNATURE",{enumerable:true,get:function(){return chunkHCOFKHVV_cjs.b}});exports.BaseEntity=g;exports.ButtonCore=O;exports.DPadCore=R;exports.InputZoneCore=N;exports.JoystickCore=H;exports.OmniPad=di;exports.RootLayerCore=F;exports.TargetZoneCore=_;exports.TrackpadCore=B;exports.bindEntityDelegates=Tt;exports.exportProfile=Yt;exports.filterNotDynamicChildren=It;exports.getOverrideProps=St;exports.mergeWidgetConfig=Ct;exports.parseProfileJson=Rt;exports.parseProfileTrees=Nt;exports.resolveDynamicWidget=At;exports.setupSpatialLogic=Et;exports.validateWidgetNode=Dt;