@omnipad/vue 0.4.4 → 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.
- package/dist/index.d.ts +4 -5
- package/dist/omnipad-vue.css +1 -1
- package/dist/omnipad-vue.mjs +414 -423
- package/dist/omnipad-vue.umd.js +1 -1
- package/package.json +2 -2
package/dist/omnipad-vue.umd.js
CHANGED
|
@@ -1 +1 @@
|
|
|
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"})}));
|
|
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
|
+
"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.
|
|
33
|
+
"@omnipad/core": "0.4.5"
|
|
34
34
|
},
|
|
35
35
|
"publishConfig": {
|
|
36
36
|
"access": "public",
|