@omnipad/vue 0.4.3 → 0.4.5

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.
@@ -1 +1 @@
1
- (function(w,d){typeof exports=="object"&&typeof module<"u"?d(exports,require("@omnipad/core"),require("vue"),require("@omnipad/core/utils")):typeof define=="function"&&define.amd?define(["exports","@omnipad/core","vue","@omnipad/core/utils"],d):(w=typeof globalThis<"u"?globalThis:w||self,d(w.OmnipadVue={},w.OmniPadCore,w.Vue,w.OmniPadCoreUtils))})(this,(function(w,d,e,_){"use strict";const V={};function N(t,a){V[t]=a}function A(t){const a=V[t];return a||e.defineComponent({render:()=>e.h("div",{style:"color:red"},`[Unknown: ${t}]`)})}function z(t){return!t||!V[t]?null:V[t]}function j(t){return t?!!V[t]:!1}function T(t,a={},m){const o=t(),n=e.shallowRef(),i=e.ref(),C=e.ref(null),r=e.ref({});let p=null;const k=u=>{i.value=u},c=u=>{if(!n.value)return;const f=n.value;typeof f.bindDelegate=="function"&&Object.entries(u).forEach(([g,P])=>{f.bindDelegate(g,P)})};return e.onMounted(()=>{n.value=o,d.Registry.getInstance().register(o),"subscribe"in o&&o.subscribe(k),m&&c(m);let u=null;if(C.value&&(C.value instanceof Element?u=C.value:C.value.$el instanceof Element&&(u=C.value.$el)),u&&"bindRectProvider"in o){const f=o,g=_.createCachedProvider(()=>u.getBoundingClientRect());f.bindRectProvider(g.get,g.markDirty),p=new ResizeObserver(()=>{f.markRectDirty()}),p.observe(u)}if("onPointerDown"in o){const f=_.createPointerBridge(o,a);r.value={...f}}d.WindowManager.getInstance().init()}),e.onUnmounted(()=>{p&&(p.disconnect(),p=null),n.value&&n.value.destroy()}),{core:n,state:i,elementRef:C,domEvents:r,bindDelegates:c}}const J={class:"omnipad-virtual-layer-base omnipad-prevent"},W=e.defineComponent({__name:"VirtualLayerBase",props:{nodes:{}},setup(t){const a=t,m=e.computed(()=>(a.nodes||[]).map(o=>{let n=z(o.type);return!n&&o.config?.baseType&&(n=z(o.config.baseType)),n||(n=A(o.type)),{node:o,component:n}}));return(o,n)=>(e.openBlock(),e.createElementBlock("div",J,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.value,i=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(i.component),{key:i.node.uid,"tree-node":i.node},null,8,["tree-node"]))),128)),e.renderSlot(o.$slots,"default",{},void 0,!0)]))}}),B=(t,a)=>{const m=t.__vccOpts||t;for(const[o,n]of a)m[o]=n;return m},M=B(W,[["__scopeId","data-v-d67cc501"]]);function D(t,a,m={}){const o=a.treeNode,n=o&&o.config?.baseType===t||o?.type===t?o:void 0;o&&!n&&console.warn(`[OmniPad-Validation] Type mismatch! Component expected "${t}", but received "${o.type}". Config ignored.`);const i=e.inject(d.CONTEXT.PARENT_ID_KEY,e.ref(void 0)),C=e.computed(()=>a.parentId||n?.config?.parentId||i.value),r=e.computed(()=>a.widgetId||n?.uid||_.generateUID(t));e.provide(d.CONTEXT.PARENT_ID_KEY,r);const p=e.computed(()=>{const c=n?.config||{},u=Object.fromEntries(Object.entries(a).filter(([f,g])=>g!==void 0&&f!=="treeNode"&&f!=="widgetId"));return{...m,...c,...u,id:r.value,baseType:t,parentId:C.value,layout:{...m.layout||{},...c.layout||{},...u.layout||{}}}}),k=e.computed(()=>{const c=p.value.cssClasses;return c?Array.isArray(c)?c:[c]:[]});return{uid:r,config:p,customClasses:k}}const X=["id"],U=B(e.defineComponent({__name:"InputZone",props:{treeNode:{},widgetId:{},layout:{},preventFocusLoss:{}},setup(t){const a=t,m=e.useSlots(),o=e.ref(null),{uid:n,config:i,customClasses:C}=D(d.CMP_TYPES.INPUT_ZONE,a),{core:r,state:p,elementRef:k,domEvents:c,bindDelegates:u}=T(()=>new d.InputZoneCore(n.value,i.value),{requireDirectHit:!0}),f=e.computed(()=>{const y=a.treeNode?.config?.dynamicWidgetId;return a.treeNode?.children?.filter(R=>R.uid!==y)||[]}),g=e.computed(()=>{const R=(m.dynamicWidget?.()||[]).filter(x=>!(x.type===Comment||x.type===Text)),E=a.treeNode?.children?.find(x=>x.uid===a.treeNode?.config?.dynamicWidgetId),v=R.length>0;return R.length>1&&console.error(`[OmniPad-Validation] InputZone ${n.value} has multiple dynamic widgets in slot. Only the first one will be activated.`),v&&E&&console.warn(`[OmniPad-Validation] InputZone ${n.value} has both Slot and Config dynamic widgets. Config ignored.`),{nodeToRender:v?R[0]:E||null,isFromSlot:v}}),P=e.computed(()=>{const y=g.value.nodeToRender;return A(y.config?.baseType||y.type)});e.watch(o,y=>{e.nextTick(()=>{y&&y?.uid&&(r.value?.updateConfig({dynamicWidgetId:y.uid}),u({dynamicWidgetPointerDown:R=>{y.markRectDirty?.(),y.onPointerDown?.(R)},dynamicWidgetPointerMove:y.onPointerMove,dynamicWidgetPointerUp:y.onPointerUp,dynamicWidgetPointerCancel:y.onPointerCancel}))})},{immediate:!0});const b=e.computed(()=>_.resolveLayoutStyle(i.value.layout)),S=_.supportsContainerQueries(),l=e.computed(()=>{if(!p.value)return{display:"none"};if(!p.value?.isDynamicActive)return{visibility:"hidden",opacity:0};let y,R;const E=p?.value?.dynamicPosition;if(S)y=`${E.x}cqw`,R=`${E.y}cqh`;else{const v=r?.value?.rect;y=`${_.remap(E?.x||0,0,100,0,v?.width||0)}px`,R=`${_.remap(E?.y||0,0,100,0,v?.height||0)}px`}return{zIndex:100,"--dynamic-widget-mount-x":y,"--dynamic-widget-mount-y":R,visibility:"visible",opacity:1,pointerEvents:"auto"}}),s=y=>c.value?.onPointerDown(y),$=y=>c.value?.onPointerMove(y),h=y=>c.value?.onPointerUp(y),K=y=>c.value?.onPointerCancel(y);return(y,R)=>(e.openBlock(),e.createElementBlock("div",{id:e.unref(n),ref_key:"elementRef",ref:k,class:e.normalizeClass(["omnipad-input-zone omnipad-prevent",e.unref(C)]),style:e.normalizeStyle(b.value)},[e.createVNode(M,{nodes:f.value},{default:e.withCtx(()=>[e.renderSlot(y.$slots,"default",{},void 0,!0)]),_:3},8,["nodes"]),g.value.nodeToRender||e.unref(r)?.isInterceptorRequired?(e.openBlock(),e.createElementBlock("div",{key:0,class:"omnipad-input-zone-trigger omnipad-prevent",onPointerdown:s,onPointermove:$,onPointerup:h,onPointercancel:K,onLostpointercapture:K},[e.createElementVNode("div",{class:"dynamic-widget-mount",style:e.normalizeStyle(l.value)},[g.value.isFromSlot?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(g.value.nodeToRender),{key:0,ref:E=>o.value=E},null,512)):g.value.nodeToRender?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(P.value),{key:1,ref:E=>o.value=E,"tree-node":g.value.nodeToRender},null,8,["tree-node"])):e.createCommentVNode("",!0)],4)],32)):e.createCommentVNode("",!0)],14,X))}}),[["__scopeId","data-v-0a998e05"]]),G=["id"],O=B(e.defineComponent({__name:"RootLayer",props:{treeNode:{},widgetId:{},layout:{}},setup(t){const a=t,{uid:m,config:o,customClasses:n}=D(d.CMP_TYPES.ROOT_LAYER,a),{elementRef:i}=T(()=>new d.RootLayerCore(m.value,o.value)),C=e.computed(()=>_.resolveLayoutStyle(o.value.layout));return(r,p)=>(e.openBlock(),e.createElementBlock("div",{id:e.unref(m),ref_key:"elementRef",ref:i,class:e.normalizeClass(["omnipad-root-layer omnipad-prevent",e.unref(n)]),style:e.normalizeStyle(C.value)},[e.createVNode(M,{nodes:t.treeNode?.children||[]},{default:e.withCtx(()=>[e.renderSlot(r.$slots,"default",{},void 0,!0)]),_:3},8,["nodes"])],14,G))}}),[["__scopeId","data-v-e53747a9"]]),H=["id"],ee={key:0,class:"omnipad-default-focus-border-feedback"},Y=B(e.defineComponent({__name:"TargetZone",props:{treeNode:{},widgetId:{},cursorEnabled:{type:Boolean},cursorAutoDelay:{},layout:{}},setup(t){const a=t,m={cursorAutoDelay:2500},{uid:o,config:n,customClasses:i}=D(d.CMP_TYPES.TARGET_ZONE,a,m),{core:C,state:r,elementRef:p,domEvents:k}=T(()=>new d.TargetZoneCore(o.value,n.value),{},{dispatchKeyboardEvent:_.dispatchKeyboardEvent,dispatchPointerEventAtPos:_.dispatchPointerEventAtPos,reclaimFocusAtPos:_.reclaimFocusAtPos}),c=e.computed(()=>_.resolveLayoutStyle(n.value.layout)),u=_.supportsContainerQueries(),f=e.computed(()=>{if(!r.value)return{display:"none"};let l,s;const $=r?.value?.position;if(u)l=`${$.x}cqw`,s=`${$.y}cqh`;else{const h=C?.value?.rect;l=`${_.remap($?.x||0,0,100,0,h?.width||0)}px`,s=`${_.remap($?.y||0,0,100,0,h?.height||0)}px`}return{"--omnipad-virtual-cursor-x":l,"--omnipad-virtual-cursor-y":s,opacity:r.value.isVisible?1:0}}),g=l=>k.value?.onPointerDown(l),P=l=>k.value?.onPointerMove(l),b=l=>k.value?.onPointerUp(l),S=l=>k.value?.onPointerCancel(l);return(l,s)=>(e.openBlock(),e.createElementBlock("div",{id:e.unref(o),ref_key:"elementRef",ref:p,class:e.normalizeClass(["omnipad-target-zone omnipad-prevent",e.unref(i)]),style:e.normalizeStyle(c.value),onPointerdown:g,onPointermove:P,onPointerup:b,onPointercancel:S,onLostpointercapture:S},[e.renderSlot(l.$slots,"focus-feedback",{state:e.unref(r),isReturning:e.unref(r)?.isFocusReturning,cursorPos:e.unref(r)?.position},()=>[e.createVNode(e.Transition,{name:"omnipad-default-focus-fade"},{default:e.withCtx(()=>[e.unref(r)?.isFocusReturning?(e.openBlock(),e.createElementBlock("div",ee)):e.createCommentVNode("",!0)]),_:1})],!0),e.unref(n).cursorEnabled?(e.openBlock(),e.createElementBlock("div",{key:0,class:"omnipad-virtual-cursor",style:e.normalizeStyle(f.value)},[e.renderSlot(l.$slots,"cursor",{state:e.unref(r),isDown:e.unref(r)?.isPointerDown,isReturning:e.unref(r)?.isFocusReturning,cursorPos:e.unref(r)?.position},()=>[e.createElementVNode("div",{class:e.normalizeClass(["omnipad-default-cursor-dot",{"is-down":e.unref(r)?.isPointerDown}])},null,2)],!0)],4)):e.createCommentVNode("",!0),e.unref(n).cursorEnabled?(e.openBlock(),e.createElementBlock("div",{key:1,class:"omnipad-virtual-cursor",style:e.normalizeStyle(f.value)},[e.renderSlot(l.$slots,"with-cursor",{state:e.unref(r),isDown:e.unref(r)?.isPointerDown,isReturning:e.unref(r)?.isFocusReturning,cursorPos:e.unref(r)?.position},void 0,!0)],4)):e.createCommentVNode("",!0),e.renderSlot(l.$slots,"default",{state:e.unref(r),isDown:e.unref(r)?.isPointerDown,isReturning:e.unref(r)?.isFocusReturning,cursorPos:e.unref(r)?.position},void 0,!0)],46,H))}}),[["__scopeId","data-v-44c28c60"]]),te={class:"omnipad-button-content-layer"},oe={key:0,class:"omnipad-default-button-label"},I=B(e.defineComponent({__name:"VirtualButtonBase",props:{layout:{},isActive:{type:Boolean},label:{}},setup(t){const a=t,m=e.computed(()=>a.layout?_.resolveLayoutStyle(a.layout):{});return(o,n)=>(e.openBlock(),e.createElementBlock("div",{class:"omnipad-button-base omnipad-prevent",style:e.normalizeStyle(m.value),tabindex:"-1"},[e.renderSlot(o.$slots,"base",{isActive:t.isActive,label:t.label},()=>[e.createElementVNode("div",{class:e.normalizeClass(["omnipad-default-button-base",{"is-active":t.isActive}])},null,2)],!0),e.createElementVNode("div",te,[e.renderSlot(o.$slots,"default",{isActive:t.isActive,label:t.label},()=>[t.label?(e.openBlock(),e.createElementBlock("span",oe,e.toDisplayString(t.label),1)):e.createCommentVNode("",!0)],!0)])],4))}}),[["__scopeId","data-v-f6a6e082"]]),L=e.defineComponent({__name:"VirtualButton",props:{treeNode:{},widgetId:{},label:{},targetStageId:{},mapping:{},layout:{}},setup(t,{expose:a}){const m=t,o={label:"BTN"},{uid:n,config:i,customClasses:C}=D(d.CMP_TYPES.BUTTON,m,o),{core:r,state:p,elementRef:k,domEvents:c}=T(()=>new d.ButtonCore(n.value,i.value)),u=b=>c.value?.onPointerDown(b),f=b=>c.value?.onPointerMove(b),g=b=>c.value?.onPointerUp(b),P=b=>c.value?.onPointerCancel(b);return a({uid:n,onPointerDown:u,onPointerMove:f,onPointerUp:g,onPointerCancel:P,markRectDirty:()=>r.value?.markRectDirty}),(b,S)=>(e.openBlock(),e.createBlock(I,{id:e.unref(n),ref_key:"elementRef",ref:k,class:e.normalizeClass(["omnipad-button omnipad-prevent",e.unref(C)]),layout:e.unref(i).layout,label:e.unref(i).label,"is-active":e.unref(p)?.isPressed,onPointerdown:u,onPointerup:g,onPointercancel:P,onLostpointercapture:P},{base:e.withCtx(l=>[e.renderSlot(b.$slots,"base",e.normalizeProps(e.guardReactiveProps(l)))]),default:e.withCtx(l=>[e.renderSlot(b.$slots,"default",e.normalizeProps(e.guardReactiveProps(l)))]),_:3},8,["id","class","layout","label","is-active"]))}}),ne={class:"omnipad-axis-bg"},re={class:"omnipad-axis-content-layer"},Z=B(e.defineComponent({__name:"VirtualAxisBase",props:{layout:{},isActive:{type:Boolean},vector:{},showStick:{type:Boolean},baseRadius:{}},setup(t){const a=t,m=e.computed(()=>a.layout?_.resolveLayoutStyle(a.layout):{}),o=_.supportsContainerQueries(),n=e.computed(()=>{const i=a.vector?.x||0,C=a.vector?.y||0,r=a.baseRadius?.x||0,p=a.baseRadius?.y||0,k=o?`${i*50}cqw`:`${i*r}px`,c=o?`${C*50}cqh`:`${C*p}px`,u=o?"100cqw":`${r*2}px`,f=o?"100cqh":`${p*2}px`;return{"--omnipad-axis-stick-container-x":k,"--omnipad-axis-stick-container-y":c,"--omnipad-axis-stick-width":u,"--omnipad-axis-stick-height":f,transition:a.isActive?"none":"transform 0.1s ease-out"}});return(i,C)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["omnipad-axis-base omnipad-prevent",{"is-active":t.isActive}]),style:e.normalizeStyle(m.value),tabindex:"-1"},[e.createElementVNode("div",ne,[e.renderSlot(i.$slots,"base",{isActive:t.isActive,vector:t.vector},void 0,!0)]),t.showStick?(e.openBlock(),e.createElementBlock("div",{key:0,class:"omnipad-axis-stick-container",style:e.normalizeStyle(n.value)},[e.renderSlot(i.$slots,"stick",{isActive:t.isActive,vector:t.vector},()=>[e.createElementVNode("div",{class:e.normalizeClass(["omnipad-default-axis-stick",{"is-active":t.isActive}])},null,2)],!0)],4)):e.createCommentVNode("",!0),e.createElementVNode("div",re,[e.renderSlot(i.$slots,"default",{isActive:t.isActive,vector:t.vector},void 0,!0)])],6))}}),[["__scopeId","data-v-95bb429e"]]),ae={class:"omnipad-dpad-cross-bg"},F=B(e.defineComponent({__name:"VirtualDPad",props:{treeNode:{},widgetId:{},targetStageId:{},mapping:{},threshold:{},showStick:{},layout:{}},setup(t,{expose:a}){const m=t,o={showStick:!1,threshold:.3},{uid:n,config:i,customClasses:C}=D(d.CMP_TYPES.D_PAD,m,o),{core:r,state:p,elementRef:k,domEvents:c}=T(()=>new d.DPadCore(n.value,i.value)),u=_.supportsContainerQueries(),f=e.ref({x:0,y:0}),g=e.watchEffect(()=>{const s=r.value?.rect;s&&(f.value={x:s.width/2,y:s.height/2})});u&&g();const P=s=>c.value?.onPointerDown(s),b=s=>c.value?.onPointerMove(s),S=s=>c.value?.onPointerUp(s),l=s=>c.value?.onPointerCancel(s);return a({uid:n,onPointerDown:P,onPointerMove:b,onPointerUp:S,onPointerCancel:l,markRectDirty:()=>r.value?.markRectDirty()}),(s,$)=>(e.openBlock(),e.createBlock(Z,{ref_key:"elementRef",ref:k,class:e.normalizeClass(["omnipad-dpad omnipad-prevent",e.unref(C)]),layout:e.unref(i).layout,"is-active":e.unref(p)?.isActive,vector:e.unref(p)?.vector,"show-stick":e.unref(i).showStick,"base-radius":f.value,onPointerdown:P,onPointermove:b,onPointerup:S,onPointercancel:l,onLostpointercapture:l},{base:e.withCtx(h=>[e.renderSlot(s.$slots,"base",e.normalizeProps(e.guardReactiveProps(h)),()=>[e.createElementVNode("div",ae,[e.createElementVNode("div",{class:e.normalizeClass(["dpad-arm top",{on:h.vector&&h.vector.y<-e.unref(i).threshold}])},null,2),e.createElementVNode("div",{class:e.normalizeClass(["dpad-arm bottom",{on:h.vector&&h.vector.y>e.unref(i).threshold}])},null,2),e.createElementVNode("div",{class:e.normalizeClass(["dpad-arm left",{on:h.vector&&h.vector.x<-e.unref(i).threshold}])},null,2),e.createElementVNode("div",{class:e.normalizeClass(["dpad-arm right",{on:h.vector&&h.vector.x>e.unref(i).threshold}])},null,2),$[0]||($[0]=e.createElementVNode("div",{class:"dpad-center"},null,-1))])],!0)]),stick:e.withCtx(h=>[e.renderSlot(s.$slots,"stick",e.normalizeProps(e.guardReactiveProps(h)),void 0,!0)]),default:e.withCtx(h=>[e.renderSlot(s.$slots,"default",e.normalizeProps(e.guardReactiveProps(h)),void 0,!0)]),_:3},8,["class","layout","is-active","vector","show-stick","base-radius"]))}}),[["__scopeId","data-v-e1ecfcd0"]]),Q=B(e.defineComponent({__name:"VirtualTrackpad",props:{treeNode:{},widgetId:{},label:{},sensitivity:{},targetStageId:{},mapping:{},layout:{}},setup(t,{expose:a}){const m=t,{uid:o,config:n,customClasses:i}=D(d.CMP_TYPES.TRACKPAD,m,{label:"TRACKPAD",sensitivity:1}),{core:C,state:r,elementRef:p,domEvents:k}=T(()=>new d.TrackpadCore(o.value,n.value)),c=P=>k.value?.onPointerDown(P),u=P=>k.value?.onPointerMove(P),f=P=>k.value?.onPointerUp(P),g=P=>k.value?.onPointerCancel(P);return a({uid:o,onPointerDown:c,onPointerMove:u,onPointerUp:f,onPointerCancel:g,markRectDirty:()=>C.value?.markRectDirty}),(P,b)=>(e.openBlock(),e.createBlock(I,{id:e.unref(o),ref_key:"elementRef",ref:p,class:e.normalizeClass(["omnipad-trackpad omnipad-prevent",e.unref(i)]),layout:e.unref(n).layout,label:e.unref(n).label,"is-active":e.unref(r)?.isPressed,onPointerdown:c,onPointermove:u,onPointerup:f,onPointercancel:g,onLostpointercapture:g},{base:e.withCtx(S=>[e.renderSlot(P.$slots,"base",e.normalizeProps(e.guardReactiveProps(S)),void 0,!0)]),default:e.withCtx(S=>[e.renderSlot(P.$slots,"default",e.normalizeProps(e.guardReactiveProps(S)),void 0,!0)]),_:3},8,["id","class","layout","label","is-active"]))}}),[["__scopeId","data-v-5cf9baf9"]]),q=B(e.defineComponent({__name:"VirtualJoystick",props:{treeNode:{},widgetId:{},label:{},targetStageId:{},threshold:{},cursorMode:{},cursorSensitivity:{},mapping:{},layout:{}},setup(t,{expose:a}){const m=t,o={label:"PUSH",threshold:.2,cursorMode:!1,cursorSensitivity:1},{uid:n,config:i,customClasses:C}=D(d.CMP_TYPES.JOYSTICK,m,o),{core:r,state:p,elementRef:k,domEvents:c}=T(()=>new d.JoystickCore(n.value,i.value)),u=_.supportsContainerQueries(),f=e.ref({x:0,y:0}),g=e.watchEffect(()=>{const s=r.value?.rect;s&&(f.value={x:s.width/2,y:s.height/2})});u&&g();const P=s=>c.value?.onPointerDown(s),b=s=>c.value?.onPointerMove(s),S=s=>c.value?.onPointerUp(s),l=s=>c.value?.onPointerCancel(s);return a({uid:n,onPointerDown:P,onPointerMove:b,onPointerUp:S,onPointerCancel:l,markRectDirty:()=>r.value?.markRectDirty}),(s,$)=>(e.openBlock(),e.createBlock(Z,{ref_key:"elementRef",ref:k,class:e.normalizeClass(["omnipad-joystick omnipad-prevent",e.unref(C)]),layout:e.unref(i).layout,"is-active":e.unref(p)?.isActive,vector:e.unref(p)?.vector,"show-stick":"","base-radius":f.value,onPointerdown:P,onPointermove:b,onPointerup:S,onPointercancel:l,onLostpointercapture:l},{base:e.withCtx(h=>[e.renderSlot(s.$slots,"base",e.normalizeProps(e.guardReactiveProps(h)),void 0,!0)]),stick:e.withCtx(()=>[e.createVNode(I,{layout:{height:"100%",width:"100%"},"is-active":e.unref(p)?.isPressed,label:e.unref(i).label},{base:e.withCtx(h=>[e.renderSlot(s.$slots,"stick-base",e.normalizeProps(e.guardReactiveProps(h)),void 0,!0)]),default:e.withCtx(h=>[e.renderSlot(s.$slots,"stick",e.normalizeProps(e.guardReactiveProps(h)),void 0,!0)]),_:3},8,["is-active","label"])]),default:e.withCtx(h=>[e.renderSlot(s.$slots,"default",e.normalizeProps(e.guardReactiveProps(h)),void 0,!0)]),_:3},8,["class","layout","is-active","vector","base-radius"]))}}),[["__scopeId","data-v-2255ec27"]]);N(d.CMP_TYPES.BUTTON,L),N(d.CMP_TYPES.INPUT_ZONE,U),N(d.CMP_TYPES.ROOT_LAYER,O),N(d.CMP_TYPES.TARGET_ZONE,Y),N(d.CMP_TYPES.TRACKPAD,Q),N(d.CMP_TYPES.D_PAD,F),N(d.CMP_TYPES.JOYSTICK,q),w.InputZone=U,w.RootLayer=O,w.TargetZone=Y,w.VirtualButton=L,w.VirtualDPad=F,w.VirtualJoystick=q,w.VirtualTrackpad=Q,w.getComponent=A,w.getComponentSafe=z,w.hasRegisteredComponent=j,w.registerComponent=N,Object.defineProperty(w,Symbol.toStringTag,{value:"Module"})}));
1
+ (function(w,l){typeof exports=="object"&&typeof module<"u"?l(exports,require("@omnipad/core"),require("@omnipad/core/utils"),require("vue")):typeof define=="function"&&define.amd?define(["exports","@omnipad/core","@omnipad/core/utils","vue"],l):(w=typeof globalThis<"u"?globalThis:w||self,l(w.OmnipadVue={},w.OmniPadCore,w.OmniPadCoreUtils,w.Vue))})(this,(function(w,l,b,e){"use strict";const v={};function D(t,n){v[t]=n}function z(t){const n=v[t];return n||e.defineComponent({render:()=>e.h("div",{style:"color:red"},`[Unknown: ${t}]`)})}function M(t){return!t||!v[t]?null:v[t]}function J(t){return t?!!v[t]:!1}function I(t,n,f={},i){const o=t(),s=e.shallowRef(),k=e.ref(),r=e.ref(),d=e.computed(()=>r.value?.layout),a=e.ref(null),u=P=>{s.value&&"bindDelegate"in s.value&&Object.entries(P).forEach(([p,C])=>{s.value.bindDelegate(p,C)})};let S={...n.value};e.watch(n,P=>{if(!s.value)return;const p=b.getObjectDiff(S,P);Object.keys(p).length>0&&s.value.updateConfig(p),S={...n.value}},{deep:!0}),e.onMounted(()=>{s.value=o,l.Registry.getInstance().register(o),"subscribeState"in o&&o.subscribeState(p=>k.value=p),"subscribeConfig"in o&&o.subscribeConfig(p=>r.value=p),i&&u(i);let P=null;if(a.value&&(a.value instanceof Element?P=a.value:a.value.$el instanceof Element&&(P=a.value.$el)),P instanceof Element){const p=l.ElementObserver.getInstance();if("bindRectProvider"in o){const C=b.createCachedProvider(()=>P.getBoundingClientRect());o.bindRectProvider(C.get,C.markDirty),p.observeResize(o.uid,P,()=>{o.markRectDirty()})}p.observeIntersect(o.uid,P,C=>{C||o.reset()})}l.WindowManager.getInstance().init()}),e.onUnmounted(()=>{l.ElementObserver.getInstance().disconnect(o.uid),s.value&&s.value.destroy()});const E="onPointerDown"in o?b.createPointerBridge(o,f):{};return{core:e.readonly(s),state:e.readonly(k),domEvents:E,effectiveConfig:e.readonly(r),effectiveLayout:d,elementRef:a,bindDelegates:u}}const X={class:"omnipad-virtual-layer-base omnipad-prevent"},G=e.defineComponent({__name:"VirtualLayerBase",props:{nodes:{}},setup(t){const n=t,f=e.computed(()=>(n.nodes||[]).map(i=>{let o=M(i.type);return!o&&i.config?.baseType&&(o=M(i.config.baseType)),o||(o=z(i.type)),{node:i,component:o}}));return(i,o)=>(e.openBlock(),e.createElementBlock("div",X,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.value,s=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(s.component),{key:s.node.uid,"tree-node":s.node},null,8,["tree-node"]))),128)),e.renderSlot(i.$slots,"default",{},void 0,!0)]))}}),B=(t,n)=>{const f=t.__vccOpts||t;for(const[i,o]of n)f[i]=o;return f},L=B(G,[["__scopeId","data-v-d67cc501"]]),H=["treeNode","widgetId","parentId"];function V(t,n,f={},i=[]){const o=n.treeNode,s=o&&o.config?.baseType===t||o?.type===t?o:void 0;o&&!s&&console.warn(`[OmniPad-Validation] Type mismatch! Component expected "${t}", but received "${o.type}". Config ignored.`);const k=e.inject(l.CONTEXT.PARENT_ID_KEY,e.ref(void 0)),r=e.computed(()=>n.parentId||s?.config?.parentId||k.value),d=n.widgetId||s?.uid||b.generateUID(t);e.provide(l.CONTEXT.PARENT_ID_KEY,d);const a=new Set([...H,...i]),u=s?.config||{},S=b.getBusinessProps(n,a),E={...f,...u,...S,id:d,baseType:t,parentId:r.value,layout:{...f.layout||{},...u.layout||{},...S.layout||{}}},P=e.computed(()=>{const p=b.getBusinessProps(n,a);return{...p,parentId:r.value,layout:p.layout||void 0}});return{uid:d,initialConfig:E,reactiveConfig:P}}const ee=["id"],U=B(e.defineComponent({__name:"InputZone",props:{treeNode:{},widgetId:{},layout:{},preventFocusLoss:{}},setup(t){const n=t,f=e.useSlots(),i=e.ref(null),{uid:o,initialConfig:s,reactiveConfig:k}=V(l.CMP_TYPES.INPUT_ZONE,n),{core:r,state:d,domEvents:a,effectiveConfig:u,effectiveLayout:S,elementRef:E,bindDelegates:P}=I(()=>new l.InputZoneCore(o,s,n.treeNode?.type),k,{requireDirectHit:!0}),p=e.computed(()=>{const y=n.treeNode?.config?.dynamicWidgetId;return n.treeNode?.children?.filter($=>$.uid!==y)||[]}),C=e.computed(()=>{const $=(f.dynamicWidget?.()||[]).filter(x=>!(x.type===Comment||x.type===Text)),N=n.treeNode?.children?.find(x=>x.uid===n.treeNode?.config?.dynamicWidgetId),A=$.length>0;return $.length>1&&console.error(`[OmniPad-Validation] InputZone ${o} has multiple dynamic widgets in slot. Only the first one will be activated.`),A&&N&&console.warn(`[OmniPad-Validation] InputZone ${o} has both Slot and Config dynamic widgets. Config ignored.`),{nodeToRender:A?$[0]:N||null,isFromSlot:A}}),h=e.computed(()=>{const y=C.value.nodeToRender;return z(y.config?.baseType||y.type)});e.watch(i,y=>{e.nextTick(()=>{y&&y?.uid&&(r.value?.updateConfig({dynamicWidgetId:y.uid}),P({dynamicWidgetPointerDown:$=>{y.markRectDirty?.(),y.onPointerDown?.($)},dynamicWidgetPointerMove:y.onPointerMove,dynamicWidgetPointerUp:y.onPointerUp,dynamicWidgetPointerCancel:y.onPointerCancel}))})},{immediate:!0});const _=e.computed(()=>S.value?b.resolveLayoutStyle(S.value):{}),R=b.supportsContainerQueries(),m=e.computed(()=>{if(!d.value)return{display:"none"};if(!d.value?.isDynamicActive)return{visibility:"hidden",opacity:0};let y,$;const N=d?.value?.dynamicPosition;if(R)y=`${N.x}cqw`,$=`${N.y}cqh`;else{const A=r?.value?.rect;y=`${b.remap(N?.x||0,0,100,0,A?.width||0)}px`,$=`${b.remap(N?.y||0,0,100,0,A?.height||0)}px`}return{zIndex:100,"--dynamic-widget-mount-x":y,"--dynamic-widget-mount-y":$,visibility:"visible",opacity:1,pointerEvents:"auto"}}),c=y=>a?.onPointerDown?.(y),T=y=>a?.onPointerMove?.(y),g=y=>a?.onPointerUp?.(y),W=y=>a?.onPointerCancel?.(y);return(y,$)=>(e.openBlock(),e.createElementBlock("div",{id:e.unref(o),ref_key:"elementRef",ref:E,class:e.normalizeClass(["omnipad-input-zone omnipad-prevent",e.unref(u)?.cssClasses]),style:e.normalizeStyle(_.value)},[e.createVNode(L,{nodes:p.value},{default:e.withCtx(()=>[e.renderSlot(y.$slots,"default",{},void 0,!0)]),_:3},8,["nodes"]),C.value.nodeToRender||e.unref(r)?.isInterceptorRequired?(e.openBlock(),e.createElementBlock("div",{key:0,class:"omnipad-input-zone-trigger omnipad-prevent",onPointerdown:c,onPointermove:T,onPointerup:g,onPointercancel:W,onLostpointercapture:W},[e.createElementVNode("div",{class:"dynamic-widget-mount",style:e.normalizeStyle(m.value)},[C.value.isFromSlot?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(C.value.nodeToRender),{key:0,ref:N=>i.value=N},null,512)):C.value.nodeToRender?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(h.value),{key:1,ref:N=>i.value=N,"tree-node":C.value.nodeToRender},null,8,["tree-node"])):e.createCommentVNode("",!0)],4)],32)):e.createCommentVNode("",!0)],14,ee))}}),[["__scopeId","data-v-8b58e8ce"]]),te=["id"],Y=B(e.defineComponent({__name:"RootLayer",props:{treeNode:{},widgetId:{},layout:{}},setup(t){const n=t,{uid:f,initialConfig:i,reactiveConfig:o}=V(l.CMP_TYPES.ROOT_LAYER,n),{effectiveConfig:s,effectiveLayout:k,elementRef:r}=I(()=>new l.RootLayerCore(f,i,n.treeNode?.type),o),d=e.computed(()=>k.value?b.resolveLayoutStyle(k.value):{});return(a,u)=>(e.openBlock(),e.createElementBlock("div",{id:e.unref(f),ref_key:"elementRef",ref:r,class:e.normalizeClass(["omnipad-root-layer omnipad-prevent",e.unref(s)?.cssClasses]),style:e.normalizeStyle(d.value)},[e.createVNode(L,{nodes:t.treeNode?.children||[]},{default:e.withCtx(()=>[e.renderSlot(a.$slots,"default",{},void 0,!0)]),_:3},8,["nodes"])],14,te))}}),[["__scopeId","data-v-2e1f7fa1"]]),oe=["id"],ne={key:0,class:"omnipad-default-focus-border-feedback"},Z=B(e.defineComponent({__name:"TargetZone",props:{treeNode:{},widgetId:{},cursorEnabled:{type:Boolean},cursorAutoDelay:{},layout:{}},setup(t){const n=t,f={cursorAutoDelay:2500},{uid:i,initialConfig:o,reactiveConfig:s}=V(l.CMP_TYPES.TARGET_ZONE,n,f),{core:k,state:r,domEvents:d,effectiveConfig:a,effectiveLayout:u,elementRef:S}=I(()=>new l.TargetZoneCore(i,o,n.treeNode?.type),s,{},{dispatchKeyboardEvent:b.dispatchKeyboardEvent,dispatchPointerEventAtPos:b.dispatchPointerEventAtPos,reclaimFocusAtPos:b.reclaimFocusAtPos}),E=e.computed(()=>u.value?b.resolveLayoutStyle(u.value):{}),P=b.supportsContainerQueries(),p=e.computed(()=>{if(!r.value)return{display:"none"};let m,c;const T=r?.value?.position;if(P)m=`${T.x}cqw`,c=`${T.y}cqh`;else{const g=k?.value?.rect;m=`${b.remap(T?.x||0,0,100,0,g?.width||0)}px`,c=`${b.remap(T?.y||0,0,100,0,g?.height||0)}px`}return{"--omnipad-virtual-cursor-x":m,"--omnipad-virtual-cursor-y":c,opacity:r.value.isVisible?1:0}}),C=m=>d?.onPointerDown?.(m),h=m=>d?.onPointerMove?.(m),_=m=>d?.onPointerUp?.(m),R=m=>d?.onPointerCancel?.(m);return(m,c)=>(e.openBlock(),e.createElementBlock("div",{id:e.unref(i),ref_key:"elementRef",ref:S,class:e.normalizeClass(["omnipad-target-zone omnipad-prevent",e.unref(a)?.cssClasses]),style:e.normalizeStyle(E.value),onPointerdown:C,onPointermove:h,onPointerup:_,onPointercancel:R,onLostpointercapture:R},[e.renderSlot(m.$slots,"focus-feedback",{state:e.unref(r),isReturning:e.unref(r)?.isFocusReturning,cursorPos:e.unref(r)?.position},()=>[e.createVNode(e.Transition,{name:"omnipad-default-focus-fade"},{default:e.withCtx(()=>[e.unref(r)?.isFocusReturning?(e.openBlock(),e.createElementBlock("div",ne)):e.createCommentVNode("",!0)]),_:1})],!0),e.unref(a)?.cursorEnabled?(e.openBlock(),e.createElementBlock("div",{key:0,class:"omnipad-virtual-cursor",style:e.normalizeStyle(p.value)},[e.renderSlot(m.$slots,"cursor",{state:e.unref(r),isDown:e.unref(r)?.isPointerDown,isReturning:e.unref(r)?.isFocusReturning,cursorPos:e.unref(r)?.position},()=>[e.createElementVNode("div",{class:e.normalizeClass(["omnipad-default-cursor-dot",{"is-down":e.unref(r)?.isPointerDown}])},null,2)],!0)],4)):e.createCommentVNode("",!0),e.unref(a)?.cursorEnabled?(e.openBlock(),e.createElementBlock("div",{key:1,class:"omnipad-virtual-cursor",style:e.normalizeStyle(p.value)},[e.renderSlot(m.$slots,"with-cursor",{state:e.unref(r),isDown:e.unref(r)?.isPointerDown,isReturning:e.unref(r)?.isFocusReturning,cursorPos:e.unref(r)?.position},void 0,!0)],4)):e.createCommentVNode("",!0),e.renderSlot(m.$slots,"default",{state:e.unref(r),isDown:e.unref(r)?.isPointerDown,isReturning:e.unref(r)?.isFocusReturning,cursorPos:e.unref(r)?.position},void 0,!0)],46,oe))}}),[["__scopeId","data-v-ef213f3f"]]),re={class:"omnipad-button-content-layer"},ie={key:0,class:"omnipad-default-button-label"},O=B(e.defineComponent({__name:"VirtualButtonBase",props:{layout:{},isActive:{type:Boolean},label:{}},setup(t){const n=t,f=e.computed(()=>n.layout?b.resolveLayoutStyle(n.layout):{});return(i,o)=>(e.openBlock(),e.createElementBlock("div",{class:"omnipad-button-base omnipad-prevent",style:e.normalizeStyle(f.value),tabindex:"-1"},[e.renderSlot(i.$slots,"base",{isActive:t.isActive,label:t.label},()=>[e.createElementVNode("div",{class:e.normalizeClass(["omnipad-default-button-base",{"is-active":t.isActive}])},null,2)],!0),e.createElementVNode("div",re,[e.renderSlot(i.$slots,"default",{isActive:t.isActive,label:t.label},()=>[t.label?(e.openBlock(),e.createElementBlock("span",ie,e.toDisplayString(t.label),1)):e.createCommentVNode("",!0)],!0)])],4))}}),[["__scopeId","data-v-f6a6e082"]]),K=e.defineComponent({__name:"VirtualButton",props:{treeNode:{},widgetId:{},label:{},targetStageId:{},mapping:{},layout:{}},setup(t,{expose:n}){const f=t,i={label:"BTN"},{uid:o,initialConfig:s,reactiveConfig:k}=V(l.CMP_TYPES.BUTTON,f,i),{core:r,state:d,domEvents:a,effectiveConfig:u,effectiveLayout:S,elementRef:E}=I(()=>new l.ButtonCore(o,s,f.treeNode?.type),k),P=_=>a?.onPointerDown?.(_),p=_=>a?.onPointerMove?.(_),C=_=>a?.onPointerUp?.(_),h=_=>a?.onPointerCancel?.(_);return n({uid:o,onPointerDown:P,onPointerMove:p,onPointerUp:C,onPointerCancel:h,markRectDirty:()=>r.value?.markRectDirty}),(_,R)=>(e.openBlock(),e.createBlock(O,{id:e.unref(o),ref_key:"elementRef",ref:E,class:e.normalizeClass(["omnipad-button omnipad-prevent",e.unref(u)?.cssClasses]),layout:e.unref(S),label:e.unref(u)?.label,"is-active":e.unref(d)?.isPressed,onPointerdown:P,onPointerup:C,onPointercancel:h,onLostpointercapture:h},{base:e.withCtx(m=>[e.renderSlot(_.$slots,"base",e.normalizeProps(e.guardReactiveProps(m)))]),default:e.withCtx(m=>[e.renderSlot(_.$slots,"default",e.normalizeProps(e.guardReactiveProps(m)))]),_:3},8,["id","class","layout","label","is-active"]))}}),ae={class:"omnipad-axis-bg"},se={class:"omnipad-axis-content-layer"},F=B(e.defineComponent({__name:"VirtualAxisBase",props:{layout:{},isActive:{type:Boolean},vector:{},showStick:{type:Boolean},baseRadius:{}},setup(t){const n=t,f=e.computed(()=>n.layout?b.resolveLayoutStyle(n.layout):{}),i=b.supportsContainerQueries(),o=e.computed(()=>{const s=n.vector?.x||0,k=n.vector?.y||0,r=n.baseRadius?.x||0,d=n.baseRadius?.y||0,a=i?`${s*50}cqw`:`${s*r}px`,u=i?`${k*50}cqh`:`${k*d}px`,S=i?"100cqw":`${r*2}px`,E=i?"100cqh":`${d*2}px`;return{"--omnipad-axis-stick-container-x":a,"--omnipad-axis-stick-container-y":u,"--omnipad-axis-stick-width":S,"--omnipad-axis-stick-height":E,transition:n.isActive?"none":"transform 0.1s ease-out"}});return(s,k)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["omnipad-axis-base omnipad-prevent",{"is-active":t.isActive}]),style:e.normalizeStyle(f.value),tabindex:"-1"},[e.createElementVNode("div",ae,[e.renderSlot(s.$slots,"base",{isActive:t.isActive,vector:t.vector},void 0,!0)]),t.showStick?(e.openBlock(),e.createElementBlock("div",{key:0,class:"omnipad-axis-stick-container",style:e.normalizeStyle(o.value)},[e.renderSlot(s.$slots,"stick",{isActive:t.isActive,vector:t.vector},()=>[e.createElementVNode("div",{class:e.normalizeClass(["omnipad-default-axis-stick",{"is-active":t.isActive}])},null,2)],!0)],4)):e.createCommentVNode("",!0),e.createElementVNode("div",se,[e.renderSlot(s.$slots,"default",{isActive:t.isActive,vector:t.vector},void 0,!0)])],6))}}),[["__scopeId","data-v-95bb429e"]]),ce={class:"omnipad-dpad-cross-bg"},Q=B(e.defineComponent({__name:"VirtualDPad",props:{treeNode:{},widgetId:{},targetStageId:{},mapping:{},threshold:{},showStick:{},layout:{}},setup(t,{expose:n}){const f=t,i={showStick:!1,threshold:.3},{uid:o,initialConfig:s,reactiveConfig:k}=V(l.CMP_TYPES.D_PAD,f,i),{core:r,state:d,domEvents:a,effectiveConfig:u,effectiveLayout:S,elementRef:E}=I(()=>new l.DPadCore(o,s,f.treeNode?.type),k),P=b.supportsContainerQueries(),p=e.ref({x:0,y:0}),C=e.watchEffect(()=>{const c=r.value?.rect;c&&(p.value={x:c.width/2,y:c.height/2})});P&&C();const h=c=>a?.onPointerDown?.(c),_=c=>a?.onPointerMove?.(c),R=c=>a?.onPointerUp?.(c),m=c=>a?.onPointerCancel?.(c);return n({uid:o,onPointerDown:h,onPointerMove:_,onPointerUp:R,onPointerCancel:m,markRectDirty:()=>r.value?.markRectDirty()}),(c,T)=>(e.openBlock(),e.createBlock(F,{ref_key:"elementRef",ref:E,class:e.normalizeClass(["omnipad-dpad omnipad-prevent",e.unref(u)?.cssClasses]),layout:e.unref(S),"is-active":e.unref(d)?.isActive,vector:e.unref(d)?.vector,"show-stick":e.unref(u)?.showStick,"base-radius":p.value,onPointerdown:h,onPointermove:_,onPointerup:R,onPointercancel:m,onLostpointercapture:m},{base:e.withCtx(g=>[e.renderSlot(c.$slots,"base",e.normalizeProps(e.guardReactiveProps(g)),()=>[e.createElementVNode("div",ce,[e.createElementVNode("div",{class:e.normalizeClass(["dpad-arm top",{on:g.vector&&g.vector.y<-e.unref(u)?.threshold}])},null,2),e.createElementVNode("div",{class:e.normalizeClass(["dpad-arm bottom",{on:g.vector&&g.vector.y>e.unref(u)?.threshold}])},null,2),e.createElementVNode("div",{class:e.normalizeClass(["dpad-arm left",{on:g.vector&&g.vector.x<-e.unref(u)?.threshold}])},null,2),e.createElementVNode("div",{class:e.normalizeClass(["dpad-arm right",{on:g.vector&&g.vector.x>e.unref(u)?.threshold}])},null,2),T[0]||(T[0]=e.createElementVNode("div",{class:"dpad-center"},null,-1))])],!0)]),stick:e.withCtx(g=>[e.renderSlot(c.$slots,"stick",e.normalizeProps(e.guardReactiveProps(g)),void 0,!0)]),default:e.withCtx(g=>[e.renderSlot(c.$slots,"default",e.normalizeProps(e.guardReactiveProps(g)),void 0,!0)]),_:3},8,["class","layout","is-active","vector","show-stick","base-radius"]))}}),[["__scopeId","data-v-1bf11a90"]]),q=B(e.defineComponent({__name:"VirtualTrackpad",props:{treeNode:{},widgetId:{},label:{},sensitivity:{},targetStageId:{},mapping:{},layout:{}},setup(t,{expose:n}){const f=t,{uid:i,initialConfig:o,reactiveConfig:s}=V(l.CMP_TYPES.TRACKPAD,f,{label:"TRACKPAD",sensitivity:1}),{core:k,state:r,domEvents:d,effectiveConfig:a,effectiveLayout:u,elementRef:S}=I(()=>new l.TrackpadCore(i,o,f.treeNode?.type),s),E=h=>d?.onPointerDown?.(h),P=h=>d?.onPointerMove?.(h),p=h=>d?.onPointerUp?.(h),C=h=>d?.onPointerCancel?.(h);return n({uid:i,onPointerDown:E,onPointerMove:P,onPointerUp:p,onPointerCancel:C,markRectDirty:()=>k.value?.markRectDirty}),(h,_)=>(e.openBlock(),e.createBlock(O,{id:e.unref(i),ref_key:"elementRef",ref:S,class:e.normalizeClass(["omnipad-trackpad omnipad-prevent",e.unref(a)?.cssClasses]),layout:e.unref(u),label:e.unref(a)?.label,"is-active":e.unref(r)?.isPressed,onPointerdown:E,onPointermove:P,onPointerup:p,onPointercancel:C,onLostpointercapture:C},{base:e.withCtx(R=>[e.renderSlot(h.$slots,"base",e.normalizeProps(e.guardReactiveProps(R)),void 0,!0)]),default:e.withCtx(R=>[e.renderSlot(h.$slots,"default",e.normalizeProps(e.guardReactiveProps(R)),void 0,!0)]),_:3},8,["id","class","layout","label","is-active"]))}}),[["__scopeId","data-v-e9f8b8d7"]]),j=B(e.defineComponent({__name:"VirtualJoystick",props:{treeNode:{},widgetId:{},label:{},targetStageId:{},threshold:{},cursorMode:{},cursorSensitivity:{},mapping:{},layout:{}},setup(t,{expose:n}){const f=t,i={label:"PUSH",threshold:.2,cursorMode:!1,cursorSensitivity:1},{uid:o,initialConfig:s,reactiveConfig:k}=V(l.CMP_TYPES.JOYSTICK,f,i),{core:r,state:d,domEvents:a,effectiveConfig:u,effectiveLayout:S,elementRef:E}=I(()=>new l.JoystickCore(o,s,f.treeNode?.type),k),P=b.supportsContainerQueries(),p=e.ref({x:0,y:0}),C=e.watchEffect(()=>{const c=r.value?.rect;c&&(p.value={x:c.width/2,y:c.height/2})});P&&C();const h=c=>a?.onPointerDown?.(c),_=c=>a?.onPointerMove?.(c),R=c=>a?.onPointerUp?.(c),m=c=>a?.onPointerCancel?.(c);return n({uid:o,onPointerDown:h,onPointerMove:_,onPointerUp:R,onPointerCancel:m,markRectDirty:()=>r.value?.markRectDirty}),(c,T)=>(e.openBlock(),e.createBlock(F,{ref_key:"elementRef",ref:E,class:e.normalizeClass(["omnipad-joystick omnipad-prevent",e.unref(u)?.cssClasses]),layout:e.unref(S),"is-active":e.unref(d)?.isActive,vector:e.unref(d)?.vector,"show-stick":"","base-radius":p.value,onPointerdown:h,onPointermove:_,onPointerup:R,onPointercancel:m,onLostpointercapture:m},{base:e.withCtx(g=>[e.renderSlot(c.$slots,"base",e.normalizeProps(e.guardReactiveProps(g)),void 0,!0)]),stick:e.withCtx(()=>[e.createVNode(O,{layout:{height:"100%",width:"100%"},"is-active":e.unref(d)?.isPressed,label:e.unref(u)?.label},{base:e.withCtx(g=>[e.renderSlot(c.$slots,"stick-base",e.normalizeProps(e.guardReactiveProps(g)),void 0,!0)]),default:e.withCtx(g=>[e.renderSlot(c.$slots,"stick",e.normalizeProps(e.guardReactiveProps(g)),void 0,!0)]),_:3},8,["is-active","label"])]),default:e.withCtx(g=>[e.renderSlot(c.$slots,"default",e.normalizeProps(e.guardReactiveProps(g)),void 0,!0)]),_:3},8,["class","layout","is-active","vector","base-radius"]))}}),[["__scopeId","data-v-ec529d0c"]]);D(l.CMP_TYPES.BUTTON,K),D(l.CMP_TYPES.INPUT_ZONE,U),D(l.CMP_TYPES.ROOT_LAYER,Y),D(l.CMP_TYPES.TARGET_ZONE,Z),D(l.CMP_TYPES.TRACKPAD,q),D(l.CMP_TYPES.D_PAD,Q),D(l.CMP_TYPES.JOYSTICK,j),l.setGlobalSignalHandler(t=>{(t.type===l.ACTION_TYPES.KEYDOWN||t.type===l.ACTION_TYPES.KEYUP)&&b.dispatchKeyboardEvent(t.type,t.payload)}),w.InputZone=U,w.RootLayer=Y,w.TargetZone=Z,w.VirtualButton=K,w.VirtualDPad=Q,w.VirtualJoystick=j,w.VirtualTrackpad=q,w.getComponent=z,w.getComponentSafe=M,w.hasRegisteredComponent=J,w.registerComponent=D,Object.defineProperty(w,Symbol.toStringTag,{value:"Module"})}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@omnipad/vue",
3
- "version": "0.4.3",
3
+ "version": "0.4.5",
4
4
  "description": "",
5
5
  "main": "./dist/omnipad-vue.umd.js",
6
6
  "module": "./dist/omnipad-vue.mjs",
@@ -30,7 +30,7 @@
30
30
  "vue": "^3.2.0"
31
31
  },
32
32
  "dependencies": {
33
- "@omnipad/core": "0.4.3"
33
+ "@omnipad/core": "0.4.5"
34
34
  },
35
35
  "publishConfig": {
36
36
  "access": "public",