@omnipad/core 0.4.0 → 0.4.1

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
- 'use strict';var chunkFWW6DLM7_cjs=require('../chunk-FWW6DLM7.cjs');var E=(t,o,n="omnipad-prevent")=>{let r=document.elementsFromPoint(t,o).find(i=>!i.classList.contains(n));if(!r)return null;for(;r&&r.shadowRoot;){let f=r.shadowRoot.elementsFromPoint(t,o).find(u=>!u.classList.contains(n));if(!f||f===r)break;r=f;}return r},y=()=>{let t=document.activeElement;for(;t&&t.shadowRoot&&t.shadowRoot.activeElement;)t=t.shadowRoot.activeElement;return t},S=t=>{y()!==t&&(t.hasAttribute("tabindex")||t.setAttribute("tabindex","-1"),t.focus());},Q=(t,o)=>{let n=new KeyboardEvent(t,{...o,which:o.keyCode,bubbles:true,cancelable:true,view:window});window.dispatchEvent(n);},_=(t,o,n,a)=>{let r=E(o,n);if(!r)return;let i={bubbles:true,cancelable:true,composed:true,clientX:o,clientY:n,view:window,...a};if(t.startsWith("pointer")){r.dispatchEvent(new PointerEvent(t,{isPrimary:true,pointerId:9999,pointerType:"mouse",...i}));let f=t.replace("pointer","mouse");r.dispatchEvent(new MouseEvent(f,i));}else r.dispatchEvent(new MouseEvent(t,i));},X=(t,o,n)=>{let a=E(t,o);if(!a)return;y()!==a&&(S(a),n());},l,Y=()=>(l!==void 0||(l=typeof window<"u"&&!!window.CSS?.supports?.("width: 1cqw")),l),C=(t,o)=>{if(t instanceof Element)try{t.setPointerCapture(o);}catch(n){undefined?.DEV&&console.warn("[Omnipad-DOM] Failed to set pointer capture:",n);}},I=(t,o)=>{if(t instanceof Element&&t.hasPointerCapture(o))try{t.releasePointerCapture(o);}catch{}};function Z(t,o={}){return {onPointerDown(n){if(!n.isTrusted||o?.requireDirectHit&&n.target!==n.currentTarget||t.activePointerId!=null)return;n.cancelable&&n.preventDefault(),n.stopPropagation();let a=n.currentTarget;a&&C(a,n.pointerId),t.onPointerDown(n);},onPointerMove(n){n.isTrusted&&(t.activePointerId!=null&&t.activePointerId!==n.pointerId||(n.cancelable&&n.preventDefault(),t.onPointerMove(n)));},onPointerUp(n){if(!n.isTrusted||t.activePointerId!=null&&t.activePointerId!==n.pointerId)return;n.cancelable&&n.preventDefault();let a=n.currentTarget;a&&I(a,n.pointerId),t.onPointerUp(n);},onPointerCancel(n){if(!n.isTrusted||t.activePointerId!=null&&t.activePointerId!==n.pointerId)return;let a=n.currentTarget;a&&I(a,n.pointerId),t.onPointerCancel(n);}}}var v=(t="omnipad")=>{let o=Date.now().toString(36),n=Math.random().toString(36).substring(2,6);return `${t}-${o}-${n}`};function m(t){return t.startsWith("$")}var et=t=>{if(!t)return {};let o={};o.position="absolute",t.isSquare&&(o.aspectRatio="1/1"),["left","top","right","bottom","width","height"].forEach(r=>{let i=t[r];i!==void 0&&typeof i=="number"?o[r]=`${i}px`:i!==void 0&&typeof i=="string"&&(o[r]=i);}),t.zIndex!==void 0&&(o.zIndex=t.zIndex);let a={"top-left":"translate(0, 0)","top-center":"translate(-50%, 0)","top-right":"translate(-100%, 0)","center-left":"translate(0, -50%)",center:"translate(-50%, -50%)","center-right":"translate(-100%, -50%)","bottom-left":"translate(0, -100%)","bottom-center":"translate(-50%, -100%)","bottom-right":"translate(-100%, -100%)"};return t.anchor&&(o.transform=a[t.anchor]),o};function it(t){if(!t||typeof t!="object")throw new Error("[OmniPad-Validation] Profile must be a valid JSON object.");if(!Array.isArray(t.items))throw new Error('[OmniPad-Validation] "items" must be an array.');let o={name:t.meta?.name||"Untitled Profile",version:t.meta?.version||"1.0.0",author:t.meta?.author||"Unknown"},n=t.items.map((r,i)=>{if(!r.id||!r.type)throw new Error(`[OmniPad-Validation] Item at index ${i} is missing "id" or "type".`);return {id:String(r.id),type:String(r.type),parentId:r.parentId?String(r.parentId):void 0,config:r.config||{}}}),a=t.gamepadMappings;return {meta:o,items:n,gamepadMappings:a}}function at(t){let{items:o,gamepadMappings:n}=t,a=new Map,r=(e,s="node")=>m(e)?e:(a.has(e)||a.set(e,v(s)),a.get(e));o.forEach(e=>r(e.id,e.type));let i=[];n&&n.forEach(e=>{let s={};if(e.buttons){s.buttons={};for(let[c,d]of Object.entries(e.buttons))s.buttons[c]=r(d);}e.dpad&&(s.dpad=r(e.dpad)),e.leftStick&&(s.leftStick=r(e.leftStick)),e.rightStick&&(s.rightStick=r(e.rightStick)),i.push(s);});let f=new Map,u=[];o.forEach(e=>{e.parentId?(f.has(e.parentId)||f.set(e.parentId,[]),f.get(e.parentId).push(e)):u.push(e);});let g=(e,s)=>{if(s.has(e.id))throw new Error(`[Omnipad-Core] Circular dependency detected at node: ${e.id}`);s.add(e.id);let c={...e.config};c?.targetStageId&&(c.targetStageId=r(c.targetStageId)),c?.dynamicWidgetId&&(c.dynamicWidgetId=r(c.dynamicWidgetId));let h=(f.get(e.id)||[]).map(b=>g(b,new Set(s)));return {uid:r(e.id),type:e.type,config:c,children:h}},p={};return u.forEach(e=>{p[e.id]=g(e,new Set);}),{roots:p,runtimeGamepadMappings:i}}function st(t,o,n){let a=chunkFWW6DLM7_cjs.b.getInstance(),r=[];if(!o||o.length===0)r=a.getAllEntities();else {let e=new Set;o.forEach(s=>{a.getEntitiesByRoot(s).forEach(d=>e.add(d));}),r=Array.from(e);}let i=new Map,f=0,u=e=>m(e)?e:(i.has(e)||i.set(e,`node_${++f}`),i.get(e)),g=r.map(e=>{let s=e.getConfig(),c=e.uid,d={...s};d.targetStageId&&(d.targetStageId=u(d.targetStageId)),d.dynamicWidgetId&&(d.dynamicWidgetId=u(d.dynamicWidgetId));let{id:h,parentId:b,...w}=d;return {id:u(c),type:e.type,parentId:s.parentId?u(s.parentId):void 0,config:w}}),p=[];return n&&n.forEach(e=>{let s={};if(e.buttons){s.buttons={};for(let[c,d]of Object.entries(e.buttons))i.has(d)&&(s.buttons[c]=i.get(d));}e.dpad&&i.has(e.dpad)&&(s.dpad=i.get(e.dpad)),e.leftStick&&i.has(e.leftStick)&&(s.leftStick=i.get(e.leftStick)),e.rightStick&&i.has(e.rightStick)&&(s.rightStick=i.get(e.rightStick)),Object.keys(s).length>0?p.push(s):p.push({});}),{meta:t,items:g,gamepadMappings:Object.keys(p).length>0?p:void 0}}Object.defineProperty(exports,"addVec",{enumerable:true,get:function(){return chunkFWW6DLM7_cjs.d}});Object.defineProperty(exports,"applyAxialDeadzone",{enumerable:true,get:function(){return chunkFWW6DLM7_cjs.x}});Object.defineProperty(exports,"applyRadialDeadzone",{enumerable:true,get:function(){return chunkFWW6DLM7_cjs.w}});Object.defineProperty(exports,"clamp",{enumerable:true,get:function(){return chunkFWW6DLM7_cjs.f}});Object.defineProperty(exports,"clampVector",{enumerable:true,get:function(){return chunkFWW6DLM7_cjs.m}});Object.defineProperty(exports,"degToRad",{enumerable:true,get:function(){return chunkFWW6DLM7_cjs.l}});Object.defineProperty(exports,"getAngle",{enumerable:true,get:function(){return chunkFWW6DLM7_cjs.j}});Object.defineProperty(exports,"getDeadzoneScalar",{enumerable:true,get:function(){return chunkFWW6DLM7_cjs.v}});Object.defineProperty(exports,"getDistance",{enumerable:true,get:function(){return chunkFWW6DLM7_cjs.i}});Object.defineProperty(exports,"isVec2Equal",{enumerable:true,get:function(){return chunkFWW6DLM7_cjs.u}});Object.defineProperty(exports,"lerp",{enumerable:true,get:function(){return chunkFWW6DLM7_cjs.g}});Object.defineProperty(exports,"lockTo4Directions",{enumerable:true,get:function(){return chunkFWW6DLM7_cjs.o}});Object.defineProperty(exports,"lockTo8Directions",{enumerable:true,get:function(){return chunkFWW6DLM7_cjs.n}});Object.defineProperty(exports,"normalizeVec",{enumerable:true,get:function(){return chunkFWW6DLM7_cjs.r}});Object.defineProperty(exports,"percentToPx",{enumerable:true,get:function(){return chunkFWW6DLM7_cjs.p}});Object.defineProperty(exports,"pxToPercent",{enumerable:true,get:function(){return chunkFWW6DLM7_cjs.q}});Object.defineProperty(exports,"radToDeg",{enumerable:true,get:function(){return chunkFWW6DLM7_cjs.k}});Object.defineProperty(exports,"radToVec",{enumerable:true,get:function(){return chunkFWW6DLM7_cjs.s}});Object.defineProperty(exports,"remap",{enumerable:true,get:function(){return chunkFWW6DLM7_cjs.t}});Object.defineProperty(exports,"roundTo",{enumerable:true,get:function(){return chunkFWW6DLM7_cjs.h}});Object.defineProperty(exports,"scaleVec",{enumerable:true,get:function(){return chunkFWW6DLM7_cjs.e}});Object.defineProperty(exports,"subVec",{enumerable:true,get:function(){return chunkFWW6DLM7_cjs.c}});exports.createPointerBridge=Z;exports.dispatchKeyboardEvent=Q;exports.dispatchPointerEventAtPos=_;exports.exportProfile=st;exports.focusElement=S;exports.generateUID=v;exports.getDeepActiveElement=y;exports.getDeepElement=E;exports.isGlobalID=m;exports.parseProfileJson=it;exports.parseProfileTrees=at;exports.reclaimFocusAtPos=X;exports.resolveLayoutStyle=et;exports.safeReleaseCapture=I;exports.safeSetCapture=C;exports.supportsContainerQueries=Y;
1
+ 'use strict';var chunkFWW6DLM7_cjs=require('../chunk-FWW6DLM7.cjs');var E=(t,o,n="omnipad-prevent")=>{let r=document.elementsFromPoint(t,o).find(i=>!i.classList.contains(n));if(!r)return null;for(;r&&r.shadowRoot;){let f=r.shadowRoot.elementsFromPoint(t,o).find(u=>!u.classList.contains(n));if(!f||f===r)break;r=f;}return r},y=()=>{let t=document.activeElement;for(;t&&t.shadowRoot&&t.shadowRoot.activeElement;)t=t.shadowRoot.activeElement;return t},S=t=>{y()!==t&&(t.hasAttribute("tabindex")||t.setAttribute("tabindex","-1"),t.focus());},Q=(t,o)=>{let n=new KeyboardEvent(t,{...o,which:o.keyCode,bubbles:true,cancelable:true,view:window});window.dispatchEvent(n);},_=(t,o,n,a)=>{let r=E(o,n);if(!r)return;let i={bubbles:true,cancelable:true,composed:true,clientX:o,clientY:n,view:window,...a};if(t.startsWith("pointer")){r.dispatchEvent(new PointerEvent(t,{isPrimary:true,pointerId:9999,pointerType:"mouse",...i}));let f=t.replace("pointer","mouse");r.dispatchEvent(new MouseEvent(f,i));}else r.dispatchEvent(new MouseEvent(t,i));},X=(t,o,n)=>{let a=E(t,o);if(!a)return;y()!==a&&(S(a),n());},l,Y=()=>(l!==void 0||(l=typeof window<"u"&&!!window.CSS?.supports?.("width: 1cqw")),l),C=(t,o)=>{if(t instanceof Element)try{t.setPointerCapture(o);}catch(n){undefined?.DEV&&console.warn("[Omnipad-DOM] Failed to set pointer capture:",n);}},I=(t,o)=>{if(t instanceof Element&&t.hasPointerCapture(o))try{t.releasePointerCapture(o);}catch{}};function Z(t,o={}){return {onPointerDown(n){if(!n.isTrusted||o?.requireDirectHit&&n.target!==n.currentTarget||t.activePointerId!=null)return;n.cancelable&&n.preventDefault(),n.stopPropagation();let a=n.currentTarget;a&&C(a,n.pointerId),t.onPointerDown(n);},onPointerMove(n){n.isTrusted&&(t.activePointerId!=null&&t.activePointerId!==n.pointerId||(n.cancelable&&n.preventDefault(),t.onPointerMove(n)));},onPointerUp(n){if(!n.isTrusted||t.activePointerId!=null&&t.activePointerId!==n.pointerId)return;n.cancelable&&n.preventDefault();let a=n.currentTarget;a&&I(a,n.pointerId),t.onPointerUp(n);},onPointerCancel(n){if(!n.isTrusted||t.activePointerId!=null&&t.activePointerId!==n.pointerId)return;let a=n.currentTarget;a&&I(a,n.pointerId),t.onPointerCancel(n);}}}var v=(t="omnipad")=>{let o=Date.now().toString(36),n=Math.random().toString(36).substring(2,6);return `${t}-${o}-${n}`};function m(t){return t.startsWith("$")}var et=t=>{if(Object.keys(t??{}).length===0)return {};let o={};o.position="absolute",t.isSquare&&(o.aspectRatio="1/1"),["left","top","right","bottom","width","height"].forEach(r=>{let i=t[r];i!==void 0&&typeof i=="number"?o[r]=`${i}px`:i!==void 0&&typeof i=="string"&&(o[r]=i);}),t.zIndex!==void 0&&(o.zIndex=t.zIndex);let a={"top-left":"translate(0, 0)","top-center":"translate(-50%, 0)","top-right":"translate(-100%, 0)","center-left":"translate(0, -50%)",center:"translate(-50%, -50%)","center-right":"translate(-100%, -50%)","bottom-left":"translate(0, -100%)","bottom-center":"translate(-50%, -100%)","bottom-right":"translate(-100%, -100%)"};return t.anchor&&(o.transform=a[t.anchor]),o};function it(t){if(!t||typeof t!="object")throw new Error("[OmniPad-Validation] Profile must be a valid JSON object.");if(!Array.isArray(t.items))throw new Error('[OmniPad-Validation] "items" must be an array.');let o={name:t.meta?.name||"Untitled Profile",version:t.meta?.version||"1.0.0",author:t.meta?.author||"Unknown"},n=t.items.map((r,i)=>{if(!r.id||!r.type)throw new Error(`[OmniPad-Validation] Item at index ${i} is missing "id" or "type".`);return {id:String(r.id),type:String(r.type),parentId:r.parentId?String(r.parentId):void 0,config:r.config||{}}}),a=t.gamepadMappings;return {meta:o,items:n,gamepadMappings:a}}function at(t){let{items:o,gamepadMappings:n}=t,a=new Map,r=(e,s="node")=>m(e)?e:(a.has(e)||a.set(e,v(s)),a.get(e));o.forEach(e=>r(e.id,e.type));let i=[];n&&n.forEach(e=>{let s={};if(e.buttons){s.buttons={};for(let[c,d]of Object.entries(e.buttons))s.buttons[c]=r(d);}e.dpad&&(s.dpad=r(e.dpad)),e.leftStick&&(s.leftStick=r(e.leftStick)),e.rightStick&&(s.rightStick=r(e.rightStick)),i.push(s);});let f=new Map,u=[];o.forEach(e=>{e.parentId?(f.has(e.parentId)||f.set(e.parentId,[]),f.get(e.parentId).push(e)):u.push(e);});let g=(e,s)=>{if(s.has(e.id))throw new Error(`[Omnipad-Core] Circular dependency detected at node: ${e.id}`);s.add(e.id);let c={...e.config};c?.targetStageId&&(c.targetStageId=r(c.targetStageId)),c?.dynamicWidgetId&&(c.dynamicWidgetId=r(c.dynamicWidgetId));let h=(f.get(e.id)||[]).map(b=>g(b,new Set(s)));return {uid:r(e.id),type:e.type,config:c,children:h}},p={};return u.forEach(e=>{p[e.id]=g(e,new Set);}),{roots:p,runtimeGamepadMappings:i}}function st(t,o,n){let a=chunkFWW6DLM7_cjs.b.getInstance(),r=[];if(!o||o.length===0)r=a.getAllEntities();else {let e=new Set;o.forEach(s=>{a.getEntitiesByRoot(s).forEach(d=>e.add(d));}),r=Array.from(e);}let i=new Map,f=0,u=e=>m(e)?e:(i.has(e)||i.set(e,`node_${++f}`),i.get(e)),g=r.map(e=>{let s=e.getConfig(),c=e.uid,d={...s};d.targetStageId&&(d.targetStageId=u(d.targetStageId)),d.dynamicWidgetId&&(d.dynamicWidgetId=u(d.dynamicWidgetId));let{id:h,parentId:b,...w}=d;return {id:u(c),type:e.type,parentId:s.parentId?u(s.parentId):void 0,config:w}}),p=[];return n&&n.forEach(e=>{let s={};if(e.buttons){s.buttons={};for(let[c,d]of Object.entries(e.buttons))i.has(d)&&(s.buttons[c]=i.get(d));}e.dpad&&i.has(e.dpad)&&(s.dpad=i.get(e.dpad)),e.leftStick&&i.has(e.leftStick)&&(s.leftStick=i.get(e.leftStick)),e.rightStick&&i.has(e.rightStick)&&(s.rightStick=i.get(e.rightStick)),Object.keys(s).length>0?p.push(s):p.push({});}),{meta:t,items:g,gamepadMappings:Object.keys(p).length>0?p:void 0}}Object.defineProperty(exports,"addVec",{enumerable:true,get:function(){return chunkFWW6DLM7_cjs.d}});Object.defineProperty(exports,"applyAxialDeadzone",{enumerable:true,get:function(){return chunkFWW6DLM7_cjs.x}});Object.defineProperty(exports,"applyRadialDeadzone",{enumerable:true,get:function(){return chunkFWW6DLM7_cjs.w}});Object.defineProperty(exports,"clamp",{enumerable:true,get:function(){return chunkFWW6DLM7_cjs.f}});Object.defineProperty(exports,"clampVector",{enumerable:true,get:function(){return chunkFWW6DLM7_cjs.m}});Object.defineProperty(exports,"degToRad",{enumerable:true,get:function(){return chunkFWW6DLM7_cjs.l}});Object.defineProperty(exports,"getAngle",{enumerable:true,get:function(){return chunkFWW6DLM7_cjs.j}});Object.defineProperty(exports,"getDeadzoneScalar",{enumerable:true,get:function(){return chunkFWW6DLM7_cjs.v}});Object.defineProperty(exports,"getDistance",{enumerable:true,get:function(){return chunkFWW6DLM7_cjs.i}});Object.defineProperty(exports,"isVec2Equal",{enumerable:true,get:function(){return chunkFWW6DLM7_cjs.u}});Object.defineProperty(exports,"lerp",{enumerable:true,get:function(){return chunkFWW6DLM7_cjs.g}});Object.defineProperty(exports,"lockTo4Directions",{enumerable:true,get:function(){return chunkFWW6DLM7_cjs.o}});Object.defineProperty(exports,"lockTo8Directions",{enumerable:true,get:function(){return chunkFWW6DLM7_cjs.n}});Object.defineProperty(exports,"normalizeVec",{enumerable:true,get:function(){return chunkFWW6DLM7_cjs.r}});Object.defineProperty(exports,"percentToPx",{enumerable:true,get:function(){return chunkFWW6DLM7_cjs.p}});Object.defineProperty(exports,"pxToPercent",{enumerable:true,get:function(){return chunkFWW6DLM7_cjs.q}});Object.defineProperty(exports,"radToDeg",{enumerable:true,get:function(){return chunkFWW6DLM7_cjs.k}});Object.defineProperty(exports,"radToVec",{enumerable:true,get:function(){return chunkFWW6DLM7_cjs.s}});Object.defineProperty(exports,"remap",{enumerable:true,get:function(){return chunkFWW6DLM7_cjs.t}});Object.defineProperty(exports,"roundTo",{enumerable:true,get:function(){return chunkFWW6DLM7_cjs.h}});Object.defineProperty(exports,"scaleVec",{enumerable:true,get:function(){return chunkFWW6DLM7_cjs.e}});Object.defineProperty(exports,"subVec",{enumerable:true,get:function(){return chunkFWW6DLM7_cjs.c}});exports.createPointerBridge=Z;exports.dispatchKeyboardEvent=Q;exports.dispatchPointerEventAtPos=_;exports.exportProfile=st;exports.focusElement=S;exports.generateUID=v;exports.getDeepActiveElement=y;exports.getDeepElement=E;exports.isGlobalID=m;exports.parseProfileJson=it;exports.parseProfileTrees=at;exports.reclaimFocusAtPos=X;exports.resolveLayoutStyle=et;exports.safeReleaseCapture=I;exports.safeSetCapture=C;exports.supportsContainerQueries=Y;
@@ -1 +1 @@
1
- import {b}from'../chunk-K6RXCH3Q.mjs';export{d as addVec,x as applyAxialDeadzone,w as applyRadialDeadzone,f as clamp,m as clampVector,l as degToRad,j as getAngle,v as getDeadzoneScalar,i as getDistance,u as isVec2Equal,g as lerp,o as lockTo4Directions,n as lockTo8Directions,r as normalizeVec,p as percentToPx,q as pxToPercent,k as radToDeg,s as radToVec,t as remap,h as roundTo,e as scaleVec,c as subVec}from'../chunk-K6RXCH3Q.mjs';var E=(t,o,n="omnipad-prevent")=>{let r=document.elementsFromPoint(t,o).find(i=>!i.classList.contains(n));if(!r)return null;for(;r&&r.shadowRoot;){let f=r.shadowRoot.elementsFromPoint(t,o).find(u=>!u.classList.contains(n));if(!f||f===r)break;r=f;}return r},y=()=>{let t=document.activeElement;for(;t&&t.shadowRoot&&t.shadowRoot.activeElement;)t=t.shadowRoot.activeElement;return t},S=t=>{y()!==t&&(t.hasAttribute("tabindex")||t.setAttribute("tabindex","-1"),t.focus());},Q=(t,o)=>{let n=new KeyboardEvent(t,{...o,which:o.keyCode,bubbles:true,cancelable:true,view:window});window.dispatchEvent(n);},_=(t,o,n,a)=>{let r=E(o,n);if(!r)return;let i={bubbles:true,cancelable:true,composed:true,clientX:o,clientY:n,view:window,...a};if(t.startsWith("pointer")){r.dispatchEvent(new PointerEvent(t,{isPrimary:true,pointerId:9999,pointerType:"mouse",...i}));let f=t.replace("pointer","mouse");r.dispatchEvent(new MouseEvent(f,i));}else r.dispatchEvent(new MouseEvent(t,i));},X=(t,o,n)=>{let a=E(t,o);if(!a)return;y()!==a&&(S(a),n());},l,Y=()=>(l!==void 0||(l=typeof window<"u"&&!!window.CSS?.supports?.("width: 1cqw")),l),C=(t,o)=>{if(t instanceof Element)try{t.setPointerCapture(o);}catch(n){import.meta.env?.DEV&&console.warn("[Omnipad-DOM] Failed to set pointer capture:",n);}},I=(t,o)=>{if(t instanceof Element&&t.hasPointerCapture(o))try{t.releasePointerCapture(o);}catch{}};function Z(t,o={}){return {onPointerDown(n){if(!n.isTrusted||o?.requireDirectHit&&n.target!==n.currentTarget||t.activePointerId!=null)return;n.cancelable&&n.preventDefault(),n.stopPropagation();let a=n.currentTarget;a&&C(a,n.pointerId),t.onPointerDown(n);},onPointerMove(n){n.isTrusted&&(t.activePointerId!=null&&t.activePointerId!==n.pointerId||(n.cancelable&&n.preventDefault(),t.onPointerMove(n)));},onPointerUp(n){if(!n.isTrusted||t.activePointerId!=null&&t.activePointerId!==n.pointerId)return;n.cancelable&&n.preventDefault();let a=n.currentTarget;a&&I(a,n.pointerId),t.onPointerUp(n);},onPointerCancel(n){if(!n.isTrusted||t.activePointerId!=null&&t.activePointerId!==n.pointerId)return;let a=n.currentTarget;a&&I(a,n.pointerId),t.onPointerCancel(n);}}}var v=(t="omnipad")=>{let o=Date.now().toString(36),n=Math.random().toString(36).substring(2,6);return `${t}-${o}-${n}`};function m(t){return t.startsWith("$")}var et=t=>{if(!t)return {};let o={};o.position="absolute",t.isSquare&&(o.aspectRatio="1/1"),["left","top","right","bottom","width","height"].forEach(r=>{let i=t[r];i!==void 0&&typeof i=="number"?o[r]=`${i}px`:i!==void 0&&typeof i=="string"&&(o[r]=i);}),t.zIndex!==void 0&&(o.zIndex=t.zIndex);let a={"top-left":"translate(0, 0)","top-center":"translate(-50%, 0)","top-right":"translate(-100%, 0)","center-left":"translate(0, -50%)",center:"translate(-50%, -50%)","center-right":"translate(-100%, -50%)","bottom-left":"translate(0, -100%)","bottom-center":"translate(-50%, -100%)","bottom-right":"translate(-100%, -100%)"};return t.anchor&&(o.transform=a[t.anchor]),o};function it(t){if(!t||typeof t!="object")throw new Error("[OmniPad-Validation] Profile must be a valid JSON object.");if(!Array.isArray(t.items))throw new Error('[OmniPad-Validation] "items" must be an array.');let o={name:t.meta?.name||"Untitled Profile",version:t.meta?.version||"1.0.0",author:t.meta?.author||"Unknown"},n=t.items.map((r,i)=>{if(!r.id||!r.type)throw new Error(`[OmniPad-Validation] Item at index ${i} is missing "id" or "type".`);return {id:String(r.id),type:String(r.type),parentId:r.parentId?String(r.parentId):void 0,config:r.config||{}}}),a=t.gamepadMappings;return {meta:o,items:n,gamepadMappings:a}}function at(t){let{items:o,gamepadMappings:n}=t,a=new Map,r=(e,s="node")=>m(e)?e:(a.has(e)||a.set(e,v(s)),a.get(e));o.forEach(e=>r(e.id,e.type));let i=[];n&&n.forEach(e=>{let s={};if(e.buttons){s.buttons={};for(let[c,d]of Object.entries(e.buttons))s.buttons[c]=r(d);}e.dpad&&(s.dpad=r(e.dpad)),e.leftStick&&(s.leftStick=r(e.leftStick)),e.rightStick&&(s.rightStick=r(e.rightStick)),i.push(s);});let f=new Map,u=[];o.forEach(e=>{e.parentId?(f.has(e.parentId)||f.set(e.parentId,[]),f.get(e.parentId).push(e)):u.push(e);});let g=(e,s)=>{if(s.has(e.id))throw new Error(`[Omnipad-Core] Circular dependency detected at node: ${e.id}`);s.add(e.id);let c={...e.config};c?.targetStageId&&(c.targetStageId=r(c.targetStageId)),c?.dynamicWidgetId&&(c.dynamicWidgetId=r(c.dynamicWidgetId));let h=(f.get(e.id)||[]).map(b=>g(b,new Set(s)));return {uid:r(e.id),type:e.type,config:c,children:h}},p={};return u.forEach(e=>{p[e.id]=g(e,new Set);}),{roots:p,runtimeGamepadMappings:i}}function st(t,o,n){let a=b.getInstance(),r=[];if(!o||o.length===0)r=a.getAllEntities();else {let e=new Set;o.forEach(s=>{a.getEntitiesByRoot(s).forEach(d=>e.add(d));}),r=Array.from(e);}let i=new Map,f=0,u=e=>m(e)?e:(i.has(e)||i.set(e,`node_${++f}`),i.get(e)),g=r.map(e=>{let s=e.getConfig(),c=e.uid,d={...s};d.targetStageId&&(d.targetStageId=u(d.targetStageId)),d.dynamicWidgetId&&(d.dynamicWidgetId=u(d.dynamicWidgetId));let{id:h,parentId:b,...w}=d;return {id:u(c),type:e.type,parentId:s.parentId?u(s.parentId):void 0,config:w}}),p=[];return n&&n.forEach(e=>{let s={};if(e.buttons){s.buttons={};for(let[c,d]of Object.entries(e.buttons))i.has(d)&&(s.buttons[c]=i.get(d));}e.dpad&&i.has(e.dpad)&&(s.dpad=i.get(e.dpad)),e.leftStick&&i.has(e.leftStick)&&(s.leftStick=i.get(e.leftStick)),e.rightStick&&i.has(e.rightStick)&&(s.rightStick=i.get(e.rightStick)),Object.keys(s).length>0?p.push(s):p.push({});}),{meta:t,items:g,gamepadMappings:Object.keys(p).length>0?p:void 0}}export{Z as createPointerBridge,Q as dispatchKeyboardEvent,_ as dispatchPointerEventAtPos,st as exportProfile,S as focusElement,v as generateUID,y as getDeepActiveElement,E as getDeepElement,m as isGlobalID,it as parseProfileJson,at as parseProfileTrees,X as reclaimFocusAtPos,et as resolveLayoutStyle,I as safeReleaseCapture,C as safeSetCapture,Y as supportsContainerQueries};
1
+ import {b}from'../chunk-K6RXCH3Q.mjs';export{d as addVec,x as applyAxialDeadzone,w as applyRadialDeadzone,f as clamp,m as clampVector,l as degToRad,j as getAngle,v as getDeadzoneScalar,i as getDistance,u as isVec2Equal,g as lerp,o as lockTo4Directions,n as lockTo8Directions,r as normalizeVec,p as percentToPx,q as pxToPercent,k as radToDeg,s as radToVec,t as remap,h as roundTo,e as scaleVec,c as subVec}from'../chunk-K6RXCH3Q.mjs';var E=(t,o,n="omnipad-prevent")=>{let r=document.elementsFromPoint(t,o).find(i=>!i.classList.contains(n));if(!r)return null;for(;r&&r.shadowRoot;){let f=r.shadowRoot.elementsFromPoint(t,o).find(u=>!u.classList.contains(n));if(!f||f===r)break;r=f;}return r},y=()=>{let t=document.activeElement;for(;t&&t.shadowRoot&&t.shadowRoot.activeElement;)t=t.shadowRoot.activeElement;return t},S=t=>{y()!==t&&(t.hasAttribute("tabindex")||t.setAttribute("tabindex","-1"),t.focus());},Q=(t,o)=>{let n=new KeyboardEvent(t,{...o,which:o.keyCode,bubbles:true,cancelable:true,view:window});window.dispatchEvent(n);},_=(t,o,n,a)=>{let r=E(o,n);if(!r)return;let i={bubbles:true,cancelable:true,composed:true,clientX:o,clientY:n,view:window,...a};if(t.startsWith("pointer")){r.dispatchEvent(new PointerEvent(t,{isPrimary:true,pointerId:9999,pointerType:"mouse",...i}));let f=t.replace("pointer","mouse");r.dispatchEvent(new MouseEvent(f,i));}else r.dispatchEvent(new MouseEvent(t,i));},X=(t,o,n)=>{let a=E(t,o);if(!a)return;y()!==a&&(S(a),n());},l,Y=()=>(l!==void 0||(l=typeof window<"u"&&!!window.CSS?.supports?.("width: 1cqw")),l),C=(t,o)=>{if(t instanceof Element)try{t.setPointerCapture(o);}catch(n){import.meta.env?.DEV&&console.warn("[Omnipad-DOM] Failed to set pointer capture:",n);}},I=(t,o)=>{if(t instanceof Element&&t.hasPointerCapture(o))try{t.releasePointerCapture(o);}catch{}};function Z(t,o={}){return {onPointerDown(n){if(!n.isTrusted||o?.requireDirectHit&&n.target!==n.currentTarget||t.activePointerId!=null)return;n.cancelable&&n.preventDefault(),n.stopPropagation();let a=n.currentTarget;a&&C(a,n.pointerId),t.onPointerDown(n);},onPointerMove(n){n.isTrusted&&(t.activePointerId!=null&&t.activePointerId!==n.pointerId||(n.cancelable&&n.preventDefault(),t.onPointerMove(n)));},onPointerUp(n){if(!n.isTrusted||t.activePointerId!=null&&t.activePointerId!==n.pointerId)return;n.cancelable&&n.preventDefault();let a=n.currentTarget;a&&I(a,n.pointerId),t.onPointerUp(n);},onPointerCancel(n){if(!n.isTrusted||t.activePointerId!=null&&t.activePointerId!==n.pointerId)return;let a=n.currentTarget;a&&I(a,n.pointerId),t.onPointerCancel(n);}}}var v=(t="omnipad")=>{let o=Date.now().toString(36),n=Math.random().toString(36).substring(2,6);return `${t}-${o}-${n}`};function m(t){return t.startsWith("$")}var et=t=>{if(Object.keys(t??{}).length===0)return {};let o={};o.position="absolute",t.isSquare&&(o.aspectRatio="1/1"),["left","top","right","bottom","width","height"].forEach(r=>{let i=t[r];i!==void 0&&typeof i=="number"?o[r]=`${i}px`:i!==void 0&&typeof i=="string"&&(o[r]=i);}),t.zIndex!==void 0&&(o.zIndex=t.zIndex);let a={"top-left":"translate(0, 0)","top-center":"translate(-50%, 0)","top-right":"translate(-100%, 0)","center-left":"translate(0, -50%)",center:"translate(-50%, -50%)","center-right":"translate(-100%, -50%)","bottom-left":"translate(0, -100%)","bottom-center":"translate(-50%, -100%)","bottom-right":"translate(-100%, -100%)"};return t.anchor&&(o.transform=a[t.anchor]),o};function it(t){if(!t||typeof t!="object")throw new Error("[OmniPad-Validation] Profile must be a valid JSON object.");if(!Array.isArray(t.items))throw new Error('[OmniPad-Validation] "items" must be an array.');let o={name:t.meta?.name||"Untitled Profile",version:t.meta?.version||"1.0.0",author:t.meta?.author||"Unknown"},n=t.items.map((r,i)=>{if(!r.id||!r.type)throw new Error(`[OmniPad-Validation] Item at index ${i} is missing "id" or "type".`);return {id:String(r.id),type:String(r.type),parentId:r.parentId?String(r.parentId):void 0,config:r.config||{}}}),a=t.gamepadMappings;return {meta:o,items:n,gamepadMappings:a}}function at(t){let{items:o,gamepadMappings:n}=t,a=new Map,r=(e,s="node")=>m(e)?e:(a.has(e)||a.set(e,v(s)),a.get(e));o.forEach(e=>r(e.id,e.type));let i=[];n&&n.forEach(e=>{let s={};if(e.buttons){s.buttons={};for(let[c,d]of Object.entries(e.buttons))s.buttons[c]=r(d);}e.dpad&&(s.dpad=r(e.dpad)),e.leftStick&&(s.leftStick=r(e.leftStick)),e.rightStick&&(s.rightStick=r(e.rightStick)),i.push(s);});let f=new Map,u=[];o.forEach(e=>{e.parentId?(f.has(e.parentId)||f.set(e.parentId,[]),f.get(e.parentId).push(e)):u.push(e);});let g=(e,s)=>{if(s.has(e.id))throw new Error(`[Omnipad-Core] Circular dependency detected at node: ${e.id}`);s.add(e.id);let c={...e.config};c?.targetStageId&&(c.targetStageId=r(c.targetStageId)),c?.dynamicWidgetId&&(c.dynamicWidgetId=r(c.dynamicWidgetId));let h=(f.get(e.id)||[]).map(b=>g(b,new Set(s)));return {uid:r(e.id),type:e.type,config:c,children:h}},p={};return u.forEach(e=>{p[e.id]=g(e,new Set);}),{roots:p,runtimeGamepadMappings:i}}function st(t,o,n){let a=b.getInstance(),r=[];if(!o||o.length===0)r=a.getAllEntities();else {let e=new Set;o.forEach(s=>{a.getEntitiesByRoot(s).forEach(d=>e.add(d));}),r=Array.from(e);}let i=new Map,f=0,u=e=>m(e)?e:(i.has(e)||i.set(e,`node_${++f}`),i.get(e)),g=r.map(e=>{let s=e.getConfig(),c=e.uid,d={...s};d.targetStageId&&(d.targetStageId=u(d.targetStageId)),d.dynamicWidgetId&&(d.dynamicWidgetId=u(d.dynamicWidgetId));let{id:h,parentId:b,...w}=d;return {id:u(c),type:e.type,parentId:s.parentId?u(s.parentId):void 0,config:w}}),p=[];return n&&n.forEach(e=>{let s={};if(e.buttons){s.buttons={};for(let[c,d]of Object.entries(e.buttons))i.has(d)&&(s.buttons[c]=i.get(d));}e.dpad&&i.has(e.dpad)&&(s.dpad=i.get(e.dpad)),e.leftStick&&i.has(e.leftStick)&&(s.leftStick=i.get(e.leftStick)),e.rightStick&&i.has(e.rightStick)&&(s.rightStick=i.get(e.rightStick)),Object.keys(s).length>0?p.push(s):p.push({});}),{meta:t,items:g,gamepadMappings:Object.keys(p).length>0?p:void 0}}export{Z as createPointerBridge,Q as dispatchKeyboardEvent,_ as dispatchPointerEventAtPos,st as exportProfile,S as focusElement,v as generateUID,y as getDeepActiveElement,E as getDeepElement,m as isGlobalID,it as parseProfileJson,at as parseProfileTrees,X as reclaimFocusAtPos,et as resolveLayoutStyle,I as safeReleaseCapture,C as safeSetCapture,Y as supportsContainerQueries};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@omnipad/core",
3
- "version": "0.4.0",
3
+ "version": "0.4.1",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",