@vincentt-xr/sdk 2.0.0-alpha.7 → 2.0.0-alpha.8
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/GROUNDING.md +1109 -13
- package/dist/{DebuggerUI-BjOMr8q_.js → DebuggerUI-C-ldiozL.js} +1 -1
- package/dist/{DebuggerUI-B6bP6P9r.cjs → DebuggerUI-CWX5EtQv.cjs} +1 -1
- package/dist/FaceMeshRenderer-BEEXZwS6.cjs +158 -0
- package/dist/FaceMeshRenderer-UuH5sTXG.js +1322 -0
- package/dist/FaceRetouch-C7h7x9kd.js +683 -0
- package/dist/FaceRetouch-DqftT26Y.cjs +134 -0
- package/dist/GLTFLoader-C5q63sKO.js +1633 -0
- package/dist/GLTFLoader-Cb_CRwmG.cjs +1 -0
- package/dist/SegmentationOverlay-DQuW3dsc.js +133 -0
- package/dist/SegmentationOverlay-aWVod8Kl.cjs +1 -0
- package/dist/assets/cache.d.ts +99 -0
- package/dist/assets/estimate.d.ts +11 -0
- package/dist/assets/index.d.ts +7 -0
- package/dist/assets/loaders.d.ts +28 -0
- package/dist/assets/react.d.ts +33 -0
- package/dist/calibration/calibration.d.ts +70 -0
- package/dist/calibration/index.d.ts +6 -0
- package/dist/calibration/storage.d.ts +13 -0
- package/dist/calibration/types.d.ts +53 -0
- package/dist/calibration/useXRCalibration.d.ts +46 -0
- package/dist/camera/CameraPermissionGate.d.ts +26 -0
- package/dist/camera/devices.d.ts +26 -0
- package/dist/camera/index.d.ts +8 -0
- package/dist/camera/permission.d.ts +86 -0
- package/dist/camera/useCameraPermission.d.ts +35 -0
- package/dist/capabilities/detect.d.ts +45 -0
- package/dist/capabilities/index.d.ts +5 -0
- package/dist/capabilities/types.d.ts +120 -0
- package/dist/capabilities/useXRCapabilities.d.ts +18 -0
- package/dist/compat/environment.d.ts +5 -0
- package/dist/compat/index.d.ts +4 -0
- package/dist/compat/run.d.ts +18 -0
- package/dist/compat/scenarios.d.ts +10 -0
- package/dist/compat/types.d.ts +101 -0
- package/dist/components/BodyTracker/index.d.ts +9 -0
- package/dist/components/FaceMesh/canonical/CanonicalFaceMeshRenderer.d.ts +33 -3
- package/dist/components/FaceMesh/canonical/parseCanonicalFaceModel.d.ts +12 -0
- package/dist/components/FaceMesh/canonical/shaders.d.ts +1 -1
- package/dist/components/FaceMesh/index.d.ts +1 -1
- package/dist/components/GestureListener/index.d.ts +11 -0
- package/dist/components/HandTracker/index.d.ts +10 -0
- package/dist/components/HolisticTracker/index.d.ts +69 -0
- package/dist/components/HolisticTracker/settings.d.ts +58 -0
- package/dist/components/HolisticTracker/signals.d.ts +49 -0
- package/dist/components/IrisEffect/IrisMaterial.d.ts +73 -0
- package/dist/components/IrisEffect/index.d.ts +51 -0
- package/dist/components/IrisEffect/settings.d.ts +117 -0
- package/dist/components/LipEffect/LipEffect.d.ts +7 -1
- package/dist/components/LipEffect/LipEffectMaterial.d.ts +43 -7
- package/dist/components/LipEffect/LipEffects.d.ts +9 -0
- package/dist/components/LipEffect/defaults.d.ts +27 -4
- package/dist/components/LipEffect/index.d.ts +11 -3
- package/dist/components/LipEffect/settings.d.ts +271 -0
- package/dist/components/LipEffect/types.d.ts +56 -9
- package/dist/components/LipEffect/useLipDesignTextures.d.ts +11 -0
- package/dist/components/LipEffect/uvGuide.d.ts +59 -0
- package/dist/components/PersonCutout/index.d.ts +50 -0
- package/dist/components/PersonCutout/personCutout.d.ts +16 -0
- package/dist/components/ScreenImage/components/ScreenImageBody.d.ts +1 -1
- package/dist/components/ScreenImage/index.d.ts +3 -1
- package/dist/components/ScreenImage/materials/ScreenImageBlendMaterial.d.ts +1 -1
- package/dist/components/ScreenImage/materials/ScreenImageMaskMaterial.d.ts +11 -0
- package/dist/components/ScreenImage/source.d.ts +6 -0
- package/dist/components/ScreenImage/types.d.ts +18 -0
- package/dist/components/SegmentationOverlay/SegmentationOverlay.d.ts +37 -0
- package/dist/components/SegmentationOverlay/SegmentationOverlayMaterial.d.ts +31 -0
- package/dist/components/SegmentationOverlay/index.d.ts +9 -0
- package/dist/components/SegmentationOverlay/maskTexture.d.ts +23 -0
- package/dist/components/SegmentationOverlay/providers.d.ts +72 -0
- package/dist/components/SegmentationOverlay/settings.d.ts +65 -0
- package/dist/components/XRProvider/index.d.ts +16 -2
- package/dist/components/XRViewport/hooks/useViewportExternalFaces.d.ts +1 -1
- package/dist/components/XRViewport/hooks/useViewportMediaSource.d.ts +1 -1
- package/dist/components/XRViewport/hooks/useViewportPipeline.d.ts +1 -1
- package/dist/components/index.d.ts +3 -0
- package/dist/constants/index.d.ts +4 -1
- package/dist/contexts-CO0sd4JQ.cjs +1 -0
- package/dist/{contexts-ByhzppYl.js → contexts-FzlnnMYD.js} +252 -246
- package/dist/coordinates/feed.d.ts +52 -0
- package/dist/coordinates/index.d.ts +5 -0
- package/dist/coordinates/spaces.d.ts +49 -0
- package/dist/coordinates/viewport.d.ts +22 -0
- package/dist/coordinates/world.d.ts +15 -0
- package/dist/debug-ui/gesture-settings/index.d.ts +14 -0
- package/dist/debug-ui/holistic-tracker-settings/index.d.ts +16 -0
- package/dist/debug-ui/index.d.ts +14 -0
- package/dist/debug-ui/iris-effect-settings/index.d.ts +12 -0
- package/dist/debug-ui/lip-effect-settings/index.d.ts +15 -0
- package/dist/debug-ui/media-source.cjs +1 -1
- package/dist/debug-ui/media-source.js +1 -1
- package/dist/debug-ui/product-hotspots/index.d.ts +24 -0
- package/dist/debug-ui/segmentation-overlay-settings/index.d.ts +12 -0
- package/dist/debug-ui/xr-diagnostics/index.d.ts +25 -0
- package/dist/debug-ui.cjs +3 -3
- package/dist/debug-ui.js +2057 -1687
- package/dist/detector-K8aej4MB.js +59 -0
- package/dist/detector-ijypGtse.cjs +1 -0
- package/dist/entries/core.d.ts +18 -1
- package/dist/entries/face-effects.d.ts +11 -3
- package/dist/entries/low-level.d.ts +22 -3
- package/dist/entries/product.d.ts +11 -0
- package/dist/entries/tracking.d.ts +24 -1
- package/dist/face-effects.cjs +155 -1
- package/dist/face-effects.js +1134 -2197
- package/dist/gestures/definitions.d.ts +85 -0
- package/dist/gestures/detector.d.ts +87 -0
- package/dist/gestures/index.d.ts +8 -0
- package/dist/gestures/measures.d.ts +101 -0
- package/dist/gestures/settings.d.ts +49 -0
- package/dist/{getFaceInfo-C4QpCQIY.js → getFaceInfo-BkZfaQs-.js} +5 -5
- package/dist/{getFaceInfo-fA1bFBub.cjs → getFaceInfo-ahPxQFGu.cjs} +1 -1
- package/dist/hooks/selectors.d.ts +68 -1
- package/dist/hooks/useCalibrationFaceTracker.d.ts +1 -1
- package/dist/hooks/useFaceInfo.d.ts +13 -1
- package/dist/hooks/useFaceInfos.d.ts +1 -1
- package/dist/hooks/useGesture.d.ts +32 -0
- package/dist/hooks/useIrisTracking.d.ts +45 -0
- package/dist/hooks/useXRDiagnostics.d.ts +81 -0
- package/dist/hooks/useXRModel.d.ts +7 -0
- package/dist/hooks/useXRSession/facade.d.ts +42 -2
- package/dist/hooks/useXRSession/index.d.ts +2 -2
- package/dist/hooks/useXRSession/reason.d.ts +3 -1
- package/dist/hooks/useXRSession/registry.d.ts +14 -0
- package/dist/hooks/useXRSession/store.d.ts +52 -3
- package/dist/index--RgGzZ6X.cjs +47 -0
- package/dist/{index-VJ0SJwmG.js → index-CHVbH0hz.js} +4 -4
- package/dist/index-CeVkgsag.cjs +1 -0
- package/dist/index-CnGox6Xr.js +3054 -0
- package/dist/{index-ByoNj0QP.js → index-CsUdQ-pn.js} +113 -111
- package/dist/{index-BjmTe9eM.cjs → index-DKBAh6hV.cjs} +1 -1
- package/dist/index-DsZwTfG0.cjs +1 -0
- package/dist/index-Dw6tj2Mi.js +144 -0
- package/dist/index-OCPjOaeP.cjs +1 -0
- package/dist/{index-DXT3WccE.js → index-s9pF4zkG.js} +1065 -1101
- package/dist/internal-BYza1h8_.cjs +1 -0
- package/dist/{internal-Dmk1cTXq.js → internal-vsfNQycj.js} +15 -16
- package/dist/internal.cjs +1 -1
- package/dist/internal.js +2 -2
- package/dist/iris/compute.d.ts +25 -0
- package/dist/iris/index.d.ts +4 -0
- package/dist/iris/lead.d.ts +19 -0
- package/dist/iris/types.d.ts +87 -0
- package/dist/landmarkMask-CbTFzBYG.js +224 -0
- package/dist/landmarkMask-u7es2k4X.cjs +1 -0
- package/dist/low-level.cjs +1 -1
- package/dist/low-level.js +1085 -634
- package/dist/main.cjs +1 -1
- package/dist/main.js +1519 -465
- package/dist/measures-9dQPdw96.js +154 -0
- package/dist/measures-KfJzpvod.cjs +1 -0
- package/dist/models/Base/index.d.ts +49 -0
- package/dist/models/Body/index.d.ts +1 -1
- package/dist/models/Face/index.d.ts +1 -1
- package/dist/models/Hand/GestureTracking.d.ts +1 -1
- package/dist/models/Hand/HandTracking.d.ts +1 -1
- package/dist/models/Holistic/index.d.ts +49 -0
- package/dist/models/Holistic/result.d.ts +68 -0
- package/dist/models/SemanticSegmentation/index.d.ts +31 -0
- package/dist/models/SemanticSegmentation/presets.d.ts +28 -0
- package/dist/models/index.d.ts +2 -0
- package/dist/product/ProductDimensions.d.ts +16 -0
- package/dist/product/ProductHotspot.d.ts +16 -0
- package/dist/product/ProductViewer.d.ts +9 -0
- package/dist/product/details.d.ts +53 -0
- package/dist/product/index.d.ts +14 -0
- package/dist/product/loadModelViewer.d.ts +4 -0
- package/dist/product/types.d.ts +71 -0
- package/dist/product/useProductAr.d.ts +37 -0
- package/dist/product/useProductDetails.d.ts +60 -0
- package/dist/product.cjs +1 -0
- package/dist/product.js +414 -0
- package/dist/providers-C0Dlhh9Z.js +365 -0
- package/dist/providers-YNwkmNeK.cjs +62 -0
- package/dist/quality/XRQualityController.d.ts +25 -0
- package/dist/quality/controller.d.ts +33 -0
- package/dist/quality/index.d.ts +6 -0
- package/dist/quality/types.d.ts +100 -0
- package/dist/quality/useXRQuality.d.ts +28 -0
- package/dist/{renderGroups-KZk6eRiY.js → renderGroups-CN1cGFUo.js} +1 -1
- package/dist/{renderGroups-80H3DpTl.cjs → renderGroups-O4KmaMl9.cjs} +1 -1
- package/dist/renderPasses-Cg-zqmEz.cjs +21 -0
- package/dist/renderPasses-NnKZVfBy.js +1460 -0
- package/dist/scene-object.cjs +1 -1
- package/dist/scene-object.js +2 -2
- package/dist/screenTransform-BenfCtZt.js +44 -0
- package/dist/screenTransform-BiXdpVf0.cjs +1 -0
- package/dist/segmentation-9PhSvc-R.cjs +1 -0
- package/dist/segmentation-CeOTKemr.js +5 -0
- package/dist/segmentation2d/faceMemory.d.ts +28 -0
- package/dist/segmentation2d/faceRegions.d.ts +24 -0
- package/dist/segmentation2d/index.d.ts +9 -0
- package/dist/segmentation2d/maskUv.d.ts +23 -0
- package/dist/segmentation2d/rasterize.d.ts +14 -0
- package/dist/segmentation2d/types.d.ts +46 -0
- package/dist/selectors-C5G1PMYL.js +195 -0
- package/dist/selectors-Du_PsVnW.cjs +1 -0
- package/dist/{session-CpkiK5YA.cjs → session-BBr0yN8h.cjs} +7 -7
- package/dist/{session-DLFN_VII.js → session-Cy0m7l7-.js} +76 -76
- package/dist/settings-DRR7-snV.cjs +1 -0
- package/dist/settings-aQk845NJ.js +73 -0
- package/dist/subjects/index.d.ts +2 -0
- package/dist/subjects/select.d.ts +62 -0
- package/dist/subjects/types.d.ts +55 -0
- package/dist/tracking-config/apply.d.ts +57 -0
- package/dist/tracking-config/index.d.ts +7 -0
- package/dist/tracking-config/resolve.d.ts +25 -0
- package/dist/tracking-config/storage.d.ts +8 -0
- package/dist/tracking-config/types.d.ts +106 -0
- package/dist/tracking-config/useXRTrackingConfig.d.ts +38 -0
- package/dist/tracking.cjs +1 -1
- package/dist/tracking.js +1056 -383
- package/dist/types/compositor.d.ts +21 -0
- package/dist/types/holistic.d.ts +121 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/model.d.ts +22 -2
- package/dist/types/nodes.d.ts +27 -2
- package/dist/types/segmentation.d.ts +19 -0
- package/dist/types/session.d.ts +41 -3
- package/dist/useFaceInfo-Blf7FCu3.js +303 -0
- package/dist/useFaceInfo-C5mO8NQY.cjs +1 -0
- package/dist/useXRCapabilities-B1R2ghy-.cjs +1 -0
- package/dist/useXRCapabilities-C68v__wB.js +30 -0
- package/dist/utils/fns.d.ts +6 -3
- package/dist/utils/integrity.d.ts +4 -1
- package/dist/utils/updateThrottle.d.ts +2 -0
- package/dist/utils/useStableUniforms.d.ts +18 -0
- package/docs/api/adaptive-quality.mdx +104 -0
- package/docs/api/asset-lifecycle.mdx +78 -0
- package/docs/api/camera-permission.mdx +142 -0
- package/docs/api/coordinate-spaces.mdx +165 -0
- package/docs/api/cross-camera.mdx +88 -0
- package/docs/api/diagnostics-calibration.mdx +97 -0
- package/docs/api/face-effects.mdx +6 -0
- package/docs/api/face-mesh.mdx +4 -2
- package/docs/api/gestures.mdx +173 -0
- package/docs/api/holistic-tracker.mdx +159 -0
- package/docs/api/iris-tracking.mdx +242 -0
- package/docs/api/multi-subject.mdx +95 -0
- package/docs/api/person-cutout.mdx +136 -0
- package/docs/api/product-ar.mdx +111 -0
- package/docs/api/product-details.mdx +78 -0
- package/docs/api/screen-space-coordinates.mdx +4 -1
- package/docs/api/segmentation-overlay.mdx +301 -0
- package/docs/api/session-lifecycle.mdx +136 -0
- package/docs/api/trackers.mdx +5 -0
- package/docs/api/tracking-config.mdx +108 -0
- package/docs/docs.json +23 -1
- package/docs/examples/lip-shaders.mdx +224 -0
- package/docs/guides/lip-effect-textures.mdx +292 -0
- package/docs/guides/lip-uv-template.png +0 -0
- package/docs/guides/lip-uv-template.svg +1 -0
- package/package.json +13 -1
- package/dist/FaceMeshRenderer-C5l6VLdO.cjs +0 -155
- package/dist/FaceMeshRenderer-wjAHrJzP.js +0 -1270
- package/dist/FaceRetouch-BkJzoA79.cjs +0 -134
- package/dist/FaceRetouch-DwbKQJAN.js +0 -551
- package/dist/contexts-Dr62It_K.cjs +0 -1
- package/dist/index-9dlAQAhy.js +0 -1462
- package/dist/index-BpEf2BBb.cjs +0 -1
- package/dist/index-CyUUurQT.cjs +0 -1
- package/dist/index-DCiMbxC3.cjs +0 -1
- package/dist/index-DpI-qo5X.cjs +0 -17
- package/dist/index-DyVF4vEW.js +0 -111
- package/dist/internal-Cq-TEQ5Y.cjs +0 -1
- package/dist/renderLayers-lDtL0_43.cjs +0 -1
- package/dist/renderLayers-zrK2pv5O.js +0 -13
- package/dist/renderPasses-BOoBSr8z.cjs +0 -21
- package/dist/renderPasses-BcquyVtu.js +0 -1500
- package/dist/selectors-B8H97CKA.js +0 -59
- package/dist/selectors-CZLKT2Iv.cjs +0 -1
- package/dist/useFaceInfo-BJ8-_MOs.cjs +0 -1
- package/dist/useFaceInfo-Dk426LTu.js +0 -62
- package/dist/useFaceResults-CtetsO9M.js +0 -19
- package/dist/useFaceResults-wBJF3zyp.cjs +0 -1
package/dist/main.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var ae=Object.defineProperty;var ie=(t,e,r)=>e in t?ae(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var C=(t,e,r)=>ie(t,typeof e!="symbol"?e+"":e,r);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const j=require("./index-DCiMbxC3.cjs"),V=require("./contexts-Dr62It_K.cjs"),S=require("./index-DpI-qo5X.cjs"),m=require("react/jsx-runtime"),i=require("react"),P=require("three"),E=require("./renderPasses-BOoBSr8z.cjs"),J=require("@react-three/fiber"),oe=require("./renderLayers-lDtL0_43.cjs"),$=require("./selectors-CZLKT2Iv.cjs"),ce=require("@react-three/drei"),I=require("./index-BjmTe9eM.cjs"),U=require("./FaceMeshRenderer-C5l6VLdO.cjs"),Q=require("./drawNormalizedCrop-B-7zU-Xw.cjs"),ue=require("./index-CyUUurQT.cjs");function le(t){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const r in t)if(r!=="default"){const s=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(e,r,s.get?s:{enumerable:!0,get:()=>t[r]})}}return e.default=t,Object.freeze(e)}const de=le(P),O=(t,e,r,s)=>P.MathUtils.damp(t,e,Math.max(0,r),Math.max(0,s)),me=(t,e,r,s,n=new P.Vector2)=>n.set(O(t.x,e.x,r,s),O(t.y,e.y,r,s)),pe=(t,e,r,s,n=new P.Vector3)=>n.set(O(t.x,e.x,r,s),O(t.y,e.y,r,s),O(t.z,e.z,r,s)),he="rgba(20,40,110,0.88)",Se=24,Ee=512;function fe({color:t=he,borderColor:e,borderWidth:r=0,borderRadius:s=Se,resolution:n=Ee,aspect:c=1,opacity:o=1,name:u,overlay:a=!0,position:l,rotation:M,scale:p,visible:h}){const T=i.useRef(null),d=i.useRef(null),_=i.useMemo(()=>Te({width:Math.round(n*Math.max(c,.05)),height:Math.round(n),color:t,borderColor:e,borderWidth:r,borderRadius:s}),[t,e,r,s,n,c]);i.useEffect(()=>()=>{_.dispose()},[_]);const y=i.useRef(null),R=i.useRef(o);return R.current!==o&&(R.current=o,y.current=null,d.current&&(d.current.opacity=o)),i.useEffect(()=>{const L=T.current;if(L)return L.userData.setOpacity=D=>{y.current=D,d.current&&(d.current.opacity=D)},()=>{delete L.userData.setOpacity}},[]),m.jsxs("mesh",{ref:T,name:u,position:l,rotation:M,scale:p,visible:h,children:[m.jsx("planeGeometry",{args:[1,1]}),m.jsx("meshBasicMaterial",{ref:d,map:_,transparent:!0,opacity:o,depthTest:!a,depthWrite:!a})]})}function Te(t){const{width:e,height:r,color:s,borderColor:n,borderWidth:c,borderRadius:o}=t,u=typeof OffscreenCanvas<"u"?new OffscreenCanvas(e,r):(()=>{const p=document.createElement("canvas");return p.width=e,p.height=r,p})(),a=u.getContext("2d");a.clearRect(0,0,e,r);const l=Math.min(o,Math.min(e,r)/2);a.beginPath(),a.moveTo(l,0),a.lineTo(e-l,0),a.quadraticCurveTo(e,0,e,l),a.lineTo(e,r-l),a.quadraticCurveTo(e,r,e-l,r),a.lineTo(l,r),a.quadraticCurveTo(0,r,0,r-l),a.lineTo(0,l),a.quadraticCurveTo(0,0,l,0),a.closePath(),a.fillStyle=s,a.fill(),n&&c>0&&(a.lineWidth=c,a.strokeStyle=n,a.stroke());const M=new de.CanvasTexture(u);return M.needsUpdate=!0,M}const Re=({segmentationMask:t,segmentation:e,invert:r=!1,customBackground:s,renderOrder:n=oe.RENDER_LAYERS.BACKGROUND})=>{const{camera:c,size:o}=J.useThree(),u=$.useXRCameraTexture(),a=$.useXRModelNode(j.XRModel.BACKGROUND_SEGMENTATION),l=e?a==null?void 0:a.backgroundSegmentationMask:void 0,M=i.useRef(!1);i.useEffect(()=>{if(!e){M.current=!1;return}a===null&&!M.current&&(console.warn(`[VideoBackground] segmentation="${e}" set but no matching <Segmentation> component is mounted; rendering unmasked.`),M.current=!0)},[e,a]);const p=e?l:t,h=i.useMemo(()=>{if(!c.isPerspectiveCamera)return[10,10];const T=c,y=(T.position.z||5)- -1,R=T.fov*Math.PI/180,L=2*Math.tan(R/2)*y;return[L*(o.width/o.height),L]},[c,o]);return u?m.jsx("group",{position:[0,0,-1],children:r?m.jsxs(m.Fragment,{children:[m.jsxs("mesh",{position:[0,0,-.01],renderOrder:n-1,children:[m.jsx("planeGeometry",{args:h}),m.jsx("meshBasicMaterial",{map:u,depthTest:!1,depthWrite:!1,toneMapped:!1,side:P.DoubleSide})]}),s&&p&&m.jsxs("mesh",{position:[0,0,0],renderOrder:n,children:[m.jsx("planeGeometry",{args:h}),m.jsx("meshBasicMaterial",{map:typeof s=="string"?void 0:s,color:typeof s=="string"?s:void 0,alphaMap:p,transparent:!1,alphaTest:.5,depthTest:!1,depthWrite:!1,toneMapped:!1,side:P.DoubleSide},"inverted-mask")]})]}):m.jsxs(m.Fragment,{children:[s&&p&&m.jsxs("mesh",{position:[0,0,-.01],renderOrder:n-1,children:[m.jsx("planeGeometry",{args:h}),m.jsx("meshBasicMaterial",{map:typeof s=="string"?void 0:s,color:typeof s=="string"?s:void 0,depthTest:!1,depthWrite:!1,toneMapped:!1,side:P.DoubleSide})]}),m.jsxs("mesh",{position:[0,0,0],renderOrder:n,children:[m.jsx("planeGeometry",{args:h}),m.jsx("meshBasicMaterial",{map:u,alphaMap:p,transparent:!1,alphaTest:p?.5:void 0,depthTest:!1,depthWrite:!1,toneMapped:!1,side:P.DoubleSide},p?"with-mask":"no-mask")]})]})}):null},W=9,H=16,Me=({children:t})=>{const[e,r]=i.useState({width:0,height:0});return i.useEffect(()=>{const s=()=>{const n=document.documentElement.clientWidth,c=document.documentElement.clientHeight,o=n/c,u=W/H;let a,l;o>u?(l=c,a=l*W/H):(a=n,l=a*H/W),r({width:a,height:l})};return s(),window.addEventListener("resize",s),()=>window.removeEventListener("resize",s)},[]),m.jsx("div",{style:{width:"100vw",height:`${window.innerHeight}px`,display:"flex",alignItems:"center",justifyContent:"center",backgroundColor:"#0d0d0d"},children:m.jsx("div",{style:{width:e.width,height:e.height,position:"relative"},children:t})})},_e=({size:t=.25,...e})=>m.jsx("axesHelper",{args:[t],...e}),Ae={left:-1,right:1,top:1,bottom:-1},xe=(t,e,r)=>{const s=t%e,n=Math.floor(t/e);return{x:s/e,y:(r-1-n)/r}},ge=({sheet:t,contentAspect:e,renderOrder:r,name:s})=>{const n=ce.useTexture(t.url),c=i.useRef(0),o=i.useRef(-1),u=I.useScreenRectAspect(),[a,l]=e!=null?S.computeContainScale(u,e):[1,1];return J.useFrame((M,p)=>{n.wrapS=P.RepeatWrapping,n.wrapT=P.RepeatWrapping,n.magFilter=P.LinearFilter,n.minFilter=P.LinearFilter,n.generateMipmaps=!1,n.repeat.set(1/t.cols,1/t.rows),c.current+=p;const h=Math.floor(c.current*t.fps)%t.frames;if(h===o.current)return;o.current=h;const{x:T,y:d}=xe(h,t.cols,t.rows);n.offset.set(T,d)}),m.jsxs("mesh",{name:s,renderOrder:r,scale:[a,l,1],children:[m.jsx("planeGeometry",{args:[1,1]}),m.jsx("meshBasicMaterial",{map:n,transparent:!0,toneMapped:!1,depthWrite:!1})]})},ye=({sheet:t,anchors:e=Ae,contentAspect:r,renderOrder:s=10,name:n="spriteAnimation"})=>m.jsx(i.Suspense,{fallback:null,children:m.jsx(V.ScreenTransform,{anchors:e,children:m.jsx(ge,{sheet:t,contentAspect:r,renderOrder:s,name:n})})}),F=t=>{switch(t){case"start":return"starting";case"started":case"resume":return"recording";case"pause":return"paused";case"stop":return"stopping";case"complete":return"completed";case"fail":return"error";case"clear":return"idle"}},Ce=["video/mp4","video/webm;codecs=vp9","video/webm;codecs=vp8","video/webm"];function Pe(t={}){const{audio:e=!1,mimeType:r,bitsPerSecond:s,onData:n,onStop:c,onRecordingStart:o,onRecordingPause:u,onRecordingResume:a,onRecordingStop:l,onRecordingComplete:M,onError:p,passThroughStream:h}=t,T=i.useRef(null),d=i.useRef(null),_=i.useRef([]),[y,R]=i.useState("idle"),[L,D]=i.useState(null),[X,x]=i.useState(null),b=i.useCallback(()=>{var g;const f=[r,...Ce].filter(Boolean);for(const A of f)if((g=MediaRecorder.isTypeSupported)!=null&&g.call(MediaRecorder,A))return A},[r]),G=i.useCallback(async f=>{const g=new MediaStream;if(f.getTracks().forEach(A=>g.addTrack(A)),e){let A;if(e instanceof MediaStream)A=e;else{const w=typeof e=="object"?{audio:e}:{audio:!0,video:!1};A=await navigator.mediaDevices.getUserMedia(w)}A.getAudioTracks().forEach(w=>g.addTrack(w))}if(!g.getTracks().length)throw new Error("No tracks available in combined stream.");return d.current=g,g},[e]),te=i.useCallback(async(f,g)=>{R(F("start")),x(null),D(null);try{let A;if(h)A=h,d.current=A;else{if(!f)throw new Error("start(stream) requires a MediaStream.");A=await G(f)}const w=b(),q={};w&&(q.mimeType=w),s&&(q.bitsPerSecond=s);const k=new MediaRecorder(A,q);k.ondataavailable=v=>{var Y;((Y=v.data)==null?void 0:Y.size)>0&&(_.current.push(v.data),n==null||n(v.data))},k.onstop=()=>{const v=new Blob(_.current,{type:w??"video/webm"});D(v),c==null||c(v),M==null||M(v),_.current=[],R(F("complete"))},T.current=k,k.start(g),R(F("started")),o==null||o()}catch(A){const w=A instanceof Error?A:new Error(String(A));console.error("start(stream) failed",w),x(w),R(F("fail")),p==null||p(w)}},[G,b,s,n,c,M,o,p,h]),re=i.useCallback(()=>{const f=T.current;!f||f.state==="inactive"||(R(F("stop")),f.stop(),l==null||l())},[l]),se=i.useCallback(()=>{const f=T.current;(f==null?void 0:f.state)==="recording"&&(f.pause(),R(F("pause")),u==null||u())},[u]),ne=i.useCallback(()=>{const f=T.current;(f==null?void 0:f.state)==="paused"&&(f.resume(),R(F("resume")),a==null||a())},[a]),B=i.useCallback(()=>{var f;try{T.current&&(T.current.onstop=null,T.current.state!=="inactive"&&T.current.stop()),T.current=null,(f=d.current)==null||f.getTracks().forEach(g=>g.stop()),d.current=null,D(null),R(F("clear")),_.current=[],x(null)}catch(g){console.error("clear failed",g)}},[]);return i.useEffect(()=>()=>B(),[]),{status:y,start:te,stop:re,pause:se,resume:ne,clear:B,isRecording:y==="recording"||y==="paused",isPaused:y==="paused",recordedBlob:L,error:X,getActiveStream:()=>d.current}}const Ne=async(t,e={})=>{var r,s,n;(r=e.onCaptureStart)==null||r.call(e),await Promise.resolve();try{const c=t();return(s=e.onCaptureComplete)==null||s.call(e,c),c}catch(c){const o=c instanceof Error?c:new Error(String(c));throw(n=e.onError)==null||n.call(e,o),o}},Le=(t={})=>{const{session:e}=j.useXRContext(),{captureFrame:r=e.captureFrame,onCaptureStart:s,onCaptureComplete:n,onError:c}=t,[o,u]=i.useState("idle"),[a,l]=i.useState(null),[M,p]=i.useState(null),h=i.useCallback(async()=>{u("capturing"),l(null),p(null);try{const d=await Ne(r,{onCaptureStart:s,onCaptureComplete:n,onError:c});return l(d),u("completed"),d}catch(d){const _=d instanceof Error?d:new Error(String(d));return p(_),u("error"),null}},[r,s,n,c]),T=i.useCallback(()=>{u("idle"),l(null),p(null)},[]);return{status:o,capturePhoto:h,clear:T,dataUrl:a,error:M}},we=(t,e)=>{const r=t.split(","),s=r[0].match(/:(.*?);/),n=s?s[1]:"application/octet-stream",c=atob(r[r.length-1]);let o=c.length;const u=new Uint8Array(o);for(;o--;)u[o]=c.charCodeAt(o);return new File([u],e,{type:n})},De=4,be=50,Fe=5e3,z=t=>Math.min(1,Math.max(0,t)),Z=t=>new Promise(e=>{if(t.readyState>=4){e();return}let r=!1;const s=()=>{r||(r=!0,e())};t.addEventListener("canplaythrough",s,{once:!0}),t.addEventListener("error",s,{once:!0}),setTimeout(s,Fe)}),K=(t,e)=>{const r=document.createElement("audio");return r.src=t,r.loop=e,r.preload="auto",r.setAttribute("playsinline",""),r.setAttribute("webkit-playsinline",""),r.load(),r},Ue=t=>{t.muted=!0,t.play().then(()=>{t.pause(),t.currentTime=0,t.muted=!1}).catch(()=>{t.muted=!1})};class ee{constructor(e={}){C(this,"sfxPoolSize");C(this,"coalesceMs");C(this,"muted",!0);C(this,"listeners",new Set);C(this,"music",null);C(this,"musicUrl",null);C(this,"musicReady",null);C(this,"musicWanted",null);C(this,"pools",new Map);C(this,"lastPlayed",new Map);C(this,"ready",new Map);this.sfxPoolSize=e.sfxPoolSize??De,this.coalesceMs=e.coalesceMs??be}prefetchMusic(e,r=.4){const s=z(r);if(this.musicWanted={url:e,volume:s},this.musicUrl===e&&this.musicReady)return this.music&&(this.music.volume=s),this.musicReady;this.music&&(this.music.pause(),this.music.currentTime=0,this.music.removeAttribute("src"),this.music.load()),this.music=K(e,!0),this.musicUrl=e,this.music.volume=s;const n=Z(this.music);return this.musicReady=n,n}registerSound(e,r=1){const s=this.ready.get(e);if(s)return s;const n=z(r),c=[];for(let u=0;u<this.sfxPoolSize;u+=1){const a=K(e,!1);a.volume=n,a.addEventListener("ended",()=>{a.currentTime=0}),c.push(a)}this.pools.set(e,{els:c,next:0,volume:n});const o=Z(c[0]);return this.ready.set(e,o),o}onMuteChange(e){return this.listeners.add(e),e(this.muted),()=>this.listeners.delete(e)}isMuted(){return this.muted}setMuted(e){e!==this.muted&&(this.muted=e,this.muted||this.pools.forEach(r=>r.els.forEach(Ue)),this.applyMusic(),this.listeners.forEach(r=>r(this.muted)))}toggleMuted(){this.setMuted(!this.muted)}playOneShot(e,r){if(this.muted)return;const s=this.pools.get(e);if(!s)return;const n=performance.now();if(n-(this.lastPlayed.get(e)??-1/0)<this.coalesceMs)return;this.lastPlayed.set(e,n);const c=s.els.length;let o;for(let u=0;u<c;u+=1){const a=s.els[(s.next+u)%c];if(a.paused){o=a,s.next=(s.next+u+1)%c;break}}o||(o=s.els[s.next],s.next=(s.next+1)%c),o.muted=!1,o.volume=z(r??s.volume),o.currentTime!==0&&(o.currentTime=0),o.play().catch(()=>{})}startMusic(e,r=.4){const s=z(r);this.musicUrl!==e&&this.prefetchMusic(e,s),this.musicWanted={url:e,volume:s},this.applyMusic()}stopMusic(){this.musicWanted=null,this.music&&(this.music.pause(),this.music.currentTime=0)}applyMusic(){!this.music||!this.musicWanted||(this.music.volume=this.musicWanted.volume,!this.muted&&this.music.paused&&this.music.play().catch(()=>{}),this.muted&&!this.music.paused&&this.music.pause())}}const ve=(t,e,r)=>t==="infinite"||t==="loop"&&e<Math.max(1,Math.floor(r))?"replay":"ended",Oe=(t,e,r)=>t&&e!==r,Ie=t=>Math.min(100,Math.max(0,t))/100,Ge=i.forwardRef(function({src:e,playMode:r="once",loopCount:s=1,autoplay:n=!1,muted:c=!1,volume:o=100,preload:u="auto",onReady:a,onPlay:l,onPause:M,onEnded:p,onError:h},T){const d=i.useRef(null),_=i.useRef(0),y=i.useRef(null),R=i.useCallback(async()=>{const x=d.current;if(x)try{await x.play()}catch(b){const G=b instanceof Error?b:new Error(String(b));throw h==null||h(G),G}},[h]),L=i.useCallback(()=>{var x;return(x=d.current)==null?void 0:x.pause()},[]),D=i.useCallback(()=>{const x=d.current;x&&(x.pause(),x.currentTime=0,_.current=0)},[]);i.useImperativeHandle(T,()=>({play:R,pause:L,stop:D,get current(){return d.current}}),[L,R,D]),i.useEffect(()=>{_.current=0,y.current=null},[e]),i.useEffect(()=>{d.current&&(d.current.volume=Ie(o))},[o]),i.useEffect(()=>{Oe(n,y.current,e)&&(y.current=e,R().catch(()=>{}))},[n,e]);const X=i.useCallback(()=>{_.current+=1;const x=Math.max(1,Math.floor(s));if(ve(r,_.current,x)==="replay"){const b=d.current;b&&(b.currentTime=0,R().catch(()=>{}));return}_.current=0,p==null||p()},[s,p,R,r]);return m.jsx("audio",{ref:d,src:e,preload:u,autoPlay:!1,muted:c,loop:!1,playsInline:!0,style:{display:"none"},onCanPlayThrough:a,onPlay:l,onPause:M,onEnded:X,onError:()=>h==null?void 0:h(new Error(`Unable to load audio: ${e}`))})}),N=new ee,je=(t,e)=>N.prefetchMusic(t,e),ke=(t,e)=>N.registerSound(t,e),ze=(t,e)=>N.startMusic(t,e),Xe=()=>N.stopMusic(),qe=(t,e)=>N.playOneShot(t,e),We=t=>N.setMuted(t),He=()=>N.toggleMuted(),Ve=()=>N.isMuted(),Be=t=>N.onMuteChange(t),Ye=()=>{const[t,e]=i.useState(N.isMuted());return i.useEffect(()=>N.onMuteChange(e),[]),t};exports.XRMediaSource=j.XRMediaSource;exports.XRModel=j.XRModel;exports.XRProvider=j.XRProvider;exports.ScreenTransform=V.ScreenTransform;exports.XRScene=V.XRScene;exports.LightObject=S.LightObject;exports.LookAt=S.LookAt;exports.RenderGroupLayer=S.RenderGroupLayer;exports.SceneObjectRenderer=S.SceneObjectRenderer;exports.ScreenImage=S.ScreenImage;exports.ScreenSpaceUI=S.ScreenSpaceUI;exports.ScreenText=S.ScreenText;exports.SequentialRenderPasses=S.SequentialRenderPasses;exports.TextLabel=S.TextLabel;exports.clientToScreenPixels=S.clientToScreenPixels;exports.computeContainScale=S.computeContainScale;exports.mediaToScreenPixels=S.mediaToScreenPixels;exports.normalizedToScreenPixels=S.normalizedToScreenPixels;exports.screenPixelsToClient=S.screenPixelsToClient;exports.screenPixelsToMedia=S.screenPixelsToMedia;exports.screenPixelsToNormalized=S.screenPixelsToNormalized;exports.screenPixelsToScreenSpace=S.screenPixelsToScreenSpace;exports.screenPixelsToUnits=S.screenPixelsToUnits;exports.screenPointToRay=S.screenPointToRay;exports.screenSpaceToScreenPixels=S.screenSpaceToScreenPixels;exports.screenUnitsToPixels=S.screenUnitsToPixels;exports.trackerPointToScreenPixels=S.trackerPointToScreenPixels;exports.worldToScreenPixels=S.worldToScreenPixels;exports.DEFAULT_PIXEL_SNAP_INCREMENT=E.DEFAULT_PIXEL_SNAP_INCREMENT;exports.DEFAULT_REFERENCE_PIXELS_PER_UNIT=E.DEFAULT_REFERENCE_PIXELS_PER_UNIT;exports.DEFAULT_SCREEN_GLASS=E.DEFAULT_SCREEN_GLASS;exports.DEFAULT_SCREEN_IMAGE_SCENE_SETTINGS=E.DEFAULT_SCREEN_IMAGE_SCENE_SETTINGS;exports.DEFAULT_SCREEN_IMAGE_SETTINGS=E.DEFAULT_SCREEN_IMAGE_SETTINGS;exports.DEFAULT_SCREEN_SHAPE_SETTINGS=E.DEFAULT_SCREEN_SHAPE_SETTINGS;exports.DEFAULT_SCREEN_TEXT_SCENE_SETTINGS=E.DEFAULT_SCREEN_TEXT_SCENE_SETTINGS;exports.DEFAULT_SCREEN_TEXT_SHADOW_LAYER=E.DEFAULT_SCREEN_TEXT_SHADOW_LAYER;exports.DEFAULT_SCREEN_TRANSFORM_2D=E.DEFAULT_SCREEN_TRANSFORM_2D;exports.DEFAULT_SCREEN_TRANSFORM_ROOT=E.DEFAULT_SCREEN_TRANSFORM_ROOT;exports.EXTERNAL_BACKGROUND_RENDER_LAYER=E.EXTERNAL_BACKGROUND_RENDER_LAYER;exports.MAX_RENDER_GROUP_PASSES=E.MAX_RENDER_GROUP_PASSES;exports.PinToMesh=E.PinToMesh;exports.ScreenGlassMaterial=E.ScreenGlassMaterial;exports.ScreenShape=E.ScreenShape;exports.getRenderGroupLayer=E.getRenderGroupLayer;exports.mapScreenImageSettingsToProps=E.mapScreenImageSettingsToProps;exports.mapScreenTextInnerShadowToProps=E.mapScreenTextInnerShadowToProps;exports.mapScreenTextSettingsToProps=E.mapScreenTextSettingsToProps;exports.mergeScreenShapeSettings=E.mergeScreenShapeSettings;exports.mergeScreenTransform2D=E.mergeScreenTransform2D;exports.normalizeScreenGlass=E.normalizeScreenGlass;exports.renderSequentialPasses=E.renderSequentialPasses;exports.resolveScreenTransform2D=E.resolveScreenTransform2D;exports.DEFAULT_MESH_RENDERER=I.DEFAULT_MESH_RENDERER;exports.DEFAULT_MESH_RENDERER_RENDER_STATE=I.DEFAULT_MESH_RENDERER_RENDER_STATE;exports.MeshRenderer=I.MeshRenderer;exports.normalizeMeshRendererRenderState=I.normalizeMeshRendererRenderState;exports.useScreenRectAspect=I.useScreenRectAspect;exports.DEFAULT_MATERIAL_FILL=U.DEFAULT_MATERIAL_FILL;exports.DEFAULT_SCREEN_GRADIENT=U.DEFAULT_SCREEN_GRADIENT;exports.DEFAULT_TRANSFORM_3D=U.DEFAULT_TRANSFORM_3D;exports.MaterialFill=U.MaterialFill;exports.ScreenGradientMaterial=U.ScreenGradientMaterial;exports.Transform3D=U.Transform3D;exports.createTwoStopGradient=U.createTwoStopGradient;exports.normalizeScreenGradient=U.normalizeScreenGradient;exports.drawNormalizedCrop=Q.drawNormalizedCrop;exports.resolveNormalizedCrop=Q.resolveNormalizedCrop;exports.MeshMaterial=ue.MeshMaterial;exports.AspectRatioContainer=Me;exports.AudioEngine=ee;exports.AudioPlayer=Ge;exports.Axes=_e;exports.Panel=fe;exports.SpriteAnimation=ye;exports.VideoBackground=Re;exports.audio=N;exports.dataURLtoFile=we;exports.isMuted=Ve;exports.onMuteChange=Be;exports.playOneShot=qe;exports.prefetchMusic=je;exports.registerSound=ke;exports.setMuted=We;exports.smoothNumber=O;exports.smoothVector2=me;exports.smoothVector3=pe;exports.startMusic=ze;exports.stopMusic=Xe;exports.toggleMuted=He;exports.useFrameCapture=Le;exports.useMediaRecorder=Pe;exports.useMuted=Ye;
|
|
1
|
+
"use strict";var it=Object.defineProperty;var ct=(s,e,t)=>e in s?it(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var b=(s,e,t)=>ct(s,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("./index-CeVkgsag.cjs"),he=require("./contexts-CO0sd4JQ.cjs"),w=require("./index--RgGzZ6X.cjs"),E=require("react/jsx-runtime"),l=require("react"),U=require("three"),v=require("./renderPasses-Cg-zqmEz.cjs"),ge=require("@react-three/fiber"),$=require("./selectors-Du_PsVnW.cjs"),Le=require("./index-OCPjOaeP.cjs"),lt=require("@react-three/drei"),Q=require("./index-DKBAh6hV.cjs"),z=require("./FaceMeshRenderer-BEEXZwS6.cjs"),Ie=require("./drawNormalizedCrop-B-7zU-Xw.cjs"),Y=require("./screenTransform-BiXdpVf0.cjs"),C=require("./useFaceInfo-C5mO8NQY.cjs"),ut=require("./useXRCapabilities-B1R2ghy-.cjs"),dt=require("./GLTFLoader-Cb_CRwmG.cjs"),mt=require("./segmentation-9PhSvc-R.cjs");function ft(s){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(s){for(const t in s)if(t!=="default"){const r=Object.getOwnPropertyDescriptor(s,t);Object.defineProperty(e,t,r.get?r:{enumerable:!0,get:()=>s[t]})}}return e.default=s,Object.freeze(e)}const B=ft(U),V=(s,e,t,r)=>U.MathUtils.damp(s,e,Math.max(0,t),Math.max(0,r)),pt=(s,e,t,r,a=new U.Vector2)=>a.set(V(s.x,e.x,t,r),V(s.y,e.y,t,r)),ht=(s,e,t,r,a=new U.Vector3)=>a.set(V(s.x,e.x,t,r),V(s.y,e.y,t,r),V(s.z,e.z,t,r)),gt="rgba(20,40,110,0.88)",St=24,Et=512;function yt({color:s=gt,borderColor:e,borderWidth:t=0,borderRadius:r=St,resolution:a=Et,aspect:n=1,opacity:o=1,name:i,overlay:c=!0,position:d,rotation:S,scale:m,visible:p}){const f=l.useRef(null),h=l.useRef(null),T=l.useMemo(()=>Tt({width:Math.round(a*Math.max(n,.05)),height:Math.round(a),color:s,borderColor:e,borderWidth:t,borderRadius:r}),[s,e,t,r,a,n]);l.useEffect(()=>()=>{T.dispose()},[T]);const A=l.useRef(null),g=l.useRef(o);return g.current!==o&&(g.current=o,A.current=null,h.current&&(h.current.opacity=o)),l.useEffect(()=>{const y=f.current;if(y)return y.userData.setOpacity=_=>{A.current=_,h.current&&(h.current.opacity=_)},()=>{delete y.userData.setOpacity}},[]),E.jsxs("mesh",{ref:f,name:i,position:d,rotation:S,scale:m,visible:p,children:[E.jsx("planeGeometry",{args:[1,1]}),E.jsx("meshBasicMaterial",{ref:h,map:T,transparent:!0,opacity:o,depthTest:!c,depthWrite:!c})]})}function Tt(s){const{width:e,height:t,color:r,borderColor:a,borderWidth:n,borderRadius:o}=s,i=typeof OffscreenCanvas<"u"?new OffscreenCanvas(e,t):(()=>{const m=document.createElement("canvas");return m.width=e,m.height=t,m})(),c=i.getContext("2d");c.clearRect(0,0,e,t);const d=Math.min(o,Math.min(e,t)/2);c.beginPath(),c.moveTo(d,0),c.lineTo(e-d,0),c.quadraticCurveTo(e,0,e,d),c.lineTo(e,t-d),c.quadraticCurveTo(e,t,e-d,t),c.lineTo(d,t),c.quadraticCurveTo(0,t,0,t-d),c.lineTo(0,d),c.quadraticCurveTo(0,0,d,0),c.closePath(),c.fillStyle=r,c.fill(),a&&n>0&&(c.lineWidth=n,c.strokeStyle=a,c.stroke());const S=new B.CanvasTexture(i);return S.needsUpdate=!0,S}const Mt=({segmentationMask:s,segmentation:e,invert:t=!1,customBackground:r,renderOrder:a=$.RENDER_LAYERS.BACKGROUND})=>{const{camera:n,size:o}=ge.useThree(),i=$.useXRCameraTexture(),c=$.useXRModelNode(u.XRModel.BACKGROUND_SEGMENTATION),d=e?c==null?void 0:c.backgroundSegmentationMask:void 0,S=l.useRef(!1);l.useEffect(()=>{if(!e){S.current=!1;return}c===null&&!S.current&&(console.warn(`[VideoBackground] segmentation="${e}" set but no matching <Segmentation> component is mounted; rendering unmasked.`),S.current=!0)},[e,c]);const m=e?d:s,p=l.useMemo(()=>{if(!n.isPerspectiveCamera)return[10,10];const f=n,A=(f.position.z||5)- -1,g=f.fov*Math.PI/180,y=2*Math.tan(g/2)*A;return[y*(o.width/o.height),y]},[n,o]);return i?E.jsx("group",{position:[0,0,-1],children:t?E.jsxs(E.Fragment,{children:[E.jsxs("mesh",{position:[0,0,-.01],renderOrder:a-1,children:[E.jsx("planeGeometry",{args:p}),E.jsx("meshBasicMaterial",{map:i,depthTest:!1,depthWrite:!1,toneMapped:!1,side:U.DoubleSide})]}),r&&m&&E.jsxs("mesh",{position:[0,0,0],renderOrder:a,children:[E.jsx("planeGeometry",{args:p}),E.jsx("meshBasicMaterial",{map:typeof r=="string"?void 0:r,color:typeof r=="string"?r:void 0,alphaMap:m,transparent:!1,alphaTest:.5,depthTest:!1,depthWrite:!1,toneMapped:!1,side:U.DoubleSide},"inverted-mask")]})]}):E.jsxs(E.Fragment,{children:[r&&m&&E.jsxs("mesh",{position:[0,0,-.01],renderOrder:a-1,children:[E.jsx("planeGeometry",{args:p}),E.jsx("meshBasicMaterial",{map:typeof r=="string"?void 0:r,color:typeof r=="string"?r:void 0,depthTest:!1,depthWrite:!1,toneMapped:!1,side:U.DoubleSide})]}),E.jsxs("mesh",{position:[0,0,0],renderOrder:a,children:[E.jsx("planeGeometry",{args:p}),E.jsx("meshBasicMaterial",{map:i,alphaMap:m,transparent:!1,alphaTest:m?.5:void 0,depthTest:!1,depthWrite:!1,toneMapped:!1,side:U.DoubleSide},m?"with-mask":"no-mask")]})]})}):null},Oe={left:-1,right:1,top:1,bottom:-1},Ge=({ready:s,error:e,hasMask:t})=>e?"error":s&&t?"ready":"loading",qe=(s,e)=>s==="ready"||e==="camera",Xe=(s=!0)=>{const{ready:e,error:t}=Le.useXRModel(u.XRModel.BACKGROUND_SEGMENTATION,{type:"portrait"},s),r=$.useXRModelNode(u.XRModel.BACKGROUND_SEGMENTATION),[a,n]=l.useState(null);return ge.useFrame(()=>{const o=(r==null?void 0:r.backgroundSegmentationMask)??null;o!==a&&n(o)}),{texture:a,status:Ge({ready:e,error:t,hasMask:!!a}),error:t}},Rt=({invert:s=!1,fallback:e="camera",active:t=!0,onStatusChange:r,fit:a="cover",anchors:n=Oe,renderOrder:o=100,visible:i=!0,maskFeather:c=4,maskErode:d=.7,...S})=>{const m=$.useXRCameraTexture(),{texture:p,status:f,error:h}=Xe(t);if(l.useEffect(()=>{r==null||r(f,h)},[f,h,r]),!m)return null;const T=f==="ready"&&p;return!T&&!qe(f,e)?null:E.jsx(w.ScreenImage,{...S,source:{kind:"texture",texture:m},fit:a,anchors:n,renderOrder:o,visible:i,maskTexture:T?p:null,maskChannel:"green",maskInvert:s,maskFeather:c,maskErode:d})},le=9,ue=16,bt=({children:s})=>{const[e,t]=l.useState({width:0,height:0});return l.useEffect(()=>{const r=()=>{const a=document.documentElement.clientWidth,n=document.documentElement.clientHeight,o=a/n,i=le/ue;let c,d;o>i?(d=n,c=d*le/ue):(c=a,d=c*ue/le),t({width:c,height:d})};return r(),window.addEventListener("resize",r),()=>window.removeEventListener("resize",r)},[]),E.jsx("div",{style:{width:"100vw",height:`${window.innerHeight}px`,display:"flex",alignItems:"center",justifyContent:"center",backgroundColor:"#0d0d0d"},children:E.jsx("div",{style:{width:e.width,height:e.height,position:"relative"},children:s})})},At=({size:s=.25,...e})=>E.jsx("axesHelper",{args:[s],...e}),Ct={left:-1,right:1,top:1,bottom:-1},_t=(s,e,t)=>{const r=s%e,a=Math.floor(s/e);return{x:r/e,y:(t-1-a)/t}},Ft=({sheet:s,contentAspect:e,renderOrder:t,name:r})=>{const a=lt.useTexture(s.url),n=l.useRef(0),o=l.useRef(-1),i=Q.useScreenRectAspect(),[c,d]=e!=null?w.computeContainScale(i,e):[1,1];return ge.useFrame((S,m)=>{a.wrapS=U.RepeatWrapping,a.wrapT=U.RepeatWrapping,a.magFilter=U.LinearFilter,a.minFilter=U.LinearFilter,a.generateMipmaps=!1,a.repeat.set(1/s.cols,1/s.rows),n.current+=m;const p=Math.floor(n.current*s.fps)%s.frames;if(p===o.current)return;o.current=p;const{x:f,y:h}=_t(p,s.cols,s.rows);a.offset.set(f,h)}),E.jsxs("mesh",{name:r,renderOrder:t,scale:[c,d,1],children:[E.jsx("planeGeometry",{args:[1,1]}),E.jsx("meshBasicMaterial",{map:a,transparent:!0,toneMapped:!1,depthWrite:!1})]})},vt=({sheet:s,anchors:e=Ct,contentAspect:t,renderOrder:r=10,name:a="spriteAnimation"})=>E.jsx(l.Suspense,{fallback:null,children:E.jsx(he.ScreenTransform,{anchors:e,children:E.jsx(Ft,{sheet:s,contentAspect:t,renderOrder:r,name:a})})}),X=s=>{switch(s){case"start":return"starting";case"started":case"resume":return"recording";case"pause":return"paused";case"stop":return"stopping";case"complete":return"completed";case"fail":return"error";case"clear":return"idle"}},kt=["video/mp4","video/webm;codecs=vp9","video/webm;codecs=vp8","video/webm"];function xt(s={}){const{audio:e=!1,mimeType:t,bitsPerSecond:r,onData:a,onStop:n,onRecordingStart:o,onRecordingPause:i,onRecordingResume:c,onRecordingStop:d,onRecordingComplete:S,onError:m,passThroughStream:p}=s,f=l.useRef(null),h=l.useRef(null),T=l.useRef([]),[A,g]=l.useState("idle"),[y,_]=l.useState(null),[W,F]=l.useState(null),P=l.useCallback(()=>{var k;const M=[t,...kt].filter(Boolean);for(const R of M)if((k=MediaRecorder.isTypeSupported)!=null&&k.call(MediaRecorder,R))return R},[t]),q=l.useCallback(async M=>{const k=new MediaStream;if(M.getTracks().forEach(R=>k.addTrack(R)),e){let R;if(e instanceof MediaStream)R=e;else{const x=typeof e=="object"?{audio:e}:{audio:!0,video:!1};R=await navigator.mediaDevices.getUserMedia(x)}R.getAudioTracks().forEach(x=>k.addTrack(x))}if(!k.getTracks().length)throw new Error("No tracks available in combined stream.");return h.current=k,k},[e]),re=l.useCallback(async(M,k)=>{g(X("start")),F(null),_(null);try{let R;if(p)R=p,h.current=R;else{if(!M)throw new Error("start(stream) requires a MediaStream.");R=await q(M)}const x=P(),H={};x&&(H.mimeType=x),r&&(H.bitsPerSecond=r);const K=new MediaRecorder(R,H);K.ondataavailable=L=>{var J;((J=L.data)==null?void 0:J.size)>0&&(T.current.push(L.data),a==null||a(L.data))},K.onstop=()=>{const L=new Blob(T.current,{type:x??"video/webm"});_(L),n==null||n(L),S==null||S(L),T.current=[],g(X("complete"))},f.current=K,K.start(k),g(X("started")),o==null||o()}catch(R){const x=R instanceof Error?R:new Error(String(R));console.error("start(stream) failed",x),F(x),g(X("fail")),m==null||m(x)}},[q,P,r,a,n,S,o,m,p]),ne=l.useCallback(()=>{const M=f.current;!M||M.state==="inactive"||(g(X("stop")),M.stop(),d==null||d())},[d]),ae=l.useCallback(()=>{const M=f.current;(M==null?void 0:M.state)==="recording"&&(M.pause(),g(X("pause")),i==null||i())},[i]),oe=l.useCallback(()=>{const M=f.current;(M==null?void 0:M.state)==="paused"&&(M.resume(),g(X("resume")),c==null||c())},[c]),Z=l.useCallback(()=>{var M;try{f.current&&(f.current.onstop=null,f.current.state!=="inactive"&&f.current.stop()),f.current=null,(M=h.current)==null||M.getTracks().forEach(k=>k.stop()),h.current=null,_(null),g(X("clear")),T.current=[],F(null)}catch(k){console.error("clear failed",k)}},[]);return l.useEffect(()=>()=>Z(),[]),{status:A,start:re,stop:ne,pause:ae,resume:oe,clear:Z,isRecording:A==="recording"||A==="paused",isPaused:A==="paused",recordedBlob:y,error:W,getActiveStream:()=>h.current}}const wt=async(s,e={})=>{var t,r,a;(t=e.onCaptureStart)==null||t.call(e),await Promise.resolve();try{const n=s();return(r=e.onCaptureComplete)==null||r.call(e,n),n}catch(n){const o=n instanceof Error?n:new Error(String(n));throw(a=e.onError)==null||a.call(e,o),o}},Pt=(s={})=>{const{session:e}=u.useXRContext(),{captureFrame:t=e.captureFrame,onCaptureStart:r,onCaptureComplete:a,onError:n}=s,[o,i]=l.useState("idle"),[c,d]=l.useState(null),[S,m]=l.useState(null),p=l.useCallback(async()=>{i("capturing"),d(null),m(null);try{const h=await wt(t,{onCaptureStart:r,onCaptureComplete:a,onError:n});return d(h),i("completed"),h}catch(h){const T=h instanceof Error?h:new Error(String(h));return m(T),i("error"),null}},[t,r,a,n]),f=l.useCallback(()=>{i("idle"),d(null),m(null)},[]);return{status:o,capturePhoto:p,clear:f,dataUrl:c,error:S}},Nt=(s,e)=>{const t=s.split(","),r=t[0].match(/:(.*?);/),a=r?r[1]:"application/octet-stream",n=atob(t[t.length-1]);let o=n.length;const i=new Uint8Array(o);for(;o--;)i[o]=n.charCodeAt(o);return new File([i],e,{type:a})},Ut=4,Dt=50,Lt=5e3,ie=s=>Math.min(1,Math.max(0,s)),we=s=>new Promise(e=>{if(s.readyState>=4){e();return}let t=!1;const r=()=>{t||(t=!0,e())};s.addEventListener("canplaythrough",r,{once:!0}),s.addEventListener("error",r,{once:!0}),setTimeout(r,Lt)}),Pe=(s,e)=>{const t=document.createElement("audio");return t.src=s,t.loop=e,t.preload="auto",t.setAttribute("playsinline",""),t.setAttribute("webkit-playsinline",""),t.load(),t},It=s=>{s.muted=!0,s.play().then(()=>{s.pause(),s.currentTime=0,s.muted=!1}).catch(()=>{s.muted=!1})};class je{constructor(e={}){b(this,"sfxPoolSize");b(this,"coalesceMs");b(this,"muted",!0);b(this,"listeners",new Set);b(this,"music",null);b(this,"musicUrl",null);b(this,"musicReady",null);b(this,"musicWanted",null);b(this,"pools",new Map);b(this,"lastPlayed",new Map);b(this,"ready",new Map);this.sfxPoolSize=e.sfxPoolSize??Ut,this.coalesceMs=e.coalesceMs??Dt}prefetchMusic(e,t=.4){const r=ie(t);if(this.musicWanted={url:e,volume:r},this.musicUrl===e&&this.musicReady)return this.music&&(this.music.volume=r),this.musicReady;this.music&&(this.music.pause(),this.music.currentTime=0,this.music.removeAttribute("src"),this.music.load()),this.music=Pe(e,!0),this.musicUrl=e,this.music.volume=r;const a=we(this.music);return this.musicReady=a,a}registerSound(e,t=1){const r=this.ready.get(e);if(r)return r;const a=ie(t),n=[];for(let i=0;i<this.sfxPoolSize;i+=1){const c=Pe(e,!1);c.volume=a,c.addEventListener("ended",()=>{c.currentTime=0}),n.push(c)}this.pools.set(e,{els:n,next:0,volume:a});const o=we(n[0]);return this.ready.set(e,o),o}onMuteChange(e){return this.listeners.add(e),e(this.muted),()=>this.listeners.delete(e)}isMuted(){return this.muted}setMuted(e){e!==this.muted&&(this.muted=e,this.muted||this.pools.forEach(t=>t.els.forEach(It)),this.applyMusic(),this.listeners.forEach(t=>t(this.muted)))}toggleMuted(){this.setMuted(!this.muted)}playOneShot(e,t){if(this.muted)return;const r=this.pools.get(e);if(!r)return;const a=performance.now();if(a-(this.lastPlayed.get(e)??-1/0)<this.coalesceMs)return;this.lastPlayed.set(e,a);const n=r.els.length;let o;for(let i=0;i<n;i+=1){const c=r.els[(r.next+i)%n];if(c.paused){o=c,r.next=(r.next+i+1)%n;break}}o||(o=r.els[r.next],r.next=(r.next+1)%n),o.muted=!1,o.volume=ie(t??r.volume),o.currentTime!==0&&(o.currentTime=0),o.play().catch(()=>{})}startMusic(e,t=.4){const r=ie(t);this.musicUrl!==e&&this.prefetchMusic(e,r),this.musicWanted={url:e,volume:r},this.applyMusic()}stopMusic(){this.musicWanted=null,this.music&&(this.music.pause(),this.music.currentTime=0)}applyMusic(){!this.music||!this.musicWanted||(this.music.volume=this.musicWanted.volume,!this.muted&&this.music.paused&&this.music.play().catch(()=>{}),this.muted&&!this.music.paused&&this.music.pause())}}const Ot=(s,e,t)=>s==="infinite"||s==="loop"&&e<Math.max(1,Math.floor(t))?"replay":"ended",Gt=(s,e,t)=>s&&e!==t,qt=s=>Math.min(100,Math.max(0,s))/100,Xt=l.forwardRef(function({src:e,playMode:t="once",loopCount:r=1,autoplay:a=!1,muted:n=!1,volume:o=100,preload:i="auto",onReady:c,onPlay:d,onPause:S,onEnded:m,onError:p},f){const h=l.useRef(null),T=l.useRef(0),A=l.useRef(null),g=l.useCallback(async()=>{const F=h.current;if(F)try{await F.play()}catch(P){const q=P instanceof Error?P:new Error(String(P));throw p==null||p(q),q}},[p]),y=l.useCallback(()=>{var F;return(F=h.current)==null?void 0:F.pause()},[]),_=l.useCallback(()=>{const F=h.current;F&&(F.pause(),F.currentTime=0,T.current=0)},[]);l.useImperativeHandle(f,()=>({play:g,pause:y,stop:_,get current(){return h.current}}),[y,g,_]),l.useEffect(()=>{T.current=0,A.current=null},[e]),l.useEffect(()=>{h.current&&(h.current.volume=qt(o))},[o]),l.useEffect(()=>{Gt(a,A.current,e)&&(A.current=e,g().catch(()=>{}))},[a,e]);const W=l.useCallback(()=>{T.current+=1;const F=Math.max(1,Math.floor(r));if(Ot(t,T.current,F)==="replay"){const P=h.current;P&&(P.currentTime=0,g().catch(()=>{}));return}T.current=0,m==null||m()},[r,m,g,t]);return E.jsx("audio",{ref:h,src:e,preload:i,autoPlay:!1,muted:n,loop:!1,playsInline:!0,style:{display:"none"},onCanPlayThrough:c,onPlay:d,onPause:S,onEnded:W,onError:()=>p==null?void 0:p(new Error(`Unable to load audio: ${e}`))})}),D=new je,jt=(s,e)=>D.prefetchMusic(s,e),Bt=(s,e)=>D.registerSound(s,e),zt=(s,e)=>D.startMusic(s,e),Kt=()=>D.stopMusic(),$t=(s,e)=>D.playOneShot(s,e),Wt=s=>D.setMuted(s),Ht=()=>D.toggleMuted(),Vt=()=>D.isMuted(),Qt=s=>D.onMuteChange(s),Yt=()=>{const[s,e]=l.useState(D.isMuted());return l.useEffect(()=>D.onMuteChange(e),[]),s},Be=(s={})=>{const{auto:e=!1}=s,t=l.useRef(s.env??u.defaultCameraEnvironment()),r=l.useRef(s.constraints);r.current=s.constraints;const[a,n]=l.useState("unknown"),[o,i]=l.useState(null),c=l.useRef(0),d=l.useCallback(async()=>{const m=++c.current,p=await u.queryCameraPermission(t.current);if(m!==c.current)return a;const f=p.state==="unknown"?"unknown":p.state;return n(h=>h==="requesting"?h:f),f!=="blocked"&&i(null),f},[]),S=l.useCallback(async m=>{const p=++c.current;n("requesting"),i(null);const f=await u.requestCameraAccess({constraints:(m==null?void 0:m.constraints)??r.current,keepStream:!1},t.current);return p!==c.current||(n(f.state),i(f.reason)),f.state},[]);return l.useEffect(()=>{let m=()=>{},p=!0;return e?S():d(),u.subscribeCameraPermission(f=>{p&&(n(h=>h==="requesting"?h:f.state==="unknown"?"unknown":f.state),f.state!=="blocked"&&i(null))},t.current).then(f=>{p?m=f:f()}),()=>{p=!1,c.current+=1,m()}},[e,d,S]),l.useMemo(()=>({state:a,reason:o,canPrompt:u.canPromptForCamera(a),usable:a==="granted",request:S,refresh:d}),[a,o,S,d])},Zt={display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:12,height:"100%",minHeight:160,padding:24,textAlign:"center",background:"#111827",color:"#f9fafb",fontFamily:"system-ui, sans-serif"},Jt={font:"inherit",padding:"10px 18px",borderRadius:8,border:"1px solid rgba(255,255,255,0.3)",background:"#2563eb",color:"#fff",cursor:"pointer"},es=({children:s,fallback:e,auto:t=!1,constraints:r,requestLabel:a="Allow camera"})=>{const n=Be({auto:t,constraints:r});if(n.usable)return E.jsx(E.Fragment,{children:s});if(e)return E.jsx(E.Fragment,{children:e(n)});const{state:o,reason:i,canPrompt:c,request:d}=n;return E.jsxs("div",{style:Zt,role:"region","aria-label":"Camera access",children:[E.jsx("p",{"aria-live":"polite",style:{margin:0},children:(i==null?void 0:i.message)??u.CAMERA_PERMISSION_MESSAGES[o]}),E.jsx("button",{type:"button",onClick:()=>void d(),disabled:!c||o==="requesting","aria-disabled":!c||o==="requesting",style:{...Jt,opacity:c&&o!=="requesting"?1:.5},children:o==="requesting"?"Waiting…":o==="denied"?"Try again":a})]})},ts=()=>{var s;return{enumerateDevices:typeof navigator<"u"&&((s=navigator.mediaDevices)!=null&&s.enumerateDevices)?()=>navigator.mediaDevices.enumerateDevices():void 0}},ss=/\b(back|rear|environment|world)\b/i,rs=/\b(front|user|facetime|selfie)\b/i,ns=s=>ss.test(s)?"environment":rs.test(s)?"user":null,as=async(s=ts())=>{if(!s.enumerateDevices)return[];try{return(await s.enumerateDevices()).filter(t=>t.kind==="videoinput").map(t=>({deviceId:t.deviceId,label:t.label,facing:ns(t.label)}))}catch{return[]}},os=(s,e)=>s.find(t=>t.facing===e)??null,is=s=>{const{session:e}=u.useXRContext(),t=$.useXRQualityState(),r=$.useXRQualityConfig(),a=JSON.stringify(s??null),n=l.useMemo(()=>s?u.resolveQualityConfig(s):r??u.resolveQualityConfig(),[a,r]),o=n.tiers,i=l.useCallback(S=>{const m=e.store.getSnapshot().quality;m&&e._setQuality(u.setQualityTier(m,n,S,performance.now()))},[e,n]),c=l.useCallback(S=>{const m=e.store.getSnapshot().quality;m&&e._setQuality(u.lockQuality(m,n,S,performance.now()))},[e,n]),d=l.useCallback(()=>{const S=e.store.getSnapshot().quality;e._setQuality(u.resetQuality(n,(S==null?void 0:S.signals)??u.EMPTY_QUALITY_SIGNALS,performance.now()))},[e,n]);return l.useMemo(()=>({tier:(t==null?void 0:t.decision.tier)??null,index:(t==null?void 0:t.index)??-1,tiers:o,decision:(t==null?void 0:t.decision)??null,history:(t==null?void 0:t.history)??[],signals:(t==null?void 0:t.signals)??null,locked:(t==null?void 0:t.locked)??!1,setTier:i,lock:()=>c(!0),unlock:()=>c(!1),reset:d,state:t}),[t,o,i,c,d])},ze=256*1024*1024;class Ke{constructor(e={}){b(this,"entries",new Map);b(this,"listeners",new Set);b(this,"budget");b(this,"now");b(this,"evictions",0);b(this,"hits",0);b(this,"misses",0);b(this,"statsSnapshot",null);this.budget=e.budgetBytes??ze,this.now=e.now??(()=>typeof performance<"u"?performance.now():Date.now())}acquire(e,t){let r=this.entries.get(e.key);if(r&&r.status==="error"&&(this.entries.delete(e.key),r=void 0),!r){this.misses+=1;const a=typeof AbortController<"u"?new AbortController:null,n={definition:e,status:"loading",value:void 0,bytes:0,owners:new Set([t]),promise:null,controller:a,error:null,lastUsed:this.now(),disposed:!1};return n.promise=e.load((a==null?void 0:a.signal)??new AbortController().signal).then(o=>{var i,c;if(n.disposed||this.entries.get(e.key)!==n)throw(i=e.dispose)==null||i.call(e,o),new Error(`Asset "${e.key}" was released before it loaded`);return n.value=o,n.bytes=Math.max(0,Math.round(((c=e.bytes)==null?void 0:c.call(e,o))??0)),n.status="ready",n.promise=null,this.notify(),this.enforceBudget(),o}).catch(o=>{const i=o instanceof Error?o:new Error(String(o));throw this.entries.get(e.key)===n&&!n.disposed&&(n.status="error",n.error=i,n.promise=null,this.notify()),i}),this.entries.set(e.key,n),this.notify(),n.promise}return this.hits+=1,r.owners.add(t),r.lastUsed=this.now(),this.notify(),r.status==="ready"?Promise.resolve(r.value):r.promise}preload(e){const t="__preload__";return this.acquire(e,t).finally(()=>this.release(e.key,t))}release(e,t){var a;const r=this.entries.get(e);!r||!r.owners.delete(t)||(r.lastUsed=this.now(),r.owners.size===0&&r.status==="loading"&&((a=r.controller)==null||a.abort(),r.disposed=!0,this.entries.delete(e)),this.notify(),this.enforceBudget())}get(e){const t=this.entries.get(e);return(t==null?void 0:t.status)==="ready"?t.value:void 0}has(e){return this.entries.has(e)}entry(e){const t=this.entries.get(e);return t?Ne(e,t):void 0}list(){return Array.from(this.entries,([e,t])=>Ne(e,t))}setBudget(e){this.budget=e,this.enforceBudget(),this.notify()}evict(e){const t=e??Math.max(0,this.usage()-(Number.isFinite(this.budget)?this.budget:1/0));if(t<=0)return 0;const r=Array.from(this.entries).filter(([,n])=>n.owners.size===0&&n.status==="ready").sort((n,o)=>n[1].lastUsed-o[1].lastUsed);let a=0;for(const[n,o]of r){if(a>=t)break;a+=o.bytes,this.disposeEntry(n,o),this.evictions+=1}return a>0&&this.notify(),a}disposeUnreferenced(){let e=0;for(const[t,r]of Array.from(this.entries))r.owners.size===0&&(e+=r.bytes,this.disposeEntry(t,r));return e>0&&this.notify(),e}disposeAll(){for(const[e,t]of Array.from(this.entries))this.disposeEntry(e,t);this.notify()}getStats(){if(this.statsSnapshot)return this.statsSnapshot;let e=0,t=0,r=0,a=0,n=0;for(const o of this.entries.values())o.owners.size>0&&(e+=1),o.status==="loading"&&(t+=1),o.status==="error"&&(r+=1),o.status==="ready"&&(a+=o.bytes,o.owners.size===0&&(n+=o.bytes));return this.statsSnapshot={assets:this.entries.size,referencedAssets:e,loadingAssets:t,erroredAssets:r,usageBytes:a,reclaimableBytes:n,budgetBytes:this.budget,overBudget:a>this.budget,evictions:this.evictions,hits:this.hits,misses:this.misses},this.statsSnapshot}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}usage(){let e=0;for(const t of this.entries.values())t.status==="ready"&&(e+=t.bytes);return e}enforceBudget(){Number.isFinite(this.budget)&&this.usage()>this.budget&&this.evict()}disposeEntry(e,t){var r,a,n;if(!t.disposed){if(t.disposed=!0,(r=t.controller)==null||r.abort(),t.status==="ready"&&t.value!==void 0)try{(n=(a=t.definition).dispose)==null||n.call(a,t.value)}catch(o){console.warn(`[xr-sdk assets] dispose threw for ${e}`,o)}this.entries.delete(e)}}notify(){this.statsSnapshot=null,this.listeners.forEach(e=>e())}}const Ne=(s,e)=>({key:s,status:e.status,bytes:e.bytes,owners:e.owners.size,lastUsed:e.lastUsed,error:e.error}),$e=s=>new Ke(s);let de;const Se=()=>(de||(de=$e()),de),ce=s=>{if(!s)return 0;const e=s.image;if(!e)return 0;const t=e.videoWidth||e.width||0,r=e.videoHeight||e.height||0;if(!t||!r)return 0;const a=s.isCompressedTexture,n=a?.5:s.type===B.FloatType?16:4,o=t*r*n;return Math.round(s.generateMipmaps&&!a?o*1.3334:o)},We=s=>{if(!s)return 0;let e=0;for(const t of Object.values(s.attributes)){const r=t.array;r&&(e+=r.byteLength)}return s.index&&(e+=s.index.array.byteLength),e},cs=["map","alphaMap","aoMap","bumpMap","displacementMap","emissiveMap","envMap","lightMap","metalnessMap","normalMap","roughnessMap","specularMap"],He=s=>{const e=[],t=s;for(const a of cs){const n=t[a];n&&n.isTexture&&e.push(n)}const r=s.uniforms;if(r)for(const a of Object.values(r)){const n=a==null?void 0:a.value;n&&n.isTexture&&e.push(n)}return e},Ve=s=>{if(!s)return 0;const e=new Set,t=new Set;s.traverse(a=>{const n=a;n.geometry&&e.add(n.geometry);const o=Array.isArray(n.material)?n.material:n.material?[n.material]:[];for(const i of o)He(i).forEach(c=>t.add(c))});let r=0;return e.forEach(a=>{r+=We(a)}),t.forEach(a=>{r+=ce(a)}),r},me=s=>{if(!s)return;const e=new Set,t=new Set,r=new Set;s.traverse(a=>{const n=a;n.geometry&&e.add(n.geometry);const o=Array.isArray(n.material)?n.material:n.material?[n.material]:[];for(const i of o)t.add(i),He(i).forEach(c=>r.add(c))}),r.forEach(a=>a.dispose()),t.forEach(a=>a.dispose()),e.forEach(a=>a.dispose()),s.removeFromParent()},Qe=async(s,e)=>{if(u.isSdkOwnedUrl(s))return u.fetchAndVerify(s,{signal:e});const t=await fetch(s,{signal:e});if(!t.ok)throw new Error(`Asset fetch failed (${t.status}): ${s}`);return t.arrayBuffer()},Ye=s=>new Promise((e,t)=>{const r=()=>t(new DOMException("Asset load aborted","AbortError"));s.aborted?r():s.addEventListener("abort",r,{once:!0})}),ls=(s,e={})=>({key:`texture:${s}${e.variant?`#${e.variant}`:""}`,load:async t=>{const r=await Qe(s,t),a=new Blob([r]),n=createImageBitmap(a,{imageOrientation:e.flipY===!1?"none":"flipY"}),o=await Promise.race([n,Ye(t)]).catch(c=>{throw n.then(d=>d.close()).catch(()=>{}),c}),i=new B.Texture(o);return i.flipY=!1,i.colorSpace=e.colorSpace??B.SRGBColorSpace,i.generateMipmaps=e.generateMipmaps??!0,i.minFilter=i.generateMipmaps?B.LinearMipmapLinearFilter:B.LinearFilter,i.needsUpdate=!0,i},dispose:t=>{var a;const r=t.image;t.dispose(),(a=r==null?void 0:r.close)==null||a.call(r)},bytes:ce}),us=s=>({key:`gltf:${s}`,load:async e=>{const t=await Qe(s,e),r=new dt.GLTFLoader,a=s.slice(0,s.lastIndexOf("/")+1),n=r.parseAsync(t,a);return Promise.race([n,Ye(e)]).catch(o=>{throw n.then(i=>me(i.scene)).catch(()=>{}),o})},dispose:e=>me(e.scene),bytes:e=>Ve(e.scene)}),ds=(s,e={})=>({key:`video:${s}`,load:t=>new Promise((r,a)=>{const n=document.createElement("video");n.src=s,n.loop=e.loop??!0,n.muted=e.muted??!0,n.playsInline=!0,n.crossOrigin=e.crossOrigin??"anonymous",n.preload="auto";const o=i=>{n.removeAttribute("src"),n.load(),a(i instanceof Error?i:new Error(`Video failed to load: ${s}`))};t.addEventListener("abort",()=>o(new DOMException("Asset load aborted","AbortError")),{once:!0}),n.onerror=()=>o(n.error),n.onloadeddata=()=>{const i=new B.VideoTexture(n);i.colorSpace=B.SRGBColorSpace,r({video:n,texture:i})},n.load()}),dispose:({video:t,texture:r})=>{r.dispose(),t.pause(),t.removeAttribute("src"),t.load()},bytes:({texture:t})=>ce(t)}),Ze=l.createContext(null),ms=({cache:s,disposeUnreferencedOnUnmount:e=!0,children:t})=>{const r=s??Se();return l.useEffect(()=>()=>{e&&r.disposeUnreferenced()},[r,e]),E.jsx(Ze.Provider,{value:r,children:t})},Ee=()=>l.useContext(Ze)??Se(),fs=(s,e={})=>{const{enabled:t=!0}=e,r=Ee(),a=l.useId(),n=(s==null?void 0:s.key)??null,[o,i]=l.useState({value:null,status:"idle",error:null});return l.useEffect(()=>{if(!s||!t){i({value:null,status:"idle",error:null});return}let c=!0;const d=r.get(s.key);return i({value:d??null,status:d?"ready":"loading",error:null}),r.acquire(s,a).then(S=>{c&&i({value:S,status:"ready",error:null})}).catch(S=>{c&&i({value:null,status:"error",error:S})}),()=>{c=!1,r.release(s.key,a)}},[r,n,t,a]),o},ps=s=>{const e=Ee(),t=s??e;return l.useSyncExternalStore(r=>t.subscribe(r),()=>t.getStats(),()=>t.getStats())},te=1,ye=Object.freeze({version:te,trackers:{face:{enabled:!0,numFaces:1,targetFps:null,holdMs:250,predictMs:0,smoothing:0},hand:{enabled:!1,targetFps:null},gesture:{enabled:!1,targetFps:null},body:{enabled:!1,targetFps:null},holistic:{enabled:!1,targetFps:null,hands:"both",holdMs:250,predictMs:0,analysisMaxDimension:768,outputFaceBlendshapes:!0,confidence:.5,delegate:"auto"},segmentation:{enabled:!1,quality:"low"},semanticSegmentation:{enabled:!1,preset:"multiclass",quality:"medium"}},perf:{targetFps:24,camRes:720,cameraZoom:1.2,analysisScale:1},lifecycle:{pauseWhenHidden:!1},quality:{},camera:{facingMode:"user",deviceId:null,mirrored:"auto"},fallbacks:{onUnsupported:"degrade",delegate:"auto"},assets:{holisticModelUrl:null,semanticSegmentationModelUrl:null},updatedAt:0}),N=(s,e,t,r,a,n)=>{if(s===void 0)return e;if(typeof s!="number"||!Number.isFinite(s))return n(`${a}: not a number, kept ${e}`),e;const o=Math.min(r,Math.max(t,s));return o!==s&&n(`${a}: ${s} clamped to ${o}`),o},ee=(s,e,t,r)=>s===void 0?e:s===null?null:typeof s!="number"||!Number.isFinite(s)||s<=0?(r(`${t}: invalid fps, kept ${e}`),e):(s>120&&r(`${t}: ${s} clamped to 120`),Math.min(120,s)),hs=["tiers","budget","initialTier","minTier","maxTier","adaptive","historySize"],Ue=s=>{const e={};for(const t of hs)s[t]!==void 0&&(e[t]=s[t]);return e},I=(s,e,t,r)=>s===void 0?e:typeof s!="boolean"?(r(`${t}: not a boolean, kept ${e}`),e):s,j=(s,e,t,r,a)=>s===void 0?t:e.includes(s)?s:(a(`${r}: "${String(s)}" is not one of ${e.join(" | ")}, kept ${t}`),t),De=(s,e,t,r)=>s===void 0?e:s===null?null:typeof s!="string"||!/^https?:\/\//.test(s)?(r(`${t}: not an http(s) URL, kept ${e===null?"the SDK default":e}`),e):s,G=(s={},e=ye,t=[])=>{var i,c,d,S,m,p,f,h,T,A,g,y,_,W,F,P,q,re,ne,ae,oe,Z,M,k,R,x,H,K,L,J,be,Ae,Ce,_e,Fe,ve,ke,xe;const r=ot=>t.push(ot),a=s.trackers??{},n=e.trackers,o=s.quality===void 0?e.quality===!1?!1:Ue(e.quality):s.quality===!1?!1:typeof s.quality=="object"&&s.quality!==null?Ue(s.quality):(r("quality: must be an object or false, kept base"),e.quality);return{version:te,trackers:{face:{enabled:I((i=a.face)==null?void 0:i.enabled,n.face.enabled,"trackers.face.enabled",r),numFaces:Math.round(N((c=a.face)==null?void 0:c.numFaces,n.face.numFaces,1,10,"trackers.face.numFaces",r)),targetFps:ee((d=a.face)==null?void 0:d.targetFps,n.face.targetFps,"trackers.face.targetFps",r),holdMs:N((S=a.face)==null?void 0:S.holdMs,n.face.holdMs,0,5e3,"trackers.face.holdMs",r),predictMs:N((m=a.face)==null?void 0:m.predictMs,n.face.predictMs,0,1e3,"trackers.face.predictMs",r),smoothing:N((p=a.face)==null?void 0:p.smoothing,n.face.smoothing,0,100,"trackers.face.smoothing",r)},hand:{enabled:I((f=a.hand)==null?void 0:f.enabled,n.hand.enabled,"trackers.hand.enabled",r),targetFps:ee((h=a.hand)==null?void 0:h.targetFps,n.hand.targetFps,"trackers.hand.targetFps",r)},gesture:{enabled:I((T=a.gesture)==null?void 0:T.enabled,n.gesture.enabled,"trackers.gesture.enabled",r),targetFps:ee((A=a.gesture)==null?void 0:A.targetFps,n.gesture.targetFps,"trackers.gesture.targetFps",r)},body:{enabled:I((g=a.body)==null?void 0:g.enabled,n.body.enabled,"trackers.body.enabled",r),targetFps:ee((y=a.body)==null?void 0:y.targetFps,n.body.targetFps,"trackers.body.targetFps",r)},holistic:{enabled:I((_=a.holistic)==null?void 0:_.enabled,n.holistic.enabled,"trackers.holistic.enabled",r),targetFps:ee((W=a.holistic)==null?void 0:W.targetFps,n.holistic.targetFps,"trackers.holistic.targetFps",r),hands:j((F=a.holistic)==null?void 0:F.hands,["both","left","right","none"],n.holistic.hands,"trackers.holistic.hands",r),holdMs:N((P=a.holistic)==null?void 0:P.holdMs,n.holistic.holdMs,0,5e3,"trackers.holistic.holdMs",r),predictMs:N((q=a.holistic)==null?void 0:q.predictMs,n.holistic.predictMs,0,1e3,"trackers.holistic.predictMs",r),analysisMaxDimension:Math.round(N((re=a.holistic)==null?void 0:re.analysisMaxDimension,n.holistic.analysisMaxDimension,128,2048,"trackers.holistic.analysisMaxDimension",r)),outputFaceBlendshapes:I((ne=a.holistic)==null?void 0:ne.outputFaceBlendshapes,n.holistic.outputFaceBlendshapes,"trackers.holistic.outputFaceBlendshapes",r),confidence:N((ae=a.holistic)==null?void 0:ae.confidence,n.holistic.confidence,0,1,"trackers.holistic.confidence",r),delegate:j((oe=a.holistic)==null?void 0:oe.delegate,["auto","GPU","CPU"],n.holistic.delegate,"trackers.holistic.delegate",r)},segmentation:{enabled:I((Z=a.segmentation)==null?void 0:Z.enabled,n.segmentation.enabled,"trackers.segmentation.enabled",r),quality:j((M=a.segmentation)==null?void 0:M.quality,["low","medium","high"],n.segmentation.quality,"trackers.segmentation.quality",r)},semanticSegmentation:{enabled:I((k=a.semanticSegmentation)==null?void 0:k.enabled,n.semanticSegmentation.enabled,"trackers.semanticSegmentation.enabled",r),preset:j((R=a.semanticSegmentation)==null?void 0:R.preset,mt.SEMANTIC_SEGMENTATION_PRESETS,n.semanticSegmentation.preset,"trackers.semanticSegmentation.preset",r),quality:j((x=a.semanticSegmentation)==null?void 0:x.quality,["low","medium","high"],n.semanticSegmentation.quality,"trackers.semanticSegmentation.quality",r)}},perf:{targetFps:N((H=s.perf)==null?void 0:H.targetFps,e.perf.targetFps,0,120,"perf.targetFps",r),camRes:Math.round(N((K=s.perf)==null?void 0:K.camRes,e.perf.camRes,160,3840,"perf.camRes",r)),cameraZoom:N((L=s.perf)==null?void 0:L.cameraZoom,e.perf.cameraZoom,1,3,"perf.cameraZoom",r),analysisScale:N((J=s.perf)==null?void 0:J.analysisScale,e.perf.analysisScale,.25,1,"perf.analysisScale",r)},lifecycle:{pauseWhenHidden:I((be=s.lifecycle)==null?void 0:be.pauseWhenHidden,e.lifecycle.pauseWhenHidden,"lifecycle.pauseWhenHidden",r)},quality:o,camera:{facingMode:j((Ae=s.camera)==null?void 0:Ae.facingMode,["user","environment"],e.camera.facingMode,"camera.facingMode",r),deviceId:((Ce=s.camera)==null?void 0:Ce.deviceId)===void 0?e.camera.deviceId:typeof s.camera.deviceId=="string"||s.camera.deviceId===null?s.camera.deviceId:(r("camera.deviceId: not a string, kept base"),e.camera.deviceId),mirrored:((_e=s.camera)==null?void 0:_e.mirrored)===void 0?e.camera.mirrored:s.camera.mirrored==="auto"||typeof s.camera.mirrored=="boolean"?s.camera.mirrored:(r('camera.mirrored: must be boolean or "auto", kept base'),e.camera.mirrored)},fallbacks:{onUnsupported:j((Fe=s.fallbacks)==null?void 0:Fe.onUnsupported,["block","degrade"],e.fallbacks.onUnsupported,"fallbacks.onUnsupported",r),delegate:j((ve=s.fallbacks)==null?void 0:ve.delegate,["auto","GPU","CPU"],e.fallbacks.delegate,"fallbacks.delegate",r)},assets:{holisticModelUrl:De((ke=s.assets)==null?void 0:ke.holisticModelUrl,e.assets.holisticModelUrl,"assets.holisticModelUrl",r),semanticSegmentationModelUrl:De((xe=s.assets)==null?void 0:xe.semanticSegmentationModelUrl,e.assets.semanticSegmentationModelUrl,"assets.semanticSegmentationModelUrl",r)},updatedAt:typeof s.updatedAt=="number"&&Number.isFinite(s.updatedAt)?s.updatedAt:e.updatedAt}},fe=(s,e,t=Date.now())=>G({...e,updatedAt:t},s),Te=s=>JSON.stringify(G({},s)),Me=s=>{const e=[];let t=s;if(typeof s=="string")try{t=JSON.parse(s)}catch{return{config:G(),migrated:!0,warnings:["not valid JSON; defaults used"]}}if(!t||typeof t!="object")return{config:G(),migrated:!0,warnings:["not an object; defaults used"]};const r=t,a=r.version!==te;return a&&e.push(`migrated from version ${String(r.version??"none")} to ${te}`),{config:G(r,ye,e),migrated:a,warnings:e}},gs=["face","hand","gesture","body","holistic","segmentation","semanticSegmentation"],Je=s=>({perf:{targetFps:s.perf.targetFps>0?s.perf.targetFps:void 0,camRes:s.perf.camRes,cameraZoom:s.perf.cameraZoom,analysisScale:s.perf.analysisScale},lifecycle:{pauseWhenHidden:s.lifecycle.pauseWhenHidden},quality:s.quality}),et=s=>({facingMode:s.camera.facingMode,...s.camera.deviceId?{deviceId:s.camera.deviceId}:{},...s.camera.mirrored==="auto"?{}:{mirrored:s.camera.mirrored}}),O=s=>s===null?{}:{targetFps:s},tt=(s,e)=>{const t=s.trackers;return{face:{numFaces:t.face.numFaces,...O(t.face.targetFps),holdMs:t.face.holdMs,predictMs:t.face.predictMs,active:t.face.enabled},hand:{...O(t.hand.targetFps),active:t.hand.enabled},gesture:{...O(t.gesture.targetFps),active:t.gesture.enabled},body:{active:t.body.enabled},holistic:{...O(t.holistic.targetFps),hands:t.holistic.hands,holdMs:t.holistic.holdMs,predictMs:t.holistic.predictMs,analysisMaxDimension:t.holistic.analysisMaxDimension,outputFaceBlendshapes:t.holistic.outputFaceBlendshapes,delegate:t.holistic.delegate==="auto"?s.fallbacks.delegate:t.holistic.delegate,...s.assets.holisticModelUrl?{modelUrl:s.assets.holisticModelUrl}:{},active:t.holistic.enabled},segmentation:{quality:t.segmentation.quality,active:t.segmentation.enabled},semanticSegmentation:{preset:t.semanticSegmentation.preset,quality:t.semanticSegmentation.quality,...s.assets.semanticSegmentationModelUrl?{modelUrl:s.assets.semanticSegmentationModelUrl}:{},active:t.semanticSegmentation.enabled}}[e]},st=(s,e)=>{const t=s.trackers;switch(e){case u.XRModel.FACE_TRACKER:return{numFaces:t.face.numFaces,...O(t.face.targetFps)};case u.XRModel.HAND_TRACKER:return{...O(t.hand.targetFps)};case u.XRModel.GESTURE_TRACKER:return{...O(t.gesture.targetFps)};case u.XRModel.BODY_TRACKER:return{...O(t.body.targetFps)};case u.XRModel.HOLISTIC_TRACKER:{const r=t.holistic;return{...O(r.targetFps),hands:r.hands,holdMs:r.holdMs,predictMs:r.predictMs,analysisMaxDimension:r.analysisMaxDimension,outputFaceBlendshapes:r.outputFaceBlendshapes,minFaceDetectionConfidence:r.confidence,minFacePresenceConfidence:r.confidence,minPoseDetectionConfidence:r.confidence,minPosePresenceConfidence:r.confidence,minHandLandmarksConfidence:r.confidence,delegate:r.delegate==="auto"?s.fallbacks.delegate:r.delegate,...s.assets.holisticModelUrl?{modelUrl:s.assets.holisticModelUrl}:{}}}case u.XRModel.BACKGROUND_SEGMENTATION:return{quality:t.segmentation.quality};case u.XRModel.SEMANTIC_SEGMENTATION:return{preset:t.semanticSegmentation.preset,quality:t.semanticSegmentation.quality,...s.assets.semanticSegmentationModelUrl?{modelUrl:s.assets.semanticSegmentationModelUrl}:{}};default:return{}}},rt=s=>{const e=s.trackers,t=[];return e.face.enabled&&t.push(u.XRModel.FACE_TRACKER),e.hand.enabled&&t.push(u.XRModel.HAND_TRACKER),e.gesture.enabled&&t.push(u.XRModel.GESTURE_TRACKER),e.body.enabled&&t.push(u.XRModel.BODY_TRACKER),e.holistic.enabled&&t.push(u.XRModel.HOLISTIC_TRACKER),e.segmentation.enabled&&t.push(u.XRModel.BACKGROUND_SEGMENTATION),e.semanticSegmentation.enabled&&t.push(u.XRModel.SEMANTIC_SEGMENTATION),t},se="vincentt.xr.tracking-config",Re=()=>{try{return typeof localStorage<"u"?localStorage:null}catch{return null}},nt=(s=se,e=Re())=>{if(!e)return null;try{const t=e.getItem(s);return t?Me(t):null}catch{return null}},pe=(s,e=se,t=Re())=>{if(!t)return!1;try{return t.setItem(e,Te(s)),!0}catch{return!1}},at=(s=se,e=Re())=>{if(e)try{e.removeItem(s)}catch{}},Ss=(s={})=>{const{storageKey:e=se,persist:t=!0}=s,r=s.storage,a=l.useRef(s.initial),n=l.useMemo(()=>G(a.current??{}),[]),[o,i]=l.useState(n),[c,d]=l.useState([]),[S,m]=l.useState(!t),p=l.useRef(o);p.current=o,l.useEffect(()=>{if(!t){m(!0);return}const g=nt(e,r);if(g){const y=G(g.config,n);p.current=y,i(y),d(g.warnings),g.migrated&&pe(y,e,r)}m(!0)},[t,e,r,n]);const f=l.useCallback((g,y)=>(p.current=g,i(g),d(y),t&&pe(g,e,r),g),[t,e,r]),h=l.useCallback(g=>{const y=[],_=G({...g,updatedAt:Date.now()},p.current,y);return f(_,y)},[f]),T=l.useCallback(()=>{const g=fe(n,{},0);return p.current=g,i(g),d([]),t&&at(e,r),g},[n,t,e,r]),A=l.useCallback(g=>{const y=Me(g);return y.warnings.some(_=>_.startsWith("not valid JSON")||_.startsWith("not an object"))?(d([`import: ${y.warnings[0]}; config unchanged`]),p.current):f(fe(y.config,{},Date.now()),y.warnings)},[f]);return l.useMemo(()=>({config:o,hydrated:S,warnings:c,update:h,reset:T,importJson:A,json:Te(o),providerProps:Je(o),cameraRequest:et(o),trackerProps:g=>tt(o,g),modelOptions:g=>st(o,g),enabledModels:rt(o)}),[o,S,c,h,T,A])};exports.CAMERA_PERMISSION_MESSAGES=u.CAMERA_PERMISSION_MESSAGES;exports.DEFAULT_PERFORMANCE_BUDGET=u.DEFAULT_PERFORMANCE_BUDGET;exports.DEFAULT_QUALITY_TIERS=u.DEFAULT_QUALITY_TIERS;exports.XRMediaSource=u.XRMediaSource;exports.XRModel=u.XRModel;exports.XRProvider=u.XRProvider;exports.XRQualityController=u.XRQualityController;exports.XR_FALLBACK_MESSAGES=u.XR_FALLBACK_MESSAGES;exports.XR_MODEL_ASSET_URLS=u.XR_MODEL_ASSET_URLS;exports.canPromptForCamera=u.canPromptForCamera;exports.computeFeedCrop=u.computeFeedCrop;exports.computeFitLayout=u.computeFitLayout;exports.createFallbackReason=u.createFallbackReason;exports.detectXRCapabilities=u.detectXRCapabilities;exports.feedToSource=u.feedToSource;exports.feedToWorld=u.feedToWorld;exports.isFeedPointInSource=u.isFeedPointInSource;exports.isMirroredSourceKind=u.isMirroredSourceKind;exports.mirrorFeedX=u.mirrorFeedX;exports.orientSourcePoint=u.orientSourcePoint;exports.orientedSize=u.orientedSize;exports.queryCameraPermission=u.queryCameraPermission;exports.requestCameraAccess=u.requestCameraAccess;exports.resolveModelAssetUrl=u.resolveModelAssetUrl;exports.resolveQualityConfig=u.resolveQualityConfig;exports.resolveTrackerSupport=u.resolveTrackerSupport;exports.sourceToFeed=u.sourceToFeed;exports.subscribeCameraPermission=u.subscribeCameraPermission;exports.trackerToWorld=u.trackerToWorld;exports.worldToFeed=u.worldToFeed;exports.worldToTracker=u.worldToTracker;exports.ScreenTransform=he.ScreenTransform;exports.XRScene=he.XRScene;exports.LightObject=w.LightObject;exports.LookAt=w.LookAt;exports.RenderGroupLayer=w.RenderGroupLayer;exports.SCREEN_IMAGE_MASK_CHANNELS=w.SCREEN_IMAGE_MASK_CHANNELS;exports.SceneObjectRenderer=w.SceneObjectRenderer;exports.ScreenImage=w.ScreenImage;exports.ScreenSpaceUI=w.ScreenSpaceUI;exports.ScreenText=w.ScreenText;exports.SequentialRenderPasses=w.SequentialRenderPasses;exports.TextLabel=w.TextLabel;exports.computeContainScale=w.computeContainScale;exports.DEFAULT_SCREEN_GLASS=v.DEFAULT_SCREEN_GLASS;exports.DEFAULT_SCREEN_IMAGE_SCENE_SETTINGS=v.DEFAULT_SCREEN_IMAGE_SCENE_SETTINGS;exports.DEFAULT_SCREEN_IMAGE_SETTINGS=v.DEFAULT_SCREEN_IMAGE_SETTINGS;exports.DEFAULT_SCREEN_SHAPE_SETTINGS=v.DEFAULT_SCREEN_SHAPE_SETTINGS;exports.DEFAULT_SCREEN_TEXT_SCENE_SETTINGS=v.DEFAULT_SCREEN_TEXT_SCENE_SETTINGS;exports.DEFAULT_SCREEN_TEXT_SHADOW_LAYER=v.DEFAULT_SCREEN_TEXT_SHADOW_LAYER;exports.EXTERNAL_BACKGROUND_RENDER_LAYER=v.EXTERNAL_BACKGROUND_RENDER_LAYER;exports.MAX_RENDER_GROUP_PASSES=v.MAX_RENDER_GROUP_PASSES;exports.PinToMesh=v.PinToMesh;exports.ScreenGlassMaterial=v.ScreenGlassMaterial;exports.ScreenShape=v.ScreenShape;exports.getRenderGroupLayer=v.getRenderGroupLayer;exports.mapScreenImageSettingsToProps=v.mapScreenImageSettingsToProps;exports.mapScreenTextInnerShadowToProps=v.mapScreenTextInnerShadowToProps;exports.mapScreenTextSettingsToProps=v.mapScreenTextSettingsToProps;exports.mergeScreenShapeSettings=v.mergeScreenShapeSettings;exports.normalizeScreenGlass=v.normalizeScreenGlass;exports.renderSequentialPasses=v.renderSequentialPasses;exports.MeshMaterial=Le.MeshMaterial;exports.DEFAULT_MESH_RENDERER=Q.DEFAULT_MESH_RENDERER;exports.DEFAULT_MESH_RENDERER_RENDER_STATE=Q.DEFAULT_MESH_RENDERER_RENDER_STATE;exports.MeshRenderer=Q.MeshRenderer;exports.normalizeMeshRendererRenderState=Q.normalizeMeshRendererRenderState;exports.useScreenRectAspect=Q.useScreenRectAspect;exports.DEFAULT_MATERIAL_FILL=z.DEFAULT_MATERIAL_FILL;exports.DEFAULT_SCREEN_GRADIENT=z.DEFAULT_SCREEN_GRADIENT;exports.DEFAULT_TRANSFORM_3D=z.DEFAULT_TRANSFORM_3D;exports.MaterialFill=z.MaterialFill;exports.ScreenGradientMaterial=z.ScreenGradientMaterial;exports.Transform3D=z.Transform3D;exports.createTwoStopGradient=z.createTwoStopGradient;exports.normalizeScreenGradient=z.normalizeScreenGradient;exports.drawNormalizedCrop=Ie.drawNormalizedCrop;exports.resolveNormalizedCrop=Ie.resolveNormalizedCrop;exports.DEFAULT_PIXEL_SNAP_INCREMENT=Y.DEFAULT_PIXEL_SNAP_INCREMENT;exports.DEFAULT_REFERENCE_PIXELS_PER_UNIT=Y.DEFAULT_REFERENCE_PIXELS_PER_UNIT;exports.DEFAULT_SCREEN_TRANSFORM_2D=Y.DEFAULT_SCREEN_TRANSFORM_2D;exports.DEFAULT_SCREEN_TRANSFORM_ROOT=Y.DEFAULT_SCREEN_TRANSFORM_ROOT;exports.mergeScreenTransform2D=Y.mergeScreenTransform2D;exports.resolveScreenTransform2D=Y.resolveScreenTransform2D;exports.clientToScreenPixels=C.clientToScreenPixels;exports.feedToScreenPixels=C.feedToScreenPixels;exports.feedToTracker=C.feedToTracker;exports.feedToViewport=C.feedToViewport;exports.mediaToScreenPixels=C.mediaToScreenPixels;exports.normalizedToScreenPixels=C.normalizedToScreenPixels;exports.screenPixelsToClient=C.screenPixelsToClient;exports.screenPixelsToFeed=C.screenPixelsToFeed;exports.screenPixelsToMedia=C.screenPixelsToMedia;exports.screenPixelsToNormalized=C.screenPixelsToNormalized;exports.screenPixelsToScreenSpace=C.screenPixelsToScreenSpace;exports.screenPixelsToUnits=C.screenPixelsToUnits;exports.screenPointToRay=C.screenPointToRay;exports.screenSpaceToScreenPixels=C.screenSpaceToScreenPixels;exports.screenUnitsToPixels=C.screenUnitsToPixels;exports.trackerPointToScreenPixels=C.trackerPointToScreenPixels;exports.trackerToFeed=C.trackerToFeed;exports.viewportToFeed=C.viewportToFeed;exports.worldToScreenPixels=C.worldToScreenPixels;exports.useXRCapabilities=ut.useXRCapabilities;exports.AspectRatioContainer=bt;exports.AudioEngine=je;exports.AudioPlayer=Xt;exports.Axes=At;exports.CameraPermissionGate=es;exports.DEFAULT_ASSET_BUDGET_BYTES=ze;exports.DEFAULT_TRACKING_CONFIG=ye;exports.FULL_SCREEN_ANCHORS=Oe;exports.Panel=yt;exports.PersonCutout=Rt;exports.SpriteAnimation=vt;exports.TRACKER_KINDS=gs;exports.TRACKING_CONFIG_STORAGE_KEY=se;exports.TRACKING_CONFIG_VERSION=te;exports.VideoBackground=Mt;exports.XRAssetCache=Ke;exports.XRAssetCacheProvider=ms;exports.audio=D;exports.clearTrackingConfig=at;exports.createAssetCache=$e;exports.dataURLtoFile=Nt;exports.defineGltfAsset=us;exports.defineTextureAsset=ls;exports.defineVideoAsset=ds;exports.disposeObject3D=me;exports.enabledModels=rt;exports.estimateGeometryBytes=We;exports.estimateObjectBytes=Ve;exports.estimateTextureBytes=ce;exports.findCameraByFacing=os;exports.getDefaultAssetCache=Se;exports.isMuted=Vt;exports.listCameras=as;exports.loadTrackingConfig=nt;exports.mergeTrackingConfig=fe;exports.onMuteChange=Qt;exports.parseTrackingConfig=Me;exports.playOneShot=$t;exports.prefetchMusic=jt;exports.registerSound=Bt;exports.resolvePersonCutoutStatus=Ge;exports.resolveTrackingConfig=G;exports.saveTrackingConfig=pe;exports.serializeTrackingConfig=Te;exports.setMuted=Wt;exports.shouldDrawFallback=qe;exports.smoothNumber=V;exports.smoothVector2=pt;exports.smoothVector3=ht;exports.startMusic=zt;exports.stopMusic=Kt;exports.toCameraRequest=et;exports.toModelOptions=st;exports.toProviderProps=Je;exports.toTrackerProps=tt;exports.toggleMuted=Ht;exports.useCameraPermission=Be;exports.useFrameCapture=Pt;exports.useMediaRecorder=xt;exports.useMuted=Yt;exports.usePersonMaskTexture=Xe;exports.useXRAsset=fs;exports.useXRAssetCache=Ee;exports.useXRAssetStats=ps;exports.useXRQuality=is;exports.useXRTrackingConfig=Ss;
|