@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.
Files changed (639) hide show
  1. package/GROUNDING.md +5651 -82
  2. package/README.md +1 -0
  3. package/dist/CanonicalHeadFrame-BHcWyaiK.js +1506 -0
  4. package/dist/CanonicalHeadFrame-D-_T1OMU.cjs +1 -0
  5. package/dist/DebuggerUI-7ngnJsBe.js +275 -0
  6. package/dist/DebuggerUI-CoglgKdO.cjs +1 -0
  7. package/dist/FaceRetouch-CLoTfrcs.js +1071 -0
  8. package/dist/FaceRetouch-J1lC1WbS.cjs +134 -0
  9. package/dist/FaceSurface-CHAMEeG1.cjs +1 -0
  10. package/dist/FaceSurface-DmP9AEeC.js +27 -0
  11. package/dist/SegmentationOverlay-D_FWkcyP.cjs +35 -0
  12. package/dist/SegmentationOverlay-vn5x_knv.js +6237 -0
  13. package/dist/SkeletonUtils-C2r90MtN.js +21 -0
  14. package/dist/SkeletonUtils-CddIup1F.cjs +1 -0
  15. package/dist/TextLabel-XE0rQSDn.cjs +2 -0
  16. package/dist/TextLabel-c9BCucOI.js +961 -0
  17. package/dist/assets/cache.d.ts +99 -0
  18. package/dist/assets/estimate.d.ts +11 -0
  19. package/dist/assets/gltfLoader.d.ts +16 -0
  20. package/dist/assets/index.d.ts +7 -0
  21. package/dist/assets/loaders.d.ts +43 -0
  22. package/dist/assets/react.d.ts +33 -0
  23. package/dist/body-pose/index.d.ts +521 -0
  24. package/dist/body-trigger/__fixtures__/syntheticBody.d.ts +83 -0
  25. package/dist/body-trigger/frame.d.ts +88 -0
  26. package/dist/body-trigger/index.d.ts +6 -0
  27. package/dist/body-trigger/moves.d.ts +235 -0
  28. package/dist/body-trigger/trigger.d.ts +75 -0
  29. package/dist/calibration/calibration.d.ts +75 -0
  30. package/dist/calibration/index.d.ts +6 -0
  31. package/dist/calibration/storage.d.ts +13 -0
  32. package/dist/calibration/types.d.ts +53 -0
  33. package/dist/calibration/useXRCalibration.d.ts +46 -0
  34. package/dist/camera/CameraPermissionGate.d.ts +26 -0
  35. package/dist/camera/devices.d.ts +26 -0
  36. package/dist/camera/index.d.ts +8 -0
  37. package/dist/camera/permission.d.ts +86 -0
  38. package/dist/camera/useCameraPermission.d.ts +35 -0
  39. package/dist/canonicalFace-BHwyCx1c.js +9 -0
  40. package/dist/canonicalFace-C83I225R.cjs +1 -0
  41. package/dist/capabilities/detect.d.ts +45 -0
  42. package/dist/capabilities/index.d.ts +5 -0
  43. package/dist/capabilities/types.d.ts +120 -0
  44. package/dist/capabilities/useXRCapabilities.d.ts +18 -0
  45. package/dist/compat/environment.d.ts +5 -0
  46. package/dist/compat/index.d.ts +4 -0
  47. package/dist/compat/run.d.ts +18 -0
  48. package/dist/compat/scenarios.d.ts +10 -0
  49. package/dist/compat/types.d.ts +101 -0
  50. package/dist/components/BodyInstruction/BodyPoseHint.d.ts +63 -0
  51. package/dist/components/BodyInstruction/index.d.ts +69 -0
  52. package/dist/components/BodyInstruction/useBodyPose.d.ts +23 -0
  53. package/dist/components/BodyTracker/index.d.ts +17 -0
  54. package/dist/components/BodyTrigger/index.d.ts +49 -0
  55. package/dist/components/Debugger/DebuggerProvider.d.ts +14 -1
  56. package/dist/components/Debugger/DebuggerUI.d.ts +3 -1
  57. package/dist/components/FaceAtlas/FaceAtlasLayer.d.ts +114 -0
  58. package/dist/components/FaceAtlas/MadeUpCamera.d.ts +80 -0
  59. package/dist/components/FaceAtlas/constants.d.ts +8 -0
  60. package/dist/components/FaceAtlas/index.d.ts +7 -0
  61. package/dist/components/FaceAtlas/useFaceAtlasSurface.d.ts +84 -0
  62. package/dist/components/FaceAtlas/useFaceSkin.d.ts +84 -0
  63. package/dist/components/FaceCharacter/ExternalFaceMesh.d.ts +109 -0
  64. package/dist/components/FaceCharacter/FaceExpressionController.d.ts +53 -0
  65. package/dist/components/FaceCharacter/FaceMorph.d.ts +71 -0
  66. package/dist/components/FaceCharacter/FacePiercing.d.ts +65 -0
  67. package/dist/components/FaceCharacter/FaceReprojection.d.ts +85 -0
  68. package/dist/components/FaceCharacter/FaceRig.d.ts +38 -0
  69. package/dist/components/FaceCharacter/FaceSurface.d.ts +49 -0
  70. package/dist/components/FaceCharacter/FaceSurfaceOccluder.d.ts +39 -0
  71. package/dist/components/FaceCharacter/PinToFaceMesh.d.ts +68 -0
  72. package/dist/components/FaceCharacter/index.d.ts +18 -0
  73. package/dist/components/FaceCharacter/useFaceReprojector.d.ts +10 -0
  74. package/dist/components/FaceInset/FaceInset.d.ts +68 -0
  75. package/dist/components/FaceInset/frame.d.ts +94 -0
  76. package/dist/components/FaceInset/index.d.ts +6 -0
  77. package/dist/components/FaceInset/material.d.ts +40 -0
  78. package/dist/components/FaceInset/useFaceInsetTexture.d.ts +37 -0
  79. package/dist/components/FaceInstruction/FaceExpressionHint.d.ts +43 -0
  80. package/dist/components/FaceInstruction/index.d.ts +56 -0
  81. package/dist/components/FaceInstruction/useFaceExpression.d.ts +20 -0
  82. package/dist/components/FaceLiquify/FaceLiquify.d.ts +49 -0
  83. package/dist/components/FaceLiquify/debug.d.ts +37 -0
  84. package/dist/components/FaceLiquify/frame.d.ts +55 -0
  85. package/dist/components/FaceLiquify/index.d.ts +10 -0
  86. package/dist/components/FaceLiquify/material.d.ts +39 -0
  87. package/dist/components/FaceLiquify/pass.d.ts +49 -0
  88. package/dist/components/FaceLiquify/presence.d.ts +25 -0
  89. package/dist/components/FaceLiquify/presets.d.ts +82 -0
  90. package/dist/components/FaceLiquify/selfTest.d.ts +66 -0
  91. package/dist/components/FaceLiquify/target.d.ts +85 -0
  92. package/dist/components/FaceLiquify/warp.d.ts +72 -0
  93. package/dist/components/FaceMesh/canonical/CanonicalFaceMeshRenderer.d.ts +37 -5
  94. package/dist/components/FaceMesh/canonical/geometryGroups.d.ts +21 -0
  95. package/dist/components/FaceMesh/canonical/parseCanonicalFaceModel.d.ts +21 -0
  96. package/dist/components/FaceMesh/canonical/shaders.d.ts +1 -1
  97. package/dist/components/FaceMesh/index.d.ts +2 -2
  98. package/dist/components/FaceRetouch/Background.d.ts +3 -1
  99. package/dist/components/FaceRetouch/FaceRetouch.d.ts +5 -0
  100. package/dist/components/FaceRetouch/renderState.d.ts +19 -0
  101. package/dist/components/FaceSwap/FaceMirror.d.ts +46 -0
  102. package/dist/components/FaceSwap/FaceSwap.d.ts +58 -0
  103. package/dist/components/FaceSwap/FaceTextureLayer.d.ts +72 -0
  104. package/dist/components/FaceSwap/faceSwapPlan.d.ts +91 -0
  105. package/dist/components/FaceSwap/index.d.ts +13 -0
  106. package/dist/components/FaceSwap/settings.d.ts +300 -0
  107. package/dist/components/FaceSwap/useFaceTexture.d.ts +35 -0
  108. package/dist/components/FaceSwap/useLiveFace.d.ts +38 -0
  109. package/dist/components/FaceSwap/useLiveFaceTexture.d.ts +31 -0
  110. package/dist/components/FaceWarp3D/FaceWarp3D.d.ts +50 -0
  111. package/dist/components/FaceWarp3D/index.d.ts +2 -3
  112. package/dist/components/Faceless/Faceless.d.ts +51 -0
  113. package/dist/components/Faceless/index.d.ts +2 -0
  114. package/dist/components/GestureListener/index.d.ts +11 -0
  115. package/dist/components/HairLock/HairLock.d.ts +39 -0
  116. package/dist/components/HairLock/index.d.ts +2 -0
  117. package/dist/components/HairLock/lockGeometry.d.ts +15 -0
  118. package/dist/components/HandCutout/index.d.ts +35 -0
  119. package/dist/components/HandInstruction/HandGestureHint.d.ts +70 -0
  120. package/dist/components/HandInstruction/index.d.ts +74 -0
  121. package/dist/components/HandInstruction/useHandGesture.d.ts +22 -0
  122. package/dist/components/HandRig/ForearmOccluder.d.ts +29 -0
  123. package/dist/components/HandRig/HandAttachment.d.ts +34 -0
  124. package/dist/components/HandRig/HandOccluder.d.ts +55 -0
  125. package/dist/components/HandRig/HandTattoo.d.ts +61 -0
  126. package/dist/components/HandRig/WristAttachment.d.ts +34 -0
  127. package/dist/components/HandRig/index.d.ts +101 -0
  128. package/dist/components/HandRig/useArmMask.d.ts +29 -0
  129. package/dist/components/HandRig/wristSolve.d.ts +69 -0
  130. package/dist/components/HandTouch/HandTouch.d.ts +62 -0
  131. package/dist/components/HandTouch/Touchable.d.ts +36 -0
  132. package/dist/components/HandTouch/index.d.ts +2 -0
  133. package/dist/components/HandTracker/index.d.ts +10 -0
  134. package/dist/components/HeadBinding/index.d.ts +14 -0
  135. package/dist/components/HeadOccluder/CanonicalHeadFrame.d.ts +22 -0
  136. package/dist/components/HeadOccluder/Earrings.d.ts +55 -0
  137. package/dist/components/HeadOccluder/HeadAttachment.d.ts +38 -0
  138. package/dist/components/HeadOccluder/NeckOccluder.d.ts +64 -0
  139. package/dist/components/HeadOccluder/earringPlacement.d.ts +31 -0
  140. package/dist/components/HeadOccluder/headAttachmentPoints.d.ts +69 -0
  141. package/dist/components/HeadOccluder/index.d.ts +57 -3
  142. package/dist/components/HeadOccluder/useCanonicalHeadFit.d.ts +36 -0
  143. package/dist/components/HeadOccluder/useLandmarkPoseFit.d.ts +80 -0
  144. package/dist/components/HolisticTracker/index.d.ts +69 -0
  145. package/dist/components/HolisticTracker/settings.d.ts +58 -0
  146. package/dist/components/HolisticTracker/signals.d.ts +49 -0
  147. package/dist/components/Instruction/HintStage.d.ts +29 -0
  148. package/dist/components/Instruction/InstructionCue.d.ts +126 -0
  149. package/dist/components/Instruction/gestureHold.d.ts +20 -0
  150. package/dist/components/Instruction/ghost.d.ts +129 -0
  151. package/dist/components/Instruction/hintBlend.d.ts +19 -0
  152. package/dist/components/Instruction/hintLook.d.ts +81 -0
  153. package/dist/components/Instruction/hintLoop.d.ts +36 -0
  154. package/dist/components/Instruction/index.d.ts +41 -0
  155. package/dist/components/Instruction/useGhostModel.d.ts +33 -0
  156. package/dist/components/Instruction/useInstructionHold.d.ts +72 -0
  157. package/dist/components/IrisEffect/IrisMaterial.d.ts +73 -0
  158. package/dist/components/IrisEffect/index.d.ts +51 -0
  159. package/dist/components/IrisEffect/settings.d.ts +117 -0
  160. package/dist/components/LipEffect/LipEffect.d.ts +27 -1
  161. package/dist/components/LipEffect/LipEffectMaterial.d.ts +95 -7
  162. package/dist/components/LipEffect/LipEffects.d.ts +12 -0
  163. package/dist/components/LipEffect/defaults.d.ts +46 -4
  164. package/dist/components/LipEffect/index.d.ts +11 -3
  165. package/dist/components/LipEffect/lipShading.d.ts +73 -0
  166. package/dist/components/LipEffect/settings.d.ts +375 -0
  167. package/dist/components/LipEffect/shader.d.ts +39 -0
  168. package/dist/components/LipEffect/types.d.ts +128 -9
  169. package/dist/components/LipEffect/useLipDesignTextures.d.ts +17 -0
  170. package/dist/components/LipEffect/uvGuide.d.ts +74 -0
  171. package/dist/components/Makeup/Blush.d.ts +18 -0
  172. package/dist/components/Makeup/Brows.d.ts +20 -0
  173. package/dist/components/Makeup/Contour.d.ts +17 -0
  174. package/dist/components/Makeup/Eyeliner.d.ts +20 -0
  175. package/dist/components/Makeup/Eyeshadow.d.ts +20 -0
  176. package/dist/components/Makeup/Highlighter.d.ts +18 -0
  177. package/dist/components/Makeup/MakeupDesign.d.ts +37 -0
  178. package/dist/components/Makeup/MakeupRegion.d.ts +132 -0
  179. package/dist/components/Makeup/constants.d.ts +44 -0
  180. package/dist/components/Makeup/design.d.ts +106 -0
  181. package/dist/components/Makeup/designSamples.d.ts +42 -0
  182. package/dist/components/Makeup/eyes.d.ts +114 -0
  183. package/dist/components/Makeup/fields.d.ts +10 -0
  184. package/dist/components/Makeup/geometry.d.ts +106 -0
  185. package/dist/components/Makeup/index.d.ts +26 -0
  186. package/dist/components/Makeup/looks.d.ts +28 -0
  187. package/dist/components/Makeup/material.d.ts +239 -0
  188. package/dist/components/Makeup/settings.d.ts +54 -0
  189. package/dist/components/Makeup/shades.d.ts +143 -0
  190. package/dist/components/Makeup/shapes.d.ts +27 -0
  191. package/dist/components/Makeup/skinTone.d.ts +135 -0
  192. package/dist/components/Makeup/types.d.ts +110 -0
  193. package/dist/components/Makeup/useMakeupSkinTone.d.ts +40 -0
  194. package/dist/components/Necklace/Necklace.d.ts +44 -0
  195. package/dist/components/Necklace/index.d.ts +1 -0
  196. package/dist/components/ParticleEmitter/ParticleEmitter.d.ts +69 -0
  197. package/dist/components/ParticleEmitter/index.d.ts +1 -0
  198. package/dist/components/PersonCutout/index.d.ts +50 -0
  199. package/dist/components/PersonCutout/personCutout.d.ts +16 -0
  200. package/dist/components/ScreenImage/components/ScreenImageBody.d.ts +1 -1
  201. package/dist/components/ScreenImage/index.d.ts +3 -1
  202. package/dist/components/ScreenImage/materials/ScreenImageBlendMaterial.d.ts +1 -1
  203. package/dist/components/ScreenImage/materials/ScreenImageMaskMaterial.d.ts +11 -0
  204. package/dist/components/ScreenImage/source.d.ts +6 -0
  205. package/dist/components/ScreenImage/types.d.ts +18 -0
  206. package/dist/components/SegmentationOverlay/SegmentationOverlay.d.ts +37 -0
  207. package/dist/components/SegmentationOverlay/SegmentationOverlayMaterial.d.ts +31 -0
  208. package/dist/components/SegmentationOverlay/index.d.ts +9 -0
  209. package/dist/components/SegmentationOverlay/maskTexture.d.ts +23 -0
  210. package/dist/components/SegmentationOverlay/providers.d.ts +72 -0
  211. package/dist/components/SegmentationOverlay/settings.d.ts +65 -0
  212. package/dist/components/ShoulderOccluder/index.d.ts +43 -0
  213. package/dist/components/ShoulderOccluder/useCanonicalTorsoFit.d.ts +24 -0
  214. package/dist/components/SpringSwing/SpringSwing.d.ts +22 -0
  215. package/dist/components/SpringSwing/index.d.ts +1 -0
  216. package/dist/components/XRProvider/index.d.ts +16 -2
  217. package/dist/components/XRScene/renderOutputTarget.d.ts +12 -0
  218. package/dist/components/XRViewport/hooks/useViewportExternalFaces.d.ts +1 -1
  219. package/dist/components/XRViewport/hooks/useViewportMediaSource.d.ts +1 -1
  220. package/dist/components/XRViewport/hooks/useViewportPipeline.d.ts +1 -1
  221. package/dist/components/index.d.ts +11 -0
  222. package/dist/config/index.d.ts +0 -1
  223. package/dist/constants/index.d.ts +4 -1
  224. package/dist/context-DTxSQvp4.js +13 -0
  225. package/dist/context-hA0Rb2Xa.cjs +1 -0
  226. package/dist/contexts-BH7PdKFS.cjs +1 -0
  227. package/dist/contexts-jak8-tND.js +667 -0
  228. package/dist/coordinates/feed.d.ts +52 -0
  229. package/dist/coordinates/index.d.ts +7 -0
  230. package/dist/coordinates/side.d.ts +40 -0
  231. package/dist/coordinates/spaces.d.ts +49 -0
  232. package/dist/coordinates/viewport.d.ts +22 -0
  233. package/dist/coordinates/world.d.ts +15 -0
  234. package/dist/debug-ui/default-setting.cjs +2 -2
  235. package/dist/debug-ui/face-swap-settings/index.d.ts +22 -0
  236. package/dist/debug-ui/gesture-settings/index.d.ts +14 -0
  237. package/dist/debug-ui/hierarchy-panel/index.d.ts +3 -2
  238. package/dist/debug-ui/holistic-tracker-settings/index.d.ts +16 -0
  239. package/dist/debug-ui/index.d.ts +18 -3
  240. package/dist/debug-ui/iris-effect-settings/index.d.ts +12 -0
  241. package/dist/debug-ui/lip-effect-settings/index.d.ts +15 -0
  242. package/dist/debug-ui/media-source/index.d.ts +1 -1
  243. package/dist/debug-ui/media-source/session.d.ts +30 -2
  244. package/dist/debug-ui/media-source.cjs +1 -1
  245. package/dist/debug-ui/media-source.js +1 -1
  246. package/dist/debug-ui/object-inspector-panel/index.d.ts +3 -2
  247. package/dist/debug-ui/product-hotspots/index.d.ts +25 -0
  248. package/dist/debug-ui/scene-editor/hierarchy-panel.d.ts +3 -1
  249. package/dist/debug-ui/scene-editor/inspector-panel.d.ts +3 -1
  250. package/dist/debug-ui/screen-image-settings/index.d.ts +3 -1
  251. package/dist/debug-ui/screen-text-settings/ScreenTextSettingsPanel.d.ts +1 -1
  252. package/dist/debug-ui/screen-text-settings/types.d.ts +2 -0
  253. package/dist/debug-ui/segmentation-overlay-settings/index.d.ts +12 -0
  254. package/dist/debug-ui/settings-panel/index.d.ts +6 -1
  255. package/dist/debug-ui/shared/debugWindow.d.ts +51 -0
  256. package/dist/debug-ui/xr-diagnostics/index.d.ts +26 -0
  257. package/dist/debug-ui.cjs +3 -3
  258. package/dist/debug-ui.js +2695 -2547
  259. package/dist/detector-K8aej4MB.js +59 -0
  260. package/dist/detector-ijypGtse.cjs +1 -0
  261. package/dist/entries/all.d.ts +3 -1
  262. package/dist/entries/core.d.ts +20 -2
  263. package/dist/entries/face-effects.d.ts +123 -9
  264. package/dist/entries/instructions.d.ts +48 -0
  265. package/dist/entries/internal.d.ts +2 -1
  266. package/dist/entries/low-level.d.ts +49 -3
  267. package/dist/entries/particles.d.ts +11 -0
  268. package/dist/entries/product.d.ts +11 -0
  269. package/dist/entries/tracking.d.ts +60 -2
  270. package/dist/face-atlas/attributes.d.ts +30 -0
  271. package/dist/face-atlas/eyes.d.ts +272 -0
  272. package/dist/face-atlas/faceAtlas.generated.d.ts +46 -0
  273. package/dist/face-atlas/glsl/atlasVertex.d.ts +46 -0
  274. package/dist/face-atlas/glsl/common.d.ts +55 -0
  275. package/dist/face-atlas/glsl/design.d.ts +49 -0
  276. package/dist/face-atlas/glsl/eyes.d.ts +73 -0
  277. package/dist/face-atlas/glsl/finish.d.ts +24 -0
  278. package/dist/face-atlas/glsl/format.d.ts +4 -0
  279. package/dist/face-atlas/glsl/index.d.ts +59 -0
  280. package/dist/face-atlas/glsl/shading.d.ts +15 -0
  281. package/dist/face-atlas/glsl/shapes.d.ts +66 -0
  282. package/dist/face-atlas/glsl/sparkle.d.ts +19 -0
  283. package/dist/face-atlas/glsl/uniforms.d.ts +106 -0
  284. package/dist/face-atlas/guide.d.ts +51 -0
  285. package/dist/face-atlas/index.d.ts +25 -0
  286. package/dist/face-atlas/lead.d.ts +117 -0
  287. package/dist/face-atlas/madeUpCamera.d.ts +125 -0
  288. package/dist/face-atlas/masks.d.ts +53 -0
  289. package/dist/face-atlas/obj.d.ts +69 -0
  290. package/dist/face-atlas/polylines.d.ts +63 -0
  291. package/dist/face-atlas/probe/FaceSkinProbe.d.ts +208 -0
  292. package/dist/face-atlas/probe/__fixtures__/emulate.d.ts +9 -0
  293. package/dist/face-atlas/probe/__fixtures__/face.d.ts +24 -0
  294. package/dist/face-atlas/probe/constants.d.ts +137 -0
  295. package/dist/face-atlas/probe/glsl.d.ts +43 -0
  296. package/dist/face-atlas/probe/lightFit.d.ts +108 -0
  297. package/dist/face-atlas/probe/schedule.d.ts +44 -0
  298. package/dist/face-atlas/probe/selfTest.d.ts +87 -0
  299. package/dist/face-atlas/probe/stats.d.ts +143 -0
  300. package/dist/face-atlas/probe/targets.d.ts +70 -0
  301. package/dist/face-atlas/probe/unwrap.d.ts +76 -0
  302. package/dist/face-atlas/quality.d.ts +28 -0
  303. package/dist/face-atlas/regions.d.ts +31 -0
  304. package/dist/face-atlas/registry.d.ts +252 -0
  305. package/dist/face-atlas/renderState.d.ts +86 -0
  306. package/dist/face-atlas/selfOcclusion.d.ts +62 -0
  307. package/dist/face-atlas/shading.d.ts +406 -0
  308. package/dist/face-atlas/shapes.d.ts +86 -0
  309. package/dist/face-atlas/sides.d.ts +41 -0
  310. package/dist/face-atlas/skinMask.d.ts +35 -0
  311. package/dist/face-atlas/surface.d.ts +155 -0
  312. package/dist/face-atlas/topology.d.ts +44 -0
  313. package/dist/face-character/__fixtures__/faceImageDetections.d.ts +25 -0
  314. package/dist/face-character/__fixtures__/faceNode.d.ts +22 -0
  315. package/dist/face-character/bindFaceModel.d.ts +106 -0
  316. package/dist/face-character/canonicalFace.d.ts +17 -0
  317. package/dist/face-character/canonicalFaceGeometry.d.ts +11 -0
  318. package/dist/face-character/canonicalFacePositions.d.ts +7 -0
  319. package/dist/face-character/driveFaceModel.d.ts +57 -0
  320. package/dist/face-character/expressionOutputs.d.ts +45 -0
  321. package/dist/face-character/faceExpressions.d.ts +104 -0
  322. package/dist/face-character/faceImageLandmarker.d.ts +93 -0
  323. package/dist/face-character/faceMeshBinding.d.ts +62 -0
  324. package/dist/face-character/faceMorph.d.ts +77 -0
  325. package/dist/face-character/faceMorphs.d.ts +46 -0
  326. package/dist/face-character/facePhoto.d.ts +138 -0
  327. package/dist/face-character/facePiercings.d.ts +116 -0
  328. package/dist/face-character/facePin.d.ts +131 -0
  329. package/dist/face-character/faceReprojection.d.ts +273 -0
  330. package/dist/face-character/faceReprojector.d.ts +171 -0
  331. package/dist/face-character/faceRig.d.ts +176 -0
  332. package/dist/face-character/faceSwapPresence.d.ts +85 -0
  333. package/dist/face-character/faceTexture.d.ts +169 -0
  334. package/dist/face-character/faceTextureBaker.d.ts +86 -0
  335. package/dist/face-character/faceTextureGuide.d.ts +106 -0
  336. package/dist/face-character/faceTextureStats.d.ts +298 -0
  337. package/dist/face-character/faceTransfer.d.ts +396 -0
  338. package/dist/face-character/faceTransferGeometry.d.ts +109 -0
  339. package/dist/face-character/faceTransferSelfTest.d.ts +94 -0
  340. package/dist/face-character/faceWarp3D.d.ts +101 -0
  341. package/dist/face-character/faceless.d.ts +79 -0
  342. package/dist/face-character/featureWarp.d.ts +28 -0
  343. package/dist/face-character/liveFaceRegistry.d.ts +370 -0
  344. package/dist/face-character/liveValue.d.ts +12 -0
  345. package/dist/face-character/memo.d.ts +15 -0
  346. package/dist/face-effects.cjs +2324 -1
  347. package/dist/face-effects.js +14208 -2268
  348. package/dist/face-expression/index.d.ts +182 -0
  349. package/dist/face-info/landmarks.d.ts +17 -3
  350. package/dist/face-info/types.d.ts +20 -3
  351. package/dist/gestures/definitions.d.ts +98 -0
  352. package/dist/gestures/detector.d.ts +87 -0
  353. package/dist/gestures/index.d.ts +8 -0
  354. package/dist/gestures/measures.d.ts +114 -0
  355. package/dist/gestures/settings.d.ts +49 -0
  356. package/dist/getFaceInfo-B1otSDMX.cjs +1 -0
  357. package/dist/getFaceInfo-Cu4xDWiL.js +62 -0
  358. package/dist/hand/armFit.d.ts +46 -0
  359. package/dist/hand/armMask.d.ts +178 -0
  360. package/dist/hand/handCutout.d.ts +23 -0
  361. package/dist/hand/handCutoutRegistry.d.ts +7 -0
  362. package/dist/hand/handGestures.d.ts +524 -0
  363. package/dist/hand/handPose.d.ts +98 -0
  364. package/dist/hand/handRigSolver.d.ts +159 -0
  365. package/dist/hand/handTattoo.d.ts +81 -0
  366. package/dist/hand/handTouch.d.ts +240 -0
  367. package/dist/hand/wrist.d.ts +44 -0
  368. package/dist/hand/wristFilter.d.ts +44 -0
  369. package/dist/hooks/selectors.d.ts +76 -1
  370. package/dist/hooks/useCalibrationFaceTracker.d.ts +1 -1
  371. package/dist/hooks/useFaceInfo.d.ts +13 -1
  372. package/dist/hooks/useFaceInfos.d.ts +1 -1
  373. package/dist/hooks/useFaceModelAcquisition.d.ts +38 -0
  374. package/dist/hooks/useGesture.d.ts +32 -0
  375. package/dist/hooks/useIrisTracking.d.ts +45 -0
  376. package/dist/hooks/useTrackerContext.d.ts +6 -0
  377. package/dist/hooks/useXRDiagnostics.d.ts +81 -0
  378. package/dist/hooks/useXRModel.d.ts +7 -0
  379. package/dist/hooks/useXRSession/facade.d.ts +42 -2
  380. package/dist/hooks/useXRSession/index.d.ts +2 -2
  381. package/dist/hooks/useXRSession/reason.d.ts +3 -1
  382. package/dist/hooks/useXRSession/registry.d.ts +14 -0
  383. package/dist/hooks/useXRSession/store.d.ts +52 -3
  384. package/dist/index-B1_TzJaI.js +1104 -0
  385. package/dist/index-BavF06C6.js +190 -0
  386. package/dist/index-BfFmpddl.cjs +21 -0
  387. package/dist/index-BuBzneeW.cjs +46 -0
  388. package/dist/index-CGsQWodV.cjs +1 -0
  389. package/dist/index-CIe7eCMH.js +3200 -0
  390. package/dist/index-CfSF8LXa.cjs +1 -0
  391. package/dist/index-D5GTzOzD.cjs +1 -0
  392. package/dist/index-DBhQzvVa.js +314 -0
  393. package/dist/index-DE17y0ZI.cjs +1 -0
  394. package/dist/index-JII7huPk.js +442 -0
  395. package/dist/index-tpCr9CLj.cjs +1 -0
  396. package/dist/index-w1S7fI2B.js +1432 -0
  397. package/dist/index-zGaqrz_K.js +188 -0
  398. package/dist/instructions.cjs +30 -0
  399. package/dist/instructions.js +1507 -0
  400. package/dist/{internal-Dmk1cTXq.js → internal-B90P-clC.js} +138 -119
  401. package/dist/internal-Cjinca64.cjs +1 -0
  402. package/dist/internal.cjs +1 -1
  403. package/dist/internal.js +15 -10
  404. package/dist/iris/compute.d.ts +27 -0
  405. package/dist/iris/index.d.ts +4 -0
  406. package/dist/iris/lead.d.ts +19 -0
  407. package/dist/iris/types.d.ts +89 -0
  408. package/dist/landmarkMask-BFDyBnKM.js +224 -0
  409. package/dist/landmarkMask-u7es2k4X.cjs +1 -0
  410. package/dist/landmarks-BlUqf5MZ.cjs +1 -0
  411. package/dist/landmarks-bftdwq6Z.js +76 -0
  412. package/dist/loaders-BGAUACsd.js +363 -0
  413. package/dist/loaders-BJ1_QCHt.cjs +1 -0
  414. package/dist/low-level.cjs +1 -1
  415. package/dist/low-level.js +1190 -675
  416. package/dist/main.cjs +1 -1
  417. package/dist/main.js +1190 -452
  418. package/dist/models/Base/index.d.ts +49 -0
  419. package/dist/models/Body/index.d.ts +3 -1
  420. package/dist/models/Face/constants.d.ts +8 -0
  421. package/dist/models/Face/index.d.ts +4 -12
  422. package/dist/models/Face/rotation.d.ts +18 -3
  423. package/dist/models/Hand/GestureTracking.d.ts +1 -1
  424. package/dist/models/Hand/HandTracking.d.ts +17 -1
  425. package/dist/models/Holistic/index.d.ts +49 -0
  426. package/dist/models/Holistic/result.d.ts +68 -0
  427. package/dist/models/Segmentation/index.d.ts +2 -0
  428. package/dist/models/SemanticSegmentation/index.d.ts +31 -0
  429. package/dist/models/SemanticSegmentation/presets.d.ts +28 -0
  430. package/dist/models/index.d.ts +2 -0
  431. package/dist/models/nodeSource.d.ts +9 -0
  432. package/dist/particles/emission.d.ts +24 -0
  433. package/dist/particles/eyes.d.ts +24 -0
  434. package/dist/particles/glsl.d.ts +14 -0
  435. package/dist/particles/index.d.ts +10 -0
  436. package/dist/particles/motion.d.ts +42 -0
  437. package/dist/particles/presets.d.ts +12 -0
  438. package/dist/particles/ring.d.ts +58 -0
  439. package/dist/particles/selfTest.d.ts +53 -0
  440. package/dist/particles/settings.d.ts +127 -0
  441. package/dist/particles/shapes.d.ts +29 -0
  442. package/dist/particles/spawner.d.ts +60 -0
  443. package/dist/particles/system.d.ts +64 -0
  444. package/dist/particles.cjs +122 -0
  445. package/dist/particles.js +774 -0
  446. package/dist/product/ProductDimensions.d.ts +16 -0
  447. package/dist/product/ProductHotspot.d.ts +16 -0
  448. package/dist/product/ProductViewer.d.ts +9 -0
  449. package/dist/product/details.d.ts +53 -0
  450. package/dist/product/index.d.ts +14 -0
  451. package/dist/product/loadModelViewer.d.ts +4 -0
  452. package/dist/product/types.d.ts +71 -0
  453. package/dist/product/useProductAr.d.ts +37 -0
  454. package/dist/product/useProductDetails.d.ts +60 -0
  455. package/dist/product.cjs +1 -0
  456. package/dist/product.js +414 -0
  457. package/dist/providers-C8rE26Uf.js +366 -0
  458. package/dist/providers-DHsrhDI2.cjs +62 -0
  459. package/dist/quality/XRQualityController.d.ts +25 -0
  460. package/dist/quality/controller.d.ts +33 -0
  461. package/dist/quality/index.d.ts +6 -0
  462. package/dist/quality/types.d.ts +100 -0
  463. package/dist/quality/useXRQuality.d.ts +28 -0
  464. package/dist/render/renderPasses.d.ts +8 -0
  465. package/dist/render/sceneBeforeRender.d.ts +12 -0
  466. package/dist/{renderGroups-KZk6eRiY.js → renderGroups-B38pUaX2.js} +1 -1
  467. package/dist/{renderGroups-80H3DpTl.cjs → renderGroups-Cb_4Ar1Q.cjs} +1 -1
  468. package/dist/renderPasses-B6l8IpJv.js +1290 -0
  469. package/dist/renderPasses-dqmkft4P.cjs +158 -0
  470. package/dist/renderState-CJNmj5jz.js +39 -0
  471. package/dist/renderState-apSfg4eR.cjs +1 -0
  472. package/dist/scene-object.cjs +1 -1
  473. package/dist/scene-object.js +2 -2
  474. package/dist/segmentation-Cb3ouK6Z.js +1758 -0
  475. package/dist/segmentation-D9pYO6aR.cjs +1 -0
  476. package/dist/segmentation2d/faceMemory.d.ts +28 -0
  477. package/dist/segmentation2d/faceRegions.d.ts +24 -0
  478. package/dist/segmentation2d/index.d.ts +9 -0
  479. package/dist/segmentation2d/maskUv.d.ts +23 -0
  480. package/dist/segmentation2d/rasterize.d.ts +14 -0
  481. package/dist/segmentation2d/types.d.ts +52 -0
  482. package/dist/select-Ck5LGz-J.cjs +1 -0
  483. package/dist/select-pYRo_win.js +233 -0
  484. package/dist/selectors-C4X71aoD.cjs +1 -0
  485. package/dist/selectors-DmNaKIwE.js +196 -0
  486. package/dist/session-BrH8G7iJ.cjs +31 -0
  487. package/dist/session-DgA_z6O1.js +418 -0
  488. package/dist/settings-BJ7FMBsO.js +111 -0
  489. package/dist/settings-C63FMBlF.cjs +1 -0
  490. package/dist/similarityFit-BFqHND2e.cjs +1 -0
  491. package/dist/similarityFit-Bbz-R8AY.js +91 -0
  492. package/dist/spring/index.d.ts +2 -0
  493. package/dist/spring/spring.d.ts +69 -0
  494. package/dist/spring/swing.d.ts +54 -0
  495. package/dist/subjects/index.d.ts +2 -0
  496. package/dist/subjects/select.d.ts +62 -0
  497. package/dist/subjects/types.d.ts +55 -0
  498. package/dist/tracking-config/apply.d.ts +57 -0
  499. package/dist/tracking-config/index.d.ts +7 -0
  500. package/dist/tracking-config/resolve.d.ts +25 -0
  501. package/dist/tracking-config/storage.d.ts +8 -0
  502. package/dist/tracking-config/types.d.ts +106 -0
  503. package/dist/tracking-config/useXRTrackingConfig.d.ts +38 -0
  504. package/dist/tracking.cjs +10 -1
  505. package/dist/tracking.js +1326 -506
  506. package/dist/trigger-D0Pm9noT.cjs +49 -0
  507. package/dist/trigger-IQeys0oS.js +2128 -0
  508. package/dist/types/compositor.d.ts +21 -0
  509. package/dist/types/face.d.ts +20 -1
  510. package/dist/types/hand-tracking.d.ts +9 -0
  511. package/dist/types/holistic.d.ts +121 -0
  512. package/dist/types/index.d.ts +1 -0
  513. package/dist/types/model.d.ts +22 -2
  514. package/dist/types/nodes.d.ts +47 -3
  515. package/dist/types/segmentation.d.ts +24 -0
  516. package/dist/types/session.d.ts +41 -3
  517. package/dist/updateThrottle-BseecYag.js +4 -0
  518. package/dist/updateThrottle-Of5Y4SVa.cjs +1 -0
  519. package/dist/useFaceInfo-BHDNCvsJ.cjs +1 -0
  520. package/dist/useFaceInfo-J4x7LsqL.js +76 -0
  521. package/dist/useFaceResultReader-BvEo5REG.js +61 -0
  522. package/dist/useFaceResultReader-DuaL1KJG.cjs +1 -0
  523. package/dist/useInstructionHold-DOu-RpCM.js +53 -0
  524. package/dist/useInstructionHold-DwJY1Alr.cjs +1 -0
  525. package/dist/useLandmarkPoseFit-Bg-h9BPb.cjs +1 -0
  526. package/dist/useLandmarkPoseFit-Bmb3h6Mw.js +87 -0
  527. package/dist/useXRCapabilities-Cr3RzuAW.cjs +1 -0
  528. package/dist/useXRCapabilities-Cxmlmpbd.js +30 -0
  529. package/dist/utils/canonicalRigidLandmarks.d.ts +8 -0
  530. package/dist/utils/fns.d.ts +6 -3
  531. package/dist/utils/headOccluderFit.d.ts +42 -0
  532. package/dist/utils/integrity.d.ts +21 -1
  533. package/dist/utils/resolveNumFaces.d.ts +13 -0
  534. package/dist/utils/shoulderOccluderFit.d.ts +38 -0
  535. package/dist/utils/similarityFit.d.ts +23 -0
  536. package/dist/utils/updateThrottle.d.ts +2 -0
  537. package/dist/utils/useStableUniforms.d.ts +18 -0
  538. package/dist/uv-BMFt19bg.cjs +1 -0
  539. package/dist/{index-ByoNj0QP.js → uv-DJU_XfmN.js} +15 -247
  540. package/docs/SDK_DOCUMENTATION.md +1 -2
  541. package/docs/api/adaptive-quality.mdx +104 -0
  542. package/docs/api/asset-lifecycle.mdx +78 -0
  543. package/docs/api/body-instructions.mdx +285 -0
  544. package/docs/api/body-triggers.mdx +234 -0
  545. package/docs/api/camera-permission.mdx +142 -0
  546. package/docs/api/coordinate-spaces.mdx +168 -0
  547. package/docs/api/cross-camera.mdx +89 -0
  548. package/docs/api/debug-ui-scene-editor.mdx +23 -2
  549. package/docs/api/diagnostics-calibration.mdx +97 -0
  550. package/docs/api/external-face-mesh.mdx +231 -0
  551. package/docs/api/face-actions.mdx +20 -16
  552. package/docs/api/face-attribute-expression.mdx +1 -1
  553. package/docs/api/face-binding-anchors.mdx +4 -2
  554. package/docs/api/face-character.mdx +157 -0
  555. package/docs/api/face-effects.mdx +9 -0
  556. package/docs/api/face-expression-controller.mdx +153 -0
  557. package/docs/api/face-info.mdx +17 -11
  558. package/docs/api/face-inset.mdx +204 -0
  559. package/docs/api/face-instructions.mdx +183 -0
  560. package/docs/api/face-liquify.mdx +196 -0
  561. package/docs/api/face-mesh.mdx +8 -9
  562. package/docs/api/face-morph.mdx +117 -0
  563. package/docs/api/face-painting.mdx +7 -0
  564. package/docs/api/face-reprojection.mdx +154 -0
  565. package/docs/api/face-retouching.mdx +18 -10
  566. package/docs/api/face-swap.mdx +350 -0
  567. package/docs/api/face-warp-3d.mdx +166 -0
  568. package/docs/api/faceless.mdx +143 -0
  569. package/docs/api/gestures.mdx +209 -0
  570. package/docs/api/hair.mdx +97 -0
  571. package/docs/api/hand-instructions.mdx +222 -0
  572. package/docs/api/hand-rig.mdx +535 -0
  573. package/docs/api/hand-touch.mdx +162 -0
  574. package/docs/api/head-occluder.mdx +563 -0
  575. package/docs/api/holistic-tracker.mdx +164 -0
  576. package/docs/api/instructions.mdx +323 -0
  577. package/docs/api/iris-tracking.mdx +247 -0
  578. package/docs/api/made-up-camera.mdx +131 -0
  579. package/docs/api/makeup-skin-tone.mdx +135 -0
  580. package/docs/api/makeup.mdx +353 -0
  581. package/docs/api/multi-subject.mdx +98 -0
  582. package/docs/api/particles.mdx +155 -0
  583. package/docs/api/person-cutout.mdx +136 -0
  584. package/docs/api/pin-to-face-mesh.mdx +274 -0
  585. package/docs/api/product-ar.mdx +114 -0
  586. package/docs/api/product-details.mdx +78 -0
  587. package/docs/api/screen-space-coordinates.mdx +4 -1
  588. package/docs/api/segmentation-overlay.mdx +301 -0
  589. package/docs/api/session-lifecycle.mdx +136 -0
  590. package/docs/api/trackers.mdx +5 -0
  591. package/docs/api/tracking-config.mdx +108 -0
  592. package/docs/docs.json +51 -1
  593. package/docs/examples/lip-shaders.mdx +273 -0
  594. package/docs/guides/face-atlas-template.svg +1 -0
  595. package/docs/guides/face-atlas-textures.mdx +186 -0
  596. package/docs/guides/face-texture-template.svg +1 -0
  597. package/docs/guides/harness-debug-ui.mdx +4 -4
  598. package/docs/guides/lip-effect-textures.mdx +368 -0
  599. package/docs/guides/lip-uv-template.png +0 -0
  600. package/docs/guides/lip-uv-template.svg +1 -0
  601. package/docs/guides/makeup-design-textures.mdx +109 -0
  602. package/docs/introduction.mdx +1 -2
  603. package/package.json +23 -1
  604. package/dist/DebuggerUI-B6bP6P9r.cjs +0 -1
  605. package/dist/DebuggerUI-BjOMr8q_.js +0 -269
  606. package/dist/FaceMeshRenderer-C5l6VLdO.cjs +0 -155
  607. package/dist/FaceMeshRenderer-wjAHrJzP.js +0 -1270
  608. package/dist/FaceRetouch-BkJzoA79.cjs +0 -134
  609. package/dist/FaceRetouch-DwbKQJAN.js +0 -551
  610. package/dist/components/FaceWarp3D/FaceWarp3DHead.d.ts +0 -15
  611. package/dist/components/FaceWarp3D/defaults.d.ts +0 -37
  612. package/dist/components/FaceWarp3D/warp.d.ts +0 -13
  613. package/dist/contexts-ByhzppYl.js +0 -663
  614. package/dist/contexts-Dr62It_K.cjs +0 -1
  615. package/dist/debug-ui/face-warp-3d/index.d.ts +0 -6
  616. package/dist/getFaceInfo-C4QpCQIY.js +0 -118
  617. package/dist/getFaceInfo-fA1bFBub.cjs +0 -1
  618. package/dist/index-9dlAQAhy.js +0 -1462
  619. package/dist/index-BjmTe9eM.cjs +0 -1
  620. package/dist/index-BpEf2BBb.cjs +0 -1
  621. package/dist/index-CyUUurQT.cjs +0 -1
  622. package/dist/index-DCiMbxC3.cjs +0 -1
  623. package/dist/index-DXT3WccE.js +0 -2089
  624. package/dist/index-DpI-qo5X.cjs +0 -17
  625. package/dist/index-DyVF4vEW.js +0 -111
  626. package/dist/index-VJ0SJwmG.js +0 -214
  627. package/dist/internal-Cq-TEQ5Y.cjs +0 -1
  628. package/dist/renderLayers-lDtL0_43.cjs +0 -1
  629. package/dist/renderLayers-zrK2pv5O.js +0 -13
  630. package/dist/renderPasses-BOoBSr8z.cjs +0 -21
  631. package/dist/renderPasses-BcquyVtu.js +0 -1500
  632. package/dist/selectors-B8H97CKA.js +0 -59
  633. package/dist/selectors-CZLKT2Iv.cjs +0 -1
  634. package/dist/session-CpkiK5YA.cjs +0 -31
  635. package/dist/session-DLFN_VII.js +0 -363
  636. package/dist/useFaceInfo-BJ8-_MOs.cjs +0 -1
  637. package/dist/useFaceInfo-Dk426LTu.js +0 -62
  638. package/dist/useFaceResults-CtetsO9M.js +0 -19
  639. package/dist/useFaceResults-wBJF3zyp.cjs +0 -1
