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

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 (355) hide show
  1. package/GROUNDING.md +1614 -21
  2. package/dist/{DebuggerUI-CatYc-RG.cjs → DebuggerUI-B45_Gb9d.cjs} +1 -1
  3. package/dist/{DebuggerUI-gLMKiVwJ.js → DebuggerUI-xp4bg3gH.js} +1 -1
  4. package/dist/FaceMeshRenderer-CALA4k49.js +1195 -0
  5. package/dist/FaceMeshRenderer-D4PFqsb3.cjs +155 -0
  6. package/dist/FaceRetouch-Bq2rtPlV.cjs +134 -0
  7. package/dist/FaceRetouch-DF5UsOsZ.js +551 -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 +59 -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 +19 -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-D5TQcwmv.js +660 -0
  124. package/dist/contexts-Dv1SA0bS.cjs +1 -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 +7735 -4896
  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 +21 -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-Cjcgcc4w.js +118 -0
  206. package/dist/getFaceInfo-oQcP40Ha.cjs +1 -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/useXRModel.d.ts +5 -0
  224. package/dist/hooks/useXRSession/facade.d.ts +3 -0
  225. package/dist/hooks/useXRSession/registry.d.ts +9 -0
  226. package/dist/index-Be-S7uSm.cjs +1 -0
  227. package/dist/index-D4bLzBr6.cjs +1 -0
  228. package/dist/index-DdWBnI7A.cjs +17 -0
  229. package/dist/index-DpVIEBHw.js +2068 -0
  230. package/dist/index-DqhqBi7O.cjs +1 -0
  231. package/dist/index-HxT9XEuh.js +111 -0
  232. package/dist/{index-safCs_af.js → index-JygePOwo.js} +565 -508
  233. package/dist/index-N7C6fNah.js +214 -0
  234. package/dist/index-UU5ODHGU.cjs +1 -0
  235. package/dist/{index-BGNbrc4C.js → index-YMUaJU7U.js} +217 -126
  236. package/dist/{internal-Cae1ps15.js → internal-D7NxAsc6.js} +86 -80
  237. package/dist/internal-i2JkM85N.cjs +1 -0
  238. package/dist/internal.cjs +1 -1
  239. package/dist/internal.js +2 -2
  240. package/dist/low-level.cjs +1 -1
  241. package/dist/low-level.js +1138 -86
  242. package/dist/main.cjs +1 -73
  243. package/dist/main.js +545 -1693
  244. package/dist/material/MaterialFill.d.ts +20 -0
  245. package/dist/material/MeshMaterial.d.ts +14 -0
  246. package/dist/material/index.d.ts +2 -0
  247. package/dist/models/Body/index.d.ts +1 -1
  248. package/dist/models/Face/index.d.ts +1 -0
  249. package/dist/models/Face/rotation.d.ts +3 -0
  250. package/dist/render/renderGroups.d.ts +47 -0
  251. package/dist/render/renderPasses.d.ts +18 -0
  252. package/dist/renderGroups-JEXqSACh.js +152 -0
  253. package/dist/renderGroups-uXXsFpvw.cjs +1 -0
  254. package/dist/renderLayers-lDtL0_43.cjs +1 -0
  255. package/dist/renderLayers-zrK2pv5O.js +13 -0
  256. package/dist/renderPasses-CVWt0t8m.cjs +21 -0
  257. package/dist/renderPasses-CdGZeHHL.js +1500 -0
  258. package/dist/scene-object/index.d.ts +146 -0
  259. package/dist/scene-object/runtimeRegistry.d.ts +14 -0
  260. package/dist/scene-object.cjs +1 -0
  261. package/dist/scene-object.js +40 -0
  262. package/dist/{screenImageSettings.d.ts → screen-image/screenImageSettings.d.ts} +9 -2
  263. package/dist/{screenTextSettings.d.ts → screen-text/screenTextSettings.d.ts} +18 -2
  264. package/dist/screen2d/coordinates.d.ts +87 -0
  265. package/dist/screen2d/index.d.ts +3 -0
  266. package/dist/screen2d/screenTransform.d.ts +47 -0
  267. package/dist/screen2d/smoothing.d.ts +5 -0
  268. package/dist/{selectors-BLl2JUWW.cjs → selectors-2QvO5RYY.cjs} +1 -1
  269. package/dist/{selectors-CXd_x-6t.js → selectors-twqYByYZ.js} +6 -6
  270. package/dist/services/MetricsCollector/index.d.ts +7 -1
  271. package/dist/services/MetricsCollector/utils.d.ts +1 -1
  272. package/dist/session-BChR4TgK.cjs +31 -0
  273. package/dist/session-C1StwN0f.js +363 -0
  274. package/dist/texture/animatedTexture.d.ts +63 -0
  275. package/dist/texture/animationMath.d.ts +8 -0
  276. package/dist/texture/gifReader.d.ts +17 -0
  277. package/dist/texture/gifTextureSource.d.ts +16 -0
  278. package/dist/texture/sourceResolver.d.ts +30 -0
  279. package/dist/tracking.cjs +1 -1
  280. package/dist/tracking.js +580 -321
  281. package/dist/types/face.d.ts +1 -13
  282. package/dist/types/index.d.ts +0 -1
  283. package/dist/types/nodes.d.ts +2 -1
  284. package/dist/types/session.d.ts +2 -0
  285. package/dist/types/tracking.d.ts +8 -2
  286. package/dist/types/util-types.d.ts +1 -1
  287. package/dist/useFaceInfo-DOJCGlDG.js +62 -0
  288. package/dist/useFaceInfo-DSUmuzzO.cjs +1 -0
  289. package/dist/useFaceResults-B1BSGUAW.cjs +1 -0
  290. package/dist/useFaceResults-CBmhT5E8.js +19 -0
  291. package/dist/utils/drawNormalizedCrop.d.ts +22 -0
  292. package/dist/utils/integrity.d.ts +4 -25
  293. package/dist/utils/landmarkBounds.d.ts +1 -1
  294. package/dist/utils/logger.d.ts +2 -2
  295. package/docs/MIGRATION_GUIDE.md +589 -0
  296. package/docs/SDK_DOCUMENTATION.md +1155 -0
  297. package/docs/api/audio.mdx +36 -0
  298. package/docs/api/behavior-components.mdx +164 -0
  299. package/docs/api/capture-recording.mdx +103 -0
  300. package/docs/api/debug-ui-scene-editor.mdx +249 -0
  301. package/docs/api/face-actions.mdx +104 -0
  302. package/docs/api/face-attribute-expression.mdx +87 -0
  303. package/docs/api/face-binding-anchors.mdx +53 -0
  304. package/docs/api/face-effects.mdx +19 -0
  305. package/docs/api/face-info.mdx +112 -0
  306. package/docs/api/face-mesh.mdx +98 -0
  307. package/docs/api/face-painting.mdx +33 -0
  308. package/docs/api/face-retouching.mdx +73 -0
  309. package/docs/api/material-render-state.mdx +132 -0
  310. package/docs/api/runtime-3d.mdx +311 -0
  311. package/docs/api/scene-object-store.mdx +213 -0
  312. package/docs/api/screen-image.mdx +65 -0
  313. package/docs/api/screen-shape.mdx +64 -0
  314. package/docs/api/screen-space-coordinates.mdx +41 -0
  315. package/docs/api/screen-text.mdx +39 -0
  316. package/docs/api/texture-sources.mdx +74 -0
  317. package/docs/api/trackers.mdx +46 -0
  318. package/docs/docs.json +70 -0
  319. package/docs/examples/scene-object-recipes.mdx +194 -0
  320. package/docs/guides/harness-debug-ui.mdx +139 -0
  321. package/docs/inspector/hierarchy-panel.mdx +51 -0
  322. package/docs/inspector/object-inspector-panel.mdx +51 -0
  323. package/docs/introduction.mdx +121 -0
  324. package/docs/scene-objects/overview.mdx +127 -0
  325. package/docs/scene-objects/render-groups.mdx +77 -0
  326. package/docs/scene-objects/runtime-rendering.mdx +75 -0
  327. package/docs/texture-api-consumer.md +84 -0
  328. package/package.json +38 -8
  329. package/dist/MediaSourceSwitcher-C-xYg0nQ.js +0 -317
  330. package/dist/MediaSourceSwitcher-Cq3g4IKw.cjs +0 -31
  331. package/dist/components/FaceRetouch/defaults.d.ts +0 -13
  332. package/dist/components/FaceRetouch/retouchRegions.d.ts +0 -23
  333. package/dist/components/FaceRetouch/useFaceRetouchRegions.d.ts +0 -12
  334. package/dist/defaults-BLpcN3pG.cjs +0 -1
  335. package/dist/defaults-LtY4M7dg.js +0 -55
  336. package/dist/index-BXyObVHF.cjs +0 -1
  337. package/dist/index-CY3bUAcW.js +0 -12
  338. package/dist/index-C_Duh13c.cjs +0 -1
  339. package/dist/index-D8fpPQkC.cjs +0 -1
  340. package/dist/index-DxshgBu0.cjs +0 -1
  341. package/dist/index-O-2crZ3M.js +0 -1102
  342. package/dist/internal-BjyhBP8i.cjs +0 -1
  343. package/dist/modules/XRClient/index.d.ts +0 -9
  344. package/dist/modules/index.d.ts +0 -1
  345. package/dist/screenImageSettings-6NRg4cx9.js +0 -39
  346. package/dist/screenImageSettings-y_B4_767.cjs +0 -1
  347. package/dist/services/ApiService.d.ts +0 -12
  348. package/dist/types/client.d.ts +0 -3
  349. package/dist/useFaceResults-cpsSmKKc.js +0 -81
  350. package/dist/useFaceResults-hVUJYSEY.cjs +0 -1
  351. package/dist/useXRModel-3DcUa28n.cjs +0 -1
  352. package/dist/useXRModel-BMJE1hrk.js +0 -28
  353. /package/dist/{layerStack.d.ts → render/layerStack.d.ts} +0 -0
  354. /package/dist/{screenImagePresets.d.ts → screen-image/screenImagePresets.d.ts} +0 -0
  355. /package/dist/{screenTextPresets.d.ts → screen-text/screenTextPresets.d.ts} +0 -0
