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