@vincentt-xr/sdk 2.0.0-alpha.1 → 2.0.0-alpha.2

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 (352) hide show
  1. package/GROUNDING.md +1588 -20
  2. package/dist/{DebuggerUI-CatYc-RG.cjs → DebuggerUI-B45_Gb9d.cjs} +1 -1
  3. package/dist/{DebuggerUI-gLMKiVwJ.js → DebuggerUI-Cq28c18s.js} +1 -1
  4. package/dist/FaceMeshRenderer-6t8OsQhK.js +1195 -0
  5. package/dist/FaceMeshRenderer-lQLhYIW-.cjs +155 -0
  6. package/dist/FaceRetouch-CDrL0pXg.js +551 -0
  7. package/dist/FaceRetouch-DtNl8-4e.cjs +134 -0
  8. package/dist/audio/AudioEngine.d.ts +3 -1
  9. package/dist/audio/AudioPlayer.d.ts +29 -0
  10. package/dist/audio/AudioPlayerLogic.d.ts +4 -0
  11. package/dist/audio/index.d.ts +2 -0
  12. package/dist/components/Axes/index.d.ts +6 -0
  13. package/dist/components/FaceMesh/FaceMeshRenderer.d.ts +17 -0
  14. package/dist/components/FaceMesh/canonical/CanonicalFaceMeshRenderer.d.ts +17 -1
  15. package/dist/components/FaceMesh/canonical/FaceMeshMaterial.d.ts +25 -0
  16. package/dist/components/FaceMesh/canonical/assets.d.ts +3 -0
  17. package/dist/components/FaceMesh/canonical/geometryGroups.d.ts +9 -0
  18. package/dist/components/FaceMesh/canonical/parseCanonicalFaceModel.d.ts +2 -0
  19. package/dist/components/FaceMesh/canonical/shaders.d.ts +2 -0
  20. package/dist/components/FaceMesh/deform.d.ts +3 -0
  21. package/dist/components/FaceMesh/index.d.ts +5 -0
  22. package/dist/components/FaceMesh/material/defaults.d.ts +70 -0
  23. package/dist/components/FaceMesh/material/index.d.ts +1 -0
  24. package/dist/components/FaceMesh/material/options.d.ts +5 -1
  25. package/dist/components/FaceMesh/material/support.d.ts +7 -2
  26. package/dist/components/FaceMesh/material/textures.d.ts +4 -0
  27. package/dist/components/FaceMesh/material/types.d.ts +2 -2
  28. package/dist/components/FaceRetouch/Background.d.ts +5 -6
  29. package/dist/components/FaceRetouch/FaceRetouch.d.ts +47 -0
  30. package/dist/components/FaceRetouch/index.d.ts +2 -8
  31. package/dist/components/FaceRetouch/landmarkMask.d.ts +0 -5
  32. package/dist/components/FaceRetouch/useFaceRetouchMask.d.ts +3 -7
  33. package/dist/components/FaceTracker/index.d.ts +5 -3
  34. package/dist/components/FaceWarp3D/FaceWarp3DHead.d.ts +1 -1
  35. package/dist/components/HandJoints2D/index.d.ts +1 -1
  36. package/dist/components/HandTracking2D/HandVisual.d.ts +1 -1
  37. package/dist/components/HandTracking2D/index.d.ts +1 -1
  38. package/dist/components/HandTracking2DController/index.d.ts +1 -1
  39. package/dist/components/HandTracking3D/index.d.ts +1 -1
  40. package/dist/components/LightObject/index.d.ts +20 -0
  41. package/dist/components/LookAt/index.d.ts +23 -0
  42. package/dist/components/MeshRenderer/index.d.ts +58 -0
  43. package/dist/components/PerspectiveCamera/index.d.ts +2 -8
  44. package/dist/components/PinToMesh/index.d.ts +47 -0
  45. package/dist/components/RenderGroupLayer/index.d.ts +6 -0
  46. package/dist/components/SceneObjectRenderer/index.d.ts +16 -0
  47. package/dist/components/Screen2D/ScreenTransformFrame.d.ts +11 -0
  48. package/dist/components/Screen2D/ScreenTransformHelpers.d.ts +19 -0
  49. package/dist/components/Screen2D/ScreenTransformInteraction.d.ts +18 -0
  50. package/dist/components/Screen2D/index.d.ts +5 -0
  51. package/dist/components/ScreenGlass/defaults.d.ts +3 -0
  52. package/dist/components/ScreenGlass/index.d.ts +5 -0
  53. package/dist/components/ScreenGlass/shaders.d.ts +2 -0
  54. package/dist/components/ScreenGlass/types.d.ts +10 -0
  55. package/dist/components/ScreenGradient/defaults.d.ts +5 -0
  56. package/dist/components/ScreenGradient/index.d.ts +5 -0
  57. package/dist/components/ScreenGradient/shaders.d.ts +2 -0
  58. package/dist/components/ScreenGradient/types.d.ts +19 -0
  59. package/dist/components/ScreenImage/ScreenImage.d.ts +4 -0
  60. package/dist/components/ScreenImage/components/DynamicTextureSync.d.ts +9 -0
  61. package/dist/components/ScreenImage/components/ScreenImageBody.d.ts +9 -0
  62. package/dist/components/ScreenImage/components/ScreenImageFrame.d.ts +9 -0
  63. package/dist/components/ScreenImage/components/ScreenImageTransformFrame.d.ts +9 -0
  64. package/dist/components/ScreenImage/fit.d.ts +52 -0
  65. package/dist/components/ScreenImage/index.d.ts +8 -87
  66. package/dist/components/ScreenImage/materials/ScreenImageBlendMaterial.d.ts +9 -0
  67. package/dist/components/ScreenImage/materials/ScreenImageMatcap.d.ts +3 -0
  68. package/dist/components/ScreenImage/source.d.ts +16 -0
  69. package/dist/components/ScreenImage/types.d.ts +37 -0
  70. package/dist/components/ScreenImage/utils/ScreenImageConstants.d.ts +9 -0
  71. package/dist/components/ScreenImage/utils/ScreenImageHelpers.d.ts +4 -0
  72. package/dist/components/ScreenShape/geometry.d.ts +5 -0
  73. package/dist/components/ScreenShape/index.d.ts +5 -0
  74. package/dist/components/ScreenShape/types.d.ts +41 -0
  75. package/dist/components/ScreenSpaceUI/ScreenTransformGuide.d.ts +15 -0
  76. package/dist/components/ScreenSpaceUI/ScreenTransformOverlayGuide.d.ts +9 -0
  77. package/dist/components/ScreenSpaceUI/index.d.ts +2 -0
  78. package/dist/components/ScreenText/components/ScreenTextBody.d.ts +2 -0
  79. package/dist/components/ScreenText/components/ScreenTextTransformFrame.d.ts +9 -0
  80. package/dist/components/ScreenText/constants.d.ts +5 -0
  81. package/dist/components/ScreenText/index.d.ts +6 -20
  82. package/dist/components/ScreenText/types.d.ts +31 -0
  83. package/dist/components/ScreenText/utils/ScreenTextHelpers.d.ts +14 -0
  84. package/dist/components/ScreenText/utils/ScreenTextMappings.d.ts +17 -0
  85. package/dist/components/SequentialRenderPasses/index.d.ts +6 -0
  86. package/dist/components/TextLabel/TextLabel.d.ts +5 -0
  87. package/dist/components/TextLabel/alignment.d.ts +4 -0
  88. package/dist/components/TextLabel/bend.d.ts +9 -0
  89. package/dist/components/TextLabel/canvas/buildTextLabelTexture.d.ts +4 -0
  90. package/dist/components/TextLabel/canvas/canvasTypography.d.ts +13 -0
  91. package/dist/components/TextLabel/canvas/drawBackground.d.ts +21 -0
  92. package/dist/components/TextLabel/canvas/drawEffects.d.ts +34 -0
  93. package/dist/components/TextLabel/canvas/drawText.d.ts +19 -0
  94. package/dist/components/TextLabel/components/TextLabelMesh.d.ts +13 -0
  95. package/dist/components/TextLabel/constants.d.ts +2 -0
  96. package/dist/components/TextLabel/hooks/useTextLabelTexture.d.ts +7 -0
  97. package/dist/components/TextLabel/index.d.ts +2 -161
  98. package/dist/components/TextLabel/layout/measurement.d.ts +8 -0
  99. package/dist/components/TextLabel/layout/resolveTextLayout.d.ts +25 -0
  100. package/dist/components/TextLabel/layout/wrapText.d.ts +6 -0
  101. package/dist/components/TextLabel/types.d.ts +227 -0
  102. package/dist/components/TrackingAnchor/index.d.ts +18 -2
  103. package/dist/components/Transform3D/index.d.ts +30 -0
  104. package/dist/components/XRMediaSurface/index.d.ts +6 -6
  105. package/dist/components/XRViewport/XRViewport.d.ts +11 -0
  106. package/dist/components/XRViewport/components/HiddenMedia.d.ts +7 -0
  107. package/dist/components/XRViewport/components/MediaAssetPicker.d.ts +8 -0
  108. package/dist/components/XRViewport/components/MediaControlStack.d.ts +13 -0
  109. package/dist/components/XRViewport/components/XRViewportLayers.d.ts +30 -0
  110. package/dist/components/XRViewport/constants.d.ts +24 -0
  111. package/dist/components/XRViewport/contexts.d.ts +6 -0
  112. package/dist/components/XRViewport/hooks/useViewportExternalFaces.d.ts +13 -0
  113. package/dist/components/XRViewport/hooks/useViewportMediaSource.d.ts +16 -0
  114. package/dist/components/XRViewport/hooks/useViewportMediaTexture.d.ts +10 -0
  115. package/dist/components/XRViewport/hooks/useViewportPipeline.d.ts +41 -0
  116. package/dist/components/XRViewport/hooks/useViewportRenderState.d.ts +47 -0
  117. package/dist/components/XRViewport/index.d.ts +3 -118
  118. package/dist/components/XRViewport/layout.d.ts +16 -0
  119. package/dist/components/XRViewport/slots.d.ts +16 -0
  120. package/dist/components/XRViewport/types.d.ts +89 -0
  121. package/dist/components/XRViewport/useViewportSize.d.ts +3 -0
  122. package/dist/components/index.d.ts +12 -0
  123. package/dist/contexts-BKvTIayr.cjs +1 -0
  124. package/dist/contexts-Bk5zz_VR.js +214 -0
  125. package/dist/debug-ui/component-editor/index.d.ts +19 -0
  126. package/dist/debug-ui/face-mesh-renderer-settings/index.d.ts +8 -0
  127. package/dist/debug-ui/face-retouch/index.d.ts +11 -0
  128. package/dist/debug-ui/hand-joints-2d/index.d.ts +1 -1
  129. package/dist/debug-ui/hand-tracking-2d/index.d.ts +1 -1
  130. package/dist/debug-ui/hand-tracking-2d-controller/index.d.ts +1 -1
  131. package/dist/debug-ui/hand-tracking-3d/index.d.ts +1 -1
  132. package/dist/debug-ui/hierarchy-panel/index.d.ts +29 -0
  133. package/dist/debug-ui/index.d.ts +25 -2
  134. package/dist/debug-ui/layer-panel/index.d.ts +3 -2
  135. package/dist/debug-ui/media-source/index.d.ts +2 -0
  136. package/dist/debug-ui/media-source/session.d.ts +12 -0
  137. package/dist/debug-ui/media-source.cjs +1 -1
  138. package/dist/debug-ui/media-source.js +6 -4
  139. package/dist/debug-ui/mesh-renderer-settings/index.d.ts +6 -0
  140. package/dist/debug-ui/object-inspector-panel/index.d.ts +25 -0
  141. package/dist/debug-ui/pin-to-mesh-settings/index.d.ts +10 -0
  142. package/dist/debug-ui/scene-editor/context.d.ts +38 -0
  143. package/dist/debug-ui/scene-editor/hierarchy-panel.d.ts +9 -0
  144. package/dist/debug-ui/scene-editor/index.d.ts +11 -0
  145. package/dist/debug-ui/scene-editor/inspector-panel.d.ts +7 -0
  146. package/dist/debug-ui/scene-editor/store-utils.d.ts +2 -0
  147. package/dist/debug-ui/scene-editor/viewport-toolbar.d.ts +4 -0
  148. package/dist/debug-ui/scene-editor/viewport.d.ts +21 -0
  149. package/dist/debug-ui/screen-glass-settings/index.d.ts +6 -0
  150. package/dist/debug-ui/screen-gradient-settings/GradientStopsEditor.d.ts +5 -0
  151. package/dist/debug-ui/screen-gradient-settings/index.d.ts +6 -0
  152. package/dist/debug-ui/screen-gradient-settings/styles.d.ts +3 -0
  153. package/dist/debug-ui/screen-image-settings/index.d.ts +4 -2
  154. package/dist/debug-ui/screen-shape-settings/index.d.ts +6 -0
  155. package/dist/debug-ui/screen-text-settings/NumberField.d.ts +9 -0
  156. package/dist/debug-ui/screen-text-settings/ScreenTextSettingsPanel.d.ts +3 -0
  157. package/dist/debug-ui/screen-text-settings/controls/NestedSection.d.ts +7 -0
  158. package/dist/debug-ui/screen-text-settings/controls/Section.d.ts +8 -0
  159. package/dist/debug-ui/screen-text-settings/controls/icons.d.ts +4 -0
  160. package/dist/debug-ui/screen-text-settings/index.d.ts +2 -122
  161. package/dist/debug-ui/screen-text-settings/sections/BackgroundSection.d.ts +8 -0
  162. package/dist/debug-ui/screen-text-settings/sections/ContentSection.d.ts +5 -0
  163. package/dist/debug-ui/screen-text-settings/sections/EffectsSection.d.ts +25 -0
  164. package/dist/debug-ui/screen-text-settings/sections/StyleSection.d.ts +5 -0
  165. package/dist/debug-ui/screen-text-settings/sections/TransformSection.d.ts +5 -0
  166. package/dist/debug-ui/screen-text-settings/sections/background/BackgroundFillControls.d.ts +2 -0
  167. package/dist/debug-ui/screen-text-settings/sections/background/BackgroundSizeControls.d.ts +2 -0
  168. package/dist/debug-ui/screen-text-settings/sections/background/BackgroundStrokeControls.d.ts +2 -0
  169. package/dist/debug-ui/screen-text-settings/sections/background/types.d.ts +7 -0
  170. package/dist/debug-ui/screen-text-settings/sections/effects/BendEffectSection.d.ts +4 -0
  171. package/dist/debug-ui/screen-text-settings/sections/effects/EffectChrome.d.ts +21 -0
  172. package/dist/debug-ui/screen-text-settings/sections/effects/GlowEffectSection.d.ts +4 -0
  173. package/dist/debug-ui/screen-text-settings/sections/effects/InnerShadowEffectSection.d.ts +4 -0
  174. package/dist/debug-ui/screen-text-settings/sections/effects/OutlineEffectSection.d.ts +4 -0
  175. package/dist/debug-ui/screen-text-settings/sections/effects/ShadowEffectSection.d.ts +4 -0
  176. package/dist/debug-ui/screen-text-settings/sections/effects/types.d.ts +14 -0
  177. package/dist/debug-ui/screen-text-settings/settings.d.ts +90 -0
  178. package/dist/debug-ui/screen-text-settings/styles.d.ts +26 -0
  179. package/dist/debug-ui/screen-text-settings/transform.d.ts +6 -0
  180. package/dist/debug-ui/screen-text-settings/types.d.ts +9 -0
  181. package/dist/debug-ui/shared/ScreenTransformSection.d.ts +6 -3
  182. package/dist/debug-ui/transform-3d-settings/index.d.ts +11 -0
  183. package/dist/debug-ui.cjs +3 -13
  184. package/dist/debug-ui.js +7896 -5098
  185. package/dist/drawNormalizedCrop-B-7zU-Xw.cjs +1 -0
  186. package/dist/drawNormalizedCrop-CRdIDyl1.js +44 -0
  187. package/dist/entries/all.d.ts +1 -0
  188. package/dist/entries/core.d.ts +53 -6
  189. package/dist/entries/face-effects.d.ts +10 -8
  190. package/dist/entries/internal.d.ts +1 -1
  191. package/dist/entries/low-level.d.ts +18 -4
  192. package/dist/entries/scene-object.d.ts +10 -0
  193. package/dist/entries/tracking.d.ts +25 -2
  194. package/dist/face-action/index.d.ts +34 -0
  195. package/dist/face-attribute-expression/index.d.ts +10 -0
  196. package/dist/face-effects.cjs +1 -342
  197. package/dist/face-effects.js +1391 -2767
  198. package/dist/face-info/blendshapes.d.ts +3 -0
  199. package/dist/face-info/derive.d.ts +8 -0
  200. package/dist/face-info/drawFaceCrop.d.ts +10 -0
  201. package/dist/face-info/getFaceInfo.d.ts +8 -0
  202. package/dist/face-info/index.d.ts +8 -0
  203. package/dist/face-info/landmarks.d.ts +21 -0
  204. package/dist/face-info/types.d.ts +52 -0
  205. package/dist/getFaceInfo-CyPAKh3h.cjs +1 -0
  206. package/dist/getFaceInfo-hUKMLFcr.js +118 -0
  207. package/dist/{handJoints2d.d.ts → hand/handJoints2d.d.ts} +1 -1
  208. package/dist/{handTracking2d.d.ts → hand/handTracking2d.d.ts} +1 -1
  209. package/dist/{handTracking2dController.d.ts → hand/handTracking2dController.d.ts} +1 -1
  210. package/dist/{handTracking3d.d.ts → hand/handTracking3d.d.ts} +1 -1
  211. package/dist/hooks/faceResults.d.ts +1 -1
  212. package/dist/hooks/useCalibrationFaceTracker.d.ts +1 -1
  213. package/dist/hooks/useFaceAction.d.ts +3 -0
  214. package/dist/hooks/useFaceAttributeExpression.d.ts +16 -0
  215. package/dist/hooks/useFaceDetection.d.ts +18 -0
  216. package/dist/hooks/useFaceInfo.d.ts +7 -0
  217. package/dist/hooks/useFaceInfos.d.ts +15 -0
  218. package/dist/hooks/useFaceResultReader.d.ts +10 -0
  219. package/dist/hooks/useFrameCapture.d.ts +18 -0
  220. package/dist/hooks/useMediaRecorder.d.ts +14 -2
  221. package/dist/hooks/useOwnedTexture.d.ts +6 -0
  222. package/dist/hooks/useTrackerContext.d.ts +2 -2
  223. package/dist/hooks/useXRSession/facade.d.ts +3 -0
  224. package/dist/hooks/useXRSession/registry.d.ts +9 -0
  225. package/dist/index-82aENaRq.cjs +1 -0
  226. package/dist/{index-BGNbrc4C.js → index-BgQAX8rs.js} +213 -125
  227. package/dist/index-CEc1CAmB.cjs +1 -0
  228. package/dist/index-CTHeBQOs.js +178 -0
  229. package/dist/index-D4bLzBr6.cjs +1 -0
  230. package/dist/index-DSpzjuqd.cjs +1 -0
  231. package/dist/index-Di70KWuY.js +2049 -0
  232. package/dist/index-DzEzkBIH.cjs +17 -0
  233. package/dist/{index-safCs_af.js → index-JygePOwo.js} +565 -508
  234. package/dist/index-UC0Ux38E.js +111 -0
  235. package/dist/{internal-Cae1ps15.js → internal-DuMPpcbp.js} +86 -80
  236. package/dist/internal-i2JkM85N.cjs +1 -0
  237. package/dist/internal.cjs +1 -1
  238. package/dist/internal.js +2 -2
  239. package/dist/low-level.cjs +1 -1
  240. package/dist/low-level.js +1229 -86
  241. package/dist/main.cjs +1 -73
  242. package/dist/main.js +545 -1693
  243. package/dist/material/MaterialFill.d.ts +20 -0
  244. package/dist/material/MeshMaterial.d.ts +14 -0
  245. package/dist/material/index.d.ts +2 -0
  246. package/dist/models/Body/index.d.ts +1 -1
  247. package/dist/models/Face/index.d.ts +1 -0
  248. package/dist/models/Face/rotation.d.ts +3 -0
  249. package/dist/render/renderGroups.d.ts +47 -0
  250. package/dist/render/renderPasses.d.ts +18 -0
  251. package/dist/renderGroups-C9QJrAXu.js +152 -0
  252. package/dist/renderGroups-Dvm1J4lW.cjs +1 -0
  253. package/dist/renderLayers-lDtL0_43.cjs +1 -0
  254. package/dist/renderLayers-zrK2pv5O.js +13 -0
  255. package/dist/renderPasses-CT5iBwtg.cjs +21 -0
  256. package/dist/renderPasses-CjgG_6kQ.js +1500 -0
  257. package/dist/scene-object/index.d.ts +146 -0
  258. package/dist/scene-object/runtimeRegistry.d.ts +14 -0
  259. package/dist/scene-object.cjs +1 -0
  260. package/dist/scene-object.js +40 -0
  261. package/dist/{screenImageSettings.d.ts → screen-image/screenImageSettings.d.ts} +9 -2
  262. package/dist/{screenTextSettings.d.ts → screen-text/screenTextSettings.d.ts} +18 -2
  263. package/dist/screen2d/coordinates.d.ts +87 -0
  264. package/dist/screen2d/index.d.ts +3 -0
  265. package/dist/screen2d/screenTransform.d.ts +47 -0
  266. package/dist/screen2d/smoothing.d.ts +5 -0
  267. package/dist/{selectors-BLl2JUWW.cjs → selectors-2QvO5RYY.cjs} +1 -1
  268. package/dist/{selectors-CXd_x-6t.js → selectors-Dw3C-gSk.js} +3 -3
  269. package/dist/services/MetricsCollector/index.d.ts +7 -1
  270. package/dist/services/MetricsCollector/utils.d.ts +1 -1
  271. package/dist/session-BChR4TgK.cjs +31 -0
  272. package/dist/session-C1StwN0f.js +363 -0
  273. package/dist/texture/animatedTexture.d.ts +61 -0
  274. package/dist/texture/animationMath.d.ts +8 -0
  275. package/dist/texture/sourceResolver.d.ts +30 -0
  276. package/dist/tracking.cjs +1 -1
  277. package/dist/tracking.js +580 -321
  278. package/dist/types/face.d.ts +1 -13
  279. package/dist/types/index.d.ts +0 -1
  280. package/dist/types/nodes.d.ts +2 -1
  281. package/dist/types/session.d.ts +2 -0
  282. package/dist/types/tracking.d.ts +8 -2
  283. package/dist/types/util-types.d.ts +1 -1
  284. package/dist/useFaceInfo-C-WfMlYp.cjs +1 -0
  285. package/dist/useFaceInfo-CwsHZedC.js +62 -0
  286. package/dist/useFaceResults-CkFc1egZ.js +19 -0
  287. package/dist/useFaceResults-VcFdOUFV.cjs +1 -0
  288. package/dist/utils/drawNormalizedCrop.d.ts +22 -0
  289. package/dist/utils/integrity.d.ts +4 -25
  290. package/dist/utils/landmarkBounds.d.ts +1 -1
  291. package/dist/utils/logger.d.ts +2 -2
  292. package/docs/MIGRATION_GUIDE.md +589 -0
  293. package/docs/SDK_DOCUMENTATION.md +1155 -0
  294. package/docs/api/audio.mdx +36 -0
  295. package/docs/api/behavior-components.mdx +164 -0
  296. package/docs/api/capture-recording.mdx +103 -0
  297. package/docs/api/debug-ui-scene-editor.mdx +249 -0
  298. package/docs/api/face-actions.mdx +104 -0
  299. package/docs/api/face-attribute-expression.mdx +87 -0
  300. package/docs/api/face-binding-anchors.mdx +53 -0
  301. package/docs/api/face-effects.mdx +19 -0
  302. package/docs/api/face-info.mdx +112 -0
  303. package/docs/api/face-mesh.mdx +98 -0
  304. package/docs/api/face-painting.mdx +33 -0
  305. package/docs/api/face-retouching.mdx +73 -0
  306. package/docs/api/material-render-state.mdx +132 -0
  307. package/docs/api/runtime-3d.mdx +311 -0
  308. package/docs/api/scene-object-store.mdx +213 -0
  309. package/docs/api/screen-image.mdx +41 -0
  310. package/docs/api/screen-shape.mdx +64 -0
  311. package/docs/api/screen-space-coordinates.mdx +41 -0
  312. package/docs/api/screen-text.mdx +39 -0
  313. package/docs/api/texture-sources.mdx +55 -0
  314. package/docs/api/trackers.mdx +46 -0
  315. package/docs/docs.json +70 -0
  316. package/docs/examples/scene-object-recipes.mdx +194 -0
  317. package/docs/guides/harness-debug-ui.mdx +139 -0
  318. package/docs/inspector/hierarchy-panel.mdx +51 -0
  319. package/docs/inspector/object-inspector-panel.mdx +51 -0
  320. package/docs/introduction.mdx +121 -0
  321. package/docs/scene-objects/overview.mdx +127 -0
  322. package/docs/scene-objects/render-groups.mdx +77 -0
  323. package/docs/scene-objects/runtime-rendering.mdx +75 -0
  324. package/docs/texture-api-consumer.md +58 -0
  325. package/package.json +37 -7
  326. package/dist/MediaSourceSwitcher-C-xYg0nQ.js +0 -317
  327. package/dist/MediaSourceSwitcher-Cq3g4IKw.cjs +0 -31
  328. package/dist/components/FaceRetouch/defaults.d.ts +0 -13
  329. package/dist/components/FaceRetouch/retouchRegions.d.ts +0 -23
  330. package/dist/components/FaceRetouch/useFaceRetouchRegions.d.ts +0 -12
  331. package/dist/defaults-BLpcN3pG.cjs +0 -1
  332. package/dist/defaults-LtY4M7dg.js +0 -55
  333. package/dist/index-BXyObVHF.cjs +0 -1
  334. package/dist/index-CY3bUAcW.js +0 -12
  335. package/dist/index-C_Duh13c.cjs +0 -1
  336. package/dist/index-D8fpPQkC.cjs +0 -1
  337. package/dist/index-DxshgBu0.cjs +0 -1
  338. package/dist/index-O-2crZ3M.js +0 -1102
  339. package/dist/internal-BjyhBP8i.cjs +0 -1
  340. package/dist/modules/XRClient/index.d.ts +0 -9
  341. package/dist/modules/index.d.ts +0 -1
  342. package/dist/screenImageSettings-6NRg4cx9.js +0 -39
  343. package/dist/screenImageSettings-y_B4_767.cjs +0 -1
  344. package/dist/services/ApiService.d.ts +0 -12
  345. package/dist/types/client.d.ts +0 -3
  346. package/dist/useFaceResults-cpsSmKKc.js +0 -81
  347. package/dist/useFaceResults-hVUJYSEY.cjs +0 -1
  348. package/dist/useXRModel-3DcUa28n.cjs +0 -1
  349. package/dist/useXRModel-BMJE1hrk.js +0 -28
  350. /package/dist/{layerStack.d.ts → render/layerStack.d.ts} +0 -0
  351. /package/dist/{screenImagePresets.d.ts → screen-image/screenImagePresets.d.ts} +0 -0
  352. /package/dist/{screenTextPresets.d.ts → screen-text/screenTextPresets.d.ts} +0 -0
