@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,86 @@
1
+ import { XRFallbackReason } from '../capabilities/types';
2
+ import { XRErrorReason } from '../hooks/useXRSession/reason';
3
+ /**
4
+ * Creator-facing camera permission state.
5
+ *
6
+ * - `unknown`: never asked (the next request will prompt), or the browser
7
+ * cannot say.
8
+ * - `requesting`: a `getUserMedia` prompt is open.
9
+ * - `granted`: usable; the session may bind the webcam.
10
+ * - `denied`: this request was declined or the prompt was dismissed; asking
11
+ * again will prompt again.
12
+ * - `blocked`: persistently denied in the browser's site settings; asking
13
+ * again will fail without a prompt, so the viewer must change the setting.
14
+ * - `unavailable`: no camera, insecure context, unsupported browser, or the
15
+ * device is held by another app (`reason` says which).
16
+ */
17
+ export type XRCameraPermissionState = "unknown" | "requesting" | "granted" | "denied" | "blocked" | "unavailable";
18
+ /** What the Permissions API can tell before any request. */
19
+ export type XRCameraPermissionQuery = {
20
+ state: "unknown" | "granted" | "blocked";
21
+ /** True when the browser reported `prompt` (it will ask on the next request). */
22
+ prompt: boolean;
23
+ };
24
+ export type XRCameraAccessResult = {
25
+ state: XRCameraPermissionState;
26
+ reason: XRFallbackReason | null;
27
+ /** The stream, only when `keepStream` was true and access was granted. */
28
+ stream: MediaStream | null;
29
+ };
30
+ export type XRCameraAccessOptions = {
31
+ /** Keep the granted stream open and return it. Default `false`: the probe stops every track at once. */
32
+ keepStream?: boolean;
33
+ /** Constraints for the probe (default `{ video: { facingMode: "user" } }`). */
34
+ constraints?: MediaStreamConstraints;
35
+ };
36
+ /** Minimal environment the helpers read, injectable for tests. */
37
+ export type XRCameraPermissionEnvironment = {
38
+ mediaDevices?: {
39
+ getUserMedia?: (constraints: MediaStreamConstraints) => Promise<MediaStream>;
40
+ };
41
+ permissions?: {
42
+ query: (desc: {
43
+ name: string;
44
+ }) => Promise<{
45
+ state: string;
46
+ addEventListener?: (type: "change", listener: () => void) => void;
47
+ removeEventListener?: (type: "change", listener: () => void) => void;
48
+ }>;
49
+ };
50
+ isSecureContext?: boolean;
51
+ };
52
+ export declare const defaultCameraEnvironment: () => XRCameraPermissionEnvironment;
53
+ /**
54
+ * Ask the Permissions API for the camera state without prompting. `unknown`
55
+ * covers both "will prompt" (`prompt: true`) and "cannot tell" (Firefox and
56
+ * older Safari reject the camera descriptor).
57
+ */
58
+ export declare const queryCameraPermission: (env?: XRCameraPermissionEnvironment) => Promise<XRCameraPermissionQuery>;
59
+ /**
60
+ * Turn a failed `getUserMedia` (its SDK reason) plus the permission state
61
+ * read *after* the failure into a creator-facing state. A denial while the
62
+ * browser now reports `denied` is a persistent block; a denial while it still
63
+ * reports `prompt` was a dismissal or a one-off decline.
64
+ */
65
+ export declare const classifyCameraFailure: (reason: XRErrorReason, permission: XRCameraPermissionQuery["state"]) => {
66
+ state: XRCameraPermissionState;
67
+ reason: XRFallbackReason;
68
+ };
69
+ /**
70
+ * Request camera access explicitly, before (or outside) a session. The
71
+ * granted stream is stopped immediately unless `keepStream` is set, so the
72
+ * camera indicator goes off and no frame is processed: this only moves the
73
+ * permission. Pass the returned stream to `session.setMediaSource` when you
74
+ * keep it. Never throws; read `state` and `reason`.
75
+ */
76
+ export declare const requestCameraAccess: (options?: XRCameraAccessOptions, env?: XRCameraPermissionEnvironment) => Promise<XRCameraAccessResult>;
77
+ /**
78
+ * Subscribe to Permissions API changes (the viewer toggling the site's camera
79
+ * setting). The listener receives the new query; returns an unsubscribe.
80
+ * Resolves to a no-op where the API is unavailable.
81
+ */
82
+ export declare const subscribeCameraPermission: (listener: (query: XRCameraPermissionQuery) => void, env?: XRCameraPermissionEnvironment) => Promise<() => void>;
83
+ /** True when a request can show a prompt or succeed (not blocked / unavailable). */
84
+ export declare const canPromptForCamera: (state: XRCameraPermissionState) => boolean;
85
+ /** Display copy per state (reword freely; branch on `state`, never on this text). */
86
+ export declare const CAMERA_PERMISSION_MESSAGES: Record<XRCameraPermissionState, string>;
@@ -0,0 +1,35 @@
1
+ import { XRFallbackReason } from '../capabilities/types';
2
+ import { XRCameraAccessOptions, XRCameraPermissionEnvironment, XRCameraPermissionState } from './permission';
3
+ export type UseCameraPermissionOptions = {
4
+ /** Request on mount (shows the prompt immediately). Default `false`: query only, prompt on `request()`. */
5
+ auto?: boolean;
6
+ /** Probe constraints passed to `requestCameraAccess`. */
7
+ constraints?: MediaStreamConstraints;
8
+ /** Environment override for tests. */
9
+ env?: XRCameraPermissionEnvironment;
10
+ };
11
+ export type UseCameraPermissionResult = {
12
+ state: XRCameraPermissionState;
13
+ reason: XRFallbackReason | null;
14
+ /** The next `request()` can show a prompt or succeed. */
15
+ canPrompt: boolean;
16
+ /** `granted`. */
17
+ usable: boolean;
18
+ /**
19
+ * Prompt (or re-prompt). Resolves to the new state. The probe stream is
20
+ * always stopped at once; to keep a stream, call `requestCameraAccess`
21
+ * directly, which returns it.
22
+ */
23
+ request: (options?: Pick<XRCameraAccessOptions, "constraints">) => Promise<XRCameraPermissionState>;
24
+ /** Re-read the Permissions API without prompting. */
25
+ refresh: () => Promise<XRCameraPermissionState>;
26
+ };
27
+ /**
28
+ * Camera permission for a landing or gate screen. Needs no `<XRProvider>`.
29
+ * Queries on mount (never prompts unless `auto`), follows the browser's
30
+ * site-setting changes, and exposes `request()` for a user-gesture button.
31
+ * Once `usable`, mount the session and call `setMediaSource({ source:
32
+ * XRMediaSource.WEBCAM })`; the session reports its own live state through
33
+ * `useXRSessionCameraPermission()` (`/low-level`).
34
+ */
35
+ export declare const useCameraPermission: (options?: UseCameraPermissionOptions) => UseCameraPermissionResult;
@@ -0,0 +1,9 @@
1
+ import { F as A, a as C } from "./uv-DJU_XfmN.js";
2
+ const a = 468, N = Uint16Array.from(A.flat()), o = Float32Array.from(
3
+ C.slice(0, a * 2)
4
+ );
5
+ export {
6
+ a as C,
7
+ o as a,
8
+ N as b
9
+ };
@@ -0,0 +1 @@
1
+ "use strict";const A=require("./uv-BMFt19bg.cjs"),C=468,N=Uint16Array.from(A.FACE_MESH_INDICES.flat()),_=Float32Array.from(A.FACE_MESH_UV.slice(0,C*2));exports.CANONICAL_FACE_LANDMARK_COUNT=C;exports.CANONICAL_FACE_TRIANGLES=N;exports.CANONICAL_FACE_UVS=_;
@@ -0,0 +1,45 @@
1
+ import { XRModel } from '../constants';
2
+ import { XRCapabilities, XRCapabilityCheckOptions, XRCapabilityEnvironment, XRCapabilityStatus, XRFallbackCode, XRFallbackReason } from './types';
3
+ export declare const XR_FALLBACK_MESSAGES: Record<XRFallbackCode, string>;
4
+ /** Build a fallback reason from its code (the message table is SDK-owned). */
5
+ export declare const createFallbackReason: (code: XRFallbackCode, message?: string) => XRFallbackReason;
6
+ /**
7
+ * The SDK-owned asset each tracker downloads on first use, relative to the
8
+ * asset CDN. Semantic segmentation loads a preset-specific file and holistic
9
+ * loads from the MediaPipe bucket until the CDN copy is published.
10
+ */
11
+ export declare const XR_MODEL_ASSET_URLS: Record<XRModel, string | null>;
12
+ export declare const resolveModelAssetUrl: (model: XRModel) => string | null;
13
+ /** Android Chrome / Samsung Internet (ARCore devices) can hand off to Scene Viewer. */
14
+ export declare const isSceneViewerUserAgent: (ua: string | undefined) => boolean;
15
+ /** Map a browser permission state onto the SDK status vocabulary. */
16
+ export declare const permissionStateToStatus: (state: string | undefined) => XRCapabilityStatus;
17
+ /**
18
+ * Probe the platform before a session starts: camera (secure context,
19
+ * `getUserMedia`, device count, permission state), rendering (WebGL,
20
+ * OffscreenCanvas, WebAssembly, WebGPU presence) and, for the `models` listed,
21
+ * whether each tracker's asset is reachable. Never opens the camera and never
22
+ * downloads a model body. Pass `env` only in tests.
23
+ */
24
+ export declare const detectXRCapabilities: (options?: XRCapabilityCheckOptions, env?: XRCapabilityEnvironment) => Promise<XRCapabilities>;
25
+ /** Map a session (camera) error reason onto the fallback vocabulary. */
26
+ export declare const sessionReasonToFallback: (reason: "permission-denied" | "camera-in-use" | "no-camera" | "unsupported" | "camera-lost" | "unknown") => XRFallbackReason;
27
+ export type XRTrackerSupport = {
28
+ supported: boolean;
29
+ /** The first blocking reason, most fundamental first: rendering, then camera, then the model. */
30
+ reason: XRFallbackReason | null;
31
+ /** The camera has not been granted yet; the session's first `getUserMedia` will prompt. */
32
+ needsPermission: boolean;
33
+ };
34
+ /**
35
+ * Collapse a capability report into one answer for a tracker. A
36
+ * `permission-prompt` camera counts as supported (the prompt is the next
37
+ * step); a denied camera does not.
38
+ */
39
+ export declare const resolveTrackerSupport: (capabilities: XRCapabilities, model: XRModel) => XRTrackerSupport;
40
+ /**
41
+ * Classify a model initialization error (what `useXRModel().error` carries)
42
+ * into a fallback reason. Integrity failures and network failures come from
43
+ * the SDK's own fetch; anything else is a MediaPipe init failure on this device.
44
+ */
45
+ export declare const mapModelErrorToReason: (error: unknown) => XRFallbackReason;
@@ -0,0 +1,5 @@
1
+ export type { XRCameraCapability, XRCapabilities, XRCapabilityCheckOptions, XRCapabilityEnvironment, XRCapabilityStatus, XRFallbackCode, XRFallbackReason, XRModelCapability, XRPlacementCapability, XRRenderingCapability, } from './types';
2
+ export { XR_FALLBACK_MESSAGES, XR_MODEL_ASSET_URLS, createFallbackReason, detectXRCapabilities, mapModelErrorToReason, permissionStateToStatus, resolveModelAssetUrl, resolveTrackerSupport, } from './detect';
3
+ export type { XRTrackerSupport } from './detect';
4
+ export { useXRCapabilities } from './useXRCapabilities';
5
+ export type { UseXRCapabilitiesResult, XRCapabilityCheckStatus } from './useXRCapabilities';
@@ -0,0 +1,120 @@
1
+ import { XRModel } from '../constants';
2
+ /**
3
+ * Whether one platform feature can be used. `permission-prompt` is camera-only:
4
+ * the browser has not asked yet, so the first `getUserMedia` will prompt.
5
+ */
6
+ export type XRCapabilityStatus = "supported" | "unsupported" | "permission-denied" | "permission-prompt" | "unknown";
7
+ /** Stable, machine-readable reason a feature or tracker cannot run. */
8
+ export type XRFallbackCode = "camera-permission-denied" | "camera-in-use" | "no-camera" | "camera-insecure-context" | "camera-unsupported" | "camera-lost" | "webgl-unavailable" | "offscreen-canvas-unavailable" | "wasm-unavailable" | "model-unreachable" | "model-integrity" | "model-init-failed" | "placement-unsupported" | "unknown";
9
+ /**
10
+ * Structured reason for a degraded state. `message` is prose and may be
11
+ * reworded; branch on `code`. `recoverable` says whether a user action (grant
12
+ * permission, close the other tab, reconnect) can fix it without a reload.
13
+ */
14
+ export type XRFallbackReason = {
15
+ code: XRFallbackCode;
16
+ message: string;
17
+ recoverable: boolean;
18
+ };
19
+ export type XRCameraCapability = {
20
+ status: XRCapabilityStatus;
21
+ reason: XRFallbackReason | null;
22
+ /** Number of video input devices the browser lists (labels need permission). */
23
+ deviceCount: number | null;
24
+ /** True when the page runs in a secure context (`getUserMedia` requires it). */
25
+ secureContext: boolean;
26
+ };
27
+ export type XRRenderingCapability = {
28
+ status: XRCapabilityStatus;
29
+ reason: XRFallbackReason | null;
30
+ /** `2` for WebGL2, `1` for WebGL1, `0` when neither context can be created. */
31
+ webglVersion: 0 | 1 | 2;
32
+ /** `navigator.gpu` is present. The SDK does not need WebGPU; this is informational. */
33
+ webgpu: boolean;
34
+ offscreenCanvas: boolean;
35
+ /** WebAssembly is present (MediaPipe needs it). */
36
+ wasm: boolean;
37
+ };
38
+ export type XRModelCapability = {
39
+ model: XRModel;
40
+ status: XRCapabilityStatus;
41
+ reason: XRFallbackReason | null;
42
+ /** The asset the check probed; `null` when the model has no SDK-owned asset path. */
43
+ url: string | null;
44
+ /** Content-Length from the probe, when the server reports it. */
45
+ bytes: number | null;
46
+ };
47
+ /**
48
+ * Surface-placement ("view in your space") AR, the model-viewer route: each
49
+ * native path the device can take. None of these is the SDK's own camera
50
+ * session; a page offers "View in AR" when `any` is true.
51
+ */
52
+ export type XRPlacementCapability = {
53
+ /** WebXR `immersive-ar` (Android Chrome, some headsets). */
54
+ webxr: boolean;
55
+ /** Android Scene Viewer intent (Android Chrome / Samsung Internet with ARCore). */
56
+ sceneViewer: boolean;
57
+ /** iOS AR Quick Look (`<a rel="ar">`), needs a USDZ. */
58
+ quickLook: boolean;
59
+ any: boolean;
60
+ reason: XRFallbackReason | null;
61
+ };
62
+ export type XRCapabilities = {
63
+ camera: XRCameraCapability;
64
+ rendering: XRRenderingCapability;
65
+ placement: XRPlacementCapability;
66
+ models: Record<XRModel, XRModelCapability>;
67
+ /** True when camera and rendering are both usable (models are checked per tracker). */
68
+ canRunTracking: boolean;
69
+ /** When the check ran (`performance.now()` milliseconds). */
70
+ checkedAt: number;
71
+ };
72
+ export type XRCapabilityCheckOptions = {
73
+ /**
74
+ * Trackers to probe. Each probe is a `HEAD` request to the model asset; omit
75
+ * to skip asset probes (models report `unknown`). Probing is cheap (headers
76
+ * only) but it is a network round trip per model.
77
+ */
78
+ models?: XRModel[];
79
+ /** Per-probe timeout in milliseconds. Default 4000. */
80
+ timeoutMs?: number;
81
+ /**
82
+ * Query the Permissions API for the camera state. Default `true`. Turning it
83
+ * off keeps the check from touching permissions at all (status stays
84
+ * `unknown` until the first `getUserMedia`).
85
+ */
86
+ queryPermission?: boolean;
87
+ };
88
+ /** Minimal environment the detector reads, injectable for tests. */
89
+ export type XRCapabilityEnvironment = {
90
+ navigator?: {
91
+ mediaDevices?: {
92
+ getUserMedia?: (constraints?: MediaStreamConstraints) => Promise<MediaStream>;
93
+ enumerateDevices?: () => Promise<Array<{
94
+ kind: string;
95
+ label?: string;
96
+ }>>;
97
+ };
98
+ permissions?: {
99
+ query: (desc: {
100
+ name: string;
101
+ }) => Promise<{
102
+ state: string;
103
+ }>;
104
+ };
105
+ gpu?: unknown;
106
+ };
107
+ isSecureContext?: boolean;
108
+ createCanvas?: () => {
109
+ getContext: (id: string) => unknown;
110
+ } | null;
111
+ /** `navigator.xr.isSessionSupported("immersive-ar")`; absent when WebXR is missing. */
112
+ xrSessionSupported?: (mode: string) => Promise<boolean>;
113
+ /** `a.relList.supports("ar")` for Quick Look. */
114
+ relSupportsAr?: boolean;
115
+ userAgent?: string;
116
+ offscreenCanvas?: boolean;
117
+ wasm?: boolean;
118
+ fetch?: typeof fetch;
119
+ now?: () => number;
120
+ };
@@ -0,0 +1,18 @@
1
+ import { XRCapabilities, XRCapabilityCheckOptions } from './types';
2
+ export type XRCapabilityCheckStatus = "idle" | "checking" | "ready" | "error";
3
+ export type UseXRCapabilitiesResult = {
4
+ /** `null` until the first check resolves. */
5
+ capabilities: XRCapabilities | null;
6
+ status: XRCapabilityCheckStatus;
7
+ error: Error | null;
8
+ /** Re-run the check (after the user granted permission, reconnected, …). */
9
+ refresh: () => Promise<XRCapabilities | null>;
10
+ };
11
+ /**
12
+ * Run `detectXRCapabilities` on mount and expose the report. Needs no
13
+ * `<XRProvider>`: call it on the landing screen to decide whether to offer the
14
+ * AR experience at all. Pass `enabled: false` to defer the check.
15
+ */
16
+ export declare const useXRCapabilities: (options?: XRCapabilityCheckOptions & {
17
+ enabled?: boolean;
18
+ }) => UseXRCapabilitiesResult;
@@ -0,0 +1,5 @@
1
+ import { XRCompatEnvironment } from './types';
2
+ /** Best-effort browser / OS identification from a user agent (for the report label, not for feature gating). */
3
+ export declare const parseUserAgent: (ua: string) => Pick<XRCompatEnvironment, "browser" | "os" | "mobile">;
4
+ /** Describe the current browser for the report. */
5
+ export declare const describeCompatEnvironment: () => XRCompatEnvironment;
@@ -0,0 +1,4 @@
1
+ export type { XRCompatAutomatedScenarioId, XRCompatManualScenarioId, XRCompatScenarioId, XRCompatCause, XRCompatEnvironment, XRCompatReport, XRCompatResult, XRCompatRunOptions, XRCompatScenario, XRCompatStatus, } from './types';
2
+ export { COMPAT_SCENARIOS, MANUAL_COMPAT_SCENARIOS, findCompatScenario } from './scenarios';
3
+ export { describeCompatEnvironment, parseUserAgent } from './environment';
4
+ export { classifyCompatCause, createCompatReport, runCompatChecks, summarizeCompatResults, waitFor, } from './run';
@@ -0,0 +1,18 @@
1
+ import { XRCapabilities } from '../capabilities/types';
2
+ import { SessionFacade } from '../hooks/useXRSession';
3
+ import { XRCompatCause, XRCompatReport, XRCompatResult, XRCompatRunOptions } from './types';
4
+ /** Poll `predicate` until true or the timeout; resolves to whether it became true. */
5
+ export declare const waitFor: (predicate: () => boolean, timeoutMs: number, stepMs?: number) => Promise<boolean>;
6
+ /** Attribute a failure to a layer from the structured codes the SDK produces. */
7
+ export declare const classifyCompatCause: (code: string | null, layer: XRCompatCause) => XRCompatCause;
8
+ export declare const summarizeCompatResults: (results: XRCompatResult[]) => XRCompatReport["summary"];
9
+ export declare const createCompatReport: (results: XRCompatResult[], capabilities: XRCapabilities | null, options?: Pick<XRCompatRunOptions, "label" | "sdkVersion">) => XRCompatReport;
10
+ /**
11
+ * Run the automated compatibility scenarios against a live session (an
12
+ * `<XRProvider>`'s facade). Opens the webcam unless `stream` is supplied,
13
+ * acquires the requested models, exercises pause / resume / stop / start,
14
+ * samples performance, releases what it acquired and stops the session
15
+ * (releasing the camera) unless `keepSessionRunning`. Never throws: every
16
+ * scenario ends as a result with a classified `cause`.
17
+ */
18
+ export declare const runCompatChecks: (session: SessionFacade, options?: XRCompatRunOptions) => Promise<XRCompatReport>;
@@ -0,0 +1,10 @@
1
+ import { XRCompatAutomatedScenarioId, XRCompatManualScenarioId, XRCompatScenario, XRCompatScenarioId } from './types';
2
+ /** Scenarios the harness runs by itself, in order. */
3
+ export declare const COMPAT_SCENARIOS: Array<XRCompatScenario & {
4
+ id: XRCompatAutomatedScenarioId;
5
+ }>;
6
+ /** Scenarios only a person on a real device can run; results are entered by hand. */
7
+ export declare const MANUAL_COMPAT_SCENARIOS: Array<XRCompatScenario & {
8
+ id: XRCompatManualScenarioId;
9
+ }>;
10
+ export declare const findCompatScenario: (id: XRCompatScenarioId | string) => XRCompatScenario | undefined;
@@ -0,0 +1,101 @@
1
+ import { XRCapabilities } from '../capabilities/types';
2
+ import { XRModel } from '../constants';
3
+ /** Which layer a failed check points at. */
4
+ export type XRCompatCause = "capability" | "model" | "lifecycle" | "performance" | "unknown";
5
+ export type XRCompatStatus = "pass" | "fail" | "skip";
6
+ /** Ids of the automated scenarios, in run order. */
7
+ export type XRCompatAutomatedScenarioId = "capabilities" | "session-start" | "model-ready" | "model-detects" | "pause-resume" | "stop-start" | "performance";
8
+ /** Ids of the manual (device) scenarios. */
9
+ export type XRCompatManualScenarioId = "permission-prompt" | "permission-blocked" | "rear-camera" | "orientation" | "background-foreground" | "camera-interrupted" | "thermal" | "low-end";
10
+ export type XRCompatScenarioId = XRCompatAutomatedScenarioId | XRCompatManualScenarioId;
11
+ /** One scenario the harness can run (automated) or a person runs (manual). */
12
+ export type XRCompatScenario = {
13
+ id: XRCompatScenarioId;
14
+ title: string;
15
+ /** What a tester does / what the harness does. */
16
+ steps: string;
17
+ /** What must be true. */
18
+ expect: string;
19
+ mode: "automated" | "manual";
20
+ /** The layer this scenario exercises; a failure is attributed here unless the harness knows better. */
21
+ layer: Exclude<XRCompatCause, "unknown">;
22
+ };
23
+ export type XRCompatResult = {
24
+ id: XRCompatScenarioId;
25
+ status: XRCompatStatus;
26
+ cause: XRCompatCause | null;
27
+ /** Machine-readable detail (a fallback code, a model name, a lifecycle state, a number). */
28
+ code: string | null;
29
+ /** Human detail. */
30
+ detail: string;
31
+ durationMs: number;
32
+ /** Free text from a manual tester. */
33
+ notes?: string;
34
+ };
35
+ /** The device under test, as the browser describes it. */
36
+ export type XRCompatEnvironment = {
37
+ userAgent: string;
38
+ platform: string;
39
+ /** Best-effort browser family + major version parsed from the UA. */
40
+ browser: {
41
+ name: string;
42
+ version: string;
43
+ };
44
+ os: {
45
+ name: string;
46
+ version: string;
47
+ };
48
+ mobile: boolean;
49
+ screen: {
50
+ width: number;
51
+ height: number;
52
+ dpr: number;
53
+ };
54
+ deviceMemoryGb: number | null;
55
+ hardwareConcurrency: number | null;
56
+ secureContext: boolean;
57
+ /** `HTMLVideoElement.captureStream` exists (hosted clips can feed the session). */
58
+ videoCaptureStream: boolean;
59
+ touch: boolean;
60
+ };
61
+ export type XRCompatReport = {
62
+ /** Report schema version. */
63
+ version: 1;
64
+ /** Harness identity: SDK version string the app embeds, or "dev". */
65
+ sdkVersion: string;
66
+ /** ISO-8601 wall clock. */
67
+ checkedAt: string;
68
+ /** Free label a tester gives the device ("iPhone 13, iOS 17.5"). */
69
+ label: string;
70
+ environment: XRCompatEnvironment;
71
+ capabilities: XRCapabilities | null;
72
+ results: XRCompatResult[];
73
+ summary: {
74
+ pass: number;
75
+ fail: number;
76
+ skip: number;
77
+ causes: Record<XRCompatCause, number>;
78
+ };
79
+ };
80
+ export type XRCompatRunOptions = {
81
+ /** Models to load and check (default face + hand + body). */
82
+ models?: XRModel[];
83
+ /** Per-step timeout (ms). Default 20000 (model downloads on mobile data). */
84
+ timeoutMs?: number;
85
+ /** Scenario ids to run; default every automated scenario. */
86
+ scenarios?: XRCompatAutomatedScenarioId[];
87
+ /**
88
+ * Leave the session running (webcam open) when the run ends. Default
89
+ * `false`: the harness calls `session.stop()` in a `finally`, releasing
90
+ * the camera; the caller re-binds if it wants to continue.
91
+ */
92
+ keepSessionRunning?: boolean;
93
+ /** Use this stream instead of opening the webcam (CI, fixtures). */
94
+ stream?: MediaStream;
95
+ /** Performance window (ms). Default 3000. */
96
+ performanceWindowMs?: number;
97
+ /** Progress callback after each result. */
98
+ onResult?: (result: XRCompatResult) => void;
99
+ label?: string;
100
+ sdkVersion?: string;
101
+ };
@@ -0,0 +1,63 @@
1
+ import { BodyPoseDefinition, BodyPoseHintPose, BodyPoseName, BodySide } from '../../body-pose';
2
+ import { HintLook } from '../Instruction/hintLook';
3
+ import { HintLoop } from '../Instruction/hintLoop';
4
+ import * as THREE from "three";
5
+ export type BodyPoseHintProps = {
6
+ /** A pose name, your own definition (`defineBodyPose`), or just its hint (`{ clip, arms, legs }`). */
7
+ pose: BodyPoseName | BodyPoseDefinition | BodyPoseHintPose;
8
+ /**
9
+ * The hint body: a skinned character (e.g. the SDK example `ybot.glb`'s
10
+ * scene, loaded with the meshopt decoder), facing +Z.
11
+ */
12
+ model: THREE.Object3D;
13
+ /** The model's poses, one single-key clip per pose plus the rest clip (the GLB's `animations`). */
14
+ poses: readonly THREE.AnimationClip[];
15
+ /** The clip each loop starts from. Default `"idle"`. */
16
+ idleClip?: string;
17
+ /** Height of the figure's slot in the parent's units (the hint is fitted to it). Default `1`. */
18
+ height?: number;
19
+ /**
20
+ * Draw the figure mirrored (as in a mirror): pass `true` on a mirrored
21
+ * (selfie) feed so the person's left arm is on the same screen side as theirs.
22
+ * Default `false`.
23
+ */
24
+ mirrored?: boolean;
25
+ /** Loop timing, merged over `BODY_HINT_LOOP` (2.6 s per cycle). */
26
+ loop?: HintLoop;
27
+ /** The look, merged over `BODY_HINT_LOOK` (ghost, part tints, halo, glow, highlight). */
28
+ look?: HintLook;
29
+ /** Draw the arms and legs that make the pose brighter. Default `true`. */
30
+ highlight?: boolean;
31
+ /**
32
+ * Which arm a bone belongs to, for the highlight. Default: Mixamo names
33
+ * (`LeftArm`, `LeftForeArm`, `LeftHand…`; `Right…` likewise).
34
+ */
35
+ boneSide?: (boneName: string) => BodySide | null;
36
+ /**
37
+ * Which leg a bone belongs to, for the highlight. Default: Mixamo names
38
+ * (`LeftUpLeg`, `LeftLeg`, `LeftFoot`, `LeftToe…`; `Right…` likewise).
39
+ */
40
+ legBoneSide?: (boneName: string) => BodySide | null;
41
+ /** Auto orbit: degrees to each side about the vertical (ping-pong). `0` = still. Default `25`. */
42
+ orbit?: number;
43
+ /** Seconds per orbit swing. Default `7`. */
44
+ orbitSeconds?: number;
45
+ /** Render order of the figure (keep it above the AR content it may overlap). */
46
+ renderOrder?: number;
47
+ };
48
+ /** The figure's default look (`ybot`'s parts): plain ghost, the joint rings tinted blue-grey. */
49
+ export declare const BODY_HINT_LOOK: HintLook;
50
+ /** The figure's default loop. */
51
+ export declare const BODY_HINT_LOOP: HintLoop;
52
+ /** The arm bones of a side by Mixamo name: upper arm, forearm, hand and every finger joint. */
53
+ export declare const mixamoBoneSide: (name: string) => BodySide | null;
54
+ /** The leg bones of a side by Mixamo name: thigh, shin, foot and toes. */
55
+ export declare const mixamoLegBoneSide: (name: string) => BodySide | null;
56
+ /**
57
+ * A 3D figure showing a body pose — the body instruction's demonstration.
58
+ * Blends the pose's clip from the model's `idle` clip and back, highlights the
59
+ * arms and legs that make it, and slowly orbits. Drawn as a ghost (`look`). Place it
60
+ * where the hint should appear (e.g. inside `ScreenSpaceUI`); `BodyInstruction`
61
+ * does this.
62
+ */
63
+ export declare const BodyPoseHint: ({ pose, model, poses, idleClip, height, mirrored, loop, look, highlight, boneSide, legBoneSide, orbit, orbitSeconds, renderOrder, }: BodyPoseHintProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,69 @@
1
+ import { BodyPoseDefinition, BodyPoseName, BodyShapeLimits, BodySide } from '../../body-pose';
2
+ import { HintLook } from '../Instruction/hintLook';
3
+ import { HintLoop } from '../Instruction/hintLoop';
4
+ import { InstructionOptions } from '../Instruction/InstructionCue';
5
+ import type * as THREE from "three";
6
+ export { BODY_HINT_LOOK, BODY_HINT_LOOP, BodyPoseHint, mixamoBoneSide, mixamoLegBoneSide, } from './BodyPoseHint';
7
+ export type { BodyPoseHintProps } from './BodyPoseHint';
8
+ export { useBodyPose } from './useBodyPose';
9
+ export type { UseBodyPoseOptions, UseBodyPoseResult } from './useBodyPose';
10
+ /** The instruction draws in this renderOrder band, over the AR scene (= `INSTRUCTION_RENDER_ORDER`). */
11
+ export declare const BODY_INSTRUCTION_RENDER_ORDER = 2000;
12
+ /** A standing figure needs a taller slot than the hand / face symbols (× the size preset). */
13
+ export declare const BODY_SYMBOL_ASPECT = 2.1;
14
+ /** Default nudge copy when the upper body has not been in view for `nudgeAfterMs`. */
15
+ export declare const BODY_INSTRUCTION_NUDGE_TEXT = "Step back so your upper body is in view";
16
+ /** Default nudge copy for a leg pose (`view: "full"`) when the whole body has not been in view. */
17
+ export declare const BODY_INSTRUCTION_FULL_NUDGE_TEXT = "Step back so your whole body is in view";
18
+ export type BodyInstructionProps = InstructionOptions & {
19
+ /** What to ask for: a `BODY_POSES` name or your own `defineBodyPose(…)`. */
20
+ pose: BodyPoseName | BodyPoseDefinition;
21
+ /** The hint figure: a skinned character (e.g. `ybot.glb`'s scene); see `BodyPoseHint`. */
22
+ model: THREE.Object3D;
23
+ /** The model's pose clips plus the rest clip (e.g. `ybot.glb`'s `animations`). */
24
+ poses: readonly THREE.AnimationClip[];
25
+ /** The rest clip the hint loops from. Default `"idle"`. */
26
+ idleClip?: string;
27
+ /** Instruction copy. Default: the pose's `label` ("Raise both arms"). */
28
+ text?: string;
29
+ /** Which detected body to read. Default 0. */
30
+ bodyIndex?: number;
31
+ /** Hold time to complete. Default 400 ms. */
32
+ holdMs?: number;
33
+ /** Dropouts shorter than this do not restart the hold. Default 150 ms. */
34
+ graceMs?: number;
35
+ /** Classifier thresholds to override (see `BODY_SHAPE_LIMITS`). */
36
+ limits?: Partial<BodyShapeLimits>;
37
+ /** The figure's slot height × the size preset. Default `BODY_SYMBOL_ASPECT` (2.1). */
38
+ symbolAspect?: number;
39
+ /** The hint's auto orbit, degrees to each side. Default `25`; `0` = still. */
40
+ orbit?: number;
41
+ /** The hint's look, merged over `BODY_HINT_LOOK`. */
42
+ look?: HintLook;
43
+ /** The hint's loop, merged over `BODY_HINT_LOOP`. */
44
+ loop?: HintLoop;
45
+ /** Which arm a bone belongs to, for the highlight (default: Mixamo names). */
46
+ boneSide?: (boneName: string) => BodySide | null;
47
+ /** Which leg a bone belongs to, for the highlight (default: Mixamo names). */
48
+ legBoneSide?: (boneName: string) => BodySide | null;
49
+ /** Called once when the pose is held long enough. */
50
+ onComplete?: () => void;
51
+ /** `false` hides it and pauses detection. Default `true`. */
52
+ active?: boolean;
53
+ };
54
+ /**
55
+ * A minimal on-screen instruction that asks for a body pose and waits for it:
56
+ * a looping ghost figure making the pose (`BodyPoseHint`, mirrored on a selfie
57
+ * feed) with the copy under it — the same layout and feedback as
58
+ * `HandInstruction` / `FaceInstruction`. Holding the pose for `holdMs` (with
59
+ * the upper body in view, the whole body for a leg pose) completes it; with
60
+ * the body out of view for a while it adds a nudge line. Mount inside the R3F scene (`XRScene`); it
61
+ * acquires the body model itself. Every part is customisable (`look`, `loop`,
62
+ * `textStyle`, `motion`, `renderText` …); for a fully custom one, compose
63
+ * `<Instruction>` with `useBodyPose` and any symbol.
64
+ *
65
+ * ```tsx
66
+ * <BodyInstruction pose="hooray" model={ybot.scene} poses={ybot.animations} onComplete={start} />
67
+ * ```
68
+ */
69
+ export declare const BodyInstruction: ({ active, text, ...props }: BodyInstructionProps) => import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,23 @@
1
+ import { MutableRefObject } from 'react';
2
+ import { BodyPoseSpec, BodyShape, BodyShapeLimits } from '../../body-pose';
3
+ import { InstructionDetector, InstructionHoldOptions } from '../Instruction/useInstructionHold';
4
+ export type UseBodyPoseOptions = InstructionHoldOptions & {
5
+ /** Which detected body to read. Default 0. */
6
+ bodyIndex?: number;
7
+ /** Classifier thresholds to override for this detector (see `BODY_SHAPE_LIMITS`). */
8
+ limits?: Partial<BodyShapeLimits>;
9
+ };
10
+ export type UseBodyPoseResult = InstructionDetector & {
11
+ /** The latest analysed body (`null` while none is detected) — read it in `useFrame`. */
12
+ shapeRef: MutableRefObject<BodyShape | null>;
13
+ };
14
+ /**
15
+ * Detects a body pose on the tracked body, with hold-to-complete: a
16
+ * `BODY_POSES` name, a rule over the arm and leg states, a match function `(shape) =>
17
+ * boolean` or a definition (`defineBodyPose`). Left / right are the person's
18
+ * own sides on any camera. Only counts while the upper body is in view (the
19
+ * whole body for a definition with `view: "full"`, like the leg poses).
20
+ * Returns an `InstructionDetector` (pass it to `<Instruction detector>`).
21
+ * Mount inside the R3F scene; it acquires the body model itself.
22
+ */
23
+ export declare const useBodyPose: (pose: BodyPoseSpec, { bodyIndex, limits, active, ...hold }?: UseBodyPoseOptions) => UseBodyPoseResult;
@@ -1,4 +1,21 @@
1
1
  import { PropsWithChildren } from 'react';
2
+ import { BodyTarget } from '../../types/tracking';
3
+ /**
4
+ * MediaPipe Pose landmark indices (33 landmarks), as MediaPipe names the side
5
+ * (11 = its left shoulder): the person's own side on an unmirrored feed, the
6
+ * opposite on the mirrored webcam. `BodyTracker`'s `TrackingAnchor` targets
7
+ * are the person's own side on every feed (`bodyLandmarkIndex`).
8
+ *
9
+ * `body.neck` is synthesized at runtime as the midpoint of the two
10
+ * shoulders (no native MediaPipe landmark exists for the neck).
11
+ */
12
+ export declare const BODY_LANDMARK_INDEX: Partial<Record<BodyTarget, number>>;
13
+ /**
14
+ * The pose landmark of the person's own `target` on this feed: MediaPipe's
15
+ * labels follow the image, so a sided target reads the other side's landmark
16
+ * on a mirrored feed (the front webcam) (#298).
17
+ */
18
+ export declare const bodyLandmarkIndex: (target: BodyTarget, feedMirrored: boolean) => number | undefined;
2
19
  type BodyTrackerProps = PropsWithChildren & {
3
20
  bodyIndex?: number;
4
21
  /**