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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (352) hide show
  1. package/GROUNDING.md +1588 -20
  2. package/dist/{DebuggerUI-CatYc-RG.cjs → DebuggerUI-B45_Gb9d.cjs} +1 -1
  3. package/dist/{DebuggerUI-gLMKiVwJ.js → DebuggerUI-Cq28c18s.js} +1 -1
  4. package/dist/FaceMeshRenderer-6t8OsQhK.js +1195 -0
  5. package/dist/FaceMeshRenderer-lQLhYIW-.cjs +155 -0
  6. package/dist/FaceRetouch-CDrL0pXg.js +551 -0
  7. package/dist/FaceRetouch-DtNl8-4e.cjs +134 -0
  8. package/dist/audio/AudioEngine.d.ts +3 -1
  9. package/dist/audio/AudioPlayer.d.ts +29 -0
  10. package/dist/audio/AudioPlayerLogic.d.ts +4 -0
  11. package/dist/audio/index.d.ts +2 -0
  12. package/dist/components/Axes/index.d.ts +6 -0
  13. package/dist/components/FaceMesh/FaceMeshRenderer.d.ts +17 -0
  14. package/dist/components/FaceMesh/canonical/CanonicalFaceMeshRenderer.d.ts +17 -1
  15. package/dist/components/FaceMesh/canonical/FaceMeshMaterial.d.ts +25 -0
  16. package/dist/components/FaceMesh/canonical/assets.d.ts +3 -0
  17. package/dist/components/FaceMesh/canonical/geometryGroups.d.ts +9 -0
  18. package/dist/components/FaceMesh/canonical/parseCanonicalFaceModel.d.ts +2 -0
  19. package/dist/components/FaceMesh/canonical/shaders.d.ts +2 -0
  20. package/dist/components/FaceMesh/deform.d.ts +3 -0
  21. package/dist/components/FaceMesh/index.d.ts +5 -0
  22. package/dist/components/FaceMesh/material/defaults.d.ts +70 -0
  23. package/dist/components/FaceMesh/material/index.d.ts +1 -0
  24. package/dist/components/FaceMesh/material/options.d.ts +5 -1
  25. package/dist/components/FaceMesh/material/support.d.ts +7 -2
  26. package/dist/components/FaceMesh/material/textures.d.ts +4 -0
  27. package/dist/components/FaceMesh/material/types.d.ts +2 -2
  28. package/dist/components/FaceRetouch/Background.d.ts +5 -6
  29. package/dist/components/FaceRetouch/FaceRetouch.d.ts +47 -0
  30. package/dist/components/FaceRetouch/index.d.ts +2 -8
  31. package/dist/components/FaceRetouch/landmarkMask.d.ts +0 -5
  32. package/dist/components/FaceRetouch/useFaceRetouchMask.d.ts +3 -7
  33. package/dist/components/FaceTracker/index.d.ts +5 -3
  34. package/dist/components/FaceWarp3D/FaceWarp3DHead.d.ts +1 -1
  35. package/dist/components/HandJoints2D/index.d.ts +1 -1
  36. package/dist/components/HandTracking2D/HandVisual.d.ts +1 -1
  37. package/dist/components/HandTracking2D/index.d.ts +1 -1
  38. package/dist/components/HandTracking2DController/index.d.ts +1 -1
  39. package/dist/components/HandTracking3D/index.d.ts +1 -1
  40. package/dist/components/LightObject/index.d.ts +20 -0
  41. package/dist/components/LookAt/index.d.ts +23 -0
  42. package/dist/components/MeshRenderer/index.d.ts +58 -0
  43. package/dist/components/PerspectiveCamera/index.d.ts +2 -8
  44. package/dist/components/PinToMesh/index.d.ts +47 -0
  45. package/dist/components/RenderGroupLayer/index.d.ts +6 -0
  46. package/dist/components/SceneObjectRenderer/index.d.ts +16 -0
  47. package/dist/components/Screen2D/ScreenTransformFrame.d.ts +11 -0
  48. package/dist/components/Screen2D/ScreenTransformHelpers.d.ts +19 -0
  49. package/dist/components/Screen2D/ScreenTransformInteraction.d.ts +18 -0
  50. package/dist/components/Screen2D/index.d.ts +5 -0
  51. package/dist/components/ScreenGlass/defaults.d.ts +3 -0
  52. package/dist/components/ScreenGlass/index.d.ts +5 -0
  53. package/dist/components/ScreenGlass/shaders.d.ts +2 -0
  54. package/dist/components/ScreenGlass/types.d.ts +10 -0
  55. package/dist/components/ScreenGradient/defaults.d.ts +5 -0
  56. package/dist/components/ScreenGradient/index.d.ts +5 -0
  57. package/dist/components/ScreenGradient/shaders.d.ts +2 -0
  58. package/dist/components/ScreenGradient/types.d.ts +19 -0
  59. package/dist/components/ScreenImage/ScreenImage.d.ts +4 -0
  60. package/dist/components/ScreenImage/components/DynamicTextureSync.d.ts +9 -0
  61. package/dist/components/ScreenImage/components/ScreenImageBody.d.ts +9 -0
  62. package/dist/components/ScreenImage/components/ScreenImageFrame.d.ts +9 -0
  63. package/dist/components/ScreenImage/components/ScreenImageTransformFrame.d.ts +9 -0
  64. package/dist/components/ScreenImage/fit.d.ts +52 -0
  65. package/dist/components/ScreenImage/index.d.ts +8 -87
  66. package/dist/components/ScreenImage/materials/ScreenImageBlendMaterial.d.ts +9 -0
  67. package/dist/components/ScreenImage/materials/ScreenImageMatcap.d.ts +3 -0
  68. package/dist/components/ScreenImage/source.d.ts +16 -0
  69. package/dist/components/ScreenImage/types.d.ts +37 -0
  70. package/dist/components/ScreenImage/utils/ScreenImageConstants.d.ts +9 -0
  71. package/dist/components/ScreenImage/utils/ScreenImageHelpers.d.ts +4 -0
  72. package/dist/components/ScreenShape/geometry.d.ts +5 -0
  73. package/dist/components/ScreenShape/index.d.ts +5 -0
  74. package/dist/components/ScreenShape/types.d.ts +41 -0
  75. package/dist/components/ScreenSpaceUI/ScreenTransformGuide.d.ts +15 -0
  76. package/dist/components/ScreenSpaceUI/ScreenTransformOverlayGuide.d.ts +9 -0
  77. package/dist/components/ScreenSpaceUI/index.d.ts +2 -0
  78. package/dist/components/ScreenText/components/ScreenTextBody.d.ts +2 -0
  79. package/dist/components/ScreenText/components/ScreenTextTransformFrame.d.ts +9 -0
  80. package/dist/components/ScreenText/constants.d.ts +5 -0
  81. package/dist/components/ScreenText/index.d.ts +6 -20
  82. package/dist/components/ScreenText/types.d.ts +31 -0
  83. package/dist/components/ScreenText/utils/ScreenTextHelpers.d.ts +14 -0
  84. package/dist/components/ScreenText/utils/ScreenTextMappings.d.ts +17 -0
  85. package/dist/components/SequentialRenderPasses/index.d.ts +6 -0
  86. package/dist/components/TextLabel/TextLabel.d.ts +5 -0
  87. package/dist/components/TextLabel/alignment.d.ts +4 -0
  88. package/dist/components/TextLabel/bend.d.ts +9 -0
  89. package/dist/components/TextLabel/canvas/buildTextLabelTexture.d.ts +4 -0
  90. package/dist/components/TextLabel/canvas/canvasTypography.d.ts +13 -0
  91. package/dist/components/TextLabel/canvas/drawBackground.d.ts +21 -0
  92. package/dist/components/TextLabel/canvas/drawEffects.d.ts +34 -0
  93. package/dist/components/TextLabel/canvas/drawText.d.ts +19 -0
  94. package/dist/components/TextLabel/components/TextLabelMesh.d.ts +13 -0
  95. package/dist/components/TextLabel/constants.d.ts +2 -0
  96. package/dist/components/TextLabel/hooks/useTextLabelTexture.d.ts +7 -0
  97. package/dist/components/TextLabel/index.d.ts +2 -161
  98. package/dist/components/TextLabel/layout/measurement.d.ts +8 -0
  99. package/dist/components/TextLabel/layout/resolveTextLayout.d.ts +25 -0
  100. package/dist/components/TextLabel/layout/wrapText.d.ts +6 -0
  101. package/dist/components/TextLabel/types.d.ts +227 -0
  102. package/dist/components/TrackingAnchor/index.d.ts +18 -2
  103. package/dist/components/Transform3D/index.d.ts +30 -0
  104. package/dist/components/XRMediaSurface/index.d.ts +6 -6
  105. package/dist/components/XRViewport/XRViewport.d.ts +11 -0
  106. package/dist/components/XRViewport/components/HiddenMedia.d.ts +7 -0
  107. package/dist/components/XRViewport/components/MediaAssetPicker.d.ts +8 -0
  108. package/dist/components/XRViewport/components/MediaControlStack.d.ts +13 -0
  109. package/dist/components/XRViewport/components/XRViewportLayers.d.ts +30 -0
  110. package/dist/components/XRViewport/constants.d.ts +24 -0
  111. package/dist/components/XRViewport/contexts.d.ts +6 -0
  112. package/dist/components/XRViewport/hooks/useViewportExternalFaces.d.ts +13 -0
  113. package/dist/components/XRViewport/hooks/useViewportMediaSource.d.ts +16 -0
  114. package/dist/components/XRViewport/hooks/useViewportMediaTexture.d.ts +10 -0
  115. package/dist/components/XRViewport/hooks/useViewportPipeline.d.ts +41 -0
  116. package/dist/components/XRViewport/hooks/useViewportRenderState.d.ts +47 -0
  117. package/dist/components/XRViewport/index.d.ts +3 -118
  118. package/dist/components/XRViewport/layout.d.ts +16 -0
  119. package/dist/components/XRViewport/slots.d.ts +16 -0
  120. package/dist/components/XRViewport/types.d.ts +89 -0
  121. package/dist/components/XRViewport/useViewportSize.d.ts +3 -0
  122. package/dist/components/index.d.ts +12 -0
  123. package/dist/contexts-BKvTIayr.cjs +1 -0
  124. package/dist/contexts-Bk5zz_VR.js +214 -0
  125. package/dist/debug-ui/component-editor/index.d.ts +19 -0
  126. package/dist/debug-ui/face-mesh-renderer-settings/index.d.ts +8 -0
  127. package/dist/debug-ui/face-retouch/index.d.ts +11 -0
  128. package/dist/debug-ui/hand-joints-2d/index.d.ts +1 -1
  129. package/dist/debug-ui/hand-tracking-2d/index.d.ts +1 -1
  130. package/dist/debug-ui/hand-tracking-2d-controller/index.d.ts +1 -1
  131. package/dist/debug-ui/hand-tracking-3d/index.d.ts +1 -1
  132. package/dist/debug-ui/hierarchy-panel/index.d.ts +29 -0
  133. package/dist/debug-ui/index.d.ts +25 -2
  134. package/dist/debug-ui/layer-panel/index.d.ts +3 -2
  135. package/dist/debug-ui/media-source/index.d.ts +2 -0
  136. package/dist/debug-ui/media-source/session.d.ts +12 -0
  137. package/dist/debug-ui/media-source.cjs +1 -1
  138. package/dist/debug-ui/media-source.js +6 -4
  139. package/dist/debug-ui/mesh-renderer-settings/index.d.ts +6 -0
  140. package/dist/debug-ui/object-inspector-panel/index.d.ts +25 -0
  141. package/dist/debug-ui/pin-to-mesh-settings/index.d.ts +10 -0
  142. package/dist/debug-ui/scene-editor/context.d.ts +38 -0
  143. package/dist/debug-ui/scene-editor/hierarchy-panel.d.ts +9 -0
  144. package/dist/debug-ui/scene-editor/index.d.ts +11 -0
  145. package/dist/debug-ui/scene-editor/inspector-panel.d.ts +7 -0
  146. package/dist/debug-ui/scene-editor/store-utils.d.ts +2 -0
  147. package/dist/debug-ui/scene-editor/viewport-toolbar.d.ts +4 -0
  148. package/dist/debug-ui/scene-editor/viewport.d.ts +21 -0
  149. package/dist/debug-ui/screen-glass-settings/index.d.ts +6 -0
  150. package/dist/debug-ui/screen-gradient-settings/GradientStopsEditor.d.ts +5 -0
  151. package/dist/debug-ui/screen-gradient-settings/index.d.ts +6 -0
  152. package/dist/debug-ui/screen-gradient-settings/styles.d.ts +3 -0
  153. package/dist/debug-ui/screen-image-settings/index.d.ts +4 -2
  154. package/dist/debug-ui/screen-shape-settings/index.d.ts +6 -0
  155. package/dist/debug-ui/screen-text-settings/NumberField.d.ts +9 -0
  156. package/dist/debug-ui/screen-text-settings/ScreenTextSettingsPanel.d.ts +3 -0
  157. package/dist/debug-ui/screen-text-settings/controls/NestedSection.d.ts +7 -0
  158. package/dist/debug-ui/screen-text-settings/controls/Section.d.ts +8 -0
  159. package/dist/debug-ui/screen-text-settings/controls/icons.d.ts +4 -0
  160. package/dist/debug-ui/screen-text-settings/index.d.ts +2 -122
  161. package/dist/debug-ui/screen-text-settings/sections/BackgroundSection.d.ts +8 -0
  162. package/dist/debug-ui/screen-text-settings/sections/ContentSection.d.ts +5 -0
  163. package/dist/debug-ui/screen-text-settings/sections/EffectsSection.d.ts +25 -0
  164. package/dist/debug-ui/screen-text-settings/sections/StyleSection.d.ts +5 -0
  165. package/dist/debug-ui/screen-text-settings/sections/TransformSection.d.ts +5 -0
  166. package/dist/debug-ui/screen-text-settings/sections/background/BackgroundFillControls.d.ts +2 -0
  167. package/dist/debug-ui/screen-text-settings/sections/background/BackgroundSizeControls.d.ts +2 -0
  168. package/dist/debug-ui/screen-text-settings/sections/background/BackgroundStrokeControls.d.ts +2 -0
  169. package/dist/debug-ui/screen-text-settings/sections/background/types.d.ts +7 -0
  170. package/dist/debug-ui/screen-text-settings/sections/effects/BendEffectSection.d.ts +4 -0
  171. package/dist/debug-ui/screen-text-settings/sections/effects/EffectChrome.d.ts +21 -0
  172. package/dist/debug-ui/screen-text-settings/sections/effects/GlowEffectSection.d.ts +4 -0
  173. package/dist/debug-ui/screen-text-settings/sections/effects/InnerShadowEffectSection.d.ts +4 -0
  174. package/dist/debug-ui/screen-text-settings/sections/effects/OutlineEffectSection.d.ts +4 -0
  175. package/dist/debug-ui/screen-text-settings/sections/effects/ShadowEffectSection.d.ts +4 -0
  176. package/dist/debug-ui/screen-text-settings/sections/effects/types.d.ts +14 -0
  177. package/dist/debug-ui/screen-text-settings/settings.d.ts +90 -0
  178. package/dist/debug-ui/screen-text-settings/styles.d.ts +26 -0
  179. package/dist/debug-ui/screen-text-settings/transform.d.ts +6 -0
  180. package/dist/debug-ui/screen-text-settings/types.d.ts +9 -0
  181. package/dist/debug-ui/shared/ScreenTransformSection.d.ts +6 -3
  182. package/dist/debug-ui/transform-3d-settings/index.d.ts +11 -0
  183. package/dist/debug-ui.cjs +3 -13
  184. package/dist/debug-ui.js +7896 -5098
  185. package/dist/drawNormalizedCrop-B-7zU-Xw.cjs +1 -0
  186. package/dist/drawNormalizedCrop-CRdIDyl1.js +44 -0
  187. package/dist/entries/all.d.ts +1 -0
  188. package/dist/entries/core.d.ts +53 -6
  189. package/dist/entries/face-effects.d.ts +10 -8
  190. package/dist/entries/internal.d.ts +1 -1
  191. package/dist/entries/low-level.d.ts +18 -4
  192. package/dist/entries/scene-object.d.ts +10 -0
  193. package/dist/entries/tracking.d.ts +25 -2
  194. package/dist/face-action/index.d.ts +34 -0
  195. package/dist/face-attribute-expression/index.d.ts +10 -0
  196. package/dist/face-effects.cjs +1 -342
  197. package/dist/face-effects.js +1391 -2767
  198. package/dist/face-info/blendshapes.d.ts +3 -0
  199. package/dist/face-info/derive.d.ts +8 -0
  200. package/dist/face-info/drawFaceCrop.d.ts +10 -0
  201. package/dist/face-info/getFaceInfo.d.ts +8 -0
  202. package/dist/face-info/index.d.ts +8 -0
  203. package/dist/face-info/landmarks.d.ts +21 -0
  204. package/dist/face-info/types.d.ts +52 -0
  205. package/dist/getFaceInfo-CyPAKh3h.cjs +1 -0
  206. package/dist/getFaceInfo-hUKMLFcr.js +118 -0
  207. package/dist/{handJoints2d.d.ts → hand/handJoints2d.d.ts} +1 -1
  208. package/dist/{handTracking2d.d.ts → hand/handTracking2d.d.ts} +1 -1
  209. package/dist/{handTracking2dController.d.ts → hand/handTracking2dController.d.ts} +1 -1
  210. package/dist/{handTracking3d.d.ts → hand/handTracking3d.d.ts} +1 -1
  211. package/dist/hooks/faceResults.d.ts +1 -1
  212. package/dist/hooks/useCalibrationFaceTracker.d.ts +1 -1
  213. package/dist/hooks/useFaceAction.d.ts +3 -0
  214. package/dist/hooks/useFaceAttributeExpression.d.ts +16 -0
  215. package/dist/hooks/useFaceDetection.d.ts +18 -0
  216. package/dist/hooks/useFaceInfo.d.ts +7 -0
  217. package/dist/hooks/useFaceInfos.d.ts +15 -0
  218. package/dist/hooks/useFaceResultReader.d.ts +10 -0
  219. package/dist/hooks/useFrameCapture.d.ts +18 -0
  220. package/dist/hooks/useMediaRecorder.d.ts +14 -2
  221. package/dist/hooks/useOwnedTexture.d.ts +6 -0
  222. package/dist/hooks/useTrackerContext.d.ts +2 -2
  223. package/dist/hooks/useXRSession/facade.d.ts +3 -0
  224. package/dist/hooks/useXRSession/registry.d.ts +9 -0
  225. package/dist/index-82aENaRq.cjs +1 -0
  226. package/dist/{index-BGNbrc4C.js → index-BgQAX8rs.js} +213 -125
  227. package/dist/index-CEc1CAmB.cjs +1 -0
  228. package/dist/index-CTHeBQOs.js +178 -0
  229. package/dist/index-D4bLzBr6.cjs +1 -0
  230. package/dist/index-DSpzjuqd.cjs +1 -0
  231. package/dist/index-Di70KWuY.js +2049 -0
  232. package/dist/index-DzEzkBIH.cjs +17 -0
  233. package/dist/{index-safCs_af.js → index-JygePOwo.js} +565 -508
  234. package/dist/index-UC0Ux38E.js +111 -0
  235. package/dist/{internal-Cae1ps15.js → internal-DuMPpcbp.js} +86 -80
  236. package/dist/internal-i2JkM85N.cjs +1 -0
  237. package/dist/internal.cjs +1 -1
  238. package/dist/internal.js +2 -2
  239. package/dist/low-level.cjs +1 -1
  240. package/dist/low-level.js +1229 -86
  241. package/dist/main.cjs +1 -73
  242. package/dist/main.js +545 -1693
  243. package/dist/material/MaterialFill.d.ts +20 -0
  244. package/dist/material/MeshMaterial.d.ts +14 -0
  245. package/dist/material/index.d.ts +2 -0
  246. package/dist/models/Body/index.d.ts +1 -1
  247. package/dist/models/Face/index.d.ts +1 -0
  248. package/dist/models/Face/rotation.d.ts +3 -0
  249. package/dist/render/renderGroups.d.ts +47 -0
  250. package/dist/render/renderPasses.d.ts +18 -0
  251. package/dist/renderGroups-C9QJrAXu.js +152 -0
  252. package/dist/renderGroups-Dvm1J4lW.cjs +1 -0
  253. package/dist/renderLayers-lDtL0_43.cjs +1 -0
  254. package/dist/renderLayers-zrK2pv5O.js +13 -0
  255. package/dist/renderPasses-CT5iBwtg.cjs +21 -0
  256. package/dist/renderPasses-CjgG_6kQ.js +1500 -0
  257. package/dist/scene-object/index.d.ts +146 -0
  258. package/dist/scene-object/runtimeRegistry.d.ts +14 -0
  259. package/dist/scene-object.cjs +1 -0
  260. package/dist/scene-object.js +40 -0
  261. package/dist/{screenImageSettings.d.ts → screen-image/screenImageSettings.d.ts} +9 -2
  262. package/dist/{screenTextSettings.d.ts → screen-text/screenTextSettings.d.ts} +18 -2
  263. package/dist/screen2d/coordinates.d.ts +87 -0
  264. package/dist/screen2d/index.d.ts +3 -0
  265. package/dist/screen2d/screenTransform.d.ts +47 -0
  266. package/dist/screen2d/smoothing.d.ts +5 -0
  267. package/dist/{selectors-BLl2JUWW.cjs → selectors-2QvO5RYY.cjs} +1 -1
  268. package/dist/{selectors-CXd_x-6t.js → selectors-Dw3C-gSk.js} +3 -3
  269. package/dist/services/MetricsCollector/index.d.ts +7 -1
  270. package/dist/services/MetricsCollector/utils.d.ts +1 -1
  271. package/dist/session-BChR4TgK.cjs +31 -0
  272. package/dist/session-C1StwN0f.js +363 -0
  273. package/dist/texture/animatedTexture.d.ts +61 -0
  274. package/dist/texture/animationMath.d.ts +8 -0
  275. package/dist/texture/sourceResolver.d.ts +30 -0
  276. package/dist/tracking.cjs +1 -1
  277. package/dist/tracking.js +580 -321
  278. package/dist/types/face.d.ts +1 -13
  279. package/dist/types/index.d.ts +0 -1
  280. package/dist/types/nodes.d.ts +2 -1
  281. package/dist/types/session.d.ts +2 -0
  282. package/dist/types/tracking.d.ts +8 -2
  283. package/dist/types/util-types.d.ts +1 -1
  284. package/dist/useFaceInfo-C-WfMlYp.cjs +1 -0
  285. package/dist/useFaceInfo-CwsHZedC.js +62 -0
  286. package/dist/useFaceResults-CkFc1egZ.js +19 -0
  287. package/dist/useFaceResults-VcFdOUFV.cjs +1 -0
  288. package/dist/utils/drawNormalizedCrop.d.ts +22 -0
  289. package/dist/utils/integrity.d.ts +4 -25
  290. package/dist/utils/landmarkBounds.d.ts +1 -1
  291. package/dist/utils/logger.d.ts +2 -2
  292. package/docs/MIGRATION_GUIDE.md +589 -0
  293. package/docs/SDK_DOCUMENTATION.md +1155 -0
  294. package/docs/api/audio.mdx +36 -0
  295. package/docs/api/behavior-components.mdx +164 -0
  296. package/docs/api/capture-recording.mdx +103 -0
  297. package/docs/api/debug-ui-scene-editor.mdx +249 -0
  298. package/docs/api/face-actions.mdx +104 -0
  299. package/docs/api/face-attribute-expression.mdx +87 -0
  300. package/docs/api/face-binding-anchors.mdx +53 -0
  301. package/docs/api/face-effects.mdx +19 -0
  302. package/docs/api/face-info.mdx +112 -0
  303. package/docs/api/face-mesh.mdx +98 -0
  304. package/docs/api/face-painting.mdx +33 -0
  305. package/docs/api/face-retouching.mdx +73 -0
  306. package/docs/api/material-render-state.mdx +132 -0
  307. package/docs/api/runtime-3d.mdx +311 -0
  308. package/docs/api/scene-object-store.mdx +213 -0
  309. package/docs/api/screen-image.mdx +41 -0
  310. package/docs/api/screen-shape.mdx +64 -0
  311. package/docs/api/screen-space-coordinates.mdx +41 -0
  312. package/docs/api/screen-text.mdx +39 -0
  313. package/docs/api/texture-sources.mdx +55 -0
  314. package/docs/api/trackers.mdx +46 -0
  315. package/docs/docs.json +70 -0
  316. package/docs/examples/scene-object-recipes.mdx +194 -0
  317. package/docs/guides/harness-debug-ui.mdx +139 -0
  318. package/docs/inspector/hierarchy-panel.mdx +51 -0
  319. package/docs/inspector/object-inspector-panel.mdx +51 -0
  320. package/docs/introduction.mdx +121 -0
  321. package/docs/scene-objects/overview.mdx +127 -0
  322. package/docs/scene-objects/render-groups.mdx +77 -0
  323. package/docs/scene-objects/runtime-rendering.mdx +75 -0
  324. package/docs/texture-api-consumer.md +58 -0
  325. package/package.json +37 -7
  326. package/dist/MediaSourceSwitcher-C-xYg0nQ.js +0 -317
  327. package/dist/MediaSourceSwitcher-Cq3g4IKw.cjs +0 -31
  328. package/dist/components/FaceRetouch/defaults.d.ts +0 -13
  329. package/dist/components/FaceRetouch/retouchRegions.d.ts +0 -23
  330. package/dist/components/FaceRetouch/useFaceRetouchRegions.d.ts +0 -12
  331. package/dist/defaults-BLpcN3pG.cjs +0 -1
  332. package/dist/defaults-LtY4M7dg.js +0 -55
  333. package/dist/index-BXyObVHF.cjs +0 -1
  334. package/dist/index-CY3bUAcW.js +0 -12
  335. package/dist/index-C_Duh13c.cjs +0 -1
  336. package/dist/index-D8fpPQkC.cjs +0 -1
  337. package/dist/index-DxshgBu0.cjs +0 -1
  338. package/dist/index-O-2crZ3M.js +0 -1102
  339. package/dist/internal-BjyhBP8i.cjs +0 -1
  340. package/dist/modules/XRClient/index.d.ts +0 -9
  341. package/dist/modules/index.d.ts +0 -1
  342. package/dist/screenImageSettings-6NRg4cx9.js +0 -39
  343. package/dist/screenImageSettings-y_B4_767.cjs +0 -1
  344. package/dist/services/ApiService.d.ts +0 -12
  345. package/dist/types/client.d.ts +0 -3
  346. package/dist/useFaceResults-cpsSmKKc.js +0 -81
  347. package/dist/useFaceResults-hVUJYSEY.cjs +0 -1
  348. package/dist/useXRModel-3DcUa28n.cjs +0 -1
  349. package/dist/useXRModel-BMJE1hrk.js +0 -28
  350. /package/dist/{layerStack.d.ts → render/layerStack.d.ts} +0 -0
  351. /package/dist/{screenImagePresets.d.ts → screen-image/screenImagePresets.d.ts} +0 -0
  352. /package/dist/{screenTextPresets.d.ts → screen-text/screenTextPresets.d.ts} +0 -0