@@ -0,0 +1,6 @@
1
+ export { BODY_MOVE_VIEW_LIMITS, armInView, createBodyMoveFrame, sideJoint } from './frame';
2
+ export type { BodyMoveFrame, BodyMoveJointName, BodyMoveViewLimits, CreateBodyMoveFrameOptions, } from './frame';
3
+ export { BODY_MOVES, BODY_MOVE_LIMITS, BODY_MOVE_NAMES, TimedSeries, armExtension, defineBodyMove, resolveBodyMove, resolveBodyMoveLimits, } from './moves';
4
+ export type { AnyBodyMoveDefinition, BodyMoveContext, BodyMoveDefinition, BodyMoveLimits, BodyMoveName, BodyMoveRef, BodyMoveSample, BodyMoveSide, } from './moves';
5
+ export { BODY_POSE_TRIGGER_DEFAULTS, bodyTriggerStatesEqual, createBodyTrigger, resolveBodyTriggerOptions, setBodyTriggerOptions, snapshotBodyTriggerState, stepBodyTrigger, } from './trigger';
6
+ export type { BodyTriggerMachine, BodyTriggerOptions, BodyTriggerState, BodyTriggerTarget, } from './trigger';
@@ -0,0 +1,235 @@
1
+ import { BodySide } from '../body-pose';
2
+ import { GestureDetectorOptions } from '../gestures/detector';
3
+ import { OscillationTracker } from '../gestures/measures';
4
+ import { BodyMoveFrame } from './frame';
5
+ /**
6
+ * The move detectors' default thresholds. Arm moves measure in shoulder
7
+ * widths (like BodyInstruction's classifier); leg moves in torso lengths or
8
+ * against the standing shin, vertical against vertical, so distance from the
9
+ * camera and the frame's aspect ratio cancel. Read-only: tune per trigger
10
+ * with `<BodyTrigger limits={…}>`.
11
+ */
12
+ export declare const BODY_MOVE_LIMITS: Readonly<{
13
+ /** `jump`: shoulders, hips and both ankles rise at least this far above standing (torso lengths) … */
14
+ jumpRise: 0.12;
15
+ /** … and it lands when both ankles are back within this of the ground. */
16
+ jumpLand: 0.06;
17
+ /** Longer in the air than this is not a jump (the camera moved): the move ends and re-levels. */
18
+ jumpMaxAirMs: 900;
19
+ /** The standing level follows the body with this time constant (ms), so slow drift never jumps. */
20
+ jumpLevelMs: 300;
21
+ /**
22
+ * `squat`: hips down when the thigh's height falls to this × the shin's
23
+ * (standing ≈ 1, thighs level ≈ 0), on the straighter leg …
24
+ */
25
+ squatDown: 0.6;
26
+ /** … and back up (the rep ends, the next can start) above this. */
27
+ squatUp: 0.85;
28
+ /** `wave`: the forearm points up (wrist above the elbow by at least this, shoulder widths) … */
29
+ waveForearmUp: 0.25;
30
+ /** … and swings side to side by at least this between turning points … */
31
+ waveAmplitude: 0.3;
32
+ /** … this many turning points … */
33
+ waveReversals: 3;
34
+ /** … within this long (ms). */
35
+ waveWindowMs: 1500;
36
+ /** `clap`: the hands were at least this far apart (shoulder widths) … */
37
+ clapApart: 0.6;
38
+ /** … then meet within this … */
39
+ clapTogether: 0.3;
40
+ /** … in at most this long (ms). */
41
+ clapWithinMs: 250;
42
+ /** The clap ends when the hands part past this. */
43
+ clapRelease: 0.45;
44
+ /**
45
+ * `punch`: the arm was bent (shoulder → wrist ÷ upper arm + forearm, 1 =
46
+ * straight, read in 3D) below this …
47
+ */
48
+ punchBent: 0.75;
49
+ /** … then straightens past this … */
50
+ punchStraight: 0.93;
51
+ /** … within this long (ms) … */
52
+ punchWithinMs: 200;
53
+ /** … with the wrist within this of shoulder height (shoulder widths): not a raise or a drop. */
54
+ punchBand: 0.9;
55
+ /** `armFlap`: both wrists drop at least this far (shoulder widths) … */
56
+ flapStroke: 0.7;
57
+ /** … within this long (ms) … */
58
+ flapWithinMs: 500;
59
+ /** … from a top no lower than this relative to the shoulders (arms up like wings, not lowered from the front) … */
60
+ flapTop: -0.4;
61
+ /** … with both wrists out past their shoulders by at least this. */
62
+ flapOut: 0.3;
63
+ /** `kick`: the foot rises at least this far above the standing foot (torso lengths) … */
64
+ kickLift: 0.35;
65
+ /** … the knee at least this far above the standing knee … */
66
+ kickKnee: 0.15;
67
+ /**
68
+ * … and the lower leg swings up: the foot hangs below its knee by at most
69
+ * this × the standing shin (a march's foot hangs ≈ 1 below the knee) …
70
+ */
71
+ kickShin: 0.6;
72
+ /** … in at most this long from the foot leaving the ground (ms). */
73
+ kickWithinMs: 600;
74
+ /** `stepLeft` / `stepRight`: hips and feet move sideways at least this far (shoulder widths) … */
75
+ stepShift: 0.5;
76
+ /** … within this long (ms). */
77
+ stepWithinMs: 700;
78
+ /** `march`: a knee or foot rises at least this far above the other one (torso lengths) … */
79
+ marchLift: 0.2;
80
+ /** … and comes back down below this … */
81
+ marchDrop: 0.08;
82
+ /** … alternating: the other leg lifted at most this long before (ms). */
83
+ marchWithinMs: 1200;
84
+ }>;
85
+ /** The move thresholds (see `BODY_MOVE_LIMITS` for each one's meaning). */
86
+ export type BodyMoveLimits = Record<keyof typeof BODY_MOVE_LIMITS, number>;
87
+ /** Which limb a sided move (`wave`, `punch`, `kick`) watches. */
88
+ export type BodyMoveSide = BodySide | "either";
89
+ /** One measured sample: how much of the move is happening (0..1) and, for a sided move, which side. */
90
+ export type BodyMoveSample = {
91
+ value: number;
92
+ side?: BodySide | null;
93
+ };
94
+ /** What a move's `measure` gets besides the frame. */
95
+ export type BodyMoveContext = {
96
+ /** The `side` option (`"either"` when unset). */
97
+ side: BodyMoveSide;
98
+ /** `BODY_MOVE_LIMITS` with the trigger's overrides. */
99
+ limits: BodyMoveLimits;
100
+ };
101
+ /**
102
+ * A move: what it needs in view, how it turns successive frames into a
103
+ * `{ value, side }` sample (`value` ≥ 0.5 while the move is happening, for
104
+ * the default thresholds), and its lifecycle defaults. `measure` runs once
105
+ * per new tracker sample of a body in view, with per-trigger `memory` that is
106
+ * recreated whenever the body is lost or leaves view. Make your own with
107
+ * `defineBodyMove`; define it once (module scope), not per render.
108
+ */
109
+ export type BodyMoveDefinition<M = unknown> = {
110
+ name: string;
111
+ /** Short copy ("Jump"). */
112
+ label: string;
113
+ description: string;
114
+ /** `"full"`: needs the whole body (hips, knees, ankles) in view; `"upper"`: shoulders and arms. */
115
+ view: "upper" | "full";
116
+ /** The move reads a limb on one side (`wave`, `punch`, `kick`): the `side` option applies. */
117
+ sided?: boolean;
118
+ /** The `BODY_MOVE_LIMITS` keys it reads (for docs and tuning panels). */
119
+ limitKeys?: readonly (keyof BodyMoveLimits)[];
120
+ /** Lifecycle overrides of the gesture engine defaults (`DEFAULT_GESTURE_DETECTOR_OPTIONS`). */
121
+ defaults?: Partial<GestureDetectorOptions>;
122
+ createMemory: () => M;
123
+ /** Whether the body parts it needs are in view. Default: `view` (`frame.fullInView` or `frame.upperInView`). */
124
+ inView?: (frame: BodyMoveFrame, context: BodyMoveContext) => boolean;
125
+ measure: (frame: BodyMoveFrame, memory: M, nowMs: number, context: BodyMoveContext) => BodyMoveSample;
126
+ };
127
+ /** Checks and returns your own move (same contract as the built-ins). Pass it as `move`. */
128
+ export declare const defineBodyMove: <M>(definition: BodyMoveDefinition<M>) => BodyMoveDefinition<M>;
129
+ /** Time-stamped samples in a fixed ring (no per-frame allocation): windowed min / max. */
130
+ export declare class TimedSeries {
131
+ private readonly capacity;
132
+ private readonly times;
133
+ private readonly values;
134
+ private start;
135
+ private count;
136
+ constructor(capacity?: number);
137
+ clear(): void;
138
+ push(timeMs: number, value: number): void;
139
+ /** Largest value at or after `sinceMs` (−Infinity when none). */
140
+ max(sinceMs: number): number;
141
+ /** Smallest value at or after `sinceMs` (Infinity when none). */
142
+ min(sinceMs: number): number;
143
+ }
144
+ type JumpMemory = {
145
+ level: {
146
+ shoulders: number;
147
+ hips: number;
148
+ left: number;
149
+ right: number;
150
+ } | null;
151
+ lastMs: number;
152
+ airborne: boolean;
153
+ airSinceMs: number;
154
+ };
155
+ type SquatMemory = {
156
+ ready: boolean;
157
+ down: boolean;
158
+ };
159
+ type WaveMemory = {
160
+ /** The limits the trackers were built with. */
161
+ built: {
162
+ amplitude: number;
163
+ reversals: number;
164
+ windowMs: number;
165
+ };
166
+ left: OscillationTracker;
167
+ right: OscillationTracker;
168
+ sample: BodyMoveSample;
169
+ };
170
+ type ClapMemory = {
171
+ apartAtMs: number;
172
+ clapped: boolean;
173
+ };
174
+ type PunchArm = {
175
+ bentAtMs: number;
176
+ punching: boolean;
177
+ };
178
+ type PunchMemory = Record<BodySide, PunchArm>;
179
+ /**
180
+ * Arm straightness: shoulder → wrist over upper arm + forearm, in 3D
181
+ * (MediaPipe's relative depth, ×2 into tracker-x units). 1 = straight; a
182
+ * straight arm reads 1 from any view, even pointing at the camera. `null`
183
+ * when the arm is too short to read.
184
+ */
185
+ export declare const armExtension: (frame: BodyMoveFrame, side: BodySide) => number | null;
186
+ type FlapMemory = {
187
+ left: TimedSeries;
188
+ right: TimedSeries;
189
+ flapping: boolean;
190
+ };
191
+ type KickLeg = {
192
+ downAtMs: number;
193
+ kicking: boolean;
194
+ };
195
+ type KickMemory = Record<BodySide, KickLeg>;
196
+ type StepMemory = {
197
+ hips: TimedSeries;
198
+ feet: TimedSeries;
199
+ stepping: boolean;
200
+ peak: number;
201
+ peakAtMs: number;
202
+ };
203
+ type MarchMemory = {
204
+ up: Record<BodySide, boolean>;
205
+ liftedAtMs: Record<BodySide, number>;
206
+ stepping: BodySide | null;
207
+ };
208
+ /**
209
+ * The built-in moves. Arm moves need the shoulders and the arm(s) they read in
210
+ * view; leg moves (`view: "full"`) need shoulders, hips, knees and ankles in
211
+ * view and inside the frame, and never fire while they are not. Left / right
212
+ * are the person's own sides.
213
+ */
214
+ export declare const BODY_MOVES: {
215
+ readonly jump: BodyMoveDefinition<JumpMemory>;
216
+ readonly squat: BodyMoveDefinition<SquatMemory>;
217
+ readonly wave: BodyMoveDefinition<WaveMemory>;
218
+ readonly clap: BodyMoveDefinition<ClapMemory>;
219
+ readonly punch: BodyMoveDefinition<PunchMemory>;
220
+ readonly armFlap: BodyMoveDefinition<FlapMemory>;
221
+ readonly kick: BodyMoveDefinition<KickMemory>;
222
+ readonly stepLeft: BodyMoveDefinition<StepMemory>;
223
+ readonly stepRight: BodyMoveDefinition<StepMemory>;
224
+ readonly march: BodyMoveDefinition<MarchMemory>;
225
+ };
226
+ export type BodyMoveName = keyof typeof BODY_MOVES;
227
+ export declare const BODY_MOVE_NAMES: BodyMoveName[];
228
+ /** Any move definition (memory type erased). */
229
+ export type AnyBodyMoveDefinition = BodyMoveDefinition<any>;
230
+ /** A built-in move name or your own `defineBodyMove` definition. */
231
+ export type BodyMoveRef = BodyMoveName | AnyBodyMoveDefinition;
232
+ export declare const resolveBodyMove: (move: BodyMoveRef) => AnyBodyMoveDefinition;
233
+ /** `BODY_MOVE_LIMITS` with overrides (unknown keys are ignored by the moves). */
234
+ export declare const resolveBodyMoveLimits: (overrides?: Partial<BodyMoveLimits>) => BodyMoveLimits;
235
+ export {};
@@ -0,0 +1,75 @@
1
+ import { BodyPoseSpec, BodySide } from '../body-pose';
2
+ import { GestureDetectorOptions, GestureDetectorState, GestureState } from '../gestures/detector';
3
+ import { BodyMoveFrame } from './frame';
4
+ import { AnyBodyMoveDefinition, BodyMoveContext, BodyMoveLimits, BodyMoveRef, BodyMoveSide } from './moves';
5
+ /** What a body trigger fires on: a held pose or a move over time (exactly one). */
6
+ export type BodyTriggerTarget = {
7
+ /** A held pose: a `BODY_POSES` name (`"tPose"`, `"hooray"` …), a rule, a match function or a `defineBodyPose` definition. */
8
+ pose: BodyPoseSpec;
9
+ move?: undefined;
10
+ } | {
11
+ /** A move over time: a `BODY_MOVES` name (`"jump"`, `"wave"` …) or a `defineBodyMove` definition. */
12
+ move: BodyMoveRef;
13
+ pose?: undefined;
14
+ };
15
+ /** Tuning shared by poses and moves: the gesture engine's options plus the move ones. */
16
+ export type BodyTriggerOptions = Partial<GestureDetectorOptions> & {
17
+ /** Sided moves (`wave`, `punch`, `kick`): which of the person's limbs to watch. Default `"either"`. */
18
+ side?: BodyMoveSide;
19
+ /** Move thresholds to override (see `BODY_MOVE_LIMITS`). */
20
+ limits?: Partial<BodyMoveLimits>;
21
+ };
22
+ /**
23
+ * Lifecycle defaults for a pose: the match is smoothed over ~80 ms, so it
24
+ * begins after ~0.2 s held and a one-frame flicker neither ends nor restarts it.
25
+ */
26
+ export declare const BODY_POSE_TRIGGER_DEFAULTS: Partial<GestureDetectorOptions>;
27
+ /** A body trigger's state: the gesture engine's lifecycle plus what the body trigger knows. */
28
+ export type BodyTriggerState = GestureState & {
29
+ kind: "pose" | "move";
30
+ /** What it needs in view: the upper body, or the whole body (hips, knees, ankles). */
31
+ view: "upper" | "full";
32
+ /**
33
+ * Whether what it needs is in view now. A `view: "full"` trigger with
34
+ * `inView: false` cannot fire: ask the person to step back so their whole
35
+ * body shows.
36
+ */
37
+ inView: boolean;
38
+ /** The person's own side behind the current (or last) begin: the limb of a sided move, a step's direction; `null` for poses. */
39
+ side: BodySide | null;
40
+ };
41
+ /** The runner's mutable state (`stepBodyTrigger` advances it). */
42
+ export type BodyTriggerMachine = BodyTriggerState & {
43
+ pose: BodyPoseSpec | null;
44
+ move: AnyBodyMoveDefinition | null;
45
+ memory: unknown;
46
+ memoryUsed: boolean;
47
+ detector: GestureDetectorState;
48
+ options: GestureDetectorOptions;
49
+ context: BodyMoveContext;
50
+ sample: {
51
+ value: number;
52
+ confidence: number;
53
+ } | null;
54
+ sampleSide: BodySide | null;
55
+ lastSampleMs: number | null;
56
+ };
57
+ /** The lifecycle options a target resolves to (its own defaults, then the overrides). */
58
+ export declare const resolveBodyTriggerOptions: (target: BodyTriggerTarget, overrides?: Partial<GestureDetectorOptions>) => GestureDetectorOptions;
59
+ /** A fresh runner for one pose or move. Pure; drive it with `stepBodyTrigger`. */
60
+ export declare const createBodyTrigger: (target: BodyTriggerTarget, options?: BodyTriggerOptions) => BodyTriggerMachine;
61
+ /** Retune a running trigger (thresholds, side, limits) without restarting it. */
62
+ export declare const setBodyTriggerOptions: (machine: BodyTriggerMachine, target: BodyTriggerTarget, options?: BodyTriggerOptions) => void;
63
+ /**
64
+ * Advance a body trigger by one rendered frame. `frame` is the analysed body
65
+ * (`createBodyMoveFrame`), `null` when no body is tracked. `fresh` says the
66
+ * frame is a new tracker sample: moves measure only new samples (render
67
+ * frames that repeat one are passed with `fresh: false`), while the lifecycle
68
+ * (hold, cooldown, loss grace) advances every call. Mutates and returns
69
+ * `machine`; its public fields are the `BodyTriggerState`.
70
+ */
71
+ export declare const stepBodyTrigger: (machine: BodyTriggerMachine, frame: BodyMoveFrame | null, nowMs: number, fresh?: boolean) => BodyTriggerMachine;
72
+ /** Copy the public fields of a body trigger (for React state). */
73
+ export declare const snapshotBodyTriggerState: (machine: BodyTriggerState, target?: BodyTriggerState) => BodyTriggerState;
74
+ /** Change detection for publishing (`durationMs` excluded, like `gestureStatesEqual`). */
75
+ export declare const bodyTriggerStatesEqual: (a: BodyTriggerState, b: BodyTriggerState) => boolean;
@@ -0,0 +1,75 @@
1
+ import { FeedPoint, FeedSourceKind } from '../coordinates/spaces';
2
+ import { XRBodyCalibration, XRCalibration, XRCalibrationPatch, XRFaceCalibration } from './types';
3
+ export declare const CALIBRATION_VERSION: 1;
4
+ export declare const DEFAULT_CALIBRATION: XRCalibration;
5
+ /** A fresh, mutable calibration with the defaults (optionally patched). */
6
+ export declare const createCalibration: (patch?: XRCalibrationPatch) => XRCalibration;
7
+ /**
8
+ * Return a new calibration with `patch` applied. Invalid values fall back to
9
+ * the defaults rather than throwing, so a corrupt persisted blob never breaks
10
+ * the app. Never mutates `current`.
11
+ */
12
+ export declare const updateCalibration: (current: XRCalibration, patch: XRCalibrationPatch, now?: number) => XRCalibration;
13
+ /** Back to the defaults (a new object). */
14
+ export declare const resetCalibration: (now?: number) => XRCalibration;
15
+ /** Whether the calibration applies a transform at all (orientation, mirror override, scale or offset). */
16
+ export declare const isIdentityCalibration: (calibration: XRCalibration) => boolean;
17
+ /**
18
+ * Whether calibrated points should be flipped relative to the feed for this
19
+ * source. `"auto"` means "match the session", which mirrors only the webcam,
20
+ * so auto never flips a point (the feed is already mirrored); `true`/`false`
21
+ * flip only when they disagree with the session.
22
+ */
23
+ export declare const resolveCalibrationMirror: (calibration: XRCalibration, sourceKind: FeedSourceKind) => boolean;
24
+ /**
25
+ * Map a feed point (0..1, top-left origin) through the calibration: rotate by
26
+ * `orientation`, flip when the mirror override disagrees with the session,
27
+ * scale about the centre and add the offset. Pure; writes into `target` and
28
+ * never touches `point`, so raw tracker results stay untouched.
29
+ */
30
+ export declare const applyCalibrationToFeedPoint: (point: FeedPoint, calibration: XRCalibration, sourceKind: FeedSourceKind, target?: FeedPoint) => FeedPoint;
31
+ type Landmark = {
32
+ x: number;
33
+ y: number;
34
+ };
35
+ /**
36
+ * MediaPipe face-mesh indices the face measurement reads, named by MediaPipe's
37
+ * sides (263 = its left eye; the person's own left on an unmirrored feed, see
38
+ * GROUNDING "Left and right"). Only the distances between the pairs are read,
39
+ * so the side never matters here.
40
+ */
41
+ export declare const FACE_CALIBRATION_LANDMARKS: Readonly<{
42
+ leftTemple: 454;
43
+ rightTemple: 234;
44
+ leftEyeOuter: 263;
45
+ rightEyeOuter: 33;
46
+ }>;
47
+ /**
48
+ * Measure the reference face from 468+ face landmarks in feed space (what
49
+ * `FaceInfo.landmarks` / `getRawFaceTrackingData().landmarks` hold). Returns
50
+ * `null` when the landmarks are missing.
51
+ */
52
+ export declare const measureFaceCalibration: (landmarks: readonly Landmark[] | undefined, now?: number) => XRFaceCalibration | null;
53
+ /** MediaPipe pose indices the body measurement reads (MediaPipe's sides; only distances are read). */
54
+ export declare const BODY_CALIBRATION_LANDMARKS: Readonly<{
55
+ leftShoulder: 11;
56
+ rightShoulder: 12;
57
+ leftHip: 23;
58
+ rightHip: 24;
59
+ }>;
60
+ /** Measure the reference body from 33 pose landmarks in feed space. */
61
+ export declare const measureBodyCalibration: (landmarks: readonly Landmark[] | undefined, now?: number) => XRBodyCalibration | null;
62
+ /**
63
+ * How far the person is now, relative to the calibrated distance: `1` at the
64
+ * reference distance, `> 1` closer (the face reads larger), `< 1` farther.
65
+ * `null` without a face calibration or without a face. Uses the face width;
66
+ * the eye distance is the fallback when the temples are not both visible.
67
+ */
68
+ export declare const estimateFaceDistance: (landmarks: readonly Landmark[] | undefined, calibration: XRCalibration) => number | null;
69
+ /**
70
+ * Scale factor that maps the calibrated body onto the current one (`1` when
71
+ * the shoulders read the same width as at calibration). `null` without a body
72
+ * calibration or without a body.
73
+ */
74
+ export declare const estimateBodyScale: (landmarks: readonly Landmark[] | undefined, calibration: XRCalibration) => number | null;
75
+ export {};
@@ -0,0 +1,6 @@
1
+ export type { XRBodyCalibration, XRCalibration, XRCalibrationContext, XRCalibrationPatch, XRFaceCalibration, } from './types';
2
+ export { BODY_CALIBRATION_LANDMARKS, CALIBRATION_VERSION, DEFAULT_CALIBRATION, FACE_CALIBRATION_LANDMARKS, applyCalibrationToFeedPoint, createCalibration, estimateBodyScale, estimateFaceDistance, isIdentityCalibration, measureBodyCalibration, measureFaceCalibration, resetCalibration, resolveCalibrationMirror, updateCalibration, } from './calibration';
3
+ export { CALIBRATION_STORAGE_KEY, clearCalibration, loadCalibration, saveCalibration, } from './storage';
4
+ export type { CalibrationStorage } from './storage';
5
+ export { useXRCalibration } from './useXRCalibration';
6
+ export type { UseXRCalibrationOptions, UseXRCalibrationResult } from './useXRCalibration';
@@ -0,0 +1,13 @@
1
+ import { XRCalibration } from './types';
2
+ export declare const CALIBRATION_STORAGE_KEY = "vincentt.xr.calibration";
3
+ /** The subset of `Storage` the persistence helpers use; `localStorage` fits. */
4
+ export type CalibrationStorage = Pick<Storage, "getItem" | "setItem" | "removeItem">;
5
+ /**
6
+ * Read a persisted calibration. Returns `null` when nothing is stored, the
7
+ * blob is corrupt, or it was written by another `version` (never throws).
8
+ */
9
+ export declare const loadCalibration: (key?: string, storage?: CalibrationStorage | null) => XRCalibration | null;
10
+ /** Persist a calibration. Returns `false` when storage is unavailable or full. */
11
+ export declare const saveCalibration: (calibration: XRCalibration, key?: string, storage?: CalibrationStorage | null) => boolean;
12
+ /** Remove the persisted calibration (no-op when storage is unavailable). */
13
+ export declare const clearCalibration: (key?: string, storage?: CalibrationStorage | null) => void;
@@ -0,0 +1,53 @@
1
+ import { FeedSourceKind, SourceOrientation } from '../coordinates/spaces';
2
+ /**
3
+ * Reference face measurements captured while the person stands at their
4
+ * "normal" distance. Units are feed-width fractions (0..1), the same space as
5
+ * `FaceInfo.landmarks`, so they survive a resize but not a lens change.
6
+ */
7
+ export type XRFaceCalibration = {
8
+ /** Temple-to-temple width (landmarks 234 ↔ 454). */
9
+ faceWidth: number;
10
+ /** Outer eye-corner distance (landmarks 33 ↔ 263). */
11
+ eyeDistance: number;
12
+ /** `performance.now()`-independent wall-clock stamp (ms since epoch). */
13
+ capturedAt: number;
14
+ };
15
+ /** Reference body proportions (feed-space fractions) for scaling body-anchored content. */
16
+ export type XRBodyCalibration = {
17
+ /** Shoulder-to-shoulder width (pose landmarks 11 ↔ 12). */
18
+ shoulderWidth: number;
19
+ /** Hip-to-hip width (pose landmarks 23 ↔ 24). */
20
+ hipWidth: number;
21
+ /** Mid-shoulder to mid-hip distance. */
22
+ torsoLength: number;
23
+ capturedAt: number;
24
+ };
25
+ /**
26
+ * Persistent device calibration. Nothing here changes what trackers report:
27
+ * it is applied only by `applyCalibrationToFeedPoint` and the derived helpers.
28
+ */
29
+ export type XRCalibration = {
30
+ /** Bump when the shape changes; `loadCalibration` drops other versions. */
31
+ version: 1;
32
+ /** Clockwise rotation the raw frame needs before use (a sideways capture). */
33
+ orientation: SourceOrientation;
34
+ /** `"auto"` mirrors exactly when the session mirrors (webcam); booleans force it. */
35
+ mirrored: boolean | "auto";
36
+ /** Uniform scale about the feed centre; 1 = none. */
37
+ scale: number;
38
+ /** Horizontal / vertical nudge in feed units after scaling (0 = none). */
39
+ offset: {
40
+ x: number;
41
+ y: number;
42
+ };
43
+ face: XRFaceCalibration | null;
44
+ body: XRBodyCalibration | null;
45
+ /** Wall-clock ms of the last change. */
46
+ updatedAt: number;
47
+ };
48
+ /** The fields `updateCalibration` accepts. */
49
+ export type XRCalibrationPatch = Partial<Pick<XRCalibration, "orientation" | "mirrored" | "scale" | "offset" | "face" | "body">>;
50
+ /** Resolved mirror decision for one source kind. */
51
+ export type XRCalibrationContext = {
52
+ sourceKind: FeedSourceKind;
53
+ };
@@ -0,0 +1,46 @@
1
+ import { FeedPoint, FeedSourceKind } from '../coordinates/spaces';
2
+ import { CalibrationStorage } from './storage';
3
+ import { XRCalibration, XRCalibrationPatch } from './types';
4
+ type Landmark = {
5
+ x: number;
6
+ y: number;
7
+ };
8
+ export type UseXRCalibrationOptions = {
9
+ /** Persist to storage under this key (default `"vincentt.xr.calibration"`). */
10
+ storageKey?: string;
11
+ /** `false` keeps the calibration in memory only. Default `true`. */
12
+ persist?: boolean;
13
+ /** Storage to use instead of `localStorage` (tests, custom backends). */
14
+ storage?: CalibrationStorage | null;
15
+ /** Starting values when nothing is persisted. */
16
+ initial?: XRCalibrationPatch;
17
+ };
18
+ export type UseXRCalibrationResult = {
19
+ calibration: XRCalibration;
20
+ /** True once the persisted value (if any) has been read. */
21
+ hydrated: boolean;
22
+ /** Merge a patch (and persist). Returns the new calibration. */
23
+ update: (patch: XRCalibrationPatch) => XRCalibration;
24
+ /** Back to defaults; clears the persisted value. */
25
+ reset: () => XRCalibration;
26
+ /** Capture the reference face from feed-space landmarks. Returns `false` without a face. */
27
+ calibrateFace: (landmarks: readonly Landmark[] | undefined) => boolean;
28
+ /** Capture the reference body from feed-space pose landmarks. Returns `false` without a body. */
29
+ calibrateBody: (landmarks: readonly Landmark[] | undefined) => boolean;
30
+ /** `applyCalibrationToFeedPoint` bound to this calibration and the session's source kind. */
31
+ applyToFeedPoint: (point: FeedPoint, target?: FeedPoint) => FeedPoint;
32
+ /** `estimateFaceDistance` bound to this calibration. */
33
+ faceDistance: (landmarks: readonly Landmark[] | undefined) => number | null;
34
+ /** `estimateBodyScale` bound to this calibration. */
35
+ bodyScale: (landmarks: readonly Landmark[] | undefined) => number | null;
36
+ /** The session's current source kind (what `"auto"` mirroring follows). */
37
+ sourceKind: FeedSourceKind;
38
+ };
39
+ /**
40
+ * Device calibration state: measure, persist, reset and apply. Raw tracker
41
+ * output is never altered; call `applyToFeedPoint` (or the estimate helpers)
42
+ * where you want calibrated values. Needs an `<XRProvider>` for the source
43
+ * kind that `mirrored: "auto"` follows.
44
+ */
45
+ export declare const useXRCalibration: (options?: UseXRCalibrationOptions) => UseXRCalibrationResult;
46
+ export {};
@@ -0,0 +1,26 @@
1
+ import { ReactNode } from 'react';
2
+ import { UseCameraPermissionResult } from './useCameraPermission';
3
+ export type CameraPermissionGateProps = {
4
+ /** Rendered once the camera is usable (`granted`). */
5
+ children: ReactNode;
6
+ /**
7
+ * Rendered in every other state. Receives the hook result so the fallback
8
+ * can show the state, the reason and a request button. Omit for the
9
+ * built-in accessible fallback.
10
+ */
11
+ fallback?: (permission: UseCameraPermissionResult) => ReactNode;
12
+ /** Prompt on mount instead of waiting for the button. Default `false`. */
13
+ auto?: boolean;
14
+ constraints?: MediaStreamConstraints;
15
+ /** Copy for the built-in fallback's button. */
16
+ requestLabel?: string;
17
+ };
18
+ /**
19
+ * Renders `children` only while camera access is `granted`; otherwise a
20
+ * fallback that explains the state and offers a request button. The
21
+ * built-in fallback announces state changes through `aria-live`, keeps the
22
+ * request behind a real button (a user gesture, as browsers require), and
23
+ * disables it when a prompt cannot help (`blocked`, `unavailable`). No camera
24
+ * frame is captured until the viewer allows access and the session binds.
25
+ */
26
+ export declare const CameraPermissionGate: ({ children, fallback, auto, constraints, requestLabel, }: CameraPermissionGateProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,26 @@
1
+ import { XRCameraFacing } from '../types/compositor';
2
+ /** One video input the browser lists. Labels are empty until camera permission is granted. */
3
+ export type XRCameraDevice = {
4
+ deviceId: string;
5
+ label: string;
6
+ /** Guessed from the label (`back`, `rear`, `environment` → rear; `front`, `user`, `facetime` → front); `null` when unknown. */
7
+ facing: XRCameraFacing | null;
8
+ };
9
+ export type XRCameraDeviceEnvironment = {
10
+ enumerateDevices?: () => Promise<Array<{
11
+ kind: string;
12
+ deviceId: string;
13
+ label: string;
14
+ }>>;
15
+ };
16
+ /** Guess a camera's facing from its label. */
17
+ export declare const guessCameraFacing: (label: string) => XRCameraFacing | null;
18
+ /**
19
+ * List the cameras the browser exposes. Before permission is granted most
20
+ * browsers return devices with empty labels (and some return none), so call
21
+ * it after `requestCameraAccess` / a first bind for a usable list. Never
22
+ * throws; an unsupported browser yields `[]`.
23
+ */
24
+ export declare const listCameras: (env?: XRCameraDeviceEnvironment) => Promise<XRCameraDevice[]>;
25
+ /** Pick the device for a facing from a list (first match), or `null`. */
26
+ export declare const findCameraByFacing: (cameras: XRCameraDevice[], facing: XRCameraFacing) => XRCameraDevice | null;
@@ -0,0 +1,8 @@
1
+ export { CAMERA_PERMISSION_MESSAGES, canPromptForCamera, classifyCameraFailure, queryCameraPermission, requestCameraAccess, subscribeCameraPermission, } from './permission';
2
+ export type { XRCameraAccessOptions, XRCameraAccessResult, XRCameraPermissionEnvironment, XRCameraPermissionQuery, XRCameraPermissionState, } from './permission';
3
+ export { useCameraPermission } from './useCameraPermission';
4
+ export type { UseCameraPermissionOptions, UseCameraPermissionResult } from './useCameraPermission';
5
+ export { CameraPermissionGate } from './CameraPermissionGate';
6
+ export { findCameraByFacing, guessCameraFacing, listCameras } from './devices';
7
+ export type { XRCameraDevice, XRCameraDeviceEnvironment } from './devices';
8
+ export type { CameraPermissionGateProps } from './CameraPermissionGate';