@@ -0,0 +1,5 @@
1
+ import { TextLabelProps } from './types';
2
+ export type { TextLabelProps } from './types';
3
+ export { resolveTextLabelDrawX, resolveTextLabelPanelX, resolveTextLabelStartY } from './alignment';
4
+ export type { TextAlign, TextBackgroundFillMode, TextBackgroundFit, TextBackgroundTextureFit, TextBendPreset, TextGlow, TextGradientStop, TextInnerShadow, TextOverflowMode, TextShadowLayer, TextStrokeLayer, TextVerticalAlign, } from './types';
5
+ export declare function TextLabel(props: TextLabelProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,4 @@
1
+ import { TextAlign, TextVerticalAlign } from './types';
2
+ export declare function resolveTextLabelDrawX(width: number, padding: number, textAlign: TextAlign): number;
3
+ export declare function resolveTextLabelStartY(height: number, padding: number, fontSize: number, textBlockContentHeight: number, verticalAlign: TextVerticalAlign): number;
4
+ export declare function resolveTextLabelPanelX(width: number, panelWidth: number, textAlign: TextAlign, bgFit: "full" | "text"): number;
@@ -0,0 +1,9 @@
1
+ import { TextBendPreset } from './types';
2
+ export type BendGlyphTransform = {
3
+ xOffset: number;
4
+ yOffset: number;
5
+ rotation: number;
6
+ scaleX: number;
7
+ scaleY: number;
8
+ };
9
+ export declare function resolveBendGlyphTransform(preset: TextBendPreset, normalizedX: number, index: number, glyphCount: number, amplitude: number, halfWidth: number): BendGlyphTransform;
@@ -0,0 +1,4 @@
1
+ import { BuildTextLabelTextureOptions } from '../types';
2
+ import * as THREE from "three";
3
+ export { resolveTextLayout } from '../layout/resolveTextLayout';
4
+ export declare function buildTextLabelTexture(opts: BuildTextLabelTextureOptions): THREE.CanvasTexture;
@@ -0,0 +1,13 @@
1
+ import { BuildTextLabelTextureOptions } from '../types';
2
+ export declare function createTextCanvas(width: number, height: number): HTMLCanvasElement;
3
+ export declare function resolveCanvasTextMetrics(ctx: CanvasRenderingContext2D, opts: BuildTextLabelTextureOptions): {
4
+ fontSize: number;
5
+ resolvedLines: string[];
6
+ letterSpacingPx: number;
7
+ lineHeight: number;
8
+ startY: number;
9
+ textBlockWidth: number;
10
+ textBlockHeight: number;
11
+ textX: number;
12
+ };
13
+ export declare function drawRoundedRectPath(ctx: CanvasRenderingContext2D, x: number, y: number, width: number, height: number, radius: number): void;
@@ -0,0 +1,21 @@
1
+ import { TextAlign, TextBackgroundFillMode, TextBackgroundFit, TextBackgroundTextureFit, TextGradientStop } from '../types';
2
+ export declare function clampPanelDimension(value: number | undefined, fallback: number, maxValue: number): number;
3
+ export declare function drawPanelBackground(ctx: CanvasRenderingContext2D, opts: {
4
+ canvasWidth: number;
5
+ canvasHeight: number;
6
+ textAlign: TextAlign;
7
+ bgFit: TextBackgroundFit;
8
+ panelWidth: number;
9
+ panelHeight: number;
10
+ bgColor: string;
11
+ bgFillMode: TextBackgroundFillMode;
12
+ bgOpacity: number;
13
+ bgGradientStops?: TextGradientStop[];
14
+ bgTextureImage?: CanvasImageSource;
15
+ bgTextureFit: TextBackgroundTextureFit;
16
+ bgTextureFlipX: boolean;
17
+ bgTextureFlipY: boolean;
18
+ borderColor?: string;
19
+ borderWidth: number;
20
+ borderRadius: number;
21
+ }): void;
@@ -0,0 +1,34 @@
1
+ import { TextAlign, TextBendPreset } from '../types';
2
+ export declare function drawGlow(ctx: CanvasRenderingContext2D, opts: {
3
+ lines: string[];
4
+ textX: number;
5
+ startY: number;
6
+ lineHeight: number;
7
+ letterSpacingPx: number;
8
+ bendPreset: TextBendPreset;
9
+ bendStrength: number;
10
+ color: string;
11
+ style: "outward" | "contoured";
12
+ intensity: number;
13
+ range: number;
14
+ horizontalAngle: number;
15
+ verticalAngle: number;
16
+ }): void;
17
+ export declare function drawInnerShadow(ctx: CanvasRenderingContext2D, opts: {
18
+ width: number;
19
+ height: number;
20
+ font: string;
21
+ lines: string[];
22
+ textX: number;
23
+ startY: number;
24
+ lineHeight: number;
25
+ letterSpacingPx: number;
26
+ bendPreset: TextBendPreset;
27
+ bendStrength: number;
28
+ textAlign: TextAlign;
29
+ color: string;
30
+ opacity: number;
31
+ blur: number;
32
+ offsetX: number;
33
+ offsetY: number;
34
+ }): void;
@@ -0,0 +1,19 @@
1
+ import { TextAlign, TextBendPreset, TextShadowLayer, TextStrokeLayer } from '../types';
2
+ export declare function drawTextLine(ctx: CanvasRenderingContext2D, line: string, textX: number, lineY: number, letterSpacingPx: number, mode: "fill" | "stroke", bendPreset?: TextBendPreset, bendStrength?: number): void;
3
+ export declare function drawTextDecorationLine(ctx: CanvasRenderingContext2D, line: string, textX: number, lineY: number, textAlign: TextAlign, color: string, fontSize: number, letterSpacingPx: number, decoration: "underline" | "strikethrough"): void;
4
+ export declare function drawTextLayers(ctx: CanvasRenderingContext2D, opts: {
5
+ lines: string[];
6
+ textX: number;
7
+ startY: number;
8
+ lineHeight: number;
9
+ textAlign: TextAlign;
10
+ color: string;
11
+ fontSize: number;
12
+ letterSpacingPx: number;
13
+ bendPreset: TextBendPreset;
14
+ bendStrength: number;
15
+ shadowLayers: TextShadowLayer[];
16
+ strokeLayers: TextStrokeLayer[];
17
+ underline: boolean;
18
+ strikethrough: boolean;
19
+ }): void;
@@ -0,0 +1,13 @@
1
+ import type * as THREE from "three";
2
+ export type TextLabelMeshProps = {
3
+ texture: THREE.Texture;
4
+ name?: string;
5
+ overlay: boolean;
6
+ opacity: number;
7
+ position?: [number, number, number];
8
+ rotation?: [number, number, number];
9
+ scale?: [number, number, number] | number;
10
+ visible?: boolean;
11
+ renderOrder?: number;
12
+ };
13
+ export declare const TextLabelMesh: import('react').ForwardRefExoticComponent<TextLabelMeshProps & import('react').RefAttributes<THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>>>;
@@ -0,0 +1,2 @@
1
+ import { TextLabelDefaults } from './types';
2
+ export declare const TEXT_LABEL_DEFAULTS: TextLabelDefaults;
@@ -0,0 +1,7 @@
1
+ import { TextLabelDefaults, TextLabelProps } from '../types';
2
+ type NormalizedTextLabelProps = TextLabelProps & TextLabelDefaults;
3
+ export declare function useTextLabelTexture(props: NormalizedTextLabelProps, overrides: {
4
+ text: string;
5
+ bgColor: string;
6
+ }): import('three').CanvasTexture;
7
+ export {};
@@ -1,161 +1,2 @@
1
- export type TextAlign = "left" | "center" | "right";
2
- export type TextBendPreset = "arc" | "arc-lower" | "arc-upper" | "arch" | "bulge" | "shell-lower" | "shell-upper" | "flag" | "wave" | "fish" | "rise" | "fisheye" | "inflate" | "squeeze" | "twist";
3
- /**
4
- * `<TextLabel>` — a text label drawn into a CanvasTexture and rendered as
5
- * a single mesh. First-class scene-tree primitive so lifecycle scripts
6
- * don't have to hand-paint canvas textures for every quiz question,
7
- * progress indicator, or floating answer.
8
- *
9
- * Sizes itself 1×1 in world units; use `scale` on the JSX node or a
10
- * parent `<ScreenTransform>` / `<TrackingAnchor>` to place it.
11
- *
12
- * Word-wraps automatically inside the panel's width; when there are too
13
- * many lines for the chosen font size, the font shrinks one step before
14
- * the text is allowed to clip.
15
- */
16
- export type TextLabelProps = {
17
- /** The text to render. Required. */
18
- text: string;
19
- /** Optional precomputed lines. When provided, these are rendered directly without word wrapping. */
20
- lines?: string[];
21
- /** Text color. Default `#ffffff`. */
22
- color?: string;
23
- /** Multiple stroke layers, drawn outer-to-inner. */
24
- strokeLayers?: Array<{
25
- color: string;
26
- width: number;
27
- opacity?: number;
28
- }>;
29
- /** Optional text stroke color. Omit or pair with `strokeWidth={0}` for no stroke. */
30
- strokeColor?: string;
31
- /** Text stroke thickness in canvas px. Default 0. */
32
- strokeWidth?: number;
33
- /** Stroke opacity multiplier. Default 1. */
34
- strokeOpacity?: number;
35
- /** Multiple shadow / glow layers, drawn back-to-front. */
36
- shadowLayers?: Array<{
37
- color: string;
38
- blur: number;
39
- offsetX?: number;
40
- offsetY?: number;
41
- opacity?: number;
42
- }>;
43
- /** Optional inner shadow rendered inside the glyphs. */
44
- innerShadow?: {
45
- color: string;
46
- blur: number;
47
- offsetX?: number;
48
- offsetY?: number;
49
- opacity?: number;
50
- };
51
- /** Optional glow rendered behind the glyphs. */
52
- glow?: {
53
- color: string;
54
- style: "outward" | "contoured";
55
- intensity?: number;
56
- range?: number;
57
- horizontalAngle?: number;
58
- verticalAngle?: number;
59
- };
60
- /** Optional text shadow/glow color. Omit for none. */
61
- shadowColor?: string;
62
- /** Shadow blur radius in canvas px. Default 0. */
63
- shadowBlur?: number;
64
- /** Shadow X offset in canvas px. Default 0. */
65
- shadowOffsetX?: number;
66
- /** Shadow Y offset in canvas px. Default 0. */
67
- shadowOffsetY?: number;
68
- /** Shadow opacity multiplier. Default 1. */
69
- shadowOpacity?: number;
70
- /** Font weight. Default `bold`. */
71
- fontWeight?: "normal" | "bold" | number;
72
- /** Font style. Default `normal`. */
73
- fontStyle?: "normal" | "italic";
74
- /** Font family. Default `Arial, sans-serif`. */
75
- fontFamily?: string;
76
- /**
77
- * Font size in canvas px at the default 512px resolution. Roughly maps
78
- * to "10pt" → 28, "12pt" → 36, "16pt" → 48, etc. Default 48.
79
- */
80
- fontSize?: number;
81
- /** Horizontal text alignment inside the available lane. Default `center`. */
82
- textAlign?: TextAlign;
83
- /** Overflow behavior. `clamp` keeps only full visible lines, `clip` allows canvas-edge clipping. */
84
- overflow?: "clip" | "clamp" | "ellipsis" | "shrink";
85
- /** When true, keep shrinking until the text fits or `minFontSize` is hit. */
86
- resizeToFit?: boolean;
87
- /** Minimum shrink target in canvas px. Default 12. */
88
- minFontSize?: number;
89
- /** Character spacing as a normalized ratio from 0 to 1. Default 0. */
90
- letterSpacing?: number;
91
- /** Line spacing as a normalized ratio from 0 to 1. Default 0.3. */
92
- lineSpacing?: number;
93
- /** Panel background color. Use `'transparent'` for text-only. Default `rgba(20,40,110,0.88)`. */
94
- bgColor?: string;
95
- /** Background fill mode. Default `solid`. */
96
- bgFillMode?: "solid" | "gradient";
97
- /** Background opacity multiplier. Default 1. */
98
- bgOpacity?: number;
99
- /** Background fit mode. `full` fills the label rect, `text` hugs the measured text block. */
100
- bgFit?: "full" | "text";
101
- /** When true, ignore explicit background width/height and size from the text block. */
102
- bgAutoSize?: boolean;
103
- /** Optional explicit background width in canvas px. */
104
- bgWidth?: number;
105
- /** Optional explicit background height in canvas px. */
106
- bgHeight?: number;
107
- /** Optional gradient stops when `bgFillMode` is `gradient`. */
108
- bgGradientStops?: Array<{
109
- color: string;
110
- position: number;
111
- }>;
112
- /** Optional static texture URL when `bgFillMode` is `texture`. */
113
- bgTextureUrl?: string;
114
- /** Texture fit behavior. Default `cover`. */
115
- bgTextureFit?: "cover" | "contain" | "stretch";
116
- /** Mirror the background texture horizontally. Default false. */
117
- bgTextureFlipX?: boolean;
118
- /** Mirror the background texture vertically. Default false. */
119
- bgTextureFlipY?: boolean;
120
- /** Optional border color. Omit for no border. */
121
- borderColor?: string;
122
- /** Border thickness. Default 0. */
123
- borderWidth?: number;
124
- /** Corner radius. Use 0 for square. Default 24. */
125
- borderRadius?: number;
126
- /** Inner padding in canvas px. Default 32. */
127
- padding?: number;
128
- /**
129
- * Aspect ratio (width / height). The mesh itself is always 1×1; this
130
- * controls how the texture canvas is shaped so wrapping and corner
131
- * radius read correctly when the label isn't square. Default 2.5
132
- * (roughly banner-shaped).
133
- */
134
- aspect?: number;
135
- /** Canvas resolution (height in px). Default 512. */
136
- resolution?: number;
137
- /** Material opacity multiplier. Default 1. */
138
- opacity?: number;
139
- /** Draw an underline beneath each rendered line. Default false. */
140
- underline?: boolean;
141
- /** Bend text along a shallow vertical curve. Range -100..100. Default 0. */
142
- bendPreset?: TextBendPreset;
143
- bendStrength?: number;
144
- /** Optional `name` for runtime `getObjectByName` lookups. */
145
- name?: string;
146
- /** Ignore depth — appropriate for overlay UI. Default true. */
147
- overlay?: boolean;
148
- /** Local position offset, forwarded to the underlying mesh. */
149
- position?: [number, number, number];
150
- /** Local rotation (Euler radians), forwarded to the underlying mesh. */
151
- rotation?: [number, number, number];
152
- /** Local scale, forwarded to the underlying mesh. */
153
- scale?: [number, number, number] | number;
154
- /** Mesh visibility, forwarded so descendants inherit correctly. */
155
- visible?: boolean;
156
- /** Render ordering for overlay composition. */
157
- renderOrder?: number;
158
- };
159
- export declare function TextLabel(props: TextLabelProps): import("react/jsx-runtime").JSX.Element;
160
- export declare function resolveTextLabelDrawX(width: number, padding: number, textAlign: TextAlign): number;
161
- export declare function resolveTextLabelPanelX(width: number, panelWidth: number, textAlign: TextAlign, bgFit: "full" | "text"): number;
1
+ export { TextLabel, resolveTextLabelDrawX, resolveTextLabelPanelX, resolveTextLabelStartY, } from './TextLabel';
2
+ export type { TextAlign, TextBackgroundFillMode, TextBackgroundFit, TextBackgroundTextureFit, TextBendPreset, TextGlow, TextGradientStop, TextInnerShadow, TextLabelProps, TextOverflowMode, TextShadowLayer, TextStrokeLayer, TextVerticalAlign, } from './types';
@@ -0,0 +1,8 @@
1
+ export declare function formatCanvasFont(fontStyle: "normal" | "italic", fontWeight: "normal" | "bold" | number, fontSize: number, fontFamily: string): string;
2
+ export declare function resolveLetterSpacingPx(fontSize: number, letterSpacing: number): number;
3
+ export declare function resolveLineHeight(fontSize: number, lineSpacing: number): number;
4
+ export declare function applyCanvasLetterSpacing(ctx: CanvasRenderingContext2D, letterSpacingPx: number): void;
5
+ export declare function resetCanvasLetterSpacing(ctx: CanvasRenderingContext2D): void;
6
+ export declare function measureTextWidth(ctx: CanvasRenderingContext2D, text: string, letterSpacingPx: number): number;
7
+ export declare function computeMaxLines(height: number, padding: number, fontSize: number, lineSpacing: number): number;
8
+ export declare function linesFit(ctx: CanvasRenderingContext2D, sourceLines: string[], maxWidth: number, maxLines: number, letterSpacingPx: number): boolean;
@@ -0,0 +1,25 @@
1
+ import { TextOverflowMode } from '../types';
2
+ export type ResolveTextLayoutOptions = {
3
+ ctx: CanvasRenderingContext2D;
4
+ text: string;
5
+ explicitLines?: string[];
6
+ maxWidth: number;
7
+ maxHeight: number;
8
+ padding: number;
9
+ fontStyle: "normal" | "italic";
10
+ fontWeight: "normal" | "bold" | number;
11
+ fontSize: number;
12
+ fontFamily: string;
13
+ letterSpacing: number;
14
+ lineSpacing: number;
15
+ overflow?: TextOverflowMode;
16
+ resizeToFit?: boolean;
17
+ minFontSize: number;
18
+ };
19
+ export type ResolveLegacyTextLayoutOptions = Omit<ResolveTextLayoutOptions, "explicitLines" | "overflow" | "resizeToFit" | "minFontSize">;
20
+ export type ResolvedTextLayout = {
21
+ fontSize: number;
22
+ lines: string[];
23
+ };
24
+ export declare function resolveTextLayout(opts: ResolveTextLayoutOptions): ResolvedTextLayout;
25
+ export declare function resolveLegacyTextLayout(opts: ResolveLegacyTextLayoutOptions): ResolvedTextLayout;
@@ -0,0 +1,6 @@
1
+ import { TextOverflowMode } from '../types';
2
+ export declare function wrapText(ctx: CanvasRenderingContext2D, text: string, maxWidth: number, fontStyle: "normal" | "italic", fontWeight: "normal" | "bold" | number, fontSize: number, fontFamily: string, letterSpacingPx: number): string[];
3
+ export declare function wrapTextPreservingBreaks(ctx: CanvasRenderingContext2D, text: string, maxWidth: number, fontStyle: "normal" | "italic", fontWeight: "normal" | "bold" | number, fontSize: number, fontFamily: string, letterSpacingPx: number): string[];
4
+ export declare function trimLineToWidth(ctx: CanvasRenderingContext2D, line: string, maxWidth: number, withEllipsis: boolean, letterSpacingPx: number): string;
5
+ export declare function clampLinesToWidth(ctx: CanvasRenderingContext2D, sourceLines: string[], maxWidth: number, overflow: TextOverflowMode | undefined, letterSpacingPx: number): string[];
6
+ export declare function collapseToLineBudget(ctx: CanvasRenderingContext2D, sourceLines: string[], maxLines: number, maxWidth: number, withEllipsis: boolean, letterSpacingPx: number): string[];
@@ -0,0 +1,227 @@
1
+ export type TextAlign = "left" | "center" | "right";
2
+ export type TextVerticalAlign = "top" | "center" | "bottom";
3
+ export type TextBendPreset = "arc" | "arc-lower" | "arc-upper" | "arch" | "bulge" | "shell-lower" | "shell-upper" | "flag" | "wave" | "fish" | "rise" | "fisheye" | "inflate" | "squeeze" | "twist";
4
+ export type TextStrokeLayer = {
5
+ color: string;
6
+ width: number;
7
+ opacity?: number;
8
+ };
9
+ export type TextShadowLayer = {
10
+ color: string;
11
+ blur: number;
12
+ offsetX?: number;
13
+ offsetY?: number;
14
+ opacity?: number;
15
+ };
16
+ export type TextInnerShadow = {
17
+ color: string;
18
+ blur: number;
19
+ offsetX?: number;
20
+ offsetY?: number;
21
+ opacity?: number;
22
+ };
23
+ export type TextGlow = {
24
+ color: string;
25
+ style: "outward" | "contoured";
26
+ intensity?: number;
27
+ range?: number;
28
+ horizontalAngle?: number;
29
+ verticalAngle?: number;
30
+ };
31
+ export type TextOverflowMode = "clip" | "clamp" | "ellipsis" | "shrink";
32
+ export type TextBackgroundFillMode = "solid" | "gradient";
33
+ export type TextBackgroundFit = "full" | "text";
34
+ export type TextBackgroundTextureFit = "cover" | "contain" | "stretch";
35
+ export type TextGradientStop = {
36
+ color: string;
37
+ position: number;
38
+ };
39
+ /**
40
+ * `<TextLabel>` — a text label drawn into a CanvasTexture and rendered as
41
+ * a single mesh. First-class scene-tree primitive so lifecycle scripts
42
+ * don't have to hand-paint canvas textures for every quiz question,
43
+ * progress indicator, or floating answer.
44
+ *
45
+ * Sizes itself 1x1 in world units; use `scale` on the JSX node or a
46
+ * parent `<ScreenTransform>` / `<TrackingAnchor>` to place it.
47
+ *
48
+ * Word-wraps automatically inside the panel's width; when there are too
49
+ * many lines for the chosen font size, the font shrinks one step before
50
+ * the text is allowed to clip.
51
+ */
52
+ export type TextLabelProps = {
53
+ /** The text to render. Required. */
54
+ text: string;
55
+ /** Optional precomputed lines. When provided, these are rendered directly without word wrapping. */
56
+ lines?: string[];
57
+ /** Text color. Default `#ffffff`. */
58
+ color?: string;
59
+ /** Multiple stroke layers, drawn outer-to-inner. */
60
+ strokeLayers?: TextStrokeLayer[];
61
+ /** Master visibility gate for all stroke/outline rendering. Default true. */
62
+ outlineEnabled?: boolean;
63
+ /** Optional text stroke color. Omit or pair with `strokeWidth={0}` for no stroke. */
64
+ strokeColor?: string;
65
+ /** Text stroke thickness in canvas px. Default 0. */
66
+ strokeWidth?: number;
67
+ /** Stroke opacity multiplier. Default 1. */
68
+ strokeOpacity?: number;
69
+ /** Multiple shadow / glow layers, drawn back-to-front. */
70
+ shadowLayers?: TextShadowLayer[];
71
+ /** Master visibility gate for all outer shadow rendering. Default true. */
72
+ shadowEnabled?: boolean;
73
+ /** Optional inner shadow rendered inside the glyphs. */
74
+ innerShadow?: TextInnerShadow;
75
+ /** Optional glow rendered behind the glyphs. */
76
+ glow?: TextGlow;
77
+ /** Optional text shadow/glow color. Omit for none. */
78
+ shadowColor?: string;
79
+ /** Shadow blur radius in canvas px. Default 0. */
80
+ shadowBlur?: number;
81
+ /** Shadow X offset in canvas px. Default 0. */
82
+ shadowOffsetX?: number;
83
+ /** Shadow Y offset in canvas px. Default 0. */
84
+ shadowOffsetY?: number;
85
+ /** Shadow opacity multiplier. Default 1. */
86
+ shadowOpacity?: number;
87
+ /** Font weight. Default `bold`. */
88
+ fontWeight?: "normal" | "bold" | number;
89
+ /** Font style. Default `normal`. */
90
+ fontStyle?: "normal" | "italic";
91
+ /** Font family. Default `Arial, sans-serif`. */
92
+ fontFamily?: string;
93
+ /**
94
+ * Font size in canvas px at the default 512px resolution. Roughly maps
95
+ * to "10pt" -> 28, "12pt" -> 36, "16pt" -> 48, etc. Default 48.
96
+ */
97
+ fontSize?: number;
98
+ /** Horizontal text alignment inside the available lane. Default `center`. */
99
+ textAlign?: TextAlign;
100
+ /** Vertical text alignment inside the available lane. Default `center`. */
101
+ verticalAlign?: TextVerticalAlign;
102
+ /** Overflow behavior. `clamp` keeps only full visible lines, `clip` allows canvas-edge clipping. */
103
+ overflow?: TextOverflowMode;
104
+ /** When true, keep shrinking until the text fits or `minFontSize` is hit. */
105
+ resizeToFit?: boolean;
106
+ /** Minimum shrink target in canvas px. Default 12. */
107
+ minFontSize?: number;
108
+ /** Character spacing as a normalized ratio from 0 to 1. Default 0. */
109
+ letterSpacing?: number;
110
+ /** Line spacing as a normalized ratio from 0 to 1. Default 0.3. */
111
+ lineSpacing?: number;
112
+ /** Panel background color. Use `'transparent'` for text-only. Default `rgba(20,40,110,0.88)`. */
113
+ bgColor?: string;
114
+ /** Background fill mode. Default `solid`. */
115
+ bgFillMode?: TextBackgroundFillMode;
116
+ /** Background opacity multiplier. Default 1. */
117
+ bgOpacity?: number;
118
+ /** Background fit mode. `full` fills the label rect, `text` hugs the measured text block. */
119
+ bgFit?: TextBackgroundFit;
120
+ /** When true, ignore explicit background width/height and size from the text block. */
121
+ bgAutoSize?: boolean;
122
+ /** Optional explicit background width in canvas px. */
123
+ bgWidth?: number;
124
+ /** Optional explicit background height in canvas px. */
125
+ bgHeight?: number;
126
+ /** Optional gradient stops when `bgFillMode` is `gradient`. */
127
+ bgGradientStops?: TextGradientStop[];
128
+ /** Optional static texture URL when `bgFillMode` is `texture`. */
129
+ bgTextureUrl?: string;
130
+ /** Texture fit behavior. Default `cover`. */
131
+ bgTextureFit?: TextBackgroundTextureFit;
132
+ /** Mirror the background texture horizontally. Default false. */
133
+ bgTextureFlipX?: boolean;
134
+ /** Mirror the background texture vertically. Default false. */
135
+ bgTextureFlipY?: boolean;
136
+ /** Optional border color. Omit for no border. */
137
+ borderColor?: string;
138
+ /** Border thickness. Default 0. */
139
+ borderWidth?: number;
140
+ /** Corner radius. Use 0 for square. Default 24. */
141
+ borderRadius?: number;
142
+ /** Inner padding in canvas px. Default 32. */
143
+ padding?: number;
144
+ /**
145
+ * Aspect ratio (width / height). The mesh itself is always 1x1; this
146
+ * controls how the texture canvas is shaped so wrapping and corner
147
+ * radius read correctly when the label isn't square. Default 2.5
148
+ * (roughly banner-shaped).
149
+ */
150
+ aspect?: number;
151
+ /** Canvas resolution (height in px). Default 512. */
152
+ resolution?: number;
153
+ /** Material opacity multiplier. Default 1. */
154
+ opacity?: number;
155
+ /** Draw an underline beneath each rendered line. Default false. */
156
+ underline?: boolean;
157
+ /** Draw a strikethrough across each rendered line. Default false. */
158
+ strikethrough?: boolean;
159
+ /** Bend text along a shallow vertical curve. Range -100..100. Default 0. */
160
+ bendPreset?: TextBendPreset;
161
+ bendStrength?: number;
162
+ /** Optional `name` for runtime `getObjectByName` lookups. */
163
+ name?: string;
164
+ /** Ignore depth - appropriate for overlay UI. Default true. */
165
+ overlay?: boolean;
166
+ /** Local position offset, forwarded to the underlying mesh. */
167
+ position?: [number, number, number];
168
+ /** Local rotation (Euler radians), forwarded to the underlying mesh. */
169
+ rotation?: [number, number, number];
170
+ /** Local scale, forwarded to the underlying mesh. */
171
+ scale?: [number, number, number] | number;
172
+ /** Mesh visibility, forwarded so descendants inherit correctly. */
173
+ visible?: boolean;
174
+ /** Render ordering for overlay composition. */
175
+ renderOrder?: number;
176
+ };
177
+ export type TextLabelDefaults = Required<Pick<TextLabelProps, "color" | "strokeWidth" | "strokeOpacity" | "shadowBlur" | "shadowOffsetX" | "shadowOffsetY" | "shadowOpacity" | "fontWeight" | "fontStyle" | "fontFamily" | "fontSize" | "textAlign" | "verticalAlign" | "minFontSize" | "letterSpacing" | "lineSpacing" | "bgColor" | "bgFillMode" | "bgOpacity" | "bgFit" | "bgTextureFit" | "bgTextureFlipX" | "bgTextureFlipY" | "borderWidth" | "borderRadius" | "padding" | "aspect" | "resolution" | "opacity" | "underline" | "strikethrough" | "bendPreset" | "bendStrength">>;
178
+ export type BuildTextLabelTextureOptions = {
179
+ text: string;
180
+ lines?: string[];
181
+ color: string;
182
+ strokeLayers?: TextStrokeLayer[];
183
+ strokeColor?: string;
184
+ strokeWidth: number;
185
+ strokeOpacity: number;
186
+ shadowLayers?: TextShadowLayer[];
187
+ innerShadow?: TextInnerShadow;
188
+ glow?: TextGlow;
189
+ shadowColor?: string;
190
+ shadowBlur: number;
191
+ shadowOffsetX: number;
192
+ shadowOffsetY: number;
193
+ shadowOpacity: number;
194
+ fontWeight: "normal" | "bold" | number;
195
+ fontStyle: "normal" | "italic";
196
+ fontFamily: string;
197
+ fontSize: number;
198
+ textAlign: TextAlign;
199
+ verticalAlign: TextVerticalAlign;
200
+ overflow?: TextOverflowMode;
201
+ resizeToFit?: boolean;
202
+ minFontSize: number;
203
+ letterSpacing: number;
204
+ lineSpacing: number;
205
+ bgColor: string;
206
+ bgFillMode: TextBackgroundFillMode;
207
+ bgOpacity: number;
208
+ bgFit: TextBackgroundFit;
209
+ bgAutoSize?: boolean;
210
+ bgWidth?: number;
211
+ bgHeight?: number;
212
+ bgGradientStops?: TextGradientStop[];
213
+ bgTextureImage?: CanvasImageSource;
214
+ bgTextureFit: TextBackgroundTextureFit;
215
+ bgTextureFlipX: boolean;
216
+ bgTextureFlipY: boolean;
217
+ borderColor?: string;
218
+ borderWidth: number;
219
+ borderRadius: number;
220
+ padding: number;
221
+ width: number;
222
+ height: number;
223
+ underline: boolean;
224
+ strikethrough: boolean;
225
+ bendPreset: TextBendPreset;
226
+ bendStrength: number;
227
+ };
@@ -1,6 +1,18 @@
1
1
  import { PropsWithChildren } from 'react';
2
- import { TrackingTarget } from '../../types/tracking';
2
+ import { FaceCustomAnchorPoint, FaceTarget, TrackingTarget } from '../../types/tracking';
3
3
  import * as THREE from "three";
4
+ export type TrackingAnchorSettings = {
5
+ target: FaceTarget;
6
+ customAnchorPoint: FaceCustomAnchorPoint;
7
+ offset: {
8
+ x: number;
9
+ y: number;
10
+ z: number;
11
+ };
12
+ smoothing: number;
13
+ followFaceRoll: boolean;
14
+ };
15
+ export declare const DEFAULT_TRACKING_ANCHOR: TrackingAnchorSettings;
4
16
  /**
5
17
  * Frame-rate-independent lerp factor for a given smoothing rate and frame
6
18
  * delta: `alpha = 1 - e^(-smoothing*dt)`. Same rate produces the same visual
@@ -45,6 +57,8 @@ export type OneEuroState = {
45
57
  * each axis independently. On the first sample it seeds without smoothing.
46
58
  */
47
59
  export declare const stepOneEuro: (state: OneEuroState, sample: THREE.Vector3, dt: number, minCutoff: number, beta: number, dcutoff: number) => OneEuroState;
60
+ /** Apply the SDK's tuned One Euro parameters for a public smoothing value. */
61
+ export declare const stepTrackingSmoothing: (state: OneEuroState, sample: THREE.Vector3, dt: number, smoothing: number) => OneEuroState;
48
62
  type TrackingAnchorProps = PropsWithChildren & {
49
63
  /**
50
64
  * Landmark/joint to attach to. The namespace prefix (`face.`, `hand.`,
@@ -52,6 +66,8 @@ type TrackingAnchorProps = PropsWithChildren & {
52
66
  * mismatched anchors render `null` and emit a console warning.
53
67
  */
54
68
  target: TrackingTarget;
69
+ /** Face-local point used only when target is `face.custom`. */
70
+ customAnchorPoint?: FaceCustomAnchorPoint;
55
71
  /** Optional offset applied in the tracker's local frame after resolution. */
56
72
  offset?: [number, number, number];
57
73
  /**
@@ -70,5 +86,5 @@ type TrackingAnchorProps = PropsWithChildren & {
70
86
  */
71
87
  smoothing?: number;
72
88
  };
73
- export declare const TrackingAnchor: ({ target, offset, smoothing, children, }: TrackingAnchorProps) => import("react/jsx-runtime").JSX.Element | null;
89
+ export declare const TrackingAnchor: ({ target, customAnchorPoint, offset, smoothing, children, }: TrackingAnchorProps) => import("react/jsx-runtime").JSX.Element | null;
74
90
  export {};
@@ -0,0 +1,30 @@
1
+ import { ReactNode } from 'react';
2
+ import { Group } from 'three';
3
+ export type Transform3DVector = {
4
+ x: number;
5
+ y: number;
6
+ z: number;
7
+ };
8
+ export type Transform3DSettings = {
9
+ enabled: boolean;
10
+ linked: {
11
+ position: boolean;
12
+ rotation: boolean;
13
+ scale: boolean;
14
+ };
15
+ showTransformControls: boolean;
16
+ transformControlMode: "translate" | "rotate" | "scale";
17
+ transformControlSpace: "local" | "world";
18
+ position: Transform3DVector;
19
+ rotation: Transform3DVector;
20
+ scale: Transform3DVector;
21
+ visible: boolean;
22
+ };
23
+ export type Transform3DProps = {
24
+ children: ReactNode;
25
+ objectRef?: (object: Group | null) => void;
26
+ onChange?: (next: Transform3DSettings) => void;
27
+ value: Transform3DSettings;
28
+ };
29
+ export declare const DEFAULT_TRANSFORM_3D: Transform3DSettings;
30
+ export declare const Transform3D: ({ children, objectRef, onChange, value }: Transform3DProps) => import("react/jsx-runtime").JSX.Element | null;