@@ -0,0 +1,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>>;
@@ -1,20 +1,6 @@
1
- import { ScreenAnchorEdges } from '../ScreenSpaceUI';
2
- import { TextLabelProps } from '../TextLabel';
3
- import { ScreenCanvasSize, ScreenCoordinateSpace, ScreenTransform2D } from '../../screen2d';
4
- export type ScreenTextVerticalAlign = "top" | "center" | "bottom";
5
- export type ScreenTextProps = Omit<TextLabelProps, "aspect" | "position" | "rotation" | "scale"> & {
6
- anchors?: ScreenAnchorEdges;
7
- coordinateSpace?: ScreenCoordinateSpace;
8
- canvasSize?: ScreenCanvasSize;
9
- offsets?: ScreenTransform2D["offsets"];
10
- pivot?: [number, number];
11
- position?: [number, number];
12
- rotation?: number;
13
- size?: [number, number];
14
- transform?: ScreenTransform2D;
15
- verticalAlign?: ScreenTextVerticalAlign;
16
- showTransformGuides?: boolean;
17
- };
18
- export declare const SCREEN_TEXT_ANCHORS: Record<ScreenTextVerticalAlign, Required<ScreenAnchorEdges>>;
19
- export declare function resolveScreenTextAnchors(verticalAlign?: ScreenTextVerticalAlign): Required<ScreenAnchorEdges>;
20
- export declare function ScreenText({ anchors, coordinateSpace, canvasSize, offsets, pivot, position, rotation, size, transform, verticalAlign, ...textLabelProps }: ScreenTextProps): import("react/jsx-runtime").JSX.Element;
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,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[];