@vincentt-xr/sdk 2.0.0-alpha.1 → 2.0.0-alpha.3
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 +1614 -21
- package/dist/{DebuggerUI-CatYc-RG.cjs → DebuggerUI-B45_Gb9d.cjs} +1 -1
- package/dist/{DebuggerUI-gLMKiVwJ.js → DebuggerUI-xp4bg3gH.js} +1 -1
- package/dist/FaceMeshRenderer-CALA4k49.js +1195 -0
- package/dist/FaceMeshRenderer-D4PFqsb3.cjs +155 -0
- package/dist/FaceRetouch-Bq2rtPlV.cjs +134 -0
- package/dist/FaceRetouch-DF5UsOsZ.js +551 -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 +17 -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 +70 -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 +2 -2
- package/dist/components/FaceRetouch/Background.d.ts +5 -6
- package/dist/components/FaceRetouch/FaceRetouch.d.ts +47 -0
- package/dist/components/FaceRetouch/index.d.ts +2 -8
- package/dist/components/FaceRetouch/landmarkMask.d.ts +0 -5
- package/dist/components/FaceRetouch/useFaceRetouchMask.d.ts +3 -7
- package/dist/components/FaceTracker/index.d.ts +5 -3
- package/dist/components/FaceWarp3D/FaceWarp3DHead.d.ts +1 -1
- package/dist/components/HandJoints2D/index.d.ts +1 -1
- package/dist/components/HandTracking2D/HandVisual.d.ts +1 -1
- package/dist/components/HandTracking2D/index.d.ts +1 -1
- package/dist/components/HandTracking2DController/index.d.ts +1 -1
- package/dist/components/HandTracking3D/index.d.ts +1 -1
- 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 +59 -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 -87
- 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 +19 -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 -20
- 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 -161
- 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/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 -118
- 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 +12 -0
- package/dist/contexts-D5TQcwmv.js +660 -0
- package/dist/contexts-Dv1SA0bS.cjs +1 -0
- package/dist/debug-ui/component-editor/index.d.ts +19 -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/hand-joints-2d/index.d.ts +1 -1
- package/dist/debug-ui/hand-tracking-2d/index.d.ts +1 -1
- package/dist/debug-ui/hand-tracking-2d-controller/index.d.ts +1 -1
- package/dist/debug-ui/hand-tracking-3d/index.d.ts +1 -1
- package/dist/debug-ui/hierarchy-panel/index.d.ts +29 -0
- package/dist/debug-ui/index.d.ts +25 -2
- package/dist/debug-ui/layer-panel/index.d.ts +3 -2
- package/dist/debug-ui/media-source/index.d.ts +2 -0
- package/dist/debug-ui/media-source/session.d.ts +12 -0
- package/dist/debug-ui/media-source.cjs +1 -1
- package/dist/debug-ui/media-source.js +6 -4
- 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 +4 -2
- 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 -122
- 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/shared/ScreenTransformSection.d.ts +6 -3
- package/dist/debug-ui/transform-3d-settings/index.d.ts +11 -0
- package/dist/debug-ui.cjs +3 -13
- package/dist/debug-ui.js +7735 -4896
- 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 +53 -6
- package/dist/entries/face-effects.d.ts +10 -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 -342
- package/dist/face-effects.js +1391 -2767
- 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-Cjcgcc4w.js +118 -0
- package/dist/getFaceInfo-oQcP40Ha.cjs +1 -0
- package/dist/{handJoints2d.d.ts → hand/handJoints2d.d.ts} +1 -1
- package/dist/{handTracking2d.d.ts → hand/handTracking2d.d.ts} +1 -1
- package/dist/{handTracking2dController.d.ts → hand/handTracking2dController.d.ts} +1 -1
- package/dist/{handTracking3d.d.ts → hand/handTracking3d.d.ts} +1 -1
- 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/useXRModel.d.ts +5 -0
- package/dist/hooks/useXRSession/facade.d.ts +3 -0
- package/dist/hooks/useXRSession/registry.d.ts +9 -0
- package/dist/index-Be-S7uSm.cjs +1 -0
- package/dist/index-D4bLzBr6.cjs +1 -0
- package/dist/index-DdWBnI7A.cjs +17 -0
- package/dist/index-DpVIEBHw.js +2068 -0
- package/dist/index-DqhqBi7O.cjs +1 -0
- package/dist/index-HxT9XEuh.js +111 -0
- package/dist/{index-safCs_af.js → index-JygePOwo.js} +565 -508
- package/dist/index-N7C6fNah.js +214 -0
- package/dist/index-UU5ODHGU.cjs +1 -0
- package/dist/{index-BGNbrc4C.js → index-YMUaJU7U.js} +217 -126
- package/dist/{internal-Cae1ps15.js → internal-D7NxAsc6.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 +1138 -86
- package/dist/main.cjs +1 -73
- package/dist/main.js +545 -1693
- 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/render/renderGroups.d.ts +47 -0
- package/dist/render/renderPasses.d.ts +18 -0
- package/dist/renderGroups-JEXqSACh.js +152 -0
- package/dist/renderGroups-uXXsFpvw.cjs +1 -0
- package/dist/renderLayers-lDtL0_43.cjs +1 -0
- package/dist/renderLayers-zrK2pv5O.js +13 -0
- package/dist/renderPasses-CVWt0t8m.cjs +21 -0
- package/dist/renderPasses-CdGZeHHL.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/{screenImageSettings.d.ts → screen-image/screenImageSettings.d.ts} +9 -2
- package/dist/{screenTextSettings.d.ts → screen-text/screenTextSettings.d.ts} +18 -2
- package/dist/screen2d/coordinates.d.ts +87 -0
- package/dist/screen2d/index.d.ts +3 -0
- package/dist/screen2d/screenTransform.d.ts +47 -0
- package/dist/screen2d/smoothing.d.ts +5 -0
- package/dist/{selectors-BLl2JUWW.cjs → selectors-2QvO5RYY.cjs} +1 -1
- package/dist/{selectors-CXd_x-6t.js → selectors-twqYByYZ.js} +6 -6
- 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 +63 -0
- package/dist/texture/animationMath.d.ts +8 -0
- package/dist/texture/gifReader.d.ts +17 -0
- package/dist/texture/gifTextureSource.d.ts +16 -0
- package/dist/texture/sourceResolver.d.ts +30 -0
- package/dist/tracking.cjs +1 -1
- package/dist/tracking.js +580 -321
- package/dist/types/face.d.ts +1 -13
- package/dist/types/index.d.ts +0 -1
- package/dist/types/nodes.d.ts +2 -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-DOJCGlDG.js +62 -0
- package/dist/useFaceInfo-DSUmuzzO.cjs +1 -0
- package/dist/useFaceResults-B1BSGUAW.cjs +1 -0
- package/dist/useFaceResults-CBmhT5E8.js +19 -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/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 +65 -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 +74 -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 +84 -0
- package/package.json +38 -8
- package/dist/MediaSourceSwitcher-C-xYg0nQ.js +0 -317
- package/dist/MediaSourceSwitcher-Cq3g4IKw.cjs +0 -31
- package/dist/components/FaceRetouch/defaults.d.ts +0 -13
- package/dist/components/FaceRetouch/retouchRegions.d.ts +0 -23
- package/dist/components/FaceRetouch/useFaceRetouchRegions.d.ts +0 -12
- package/dist/defaults-BLpcN3pG.cjs +0 -1
- package/dist/defaults-LtY4M7dg.js +0 -55
- package/dist/index-BXyObVHF.cjs +0 -1
- package/dist/index-CY3bUAcW.js +0 -12
- package/dist/index-C_Duh13c.cjs +0 -1
- package/dist/index-D8fpPQkC.cjs +0 -1
- package/dist/index-DxshgBu0.cjs +0 -1
- package/dist/index-O-2crZ3M.js +0 -1102
- package/dist/internal-BjyhBP8i.cjs +0 -1
- package/dist/modules/XRClient/index.d.ts +0 -9
- package/dist/modules/index.d.ts +0 -1
- package/dist/screenImageSettings-6NRg4cx9.js +0 -39
- package/dist/screenImageSettings-y_B4_767.cjs +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/useXRModel-3DcUa28n.cjs +0 -1
- package/dist/useXRModel-BMJE1hrk.js +0 -28
- /package/dist/{layerStack.d.ts → render/layerStack.d.ts} +0 -0
- /package/dist/{screenImagePresets.d.ts → screen-image/screenImagePresets.d.ts} +0 -0
- /package/dist/{screenTextPresets.d.ts → screen-text/screenTextPresets.d.ts} +0 -0
|
@@ -1,19 +1,20 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
var s = (t, e, r) =>
|
|
4
|
-
import { jsx as f, jsxs as
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
7
|
-
import { u as
|
|
8
|
-
import { useFrame as
|
|
1
|
+
var K = Object.defineProperty;
|
|
2
|
+
var O = (t, e, r) => e in t ? K(t, e, { enumerable: !0, configurable: !0, writable: !0, value: r }) : t[e] = r;
|
|
3
|
+
var s = (t, e, r) => O(t, typeof e != "symbol" ? e + "" : e, r);
|
|
4
|
+
import { jsx as f, jsxs as w } from "react/jsx-runtime";
|
|
5
|
+
import W, { useState as b, useRef as h, useEffect as T, useCallback as y, createContext as X, Suspense as V, lazy as q } from "react";
|
|
6
|
+
import { a as J } from "./selectors-twqYByYZ.js";
|
|
7
|
+
import { u as G } from "./index-JygePOwo.js";
|
|
8
|
+
import { useFrame as Q } from "@react-three/fiber";
|
|
9
9
|
import "./hasFullUnitUVBounds-BGvcFsQM.js";
|
|
10
|
-
|
|
10
|
+
import "./renderLayers-zrK2pv5O.js";
|
|
11
|
+
const pe = ({
|
|
11
12
|
children: t,
|
|
12
13
|
defaultCollapsed: e = !0,
|
|
13
14
|
title: r,
|
|
14
15
|
width: i = 320
|
|
15
16
|
}) => {
|
|
16
|
-
const [n, o] =
|
|
17
|
+
const [n, o] = b(e);
|
|
17
18
|
return n ? /* @__PURE__ */ f(
|
|
18
19
|
"button",
|
|
19
20
|
{
|
|
@@ -39,7 +40,7 @@ const fe = ({
|
|
|
39
40
|
},
|
|
40
41
|
children: "◫"
|
|
41
42
|
}
|
|
42
|
-
) : /* @__PURE__ */
|
|
43
|
+
) : /* @__PURE__ */ w(
|
|
43
44
|
"div",
|
|
44
45
|
{
|
|
45
46
|
style: {
|
|
@@ -59,7 +60,7 @@ const fe = ({
|
|
|
59
60
|
color: "#e5eefb"
|
|
60
61
|
},
|
|
61
62
|
children: [
|
|
62
|
-
/* @__PURE__ */
|
|
63
|
+
/* @__PURE__ */ w(
|
|
63
64
|
"div",
|
|
64
65
|
{
|
|
65
66
|
style: {
|
|
@@ -99,7 +100,7 @@ const fe = ({
|
|
|
99
100
|
}
|
|
100
101
|
);
|
|
101
102
|
};
|
|
102
|
-
class
|
|
103
|
+
class Y {
|
|
103
104
|
// 500ms as per PRD
|
|
104
105
|
constructor() {
|
|
105
106
|
s(this, "frameTimestamps", []);
|
|
@@ -131,16 +132,16 @@ class Q {
|
|
|
131
132
|
this.frameTimestamps = [], this.lastUpdateTime = performance.now(), this.currentFPS = 0;
|
|
132
133
|
}
|
|
133
134
|
}
|
|
134
|
-
function
|
|
135
|
+
function ge(t, e = 1) {
|
|
135
136
|
return t.toFixed(e);
|
|
136
137
|
}
|
|
137
138
|
function _(t) {
|
|
138
139
|
return t / (1024 * 1024);
|
|
139
140
|
}
|
|
140
|
-
function
|
|
141
|
+
function Z(t, e) {
|
|
141
142
|
return e === 0 ? 0 : t / e * 100;
|
|
142
143
|
}
|
|
143
|
-
class
|
|
144
|
+
class ee {
|
|
144
145
|
constructor(e = 1e3) {
|
|
145
146
|
s(this, "intervalId", null);
|
|
146
147
|
s(this, "memoryUsage", null);
|
|
@@ -188,7 +189,7 @@ class Z {
|
|
|
188
189
|
this.memoryUsage = {
|
|
189
190
|
used: _(r),
|
|
190
191
|
total: _(i),
|
|
191
|
-
percentage:
|
|
192
|
+
percentage: Z(r, i)
|
|
192
193
|
};
|
|
193
194
|
}
|
|
194
195
|
/**
|
|
@@ -205,7 +206,7 @@ class Z {
|
|
|
205
206
|
return this.isSupported;
|
|
206
207
|
}
|
|
207
208
|
}
|
|
208
|
-
class
|
|
209
|
+
class te {
|
|
209
210
|
constructor() {
|
|
210
211
|
s(this, "resolution", "N/A");
|
|
211
212
|
s(this, "videoElement", null);
|
|
@@ -247,7 +248,7 @@ class ee {
|
|
|
247
248
|
return this.videoElement && this.updateResolution(), this.resolution;
|
|
248
249
|
}
|
|
249
250
|
}
|
|
250
|
-
class
|
|
251
|
+
class re {
|
|
251
252
|
constructor(e = {}) {
|
|
252
253
|
s(this, "options");
|
|
253
254
|
s(this, "isRunning", !1);
|
|
@@ -271,7 +272,7 @@ class te {
|
|
|
271
272
|
this.options = {
|
|
272
273
|
enableMemoryTracking: e.enableMemoryTracking ?? !0,
|
|
273
274
|
memoryUpdateInterval: e.memoryUpdateInterval ?? 1e3
|
|
274
|
-
}, this.cameraFPSTracker = new
|
|
275
|
+
}, this.cameraFPSTracker = new Y(), this.memoryTracker = new ee(this.options.memoryUpdateInterval), this.resolutionTracker = new te();
|
|
275
276
|
}
|
|
276
277
|
/**
|
|
277
278
|
* Start collecting metrics
|
|
@@ -282,13 +283,13 @@ class te {
|
|
|
282
283
|
console.warn("[MetricsCollector] Already running");
|
|
283
284
|
return;
|
|
284
285
|
}
|
|
285
|
-
this.isRunning = !0, this.lastEffectiveFPSUpdate = performance.now(), this.options.enableMemoryTracking && this.memoryTracker.start(), e && this.resolutionTracker.start(e), this.setupCameraFPSHook(), console.
|
|
286
|
+
this.isRunning = !0, this.lastEffectiveFPSUpdate = performance.now(), this.options.enableMemoryTracking && this.memoryTracker.start(), e && this.resolutionTracker.start(e), this.setupCameraFPSHook(), console.info("[MetricsCollector] Started");
|
|
286
287
|
}
|
|
287
288
|
/**
|
|
288
289
|
* Stop collecting metrics and clean up
|
|
289
290
|
*/
|
|
290
291
|
stop() {
|
|
291
|
-
this.isRunning && (this.isRunning = !1, this.memoryTracker.stop(), this.resolutionTracker.stop(), this.cameraFPSTracker.reset(), this.cleanupCameraFPSHook(), console.
|
|
292
|
+
this.isRunning && (this.isRunning = !1, this.memoryTracker.stop(), this.resolutionTracker.stop(), this.cameraFPSTracker.reset(), this.cleanupCameraFPSHook(), console.info("[MetricsCollector] Stopped"));
|
|
292
293
|
}
|
|
293
294
|
/**
|
|
294
295
|
* Setup global hook for camera FPS tracking
|
|
@@ -348,7 +349,7 @@ class te {
|
|
|
348
349
|
name: a.name,
|
|
349
350
|
processingTime: a.processingTime || 0
|
|
350
351
|
}));
|
|
351
|
-
const o = n.reduce((a,
|
|
352
|
+
const o = n.reduce((a, p) => a + (p.processingTime || 0), 0);
|
|
352
353
|
this.metrics.detectionTime = o, this.updateEffectiveFPS();
|
|
353
354
|
} catch (r) {
|
|
354
355
|
console.warn("[MetricsCollector] Error updating detection time:", r), this.metrics.detectionTime = 0, this.metrics.modelPerformance = [];
|
|
@@ -375,14 +376,14 @@ class te {
|
|
|
375
376
|
return this.isRunning;
|
|
376
377
|
}
|
|
377
378
|
}
|
|
378
|
-
const
|
|
379
|
-
function
|
|
379
|
+
const ie = q(async () => ({ default: (await import("./DebuggerUI-xp4bg3gH.js")).DebuggerUI })), C = X(null);
|
|
380
|
+
function be({
|
|
380
381
|
children: t,
|
|
381
382
|
keyboardShortcut: e = "ctrl+shift+d",
|
|
382
383
|
initialEnabled: r = !1,
|
|
383
384
|
position: i = "top-left"
|
|
384
385
|
}) {
|
|
385
|
-
const [n, o] =
|
|
386
|
+
const [n, o] = b(r), [a, p] = b(!1), [k, E] = b({
|
|
386
387
|
cameraFPS: 0,
|
|
387
388
|
detectionTime: 0,
|
|
388
389
|
modelPerformance: [],
|
|
@@ -390,76 +391,81 @@ function pe({
|
|
|
390
391
|
effectiveFPS: 0,
|
|
391
392
|
memory: null,
|
|
392
393
|
resolution: "N/A"
|
|
393
|
-
}),
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
}), []),
|
|
397
|
-
const c =
|
|
394
|
+
}), m = h(null), l = h(null), g = h(!1), { session: v } = G(), P = J();
|
|
395
|
+
T(() => (m.current || (m.current = new re(), window.__xr_metrics_collector = m.current), () => {
|
|
396
|
+
m.current && m.current.stop(), l.current && clearInterval(l.current), window.__xr_metrics_collector && delete window.__xr_metrics_collector;
|
|
397
|
+
}), []), T(() => {
|
|
398
|
+
const c = m.current;
|
|
398
399
|
if (c) {
|
|
399
|
-
if (n &&
|
|
400
|
-
const u =
|
|
400
|
+
if (n && P) {
|
|
401
|
+
const u = v._getVideoElement();
|
|
401
402
|
c.start(u), l.current = window.setInterval(async () => {
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
403
|
+
if (!g.current) {
|
|
404
|
+
g.current = !0;
|
|
405
|
+
try {
|
|
406
|
+
const F = Object.fromEntries(v.store.getSnapshot().pipeline);
|
|
407
|
+
await c.updateDetectionTime(F), E(c.getMetrics());
|
|
408
|
+
} finally {
|
|
409
|
+
g.current = !1;
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
}, 100);
|
|
407
413
|
} else
|
|
408
|
-
c.stop(), l.current && (clearInterval(l.current), l.current = null);
|
|
414
|
+
c.stop(), l.current && (clearInterval(l.current), l.current = null), g.current = !1;
|
|
409
415
|
return () => {
|
|
410
416
|
l.current && (clearInterval(l.current), l.current = null);
|
|
411
417
|
};
|
|
412
418
|
}
|
|
413
|
-
}, [n,
|
|
419
|
+
}, [n, P, v]), T(() => {
|
|
414
420
|
const c = (u) => {
|
|
415
|
-
const
|
|
416
|
-
|
|
421
|
+
const d = e.toLowerCase().split("+"), U = d.includes("ctrl") || d.includes("control"), L = d.includes("shift"), A = d.includes("alt"), N = d[d.length - 1], H = U ? u.ctrlKey || u.metaKey : !0, z = L ? u.shiftKey : !0, j = A ? u.altKey : !0, $ = u.key.toLowerCase() === N;
|
|
422
|
+
H && z && j && $ && (u.preventDefault(), o((B) => !B));
|
|
417
423
|
};
|
|
418
424
|
return window.addEventListener("keydown", c), () => {
|
|
419
425
|
window.removeEventListener("keydown", c);
|
|
420
426
|
};
|
|
421
427
|
}, [e]);
|
|
422
|
-
const
|
|
428
|
+
const I = y(() => {
|
|
423
429
|
o((c) => !c);
|
|
424
|
-
}, []), M =
|
|
430
|
+
}, []), M = y(() => {
|
|
425
431
|
o(!0);
|
|
426
|
-
}, []),
|
|
432
|
+
}, []), x = y(() => {
|
|
427
433
|
o(!1);
|
|
428
|
-
}, []),
|
|
434
|
+
}, []), D = {
|
|
429
435
|
state: {
|
|
430
436
|
enabled: n,
|
|
431
437
|
collapsed: a,
|
|
432
|
-
metrics:
|
|
438
|
+
metrics: k
|
|
433
439
|
},
|
|
434
|
-
toggle:
|
|
435
|
-
setCollapsed:
|
|
440
|
+
toggle: I,
|
|
441
|
+
setCollapsed: p,
|
|
436
442
|
enable: M,
|
|
437
|
-
disable:
|
|
443
|
+
disable: x
|
|
438
444
|
};
|
|
439
|
-
return /* @__PURE__ */
|
|
445
|
+
return /* @__PURE__ */ w(C.Provider, { value: D, children: [
|
|
440
446
|
t,
|
|
441
|
-
n && /* @__PURE__ */ f(
|
|
442
|
-
|
|
447
|
+
n && /* @__PURE__ */ f(V, { fallback: null, children: /* @__PURE__ */ f(
|
|
448
|
+
ie,
|
|
443
449
|
{
|
|
444
|
-
metrics:
|
|
450
|
+
metrics: k,
|
|
445
451
|
collapsed: a,
|
|
446
|
-
onCollapse:
|
|
447
|
-
onClose:
|
|
452
|
+
onCollapse: p,
|
|
453
|
+
onClose: x,
|
|
448
454
|
position: i,
|
|
449
455
|
keyboardShortcut: e
|
|
450
456
|
}
|
|
451
457
|
) })
|
|
452
458
|
] });
|
|
453
459
|
}
|
|
454
|
-
function
|
|
455
|
-
const t =
|
|
460
|
+
function se() {
|
|
461
|
+
const t = W.useContext(C);
|
|
456
462
|
if (!t)
|
|
457
463
|
throw new Error("useDebuggerContext must be used within a DebuggerProvider");
|
|
458
464
|
return t;
|
|
459
465
|
}
|
|
460
|
-
function
|
|
461
|
-
const e =
|
|
462
|
-
return
|
|
466
|
+
function ne({ onUpdate: t }) {
|
|
467
|
+
const e = h(0), r = h(!0);
|
|
468
|
+
return Q(() => {
|
|
463
469
|
if (r.current)
|
|
464
470
|
r.current = !1;
|
|
465
471
|
else {
|
|
@@ -469,8 +475,8 @@ function se({ onUpdate: t }) {
|
|
|
469
475
|
e.current = performance.now();
|
|
470
476
|
}, -1e3), null;
|
|
471
477
|
}
|
|
472
|
-
function
|
|
473
|
-
const t =
|
|
478
|
+
function oe() {
|
|
479
|
+
const t = se();
|
|
474
480
|
return {
|
|
475
481
|
metrics: t.state.metrics,
|
|
476
482
|
enabled: t.state.enabled,
|
|
@@ -481,39 +487,39 @@ function ne() {
|
|
|
481
487
|
disable: t.disable
|
|
482
488
|
};
|
|
483
489
|
}
|
|
484
|
-
function
|
|
485
|
-
const { enabled: t } =
|
|
490
|
+
function ve() {
|
|
491
|
+
const { enabled: t } = oe(), e = (r) => {
|
|
486
492
|
const i = window;
|
|
487
493
|
i.__xr_metrics_collector && i.__xr_metrics_collector.updateRenderTime(r);
|
|
488
494
|
};
|
|
489
|
-
return t ? /* @__PURE__ */ f(
|
|
495
|
+
return t ? /* @__PURE__ */ f(ne, { onUpdate: e }) : null;
|
|
490
496
|
}
|
|
491
|
-
const
|
|
492
|
-
function
|
|
497
|
+
const S = 600;
|
|
498
|
+
function R() {
|
|
493
499
|
if (typeof window > "u")
|
|
494
500
|
return;
|
|
495
501
|
const t = window;
|
|
496
502
|
return t.__xrCalibrationDebugState || (t.__xrCalibrationDebugState = { events: [] }), t.__xrCalibrationDebugState;
|
|
497
503
|
}
|
|
498
|
-
function
|
|
499
|
-
const i =
|
|
504
|
+
function Te(t, e, r) {
|
|
505
|
+
const i = R();
|
|
500
506
|
i && (i.events.push({
|
|
501
507
|
source: t,
|
|
502
508
|
label: e,
|
|
503
509
|
payload: r,
|
|
504
510
|
ts: performance.now()
|
|
505
|
-
}), i.events.length >
|
|
511
|
+
}), i.events.length > S && i.events.splice(0, i.events.length - S));
|
|
506
512
|
}
|
|
507
|
-
function
|
|
508
|
-
const e =
|
|
513
|
+
function ye(t = S) {
|
|
514
|
+
const e = R();
|
|
509
515
|
return e ? e.events.slice(Math.max(0, e.events.length - t)) : [];
|
|
510
516
|
}
|
|
511
517
|
export {
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
518
|
+
be as D,
|
|
519
|
+
pe as X,
|
|
520
|
+
ve as a,
|
|
521
|
+
Te as b,
|
|
522
|
+
ge as f,
|
|
523
|
+
ye as r,
|
|
524
|
+
oe as u
|
|
519
525
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var H=Object.defineProperty;var z=(t,e,r)=>e in t?H(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var i=(t,e,r)=>z(t,typeof e!="symbol"?e+"":e,r);const m=require("react/jsx-runtime"),n=require("react"),O=require("./selectors-2QvO5RYY.cjs"),$=require("./index-D4bLzBr6.cjs"),B=require("@react-three/fiber");require("./hasFullUnitUVBounds-p1Dl0ejX.cjs");require("./renderLayers-lDtL0_43.cjs");const K=({children:t,defaultCollapsed:e=!0,title:r,width:s=320})=>{const[o,a]=n.useState(e);return o?m.jsx("button",{type:"button",onClick:()=>a(!1),"aria-label":`Open ${r}`,title:`Open ${r}`,style:{position:"absolute",right:16,bottom:16,zIndex:40,width:40,height:40,border:"1px solid rgba(255,255,255,0.12)",borderRadius:999,background:"rgba(15, 23, 42, 0.72)",color:"#e5eefb",boxShadow:"0 12px 30px rgba(0,0,0,0.18)",backdropFilter:"blur(10px)",cursor:"pointer",pointerEvents:"auto"},children:"◫"}):m.jsxs("div",{style:{position:"absolute",right:16,bottom:16,zIndex:40,width:s,maxWidth:"calc(100vw - 32px)",padding:14,borderRadius:14,boxShadow:"0 12px 30px rgba(0,0,0,0.26)",backdropFilter:"blur(10px)",pointerEvents:"auto",background:"rgba(15, 23, 42, 0.78)",border:"1px solid rgba(255,255,255,0.12)",color:"#e5eefb"},children:[m.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12,marginBottom:10},children:[m.jsx("div",{style:{fontSize:13,fontWeight:700},children:r}),m.jsx("button",{type:"button",onClick:()=>a(!0),"aria-label":`Close ${r}`,title:`Close ${r}`,style:{width:32,height:32,border:"1px solid rgba(255,255,255,0.12)",borderRadius:999,background:"rgba(255,255,255,0.04)",color:"#e5eefb",cursor:"pointer",flex:"0 0 auto"},children:"×"})]}),t]})};class V{constructor(){i(this,"frameTimestamps",[]);i(this,"lastUpdateTime",0);i(this,"currentFPS",0);i(this,"updateInterval",500);this.lastUpdateTime=performance.now()}trackFrame(){const e=performance.now();this.frameTimestamps.push(e);const r=e-this.updateInterval;this.frameTimestamps=this.frameTimestamps.filter(s=>s>r),e-this.lastUpdateTime>=this.updateInterval&&(this.currentFPS=this.frameTimestamps.length*2,this.lastUpdateTime=e)}getFPS(){return this.currentFPS}reset(){this.frameTimestamps=[],this.lastUpdateTime=performance.now(),this.currentFPS=0}}function W(t,e=1){return t.toFixed(e)}function x(t){return t/(1024*1024)}function X(t,e){return e===0?0:t/e*100}class J{constructor(e=1e3){i(this,"intervalId",null);i(this,"memoryUsage",null);i(this,"updateInterval");i(this,"isSupported",!1);this.updateInterval=e,this.checkSupport()}checkSupport(){const e=performance;this.isSupported="memory"in e&&e.memory!==void 0,this.isSupported||console.warn("[MemoryTracker] performance.memory not available (Chrome-only API)")}start(){if(this.intervalId!==null){console.warn("[MemoryTracker] Already running");return}if(!this.isSupported){this.memoryUsage=null;return}this.updateMemory(),this.intervalId=window.setInterval(()=>{this.updateMemory()},this.updateInterval)}stop(){this.intervalId!==null&&(clearInterval(this.intervalId),this.intervalId=null)}updateMemory(){if(!this.isSupported)return;const e=performance;if(!e.memory)return;const r=e.memory.usedJSHeapSize,s=e.memory.jsHeapSizeLimit;this.memoryUsage={used:x(r),total:x(s),percentage:X(r,s)}}getMemoryUsage(){return this.memoryUsage}isMemorySupported(){return this.isSupported}}class G{constructor(){i(this,"resolution","N/A");i(this,"videoElement",null);i(this,"metadataListener",null)}start(e){if(!e){this.resolution="N/A";return}this.videoElement=e,e.videoWidth>0&&e.videoHeight>0&&this.updateResolution(),this.metadataListener=()=>{this.updateResolution()},e.addEventListener("loadedmetadata",this.metadataListener)}stop(){this.videoElement&&this.metadataListener&&(this.videoElement.removeEventListener("loadedmetadata",this.metadataListener),this.metadataListener=null),this.videoElement=null,this.resolution="N/A"}updateResolution(){if(!this.videoElement){this.resolution="N/A";return}const e=this.videoElement.videoWidth,r=this.videoElement.videoHeight;e>0&&r>0?this.resolution=`${e}x${r}`:this.resolution="N/A"}getResolution(){return this.videoElement&&this.updateResolution(),this.resolution}}class Q{constructor(e={}){i(this,"options");i(this,"isRunning",!1);i(this,"metrics",{cameraFPS:0,detectionTime:0,modelPerformance:[],renderTime:0,effectiveFPS:0,memory:null,resolution:"N/A"});i(this,"cameraFPSTracker");i(this,"memoryTracker");i(this,"resolutionTracker");i(this,"frameTimes",[]);i(this,"lastEffectiveFPSUpdate",0);this.options={enableMemoryTracking:e.enableMemoryTracking??!0,memoryUpdateInterval:e.memoryUpdateInterval??1e3},this.cameraFPSTracker=new V,this.memoryTracker=new J(this.options.memoryUpdateInterval),this.resolutionTracker=new G}start(e){if(this.isRunning){console.warn("[MetricsCollector] Already running");return}this.isRunning=!0,this.lastEffectiveFPSUpdate=performance.now(),this.options.enableMemoryTracking&&this.memoryTracker.start(),e&&this.resolutionTracker.start(e),this.setupCameraFPSHook(),console.info("[MetricsCollector] Started")}stop(){this.isRunning&&(this.isRunning=!1,this.memoryTracker.stop(),this.resolutionTracker.stop(),this.cameraFPSTracker.reset(),this.cleanupCameraFPSHook(),console.info("[MetricsCollector] Stopped"))}setupCameraFPSHook(){const e=window;e.__xr_debugger_metrics||(e.__xr_debugger_metrics={trackCameraFrame:()=>{this.cameraFPSTracker.trackFrame(),this.metrics.cameraFPS=this.cameraFPSTracker.getFPS()}})}cleanupCameraFPSHook(){const e=window;e.__xr_debugger_metrics&&delete e.__xr_debugger_metrics}getMetrics(){return this.updateMetricsFromTrackers(),{...this.metrics}}updateMetricsFromTrackers(){this.isRunning&&(this.metrics.memory=this.memoryTracker.getMemoryUsage(),this.metrics.resolution=this.resolutionTracker.getResolution(),this.updateEffectiveFPS())}updateRenderTime(e){this.metrics.renderTime=e,this.updateEffectiveFPS()}async updateDetectionTime(e){if(!e||!this.isRunning){this.metrics.detectionTime=0,this.metrics.modelPerformance=[];return}try{const r=Object.values(e).filter(Boolean);if(r.length===0){this.metrics.detectionTime=0,this.metrics.modelPerformance=[];return}const s=r.map(c=>c&&typeof c.getPerformanceData=="function"?c.getPerformanceData():Promise.resolve({name:"unknown",processingTime:0})),o=await Promise.all(s);this.metrics.modelPerformance=o.map(c=>({name:c.name,processingTime:c.processingTime||0}));const a=o.reduce((c,p)=>c+(p.processingTime||0),0);this.metrics.detectionTime=a,this.updateEffectiveFPS()}catch(r){console.warn("[MetricsCollector] Error updating detection time:",r),this.metrics.detectionTime=0,this.metrics.modelPerformance=[]}}updateEffectiveFPS(){const e=performance.now(),r=this.metrics.detectionTime+this.metrics.renderTime;if(this.frameTimes.push(r),e-this.lastEffectiveFPSUpdate>=1e3){if(this.frameTimes.length>0){const s=this.frameTimes.reduce((o,a)=>o+a,0)/this.frameTimes.length;this.metrics.effectiveFPS=s>0?1e3/s:0}this.frameTimes=[],this.lastEffectiveFPSUpdate=e}}isActive(){return this.isRunning}}const Y=n.lazy(async()=>({default:(await Promise.resolve().then(()=>require("./DebuggerUI-B45_Gb9d.cjs"))).DebuggerUI})),k=n.createContext(null);function Z({children:t,keyboardShortcut:e="ctrl+shift+d",initialEnabled:r=!1,position:s="top-left"}){const[o,a]=n.useState(r),[c,p]=n.useState(!1),[y,_]=n.useState({cameraFPS:0,detectionTime:0,modelPerformance:[],renderTime:0,effectiveFPS:0,memory:null,resolution:"N/A"}),f=n.useRef(null),u=n.useRef(null),g=n.useRef(!1),{session:b}=$.useXRContext(),T=O.useXRReady();n.useEffect(()=>(f.current||(f.current=new Q,window.__xr_metrics_collector=f.current),()=>{f.current&&f.current.stop(),u.current&&clearInterval(u.current),window.__xr_metrics_collector&&delete window.__xr_metrics_collector}),[]),n.useEffect(()=>{const l=f.current;if(l){if(o&&T){const d=b._getVideoElement();l.start(d),u.current=window.setInterval(async()=>{if(!g.current){g.current=!0;try{const S=Object.fromEntries(b.store.getSnapshot().pipeline);await l.updateDetectionTime(S),_(l.getMetrics())}finally{g.current=!1}}},100)}else l.stop(),u.current&&(clearInterval(u.current),u.current=null),g.current=!1;return()=>{u.current&&(clearInterval(u.current),u.current=null)}}},[o,T,b]),n.useEffect(()=>{const l=d=>{const h=e.toLowerCase().split("+"),D=h.includes("ctrl")||h.includes("control"),I=h.includes("shift"),M=h.includes("alt"),U=h[h.length-1],j=D?d.ctrlKey||d.metaKey:!0,L=I?d.shiftKey:!0,A=M?d.altKey:!0,q=d.key.toLowerCase()===U;j&&L&&A&&q&&(d.preventDefault(),a(N=>!N))};return window.addEventListener("keydown",l),()=>{window.removeEventListener("keydown",l)}},[e]);const C=n.useCallback(()=>{a(l=>!l)},[]),R=n.useCallback(()=>{a(!0)},[]),w=n.useCallback(()=>{a(!1)},[]),E={state:{enabled:o,collapsed:c,metrics:y},toggle:C,setCollapsed:p,enable:R,disable:w};return m.jsxs(k.Provider,{value:E,children:[t,o&&m.jsx(n.Suspense,{fallback:null,children:m.jsx(Y,{metrics:y,collapsed:c,onCollapse:p,onClose:w,position:s,keyboardShortcut:e})})]})}function ee(){const t=n.useContext(k);if(!t)throw new Error("useDebuggerContext must be used within a DebuggerProvider");return t}function te({onUpdate:t}){const e=n.useRef(0),r=n.useRef(!0);return B.useFrame(()=>{if(r.current)r.current=!1;else{const o=performance.now()-e.current;t(o)}e.current=performance.now()},-1e3),null}function P(){const t=ee();return{metrics:t.state.metrics,enabled:t.state.enabled,collapsed:t.state.collapsed,toggle:t.toggle,setCollapsed:t.setCollapsed,enable:t.enable,disable:t.disable}}function re(){const{enabled:t}=P(),e=r=>{const s=window;s.__xr_metrics_collector&&s.__xr_metrics_collector.updateRenderTime(r)};return t?m.jsx(te,{onUpdate:e}):null}const v=600;function F(){if(typeof window>"u")return;const t=window;return t.__xrCalibrationDebugState||(t.__xrCalibrationDebugState={events:[]}),t.__xrCalibrationDebugState}function se(t,e,r){const s=F();s&&(s.events.push({source:t,label:e,payload:r,ts:performance.now()}),s.events.length>v&&s.events.splice(0,s.events.length-v))}function ie(t=v){const e=F();return e?e.events.slice(Math.max(0,e.events.length-t)):[]}exports.DebuggerOverlay=re;exports.DebuggerProvider=Z;exports.XRDebugView=K;exports.formatNumber=W;exports.readCalibrationDebugEvents=ie;exports.recordCalibrationDebugEvent=se;exports.useDebugger=P;
|
package/dist/internal.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./internal-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./internal-i2JkM85N.cjs"),r=require("./hasFullUnitUVBounds-p1Dl0ejX.cjs"),n=require("./renderLayers-lDtL0_43.cjs");exports.DebuggerOverlay=e.DebuggerOverlay;exports.DebuggerProvider=e.DebuggerProvider;exports.XRDebugView=e.XRDebugView;exports.readCalibrationDebugEvents=e.readCalibrationDebugEvents;exports.recordCalibrationDebugEvent=e.recordCalibrationDebugEvent;exports.useDebugger=e.useDebugger;exports._resetUVBoundsWarnings=r._resetUVBoundsWarnings;exports.logUVBoundsWarningOnce=r.logUVBoundsWarningOnce;exports.RENDER_LAYERS=n.RENDER_LAYERS;
|
package/dist/internal.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { a, D as s, X as o, r as g, b as n, u } from "./internal-
|
|
1
|
+
import { a, D as s, X as o, r as g, b as n, u } from "./internal-D7NxAsc6.js";
|
|
2
2
|
import { _ as i, l as t } from "./hasFullUnitUVBounds-BGvcFsQM.js";
|
|
3
|
-
import { R as d } from "./
|
|
3
|
+
import { R as d } from "./renderLayers-zrK2pv5O.js";
|
|
4
4
|
export {
|
|
5
5
|
a as DebuggerOverlay,
|
|
6
6
|
s as DebuggerProvider,
|
package/dist/low-level.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=require("./index-BXyObVHF.cjs"),h=require("./useXRModel-3DcUa28n.cjs"),i=require("./selectors-BLl2JUWW.cjs"),X=require("react"),x=require("./useFaceResults-hVUJYSEY.cjs"),t=require("./index-C_Duh13c.cjs"),S=require("./hasFullUnitUVBounds-p1Dl0ejX.cjs"),f=require("./index-DxshgBu0.cjs"),l=require("react/jsx-runtime"),g=require("@react-three/drei"),T={position:"absolute",top:-28,left:0,background:"rgba(34, 197, 94, 0.9)",color:"#04130a",fontFamily:"Menlo, Monaco, Consolas, monospace",fontSize:12,fontWeight:700,padding:"4px 8px",whiteSpace:"nowrap"},B=({boundingBox:e,label:o="face bounding box",color:r="#22c55e",style:n,labelStyle:u})=>l.jsx("div",{style:{position:"absolute",left:`${e.left*100}%`,top:`${e.top*100}%`,width:`${e.width*100}%`,height:`${e.height*100}%`,border:`3px solid ${r}`,boxSizing:"border-box",pointerEvents:"none",zIndex:20,...n},children:o!==null&&l.jsx("div",{style:{...T,...u},children:o})}),C=e=>{const{makeDefault:o=!0,...r}=e,n={position:[0,0,40],fov:30,near:.1,far:1e3,makeDefault:o,...r};return l.jsx(g.PerspectiveCamera,{...n})},y=({background:e="#000",children:o,style:r})=>l.jsx("div",{style:{position:"fixed",inset:0,overflow:"hidden",background:e,...r},children:o}),v=e=>{const[o,r]=X.useState(null);return X.useEffect(()=>{let n=0;const u=()=>{var p,R;n=requestAnimationFrame(u);const d=(R=(p=e==null?void 0:e.detectionResults)==null?void 0:p.faceLandmarks)==null?void 0:R[0];if(!d||d.length===0){r(null);return}const c=x.computeLandmarkBounds(d),a={left:c.minX,top:c.minY,width:c.width,height:c.height};r(s=>s&&s.left===a.left&&s.top===a.top&&s.width===a.width&&s.height===a.height?s:a)};return u(),()=>{cancelAnimationFrame(n)}},[e]),o},b=["fill","contain"];exports.HeadTracker=m.HeadTracker;exports.useTrackerContext=m.useTrackerContext;exports.useXRModel=h.useXRModel;exports.useXRCameraTexture=i.useXRCameraTexture;exports.useXRError=i.useXRError;exports.useXRModelNode=i.useXRModelNode;exports.useXRPipelineSnapshot=i.useXRPipelineSnapshot;exports.useXRReady=i.useXRReady;exports.useXRRenderSize=i.useXRRenderSize;exports.computeLandmarkBounds=x.computeLandmarkBounds;exports.ScreenRectAspectContext=t.ScreenRectAspectContext;exports.XRLayer=t.XRLayer;exports.XRMediaSurface=t.XRMediaSurface;exports.XRTrackingOverlay=t.XRTrackingOverlay;exports.XRViewport=t.XRViewport;exports.computeScreenTransform=t.computeScreenTransform;exports.resolveCalibrationFaceDisplayMirrored=t.resolveCalibrationFaceDisplayMirrored;exports.useCalibrationFaceTracker=t.useCalibrationFaceTracker;exports.useScreenSpace=t.useScreenSpace;exports.useXRViewportRenderOutputs=t.useXRViewportRenderOutputs;exports.useXRViewportState=t.useXRViewportState;exports.hasFullUnitUVBounds=S.hasFullUnitUVBounds;exports.useXRContext=f.useXRContext;exports.BoundingBoxOverlay=B;exports.PerspectiveCamera=C;exports.TEXTURE_FITS=b;exports.XRCompositor=y;exports.useFaceBoundingBox=v;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const _=require("./index-D4bLzBr6.cjs"),D=require("./index-DqhqBi7O.cjs"),j=require("./selectors-2QvO5RYY.cjs"),f=require("react"),q=require("./getFaceInfo-oQcP40Ha.cjs"),d=require("react/jsx-runtime"),de=require("@react-three/drei"),B=require("./index-UU5ODHGU.cjs"),ee=require("./useFaceResults-B1BSGUAW.cjs"),ue=require("./hasFullUnitUVBounds-p1Dl0ejX.cjs"),C=require("./contexts-Dv1SA0bS.cjs"),he=require("three");function fe(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const z=fe(he),A=({children:e,config:t,style:r})=>d.jsx("div",{"data-render-target":t.name,style:{position:"absolute",inset:0,overflow:"hidden",background:t.clearColor,pointerEvents:t.pointerEvents??"none",zIndex:t.zIndex,opacity:t.hidden?0:1,...r},children:e}),U=({canvas:e,layout:t,media:r,mirrored:n,filter:o})=>{const i=Math.round(t.destination.width),a=Math.round(t.destination.height);e.width!==i&&(e.width=i),e.height!==a&&(e.height=a);const s=e.getContext("2d");s&&(s.setTransform(1,0,0,1,0,0),s.clearRect(0,0,i,a),n&&(s.translate(i,0),s.scale(-1,1)),o&&(s.filter=o),s.drawImage(r,t.offsetX,t.offsetY,t.drawWidth,t.drawHeight),o&&(s.filter="none"),s.setTransform(1,0,0,1,0,0))},te=({canvasRef:e,enabled:t=!0,fps:r=30,imageRef:n,layout:o,mirrored:i,sourceKind:a,videoRef:s})=>{f.useEffect(()=>{if(!t){const b=e.current,p=b==null?void 0:b.getContext("2d");b&&p&&p.clearRect(0,0,b.width,b.height);return}let l=0,c=0;const u=r>0?1e3/r:0,m=b=>{if(l=requestAnimationFrame(m),u>0&&b-c<u)return;c=b;const p=e.current;if(!p||!o)return;if(a==="image"){const x=n.current;if(!x||!x.complete||x.naturalWidth<=0||x.naturalHeight<=0)return;U({canvas:p,layout:o,media:x,mirrored:i});return}const w=s.current;!w||w.readyState<2||w.videoWidth<=0||w.videoHeight<=0||U({canvas:p,layout:o,media:w,mirrored:i})};return l=requestAnimationFrame(m),()=>{cancelAnimationFrame(l)}},[e,t,r,n,o,i,a,s])},re=({canvasRef:e,imageRef:t,layer:r,layout:n,mirrored:o,sourceKind:i,videoRef:a})=>(te({canvasRef:e,imageRef:t,layout:n,mirrored:o,sourceKind:i,videoRef:a}),d.jsx(A,{config:r,children:d.jsx("canvas",{ref:e,style:{position:"absolute",inset:0,width:"100%",height:"100%",display:"block",background:"#000"}})})),me=({canvasRef:e,controlInsetTop:t,debugVisible:r,fps:n=15,imageRef:o,layer:i,layout:a,mirrored:s,sourceKind:l,videoRef:c,viewportSize:u})=>{te({canvasRef:e,enabled:r,fps:n,imageRef:o,layout:a,mirrored:s,sourceKind:l,videoRef:c});const m=Math.min(220,Math.max(120,u.width*.22)),b=u.width>0&&u.height>0?u.width/u.height:1,p=Math.min(u.height-24,Math.max(t??16,16));return d.jsx(A,{config:i,children:d.jsx("canvas",{ref:e,style:{position:"absolute",left:16,top:p,width:r?m:1,height:r?"auto":1,aspectRatio:`${b}`,opacity:r?.85:0,borderRadius:10,border:r?"1px solid rgba(255,255,255,0.16)":"none",pointerEvents:"none",objectFit:"contain",background:"#000"}})})},ge={audio:!1,video:{facingMode:"user",frameRate:{ideal:30,max:60}}},pe={name:"viewport-live",clearColor:"#000000",pointerEvents:"none",zIndex:0},xe={name:"viewport-ui",clearColor:"transparent",pointerEvents:"auto",zIndex:5},be={name:"viewport-scene",clearColor:"transparent",pointerEvents:"auto",zIndex:1},k={webcam:{icon:"◉",label:"Webcam"},image:{icon:"▣",label:"Images"},video:{icon:"▶",label:"Videos"}},we=({imageRef:e,selectedSource:t,videoRef:r})=>d.jsxs(d.Fragment,{children:[d.jsx("video",{ref:r,style:{position:"absolute",width:1,height:1,opacity:t==="image"?0:.001,pointerEvents:"none"}}),d.jsx("img",{ref:e,alt:"",style:{position:"absolute",width:1,height:1,opacity:t==="image"?.001:0,pointerEvents:"none"}})]}),Y=({dock:e,label:t,onChange:r,options:n,value:o})=>d.jsx("div",{style:{position:"absolute",top:e==="top-left"?74:void 0,bottom:e==="bottom-left"?74:void 0,left:16,zIndex:5,maxWidth:"calc(100vw - 32px)",padding:10,borderRadius:14,background:"rgba(15, 23, 42, 0.72)",border:"1px solid rgba(255,255,255,0.12)",boxShadow:"0 12px 30px rgba(0,0,0,0.18)",backdropFilter:"blur(10px)"},children:d.jsxs("label",{style:{display:"grid",gap:6,color:"#e5eefb",fontSize:12,fontWeight:700},children:[d.jsx("span",{children:t}),d.jsx("select",{value:o,onChange:i=>r(i.target.value),style:{minWidth:180,maxWidth:"calc(100vw - 52px)",height:36,borderRadius:10,border:"1px solid rgba(255,255,255,0.12)",background:"rgba(255,255,255,0.06)",color:"#e5eefb",padding:"0 10px"},children:n.map(i=>d.jsx("option",{value:i.id,style:{color:"#111827"},children:i.label},i.id))})]})}),Se=({dock:e,imageOptions:t,selectedImageId:r,selectedSource:n,selectedVideoId:o,setSelectedImageId:i,setSelectedSource:a,setSelectedVideoId:s,showMediaControls:l,videoOptions:c})=>{const[u,m]=f.useState(!1),b=["webcam","image","video"].filter(p=>p==="image"?t.length>0:p==="video"?c.length>0:!0);return l?u?d.jsx("button",{type:"button",onClick:()=>m(!1),"aria-label":"Open media controls",title:"Open media controls",style:{position:"absolute",top:e==="top-left"?16:void 0,bottom:e==="bottom-left"?16:void 0,left:16,zIndex:5,width:40,height:40,border:"1px solid rgba(255,255,255,0.12)",borderRadius:999,background:"rgba(15, 23, 42, 0.72)",color:"#e5eefb",boxShadow:"0 12px 30px rgba(0,0,0,0.18)",backdropFilter:"blur(10px)",cursor:"pointer"},children:"≡"}):d.jsxs(d.Fragment,{children:[d.jsxs("div",{style:{position:"absolute",top:e==="top-left"?16:void 0,bottom:e==="bottom-left"?16:void 0,left:16,zIndex:5,display:"inline-flex",alignItems:"center",gap:8,maxWidth:"calc(100vw - 32px)"},children:[d.jsx("div",{style:{display:"inline-flex",alignItems:"center",gap:8,padding:8,borderRadius:999,background:"rgba(15, 23, 42, 0.72)",border:"1px solid rgba(255,255,255,0.12)",boxShadow:"0 12px 30px rgba(0,0,0,0.18)",backdropFilter:"blur(10px)",overflowX:"auto"},children:b.map(p=>{const w=p===n;return d.jsxs("button",{type:"button",onClick:()=>a(p),"aria-pressed":w,title:k[p].label,style:{border:"none",borderRadius:999,minWidth:42,height:42,padding:"0 12px",display:"inline-flex",alignItems:"center",justifyContent:"center",gap:8,background:w?"rgba(56, 189, 248, 0.18)":"rgba(255,255,255,0.04)",color:w?"#e0f2fe":"rgba(229,238,251,0.82)",cursor:"pointer",flex:"0 0 auto"},children:[d.jsx("span",{style:{fontSize:14,lineHeight:1},children:k[p].icon}),d.jsx("span",{style:{fontSize:12,fontWeight:700,letterSpacing:"0.01em"},children:k[p].label})]},p)})}),d.jsx("button",{type:"button",onClick:()=>m(!0),"aria-label":"Close media controls",title:"Close media controls",style:{width:40,height:40,border:"1px solid rgba(255,255,255,0.12)",borderRadius:999,background:"rgba(15, 23, 42, 0.72)",color:"#e5eefb",boxShadow:"0 12px 30px rgba(0,0,0,0.18)",backdropFilter:"blur(10px)",cursor:"pointer",flex:"0 0 auto"},children:"×"})]}),n==="image"&&t.length>0&&d.jsx(Y,{dock:e,label:"Image Asset",options:t,value:r,onChange:i}),n==="video"&&c.length>0&&d.jsx(Y,{dock:e,label:"Video Asset",options:c,value:o,onChange:s})]}):null},ve=({containerRef:e,displayCanvasRef:t,imageOptions:r,imageRef:n,layout:o,managesOwnMedia:i,mediaDock:a,mode:s,overlayContent:l,renderOutputs:c,sceneContent:u,selectedImageId:m,selectedSource:b,selectedVideoId:p,setSceneRenderOutputs:w,setSelectedImageId:x,setSelectedSource:g,setSelectedVideoId:R,showMediaControls:M,style:E,videoOptions:v,videoRef:T,viewportSize:S,mirrored:h})=>d.jsxs("div",{ref:e,style:{position:"fixed",inset:0,overflow:"hidden",background:"#000",...E},children:[d.jsx(we,{imageRef:n,selectedSource:b,videoRef:T}),s==="dom"&&i&&d.jsx(re,{canvasRef:t,imageRef:n,videoRef:T,layer:pe,layout:o,mirrored:h,sourceKind:b==="image"?"image":"video"}),(s==="r3f"||s==="hybrid")&&d.jsx(A,{config:be,children:d.jsx(C.XRScene,{onRenderOutputs:w,renderOutputs:{sceneColor:c.sceneColor||c.finalColor,sceneDepth:c.sceneDepth},renderTargetSize:S,style:{width:"100%",height:"100%"},children:u})}),d.jsxs(A,{config:xe,children:[i&&d.jsx(Se,{dock:a,imageOptions:r,selectedImageId:m,selectedSource:b,selectedVideoId:p,setSelectedImageId:x,setSelectedSource:g,setSelectedVideoId:R,showMediaControls:M,videoOptions:v}),l]})]}),Re=5,ye=1,ne=(e,t)=>t,Ce="brightness(2.2) contrast(1.5) saturate(1.25)",oe=({enabled:e,displayMirrored:t,imageRef:r,layout:n,mode:o,numFaces:i,selectedSource:a,sourceStream:s,videoRef:l})=>{const{session:c}=_.useXRContext(),u=f.useRef(null),m=f.useRef(!1),b=f.useRef(document.createElement("canvas")),{ready:p,node:w,error:x}=D.useXRModel(_.XRModel.FACE_TRACKER,{numFaces:i??(o==="head-binding"?ye:Re)}),[g,R]=f.useState("idle"),[M,E]=f.useState(null),v=e&&p&&!!w,T=ee.useFaceResults({node:v?w:null,enabled:v,selectedSource:a,onFrame:f.useCallback(()=>{E(null),R("ready")},[])});return f.useEffect(()=>{if(!e||!n)return;const S=()=>{const y=a==="image"?r.current:l.current;if(y){if(y instanceof HTMLImageElement){if(!y.complete||y.naturalWidth<=0||y.naturalHeight<=0)return}else if(y.readyState<2||y.videoWidth<=0||y.videoHeight<=0)return;U({canvas:b.current,layout:n,media:y,mirrored:t,filter:a==="webcam"?Ce:void 0})}};if(a==="image"){S();return}let h=0;const F=()=>{h=requestAnimationFrame(F),S()};return h=requestAnimationFrame(F),()=>cancelAnimationFrame(h)},[t,e,r,n,a,l]),f.useEffect(()=>{var L;if(!e){R("idle"),E(null),m.current=!1,u.current=null;return}if(!n){R("initializing");return}const S=(s==null?void 0:s.id)??(((L=l.current)==null?void 0:L.srcObject)instanceof MediaStream?l.current.srcObject.id:"none"),F=a==="webcam"?`webcam:${S}`:a;u.current!==F&&(m.current=!1,u.current=F);let y=!1;return(async()=>{try{if(R("initializing"),m.current||(await c.setFrameSource({canvas:b.current,sourceKind:a}),await c.start(),m.current=!0),y)return;E(null),R("initializing")}catch(X){if(y)return;R("error"),E(X instanceof Error?X.message:"Failed to initialize SDK face tracking")}})(),()=>{y=!0}},[e,n,a,c,s,l]),f.useEffect(()=>{!v&&e&&!x&&R("initializing")},[v,e,x]),f.useEffect(()=>{x&&(R("error"),E(x.message))},[x]),f.useEffect(()=>()=>{m.current=!1,c.stop()},[c]),{activeDelegate:"GPU",faces:T,status:g,error:M}},Ee=(e,t)=>e==="auto"?t==="webcam"?"cover":"contain":e,Te=({imageOptions:e,initialImageId:t,initialSource:r,initialVideoId:n,source:o,videoOptions:i})=>{var l,c,u,m;const a=(o==null?void 0:o.kind)??r??"webcam";return{selectedSource:a==="image"&&e.length===0||a==="video"&&i.length===0?"webcam":a,selectedImageId:(o==null?void 0:o.kind)==="image"?o.assetId??((l=e[0])==null?void 0:l.id)??"":t??((c=e[0])==null?void 0:c.id)??"",selectedVideoId:(o==null?void 0:o.kind)==="video"?o.assetId??((u=i[0])==null?void 0:u.id)??"":n??((m=i[0])==null?void 0:m.id)??""}},Fe=(e,t,r)=>{if(e.width<=0||e.height<=0||t.width<=0||t.height<=0)return null;const n=r==="contain"?Math.min(t.width/e.width,t.height/e.height):Math.max(t.width/e.width,t.height/e.height),o=e.width*n,i=e.height*n;return{source:e,destination:t,drawWidth:o,drawHeight:i,offsetX:(t.width-o)*.5,offsetY:(t.height-i)*.5,scale:n}},Ie=e=>{if(!e)return{width:0,height:0};const t=e.getBoundingClientRect();return{width:t.width||e.clientWidth,height:t.height||e.clientHeight}},Me=e=>{const[t,r]=f.useState({width:0,height:0});return f.useLayoutEffect(()=>{const n=e.current;if(!n)return;let o=0;const i=()=>{const c=Ie(n);r(u=>u.width===c.width&&u.height===c.height?u:c)},a=()=>{i(),o&&cancelAnimationFrame(o),o=requestAnimationFrame(i)};a();const s=new ResizeObserver(a);s.observe(n);const l=window.visualViewport;return window.addEventListener("resize",a),window.addEventListener("orientationchange",a),l==null||l.addEventListener("resize",a),l==null||l.addEventListener("scroll",a),()=>{o&&cancelAnimationFrame(o),s.disconnect(),window.removeEventListener("resize",a),window.removeEventListener("orientationchange",a),l==null||l.removeEventListener("resize",a),l==null||l.removeEventListener("scroll",a)}},[e]),t},Xe=({enabled:e,selectedSource:t})=>{const r=j.useXRModelNode(_.XRModel.FACE_TRACKER);return{faces:ee.useFaceResults({node:r,enabled:e,selectedSource:t}),trackerStatus:r?"ready":"idle"}},J=e=>{e&&(e.pause(),e.removeAttribute("src"),e.srcObject=null,e.load())},Q=e=>{e&&e.removeAttribute("src")},je=({enabled:e,imageAsset:t,selectedSource:r,videoAsset:n})=>{const o=f.useRef(null),i=f.useRef(null),[a,s]=f.useState(null),[l,c]=f.useState({width:0,height:0}),[u,m]=f.useState("idle"),[b,p]=f.useState(null);return f.useEffect(()=>{if(!e){J(o.current),Q(i.current),s(null),c({width:0,height:0}),m("idle"),p(null);return}let w=!1,x=null;const g=(S,h)=>{w||(c({width:S,height:h}),m("ready"),p(null))},R=()=>{J(o.current),Q(i.current),x==null||x.getTracks().forEach(S=>S.stop()),x=null,s(null)},M=async()=>{m("requesting");const S=await navigator.mediaDevices.getUserMedia(ge);if(w){S.getTracks().forEach(F=>F.stop());return}x=S,s(S);const h=o.current;h&&(h.srcObject=S,h.muted=!0,h.playsInline=!0,h.autoplay=!0,await h.play(),g(h.videoWidth,h.videoHeight))},E=async S=>{m("requesting"),s(null);const h=o.current;h&&(h.src=S,h.muted=!0,h.loop=!0,h.playsInline=!0,h.autoplay=!0,h.crossOrigin="anonymous",await h.play(),g(h.videoWidth,h.videoHeight))},v=async S=>{m("requesting"),s(null);const h=i.current;h&&(await new Promise((F,y)=>{h.onload=()=>F(),h.onerror=()=>y(new Error("Unable to load image")),h.src=S}),g(h.naturalWidth,h.naturalHeight))};return R(),(async()=>{try{if(r==="webcam"){await M();return}if(r==="video"){if(!(n!=null&&n.src))throw new Error("Missing video source");await E(n.src);return}if(!(t!=null&&t.src))throw new Error("Missing image source");await v(t.src)}catch(S){if(w)return;m("error"),p(S instanceof Error?S.message:`Unable to initialize ${r}`)}})(),()=>{w=!0,R()}},[e,t,r,n]),{videoRef:o,imageRef:i,stream:a,mediaSize:l,status:u,error:b}},ke=({enabled:e,imageRef:t,selectedSource:r,status:n,videoRef:o})=>{const[i,a]=f.useState(null);return f.useEffect(()=>{if(!e||n!=="ready"){a(c=>(c==null||c.dispose(),null));return}const s=r==="image"?t.current:o.current;if(!s)return;const l=r==="image"?new z.Texture(s):new z.VideoTexture(s);return l.colorSpace=z.SRGBColorSpace,l.minFilter=z.LinearFilter,l.magFilter=z.LinearFilter,l.generateMipmaps=!1,l.needsUpdate=!0,a(c=>(c==null||c.dispose(),l)),()=>{l.dispose()}},[e,t,r,n,o]),i},ze=({externalTracker:e,imageOptions:t,layout:r,managesOwnMedia:n,mediaError:o,mediaFitMode:i,mediaSize:a,mediaStatus:s,mirrored:l,selectedImage:c,selectedImageId:u,selectedSource:m,selectedVideo:b,selectedVideoId:p,setMirrored:w,setSelectedImageId:x,setSelectedSource:g,setSelectedVideoId:R,setShowMediaControls:M,showMediaControls:E,tracker:v,videoOptions:T,viewportSize:S})=>{const h=m==="image"?`${k.image.label}: ${(c==null?void 0:c.label)??""}`:m==="video"?`${k.video.label}: ${(b==null?void 0:b.label)??""}`:k.webcam.label;return{activeDelegate:n?v.activeDelegate:null,faces:n?v.faces:e.faces,imageOptions:t,layout:r,mediaError:o,mediaFitMode:i,mediaLabel:h,mediaStatus:s,mirrored:l,selectedImageId:u,selectedSource:m,selectedVideoId:p,setMirrored:w,setSelectedImageId:x,setSelectedSource:g,setSelectedVideoId:R,setShowMediaControls:M,showMediaControls:E,trackerError:n?v.error:null,trackerStatus:n?v.status:e.trackerStatus,videoOptions:T,viewportSize:S,mediaSize:a}},Ae=({mediaTexture:e,previewMode:t,renderOutputs:r,sceneRenderOutputs:n})=>f.useMemo(()=>({requested:r,previewMode:t,mediaColorTexture:e,sceneColorTexture:n.sceneColorTexture,finalColorTexture:r.finalColor?n.sceneColorTexture:null,sceneDepthTexture:n.sceneDepthTexture,estimatedDepthTexture:null,available:{mediaColor:e!==null,sceneColor:n.sceneColorTexture!==null,finalColor:!!(r.finalColor&&n.sceneColorTexture),sceneDepth:n.sceneDepthTexture!==null,estimatedDepth:!1}}),[e,t,r,n]),Be=({fitMode:e,imageOptions:t,initialImageId:r,initialMirrored:n,initialSource:o,initialVideoId:i,mediaStrategy:a,previewMode:s,renderOutputs:l,showMediaControlsByDefault:c,source:u,videoOptions:m})=>{const b=f.useRef(null),p=f.useRef(null),w=Me(b),x=f.useMemo(()=>Te({imageOptions:t,initialImageId:r,initialSource:o,initialVideoId:i,source:u,videoOptions:m}),[t,r,o,i,u,m]),[g,R]=f.useState(n),[M,E]=f.useState(c),[v,T]=f.useState(x.selectedSource),[S,h]=f.useState(x.selectedImageId),[F,y]=f.useState(x.selectedVideoId),[G,L]=f.useState({sceneColorTexture:null,sceneDepthTexture:null}),X=a==="internal";f.useEffect(()=>{u&&(T(x.selectedSource),h(x.selectedImageId),y(x.selectedVideoId))},[x,u]);const K=t.find(H=>H.id===S)??t[0],O=m.find(H=>H.id===F)??m[0],I=je({enabled:X,imageAsset:K,selectedSource:v,videoAsset:O}),P=Ee(e,v),V=f.useMemo(()=>Fe(I.mediaSize,w,P),[I.mediaSize,P,w]),ie=ke({enabled:!!(l.mediaColor||l.finalColor),imageRef:I.imageRef,selectedSource:v,status:I.status,videoRef:I.videoRef}),W=ne(v,g),ae=oe({displayMirrored:W,enabled:X&&I.status==="ready"&&V!==null,imageRef:I.imageRef,layout:V,selectedSource:v,sourceStream:I.stream,videoRef:I.videoRef}),se=Xe({enabled:!X,selectedSource:v}),le=ze({externalTracker:se,imageOptions:t,layout:V,managesOwnMedia:X,mediaError:I.error,mediaFitMode:P,mediaSize:I.mediaSize,mediaStatus:I.status,mirrored:W,selectedImage:K,selectedImageId:S,selectedSource:v,selectedVideo:O,selectedVideoId:F,setMirrored:R,setSelectedImageId:h,setSelectedSource:T,setSelectedVideoId:y,setShowMediaControls:E,showMediaControls:M,tracker:ae,videoOptions:m,viewportSize:w}),ce=Ae({mediaTexture:ie,previewMode:s,renderOutputs:l,sceneRenderOutputs:G});return{containerRef:b,displayCanvasRef:p,displayMirrored:W,layout:V,managesOwnMedia:X,media:I,renderOutputState:ce,renderState:le,selectedImageId:S,selectedSource:v,selectedVideoId:F,setSceneRenderOutputs:L,setSelectedImageId:h,setSelectedSource:T,setSelectedVideoId:y,showMediaControls:M,viewportSize:w}},N=({children:e})=>d.jsx(d.Fragment,{children:e});N.displayName="XRViewport.Scene";const $=({children:e})=>d.jsx(d.Fragment,{children:e});$.displayName="XRViewport.Overlay";const Le=(e,t)=>{if(e==="dom")return{sceneContent:null,overlayContent:t};let r=null,n=null;const o=[];return f.Children.forEach(t,i=>{var s;if(!f.isValidElement(i)){i!=null&&o.push(i);return}const a=(s=i.type)==null?void 0:s.displayName;if(a===N.displayName){r=i.props.children;return}if(a===$.displayName){n=i.props.children;return}o.push(i)}),!n&&o.length>0&&(n=o),{sceneContent:r,overlayContent:n}},Z=(e,t)=>typeof e=="function"?e(t):e;function Ve(e){return e.Scene=N,e.Overlay=$,e}const _e=Ve(({children:e,fitMode:t="auto",imageOptions:r=[],initialImageId:n,initialMirrored:o=!0,initialSource:i="webcam",initialVideoId:a,mediaStrategy:s="internal",mediaDock:l="bottom-left",mode:c="dom",previewMode:u="finalColor",renderOutputs:m={},showMediaControlsByDefault:b=!0,source:p,style:w,videoOptions:x=[]})=>{const g=Be({fitMode:t,imageOptions:r,initialImageId:n,initialMirrored:o,initialSource:i,initialVideoId:a,mediaStrategy:s,previewMode:u,renderOutputs:m,showMediaControlsByDefault:b,source:p,videoOptions:x}),R=typeof e=="function"?e(g.renderState):e,{sceneContent:M,overlayContent:E}=Le(c,R),v=Z(M,g.renderState),T=Z(E,g.renderState);return d.jsx(C.XRViewportStateContext.Provider,{value:g.renderState,children:d.jsx(C.XRViewportRenderOutputsContext.Provider,{value:g.renderOutputState,children:d.jsx(ve,{containerRef:g.containerRef,displayCanvasRef:g.displayCanvasRef,imageOptions:r,imageRef:g.media.imageRef,layout:g.layout,managesOwnMedia:g.managesOwnMedia,mediaDock:l,mirrored:g.displayMirrored,mode:c,overlayContent:T,renderOutputs:m,sceneContent:v,selectedImageId:g.selectedImageId,selectedSource:g.selectedSource,selectedVideoId:g.selectedVideoId,setSceneRenderOutputs:g.setSceneRenderOutputs,setSelectedImageId:g.setSelectedImageId,setSelectedSource:g.setSelectedSource,setSelectedVideoId:g.setSelectedVideoId,showMediaControls:g.showMediaControls,style:w,videoOptions:x,videoRef:g.media.videoRef,viewportSize:g.viewportSize})})})}),De={position:"absolute",top:-28,left:0,background:"rgba(34, 197, 94, 0.9)",color:"#04130a",fontFamily:"Menlo, Monaco, Consolas, monospace",fontSize:12,fontWeight:700,padding:"4px 8px",whiteSpace:"nowrap"},qe=({boundingBox:e,label:t="face bounding box",color:r="#22c55e",style:n,labelStyle:o})=>d.jsx("div",{style:{position:"absolute",left:`${e.left*100}%`,top:`${e.top*100}%`,width:`${e.width*100}%`,height:`${e.height*100}%`,border:`3px solid ${r}`,boxSizing:"border-box",pointerEvents:"none",zIndex:20,...n},children:t!==null&&d.jsx("div",{style:{...De,...o},children:t})}),Pe=e=>{const[t,r]=f.useState(null);return f.useEffect(()=>{let n=0;const o=()=>{var l,c;n=requestAnimationFrame(o);const i=(c=(l=e==null?void 0:e.detectionResults)==null?void 0:l.faceLandmarks)==null?void 0:c[0];if(!i||i.length===0){r(null);return}const a=q.computeLandmarkBounds(i),s={left:a.minX,top:a.minY,width:a.width,height:a.height};r(u=>u&&u.left===s.left&&u.top===s.top&&u.width===s.width&&u.height===s.height?u:s)};return o(),()=>{cancelAnimationFrame(n)}},[e]),t},We=({background:e="#000",children:t,style:r})=>d.jsx("div",{style:{position:"fixed",inset:0,overflow:"hidden",background:e,...r},children:t}),He=e=>{const{makeDefault:t=!0,...r}=e;return d.jsx(de.PerspectiveCamera,{position:[0,0,40],fov:30,near:.1,far:1e3,makeDefault:t,...r})},Ue=["fill","contain"];exports.useXRContext=_.useXRContext;exports.HeadTracker=D.HeadTracker;exports.useTrackerContext=D.useTrackerContext;exports.useXRModel=D.useXRModel;exports.useXRCameraTexture=j.useXRCameraTexture;exports.useXRError=j.useXRError;exports.useXRModelNode=j.useXRModelNode;exports.useXRPipelineSnapshot=j.useXRPipelineSnapshot;exports.useXRReady=j.useXRReady;exports.useXRRenderSize=j.useXRRenderSize;exports.computeLandmarkBounds=q.computeLandmarkBounds;exports.createFaceInfoTarget=q.createFaceInfoTarget;exports.getFaceInfo=q.getFaceInfo;exports.ScreenRectAspectContext=B.ScreenRectAspectContext;exports.getThreeBlending=B.getThreeBlending;exports.getThreeDepthFunction=B.getThreeDepthFunction;exports.getThreeSide=B.getThreeSide;exports.useScreenSpace=B.useScreenSpace;exports.hasFullUnitUVBounds=ue.hasFullUnitUVBounds;exports.BasicAnimatedTextureController=C.BasicAnimatedTextureController;exports.MAX_GIF_BYTES=C.MAX_GIF_BYTES;exports.MAX_GIF_FRAMES=C.MAX_GIF_FRAMES;exports.MAX_GIF_PIXELS=C.MAX_GIF_PIXELS;exports.TextureSourceLoadError=C.TextureSourceLoadError;exports.computeScreenTransform=C.computeScreenTransform;exports.createTextureSourceResolver=C.createTextureSourceResolver;exports.disposeResolvedTextureSource=C.disposeResolvedTextureSource;exports.getPlaybackFrame=C.getPlaybackFrame;exports.getSequenceFrame=C.getSequenceFrame;exports.gifTextureSourceProvider=C.gifTextureSourceProvider;exports.resolveTextureSource=C.resolveTextureSource;exports.throwIfAborted=C.throwIfAborted;exports.useXRViewportRenderOutputs=C.useXRViewportRenderOutputs;exports.useXRViewportState=C.useXRViewportState;exports.BoundingBoxOverlay=qe;exports.PerspectiveCamera=He;exports.TEXTURE_FITS=Ue;exports.XRCompositor=We;exports.XRLayer=A;exports.XRMediaSurface=re;exports.XRTrackingOverlay=me;exports.XRViewport=_e;exports.resolveCalibrationFaceDisplayMirrored=ne;exports.useCalibrationFaceTracker=oe;exports.useFaceBoundingBox=Pe;
|