@vincentt-xr/sdk 2.0.0-alpha.8 → 2.0.0-alpha.9
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 +4643 -170
- package/README.md +1 -0
- package/dist/CanonicalHeadFrame-BHcWyaiK.js +1506 -0
- package/dist/CanonicalHeadFrame-D-_T1OMU.cjs +1 -0
- package/dist/DebuggerUI-7ngnJsBe.js +275 -0
- package/dist/DebuggerUI-CoglgKdO.cjs +1 -0
- package/dist/FaceRetouch-CLoTfrcs.js +1071 -0
- package/dist/FaceRetouch-J1lC1WbS.cjs +134 -0
- package/dist/FaceSurface-CHAMEeG1.cjs +1 -0
- package/dist/FaceSurface-DmP9AEeC.js +27 -0
- package/dist/SegmentationOverlay-D_FWkcyP.cjs +35 -0
- package/dist/SegmentationOverlay-vn5x_knv.js +6237 -0
- package/dist/SkeletonUtils-C2r90MtN.js +21 -0
- package/dist/SkeletonUtils-CddIup1F.cjs +1 -0
- package/dist/TextLabel-XE0rQSDn.cjs +2 -0
- package/dist/TextLabel-c9BCucOI.js +961 -0
- package/dist/assets/gltfLoader.d.ts +16 -0
- package/dist/assets/loaders.d.ts +16 -1
- package/dist/body-pose/index.d.ts +521 -0
- package/dist/body-trigger/__fixtures__/syntheticBody.d.ts +83 -0
- package/dist/body-trigger/frame.d.ts +88 -0
- package/dist/body-trigger/index.d.ts +6 -0
- package/dist/body-trigger/moves.d.ts +235 -0
- package/dist/body-trigger/trigger.d.ts +75 -0
- package/dist/calibration/calibration.d.ts +11 -6
- package/dist/canonicalFace-BHwyCx1c.js +9 -0
- package/dist/canonicalFace-C83I225R.cjs +1 -0
- package/dist/components/BodyInstruction/BodyPoseHint.d.ts +63 -0
- package/dist/components/BodyInstruction/index.d.ts +69 -0
- package/dist/components/BodyInstruction/useBodyPose.d.ts +23 -0
- package/dist/components/BodyTracker/index.d.ts +10 -2
- package/dist/components/BodyTrigger/index.d.ts +49 -0
- package/dist/components/Debugger/DebuggerProvider.d.ts +14 -1
- package/dist/components/Debugger/DebuggerUI.d.ts +3 -1
- package/dist/components/FaceAtlas/FaceAtlasLayer.d.ts +114 -0
- package/dist/components/FaceAtlas/MadeUpCamera.d.ts +80 -0
- package/dist/components/FaceAtlas/constants.d.ts +8 -0
- package/dist/components/FaceAtlas/index.d.ts +7 -0
- package/dist/components/FaceAtlas/useFaceAtlasSurface.d.ts +84 -0
- package/dist/components/FaceAtlas/useFaceSkin.d.ts +84 -0
- package/dist/components/FaceCharacter/ExternalFaceMesh.d.ts +109 -0
- package/dist/components/FaceCharacter/FaceExpressionController.d.ts +53 -0
- package/dist/components/FaceCharacter/FaceMorph.d.ts +71 -0
- package/dist/components/FaceCharacter/FacePiercing.d.ts +65 -0
- package/dist/components/FaceCharacter/FaceReprojection.d.ts +85 -0
- package/dist/components/FaceCharacter/FaceRig.d.ts +38 -0
- package/dist/components/FaceCharacter/FaceSurface.d.ts +49 -0
- package/dist/components/FaceCharacter/FaceSurfaceOccluder.d.ts +39 -0
- package/dist/components/FaceCharacter/PinToFaceMesh.d.ts +68 -0
- package/dist/components/FaceCharacter/index.d.ts +18 -0
- package/dist/components/FaceCharacter/useFaceReprojector.d.ts +10 -0
- package/dist/components/FaceInset/FaceInset.d.ts +68 -0
- package/dist/components/FaceInset/frame.d.ts +94 -0
- package/dist/components/FaceInset/index.d.ts +6 -0
- package/dist/components/FaceInset/material.d.ts +40 -0
- package/dist/components/FaceInset/useFaceInsetTexture.d.ts +37 -0
- package/dist/components/FaceInstruction/FaceExpressionHint.d.ts +43 -0
- package/dist/components/FaceInstruction/index.d.ts +56 -0
- package/dist/components/FaceInstruction/useFaceExpression.d.ts +20 -0
- package/dist/components/FaceLiquify/FaceLiquify.d.ts +49 -0
- package/dist/components/FaceLiquify/debug.d.ts +37 -0
- package/dist/components/FaceLiquify/frame.d.ts +55 -0
- package/dist/components/FaceLiquify/index.d.ts +10 -0
- package/dist/components/FaceLiquify/material.d.ts +39 -0
- package/dist/components/FaceLiquify/pass.d.ts +49 -0
- package/dist/components/FaceLiquify/presence.d.ts +25 -0
- package/dist/components/FaceLiquify/presets.d.ts +82 -0
- package/dist/components/FaceLiquify/selfTest.d.ts +66 -0
- package/dist/components/FaceLiquify/target.d.ts +85 -0
- package/dist/components/FaceLiquify/warp.d.ts +72 -0
- package/dist/components/FaceMesh/canonical/CanonicalFaceMeshRenderer.d.ts +5 -3
- package/dist/components/FaceMesh/canonical/geometryGroups.d.ts +21 -0
- package/dist/components/FaceMesh/canonical/parseCanonicalFaceModel.d.ts +9 -0
- package/dist/components/FaceMesh/index.d.ts +1 -1
- package/dist/components/FaceRetouch/Background.d.ts +3 -1
- package/dist/components/FaceRetouch/FaceRetouch.d.ts +5 -0
- package/dist/components/FaceRetouch/renderState.d.ts +19 -0
- package/dist/components/FaceSwap/FaceMirror.d.ts +46 -0
- package/dist/components/FaceSwap/FaceSwap.d.ts +58 -0
- package/dist/components/FaceSwap/FaceTextureLayer.d.ts +72 -0
- package/dist/components/FaceSwap/faceSwapPlan.d.ts +91 -0
- package/dist/components/FaceSwap/index.d.ts +13 -0
- package/dist/components/FaceSwap/settings.d.ts +300 -0
- package/dist/components/FaceSwap/useFaceTexture.d.ts +35 -0
- package/dist/components/FaceSwap/useLiveFace.d.ts +38 -0
- package/dist/components/FaceSwap/useLiveFaceTexture.d.ts +31 -0
- package/dist/components/FaceWarp3D/FaceWarp3D.d.ts +50 -0
- package/dist/components/FaceWarp3D/index.d.ts +2 -3
- package/dist/components/Faceless/Faceless.d.ts +51 -0
- package/dist/components/Faceless/index.d.ts +2 -0
- package/dist/components/HairLock/HairLock.d.ts +39 -0
- package/dist/components/HairLock/index.d.ts +2 -0
- package/dist/components/HairLock/lockGeometry.d.ts +15 -0
- package/dist/components/HandCutout/index.d.ts +35 -0
- package/dist/components/HandInstruction/HandGestureHint.d.ts +70 -0
- package/dist/components/HandInstruction/index.d.ts +74 -0
- package/dist/components/HandInstruction/useHandGesture.d.ts +22 -0
- package/dist/components/HandRig/ForearmOccluder.d.ts +29 -0
- package/dist/components/HandRig/HandAttachment.d.ts +34 -0
- package/dist/components/HandRig/HandOccluder.d.ts +55 -0
- package/dist/components/HandRig/HandTattoo.d.ts +61 -0
- package/dist/components/HandRig/WristAttachment.d.ts +34 -0
- package/dist/components/HandRig/index.d.ts +101 -0
- package/dist/components/HandRig/useArmMask.d.ts +29 -0
- package/dist/components/HandRig/wristSolve.d.ts +69 -0
- package/dist/components/HandTouch/HandTouch.d.ts +62 -0
- package/dist/components/HandTouch/Touchable.d.ts +36 -0
- package/dist/components/HandTouch/index.d.ts +2 -0
- package/dist/components/HeadBinding/index.d.ts +14 -0
- package/dist/components/HeadOccluder/CanonicalHeadFrame.d.ts +22 -0
- package/dist/components/HeadOccluder/Earrings.d.ts +55 -0
- package/dist/components/HeadOccluder/HeadAttachment.d.ts +38 -0
- package/dist/components/HeadOccluder/NeckOccluder.d.ts +64 -0
- package/dist/components/HeadOccluder/earringPlacement.d.ts +31 -0
- package/dist/components/HeadOccluder/headAttachmentPoints.d.ts +69 -0
- package/dist/components/HeadOccluder/index.d.ts +57 -3
- package/dist/components/HeadOccluder/useCanonicalHeadFit.d.ts +36 -0
- package/dist/components/HeadOccluder/useLandmarkPoseFit.d.ts +80 -0
- package/dist/components/Instruction/HintStage.d.ts +29 -0
- package/dist/components/Instruction/InstructionCue.d.ts +126 -0
- package/dist/components/Instruction/gestureHold.d.ts +20 -0
- package/dist/components/Instruction/ghost.d.ts +129 -0
- package/dist/components/Instruction/hintBlend.d.ts +19 -0
- package/dist/components/Instruction/hintLook.d.ts +81 -0
- package/dist/components/Instruction/hintLoop.d.ts +36 -0
- package/dist/components/Instruction/index.d.ts +41 -0
- package/dist/components/Instruction/useGhostModel.d.ts +33 -0
- package/dist/components/Instruction/useInstructionHold.d.ts +72 -0
- package/dist/components/LipEffect/LipEffect.d.ts +22 -2
- package/dist/components/LipEffect/LipEffectMaterial.d.ts +62 -10
- package/dist/components/LipEffect/LipEffects.d.ts +5 -2
- package/dist/components/LipEffect/defaults.d.ts +21 -2
- package/dist/components/LipEffect/index.d.ts +1 -1
- package/dist/components/LipEffect/lipShading.d.ts +73 -0
- package/dist/components/LipEffect/settings.d.ts +117 -13
- package/dist/components/LipEffect/shader.d.ts +39 -0
- package/dist/components/LipEffect/types.d.ts +82 -10
- package/dist/components/LipEffect/useLipDesignTextures.d.ts +6 -0
- package/dist/components/LipEffect/uvGuide.d.ts +31 -16
- package/dist/components/Makeup/Blush.d.ts +18 -0
- package/dist/components/Makeup/Brows.d.ts +20 -0
- package/dist/components/Makeup/Contour.d.ts +17 -0
- package/dist/components/Makeup/Eyeliner.d.ts +20 -0
- package/dist/components/Makeup/Eyeshadow.d.ts +20 -0
- package/dist/components/Makeup/Highlighter.d.ts +18 -0
- package/dist/components/Makeup/MakeupDesign.d.ts +37 -0
- package/dist/components/Makeup/MakeupRegion.d.ts +132 -0
- package/dist/components/Makeup/constants.d.ts +44 -0
- package/dist/components/Makeup/design.d.ts +106 -0
- package/dist/components/Makeup/designSamples.d.ts +42 -0
- package/dist/components/Makeup/eyes.d.ts +114 -0
- package/dist/components/Makeup/fields.d.ts +10 -0
- package/dist/components/Makeup/geometry.d.ts +106 -0
- package/dist/components/Makeup/index.d.ts +26 -0
- package/dist/components/Makeup/looks.d.ts +28 -0
- package/dist/components/Makeup/material.d.ts +239 -0
- package/dist/components/Makeup/settings.d.ts +54 -0
- package/dist/components/Makeup/shades.d.ts +143 -0
- package/dist/components/Makeup/shapes.d.ts +27 -0
- package/dist/components/Makeup/skinTone.d.ts +135 -0
- package/dist/components/Makeup/types.d.ts +110 -0
- package/dist/components/Makeup/useMakeupSkinTone.d.ts +40 -0
- package/dist/components/Necklace/Necklace.d.ts +44 -0
- package/dist/components/Necklace/index.d.ts +1 -0
- package/dist/components/ParticleEmitter/ParticleEmitter.d.ts +69 -0
- package/dist/components/ParticleEmitter/index.d.ts +1 -0
- package/dist/components/ShoulderOccluder/index.d.ts +43 -0
- package/dist/components/ShoulderOccluder/useCanonicalTorsoFit.d.ts +24 -0
- package/dist/components/SpringSwing/SpringSwing.d.ts +22 -0
- package/dist/components/SpringSwing/index.d.ts +1 -0
- package/dist/components/XRScene/renderOutputTarget.d.ts +12 -0
- package/dist/components/index.d.ts +8 -0
- package/dist/config/index.d.ts +0 -1
- package/dist/context-DTxSQvp4.js +13 -0
- package/dist/context-hA0Rb2Xa.cjs +1 -0
- package/dist/contexts-BH7PdKFS.cjs +1 -0
- package/dist/contexts-jak8-tND.js +667 -0
- package/dist/coordinates/index.d.ts +2 -0
- package/dist/coordinates/side.d.ts +40 -0
- package/dist/debug-ui/default-setting.cjs +2 -2
- package/dist/debug-ui/face-swap-settings/index.d.ts +22 -0
- package/dist/debug-ui/hierarchy-panel/index.d.ts +3 -2
- package/dist/debug-ui/index.d.ts +4 -3
- package/dist/debug-ui/media-source/index.d.ts +1 -1
- package/dist/debug-ui/media-source/session.d.ts +30 -2
- package/dist/debug-ui/media-source.cjs +1 -1
- package/dist/debug-ui/media-source.js +1 -1
- package/dist/debug-ui/object-inspector-panel/index.d.ts +3 -2
- package/dist/debug-ui/product-hotspots/index.d.ts +3 -2
- package/dist/debug-ui/scene-editor/hierarchy-panel.d.ts +3 -1
- package/dist/debug-ui/scene-editor/inspector-panel.d.ts +3 -1
- package/dist/debug-ui/screen-image-settings/index.d.ts +3 -1
- package/dist/debug-ui/screen-text-settings/ScreenTextSettingsPanel.d.ts +1 -1
- package/dist/debug-ui/screen-text-settings/types.d.ts +2 -0
- package/dist/debug-ui/settings-panel/index.d.ts +6 -1
- package/dist/debug-ui/shared/debugWindow.d.ts +51 -0
- package/dist/debug-ui/xr-diagnostics/index.d.ts +3 -2
- package/dist/debug-ui.cjs +3 -3
- package/dist/debug-ui.js +2250 -2472
- package/dist/entries/all.d.ts +3 -1
- package/dist/entries/core.d.ts +3 -2
- package/dist/entries/face-effects.d.ts +114 -8
- package/dist/entries/instructions.d.ts +48 -0
- package/dist/entries/internal.d.ts +2 -1
- package/dist/entries/low-level.d.ts +28 -1
- package/dist/entries/particles.d.ts +11 -0
- package/dist/entries/tracking.d.ts +37 -2
- package/dist/face-atlas/attributes.d.ts +30 -0
- package/dist/face-atlas/eyes.d.ts +272 -0
- package/dist/face-atlas/faceAtlas.generated.d.ts +46 -0
- package/dist/face-atlas/glsl/atlasVertex.d.ts +46 -0
- package/dist/face-atlas/glsl/common.d.ts +55 -0
- package/dist/face-atlas/glsl/design.d.ts +49 -0
- package/dist/face-atlas/glsl/eyes.d.ts +73 -0
- package/dist/face-atlas/glsl/finish.d.ts +24 -0
- package/dist/face-atlas/glsl/format.d.ts +4 -0
- package/dist/face-atlas/glsl/index.d.ts +59 -0
- package/dist/face-atlas/glsl/shading.d.ts +15 -0
- package/dist/face-atlas/glsl/shapes.d.ts +66 -0
- package/dist/face-atlas/glsl/sparkle.d.ts +19 -0
- package/dist/face-atlas/glsl/uniforms.d.ts +106 -0
- package/dist/face-atlas/guide.d.ts +51 -0
- package/dist/face-atlas/index.d.ts +25 -0
- package/dist/face-atlas/lead.d.ts +117 -0
- package/dist/face-atlas/madeUpCamera.d.ts +125 -0
- package/dist/face-atlas/masks.d.ts +53 -0
- package/dist/face-atlas/obj.d.ts +69 -0
- package/dist/face-atlas/polylines.d.ts +63 -0
- package/dist/face-atlas/probe/FaceSkinProbe.d.ts +208 -0
- package/dist/face-atlas/probe/__fixtures__/emulate.d.ts +9 -0
- package/dist/face-atlas/probe/__fixtures__/face.d.ts +24 -0
- package/dist/face-atlas/probe/constants.d.ts +137 -0
- package/dist/face-atlas/probe/glsl.d.ts +43 -0
- package/dist/face-atlas/probe/lightFit.d.ts +108 -0
- package/dist/face-atlas/probe/schedule.d.ts +44 -0
- package/dist/face-atlas/probe/selfTest.d.ts +87 -0
- package/dist/face-atlas/probe/stats.d.ts +143 -0
- package/dist/face-atlas/probe/targets.d.ts +70 -0
- package/dist/face-atlas/probe/unwrap.d.ts +76 -0
- package/dist/face-atlas/quality.d.ts +28 -0
- package/dist/face-atlas/regions.d.ts +31 -0
- package/dist/face-atlas/registry.d.ts +252 -0
- package/dist/face-atlas/renderState.d.ts +86 -0
- package/dist/face-atlas/selfOcclusion.d.ts +62 -0
- package/dist/face-atlas/shading.d.ts +406 -0
- package/dist/face-atlas/shapes.d.ts +86 -0
- package/dist/face-atlas/sides.d.ts +41 -0
- package/dist/face-atlas/skinMask.d.ts +35 -0
- package/dist/face-atlas/surface.d.ts +155 -0
- package/dist/face-atlas/topology.d.ts +44 -0
- package/dist/face-character/__fixtures__/faceImageDetections.d.ts +25 -0
- package/dist/face-character/__fixtures__/faceNode.d.ts +22 -0
- package/dist/face-character/bindFaceModel.d.ts +106 -0
- package/dist/face-character/canonicalFace.d.ts +17 -0
- package/dist/face-character/canonicalFaceGeometry.d.ts +11 -0
- package/dist/face-character/canonicalFacePositions.d.ts +7 -0
- package/dist/face-character/driveFaceModel.d.ts +57 -0
- package/dist/face-character/expressionOutputs.d.ts +45 -0
- package/dist/face-character/faceExpressions.d.ts +104 -0
- package/dist/face-character/faceImageLandmarker.d.ts +93 -0
- package/dist/face-character/faceMeshBinding.d.ts +62 -0
- package/dist/face-character/faceMorph.d.ts +77 -0
- package/dist/face-character/faceMorphs.d.ts +46 -0
- package/dist/face-character/facePhoto.d.ts +138 -0
- package/dist/face-character/facePiercings.d.ts +116 -0
- package/dist/face-character/facePin.d.ts +131 -0
- package/dist/face-character/faceReprojection.d.ts +273 -0
- package/dist/face-character/faceReprojector.d.ts +171 -0
- package/dist/face-character/faceRig.d.ts +176 -0
- package/dist/face-character/faceSwapPresence.d.ts +85 -0
- package/dist/face-character/faceTexture.d.ts +169 -0
- package/dist/face-character/faceTextureBaker.d.ts +86 -0
- package/dist/face-character/faceTextureGuide.d.ts +106 -0
- package/dist/face-character/faceTextureStats.d.ts +298 -0
- package/dist/face-character/faceTransfer.d.ts +396 -0
- package/dist/face-character/faceTransferGeometry.d.ts +109 -0
- package/dist/face-character/faceTransferSelfTest.d.ts +94 -0
- package/dist/face-character/faceWarp3D.d.ts +101 -0
- package/dist/face-character/faceless.d.ts +79 -0
- package/dist/face-character/featureWarp.d.ts +28 -0
- package/dist/face-character/liveFaceRegistry.d.ts +370 -0
- package/dist/face-character/liveValue.d.ts +12 -0
- package/dist/face-character/memo.d.ts +15 -0
- package/dist/face-effects.cjs +2252 -83
- package/dist/face-effects.js +14234 -1231
- package/dist/face-expression/index.d.ts +182 -0
- package/dist/face-info/landmarks.d.ts +17 -3
- package/dist/face-info/types.d.ts +20 -3
- package/dist/gestures/definitions.d.ts +15 -2
- package/dist/gestures/index.d.ts +1 -1
- package/dist/gestures/measures.d.ts +21 -8
- package/dist/getFaceInfo-B1otSDMX.cjs +1 -0
- package/dist/getFaceInfo-Cu4xDWiL.js +62 -0
- package/dist/hand/armFit.d.ts +46 -0
- package/dist/hand/armMask.d.ts +178 -0
- package/dist/hand/handCutout.d.ts +23 -0
- package/dist/hand/handCutoutRegistry.d.ts +7 -0
- package/dist/hand/handGestures.d.ts +524 -0
- package/dist/hand/handPose.d.ts +98 -0
- package/dist/hand/handRigSolver.d.ts +159 -0
- package/dist/hand/handTattoo.d.ts +81 -0
- package/dist/hand/handTouch.d.ts +240 -0
- package/dist/hand/wrist.d.ts +44 -0
- package/dist/hand/wristFilter.d.ts +44 -0
- package/dist/hooks/selectors.d.ts +8 -0
- package/dist/hooks/useFaceModelAcquisition.d.ts +38 -0
- package/dist/hooks/useTrackerContext.d.ts +6 -0
- package/dist/index-B1_TzJaI.js +1104 -0
- package/dist/index-BavF06C6.js +190 -0
- package/dist/index-BfFmpddl.cjs +21 -0
- package/dist/index-BuBzneeW.cjs +46 -0
- package/dist/index-CGsQWodV.cjs +1 -0
- package/dist/index-CIe7eCMH.js +3200 -0
- package/dist/index-CfSF8LXa.cjs +1 -0
- package/dist/index-D5GTzOzD.cjs +1 -0
- package/dist/index-DBhQzvVa.js +314 -0
- package/dist/index-DE17y0ZI.cjs +1 -0
- package/dist/index-JII7huPk.js +442 -0
- package/dist/index-tpCr9CLj.cjs +1 -0
- package/dist/{renderPasses-NnKZVfBy.js → index-w1S7fI2B.js} +219 -247
- package/dist/index-zGaqrz_K.js +188 -0
- package/dist/instructions.cjs +30 -0
- package/dist/instructions.js +1507 -0
- package/dist/{internal-vsfNQycj.js → internal-B90P-clC.js} +138 -118
- package/dist/internal-Cjinca64.cjs +1 -0
- package/dist/internal.cjs +1 -1
- package/dist/internal.js +15 -10
- package/dist/iris/compute.d.ts +7 -5
- package/dist/iris/types.d.ts +6 -4
- package/dist/{landmarkMask-CbTFzBYG.js → landmarkMask-BFDyBnKM.js} +6 -6
- package/dist/landmarks-BlUqf5MZ.cjs +1 -0
- package/dist/landmarks-bftdwq6Z.js +76 -0
- package/dist/loaders-BGAUACsd.js +363 -0
- package/dist/loaders-BJ1_QCHt.cjs +1 -0
- package/dist/low-level.cjs +1 -1
- package/dist/low-level.js +666 -602
- package/dist/main.cjs +1 -1
- package/dist/main.js +866 -1182
- package/dist/models/Body/index.d.ts +2 -0
- package/dist/models/Face/constants.d.ts +8 -0
- package/dist/models/Face/index.d.ts +3 -11
- package/dist/models/Face/rotation.d.ts +18 -3
- package/dist/models/Hand/HandTracking.d.ts +17 -1
- package/dist/models/Segmentation/index.d.ts +2 -0
- package/dist/models/nodeSource.d.ts +9 -0
- package/dist/particles/emission.d.ts +24 -0
- package/dist/particles/eyes.d.ts +24 -0
- package/dist/particles/glsl.d.ts +14 -0
- package/dist/particles/index.d.ts +10 -0
- package/dist/particles/motion.d.ts +42 -0
- package/dist/particles/presets.d.ts +12 -0
- package/dist/particles/ring.d.ts +58 -0
- package/dist/particles/selfTest.d.ts +53 -0
- package/dist/particles/settings.d.ts +127 -0
- package/dist/particles/shapes.d.ts +29 -0
- package/dist/particles/spawner.d.ts +60 -0
- package/dist/particles/system.d.ts +64 -0
- package/dist/particles.cjs +122 -0
- package/dist/particles.js +774 -0
- package/dist/product.cjs +1 -1
- package/dist/product.js +29 -29
- package/dist/{providers-C0Dlhh9Z.js → providers-C8rE26Uf.js} +127 -126
- package/dist/providers-DHsrhDI2.cjs +62 -0
- package/dist/render/renderPasses.d.ts +8 -0
- package/dist/render/sceneBeforeRender.d.ts +12 -0
- package/dist/{renderGroups-CN1cGFUo.js → renderGroups-B38pUaX2.js} +1 -1
- package/dist/{renderGroups-O4KmaMl9.cjs → renderGroups-Cb_4Ar1Q.cjs} +1 -1
- package/dist/renderPasses-B6l8IpJv.js +1290 -0
- package/dist/renderPasses-dqmkft4P.cjs +158 -0
- package/dist/renderState-CJNmj5jz.js +39 -0
- package/dist/renderState-apSfg4eR.cjs +1 -0
- package/dist/scene-object.cjs +1 -1
- package/dist/scene-object.js +2 -2
- package/dist/segmentation-Cb3ouK6Z.js +1758 -0
- package/dist/segmentation-D9pYO6aR.cjs +1 -0
- package/dist/segmentation2d/types.d.ts +6 -0
- package/dist/select-Ck5LGz-J.cjs +1 -0
- package/dist/select-pYRo_win.js +233 -0
- package/dist/selectors-C4X71aoD.cjs +1 -0
- package/dist/selectors-DmNaKIwE.js +196 -0
- package/dist/session-BrH8G7iJ.cjs +31 -0
- package/dist/session-DgA_z6O1.js +418 -0
- package/dist/{settings-aQk845NJ.js → settings-BJ7FMBsO.js} +53 -15
- package/dist/settings-C63FMBlF.cjs +1 -0
- package/dist/similarityFit-BFqHND2e.cjs +1 -0
- package/dist/similarityFit-Bbz-R8AY.js +91 -0
- package/dist/spring/index.d.ts +2 -0
- package/dist/spring/spring.d.ts +69 -0
- package/dist/spring/swing.d.ts +54 -0
- package/dist/tracking.cjs +10 -1
- package/dist/tracking.js +1002 -855
- package/dist/trigger-D0Pm9noT.cjs +49 -0
- package/dist/trigger-IQeys0oS.js +2128 -0
- package/dist/types/face.d.ts +20 -1
- package/dist/types/hand-tracking.d.ts +9 -0
- package/dist/types/nodes.d.ts +20 -1
- package/dist/types/segmentation.d.ts +5 -0
- package/dist/updateThrottle-BseecYag.js +4 -0
- package/dist/updateThrottle-Of5Y4SVa.cjs +1 -0
- package/dist/useFaceInfo-BHDNCvsJ.cjs +1 -0
- package/dist/useFaceInfo-J4x7LsqL.js +76 -0
- package/dist/useFaceResultReader-BvEo5REG.js +61 -0
- package/dist/useFaceResultReader-DuaL1KJG.cjs +1 -0
- package/dist/useInstructionHold-DOu-RpCM.js +53 -0
- package/dist/useInstructionHold-DwJY1Alr.cjs +1 -0
- package/dist/useLandmarkPoseFit-Bg-h9BPb.cjs +1 -0
- package/dist/useLandmarkPoseFit-Bmb3h6Mw.js +87 -0
- package/dist/{useXRCapabilities-B1R2ghy-.cjs → useXRCapabilities-Cr3RzuAW.cjs} +1 -1
- package/dist/{useXRCapabilities-C68v__wB.js → useXRCapabilities-Cxmlmpbd.js} +1 -1
- package/dist/utils/canonicalRigidLandmarks.d.ts +8 -0
- package/dist/utils/headOccluderFit.d.ts +42 -0
- package/dist/utils/integrity.d.ts +17 -0
- package/dist/utils/resolveNumFaces.d.ts +13 -0
- package/dist/utils/shoulderOccluderFit.d.ts +38 -0
- package/dist/utils/similarityFit.d.ts +23 -0
- package/dist/uv-BMFt19bg.cjs +1 -0
- package/dist/{index-CsUdQ-pn.js → uv-DJU_XfmN.js} +15 -249
- package/docs/SDK_DOCUMENTATION.md +1 -2
- package/docs/api/adaptive-quality.mdx +1 -1
- package/docs/api/body-instructions.mdx +285 -0
- package/docs/api/body-triggers.mdx +234 -0
- package/docs/api/camera-permission.mdx +1 -1
- package/docs/api/coordinate-spaces.mdx +7 -4
- package/docs/api/cross-camera.mdx +3 -2
- package/docs/api/debug-ui-scene-editor.mdx +23 -2
- package/docs/api/external-face-mesh.mdx +231 -0
- package/docs/api/face-actions.mdx +20 -16
- package/docs/api/face-attribute-expression.mdx +1 -1
- package/docs/api/face-binding-anchors.mdx +4 -2
- package/docs/api/face-character.mdx +157 -0
- package/docs/api/face-effects.mdx +3 -0
- package/docs/api/face-expression-controller.mdx +153 -0
- package/docs/api/face-info.mdx +17 -11
- package/docs/api/face-inset.mdx +204 -0
- package/docs/api/face-instructions.mdx +183 -0
- package/docs/api/face-liquify.mdx +196 -0
- package/docs/api/face-mesh.mdx +4 -7
- package/docs/api/face-morph.mdx +117 -0
- package/docs/api/face-painting.mdx +7 -0
- package/docs/api/face-reprojection.mdx +154 -0
- package/docs/api/face-retouching.mdx +18 -10
- package/docs/api/face-swap.mdx +350 -0
- package/docs/api/face-warp-3d.mdx +166 -0
- package/docs/api/faceless.mdx +143 -0
- package/docs/api/gestures.mdx +68 -32
- package/docs/api/hair.mdx +97 -0
- package/docs/api/hand-instructions.mdx +222 -0
- package/docs/api/hand-rig.mdx +535 -0
- package/docs/api/hand-touch.mdx +162 -0
- package/docs/api/head-occluder.mdx +563 -0
- package/docs/api/holistic-tracker.mdx +6 -1
- package/docs/api/instructions.mdx +323 -0
- package/docs/api/iris-tracking.mdx +24 -19
- package/docs/api/made-up-camera.mdx +131 -0
- package/docs/api/makeup-skin-tone.mdx +135 -0
- package/docs/api/makeup.mdx +353 -0
- package/docs/api/multi-subject.mdx +4 -1
- package/docs/api/particles.mdx +155 -0
- package/docs/api/person-cutout.mdx +1 -1
- package/docs/api/pin-to-face-mesh.mdx +274 -0
- package/docs/api/product-ar.mdx +5 -2
- package/docs/api/segmentation-overlay.mdx +1 -1
- package/docs/docs.json +29 -1
- package/docs/examples/lip-shaders.mdx +82 -33
- package/docs/guides/face-atlas-template.svg +1 -0
- package/docs/guides/face-atlas-textures.mdx +186 -0
- package/docs/guides/face-texture-template.svg +1 -0
- package/docs/guides/harness-debug-ui.mdx +4 -4
- package/docs/guides/lip-effect-textures.mdx +178 -102
- package/docs/guides/lip-uv-template.png +0 -0
- package/docs/guides/lip-uv-template.svg +1 -1
- package/docs/guides/makeup-design-textures.mdx +109 -0
- package/docs/introduction.mdx +1 -2
- package/package.json +11 -1
- package/dist/DebuggerUI-C-ldiozL.js +0 -269
- package/dist/DebuggerUI-CWX5EtQv.cjs +0 -1
- package/dist/FaceMeshRenderer-BEEXZwS6.cjs +0 -158
- package/dist/FaceMeshRenderer-UuH5sTXG.js +0 -1322
- package/dist/FaceRetouch-C7h7x9kd.js +0 -683
- package/dist/FaceRetouch-DqftT26Y.cjs +0 -134
- package/dist/GLTFLoader-C5q63sKO.js +0 -1633
- package/dist/GLTFLoader-Cb_CRwmG.cjs +0 -1
- package/dist/SegmentationOverlay-DQuW3dsc.js +0 -133
- package/dist/SegmentationOverlay-aWVod8Kl.cjs +0 -1
- package/dist/components/FaceWarp3D/FaceWarp3DHead.d.ts +0 -15
- package/dist/components/FaceWarp3D/defaults.d.ts +0 -37
- package/dist/components/FaceWarp3D/warp.d.ts +0 -13
- package/dist/contexts-CO0sd4JQ.cjs +0 -1
- package/dist/contexts-FzlnnMYD.js +0 -669
- package/dist/debug-ui/face-warp-3d/index.d.ts +0 -6
- package/dist/getFaceInfo-BkZfaQs-.js +0 -118
- package/dist/getFaceInfo-ahPxQFGu.cjs +0 -1
- package/dist/index--RgGzZ6X.cjs +0 -47
- package/dist/index-CHVbH0hz.js +0 -214
- package/dist/index-CeVkgsag.cjs +0 -1
- package/dist/index-CnGox6Xr.js +0 -3054
- package/dist/index-DKBAh6hV.cjs +0 -1
- package/dist/index-DsZwTfG0.cjs +0 -1
- package/dist/index-Dw6tj2Mi.js +0 -144
- package/dist/index-OCPjOaeP.cjs +0 -1
- package/dist/index-s9pF4zkG.js +0 -2053
- package/dist/internal-BYza1h8_.cjs +0 -1
- package/dist/measures-9dQPdw96.js +0 -154
- package/dist/measures-KfJzpvod.cjs +0 -1
- package/dist/providers-YNwkmNeK.cjs +0 -62
- package/dist/renderPasses-Cg-zqmEz.cjs +0 -21
- package/dist/screenTransform-BenfCtZt.js +0 -44
- package/dist/screenTransform-BiXdpVf0.cjs +0 -1
- package/dist/segmentation-9PhSvc-R.cjs +0 -1
- package/dist/segmentation-CeOTKemr.js +0 -5
- package/dist/selectors-C5G1PMYL.js +0 -195
- package/dist/selectors-Du_PsVnW.cjs +0 -1
- package/dist/session-BBr0yN8h.cjs +0 -31
- package/dist/session-Cy0m7l7-.js +0 -363
- package/dist/settings-DRR7-snV.cjs +0 -1
- package/dist/useFaceInfo-Blf7FCu3.js +0 -303
- package/dist/useFaceInfo-C5mO8NQY.cjs +0 -1
package/dist/main.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
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;
|
|
1
|
+
"use strict";var Ve=Object.defineProperty;var Ye=(e,t,r)=>t in e?Ve(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var v=(e,t,r)=>Ye(e,typeof t!="symbol"?t+"":t,r);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("./index-CfSF8LXa.cjs"),me=require("./contexts-BH7PdKFS.cjs"),Pe=require("./TextLabel-XE0rQSDn.cjs"),g=require("react/jsx-runtime"),o=require("react"),U=require("three"),k=require("./index-BfFmpddl.cjs"),fe=require("@react-three/fiber"),Ze=require("./uv-BMFt19bg.cjs"),ie=require("./selectors-C4X71aoD.cjs"),Qe=require("./landmarks-BlUqf5MZ.cjs"),I=require("./index-BuBzneeW.cjs"),Je=require("@react-three/drei"),ve=require("./context-hA0Rb2Xa.cjs"),L=require("./renderPasses-dqmkft4P.cjs"),oe=require("./index-tpCr9CLj.cjs"),De=require("./drawNormalizedCrop-B-7zU-Xw.cjs"),et=require("./index-DE17y0ZI.cjs"),V=require("./index-D5GTzOzD.cjs"),A=require("./select-Ck5LGz-J.cjs"),tt=require("./useXRCapabilities-Cr3RzuAW.cjs"),N=require("./loaders-BJ1_QCHt.cjs"),rt=require("./segmentation-D9pYO6aR.cjs");function st(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const s=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,s.get?s:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const nt=st(U),$=(e,t,r,s)=>U.MathUtils.damp(e,t,Math.max(0,r),Math.max(0,s)),at=(e,t,r,s,n=new U.Vector2)=>n.set($(e.x,t.x,r,s),$(e.y,t.y,r,s)),it=(e,t,r,s,n=new U.Vector3)=>n.set($(e.x,t.x,r,s),$(e.y,t.y,r,s),$(e.z,t.z,r,s)),ot="rgba(20,40,110,0.88)",ct=24,lt=512;function ut({color:e=ot,borderColor:t,borderWidth:r=0,borderRadius:s=ct,resolution:n=lt,aspect:a=1,opacity:i=1,name:u,overlay:c=!0,position:d,rotation:E,scale:f,visible:p}){const m=o.useRef(null),h=o.useRef(null),R=o.useMemo(()=>dt({width:Math.round(n*Math.max(a,.05)),height:Math.round(n),color:e,borderColor:t,borderWidth:r,borderRadius:s}),[e,t,r,s,n,a]);o.useEffect(()=>()=>{R.dispose()},[R]);const C=o.useRef(null),S=o.useRef(i);return S.current!==i&&(S.current=i,C.current=null,h.current&&(h.current.opacity=i)),o.useEffect(()=>{const T=m.current;if(T)return T.userData.setOpacity=b=>{C.current=b,h.current&&(h.current.opacity=b)},()=>{delete T.userData.setOpacity}},[]),g.jsxs("mesh",{ref:m,name:u,position:d,rotation:E,scale:f,visible:p,children:[g.jsx("planeGeometry",{args:[1,1]}),g.jsx("meshBasicMaterial",{ref:h,map:R,transparent:!0,opacity:i,depthTest:!c,depthWrite:!c})]})}function dt(e){const{width:t,height:r,color:s,borderColor:n,borderWidth:a,borderRadius:i}=e,u=typeof OffscreenCanvas<"u"?new OffscreenCanvas(t,r):(()=>{const f=document.createElement("canvas");return f.width=t,f.height=r,f})(),c=u.getContext("2d");c.clearRect(0,0,t,r);const d=Math.min(i,Math.min(t,r)/2);c.beginPath(),c.moveTo(d,0),c.lineTo(t-d,0),c.quadraticCurveTo(t,0,t,d),c.lineTo(t,r-d),c.quadraticCurveTo(t,r,t-d,r),c.lineTo(d,r),c.quadraticCurveTo(0,r,0,r-d),c.lineTo(0,d),c.quadraticCurveTo(0,0,d,0),c.closePath(),c.fillStyle=s,c.fill(),n&&a>0&&(c.lineWidth=a,c.strokeStyle=n,c.stroke());const E=new nt.CanvasTexture(u);return E.needsUpdate=!0,E}const mt=({segmentationMask:e,segmentation:t,invert:r=!1,customBackground:s,renderOrder:n=Ze.RENDER_LAYERS.BACKGROUND})=>{const{camera:a,size:i}=fe.useThree(),u=ie.useXRCameraTexture(),c=ie.useXRModelNode(l.XRModel.BACKGROUND_SEGMENTATION),d=t?c==null?void 0:c.backgroundSegmentationMask:void 0,E=o.useRef(!1);o.useEffect(()=>{if(!t){E.current=!1;return}c===null&&!E.current&&(console.warn(`[VideoBackground] segmentation="${t}" set but no matching <Segmentation> component is mounted; rendering unmasked.`),E.current=!0)},[t,c]);const f=t?d:e,p=o.useMemo(()=>{if(!a.isPerspectiveCamera)return[10,10];const m=a,C=(m.position.z||5)- -1,S=m.fov*Math.PI/180,T=2*Math.tan(S/2)*C;return[T*(i.width/i.height),T]},[a,i]);return u?g.jsx("group",{position:[0,0,-1],children:r?g.jsxs(g.Fragment,{children:[g.jsxs("mesh",{position:[0,0,-.01],renderOrder:n-1,children:[g.jsx("planeGeometry",{args:p}),g.jsx("meshBasicMaterial",{map:u,depthTest:!1,depthWrite:!1,toneMapped:!1,side:U.DoubleSide})]}),s&&f&&g.jsxs("mesh",{position:[0,0,0],renderOrder:n,children:[g.jsx("planeGeometry",{args:p}),g.jsx("meshBasicMaterial",{map:typeof s=="string"?void 0:s,color:typeof s=="string"?s:void 0,alphaMap:f,transparent:!1,alphaTest:.5,depthTest:!1,depthWrite:!1,toneMapped:!1,side:U.DoubleSide},"inverted-mask")]})]}):g.jsxs(g.Fragment,{children:[s&&f&&g.jsxs("mesh",{position:[0,0,-.01],renderOrder:n-1,children:[g.jsx("planeGeometry",{args:p}),g.jsx("meshBasicMaterial",{map:typeof s=="string"?void 0:s,color:typeof s=="string"?s:void 0,depthTest:!1,depthWrite:!1,toneMapped:!1,side:U.DoubleSide})]}),g.jsxs("mesh",{position:[0,0,0],renderOrder:n,children:[g.jsx("planeGeometry",{args:p}),g.jsx("meshBasicMaterial",{map:u,alphaMap:f,transparent:!1,alphaTest:f?.5:void 0,depthTest:!1,depthWrite:!1,toneMapped:!1,side:U.DoubleSide},f?"with-mask":"no-mask")]})]})}):null},Ue={left:-1,right:1,top:1,bottom:-1},we=({ready:e,error:t,hasMask:r})=>t?"error":e&&r?"ready":"loading",Le=(e,t)=>e==="ready"||t==="camera",Ie=(e=!0)=>{const{ready:t,error:r}=Qe.useXRModel(l.XRModel.BACKGROUND_SEGMENTATION,{type:"portrait"},e),s=ie.useXRModelNode(l.XRModel.BACKGROUND_SEGMENTATION),[n,a]=o.useState(null);return fe.useFrame(()=>{const i=(s==null?void 0:s.backgroundSegmentationMask)??null;i!==n&&a(i)}),{texture:n,status:we({ready:t,error:r,hasMask:!!n}),error:r}},ft=({invert:e=!1,fallback:t="camera",active:r=!0,onStatusChange:s,fit:n="cover",anchors:a=Ue,renderOrder:i=100,visible:u=!0,maskFeather:c=4,maskErode:d=.7,...E})=>{const f=ie.useXRCameraTexture(),{texture:p,status:m,error:h}=Ie(r);if(o.useEffect(()=>{s==null||s(m,h)},[m,h,s]),!f)return null;const R=m==="ready"&&p;return!R&&!Le(m,t)?null:g.jsx(I.ScreenImage,{...E,source:{kind:"texture",texture:f},fit:n,anchors:a,renderOrder:i,visible:u,maskTexture:R?p:null,maskChannel:"green",maskInvert:e,maskFeather:c,maskErode:d})},ce=9,le=16,pt=({children:e})=>{const[t,r]=o.useState({width:0,height:0});return o.useEffect(()=>{const s=()=>{const n=document.documentElement.clientWidth,a=document.documentElement.clientHeight,i=n/a,u=ce/le;let c,d;i>u?(d=a,c=d*ce/le):(c=n,d=c*le/ce),r({width:c,height:d})};return s(),window.addEventListener("resize",s),()=>window.removeEventListener("resize",s)},[]),g.jsx("div",{style:{width:"100vw",height:`${window.innerHeight}px`,display:"flex",alignItems:"center",justifyContent:"center",backgroundColor:"#0d0d0d"},children:g.jsx("div",{style:{width:t.width,height:t.height,position:"relative"},children:e})})},ht=({size:e=.25,...t})=>g.jsx("axesHelper",{args:[e],...t}),St={left:-1,right:1,top:1,bottom:-1},gt=(e,t,r)=>{const s=e%t,n=Math.floor(e/t);return{x:s/t,y:(r-1-n)/r}},Et=({sheet:e,contentAspect:t,renderOrder:r,name:s})=>{const n=Je.useTexture(e.url),a=o.useRef(0),i=o.useRef(-1),u=ve.useScreenRectAspect(),[c,d]=t!=null?I.computeContainScale(u,t):[1,1];return fe.useFrame((E,f)=>{n.wrapS=U.RepeatWrapping,n.wrapT=U.RepeatWrapping,n.magFilter=U.LinearFilter,n.minFilter=U.LinearFilter,n.generateMipmaps=!1,n.repeat.set(1/e.cols,1/e.rows),a.current+=f;const p=Math.floor(a.current*e.fps)%e.frames;if(p===i.current)return;i.current=p;const{x:m,y:h}=gt(p,e.cols,e.rows);n.offset.set(m,h)}),g.jsxs("mesh",{name:s,renderOrder:r,scale:[c,d,1],children:[g.jsx("planeGeometry",{args:[1,1]}),g.jsx("meshBasicMaterial",{map:n,transparent:!0,toneMapped:!1,depthWrite:!1})]})},Tt=({sheet:e,anchors:t=St,contentAspect:r,renderOrder:s=10,name:n="spriteAnimation"})=>g.jsx(o.Suspense,{fallback:null,children:g.jsx(me.ScreenTransform,{anchors:t,children:g.jsx(Et,{sheet:e,contentAspect:r,renderOrder:s,name:n})})}),B=e=>{switch(e){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"}},Rt=["video/mp4","video/webm;codecs=vp9","video/webm;codecs=vp8","video/webm"];function Mt(e={}){const{audio:t=!1,mimeType:r,bitsPerSecond:s,onData:n,onStop:a,onRecordingStart:i,onRecordingPause:u,onRecordingResume:c,onRecordingStop:d,onRecordingComplete:E,onError:f,passThroughStream:p}=e,m=o.useRef(null),h=o.useRef(null),R=o.useRef([]),[C,S]=o.useState("idle"),[T,b]=o.useState(null),[W,_]=o.useState(null),P=o.useCallback(()=>{var F;const M=[r,...Rt].filter(Boolean);for(const y of M)if((F=MediaRecorder.isTypeSupported)!=null&&F.call(MediaRecorder,y))return y},[r]),j=o.useCallback(async M=>{const F=new MediaStream;if(M.getTracks().forEach(y=>F.addTrack(y)),t){let y;if(t instanceof MediaStream)y=t;else{const x=typeof t=="object"?{audio:t}:{audio:!0,video:!1};y=await navigator.mediaDevices.getUserMedia(x)}y.getAudioTracks().forEach(x=>F.addTrack(x))}if(!F.getTracks().length)throw new Error("No tracks available in combined stream.");return h.current=F,F},[t]),te=o.useCallback(async(M,F)=>{S(B("start")),_(null),b(null);try{let y;if(p)y=p,h.current=y;else{if(!M)throw new Error("start(stream) requires a MediaStream.");y=await j(M)}const x=P(),H={};x&&(H.mimeType=x),s&&(H.bitsPerSecond=s);const z=new MediaRecorder(y,H);z.ondataavailable=O=>{var Z;((Z=O.data)==null?void 0:Z.size)>0&&(R.current.push(O.data),n==null||n(O.data))},z.onstop=()=>{const O=new Blob(R.current,{type:x??"video/webm"});b(O),a==null||a(O),E==null||E(O),R.current=[],S(B("complete"))},m.current=z,z.start(F),S(B("started")),i==null||i()}catch(y){const x=y instanceof Error?y:new Error(String(y));console.error("start(stream) failed",x),_(x),S(B("fail")),f==null||f(x)}},[j,P,s,n,a,E,i,f,p]),re=o.useCallback(()=>{const M=m.current;!M||M.state==="inactive"||(S(B("stop")),M.stop(),d==null||d())},[d]),se=o.useCallback(()=>{const M=m.current;(M==null?void 0:M.state)==="recording"&&(M.pause(),S(B("pause")),u==null||u())},[u]),ne=o.useCallback(()=>{const M=m.current;(M==null?void 0:M.state)==="paused"&&(M.resume(),S(B("resume")),c==null||c())},[c]),Y=o.useCallback(()=>{var M;try{m.current&&(m.current.onstop=null,m.current.state!=="inactive"&&m.current.stop()),m.current=null,(M=h.current)==null||M.getTracks().forEach(F=>F.stop()),h.current=null,b(null),S(B("clear")),R.current=[],_(null)}catch(F){console.error("clear failed",F)}},[]);return o.useEffect(()=>()=>Y(),[]),{status:C,start:te,stop:re,pause:se,resume:ne,clear:Y,isRecording:C==="recording"||C==="paused",isPaused:C==="paused",recordedBlob:T,error:W,getActiveStream:()=>h.current}}const yt=async(e,t={})=>{var r,s,n;(r=t.onCaptureStart)==null||r.call(t),await Promise.resolve();try{const a=e();return(s=t.onCaptureComplete)==null||s.call(t,a),a}catch(a){const i=a instanceof Error?a:new Error(String(a));throw(n=t.onError)==null||n.call(t,i),i}},Ct=(e={})=>{const{session:t}=l.useXRContext(),{captureFrame:r=t.captureFrame,onCaptureStart:s,onCaptureComplete:n,onError:a}=e,[i,u]=o.useState("idle"),[c,d]=o.useState(null),[E,f]=o.useState(null),p=o.useCallback(async()=>{u("capturing"),d(null),f(null);try{const h=await yt(r,{onCaptureStart:s,onCaptureComplete:n,onError:a});return d(h),u("completed"),h}catch(h){const R=h instanceof Error?h:new Error(String(h));return f(R),u("error"),null}},[r,s,n,a]),m=o.useCallback(()=>{u("idle"),d(null),f(null)},[]);return{status:i,capturePhoto:p,clear:m,dataUrl:c,error:E}},At=(e,t)=>{const r=e.split(","),s=r[0].match(/:(.*?);/),n=s?s[1]:"application/octet-stream",a=atob(r[r.length-1]);let i=a.length;const u=new Uint8Array(i);for(;i--;)u[i]=a.charCodeAt(i);return new File([u],t,{type:n})},bt=4,_t=50,Ft=5e3,ae=e=>Math.min(1,Math.max(0,e)),Fe=e=>new Promise(t=>{if(e.readyState>=4){t();return}let r=!1;const s=()=>{r||(r=!0,t())};e.addEventListener("canplaythrough",s,{once:!0}),e.addEventListener("error",s,{once:!0}),setTimeout(s,Ft)}),xe=(e,t)=>{const r=document.createElement("audio");return r.src=e,r.loop=t,r.preload="auto",r.setAttribute("playsinline",""),r.setAttribute("webkit-playsinline",""),r.load(),r},xt=e=>{e.muted=!0,e.play().then(()=>{e.pause(),e.currentTime=0,e.muted=!1}).catch(()=>{e.muted=!1})};class Oe{constructor(t={}){v(this,"sfxPoolSize");v(this,"coalesceMs");v(this,"muted",!0);v(this,"listeners",new Set);v(this,"music",null);v(this,"musicUrl",null);v(this,"musicReady",null);v(this,"musicWanted",null);v(this,"pools",new Map);v(this,"lastPlayed",new Map);v(this,"ready",new Map);this.sfxPoolSize=t.sfxPoolSize??bt,this.coalesceMs=t.coalesceMs??_t}prefetchMusic(t,r=.4){const s=ae(r);if(this.musicWanted={url:t,volume:s},this.musicUrl===t&&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=xe(t,!0),this.musicUrl=t,this.music.volume=s;const n=Fe(this.music);return this.musicReady=n,n}registerSound(t,r=1){const s=this.ready.get(t);if(s)return s;const n=ae(r),a=[];for(let u=0;u<this.sfxPoolSize;u+=1){const c=xe(t,!1);c.volume=n,c.addEventListener("ended",()=>{c.currentTime=0}),a.push(c)}this.pools.set(t,{els:a,next:0,volume:n});const i=Fe(a[0]);return this.ready.set(t,i),i}onMuteChange(t){return this.listeners.add(t),t(this.muted),()=>this.listeners.delete(t)}isMuted(){return this.muted}setMuted(t){t!==this.muted&&(this.muted=t,this.muted||this.pools.forEach(r=>r.els.forEach(xt)),this.applyMusic(),this.listeners.forEach(r=>r(this.muted)))}toggleMuted(){this.setMuted(!this.muted)}playOneShot(t,r){if(this.muted)return;const s=this.pools.get(t);if(!s)return;const n=performance.now();if(n-(this.lastPlayed.get(t)??-1/0)<this.coalesceMs)return;this.lastPlayed.set(t,n);const a=s.els.length;let i;for(let u=0;u<a;u+=1){const c=s.els[(s.next+u)%a];if(c.paused){i=c,s.next=(s.next+u+1)%a;break}}i||(i=s.els[s.next],s.next=(s.next+1)%a),i.muted=!1,i.volume=ae(r??s.volume),i.currentTime!==0&&(i.currentTime=0),i.play().catch(()=>{})}startMusic(t,r=.4){const s=ae(r);this.musicUrl!==t&&this.prefetchMusic(t,s),this.musicWanted={url:t,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 kt=(e,t,r)=>e==="infinite"||e==="loop"&&t<Math.max(1,Math.floor(r))?"replay":"ended",Nt=(e,t,r)=>e&&t!==r,Pt=e=>Math.min(100,Math.max(0,e))/100,vt=o.forwardRef(function({src:t,playMode:r="once",loopCount:s=1,autoplay:n=!1,muted:a=!1,volume:i=100,preload:u="auto",onReady:c,onPlay:d,onPause:E,onEnded:f,onError:p},m){const h=o.useRef(null),R=o.useRef(0),C=o.useRef(null),S=o.useCallback(async()=>{const _=h.current;if(_)try{await _.play()}catch(P){const j=P instanceof Error?P:new Error(String(P));throw p==null||p(j),j}},[p]),T=o.useCallback(()=>{var _;return(_=h.current)==null?void 0:_.pause()},[]),b=o.useCallback(()=>{const _=h.current;_&&(_.pause(),_.currentTime=0,R.current=0)},[]);o.useImperativeHandle(m,()=>({play:S,pause:T,stop:b,get current(){return h.current}}),[T,S,b]),o.useEffect(()=>{R.current=0,C.current=null},[t]),o.useEffect(()=>{h.current&&(h.current.volume=Pt(i))},[i]),o.useEffect(()=>{Nt(n,C.current,t)&&(C.current=t,S().catch(()=>{}))},[n,t]);const W=o.useCallback(()=>{R.current+=1;const _=Math.max(1,Math.floor(s));if(kt(r,R.current,_)==="replay"){const P=h.current;P&&(P.currentTime=0,S().catch(()=>{}));return}R.current=0,f==null||f()},[s,f,S,r]);return g.jsx("audio",{ref:h,src:t,preload:u,autoPlay:!1,muted:a,loop:!1,playsInline:!0,style:{display:"none"},onCanPlayThrough:c,onPlay:d,onPause:E,onEnded:W,onError:()=>p==null?void 0:p(new Error(`Unable to load audio: ${t}`))})}),w=new Oe,Dt=(e,t)=>w.prefetchMusic(e,t),Ut=(e,t)=>w.registerSound(e,t),wt=(e,t)=>w.startMusic(e,t),Lt=()=>w.stopMusic(),It=(e,t)=>w.playOneShot(e,t),Ot=e=>w.setMuted(e),Gt=()=>w.toggleMuted(),qt=()=>w.isMuted(),Xt=e=>w.onMuteChange(e),jt=()=>{const[e,t]=o.useState(w.isMuted());return o.useEffect(()=>w.onMuteChange(t),[]),e},Ge=(e={})=>{const{auto:t=!1}=e,r=o.useRef(e.env??l.defaultCameraEnvironment()),s=o.useRef(e.constraints);s.current=e.constraints;const[n,a]=o.useState("unknown"),[i,u]=o.useState(null),c=o.useRef(0),d=o.useCallback(async()=>{const f=++c.current,p=await l.queryCameraPermission(r.current);if(f!==c.current)return n;const m=p.state==="unknown"?"unknown":p.state;return a(h=>h==="requesting"?h:m),m!=="blocked"&&u(null),m},[]),E=o.useCallback(async f=>{const p=++c.current;a("requesting"),u(null);const m=await l.requestCameraAccess({constraints:(f==null?void 0:f.constraints)??s.current,keepStream:!1},r.current);return p!==c.current||(a(m.state),u(m.reason)),m.state},[]);return o.useEffect(()=>{let f=()=>{},p=!0;return t?E():d(),l.subscribeCameraPermission(m=>{p&&(a(h=>h==="requesting"?h:m.state==="unknown"?"unknown":m.state),m.state!=="blocked"&&u(null))},r.current).then(m=>{p?f=m:m()}),()=>{p=!1,c.current+=1,f()}},[t,d,E]),o.useMemo(()=>({state:n,reason:i,canPrompt:l.canPromptForCamera(n),usable:n==="granted",request:E,refresh:d}),[n,i,E,d])},Bt={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"},Kt={font:"inherit",padding:"10px 18px",borderRadius:8,border:"1px solid rgba(255,255,255,0.3)",background:"#2563eb",color:"#fff",cursor:"pointer"},zt=({children:e,fallback:t,auto:r=!1,constraints:s,requestLabel:n="Allow camera"})=>{const a=Ge({auto:r,constraints:s});if(a.usable)return g.jsx(g.Fragment,{children:e});if(t)return g.jsx(g.Fragment,{children:t(a)});const{state:i,reason:u,canPrompt:c,request:d}=a;return g.jsxs("div",{style:Bt,role:"region","aria-label":"Camera access",children:[g.jsx("p",{"aria-live":"polite",style:{margin:0},children:(u==null?void 0:u.message)??l.CAMERA_PERMISSION_MESSAGES[i]}),g.jsx("button",{type:"button",onClick:()=>void d(),disabled:!c||i==="requesting","aria-disabled":!c||i==="requesting",style:{...Kt,opacity:c&&i!=="requesting"?1:.5},children:i==="requesting"?"Waiting…":i==="denied"?"Try again":n})]})},Wt=()=>{var e;return{enumerateDevices:typeof navigator<"u"&&((e=navigator.mediaDevices)!=null&&e.enumerateDevices)?()=>navigator.mediaDevices.enumerateDevices():void 0}},Ht=/\b(back|rear|environment|world)\b/i,$t=/\b(front|user|facetime|selfie)\b/i,Vt=e=>Ht.test(e)?"environment":$t.test(e)?"user":null,Yt=async(e=Wt())=>{if(!e.enumerateDevices)return[];try{return(await e.enumerateDevices()).filter(r=>r.kind==="videoinput").map(r=>({deviceId:r.deviceId,label:r.label,facing:Vt(r.label)}))}catch{return[]}},Zt=(e,t)=>e.find(r=>r.facing===t)??null,qe=o.createContext(null),Qt=({cache:e,disposeUnreferencedOnUnmount:t=!0,children:r})=>{const s=e??N.getDefaultAssetCache();return o.useEffect(()=>()=>{t&&s.disposeUnreferenced()},[s,t]),g.jsx(qe.Provider,{value:s,children:r})},pe=()=>o.useContext(qe)??N.getDefaultAssetCache(),Jt=(e,t={})=>{const{enabled:r=!0}=t,s=pe(),n=o.useId(),a=(e==null?void 0:e.key)??null,[i,u]=o.useState({value:null,status:"idle",error:null});return o.useEffect(()=>{if(!e||!r){u({value:null,status:"idle",error:null});return}let c=!0;const d=s.get(e.key);return u({value:d??null,status:d?"ready":"loading",error:null}),s.acquire(e,n).then(E=>{c&&u({value:E,status:"ready",error:null})}).catch(E=>{c&&u({value:null,status:"error",error:E})}),()=>{c=!1,s.release(e.key,n)}},[s,a,r,n]),i},er=e=>{const t=pe(),r=e??t;return o.useSyncExternalStore(s=>r.subscribe(s),()=>r.getStats(),()=>r.getStats())},J=1,he=Object.freeze({version:J,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}),D=(e,t,r,s,n,a)=>{if(e===void 0)return t;if(typeof e!="number"||!Number.isFinite(e))return a(`${n}: not a number, kept ${t}`),t;const i=Math.min(s,Math.max(r,e));return i!==e&&a(`${n}: ${e} clamped to ${i}`),i},Q=(e,t,r,s)=>e===void 0?t:e===null?null:typeof e!="number"||!Number.isFinite(e)||e<=0?(s(`${r}: invalid fps, kept ${t}`),t):(e>120&&s(`${r}: ${e} clamped to 120`),Math.min(120,e)),tr=["tiers","budget","initialTier","minTier","maxTier","adaptive","historySize"],ke=e=>{const t={};for(const r of tr)e[r]!==void 0&&(t[r]=e[r]);return t},G=(e,t,r,s)=>e===void 0?t:typeof e!="boolean"?(s(`${r}: not a boolean, kept ${t}`),t):e,K=(e,t,r,s,n)=>e===void 0?r:t.includes(e)?e:(n(`${s}: "${String(e)}" is not one of ${t.join(" | ")}, kept ${r}`),r),Ne=(e,t,r,s)=>e===void 0?t:e===null?null:typeof e!="string"||!/^https?:\/\//.test(e)?(s(`${r}: not an http(s) URL, kept ${t===null?"the SDK default":t}`),t):e,X=(e={},t=he,r=[])=>{var u,c,d,E,f,p,m,h,R,C,S,T,b,W,_,P,j,te,re,se,ne,Y,M,F,y,x,H,z,O,Z,Te,Re,Me,ye,Ce,Ae,be,_e;const s=$e=>r.push($e),n=e.trackers??{},a=t.trackers,i=e.quality===void 0?t.quality===!1?!1:ke(t.quality):e.quality===!1?!1:typeof e.quality=="object"&&e.quality!==null?ke(e.quality):(s("quality: must be an object or false, kept base"),t.quality);return{version:J,trackers:{face:{enabled:G((u=n.face)==null?void 0:u.enabled,a.face.enabled,"trackers.face.enabled",s),numFaces:Math.round(D((c=n.face)==null?void 0:c.numFaces,a.face.numFaces,1,10,"trackers.face.numFaces",s)),targetFps:Q((d=n.face)==null?void 0:d.targetFps,a.face.targetFps,"trackers.face.targetFps",s),holdMs:D((E=n.face)==null?void 0:E.holdMs,a.face.holdMs,0,5e3,"trackers.face.holdMs",s),predictMs:D((f=n.face)==null?void 0:f.predictMs,a.face.predictMs,0,1e3,"trackers.face.predictMs",s),smoothing:D((p=n.face)==null?void 0:p.smoothing,a.face.smoothing,0,100,"trackers.face.smoothing",s)},hand:{enabled:G((m=n.hand)==null?void 0:m.enabled,a.hand.enabled,"trackers.hand.enabled",s),targetFps:Q((h=n.hand)==null?void 0:h.targetFps,a.hand.targetFps,"trackers.hand.targetFps",s)},gesture:{enabled:G((R=n.gesture)==null?void 0:R.enabled,a.gesture.enabled,"trackers.gesture.enabled",s),targetFps:Q((C=n.gesture)==null?void 0:C.targetFps,a.gesture.targetFps,"trackers.gesture.targetFps",s)},body:{enabled:G((S=n.body)==null?void 0:S.enabled,a.body.enabled,"trackers.body.enabled",s),targetFps:Q((T=n.body)==null?void 0:T.targetFps,a.body.targetFps,"trackers.body.targetFps",s)},holistic:{enabled:G((b=n.holistic)==null?void 0:b.enabled,a.holistic.enabled,"trackers.holistic.enabled",s),targetFps:Q((W=n.holistic)==null?void 0:W.targetFps,a.holistic.targetFps,"trackers.holistic.targetFps",s),hands:K((_=n.holistic)==null?void 0:_.hands,["both","left","right","none"],a.holistic.hands,"trackers.holistic.hands",s),holdMs:D((P=n.holistic)==null?void 0:P.holdMs,a.holistic.holdMs,0,5e3,"trackers.holistic.holdMs",s),predictMs:D((j=n.holistic)==null?void 0:j.predictMs,a.holistic.predictMs,0,1e3,"trackers.holistic.predictMs",s),analysisMaxDimension:Math.round(D((te=n.holistic)==null?void 0:te.analysisMaxDimension,a.holistic.analysisMaxDimension,128,2048,"trackers.holistic.analysisMaxDimension",s)),outputFaceBlendshapes:G((re=n.holistic)==null?void 0:re.outputFaceBlendshapes,a.holistic.outputFaceBlendshapes,"trackers.holistic.outputFaceBlendshapes",s),confidence:D((se=n.holistic)==null?void 0:se.confidence,a.holistic.confidence,0,1,"trackers.holistic.confidence",s),delegate:K((ne=n.holistic)==null?void 0:ne.delegate,["auto","GPU","CPU"],a.holistic.delegate,"trackers.holistic.delegate",s)},segmentation:{enabled:G((Y=n.segmentation)==null?void 0:Y.enabled,a.segmentation.enabled,"trackers.segmentation.enabled",s),quality:K((M=n.segmentation)==null?void 0:M.quality,["low","medium","high"],a.segmentation.quality,"trackers.segmentation.quality",s)},semanticSegmentation:{enabled:G((F=n.semanticSegmentation)==null?void 0:F.enabled,a.semanticSegmentation.enabled,"trackers.semanticSegmentation.enabled",s),preset:K((y=n.semanticSegmentation)==null?void 0:y.preset,rt.SEMANTIC_SEGMENTATION_PRESETS,a.semanticSegmentation.preset,"trackers.semanticSegmentation.preset",s),quality:K((x=n.semanticSegmentation)==null?void 0:x.quality,["low","medium","high"],a.semanticSegmentation.quality,"trackers.semanticSegmentation.quality",s)}},perf:{targetFps:D((H=e.perf)==null?void 0:H.targetFps,t.perf.targetFps,0,120,"perf.targetFps",s),camRes:Math.round(D((z=e.perf)==null?void 0:z.camRes,t.perf.camRes,160,3840,"perf.camRes",s)),cameraZoom:D((O=e.perf)==null?void 0:O.cameraZoom,t.perf.cameraZoom,1,3,"perf.cameraZoom",s),analysisScale:D((Z=e.perf)==null?void 0:Z.analysisScale,t.perf.analysisScale,.25,1,"perf.analysisScale",s)},lifecycle:{pauseWhenHidden:G((Te=e.lifecycle)==null?void 0:Te.pauseWhenHidden,t.lifecycle.pauseWhenHidden,"lifecycle.pauseWhenHidden",s)},quality:i,camera:{facingMode:K((Re=e.camera)==null?void 0:Re.facingMode,["user","environment"],t.camera.facingMode,"camera.facingMode",s),deviceId:((Me=e.camera)==null?void 0:Me.deviceId)===void 0?t.camera.deviceId:typeof e.camera.deviceId=="string"||e.camera.deviceId===null?e.camera.deviceId:(s("camera.deviceId: not a string, kept base"),t.camera.deviceId),mirrored:((ye=e.camera)==null?void 0:ye.mirrored)===void 0?t.camera.mirrored:e.camera.mirrored==="auto"||typeof e.camera.mirrored=="boolean"?e.camera.mirrored:(s('camera.mirrored: must be boolean or "auto", kept base'),t.camera.mirrored)},fallbacks:{onUnsupported:K((Ce=e.fallbacks)==null?void 0:Ce.onUnsupported,["block","degrade"],t.fallbacks.onUnsupported,"fallbacks.onUnsupported",s),delegate:K((Ae=e.fallbacks)==null?void 0:Ae.delegate,["auto","GPU","CPU"],t.fallbacks.delegate,"fallbacks.delegate",s)},assets:{holisticModelUrl:Ne((be=e.assets)==null?void 0:be.holisticModelUrl,t.assets.holisticModelUrl,"assets.holisticModelUrl",s),semanticSegmentationModelUrl:Ne((_e=e.assets)==null?void 0:_e.semanticSegmentationModelUrl,t.assets.semanticSegmentationModelUrl,"assets.semanticSegmentationModelUrl",s)},updatedAt:typeof e.updatedAt=="number"&&Number.isFinite(e.updatedAt)?e.updatedAt:t.updatedAt}},ue=(e,t,r=Date.now())=>X({...t,updatedAt:r},e),Se=e=>JSON.stringify(X({},e)),ge=e=>{const t=[];let r=e;if(typeof e=="string")try{r=JSON.parse(e)}catch{return{config:X(),migrated:!0,warnings:["not valid JSON; defaults used"]}}if(!r||typeof r!="object")return{config:X(),migrated:!0,warnings:["not an object; defaults used"]};const s=r,n=s.version!==J;return n&&t.push(`migrated from version ${String(s.version??"none")} to ${J}`),{config:X(s,he,t),migrated:n,warnings:t}},rr=["face","hand","gesture","body","holistic","segmentation","semanticSegmentation"],Xe=e=>({perf:{targetFps:e.perf.targetFps>0?e.perf.targetFps:void 0,camRes:e.perf.camRes,cameraZoom:e.perf.cameraZoom,analysisScale:e.perf.analysisScale},lifecycle:{pauseWhenHidden:e.lifecycle.pauseWhenHidden},quality:e.quality}),je=e=>({facingMode:e.camera.facingMode,...e.camera.deviceId?{deviceId:e.camera.deviceId}:{},...e.camera.mirrored==="auto"?{}:{mirrored:e.camera.mirrored}}),q=e=>e===null?{}:{targetFps:e},Be=(e,t)=>{const r=e.trackers;return{face:{numFaces:r.face.numFaces,...q(r.face.targetFps),holdMs:r.face.holdMs,predictMs:r.face.predictMs,active:r.face.enabled},hand:{...q(r.hand.targetFps),active:r.hand.enabled},gesture:{...q(r.gesture.targetFps),active:r.gesture.enabled},body:{active:r.body.enabled},holistic:{...q(r.holistic.targetFps),hands:r.holistic.hands,holdMs:r.holistic.holdMs,predictMs:r.holistic.predictMs,analysisMaxDimension:r.holistic.analysisMaxDimension,outputFaceBlendshapes:r.holistic.outputFaceBlendshapes,delegate:r.holistic.delegate==="auto"?e.fallbacks.delegate:r.holistic.delegate,...e.assets.holisticModelUrl?{modelUrl:e.assets.holisticModelUrl}:{},active:r.holistic.enabled},segmentation:{quality:r.segmentation.quality,active:r.segmentation.enabled},semanticSegmentation:{preset:r.semanticSegmentation.preset,quality:r.semanticSegmentation.quality,...e.assets.semanticSegmentationModelUrl?{modelUrl:e.assets.semanticSegmentationModelUrl}:{},active:r.semanticSegmentation.enabled}}[t]},Ke=(e,t)=>{const r=e.trackers;switch(t){case l.XRModel.FACE_TRACKER:return{numFaces:r.face.numFaces,...q(r.face.targetFps)};case l.XRModel.HAND_TRACKER:return{...q(r.hand.targetFps)};case l.XRModel.GESTURE_TRACKER:return{...q(r.gesture.targetFps)};case l.XRModel.BODY_TRACKER:return{...q(r.body.targetFps)};case l.XRModel.HOLISTIC_TRACKER:{const s=r.holistic;return{...q(s.targetFps),hands:s.hands,holdMs:s.holdMs,predictMs:s.predictMs,analysisMaxDimension:s.analysisMaxDimension,outputFaceBlendshapes:s.outputFaceBlendshapes,minFaceDetectionConfidence:s.confidence,minFacePresenceConfidence:s.confidence,minPoseDetectionConfidence:s.confidence,minPosePresenceConfidence:s.confidence,minHandLandmarksConfidence:s.confidence,delegate:s.delegate==="auto"?e.fallbacks.delegate:s.delegate,...e.assets.holisticModelUrl?{modelUrl:e.assets.holisticModelUrl}:{}}}case l.XRModel.BACKGROUND_SEGMENTATION:return{quality:r.segmentation.quality};case l.XRModel.SEMANTIC_SEGMENTATION:return{preset:r.semanticSegmentation.preset,quality:r.semanticSegmentation.quality,...e.assets.semanticSegmentationModelUrl?{modelUrl:e.assets.semanticSegmentationModelUrl}:{}};default:return{}}},ze=e=>{const t=e.trackers,r=[];return t.face.enabled&&r.push(l.XRModel.FACE_TRACKER),t.hand.enabled&&r.push(l.XRModel.HAND_TRACKER),t.gesture.enabled&&r.push(l.XRModel.GESTURE_TRACKER),t.body.enabled&&r.push(l.XRModel.BODY_TRACKER),t.holistic.enabled&&r.push(l.XRModel.HOLISTIC_TRACKER),t.segmentation.enabled&&r.push(l.XRModel.BACKGROUND_SEGMENTATION),t.semanticSegmentation.enabled&&r.push(l.XRModel.SEMANTIC_SEGMENTATION),r},ee="vincentt.xr.tracking-config",Ee=()=>{try{return typeof localStorage<"u"?localStorage:null}catch{return null}},We=(e=ee,t=Ee())=>{if(!t)return null;try{const r=t.getItem(e);return r?ge(r):null}catch{return null}},de=(e,t=ee,r=Ee())=>{if(!r)return!1;try{return r.setItem(t,Se(e)),!0}catch{return!1}},He=(e=ee,t=Ee())=>{if(t)try{t.removeItem(e)}catch{}},sr=(e={})=>{const{storageKey:t=ee,persist:r=!0}=e,s=e.storage,n=o.useRef(e.initial),a=o.useMemo(()=>X(n.current??{}),[]),[i,u]=o.useState(a),[c,d]=o.useState([]),[E,f]=o.useState(!r),p=o.useRef(i);p.current=i,o.useEffect(()=>{if(!r){f(!0);return}const S=We(t,s);if(S){const T=X(S.config,a);p.current=T,u(T),d(S.warnings),S.migrated&&de(T,t,s)}f(!0)},[r,t,s,a]);const m=o.useCallback((S,T)=>(p.current=S,u(S),d(T),r&&de(S,t,s),S),[r,t,s]),h=o.useCallback(S=>{const T=[],b=X({...S,updatedAt:Date.now()},p.current,T);return m(b,T)},[m]),R=o.useCallback(()=>{const S=ue(a,{},0);return p.current=S,u(S),d([]),r&&He(t,s),S},[a,r,t,s]),C=o.useCallback(S=>{const T=ge(S);return T.warnings.some(b=>b.startsWith("not valid JSON")||b.startsWith("not an object"))?(d([`import: ${T.warnings[0]}; config unchanged`]),p.current):m(ue(T.config,{},Date.now()),T.warnings)},[m]);return o.useMemo(()=>({config:i,hydrated:E,warnings:c,update:h,reset:R,importJson:C,json:Se(i),providerProps:Xe(i),cameraRequest:je(i),trackerProps:S=>Be(i,S),modelOptions:S=>Ke(i,S),enabledModels:ze(i)}),[i,E,c,h,R,C])};exports.CAMERA_PERMISSION_MESSAGES=l.CAMERA_PERMISSION_MESSAGES;exports.DEFAULT_PERFORMANCE_BUDGET=l.DEFAULT_PERFORMANCE_BUDGET;exports.DEFAULT_QUALITY_TIERS=l.DEFAULT_QUALITY_TIERS;exports.XRMediaSource=l.XRMediaSource;exports.XRModel=l.XRModel;exports.XRProvider=l.XRProvider;exports.XRQualityController=l.XRQualityController;exports.XR_FALLBACK_MESSAGES=l.XR_FALLBACK_MESSAGES;exports.XR_MODEL_ASSET_URLS=l.XR_MODEL_ASSET_URLS;exports.canPromptForCamera=l.canPromptForCamera;exports.computeFeedCrop=l.computeFeedCrop;exports.computeFitLayout=l.computeFitLayout;exports.createFallbackReason=l.createFallbackReason;exports.detectXRCapabilities=l.detectXRCapabilities;exports.feedSidedName=l.feedSidedName;exports.feedToSource=l.feedToSource;exports.feedToWorld=l.feedToWorld;exports.isFeedPointInSource=l.isFeedPointInSource;exports.isMirroredSourceKind=l.isMirroredSourceKind;exports.mirrorFeedX=l.mirrorFeedX;exports.orientSourcePoint=l.orientSourcePoint;exports.orientedSize=l.orientedSize;exports.otherSide=l.otherSide;exports.personLeftSign=l.personLeftSign;exports.personSide=l.personSide;exports.queryCameraPermission=l.queryCameraPermission;exports.requestCameraAccess=l.requestCameraAccess;exports.resolveModelAssetUrl=l.resolveModelAssetUrl;exports.resolveQualityConfig=l.resolveQualityConfig;exports.resolveTrackerSupport=l.resolveTrackerSupport;exports.sourceToFeed=l.sourceToFeed;exports.subscribeCameraPermission=l.subscribeCameraPermission;exports.swapSidedName=l.swapSidedName;exports.trackerToWorld=l.trackerToWorld;exports.worldToFeed=l.worldToFeed;exports.worldToTracker=l.worldToTracker;exports.ScreenTransform=me.ScreenTransform;exports.XRScene=me.XRScene;exports.ScreenSpaceUI=Pe.ScreenSpaceUI;exports.TextLabel=Pe.TextLabel;exports.DEFAULT_SCREEN_GLASS=k.DEFAULT_SCREEN_GLASS;exports.DEFAULT_SCREEN_IMAGE_SCENE_SETTINGS=k.DEFAULT_SCREEN_IMAGE_SCENE_SETTINGS;exports.DEFAULT_SCREEN_IMAGE_SETTINGS=k.DEFAULT_SCREEN_IMAGE_SETTINGS;exports.DEFAULT_SCREEN_SHAPE_SETTINGS=k.DEFAULT_SCREEN_SHAPE_SETTINGS;exports.DEFAULT_SCREEN_TEXT_SCENE_SETTINGS=k.DEFAULT_SCREEN_TEXT_SCENE_SETTINGS;exports.DEFAULT_SCREEN_TEXT_SHADOW_LAYER=k.DEFAULT_SCREEN_TEXT_SHADOW_LAYER;exports.PinToMesh=k.PinToMesh;exports.ScreenGlassMaterial=k.ScreenGlassMaterial;exports.ScreenShape=k.ScreenShape;exports.mapScreenImageSettingsToProps=k.mapScreenImageSettingsToProps;exports.mapScreenTextInnerShadowToProps=k.mapScreenTextInnerShadowToProps;exports.mapScreenTextSettingsToProps=k.mapScreenTextSettingsToProps;exports.mergeScreenShapeSettings=k.mergeScreenShapeSettings;exports.normalizeScreenGlass=k.normalizeScreenGlass;exports.LightObject=I.LightObject;exports.LookAt=I.LookAt;exports.RenderGroupLayer=I.RenderGroupLayer;exports.SCREEN_IMAGE_MASK_CHANNELS=I.SCREEN_IMAGE_MASK_CHANNELS;exports.SceneObjectRenderer=I.SceneObjectRenderer;exports.ScreenImage=I.ScreenImage;exports.ScreenText=I.ScreenText;exports.SequentialRenderPasses=I.SequentialRenderPasses;exports.computeContainScale=I.computeContainScale;exports.useScreenRectAspect=ve.useScreenRectAspect;exports.DEFAULT_MATERIAL_FILL=L.DEFAULT_MATERIAL_FILL;exports.DEFAULT_SCREEN_GRADIENT=L.DEFAULT_SCREEN_GRADIENT;exports.DEFAULT_TRANSFORM_3D=L.DEFAULT_TRANSFORM_3D;exports.EXTERNAL_BACKGROUND_RENDER_LAYER=L.EXTERNAL_BACKGROUND_RENDER_LAYER;exports.MAX_RENDER_GROUP_PASSES=L.MAX_RENDER_GROUP_PASSES;exports.MaterialFill=L.MaterialFill;exports.ScreenGradientMaterial=L.ScreenGradientMaterial;exports.Transform3D=L.Transform3D;exports.createTwoStopGradient=L.createTwoStopGradient;exports.getRenderGroupLayer=L.getRenderGroupLayer;exports.normalizeScreenGradient=L.normalizeScreenGradient;exports.renderSequentialPasses=L.renderSequentialPasses;exports.DEFAULT_MESH_RENDERER=oe.DEFAULT_MESH_RENDERER;exports.DEFAULT_MESH_RENDERER_RENDER_STATE=oe.DEFAULT_MESH_RENDERER_RENDER_STATE;exports.MeshRenderer=oe.MeshRenderer;exports.normalizeMeshRendererRenderState=oe.normalizeMeshRendererRenderState;exports.drawNormalizedCrop=De.drawNormalizedCrop;exports.resolveNormalizedCrop=De.resolveNormalizedCrop;exports.MeshMaterial=et.MeshMaterial;exports.DEFAULT_PIXEL_SNAP_INCREMENT=V.DEFAULT_PIXEL_SNAP_INCREMENT;exports.DEFAULT_REFERENCE_PIXELS_PER_UNIT=V.DEFAULT_REFERENCE_PIXELS_PER_UNIT;exports.DEFAULT_SCREEN_TRANSFORM_2D=V.DEFAULT_SCREEN_TRANSFORM_2D;exports.DEFAULT_SCREEN_TRANSFORM_ROOT=V.DEFAULT_SCREEN_TRANSFORM_ROOT;exports.mergeScreenTransform2D=V.mergeScreenTransform2D;exports.resolveScreenTransform2D=V.resolveScreenTransform2D;exports.clientToScreenPixels=A.clientToScreenPixels;exports.feedToScreenPixels=A.feedToScreenPixels;exports.feedToTracker=A.feedToTracker;exports.feedToViewport=A.feedToViewport;exports.mediaToScreenPixels=A.mediaToScreenPixels;exports.normalizedToScreenPixels=A.normalizedToScreenPixels;exports.screenPixelsToClient=A.screenPixelsToClient;exports.screenPixelsToFeed=A.screenPixelsToFeed;exports.screenPixelsToMedia=A.screenPixelsToMedia;exports.screenPixelsToNormalized=A.screenPixelsToNormalized;exports.screenPixelsToScreenSpace=A.screenPixelsToScreenSpace;exports.screenPixelsToUnits=A.screenPixelsToUnits;exports.screenPointToRay=A.screenPointToRay;exports.screenSpaceToScreenPixels=A.screenSpaceToScreenPixels;exports.screenUnitsToPixels=A.screenUnitsToPixels;exports.trackerPointToScreenPixels=A.trackerPointToScreenPixels;exports.trackerToFeed=A.trackerToFeed;exports.viewportToFeed=A.viewportToFeed;exports.worldToScreenPixels=A.worldToScreenPixels;exports.useXRCapabilities=tt.useXRCapabilities;exports.DEFAULT_ASSET_BUDGET_BYTES=N.DEFAULT_ASSET_BUDGET_BYTES;exports.XRAssetCache=N.XRAssetCache;exports.createAssetCache=N.createAssetCache;exports.defineGltfAsset=N.defineGltfAsset;exports.defineTextureAsset=N.defineTextureAsset;exports.defineVideoAsset=N.defineVideoAsset;exports.disposeObject3D=N.disposeObject3D;exports.estimateGeometryBytes=N.estimateGeometryBytes;exports.estimateObjectBytes=N.estimateObjectBytes;exports.estimateTextureBytes=N.estimateTextureBytes;exports.getDefaultAssetCache=N.getDefaultAssetCache;exports.useXRQuality=N.useXRQuality;exports.AspectRatioContainer=pt;exports.AudioEngine=Oe;exports.AudioPlayer=vt;exports.Axes=ht;exports.CameraPermissionGate=zt;exports.DEFAULT_TRACKING_CONFIG=he;exports.FULL_SCREEN_ANCHORS=Ue;exports.Panel=ut;exports.PersonCutout=ft;exports.SpriteAnimation=Tt;exports.TRACKER_KINDS=rr;exports.TRACKING_CONFIG_STORAGE_KEY=ee;exports.TRACKING_CONFIG_VERSION=J;exports.VideoBackground=mt;exports.XRAssetCacheProvider=Qt;exports.audio=w;exports.clearTrackingConfig=He;exports.dataURLtoFile=At;exports.enabledModels=ze;exports.findCameraByFacing=Zt;exports.isMuted=qt;exports.listCameras=Yt;exports.loadTrackingConfig=We;exports.mergeTrackingConfig=ue;exports.onMuteChange=Xt;exports.parseTrackingConfig=ge;exports.playOneShot=It;exports.prefetchMusic=Dt;exports.registerSound=Ut;exports.resolvePersonCutoutStatus=we;exports.resolveTrackingConfig=X;exports.saveTrackingConfig=de;exports.serializeTrackingConfig=Se;exports.setMuted=Ot;exports.shouldDrawFallback=Le;exports.smoothNumber=$;exports.smoothVector2=at;exports.smoothVector3=it;exports.startMusic=wt;exports.stopMusic=Lt;exports.toCameraRequest=je;exports.toModelOptions=Ke;exports.toProviderProps=Xe;exports.toTrackerProps=Be;exports.toggleMuted=Gt;exports.useCameraPermission=Ge;exports.useFrameCapture=Ct;exports.useMediaRecorder=Mt;exports.useMuted=jt;exports.usePersonMaskTexture=Ie;exports.useXRAsset=Jt;exports.useXRAssetCache=pe;exports.useXRAssetStats=er;exports.useXRTrackingConfig=sr;
|