@@ -0,0 +1,146 @@
1
+ import { MeshRendererSettings } from '../components/MeshRenderer';
2
+ import { FaceMeshRendererSettings } from '../components/FaceMesh';
3
+ import { LightSettings } from '../components/LightObject';
4
+ import { PinToMeshSettings } from '../components/PinToMesh';
5
+ import { TrackingAnchorSettings } from '../components/TrackingAnchor';
6
+ import { LookAtSettings } from '../components/LookAt';
7
+ import { Transform3DSettings } from '../components/Transform3D';
8
+ import { ScreenImageSettings } from '../screen-image/screenImageSettings';
9
+ import { ScreenTextSettings } from '../screen-text/screenTextSettings';
10
+ import { ScreenShapeSettings } from '../components/ScreenShape';
11
+ import { ScreenTransform2DSettings } from '../screen2d';
12
+ export type SceneObjectId = string;
13
+ export type SceneComponentId = string;
14
+ export type MaterialSettings = {
15
+ type: "standard" | "basic";
16
+ color: string;
17
+ opacity: number;
18
+ wireframe: boolean;
19
+ roughness: number;
20
+ metalness: number;
21
+ };
22
+ export type TextureSettings = {
23
+ sourceId?: string;
24
+ url?: string;
25
+ flipX: boolean;
26
+ flipY: boolean;
27
+ };
28
+ export type ComponentRegistry = {
29
+ Transform: Transform3DSettings;
30
+ ScreenTransform: ScreenTransform2DSettings;
31
+ ScreenImage: ScreenImageSettings;
32
+ ScreenText: ScreenTextSettings;
33
+ ScreenShape: ScreenShapeSettings;
34
+ MeshRenderer: MeshRendererSettings;
35
+ FaceMeshRenderer: FaceMeshRendererSettings;
36
+ Material: MaterialSettings;
37
+ Texture: TextureSettings;
38
+ Light: LightSettings;
39
+ LookAt: LookAtSettings;
40
+ PinToMesh: PinToMeshSettings;
41
+ TrackingAnchor: TrackingAnchorSettings;
42
+ };
43
+ export type SceneComponentType = keyof ComponentRegistry;
44
+ export type SceneObject = {
45
+ id: SceneObjectId;
46
+ name: string;
47
+ enabled: boolean;
48
+ /**
49
+ * Optional parent scene object. Child transforms are evaluated in the
50
+ * parent's runtime Object3D space, so moving/rotating/scaling the parent
51
+ * affects all descendants while each child keeps its own local transform.
52
+ */
53
+ parentObjectId?: SceneObjectId | null;
54
+ /** Ordered child scene-object IDs for hierarchy/runtime nesting. */
55
+ childObjectIds?: SceneObjectId[];
56
+ renderGroupId?: string;
57
+ /** @deprecated Use renderGroupId. Retained for persisted-scene migration. */
58
+ layerId?: string;
59
+ componentIds: SceneComponentId[];
60
+ };
61
+ export type SceneComponent<TType extends SceneComponentType = SceneComponentType> = TType extends SceneComponentType ? {
62
+ id: SceneComponentId;
63
+ objectId: SceneObjectId;
64
+ type: TType;
65
+ enabled: boolean;
66
+ settings: ComponentRegistry[TType];
67
+ } : never;
68
+ export type SceneObjectStore = {
69
+ objects: Record<SceneObjectId, SceneObject>;
70
+ components: Record<SceneComponentId, SceneComponent>;
71
+ };
72
+ export declare const createSceneId: (prefix: string) => string;
73
+ export declare const createSceneObjectId: () => string;
74
+ export declare const createSceneComponentId: () => string;
75
+ export declare const createDefaultTransformSettings: () => Transform3DSettings;
76
+ export declare const createDefaultScreenTransformSettings: () => ScreenTransform2DSettings;
77
+ export declare const createDefaultScreenImageSettings: () => ScreenImageSettings;
78
+ export declare const createDefaultScreenTextSettings: () => ScreenTextSettings;
79
+ export declare const createDefaultScreenShapeSettings: () => ScreenShapeSettings;
80
+ export declare const createDefaultMeshRendererSettings: () => MeshRendererSettings;
81
+ export declare const createDefaultFaceMeshRendererSettings: () => FaceMeshRendererSettings;
82
+ export declare const createDefaultMaterialSettings: () => MaterialSettings;
83
+ export declare const createDefaultTextureSettings: () => TextureSettings;
84
+ export declare const createDefaultLightSettings: () => LightSettings;
85
+ export declare const createDefaultLookAtSettings: () => {
86
+ enabled: boolean;
87
+ targetObjectId: SceneObjectId | null;
88
+ mode: "point";
89
+ inheritChildren: boolean;
90
+ offsetRotation: {
91
+ x: number;
92
+ y: number;
93
+ z: number;
94
+ };
95
+ };
96
+ export declare const createDefaultPinToMeshSettings: () => PinToMeshSettings;
97
+ export declare const createDefaultTrackingAnchorSettings: () => TrackingAnchorSettings;
98
+ export declare const componentDefaults: {
99
+ Transform: () => Transform3DSettings;
100
+ ScreenTransform: () => ScreenTransform2DSettings;
101
+ ScreenImage: () => ScreenImageSettings;
102
+ ScreenText: () => ScreenTextSettings;
103
+ ScreenShape: () => ScreenShapeSettings;
104
+ MeshRenderer: () => MeshRendererSettings;
105
+ FaceMeshRenderer: () => FaceMeshRendererSettings;
106
+ Material: () => MaterialSettings;
107
+ Texture: () => TextureSettings;
108
+ Light: () => LightSettings;
109
+ LookAt: () => {
110
+ enabled: boolean;
111
+ targetObjectId: SceneObjectId | null;
112
+ mode: "point";
113
+ inheritChildren: boolean;
114
+ offsetRotation: {
115
+ x: number;
116
+ y: number;
117
+ z: number;
118
+ };
119
+ };
120
+ PinToMesh: () => PinToMeshSettings;
121
+ TrackingAnchor: () => TrackingAnchorSettings;
122
+ };
123
+ export declare const createSceneObject: ({ componentIds, enabled, id, parentObjectId, childObjectIds, renderGroupId, layerId, name, }: {
124
+ componentIds?: SceneComponentId[];
125
+ enabled?: boolean;
126
+ id?: SceneObjectId;
127
+ parentObjectId?: SceneObjectId | null;
128
+ childObjectIds?: SceneObjectId[];
129
+ renderGroupId?: string;
130
+ /** @deprecated Use renderGroupId. */
131
+ layerId?: string;
132
+ name: string;
133
+ }) => SceneObject;
134
+ export declare const createDefaultComponent: <TType extends SceneComponentType>(type: TType, objectId: SceneObjectId) => SceneComponent<TType>;
135
+ export declare const getOrderedComponents: (store: SceneObjectStore, objectId: SceneObjectId) => SceneComponent[];
136
+ export declare const createOrderedComponentsSelector: () => (store: SceneObjectStore, objectId: SceneObjectId) => SceneComponent[];
137
+ export declare const addComponentToObject: <TStore extends SceneObjectStore>(store: TStore, component: SceneComponent) => TStore;
138
+ export declare const moveComponent: <TStore extends SceneObjectStore>(store: TStore, objectId: SceneObjectId, componentId: SceneComponentId, nextIndex: number) => TStore;
139
+ export declare const removeComponent: <TStore extends SceneObjectStore>(store: TStore, objectId: SceneObjectId, componentId: SceneComponentId) => TStore;
140
+ export declare const replaceSceneComponent: <TStore extends SceneObjectStore>(store: TStore, component: SceneComponent) => TStore;
141
+ export declare const replaceSceneObject: <TStore extends SceneObjectStore>(store: TStore, object: SceneObject) => TStore;
142
+ export declare const getSceneObjectChildren: (store: SceneObjectStore, objectId: SceneObjectId) => SceneObject[];
143
+ export declare const setSceneObjectParent: <TStore extends SceneObjectStore>(store: TStore, objectId: SceneObjectId, parentObjectId: SceneObjectId | null, nextIndex?: number) => TStore;
144
+ export declare const setSceneObjectParentPreserveWorldTransform: <TStore extends SceneObjectStore>(store: TStore, objectId: SceneObjectId, parentObjectId: SceneObjectId | null, nextIndex?: number) => TStore;
145
+ export declare const setSceneObjectVisible: <TStore extends SceneObjectStore>(store: TStore, objectId: SceneObjectId, visible: boolean) => TStore;
146
+ export declare const deleteSceneObject: <TStore extends SceneObjectStore>(store: TStore, objectId: SceneObjectId) => TStore;
@@ -0,0 +1,14 @@
1
+ import { ReactNode } from 'react';
2
+ import { Object3D } from 'three';
3
+ export type RuntimeObjectRegistry = {
4
+ register: (id: string, object: Object3D | null) => void;
5
+ resolve: (id: string | null | undefined) => Object3D | null;
6
+ };
7
+ export declare const RuntimeObjectRegistryProvider: ({ children }: {
8
+ children: ReactNode;
9
+ }) => import('react').FunctionComponentElement<import('react').ProviderProps<RuntimeObjectRegistry | null>>;
10
+ export declare const useRuntimeObjectRegistry: () => RuntimeObjectRegistry;
11
+ export declare const useRegisterRuntimeObject: () => (id: string, object: Object3D | null) => void;
12
+ export declare const useResolveRuntimeObject: () => (id: string | null | undefined) => Object3D | null;
13
+ export declare const registerRuntimeObject: (id: string, object: Object3D | null) => void;
14
+ export declare const resolveRuntimeObject: (id: string | null | undefined) => Object3D | null;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./renderPasses-CT5iBwtg.cjs"),t=require("./renderGroups-Dvm1J4lW.cjs");exports.addComponentToObject=e.addComponentToObject;exports.componentDefaults=e.componentDefaults;exports.createDefaultComponent=e.createDefaultComponent;exports.createDefaultFaceMeshRendererSettings=e.createDefaultFaceMeshRendererSettings;exports.createDefaultMaterialSettings=e.createDefaultMaterialSettings;exports.createDefaultMeshRendererSettings=e.createDefaultMeshRendererSettings;exports.createDefaultScreenImageSettings=e.createDefaultScreenImageSettings;exports.createDefaultScreenShapeSettings=e.createDefaultScreenShapeSettings;exports.createDefaultScreenTextSettings=e.createDefaultScreenTextSettings;exports.createDefaultScreenTransformSettings=e.createDefaultScreenTransformSettings;exports.createDefaultTextureSettings=e.createDefaultTextureSettings;exports.createDefaultTransformSettings=e.createDefaultTransformSettings;exports.createOrderedComponentsSelector=e.createOrderedComponentsSelector;exports.createSceneComponentId=e.createSceneComponentId;exports.createSceneId=e.createSceneId;exports.createSceneObject=e.createSceneObject;exports.createSceneObjectId=e.createSceneObjectId;exports.deleteSceneObject=e.deleteSceneObject;exports.getOrderedComponents=e.getOrderedComponents;exports.getSceneObjectChildren=e.getSceneObjectChildren;exports.moveComponent=e.moveComponent;exports.removeComponent=e.removeComponent;exports.replaceSceneComponent=e.replaceSceneComponent;exports.replaceSceneObject=e.replaceSceneObject;exports.setSceneObjectParent=e.setSceneObjectParent;exports.setSceneObjectParentPreserveWorldTransform=e.setSceneObjectParentPreserveWorldTransform;exports.setSceneObjectVisible=e.setSceneObjectVisible;exports.DEFAULT_RENDER_GROUP_IDS=t.DEFAULT_RENDER_GROUP_IDS;exports.RENDER_GROUP_POLICIES=t.RENDER_GROUP_POLICIES;exports.createRenderPlan=t.createRenderPlan;exports.getDefaultRenderGroupId=t.getDefaultRenderGroupId;exports.migrateToRenderGroups=t.migrateToRenderGroups;exports.moveObjectToGroup=t.moveObjectToGroup;exports.reorderObjectWithinGroup=t.reorderObjectWithinGroup;exports.reorderRenderGroup=t.reorderRenderGroup;exports.validateGroupCompatibility=t.validateGroupCompatibility;
@@ -0,0 +1,40 @@
1
+ import { a, c as r, b as s, d as n, e as c, f as o, g as S, i as l, h as d, j as m, k as p, l as i, q as u, m as f, n as D, o as g, p as O, r as b, s as R, t as j, u as C, v as T, w as G, x as I, y as v, z as P, A as h } from "./renderPasses-CjgG_6kQ.js";
2
+ import { D as x, R as _, c as M, g as U, m as y, a as A, r as F, b as L, v as N } from "./renderGroups-C9QJrAXu.js";
3
+ export {
4
+ x as DEFAULT_RENDER_GROUP_IDS,
5
+ _ as RENDER_GROUP_POLICIES,
6
+ a as addComponentToObject,
7
+ r as componentDefaults,
8
+ s as createDefaultComponent,
9
+ n as createDefaultFaceMeshRendererSettings,
10
+ c as createDefaultMaterialSettings,
11
+ o as createDefaultMeshRendererSettings,
12
+ S as createDefaultScreenImageSettings,
13
+ l as createDefaultScreenShapeSettings,
14
+ d as createDefaultScreenTextSettings,
15
+ m as createDefaultScreenTransformSettings,
16
+ p as createDefaultTextureSettings,
17
+ i as createDefaultTransformSettings,
18
+ u as createOrderedComponentsSelector,
19
+ M as createRenderPlan,
20
+ f as createSceneComponentId,
21
+ D as createSceneId,
22
+ g as createSceneObject,
23
+ O as createSceneObjectId,
24
+ b as deleteSceneObject,
25
+ U as getDefaultRenderGroupId,
26
+ R as getOrderedComponents,
27
+ j as getSceneObjectChildren,
28
+ y as migrateToRenderGroups,
29
+ C as moveComponent,
30
+ A as moveObjectToGroup,
31
+ T as removeComponent,
32
+ F as reorderObjectWithinGroup,
33
+ L as reorderRenderGroup,
34
+ G as replaceSceneComponent,
35
+ I as replaceSceneObject,
36
+ v as setSceneObjectParent,
37
+ P as setSceneObjectParentPreserveWorldTransform,
38
+ h as setSceneObjectVisible,
39
+ N as validateGroupCompatibility
40
+ };
@@ -1,5 +1,6 @@
1
- import { ScreenImageBlendMode, ScreenImageMaterialType, ScreenImageStretchMode } from './components/ScreenImage';
2
- import { ScreenCanvasSize, ScreenCoordinateSpace } from './screen2d';
1
+ import { ScreenImageProps, ScreenImageBlendMode, ScreenImageMaterialType, ScreenImageStretchMode } from '../components/ScreenImage';
2
+ import { ScreenCanvasSize, ScreenCoordinateSpace } from '../screen2d';
3
+ import { ScreenTransform2DSettings } from '../screen2d/screenTransform';
3
4
  import { ScreenImagePreset } from './screenImagePresets';
