@vincentt-xr/sdk 2.0.0-alpha.8 → 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 (517) hide show
  1. package/GROUNDING.md +4643 -170
  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/gltfLoader.d.ts +16 -0
  18. package/dist/assets/loaders.d.ts +16 -1
  19. package/dist/body-pose/index.d.ts +521 -0
  20. package/dist/body-trigger/__fixtures__/syntheticBody.d.ts +83 -0
  21. package/dist/body-trigger/frame.d.ts +88 -0
  22. package/dist/body-trigger/index.d.ts +6 -0
  23. package/dist/body-trigger/moves.d.ts +235 -0
  24. package/dist/body-trigger/trigger.d.ts +75 -0
  25. package/dist/calibration/calibration.d.ts +11 -6
  26. package/dist/canonicalFace-BHwyCx1c.js +9 -0
  27. package/dist/canonicalFace-C83I225R.cjs +1 -0
  28. package/dist/components/BodyInstruction/BodyPoseHint.d.ts +63 -0
  29. package/dist/components/BodyInstruction/index.d.ts +69 -0
  30. package/dist/components/BodyInstruction/useBodyPose.d.ts +23 -0
  31. package/dist/components/BodyTracker/index.d.ts +10 -2
  32. package/dist/components/BodyTrigger/index.d.ts +49 -0
  33. package/dist/components/Debugger/DebuggerProvider.d.ts +14 -1
  34. package/dist/components/Debugger/DebuggerUI.d.ts +3 -1
  35. package/dist/components/FaceAtlas/FaceAtlasLayer.d.ts +114 -0
  36. package/dist/components/FaceAtlas/MadeUpCamera.d.ts +80 -0
  37. package/dist/components/FaceAtlas/constants.d.ts +8 -0
  38. package/dist/components/FaceAtlas/index.d.ts +7 -0
  39. package/dist/components/FaceAtlas/useFaceAtlasSurface.d.ts +84 -0
  40. package/dist/components/FaceAtlas/useFaceSkin.d.ts +84 -0
  41. package/dist/components/FaceCharacter/ExternalFaceMesh.d.ts +109 -0
  42. package/dist/components/FaceCharacter/FaceExpressionController.d.ts +53 -0
  43. package/dist/components/FaceCharacter/FaceMorph.d.ts +71 -0
  44. package/dist/components/FaceCharacter/FacePiercing.d.ts +65 -0
  45. package/dist/components/FaceCharacter/FaceReprojection.d.ts +85 -0
  46. package/dist/components/FaceCharacter/FaceRig.d.ts +38 -0
  47. package/dist/components/FaceCharacter/FaceSurface.d.ts +49 -0
  48. package/dist/components/FaceCharacter/FaceSurfaceOccluder.d.ts +39 -0
  49. package/dist/components/FaceCharacter/PinToFaceMesh.d.ts +68 -0
  50. package/dist/components/FaceCharacter/index.d.ts +18 -0
  51. package/dist/components/FaceCharacter/useFaceReprojector.d.ts +10 -0
  52. package/dist/components/FaceInset/FaceInset.d.ts +68 -0
  53. package/dist/components/FaceInset/frame.d.ts +94 -0
  54. package/dist/components/FaceInset/index.d.ts +6 -0
  55. package/dist/components/FaceInset/material.d.ts +40 -0
  56. package/dist/components/FaceInset/useFaceInsetTexture.d.ts +37 -0
  57. package/dist/components/FaceInstruction/FaceExpressionHint.d.ts +43 -0
  58. package/dist/components/FaceInstruction/index.d.ts +56 -0
  59. package/dist/components/FaceInstruction/useFaceExpression.d.ts +20 -0
  60. package/dist/components/FaceLiquify/FaceLiquify.d.ts +49 -0
  61. package/dist/components/FaceLiquify/debug.d.ts +37 -0
  62. package/dist/components/FaceLiquify/frame.d.ts +55 -0
  63. package/dist/components/FaceLiquify/index.d.ts +10 -0
  64. package/dist/components/FaceLiquify/material.d.ts +39 -0
  65. package/dist/components/FaceLiquify/pass.d.ts +49 -0
  66. package/dist/components/FaceLiquify/presence.d.ts +25 -0
  67. package/dist/components/FaceLiquify/presets.d.ts +82 -0
  68. package/dist/components/FaceLiquify/selfTest.d.ts +66 -0
  69. package/dist/components/FaceLiquify/target.d.ts +85 -0
  70. package/dist/components/FaceLiquify/warp.d.ts +72 -0
  71. package/dist/components/FaceMesh/canonical/CanonicalFaceMeshRenderer.d.ts +5 -3
  72. package/dist/components/FaceMesh/canonical/geometryGroups.d.ts +21 -0
  73. package/dist/components/FaceMesh/canonical/parseCanonicalFaceModel.d.ts +9 -0
  74. package/dist/components/FaceMesh/index.d.ts +1 -1
  75. package/dist/components/FaceRetouch/Background.d.ts +3 -1
  76. package/dist/components/FaceRetouch/FaceRetouch.d.ts +5 -0
  77. package/dist/components/FaceRetouch/renderState.d.ts +19 -0
  78. package/dist/components/FaceSwap/FaceMirror.d.ts +46 -0
  79. package/dist/components/FaceSwap/FaceSwap.d.ts +58 -0
  80. package/dist/components/FaceSwap/FaceTextureLayer.d.ts +72 -0
  81. package/dist/components/FaceSwap/faceSwapPlan.d.ts +91 -0
  82. package/dist/components/FaceSwap/index.d.ts +13 -0
  83. package/dist/components/FaceSwap/settings.d.ts +300 -0
  84. package/dist/components/FaceSwap/useFaceTexture.d.ts +35 -0
  85. package/dist/components/FaceSwap/useLiveFace.d.ts +38 -0
  86. package/dist/components/FaceSwap/useLiveFaceTexture.d.ts +31 -0
  87. package/dist/components/FaceWarp3D/FaceWarp3D.d.ts +50 -0
  88. package/dist/components/FaceWarp3D/index.d.ts +2 -3
  89. package/dist/components/Faceless/Faceless.d.ts +51 -0
  90. package/dist/components/Faceless/index.d.ts +2 -0
  91. package/dist/components/HairLock/HairLock.d.ts +39 -0
  92. package/dist/components/HairLock/index.d.ts +2 -0
  93. package/dist/components/HairLock/lockGeometry.d.ts +15 -0
  94. package/dist/components/HandCutout/index.d.ts +35 -0
  95. package/dist/components/HandInstruction/HandGestureHint.d.ts +70 -0
  96. package/dist/components/HandInstruction/index.d.ts +74 -0
  97. package/dist/components/HandInstruction/useHandGesture.d.ts +22 -0
  98. package/dist/components/HandRig/ForearmOccluder.d.ts +29 -0
  99. package/dist/components/HandRig/HandAttachment.d.ts +34 -0
  100. package/dist/components/HandRig/HandOccluder.d.ts +55 -0
  101. package/dist/components/HandRig/HandTattoo.d.ts +61 -0
  102. package/dist/components/HandRig/WristAttachment.d.ts +34 -0
  103. package/dist/components/HandRig/index.d.ts +101 -0
  104. package/dist/components/HandRig/useArmMask.d.ts +29 -0
  105. package/dist/components/HandRig/wristSolve.d.ts +69 -0
  106. package/dist/components/HandTouch/HandTouch.d.ts +62 -0
  107. package/dist/components/HandTouch/Touchable.d.ts +36 -0
  108. package/dist/components/HandTouch/index.d.ts +2 -0
  109. package/dist/components/HeadBinding/index.d.ts +14 -0
  110. package/dist/components/HeadOccluder/CanonicalHeadFrame.d.ts +22 -0
  111. package/dist/components/HeadOccluder/Earrings.d.ts +55 -0
  112. package/dist/components/HeadOccluder/HeadAttachment.d.ts +38 -0
  113. package/dist/components/HeadOccluder/NeckOccluder.d.ts +64 -0
  114. package/dist/components/HeadOccluder/earringPlacement.d.ts +31 -0
  115. package/dist/components/HeadOccluder/headAttachmentPoints.d.ts +69 -0
  116. package/dist/components/HeadOccluder/index.d.ts +57 -3
  117. package/dist/components/HeadOccluder/useCanonicalHeadFit.d.ts +36 -0
  118. package/dist/components/HeadOccluder/useLandmarkPoseFit.d.ts +80 -0
  119. package/dist/components/Instruction/HintStage.d.ts +29 -0
  120. package/dist/components/Instruction/InstructionCue.d.ts +126 -0
  121. package/dist/components/Instruction/gestureHold.d.ts +20 -0
  122. package/dist/components/Instruction/ghost.d.ts +129 -0
  123. package/dist/components/Instruction/hintBlend.d.ts +19 -0
  124. package/dist/components/Instruction/hintLook.d.ts +81 -0
  125. package/dist/components/Instruction/hintLoop.d.ts +36 -0
  126. package/dist/components/Instruction/index.d.ts +41 -0
  127. package/dist/components/Instruction/useGhostModel.d.ts +33 -0
  128. package/dist/components/Instruction/useInstructionHold.d.ts +72 -0
  129. package/dist/components/LipEffect/LipEffect.d.ts +22 -2
  130. package/dist/components/LipEffect/LipEffectMaterial.d.ts +62 -10
  131. package/dist/components/LipEffect/LipEffects.d.ts +5 -2
  132. package/dist/components/LipEffect/defaults.d.ts +21 -2
  133. package/dist/components/LipEffect/index.d.ts +1 -1
  134. package/dist/components/LipEffect/lipShading.d.ts +73 -0
  135. package/dist/components/LipEffect/settings.d.ts +117 -13
  136. package/dist/components/LipEffect/shader.d.ts +39 -0
  137. package/dist/components/LipEffect/types.d.ts +82 -10
  138. package/dist/components/LipEffect/useLipDesignTextures.d.ts +6 -0
  139. package/dist/components/LipEffect/uvGuide.d.ts +31 -16
  140. package/dist/components/Makeup/Blush.d.ts +18 -0
  141. package/dist/components/Makeup/Brows.d.ts +20 -0
  142. package/dist/components/Makeup/Contour.d.ts +17 -0
  143. package/dist/components/Makeup/Eyeliner.d.ts +20 -0
  144. package/dist/components/Makeup/Eyeshadow.d.ts +20 -0
  145. package/dist/components/Makeup/Highlighter.d.ts +18 -0
  146. package/dist/components/Makeup/MakeupDesign.d.ts +37 -0
  147. package/dist/components/Makeup/MakeupRegion.d.ts +132 -0
  148. package/dist/components/Makeup/constants.d.ts +44 -0
  149. package/dist/components/Makeup/design.d.ts +106 -0
  150. package/dist/components/Makeup/designSamples.d.ts +42 -0
  151. package/dist/components/Makeup/eyes.d.ts +114 -0
  152. package/dist/components/Makeup/fields.d.ts +10 -0
  153. package/dist/components/Makeup/geometry.d.ts +106 -0
  154. package/dist/components/Makeup/index.d.ts +26 -0
  155. package/dist/components/Makeup/looks.d.ts +28 -0
  156. package/dist/components/Makeup/material.d.ts +239 -0
  157. package/dist/components/Makeup/settings.d.ts +54 -0
  158. package/dist/components/Makeup/shades.d.ts +143 -0
  159. package/dist/components/Makeup/shapes.d.ts +27 -0
  160. package/dist/components/Makeup/skinTone.d.ts +135 -0
  161. package/dist/components/Makeup/types.d.ts +110 -0
  162. package/dist/components/Makeup/useMakeupSkinTone.d.ts +40 -0
  163. package/dist/components/Necklace/Necklace.d.ts +44 -0
  164. package/dist/components/Necklace/index.d.ts +1 -0
  165. package/dist/components/ParticleEmitter/ParticleEmitter.d.ts +69 -0
  166. package/dist/components/ParticleEmitter/index.d.ts +1 -0
  167. package/dist/components/ShoulderOccluder/index.d.ts +43 -0
  168. package/dist/components/ShoulderOccluder/useCanonicalTorsoFit.d.ts +24 -0
  169. package/dist/components/SpringSwing/SpringSwing.d.ts +22 -0
  170. package/dist/components/SpringSwing/index.d.ts +1 -0
  171. package/dist/components/XRScene/renderOutputTarget.d.ts +12 -0
  172. package/dist/components/index.d.ts +8 -0
  173. package/dist/config/index.d.ts +0 -1
  174. package/dist/context-DTxSQvp4.js +13 -0
  175. package/dist/context-hA0Rb2Xa.cjs +1 -0
  176. package/dist/contexts-BH7PdKFS.cjs +1 -0
  177. package/dist/contexts-jak8-tND.js +667 -0
  178. package/dist/coordinates/index.d.ts +2 -0
  179. package/dist/coordinates/side.d.ts +40 -0
  180. package/dist/debug-ui/default-setting.cjs +2 -2
  181. package/dist/debug-ui/face-swap-settings/index.d.ts +22 -0
  182. package/dist/debug-ui/hierarchy-panel/index.d.ts +3 -2
  183. package/dist/debug-ui/index.d.ts +4 -3
  184. package/dist/debug-ui/media-source/index.d.ts +1 -1
  185. package/dist/debug-ui/media-source/session.d.ts +30 -2
  186. package/dist/debug-ui/media-source.cjs +1 -1
  187. package/dist/debug-ui/media-source.js +1 -1
  188. package/dist/debug-ui/object-inspector-panel/index.d.ts +3 -2
  189. package/dist/debug-ui/product-hotspots/index.d.ts +3 -2
  190. package/dist/debug-ui/scene-editor/hierarchy-panel.d.ts +3 -1
  191. package/dist/debug-ui/scene-editor/inspector-panel.d.ts +3 -1
  192. package/dist/debug-ui/screen-image-settings/index.d.ts +3 -1
  193. package/dist/debug-ui/screen-text-settings/ScreenTextSettingsPanel.d.ts +1 -1
  194. package/dist/debug-ui/screen-text-settings/types.d.ts +2 -0
  195. package/dist/debug-ui/settings-panel/index.d.ts +6 -1
  196. package/dist/debug-ui/shared/debugWindow.d.ts +51 -0
  197. package/dist/debug-ui/xr-diagnostics/index.d.ts +3 -2
  198. package/dist/debug-ui.cjs +3 -3
  199. package/dist/debug-ui.js +2250 -2472
  200. package/dist/entries/all.d.ts +3 -1
  201. package/dist/entries/core.d.ts +3 -2
  202. package/dist/entries/face-effects.d.ts +114 -8
  203. package/dist/entries/instructions.d.ts +48 -0
  204. package/dist/entries/internal.d.ts +2 -1
  205. package/dist/entries/low-level.d.ts +28 -1
  206. package/dist/entries/particles.d.ts +11 -0
  207. package/dist/entries/tracking.d.ts +37 -2
  208. package/dist/face-atlas/attributes.d.ts +30 -0
  209. package/dist/face-atlas/eyes.d.ts +272 -0
  210. package/dist/face-atlas/faceAtlas.generated.d.ts +46 -0
  211. package/dist/face-atlas/glsl/atlasVertex.d.ts +46 -0
  212. package/dist/face-atlas/glsl/common.d.ts +55 -0
  213. package/dist/face-atlas/glsl/design.d.ts +49 -0
  214. package/dist/face-atlas/glsl/eyes.d.ts +73 -0
  215. package/dist/face-atlas/glsl/finish.d.ts +24 -0
  216. package/dist/face-atlas/glsl/format.d.ts +4 -0
  217. package/dist/face-atlas/glsl/index.d.ts +59 -0
  218. package/dist/face-atlas/glsl/shading.d.ts +15 -0
  219. package/dist/face-atlas/glsl/shapes.d.ts +66 -0
  220. package/dist/face-atlas/glsl/sparkle.d.ts +19 -0
  221. package/dist/face-atlas/glsl/uniforms.d.ts +106 -0
  222. package/dist/face-atlas/guide.d.ts +51 -0
  223. package/dist/face-atlas/index.d.ts +25 -0
  224. package/dist/face-atlas/lead.d.ts +117 -0
  225. package/dist/face-atlas/madeUpCamera.d.ts +125 -0
  226. package/dist/face-atlas/masks.d.ts +53 -0
  227. package/dist/face-atlas/obj.d.ts +69 -0
  228. package/dist/face-atlas/polylines.d.ts +63 -0
  229. package/dist/face-atlas/probe/FaceSkinProbe.d.ts +208 -0
  230. package/dist/face-atlas/probe/__fixtures__/emulate.d.ts +9 -0
  231. package/dist/face-atlas/probe/__fixtures__/face.d.ts +24 -0
  232. package/dist/face-atlas/probe/constants.d.ts +137 -0
  233. package/dist/face-atlas/probe/glsl.d.ts +43 -0
  234. package/dist/face-atlas/probe/lightFit.d.ts +108 -0
  235. package/dist/face-atlas/probe/schedule.d.ts +44 -0
  236. package/dist/face-atlas/probe/selfTest.d.ts +87 -0
  237. package/dist/face-atlas/probe/stats.d.ts +143 -0
  238. package/dist/face-atlas/probe/targets.d.ts +70 -0
  239. package/dist/face-atlas/probe/unwrap.d.ts +76 -0
  240. package/dist/face-atlas/quality.d.ts +28 -0
  241. package/dist/face-atlas/regions.d.ts +31 -0
  242. package/dist/face-atlas/registry.d.ts +252 -0
  243. package/dist/face-atlas/renderState.d.ts +86 -0
  244. package/dist/face-atlas/selfOcclusion.d.ts +62 -0
  245. package/dist/face-atlas/shading.d.ts +406 -0
  246. package/dist/face-atlas/shapes.d.ts +86 -0
  247. package/dist/face-atlas/sides.d.ts +41 -0
  248. package/dist/face-atlas/skinMask.d.ts +35 -0
  249. package/dist/face-atlas/surface.d.ts +155 -0
  250. package/dist/face-atlas/topology.d.ts +44 -0
  251. package/dist/face-character/__fixtures__/faceImageDetections.d.ts +25 -0
  252. package/dist/face-character/__fixtures__/faceNode.d.ts +22 -0
  253. package/dist/face-character/bindFaceModel.d.ts +106 -0
  254. package/dist/face-character/canonicalFace.d.ts +17 -0
  255. package/dist/face-character/canonicalFaceGeometry.d.ts +11 -0
  256. package/dist/face-character/canonicalFacePositions.d.ts +7 -0
  257. package/dist/face-character/driveFaceModel.d.ts +57 -0
  258. package/dist/face-character/expressionOutputs.d.ts +45 -0
  259. package/dist/face-character/faceExpressions.d.ts +104 -0
  260. package/dist/face-character/faceImageLandmarker.d.ts +93 -0
  261. package/dist/face-character/faceMeshBinding.d.ts +62 -0
  262. package/dist/face-character/faceMorph.d.ts +77 -0
  263. package/dist/face-character/faceMorphs.d.ts +46 -0
  264. package/dist/face-character/facePhoto.d.ts +138 -0
  265. package/dist/face-character/facePiercings.d.ts +116 -0
  266. package/dist/face-character/facePin.d.ts +131 -0
  267. package/dist/face-character/faceReprojection.d.ts +273 -0
  268. package/dist/face-character/faceReprojector.d.ts +171 -0
  269. package/dist/face-character/faceRig.d.ts +176 -0
  270. package/dist/face-character/faceSwapPresence.d.ts +85 -0
  271. package/dist/face-character/faceTexture.d.ts +169 -0
  272. package/dist/face-character/faceTextureBaker.d.ts +86 -0
  273. package/dist/face-character/faceTextureGuide.d.ts +106 -0
  274. package/dist/face-character/faceTextureStats.d.ts +298 -0
  275. package/dist/face-character/faceTransfer.d.ts +396 -0
  276. package/dist/face-character/faceTransferGeometry.d.ts +109 -0
  277. package/dist/face-character/faceTransferSelfTest.d.ts +94 -0
  278. package/dist/face-character/faceWarp3D.d.ts +101 -0
  279. package/dist/face-character/faceless.d.ts +79 -0
  280. package/dist/face-character/featureWarp.d.ts +28 -0
  281. package/dist/face-character/liveFaceRegistry.d.ts +370 -0
  282. package/dist/face-character/liveValue.d.ts +12 -0
  283. package/dist/face-character/memo.d.ts +15 -0
  284. package/dist/face-effects.cjs +2252 -83
  285. package/dist/face-effects.js +14234 -1231
  286. package/dist/face-expression/index.d.ts +182 -0
  287. package/dist/face-info/landmarks.d.ts +17 -3
  288. package/dist/face-info/types.d.ts +20 -3
  289. package/dist/gestures/definitions.d.ts +15 -2
  290. package/dist/gestures/index.d.ts +1 -1
  291. package/dist/gestures/measures.d.ts +21 -8
  292. package/dist/getFaceInfo-B1otSDMX.cjs +1 -0
  293. package/dist/getFaceInfo-Cu4xDWiL.js +62 -0
  294. package/dist/hand/armFit.d.ts +46 -0
  295. package/dist/hand/armMask.d.ts +178 -0
  296. package/dist/hand/handCutout.d.ts +23 -0
  297. package/dist/hand/handCutoutRegistry.d.ts +7 -0
  298. package/dist/hand/handGestures.d.ts +524 -0
  299. package/dist/hand/handPose.d.ts +98 -0
  300. package/dist/hand/handRigSolver.d.ts +159 -0
  301. package/dist/hand/handTattoo.d.ts +81 -0
  302. package/dist/hand/handTouch.d.ts +240 -0
  303. package/dist/hand/wrist.d.ts +44 -0
  304. package/dist/hand/wristFilter.d.ts +44 -0
  305. package/dist/hooks/selectors.d.ts +8 -0
  306. package/dist/hooks/useFaceModelAcquisition.d.ts +38 -0
  307. package/dist/hooks/useTrackerContext.d.ts +6 -0
  308. package/dist/index-B1_TzJaI.js +1104 -0
  309. package/dist/index-BavF06C6.js +190 -0
  310. package/dist/index-BfFmpddl.cjs +21 -0
  311. package/dist/index-BuBzneeW.cjs +46 -0
  312. package/dist/index-CGsQWodV.cjs +1 -0
  313. package/dist/index-CIe7eCMH.js +3200 -0
  314. package/dist/index-CfSF8LXa.cjs +1 -0
  315. package/dist/index-D5GTzOzD.cjs +1 -0
  316. package/dist/index-DBhQzvVa.js +314 -0
  317. package/dist/index-DE17y0ZI.cjs +1 -0
  318. package/dist/index-JII7huPk.js +442 -0
  319. package/dist/index-tpCr9CLj.cjs +1 -0
  320. package/dist/{renderPasses-NnKZVfBy.js → index-w1S7fI2B.js} +219 -247
  321. package/dist/index-zGaqrz_K.js +188 -0
  322. package/dist/instructions.cjs +30 -0
  323. package/dist/instructions.js +1507 -0
  324. package/dist/{internal-vsfNQycj.js → internal-B90P-clC.js} +138 -118
  325. package/dist/internal-Cjinca64.cjs +1 -0
  326. package/dist/internal.cjs +1 -1
  327. package/dist/internal.js +15 -10
  328. package/dist/iris/compute.d.ts +7 -5
  329. package/dist/iris/types.d.ts +6 -4
  330. package/dist/{landmarkMask-CbTFzBYG.js → landmarkMask-BFDyBnKM.js} +6 -6
  331. package/dist/landmarks-BlUqf5MZ.cjs +1 -0
  332. package/dist/landmarks-bftdwq6Z.js +76 -0
  333. package/dist/loaders-BGAUACsd.js +363 -0
  334. package/dist/loaders-BJ1_QCHt.cjs +1 -0
  335. package/dist/low-level.cjs +1 -1
  336. package/dist/low-level.js +666 -602
  337. package/dist/main.cjs +1 -1
  338. package/dist/main.js +866 -1182
  339. package/dist/models/Body/index.d.ts +2 -0
  340. package/dist/models/Face/constants.d.ts +8 -0
  341. package/dist/models/Face/index.d.ts +3 -11
  342. package/dist/models/Face/rotation.d.ts +18 -3
  343. package/dist/models/Hand/HandTracking.d.ts +17 -1
  344. package/dist/models/Segmentation/index.d.ts +2 -0
  345. package/dist/models/nodeSource.d.ts +9 -0
  346. package/dist/particles/emission.d.ts +24 -0
  347. package/dist/particles/eyes.d.ts +24 -0
  348. package/dist/particles/glsl.d.ts +14 -0
  349. package/dist/particles/index.d.ts +10 -0
  350. package/dist/particles/motion.d.ts +42 -0
  351. package/dist/particles/presets.d.ts +12 -0
  352. package/dist/particles/ring.d.ts +58 -0
  353. package/dist/particles/selfTest.d.ts +53 -0
  354. package/dist/particles/settings.d.ts +127 -0
  355. package/dist/particles/shapes.d.ts +29 -0
  356. package/dist/particles/spawner.d.ts +60 -0
  357. package/dist/particles/system.d.ts +64 -0
  358. package/dist/particles.cjs +122 -0
  359. package/dist/particles.js +774 -0
  360. package/dist/product.cjs +1 -1
  361. package/dist/product.js +29 -29
  362. package/dist/{providers-C0Dlhh9Z.js → providers-C8rE26Uf.js} +127 -126
  363. package/dist/providers-DHsrhDI2.cjs +62 -0
  364. package/dist/render/renderPasses.d.ts +8 -0
  365. package/dist/render/sceneBeforeRender.d.ts +12 -0
  366. package/dist/{renderGroups-CN1cGFUo.js → renderGroups-B38pUaX2.js} +1 -1
  367. package/dist/{renderGroups-O4KmaMl9.cjs → renderGroups-Cb_4Ar1Q.cjs} +1 -1
  368. package/dist/renderPasses-B6l8IpJv.js +1290 -0
  369. package/dist/renderPasses-dqmkft4P.cjs +158 -0
  370. package/dist/renderState-CJNmj5jz.js +39 -0
  371. package/dist/renderState-apSfg4eR.cjs +1 -0
  372. package/dist/scene-object.cjs +1 -1
  373. package/dist/scene-object.js +2 -2
  374. package/dist/segmentation-Cb3ouK6Z.js +1758 -0
  375. package/dist/segmentation-D9pYO6aR.cjs +1 -0
  376. package/dist/segmentation2d/types.d.ts +6 -0
  377. package/dist/select-Ck5LGz-J.cjs +1 -0
  378. package/dist/select-pYRo_win.js +233 -0
  379. package/dist/selectors-C4X71aoD.cjs +1 -0
  380. package/dist/selectors-DmNaKIwE.js +196 -0
  381. package/dist/session-BrH8G7iJ.cjs +31 -0
  382. package/dist/session-DgA_z6O1.js +418 -0
  383. package/dist/{settings-aQk845NJ.js → settings-BJ7FMBsO.js} +53 -15
  384. package/dist/settings-C63FMBlF.cjs +1 -0
  385. package/dist/similarityFit-BFqHND2e.cjs +1 -0
  386. package/dist/similarityFit-Bbz-R8AY.js +91 -0
  387. package/dist/spring/index.d.ts +2 -0
  388. package/dist/spring/spring.d.ts +69 -0
  389. package/dist/spring/swing.d.ts +54 -0
  390. package/dist/tracking.cjs +10 -1
  391. package/dist/tracking.js +1002 -855
  392. package/dist/trigger-D0Pm9noT.cjs +49 -0
  393. package/dist/trigger-IQeys0oS.js +2128 -0
  394. package/dist/types/face.d.ts +20 -1
  395. package/dist/types/hand-tracking.d.ts +9 -0
  396. package/dist/types/nodes.d.ts +20 -1
  397. package/dist/types/segmentation.d.ts +5 -0
  398. package/dist/updateThrottle-BseecYag.js +4 -0
  399. package/dist/updateThrottle-Of5Y4SVa.cjs +1 -0
  400. package/dist/useFaceInfo-BHDNCvsJ.cjs +1 -0
  401. package/dist/useFaceInfo-J4x7LsqL.js +76 -0
  402. package/dist/useFaceResultReader-BvEo5REG.js +61 -0
  403. package/dist/useFaceResultReader-DuaL1KJG.cjs +1 -0
  404. package/dist/useInstructionHold-DOu-RpCM.js +53 -0
  405. package/dist/useInstructionHold-DwJY1Alr.cjs +1 -0
  406. package/dist/useLandmarkPoseFit-Bg-h9BPb.cjs +1 -0
  407. package/dist/useLandmarkPoseFit-Bmb3h6Mw.js +87 -0
  408. package/dist/{useXRCapabilities-B1R2ghy-.cjs → useXRCapabilities-Cr3RzuAW.cjs} +1 -1
  409. package/dist/{useXRCapabilities-C68v__wB.js → useXRCapabilities-Cxmlmpbd.js} +1 -1
  410. package/dist/utils/canonicalRigidLandmarks.d.ts +8 -0
  411. package/dist/utils/headOccluderFit.d.ts +42 -0
  412. package/dist/utils/integrity.d.ts +17 -0
  413. package/dist/utils/resolveNumFaces.d.ts +13 -0
  414. package/dist/utils/shoulderOccluderFit.d.ts +38 -0
  415. package/dist/utils/similarityFit.d.ts +23 -0
  416. package/dist/uv-BMFt19bg.cjs +1 -0
  417. package/dist/{index-CsUdQ-pn.js → uv-DJU_XfmN.js} +15 -249
  418. package/docs/SDK_DOCUMENTATION.md +1 -2
  419. package/docs/api/adaptive-quality.mdx +1 -1
  420. package/docs/api/body-instructions.mdx +285 -0
  421. package/docs/api/body-triggers.mdx +234 -0
  422. package/docs/api/camera-permission.mdx +1 -1
  423. package/docs/api/coordinate-spaces.mdx +7 -4
  424. package/docs/api/cross-camera.mdx +3 -2
  425. package/docs/api/debug-ui-scene-editor.mdx +23 -2
  426. package/docs/api/external-face-mesh.mdx +231 -0
  427. package/docs/api/face-actions.mdx +20 -16
  428. package/docs/api/face-attribute-expression.mdx +1 -1
  429. package/docs/api/face-binding-anchors.mdx +4 -2
  430. package/docs/api/face-character.mdx +157 -0
  431. package/docs/api/face-effects.mdx +3 -0
  432. package/docs/api/face-expression-controller.mdx +153 -0
  433. package/docs/api/face-info.mdx +17 -11
  434. package/docs/api/face-inset.mdx +204 -0
  435. package/docs/api/face-instructions.mdx +183 -0
  436. package/docs/api/face-liquify.mdx +196 -0
  437. package/docs/api/face-mesh.mdx +4 -7
  438. package/docs/api/face-morph.mdx +117 -0
  439. package/docs/api/face-painting.mdx +7 -0
  440. package/docs/api/face-reprojection.mdx +154 -0
  441. package/docs/api/face-retouching.mdx +18 -10
  442. package/docs/api/face-swap.mdx +350 -0
  443. package/docs/api/face-warp-3d.mdx +166 -0
  444. package/docs/api/faceless.mdx +143 -0
  445. package/docs/api/gestures.mdx +68 -32
  446. package/docs/api/hair.mdx +97 -0
  447. package/docs/api/hand-instructions.mdx +222 -0
  448. package/docs/api/hand-rig.mdx +535 -0
  449. package/docs/api/hand-touch.mdx +162 -0
  450. package/docs/api/head-occluder.mdx +563 -0
  451. package/docs/api/holistic-tracker.mdx +6 -1
  452. package/docs/api/instructions.mdx +323 -0
  453. package/docs/api/iris-tracking.mdx +24 -19
  454. package/docs/api/made-up-camera.mdx +131 -0
  455. package/docs/api/makeup-skin-tone.mdx +135 -0
  456. package/docs/api/makeup.mdx +353 -0
  457. package/docs/api/multi-subject.mdx +4 -1
  458. package/docs/api/particles.mdx +155 -0
  459. package/docs/api/person-cutout.mdx +1 -1
  460. package/docs/api/pin-to-face-mesh.mdx +274 -0
  461. package/docs/api/product-ar.mdx +5 -2
  462. package/docs/api/segmentation-overlay.mdx +1 -1
  463. package/docs/docs.json +29 -1
  464. package/docs/examples/lip-shaders.mdx +82 -33
  465. package/docs/guides/face-atlas-template.svg +1 -0
  466. package/docs/guides/face-atlas-textures.mdx +186 -0
  467. package/docs/guides/face-texture-template.svg +1 -0
  468. package/docs/guides/harness-debug-ui.mdx +4 -4
  469. package/docs/guides/lip-effect-textures.mdx +178 -102
  470. package/docs/guides/lip-uv-template.png +0 -0
  471. package/docs/guides/lip-uv-template.svg +1 -1
  472. package/docs/guides/makeup-design-textures.mdx +109 -0
  473. package/docs/introduction.mdx +1 -2
  474. package/package.json +11 -1
  475. package/dist/DebuggerUI-C-ldiozL.js +0 -269
  476. package/dist/DebuggerUI-CWX5EtQv.cjs +0 -1
  477. package/dist/FaceMeshRenderer-BEEXZwS6.cjs +0 -158
  478. package/dist/FaceMeshRenderer-UuH5sTXG.js +0 -1322
  479. package/dist/FaceRetouch-C7h7x9kd.js +0 -683
  480. package/dist/FaceRetouch-DqftT26Y.cjs +0 -134
  481. package/dist/GLTFLoader-C5q63sKO.js +0 -1633
  482. package/dist/GLTFLoader-Cb_CRwmG.cjs +0 -1
  483. package/dist/SegmentationOverlay-DQuW3dsc.js +0 -133
  484. package/dist/SegmentationOverlay-aWVod8Kl.cjs +0 -1
  485. package/dist/components/FaceWarp3D/FaceWarp3DHead.d.ts +0 -15
  486. package/dist/components/FaceWarp3D/defaults.d.ts +0 -37
  487. package/dist/components/FaceWarp3D/warp.d.ts +0 -13
  488. package/dist/contexts-CO0sd4JQ.cjs +0 -1
  489. package/dist/contexts-FzlnnMYD.js +0 -669
  490. package/dist/debug-ui/face-warp-3d/index.d.ts +0 -6
  491. package/dist/getFaceInfo-BkZfaQs-.js +0 -118
  492. package/dist/getFaceInfo-ahPxQFGu.cjs +0 -1
  493. package/dist/index--RgGzZ6X.cjs +0 -47
  494. package/dist/index-CHVbH0hz.js +0 -214
  495. package/dist/index-CeVkgsag.cjs +0 -1
  496. package/dist/index-CnGox6Xr.js +0 -3054
  497. package/dist/index-DKBAh6hV.cjs +0 -1
  498. package/dist/index-DsZwTfG0.cjs +0 -1
  499. package/dist/index-Dw6tj2Mi.js +0 -144
  500. package/dist/index-OCPjOaeP.cjs +0 -1
  501. package/dist/index-s9pF4zkG.js +0 -2053
  502. package/dist/internal-BYza1h8_.cjs +0 -1
  503. package/dist/measures-9dQPdw96.js +0 -154
  504. package/dist/measures-KfJzpvod.cjs +0 -1
  505. package/dist/providers-YNwkmNeK.cjs +0 -62
  506. package/dist/renderPasses-Cg-zqmEz.cjs +0 -21
  507. package/dist/screenTransform-BenfCtZt.js +0 -44
  508. package/dist/screenTransform-BiXdpVf0.cjs +0 -1
  509. package/dist/segmentation-9PhSvc-R.cjs +0 -1
  510. package/dist/segmentation-CeOTKemr.js +0 -5
  511. package/dist/selectors-C5G1PMYL.js +0 -195
  512. package/dist/selectors-Du_PsVnW.cjs +0 -1
  513. package/dist/session-BBr0yN8h.cjs +0 -31
  514. package/dist/session-Cy0m7l7-.js +0 -363
  515. package/dist/settings-DRR7-snV.cjs +0 -1
  516. package/dist/useFaceInfo-Blf7FCu3.js +0 -303
  517. package/dist/useFaceInfo-C5mO8NQY.cjs +0 -1
