@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,106 @@
1
+ import { XRQualityConfigInput } from '../quality/types';
2
+ import { XRCameraRequest } from '../types/compositor';
3
+ import { HolisticDelegate, HolisticHandsOption } from '../types/holistic';
4
+ import { XRLifecycleConfig, XRPerfConfig } from '../types/model';
5
+ import { SegmentationQuality, SemanticSegmentationPreset } from '../types/segmentation';
6
+ /**
7
+ * Persistent, creator-facing tracking configuration: which trackers an
8
+ * experience uses and how they are tuned. Plain JSON only — no streams,
9
+ * textures, model instances, calibration measurements or session state
10
+ * (those are runtime resources with their own owners). `version` gates
11
+ * migration; unknown fields are dropped on parse.
12
+ */
13
+ export type XRTrackingConfig = {
14
+ version: 1;
15
+ trackers: {
16
+ face: {
17
+ enabled: boolean;
18
+ numFaces: number;
19
+ targetFps: number | null;
20
+ holdMs: number;
21
+ predictMs: number;
22
+ smoothing: number;
23
+ };
24
+ hand: {
25
+ enabled: boolean;
26
+ targetFps: number | null;
27
+ };
28
+ gesture: {
29
+ enabled: boolean;
30
+ targetFps: number | null;
31
+ };
32
+ body: {
33
+ enabled: boolean;
34
+ targetFps: number | null;
35
+ };
36
+ holistic: {
37
+ enabled: boolean;
38
+ targetFps: number | null;
39
+ hands: HolisticHandsOption;
40
+ holdMs: number;
41
+ predictMs: number;
42
+ analysisMaxDimension: number;
43
+ outputFaceBlendshapes: boolean;
44
+ /** Detector / presence / landmark confidences, 0..1. */
45
+ confidence: number;
46
+ delegate: HolisticDelegate;
47
+ };
48
+ segmentation: {
49
+ enabled: boolean;
50
+ quality: SegmentationQuality;
51
+ };
52
+ semanticSegmentation: {
53
+ enabled: boolean;
54
+ preset: SemanticSegmentationPreset;
55
+ quality: SegmentationQuality;
56
+ };
57
+ };
58
+ /** Session perf config (`<XRProvider perf>`). */
59
+ perf: Required<Pick<XRPerfConfig, "targetFps" | "camRes" | "cameraZoom">> & {
60
+ analysisScale: number;
61
+ };
62
+ lifecycle: Required<XRLifecycleConfig>;
63
+ /** Adaptive quality: a partial config, or `false` to run without the controller. */
64
+ quality: XRQualityConfigInput | false;
65
+ /** Which camera to open and how to mirror it. */
66
+ camera: {
67
+ facingMode: NonNullable<XRCameraRequest["facingMode"]>;
68
+ deviceId: string | null;
69
+ mirrored: boolean | "auto";
70
+ };
71
+ fallbacks: {
72
+ /** What the app does when the capability check blocks tracking: refuse, or run without trackers. */
73
+ onUnsupported: "block" | "degrade";
74
+ /** Preferred MediaPipe backend for models that offer the choice. */
75
+ delegate: HolisticDelegate;
76
+ };
77
+ /** Model asset overrides by tracker (URL); `null` keeps the SDK default. */
78
+ assets: {
79
+ holisticModelUrl: string | null;
80
+ semanticSegmentationModelUrl: string | null;
81
+ };
82
+ /** Wall-clock ms of the last change (0 for defaults). */
83
+ updatedAt: number;
84
+ };
85
+ /** Deep partial: every leaf optional. */
86
+ export type XRTrackingConfigInput = {
87
+ version?: number;
88
+ trackers?: {
89
+ [K in keyof XRTrackingConfig["trackers"]]?: Partial<XRTrackingConfig["trackers"][K]>;
90
+ };
91
+ perf?: Partial<XRTrackingConfig["perf"]>;
92
+ lifecycle?: Partial<XRTrackingConfig["lifecycle"]>;
93
+ quality?: XRQualityConfigInput | false;
94
+ camera?: Partial<XRTrackingConfig["camera"]>;
95
+ fallbacks?: Partial<XRTrackingConfig["fallbacks"]>;
96
+ assets?: Partial<XRTrackingConfig["assets"]>;
97
+ updatedAt?: number;
98
+ };
99
+ export type XRTrackerKind = keyof XRTrackingConfig["trackers"];
100
+ export type XRTrackingConfigParseResult = {
101
+ config: XRTrackingConfig;
102
+ /** True when the stored document came from another version (or none) and was migrated / defaulted. */
103
+ migrated: boolean;
104
+ /** Fields that were dropped or clamped. */
105
+ warnings: string[];
106
+ };
@@ -0,0 +1,38 @@
1
+ import { XRModel } from '../constants';
2
+ import { toCameraRequest, toProviderProps, toTrackerProps } from './apply';
3
+ import { TrackingConfigStorage } from './storage';
4
+ import { XRTrackerKind, XRTrackingConfig, XRTrackingConfigInput } from './types';
5
+ export type UseXRTrackingConfigOptions = {
6
+ storageKey?: string;
7
+ /** `false` keeps the config in memory only. Default `true`. */
8
+ persist?: boolean;
9
+ storage?: TrackingConfigStorage | null;
10
+ /** Defaults for this app, applied under anything persisted. */
11
+ initial?: XRTrackingConfigInput;
12
+ };
13
+ export type UseXRTrackingConfigResult = {
14
+ config: XRTrackingConfig;
15
+ /** True once storage was read (or persistence is off). */
16
+ hydrated: boolean;
17
+ /** Warnings from the last load / update (dropped or clamped fields, migration). */
18
+ warnings: string[];
19
+ update: (patch: XRTrackingConfigInput) => XRTrackingConfig;
20
+ /** Back to `initial` over the defaults; clears storage. */
21
+ reset: () => XRTrackingConfig;
22
+ /** Replace from a JSON string (an import); invalid input keeps the current config and reports warnings. */
23
+ importJson: (json: string) => XRTrackingConfig;
24
+ /** The serialized document. */
25
+ json: string;
26
+ providerProps: ReturnType<typeof toProviderProps>;
27
+ cameraRequest: ReturnType<typeof toCameraRequest>;
28
+ trackerProps: <K extends XRTrackerKind>(kind: K) => ReturnType<typeof toTrackerProps<K>>;
29
+ modelOptions: (model: XRModel) => Record<string, unknown>;
30
+ enabledModels: XRModel[];
31
+ };
32
+ /**
33
+ * Persistent tracking configuration for an app: load (with migration),
34
+ * validate, update, reset, serialize, and project onto `<XRProvider>`,
35
+ * tracker components and model options. Mount it ABOVE `<XRProvider>` so the
36
+ * provider props come from it; it needs no session.
37
+ */
38
+ export declare const useXRTrackingConfig: (options?: UseXRTrackingConfigOptions) => UseXRTrackingConfigResult;
package/dist/tracking.cjs CHANGED
@@ -1 +1,10 @@
1
- "use strict";var Q=Object.create;var U=Object.defineProperty;var ee=Object.getOwnPropertyDescriptor;var te=Object.getOwnPropertyNames;var ne=Object.getPrototypeOf,re=Object.prototype.hasOwnProperty;var oe=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of te(t))!re.call(e,o)&&o!==r&&U(e,o,{get:()=>t[o],enumerable:!(n=ee(t,o))||n.enumerable});return e};var z=(e,t,r)=>(r=e!=null?Q(ne(e)):{},oe(t||!e||!e.__esModule?U(r,"default",{value:e,enumerable:!0}):r,e));Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const A=require("./index-CyUUurQT.cjs"),L=require("react/jsx-runtime"),y=require("@react-three/fiber"),s=require("react"),se=require("three"),F=require("./index-DCiMbxC3.cjs"),j=require("./renderLayers-lDtL0_43.cjs"),w=require("./index-BpEf2BBb.cjs"),ue=require("./useFaceResults-wBJF3zyp.cjs"),I=require("./useFaceInfo-BJ8-_MOs.cjs"),S=require("./getFaceInfo-fA1bFBub.cjs"),ce=require("./drawNormalizedCrop-B-7zU-Xw.cjs");function ae(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const P=ae(se),ie={"hand.wrist":0,"hand.thumbTip":4,"hand.indexTip":8,"hand.middleTip":12,"hand.ringTip":16,"hand.pinkyTip":20,"hand.indexBase":5,"hand.middleBase":9,"hand.ringBase":13,"hand.pinkyBase":17};function le(e,t,r=0){var o;const n=(o=e==null?void 0:e.hands)!=null&&o.length?e.hands:e!=null&&e.coordinates?[{coordinates:e.coordinates,gesture:e.gesture,handedness:e.handedness}]:[];if(n.length){if(t){const c=n.find(a=>a.handedness===t);if(c)return c}return n[r]??n[0]}}const de=({children:e,hand:t,handIndex:r=0,targetFps:n,active:o=!0})=>{const c=s.useRef(null),a=s.useMemo(()=>n===void 0?void 0:{targetFps:n},[n]),{ready:l,node:m}=A.useXRModel(F.XRModel.HAND_TRACKER,a,o),{camera:u}=y.useThree(),i=s.useRef(u);i.current!==u&&(i.current=u);const d=s.useRef(null);y.useFrame(()=>{var E;if(!l||!m||!c.current)return;const T=le(m,t,r);d.current=T??null;const h=(E=T==null?void 0:T.coordinates)==null?void 0:E[0];if(!h){c.current.visible=!1;return}const R=G(h,i.current);c.current.visible=!0,c.current.position.copy(R)});const p=s.useCallback(T=>{var E,g;const h=ie[T];if(h===void 0)return null;const R=(g=(E=d.current)==null?void 0:E.coordinates)==null?void 0:g[h];return R?{position:G(R,i.current)}:null},[]),f=s.useMemo(()=>({type:"hand",resolveLandmark:p}),[p]);return L.jsx(A.TrackerContext.Provider,{value:f,children:L.jsx("group",{ref:c,renderOrder:j.RENDER_LAYERS.TRACKED,children:e})})},G=(e,t)=>{const r=new P.Vector3(e.x,e.y,e.z);r.unproject(t);const n=r.sub(t.position).normalize(),o=-t.position.z/n.z;return t.position.clone().add(n.multiplyScalar(o))},he={"hand.wrist":0,"hand.thumbTip":4,"hand.indexTip":8,"hand.middleTip":12,"hand.ringTip":16,"hand.pinkyTip":20,"hand.indexBase":5,"hand.middleBase":9,"hand.ringBase":13,"hand.pinkyBase":17},fe=({children:e,targetFps:t,active:r=!0})=>{const n=s.useRef(null),o=s.useMemo(()=>t===void 0?void 0:{targetFps:t},[t]),{ready:c,node:a}=A.useXRModel(F.XRModel.GESTURE_TRACKER,o,r),{camera:l}=y.useThree(),m=s.useRef(l);m.current!==l&&(m.current=l);const u=s.useRef(null);y.useFrame(()=>{var T;if(!c||!a||!n.current)return;u.current=a;const p=(T=a==null?void 0:a.coordinates)==null?void 0:T[0];if(!p){n.current.visible=!1;return}const f=H(p,m.current);n.current.visible=!0,n.current.position.copy(f)});const i=s.useCallback(p=>{var h,R;const f=he[p];if(f===void 0)return null;const T=(R=(h=u.current)==null?void 0:h.coordinates)==null?void 0:R[f];return T?{position:H(T,m.current)}:null},[]),d=s.useMemo(()=>({type:"hand",resolveLandmark:i}),[i]);return L.jsx(A.TrackerContext.Provider,{value:d,children:L.jsx("group",{ref:n,renderOrder:j.RENDER_LAYERS.TRACKED,children:e})})},H=(e,t)=>{const r=new P.Vector3(e.x,e.y,e.z);r.unproject(t);const n=r.sub(t.position).normalize(),o=-t.position.z/n.z;return t.position.clone().add(n.multiplyScalar(o))},pe={"body.head":0,"body.leftShoulder":11,"body.rightShoulder":12,"body.leftElbow":13,"body.rightElbow":14,"body.leftWrist":15,"body.rightWrist":16,"body.leftHip":23,"body.rightHip":24,"body.leftKnee":25,"body.rightKnee":26,"body.leftAnkle":27,"body.rightAnkle":28},Re=({bodyIndex:e=0,active:t=!0,children:r})=>{const n=s.useRef(null),{ready:o,node:c}=A.useXRModel(F.XRModel.BODY_TRACKER,void 0,t),{camera:a}=y.useThree(),l=s.useRef(a);l.current!==a&&(l.current=a);const m=s.useRef(null);y.useFrame(()=>{if(!o||!c||!n.current)return;const d=c;m.current=d;const p=d.getLandmarks2D(e),f=p==null?void 0:p[0];if(!f){n.current.visible=!1;return}const T=B(f,l.current);n.current.visible=!0,n.current.position.copy(T)});const u=s.useCallback(d=>{const p=m.current;if(!p)return null;const f=p.getLandmarks2D(e);if(!f)return null;if(d==="body.neck"){const R=f[11],E=f[12];if(!R||!E)return null;const g={x:(R.x+E.x)/2,y:(R.y+E.y)/2,z:(R.z+E.z)/2};return{position:B(g,l.current)}}const T=pe[d];if(T===void 0)return null;const h=f[T];return h?{position:B(h,l.current)}:null},[e]),i=s.useMemo(()=>({type:"body",resolveLandmark:u}),[u]);return L.jsx(A.TrackerContext.Provider,{value:i,children:L.jsx("group",{ref:n,renderOrder:j.RENDER_LAYERS.TRACKED,children:r})})},B=(e,t)=>{const r=new P.Vector3(e.x,e.y,e.z);r.unproject(t);const n=r.sub(t.position).normalize(),o=-t.position.z/n.z;return t.position.clone().add(n.multiplyScalar(o))},O=["portrait"],Ee=({type:e,active:t=!0,children:r})=>(A.useXRModel(F.XRModel.BACKGROUND_SEGMENTATION,{type:e},t),s.useEffect(()=>{O.includes(e)||console.warn(`[Segmentation] unsupported type "${e}"; valid values: ${O.join(", ")}`)},[e]),L.jsx(L.Fragment,{children:r})),me=800,Te=200,ge=()=>({armed:!1,armStart:null,holdStart:null,fired:!1}),Se=(e,{isTrigger:t,gesture:r,now:n,mode:o,debounceMs:c,holdMs:a})=>{if(e.fired)return null;if(o==="hold"){if(t&&r){if(e.holdStart===null&&(e.holdStart=n),n-e.holdStart>=a)return e.fired=!0,r}else e.holdStart=null;return null}return e.armed?t&&r?(e.fired=!0,r):null:(t?e.armStart=null:(e.armStart===null&&(e.armStart=n),n-e.armStart>=c&&(e.armed=!0)),null)};function Ae({gestures:e,mode:t="arm",debounceMs:r=me,holdMs:n=Te,onTrigger:o,enabled:c=!0}){const{ready:a,node:l}=A.useXRModel(F.XRModel.GESTURE_TRACKER),m=s.useRef(o);s.useEffect(()=>{m.current=o},[o]);const u=s.useRef(new Set);s.useEffect(()=>{u.current=new Set(Array.isArray(e)?e:[e])},[e]);const i=s.useRef(ge());y.useFrame(()=>{if(!c||!a||!l)return;const d=l.gesture,p=!!(d&&u.current.has(d)),f=Se(i.current,{isTrigger:p,gesture:d,now:performance.now(),mode:t,debounceMs:r,holdMs:n});f&&m.current(f)})}const ye=e=>(Ae(e),null),Fe=(e,t)=>t&&!e?"begin":!t&&e?"end":t?"stay":"none",Le={face:null,faces:[],faceCount:0,detected:!1,justDetected:!1,justLost:!1,phase:"none"},_e=({faceIndex:e=0,numFaces:t,...r}={})=>{const n=Number.isFinite(e)?Math.max(0,Math.round(e)):0,o=I.useFaceInfos({...r,numFaces:Math.max(t??n+1,n+1)}),c=s.useRef([]),a=s.useRef(n),l=s.useRef({detected:!1,faceIndex:n}),[m,u]=s.useState(Le),i=s.useRef(m);return s.useEffect(()=>{c.current=o,a.current=n},[o,n]),y.useFrame(()=>{const d=c.current,p=a.current,f=d[p]??null,T=!!f,h=l.current.faceIndex===p&&l.current.detected,R=Fe(h,T);l.current={detected:T,faceIndex:p};const E={face:f,faces:d,faceCount:d.length,detected:T,justDetected:R==="begin",justLost:R==="end",phase:R},g=i.current;g.face===E.face&&g.faces===E.faces&&g.faceCount===E.faceCount&&g.detected===E.detected&&g.justDetected===E.justDetected&&g.justLost===E.justLost&&g.phase===E.phase||(i.current=E,u(E))}),m},be=["_neutral","browDownLeft","browDownRight","browInnerUp","browOuterUpLeft","browOuterUpRight","cheekPuff","cheekSquintLeft","cheekSquintRight","eyeBlinkLeft","eyeBlinkRight","eyeLookDownLeft","eyeLookDownRight","eyeLookInLeft","eyeLookInRight","eyeLookOutLeft","eyeLookOutRight","eyeLookUpLeft","eyeLookUpRight","eyeSquintLeft","eyeSquintRight","eyeWideLeft","eyeWideRight","jawForward","jawLeft","jawOpen","jawRight","mouthClose","mouthDimpleLeft","mouthDimpleRight","mouthFrownLeft","mouthFrownRight","mouthFunnel","mouthLeft","mouthLowerDownLeft","mouthLowerDownRight","mouthPressLeft","mouthPressRight","mouthPucker","mouthRight","mouthRollLower","mouthRollUpper","mouthShrugLower","mouthShrugUpper","mouthSmileLeft","mouthSmileRight","mouthStretchLeft","mouthStretchRight","mouthUpperUpLeft","mouthUpperUpRight","noseSneerLeft","noseSneerRight"],K=({source:e,face:t,canvas:r,outputSize:n,padding:o=.2})=>ce.drawNormalizedCrop({source:e,bounds:t.bounds,canvas:r,outputSize:n,padding:o}),ke=["browRaise","eyeBlink","eyeBlinkLeft","eyeBlinkRight","eyeBlinkEither","headUp","headDown","headTurnLeft","headTurnRight","mouthOpen","mouthPout","headTiltLeft","headTiltRight"],_=(e=.5)=>({threshold:e,releaseThreshold:Math.max(0,e-.15),holdMs:50}),b={threshold:Math.PI/18,releaseThreshold:Math.PI/30,holdMs:80},Y={browRaise:_(.45),eyeBlink:_(.55),eyeBlinkLeft:_(.55),eyeBlinkRight:_(.55),eyeBlinkEither:_(.55),headUp:b,headDown:b,headTurnLeft:b,headTurnRight:b,mouthOpen:_(.45),mouthPout:_(.5),headTiltLeft:b,headTiltRight:b},k=e=>Math.max(0,e),N=(e,t)=>e!==void 0&&Number.isFinite(e)?e:t,V=(e,t={})=>{const r=Y[e],n=Math.max(0,N(t.threshold,r.threshold));return{threshold:n,releaseThreshold:Math.min(n,Math.max(0,N(t.releaseThreshold,r.releaseThreshold))),holdMs:Math.max(0,N(t.holdMs,r.holdMs))}},M=(e,t,{neutralRotation:r={x:0,y:0,z:0}}={})=>{const n=N(r.x,0),o=N(r.y,0),c=N(r.z,0);switch(t){case"browRaise":return Math.max(S.getFaceBlendshape(e,"browInnerUp"),S.getFaceBlendshape(e,"browOuterUpLeft"),S.getFaceBlendshape(e,"browOuterUpRight"));case"eyeBlink":return Math.min(S.getFaceBlendshape(e,"eyeBlinkLeft"),S.getFaceBlendshape(e,"eyeBlinkRight"));case"eyeBlinkLeft":return S.getFaceBlendshape(e,"eyeBlinkRight");case"eyeBlinkRight":return S.getFaceBlendshape(e,"eyeBlinkLeft");case"eyeBlinkEither":return Math.max(S.getFaceBlendshape(e,"eyeBlinkLeft"),S.getFaceBlendshape(e,"eyeBlinkRight"));case"mouthOpen":return S.getFaceBlendshape(e,"jawOpen");case"mouthPout":return S.getFaceBlendshape(e,"mouthPucker");case"headUp":return k(e.pose.rotation.x-n);case"headDown":return k(n-e.pose.rotation.x);case"headTurnLeft":return k(e.pose.rotation.y-o);case"headTurnRight":return k(o-e.pose.rotation.y);case"headTiltLeft":return k(e.pose.rotation.z-c);case"headTiltRight":return k(c-e.pose.rotation.z)}},De=(e,t,r={})=>M(e,t,r)>=V(t,r).threshold,Ne=(e,t,r={})=>{let n=null,o=0;for(const c of e){const a=M(c,t,r);(!n||a>o)&&(n=c,o=a)}return{face:n,value:o}},X=e=>({action:e,active:!1,value:0,justStarted:!1,justEnded:!1,phase:"none",holdStartedAt:null}),we=(e,t,r,n,o)=>{const c=e.phase==="begin";if(e.value=t,e.justStarted=!1,e.justEnded=!1,e.phase=e.active?"stay":"none",!n)return e.holdStartedAt=null,e.active&&(e.active=!1,e.justEnded=!0,e.phase="end"),e;if(e.active){if(t<=o.releaseThreshold){if(c)return e;e.active=!1,e.justEnded=!0,e.phase="end"}return e}return t<o.threshold?(e.holdStartedAt=null,e):(e.holdStartedAt===null&&(e.holdStartedAt=r),r-e.holdStartedAt>=o.holdMs&&(e.active=!0,e.justStarted=!0,e.phase="begin",e.holdStartedAt=null),e)},q=e=>({action:e,active:!1,value:0,justStarted:!1,justEnded:!1,phase:"none"}),xe=(e,t,r={})=>{const n=s.useRef(X(t)),o=s.useRef(null),c=s.useRef(t),a=s.useRef({}),[l,m]=s.useState(()=>q(t)),u=s.useRef(l);return s.useEffect(()=>{o.current=e,a.current=r},[e,r]),s.useEffect(()=>{c.current=t,n.current=X(t);const i=q(t);u.current=i,m(i)},[t]),y.useFrame(({clock:i})=>{const d=o.current,p=c.current,f=a.current,T=d?M(d,p,f):0,h=we(n.current,T,i.elapsedTime*1e3,!!d,V(p,f)),R=u.current;if(R.action===h.action&&R.active===h.active&&R.value===h.value&&R.justStarted===h.justStarted&&R.justEnded===h.justEnded&&R.phase===h.phase)return;const E={action:h.action,active:h.active,value:h.value,justStarted:h.justStarted,justEnded:h.justEnded,phase:h.phase};u.current=E,m(E)}),l},Me=["angry","disgust","fear","happy","neutral","sad","surprise","unknown"],D=["angry","disgust","fear","happy","neutral","sad","surprise"],ve=(e,t=.55)=>{let r=-1/0;for(let u=0;u<D.length;u+=1)r=Math.max(r,Number(e[u])||0);const n=new Array(D.length);let o=0;for(let u=0;u<D.length;u+=1){const i=Math.exp((Number(e[u])||0)-r);n[u]=i,o+=i}const c=Object.fromEntries(D.map(u=>[u,0]));let a="unknown",l=0;for(let u=0;u<D.length;u+=1){const i=o?n[u]/o:0,d=D[u];c[d]=i,i>l&&(a=d,l=i)}const m=Number.isFinite(t)?Math.min(1,Math.max(0,t)):.55;return{expression:l>=m?a:"unknown",confidence:l,scores:c}},Be=e=>{const t=e.width*e.height,r=new Float32Array(t*3);for(let n=0,o=0;n<t;n+=1,o+=4)r[n]=e.data[o]/127.5-1,r[t+n]=e.data[o+1]/127.5-1,r[t*2+n]=e.data[o+2]/127.5-1;return r},W="https://huggingface.co/opencv/facial_expression_recognition/resolve/main/facial_expression_recognition_mobilefacenet_2022july_int8.onnx",Ce=e=>`https://cdn.jsdelivr.net/npm/onnxruntime-web@${e.env.versions.web}/dist/`,C=new Map,Oe=e=>{let t=C.get(e);return t||(t=Promise.all([import("onnxruntime-web/wasm"),F.fetchAndVerify(e)]).then(([r,n])=>(r.env.wasm.wasmPaths=Ce(r),r.InferenceSession.create(n,{executionProviders:["wasm"]}))).catch(r=>{throw C.delete(e),r}),C.set(e,t)),t},je=(e,{active:t=!0,targetFps:r=5,minConfidence:n=.55,modelUrl:o=W}={})=>{const{session:c}=F.useXRContext(),a=s.useRef(null),l=s.useRef(null),m=s.useRef(!1),u=s.useRef(-1/0),i=s.useRef(!0),[d,p]=s.useState({status:"idle",result:null,error:null});return s.useEffect(()=>{const f=document.createElement("canvas");return a.current=f,l.current=f.getContext("2d",{willReadFrequently:!0}),i.current=!0,()=>{i.current=!1,a.current=null,l.current=null}},[]),y.useFrame(({clock:f})=>{if(!t||!e||m.current||d.status==="error")return;const T=Number.isFinite(r)&&r>0?r:5,h=f.elapsedTime*1e3;if(h-u.current<1e3/T)return;const R=c.getInputFrame(),E=a.current,g=l.current;if(!R||!E||!g||!K({source:R,face:e,canvas:E,outputSize:{width:112,height:112}}))return;u.current=h,m.current=!0,d.status==="idle"&&p({status:"loading",result:null,error:null});const $=Be(g.getImageData(0,0,112,112));Promise.all([import("onnxruntime-web/wasm"),Oe(o)]).then(async([x,v])=>{const Z=await v.run({[v.inputNames[0]]:new x.Tensor("float32",$,[1,3,112,112])}),J=ve(Z[v.outputNames[0]].data,n);i.current&&p({status:"ready",result:J,error:null})}).catch(x=>{i.current&&p({status:"error",result:null,error:x instanceof Error?x:new Error(String(x))})}).finally(()=>{m.current=!1})}),d};exports.FACE_LANDMARK_INDICES=A.FACE_LANDMARK_INDICES;exports.FaceMesh=A.FaceMesh;exports.FaceTracker=A.FaceTracker;exports.normalizedTrackerPointToTrackerPoint=F.normalizedTrackerPointToTrackerPoint;exports.trackerPointToNormalizedTrackerPoint=F.trackerPointToNormalizedTrackerPoint;exports.BODY_TARGETS=w.BODY_TARGETS;exports.DEFAULT_TRACKING_ANCHOR=w.DEFAULT_TRACKING_ANCHOR;exports.FACE_TARGETS=w.FACE_TARGETS;exports.HAND_TARGETS=w.HAND_TARGETS;exports.TrackingAnchor=w.TrackingAnchor;exports.getTargetNamespace=w.getTargetNamespace;exports.useFaceResults=ue.useFaceResults;exports.useFaceInfo=I.useFaceInfo;exports.useFaceInfos=I.useFaceInfos;exports.DEFAULT_FACE_EXPRESSION_THRESHOLD=S.DEFAULT_FACE_EXPRESSION_THRESHOLD;exports.getFaceBlendshape=S.getFaceBlendshape;exports.getFaceEyeDistance=S.getFaceEyeDistance;exports.hasFaceExpression=S.hasFaceExpression;exports.BodyTracker=Re;exports.DEFAULT_FACE_ACTION_OPTIONS=Y;exports.DEFAULT_FACE_ATTRIBUTE_EXPRESSION_MODEL_URL=W;exports.FACE_ACTION_NAMES=ke;exports.FACE_ATTRIBUTE_EXPRESSION_NAMES=Me;exports.FACE_BLENDSHAPE_NAMES=be;exports.GestureTracker=fe;exports.GestureTrigger=ye;exports.HandTracker=de;exports.SEGMENTATION_TYPES=O;exports.Segmentation=Ee;exports.drawFaceCrop=K;exports.getFaceActionValue=M;exports.getStrongestFaceAction=Ne;exports.hasFaceAction=De;exports.useFaceAction=xe;exports.useFaceAttributeExpression=je;exports.useFaceDetection=_e;
1
+ "use strict";var _t=Object.create;var Be=Object.defineProperty;var mt=Object.getOwnPropertyDescriptor;var At=Object.getOwnPropertyNames;var Ot=Object.getPrototypeOf,gt=Object.prototype.hasOwnProperty;var pt=(e,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let s of At(r))!gt.call(e,s)&&s!==t&&Be(e,s,{get:()=>r[s],enumerable:!(n=mt(r,s))||n.enumerable});return e};var Ge=(e,r,t)=>(t=e!=null?_t(Ot(e)):{},pt(r||!e||!e.__esModule?Be(t,"default",{value:e,enumerable:!0}):t,e));Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Z=require("./index-DE17y0ZI.cjs"),M=require("react/jsx-runtime"),b=require("@react-three/fiber"),o=require("react"),p=require("./index-CfSF8LXa.cjs"),ue=require("./uv-BMFt19bg.cjs"),q=require("./landmarks-BlUqf5MZ.cjs"),I=require("./SegmentationOverlay-D_FWkcyP.cjs"),E=require("./trigger-D0Pm9noT.cjs"),Dt=require("three"),le=require("./index-CGsQWodV.cjs"),j=require("./settings-C63FMBlF.cjs"),ce=require("./selectors-C4X71aoD.cjs"),Ee=require("./segmentation-D9pYO6aR.cjs"),oe=require("./index-D5GTzOzD.cjs"),Y=require("./detector-ijypGtse.cjs"),$=require("./getFaceInfo-B1otSDMX.cjs"),It=require("./useInstructionHold-DwJY1Alr.cjs"),Se=require("./useFaceInfo-BHDNCvsJ.cjs"),Nt=require("./drawNormalizedCrop-B-7zU-Xw.cjs"),ee=require("./select-Ck5LGz-J.cjs"),ae=require("./providers-DHsrhDI2.cjs"),He=require("./landmarkMask-u7es2k4X.cjs");function Ct(e){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:()=>e[t]})}}return r.default=e,Object.freeze(r)}const X=Ct(Dt),Ve={"hand.wrist":0,"hand.thumbTip":4,"hand.indexTip":8,"hand.middleTip":12,"hand.ringTip":16,"hand.pinkyTip":20,"hand.indexBase":5,"hand.middleBase":9,"hand.ringBase":13,"hand.pinkyBase":17};function qe(e,r,t=0){var s;const n=(s=e==null?void 0:e.hands)!=null&&s.length?e.hands:e!=null&&e.coordinates?[{coordinates:e.coordinates,gesture:e.gesture,handedness:e.handedness}]:[];if(n.length){if(r){const u=n.find(l=>l.handedness===r);if(u)return u}return n[t]??n[0]}}const yt=({children:e,hand:r,handIndex:t=0,targetFps:n,active:s=!0})=>{const u=o.useRef(null),l=o.useMemo(()=>n===void 0?void 0:{targetFps:n},[n]),{ready:a,node:i}=q.useXRModel(p.XRModel.HAND_TRACKER,l,s),{camera:c}=b.useThree(),T=o.useRef(c);T.current!==c&&(T.current=c);const f=o.useRef(null);b.useFrame(()=>{var d;if(!a||!i||!u.current)return;const O=qe(i,r,t);f.current=O??null;const S=(d=O==null?void 0:O.coordinates)==null?void 0:d[0];if(!S){u.current.visible=!1;return}const A=p.trackerToWorld(S,T.current);u.current.visible=!0,u.current.position.copy(A)});const h=o.useCallback(O=>{var d,_;const S=Ve[O];if(S===void 0)return null;const A=(_=(d=f.current)==null?void 0:d.coordinates)==null?void 0:_[S];return A?{position:p.trackerToWorld(A,T.current)}:null},[]),R=o.useMemo(()=>({type:"hand",resolveLandmark:h}),[h]);return M.jsx(Z.TrackerContext.Provider,{value:R,children:M.jsx("group",{ref:u,renderOrder:ue.RENDER_LAYERS.TRACKED,children:e})})},Mt={"hand.wrist":0,"hand.thumbTip":4,"hand.indexTip":8,"hand.middleTip":12,"hand.ringTip":16,"hand.pinkyTip":20,"hand.indexBase":5,"hand.middleBase":9,"hand.ringBase":13,"hand.pinkyBase":17},Lt=({children:e,targetFps:r,active:t=!0})=>{const n=o.useRef(null),s=o.useMemo(()=>r===void 0?void 0:{targetFps:r},[r]),{ready:u,node:l}=q.useXRModel(p.XRModel.GESTURE_TRACKER,s,t),{camera:a}=b.useThree(),i=o.useRef(a);i.current!==a&&(i.current=a);const c=o.useRef(null);b.useFrame(()=>{var O;if(!u||!l||!n.current)return;c.current=l;const h=(O=l==null?void 0:l.coordinates)==null?void 0:O[0];if(!h){n.current.visible=!1;return}const R=p.trackerToWorld(h,i.current);n.current.visible=!0,n.current.position.copy(R)});const T=o.useCallback(h=>{var S,A;const R=Mt[h];if(R===void 0)return null;const O=(A=(S=c.current)==null?void 0:S.coordinates)==null?void 0:A[R];return O?{position:p.trackerToWorld(O,i.current)}:null},[]),f=o.useMemo(()=>({type:"hand",resolveLandmark:T}),[T]);return M.jsx(Z.TrackerContext.Provider,{value:f,children:M.jsx("group",{ref:n,renderOrder:ue.RENDER_LAYERS.TRACKED,children:e})})},Ft=({joint:e,along:r=.5,offset:t,children:n})=>{const s=o.useContext(E.HandRigContext),u=o.useRef(null),l=o.useMemo(()=>({transform:{position:new X.Vector3,quaternion:new X.Quaternion},offsetE:new X.Euler,offsetQ:new X.Quaternion,offsetP:new X.Vector3}),[]);b.useFrame(()=>{var h,R,O,S,A,d;const c=u.current;if(!c||!s)return;const{position:T,quaternion:f}=le.handAttachmentLocal(s,e,r,l.transform);l.offsetQ.setFromEuler(l.offsetE.set(((h=t==null?void 0:t.rotation)==null?void 0:h[0])??0,((R=t==null?void 0:t.rotation)==null?void 0:R[1])??0,((O=t==null?void 0:t.rotation)==null?void 0:O[2])??0)),l.offsetP.set(((S=t==null?void 0:t.position)==null?void 0:S[0])??0,((A=t==null?void 0:t.position)==null?void 0:A[1])??0,((d=t==null?void 0:t.position)==null?void 0:d[2])??0),c.position.copy(T).add(l.offsetP.applyQuaternion(f)),c.quaternion.copy(f).multiply(l.offsetQ),c.scale.setScalar((t==null?void 0:t.scale)??1)});const a=!s;if(o.useEffect(()=>{a&&console.warn(`${p.libConfig.loggerPrefix} HandAttachment must be inside a HandRig or HandOccluder`)},[a]),!s)return null;const i=s.bones[e];return i?b.createPortal(M.jsx("group",{ref:u,children:n}),i):null},se=10,J=[0,1,5,9,13,17],bt=-.5,Le=J.length+j.HAND_JOINTS_2D_BONES.length*2+21*se+2+se,ze=(e,r,{inflate:t=1,forearm:n=1.4},s,u=0)=>{let l=u;const a=(m,D)=>{s[l*2]=m,s[l*2+1]=D,l+=1},i=m=>e[m].x*r,c=m=>e[m].y,T=Math.hypot(i(0)-i(9),c(0)-c(9)),f=.12*T*t;let h=0,R=0;for(const m of J)h+=i(m),R+=c(m);h/=J.length,R/=J.length;for(let m=0;m<J.length;m+=1){const D=J[m],y=J[(m+1)%J.length];a(h/r,R),a(i(D)/r,c(D)),a(i(y)/r,c(y))}const O=(m,D,y,g,v)=>{const B=y-m,L=g-D,N=Math.hypot(B,L)||1,k=-L/N*v,w=B/N*v;a((m+k)/r,D+w),a((y+k)/r,g+w),a((y-k)/r,g-w),a((m+k)/r,D+w),a((y-k)/r,g-w),a((m-k)/r,D-w)},S=(m,D,y)=>{for(let g=0;g<se;g+=1){const v=g/se*Math.PI*2,B=(g+1)/se*Math.PI*2;a(m/r,D),a((m+Math.cos(v)*y)/r,D+Math.sin(v)*y),a((m+Math.cos(B)*y)/r,D+Math.sin(B)*y)}};for(const[m,D]of j.HAND_JOINTS_2D_BONES){const y=m===0?f*1.4:f;O(i(m),c(m),i(D),c(D),y)}for(let m=0;m<21;m+=1)S(i(m),c(m),m===0?f*1.6:f);const A=i(0)-i(9),d=c(0)-c(9),_=Math.hypot(A,d)||1,F=n*T,C=i(0)+A/_*F,H=c(0)+d/_*F;if(n>0){const m=f*2,D=-d/_*m,y=A/_*m;a((i(0)+D)/r,c(0)+y),a((C+D)/r,H+y),a((C-D)/r,H-y),a((i(0)+D)/r,c(0)+y),a((C-D)/r,H-y),a((i(0)-D)/r,c(0)-y),S(C,H,m)}else for(let m=0;m<(2+se)*3;m+=1)a(i(0)/r,c(0));return l-u},De=2,Ht=`
2
+ void main() {
3
+ // On the near plane: in front of everything drawn after it.
4
+ gl_Position = vec4(position.xy, -1.0, 1.0);
5
+ }
6
+ `,vt=`
7
+ void main() {
8
+ gl_FragColor = vec4(1.0, 0.2, 0.8, 0.35);
9
+ }
10
+ `,xt=()=>new X.ShaderMaterial({name:"HandCutout",vertexShader:Ht,fragmentShader:vt,depthTest:!0,depthFunc:X.AlwaysDepth,depthWrite:!0,colorWrite:!1,side:X.DoubleSide}),kt=({inflate:e=1,forearm:r=1.4,debug:t=!1,renderOrder:n=-900})=>{const s=ce.useXRModelNode(p.XRModel.HAND_TRACKER),u=b.useThree(h=>h.size),l=b.useThree(h=>h.scene),a=o.useMemo(()=>{const h=new X.BufferGeometry,R=new X.BufferAttribute(new Float32Array(De*Le*3*3),3);return R.setUsage(X.DynamicDrawUsage),h.setAttribute("position",R),h.setDrawRange(0,0),h},[]);o.useEffect(()=>()=>a.dispose(),[a]),o.useEffect(()=>I.registerHandCutoutShape(l,a),[l,a]);const i=o.useMemo(xt,[]);o.useEffect(()=>()=>i.dispose(),[i]),o.useEffect(()=>{i.colorWrite=t,i.transparent=t,i.needsUpdate=!0},[i,t]);const c=o.useMemo(()=>new Float32Array(De*Le*3*2),[]),T=o.useRef(null);o.useEffect(()=>{const h=T.current;if(!(!h||t))return h.layers.enable(I.MADE_UP_CAMERA_LAYER),()=>h.layers.disable(I.MADE_UP_CAMERA_LAYER)},[t]);const f=o.useRef({inflate:e,forearm:r});return f.current={inflate:e,forearm:r},b.useFrame(()=>{const h=(s==null?void 0:s.hands)??[],R=u.width/Math.max(1,u.height);let O=0;for(const d of h.slice(0,De)){const _=d.coordinates;!_||_.length<21||(O+=ze(_,R,f.current,c,O))}const S=a.getAttribute("position"),A=S.array;for(let d=0;d<O;d+=1)A[d*3]=c[d*2],A[d*3+1]=c[d*2+1],A[d*3+2]=0;S.needsUpdate=!0,a.setDrawRange(0,O)},bt),M.jsx("group",{children:M.jsx("mesh",{ref:T,geometry:a,material:i,renderOrder:n,frustumCulled:!1})})},Ie={hovered:!1,grabbed:!1,hand:null},Pt=1.08,Ut=({shape:e="sphere",size:r=.4,position:t,velocity:n,mass:s,bounce:u,grabbable:l=!0,pushable:a=!0,gravity:i=!0,color:c="#f97316",onGrab:T,onRelease:f,onTap:h,onTouch:R,onHoverChange:O,children:S})=>{const A=o.useContext(E.HandTouchContext),d=o.useRef(null),[_,F]=o.useState(Ie),[C,H]=o.useState(null),m={onGrab:T,onRelease:f,onTap:h,onTouch:R,onHoverChange:O},D=o.useRef(m);D.current=m;const y=o.useRef(L=>{var k,w,x,P,Q,W;const N=D.current;switch(L.type){case"grab":F({hovered:!1,grabbed:!0,hand:L.hand}),(k=N.onGrab)==null||k.call(N,L);break;case"release":F(Ie),(w=N.onRelease)==null||w.call(N,L);break;case"hoverstart":F(U=>U.grabbed?U:{hovered:!0,grabbed:!1,hand:L.hand}),(x=N.onHoverChange)==null||x.call(N,!0,L.hand);break;case"hoverend":F(U=>U.grabbed?U:Ie),(P=N.onHoverChange)==null||P.call(N,!1,L.hand);break;case"tap":(Q=N.onTap)==null||Q.call(N,L);break;case"touch":(W=N.onTouch)==null||W.call(N,L);break}}),g=o.useRef({shape:e,size:r,position:t,velocity:n,mass:s,bounce:u,grabbable:l,pushable:a,gravity:i});o.useEffect(()=>{const L=d.current;if(!A||!L)return;const N=A.world.add(g.current);L.position.copy(N.position);const k=A.register(N,{object:L,onEvent:y});return H(N),()=>{k(),A.world.remove(N),H(null)}},[A]),o.useEffect(()=>{C&&(C.shape=e,C.size=Math.max(1e-4,r),C.radius=C.size/2,C.mass=Math.max(1e-6,s??C.size**3),C.bounce=u,C.grabbable=l,C.pushable=a,C.gravity=i)},[C,e,r,s,u,l,a,i]);const v=!A;o.useEffect(()=>{v&&console.warn(`${p.libConfig.loggerPrefix} Touchable must be inside a HandTouch`)},[v]);const B=S===void 0?M.jsx(wt,{shape:e,size:r,color:c,state:_}):typeof S=="function"?S(_):S;return M.jsx("group",{ref:d,children:M.jsx("group",{scale:_.grabbed?Pt:1,children:B})})},wt=({shape:e,size:r,color:t,state:n})=>M.jsxs("mesh",{children:[e==="box"?M.jsx("boxGeometry",{args:[r,r,r]}):M.jsx("sphereGeometry",{args:[r/2,32,20]}),M.jsx("meshStandardMaterial",{color:t,emissive:t,emissiveIntensity:n.grabbed?.45:n.hovered?.25:0,roughness:.45,metalness:.05})]}),Te={leftShoulder:11,rightShoulder:12,leftWrist:15,rightWrist:16},Bt=0,Gt=[[5,8],[9,12],[13,16],[17,20]],_e={smile:.3,mouthOpen:.25,minVisibility:.5,fingerExtension:1.25},Je=()=>({facePresent:!1,leftHandPresent:!1,rightHandPresent:!1,posePresent:!1,smile:0,mouthOpen:0,smiling:!1,mouthIsOpen:!1,leftHandRaised:!1,rightHandRaised:!1,leftPalmOpen:!1,rightPalmOpen:!1,greeting:null}),je=(e,r)=>Math.hypot(e.x-r.x,e.y-r.y),Fe=(e,r=_e.fingerExtension)=>{if(!e||e.landmarks.length<21)return!1;const t=e.landmarks[Bt];let n=0;for(const[s,u]of Gt){const l=je(e.landmarks[s],t),a=je(e.landmarks[u],t);l>0&&a>=l*r&&(n+=1)}return n>=3},be=(e,r,t=_e.minVisibility)=>{const{pose:n}=e;if(!n||n.landmarks.length<33)return!1;const s=r==="left"?Te.leftWrist:Te.rightWrist,u=r==="left"?Te.leftShoulder:Te.rightShoulder;return n.visibility[s]<t||n.visibility[u]<t?!1:n.landmarks[s].y>n.landmarks[u].y},jt=(e,r={},t=Je())=>{const n={..._e,...r},{face:s,leftHand:u,rightHand:l,pose:a}=e;t.facePresent=s!==null,t.leftHandPresent=u!==null,t.rightHandPresent=l!==null,t.posePresent=a!==null;const i=s==null?void 0:s.blendshapes;return t.smile=i?((i.mouthSmileLeft??0)+(i.mouthSmileRight??0))/2:0,t.mouthOpen=(i==null?void 0:i.jawOpen)??0,t.smiling=s!==null&&t.smile>=n.smile,t.mouthIsOpen=s!==null&&t.mouthOpen>=n.mouthOpen,t.leftHandRaised=be(e,"left",n.minVisibility),t.rightHandRaised=be(e,"right",n.minVisibility),t.leftPalmOpen=Fe(u,n.fingerExtension),t.rightPalmOpen=Fe(l,n.fingerExtension),t.smiling&&t.rightHandRaised&&t.rightPalmOpen?t.greeting="right":t.smiling&&t.leftHandRaised&&t.leftPalmOpen?t.greeting="left":t.greeting=null,t},Kt={node:null,ready:!1,status:"loading",error:null},$e=o.createContext(null),Qe=()=>o.useContext($e)??Kt,Ke=(e,r)=>r?"error":e?e.getStatus():"loading",Yt=({children:e,active:r=!0,onStatusChange:t,modelUrl:n,delegate:s,minFaceDetectionConfidence:u,minFacePresenceConfidence:l,minPoseDetectionConfidence:a,minPosePresenceConfidence:i,minHandLandmarksConfidence:c,outputFaceBlendshapes:T,targetFps:f,hands:h,analysisMaxDimension:R,holdMs:O,predictMs:S})=>{const A=o.useMemo(()=>{const g={};return n!==void 0&&(g.modelUrl=n),s!==void 0&&(g.delegate=s),u!==void 0&&(g.minFaceDetectionConfidence=u),l!==void 0&&(g.minFacePresenceConfidence=l),a!==void 0&&(g.minPoseDetectionConfidence=a),i!==void 0&&(g.minPosePresenceConfidence=i),c!==void 0&&(g.minHandLandmarksConfidence=c),T!==void 0&&(g.outputFaceBlendshapes=T),f!==void 0&&(g.targetFps=f),Object.keys(g).length>0?g:void 0},[s,u,l,c,a,i,n,T,f]),{ready:d,node:_,error:F}=q.useXRModel(p.XRModel.HOLISTIC_TRACKER,A,r);o.useEffect(()=>{_&&_.setOptions(p.resolveHolisticRuntimeOptions({hands:h,analysisMaxDimension:R,holdMs:O,predictMs:S}))},[_,h,R,O,S]);const[C,H]=o.useState(()=>Ke(_,F)),m=o.useRef(C),D=o.useRef(t);D.current=t,b.useFrame(()=>{var v;const g=Ke(_,F);g!==m.current&&(m.current=g,H(g),(v=D.current)==null||v.call(D,g,F??(_==null?void 0:_.getError())??null))});const y=o.useMemo(()=>({node:_,ready:d&&C==="ready",status:C,error:F??(_==null?void 0:_.getError())??null}),[_,d,C,F]);return M.jsx($e.Provider,{value:y,children:e})},Xt=()=>{const{camera:e}=b.useThree(),r=o.useRef(e);return r.current!==e&&(r.current=e),r},ve=(e,r)=>{const t=o.useRef(null),{node:n,ready:s}=Qe(),u=Xt();return b.useFrame(()=>{const l=t.current;if(!l)return;const a=s&&n?e(n.getResult()):null;if(!a){l.visible=!1;return}l.visible=!0,l.position.copy(r(a,u.current))}),{groupRef:t,cameraRef:u,node:n}},Ze=({children:e})=>{const r=o.useRef({x:0,y:0,z:0,visibility:0}),t=ce.useXRMirrored(),{groupRef:n,cameraRef:s,node:u}=ve(i=>{var c;return((c=i.face)==null?void 0:c.landmarks[4])??null},(i,c)=>p.feedToWorld(i,c)),l=o.useCallback((i,c)=>{var h;const T=(h=u==null?void 0:u.getResult().face)==null?void 0:h.landmarks;if(!T||T.length===0)return null;const f=q.resolveFaceAnchorPoint(i,T,c,r.current,t);return f?{position:p.feedToWorld(f,s.current)}:null},[s,u,t]),a=o.useMemo(()=>({type:"face",resolveLandmark:l}),[l]);return M.jsx(Z.TrackerContext.Provider,{value:a,children:M.jsx("group",{ref:n,renderOrder:ue.RENDER_LAYERS.TRACKED,visible:!1,children:e})})};Ze.displayName="HolisticTracker.Face";const et=({hand:e,children:r})=>{const t=o.useCallback(i=>e==="left"?i.leftHand:i.rightHand,[e]),{groupRef:n,cameraRef:s,node:u}=ve(i=>{var c;return((c=t(i))==null?void 0:c.landmarks[0])??null},p.trackerToWorld),l=o.useCallback(i=>{var f;const c=Ve[i];if(c===void 0||!u)return null;const T=(f=t(u.getResult()))==null?void 0:f.landmarks[c];return T?{position:p.trackerToWorld(T,s.current)}:null},[s,u,t]),a=o.useMemo(()=>({type:"hand",resolveLandmark:l}),[l]);return M.jsx(Z.TrackerContext.Provider,{value:a,children:M.jsx("group",{ref:n,renderOrder:ue.RENDER_LAYERS.TRACKED,visible:!1,children:r})})};et.displayName="HolisticTracker.Hand";const tt=({children:e})=>{const{groupRef:r,cameraRef:t,node:n}=ve(l=>{var a;return((a=l.pose)==null?void 0:a.landmarks[0])??null},p.trackerToWorld),s=o.useCallback(l=>{var T;const a=(T=n==null?void 0:n.getResult().pose)==null?void 0:T.landmarks;if(!a)return null;if(l==="body.neck"){const f=a[11],h=a[12];if(!f||!h)return null;const R={x:(f.x+h.x)/2,y:(f.y+h.y)/2,z:(f.z+h.z)/2};return{position:p.trackerToWorld(R,t.current)}}const i=I.BODY_LANDMARK_INDEX[l];if(i===void 0)return null;const c=a[i];return c?{position:p.trackerToWorld(c,t.current)}:null},[t,n]),u=o.useMemo(()=>({type:"body",resolveLandmark:s}),[s]);return M.jsx(Z.TrackerContext.Provider,{value:u,children:M.jsx("group",{ref:r,renderOrder:ue.RENDER_LAYERS.TRACKED,visible:!1,children:e})})};tt.displayName="HolisticTracker.Body";const me=Yt;me.Face=Ze;me.Hand=et;me.Body=tt;const Wt=({type:e,active:r=!0,children:t})=>(q.useXRModel(p.XRModel.BACKGROUND_SEGMENTATION,{type:e},r),o.useEffect(()=>{Ee.SEGMENTATION_TYPES.includes(e)||console.warn(`[Segmentation] unsupported type "${e}"; valid values: ${Ee.SEGMENTATION_TYPES.join(", ")}`)},[e]),M.jsx(M.Fragment,{children:t})),Vt=800,qt=200,zt=()=>({armed:!1,armStart:null,holdStart:null,fired:!1}),Jt=(e,{isTrigger:r,gesture:t,now:n,mode:s,debounceMs:u,holdMs:l})=>{if(e.fired)return null;if(s==="hold"){if(r&&t){if(e.holdStart===null&&(e.holdStart=n),n-e.holdStart>=l)return e.fired=!0,t}else e.holdStart=null;return null}return e.armed?r&&t?(e.fired=!0,t):null:(r?e.armStart=null:(e.armStart===null&&(e.armStart=n),n-e.armStart>=u&&(e.armed=!0)),null)};function $t({gestures:e,mode:r="arm",debounceMs:t=Vt,holdMs:n=qt,onTrigger:s,enabled:u=!0}){const{ready:l,node:a}=q.useXRModel(p.XRModel.GESTURE_TRACKER),i=o.useRef(s);o.useEffect(()=>{i.current=s},[s]);const c=o.useRef(new Set);o.useEffect(()=>{c.current=new Set(Array.isArray(e)?e:[e])},[e]);const T=o.useRef(zt());b.useFrame(()=>{if(!u||!l||!a)return;const f=a.gesture,h=!!(f&&c.current.has(f)),R=Jt(T.current,{isTrigger:h,gesture:f,now:performance.now(),mode:r,debounceMs:t,holdMs:n});R&&i.current(R)})}const Qt=e=>($t(e),null),rt=({source:e,face:r,canvas:t,outputSize:n,padding:s=.2})=>Nt.drawNormalizedCrop({source:e,bounds:r.bounds,canvas:t,outputSize:n,padding:s}),Ae=e=>({value:e,confidence:1}),he=(e,r,t,n)=>({name:e,kind:"face",description:r,defaults:n,measure:s=>s?Ae(t(s)):null}),G=(e,r,t,n)=>({name:e,kind:"hand",description:r,defaults:n,measure:s=>s&&s.length>=21?Ae(t(s)):null}),ie=(e,r,t,n)=>({name:e,kind:"body",description:r,defaults:n,measure:(s,u,l,a)=>s&&s.length>=33?Ae(t(s,(a==null?void 0:a.mirrored)??!1)):null}),Ne=e=>()=>({tracker:new E.OscillationTracker(e),wasPresent:!1}),Ce=(e,r,t)=>r===null?(e.wasPresent=!1,null):(e.wasPresent||e.tracker.reset(),e.wasPresent=!0,Ae(e.tracker.push(r,t))),ye={enterThreshold:.99,exitThreshold:.3,cooldownMs:600},xe={mouthOpen:he("mouthOpen","Jaw open (blendshape jawOpen).",e=>I.getFaceActionValue(e,"mouthOpen")),smile:he("smile","Mean of the two mouthSmile blendshapes.",e=>($.getFaceBlendshape(e,"mouthSmileLeft")+$.getFaceBlendshape(e,"mouthSmileRight"))/2,{enterThreshold:.4}),blink:he("blink","Both eyes closed (min of the eyeBlink blendshapes).",e=>I.getFaceActionValue(e,"eyeBlink"),{enterThreshold:.55,holdMs:50}),browRaise:he("browRaise","Eyebrows raised (max of the brow-up blendshapes).",e=>I.getFaceActionValue(e,"browRaise"),{enterThreshold:.45}),headNod:{name:"headNod",kind:"face",description:"Pitch oscillation: three turning points of at least 0.12 rad within 1.5 s.",defaults:ye,createMemory:Ne({minAmplitude:.12,requiredReversals:3,windowMs:1500}),measure:(e,r,t)=>Ce(r,e?e.pose.rotation.x:null,t)},headShake:{name:"headShake",kind:"face",description:"Yaw oscillation: three turning points of at least 0.15 rad within 1.5 s.",defaults:ye,createMemory:Ne({minAmplitude:.15,requiredReversals:3,windowMs:1500}),measure:(e,r,t)=>Ce(r,e?e.pose.rotation.y:null,t)},pinch:G("pinch","Thumb and index tips touching, relative to palm size.",E.measurePinch,{enterThreshold:.75,exitThreshold:.5}),grab:G("grab","Fist: index to pinky curled toward the wrist.",E.measureGrab,{enterThreshold:.7,exitThreshold:.45}),openPalm:G("openPalm","Index to pinky extended.",E.measureOpenPalm,{enterThreshold:.7,exitThreshold:.45}),handRaised:G("handRaised","Wrist in the upper part of the frame (0 bottom edge, 1 top edge).",E.measureHandHeight,{enterThreshold:.7,exitThreshold:.6}),oneFinger:G("oneFinger","Index extended, other fingers curled (pointing).",e=>E.measureFingerPattern(e,{fingers:[!0,!1,!1,!1]}),{enterThreshold:.65,exitThreshold:.45}),peaceSign:G("peaceSign","Index and middle extended, ring and pinky curled.",e=>E.measureFingerPattern(e,{fingers:[!0,!0,!1,!1]}),{enterThreshold:.65,exitThreshold:.45}),threeFingers:G("threeFingers","Index, middle and ring extended, pinky curled.",e=>E.measureFingerPattern(e,{fingers:[!0,!0,!0,!1]}),{enterThreshold:.65,exitThreshold:.45}),fourFingers:G("fourFingers","Index to pinky extended, thumb tucked.",e=>E.measureFingerPattern(e,{fingers:[!0,!0,!0,!0],thumb:!1}),{enterThreshold:.65,exitThreshold:.45}),fist:G("fist","All four fingers curled and the thumb tucked.",e=>E.measureFingerPattern(e,{fingers:[!1,!1,!1,!1],thumb:!1}),{enterThreshold:.65,exitThreshold:.45}),palm:G("palm","All four fingers extended and the thumb out.",e=>E.measureFingerPattern(e,{fingers:[!0,!0,!0,!0],thumb:!0}),{enterThreshold:.65,exitThreshold:.45}),thumbUp:G("thumbUp","Thumb out and pointing up, fingers curled.",e=>E.measureThumb(e,"up"),{enterThreshold:.6,exitThreshold:.4}),thumbDown:G("thumbDown","Thumb out and pointing down, fingers curled.",e=>E.measureThumb(e,"down"),{enterThreshold:.6,exitThreshold:.4}),wave:{name:"wave",kind:"hand",description:"Wrist swinging side to side: three turning points of at least 0.08 within 1.2 s.",defaults:ye,createMemory:Ne({minAmplitude:.08,requiredReversals:3,windowMs:1200}),measure:(e,r,t)=>Ce(r,e&&e.length>=21?e[0].x:null,t)},armRaisedLeft:ie("armRaisedLeft","Person's own left wrist above their left shoulder, in shoulder widths, on every feed.",(e,r)=>E.measureArmRaise(e,"left",r),{enterThreshold:.3,exitThreshold:.15}),armRaisedRight:ie("armRaisedRight","Person's own right wrist above their right shoulder, in shoulder widths, on every feed.",(e,r)=>E.measureArmRaise(e,"right",r),{enterThreshold:.3,exitThreshold:.15}),armRaised:ie("armRaised","Either wrist above its shoulder.",e=>Math.max(E.measureArmRaise(e,"left"),E.measureArmRaise(e,"right")),{enterThreshold:.3,exitThreshold:.15}),bothArmsRaised:ie("bothArmsRaised","Both wrists above their shoulders.",e=>Math.min(E.measureArmRaise(e,"left"),E.measureArmRaise(e,"right")),{enterThreshold:.3,exitThreshold:.15}),tPose:ie("tPose","Both arms level and outstretched.",E.measureTPose,{enterThreshold:.6,exitThreshold:.4,holdMs:150})},Zt=Object.keys(xe),nt=e=>typeof e=="string"?xe[e]:e,er=e=>e,tr={face:p.XRModel.FACE_TRACKER,hand:p.XRModel.HAND_TRACKER,body:p.XRModel.BODY_TRACKER},Ye=e=>Y.snapshotGestureState(Y.createGestureDetectorState(e)),st=(e,r={})=>{var w;const t=o.useMemo(()=>nt(e),[e]),{active:n=!0,faceIndex:s=0,numFaces:u,hand:l,handIndex:a=0,bodyIndex:i=0,targetFps:c,onBegin:T,onEnd:f,onChange:h,...R}=r,O=tr[t.kind],S=Math.max(u??s+1,s+1),A=o.useMemo(()=>{const x={};return t.kind==="face"&&(x.numFaces=S),c!==void 0&&c>0&&(x.targetFps=c),Object.keys(x).length>0?x:void 0},[t.kind,S,c]),{node:d,ready:_}=q.useXRModel(O,A,n),{camera:F}=b.useThree();o.useEffect(()=>{!d||t.kind!=="face"||d.setCamera(F,s)},[F,t.kind,s,d]);const C=o.useMemo(()=>Y.resolveGestureDetectorOptions(R,Y.resolveGestureDetectorOptions(t.defaults)),[t,R.enterThreshold,R.exitThreshold,R.holdMs,R.cooldownMs,R.minConfidence,R.lostGraceMs]),H=o.useRef(Y.createGestureDetectorState(t.name)),m=o.useRef((w=t.createMemory)==null?void 0:w.call(t)),D=o.useRef($.createFaceInfoTarget()),[y,g]=o.useState(()=>Ye(t.name)),v=o.useRef(y);o.useEffect(()=>{var P;H.current=Y.createGestureDetectorState(t.name),m.current=(P=t.createMemory)==null?void 0:P.call(t);const x=Ye(t.name);v.current=x,g(x)},[t]);const B=o.useRef({onBegin:T,onEnd:f,onChange:h});B.current={onBegin:T,onEnd:f,onChange:h};const L=ce.useXRMirrored(),N=o.useRef({mirrored:L});N.current.mirrored=L;const k=o.useRef({faceIndex:s,hand:l,handIndex:a,bodyIndex:i,active:n});return k.current={faceIndex:s,hand:l,handIndex:a,bodyIndex:i,active:n},b.useFrame(()=>{var re;const x=performance.now(),P=k.current;let Q=null;if(P.active&&_&&d){let z;t.kind==="face"?z=$.getFaceInfo(d,P.faceIndex,D.current):t.kind==="hand"?z=(re=qe(d,P.hand,P.handIndex))==null?void 0:re.coordinates:z=d.getLandmarks2D(P.bodyIndex),Q=t.measure(z,m.current,x,N.current)}const W=Y.stepGestureDetector(H.current,Q,x,C);if(Y.gestureStatesEqual(v.current,W))return;const U=Y.snapshotGestureState(W);v.current=U,g(U);const{onBegin:V,onEnd:te,onChange:K}=B.current;U.justBegan&&(V==null||V(U)),U.justEnded&&(te==null||te(U)),K==null||K(U)}),y},rr=({gesture:e,...r})=>(st(e,r),null),Xe=new WeakMap,nr=(e,r)=>{const{visibility:t,mirrored:n,aspect:s,shapeLimits:u,view:l}=r;if(u||l)return E.createBodyMoveFrame(e,{mirrored:n,visibility:t,aspect:s,limits:u,view:l});const a=Xe.get(e);if(a&&a.mirrored===n&&a.aspect===s)return a;const i=E.createBodyMoveFrame(e,{mirrored:n,visibility:t,aspect:s});return Xe.set(e,i),i},sr=e=>{if(!e)return;const r={};let t=!1;for(const n of Object.keys(e))n in le.BODY_SHAPE_LIMITS&&e[n]!==void 0&&(r[n]=e[n],t=!0);return t?r:void 0},ot=e=>{const{pose:r,move:t,bodyIndex:n=0,active:s=!0,targetFps:u,limits:l,view:a,onBegin:i,onEnd:c,onChange:T,...f}=e,h=t!==void 0?{move:t}:{pose:r},R=t!==void 0?`move:${typeof t=="string"?t:t.name}`:`pose:${It.specKey(r)}`,O=o.useMemo(()=>u!==void 0&&u>0?{targetFps:u}:void 0,[u]),{node:S,ready:A}=q.useXRModel(p.XRModel.BODY_TRACKER,O,s),d=ce.useXRMirrored(),_=ce.useXRFeedAspect(),F=JSON.stringify(l??null),C=o.useMemo(()=>sr(l),[F]),H=JSON.stringify(a??null),m=o.useMemo(()=>a,[H]),D=JSON.stringify(f)+F,y={...f,limits:l},g=o.useRef(null),v=o.useRef("");(g.current===null||v.current!==R)&&(g.current=E.createBodyTrigger(h,y),v.current=R),t!==void 0?g.current.move=E.resolveBodyMove(t):g.current.pose=r;const[B,L]=o.useState(()=>E.snapshotBodyTriggerState(g.current)),N=o.useRef(B);o.useEffect(()=>{const P=E.snapshotBodyTriggerState(g.current);N.current=P,L(P)},[R]),o.useEffect(()=>{g.current&&E.setBodyTriggerOptions(g.current,h,y)},[D]);const k=o.useRef({onBegin:i,onEnd:c,onChange:T});k.current={onBegin:i,onEnd:c,onChange:T};const w=o.useRef(null),x=o.useRef(null);return b.useFrame(()=>{var we;const P=g.current;if(!P)return;const Q=performance.now();let W=null,U=!0;const V=s&&A&&S?S.getLandmarks2D(n):void 0;V&&V.length>=le.BODY_LANDMARK_COUNT?(U=V!==w.current||!x.current,W=U?nr(V,{visibility:(we=S==null?void 0:S.getVisibility)==null?void 0:we.call(S,n),mirrored:d,aspect:_,shapeLimits:C,view:m}):x.current,w.current=V,x.current=W):(w.current=null,x.current=null);const te=E.stepBodyTrigger(P,W,Q,U);if(E.bodyTriggerStatesEqual(N.current,te))return;const K=E.snapshotBodyTriggerState(te);N.current=K,L(K);const{onBegin:re,onEnd:z,onChange:pe}=k.current;K.justBegan&&(re==null||re(K)),K.justEnded&&(z==null||z(K)),pe==null||pe(K)}),B},or=e=>(ot(e),null),Oe=1,ge=Object.freeze({version:Oe,orientation:0,mirrored:"auto",scale:1,offset:Object.freeze({x:0,y:0}),face:null,body:null,updatedAt:0}),at=(e={})=>de(ge,e,0),ar=[0,90,180,270],ir=e=>Math.min(4,Math.max(.25,e)),de=(e,r,t=Date.now())=>({version:Oe,orientation:r.orientation!==void 0&&ar.includes(r.orientation)?r.orientation:e.orientation,mirrored:r.mirrored===!0||r.mirrored===!1||r.mirrored==="auto"?r.mirrored:e.mirrored,scale:r.scale!==void 0&&Number.isFinite(r.scale)&&r.scale>0?ir(r.scale):e.scale,offset:r.offset&&Number.isFinite(r.offset.x)&&Number.isFinite(r.offset.y)?{x:r.offset.x,y:r.offset.y}:{...e.offset},face:r.face!==void 0?r.face:e.face,body:r.body!==void 0?r.body:e.body,updatedAt:t}),it=(e=Date.now())=>de(ge,{},e),cr=e=>e.orientation===0&&e.mirrored==="auto"&&e.scale===1&&e.offset.x===0&&e.offset.y===0,ct=(e,r)=>e.mirrored==="auto"?!1:e.mirrored!==p.isMirroredSourceKind(r),ut=(e,r,t,n={x:0,y:0})=>{let{x:s,y:u}=e;switch(r.orientation){case 90:[s,u]=[1-u,s];break;case 180:[s,u]=[1-s,1-u];break;case 270:[s,u]=[u,1-s];break}return ct(r,t)&&(s=1-s),s=.5+(s-.5)*r.scale+r.offset.x,u=.5+(u-.5)*r.scale+r.offset.y,n.x=s,n.y=u,e.z!==void 0&&(n.z=e.z),n},Re=(e,r)=>e&&r?Math.hypot(e.x-r.x,e.y-r.y):null,lt=Object.freeze({leftTemple:454,rightTemple:234,leftEyeOuter:263,rightEyeOuter:33}),ke=(e,r=Date.now())=>{if(!e||e.length<468)return null;const{leftTemple:t,rightTemple:n,leftEyeOuter:s,rightEyeOuter:u}=lt,l=Re(e[t],e[n]),a=Re(e[s],e[u]);return!l||!a?null:{faceWidth:l,eyeDistance:a,capturedAt:r}},dt=Object.freeze({leftShoulder:11,rightShoulder:12,leftHip:23,rightHip:24}),Pe=(e,r=Date.now())=>{if(!e||e.length<33)return null;const{leftShoulder:t,rightShoulder:n,leftHip:s,rightHip:u}=dt,l=Re(e[t],e[n]),a=Re(e[s],e[u]),i=e[t],c=e[n],T=e[s],f=e[u];if(!l||!a||!i||!c||!T||!f)return null;const h=Math.hypot((i.x+c.x)/2-(T.x+f.x)/2,(i.y+c.y)/2-(T.y+f.y)/2);return{shoulderWidth:l,hipWidth:a,torsoLength:h,capturedAt:r}},ft=(e,r)=>{const t=r.face,n=ke(e,0);return!t||!n?null:t.faceWidth>0&&n.faceWidth>0?n.faceWidth/t.faceWidth:t.eyeDistance>0&&n.eyeDistance>0?n.eyeDistance/t.eyeDistance:null},Tt=(e,r)=>{const t=r.body,n=Pe(e,0);return!t||!n||t.shoulderWidth<=0?null:n.shoulderWidth/t.shoulderWidth},fe="vincentt.xr.calibration",Ue=()=>{try{return typeof localStorage<"u"?localStorage:null}catch{return null}},ht=(e=fe,r=Ue())=>{if(!r)return null;try{const t=r.getItem(e);if(!t)return null;const n=JSON.parse(t);return!n||typeof n!="object"||n.version!==Oe?null:de(ge,{orientation:n.orientation,mirrored:n.mirrored,scale:n.scale,offset:n.offset,face:n.face??null,body:n.body??null},typeof n.updatedAt=="number"?n.updatedAt:0)}catch{return null}},Et=(e,r=fe,t=Ue())=>{if(!t)return!1;try{return t.setItem(r,JSON.stringify(e)),!0}catch{return!1}},Rt=(e=fe,r=Ue())=>{if(r)try{r.removeItem(e)}catch{}},ur=(e={})=>{const{storageKey:r=fe,persist:t=!0}=e,n=e.storage===void 0?void 0:e.storage,s=o.useRef(e.initial),{session:u}=p.useXRContext(),l=o.useSyncExternalStore(d=>u.store.subscribe(d),()=>u.store.getSnapshot().sourceKind,()=>{}),[a,i]=o.useState(()=>at(s.current)),[c,T]=o.useState(!t),f=o.useRef(a);f.current=a,o.useEffect(()=>{if(!t){T(!0);return}const d=ht(r,n);d&&(f.current=d,i(d)),T(!0)},[t,r,n]);const h=o.useCallback(d=>(f.current=d,i(d),t&&Et(d,r,n),d),[t,r,n]),R=o.useCallback(d=>h(de(f.current,d)),[h]),O=o.useCallback(()=>{const d=it();return f.current=d,i(d),t&&Rt(r,n),d},[t,r,n]),S=o.useCallback(d=>{const _=ke(d);return _?(R({face:_}),!0):!1},[R]),A=o.useCallback(d=>{const _=Pe(d);return _?(R({body:_}),!0):!1},[R]);return o.useMemo(()=>({calibration:a,hydrated:c,update:R,reset:O,calibrateFace:S,calibrateBody:A,applyToFeedPoint:(d,_)=>ut(d,a,l,_),faceDistance:d=>ft(d,a),bodyScale:d=>Tt(d,a),sourceKind:l}),[a,c,R,O,S,A,l])},lr=(e,r)=>r&&!e?"begin":!r&&e?"end":r?"stay":"none",dr={face:null,faces:[],faceCount:0,detected:!1,justDetected:!1,justLost:!1,phase:"none"},fr=({faceIndex:e=0,numFaces:r,...t}={})=>{const n=Number.isFinite(e)?Math.max(0,Math.round(e)):0,s=Se.useFaceInfos({...t,numFaces:Math.max(r??n+1,n+1)}),u=o.useRef([]),l=o.useRef(n),a=o.useRef({detected:!1,faceIndex:n}),[i,c]=o.useState(dr),T=o.useRef(i);return o.useEffect(()=>{u.current=s,l.current=n},[s,n]),b.useFrame(()=>{const f=u.current,h=l.current,R=f[h]??null,O=!!R,S=a.current.faceIndex===h&&a.current.detected,A=lr(S,O);a.current={detected:O,faceIndex:h};const d={face:R,faces:f,faceCount:f.length,detected:O,justDetected:A==="begin",justLost:A==="end",phase:A},_=T.current;_.face===d.face&&_.faces===d.faces&&_.faceCount===d.faceCount&&_.detected===d.detected&&_.justDetected===d.justDetected&&_.justLost===d.justLost&&_.phase===d.phase||(T.current=d,c(d))}),i},We=e=>({action:e,active:!1,value:0,justStarted:!1,justEnded:!1,phase:"none"}),Tr=(e,r,t={})=>{const n=o.useRef(I.createFaceActionStepState(r)),s=o.useRef(null),u=o.useRef(r),l=o.useRef({}),[a,i]=o.useState(()=>We(r)),c=o.useRef(a);return o.useEffect(()=>{s.current=e,l.current=t},[e,t]),o.useEffect(()=>{u.current=r,n.current=I.createFaceActionStepState(r);const T=We(r);c.current=T,i(T)},[r]),b.useFrame(({clock:T})=>{const f=s.current,h=u.current,R=l.current,O=f?I.getFaceActionValue(f,h,R):0,S=I.stepFaceActionState(n.current,O,T.elapsedTime*1e3,!!f,I.resolveFaceActionOptions(h,R)),A=c.current;if(A.action===S.action&&A.active===S.active&&A.value===S.value&&A.justStarted===S.justStarted&&A.justEnded===S.justEnded&&A.phase===S.phase)return;const d={action:S.action,active:S.active,value:S.value,justStarted:S.justStarted,justEnded:S.justEnded,phase:S.phase};c.current=d,i(d)}),a},hr=["angry","disgust","fear","happy","neutral","sad","surprise","unknown"],ne=["angry","disgust","fear","happy","neutral","sad","surprise"],Er=(e,r=.55)=>{let t=-1/0;for(let c=0;c<ne.length;c+=1)t=Math.max(t,Number(e[c])||0);const n=new Array(ne.length);let s=0;for(let c=0;c<ne.length;c+=1){const T=Math.exp((Number(e[c])||0)-t);n[c]=T,s+=T}const u=Object.fromEntries(ne.map(c=>[c,0]));let l="unknown",a=0;for(let c=0;c<ne.length;c+=1){const T=s?n[c]/s:0,f=ne[c];u[f]=T,T>a&&(l=f,a=T)}const i=Number.isFinite(r)?Math.min(1,Math.max(0,r)):.55;return{expression:a>=i?l:"unknown",confidence:a,scores:u}},Rr=e=>{const r=e.width*e.height,t=new Float32Array(r*3);for(let n=0,s=0;n<r;n+=1,s+=4)t[n]=e.data[s]/127.5-1,t[r+n]=e.data[s+1]/127.5-1,t[r*2+n]=e.data[s+2]/127.5-1;return t},St="https://huggingface.co/opencv/facial_expression_recognition/resolve/main/facial_expression_recognition_mobilefacenet_2022july_int8.onnx",Sr=e=>`https://cdn.jsdelivr.net/npm/onnxruntime-web@${e.env.versions.web}/dist/`,Me=new Map,_r=e=>{let r=Me.get(e);return r||(r=Promise.all([import("onnxruntime-web/wasm"),p.fetchAndVerify(e)]).then(([t,n])=>(t.env.wasm.wasmPaths=Sr(t),t.InferenceSession.create(n,{executionProviders:["wasm"]}))).catch(t=>{throw Me.delete(e),t}),Me.set(e,r)),r},mr=(e,{active:r=!0,targetFps:t=5,minConfidence:n=.55,modelUrl:s=St}={})=>{const{session:u}=p.useXRContext(),l=o.useRef(null),a=o.useRef(null),i=o.useRef(!1),c=o.useRef(-1/0),T=o.useRef(!0),[f,h]=o.useState({status:"idle",result:null,error:null});return o.useEffect(()=>{const R=document.createElement("canvas");return l.current=R,a.current=R.getContext("2d",{willReadFrequently:!0}),T.current=!0,()=>{T.current=!1,l.current=null,a.current=null}},[]),b.useFrame(({clock:R})=>{if(!r||!e||i.current||f.status==="error")return;const O=Number.isFinite(t)&&t>0?t:5,S=R.elapsedTime*1e3;if(S-c.current<1e3/O)return;const A=u.getInputFrame(),d=l.current,_=a.current;if(!A||!d||!_||!rt({source:A,face:e,canvas:d,outputSize:{width:112,height:112}}))return;c.current=S,i.current=!0,f.status==="idle"&&h({status:"loading",result:null,error:null});const F=Rr(_.getImageData(0,0,112,112));Promise.all([import("onnxruntime-web/wasm"),_r(s)]).then(async([C,H])=>{const m=await H.run({[H.inputNames[0]]:new C.Tensor("float32",F,[1,3,112,112])}),D=Er(m[H.outputNames[0]].data,n);T.current&&h({status:"ready",result:D,error:null})}).catch(C=>{T.current&&h({status:"error",result:null,error:C instanceof Error?C:new Error(String(C))})}).finally(()=>{i.current=!1})}),f};exports.FaceMesh=Z.FaceMesh;exports.FaceTracker=Z.FaceTracker;exports.DEFAULT_HOLISTIC_ANALYSIS_MAX_DIMENSION=p.DEFAULT_HOLISTIC_ANALYSIS_MAX_DIMENSION;exports.DEFAULT_HOLISTIC_HOLD_MS=p.DEFAULT_HOLISTIC_HOLD_MS;exports.DEFAULT_HOLISTIC_MODEL_URL=p.DEFAULT_HOLISTIC_MODEL_URL;exports.DEFAULT_HOLISTIC_PREDICT_MS=p.DEFAULT_HOLISTIC_PREDICT_MS;exports.HAND_JOINT_INDEX=p.HAND_JOINT_INDEX;exports.HAND_JOINT_NAMES=p.HAND_JOINT_NAMES;exports.HAND_POSE_DEFAULT_HOLD_MS=p.HAND_POSE_DEFAULT_HOLD_MS;exports.clearSemanticMask=p.clearSemanticMask;exports.createSemanticMask=p.createSemanticMask;exports.normalizedTrackerPointToTrackerPoint=p.normalizedTrackerPointToTrackerPoint;exports.trackerPointToNormalizedTrackerPoint=p.trackerPointToNormalizedTrackerPoint;exports.FACE_LANDMARK_INDICES=q.FACE_LANDMARK_INDICES;exports.BODY_LANDMARK_INDEX=I.BODY_LANDMARK_INDEX;exports.BodyTracker=I.BodyTracker;exports.CANONICAL_SHOULDER_DISTANCE=I.CANONICAL_SHOULDER_DISTANCE;exports.CANONICAL_TORSO_FIT_DEFAULT_SMOOTHING=I.CANONICAL_TORSO_FIT_DEFAULT_SMOOTHING;exports.CANONICAL_TORSO_INDICES=I.CANONICAL_TORSO_INDICES;exports.CANONICAL_TORSO_LANDMARKS=I.CANONICAL_TORSO_LANDMARKS;exports.CANONICAL_TORSO_POINTS=I.CANONICAL_TORSO_POINTS;exports.CanonicalTorsoFrame=I.CanonicalTorsoFrame;exports.DEFAULT_FACE_ACTION_OPTIONS=I.DEFAULT_FACE_ACTION_OPTIONS;exports.FACE_ACTION_NAMES=I.FACE_ACTION_NAMES;exports.FACE_BLENDSHAPE_NAMES=I.FACE_BLENDSHAPE_NAMES;exports.SHOULDER_OCCLUDER_DEFAULT_OPACITY=I.SHOULDER_OCCLUDER_DEFAULT_OPACITY;exports.SHOULDER_OCCLUDER_V1_PATH=I.SHOULDER_OCCLUDER_V1_PATH;exports.SegmentationOverlay=I.SegmentationOverlay;exports.ShoulderOccluder=I.ShoulderOccluder;exports.bodyLandmarkIndex=I.bodyLandmarkIndex;exports.getFaceActionValue=I.getFaceActionValue;exports.getStrongestFaceAction=I.getStrongestFaceAction;exports.hasFaceAction=I.hasFaceAction;exports.shoulderOccluderUrl=I.shoulderOccluderUrl;exports.solveShoulderPose=I.solveShoulderPose;exports.useCanonicalTorsoFit=I.useCanonicalTorsoFit;exports.useIrisTracking=I.useIrisTracking;exports.BODY_MOVES=E.BODY_MOVES;exports.BODY_MOVE_LIMITS=E.BODY_MOVE_LIMITS;exports.BODY_MOVE_NAMES=E.BODY_MOVE_NAMES;exports.BODY_MOVE_VIEW_LIMITS=E.BODY_MOVE_VIEW_LIMITS;exports.FOREARM_OCCLUDER_FLARE=E.FOREARM_OCCLUDER_FLARE;exports.FOREARM_OCCLUDER_LENGTH=E.FOREARM_OCCLUDER_LENGTH;exports.FOREARM_OCCLUDER_OVERLAP=E.FOREARM_OCCLUDER_OVERLAP;exports.ForearmOccluder=E.ForearmOccluder;exports.HAND_OCCLUDER_RENDER_ORDER=E.HAND_OCCLUDER_RENDER_ORDER;exports.HAND_TATTOO_DEFAULT_SIZE=E.HAND_TATTOO_DEFAULT_SIZE;exports.HAND_TATTOO_RENDER_ORDER=E.HAND_TATTOO_RENDER_ORDER;exports.HAND_TOUCH_DEFAULTS=E.HAND_TOUCH_DEFAULTS;exports.HAND_TOUCH_DEPTH=E.HAND_TOUCH_DEPTH;exports.HAND_TOUCH_POINTER_RADIUS=E.HAND_TOUCH_POINTER_RADIUS;exports.HAND_TOUCH_TIPS=E.HAND_TOUCH_TIPS;exports.HandOccluder=E.HandOccluder;exports.HandRig=E.HandRig;exports.HandTattoo=E.HandTattoo;exports.HandTouch=E.HandTouch;exports.TOUCH_WORLD_DEFAULTS=E.TOUCH_WORLD_DEFAULTS;exports.WRIST_DEPTH_OF_WIDTH=E.WRIST_DEPTH_OF_WIDTH;exports.WRIST_WIDTH_OF_PALM=E.WRIST_WIDTH_OF_PALM;exports.WristAttachment=E.WristAttachment;exports.createForearmGeometry=E.createForearmGeometry;exports.defineBodyMove=E.defineBodyMove;exports.resolveBodyMove=E.resolveBodyMove;exports.useFaceResults=E.useFaceResults;exports.useHandTouch=E.useHandTouch;exports.wristSizeOf=E.wristSizeOf;exports.HAND_RIG_REQUIRED_JOINTS=le.HAND_RIG_REQUIRED_JOINTS;exports.handPoseToScene=le.handPoseToScene;exports.DEFAULT_GESTURE_SETTINGS=j.DEFAULT_GESTURE_SETTINGS;exports.DEFAULT_HOLISTIC_TRACKER_SETTINGS=j.DEFAULT_HOLISTIC_TRACKER_SETTINGS;exports.GESTURE_SETTINGS_FIELDS=j.GESTURE_SETTINGS_FIELDS;exports.HOLISTIC_HANDS_OPTIONS=j.HOLISTIC_HANDS_OPTIONS;exports.HOLISTIC_TRACKER_SETTINGS_FIELDS=j.HOLISTIC_TRACKER_SETTINGS_FIELDS;exports.patchGestureSettings=j.patchGestureSettings;exports.patchHolisticTrackerSettings=j.patchHolisticTrackerSettings;exports.resolveGestureSettings=j.resolveGestureSettings;exports.resolveHolisticTrackerSettings=j.resolveHolisticTrackerSettings;exports.toHolisticTrackerProps=j.toHolisticTrackerProps;exports.SEGMENTATION_TYPES=Ee.SEGMENTATION_TYPES;exports.SEMANTIC_SEGMENTATION_PRESETS=Ee.SEMANTIC_SEGMENTATION_PRESETS;exports.BODY_TARGETS=oe.BODY_TARGETS;exports.DEFAULT_TRACKING_ANCHOR=oe.DEFAULT_TRACKING_ANCHOR;exports.FACE_TARGETS=oe.FACE_TARGETS;exports.HAND_TARGETS=oe.HAND_TARGETS;exports.TrackingAnchor=oe.TrackingAnchor;exports.getTargetNamespace=oe.getTargetNamespace;exports.DEFAULT_GESTURE_DETECTOR_OPTIONS=Y.DEFAULT_GESTURE_DETECTOR_OPTIONS;exports.resolveGestureDetectorOptions=Y.resolveGestureDetectorOptions;exports.DEFAULT_FACE_EXPRESSION_THRESHOLD=$.DEFAULT_FACE_EXPRESSION_THRESHOLD;exports.getFaceBlendshape=$.getFaceBlendshape;exports.getFaceEyeDistance=$.getFaceEyeDistance;exports.hasFaceExpression=$.hasFaceExpression;exports.DEFAULT_POLICY_NUM_FACES=Se.DEFAULT_POLICY_NUM_FACES;exports.useFaceInfo=Se.useFaceInfo;exports.useFaceInfos=Se.useFaceInfos;exports.DEFAULT_SUBJECT_POLICY=ee.DEFAULT_SUBJECT_POLICY;exports.EMPTY_SUBJECT_MEMORY=ee.EMPTY_SUBJECT_MEMORY;exports.XR_MAX_SUBJECTS=ee.XR_MAX_SUBJECTS;exports.associateSubjects=ee.associateSubjects;exports.faceCandidates=ee.faceCandidates;exports.jointCandidates=ee.jointCandidates;exports.selectSubject=ee.selectSubject;exports.IRIS_LANDMARKS=ae.IRIS_LANDMARKS;exports.IRIS_LANDMARK_COUNT=ae.IRIS_LANDMARK_COUNT;exports.PERSON_MASK_LABELS=ae.PERSON_MASK_LABELS;exports.useHairMask=ae.useHairMask;exports.usePersonMask=ae.usePersonMask;exports.useSemanticSegmentationMask=ae.useSemanticSegmentationMask;exports.DEFAULT_SEGMENTATION_OVERLAY_SETTINGS=He.DEFAULT_SEGMENTATION_OVERLAY_SETTINGS;exports.patchSegmentationOverlaySettings=He.patchSegmentationOverlaySettings;exports.resolveSegmentationOverlaySettings=He.resolveSegmentationOverlaySettings;exports.BODY_CALIBRATION_LANDMARKS=dt;exports.BodyTrigger=or;exports.CALIBRATION_STORAGE_KEY=fe;exports.CALIBRATION_VERSION=Oe;exports.DEFAULT_CALIBRATION=ge;exports.DEFAULT_FACE_ATTRIBUTE_EXPRESSION_MODEL_URL=St;exports.DEFAULT_HOLISTIC_SIGNAL_THRESHOLDS=_e;exports.FACE_ATTRIBUTE_EXPRESSION_NAMES=hr;exports.FACE_CALIBRATION_LANDMARKS=lt;exports.GESTURES=xe;exports.GESTURE_NAMES=Zt;exports.GestureListener=rr;exports.GestureTracker=Lt;exports.GestureTrigger=Qt;exports.HAND_CUTOUT_TRIANGLES=Le;exports.HandAttachment=Ft;exports.HandCutout=kt;exports.HandTracker=yt;exports.HolisticTracker=me;exports.Segmentation=Wt;exports.Touchable=Ut;exports.applyCalibrationToFeedPoint=ut;exports.clearCalibration=Rt;exports.createCalibration=at;exports.createHolisticSignals=Je;exports.defineGesture=er;exports.drawFaceCrop=rt;exports.estimateBodyScale=Tt;exports.estimateFaceDistance=ft;exports.getHolisticSignals=jt;exports.isHandRaised=be;exports.isIdentityCalibration=cr;exports.isPalmOpen=Fe;exports.loadCalibration=ht;exports.measureBodyCalibration=Pe;exports.measureFaceCalibration=ke;exports.resetCalibration=it;exports.resolveCalibrationMirror=ct;exports.resolveGestureDefinition=nt;exports.saveCalibration=Et;exports.updateCalibration=de;exports.useBodyTrigger=ot;exports.useFaceAction=Tr;exports.useFaceAttributeExpression=mr;exports.useFaceDetection=fr;exports.useGesture=st;exports.useHolisticTracking=Qe;exports.useXRCalibration=ur;exports.writeHandCutout=ze;