4
5
  export type ScreenImageSourceKind = "default" | "image" | "texture" | "video" | "sequence" | "gif";
5
6
  export type ScreenImageTransformationSettings = {
@@ -37,6 +38,7 @@ export type ScreenImageImageSettings = {
37
38
  export type ScreenImageSettings = {
38
39
  enabled: boolean;
39
40
  preset: ScreenImagePreset;
41
+ screenTransform?: ScreenTransform2DSettings;
40
42
  transformation: ScreenImageTransformationSettings;
41
43
  image: ScreenImageImageSettings;
42
44
  };
@@ -46,5 +48,10 @@ export type ScreenImageSceneSettings = {
46
48
  enabled: boolean;
47
49
  };
48
50
  };
51
+ export type ScreenImageRenderMapping = {
52
+ shouldRender: boolean;
53
+ props: Omit<ScreenImageProps, "backdropTexture" | "onScreenTransformChange">;
54
+ };
55
+ export declare function mapScreenImageSettingsToProps(settings: ScreenImageSceneSettings): ScreenImageRenderMapping;
49
56
  export declare const DEFAULT_SCREEN_IMAGE_SETTINGS: ScreenImageSettings;
50
57
  export declare const DEFAULT_SCREEN_IMAGE_SCENE_SETTINGS: ScreenImageSceneSettings;
@@ -1,5 +1,7 @@
1
- import { ScreenImageSettings } from './screenImageSettings';
2
- import { ScreenCanvasSize, ScreenCoordinateSpace } from './screen2d';
1
+ import { ScreenImageSettings } from '../screen-image/screenImageSettings';
2
+ import { ScreenTextProps } from '../components/ScreenText';
3
+ import { ScreenCanvasSize, ScreenCoordinateSpace } from '../screen2d';
4
+ import { ScreenTransform2DSettings } from '../screen2d/screenTransform';
3
5
  export type ScreenTextArtPreset = "clean" | "sticker" | "shadow-pop" | "neon" | "editorial" | "comic-burst" | "ice-outline" | "sunset-glow" | "cutout" | "badge-arc" | "chrome-bulge" | "retro-wave" | "flag-pop" | "fisheye-poster";
4
6
  export type ScreenTextContent = {
5
7
  text: string;
@@ -76,6 +78,7 @@ export type ScreenTextStyle = {
76
78
  bold?: boolean;
77
79
  fontStyle?: "normal" | "italic";
78
80
  underline?: boolean;
81
+ strikethrough?: boolean;
79
82
  letterSpacing: number;
80
83
  lineSpacing: number;
81
84
  color: string;
@@ -98,6 +101,7 @@ export type ScreenTextSettings = {
98
101
  content: ScreenTextContent;
99
102
  layout: ScreenTextLayout;
100
103
  style: ScreenTextStyle;
104
+ screenTransform?: ScreenTransform2DSettings;
101
105
  transformation: ScreenTextTransformationSettings;
102
106
  textArtPreset: ScreenTextArtPreset;
103
107
  };
@@ -127,5 +131,17 @@ export type ScreenTextSceneSettings = {
127
131
  enabled: boolean;
128
132
  };
129
133
  };
134
+ export type ScreenTextRenderMapping = {
135
+ shouldRender: boolean;
136
+ props: Omit<ScreenTextProps, "onScreenTransformChange">;
137
+ };
138
+ export declare function mapScreenTextInnerShadowToProps(innerShadow?: ScreenTextInnerShadow): {
139
+ color: string;
140
+ opacity: number | undefined;
141
+ blur: number;
142
+ offsetX: number;
143
+ offsetY: number;
144
+ } | undefined;
145
+ export declare function mapScreenTextSettingsToProps(settings: ScreenTextSceneSettings): ScreenTextRenderMapping;
130
146
  export declare const DEFAULT_SCREEN_TEXT_SHADOW_LAYER: ScreenTextShadowLayer;
131
147
  export declare const DEFAULT_SCREEN_TEXT_SCENE_SETTINGS: ScreenTextSceneSettings;
@@ -0,0 +1,87 @@
1
+ import { Camera, Ray, Vector3Like } from 'three';
2
+ import { ScreenTransformRoot } from './screenTransform';
3
+ import { XRMediaLayout } from '../types/compositor';
4
+ export type ScreenViewportSize = {
5
+ width: number;
6
+ height: number;
7
+ };
8
+ export type ScreenPixelPoint = {
9
+ x: number;
10
+ y: number;
11
+ };
12
+ export type ProjectedScreenPixelPoint = ScreenPixelPoint & {
13
+ depth: number;
14
+ };
15
+ export type ScreenClientRect = ScreenViewportSize & {
16
+ left: number;
17
+ top: number;
18
+ };
19
+ export type ScreenUnitConversionOptions = {
20
+ parentSize: ScreenViewportSize;
21
+ referencePixelsPerUnit?: number;
22
+ root?: ScreenTransformRoot;
23
+ };
24
+ /** Converts SDK design-canvas pixels to Three.js ScreenSpaceUI plane units. */
25
+ export declare const screenPixelsToUnits: (pixels: number, options: ScreenUnitConversionOptions) => number;
26
+ /** Converts Three.js ScreenSpaceUI plane units to SDK design-canvas pixels. */
27
+ export declare const screenUnitsToPixels: (units: number, options: ScreenUnitConversionOptions) => number;
28
+ /** Converts DOM client coordinates to center-origin, +Y-up SDK design pixels. */
29
+ export declare const clientToScreenPixels: ({ point, rect, root, target, }: {
30
+ point: ScreenPixelPoint;
31
+ rect: ScreenClientRect;
32
+ root?: ScreenTransformRoot;
33
+ target?: ScreenPixelPoint;
34
+ }) => ScreenPixelPoint;
35
+ /** Converts SDK design pixels to DOM client coordinates. */
36
+ export declare const screenPixelsToClient: ({ point, rect, root, target, }: {
37
+ point: ScreenPixelPoint;
38
+ rect: ScreenClientRect;
39
+ root?: ScreenTransformRoot;
40
+ target?: ScreenPixelPoint;
41
+ }) => ScreenPixelPoint;
42
+ /** Converts normalized viewport coordinates (top-left origin) to SDK design pixels. */
43
+ export declare const normalizedToScreenPixels: ({ point, root, target, viewportSize, }: {
44
+ point: ScreenPixelPoint;
45
+ viewportSize: ScreenViewportSize;
46
+ root?: ScreenTransformRoot;
47
+ target?: ScreenPixelPoint;
48
+ }) => ScreenPixelPoint;
49
+ /** Converts SDK design pixels to normalized viewport coordinates (top-left origin). */
50
+ export declare const screenPixelsToNormalized: ({ point, root, target, viewportSize, }: {
51
+ point: ScreenPixelPoint;
52
+ viewportSize: ScreenViewportSize;
53
+ root?: ScreenTransformRoot;
54
+ target?: ScreenPixelPoint;
55
+ }) => ScreenPixelPoint;
56
+ /** Maps source-media pixel coordinates through viewport fit/crop and optional mirroring. */
57
+ export declare const mediaToScreenPixels: ({ layout, mirrored, point, root, target, }: {
58
+ point: ScreenPixelPoint;
59
+ layout: XRMediaLayout;
60
+ mirrored?: boolean;
61
+ root?: ScreenTransformRoot;
62
+ target?: ScreenPixelPoint;
63
+ }) => ScreenPixelPoint;
64
+ /** Maps SDK design pixels back into source-media pixel coordinates. */
65
+ export declare const screenPixelsToMedia: ({ layout, mirrored, point, root, target, }: {
66
+ point: ScreenPixelPoint;
67
+ layout: XRMediaLayout;
68
+ mirrored?: boolean;
69
+ root?: ScreenTransformRoot;
70
+ target?: ScreenPixelPoint;
71
+ }) => ScreenPixelPoint;
72
+ /** Projects a world position into center-origin, +Y-up SDK design pixels. */
73
+ export declare const worldToScreenPixels: ({ camera, point, root, target, viewportSize, }: {
74
+ point: Vector3Like;
75
+ camera: Camera;
76
+ viewportSize: ScreenViewportSize;
77
+ root?: ScreenTransformRoot;
78
+ target?: ProjectedScreenPixelPoint;
79
+ }) => ProjectedScreenPixelPoint;
80
+ /** Casts a ray from center-origin, +Y-up SDK design pixels into the 3D scene. */
81
+ export declare const screenPointToRay: ({ camera, point, root, target, viewportSize, }: {
82
+ point: ScreenPixelPoint;
83
+ camera: Camera;
84
+ viewportSize: ScreenViewportSize;
85
+ root?: ScreenTransformRoot;
86
+ target?: Ray;
87
+ }) => Ray;
@@ -2,3 +2,6 @@ export * from './types';
2
2
  export * from './material-runtime';
3
3
  export * from './texture';
4
4
  export * from './transform';
5
+ export * from './screenTransform';
6
+ export * from './coordinates';
7
+ export * from './smoothing';
@@ -0,0 +1,47 @@
1
+ export type ScreenTransform2DSettings = {
2
+ enabled: boolean;
3
+ position: {
4
+ x: number;
5
+ y: number;
6
+ };
7
+ size: {
8
+ width: number;
9
+ height: number;
10
+ };
11
+ pivot: [number, number];
12
+ rotation: number;
13
+ scale2D: {
14
+ x: number;
15
+ y: number;
16
+ };
17
+ referencePixelsPerUnit: number;
18
+ renderOrder: number;
19
+ overlay: boolean;
20
+ visible: boolean;
21
+ showTransformGuides: boolean;
22
+ };
23
+ export type ScreenTransformRoot = {
24
+ width: number;
25
+ height: number;
26
+ };
27
+ export type ResolvedScreenTransform2D = {
28
+ center: [number, number, number];
29
+ size: [number, number, number];
30
+ rotation: [number, number, number];
31
+ pivotOffset: [number, number, number];
32
+ aspect: number;
33
+ };
34
+ export declare const DEFAULT_SCREEN_TRANSFORM_ROOT: ScreenTransformRoot;
35
+ export declare const DEFAULT_REFERENCE_PIXELS_PER_UNIT = 32;
36
+ export declare const DEFAULT_PIXEL_SNAP_INCREMENT = 0.5;
37
+ export declare const DEFAULT_SCREEN_TRANSFORM_2D: ScreenTransform2DSettings;
38
+ export declare const resolveScreenTransform2D: ({ transform, parentSize, root, snapIncrement, }: {
39
+ transform: ScreenTransform2DSettings;
40
+ parentSize: {
41
+ width: number;
42
+ height: number;
43
+ };
44
+ root?: ScreenTransformRoot;
45
+ snapIncrement?: number;
46
+ }) => ResolvedScreenTransform2D;
47
+ export declare const mergeScreenTransform2D: (transform?: Partial<ScreenTransform2DSettings>) => ScreenTransform2DSettings;
@@ -0,0 +1,5 @@
1
+ import { Vector2, Vector3 } from 'three';
2
+ /** Frame-rate-independent exponential smoothing. */
3
+ export declare const smoothNumber: (current: number, target: number, rate: number, deltaSeconds: number) => number;
4
+ export declare const smoothVector2: (current: Vector2, target: Vector2, rate: number, deltaSeconds: number, out?: Vector2) => Vector2;
5
+ export declare const smoothVector3: (current: Vector3, target: Vector3, rate: number, deltaSeconds: number, out?: Vector3) => Vector3;
@@ -1 +1 @@
1
- "use strict";const s=require("react"),u=require("./index-DxshgBu0.cjs"),o=()=>u.useXRContext().session.store,n=e=>t=>e.subscribe(t),c=()=>{const e=o();return s.useSyncExternalStore(n(e),()=>e.getSnapshot().ready,()=>!1)},a=()=>{const e=o();return s.useSyncExternalStore(n(e),()=>e.getSnapshot().error,()=>{})},i=()=>{const e=o();return s.useSyncExternalStore(n(e),()=>e.getSnapshot().cameraTexture,()=>{})},S=()=>{const e=o(),t=s.useSyncExternalStore(n(e),()=>e.getSnapshot().renderWidth,()=>0),r=s.useSyncExternalStore(n(e),()=>e.getSnapshot().renderHeight,()=>0);return s.useMemo(()=>({width:t,height:r}),[t,r])},l=e=>{const t=o(),r=s.useSyncExternalStore(n(t),()=>t.getSnapshot().pipeline.get(e)??null,()=>null);return s.useMemo(()=>r?r.getModelNode():null,[r])},p=()=>{const e=o(),t=s.useSyncExternalStore(n(e),()=>e.getSnapshot().pipeline,()=>e.getSnapshot().pipeline);return s.useMemo(()=>Array.from(t.keys()),[t])};exports.useXRCameraTexture=i;exports.useXRError=a;exports.useXRModelNode=l;exports.useXRPipelineSnapshot=p;exports.useXRReady=c;exports.useXRRenderSize=S;
1
+ "use strict";const s=require("react"),u=require("./index-D4bLzBr6.cjs"),o=()=>u.useXRContext().session.store,n=e=>t=>e.subscribe(t),c=()=>{const e=o();return s.useSyncExternalStore(n(e),()=>e.getSnapshot().ready,()=>!1)},a=()=>{const e=o();return s.useSyncExternalStore(n(e),()=>e.getSnapshot().error,()=>{})},i=()=>{const e=o();return s.useSyncExternalStore(n(e),()=>e.getSnapshot().cameraTexture,()=>{})},S=()=>{const e=o(),t=s.useSyncExternalStore(n(e),()=>e.getSnapshot().renderWidth,()=>0),r=s.useSyncExternalStore(n(e),()=>e.getSnapshot().renderHeight,()=>0);return s.useMemo(()=>({width:t,height:r}),[t,r])},l=e=>{const t=o(),r=s.useSyncExternalStore(n(t),()=>t.getSnapshot().pipeline.get(e)??null,()=>null);return s.useMemo(()=>r?r.getModelNode():null,[r])},p=()=>{const e=o(),t=s.useSyncExternalStore(n(e),()=>e.getSnapshot().pipeline,()=>e.getSnapshot().pipeline);return s.useMemo(()=>Array.from(t.keys()),[t])};exports.useXRCameraTexture=i;exports.useXRError=a;exports.useXRModelNode=l;exports.useXRPipelineSnapshot=p;exports.useXRReady=c;exports.useXRRenderSize=S;
@@ -1,5 +1,5 @@
1
1
  import { useSyncExternalStore as s, useMemo as a } from "react";
2
- import { u } from "./index-safCs_af.js";
2
+ import { u } from "./index-JygePOwo.js";
3
3
  const r = () => u().session.store, o = (e) => (t) => e.subscribe(t), p = () => {
4
4
  const e = r();
5
5
  return s(
@@ -52,8 +52,8 @@ const r = () => u().session.store, o = (e) => (t) => e.subscribe(t), p = () => {
52
52
  export {
53
53
  l as a,
54
54
  d as b,
55
- h as c,
56
- S as d,
55
+ S as c,
56
+ h as d,
57
57
  g as e,
58
58
  p as u
59
59
  };
@@ -1,5 +1,11 @@
1
1
  import { DebuggerMetrics } from '../../types/debugger';
2
2
  import { MetricsCollectorOptions } from './types';
3
+ type PerformanceModel = {
4
+ getPerformanceData?: () => Promise<{
5
+ name: string;
6
+ processingTime?: number | null;
7
+ }>;
8
+ };
3
9
  export declare class MetricsCollector {
4
10
  private options;
5
11
  private isRunning;
@@ -45,7 +51,7 @@ export declare class MetricsCollector {
45
51
  * Update detection time from models
46
52
  * Aggregates processing time from all active models in the XR pipeline
47
53
  */
48
- updateDetectionTime(pipeline?: Partial<Record<string, any>>): Promise<void>;
54
+ updateDetectionTime(pipeline?: Partial<Record<string, PerformanceModel>>): Promise<void>;
49
55
  /**
50
56
  * Update effective FPS calculation
51
57
  * (will be implemented in Phase 6)
@@ -45,7 +45,7 @@ export declare function smoothValue(currentValue: number, newValue: number, smoo
45
45
  * @param func Function to throttle
46
46
  * @param wait Minimum time between executions in milliseconds
47
47
  */
48
- export declare function throttle<T extends (...args: any[]) => any>(func: T, wait: number): (...args: Parameters<T>) => void;
48
+ export declare function throttle<T extends (...args: never[]) => unknown>(func: T, wait: number): (...args: Parameters<T>) => void;
49
49
  /**
50
50
  * Format number to fixed decimal places
51
51
  * @param value Number to format
@@ -0,0 +1,31 @@
1
+ "use strict";const p=require("./index-D4bLzBr6.cjs"),n=require("react/jsx-runtime"),L=require("react-dom"),c=require("react"),d=require("./x-KC8E4Gaj.cjs"),v=(t,e)=>new URL(`/assets/sdk/debug-ui/v1/${t}/${e}`,p.libConfig.assetStorageEndpoint).href,j=t=>t.replace(/\.[^.]+$/,"").replace(/[_-]+/g," ").replace(/\s+/g," ").trim().replace(/\b\w/g,e=>e.toUpperCase()),$=["person_fullbody.mp4","person_looking.mp4","person_shaking_head.mp4","person_thumbUp.mp4","two_people_smiling.mp4"],z=["person_fist_sign.jpg","person_fullbody.jpg","person_peace_sign.jpg","person_portrait.jpg","person_side_portrait.jpg","three_people_smiling.jpg","two_people_smiling.jpg"],W=(t,e)=>({id:`sdk-video-${e+1}`,kind:"video",label:j(t),url:v("videos",t)}),F=(t,e)=>({id:`sdk-image-${e+1}`,kind:"image",label:j(t),url:v("images",t)}),M=$.map(W),_=z.map(F),V=[{id:"webcam",kind:"webcam",label:"Webcam"},...M,..._];/**
2
+ * @license lucide-react v1.17.0 - ISC
3
+ *
4
+ * This source code is licensed under the ISC license.
5
+ * See the LICENSE file in the root directory of this source tree.
6
+ */const X=[["path",{d:"M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z",key:"18u6gg"}],["circle",{cx:"12",cy:"13",r:"3",key:"1vg3eu"}]],P=d.createLucideIcon("camera",X);/**
7
+ * @license lucide-react v1.17.0 - ISC
8
+ *
9
+ * This source code is licensed under the ISC license.
10
+ * See the LICENSE file in the root directory of this source tree.
11
+ */const T=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],U=d.createLucideIcon("chevron-down",T);/**
12
+ * @license lucide-react v1.17.0 - ISC
13
+ *
14
+ * This source code is licensed under the ISC license.
15
+ * See the LICENSE file in the root directory of this source tree.
16
+ */const q=[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]],D=d.createLucideIcon("grip-vertical",q);/**
17
+ * @license lucide-react v1.17.0 - ISC
18
+ *
19
+ * This source code is licensed under the ISC license.
20
+ * See the LICENSE file in the root directory of this source tree.
21
+ */const N=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]],A=d.createLucideIcon("image",N);/**
22
+ * @license lucide-react v1.17.0 - ISC
23
+ *
24
+ * This source code is licensed under the ISC license.
25
+ * See the LICENSE file in the root directory of this source tree.
26
+ */const K=[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]],B=d.createLucideIcon("menu",K);/**
27
+ * @license lucide-react v1.17.0 - ISC
28
+ *
29
+ * This source code is licensed under the ISC license.
30
+ * See the LICENSE file in the root directory of this source tree.
31
+ */const O=[["path",{d:"m16 13 5.223 3.482a.5.5 0 0 0 .777-.416V7.87a.5.5 0 0 0-.752-.432L16 10.5",key:"ftymec"}],["rect",{x:"2",y:"6",width:"14",height:"12",rx:"2",key:"158x01"}]],H=d.createLucideIcon("video",O),G=t=>t==="webcam"?"📷 ":t==="image"?"🖼 ":"▶ ",Y={position:"fixed",zIndex:2e4,pointerEvents:"none"},I={pointerEvents:"auto",border:"1px solid rgba(255, 255, 255, 0.12)",background:"rgba(8, 15, 28, 0.58)",boxShadow:"0 12px 32px rgba(0, 0, 0, 0.28)",backdropFilter:"blur(20px) saturate(1.15)",WebkitBackdropFilter:"blur(20px) saturate(1.15)",color:"#f8fafc",display:"flex"},J={...I,width:34,height:34,borderRadius:17,alignItems:"center",justifyContent:"center",cursor:"pointer",transition:"transform 150ms ease"},Q={...I,flexDirection:"column",borderRadius:12,overflow:"hidden",padding:4,gap:4},Z={display:"flex",alignItems:"center",gap:3},ee={width:1,height:12,background:"rgba(255, 255, 255, 0.12)",margin:"0 3px"},te={display:"flex",width:16,height:24,alignItems:"center",justifyContent:"center",cursor:"grab",color:"rgba(148, 163, 184, 0.8)",flex:"0 0 auto"},k=(t=!1)=>({display:"flex",width:24,height:24,alignItems:"center",justifyContent:"center",borderRadius:8,border:`1px solid ${t?"rgba(255, 255, 255, 0.12)":"transparent"}`,background:t?"rgba(255, 255, 255, 0.08)":"transparent",color:t?"#f8fafc":"rgba(226, 232, 240, 0.72)",cursor:"pointer",flex:"0 0 auto",transition:"background 120ms ease, color 120ms ease"}),re={position:"relative",display:"flex",alignItems:"center"},ne={width:"100%",minWidth:140,height:24,borderRadius:8,border:"1px solid rgba(255, 255, 255, 0.10)",background:"rgba(15, 23, 42, 0.65)",color:"#f8fafc",fontSize:11,outline:"none",paddingLeft:7,paddingRight:20,appearance:"none",cursor:"pointer"},ie={pointerEvents:"none",position:"absolute",right:5,top:0,bottom:0,display:"flex",alignItems:"center",color:"rgba(148, 163, 184, 0.9)"},se={height:24,display:"flex",alignItems:"center",padding:"0 8px",borderRadius:8,border:"1px solid rgba(255, 255, 255, 0.08)",background:"rgba(255, 255, 255, 0.04)",color:"rgba(226, 232, 240, 0.72)",fontSize:11},S={width:14,height:14},oe=({value:t,onChange:e,sources:i,style:a})=>{const[l,m]=c.useState(!1),[o,y]=c.useState({x:16,y:16}),[u,f]=c.useState(t.kind),g=c.useRef(null),x=c.useMemo(()=>({webcam:i.filter(r=>r.kind==="webcam"),image:i.filter(r=>r.kind==="image"),video:i.filter(r=>r.kind==="video")}),[i]),b=x[u];c.useEffect(()=>{f(t.kind)},[t.kind]);const E=r=>{f(r);const s=x[r][0];s&&e(s)};c.useEffect(()=>{const r=h=>{g.current&&y({x:Math.max(8,h.clientX-g.current.x),y:Math.max(8,h.clientY-g.current.y)})},s=()=>{g.current=null,document.body.classList.remove("select-none")};return window.addEventListener("pointermove",r),window.addEventListener("pointerup",s),()=>{window.removeEventListener("pointermove",r),window.removeEventListener("pointerup",s)}},[]);const w=r=>{const s=r.currentTarget.getBoundingClientRect();g.current={x:r.clientX-s.left,y:r.clientY-s.top},document.body.classList.add("select-none"),r.currentTarget.setPointerCapture(r.pointerId)},C=()=>{if(b.length===0){const r=u==="webcam"?"No camera source":u==="image"?"No image preview":"No video preview";return n.jsx("div",{style:se,children:r})}return n.jsxs("div",{style:re,children:[n.jsx("select",{value:t.id,onChange:r=>{const s=i.find(h=>h.id===r.target.value);s&&e(s)},style:ne,children:b.map(r=>n.jsxs("option",{value:r.id,children:[G(u),r.label]},r.id))}),n.jsx("div",{style:ie,children:n.jsx("span",{style:{width:10,height:10},children:n.jsx(U,{size:10,strokeWidth:1.8})})})]})};return typeof document>"u"?null:L.createPortal(n.jsx("div",{style:{...Y,left:o.x,top:o.y,...a},children:l?n.jsxs("div",{style:Q,children:[n.jsxs("div",{style:Z,children:[n.jsx("div",{onPointerDown:w,style:te,title:"Drag to move",children:n.jsx(D,{size:11,strokeWidth:2})}),n.jsx("button",{type:"button",onClick:()=>m(!1),style:k(!1),title:"Close Menu",children:n.jsx("span",{style:S,children:n.jsx(d.X,{size:14,strokeWidth:1.8})})}),n.jsx("div",{style:ee}),["webcam","image","video"].map(r=>n.jsx("button",{type:"button",onClick:()=>E(r),style:k(u===r),title:r.charAt(0).toUpperCase()+r.slice(1),children:n.jsx("span",{style:S,children:r==="webcam"?n.jsx(P,{size:14,strokeWidth:1.8}):r==="image"?n.jsx(A,{size:14,strokeWidth:1.8}):n.jsx(H,{size:14,strokeWidth:1.8})})},r))]}),C()]}):n.jsx("div",{style:J,onClick:()=>m(!0),onPointerDown:w,title:"Open Media Menu",children:n.jsx("span",{style:{width:16,height:16},children:n.jsx(B,{size:14,strokeWidth:1.8})})})}),document.body)},ce=async t=>{const e=new Image;e.crossOrigin="anonymous",e.src=t,await e.decode();const i=document.createElement("canvas");i.width=e.naturalWidth,i.height=e.naturalHeight;const a=i.getContext("2d");if(!a)throw new Error("Unable to create image media canvas");return a.drawImage(e,0,0,i.width,i.height),i.captureStream(30)},ae=async t=>{const e=document.createElement("video");return e.src=t,e.loop=!0,e.muted=!0,e.playsInline=!0,e.crossOrigin="anonymous",await e.play(),e.captureStream()},R=(t,e)=>{const{session:i}=p.useXRContext();c.useEffect(()=>{let a=!1,l=null;return(async()=>{try{if(t.kind==="webcam")await i.setMediaSource({source:p.XRMediaSource.WEBCAM});else{if(!t.url)throw new Error(`Missing media URL for ${t.id}`);const o=t.kind==="image"?await ce(t.url):await ae(t.url);if(l=o,a){o.getTracks().forEach(y=>y.stop());return}await i.setMediaSource({source:p.XRMediaSource.STREAM,stream:o,sourceKind:t.kind})}await i.registerXRPipeline((e==null?void 0:e.pipeline)??[{model:p.XRModel.FACE_TRACKER,options:{numFaces:(e==null?void 0:e.numFaces)??1}}]),await i.start()}catch(o){console.error("[MediaSourceSession] Error initializing XR session:",o)}})(),()=>{a=!0,l==null||l.getTracks().forEach(o=>o.stop())}},[t,e==null?void 0:e.numFaces,e==null?void 0:e.pipeline,i])},de=R;exports.MediaSourceSwitcher=oe;exports.defaultMediaSources=V;exports.sdkImageMediaSources=_;exports.sdkVideoMediaSources=M;exports.useFaceTrackingMediaSourceSession=de;exports.useMediaSourceSession=R;