@vincentt-xr/sdk 2.0.0-alpha.0 → 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 (362) hide show
  1. package/GROUNDING.md +1813 -27
  2. package/dist/{DebuggerUI-CEfdddkZ.cjs → DebuggerUI-B45_Gb9d.cjs} +1 -1
  3. package/dist/{DebuggerUI-Dgop6Q6o.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 +22 -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 +74 -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 +4 -2
  28. package/dist/components/FaceRetouch/Background.d.ts +9 -5
  29. package/dist/components/FaceRetouch/FaceRetouch.d.ts +47 -0
  30. package/dist/components/FaceRetouch/index.d.ts +2 -6
  31. package/dist/components/FaceRetouch/landmarkMask.d.ts +4 -6
  32. package/dist/components/FaceRetouch/useFaceRetouchMask.d.ts +4 -7
  33. package/dist/components/FaceTracker/index.d.ts +5 -3
  34. package/dist/components/FaceWarp3D/FaceWarp3DHead.d.ts +15 -0
  35. package/dist/components/FaceWarp3D/defaults.d.ts +37 -0
  36. package/dist/components/FaceWarp3D/index.d.ts +3 -0
  37. package/dist/components/FaceWarp3D/warp.d.ts +13 -0
  38. package/dist/components/HandJoints2D/index.d.ts +6 -0
  39. package/dist/components/HandTracker/index.d.ts +2 -2
  40. package/dist/components/HandTracking2D/HandVisual.d.ts +12 -0
  41. package/dist/components/HandTracking2D/index.d.ts +5 -0
  42. package/dist/components/HandTracking2DController/index.d.ts +5 -0
  43. package/dist/components/HandTracking3D/index.d.ts +6 -0
  44. package/dist/components/LightObject/index.d.ts +20 -0
  45. package/dist/components/LookAt/index.d.ts +23 -0
  46. package/dist/components/MeshRenderer/index.d.ts +58 -0
  47. package/dist/components/PerspectiveCamera/index.d.ts +2 -8
  48. package/dist/components/PinToMesh/index.d.ts +47 -0
  49. package/dist/components/RenderGroupLayer/index.d.ts +6 -0
  50. package/dist/components/SceneObjectRenderer/index.d.ts +16 -0
  51. package/dist/components/Screen2D/ScreenTransformFrame.d.ts +11 -0
  52. package/dist/components/Screen2D/ScreenTransformHelpers.d.ts +19 -0
  53. package/dist/components/Screen2D/ScreenTransformInteraction.d.ts +18 -0
  54. package/dist/components/Screen2D/index.d.ts +5 -0
  55. package/dist/components/ScreenGlass/defaults.d.ts +3 -0
  56. package/dist/components/ScreenGlass/index.d.ts +5 -0
  57. package/dist/components/ScreenGlass/shaders.d.ts +2 -0
  58. package/dist/components/ScreenGlass/types.d.ts +10 -0
  59. package/dist/components/ScreenGradient/defaults.d.ts +5 -0
  60. package/dist/components/ScreenGradient/index.d.ts +5 -0
  61. package/dist/components/ScreenGradient/shaders.d.ts +2 -0
  62. package/dist/components/ScreenGradient/types.d.ts +19 -0
  63. package/dist/components/ScreenImage/ScreenImage.d.ts +4 -0
  64. package/dist/components/ScreenImage/components/DynamicTextureSync.d.ts +9 -0
  65. package/dist/components/ScreenImage/components/ScreenImageBody.d.ts +9 -0
  66. package/dist/components/ScreenImage/components/ScreenImageFrame.d.ts +9 -0
  67. package/dist/components/ScreenImage/components/ScreenImageTransformFrame.d.ts +9 -0
  68. package/dist/components/ScreenImage/fit.d.ts +52 -0
  69. package/dist/components/ScreenImage/index.d.ts +8 -0
  70. package/dist/components/ScreenImage/materials/ScreenImageBlendMaterial.d.ts +9 -0
  71. package/dist/components/ScreenImage/materials/ScreenImageMatcap.d.ts +3 -0
  72. package/dist/components/ScreenImage/source.d.ts +16 -0
  73. package/dist/components/ScreenImage/types.d.ts +37 -0
  74. package/dist/components/ScreenImage/utils/ScreenImageConstants.d.ts +9 -0
  75. package/dist/components/ScreenImage/utils/ScreenImageHelpers.d.ts +4 -0
  76. package/dist/components/ScreenShape/geometry.d.ts +5 -0
  77. package/dist/components/ScreenShape/index.d.ts +5 -0
  78. package/dist/components/ScreenShape/types.d.ts +41 -0
  79. package/dist/components/ScreenSpaceUI/ScreenTransformGuide.d.ts +15 -0
  80. package/dist/components/ScreenSpaceUI/ScreenTransformOverlayGuide.d.ts +9 -0
  81. package/dist/components/ScreenSpaceUI/index.d.ts +2 -0
  82. package/dist/components/ScreenText/components/ScreenTextBody.d.ts +2 -0
  83. package/dist/components/ScreenText/components/ScreenTextTransformFrame.d.ts +9 -0
  84. package/dist/components/ScreenText/constants.d.ts +5 -0
  85. package/dist/components/ScreenText/index.d.ts +6 -0
  86. package/dist/components/ScreenText/types.d.ts +31 -0
  87. package/dist/components/ScreenText/utils/ScreenTextHelpers.d.ts +14 -0
  88. package/dist/components/ScreenText/utils/ScreenTextMappings.d.ts +17 -0
  89. package/dist/components/SequentialRenderPasses/index.d.ts +6 -0
  90. package/dist/components/TextLabel/TextLabel.d.ts +5 -0
  91. package/dist/components/TextLabel/alignment.d.ts +4 -0
  92. package/dist/components/TextLabel/bend.d.ts +9 -0
  93. package/dist/components/TextLabel/canvas/buildTextLabelTexture.d.ts +4 -0
  94. package/dist/components/TextLabel/canvas/canvasTypography.d.ts +13 -0
  95. package/dist/components/TextLabel/canvas/drawBackground.d.ts +21 -0
  96. package/dist/components/TextLabel/canvas/drawEffects.d.ts +34 -0
  97. package/dist/components/TextLabel/canvas/drawText.d.ts +19 -0
  98. package/dist/components/TextLabel/components/TextLabelMesh.d.ts +13 -0
  99. package/dist/components/TextLabel/constants.d.ts +2 -0
  100. package/dist/components/TextLabel/hooks/useTextLabelTexture.d.ts +7 -0
  101. package/dist/components/TextLabel/index.d.ts +2 -62
  102. package/dist/components/TextLabel/layout/measurement.d.ts +8 -0
  103. package/dist/components/TextLabel/layout/resolveTextLayout.d.ts +25 -0
  104. package/dist/components/TextLabel/layout/wrapText.d.ts +6 -0
  105. package/dist/components/TextLabel/types.d.ts +227 -0
  106. package/dist/components/TrackingAnchor/index.d.ts +18 -2
  107. package/dist/components/Transform3D/index.d.ts +30 -0
  108. package/dist/components/XRMediaSurface/index.d.ts +6 -6
  109. package/dist/components/XRScene/index.d.ts +14 -3
  110. package/dist/components/XRViewport/XRViewport.d.ts +11 -0
  111. package/dist/components/XRViewport/components/HiddenMedia.d.ts +7 -0
  112. package/dist/components/XRViewport/components/MediaAssetPicker.d.ts +8 -0
  113. package/dist/components/XRViewport/components/MediaControlStack.d.ts +13 -0
  114. package/dist/components/XRViewport/components/XRViewportLayers.d.ts +30 -0
  115. package/dist/components/XRViewport/constants.d.ts +24 -0
  116. package/dist/components/XRViewport/contexts.d.ts +6 -0
  117. package/dist/components/XRViewport/hooks/useViewportExternalFaces.d.ts +13 -0
  118. package/dist/components/XRViewport/hooks/useViewportMediaSource.d.ts +16 -0
  119. package/dist/components/XRViewport/hooks/useViewportMediaTexture.d.ts +10 -0
  120. package/dist/components/XRViewport/hooks/useViewportPipeline.d.ts +41 -0
  121. package/dist/components/XRViewport/hooks/useViewportRenderState.d.ts +47 -0
  122. package/dist/components/XRViewport/index.d.ts +3 -101
  123. package/dist/components/XRViewport/layout.d.ts +16 -0
  124. package/dist/components/XRViewport/slots.d.ts +16 -0
  125. package/dist/components/XRViewport/types.d.ts +89 -0
  126. package/dist/components/XRViewport/useViewportSize.d.ts +3 -0
  127. package/dist/components/index.d.ts +19 -0
  128. package/dist/contexts-BKvTIayr.cjs +1 -0
  129. package/dist/contexts-Bk5zz_VR.js +214 -0
  130. package/dist/debug-ui/component-editor/index.d.ts +19 -0
  131. package/dist/debug-ui/default-setting/index.d.ts +37 -0
  132. package/dist/debug-ui/default-setting.cjs +21 -0
  133. package/dist/debug-ui/default-setting.js +777 -0
  134. package/dist/debug-ui/face-mesh-renderer-settings/index.d.ts +8 -0
  135. package/dist/debug-ui/face-retouch/index.d.ts +11 -0
  136. package/dist/debug-ui/face-warp-3d/index.d.ts +6 -0
  137. package/dist/debug-ui/hand-joints-2d/index.d.ts +6 -0
  138. package/dist/debug-ui/hand-tracking-2d/index.d.ts +6 -0
  139. package/dist/debug-ui/hand-tracking-2d-controller/index.d.ts +6 -0
  140. package/dist/debug-ui/hand-tracking-3d/index.d.ts +6 -0
  141. package/dist/debug-ui/hierarchy-panel/index.d.ts +29 -0
  142. package/dist/debug-ui/index.d.ts +46 -0
  143. package/dist/debug-ui/layer-panel/index.d.ts +18 -0
  144. package/dist/debug-ui/media-source/MediaSourceSwitcher.d.ts +10 -0
  145. package/dist/debug-ui/media-source/index.d.ts +6 -0
  146. package/dist/debug-ui/media-source/media-preset.d.ts +9 -0
  147. package/dist/debug-ui/media-source/session.d.ts +12 -0
  148. package/dist/debug-ui/media-source.cjs +1 -0
  149. package/dist/debug-ui/media-source.js +9 -0
  150. package/dist/debug-ui/mesh-renderer-settings/index.d.ts +6 -0
  151. package/dist/debug-ui/object-inspector-panel/index.d.ts +25 -0
  152. package/dist/debug-ui/pin-to-mesh-settings/index.d.ts +10 -0
  153. package/dist/debug-ui/scene-editor/context.d.ts +38 -0
  154. package/dist/debug-ui/scene-editor/hierarchy-panel.d.ts +9 -0
  155. package/dist/debug-ui/scene-editor/index.d.ts +11 -0
  156. package/dist/debug-ui/scene-editor/inspector-panel.d.ts +7 -0
  157. package/dist/debug-ui/scene-editor/store-utils.d.ts +2 -0
  158. package/dist/debug-ui/scene-editor/viewport-toolbar.d.ts +4 -0
  159. package/dist/debug-ui/scene-editor/viewport.d.ts +21 -0
  160. package/dist/debug-ui/screen-glass-settings/index.d.ts +6 -0
  161. package/dist/debug-ui/screen-gradient-settings/GradientStopsEditor.d.ts +5 -0
  162. package/dist/debug-ui/screen-gradient-settings/index.d.ts +6 -0
  163. package/dist/debug-ui/screen-gradient-settings/styles.d.ts +3 -0
  164. package/dist/debug-ui/screen-image-settings/index.d.ts +9 -0
  165. package/dist/debug-ui/screen-shape-settings/index.d.ts +6 -0
  166. package/dist/debug-ui/screen-text-settings/NumberField.d.ts +9 -0
  167. package/dist/debug-ui/screen-text-settings/ScreenTextSettingsPanel.d.ts +3 -0
  168. package/dist/debug-ui/screen-text-settings/controls/NestedSection.d.ts +7 -0
  169. package/dist/debug-ui/screen-text-settings/controls/Section.d.ts +8 -0
  170. package/dist/debug-ui/screen-text-settings/controls/icons.d.ts +4 -0
  171. package/dist/debug-ui/screen-text-settings/index.d.ts +2 -0
  172. package/dist/debug-ui/screen-text-settings/sections/BackgroundSection.d.ts +8 -0
  173. package/dist/debug-ui/screen-text-settings/sections/ContentSection.d.ts +5 -0
  174. package/dist/debug-ui/screen-text-settings/sections/EffectsSection.d.ts +25 -0
  175. package/dist/debug-ui/screen-text-settings/sections/StyleSection.d.ts +5 -0
  176. package/dist/debug-ui/screen-text-settings/sections/TransformSection.d.ts +5 -0
  177. package/dist/debug-ui/screen-text-settings/sections/background/BackgroundFillControls.d.ts +2 -0
  178. package/dist/debug-ui/screen-text-settings/sections/background/BackgroundSizeControls.d.ts +2 -0
  179. package/dist/debug-ui/screen-text-settings/sections/background/BackgroundStrokeControls.d.ts +2 -0
  180. package/dist/debug-ui/screen-text-settings/sections/background/types.d.ts +7 -0
  181. package/dist/debug-ui/screen-text-settings/sections/effects/BendEffectSection.d.ts +4 -0
  182. package/dist/debug-ui/screen-text-settings/sections/effects/EffectChrome.d.ts +21 -0
  183. package/dist/debug-ui/screen-text-settings/sections/effects/GlowEffectSection.d.ts +4 -0
  184. package/dist/debug-ui/screen-text-settings/sections/effects/InnerShadowEffectSection.d.ts +4 -0
  185. package/dist/debug-ui/screen-text-settings/sections/effects/OutlineEffectSection.d.ts +4 -0
  186. package/dist/debug-ui/screen-text-settings/sections/effects/ShadowEffectSection.d.ts +4 -0
  187. package/dist/debug-ui/screen-text-settings/sections/effects/types.d.ts +14 -0
  188. package/dist/debug-ui/screen-text-settings/settings.d.ts +90 -0
  189. package/dist/debug-ui/screen-text-settings/styles.d.ts +26 -0
  190. package/dist/debug-ui/screen-text-settings/transform.d.ts +6 -0
  191. package/dist/debug-ui/screen-text-settings/types.d.ts +9 -0
  192. package/dist/debug-ui/settings-panel/index.d.ts +38 -0
  193. package/dist/debug-ui/shared/MaterialSection.d.ts +13 -0
  194. package/dist/debug-ui/shared/ScreenTransformSection.d.ts +32 -0
  195. package/dist/debug-ui/transform-3d-settings/index.d.ts +11 -0
  196. package/dist/debug-ui.cjs +10 -0
  197. package/dist/debug-ui.js +8861 -0
  198. package/dist/drawNormalizedCrop-B-7zU-Xw.cjs +1 -0
  199. package/dist/drawNormalizedCrop-CRdIDyl1.js +44 -0
  200. package/dist/entries/all.d.ts +1 -0
  201. package/dist/entries/core.d.ts +55 -4
  202. package/dist/entries/face-effects.d.ts +12 -8
  203. package/dist/entries/internal.d.ts +1 -1
  204. package/dist/entries/low-level.d.ts +21 -4
  205. package/dist/entries/scene-object.d.ts +10 -0
  206. package/dist/entries/tracking.d.ts +25 -2
  207. package/dist/face-action/index.d.ts +34 -0
  208. package/dist/face-attribute-expression/index.d.ts +10 -0
  209. package/dist/face-effects.cjs +1 -252
  210. package/dist/face-effects.js +1404 -2613
  211. package/dist/face-info/blendshapes.d.ts +3 -0
  212. package/dist/face-info/derive.d.ts +8 -0
  213. package/dist/face-info/drawFaceCrop.d.ts +10 -0
  214. package/dist/face-info/getFaceInfo.d.ts +8 -0
  215. package/dist/face-info/index.d.ts +8 -0
  216. package/dist/face-info/landmarks.d.ts +21 -0
  217. package/dist/face-info/types.d.ts +52 -0
  218. package/dist/getFaceInfo-CyPAKh3h.cjs +1 -0
  219. package/dist/getFaceInfo-hUKMLFcr.js +118 -0
  220. package/dist/hand/handJoints2d.d.ts +49 -0
  221. package/dist/hand/handTracking2d.d.ts +33 -0
  222. package/dist/hand/handTracking2dController.d.ts +65 -0
  223. package/dist/hand/handTracking3d.d.ts +52 -0
  224. package/dist/hooks/faceResults.d.ts +1 -1
  225. package/dist/hooks/useCalibrationFaceTracker.d.ts +1 -1
  226. package/dist/hooks/useFaceAction.d.ts +3 -0
  227. package/dist/hooks/useFaceAttributeExpression.d.ts +16 -0
  228. package/dist/hooks/useFaceDetection.d.ts +18 -0
  229. package/dist/hooks/useFaceInfo.d.ts +7 -0
  230. package/dist/hooks/useFaceInfos.d.ts +15 -0
  231. package/dist/hooks/useFaceResultReader.d.ts +10 -0
  232. package/dist/hooks/useFrameCapture.d.ts +18 -0
  233. package/dist/hooks/useMediaRecorder.d.ts +14 -2
  234. package/dist/hooks/useOwnedTexture.d.ts +6 -0
  235. package/dist/hooks/useTrackerContext.d.ts +2 -2
  236. package/dist/hooks/useXRSession/facade.d.ts +3 -0
  237. package/dist/hooks/useXRSession/registry.d.ts +9 -0
  238. package/dist/index-82aENaRq.cjs +1 -0
  239. package/dist/{index-BD-JWMjE.js → index-BgQAX8rs.js} +198 -134
  240. package/dist/index-CEc1CAmB.cjs +1 -0
  241. package/dist/index-CTHeBQOs.js +178 -0
  242. package/dist/index-D4bLzBr6.cjs +1 -0
  243. package/dist/index-DSpzjuqd.cjs +1 -0
  244. package/dist/index-Di70KWuY.js +2049 -0
  245. package/dist/index-DzEzkBIH.cjs +17 -0
  246. package/dist/{index-CYMj26Ej.js → index-JygePOwo.js} +565 -498
  247. package/dist/index-UC0Ux38E.js +111 -0
  248. package/dist/{internal-KOKJDxCG.js → internal-DuMPpcbp.js} +86 -80
  249. package/dist/internal-i2JkM85N.cjs +1 -0
  250. package/dist/internal.cjs +1 -1
  251. package/dist/internal.js +2 -2
  252. package/dist/low-level.cjs +1 -1
  253. package/dist/low-level.js +959 -632
  254. package/dist/main.cjs +1 -1
  255. package/dist/main.js +556 -455
  256. package/dist/material/MaterialFill.d.ts +20 -0
  257. package/dist/material/MeshMaterial.d.ts +14 -0
  258. package/dist/material/index.d.ts +2 -0
  259. package/dist/models/Body/index.d.ts +1 -1
  260. package/dist/models/Face/index.d.ts +1 -0
  261. package/dist/models/Face/rotation.d.ts +3 -0
  262. package/dist/models/Hand/HandTracking.d.ts +2 -0
  263. package/dist/render/layerStack.d.ts +29 -0
  264. package/dist/render/renderGroups.d.ts +47 -0
  265. package/dist/render/renderPasses.d.ts +18 -0
  266. package/dist/renderGroups-C9QJrAXu.js +152 -0
  267. package/dist/renderGroups-Dvm1J4lW.cjs +1 -0
  268. package/dist/renderLayers-lDtL0_43.cjs +1 -0
  269. package/dist/renderLayers-zrK2pv5O.js +13 -0
  270. package/dist/renderPasses-CT5iBwtg.cjs +21 -0
  271. package/dist/renderPasses-CjgG_6kQ.js +1500 -0
  272. package/dist/scene-object/index.d.ts +146 -0
  273. package/dist/scene-object/runtimeRegistry.d.ts +14 -0
  274. package/dist/scene-object.cjs +1 -0
  275. package/dist/scene-object.js +40 -0
  276. package/dist/screen-image/screenImagePresets.d.ts +13 -0
  277. package/dist/screen-image/screenImageSettings.d.ts +57 -0
  278. package/dist/screen-text/screenTextPresets.d.ts +6 -0
  279. package/dist/screen-text/screenTextSettings.d.ts +147 -0
  280. package/dist/screen2d/coordinates.d.ts +87 -0
  281. package/dist/screen2d/index.d.ts +7 -0
  282. package/dist/screen2d/material-runtime.d.ts +32 -0
  283. package/dist/screen2d/screenTransform.d.ts +47 -0
  284. package/dist/screen2d/smoothing.d.ts +5 -0
  285. package/dist/screen2d/texture.d.ts +10 -0
  286. package/dist/screen2d/transform.d.ts +25 -0
  287. package/dist/screen2d/types.d.ts +90 -0
  288. package/dist/{selectors-Bub0o3qy.cjs → selectors-2QvO5RYY.cjs} +1 -1
  289. package/dist/{selectors-BHO6TnoC.js → selectors-Dw3C-gSk.js} +5 -5
  290. package/dist/services/MetricsCollector/index.d.ts +7 -1
  291. package/dist/services/MetricsCollector/utils.d.ts +1 -1
  292. package/dist/session-BChR4TgK.cjs +31 -0
  293. package/dist/session-C1StwN0f.js +363 -0
  294. package/dist/texture/animatedTexture.d.ts +61 -0
  295. package/dist/texture/animationMath.d.ts +8 -0
  296. package/dist/texture/sourceResolver.d.ts +30 -0
  297. package/dist/tracking.cjs +1 -1
  298. package/dist/tracking.js +582 -298
  299. package/dist/types/face.d.ts +1 -13
  300. package/dist/types/hand-tracking.d.ts +8 -0
  301. package/dist/types/index.d.ts +0 -1
  302. package/dist/types/nodes.d.ts +4 -1
  303. package/dist/types/session.d.ts +2 -0
  304. package/dist/types/tracking.d.ts +8 -2
  305. package/dist/types/util-types.d.ts +1 -1
  306. package/dist/useFaceInfo-C-WfMlYp.cjs +1 -0
  307. package/dist/useFaceInfo-CwsHZedC.js +62 -0
  308. package/dist/useFaceResults-CkFc1egZ.js +19 -0
  309. package/dist/useFaceResults-VcFdOUFV.cjs +1 -0
  310. package/dist/utils/drawNormalizedCrop.d.ts +22 -0
  311. package/dist/utils/integrity.d.ts +4 -25
  312. package/dist/utils/landmarkBounds.d.ts +1 -1
  313. package/dist/utils/logger.d.ts +2 -2
  314. package/dist/x-Co8jPhP0.js +127 -0
  315. package/dist/x-KC8E4Gaj.cjs +41 -0
  316. package/docs/MIGRATION_GUIDE.md +589 -0
  317. package/docs/SDK_DOCUMENTATION.md +1155 -0
  318. package/docs/api/audio.mdx +36 -0
  319. package/docs/api/behavior-components.mdx +164 -0
  320. package/docs/api/capture-recording.mdx +103 -0
  321. package/docs/api/debug-ui-scene-editor.mdx +249 -0
  322. package/docs/api/face-actions.mdx +104 -0
  323. package/docs/api/face-attribute-expression.mdx +87 -0
  324. package/docs/api/face-binding-anchors.mdx +53 -0
  325. package/docs/api/face-effects.mdx +19 -0
  326. package/docs/api/face-info.mdx +112 -0
  327. package/docs/api/face-mesh.mdx +98 -0
  328. package/docs/api/face-painting.mdx +33 -0
  329. package/docs/api/face-retouching.mdx +73 -0
  330. package/docs/api/material-render-state.mdx +132 -0
  331. package/docs/api/runtime-3d.mdx +311 -0
  332. package/docs/api/scene-object-store.mdx +213 -0
  333. package/docs/api/screen-image.mdx +41 -0
  334. package/docs/api/screen-shape.mdx +64 -0
  335. package/docs/api/screen-space-coordinates.mdx +41 -0
  336. package/docs/api/screen-text.mdx +39 -0
  337. package/docs/api/texture-sources.mdx +55 -0
  338. package/docs/api/trackers.mdx +46 -0
  339. package/docs/docs.json +70 -0
  340. package/docs/examples/scene-object-recipes.mdx +194 -0
  341. package/docs/guides/harness-debug-ui.mdx +139 -0
  342. package/docs/inspector/hierarchy-panel.mdx +51 -0
  343. package/docs/inspector/object-inspector-panel.mdx +51 -0
  344. package/docs/introduction.mdx +121 -0
  345. package/docs/scene-objects/overview.mdx +127 -0
  346. package/docs/scene-objects/render-groups.mdx +77 -0
  347. package/docs/scene-objects/runtime-rendering.mdx +75 -0
  348. package/docs/texture-api-consumer.md +58 -0
  349. package/package.json +55 -7
  350. package/dist/components/FaceRetouch/retouchRegions.d.ts +0 -23
  351. package/dist/components/FaceRetouch/useFaceRetouchRegions.d.ts +0 -12
  352. package/dist/index-B5J4gzn2.cjs +0 -1
  353. package/dist/index-BVBVg96G.cjs +0 -1
  354. package/dist/index-DtwHElmG.js +0 -157
  355. package/dist/index-PtFmD6B8.cjs +0 -1
  356. package/dist/internal-DH5d1Xnq.cjs +0 -1
  357. package/dist/modules/XRClient/index.d.ts +0 -9
  358. package/dist/modules/index.d.ts +0 -1
  359. package/dist/services/ApiService.d.ts +0 -12
  360. package/dist/types/client.d.ts +0 -3
  361. package/dist/useFaceResults-cpsSmKKc.js +0 -81
  362. package/dist/useFaceResults-hVUJYSEY.cjs +0 -1
@@ -0,0 +1,9 @@
1
+ import { ScreenTransform2DSettings } from '../../screen2d';
2
+ export type ScreenTransformGuideLayer = "scene" | "overlay";
3
+ export type ScreenTransformOverlayGuideProps = {
4
+ color?: string;
5
+ handleColor?: string;
6
+ onChange?: (next: ScreenTransform2DSettings) => void;
7
+ transform: ScreenTransform2DSettings;
8
+ };
9
+ export declare const ScreenTransformOverlayGuide: ({ color, handleColor, onChange, transform, }: ScreenTransformOverlayGuideProps) => null;
@@ -36,5 +36,7 @@ export type ScreenSpaceUIProps = {
36
36
  */
37
37
  export declare const ScreenSpaceUI: ({ children, depth }: ScreenSpaceUIProps) => import("react/jsx-runtime").JSX.Element;
38
38
  export { ScreenTransform } from './ScreenTransform';
39
+ export { ScreenTransformGuide } from './ScreenTransformGuide';
40
+ export { ScreenTransformOverlayGuide, type ScreenTransformGuideLayer, } from './ScreenTransformOverlayGuide';
39
41
  export type { ScreenTransformProps, ScreenAnchorEdges, ScreenOffsetEdges, ResolvedScreenTransform, } from './ScreenTransform';
40
42
  export { computeScreenTransform } from './ScreenTransform';
@@ -0,0 +1,2 @@
1
+ import { ScreenTextBodyProps } from '../types';
2
+ export declare function ScreenTextBody(props: ScreenTextBodyProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,9 @@
1
+ import { ReactNode } from 'react';
2
+ import { ScreenTransformGuideLayer } from '../../ScreenSpaceUI';
3
+ import { ScreenTransform2DSettings } from '../../../screen2d';
4
+ export declare function ScreenTextTransformFrame({ transform, guideLayer, onChange, children, }: {
5
+ transform: ScreenTransform2DSettings;
6
+ guideLayer: ScreenTransformGuideLayer;
7
+ onChange?: (next: ScreenTransform2DSettings) => void;
8
+ children: ReactNode;
9
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,5 @@
1
+ import { ScreenAnchorEdges } from '../ScreenSpaceUI';
2
+ import { ScreenTextVerticalAlign } from './types';
3
+ export declare const DEFAULT_SCREEN_TEXT_ASPECT = 2.5;
4
+ export declare const SCREEN_TEXT_GUIDE_COLOR = "#38bdf8";
5
+ export declare const SCREEN_TEXT_ANCHORS: Record<ScreenTextVerticalAlign, Required<ScreenAnchorEdges>>;
@@ -0,0 +1,6 @@
1
+ import { ScreenTextProps } from './types';
2
+ export { SCREEN_TEXT_ANCHORS } from './constants';
3
+ export { resolveScreenTextAnchors } from './utils/ScreenTextHelpers';
4
+ export { resolveScreenTextBendProps, resolveScreenTextLayoutTexture, } from './utils/ScreenTextMappings';
5
+ export type { ScreenTextBendSettings, ScreenTextProps, ScreenTextVerticalAlign } from './types';
6
+ export declare function ScreenText({ anchors, coordinateSpace, canvasSize, offsets, pivot, position, rotation, size, transform, screenTransform, onScreenTransformChange, transformGuideLayer, verticalAlign, ...textLabelProps }: ScreenTextProps): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,31 @@
1
+ import { TextBendPreset, TextLabelProps } from '../TextLabel';
2
+ import { ScreenAnchorEdges, ScreenTransformGuideLayer } from '../ScreenSpaceUI';
3
+ import { ScreenCanvasSize, ScreenCoordinateSpace, ScreenTransform2D, ScreenTransform2DSettings } from '../../screen2d';
4
+ export type ScreenTextVerticalAlign = "top" | "center" | "bottom";
5
+ export type ScreenTextBendSettings = {
6
+ preset: TextBendPreset;
7
+ strength: number;
8
+ };
9
+ export type ScreenTextProps = Omit<TextLabelProps, "aspect" | "position" | "rotation" | "scale"> & {
10
+ anchors?: ScreenAnchorEdges;
11
+ coordinateSpace?: ScreenCoordinateSpace;
12
+ canvasSize?: ScreenCanvasSize;
13
+ offsets?: ScreenTransform2D["offsets"];
14
+ pivot?: [number, number];
15
+ position?: [number, number];
16
+ rotation?: number;
17
+ size?: [number, number];
18
+ transform?: ScreenTransform2D;
19
+ screenTransform?: Partial<ScreenTransform2DSettings>;
20
+ onScreenTransformChange?: (next: ScreenTransform2DSettings) => void;
21
+ transformGuideLayer?: ScreenTransformGuideLayer;
22
+ verticalAlign?: ScreenTextVerticalAlign;
23
+ bend?: ScreenTextBendSettings;
24
+ showTransformGuides?: boolean;
25
+ };
26
+ export type ScreenTextBodyProps = Omit<ScreenTextProps, "anchors" | "coordinateSpace" | "canvasSize" | "offsets" | "pivot" | "position" | "rotation" | "size" | "transform"> & {
27
+ layoutSize?: {
28
+ width: number;
29
+ height: number;
30
+ };
31
+ };
@@ -0,0 +1,14 @@
1
+ import { ScreenTextProps, ScreenTextVerticalAlign } from '../types';
2
+ export declare function resolveScreenTextAnchors(verticalAlign?: ScreenTextVerticalAlign): Required<import('../..').ScreenAnchorEdges>;
3
+ export declare function resolveScreenTextTransformProps({ anchors, coordinateSpace, canvasSize, position, size, transform, pivot, verticalAlign, }: Pick<ScreenTextProps, "anchors" | "coordinateSpace" | "canvasSize" | "position" | "size" | "transform" | "pivot"> & {
4
+ verticalAlign: ScreenTextVerticalAlign;
5
+ }): {
6
+ resolvedAnchors: import('../..').ScreenAnchorEdges;
7
+ resolvedOffsets: {
8
+ left?: number;
9
+ right?: number;
10
+ top?: number;
11
+ bottom?: number;
12
+ } | undefined;
13
+ resolvedPivot: [number, number];
14
+ };
@@ -0,0 +1,17 @@
1
+ import { TextBendPreset } from '../../TextLabel';
2
+ import { ScreenTextBendSettings } from '../types';
3
+ export declare function resolveScreenTextBendProps({ bend, bendPreset, bendStrength, }: {
4
+ bend?: ScreenTextBendSettings;
5
+ bendPreset?: TextBendPreset;
6
+ bendStrength?: number;
7
+ }): {
8
+ bendPreset: TextBendPreset | undefined;
9
+ bendStrength: number | undefined;
10
+ };
11
+ export declare function resolveScreenTextLayoutTexture({ width, height, }: {
12
+ width: number;
13
+ height: number;
14
+ }): {
15
+ aspect: number;
16
+ resolution: number;
17
+ };
@@ -0,0 +1,6 @@
1
+ export type SequentialRenderPassesProps = {
2
+ /** Camera layers in top-first/bottom-last hierarchy order. */
3
+ layers: number[];
4
+ };
5
+ /** Takes over R3F rendering and composes render-group layers sequentially. */
6
+ export declare const SequentialRenderPasses: ({ layers }: SequentialRenderPassesProps) => null;
@@ -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,62 +1,2 @@
1
- /**
2
- * `<TextLabel>` — a text label drawn into a CanvasTexture and rendered as
3
- * a single mesh. First-class scene-tree primitive so lifecycle scripts
4
- * don't have to hand-paint canvas textures for every quiz question,
5
- * progress indicator, or floating answer.
6
- *
7
- * Sizes itself 1×1 in world units; use `scale` on the JSX node or a
8
- * parent `<ScreenTransform>` / `<TrackingAnchor>` to place it.
9
- *
10
- * Word-wraps automatically inside the panel's width; when there are too
11
- * many lines for the chosen font size, the font shrinks one step before
12
- * the text is allowed to clip.
13
- */
14
- export type TextLabelProps = {
15
- /** The text to render. Required. */
16
- text: string;
17
- /** Text color. Default `#ffffff`. */
18
- color?: string;
19
- /** Font weight. Default `bold`. */
20
- fontWeight?: "normal" | "bold" | number;
21
- /** Font family. Default `Arial, sans-serif`. */
22
- fontFamily?: string;
23
- /**
24
- * Font size in canvas px at the default 512px resolution. Roughly maps
25
- * to "10pt" → 28, "12pt" → 36, "16pt" → 48, etc. Default 48.
26
- */
27
- fontSize?: number;
28
- /** Panel background color. Use `'transparent'` for text-only. Default `rgba(20,40,110,0.88)`. */
29
- bgColor?: string;
30
- /** Optional border color. Omit for no border. */
31
- borderColor?: string;
32
- /** Border thickness. Default 0. */
33
- borderWidth?: number;
34
- /** Corner radius. Use 0 for square. Default 24. */
35
- borderRadius?: number;
36
- /** Inner padding in canvas px. Default 32. */
37
- padding?: number;
38
- /**
39
- * Aspect ratio (width / height). The mesh itself is always 1×1; this
40
- * controls how the texture canvas is shaped so wrapping and corner
41
- * radius read correctly when the label isn't square. Default 2.5
42
- * (roughly banner-shaped).
43
- */
44
- aspect?: number;
45
- /** Canvas resolution (height in px). Default 512. */
46
- resolution?: number;
47
- /** Material opacity multiplier. Default 1. */
48
- opacity?: number;
49
- /** Optional `name` for runtime `getObjectByName` lookups. */
50
- name?: string;
51
- /** Ignore depth — appropriate for overlay UI. Default true. */
52
- overlay?: boolean;
53
- /** Local position offset, forwarded to the underlying mesh. */
54
- position?: [number, number, number];
55
- /** Local rotation (Euler radians), forwarded to the underlying mesh. */
56
- rotation?: [number, number, number];
57
- /** Local scale, forwarded to the underlying mesh. */
58
- scale?: [number, number, number] | number;
59
- /** Mesh visibility, forwarded so descendants inherit correctly. */
60
- visible?: boolean;
61
- };
62
- export declare function TextLabel(props: TextLabelProps): import("react/jsx-runtime").JSX.Element;
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
+ };