@@ -1,20 +1,22 @@
1
- var K = Object.defineProperty;
2
- var O = (t, e, r) => e in t ? K(t, e, { enumerable: !0, configurable: !0, writable: !0, value: r }) : t[e] = r;
3
- var s = (t, e, r) => O(t, typeof e != "symbol" ? e + "" : e, r);
4
- import { jsx as f, jsxs as w } from "react/jsx-runtime";
5
- import W, { useState as b, useRef as h, useEffect as T, useCallback as y, createContext as X, Suspense as V, lazy as q } from "react";
6
- import { b as J } from "./selectors-C5G1PMYL.js";
7
- import { u as G } from "./index-CnGox6Xr.js";
8
- import { useFrame as Q } from "@react-three/fiber";
1
+ var X = Object.defineProperty;
2
+ var V = (t, e, r) => e in t ? X(t, e, { enumerable: !0, configurable: !0, writable: !0, value: r }) : t[e] = r;
3
+ var i = (t, e, r) => V(t, typeof e != "symbol" ? e + "" : e, r);
4
+ import { jsx as m, jsxs as w } from "react/jsx-runtime";
5
+ import q, { useState as b, useContext as J, createContext as G, Suspense as E, lazy as Q, useRef as p, useEffect as T, useCallback as y } from "react";
6
+ import { d as Y } from "./selectors-DmNaKIwE.js";
7
+ import { u as Z } from "./index-CIe7eCMH.js";
8
+ import { useFrame as ee } from "@react-three/fiber";
9
9
  import "./hasFullUnitUVBounds-BGvcFsQM.js";
