@vincentt-xr/sdk 2.0.0-alpha.7 → 2.0.0-alpha.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/GROUNDING.md +5651 -82
- package/README.md +1 -0
- package/dist/CanonicalHeadFrame-BHcWyaiK.js +1506 -0
- package/dist/CanonicalHeadFrame-D-_T1OMU.cjs +1 -0
- package/dist/DebuggerUI-7ngnJsBe.js +275 -0
- package/dist/DebuggerUI-CoglgKdO.cjs +1 -0
- package/dist/FaceRetouch-CLoTfrcs.js +1071 -0
- package/dist/FaceRetouch-J1lC1WbS.cjs +134 -0
- package/dist/FaceSurface-CHAMEeG1.cjs +1 -0
- package/dist/FaceSurface-DmP9AEeC.js +27 -0
- package/dist/SegmentationOverlay-D_FWkcyP.cjs +35 -0
- package/dist/SegmentationOverlay-vn5x_knv.js +6237 -0
- package/dist/SkeletonUtils-C2r90MtN.js +21 -0
- package/dist/SkeletonUtils-CddIup1F.cjs +1 -0
- package/dist/TextLabel-XE0rQSDn.cjs +2 -0
- package/dist/TextLabel-c9BCucOI.js +961 -0
- package/dist/assets/cache.d.ts +99 -0
- package/dist/assets/estimate.d.ts +11 -0
- package/dist/assets/gltfLoader.d.ts +16 -0
- package/dist/assets/index.d.ts +7 -0
- package/dist/assets/loaders.d.ts +43 -0
- package/dist/assets/react.d.ts +33 -0
- package/dist/body-pose/index.d.ts +521 -0
- package/dist/body-trigger/__fixtures__/syntheticBody.d.ts +83 -0
- package/dist/body-trigger/frame.d.ts +88 -0
- package/dist/body-trigger/index.d.ts +6 -0
- package/dist/body-trigger/moves.d.ts +235 -0
- package/dist/body-trigger/trigger.d.ts +75 -0
- package/dist/calibration/calibration.d.ts +75 -0
- package/dist/calibration/index.d.ts +6 -0
- package/dist/calibration/storage.d.ts +13 -0
- package/dist/calibration/types.d.ts +53 -0
- package/dist/calibration/useXRCalibration.d.ts +46 -0
- package/dist/camera/CameraPermissionGate.d.ts +26 -0
- package/dist/camera/devices.d.ts +26 -0
- package/dist/camera/index.d.ts +8 -0
- package/dist/camera/permission.d.ts +86 -0
- package/dist/camera/useCameraPermission.d.ts +35 -0
- package/dist/canonicalFace-BHwyCx1c.js +9 -0
- package/dist/canonicalFace-C83I225R.cjs +1 -0
- package/dist/capabilities/detect.d.ts +45 -0
- package/dist/capabilities/index.d.ts +5 -0
- package/dist/capabilities/types.d.ts +120 -0
- package/dist/capabilities/useXRCapabilities.d.ts +18 -0
- package/dist/compat/environment.d.ts +5 -0
- package/dist/compat/index.d.ts +4 -0
- package/dist/compat/run.d.ts +18 -0
- package/dist/compat/scenarios.d.ts +10 -0
- package/dist/compat/types.d.ts +101 -0
- package/dist/components/BodyInstruction/BodyPoseHint.d.ts +63 -0
- package/dist/components/BodyInstruction/index.d.ts +69 -0
- package/dist/components/BodyInstruction/useBodyPose.d.ts +23 -0
- package/dist/components/BodyTracker/index.d.ts +17 -0
- package/dist/components/BodyTrigger/index.d.ts +49 -0
- package/dist/components/Debugger/DebuggerProvider.d.ts +14 -1
- package/dist/components/Debugger/DebuggerUI.d.ts +3 -1
- package/dist/components/FaceAtlas/FaceAtlasLayer.d.ts +114 -0
- package/dist/components/FaceAtlas/MadeUpCamera.d.ts +80 -0
- package/dist/components/FaceAtlas/constants.d.ts +8 -0
- package/dist/components/FaceAtlas/index.d.ts +7 -0
- package/dist/components/FaceAtlas/useFaceAtlasSurface.d.ts +84 -0
- package/dist/components/FaceAtlas/useFaceSkin.d.ts +84 -0
- package/dist/components/FaceCharacter/ExternalFaceMesh.d.ts +109 -0
- package/dist/components/FaceCharacter/FaceExpressionController.d.ts +53 -0
- package/dist/components/FaceCharacter/FaceMorph.d.ts +71 -0
- package/dist/components/FaceCharacter/FacePiercing.d.ts +65 -0
- package/dist/components/FaceCharacter/FaceReprojection.d.ts +85 -0
- package/dist/components/FaceCharacter/FaceRig.d.ts +38 -0
- package/dist/components/FaceCharacter/FaceSurface.d.ts +49 -0
- package/dist/components/FaceCharacter/FaceSurfaceOccluder.d.ts +39 -0
- package/dist/components/FaceCharacter/PinToFaceMesh.d.ts +68 -0
- package/dist/components/FaceCharacter/index.d.ts +18 -0
- package/dist/components/FaceCharacter/useFaceReprojector.d.ts +10 -0
- package/dist/components/FaceInset/FaceInset.d.ts +68 -0
- package/dist/components/FaceInset/frame.d.ts +94 -0
- package/dist/components/FaceInset/index.d.ts +6 -0
- package/dist/components/FaceInset/material.d.ts +40 -0
- package/dist/components/FaceInset/useFaceInsetTexture.d.ts +37 -0
- package/dist/components/FaceInstruction/FaceExpressionHint.d.ts +43 -0
- package/dist/components/FaceInstruction/index.d.ts +56 -0
- package/dist/components/FaceInstruction/useFaceExpression.d.ts +20 -0
- package/dist/components/FaceLiquify/FaceLiquify.d.ts +49 -0
- package/dist/components/FaceLiquify/debug.d.ts +37 -0
- package/dist/components/FaceLiquify/frame.d.ts +55 -0
- package/dist/components/FaceLiquify/index.d.ts +10 -0
- package/dist/components/FaceLiquify/material.d.ts +39 -0
- package/dist/components/FaceLiquify/pass.d.ts +49 -0
- package/dist/components/FaceLiquify/presence.d.ts +25 -0
- package/dist/components/FaceLiquify/presets.d.ts +82 -0
- package/dist/components/FaceLiquify/selfTest.d.ts +66 -0
- package/dist/components/FaceLiquify/target.d.ts +85 -0
- package/dist/components/FaceLiquify/warp.d.ts +72 -0
- package/dist/components/FaceMesh/canonical/CanonicalFaceMeshRenderer.d.ts +37 -5
- package/dist/components/FaceMesh/canonical/geometryGroups.d.ts +21 -0
- package/dist/components/FaceMesh/canonical/parseCanonicalFaceModel.d.ts +21 -0
- package/dist/components/FaceMesh/canonical/shaders.d.ts +1 -1
- package/dist/components/FaceMesh/index.d.ts +2 -2
- package/dist/components/FaceRetouch/Background.d.ts +3 -1
- package/dist/components/FaceRetouch/FaceRetouch.d.ts +5 -0
- package/dist/components/FaceRetouch/renderState.d.ts +19 -0
- package/dist/components/FaceSwap/FaceMirror.d.ts +46 -0
- package/dist/components/FaceSwap/FaceSwap.d.ts +58 -0
- package/dist/components/FaceSwap/FaceTextureLayer.d.ts +72 -0
- package/dist/components/FaceSwap/faceSwapPlan.d.ts +91 -0
- package/dist/components/FaceSwap/index.d.ts +13 -0
- package/dist/components/FaceSwap/settings.d.ts +300 -0
- package/dist/components/FaceSwap/useFaceTexture.d.ts +35 -0
- package/dist/components/FaceSwap/useLiveFace.d.ts +38 -0
- package/dist/components/FaceSwap/useLiveFaceTexture.d.ts +31 -0
- package/dist/components/FaceWarp3D/FaceWarp3D.d.ts +50 -0
- package/dist/components/FaceWarp3D/index.d.ts +2 -3
- package/dist/components/Faceless/Faceless.d.ts +51 -0
- package/dist/components/Faceless/index.d.ts +2 -0
- package/dist/components/GestureListener/index.d.ts +11 -0
- package/dist/components/HairLock/HairLock.d.ts +39 -0
- package/dist/components/HairLock/index.d.ts +2 -0
- package/dist/components/HairLock/lockGeometry.d.ts +15 -0
- package/dist/components/HandCutout/index.d.ts +35 -0
- package/dist/components/HandInstruction/HandGestureHint.d.ts +70 -0
- package/dist/components/HandInstruction/index.d.ts +74 -0
- package/dist/components/HandInstruction/useHandGesture.d.ts +22 -0
- package/dist/components/HandRig/ForearmOccluder.d.ts +29 -0
- package/dist/components/HandRig/HandAttachment.d.ts +34 -0
- package/dist/components/HandRig/HandOccluder.d.ts +55 -0
- package/dist/components/HandRig/HandTattoo.d.ts +61 -0
- package/dist/components/HandRig/WristAttachment.d.ts +34 -0
- package/dist/components/HandRig/index.d.ts +101 -0
- package/dist/components/HandRig/useArmMask.d.ts +29 -0
- package/dist/components/HandRig/wristSolve.d.ts +69 -0
- package/dist/components/HandTouch/HandTouch.d.ts +62 -0
- package/dist/components/HandTouch/Touchable.d.ts +36 -0
- package/dist/components/HandTouch/index.d.ts +2 -0
- package/dist/components/HandTracker/index.d.ts +10 -0
- package/dist/components/HeadBinding/index.d.ts +14 -0
- package/dist/components/HeadOccluder/CanonicalHeadFrame.d.ts +22 -0
- package/dist/components/HeadOccluder/Earrings.d.ts +55 -0
- package/dist/components/HeadOccluder/HeadAttachment.d.ts +38 -0
- package/dist/components/HeadOccluder/NeckOccluder.d.ts +64 -0
- package/dist/components/HeadOccluder/earringPlacement.d.ts +31 -0
- package/dist/components/HeadOccluder/headAttachmentPoints.d.ts +69 -0
- package/dist/components/HeadOccluder/index.d.ts +57 -3
- package/dist/components/HeadOccluder/useCanonicalHeadFit.d.ts +36 -0
- package/dist/components/HeadOccluder/useLandmarkPoseFit.d.ts +80 -0
- package/dist/components/HolisticTracker/index.d.ts +69 -0
- package/dist/components/HolisticTracker/settings.d.ts +58 -0
- package/dist/components/HolisticTracker/signals.d.ts +49 -0
- package/dist/components/Instruction/HintStage.d.ts +29 -0
- package/dist/components/Instruction/InstructionCue.d.ts +126 -0
- package/dist/components/Instruction/gestureHold.d.ts +20 -0
- package/dist/components/Instruction/ghost.d.ts +129 -0
- package/dist/components/Instruction/hintBlend.d.ts +19 -0
- package/dist/components/Instruction/hintLook.d.ts +81 -0
- package/dist/components/Instruction/hintLoop.d.ts +36 -0
- package/dist/components/Instruction/index.d.ts +41 -0
- package/dist/components/Instruction/useGhostModel.d.ts +33 -0
- package/dist/components/Instruction/useInstructionHold.d.ts +72 -0
- package/dist/components/IrisEffect/IrisMaterial.d.ts +73 -0
- package/dist/components/IrisEffect/index.d.ts +51 -0
- package/dist/components/IrisEffect/settings.d.ts +117 -0
- package/dist/components/LipEffect/LipEffect.d.ts +27 -1
- package/dist/components/LipEffect/LipEffectMaterial.d.ts +95 -7
- package/dist/components/LipEffect/LipEffects.d.ts +12 -0
- package/dist/components/LipEffect/defaults.d.ts +46 -4
- package/dist/components/LipEffect/index.d.ts +11 -3
- package/dist/components/LipEffect/lipShading.d.ts +73 -0
- package/dist/components/LipEffect/settings.d.ts +375 -0
- package/dist/components/LipEffect/shader.d.ts +39 -0
- package/dist/components/LipEffect/types.d.ts +128 -9
- package/dist/components/LipEffect/useLipDesignTextures.d.ts +17 -0
- package/dist/components/LipEffect/uvGuide.d.ts +74 -0
- package/dist/components/Makeup/Blush.d.ts +18 -0
- package/dist/components/Makeup/Brows.d.ts +20 -0
- package/dist/components/Makeup/Contour.d.ts +17 -0
- package/dist/components/Makeup/Eyeliner.d.ts +20 -0
- package/dist/components/Makeup/Eyeshadow.d.ts +20 -0
- package/dist/components/Makeup/Highlighter.d.ts +18 -0
- package/dist/components/Makeup/MakeupDesign.d.ts +37 -0
- package/dist/components/Makeup/MakeupRegion.d.ts +132 -0
- package/dist/components/Makeup/constants.d.ts +44 -0
- package/dist/components/Makeup/design.d.ts +106 -0
- package/dist/components/Makeup/designSamples.d.ts +42 -0
- package/dist/components/Makeup/eyes.d.ts +114 -0
- package/dist/components/Makeup/fields.d.ts +10 -0
- package/dist/components/Makeup/geometry.d.ts +106 -0
- package/dist/components/Makeup/index.d.ts +26 -0
- package/dist/components/Makeup/looks.d.ts +28 -0
- package/dist/components/Makeup/material.d.ts +239 -0
- package/dist/components/Makeup/settings.d.ts +54 -0
- package/dist/components/Makeup/shades.d.ts +143 -0
- package/dist/components/Makeup/shapes.d.ts +27 -0
- package/dist/components/Makeup/skinTone.d.ts +135 -0
- package/dist/components/Makeup/types.d.ts +110 -0
- package/dist/components/Makeup/useMakeupSkinTone.d.ts +40 -0
- package/dist/components/Necklace/Necklace.d.ts +44 -0
- package/dist/components/Necklace/index.d.ts +1 -0
- package/dist/components/ParticleEmitter/ParticleEmitter.d.ts +69 -0
- package/dist/components/ParticleEmitter/index.d.ts +1 -0
- package/dist/components/PersonCutout/index.d.ts +50 -0
- package/dist/components/PersonCutout/personCutout.d.ts +16 -0
- package/dist/components/ScreenImage/components/ScreenImageBody.d.ts +1 -1
- package/dist/components/ScreenImage/index.d.ts +3 -1
- package/dist/components/ScreenImage/materials/ScreenImageBlendMaterial.d.ts +1 -1
- package/dist/components/ScreenImage/materials/ScreenImageMaskMaterial.d.ts +11 -0
- package/dist/components/ScreenImage/source.d.ts +6 -0
- package/dist/components/ScreenImage/types.d.ts +18 -0
- package/dist/components/SegmentationOverlay/SegmentationOverlay.d.ts +37 -0
- package/dist/components/SegmentationOverlay/SegmentationOverlayMaterial.d.ts +31 -0
- package/dist/components/SegmentationOverlay/index.d.ts +9 -0
- package/dist/components/SegmentationOverlay/maskTexture.d.ts +23 -0
- package/dist/components/SegmentationOverlay/providers.d.ts +72 -0
- package/dist/components/SegmentationOverlay/settings.d.ts +65 -0
- package/dist/components/ShoulderOccluder/index.d.ts +43 -0
- package/dist/components/ShoulderOccluder/useCanonicalTorsoFit.d.ts +24 -0
- package/dist/components/SpringSwing/SpringSwing.d.ts +22 -0
- package/dist/components/SpringSwing/index.d.ts +1 -0
- package/dist/components/XRProvider/index.d.ts +16 -2
- package/dist/components/XRScene/renderOutputTarget.d.ts +12 -0
- package/dist/components/XRViewport/hooks/useViewportExternalFaces.d.ts +1 -1
- package/dist/components/XRViewport/hooks/useViewportMediaSource.d.ts +1 -1
- package/dist/components/XRViewport/hooks/useViewportPipeline.d.ts +1 -1
- package/dist/components/index.d.ts +11 -0
- package/dist/config/index.d.ts +0 -1
- package/dist/constants/index.d.ts +4 -1
- package/dist/context-DTxSQvp4.js +13 -0
- package/dist/context-hA0Rb2Xa.cjs +1 -0
- package/dist/contexts-BH7PdKFS.cjs +1 -0
- package/dist/contexts-jak8-tND.js +667 -0
- package/dist/coordinates/feed.d.ts +52 -0
- package/dist/coordinates/index.d.ts +7 -0
- package/dist/coordinates/side.d.ts +40 -0
- package/dist/coordinates/spaces.d.ts +49 -0
- package/dist/coordinates/viewport.d.ts +22 -0
- package/dist/coordinates/world.d.ts +15 -0
- package/dist/debug-ui/default-setting.cjs +2 -2
- package/dist/debug-ui/face-swap-settings/index.d.ts +22 -0
- package/dist/debug-ui/gesture-settings/index.d.ts +14 -0
- package/dist/debug-ui/hierarchy-panel/index.d.ts +3 -2
- package/dist/debug-ui/holistic-tracker-settings/index.d.ts +16 -0
- package/dist/debug-ui/index.d.ts +18 -3
- package/dist/debug-ui/iris-effect-settings/index.d.ts +12 -0
- package/dist/debug-ui/lip-effect-settings/index.d.ts +15 -0
- package/dist/debug-ui/media-source/index.d.ts +1 -1
- package/dist/debug-ui/media-source/session.d.ts +30 -2
- package/dist/debug-ui/media-source.cjs +1 -1
- package/dist/debug-ui/media-source.js +1 -1
- package/dist/debug-ui/object-inspector-panel/index.d.ts +3 -2
- package/dist/debug-ui/product-hotspots/index.d.ts +25 -0
- package/dist/debug-ui/scene-editor/hierarchy-panel.d.ts +3 -1
- package/dist/debug-ui/scene-editor/inspector-panel.d.ts +3 -1
- package/dist/debug-ui/screen-image-settings/index.d.ts +3 -1
- package/dist/debug-ui/screen-text-settings/ScreenTextSettingsPanel.d.ts +1 -1
- package/dist/debug-ui/screen-text-settings/types.d.ts +2 -0
- package/dist/debug-ui/segmentation-overlay-settings/index.d.ts +12 -0
- package/dist/debug-ui/settings-panel/index.d.ts +6 -1
- package/dist/debug-ui/shared/debugWindow.d.ts +51 -0
- package/dist/debug-ui/xr-diagnostics/index.d.ts +26 -0
- package/dist/debug-ui.cjs +3 -3
- package/dist/debug-ui.js +2695 -2547
- package/dist/detector-K8aej4MB.js +59 -0
- package/dist/detector-ijypGtse.cjs +1 -0
- package/dist/entries/all.d.ts +3 -1
- package/dist/entries/core.d.ts +20 -2
- package/dist/entries/face-effects.d.ts +123 -9
- package/dist/entries/instructions.d.ts +48 -0
- package/dist/entries/internal.d.ts +2 -1
- package/dist/entries/low-level.d.ts +49 -3
- package/dist/entries/particles.d.ts +11 -0
- package/dist/entries/product.d.ts +11 -0
- package/dist/entries/tracking.d.ts +60 -2
- package/dist/face-atlas/attributes.d.ts +30 -0
- package/dist/face-atlas/eyes.d.ts +272 -0
- package/dist/face-atlas/faceAtlas.generated.d.ts +46 -0
- package/dist/face-atlas/glsl/atlasVertex.d.ts +46 -0
- package/dist/face-atlas/glsl/common.d.ts +55 -0
- package/dist/face-atlas/glsl/design.d.ts +49 -0
- package/dist/face-atlas/glsl/eyes.d.ts +73 -0
- package/dist/face-atlas/glsl/finish.d.ts +24 -0
- package/dist/face-atlas/glsl/format.d.ts +4 -0
- package/dist/face-atlas/glsl/index.d.ts +59 -0
- package/dist/face-atlas/glsl/shading.d.ts +15 -0
- package/dist/face-atlas/glsl/shapes.d.ts +66 -0
- package/dist/face-atlas/glsl/sparkle.d.ts +19 -0
- package/dist/face-atlas/glsl/uniforms.d.ts +106 -0
- package/dist/face-atlas/guide.d.ts +51 -0
- package/dist/face-atlas/index.d.ts +25 -0
- package/dist/face-atlas/lead.d.ts +117 -0
- package/dist/face-atlas/madeUpCamera.d.ts +125 -0
- package/dist/face-atlas/masks.d.ts +53 -0
- package/dist/face-atlas/obj.d.ts +69 -0
- package/dist/face-atlas/polylines.d.ts +63 -0
- package/dist/face-atlas/probe/FaceSkinProbe.d.ts +208 -0
- package/dist/face-atlas/probe/__fixtures__/emulate.d.ts +9 -0
- package/dist/face-atlas/probe/__fixtures__/face.d.ts +24 -0
- package/dist/face-atlas/probe/constants.d.ts +137 -0
- package/dist/face-atlas/probe/glsl.d.ts +43 -0
- package/dist/face-atlas/probe/lightFit.d.ts +108 -0
- package/dist/face-atlas/probe/schedule.d.ts +44 -0
- package/dist/face-atlas/probe/selfTest.d.ts +87 -0
- package/dist/face-atlas/probe/stats.d.ts +143 -0
- package/dist/face-atlas/probe/targets.d.ts +70 -0
- package/dist/face-atlas/probe/unwrap.d.ts +76 -0
- package/dist/face-atlas/quality.d.ts +28 -0
- package/dist/face-atlas/regions.d.ts +31 -0
- package/dist/face-atlas/registry.d.ts +252 -0
- package/dist/face-atlas/renderState.d.ts +86 -0
- package/dist/face-atlas/selfOcclusion.d.ts +62 -0
- package/dist/face-atlas/shading.d.ts +406 -0
- package/dist/face-atlas/shapes.d.ts +86 -0
- package/dist/face-atlas/sides.d.ts +41 -0
- package/dist/face-atlas/skinMask.d.ts +35 -0
- package/dist/face-atlas/surface.d.ts +155 -0
- package/dist/face-atlas/topology.d.ts +44 -0
- package/dist/face-character/__fixtures__/faceImageDetections.d.ts +25 -0
- package/dist/face-character/__fixtures__/faceNode.d.ts +22 -0
- package/dist/face-character/bindFaceModel.d.ts +106 -0
- package/dist/face-character/canonicalFace.d.ts +17 -0
- package/dist/face-character/canonicalFaceGeometry.d.ts +11 -0
- package/dist/face-character/canonicalFacePositions.d.ts +7 -0
- package/dist/face-character/driveFaceModel.d.ts +57 -0
- package/dist/face-character/expressionOutputs.d.ts +45 -0
- package/dist/face-character/faceExpressions.d.ts +104 -0
- package/dist/face-character/faceImageLandmarker.d.ts +93 -0
- package/dist/face-character/faceMeshBinding.d.ts +62 -0
- package/dist/face-character/faceMorph.d.ts +77 -0
- package/dist/face-character/faceMorphs.d.ts +46 -0
- package/dist/face-character/facePhoto.d.ts +138 -0
- package/dist/face-character/facePiercings.d.ts +116 -0
- package/dist/face-character/facePin.d.ts +131 -0
- package/dist/face-character/faceReprojection.d.ts +273 -0
- package/dist/face-character/faceReprojector.d.ts +171 -0
- package/dist/face-character/faceRig.d.ts +176 -0
- package/dist/face-character/faceSwapPresence.d.ts +85 -0
- package/dist/face-character/faceTexture.d.ts +169 -0
- package/dist/face-character/faceTextureBaker.d.ts +86 -0
- package/dist/face-character/faceTextureGuide.d.ts +106 -0
- package/dist/face-character/faceTextureStats.d.ts +298 -0
- package/dist/face-character/faceTransfer.d.ts +396 -0
- package/dist/face-character/faceTransferGeometry.d.ts +109 -0
- package/dist/face-character/faceTransferSelfTest.d.ts +94 -0
- package/dist/face-character/faceWarp3D.d.ts +101 -0
- package/dist/face-character/faceless.d.ts +79 -0
- package/dist/face-character/featureWarp.d.ts +28 -0
- package/dist/face-character/liveFaceRegistry.d.ts +370 -0
- package/dist/face-character/liveValue.d.ts +12 -0
- package/dist/face-character/memo.d.ts +15 -0
- package/dist/face-effects.cjs +2324 -1
- package/dist/face-effects.js +14208 -2268
- package/dist/face-expression/index.d.ts +182 -0
- package/dist/face-info/landmarks.d.ts +17 -3
- package/dist/face-info/types.d.ts +20 -3
- package/dist/gestures/definitions.d.ts +98 -0
- package/dist/gestures/detector.d.ts +87 -0
- package/dist/gestures/index.d.ts +8 -0
- package/dist/gestures/measures.d.ts +114 -0
- package/dist/gestures/settings.d.ts +49 -0
- package/dist/getFaceInfo-B1otSDMX.cjs +1 -0
- package/dist/getFaceInfo-Cu4xDWiL.js +62 -0
- package/dist/hand/armFit.d.ts +46 -0
- package/dist/hand/armMask.d.ts +178 -0
- package/dist/hand/handCutout.d.ts +23 -0
- package/dist/hand/handCutoutRegistry.d.ts +7 -0
- package/dist/hand/handGestures.d.ts +524 -0
- package/dist/hand/handPose.d.ts +98 -0
- package/dist/hand/handRigSolver.d.ts +159 -0
- package/dist/hand/handTattoo.d.ts +81 -0
- package/dist/hand/handTouch.d.ts +240 -0
- package/dist/hand/wrist.d.ts +44 -0
- package/dist/hand/wristFilter.d.ts +44 -0
- package/dist/hooks/selectors.d.ts +76 -1
- package/dist/hooks/useCalibrationFaceTracker.d.ts +1 -1
- package/dist/hooks/useFaceInfo.d.ts +13 -1
- package/dist/hooks/useFaceInfos.d.ts +1 -1
- package/dist/hooks/useFaceModelAcquisition.d.ts +38 -0
- package/dist/hooks/useGesture.d.ts +32 -0
- package/dist/hooks/useIrisTracking.d.ts +45 -0
- package/dist/hooks/useTrackerContext.d.ts +6 -0
- package/dist/hooks/useXRDiagnostics.d.ts +81 -0
- package/dist/hooks/useXRModel.d.ts +7 -0
- package/dist/hooks/useXRSession/facade.d.ts +42 -2
- package/dist/hooks/useXRSession/index.d.ts +2 -2
- package/dist/hooks/useXRSession/reason.d.ts +3 -1
- package/dist/hooks/useXRSession/registry.d.ts +14 -0
- package/dist/hooks/useXRSession/store.d.ts +52 -3
- package/dist/index-B1_TzJaI.js +1104 -0
- package/dist/index-BavF06C6.js +190 -0
- package/dist/index-BfFmpddl.cjs +21 -0
- package/dist/index-BuBzneeW.cjs +46 -0
- package/dist/index-CGsQWodV.cjs +1 -0
- package/dist/index-CIe7eCMH.js +3200 -0
- package/dist/index-CfSF8LXa.cjs +1 -0
- package/dist/index-D5GTzOzD.cjs +1 -0
- package/dist/index-DBhQzvVa.js +314 -0
- package/dist/index-DE17y0ZI.cjs +1 -0
- package/dist/index-JII7huPk.js +442 -0
- package/dist/index-tpCr9CLj.cjs +1 -0
- package/dist/index-w1S7fI2B.js +1432 -0
- package/dist/index-zGaqrz_K.js +188 -0
- package/dist/instructions.cjs +30 -0
- package/dist/instructions.js +1507 -0
- package/dist/{internal-Dmk1cTXq.js → internal-B90P-clC.js} +138 -119
- package/dist/internal-Cjinca64.cjs +1 -0
- package/dist/internal.cjs +1 -1
- package/dist/internal.js +15 -10
- package/dist/iris/compute.d.ts +27 -0
- package/dist/iris/index.d.ts +4 -0
- package/dist/iris/lead.d.ts +19 -0
- package/dist/iris/types.d.ts +89 -0
- package/dist/landmarkMask-BFDyBnKM.js +224 -0
- package/dist/landmarkMask-u7es2k4X.cjs +1 -0
- package/dist/landmarks-BlUqf5MZ.cjs +1 -0
- package/dist/landmarks-bftdwq6Z.js +76 -0
- package/dist/loaders-BGAUACsd.js +363 -0
- package/dist/loaders-BJ1_QCHt.cjs +1 -0
- package/dist/low-level.cjs +1 -1
- package/dist/low-level.js +1190 -675
- package/dist/main.cjs +1 -1
- package/dist/main.js +1190 -452
- package/dist/models/Base/index.d.ts +49 -0
- package/dist/models/Body/index.d.ts +3 -1
- package/dist/models/Face/constants.d.ts +8 -0
- package/dist/models/Face/index.d.ts +4 -12
- package/dist/models/Face/rotation.d.ts +18 -3
- package/dist/models/Hand/GestureTracking.d.ts +1 -1
- package/dist/models/Hand/HandTracking.d.ts +17 -1
- package/dist/models/Holistic/index.d.ts +49 -0
- package/dist/models/Holistic/result.d.ts +68 -0
- package/dist/models/Segmentation/index.d.ts +2 -0
- package/dist/models/SemanticSegmentation/index.d.ts +31 -0
- package/dist/models/SemanticSegmentation/presets.d.ts +28 -0
- package/dist/models/index.d.ts +2 -0
- package/dist/models/nodeSource.d.ts +9 -0
- package/dist/particles/emission.d.ts +24 -0
- package/dist/particles/eyes.d.ts +24 -0
- package/dist/particles/glsl.d.ts +14 -0
- package/dist/particles/index.d.ts +10 -0
- package/dist/particles/motion.d.ts +42 -0
- package/dist/particles/presets.d.ts +12 -0
- package/dist/particles/ring.d.ts +58 -0
- package/dist/particles/selfTest.d.ts +53 -0
- package/dist/particles/settings.d.ts +127 -0
- package/dist/particles/shapes.d.ts +29 -0
- package/dist/particles/spawner.d.ts +60 -0
- package/dist/particles/system.d.ts +64 -0
- package/dist/particles.cjs +122 -0
- package/dist/particles.js +774 -0
- package/dist/product/ProductDimensions.d.ts +16 -0
- package/dist/product/ProductHotspot.d.ts +16 -0
- package/dist/product/ProductViewer.d.ts +9 -0
- package/dist/product/details.d.ts +53 -0
- package/dist/product/index.d.ts +14 -0
- package/dist/product/loadModelViewer.d.ts +4 -0
- package/dist/product/types.d.ts +71 -0
- package/dist/product/useProductAr.d.ts +37 -0
- package/dist/product/useProductDetails.d.ts +60 -0
- package/dist/product.cjs +1 -0
- package/dist/product.js +414 -0
- package/dist/providers-C8rE26Uf.js +366 -0
- package/dist/providers-DHsrhDI2.cjs +62 -0
- package/dist/quality/XRQualityController.d.ts +25 -0
- package/dist/quality/controller.d.ts +33 -0
- package/dist/quality/index.d.ts +6 -0
- package/dist/quality/types.d.ts +100 -0
- package/dist/quality/useXRQuality.d.ts +28 -0
- package/dist/render/renderPasses.d.ts +8 -0
- package/dist/render/sceneBeforeRender.d.ts +12 -0
- package/dist/{renderGroups-KZk6eRiY.js → renderGroups-B38pUaX2.js} +1 -1
- package/dist/{renderGroups-80H3DpTl.cjs → renderGroups-Cb_4Ar1Q.cjs} +1 -1
- package/dist/renderPasses-B6l8IpJv.js +1290 -0
- package/dist/renderPasses-dqmkft4P.cjs +158 -0
- package/dist/renderState-CJNmj5jz.js +39 -0
- package/dist/renderState-apSfg4eR.cjs +1 -0
- package/dist/scene-object.cjs +1 -1
- package/dist/scene-object.js +2 -2
- package/dist/segmentation-Cb3ouK6Z.js +1758 -0
- package/dist/segmentation-D9pYO6aR.cjs +1 -0
- package/dist/segmentation2d/faceMemory.d.ts +28 -0
- package/dist/segmentation2d/faceRegions.d.ts +24 -0
- package/dist/segmentation2d/index.d.ts +9 -0
- package/dist/segmentation2d/maskUv.d.ts +23 -0
- package/dist/segmentation2d/rasterize.d.ts +14 -0
- package/dist/segmentation2d/types.d.ts +52 -0
- package/dist/select-Ck5LGz-J.cjs +1 -0
- package/dist/select-pYRo_win.js +233 -0
- package/dist/selectors-C4X71aoD.cjs +1 -0
- package/dist/selectors-DmNaKIwE.js +196 -0
- package/dist/session-BrH8G7iJ.cjs +31 -0
- package/dist/session-DgA_z6O1.js +418 -0
- package/dist/settings-BJ7FMBsO.js +111 -0
- package/dist/settings-C63FMBlF.cjs +1 -0
- package/dist/similarityFit-BFqHND2e.cjs +1 -0
- package/dist/similarityFit-Bbz-R8AY.js +91 -0
- package/dist/spring/index.d.ts +2 -0
- package/dist/spring/spring.d.ts +69 -0
- package/dist/spring/swing.d.ts +54 -0
- package/dist/subjects/index.d.ts +2 -0
- package/dist/subjects/select.d.ts +62 -0
- package/dist/subjects/types.d.ts +55 -0
- package/dist/tracking-config/apply.d.ts +57 -0
- package/dist/tracking-config/index.d.ts +7 -0
- package/dist/tracking-config/resolve.d.ts +25 -0
- package/dist/tracking-config/storage.d.ts +8 -0
- package/dist/tracking-config/types.d.ts +106 -0
- package/dist/tracking-config/useXRTrackingConfig.d.ts +38 -0
- package/dist/tracking.cjs +10 -1
- package/dist/tracking.js +1326 -506
- package/dist/trigger-D0Pm9noT.cjs +49 -0
- package/dist/trigger-IQeys0oS.js +2128 -0
- package/dist/types/compositor.d.ts +21 -0
- package/dist/types/face.d.ts +20 -1
- package/dist/types/hand-tracking.d.ts +9 -0
- package/dist/types/holistic.d.ts +121 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/model.d.ts +22 -2
- package/dist/types/nodes.d.ts +47 -3
- package/dist/types/segmentation.d.ts +24 -0
- package/dist/types/session.d.ts +41 -3
- package/dist/updateThrottle-BseecYag.js +4 -0
- package/dist/updateThrottle-Of5Y4SVa.cjs +1 -0
- package/dist/useFaceInfo-BHDNCvsJ.cjs +1 -0
- package/dist/useFaceInfo-J4x7LsqL.js +76 -0
- package/dist/useFaceResultReader-BvEo5REG.js +61 -0
- package/dist/useFaceResultReader-DuaL1KJG.cjs +1 -0
- package/dist/useInstructionHold-DOu-RpCM.js +53 -0
- package/dist/useInstructionHold-DwJY1Alr.cjs +1 -0
- package/dist/useLandmarkPoseFit-Bg-h9BPb.cjs +1 -0
- package/dist/useLandmarkPoseFit-Bmb3h6Mw.js +87 -0
- package/dist/useXRCapabilities-Cr3RzuAW.cjs +1 -0
- package/dist/useXRCapabilities-Cxmlmpbd.js +30 -0
- package/dist/utils/canonicalRigidLandmarks.d.ts +8 -0
- package/dist/utils/fns.d.ts +6 -3
- package/dist/utils/headOccluderFit.d.ts +42 -0
- package/dist/utils/integrity.d.ts +21 -1
- package/dist/utils/resolveNumFaces.d.ts +13 -0
- package/dist/utils/shoulderOccluderFit.d.ts +38 -0
- package/dist/utils/similarityFit.d.ts +23 -0
- package/dist/utils/updateThrottle.d.ts +2 -0
- package/dist/utils/useStableUniforms.d.ts +18 -0
- package/dist/uv-BMFt19bg.cjs +1 -0
- package/dist/{index-ByoNj0QP.js → uv-DJU_XfmN.js} +15 -247
- package/docs/SDK_DOCUMENTATION.md +1 -2
- package/docs/api/adaptive-quality.mdx +104 -0
- package/docs/api/asset-lifecycle.mdx +78 -0
- package/docs/api/body-instructions.mdx +285 -0
- package/docs/api/body-triggers.mdx +234 -0
- package/docs/api/camera-permission.mdx +142 -0
- package/docs/api/coordinate-spaces.mdx +168 -0
- package/docs/api/cross-camera.mdx +89 -0
- package/docs/api/debug-ui-scene-editor.mdx +23 -2
- package/docs/api/diagnostics-calibration.mdx +97 -0
- package/docs/api/external-face-mesh.mdx +231 -0
- package/docs/api/face-actions.mdx +20 -16
- package/docs/api/face-attribute-expression.mdx +1 -1
- package/docs/api/face-binding-anchors.mdx +4 -2
- package/docs/api/face-character.mdx +157 -0
- package/docs/api/face-effects.mdx +9 -0
- package/docs/api/face-expression-controller.mdx +153 -0
- package/docs/api/face-info.mdx +17 -11
- package/docs/api/face-inset.mdx +204 -0
- package/docs/api/face-instructions.mdx +183 -0
- package/docs/api/face-liquify.mdx +196 -0
- package/docs/api/face-mesh.mdx +8 -9
- package/docs/api/face-morph.mdx +117 -0
- package/docs/api/face-painting.mdx +7 -0
- package/docs/api/face-reprojection.mdx +154 -0
- package/docs/api/face-retouching.mdx +18 -10
- package/docs/api/face-swap.mdx +350 -0
- package/docs/api/face-warp-3d.mdx +166 -0
- package/docs/api/faceless.mdx +143 -0
- package/docs/api/gestures.mdx +209 -0
- package/docs/api/hair.mdx +97 -0
- package/docs/api/hand-instructions.mdx +222 -0
- package/docs/api/hand-rig.mdx +535 -0
- package/docs/api/hand-touch.mdx +162 -0
- package/docs/api/head-occluder.mdx +563 -0
- package/docs/api/holistic-tracker.mdx +164 -0
- package/docs/api/instructions.mdx +323 -0
- package/docs/api/iris-tracking.mdx +247 -0
- package/docs/api/made-up-camera.mdx +131 -0
- package/docs/api/makeup-skin-tone.mdx +135 -0
- package/docs/api/makeup.mdx +353 -0
- package/docs/api/multi-subject.mdx +98 -0
- package/docs/api/particles.mdx +155 -0
- package/docs/api/person-cutout.mdx +136 -0
- package/docs/api/pin-to-face-mesh.mdx +274 -0
- package/docs/api/product-ar.mdx +114 -0
- package/docs/api/product-details.mdx +78 -0
- package/docs/api/screen-space-coordinates.mdx +4 -1
- package/docs/api/segmentation-overlay.mdx +301 -0
- package/docs/api/session-lifecycle.mdx +136 -0
- package/docs/api/trackers.mdx +5 -0
- package/docs/api/tracking-config.mdx +108 -0
- package/docs/docs.json +51 -1
- package/docs/examples/lip-shaders.mdx +273 -0
- package/docs/guides/face-atlas-template.svg +1 -0
- package/docs/guides/face-atlas-textures.mdx +186 -0
- package/docs/guides/face-texture-template.svg +1 -0
- package/docs/guides/harness-debug-ui.mdx +4 -4
- package/docs/guides/lip-effect-textures.mdx +368 -0
- package/docs/guides/lip-uv-template.png +0 -0
- package/docs/guides/lip-uv-template.svg +1 -0
- package/docs/guides/makeup-design-textures.mdx +109 -0
- package/docs/introduction.mdx +1 -2
- package/package.json +23 -1
- package/dist/DebuggerUI-B6bP6P9r.cjs +0 -1
- package/dist/DebuggerUI-BjOMr8q_.js +0 -269
- package/dist/FaceMeshRenderer-C5l6VLdO.cjs +0 -155
- package/dist/FaceMeshRenderer-wjAHrJzP.js +0 -1270
- package/dist/FaceRetouch-BkJzoA79.cjs +0 -134
- package/dist/FaceRetouch-DwbKQJAN.js +0 -551
- package/dist/components/FaceWarp3D/FaceWarp3DHead.d.ts +0 -15
- package/dist/components/FaceWarp3D/defaults.d.ts +0 -37
- package/dist/components/FaceWarp3D/warp.d.ts +0 -13
- package/dist/contexts-ByhzppYl.js +0 -663
- package/dist/contexts-Dr62It_K.cjs +0 -1
- package/dist/debug-ui/face-warp-3d/index.d.ts +0 -6
- package/dist/getFaceInfo-C4QpCQIY.js +0 -118
- package/dist/getFaceInfo-fA1bFBub.cjs +0 -1
- package/dist/index-9dlAQAhy.js +0 -1462
- package/dist/index-BjmTe9eM.cjs +0 -1
- package/dist/index-BpEf2BBb.cjs +0 -1
- package/dist/index-CyUUurQT.cjs +0 -1
- package/dist/index-DCiMbxC3.cjs +0 -1
- package/dist/index-DXT3WccE.js +0 -2089
- package/dist/index-DpI-qo5X.cjs +0 -17
- package/dist/index-DyVF4vEW.js +0 -111
- package/dist/index-VJ0SJwmG.js +0 -214
- package/dist/internal-Cq-TEQ5Y.cjs +0 -1
- package/dist/renderLayers-lDtL0_43.cjs +0 -1
- package/dist/renderLayers-zrK2pv5O.js +0 -13
- package/dist/renderPasses-BOoBSr8z.cjs +0 -21
- package/dist/renderPasses-BcquyVtu.js +0 -1500
- package/dist/selectors-B8H97CKA.js +0 -59
- package/dist/selectors-CZLKT2Iv.cjs +0 -1
- package/dist/session-CpkiK5YA.cjs +0 -31
- package/dist/session-DLFN_VII.js +0 -363
- package/dist/useFaceInfo-BJ8-_MOs.cjs +0 -1
- package/dist/useFaceInfo-Dk426LTu.js +0 -62
- package/dist/useFaceResults-CtetsO9M.js +0 -19
- package/dist/useFaceResults-wBJF3zyp.cjs +0 -1
|
@@ -18,6 +18,6 @@ export declare const useCalibrationFaceTracker: ({ enabled, displayMirrored, ima
|
|
|
18
18
|
}) => {
|
|
19
19
|
activeDelegate: "GPU";
|
|
20
20
|
faces: import('../types').FaceTrackingResult[];
|
|
21
|
-
status: "
|
|
21
|
+
status: "ready" | "error" | "idle" | "initializing";
|
|
22
22
|
error: string | null;
|
|
23
23
|
};
|
|
@@ -1,7 +1,19 @@
|
|
|
1
1
|
import { FaceInfo } from '../face-info';
|
|
2
|
+
import { XRSubjectPolicy } from '../subjects/types';
|
|
2
3
|
import { UseFaceInfosOptions } from './useFaceInfos';
|
|
3
4
|
export type UseFaceInfoOptions = UseFaceInfosOptions & {
|
|
5
|
+
/** Result-array position to read (not a persistent identity). Default 0. Ignored when `subject` is set. */
|
|
4
6
|
faceIndex?: number;
|
|
7
|
+
/**
|
|
8
|
+
* Multi-subject policy: pick the face by `largest`, `nearest-center`,
|
|
9
|
+
* `leftmost`, `rightmost`, or `sticky` (follows the previously selected
|
|
10
|
+
* face by proximity). With a policy and no `numFaces`, the model is asked
|
|
11
|
+
* for `DEFAULT_POLICY_NUM_FACES` (4) faces so the policy has candidates;
|
|
12
|
+
* pass `numFaces` to choose the count.
|
|
13
|
+
*/
|
|
14
|
+
subject?: XRSubjectPolicy;
|
|
5
15
|
};
|
|
16
|
+
/** Faces requested when a `subject` policy is set without `numFaces`. */
|
|
17
|
+
export declare const DEFAULT_POLICY_NUM_FACES = 4;
|
|
6
18
|
/** Single-face selector over `useFaceInfos`; it does not create another reader loop. */
|
|
7
|
-
export declare const useFaceInfo: ({ faceIndex, numFaces, ...options }?: UseFaceInfoOptions) => FaceInfo | null;
|
|
19
|
+
export declare const useFaceInfo: ({ faceIndex, numFaces, subject, ...options }?: UseFaceInfoOptions) => FaceInfo | null;
|
|
@@ -2,7 +2,7 @@ import { FaceInfo } from '../face-info';
|
|
|
2
2
|
export type UseFaceInfosOptions = {
|
|
3
3
|
/** Pauses this consumer's model interest when false. Default true. */
|
|
4
4
|
active?: boolean;
|
|
5
|
-
/** Maximum faces requested from the shared model. Default 1. */
|
|
5
|
+
/** Maximum faces requested from the shared model. Default 1, capped at 10 (`XR_MAX_SUBJECTS.face.max`). */
|
|
6
6
|
numFaces?: number;
|
|
7
7
|
/** Optional inference-rate cap. */
|
|
8
8
|
targetFps?: number;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { XRModelNodeFaceTracking } from '../types/nodes';
|
|
2
|
+
/**
|
|
3
|
+
* The face-model start rule shared by every component that starts the face
|
|
4
|
+
* model itself when no `FaceTracker` (or face rig) is above it: the
|
|
5
|
+
* face-atlas surfaces (makeup) and the live faces (face swap). Pair with
|
|
6
|
+
* `resolveNumFaces` (`lib/utils/resolveNumFaces.ts`) for the count.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Starts the shared face model (`useXRModel`'s acquire, without its
|
|
10
|
+
* re-render on readiness) while `enabled`, asking for `numFaces` faces.
|
|
11
|
+
* The first component to start the model sets its count; later ones share
|
|
12
|
+
* it. The acquire waits for the end of the commit's effects (a microtask),
|
|
13
|
+
* so a `FaceTracker` mounted beside the component in the same commit
|
|
14
|
+
* acquires first and its `numFaces` / `targetFps` win, as they did when face
|
|
15
|
+
* layers never started the model (alpha.8). Nothing outside an `XRProvider`.
|
|
16
|
+
*/
|
|
17
|
+
export declare const useFaceModelAcquisition: (enabled: boolean, numFaces: number) => void;
|
|
18
|
+
/**
|
|
19
|
+
* True when the face model behind `node` was started with too few faces to
|
|
20
|
+
* ever report face `faceIndex` (`XRModelNodeFaceTracking.numFaces`). False
|
|
21
|
+
* while the node or its count is unknown.
|
|
22
|
+
*/
|
|
23
|
+
export declare const faceModelMissesFace: (node: Pick<XRModelNodeFaceTracking, "numFaces"> | null | undefined, faceIndex: number) => boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Warns once per face model and face index when the face model was started with
|
|
26
|
+
* fewer faces than `faceIndex + 1`: the face is then never tracked and the
|
|
27
|
+
* component draws nothing. `who` names the component in the message.
|
|
28
|
+
* Returns whether it warned now. Not gated on dev builds: a library build
|
|
29
|
+
* replaces `import.meta.env.DEV` with false, so a gated warning would never
|
|
30
|
+
* reach an app.
|
|
31
|
+
*/
|
|
32
|
+
export declare const warnFaceModelMissesFace: (node: Pick<XRModelNodeFaceTracking, "numFaces"> | null | undefined, faceIndex: number, who: string) => boolean;
|
|
33
|
+
/**
|
|
34
|
+
* `warnFaceModelMissesFace` from React: checks whenever the face model's
|
|
35
|
+
* node (a new model) or the face index changes, while `enabled`. No per-frame
|
|
36
|
+
* cost: the node's `numFaces` is fixed once the node is published.
|
|
37
|
+
*/
|
|
38
|
+
export declare const useFaceModelFaceCheck: (node: Pick<XRModelNodeFaceTracking, "numFaces"> | null | undefined, faceIndex: number, who: string, enabled?: boolean) => void;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { GestureDetectorOptions, GestureState } from '../gestures/detector';
|
|
2
|
+
import { GestureRef } from '../gestures/definitions';
|
|
3
|
+
export type UseGestureOptions = Partial<GestureDetectorOptions> & {
|
|
4
|
+
/** Pause measuring (the tracker interest is released too). Default true. */
|
|
5
|
+
active?: boolean;
|
|
6
|
+
/** Face gestures: result-array index of the face. Default 0. */
|
|
7
|
+
faceIndex?: number;
|
|
8
|
+
/** Face gestures: faces to request from the shared model (first acquirer wins). */
|
|
9
|
+
numFaces?: number;
|
|
10
|
+
/** Hand gestures: prefer this hand when present. */
|
|
11
|
+
hand?: "left" | "right";
|
|
12
|
+
/** Hand gestures: positional fallback. Default 0. */
|
|
13
|
+
handIndex?: number;
|
|
14
|
+
/** Body gestures: pose index. Default 0. */
|
|
15
|
+
bodyIndex?: number;
|
|
16
|
+
/** Optional inference cap for the underlying model. */
|
|
17
|
+
targetFps?: number;
|
|
18
|
+
/** Lifecycle events; called from the frame loop with the state of that frame. */
|
|
19
|
+
onBegin?: (state: GestureState) => void;
|
|
20
|
+
onEnd?: (state: GestureState) => void;
|
|
21
|
+
onChange?: (state: GestureState) => void;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Detect one gesture from the tracker it needs. Acquires the shared face,
|
|
25
|
+
* hand or body model (no second detector), measures the definition every
|
|
26
|
+
* frame, and runs the gesture engine: enter/exit hysteresis, hold,
|
|
27
|
+
* cooldown, a confidence gate and a loss grace window. Returns React state
|
|
28
|
+
* that changes only when the gesture's state changes; `onBegin` / `onEnd` /
|
|
29
|
+
* `onChange` fire from the frame loop. Must run inside `XRProvider` and the
|
|
30
|
+
* R3F canvas.
|
|
31
|
+
*/
|
|
32
|
+
export declare const useGesture: (gesture: GestureRef, options?: UseGestureOptions) => GestureState;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { IrisResult } from '../iris/types';
|
|
2
|
+
export type IrisTrackingStatus = "loading" | "ready" | "error";
|
|
3
|
+
export type UseIrisTrackingOptions = {
|
|
4
|
+
/** Result-array index of the face to read. Default 0. */
|
|
5
|
+
faceIndex?: number;
|
|
6
|
+
/** Maximum faces requested from the shared face model (first acquirer wins). Default `faceIndex + 1`. */
|
|
7
|
+
numFaces?: number;
|
|
8
|
+
/** Pauses this consumer's model interest when false. Default true. */
|
|
9
|
+
active?: boolean;
|
|
10
|
+
/** Optional inference-rate cap for the shared face model. */
|
|
11
|
+
targetFps?: number;
|
|
12
|
+
/** Keep the last iris data for this long (ms) after the face drops. Default 250. */
|
|
13
|
+
holdMs?: number;
|
|
14
|
+
/** While held, extrapolate along the last velocity for up to this long (ms). Default 0. */
|
|
15
|
+
predictMs?: number;
|
|
16
|
+
/**
|
|
17
|
+
* One Euro smoothing of the iris centers and radius, same scale as
|
|
18
|
+
* `TrackingAnchor`'s `smoothing` (~15 is a good default; 0 = raw). Resets on
|
|
19
|
+
* re-acquire so the iris never slides in from a stale position.
|
|
20
|
+
*/
|
|
21
|
+
smoothing?: number;
|
|
22
|
+
/**
|
|
23
|
+
* Inference runs below the render rate (24 fps by default against 60+
|
|
24
|
+
* rendered), so the iris would hold then jump on each sample. Between
|
|
25
|
+
* samples the centers are advanced along their last velocity for at most
|
|
26
|
+
* this long (ms), which keeps fast head motion continuous. Default 80;
|
|
27
|
+
* 0 disables.
|
|
28
|
+
*/
|
|
29
|
+
leadMs?: number;
|
|
30
|
+
};
|
|
31
|
+
export type IrisTrackingHandle = {
|
|
32
|
+
/** Stable object, updated in place every frame. Read it inside `useFrame`. */
|
|
33
|
+
result: IrisResult;
|
|
34
|
+
/** True once the shared face model is registered without error. */
|
|
35
|
+
ready: boolean;
|
|
36
|
+
status: IrisTrackingStatus;
|
|
37
|
+
error: Error | null;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Per-frame iris reader over the shared face tracker: no second detector,
|
|
41
|
+
* the same `faceIndex` / `numFaces` selection as `useFaceInfo`, the SDK's
|
|
42
|
+
* one dropout bridge (`FaceTrackMemory`, hold 250 / predict 0) and optional
|
|
43
|
+
* One Euro smoothing. Must run inside `XRProvider` and the R3F canvas.
|
|
44
|
+
*/
|
|
45
|
+
export declare const useIrisTracking: ({ faceIndex, numFaces, active, targetFps, holdMs, predictMs, smoothing, leadMs, }?: UseIrisTrackingOptions) => IrisTrackingHandle;
|
|
@@ -25,6 +25,12 @@ export type TrackerContextValue = {
|
|
|
25
25
|
* `useFrame`.
|
|
26
26
|
*/
|
|
27
27
|
resolveLandmark: TrackerLandmarkResolver;
|
|
28
|
+
/**
|
|
29
|
+
* The tracked subject this tracker binds to (`FaceTracker`'s `faceIndex`).
|
|
30
|
+
* Fitted children (`CanonicalHeadFrame`, `HeadAttachment`, `HeadOccluder`)
|
|
31
|
+
* default to it, so a subtree under `faceIndex={1}` follows face 1.
|
|
32
|
+
*/
|
|
33
|
+
faceIndex?: number;
|
|
28
34
|
};
|
|
29
35
|
export declare const TrackerContext: import('react').Context<TrackerContextValue | null>;
|
|
30
36
|
/**
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { XRModel, XRMediaSource } from '../constants';
|
|
2
|
+
import { XRModelDiagnostics } from '../models/Base';
|
|
3
|
+
import { XRSessionSourceKind } from '../types/compositor';
|
|
4
|
+
import { SessionFacade } from './useXRSession';
|
|
5
|
+
import { SessionLifecycleState, XRSessionError } from './useXRSession/store';
|
|
6
|
+
/** One tracker's health, merged from the registry and the model instance. */
|
|
7
|
+
export type XRModelDiagnosticsEntry = XRModelDiagnostics & {
|
|
8
|
+
model: XRModel;
|
|
9
|
+
/** Short human label (`face`, `hand`, …). */
|
|
10
|
+
label: string;
|
|
11
|
+
/**
|
|
12
|
+
* `unavailable`: nothing acquired it. `loading`: acquired, initializing.
|
|
13
|
+
* `ready`: running. `paused`: initialized but no active owner (or the
|
|
14
|
+
* session is stopped / paused). `error`: initialize or inference failed.
|
|
15
|
+
*/
|
|
16
|
+
state: "unavailable" | "loading" | "ready" | "paused" | "error";
|
|
17
|
+
/** Inference-rate cap requested for this model (`null` = uncapped / unknown). */
|
|
18
|
+
targetFps: number | null;
|
|
19
|
+
/** Owners holding the model and those that want it running. */
|
|
20
|
+
owners: {
|
|
21
|
+
refs: string[];
|
|
22
|
+
active: string[];
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
export type XRSessionDiagnostics = {
|
|
26
|
+
lifecycle: SessionLifecycleState;
|
|
27
|
+
ready: boolean;
|
|
28
|
+
error: XRSessionError | undefined;
|
|
29
|
+
source: XRMediaSource | undefined;
|
|
30
|
+
sourceKind: XRSessionSourceKind | undefined;
|
|
31
|
+
/** Native media size. */
|
|
32
|
+
sourceWidth: number;
|
|
33
|
+
sourceHeight: number;
|
|
34
|
+
/** Tracker feed / render size. */
|
|
35
|
+
renderWidth: number;
|
|
36
|
+
renderHeight: number;
|
|
37
|
+
/** Frames the session blitted into the tracker feed per second (0 while paused). */
|
|
38
|
+
feedFps: number;
|
|
39
|
+
/** Total feed frames since the provider mounted. */
|
|
40
|
+
feedFrames: number;
|
|
41
|
+
};
|
|
42
|
+
export type XRDiagnostics = {
|
|
43
|
+
session: XRSessionDiagnostics;
|
|
44
|
+
/** Adaptive-quality tier (`null` when no controller is mounted). */
|
|
45
|
+
quality: {
|
|
46
|
+
tier: string;
|
|
47
|
+
index: number;
|
|
48
|
+
locked: boolean;
|
|
49
|
+
reason: string;
|
|
50
|
+
} | null;
|
|
51
|
+
models: XRModelDiagnosticsEntry[];
|
|
52
|
+
/** Sum of the last inference time of every running model (ms). */
|
|
53
|
+
inferenceMsTotal: number;
|
|
54
|
+
/** `performance.now()` when this sample was taken. */
|
|
55
|
+
sampledAt: number;
|
|
56
|
+
};
|
|
57
|
+
export type UseXRDiagnosticsOptions = {
|
|
58
|
+
/** Sampling period in ms (default 250). Diagnostics never sample per frame. */
|
|
59
|
+
intervalMs?: number;
|
|
60
|
+
/** Models to report; default every `XRModel`, so unacquired ones show as `unavailable`. */
|
|
61
|
+
models?: XRModel[];
|
|
62
|
+
/** `false` stops sampling (the last sample stays). Default `true`. */
|
|
63
|
+
enabled?: boolean;
|
|
64
|
+
};
|
|
65
|
+
export declare const XR_MODEL_LABELS: Record<XRModel, string>;
|
|
66
|
+
/**
|
|
67
|
+
* Take one diagnostics sample from a session. Pure over the session's current
|
|
68
|
+
* state; `previous` supplies the frame baseline for the feed fps.
|
|
69
|
+
*/
|
|
70
|
+
export declare const sampleXRDiagnostics: (session: SessionFacade, models: XRModel[], previous: {
|
|
71
|
+
feedFrames: number;
|
|
72
|
+
sampledAt: number;
|
|
73
|
+
} | null, now?: number) => XRDiagnostics;
|
|
74
|
+
/**
|
|
75
|
+
* Opt-in tracking diagnostics: session lifecycle, source and feed size, feed
|
|
76
|
+
* frame rate, and per-model readiness, inference time and rate, skipped
|
|
77
|
+
* frames, detections, confidence and errors. Sampled on an interval (never per
|
|
78
|
+
* frame) only while a consumer is mounted, so it costs nothing in production
|
|
79
|
+
* until you render it. Requires an `<XRProvider>`.
|
|
80
|
+
*/
|
|
81
|
+
export declare const useXRDiagnostics: (options?: UseXRDiagnosticsOptions) => XRDiagnostics;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { XRModel } from '../constants';
|
|
2
|
+
import { XRFallbackReason } from '../capabilities/types';
|
|
2
3
|
/**
|
|
3
4
|
* Serialize model options to a value-stable key. Exported for tests: the
|
|
4
5
|
* acquire effect must key on this, not on the options object's identity.
|
|
@@ -8,6 +9,12 @@ export type UseXRModelResult<T extends Record<string, unknown>> = {
|
|
|
8
9
|
ready: boolean;
|
|
9
10
|
node: T | null;
|
|
10
11
|
error: Error | null;
|
|
12
|
+
/**
|
|
13
|
+
* Structured cause when `error` is set (`model-unreachable`,
|
|
14
|
+
* `model-integrity`, `model-init-failed`, …); `null` while healthy. Camera
|
|
15
|
+
* failures are session-level: read `useXRError()` / `useXRTrackerStatus()`.
|
|
16
|
+
*/
|
|
17
|
+
fallback: XRFallbackReason | null;
|
|
11
18
|
};
|
|
12
19
|
export declare function useXRModel<T extends Record<string, unknown>>(modelName: XRModel, options?: Record<string, unknown>,
|
|
13
20
|
/**
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { Camera, Scene, WebGLRenderer } from 'three';
|
|
2
2
|
import { XRModel } from '../../constants';
|
|
3
|
-
import {
|
|
3
|
+
import { XRCameraFacing, XRCameraRequest } from '../../types/compositor';
|
|
4
|
+
import { XRQualityConfig, XRQualityState } from '../../quality/types';
|
|
5
|
+
import { RegisterXRPipelineParams, SetFrameSourceParams, SetMediaSourceParams, XRLifecycleConfig, XRPerfConfig } from '../../types';
|
|
4
6
|
import { ModelRegistry } from './registry';
|
|
5
7
|
import { SessionStore } from './store';
|
|
6
8
|
export type SessionFacade = {
|
|
@@ -11,6 +13,15 @@ export type SessionFacade = {
|
|
|
11
13
|
start: () => Promise<void>;
|
|
12
14
|
stop: () => Promise<void>;
|
|
13
15
|
reset: () => Promise<void>;
|
|
16
|
+
pause: () => void;
|
|
17
|
+
resume: () => Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Open another camera (facing or device) on a live session, keeping every
|
|
20
|
+
* model and the lifecycle: a `setMediaSource({ source: WEBCAM, ...request })`
|
|
21
|
+
* that also starts a `media-bound` / `stopped` session. Resolves to the
|
|
22
|
+
* facing the session ended up with.
|
|
23
|
+
*/
|
|
24
|
+
switchCamera: (request?: XRCameraRequest) => Promise<XRCameraFacing>;
|
|
14
25
|
/** @deprecated prefer `useXRModel` */
|
|
15
26
|
registerXRPipeline: (params: RegisterXRPipelineParams) => Promise<void>;
|
|
16
27
|
getModelNode: <T extends Record<string, unknown>>(modelCode: XRModel) => T;
|
|
@@ -31,7 +42,36 @@ export type SessionFacade = {
|
|
|
31
42
|
/** Update the session perf config (targetFps / camRes). Applied to models on
|
|
32
43
|
* their next run; camRes takes effect on the next media (re)bind. */
|
|
33
44
|
_setPerf: (perf: XRPerfConfig | undefined) => void;
|
|
45
|
+
/** Update the lifecycle config (visibility handling). */
|
|
46
|
+
_setLifecycle: (lifecycle: XRLifecycleConfig | undefined) => void;
|
|
47
|
+
/**
|
|
48
|
+
* Re-open the current webcam with the current perf config (a changed
|
|
49
|
+
* `camRes`). Keeps lifecycle and models; no-op for stream / canvas sources.
|
|
50
|
+
*/
|
|
51
|
+
_rebindMedia: () => Promise<void>;
|
|
52
|
+
/** Publish adaptive-quality state (the controller owns it). */
|
|
53
|
+
_setQuality: (quality: XRQualityState | null) => void;
|
|
54
|
+
/** Publish the controller's resolved config so `useXRQuality()` resolves tiers against it. */
|
|
55
|
+
_setQualityConfig: (config: XRQualityConfig | null) => void;
|
|
56
|
+
/** Current perf config as applied (`_setPerf` merges tier knobs into it). */
|
|
57
|
+
_getPerf: () => XRPerfConfig | undefined;
|
|
58
|
+
/**
|
|
59
|
+
* Final teardown: `reset()` plus listener removal. The provider calls this
|
|
60
|
+
* on unmount; afterwards every bind/start is rejected until `rearm()`.
|
|
61
|
+
* Idempotent.
|
|
62
|
+
*/
|
|
63
|
+
dispose: () => Promise<void>;
|
|
64
|
+
/**
|
|
65
|
+
* Undo `dispose()`'s rejection so the same facade can bind again. The
|
|
66
|
+
* provider calls it on every mount: React StrictMode runs mount → unmount →
|
|
67
|
+
* mount against one memoized facade, so a sticky `disposed` would poison it.
|
|
68
|
+
*/
|
|
69
|
+
rearm: () => void;
|
|
70
|
+
/** True after `dispose()` (until `rearm()`). */
|
|
71
|
+
isDisposed: () => boolean;
|
|
34
72
|
};
|
|
73
|
+
/** The front camera is mirrored unless the caller says otherwise; the rear camera is drawn straight. */
|
|
74
|
+
export declare const resolveWebcamMirror: (facingMode: XRCameraFacing, mirrored?: boolean) => boolean;
|
|
35
75
|
export declare const resolveSourceCanvasSize: ({ renderHeight, renderWidth, videoHeight, videoWidth, }: {
|
|
36
76
|
renderHeight: number;
|
|
37
77
|
renderWidth: number;
|
|
@@ -41,4 +81,4 @@ export declare const resolveSourceCanvasSize: ({ renderHeight, renderWidth, vide
|
|
|
41
81
|
height: number;
|
|
42
82
|
width: number;
|
|
43
83
|
};
|
|
44
|
-
export declare const createSessionFacade: (perf?: XRPerfConfig) => SessionFacade;
|
|
84
|
+
export declare const createSessionFacade: (perf?: XRPerfConfig, lifecycle?: XRLifecycleConfig) => SessionFacade;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { XRPerfConfig } from '../../types';
|
|
1
|
+
import { XRLifecycleConfig, XRPerfConfig } from '../../types';
|
|
2
2
|
import { SessionFacade } from './facade';
|
|
3
3
|
export type { SessionFacade } from './facade';
|
|
4
|
-
export declare const useXRSession: (perf?: XRPerfConfig) => SessionFacade;
|
|
4
|
+
export declare const useXRSession: (perf?: XRPerfConfig, lifecycle?: XRLifecycleConfig) => SessionFacade;
|
|
@@ -14,6 +14,8 @@
|
|
|
14
14
|
* Depends on: nothing.
|
|
15
15
|
* Depended on by: `facade.ts`, `store.ts`, `../selectors.ts`.
|
|
16
16
|
*/
|
|
17
|
-
export type XRErrorReason = "permission-denied" | "camera-in-use" | "no-camera" | "unsupported"
|
|
17
|
+
export type XRErrorReason = "permission-denied" | "camera-in-use" | "no-camera" | "unsupported"
|
|
18
|
+
/** The camera stopped mid-session: unplugged, revoked, or taken by another app. */
|
|
19
|
+
| "camera-lost" | "unknown";
|
|
18
20
|
export declare const mapDomExceptionToReason: (err: unknown) => XRErrorReason;
|
|
19
21
|
export declare const MESSAGE_FOR: Record<XRErrorReason, string>;
|
|
@@ -2,6 +2,13 @@ import { XRModel } from '../../constants';
|
|
|
2
2
|
import { BaseXRModel } from '../../models/Base';
|
|
3
3
|
import { Class } from '../../types';
|
|
4
4
|
import { SessionStore } from './store';
|
|
5
|
+
/**
|
|
6
|
+
* Where a model is in its life: `idle` (never acquired, or released),
|
|
7
|
+
* `initializing` (acquired, `initialize()` in flight), `ready` (initialized
|
|
8
|
+
* and published), `error` (the last initialize rejected; the next acquire
|
|
9
|
+
* retries).
|
|
10
|
+
*/
|
|
11
|
+
export type ModelRegistryState = "idle" | "initializing" | "ready" | "error";
|
|
5
12
|
export type ModelRegistry = {
|
|
6
13
|
/**
|
|
7
14
|
* Acquire a model by name on behalf of `ownerId`. Increments the refcount,
|
|
@@ -50,6 +57,13 @@ export type ModelRegistry = {
|
|
|
50
57
|
* Force-release every model. Used by `session.reset()`.
|
|
51
58
|
*/
|
|
52
59
|
releaseAll: () => void;
|
|
60
|
+
/** Lifecycle state of a model (see `ModelRegistryState`). */
|
|
61
|
+
getState: (modelName: XRModel) => ModelRegistryState;
|
|
62
|
+
/** Owner ids currently holding the model, and those that want it running. */
|
|
63
|
+
getOwners: (modelName: XRModel) => {
|
|
64
|
+
refs: string[];
|
|
65
|
+
active: string[];
|
|
66
|
+
};
|
|
53
67
|
};
|
|
54
68
|
export declare const createModelRegistry: (store: SessionStore, modelCodeMap: Record<XRModel, Class<BaseXRModel>>,
|
|
55
69
|
/**
|
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
import { CanvasTexture } from 'three';
|
|
2
2
|
import { XRMediaSource, XRModel } from '../../constants';
|
|
3
|
-
import {
|
|
3
|
+
import { XRCameraFacing, XROrientation, XRSessionSourceKind } from '../../types/compositor';
|
|
4
4
|
import { BaseXRModel } from '../../models/Base';
|
|
5
|
+
import { XRFallbackReason } from '../../capabilities/types';
|
|
6
|
+
import { XRCameraPermissionState } from '../../camera/permission';
|
|
7
|
+
import { XRQualityConfig, XRQualityState } from '../../quality/types';
|
|
5
8
|
import { XRErrorReason } from './reason';
|
|
6
|
-
|
|
9
|
+
/**
|
|
10
|
+
* `paused` is a running session whose blit loop and models are suspended by
|
|
11
|
+
* `session.pause()` (or a hidden tab with `lifecycle.pauseWhenHidden`); the
|
|
12
|
+
* media stream stays open and `resume()` continues without a rebind.
|
|
13
|
+
*/
|
|
14
|
+
export type SessionLifecycleState = "idle" | "media-bound" | "running" | "paused" | "stopped";
|
|
7
15
|
/**
|
|
8
16
|
* `message` is human prose and may be reworded at any time; `reason` is the
|
|
9
17
|
* stable machine-readable identity. `error` is a legacy constant kept for
|
|
@@ -14,6 +22,13 @@ export type XRSessionError = {
|
|
|
14
22
|
message: string;
|
|
15
23
|
reason: XRErrorReason;
|
|
16
24
|
};
|
|
25
|
+
/** Why a model failed to initialize; cleared when the model is acquired again. */
|
|
26
|
+
export type XRModelError = {
|
|
27
|
+
model: XRModel;
|
|
28
|
+
error: Error;
|
|
29
|
+
/** `performance.now()` when the failure was recorded. */
|
|
30
|
+
at: number;
|
|
31
|
+
};
|
|
17
32
|
export type SessionState = {
|
|
18
33
|
lifecycle: SessionLifecycleState;
|
|
19
34
|
ready: boolean;
|
|
@@ -22,13 +37,47 @@ export type SessionState = {
|
|
|
22
37
|
renderWidth: number;
|
|
23
38
|
renderHeight: number;
|
|
24
39
|
source: XRMediaSource | undefined;
|
|
25
|
-
sourceKind:
|
|
40
|
+
sourceKind: XRSessionSourceKind | undefined;
|
|
41
|
+
/** Facing of the bound live camera; `null` for stream / canvas sources. */
|
|
42
|
+
cameraFacing: XRCameraFacing | null;
|
|
43
|
+
/** Device id of the bound live camera when one was requested or reported by the track. */
|
|
44
|
+
cameraDeviceId: string | null;
|
|
45
|
+
/** Current device orientation; updated on `screen.orientation` / resize changes. */
|
|
46
|
+
orientation: XROrientation;
|
|
47
|
+
/** Adaptive-quality controller state (`null` until a controller publishes). */
|
|
48
|
+
quality: XRQualityState | null;
|
|
49
|
+
/** The resolved config the mounted controller runs with (tiers, budget, bounds); `null` without one. */
|
|
50
|
+
qualityConfig: XRQualityConfig | null;
|
|
51
|
+
/** Native pixel size of the bound media frame (0 until bound). */
|
|
52
|
+
sourceWidth: number;
|
|
53
|
+
sourceHeight: number;
|
|
54
|
+
/** Framing zoom the blit loop applies when cover-cropping the source into the feed. */
|
|
55
|
+
cameraZoom: number;
|
|
26
56
|
/**
|
|
27
57
|
* Active model instances by `XRModel` code. The Map identity is replaced
|
|
28
58
|
* (not mutated in place) on every add/remove so subscribers comparing
|
|
29
59
|
* snapshots see a change.
|
|
30
60
|
*/
|
|
31
61
|
pipeline: ReadonlyMap<XRModel, BaseXRModel>;
|
|
62
|
+
/**
|
|
63
|
+
* Models whose last `initialize()` rejected. Replaced (not mutated) on every
|
|
64
|
+
* change so subscribers comparing snapshots see it. A successful re-acquire
|
|
65
|
+
* removes the entry.
|
|
66
|
+
*/
|
|
67
|
+
modelErrors: ReadonlyMap<XRModel, XRModelError>;
|
|
68
|
+
/**
|
|
69
|
+
* Live camera permission as the session experiences it: `requesting`
|
|
70
|
+
* while a webcam `getUserMedia` is pending, then `granted`, or the
|
|
71
|
+
* classified failure. Stays `unknown` for stream / canvas sources.
|
|
72
|
+
*/
|
|
73
|
+
cameraPermission: XRCameraPermissionState;
|
|
74
|
+
cameraPermissionReason: XRFallbackReason | null;
|
|
75
|
+
/**
|
|
76
|
+
* Monotonic count of frames the session blitted into the tracker feed.
|
|
77
|
+
* Diagnostics derive the camera frame rate from its delta; it is not a
|
|
78
|
+
* per-frame React signal (published at most a few times per second).
|
|
79
|
+
*/
|
|
80
|
+
feedFrames: number;
|
|
32
81
|
};
|
|
33
82
|
export type SessionStore = {
|
|
34
83
|
getSnapshot: () => SessionState;
|