@vincentt-xr/sdk 2.0.0-alpha.0 → 2.0.0-alpha.2
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 +1813 -27
- package/dist/{DebuggerUI-CEfdddkZ.cjs → DebuggerUI-B45_Gb9d.cjs} +1 -1
- package/dist/{DebuggerUI-Dgop6Q6o.js → DebuggerUI-Cq28c18s.js} +1 -1
- package/dist/FaceMeshRenderer-6t8OsQhK.js +1195 -0
- package/dist/FaceMeshRenderer-lQLhYIW-.cjs +155 -0
- package/dist/FaceRetouch-CDrL0pXg.js +551 -0
- package/dist/FaceRetouch-DtNl8-4e.cjs +134 -0
- package/dist/audio/AudioEngine.d.ts +3 -1
- package/dist/audio/AudioPlayer.d.ts +29 -0
- package/dist/audio/AudioPlayerLogic.d.ts +4 -0
- package/dist/audio/index.d.ts +2 -0
- package/dist/components/Axes/index.d.ts +6 -0
- package/dist/components/FaceMesh/FaceMeshRenderer.d.ts +17 -0
- package/dist/components/FaceMesh/canonical/CanonicalFaceMeshRenderer.d.ts +22 -1
- package/dist/components/FaceMesh/canonical/FaceMeshMaterial.d.ts +25 -0
- package/dist/components/FaceMesh/canonical/assets.d.ts +3 -0
- package/dist/components/FaceMesh/canonical/geometryGroups.d.ts +9 -0
- package/dist/components/FaceMesh/canonical/parseCanonicalFaceModel.d.ts +2 -0
- package/dist/components/FaceMesh/canonical/shaders.d.ts +2 -0
- package/dist/components/FaceMesh/deform.d.ts +3 -0
- package/dist/components/FaceMesh/index.d.ts +5 -0
- package/dist/components/FaceMesh/material/defaults.d.ts +74 -0
- package/dist/components/FaceMesh/material/index.d.ts +1 -0
- package/dist/components/FaceMesh/material/options.d.ts +5 -1
- package/dist/components/FaceMesh/material/support.d.ts +7 -2
- package/dist/components/FaceMesh/material/textures.d.ts +4 -0
- package/dist/components/FaceMesh/material/types.d.ts +4 -2
- package/dist/components/FaceRetouch/Background.d.ts +9 -5
- package/dist/components/FaceRetouch/FaceRetouch.d.ts +47 -0
- package/dist/components/FaceRetouch/index.d.ts +2 -6
- package/dist/components/FaceRetouch/landmarkMask.d.ts +4 -6
- package/dist/components/FaceRetouch/useFaceRetouchMask.d.ts +4 -7
- package/dist/components/FaceTracker/index.d.ts +5 -3
- package/dist/components/FaceWarp3D/FaceWarp3DHead.d.ts +15 -0
- package/dist/components/FaceWarp3D/defaults.d.ts +37 -0
- package/dist/components/FaceWarp3D/index.d.ts +3 -0
- package/dist/components/FaceWarp3D/warp.d.ts +13 -0
- package/dist/components/HandJoints2D/index.d.ts +6 -0
- package/dist/components/HandTracker/index.d.ts +2 -2
- package/dist/components/HandTracking2D/HandVisual.d.ts +12 -0
- package/dist/components/HandTracking2D/index.d.ts +5 -0
- package/dist/components/HandTracking2DController/index.d.ts +5 -0
- package/dist/components/HandTracking3D/index.d.ts +6 -0
- package/dist/components/LightObject/index.d.ts +20 -0
- package/dist/components/LookAt/index.d.ts +23 -0
- package/dist/components/MeshRenderer/index.d.ts +58 -0
- package/dist/components/PerspectiveCamera/index.d.ts +2 -8
- package/dist/components/PinToMesh/index.d.ts +47 -0
- package/dist/components/RenderGroupLayer/index.d.ts +6 -0
- package/dist/components/SceneObjectRenderer/index.d.ts +16 -0
- package/dist/components/Screen2D/ScreenTransformFrame.d.ts +11 -0
- package/dist/components/Screen2D/ScreenTransformHelpers.d.ts +19 -0
- package/dist/components/Screen2D/ScreenTransformInteraction.d.ts +18 -0
- package/dist/components/Screen2D/index.d.ts +5 -0
- package/dist/components/ScreenGlass/defaults.d.ts +3 -0
- package/dist/components/ScreenGlass/index.d.ts +5 -0
- package/dist/components/ScreenGlass/shaders.d.ts +2 -0
- package/dist/components/ScreenGlass/types.d.ts +10 -0
- package/dist/components/ScreenGradient/defaults.d.ts +5 -0
- package/dist/components/ScreenGradient/index.d.ts +5 -0
- package/dist/components/ScreenGradient/shaders.d.ts +2 -0
- package/dist/components/ScreenGradient/types.d.ts +19 -0
- package/dist/components/ScreenImage/ScreenImage.d.ts +4 -0
- package/dist/components/ScreenImage/components/DynamicTextureSync.d.ts +9 -0
- package/dist/components/ScreenImage/components/ScreenImageBody.d.ts +9 -0
- package/dist/components/ScreenImage/components/ScreenImageFrame.d.ts +9 -0
- package/dist/components/ScreenImage/components/ScreenImageTransformFrame.d.ts +9 -0
- package/dist/components/ScreenImage/fit.d.ts +52 -0
- package/dist/components/ScreenImage/index.d.ts +8 -0
- package/dist/components/ScreenImage/materials/ScreenImageBlendMaterial.d.ts +9 -0
- package/dist/components/ScreenImage/materials/ScreenImageMatcap.d.ts +3 -0
- package/dist/components/ScreenImage/source.d.ts +16 -0
- package/dist/components/ScreenImage/types.d.ts +37 -0
- package/dist/components/ScreenImage/utils/ScreenImageConstants.d.ts +9 -0
- package/dist/components/ScreenImage/utils/ScreenImageHelpers.d.ts +4 -0
- package/dist/components/ScreenShape/geometry.d.ts +5 -0
- package/dist/components/ScreenShape/index.d.ts +5 -0
- package/dist/components/ScreenShape/types.d.ts +41 -0
- package/dist/components/ScreenSpaceUI/ScreenTransformGuide.d.ts +15 -0
- package/dist/components/ScreenSpaceUI/ScreenTransformOverlayGuide.d.ts +9 -0
- package/dist/components/ScreenSpaceUI/index.d.ts +2 -0
- package/dist/components/ScreenText/components/ScreenTextBody.d.ts +2 -0
- package/dist/components/ScreenText/components/ScreenTextTransformFrame.d.ts +9 -0
- package/dist/components/ScreenText/constants.d.ts +5 -0
- package/dist/components/ScreenText/index.d.ts +6 -0
- package/dist/components/ScreenText/types.d.ts +31 -0
- package/dist/components/ScreenText/utils/ScreenTextHelpers.d.ts +14 -0
- package/dist/components/ScreenText/utils/ScreenTextMappings.d.ts +17 -0
- package/dist/components/SequentialRenderPasses/index.d.ts +6 -0
- package/dist/components/TextLabel/TextLabel.d.ts +5 -0
- package/dist/components/TextLabel/alignment.d.ts +4 -0
- package/dist/components/TextLabel/bend.d.ts +9 -0
- package/dist/components/TextLabel/canvas/buildTextLabelTexture.d.ts +4 -0
- package/dist/components/TextLabel/canvas/canvasTypography.d.ts +13 -0
- package/dist/components/TextLabel/canvas/drawBackground.d.ts +21 -0
- package/dist/components/TextLabel/canvas/drawEffects.d.ts +34 -0
- package/dist/components/TextLabel/canvas/drawText.d.ts +19 -0
- package/dist/components/TextLabel/components/TextLabelMesh.d.ts +13 -0
- package/dist/components/TextLabel/constants.d.ts +2 -0
- package/dist/components/TextLabel/hooks/useTextLabelTexture.d.ts +7 -0
- package/dist/components/TextLabel/index.d.ts +2 -62
- package/dist/components/TextLabel/layout/measurement.d.ts +8 -0
- package/dist/components/TextLabel/layout/resolveTextLayout.d.ts +25 -0
- package/dist/components/TextLabel/layout/wrapText.d.ts +6 -0
- package/dist/components/TextLabel/types.d.ts +227 -0
- package/dist/components/TrackingAnchor/index.d.ts +18 -2
- package/dist/components/Transform3D/index.d.ts +30 -0
- package/dist/components/XRMediaSurface/index.d.ts +6 -6
- package/dist/components/XRScene/index.d.ts +14 -3
- package/dist/components/XRViewport/XRViewport.d.ts +11 -0
- package/dist/components/XRViewport/components/HiddenMedia.d.ts +7 -0
- package/dist/components/XRViewport/components/MediaAssetPicker.d.ts +8 -0
- package/dist/components/XRViewport/components/MediaControlStack.d.ts +13 -0
- package/dist/components/XRViewport/components/XRViewportLayers.d.ts +30 -0
- package/dist/components/XRViewport/constants.d.ts +24 -0
- package/dist/components/XRViewport/contexts.d.ts +6 -0
- package/dist/components/XRViewport/hooks/useViewportExternalFaces.d.ts +13 -0
- package/dist/components/XRViewport/hooks/useViewportMediaSource.d.ts +16 -0
- package/dist/components/XRViewport/hooks/useViewportMediaTexture.d.ts +10 -0
- package/dist/components/XRViewport/hooks/useViewportPipeline.d.ts +41 -0
- package/dist/components/XRViewport/hooks/useViewportRenderState.d.ts +47 -0
- package/dist/components/XRViewport/index.d.ts +3 -101
- package/dist/components/XRViewport/layout.d.ts +16 -0
- package/dist/components/XRViewport/slots.d.ts +16 -0
- package/dist/components/XRViewport/types.d.ts +89 -0
- package/dist/components/XRViewport/useViewportSize.d.ts +3 -0
- package/dist/components/index.d.ts +19 -0
- package/dist/contexts-BKvTIayr.cjs +1 -0
- package/dist/contexts-Bk5zz_VR.js +214 -0
- package/dist/debug-ui/component-editor/index.d.ts +19 -0
- package/dist/debug-ui/default-setting/index.d.ts +37 -0
- package/dist/debug-ui/default-setting.cjs +21 -0
- package/dist/debug-ui/default-setting.js +777 -0
- package/dist/debug-ui/face-mesh-renderer-settings/index.d.ts +8 -0
- package/dist/debug-ui/face-retouch/index.d.ts +11 -0
- package/dist/debug-ui/face-warp-3d/index.d.ts +6 -0
- package/dist/debug-ui/hand-joints-2d/index.d.ts +6 -0
- package/dist/debug-ui/hand-tracking-2d/index.d.ts +6 -0
- package/dist/debug-ui/hand-tracking-2d-controller/index.d.ts +6 -0
- package/dist/debug-ui/hand-tracking-3d/index.d.ts +6 -0
- package/dist/debug-ui/hierarchy-panel/index.d.ts +29 -0
- package/dist/debug-ui/index.d.ts +46 -0
- package/dist/debug-ui/layer-panel/index.d.ts +18 -0
- package/dist/debug-ui/media-source/MediaSourceSwitcher.d.ts +10 -0
- package/dist/debug-ui/media-source/index.d.ts +6 -0
- package/dist/debug-ui/media-source/media-preset.d.ts +9 -0
- package/dist/debug-ui/media-source/session.d.ts +12 -0
- package/dist/debug-ui/media-source.cjs +1 -0
- package/dist/debug-ui/media-source.js +9 -0
- package/dist/debug-ui/mesh-renderer-settings/index.d.ts +6 -0
- package/dist/debug-ui/object-inspector-panel/index.d.ts +25 -0
- package/dist/debug-ui/pin-to-mesh-settings/index.d.ts +10 -0
- package/dist/debug-ui/scene-editor/context.d.ts +38 -0
- package/dist/debug-ui/scene-editor/hierarchy-panel.d.ts +9 -0
- package/dist/debug-ui/scene-editor/index.d.ts +11 -0
- package/dist/debug-ui/scene-editor/inspector-panel.d.ts +7 -0
- package/dist/debug-ui/scene-editor/store-utils.d.ts +2 -0
- package/dist/debug-ui/scene-editor/viewport-toolbar.d.ts +4 -0
- package/dist/debug-ui/scene-editor/viewport.d.ts +21 -0
- package/dist/debug-ui/screen-glass-settings/index.d.ts +6 -0
- package/dist/debug-ui/screen-gradient-settings/GradientStopsEditor.d.ts +5 -0
- package/dist/debug-ui/screen-gradient-settings/index.d.ts +6 -0
- package/dist/debug-ui/screen-gradient-settings/styles.d.ts +3 -0
- package/dist/debug-ui/screen-image-settings/index.d.ts +9 -0
- package/dist/debug-ui/screen-shape-settings/index.d.ts +6 -0
- package/dist/debug-ui/screen-text-settings/NumberField.d.ts +9 -0
- package/dist/debug-ui/screen-text-settings/ScreenTextSettingsPanel.d.ts +3 -0
- package/dist/debug-ui/screen-text-settings/controls/NestedSection.d.ts +7 -0
- package/dist/debug-ui/screen-text-settings/controls/Section.d.ts +8 -0
- package/dist/debug-ui/screen-text-settings/controls/icons.d.ts +4 -0
- package/dist/debug-ui/screen-text-settings/index.d.ts +2 -0
- package/dist/debug-ui/screen-text-settings/sections/BackgroundSection.d.ts +8 -0
- package/dist/debug-ui/screen-text-settings/sections/ContentSection.d.ts +5 -0
- package/dist/debug-ui/screen-text-settings/sections/EffectsSection.d.ts +25 -0
- package/dist/debug-ui/screen-text-settings/sections/StyleSection.d.ts +5 -0
- package/dist/debug-ui/screen-text-settings/sections/TransformSection.d.ts +5 -0
- package/dist/debug-ui/screen-text-settings/sections/background/BackgroundFillControls.d.ts +2 -0
- package/dist/debug-ui/screen-text-settings/sections/background/BackgroundSizeControls.d.ts +2 -0
- package/dist/debug-ui/screen-text-settings/sections/background/BackgroundStrokeControls.d.ts +2 -0
- package/dist/debug-ui/screen-text-settings/sections/background/types.d.ts +7 -0
- package/dist/debug-ui/screen-text-settings/sections/effects/BendEffectSection.d.ts +4 -0
- package/dist/debug-ui/screen-text-settings/sections/effects/EffectChrome.d.ts +21 -0
- package/dist/debug-ui/screen-text-settings/sections/effects/GlowEffectSection.d.ts +4 -0
- package/dist/debug-ui/screen-text-settings/sections/effects/InnerShadowEffectSection.d.ts +4 -0
- package/dist/debug-ui/screen-text-settings/sections/effects/OutlineEffectSection.d.ts +4 -0
- package/dist/debug-ui/screen-text-settings/sections/effects/ShadowEffectSection.d.ts +4 -0
- package/dist/debug-ui/screen-text-settings/sections/effects/types.d.ts +14 -0
- package/dist/debug-ui/screen-text-settings/settings.d.ts +90 -0
- package/dist/debug-ui/screen-text-settings/styles.d.ts +26 -0
- package/dist/debug-ui/screen-text-settings/transform.d.ts +6 -0
- package/dist/debug-ui/screen-text-settings/types.d.ts +9 -0
- package/dist/debug-ui/settings-panel/index.d.ts +38 -0
- package/dist/debug-ui/shared/MaterialSection.d.ts +13 -0
- package/dist/debug-ui/shared/ScreenTransformSection.d.ts +32 -0
- package/dist/debug-ui/transform-3d-settings/index.d.ts +11 -0
- package/dist/debug-ui.cjs +10 -0
- package/dist/debug-ui.js +8861 -0
- package/dist/drawNormalizedCrop-B-7zU-Xw.cjs +1 -0
- package/dist/drawNormalizedCrop-CRdIDyl1.js +44 -0
- package/dist/entries/all.d.ts +1 -0
- package/dist/entries/core.d.ts +55 -4
- package/dist/entries/face-effects.d.ts +12 -8
- package/dist/entries/internal.d.ts +1 -1
- package/dist/entries/low-level.d.ts +21 -4
- package/dist/entries/scene-object.d.ts +10 -0
- package/dist/entries/tracking.d.ts +25 -2
- package/dist/face-action/index.d.ts +34 -0
- package/dist/face-attribute-expression/index.d.ts +10 -0
- package/dist/face-effects.cjs +1 -252
- package/dist/face-effects.js +1404 -2613
- package/dist/face-info/blendshapes.d.ts +3 -0
- package/dist/face-info/derive.d.ts +8 -0
- package/dist/face-info/drawFaceCrop.d.ts +10 -0
- package/dist/face-info/getFaceInfo.d.ts +8 -0
- package/dist/face-info/index.d.ts +8 -0
- package/dist/face-info/landmarks.d.ts +21 -0
- package/dist/face-info/types.d.ts +52 -0
- package/dist/getFaceInfo-CyPAKh3h.cjs +1 -0
- package/dist/getFaceInfo-hUKMLFcr.js +118 -0
- package/dist/hand/handJoints2d.d.ts +49 -0
- package/dist/hand/handTracking2d.d.ts +33 -0
- package/dist/hand/handTracking2dController.d.ts +65 -0
- package/dist/hand/handTracking3d.d.ts +52 -0
- package/dist/hooks/faceResults.d.ts +1 -1
- package/dist/hooks/useCalibrationFaceTracker.d.ts +1 -1
- package/dist/hooks/useFaceAction.d.ts +3 -0
- package/dist/hooks/useFaceAttributeExpression.d.ts +16 -0
- package/dist/hooks/useFaceDetection.d.ts +18 -0
- package/dist/hooks/useFaceInfo.d.ts +7 -0
- package/dist/hooks/useFaceInfos.d.ts +15 -0
- package/dist/hooks/useFaceResultReader.d.ts +10 -0
- package/dist/hooks/useFrameCapture.d.ts +18 -0
- package/dist/hooks/useMediaRecorder.d.ts +14 -2
- package/dist/hooks/useOwnedTexture.d.ts +6 -0
- package/dist/hooks/useTrackerContext.d.ts +2 -2
- package/dist/hooks/useXRSession/facade.d.ts +3 -0
- package/dist/hooks/useXRSession/registry.d.ts +9 -0
- package/dist/index-82aENaRq.cjs +1 -0
- package/dist/{index-BD-JWMjE.js → index-BgQAX8rs.js} +198 -134
- package/dist/index-CEc1CAmB.cjs +1 -0
- package/dist/index-CTHeBQOs.js +178 -0
- package/dist/index-D4bLzBr6.cjs +1 -0
- package/dist/index-DSpzjuqd.cjs +1 -0
- package/dist/index-Di70KWuY.js +2049 -0
- package/dist/index-DzEzkBIH.cjs +17 -0
- package/dist/{index-CYMj26Ej.js → index-JygePOwo.js} +565 -498
- package/dist/index-UC0Ux38E.js +111 -0
- package/dist/{internal-KOKJDxCG.js → internal-DuMPpcbp.js} +86 -80
- package/dist/internal-i2JkM85N.cjs +1 -0
- package/dist/internal.cjs +1 -1
- package/dist/internal.js +2 -2
- package/dist/low-level.cjs +1 -1
- package/dist/low-level.js +959 -632
- package/dist/main.cjs +1 -1
- package/dist/main.js +556 -455
- package/dist/material/MaterialFill.d.ts +20 -0
- package/dist/material/MeshMaterial.d.ts +14 -0
- package/dist/material/index.d.ts +2 -0
- package/dist/models/Body/index.d.ts +1 -1
- package/dist/models/Face/index.d.ts +1 -0
- package/dist/models/Face/rotation.d.ts +3 -0
- package/dist/models/Hand/HandTracking.d.ts +2 -0
- package/dist/render/layerStack.d.ts +29 -0
- package/dist/render/renderGroups.d.ts +47 -0
- package/dist/render/renderPasses.d.ts +18 -0
- package/dist/renderGroups-C9QJrAXu.js +152 -0
- package/dist/renderGroups-Dvm1J4lW.cjs +1 -0
- package/dist/renderLayers-lDtL0_43.cjs +1 -0
- package/dist/renderLayers-zrK2pv5O.js +13 -0
- package/dist/renderPasses-CT5iBwtg.cjs +21 -0
- package/dist/renderPasses-CjgG_6kQ.js +1500 -0
- package/dist/scene-object/index.d.ts +146 -0
- package/dist/scene-object/runtimeRegistry.d.ts +14 -0
- package/dist/scene-object.cjs +1 -0
- package/dist/scene-object.js +40 -0
- package/dist/screen-image/screenImagePresets.d.ts +13 -0
- package/dist/screen-image/screenImageSettings.d.ts +57 -0
- package/dist/screen-text/screenTextPresets.d.ts +6 -0
- package/dist/screen-text/screenTextSettings.d.ts +147 -0
- package/dist/screen2d/coordinates.d.ts +87 -0
- package/dist/screen2d/index.d.ts +7 -0
- package/dist/screen2d/material-runtime.d.ts +32 -0
- package/dist/screen2d/screenTransform.d.ts +47 -0
- package/dist/screen2d/smoothing.d.ts +5 -0
- package/dist/screen2d/texture.d.ts +10 -0
- package/dist/screen2d/transform.d.ts +25 -0
- package/dist/screen2d/types.d.ts +90 -0
- package/dist/{selectors-Bub0o3qy.cjs → selectors-2QvO5RYY.cjs} +1 -1
- package/dist/{selectors-BHO6TnoC.js → selectors-Dw3C-gSk.js} +5 -5
- package/dist/services/MetricsCollector/index.d.ts +7 -1
- package/dist/services/MetricsCollector/utils.d.ts +1 -1
- package/dist/session-BChR4TgK.cjs +31 -0
- package/dist/session-C1StwN0f.js +363 -0
- package/dist/texture/animatedTexture.d.ts +61 -0
- package/dist/texture/animationMath.d.ts +8 -0
- package/dist/texture/sourceResolver.d.ts +30 -0
- package/dist/tracking.cjs +1 -1
- package/dist/tracking.js +582 -298
- package/dist/types/face.d.ts +1 -13
- package/dist/types/hand-tracking.d.ts +8 -0
- package/dist/types/index.d.ts +0 -1
- package/dist/types/nodes.d.ts +4 -1
- package/dist/types/session.d.ts +2 -0
- package/dist/types/tracking.d.ts +8 -2
- package/dist/types/util-types.d.ts +1 -1
- package/dist/useFaceInfo-C-WfMlYp.cjs +1 -0
- package/dist/useFaceInfo-CwsHZedC.js +62 -0
- package/dist/useFaceResults-CkFc1egZ.js +19 -0
- package/dist/useFaceResults-VcFdOUFV.cjs +1 -0
- package/dist/utils/drawNormalizedCrop.d.ts +22 -0
- package/dist/utils/integrity.d.ts +4 -25
- package/dist/utils/landmarkBounds.d.ts +1 -1
- package/dist/utils/logger.d.ts +2 -2
- package/dist/x-Co8jPhP0.js +127 -0
- package/dist/x-KC8E4Gaj.cjs +41 -0
- package/docs/MIGRATION_GUIDE.md +589 -0
- package/docs/SDK_DOCUMENTATION.md +1155 -0
- package/docs/api/audio.mdx +36 -0
- package/docs/api/behavior-components.mdx +164 -0
- package/docs/api/capture-recording.mdx +103 -0
- package/docs/api/debug-ui-scene-editor.mdx +249 -0
- package/docs/api/face-actions.mdx +104 -0
- package/docs/api/face-attribute-expression.mdx +87 -0
- package/docs/api/face-binding-anchors.mdx +53 -0
- package/docs/api/face-effects.mdx +19 -0
- package/docs/api/face-info.mdx +112 -0
- package/docs/api/face-mesh.mdx +98 -0
- package/docs/api/face-painting.mdx +33 -0
- package/docs/api/face-retouching.mdx +73 -0
- package/docs/api/material-render-state.mdx +132 -0
- package/docs/api/runtime-3d.mdx +311 -0
- package/docs/api/scene-object-store.mdx +213 -0
- package/docs/api/screen-image.mdx +41 -0
- package/docs/api/screen-shape.mdx +64 -0
- package/docs/api/screen-space-coordinates.mdx +41 -0
- package/docs/api/screen-text.mdx +39 -0
- package/docs/api/texture-sources.mdx +55 -0
- package/docs/api/trackers.mdx +46 -0
- package/docs/docs.json +70 -0
- package/docs/examples/scene-object-recipes.mdx +194 -0
- package/docs/guides/harness-debug-ui.mdx +139 -0
- package/docs/inspector/hierarchy-panel.mdx +51 -0
- package/docs/inspector/object-inspector-panel.mdx +51 -0
- package/docs/introduction.mdx +121 -0
- package/docs/scene-objects/overview.mdx +127 -0
- package/docs/scene-objects/render-groups.mdx +77 -0
- package/docs/scene-objects/runtime-rendering.mdx +75 -0
- package/docs/texture-api-consumer.md +58 -0
- package/package.json +55 -7
- package/dist/components/FaceRetouch/retouchRegions.d.ts +0 -23
- package/dist/components/FaceRetouch/useFaceRetouchRegions.d.ts +0 -12
- package/dist/index-B5J4gzn2.cjs +0 -1
- package/dist/index-BVBVg96G.cjs +0 -1
- package/dist/index-DtwHElmG.js +0 -157
- package/dist/index-PtFmD6B8.cjs +0 -1
- package/dist/internal-DH5d1Xnq.cjs +0 -1
- package/dist/modules/XRClient/index.d.ts +0 -9
- package/dist/modules/index.d.ts +0 -1
- package/dist/services/ApiService.d.ts +0 -12
- package/dist/types/client.d.ts +0 -3
- package/dist/useFaceResults-cpsSmKKc.js +0 -81
- package/dist/useFaceResults-hVUJYSEY.cjs +0 -1
package/dist/main.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var Y=Object.defineProperty;var K=(s,e,t)=>e in s?Y(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var E=(s,e,t)=>K(s,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("react"),A=require("./index-PtFmD6B8.cjs"),W=require("./index-BVBVg96G.cjs"),f=require("react/jsx-runtime"),I=require("@react-three/fiber"),O=require("three"),N=require("./selectors-Bub0o3qy.cjs"),J=require("@react-three/drei");function Q(s){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(s){for(const t in s)if(t!=="default"){const n=Object.getOwnPropertyDescriptor(s,t);Object.defineProperty(e,t,n.get?n:{enumerable:!0,get:()=>s[t]})}}return e.default=s,Object.freeze(e)}const H=Q(O),q=9,B=16,ee=({children:s})=>{const[e,t]=u.useState({width:0,height:0});return u.useEffect(()=>{const n=()=>{const i=document.documentElement.clientWidth,c=document.documentElement.clientHeight,o=i/c,a=q/B;let r,d;o>a?(d=c,r=d*q/B):(r=i,d=r*B/q),t({width:r,height:d})};return n(),window.addEventListener("resize",n),()=>window.removeEventListener("resize",n)},[]),f.jsx("div",{style:{width:"100vw",height:`${window.innerHeight}px`,display:"flex",alignItems:"center",justifyContent:"center",backgroundColor:"#0d0d0d"},children:f.jsx("div",{style:{width:e.width,height:e.height,position:"relative"},children:s})})},te="rgba(20,40,110,0.88)",se=24,ne=512;function re({color:s=te,borderColor:e,borderWidth:t=0,borderRadius:n=se,resolution:i=ne,aspect:c=1,opacity:o=1,name:a,overlay:r=!0,position:d,rotation:M,scale:g,visible:l}){const x=u.useRef(null),T=u.useRef(null),S=u.useMemo(()=>ie({width:Math.round(i*Math.max(c,.05)),height:Math.round(i),color:s,borderColor:e,borderWidth:t,borderRadius:n}),[s,e,t,n,i,c]);u.useEffect(()=>()=>{S.dispose()},[S]);const y=u.useRef(null),b=u.useRef(o);return b.current!==o&&(b.current=o,y.current=null,T.current&&(T.current.opacity=o)),u.useEffect(()=>{const h=x.current;if(h)return h.userData.setOpacity=P=>{y.current=P,T.current&&(T.current.opacity=P)},()=>{delete h.userData.setOpacity}},[]),f.jsxs("mesh",{ref:x,name:a,position:d,rotation:M,scale:g,visible:l,children:[f.jsx("planeGeometry",{args:[1,1]}),f.jsx("meshBasicMaterial",{ref:T,map:S,transparent:!0,opacity:o,depthTest:!r,depthWrite:!r})]})}function ie(s){const{width:e,height:t,color:n,borderColor:i,borderWidth:c,borderRadius:o}=s,a=typeof OffscreenCanvas<"u"?new OffscreenCanvas(e,t):(()=>{const g=document.createElement("canvas");return g.width=e,g.height=t,g})(),r=a.getContext("2d");r.clearRect(0,0,e,t);const d=Math.min(o,Math.min(e,t)/2);r.beginPath(),r.moveTo(d,0),r.lineTo(e-d,0),r.quadraticCurveTo(e,0,e,d),r.lineTo(e,t-d),r.quadraticCurveTo(e,t,e-d,t),r.lineTo(d,t),r.quadraticCurveTo(0,t,0,t-d),r.lineTo(0,d),r.quadraticCurveTo(0,0,d,0),r.closePath(),r.fillStyle=n,r.fill(),i&&c>0&&(r.lineWidth=c,r.strokeStyle=i,r.stroke());const M=new H.CanvasTexture(a);return M.needsUpdate=!0,M}const oe=({children:s,depth:e=0})=>{const{camera:t,size:n}=I.useThree(),i=u.useMemo(()=>{if(!(t instanceof O.PerspectiveCamera))return{width:10,height:10};const c=Math.abs(t.position.z-e),o=t.fov*Math.PI/180,a=2*Math.tan(o/2)*c;return{width:a*(n.width/n.height),height:a}},[t,n,e]);return f.jsx(W.ScreenSpaceContext.Provider,{value:i,children:f.jsx("group",{position:[0,0,e],children:s})})};function Z(s,e){return!Number.isFinite(s)||!Number.isFinite(e)||s<=0||e<=0?[1,1,1]:Math.abs(s-e)<1e-6?[1,1,1]:s>e?[e/s,1,1]:[1,s/e,1]}const ae={left:-1,right:1,top:1,bottom:-1},ce=(s,e,t)=>{const n=s%e,i=Math.floor(s/e);return{x:n/e,y:(t-1-i)/t}},ue=({sheet:s,contentAspect:e,renderOrder:t,name:n})=>{const i=J.useTexture(s.url),c=u.useRef(0),o=u.useRef(-1),a=W.useScreenRectAspect(),[r,d]=e!=null?Z(a,e):[1,1];return I.useFrame((M,g)=>{i.wrapS=O.RepeatWrapping,i.wrapT=O.RepeatWrapping,i.magFilter=O.LinearFilter,i.minFilter=O.LinearFilter,i.generateMipmaps=!1,i.repeat.set(1/s.cols,1/s.rows),c.current+=g;const l=Math.floor(c.current*s.fps)%s.frames;if(l===o.current)return;o.current=l;const{x,y:T}=ce(l,s.cols,s.rows);i.offset.set(x,T)}),f.jsxs("mesh",{name:n,renderOrder:t,scale:[r,d,1],children:[f.jsx("planeGeometry",{args:[1,1]}),f.jsx("meshBasicMaterial",{map:i,transparent:!0,toneMapped:!1,depthWrite:!1})]})},le=({sheet:s,anchors:e=ae,contentAspect:t,renderOrder:n=10,name:i="spriteAnimation"})=>f.jsx(u.Suspense,{fallback:null,children:f.jsx(W.ScreenTransform,{anchors:e,children:f.jsx(ue,{sheet:s,contentAspect:t,renderOrder:n,name:i})})}),de={color:"#ffffff",fontWeight:"bold",fontFamily:"Arial, sans-serif",fontSize:48,bgColor:"rgba(20,40,110,0.88)",borderWidth:0,borderRadius:24,padding:32,aspect:2.5,resolution:512,opacity:1};function fe(s){const e={...de,...s},{text:t,color:n,fontWeight:i,fontFamily:c,fontSize:o,bgColor:a,borderColor:r,borderWidth:d,borderRadius:M,padding:g,aspect:l,resolution:x,opacity:T,name:S,overlay:y=!0,position:b,rotation:h,scale:P,visible:z}=e,[D,U]=u.useState(null),[_,F]=u.useState(null),p=u.useRef(t);p.current!==t&&(p.current=t,D!==null&&U(null));const v=u.useRef(a);v.current!==a&&(v.current=a,_!==null&&F(null));const m=u.useRef(null),C=D??t,k=_??a,j=u.useMemo(()=>he({text:C,color:n,fontWeight:i,fontFamily:c,fontSize:o,bgColor:k,borderColor:r,borderWidth:d,borderRadius:M,padding:g,height:x,width:Math.round(x*Math.max(l,.1))}),[C,n,i,c,o,k,r,d,M,g,l,x]);return u.useEffect(()=>{const R=m.current;if(R)return R.userData.setText=L=>U(L),R.userData.setBgColor=L=>F(L),()=>{delete R.userData.setText,delete R.userData.setBgColor}},[]),u.useEffect(()=>()=>{j.dispose()},[j]),f.jsxs("mesh",{ref:m,name:S,position:b,rotation:h,scale:P,visible:z,children:[f.jsx("planeGeometry",{args:[1,1]}),f.jsx("meshBasicMaterial",{map:j,transparent:!0,opacity:T,depthTest:!y,depthWrite:!y})]})}function he(s){const{width:e,height:t,text:n,color:i,fontFamily:c,fontWeight:o,padding:a}=s;let{fontSize:r,bgColor:d}=s,M;const g=typeof OffscreenCanvas<"u"?new OffscreenCanvas(e,t):(()=>{const h=document.createElement("canvas");return h.width=e,h.height=t,h})(),l=g.getContext("2d");if(l.clearRect(0,0,e,t),d!=="transparent"){const h=Math.min(s.borderRadius,Math.min(e,t)/2);l.beginPath(),l.moveTo(h,0),l.lineTo(e-h,0),l.quadraticCurveTo(e,0,e,h),l.lineTo(e,t-h),l.quadraticCurveTo(e,t,e-h,t),l.lineTo(h,t),l.quadraticCurveTo(0,t,0,t-h),l.lineTo(0,h),l.quadraticCurveTo(0,0,h,0),l.closePath(),l.fillStyle=d,l.fill(),s.borderColor&&s.borderWidth>0&&(l.lineWidth=s.borderWidth,l.strokeStyle=s.borderColor,l.stroke())}l.fillStyle=i,l.textAlign="center",l.textBaseline="middle";const x=e-a*2;let T=X(l,n,x,o,r,c);const S=Math.max(1,Math.floor((t-a*2)/(r*1.3)));T.length>S&&(r=Math.max(12,Math.round(r*.75)),T=X(l,n,x,o,r,c)),l.font=`${o} ${r}px ${c}`;const y=r*1.3,b=t/2-(T.length-1)*y/2;for(let h=0;h<T.length;h++)l.fillText(T[h],e/2,b+h*y);return M=new H.CanvasTexture(g),M.needsUpdate=!0,M}function X(s,e,t,n,i,c){s.font=`${n} ${i}px ${c}`;const o=e.split(" "),a=[];let r="";for(const d of o){const M=r?`${r} ${d}`:d;s.measureText(M).width>t&&r?(a.push(r),r=d):r=M}return r&&a.push(r),a}const pe=({segmentationMask:s,segmentation:e,invert:t=!1,customBackground:n,renderOrder:i=A.RENDER_LAYERS.BACKGROUND})=>{const{camera:c,size:o}=I.useThree(),a=N.useXRCameraTexture(),r=N.useXRModelNode(A.XRModel.BACKGROUND_SEGMENTATION),d=e?r==null?void 0:r.backgroundSegmentationMask:void 0,M=u.useRef(!1);u.useEffect(()=>{if(!e){M.current=!1;return}r===null&&!M.current&&(console.warn(`[VideoBackground] segmentation="${e}" set but no matching <Segmentation> component is mounted; rendering unmasked.`),M.current=!0)},[e,r]);const g=e?d:s,l=u.useMemo(()=>{if(!(c instanceof O.PerspectiveCamera))return[10,10];const S=(c.position.z||5)- -1,y=c.fov*Math.PI/180,b=2*Math.tan(y/2)*S;return[b*(o.width/o.height),b]},[c,o]);return a?f.jsx("group",{position:[0,0,-1],children:t?f.jsxs(f.Fragment,{children:[f.jsxs("mesh",{position:[0,0,-.01],renderOrder:i-1,children:[f.jsx("planeGeometry",{args:l}),f.jsx("meshBasicMaterial",{map:a,depthTest:!1,depthWrite:!1,toneMapped:!1})]}),n&&g&&f.jsxs("mesh",{position:[0,0,0],renderOrder:i,children:[f.jsx("planeGeometry",{args:l}),f.jsx("meshBasicMaterial",{map:typeof n=="string"?void 0:n,color:typeof n=="string"?n:void 0,alphaMap:g,transparent:!1,alphaTest:.5,depthTest:!1,depthWrite:!1,toneMapped:!1},"inverted-mask")]})]}):f.jsxs(f.Fragment,{children:[n&&g&&f.jsxs("mesh",{position:[0,0,-.01],renderOrder:i-1,children:[f.jsx("planeGeometry",{args:l}),f.jsx("meshBasicMaterial",{map:typeof n=="string"?void 0:n,color:typeof n=="string"?n:void 0,depthTest:!1,depthWrite:!1,toneMapped:!1})]}),f.jsxs("mesh",{position:[0,0,0],renderOrder:i,children:[f.jsx("planeGeometry",{args:l}),f.jsx("meshBasicMaterial",{map:a,alphaMap:g,transparent:!1,alphaTest:g?.5:void 0,depthTest:!1,depthWrite:!1,toneMapped:!1},g?"with-mask":"no-mask")]})]})}):null},me=["video/mp4","video/webm;codecs=vp9","video/webm;codecs=vp8","video/webm"];function ge(s={}){const{audio:e=!1,mimeType:t,bitsPerSecond:n,onData:i,onStop:c,passThroughStream:o}=s,a=u.useRef(null),r=u.useRef(null),d=u.useRef([]),[M,g]=u.useState(!1),[l,x]=u.useState(!1),[T,S]=u.useState(null),[y,b]=u.useState(null),h=u.useCallback(()=>{var v;const p=[t,...me].filter(Boolean);for(const m of p)if((v=MediaRecorder.isTypeSupported)!=null&&v.call(MediaRecorder,m))return m},[t]),P=u.useCallback(async p=>{const v=new MediaStream;if(p.getTracks().forEach(m=>v.addTrack(m)),e){let m;if(e instanceof MediaStream)m=e;else{const C=typeof e=="object"?{audio:e}:{audio:!0,video:!1};m=await navigator.mediaDevices.getUserMedia(C)}m.getAudioTracks().forEach(C=>v.addTrack(C))}if(!v.getTracks().length)throw new Error("No tracks available in combined stream.");return r.current=v,v},[e]),z=u.useCallback(async(p,v)=>{try{let m;o?(m=p,r.current=m):m=await P(p);const C=h(),k={};C&&(k.mimeType=C),n&&(k.bitsPerSecond=n);const j=new MediaRecorder(m,k);j.ondataavailable=R=>{var L;((L=R.data)==null?void 0:L.size)>0&&(d.current.push(R.data),i==null||i(R.data))},j.onstop=()=>{const R=new Blob(d.current,{type:C??"video/webm"});S(R),c==null||c(R),d.current=[]},a.current=j,j.start(v),g(!0),x(!1)}catch(m){console.error("start(stream) failed",m),b(m instanceof Error?m:new Error(String(m)))}},[P,h,n,i,c,o]),D=u.useCallback(()=>{const p=a.current;p&&p.state!=="inactive"&&p.stop(),g(!1),x(!1)},[]),U=u.useCallback(()=>{const p=a.current;(p==null?void 0:p.state)==="recording"&&(p.pause(),x(!0))},[]),_=u.useCallback(()=>{const p=a.current;(p==null?void 0:p.state)==="paused"&&(p.resume(),x(!1))},[]),F=u.useCallback(()=>{var p,v;try{(p=a.current)==null||p.stop(),a.current=null,(v=r.current)==null||v.getTracks().forEach(m=>m.stop()),r.current=null,S(null),g(!1),x(!1),d.current=[],b(null)}catch(m){console.error("clear failed",m)}},[]);return u.useEffect(()=>()=>F(),[]),{start:z,stop:D,pause:U,resume:_,clear:F,isRecording:M,isPaused:l,recordedBlob:T,error:y,getActiveStream:()=>r.current}}const Me=(s,e)=>{const t=s.split(","),n=t[0].match(/:(.*?);/),i=n?n[1]:"application/octet-stream",c=atob(t[t.length-1]);let o=c.length;const a=new Uint8Array(o);for(;o--;)a[o]=c.charCodeAt(o);return new File([a],e,{type:i})},xe=4,Te=50,ve=5e3,$=s=>new Promise(e=>{if(s.readyState>=4){e();return}let t=!1;const n=()=>{t||(t=!0,e())};s.addEventListener("canplaythrough",n,{once:!0}),s.addEventListener("error",n,{once:!0}),setTimeout(n,ve)}),G=(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},Se=s=>{s.muted=!0,s.play().then(()=>{s.pause(),s.currentTime=0,s.muted=!1}).catch(()=>{s.muted=!1})};class V{constructor(e={}){E(this,"sfxPoolSize");E(this,"coalesceMs");E(this,"muted",!0);E(this,"listeners",new Set);E(this,"music",null);E(this,"musicWanted",null);E(this,"pools",new Map);E(this,"lastPlayed",new Map);E(this,"ready",new Map);this.sfxPoolSize=e.sfxPoolSize??xe,this.coalesceMs=e.coalesceMs??Te}prefetchMusic(e,t=.4){this.musicWanted={url:e,volume:t};const n=`music:${e}`,i=this.ready.get(n);if(i)return i;this.music=G(e,!0),this.music.volume=t;const c=$(this.music);return this.ready.set(n,c),c}registerSound(e,t=1){const n=this.ready.get(e);if(n)return n;const i=[];for(let o=0;o<this.sfxPoolSize;o+=1){const a=G(e,!1);a.volume=t,a.addEventListener("ended",()=>{a.currentTime=0}),i.push(a)}this.pools.set(e,{els:i,next:0,volume:t});const c=$(i[0]);return this.ready.set(e,c),c}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(Se)),this.applyMusic(),this.listeners.forEach(t=>t(this.muted)))}toggleMuted(){this.setMuted(!this.muted)}playOneShot(e,t){if(this.muted)return;const n=this.pools.get(e);if(!n)return;const i=performance.now();if(i-(this.lastPlayed.get(e)??-1/0)<this.coalesceMs)return;this.lastPlayed.set(e,i);const c=n.els.length;let o;for(let a=0;a<c;a+=1){const r=n.els[(n.next+a)%c];if(r.paused){o=r,n.next=(n.next+a+1)%c;break}}o||(o=n.els[n.next],n.next=(n.next+1)%c),o.muted=!1,o.volume=t??n.volume,o.currentTime!==0&&(o.currentTime=0),o.play().catch(()=>{})}startMusic(e,t=.4){this.musicWanted={url:e,volume:t},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 w=new V,ye=(s,e)=>w.prefetchMusic(s,e),be=(s,e)=>w.registerSound(s,e),Re=(s,e)=>w.startMusic(s,e),we=()=>w.stopMusic(),Ce=(s,e)=>w.playOneShot(s,e),Ee=s=>w.setMuted(s),je=()=>w.toggleMuted(),Pe=()=>w.isMuted(),Oe=s=>w.onMuteChange(s),ke=()=>{const[s,e]=u.useState(w.isMuted());return u.useEffect(()=>w.onMuteChange(e),[]),s};exports.XRMediaSource=A.XRMediaSource;exports.XRModel=A.XRModel;exports.XRProvider=A.XRProvider;exports.ScreenTransform=W.ScreenTransform;exports.XRScene=W.XRScene;exports.useScreenRectAspect=W.useScreenRectAspect;exports.AspectRatioContainer=ee;exports.AudioEngine=V;exports.Panel=re;exports.ScreenSpaceUI=oe;exports.SpriteAnimation=le;exports.TextLabel=fe;exports.VideoBackground=pe;exports.audio=w;exports.computeContainScale=Z;exports.dataURLtoFile=Me;exports.isMuted=Pe;exports.onMuteChange=Oe;exports.playOneShot=Ce;exports.prefetchMusic=ye;exports.registerSound=be;exports.setMuted=Ee;exports.startMusic=Re;exports.stopMusic=we;exports.toggleMuted=je;exports.useMediaRecorder=ge;exports.useMuted=ke;
|
|
1
|
+
"use strict";var ae=Object.defineProperty;var ie=(t,e,r)=>e in t?ae(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var C=(t,e,r)=>ie(t,typeof e!="symbol"?e+"":e,r);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const j=require("./index-D4bLzBr6.cjs"),V=require("./contexts-BKvTIayr.cjs"),T=require("./index-DzEzkBIH.cjs"),m=require("react/jsx-runtime"),i=require("react"),P=require("three"),E=require("./renderPasses-CT5iBwtg.cjs"),J=require("@react-three/fiber"),oe=require("./renderLayers-lDtL0_43.cjs"),$=require("./selectors-2QvO5RYY.cjs"),ce=require("@react-three/drei"),I=require("./index-CEc1CAmB.cjs"),U=require("./FaceMeshRenderer-lQLhYIW-.cjs"),Q=require("./drawNormalizedCrop-B-7zU-Xw.cjs"),ue=require("./index-82aENaRq.cjs");function le(t){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const r in t)if(r!=="default"){const s=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(e,r,s.get?s:{enumerable:!0,get:()=>t[r]})}}return e.default=t,Object.freeze(e)}const de=le(P),O=(t,e,r,s)=>P.MathUtils.damp(t,e,Math.max(0,r),Math.max(0,s)),me=(t,e,r,s,n=new P.Vector2)=>n.set(O(t.x,e.x,r,s),O(t.y,e.y,r,s)),pe=(t,e,r,s,n=new P.Vector3)=>n.set(O(t.x,e.x,r,s),O(t.y,e.y,r,s),O(t.z,e.z,r,s)),he="rgba(20,40,110,0.88)",Ee=24,fe=512;function Se({color:t=he,borderColor:e,borderWidth:r=0,borderRadius:s=Ee,resolution:n=fe,aspect:c=1,opacity:o=1,name:u,overlay:a=!0,position:l,rotation:M,scale:p,visible:h}){const S=i.useRef(null),d=i.useRef(null),_=i.useMemo(()=>Te({width:Math.round(n*Math.max(c,.05)),height:Math.round(n),color:t,borderColor:e,borderWidth:r,borderRadius:s}),[t,e,r,s,n,c]);i.useEffect(()=>()=>{_.dispose()},[_]);const y=i.useRef(null),R=i.useRef(o);return R.current!==o&&(R.current=o,y.current=null,d.current&&(d.current.opacity=o)),i.useEffect(()=>{const L=S.current;if(L)return L.userData.setOpacity=D=>{y.current=D,d.current&&(d.current.opacity=D)},()=>{delete L.userData.setOpacity}},[]),m.jsxs("mesh",{ref:S,name:u,position:l,rotation:M,scale:p,visible:h,children:[m.jsx("planeGeometry",{args:[1,1]}),m.jsx("meshBasicMaterial",{ref:d,map:_,transparent:!0,opacity:o,depthTest:!a,depthWrite:!a})]})}function Te(t){const{width:e,height:r,color:s,borderColor:n,borderWidth:c,borderRadius:o}=t,u=typeof OffscreenCanvas<"u"?new OffscreenCanvas(e,r):(()=>{const p=document.createElement("canvas");return p.width=e,p.height=r,p})(),a=u.getContext("2d");a.clearRect(0,0,e,r);const l=Math.min(o,Math.min(e,r)/2);a.beginPath(),a.moveTo(l,0),a.lineTo(e-l,0),a.quadraticCurveTo(e,0,e,l),a.lineTo(e,r-l),a.quadraticCurveTo(e,r,e-l,r),a.lineTo(l,r),a.quadraticCurveTo(0,r,0,r-l),a.lineTo(0,l),a.quadraticCurveTo(0,0,l,0),a.closePath(),a.fillStyle=s,a.fill(),n&&c>0&&(a.lineWidth=c,a.strokeStyle=n,a.stroke());const M=new de.CanvasTexture(u);return M.needsUpdate=!0,M}const Re=({segmentationMask:t,segmentation:e,invert:r=!1,customBackground:s,renderOrder:n=oe.RENDER_LAYERS.BACKGROUND})=>{const{camera:c,size:o}=J.useThree(),u=$.useXRCameraTexture(),a=$.useXRModelNode(j.XRModel.BACKGROUND_SEGMENTATION),l=e?a==null?void 0:a.backgroundSegmentationMask:void 0,M=i.useRef(!1);i.useEffect(()=>{if(!e){M.current=!1;return}a===null&&!M.current&&(console.warn(`[VideoBackground] segmentation="${e}" set but no matching <Segmentation> component is mounted; rendering unmasked.`),M.current=!0)},[e,a]);const p=e?l:t,h=i.useMemo(()=>{if(!c.isPerspectiveCamera)return[10,10];const S=c,y=(S.position.z||5)- -1,R=S.fov*Math.PI/180,L=2*Math.tan(R/2)*y;return[L*(o.width/o.height),L]},[c,o]);return u?m.jsx("group",{position:[0,0,-1],children:r?m.jsxs(m.Fragment,{children:[m.jsxs("mesh",{position:[0,0,-.01],renderOrder:n-1,children:[m.jsx("planeGeometry",{args:h}),m.jsx("meshBasicMaterial",{map:u,depthTest:!1,depthWrite:!1,toneMapped:!1,side:P.DoubleSide})]}),s&&p&&m.jsxs("mesh",{position:[0,0,0],renderOrder:n,children:[m.jsx("planeGeometry",{args:h}),m.jsx("meshBasicMaterial",{map:typeof s=="string"?void 0:s,color:typeof s=="string"?s:void 0,alphaMap:p,transparent:!1,alphaTest:.5,depthTest:!1,depthWrite:!1,toneMapped:!1,side:P.DoubleSide},"inverted-mask")]})]}):m.jsxs(m.Fragment,{children:[s&&p&&m.jsxs("mesh",{position:[0,0,-.01],renderOrder:n-1,children:[m.jsx("planeGeometry",{args:h}),m.jsx("meshBasicMaterial",{map:typeof s=="string"?void 0:s,color:typeof s=="string"?s:void 0,depthTest:!1,depthWrite:!1,toneMapped:!1,side:P.DoubleSide})]}),m.jsxs("mesh",{position:[0,0,0],renderOrder:n,children:[m.jsx("planeGeometry",{args:h}),m.jsx("meshBasicMaterial",{map:u,alphaMap:p,transparent:!1,alphaTest:p?.5:void 0,depthTest:!1,depthWrite:!1,toneMapped:!1,side:P.DoubleSide},p?"with-mask":"no-mask")]})]})}):null},W=9,H=16,Me=({children:t})=>{const[e,r]=i.useState({width:0,height:0});return i.useEffect(()=>{const s=()=>{const n=document.documentElement.clientWidth,c=document.documentElement.clientHeight,o=n/c,u=W/H;let a,l;o>u?(l=c,a=l*W/H):(a=n,l=a*H/W),r({width:a,height:l})};return s(),window.addEventListener("resize",s),()=>window.removeEventListener("resize",s)},[]),m.jsx("div",{style:{width:"100vw",height:`${window.innerHeight}px`,display:"flex",alignItems:"center",justifyContent:"center",backgroundColor:"#0d0d0d"},children:m.jsx("div",{style:{width:e.width,height:e.height,position:"relative"},children:t})})},_e=({size:t=.25,...e})=>m.jsx("axesHelper",{args:[t],...e}),Ae={left:-1,right:1,top:1,bottom:-1},ge=(t,e,r)=>{const s=t%e,n=Math.floor(t/e);return{x:s/e,y:(r-1-n)/r}},xe=({sheet:t,contentAspect:e,renderOrder:r,name:s})=>{const n=ce.useTexture(t.url),c=i.useRef(0),o=i.useRef(-1),u=I.useScreenRectAspect(),[a,l]=e!=null?T.computeContainScale(u,e):[1,1];return J.useFrame((M,p)=>{n.wrapS=P.RepeatWrapping,n.wrapT=P.RepeatWrapping,n.magFilter=P.LinearFilter,n.minFilter=P.LinearFilter,n.generateMipmaps=!1,n.repeat.set(1/t.cols,1/t.rows),c.current+=p;const h=Math.floor(c.current*t.fps)%t.frames;if(h===o.current)return;o.current=h;const{x:S,y:d}=ge(h,t.cols,t.rows);n.offset.set(S,d)}),m.jsxs("mesh",{name:s,renderOrder:r,scale:[a,l,1],children:[m.jsx("planeGeometry",{args:[1,1]}),m.jsx("meshBasicMaterial",{map:n,transparent:!0,toneMapped:!1,depthWrite:!1})]})},ye=({sheet:t,anchors:e=Ae,contentAspect:r,renderOrder:s=10,name:n="spriteAnimation"})=>m.jsx(i.Suspense,{fallback:null,children:m.jsx(V.ScreenTransform,{anchors:e,children:m.jsx(xe,{sheet:t,contentAspect:r,renderOrder:s,name:n})})}),F=t=>{switch(t){case"start":return"starting";case"started":case"resume":return"recording";case"pause":return"paused";case"stop":return"stopping";case"complete":return"completed";case"fail":return"error";case"clear":return"idle"}},Ce=["video/mp4","video/webm;codecs=vp9","video/webm;codecs=vp8","video/webm"];function Pe(t={}){const{audio:e=!1,mimeType:r,bitsPerSecond:s,onData:n,onStop:c,onRecordingStart:o,onRecordingPause:u,onRecordingResume:a,onRecordingStop:l,onRecordingComplete:M,onError:p,passThroughStream:h}=t,S=i.useRef(null),d=i.useRef(null),_=i.useRef([]),[y,R]=i.useState("idle"),[L,D]=i.useState(null),[X,g]=i.useState(null),b=i.useCallback(()=>{var x;const f=[r,...Ce].filter(Boolean);for(const A of f)if((x=MediaRecorder.isTypeSupported)!=null&&x.call(MediaRecorder,A))return A},[r]),G=i.useCallback(async f=>{const x=new MediaStream;if(f.getTracks().forEach(A=>x.addTrack(A)),e){let A;if(e instanceof MediaStream)A=e;else{const w=typeof e=="object"?{audio:e}:{audio:!0,video:!1};A=await navigator.mediaDevices.getUserMedia(w)}A.getAudioTracks().forEach(w=>x.addTrack(w))}if(!x.getTracks().length)throw new Error("No tracks available in combined stream.");return d.current=x,x},[e]),te=i.useCallback(async(f,x)=>{R(F("start")),g(null),D(null);try{let A;if(h)A=h,d.current=A;else{if(!f)throw new Error("start(stream) requires a MediaStream.");A=await G(f)}const w=b(),q={};w&&(q.mimeType=w),s&&(q.bitsPerSecond=s);const k=new MediaRecorder(A,q);k.ondataavailable=v=>{var Y;((Y=v.data)==null?void 0:Y.size)>0&&(_.current.push(v.data),n==null||n(v.data))},k.onstop=()=>{const v=new Blob(_.current,{type:w??"video/webm"});D(v),c==null||c(v),M==null||M(v),_.current=[],R(F("complete"))},S.current=k,k.start(x),R(F("started")),o==null||o()}catch(A){const w=A instanceof Error?A:new Error(String(A));console.error("start(stream) failed",w),g(w),R(F("fail")),p==null||p(w)}},[G,b,s,n,c,M,o,p,h]),re=i.useCallback(()=>{const f=S.current;!f||f.state==="inactive"||(R(F("stop")),f.stop(),l==null||l())},[l]),se=i.useCallback(()=>{const f=S.current;(f==null?void 0:f.state)==="recording"&&(f.pause(),R(F("pause")),u==null||u())},[u]),ne=i.useCallback(()=>{const f=S.current;(f==null?void 0:f.state)==="paused"&&(f.resume(),R(F("resume")),a==null||a())},[a]),B=i.useCallback(()=>{var f;try{S.current&&(S.current.onstop=null,S.current.state!=="inactive"&&S.current.stop()),S.current=null,(f=d.current)==null||f.getTracks().forEach(x=>x.stop()),d.current=null,D(null),R(F("clear")),_.current=[],g(null)}catch(x){console.error("clear failed",x)}},[]);return i.useEffect(()=>()=>B(),[]),{status:y,start:te,stop:re,pause:se,resume:ne,clear:B,isRecording:y==="recording"||y==="paused",isPaused:y==="paused",recordedBlob:L,error:X,getActiveStream:()=>d.current}}const Ne=async(t,e={})=>{var r,s,n;(r=e.onCaptureStart)==null||r.call(e),await Promise.resolve();try{const c=t();return(s=e.onCaptureComplete)==null||s.call(e,c),c}catch(c){const o=c instanceof Error?c:new Error(String(c));throw(n=e.onError)==null||n.call(e,o),o}},Le=(t={})=>{const{session:e}=j.useXRContext(),{captureFrame:r=e.captureFrame,onCaptureStart:s,onCaptureComplete:n,onError:c}=t,[o,u]=i.useState("idle"),[a,l]=i.useState(null),[M,p]=i.useState(null),h=i.useCallback(async()=>{u("capturing"),l(null),p(null);try{const d=await Ne(r,{onCaptureStart:s,onCaptureComplete:n,onError:c});return l(d),u("completed"),d}catch(d){const _=d instanceof Error?d:new Error(String(d));return p(_),u("error"),null}},[r,s,n,c]),S=i.useCallback(()=>{u("idle"),l(null),p(null)},[]);return{status:o,capturePhoto:h,clear:S,dataUrl:a,error:M}},we=(t,e)=>{const r=t.split(","),s=r[0].match(/:(.*?);/),n=s?s[1]:"application/octet-stream",c=atob(r[r.length-1]);let o=c.length;const u=new Uint8Array(o);for(;o--;)u[o]=c.charCodeAt(o);return new File([u],e,{type:n})},De=4,be=50,Fe=5e3,z=t=>Math.min(1,Math.max(0,t)),Z=t=>new Promise(e=>{if(t.readyState>=4){e();return}let r=!1;const s=()=>{r||(r=!0,e())};t.addEventListener("canplaythrough",s,{once:!0}),t.addEventListener("error",s,{once:!0}),setTimeout(s,Fe)}),K=(t,e)=>{const r=document.createElement("audio");return r.src=t,r.loop=e,r.preload="auto",r.setAttribute("playsinline",""),r.setAttribute("webkit-playsinline",""),r.load(),r},Ue=t=>{t.muted=!0,t.play().then(()=>{t.pause(),t.currentTime=0,t.muted=!1}).catch(()=>{t.muted=!1})};class ee{constructor(e={}){C(this,"sfxPoolSize");C(this,"coalesceMs");C(this,"muted",!0);C(this,"listeners",new Set);C(this,"music",null);C(this,"musicUrl",null);C(this,"musicReady",null);C(this,"musicWanted",null);C(this,"pools",new Map);C(this,"lastPlayed",new Map);C(this,"ready",new Map);this.sfxPoolSize=e.sfxPoolSize??De,this.coalesceMs=e.coalesceMs??be}prefetchMusic(e,r=.4){const s=z(r);if(this.musicWanted={url:e,volume:s},this.musicUrl===e&&this.musicReady)return this.music&&(this.music.volume=s),this.musicReady;this.music&&(this.music.pause(),this.music.currentTime=0,this.music.removeAttribute("src"),this.music.load()),this.music=K(e,!0),this.musicUrl=e,this.music.volume=s;const n=Z(this.music);return this.musicReady=n,n}registerSound(e,r=1){const s=this.ready.get(e);if(s)return s;const n=z(r),c=[];for(let u=0;u<this.sfxPoolSize;u+=1){const a=K(e,!1);a.volume=n,a.addEventListener("ended",()=>{a.currentTime=0}),c.push(a)}this.pools.set(e,{els:c,next:0,volume:n});const o=Z(c[0]);return this.ready.set(e,o),o}onMuteChange(e){return this.listeners.add(e),e(this.muted),()=>this.listeners.delete(e)}isMuted(){return this.muted}setMuted(e){e!==this.muted&&(this.muted=e,this.muted||this.pools.forEach(r=>r.els.forEach(Ue)),this.applyMusic(),this.listeners.forEach(r=>r(this.muted)))}toggleMuted(){this.setMuted(!this.muted)}playOneShot(e,r){if(this.muted)return;const s=this.pools.get(e);if(!s)return;const n=performance.now();if(n-(this.lastPlayed.get(e)??-1/0)<this.coalesceMs)return;this.lastPlayed.set(e,n);const c=s.els.length;let o;for(let u=0;u<c;u+=1){const a=s.els[(s.next+u)%c];if(a.paused){o=a,s.next=(s.next+u+1)%c;break}}o||(o=s.els[s.next],s.next=(s.next+1)%c),o.muted=!1,o.volume=z(r??s.volume),o.currentTime!==0&&(o.currentTime=0),o.play().catch(()=>{})}startMusic(e,r=.4){const s=z(r);this.musicUrl!==e&&this.prefetchMusic(e,s),this.musicWanted={url:e,volume:s},this.applyMusic()}stopMusic(){this.musicWanted=null,this.music&&(this.music.pause(),this.music.currentTime=0)}applyMusic(){!this.music||!this.musicWanted||(this.music.volume=this.musicWanted.volume,!this.muted&&this.music.paused&&this.music.play().catch(()=>{}),this.muted&&!this.music.paused&&this.music.pause())}}const ve=(t,e,r)=>t==="infinite"||t==="loop"&&e<Math.max(1,Math.floor(r))?"replay":"ended",Oe=(t,e,r)=>t&&e!==r,Ie=t=>Math.min(100,Math.max(0,t))/100,Ge=i.forwardRef(function({src:e,playMode:r="once",loopCount:s=1,autoplay:n=!1,muted:c=!1,volume:o=100,preload:u="auto",onReady:a,onPlay:l,onPause:M,onEnded:p,onError:h},S){const d=i.useRef(null),_=i.useRef(0),y=i.useRef(null),R=i.useCallback(async()=>{const g=d.current;if(g)try{await g.play()}catch(b){const G=b instanceof Error?b:new Error(String(b));throw h==null||h(G),G}},[h]),L=i.useCallback(()=>{var g;return(g=d.current)==null?void 0:g.pause()},[]),D=i.useCallback(()=>{const g=d.current;g&&(g.pause(),g.currentTime=0,_.current=0)},[]);i.useImperativeHandle(S,()=>({play:R,pause:L,stop:D,get current(){return d.current}}),[L,R,D]),i.useEffect(()=>{_.current=0,y.current=null},[e]),i.useEffect(()=>{d.current&&(d.current.volume=Ie(o))},[o]),i.useEffect(()=>{Oe(n,y.current,e)&&(y.current=e,R().catch(()=>{}))},[n,e]);const X=i.useCallback(()=>{_.current+=1;const g=Math.max(1,Math.floor(s));if(ve(r,_.current,g)==="replay"){const b=d.current;b&&(b.currentTime=0,R().catch(()=>{}));return}_.current=0,p==null||p()},[s,p,R,r]);return m.jsx("audio",{ref:d,src:e,preload:u,autoPlay:!1,muted:c,loop:!1,playsInline:!0,style:{display:"none"},onCanPlayThrough:a,onPlay:l,onPause:M,onEnded:X,onError:()=>h==null?void 0:h(new Error(`Unable to load audio: ${e}`))})}),N=new ee,je=(t,e)=>N.prefetchMusic(t,e),ke=(t,e)=>N.registerSound(t,e),ze=(t,e)=>N.startMusic(t,e),Xe=()=>N.stopMusic(),qe=(t,e)=>N.playOneShot(t,e),We=t=>N.setMuted(t),He=()=>N.toggleMuted(),Ve=()=>N.isMuted(),Be=t=>N.onMuteChange(t),Ye=()=>{const[t,e]=i.useState(N.isMuted());return i.useEffect(()=>N.onMuteChange(e),[]),t};exports.XRMediaSource=j.XRMediaSource;exports.XRModel=j.XRModel;exports.XRProvider=j.XRProvider;exports.ScreenTransform=V.ScreenTransform;exports.XRScene=V.XRScene;exports.LightObject=T.LightObject;exports.LookAt=T.LookAt;exports.RenderGroupLayer=T.RenderGroupLayer;exports.SceneObjectRenderer=T.SceneObjectRenderer;exports.ScreenImage=T.ScreenImage;exports.ScreenSpaceUI=T.ScreenSpaceUI;exports.ScreenText=T.ScreenText;exports.SequentialRenderPasses=T.SequentialRenderPasses;exports.TextLabel=T.TextLabel;exports.clientToScreenPixels=T.clientToScreenPixels;exports.computeContainScale=T.computeContainScale;exports.mediaToScreenPixels=T.mediaToScreenPixels;exports.normalizedToScreenPixels=T.normalizedToScreenPixels;exports.screenPixelsToClient=T.screenPixelsToClient;exports.screenPixelsToMedia=T.screenPixelsToMedia;exports.screenPixelsToNormalized=T.screenPixelsToNormalized;exports.screenPixelsToUnits=T.screenPixelsToUnits;exports.screenPointToRay=T.screenPointToRay;exports.screenUnitsToPixels=T.screenUnitsToPixels;exports.worldToScreenPixels=T.worldToScreenPixels;exports.DEFAULT_PIXEL_SNAP_INCREMENT=E.DEFAULT_PIXEL_SNAP_INCREMENT;exports.DEFAULT_REFERENCE_PIXELS_PER_UNIT=E.DEFAULT_REFERENCE_PIXELS_PER_UNIT;exports.DEFAULT_SCREEN_GLASS=E.DEFAULT_SCREEN_GLASS;exports.DEFAULT_SCREEN_IMAGE_SCENE_SETTINGS=E.DEFAULT_SCREEN_IMAGE_SCENE_SETTINGS;exports.DEFAULT_SCREEN_IMAGE_SETTINGS=E.DEFAULT_SCREEN_IMAGE_SETTINGS;exports.DEFAULT_SCREEN_SHAPE_SETTINGS=E.DEFAULT_SCREEN_SHAPE_SETTINGS;exports.DEFAULT_SCREEN_TEXT_SCENE_SETTINGS=E.DEFAULT_SCREEN_TEXT_SCENE_SETTINGS;exports.DEFAULT_SCREEN_TEXT_SHADOW_LAYER=E.DEFAULT_SCREEN_TEXT_SHADOW_LAYER;exports.DEFAULT_SCREEN_TRANSFORM_2D=E.DEFAULT_SCREEN_TRANSFORM_2D;exports.DEFAULT_SCREEN_TRANSFORM_ROOT=E.DEFAULT_SCREEN_TRANSFORM_ROOT;exports.EXTERNAL_BACKGROUND_RENDER_LAYER=E.EXTERNAL_BACKGROUND_RENDER_LAYER;exports.MAX_RENDER_GROUP_PASSES=E.MAX_RENDER_GROUP_PASSES;exports.PinToMesh=E.PinToMesh;exports.ScreenGlassMaterial=E.ScreenGlassMaterial;exports.ScreenShape=E.ScreenShape;exports.getRenderGroupLayer=E.getRenderGroupLayer;exports.mapScreenImageSettingsToProps=E.mapScreenImageSettingsToProps;exports.mapScreenTextInnerShadowToProps=E.mapScreenTextInnerShadowToProps;exports.mapScreenTextSettingsToProps=E.mapScreenTextSettingsToProps;exports.mergeScreenShapeSettings=E.mergeScreenShapeSettings;exports.mergeScreenTransform2D=E.mergeScreenTransform2D;exports.normalizeScreenGlass=E.normalizeScreenGlass;exports.renderSequentialPasses=E.renderSequentialPasses;exports.resolveScreenTransform2D=E.resolveScreenTransform2D;exports.DEFAULT_MESH_RENDERER=I.DEFAULT_MESH_RENDERER;exports.DEFAULT_MESH_RENDERER_RENDER_STATE=I.DEFAULT_MESH_RENDERER_RENDER_STATE;exports.MeshRenderer=I.MeshRenderer;exports.normalizeMeshRendererRenderState=I.normalizeMeshRendererRenderState;exports.useScreenRectAspect=I.useScreenRectAspect;exports.DEFAULT_MATERIAL_FILL=U.DEFAULT_MATERIAL_FILL;exports.DEFAULT_SCREEN_GRADIENT=U.DEFAULT_SCREEN_GRADIENT;exports.DEFAULT_TRANSFORM_3D=U.DEFAULT_TRANSFORM_3D;exports.MaterialFill=U.MaterialFill;exports.ScreenGradientMaterial=U.ScreenGradientMaterial;exports.Transform3D=U.Transform3D;exports.createTwoStopGradient=U.createTwoStopGradient;exports.normalizeScreenGradient=U.normalizeScreenGradient;exports.drawNormalizedCrop=Q.drawNormalizedCrop;exports.resolveNormalizedCrop=Q.resolveNormalizedCrop;exports.MeshMaterial=ue.MeshMaterial;exports.AspectRatioContainer=Me;exports.AudioEngine=ee;exports.AudioPlayer=Ge;exports.Axes=_e;exports.Panel=Se;exports.SpriteAnimation=ye;exports.VideoBackground=Re;exports.audio=N;exports.dataURLtoFile=we;exports.isMuted=Ve;exports.onMuteChange=Be;exports.playOneShot=qe;exports.prefetchMusic=je;exports.registerSound=ke;exports.setMuted=We;exports.smoothNumber=O;exports.smoothVector2=me;exports.smoothVector3=pe;exports.startMusic=ze;exports.stopMusic=Xe;exports.toggleMuted=He;exports.useFrameCapture=Le;exports.useMediaRecorder=Pe;exports.useMuted=Ye;
|