10
- const he = ({
10
+ import "./uv-DJU_XfmN.js";
11
+ import "./FaceSurface-DmP9AEeC.js";
12
+ const ve = ({
11
13
  children: t,
12
14
  defaultCollapsed: e = !0,
13
15
  title: r,
14
- width: i = 320
16
+ width: s = 320
15
17
  }) => {
16
- const [n, o] = b(e);
17
- return n ? /* @__PURE__ */ f(
18
+ const [a, o] = b(e);
19
+ return a ? /* @__PURE__ */ m(
18
20
  "button",
19
21
  {
20
22
  type: "button",
@@ -47,7 +49,7 @@ const he = ({
47
49
  right: 16,
48
50
  bottom: 16,
49
51
  zIndex: 40,
50
- width: i,
52
+ width: s,
51
53
  maxWidth: "calc(100vw - 32px)",
52
54
  padding: 14,
53
55
  borderRadius: 14,
@@ -70,8 +72,8 @@ const he = ({
70
72
  marginBottom: 10
71
73
  },
72
74
  children: [
73
- /* @__PURE__ */ f("div", { style: { fontSize: 13, fontWeight: 700 }, children: r }),
74
- /* @__PURE__ */ f(
75
+ /* @__PURE__ */ m("div", { style: { fontSize: 13, fontWeight: 700 }, children: r }),
76
+ /* @__PURE__ */ m(
75
77
  "button",
76
78
  {
77
79
  type: "button",
@@ -99,13 +101,13 @@ const he = ({
99
101
  }
100
102
  );
101
103
  };
102
- class Y {
104
+ class te {
103
105
  // 500ms as per PRD
104
106
  constructor() {
105
- s(this, "frameTimestamps", []);
106
- s(this, "lastUpdateTime", 0);
107
- s(this, "currentFPS", 0);
108
- s(this, "updateInterval", 500);
107
+ i(this, "frameTimestamps", []);
108
+ i(this, "lastUpdateTime", 0);
109
+ i(this, "currentFPS", 0);
110
+ i(this, "updateInterval", 500);
109
111
  this.lastUpdateTime = performance.now();
110
112
  }
111
113
  /**
@@ -116,7 +118,7 @@ class Y {
116
118
  const e = performance.now();
117
119
  this.frameTimestamps.push(e);
118
120
  const r = e - this.updateInterval;
119
- this.frameTimestamps = this.frameTimestamps.filter((i) => i > r), e - this.lastUpdateTime >= this.updateInterval && (this.currentFPS = this.frameTimestamps.length * 2, this.lastUpdateTime = e);
121
+ this.frameTimestamps = this.frameTimestamps.filter((s) => s > r), e - this.lastUpdateTime >= this.updateInterval && (this.currentFPS = this.frameTimestamps.length * 2, this.lastUpdateTime = e);
120
122
  }
121
123
  /**
122
124
  * Get current FPS value
@@ -131,21 +133,21 @@ class Y {
131
133
  this.frameTimestamps = [], this.lastUpdateTime = performance.now(), this.currentFPS = 0;
132
134
  }
133
135
  }
134
- function pe(t, e = 1) {
136
+ function Te(t, e = 1) {
135
137
  return t.toFixed(e);
136
138
  }
137
- function _(t) {
139
+ function R(t) {
138
140
  return t / (1024 * 1024);
139
141
  }
140
- function Z(t, e) {
142
+ function re(t, e) {
141
143
  return e === 0 ? 0 : t / e * 100;
142
144
  }
143
- class ee {
145
+ class se {
144
146
  constructor(e = 1e3) {
145
- s(this, "intervalId", null);
146
- s(this, "memoryUsage", null);
147
- s(this, "updateInterval");
148
- s(this, "isSupported", !1);
147
+ i(this, "intervalId", null);
148
+ i(this, "memoryUsage", null);
149
+ i(this, "updateInterval");
150
+ i(this, "isSupported", !1);
149
151
  this.updateInterval = e, this.checkSupport();
150
152
  }
151
153
  /**
@@ -184,11 +186,11 @@ class ee {
184
186
  if (!this.isSupported) return;
185
187
  const e = performance;
186
188
  if (!e.memory) return;
187
- const r = e.memory.usedJSHeapSize, i = e.memory.jsHeapSizeLimit;
189
+ const r = e.memory.usedJSHeapSize, s = e.memory.jsHeapSizeLimit;
188
190
  this.memoryUsage = {
189
- used: _(r),
190
- total: _(i),
191
- percentage: Z(r, i)
191
+ used: R(r),
192
+ total: R(s),
193
+ percentage: re(r, s)
192
194
  };
193
195
  }
194
196
  /**
@@ -205,11 +207,11 @@ class ee {
205
207
  return this.isSupported;
206
208
  }
207
209
  }
208
- class te {
210
+ class ie {
209
211
  constructor() {
210
- s(this, "resolution", "N/A");
211
- s(this, "videoElement", null);
212
- s(this, "metadataListener", null);
212
+ i(this, "resolution", "N/A");
213
+ i(this, "videoElement", null);
214
+ i(this, "metadataListener", null);
213
215
  }
214
216
  /**
215
217
  * Start tracking resolution from a video element
@@ -247,12 +249,12 @@ class te {
247
249
  return this.videoElement && this.updateResolution(), this.resolution;
248
250
  }
249
251
  }
250
- class re {
252
+ class ne {
251
253
  constructor(e = {}) {
252
- s(this, "options");
253
- s(this, "isRunning", !1);
254
+ i(this, "options");
255
+ i(this, "isRunning", !1);
254
256
  // Current metrics state
255
- s(this, "metrics", {
257
+ i(this, "metrics", {
256
258
  cameraFPS: 0,
257
259
  detectionTime: 0,
258
260
  modelPerformance: [],
@@ -262,16 +264,16 @@ class re {
262
264
  resolution: "N/A"
263
265
  });
264
266
  // Trackers
265
- s(this, "cameraFPSTracker");
266
- s(this, "memoryTracker");
267
- s(this, "resolutionTracker");
267
+ i(this, "cameraFPSTracker");
268
+ i(this, "memoryTracker");
269
+ i(this, "resolutionTracker");
268
270
  // For effective FPS calculation
269
- s(this, "frameTimes", []);
270
- s(this, "lastEffectiveFPSUpdate", 0);
271
+ i(this, "frameTimes", []);
272
+ i(this, "lastEffectiveFPSUpdate", 0);
271
273
  this.options = {
272
274
  enableMemoryTracking: e.enableMemoryTracking ?? !0,
273
275
  memoryUpdateInterval: e.memoryUpdateInterval ?? 1e3
274
- }, this.cameraFPSTracker = new Y(), this.memoryTracker = new ee(this.options.memoryUpdateInterval), this.resolutionTracker = new te();
276
+ }, this.cameraFPSTracker = new te(), this.memoryTracker = new se(this.options.memoryUpdateInterval), this.resolutionTracker = new ie();
275
277
  }
276
278
  /**
277
279
  * Start collecting metrics
@@ -343,12 +345,12 @@ class re {
343
345
  this.metrics.detectionTime = 0, this.metrics.modelPerformance = [];
344
346
  return;
345
347
  }
346
- const i = r.map((a) => a && typeof a.getPerformanceData == "function" ? a.getPerformanceData() : Promise.resolve({ name: "unknown", processingTime: 0 })), n = await Promise.all(i);
347
- this.metrics.modelPerformance = n.map((a) => ({
348
- name: a.name,
349
- processingTime: a.processingTime || 0
348
+ const s = r.map((n) => n && typeof n.getPerformanceData == "function" ? n.getPerformanceData() : Promise.resolve({ name: "unknown", processingTime: 0 })), a = await Promise.all(s);
349
+ this.metrics.modelPerformance = a.map((n) => ({
350
+ name: n.name,
351
+ processingTime: n.processingTime || 0
350
352
  }));
351
- const o = n.reduce((a, p) => a + (p.processingTime || 0), 0);
353
+ const o = a.reduce((n, h) => n + (h.processingTime || 0), 0);
352
354
  this.metrics.detectionTime = o, this.updateEffectiveFPS();
353
355
  } catch (r) {
354
356
  console.warn("[MetricsCollector] Error updating detection time:", r), this.metrics.detectionTime = 0, this.metrics.modelPerformance = [];
@@ -362,8 +364,8 @@ class re {
362
364
  const e = performance.now(), r = this.metrics.detectionTime + this.metrics.renderTime;
363
365
  if (this.frameTimes.push(r), e - this.lastEffectiveFPSUpdate >= 1e3) {
364
366
  if (this.frameTimes.length > 0) {
365
- const i = this.frameTimes.reduce((n, o) => n + o, 0) / this.frameTimes.length;
366
- this.metrics.effectiveFPS = i > 0 ? 1e3 / i : 0;
367
+ const s = this.frameTimes.reduce((a, o) => a + o, 0) / this.frameTimes.length;
368
+ this.metrics.effectiveFPS = s > 0 ? 1e3 / s : 0;
367
369
  }
368
370
  this.frameTimes = [], this.lastEffectiveFPSUpdate = e;
369
371
  }
@@ -375,14 +377,15 @@ class re {
375
377
  return this.isRunning;
376
378
  }
377
379
  }
378
- const ie = q(async () => ({ default: (await import("./DebuggerUI-C-ldiozL.js")).DebuggerUI })), C = X(null);
379
- function ge({
380
+ const I = Q(async () => ({ default: (await import("./DebuggerUI-7ngnJsBe.js")).DebuggerUI })), k = G(null);
381
+ function ye({
380
382
  children: t,
381
383
  keyboardShortcut: e = "ctrl+shift+d",
382
384
  initialEnabled: r = !1,
383
- position: i = "top-left"
385
+ position: s = "top-left",
386
+ docked: a = !1
384
387
  }) {
385
- const [n, o] = b(r), [a, p] = b(!1), [k, E] = b({
388
+ const [o, n] = b(r), [h, P] = b(!1), [x, D] = b({
386
389
  cameraFPS: 0,
387
390
  detectionTime: 0,
388
391
  modelPerformance: [],
@@ -390,20 +393,20 @@ function ge({
390
393
  effectiveFPS: 0,
391
394
  memory: null,
392
395
  resolution: "N/A"
393
- }), m = h(null), l = h(null), g = h(!1), { session: v } = G(), P = J();
394
- T(() => (m.current || (m.current = new re(), window.__xr_metrics_collector = m.current), () => {
395
- m.current && m.current.stop(), l.current && clearInterval(l.current), window.__xr_metrics_collector && delete window.__xr_metrics_collector;
396
+ }), d = p(null), l = p(null), g = p(!1), { session: v } = Z(), F = Y();
397
+ T(() => (d.current || (d.current = new ne(), window.__xr_metrics_collector = d.current), () => {
398
+ d.current && d.current.stop(), l.current && clearInterval(l.current), window.__xr_metrics_collector && delete window.__xr_metrics_collector;
396
399
  }), []), T(() => {
397
- const c = m.current;
400
+ const c = d.current;
398
401
  if (c) {
399
- if (n && P) {
402
+ if (o && F) {
400
403
  const u = v._getVideoElement();
401
404
  c.start(u), l.current = window.setInterval(async () => {
402
405
  if (!g.current) {
403
406
  g.current = !0;
404
407
  try {
405
- const F = Object.fromEntries(v.store.getSnapshot().pipeline);
406
- await c.updateDetectionTime(F), E(c.getMetrics());
408
+ const C = Object.fromEntries(v.store.getSnapshot().pipeline);
409
+ await c.updateDetectionTime(C), D(c.getMetrics());
407
410
  } finally {
408
411
  g.current = !1;
409
412
  }
@@ -415,67 +418,83 @@ function ge({
415
418
  l.current && (clearInterval(l.current), l.current = null);
416
419
  };
417
420
  }
418
- }, [n, P, v]), T(() => {
421
+ }, [o, F, v]), T(() => {
419
422
  const c = (u) => {
420
- const d = e.toLowerCase().split("+"), U = d.includes("ctrl") || d.includes("control"), L = d.includes("shift"), A = d.includes("alt"), N = d[d.length - 1], H = U ? u.ctrlKey || u.metaKey : !0, z = L ? u.shiftKey : !0, j = A ? u.altKey : !0, $ = u.key.toLowerCase() === N;
421
- H && z && j && $ && (u.preventDefault(), o((B) => !B));
423
+ const f = e.toLowerCase().split("+"), N = f.includes("ctrl") || f.includes("control"), H = f.includes("shift"), z = f.includes("alt"), j = f[f.length - 1], $ = N ? u.ctrlKey || u.metaKey : !0, B = H ? u.shiftKey : !0, K = z ? u.altKey : !0, O = u.key.toLowerCase() === j;
424
+ $ && B && K && O && (u.preventDefault(), n((W) => !W));
422
425
  };
423
426
  return window.addEventListener("keydown", c), () => {
424
427
  window.removeEventListener("keydown", c);
425
428
  };
426
429
  }, [e]);
427
- const I = y(() => {
428
- o((c) => !c);
429
- }, []), M = y(() => {
430
- o(!0);
431
- }, []), x = y(() => {
432
- o(!1);
433
- }, []), D = {
430
+ const U = y(() => {
431
+ n((c) => !c);
432
+ }, []), L = y(() => {
433
+ n(!0);
434
+ }, []), _ = y(() => {
435
+ n(!1);
436
+ }, []), A = {
434
437
  state: {
435
- enabled: n,
436
- collapsed: a,
437
- metrics: k
438
+ enabled: o,
439
+ collapsed: h,
440
+ metrics: x
438
441
  },
439
- toggle: I,
440
- setCollapsed: p,
441
- enable: M,
442
- disable: x
442
+ toggle: U,
443
+ setCollapsed: P,
444
+ enable: L,
445
+ disable: _
443
446
  };
444
- return /* @__PURE__ */ w(C.Provider, { value: D, children: [
447
+ return /* @__PURE__ */ w(k.Provider, { value: A, children: [
445
448
  t,
446
- n && /* @__PURE__ */ f(V, { fallback: null, children: /* @__PURE__ */ f(
447
- ie,
449
+ o && !a && /* @__PURE__ */ m(E, { fallback: null, children: /* @__PURE__ */ m(
450
+ I,
448
451
  {
449
- metrics: k,
450
- collapsed: a,
451
- onCollapse: p,
452
- onClose: x,
453
- position: i,
452
+ metrics: x,
453
+ collapsed: h,
454
+ onCollapse: P,
455
+ onClose: _,
456
+ position: s,
454
457
  keyboardShortcut: e
455
458
  }
456
459
  ) })
457
460
  ] });
458
461
  }
459
- function se() {
460
- const t = W.useContext(C);
462
+ function we({
463
+ keyboardShortcut: t = "ctrl+shift+d"
464
+ }) {
465
+ const e = J(k);
466
+ return !e || !e.state.enabled ? null : /* @__PURE__ */ m(E, { fallback: null, children: /* @__PURE__ */ m(
467
+ I,
468
+ {
469
+ docked: !0,
470
+ metrics: e.state.metrics,
471
+ collapsed: e.state.collapsed,
472
+ onCollapse: e.setCollapsed,
473
+ onClose: e.disable,
474
+ keyboardShortcut: t
475
+ }
476
+ ) });
477
+ }
478
+ function oe() {
479
+ const t = q.useContext(k);
461
480
  if (!t)
462
481
  throw new Error("useDebuggerContext must be used within a DebuggerProvider");
463
482
  return t;
464
483
  }
465
- function ne({ onUpdate: t }) {
466
- const e = h(0), r = h(!0);
467
- return Q(() => {
484
+ function ae({ onUpdate: t }) {
485
+ const e = p(0), r = p(!0);
486
+ return ee(() => {
468
487
  if (r.current)
469
488
  r.current = !1;
470
489
  else {
471
- const n = performance.now() - e.current;
472
- t(n);
490
+ const a = performance.now() - e.current;
491
+ t(a);
473
492
  }
474
493
  e.current = performance.now();
475
494
  }, -1e3), null;
476
495
  }
477
- function oe() {
478
- const t = se();
496
+ function ce() {
497
+ const t = oe();
479
498
  return {
480
499
  metrics: t.state.metrics,
481
500
  enabled: t.state.enabled,
@@ -486,39 +505,40 @@ function oe() {
486
505
  disable: t.disable
487
506
  };
488
507
  }
489
- function be() {
490
- const { enabled: t } = oe(), e = (r) => {
491
- const i = window;
492
- i.__xr_metrics_collector && i.__xr_metrics_collector.updateRenderTime(r);
508
+ function Se() {
509
+ const { enabled: t } = ce(), e = (r) => {
510
+ const s = window;
511
+ s.__xr_metrics_collector && s.__xr_metrics_collector.updateRenderTime(r);
493
512
  };
494
- return t ? /* @__PURE__ */ f(ne, { onUpdate: e }) : null;
513
+ return t ? /* @__PURE__ */ m(ae, { onUpdate: e }) : null;
495
514
  }
496
515
  const S = 600;
497
- function R() {
516
+ function M() {
498
517
  if (typeof window > "u")
499
518
  return;
500
519
  const t = window;
501
520
  return t.__xrCalibrationDebugState || (t.__xrCalibrationDebugState = { events: [] }), t.__xrCalibrationDebugState;
502
521
  }
503
- function ve(t, e, r) {
504
- const i = R();
505
- i && (i.events.push({
522
+ function ke(t, e, r) {
523
+ const s = M();
524
+ s && (s.events.push({
506
525
  source: t,
507
526
  label: e,
508
527
  payload: r,
509
528
  ts: performance.now()
510
- }), i.events.length > S && i.events.splice(0, i.events.length - S));
529
+ }), s.events.length > S && s.events.splice(0, s.events.length - S));
511
530
  }
512
- function Te(t = S) {
513
- const e = R();
531
+ function Pe(t = S) {
532
+ const e = M();
514
533
  return e ? e.events.slice(Math.max(0, e.events.length - t)) : [];
515
534
  }
516
535
  export {
517
- ge as D,
518
- he as X,
519
- be as a,
520
- ve as b,
521
- pe as f,
522
- Te as r,
523
- oe as u
536
+ we as D,
537
+ ve as X,
538
+ ye as a,
539
+ Se as b,
540
+ ke as c,
541
+ Te as f,
542
+ Pe as r,
543
+ ce as u
524
544
  };
@@ -0,0 +1 @@
1
+ "use strict";var O=Object.defineProperty;var $=(t,e,r)=>e in t?O(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var n=(t,e,r)=>$(t,typeof e!="symbol"?e+"":e,r);const c=require("react/jsx-runtime"),i=require("react"),B=require("./selectors-C4X71aoD.cjs"),K=require("./index-CfSF8LXa.cjs"),V=require("@react-three/fiber");require("./hasFullUnitUVBounds-p1Dl0ejX.cjs");require("./uv-BMFt19bg.cjs");require("./FaceSurface-CHAMEeG1.cjs");const W=({children:t,defaultCollapsed:e=!0,title:r,width:s=320})=>{const[l,a]=i.useState(e);return l?c.jsx("button",{type:"button",onClick:()=>a(!1),"aria-label":`Open ${r}`,title:`Open ${r}`,style:{position:"absolute",right:16,bottom:16,zIndex:40,width:40,height:40,border:"1px solid rgba(255,255,255,0.12)",borderRadius:999,background:"rgba(15, 23, 42, 0.72)",color:"#e5eefb",boxShadow:"0 12px 30px rgba(0,0,0,0.18)",backdropFilter:"blur(10px)",cursor:"pointer",pointerEvents:"auto"},children:"◫"}):c.jsxs("div",{style:{position:"absolute",right:16,bottom:16,zIndex:40,width:s,maxWidth:"calc(100vw - 32px)",padding:14,borderRadius:14,boxShadow:"0 12px 30px rgba(0,0,0,0.26)",backdropFilter:"blur(10px)",pointerEvents:"auto",background:"rgba(15, 23, 42, 0.78)",border:"1px solid rgba(255,255,255,0.12)",color:"#e5eefb"},children:[c.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12,marginBottom:10},children:[c.jsx("div",{style:{fontSize:13,fontWeight:700},children:r}),c.jsx("button",{type:"button",onClick:()=>a(!0),"aria-label":`Close ${r}`,title:`Close ${r}`,style:{width:32,height:32,border:"1px solid rgba(255,255,255,0.12)",borderRadius:999,background:"rgba(255,255,255,0.04)",color:"#e5eefb",cursor:"pointer",flex:"0 0 auto"},children:"×"})]}),t]})};class X{constructor(){n(this,"frameTimestamps",[]);n(this,"lastUpdateTime",0);n(this,"currentFPS",0);n(this,"updateInterval",500);this.lastUpdateTime=performance.now()}trackFrame(){const e=performance.now();this.frameTimestamps.push(e);const r=e-this.updateInterval;this.frameTimestamps=this.frameTimestamps.filter(s=>s>r),e-this.lastUpdateTime>=this.updateInterval&&(this.currentFPS=this.frameTimestamps.length*2,this.lastUpdateTime=e)}getFPS(){return this.currentFPS}reset(){this.frameTimestamps=[],this.lastUpdateTime=performance.now(),this.currentFPS=0}}function J(t,e=1){return t.toFixed(e)}function P(t){return t/(1024*1024)}function G(t,e){return e===0?0:t/e*100}class Q{constructor(e=1e3){n(this,"intervalId",null);n(this,"memoryUsage",null);n(this,"updateInterval");n(this,"isSupported",!1);this.updateInterval=e,this.checkSupport()}checkSupport(){const e=performance;this.isSupported="memory"in e&&e.memory!==void 0,this.isSupported||console.warn("[MemoryTracker] performance.memory not available (Chrome-only API)")}start(){if(this.intervalId!==null){console.warn("[MemoryTracker] Already running");return}if(!this.isSupported){this.memoryUsage=null;return}this.updateMemory(),this.intervalId=window.setInterval(()=>{this.updateMemory()},this.updateInterval)}stop(){this.intervalId!==null&&(clearInterval(this.intervalId),this.intervalId=null)}updateMemory(){if(!this.isSupported)return;const e=performance;if(!e.memory)return;const r=e.memory.usedJSHeapSize,s=e.memory.jsHeapSizeLimit;this.memoryUsage={used:P(r),total:P(s),percentage:G(r,s)}}getMemoryUsage(){return this.memoryUsage}isMemorySupported(){return this.isSupported}}class Y{constructor(){n(this,"resolution","N/A");n(this,"videoElement",null);n(this,"metadataListener",null)}start(e){if(!e){this.resolution="N/A";return}this.videoElement=e,e.videoWidth>0&&e.videoHeight>0&&this.updateResolution(),this.metadataListener=()=>{this.updateResolution()},e.addEventListener("loadedmetadata",this.metadataListener)}stop(){this.videoElement&&this.metadataListener&&(this.videoElement.removeEventListener("loadedmetadata",this.metadataListener),this.metadataListener=null),this.videoElement=null,this.resolution="N/A"}updateResolution(){if(!this.videoElement){this.resolution="N/A";return}const e=this.videoElement.videoWidth,r=this.videoElement.videoHeight;e>0&&r>0?this.resolution=`${e}x${r}`:this.resolution="N/A"}getResolution(){return this.videoElement&&this.updateResolution(),this.resolution}}class Z{constructor(e={}){n(this,"options");n(this,"isRunning",!1);n(this,"metrics",{cameraFPS:0,detectionTime:0,modelPerformance:[],renderTime:0,effectiveFPS:0,memory:null,resolution:"N/A"});n(this,"cameraFPSTracker");n(this,"memoryTracker");n(this,"resolutionTracker");n(this,"frameTimes",[]);n(this,"lastEffectiveFPSUpdate",0);this.options={enableMemoryTracking:e.enableMemoryTracking??!0,memoryUpdateInterval:e.memoryUpdateInterval??1e3},this.cameraFPSTracker=new X,this.memoryTracker=new Q(this.options.memoryUpdateInterval),this.resolutionTracker=new Y}start(e){if(this.isRunning){console.warn("[MetricsCollector] Already running");return}this.isRunning=!0,this.lastEffectiveFPSUpdate=performance.now(),this.options.enableMemoryTracking&&this.memoryTracker.start(),e&&this.resolutionTracker.start(e),this.setupCameraFPSHook(),console.info("[MetricsCollector] Started")}stop(){this.isRunning&&(this.isRunning=!1,this.memoryTracker.stop(),this.resolutionTracker.stop(),this.cameraFPSTracker.reset(),this.cleanupCameraFPSHook(),console.info("[MetricsCollector] Stopped"))}setupCameraFPSHook(){const e=window;e.__xr_debugger_metrics||(e.__xr_debugger_metrics={trackCameraFrame:()=>{this.cameraFPSTracker.trackFrame(),this.metrics.cameraFPS=this.cameraFPSTracker.getFPS()}})}cleanupCameraFPSHook(){const e=window;e.__xr_debugger_metrics&&delete e.__xr_debugger_metrics}getMetrics(){return this.updateMetricsFromTrackers(),{...this.metrics}}updateMetricsFromTrackers(){this.isRunning&&(this.metrics.memory=this.memoryTracker.getMemoryUsage(),this.metrics.resolution=this.resolutionTracker.getResolution(),this.updateEffectiveFPS())}updateRenderTime(e){this.metrics.renderTime=e,this.updateEffectiveFPS()}async updateDetectionTime(e){if(!e||!this.isRunning){this.metrics.detectionTime=0,this.metrics.modelPerformance=[];return}try{const r=Object.values(e).filter(Boolean);if(r.length===0){this.metrics.detectionTime=0,this.metrics.modelPerformance=[];return}const s=r.map(o=>o&&typeof o.getPerformanceData=="function"?o.getPerformanceData():Promise.resolve({name:"unknown",processingTime:0})),l=await Promise.all(s);this.metrics.modelPerformance=l.map(o=>({name:o.name,processingTime:o.processingTime||0}));const a=l.reduce((o,p)=>o+(p.processingTime||0),0);this.metrics.detectionTime=a,this.updateEffectiveFPS()}catch(r){console.warn("[MetricsCollector] Error updating detection time:",r),this.metrics.detectionTime=0,this.metrics.modelPerformance=[]}}updateEffectiveFPS(){const e=performance.now(),r=this.metrics.detectionTime+this.metrics.renderTime;if(this.frameTimes.push(r),e-this.lastEffectiveFPSUpdate>=1e3){if(this.frameTimes.length>0){const s=this.frameTimes.reduce((l,a)=>l+a,0)/this.frameTimes.length;this.metrics.effectiveFPS=s>0?1e3/s:0}this.frameTimes=[],this.lastEffectiveFPSUpdate=e}}isActive(){return this.isRunning}}const C=i.lazy(async()=>({default:(await Promise.resolve().then(()=>require("./DebuggerUI-CoglgKdO.cjs"))).DebuggerUI})),y=i.createContext(null);function ee({children:t,keyboardShortcut:e="ctrl+shift+d",initialEnabled:r=!1,position:s="top-left",docked:l=!1}){const[a,o]=i.useState(r),[p,T]=i.useState(!1),[w,R]=i.useState({cameraFPS:0,detectionTime:0,modelPerformance:[],renderTime:0,effectiveFPS:0,memory:null,resolution:"N/A"}),f=i.useRef(null),m=i.useRef(null),g=i.useRef(!1),{session:b}=K.useXRContext(),S=B.useXRReady();i.useEffect(()=>(f.current||(f.current=new Z,window.__xr_metrics_collector=f.current),()=>{f.current&&f.current.stop(),m.current&&clearInterval(m.current),window.__xr_metrics_collector&&delete window.__xr_metrics_collector}),[]),i.useEffect(()=>{const u=f.current;if(u){if(a&&S){const d=b._getVideoElement();u.start(d),m.current=window.setInterval(async()=>{if(!g.current){g.current=!0;try{const k=Object.fromEntries(b.store.getSnapshot().pipeline);await u.updateDetectionTime(k),R(u.getMetrics())}finally{g.current=!1}}},100)}else u.stop(),m.current&&(clearInterval(m.current),m.current=null),g.current=!1;return()=>{m.current&&(clearInterval(m.current),m.current=null)}}},[a,S,b]),i.useEffect(()=>{const u=d=>{const h=e.toLowerCase().split("+"),M=h.includes("ctrl")||h.includes("control"),U=h.includes("shift"),j=h.includes("alt"),L=h[h.length-1],q=M?d.ctrlKey||d.metaKey:!0,A=U?d.shiftKey:!0,N=j?d.altKey:!0,H=d.key.toLowerCase()===L;q&&A&&N&&H&&(d.preventDefault(),o(z=>!z))};return window.addEventListener("keydown",u),()=>{window.removeEventListener("keydown",u)}},[e]);const E=i.useCallback(()=>{o(u=>!u)},[]),D=i.useCallback(()=>{o(!0)},[]),x=i.useCallback(()=>{o(!1)},[]),I={state:{enabled:a,collapsed:p,metrics:w},toggle:E,setCollapsed:T,enable:D,disable:x};return c.jsxs(y.Provider,{value:I,children:[t,a&&!l&&c.jsx(i.Suspense,{fallback:null,children:c.jsx(C,{metrics:w,collapsed:p,onCollapse:T,onClose:x,position:s,keyboardShortcut:e})})]})}function te({keyboardShortcut:t="ctrl+shift+d"}){const e=i.useContext(y);return!e||!e.state.enabled?null:c.jsx(i.Suspense,{fallback:null,children:c.jsx(C,{docked:!0,metrics:e.state.metrics,collapsed:e.state.collapsed,onCollapse:e.setCollapsed,onClose:e.disable,keyboardShortcut:t})})}function re(){const t=i.useContext(y);if(!t)throw new Error("useDebuggerContext must be used within a DebuggerProvider");return t}function se({onUpdate:t}){const e=i.useRef(0),r=i.useRef(!0);return V.useFrame(()=>{if(r.current)r.current=!1;else{const l=performance.now()-e.current;t(l)}e.current=performance.now()},-1e3),null}function F(){const t=re();return{metrics:t.state.metrics,enabled:t.state.enabled,collapsed:t.state.collapsed,toggle:t.toggle,setCollapsed:t.setCollapsed,enable:t.enable,disable:t.disable}}function ie(){const{enabled:t}=F(),e=r=>{const s=window;s.__xr_metrics_collector&&s.__xr_metrics_collector.updateRenderTime(r)};return t?c.jsx(se,{onUpdate:e}):null}const v=600;function _(){if(typeof window>"u")return;const t=window;return t.__xrCalibrationDebugState||(t.__xrCalibrationDebugState={events:[]}),t.__xrCalibrationDebugState}function ne(t,e,r){const s=_();s&&(s.events.push({source:t,label:e,payload:r,ts:performance.now()}),s.events.length>v&&s.events.splice(0,s.events.length-v))}function oe(t=v){const e=_();return e?e.events.slice(Math.max(0,e.events.length-t)):[]}exports.DebuggerOverlay=ie;exports.DebuggerPanel=te;exports.DebuggerProvider=ee;exports.XRDebugView=W;exports.formatNumber=J;exports.readCalibrationDebugEvents=oe;exports.recordCalibrationDebugEvent=ne;exports.useDebugger=F;
package/dist/internal.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./internal-BYza1h8_.cjs"),r=require("./hasFullUnitUVBounds-p1Dl0ejX.cjs"),n=require("./selectors-Du_PsVnW.cjs");exports.DebuggerOverlay=e.DebuggerOverlay;exports.DebuggerProvider=e.DebuggerProvider;exports.XRDebugView=e.XRDebugView;exports.readCalibrationDebugEvents=e.readCalibrationDebugEvents;exports.recordCalibrationDebugEvent=e.recordCalibrationDebugEvent;exports.useDebugger=e.useDebugger;exports._resetUVBoundsWarnings=r._resetUVBoundsWarnings;exports.logUVBoundsWarningOnce=r.logUVBoundsWarningOnce;exports.RENDER_LAYERS=n.RENDER_LAYERS;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./internal-Cjinca64.cjs"),a=require("./hasFullUnitUVBounds-p1Dl0ejX.cjs"),n=require("./uv-BMFt19bg.cjs"),r=require("./FaceSurface-CHAMEeG1.cjs");exports.DebuggerOverlay=e.DebuggerOverlay;exports.DebuggerPanel=e.DebuggerPanel;exports.DebuggerProvider=e.DebuggerProvider;exports.XRDebugView=e.XRDebugView;exports.readCalibrationDebugEvents=e.readCalibrationDebugEvents;exports.recordCalibrationDebugEvent=e.recordCalibrationDebugEvent;exports.useDebugger=e.useDebugger;exports._resetUVBoundsWarnings=a._resetUVBoundsWarnings;exports.logUVBoundsWarningOnce=a.logUVBoundsWarningOnce;exports.RENDER_LAYERS=n.RENDER_LAYERS;exports.FACE_SURFACE_FRAME_PRIORITY=r.FACE_SURFACE_FRAME_PRIORITY;exports.FaceSurfaceContext=r.FaceSurfaceContext;exports.createFaceSurfaceState=r.createFaceSurfaceState;
package/dist/internal.js CHANGED
@@ -1,14 +1,19 @@
1
- import { a, D as s, X as o, r as g, b as n, u } from "./internal-vsfNQycj.js";
2
- import { _ as i, l as t } from "./hasFullUnitUVBounds-BGvcFsQM.js";
3
- import { R as d } from "./selectors-C5G1PMYL.js";
1
+ import { b as r, D as s, a as o, X as g, r as t, c as n, u } from "./internal-B90P-clC.js";
2
+ import { _ as c, l as D } from "./hasFullUnitUVBounds-BGvcFsQM.js";
3
+ import { R as i } from "./uv-DJU_XfmN.js";
4
+ import { F as f, a as l, c as F } from "./FaceSurface-DmP9AEeC.js";
4
5
  export {
5
- a as DebuggerOverlay,
6
- s as DebuggerProvider,
7
- d as RENDER_LAYERS,
8
- o as XRDebugView,
9
- i as _resetUVBoundsWarnings,
10
- t as logUVBoundsWarningOnce,
11
- g as readCalibrationDebugEvents,
6
+ r as DebuggerOverlay,
7
+ s as DebuggerPanel,
8
+ o as DebuggerProvider,
9
+ f as FACE_SURFACE_FRAME_PRIORITY,
10
+ l as FaceSurfaceContext,
11
+ i as RENDER_LAYERS,
12
+ g as XRDebugView,
13
+ c as _resetUVBoundsWarnings,
14
+ F as createFaceSurfaceState,
15
+ D as logUVBoundsWarningOnce,
16
+ t as readCalibrationDebugEvents,
12
17
  n as recordCalibrationDebugEvent,
13
18
  u as useDebugger
14
19
  };
@@ -5,17 +5,19 @@ export declare const createIrisEye: (side: IrisSide) => IrisEye;
5
5
  export declare const createIrisResult: (faceIndex?: number) => IrisResult;
6
6
  /**
7
7
  * Derive one eye's iris data from a refined face-mesh landmark set (478
8
- * points, MediaPipe image space). Returns `false`, and marks the eye
9
- * undetected, when the landmarks are missing. Allocation-free: writes into
10
- * `eye`.
8
+ * points, MediaPipe image space). `side` is the person's own eye; `mirrored`
9
+ * says the frame is the mirrored webcam, where that eye is MediaPipe's other
10
+ * side (#298). Returns `false`, and marks the eye undetected, when the
11
+ * landmarks are missing. Allocation-free: writes into `eye`.
11
12
  */
12
13
  export declare const computeIrisEye: (landmarks: ReadonlyArray<IrisPoint> | undefined, side: IrisSide, eye: IrisEye, confidenceScale?: number, mirrored?: boolean) => boolean;
13
14
  /**
14
15
  * Update a full `IrisResult` from one face's landmarks. `faceConfidence` is
15
16
  * 1 for a live face and the hold decay while held; it scales both eyes'
16
17
  * confidence. `mirrored` says the frame is a mirror of the person (the
17
- * session's webcam feed) so `offset.x` keeps its anatomical sign. Pass
18
- * `undefined` landmarks for an absent face.
18
+ * session's webcam feed) so `left` / `right` stay the person's own eyes and
19
+ * `offset.x` keeps its anatomical sign. Pass `undefined` landmarks for an
20
+ * absent face.
19
21
  */
20
22
  export declare const updateIrisResult: (result: IrisResult, landmarks: ReadonlyArray<IrisPoint> | undefined, nowMs: number, options?: {
21
23
  faceIndex?: number;
@@ -1,10 +1,12 @@
1
1
  import { TrackerPoint } from '../types/common';
2
- /** Person's perspective: `left` is the person's left eye (MediaPipe mesh indices 473–477). */
2
+ /** Person's perspective: `left` is the person's own left eye, on every feed. */
3
3
  export type IrisSide = "left" | "right";
4
4
  /**
5
- * MediaPipe face-mesh indices used for iris tracking, per side. Sides follow
6
- * the mesh topology, so they are the person's anatomical sides on every
7
- * source, mirrored webcam included.
5
+ * MediaPipe face-mesh indices used for iris tracking, per MediaPipe side
6
+ * (`left` = MediaPipe's left eye, 473–477). That is the person's own left eye
7
+ * on an unmirrored feed and their RIGHT eye on the mirrored webcam;
8
+ * `IrisResult.left` / `.right` already pick the person's own eye for the feed
9
+ * (`IRIS_LANDMARKS[personSide(side, mirrored)]`).
8
10
  */
9
11
  export declare const IRIS_LANDMARKS: {
10
12
  readonly left: {
@@ -206,18 +206,18 @@ const S = [
206
206
  };
207
207
  export {
208
208
  O as D,
209
- _ as F,
209
+ d as F,
210
210
  F as I,
211
211
  I as L,
212
212
  A as O,
213
213
  N as R,
214
214
  g as S,
215
- d as a,
216
- v as b,
217
- L as c,
215
+ v as a,
216
+ L as b,
217
+ _ as c,
218
218
  u as d,
219
- P as e,
220
- Y as f,
219
+ Y as e,
220
+ P as f,
221
221
  S as g,
222
222
  w as p,
223
223
  M as r
@@ -0,0 +1 @@
1
+ "use strict";const o=require("react"),M=require("./index-CfSF8LXa.cjs");function _(n){return JSON.stringify(n??{})}function d(n,i,E=!0){const{session:e}=M.useXRContext(),c=o.useId(),[r,h]=o.useState(null),l=_(i),f=o.useRef(i);f.current=i,o.useEffect(()=>{let y=!1;return h(null),e.registry.acquire(n,c,f.current).catch(t=>{y||h(t instanceof Error?t:new Error(String(t)))}),()=>{y=!0,e.registry.release(n,c)}},[e,n,c,l]),o.useEffect(()=>{e.registry.setActive(n,c,E)},[e,n,c,E]);const u=e.store,s=o.useSyncExternalStore(y=>u.subscribe(y),()=>u.getSnapshot().pipeline.get(n)??null,()=>null),a=o.useMemo(()=>s?s.getModelNode():null,[s]),x=o.useMemo(()=>r?M.mapModelErrorToReason(r):null,[r]);return{ready:s!==null&&r===null,node:a,error:r,fallback:x}}const S={"face.forehead":10,"face.noseTip":1,"face.chin":152,"face.leftEyeOuter":263,"face.rightEyeOuter":33,"face.leftCheek":425,"face.rightCheek":205,"face.mouthCenter":13,"face.leftEarlobe":454,"face.rightEarlobe":234},R={"face.center":[10,152,234,454],"face.leftEye":[263,362,387,373],"face.rightEye":[33,133,158,145]},I=(n,i=0)=>Number.isFinite(n)?n:i,C=n=>Math.max(-1,Math.min(1,I(n))),O={x:0,y:0,z:0},z=(n,i,E=O,e={x:0,y:0,z:0,visibility:0},c=!1)=>{const r=M.feedSidedName(n,c),h=S[r];if(h!==void 0){const t=i[h];return t?Object.assign(e,t):null}const l=R[r];if(l){e.x=0,e.y=0,e.z=0;for(const t of l){const A=i[t];if(!A)return null;e.x+=A.x,e.y+=A.y,e.z+=A.z}return e.x/=l.length,e.y/=l.length,e.z/=l.length,e.visibility=1,e}if(n!=="face.custom"||i.length===0)return null;let f=1/0,u=1/0,s=-1/0,a=-1/0,x=0;for(const t of i)f=Math.min(f,t.x),u=Math.min(u,t.y),s=Math.max(s,t.x),a=Math.max(a,t.y),x+=t.z;const y=s-f;return e.x=(f+s)*.5-M.personLeftSign(c)*C(E.x)*y*.5,e.y=(u+a)*.5-C(E.y)*(a-u)*.5,e.z=x/i.length-I(E.z)*y,e.visibility=1,e},b={left:S["face.leftEyeOuter"],right:S["face.rightEyeOuter"]};exports.FACE_EYE_DISTANCE_LANDMARKS=b;exports.FACE_LANDMARK_INDICES=S;exports.resolveFaceAnchorPoint=z;exports.useXRModel=d;
@@ -0,0 +1,76 @@
1
+ import { useId as C, useState as I, useRef as O, useEffect as S, useSyncExternalStore as m, useMemo as d } from "react";
2
+ import { u as z, m as b, f as _, p as R } from "./index-CIe7eCMH.js";
3
+ function F(n) {
4
+ return JSON.stringify(n ?? {});
5
+ }
6
+ function L(n, i, a = !0) {
7
+ const { session: e } = z(), r = C(), [o, h] = I(null), c = F(i), l = O(i);
8
+ l.current = i, S(() => {
9
+ let u = !1;
10
+ return h(null), e.registry.acquire(n, r, l.current).catch((t) => {
11
+ u || h(t instanceof Error ? t : new Error(String(t)));
12
+ }), () => {
13
+ u = !0, e.registry.release(n, r);
14
+ };
15
+ }, [e, n, r, c]), S(() => {
16
+ e.registry.setActive(n, r, a);
17
+ }, [e, n, r, a]);
18
+ const f = e.store, s = m(
19
+ (u) => f.subscribe(u),
20
+ () => f.getSnapshot().pipeline.get(n) ?? null,
21
+ () => null
22
+ ), y = d(() => s ? s.getModelNode() : null, [s]), E = d(() => o ? b(o) : null, [o]);
23
+ return {
24
+ ready: s !== null && o === null,
25
+ node: y,
26
+ error: o,
27
+ fallback: E
28
+ };
29
+ }
30
+ const M = {
31
+ "face.forehead": 10,
32
+ "face.noseTip": 1,
33
+ "face.chin": 152,
34
+ "face.leftEyeOuter": 263,
35
+ "face.rightEyeOuter": 33,
36
+ "face.leftCheek": 425,
37
+ "face.rightCheek": 205,
38
+ "face.mouthCenter": 13,
39
+ "face.leftEarlobe": 454,
40
+ "face.rightEarlobe": 234
41
+ }, T = {
42
+ "face.center": [10, 152, 234, 454],
43
+ "face.leftEye": [263, 362, 387, 373],
44
+ "face.rightEye": [33, 133, 158, 145]
45
+ }, A = (n, i = 0) => Number.isFinite(n) ? n : i, p = (n) => Math.max(-1, Math.min(1, A(n))), g = { x: 0, y: 0, z: 0 }, v = (n, i, a = g, e = { x: 0, y: 0, z: 0, visibility: 0 }, r = !1) => {
46
+ const o = _(n, r), h = M[o];
47
+ if (h !== void 0) {
48
+ const t = i[h];
49
+ return t ? Object.assign(e, t) : null;
50
+ }
51
+ const c = T[o];
52
+ if (c) {
53
+ e.x = 0, e.y = 0, e.z = 0;
54
+ for (const t of c) {
55
+ const x = i[t];
56
+ if (!x) return null;
57
+ e.x += x.x, e.y += x.y, e.z += x.z;
58
+ }
59
+ return e.x /= c.length, e.y /= c.length, e.z /= c.length, e.visibility = 1, e;
60
+ }
61
+ if (n !== "face.custom" || i.length === 0) return null;
62
+ let l = 1 / 0, f = 1 / 0, s = -1 / 0, y = -1 / 0, E = 0;
63
+ for (const t of i)
64
+ l = Math.min(l, t.x), f = Math.min(f, t.y), s = Math.max(s, t.x), y = Math.max(y, t.y), E += t.z;
65
+ const u = s - l;
66
+ return e.x = (l + s) * 0.5 - R(r) * p(a.x) * u * 0.5, e.y = (f + y) * 0.5 - p(a.y) * (y - f) * 0.5, e.z = E / i.length - A(a.z) * u, e.visibility = 1, e;
67
+ }, K = {
68
+ left: M["face.leftEyeOuter"],
69
+ right: M["face.rightEyeOuter"]
70
+ };
71
+ export {
72
+ K as F,
73
+ M as a,
74
+ v as r,
75
+ L as u
76
+ };