@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
package/dist/main.cjs CHANGED
@@ -1,73 +1 @@
1
- "use strict";var $e=Object.defineProperty;var et=(e,t,n)=>t in e?$e(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var J=(e,t,n)=>et(e,typeof t!="symbol"?t+"":t,n);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const je=require("./screenImageSettings-y_B4_767.cjs"),g=require("react"),he=require("./index-DxshgBu0.cjs"),Y=require("./index-C_Duh13c.cjs"),d=require("react/jsx-runtime"),be=require("@react-three/fiber"),ue=require("three"),De=require("./selectors-BLl2JUWW.cjs"),Je=require("@react-three/drei");function tt(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const n in e)if(n!=="default"){const s=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,s.get?s:{enumerable:!0,get:()=>e[n]})}}return t.default=e,Object.freeze(t)}const x=tt(ue),Te=9,Qe=16,nt=({children:e})=>{const[t,n]=g.useState({width:0,height:0});return g.useEffect(()=>{const s=()=>{const i=document.documentElement.clientWidth,a=document.documentElement.clientHeight,o=i/a,c=Te/Qe;let r,l;o>c?(l=a,r=l*Te/Qe):(r=i,l=r*Qe/Te),n({width:r,height:l})};return s(),window.addEventListener("resize",s),()=>window.removeEventListener("resize",s)},[]),d.jsx("div",{style:{width:"100vw",height:`${window.innerHeight}px`,display:"flex",alignItems:"center",justifyContent:"center",backgroundColor:"#0d0d0d"},children:d.jsx("div",{style:{width:t.width,height:t.height,position:"relative"},children:e})})},st=({children:e,depth:t=0})=>{const{camera:n,size:s}=be.useThree(),i=g.useMemo(()=>{if(!n.isPerspectiveCamera)return{width:10,height:10};const a=n,o=Math.abs(a.position.z-t),c=a.fov*Math.PI/180,r=2*Math.tan(c/2)*o;return{width:r*(s.width/s.height),height:r}},[n,s,t]);return d.jsx(Y.ScreenSpaceContext.Provider,{value:i,children:d.jsx("group",{position:[0,0,t],children:e})})};function Me(e,t){return!Number.isFinite(e)||!Number.isFinite(t)||e<=0||t<=0?[1,1,1]:Math.abs(e-t)<1e-6?[1,1,1]:e>t?[t/e,1,1]:[1,e/t,1]}const _={width:720,height:1280},rt=(e=[.5,.5])=>[e[0]*2-1,e[1]*2-1],we=({position:e=[0,0],size:t=[1,1]})=>{const n=t[0]/2,s=t[1]/2;return{left:e[0]-n,right:e[0]+n,top:e[1]+s,bottom:e[1]-s}},it=({position:e=[0,0],size:t=[_.width,_.width],canvasSize:n=_})=>{const s=n.width/2||_.width/2,i=n.height/2||_.height/2;return we({position:[e[0]/s,e[1]/i],size:[t[0]/s,t[1]/i]})},ze=({coordinateSpace:e="normalized",canvasSize:t=_,position:n,size:s,fallbackAnchors:i})=>i||(!n&&!s?we({}):e==="canvas"?it({position:n,size:s,canvasSize:t}):we({position:n,size:s})),at="data:image/png;base64,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",Ue={left:-.35,right:.35,top:.35,bottom:-.35},ot={},lt={left:0,right:0,top:0,bottom:0},ct=[.5,.5],At=999,xe=Math.PI/180,dt=()=>{const e=document.createElement("canvas");e.width=256,e.height=256;const t=e.getContext("2d");if(!t)return new x.CanvasTexture(e);const n=t.createRadialGradient(96,80,10,128,128,128);n.addColorStop(0,"#ffffff"),n.addColorStop(.18,"#f8fafc"),n.addColorStop(.44,"#cbd5e1"),n.addColorStop(.72,"#475569"),n.addColorStop(1,"#0f172a"),t.fillStyle=n,t.fillRect(0,0,e.width,e.height);const s=new x.CanvasTexture(e);return s.needsUpdate=!0,s},ut=new Set(["overlay","softLight","hardLight","difference","exclusion"]),ht=e=>{switch(e){case"add":return{blending:x.AdditiveBlending};case"subtract":return{blending:x.SubtractiveBlending};case"multiply":return{blending:x.MultiplyBlending};case"screen":return{blending:x.CustomBlending,blendSrc:x.OneFactor,blendDst:x.OneMinusSrcColorFactor,blendEquation:x.AddEquation};case"lighten":return{blending:x.CustomBlending,blendSrc:x.OneFactor,blendDst:x.OneFactor,blendEquation:x.MaxEquation};case"darken":return{blending:x.CustomBlending,blendSrc:x.OneFactor,blendDst:x.OneFactor,blendEquation:x.MinEquation};case"normal":default:return{blending:x.NormalBlending}}},ft={overlay:0,softLight:1,hardLight:2,difference:3,exclusion:4},gt=`
2
- varying vec2 vUv;
3
-
4
- void main() {
5
- vUv = uv;
6
- gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
7
- }
8
- `,pt=`
9
- uniform sampler2D imageMap;
10
- uniform sampler2D backdropMap;
11
- uniform vec2 resolution;
12
- uniform vec3 tint;
13
- uniform float opacity;
14
- uniform float alphaTest;
15
- uniform int blendMode;
16
- varying vec2 vUv;
17
-
18
- float overlayChannel(float base, float blend) {
19
- return base < 0.5 ? 2.0 * base * blend : 1.0 - 2.0 * (1.0 - base) * (1.0 - blend);
20
- }
21
-
22
- float hardLightChannel(float base, float blend) {
23
- return blend < 0.5 ? 2.0 * base * blend : 1.0 - 2.0 * (1.0 - base) * (1.0 - blend);
24
- }
25
-
26
- float softLightChannel(float base, float blend) {
27
- return blend < 0.5
28
- ? base - (1.0 - 2.0 * blend) * base * (1.0 - base)
29
- : base + (2.0 * blend - 1.0) * (sqrt(max(base, 0.0)) - base);
30
- }
31
-
32
- vec3 applyAdvancedBlend(vec3 base, vec3 blend) {
33
- if (blendMode == 0) {
34
- return vec3(
35
- overlayChannel(base.r, blend.r),
36
- overlayChannel(base.g, blend.g),
37
- overlayChannel(base.b, blend.b)
38
- );
39
- }
40
- if (blendMode == 1) {
41
- return vec3(
42
- softLightChannel(base.r, blend.r),
43
- softLightChannel(base.g, blend.g),
44
- softLightChannel(base.b, blend.b)
45
- );
46
- }
47
- if (blendMode == 2) {
48
- return vec3(
49
- hardLightChannel(base.r, blend.r),
50
- hardLightChannel(base.g, blend.g),
51
- hardLightChannel(base.b, blend.b)
52
- );
53
- }
54
- if (blendMode == 3) {
55
- return abs(base - blend);
56
- }
57
- return base + blend - 2.0 * base * blend;
58
- }
59
-
60
- void main() {
61
- vec4 image = texture2D(imageMap, vUv) * vec4(tint, opacity);
62
- if (image.a <= alphaTest) {
63
- discard;
64
- }
65
-
66
- vec2 backdropUv = gl_FragCoord.xy / max(resolution, vec2(1.0));
67
- vec3 backdrop = texture2D(backdropMap, backdropUv).rgb;
68
- vec3 blended = applyAdvancedBlend(backdrop, image.rgb);
69
- vec3 composited = mix(backdrop, blended, image.a);
70
- gl_FragColor = vec4(composited, 1.0);
71
- }
72
- `,Et=(e,t)=>e||(t?{kind:"image",src:t}:{kind:"default"}),mt=e=>{const t=e.image,n=(t==null?void 0:t.videoWidth)??(t==null?void 0:t.width)??1,s=(t==null?void 0:t.videoHeight)??(t==null?void 0:t.height)??1;return n>0&&s>0?n/s:1},Ye=(e,t)=>{const[n,s]=Me(e,t);return n===1&&s===1?[1,1,1]:n<1?[1,1/n,1]:[1/s,1,1]},vt=(e,t)=>e<=0||t<=0?[1,1,1]:[1,e/t,1],Ct=(e,t)=>e<=0||t<=0?[1,1,1]:[t/e,1,1],St=e=>[e[0]*2-1,e[1]*2-1],It=(e,t)=>e||(t==="cover"?"fill":t==="stretch"?"stretch":"fit"),bt=(e,t,n,s,i)=>e||(!s&&!i?Ue:ze({coordinateSpace:t,canvasSize:n??_,position:s,size:i})),Mt=(e,t,n,s,i)=>{let a=[1,1,1],o=[1,1,1],c=[1,1],r=[0,0];switch(e){case"fit":a=Me(t,n),o=a;break;case"fitWidth":a=vt(t,n),o=a;break;case"fitHeight":a=Ct(t,n),o=a;break;case"stretch":break;case"fill":a=Ye(t,n),o=a;break;case"fillAndCut":{if(o=Ye(t,n),n>t){const A=t/n;c=[A,1],r=[(1-A)/2,0]}else if(n<t){const A=n/t;c=[1,A],r=[0,(1-A)/2]}break}}return{meshScale:[a[0]*(s?-1:1),a[1]*(i?-1:1),1],guideScale:o,repeat:c,offset:r}};function Bt({name:e,source:t,src:n,fit:s,stretchMode:i,materialType:a="unlit",blendMode:o="normal",backdropTexture:c=null,rotation:r=0,opacity:l=1,color:A="#ffffff",flipX:f=!1,flipY:h=!1,renderOrder:p=At,transparent:m=!0,alphaTest:u=0,overlay:E=!0,visible:S,showFitGuides:v=!1}){const{size:I}=be.useThree(),T=Y.useXRViewportRenderOutputs(),M=Et(t,n),B=M.kind==="image"?M.src:at,z=Je.useTexture(B),R=M.kind==="texture"?M.texture:z,y=Y.useScreenRectAspect(),w=It(i,s),b=mt(R),D=g.useMemo(()=>dt(),[]),k=g.useMemo(()=>Mt(w,y,b,f,h),[w,y,b,f,h]),L=g.useMemo(()=>{const U=R.clone();return U.needsUpdate=!0,U.repeat.set(k.repeat[0],k.repeat[1]),U.offset.set(k.offset[0],k.offset[1]),U},[R,k.repeat,k.offset]),W=g.useMemo(()=>ht(o),[o]),X=ut.has(o)?o:null,K=c??(T==null?void 0:T.finalColorTexture)??(T==null?void 0:T.sceneColorTexture)??null,$=X!==null&&K!==null,ee=g.useMemo(()=>({imageMap:{value:L},backdropMap:{value:K},resolution:{value:new x.Vector2(I.width,I.height)},tint:{value:new x.Color(A)},opacity:{value:l},alphaTest:{value:u},blendMode:{value:X===null?0:ft[X]}}),[X,u,K,I.height,I.width,A,L,l]);return d.jsxs("group",{visible:S,children:[d.jsxs("mesh",{name:e,scale:k.meshScale,rotation:[0,0,r*xe],renderOrder:p,children:[d.jsx("planeGeometry",{args:[1,1]}),$?d.jsx("shaderMaterial",{uniforms:ee,vertexShader:gt,fragmentShader:pt,transparent:!1,depthTest:!E,depthWrite:!E,toneMapped:!1}):a==="standardPBR"?d.jsx("meshStandardMaterial",{map:L,transparent:m||l<1,opacity:l,color:A,alphaTest:u,depthTest:!E,depthWrite:!E,toneMapped:!1,roughness:.72,metalness:.08,emissive:A,emissiveIntensity:.18,...W}):a==="matcap"?d.jsx("meshMatcapMaterial",{map:L,matcap:D,transparent:m||l<1,opacity:l,color:A,alphaTest:u,depthTest:!E,depthWrite:!E,toneMapped:!1,...W}):d.jsx("meshBasicMaterial",{map:L,transparent:m||l<1,opacity:l,color:A,alphaTest:u,depthTest:!E,depthWrite:!E,toneMapped:!1,...W})]}),v?d.jsxs("group",{renderOrder:p+1,children:[d.jsxs("mesh",{position:[0,0,.002],children:[d.jsx("planeGeometry",{args:[1,1]}),d.jsx("meshBasicMaterial",{color:"#22d3ee",wireframe:!0,transparent:!0,opacity:.9,depthTest:!1,depthWrite:!1,toneMapped:!1})]}),d.jsxs("mesh",{position:[0,0,.004],scale:k.guideScale,rotation:[0,0,r*xe],children:[d.jsx("planeGeometry",{args:[1,1]}),d.jsx("meshBasicMaterial",{color:"#f59e0b",wireframe:!0,transparent:!0,opacity:.9,depthTest:!1,depthWrite:!1,toneMapped:!1})]})]}):null]})}function yt({anchors:e,offsets:t,pivot:n,rotation:s,children:i}){const{width:a,height:o}=Y.useScreenSpace(),c=g.useMemo(()=>({...Ue,...e}),[e]),r=g.useMemo(()=>({...lt,...t}),[t]),l=g.useMemo(()=>Y.computeScreenTransform(a,o,c,r,n),[o,a,c,r,n]),A=l.width>0&&l.height>0?l.width/l.height:null;return d.jsx("group",{position:[l.centerX-l.pivotX,l.centerY-l.pivotY,0],rotation:[0,0,s*xe],scale:[l.width,l.height,1],children:d.jsx(Y.ScreenRectAspectContext.Provider,{value:A,children:i})})}function Tt({anchors:e,coordinateSpace:t,canvasSize:n,position:s,size:i,offsets:a=ot,pivot:o=ct,rotation:c=0,...r}){const l=g.useMemo(()=>bt(e,t,n,s,i),[e,n,t,s,i]),A=g.useMemo(()=>St(o),[o]);return d.jsx(yt,{anchors:l,offsets:a,pivot:A,rotation:c,children:d.jsx(Bt,{...r,rotation:0})})}const Qt={color:"#ffffff",strokeWidth:0,strokeOpacity:1,shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,shadowOpacity:1,fontWeight:"bold",fontStyle:"normal",fontFamily:"Arial, sans-serif",fontSize:48,textAlign:"center",minFontSize:12,letterSpacing:0,lineSpacing:.3,bgColor:"rgba(20,40,110,0.88)",bgFillMode:"solid",bgOpacity:1,bgFit:"full",bgTextureFit:"cover",bgTextureFlipX:!1,bgTextureFlipY:!1,borderWidth:0,borderRadius:24,padding:32,aspect:2.5,resolution:512,opacity:1,underline:!1,bendPreset:"arc",bendStrength:0};function He(e){const t={...Qt,...e},{text:n,lines:s,color:i,strokeLayers:a,strokeColor:o,strokeWidth:c,strokeOpacity:r,shadowLayers:l,innerShadow:A,glow:f,shadowColor:h,shadowBlur:p,shadowOffsetX:m,shadowOffsetY:u,shadowOpacity:E,fontWeight:S,fontStyle:v,fontFamily:I,fontSize:T,textAlign:M,overflow:B,resizeToFit:z,minFontSize:R,letterSpacing:y,lineSpacing:w,bgColor:b,bgFillMode:D,bgOpacity:k,bgFit:L,bgAutoSize:W,bgWidth:X,bgHeight:K,bgGradientStops:$,bgTextureFit:ee,bgTextureFlipX:U,bgTextureFlipY:ge,borderColor:pe,borderWidth:Ee,borderRadius:V,padding:q,aspect:G,resolution:te,opacity:Be,underline:me,bendPreset:ne,bendStrength:ae,name:C,overlay:oe=!0,position:We,rotation:ve,scale:O,visible:H,renderOrder:Z}=t,[se,Ce]=g.useState(null),[Se,Ie]=g.useState(null),N=g.useRef(n);N.current!==n&&(N.current=n,se!==null&&Ce(null));const Q=g.useRef(b);Q.current!==b&&(Q.current=b,Se!==null&&Ie(null));const P=g.useRef(null),F=se??n,le=Se??b,ce=void 0,Ae=g.useMemo(()=>wt({text:F,lines:s,color:i,strokeLayers:a,strokeColor:o,strokeWidth:c,strokeOpacity:r,shadowLayers:l,innerShadow:A,glow:f,shadowColor:h,shadowBlur:p,shadowOffsetX:m,shadowOffsetY:u,shadowOpacity:E,fontWeight:S,fontStyle:v,fontFamily:I,fontSize:T,textAlign:M,overflow:B,resizeToFit:z,minFontSize:R,letterSpacing:y,lineSpacing:w,bgColor:le,bgFillMode:D,bgOpacity:k,bgFit:L,bgAutoSize:W,bgWidth:X,bgHeight:K,bgGradientStops:$,bgTextureImage:ce,bgTextureFit:ee,bgTextureFlipX:U,bgTextureFlipY:ge,borderColor:pe,borderWidth:Ee,borderRadius:V,padding:q,height:te,width:Math.round(te*Math.max(G,.1)),underline:me,bendPreset:ne,bendStrength:ae}),[F,s,i,a,o,c,r,l,A,f,h,p,m,u,E,S,v,I,T,M,B,z,R,y,w,le,D,k,L,W,X,K,$,ce,ee,U,ge,pe,Ee,V,q,G,te,me,ne,ae]);return g.useEffect(()=>{const de=P.current;if(de)return de.userData.setText=ye=>Ce(ye),de.userData.setBgColor=ye=>Ie(ye),()=>{delete de.userData.setText,delete de.userData.setBgColor}},[]),g.useEffect(()=>()=>{Ae.dispose()},[Ae]),d.jsxs("mesh",{ref:P,name:C,position:We,rotation:ve,scale:O,visible:H,renderOrder:Z,children:[d.jsx("planeGeometry",{args:[1,1]}),d.jsx("meshBasicMaterial",{map:Ae,transparent:!0,opacity:Be,depthTest:!oe,depthWrite:!oe})]})}function wt(e){const{width:t,height:n,text:s,lines:i,color:a,strokeLayers:o,strokeColor:c,strokeWidth:r,strokeOpacity:l,shadowLayers:A,innerShadow:f,glow:h,shadowColor:p,shadowBlur:m,shadowOffsetX:u,shadowOffsetY:E,shadowOpacity:S,fontStyle:v,fontFamily:I,fontWeight:T,textAlign:M,padding:B,overflow:z,resizeToFit:R,minFontSize:y,letterSpacing:w,lineSpacing:b,bgFillMode:D,bgOpacity:k,bgFit:L,bgAutoSize:W,bgWidth:X,bgHeight:K,bgGradientStops:$,bgTextureImage:ee,bgTextureFit:U,bgTextureFlipX:ge,bgTextureFlipY:pe,underline:Ee,bendPreset:V,bendStrength:q}=e;let{fontSize:G,bgColor:te}=e;const Be=[...o??[],...c&&r>0?[{color:c,width:r,opacity:l}]:[]].filter(Q=>Q.width>0),me=[...A??[],...p&&(m>0||u!==0||E!==0)?[{color:p,blur:m,offsetX:u,offsetY:E,opacity:S}]:[]].filter(Q=>Q.blur>0||(Q.offsetX??0)!==0||(Q.offsetY??0)!==0);let ne;const ae=typeof OffscreenCanvas<"u"?new OffscreenCanvas(t,n):(()=>{const Q=document.createElement("canvas");return Q.width=t,Q.height=n,Q})(),C=ae.getContext("2d");C.clearRect(0,0,t,n),C.fillStyle=a,C.textAlign=M,C.textBaseline="middle";const oe=t-B*2,ve=Array.isArray(i)||s.includes(`
73
- `)||z!==void 0||R!==void 0?Pt({ctx:C,text:s,explicitLines:i,maxWidth:oe,maxHeight:n,padding:B,fontStyle:v,fontWeight:T,fontSize:G,fontFamily:I,overflow:z,resizeToFit:R,minFontSize:y,letterSpacing:w,lineSpacing:b}):jt({ctx:C,text:s,maxWidth:oe,maxHeight:n,padding:B,fontStyle:v,fontWeight:T,fontSize:G,fontFamily:I,letterSpacing:w,lineSpacing:b});G=ve.fontSize;const O=ve.lines;C.font=Ne(v,T,G,I);const H=fe(G,w),Z=Ke(G,b),se=n/2-(O.length-1)*Z/2,Ce=O.map(Q=>ie(C,Q,H)),Se=Math.min(t,Math.max(0,Math.max(...Ce,0))+B*2),Ie=Math.min(n,Math.max(G,G+(O.length-1)*Z)+B*2),N=xt(t,B,M);if(te!=="transparent"){const Q=W===!0,P=Re(Q?void 0:X,L==="text"||Q?Se:t,t),F=Re(Q?void 0:K,L==="text"||Q?Ie:n,n),le=kt(t,P,M,L),ce=(n-F)/2,Ae=Math.min(e.borderRadius,Math.min(P,F)/2);Wt(C,le,ce,P,F,Ae),Dt(C,{panelX:le,panelY:ce,panelWidth:P,panelHeight:F,bgColor:te,bgFillMode:D,bgOpacity:k,bgGradientStops:$,bgTextureImage:ee,bgTextureFit:U,bgTextureFlipX:ge,bgTextureFlipY:pe}),e.borderColor&&e.borderWidth>0&&(C.lineWidth=e.borderWidth,C.strokeStyle=e.borderColor,C.stroke())}h&&Rt(C,{lines:O,textX:N,startY:se,lineHeight:Z,letterSpacingPx:H,bendPreset:V,bendStrength:q,color:h.color,style:h.style,intensity:h.intensity??.5,range:h.range??.5,horizontalAngle:h.horizontalAngle??0,verticalAngle:h.verticalAngle??0});for(let Q=0;Q<O.length;Q++){const P=se+Q*Z;for(const F of me)C.save(),C.shadowColor=F.color,C.shadowBlur=F.blur,C.shadowOffsetX=F.offsetX??0,C.shadowOffsetY=F.offsetY??0,C.globalAlpha=F.opacity??1,C.fillStyle=a,re(C,O[Q],N,P,H,"fill",V,q),C.restore();for(const F of Be)C.save(),C.lineJoin="round",C.miterLimit=2,C.lineWidth=F.width,C.strokeStyle=F.color,C.globalAlpha=F.opacity??1,re(C,O[Q],N,P,H,"stroke",V,q),C.restore();C.save(),C.fillStyle=a,C.globalAlpha=1,re(C,O[Q],N,P,H,"fill",V,q),C.restore(),Ee&&Gt(C,O[Q],N,P,M,a,G,H)}return f&&Xt(C,{width:t,height:n,font:C.font,lines:O,textX:N,startY:se,lineHeight:Z,letterSpacingPx:H,bendPreset:V,bendStrength:q,textAlign:M,color:f.color,opacity:f.opacity??1,blur:f.blur,offsetX:f.offsetX??0,offsetY:f.offsetY??0}),ne=new x.CanvasTexture(ae),ne.needsUpdate=!0,ne}function xt(e,t,n){return n==="left"?t:n==="right"?e-t:e/2}function kt(e,t,n,s){return s==="full"||n==="left"?0:n==="right"?e-t:(e-t)/2}function Ne(e,t,n,s){return`${e} ${t} ${n}px ${s}`}function fe(e,t){const n=Math.max(0,Math.min(t,1));return e*n*.08}function Ke(e,t){const n=Math.max(0,Math.min(t,1));return e*(1.2+n*.6)}function ie(e,t,n){Ve(e,n);const s=e.measureText(t).width;return qe(e),s}function re(e,t,n,s,i,a,o="arc",c=0){if(c!==0){Lt(e,t,n,s,i,a,o,c);return}Ve(e,i),a==="fill"?e.fillText(t,n,s):e.strokeText(t,n,s),qe(e)}function Lt(e,t,n,s,i,a,o,c){const r=Array.from(t);if(r.length===0)return;const l=r.map(S=>e.measureText(S).width),A=l.reduce((S,v)=>S+v,0)+i*Math.max(0,r.length-1),f=e.textAlign,h=f==="right"?n-A:f==="center"?n-A/2:n,m=Math.max(-100,Math.min(c,100))/100*72,u=Math.max(A/2,1);let E=h;for(let S=0;S<r.length;S++){const v=r[S],I=l[S],T=E+I/2,M=(T-h-A/2)/u,B=Ft(o,M,S,r.length,m,u);e.save(),e.translate(T+B.xOffset,s+B.yOffset),e.rotate(B.rotation),e.scale(B.scaleX,B.scaleY),e.textAlign="center",a==="fill"?e.fillText(v,0,0):e.strokeText(v,0,0),e.restore(),E+=I+i}}function Ft(e,t,n,s,i,a){const o=i/72,c=Math.abs(o),r=1-Math.min(1,Math.abs(t)),l=Math.min(1,Math.abs(t)),A=s<=1?.5:n/(s-1),f=Math.sin(A*Math.PI*2-Math.PI/2),h=Math.sin(A*Math.PI*2.7-Math.PI/2)*(.65+A*.35),p=i*t*t,m=2*i*t/a,u={xOffset:0,yOffset:0,rotation:0,scaleX:1,scaleY:1};switch(e){case"arc":return{...u,yOffset:p,rotation:Math.atan(m)};case"arc-lower":return{...u,yOffset:p*.55,scaleY:Math.max(.2,1+o*t*t*.45)};case"arc-upper":return{...u,yOffset:-p*.55,scaleY:Math.max(.2,1-o*t*t*.45)};case"arch":return{...u,yOffset:p};case"bulge":return{...u,scaleY:Math.max(.2,1+o*r*.75)};case"shell-lower":return{...u,yOffset:i*.45*A*r,scaleY:Math.max(.2,1+o*A*r)};case"shell-upper":return{...u,yOffset:-i*.45*(1-A)*r,scaleY:Math.max(.2,1+o*(1-A)*r)};case"flag":return{...u,yOffset:i*.65*h,rotation:Math.atan(i/Math.max(a,1)*Math.cos(A*Math.PI*2.7)*1.6)};case"wave":return{...u,yOffset:i*.6*f,rotation:Math.atan(i/Math.max(a,1)*Math.cos(A*Math.PI*2)*1.4)};case"fish":return{...u,scaleX:Math.max(.25,1-c*l*.55),scaleY:Math.max(.2,1+o*r)};case"rise":return{...u,yOffset:i*t};case"fisheye":return{...u,yOffset:i*.18*t*r,scaleX:Math.max(.25,1+o*r*.7),scaleY:Math.max(.2,1+o*r*.7)};case"inflate":return{...u,scaleX:Math.max(.25,1+o*r*.6),scaleY:Math.max(.2,1+o*r*.6)};case"squeeze":return{...u,scaleY:Math.max(.2,1-o*r*.8)};case"twist":return{...u,yOffset:i*t,rotation:o*t*.45,scaleY:Math.max(.2,1+o*t*.25)};default:return u}}function Ve(e,t){"letterSpacing"in e&&(e.letterSpacing=`${t}px`)}function qe(e){"letterSpacing"in e&&(e.letterSpacing="0px")}function Re(e,t,n){return typeof e!="number"||Number.isNaN(e)||e<=0?t:Math.min(e,n)}function Wt(e,t,n,s,i,a){e.beginPath(),e.moveTo(t+a,n),e.lineTo(t+s-a,n),e.quadraticCurveTo(t+s,n,t+s,n+a),e.lineTo(t+s,n+i-a),e.quadraticCurveTo(t+s,n+i,t+s-a,n+i),e.lineTo(t+a,n+i),e.quadraticCurveTo(t,n+i,t,n+i-a),e.lineTo(t,n+a),e.quadraticCurveTo(t,n,t+a,n),e.closePath()}function Dt(e,t){const{panelX:n,panelY:s,panelWidth:i,panelHeight:a,bgColor:o,bgFillMode:c,bgOpacity:r,bgGradientStops:l,bgTextureImage:A,bgTextureFit:f,bgTextureFlipX:h,bgTextureFlipY:p}=t;if(e.save(),e.globalAlpha=Math.max(0,Math.min(r,1)),c==="gradient"&&l&&l.length>1){const m=e.createLinearGradient(n,s,n+i,s+a);[...l].sort((u,E)=>u.position-E.position).forEach(u=>m.addColorStop(Math.max(0,Math.min(u.position,1)),u.color)),e.fillStyle=m,e.fill(),e.restore();return}if(A){e.clip(),Yt(e,{image:A,x:n,y:s,width:i,height:a,fit:f,flipX:h,flipY:p}),e.restore();return}e.fillStyle=o,e.fill(),e.restore()}function Yt(e,t){const{image:n,x:s,y:i,width:a,height:o,fit:c,flipX:r,flipY:l}=t,A="naturalWidth"in n?n.naturalWidth:"videoWidth"in n?n.videoWidth:n.width,f="naturalHeight"in n?n.naturalHeight:"videoHeight"in n?n.videoHeight:n.height;let h=a,p=o,m=s,u=i;if(c!=="stretch"&&A>0&&f>0){const E=c==="cover"?Math.max(a/A,o/f):Math.min(a/A,o/f);h=A*E,p=f*E,m=s+(a-h)/2,u=i+(o-p)/2}e.save(),(r||l)&&(e.translate(r?s+a:0,l?i+o:0),e.scale(r?-1:1,l?-1:1),m=r?-(m-s)-h+s:m,u=l?-(u-i)-p+i:u),e.drawImage(n,m,u,h,p),e.restore()}function Rt(e,t){const{lines:n,textX:s,startY:i,lineHeight:a,letterSpacingPx:o,bendPreset:c,bendStrength:r,color:l,style:A,intensity:f,range:h,horizontalAngle:p,verticalAngle:m}=t,u=Math.max(0,Math.min(f,1));if(u<=0)return;const E=Math.max(0,Math.min(h,1)),S=E*72,v=Math.max(-.5,Math.min(p,.5))*80,I=Math.max(-.5,Math.min(m,.5))*80;for(let T=0;T<n.length;T++){const M=i+T*a;e.save(),e.globalAlpha=u,e.shadowColor=l,e.shadowBlur=S,e.shadowOffsetX=v,e.shadowOffsetY=I,A==="contoured"?(e.lineJoin="round",e.miterLimit=2,e.lineWidth=Math.max(2,E*42),e.strokeStyle=l,re(e,n[T],s,M,o,"stroke",c,r)):(e.fillStyle=l,re(e,n[T],s,M,o,"fill",c,r)),e.restore()}}function Xt(e,t){const{width:n,height:s,font:i,lines:a,textX:o,startY:c,lineHeight:r,letterSpacingPx:l,bendPreset:A,bendStrength:f,textAlign:h,color:p,opacity:m,blur:u,offsetX:E,offsetY:S}=t,v=typeof OffscreenCanvas<"u"?new OffscreenCanvas(n,s):(()=>{const B=document.createElement("canvas");return B.width=n,B.height=s,B})(),I=v.getContext("2d");I.clearRect(0,0,n,s),I.font=i,I.fillStyle="#ffffff",I.textAlign=h,I.textBaseline="middle";for(let B=0;B<a.length;B++)re(I,a[B],o,c+B*r,l,"fill",A,f);const T=typeof OffscreenCanvas<"u"?new OffscreenCanvas(n,s):(()=>{const B=document.createElement("canvas");return B.width=n,B.height=s,B})(),M=T.getContext("2d");M.clearRect(0,0,n,s),M.save(),M.globalAlpha=m,M.filter=u>0?`blur(${u}px)`:"none",M.drawImage(v,E,S),M.restore(),M.globalCompositeOperation="destination-in",M.drawImage(v,0,0),M.globalCompositeOperation="source-in",M.globalAlpha=m,M.fillStyle=p,M.fillRect(0,0,n,s),e.drawImage(T,0,0)}function Gt(e,t,n,s,i,a,o,c){const r=ie(e,t,c),l=i==="center"?n-r/2:i==="right"?n-r:n,A=s+o*.42;e.save(),e.strokeStyle=a,e.lineWidth=Math.max(2,o*.06),e.lineCap="round",e.beginPath(),e.moveTo(l,A),e.lineTo(l+r,A),e.stroke(),e.restore()}function ke(e,t,n,s,i,a,o,c){e.font=Ne(s,i,a,o);const r=t.split(" "),l=[];let A="";for(const f of r){const h=A?`${A} ${f}`:f;ie(e,h,c)>n&&A?(l.push(A),A=f):A=h}return A&&l.push(A),l}function Xe(e,t,n,s,i,a,o,c){const l=t.split(/\r?\n/).flatMap(A=>A.trim().length===0?[""]:ke(e,A,n,s,i,a,o,c));return l.length>0?l:[t]}function Le(e,t,n,s){return Math.max(1,Math.floor((e-t*2)/Ke(n,s)))}function Ze(e,t,n,s,i){const a=s?"...":"";let o=t.trimEnd();for(;o.length>0&&ie(e,`${o}${a}`,i)>n;)o=o.slice(0,-1).trimEnd();return`${o}${a}`}function Fe(e,t,n,s,i){return t.map((a,o)=>{if(ie(e,a,i)<=n)return a;const c=o===t.length-1;return Ze(e,a,n,s==="ellipsis"&&c,i)})}function Ge(e,t,n,s,i,a){if(t.length<=n)return Fe(e,t,s,i?"ellipsis":"clip",a);const o=t.slice(0,n),c=o[n-1];return o[n-1]=Ze(e,c,s,i,a),Fe(e,o,s,i?"ellipsis":"clip",a)}function Ot(e,t,n,s,i){return t.length<=s&&t.every(a=>ie(e,a,i)<=n)}function Pt(e){const{ctx:t,text:n,explicitLines:s,maxWidth:i,maxHeight:a,padding:o,fontStyle:c,fontWeight:r,fontSize:l,fontFamily:A,letterSpacing:f,lineSpacing:h,overflow:p,resizeToFit:m,minFontSize:u}=e;let E=l,S=fe(E,f),v=s??Xe(t,n,i,c,r,E,A,S),I=Le(a,o,E,h);const T=m===!0||p==="shrink";for(;T&&!Ot(t,v,i,I,S)&&E>u&&(E=Math.max(u,E-4),S=fe(E,f),v=s??Xe(t,n,i,c,r,E,A,S),I=Le(a,o,E,h),E!==u););return p==="ellipsis"?v=Ge(t,v,I,i,!0,S):p==="clamp"||p==="shrink"?v=Ge(t,v,I,i,!1,S):p==="clip"?v=v:v=Fe(t,v,i,void 0,S),{fontSize:E,lines:v}}function jt(e){const{ctx:t,text:n,maxWidth:s,maxHeight:i,padding:a,fontStyle:o,fontWeight:c,fontSize:r,fontFamily:l,letterSpacing:A,lineSpacing:f}=e;let h=r,p=ke(t,n,s,o,c,h,l,fe(h,A));const m=Le(i,a,h,f);return p.length>m&&(h=Math.max(12,Math.round(h*.75)),p=ke(t,n,s,o,c,h,l,fe(h,A))),{fontSize:h,lines:p}}const Jt="rgba(20,40,110,0.88)",zt=24,Ut=512;function Ht({color:e=Jt,borderColor:t,borderWidth:n=0,borderRadius:s=zt,resolution:i=Ut,aspect:a=1,opacity:o=1,name:c,overlay:r=!0,position:l,rotation:A,scale:f,visible:h}){const p=g.useRef(null),m=g.useRef(null),u=g.useMemo(()=>Nt({width:Math.round(i*Math.max(a,.05)),height:Math.round(i),color:e,borderColor:t,borderWidth:n,borderRadius:s}),[e,t,n,s,i,a]);g.useEffect(()=>()=>{u.dispose()},[u]);const E=g.useRef(null),S=g.useRef(o);return S.current!==o&&(S.current=o,E.current=null,m.current&&(m.current.opacity=o)),g.useEffect(()=>{const v=p.current;if(v)return v.userData.setOpacity=I=>{E.current=I,m.current&&(m.current.opacity=I)},()=>{delete v.userData.setOpacity}},[]),d.jsxs("mesh",{ref:p,name:c,position:l,rotation:A,scale:f,visible:h,children:[d.jsx("planeGeometry",{args:[1,1]}),d.jsx("meshBasicMaterial",{ref:m,map:u,transparent:!0,opacity:o,depthTest:!r,depthWrite:!r})]})}function Nt(e){const{width:t,height:n,color:s,borderColor:i,borderWidth:a,borderRadius:o}=e,c=typeof OffscreenCanvas<"u"?new OffscreenCanvas(t,n):(()=>{const f=document.createElement("canvas");return f.width=t,f.height=n,f})(),r=c.getContext("2d");r.clearRect(0,0,t,n);const l=Math.min(o,Math.min(t,n)/2);r.beginPath(),r.moveTo(l,0),r.lineTo(t-l,0),r.quadraticCurveTo(t,0,t,l),r.lineTo(t,n-l),r.quadraticCurveTo(t,n,t-l,n),r.lineTo(l,n),r.quadraticCurveTo(0,n,0,n-l),r.lineTo(0,l),r.quadraticCurveTo(0,0,l,0),r.closePath(),r.fillStyle=s,r.fill(),i&&a>0&&(r.lineWidth=a,r.strokeStyle=i,r.stroke());const A=new x.CanvasTexture(c);return A.needsUpdate=!0,A}const Kt=2.5,Vt={top:{left:-.92,right:.92,top:.92,bottom:.56},center:{left:-.92,right:.92,top:.18,bottom:-.18},bottom:{left:-.92,right:.92,top:-.56,bottom:-.92}};function qt(e="center"){return Vt[e]}function Zt(e){const t=Y.useScreenRectAspect(),n=Math.max(t||Kt,.1),{showTransformGuides:s=!1,renderOrder:i,overlay:a=!0,...o}=e;return d.jsxs(d.Fragment,{children:[d.jsx(He,{...o,aspect:n,overlay:a,renderOrder:i}),s?d.jsx("group",{renderOrder:(i??0)+1,children:d.jsxs("mesh",{position:[0,0,.004],children:[d.jsx("planeGeometry",{args:[1,1]}),d.jsx("meshBasicMaterial",{color:"#38bdf8",wireframe:!0,transparent:!0,opacity:.9,depthTest:!1,depthWrite:!1,toneMapped:!1})]})}):null]})}function _t({anchors:e,coordinateSpace:t,canvasSize:n,offsets:s,pivot:i,position:a,rotation:o=0,size:c,transform:r,verticalAlign:l="center",...A}){const f=g.useMemo(()=>r!=null&&r.anchors?r.anchors:e||(r!=null&&r.position||r!=null&&r.size||a||c?ze({coordinateSpace:(r==null?void 0:r.coordinateSpace)??t,canvasSize:(r==null?void 0:r.canvasSize)??n,position:(r==null?void 0:r.position)??a,size:(r==null?void 0:r.size)??c}):qt(l)),[e,n,t,a,c,r,l]),h=(r==null?void 0:r.offsets)??s,p=g.useMemo(()=>rt((r==null?void 0:r.pivot)??i??[.5,.5]),[i,r==null?void 0:r.pivot]),m=(r==null?void 0:r.rotation)??o;return d.jsx(Y.ScreenTransform,{anchors:f,offsets:h,pivot:p,children:d.jsx("group",{rotation:[0,0,m*Math.PI/180],children:d.jsx(Zt,{...A})})})}const $t={left:-1,right:1,top:1,bottom:-1},en=(e,t,n)=>{const s=e%t,i=Math.floor(e/t);return{x:s/t,y:(n-1-i)/n}},tn=({sheet:e,contentAspect:t,renderOrder:n,name:s})=>{const i=Je.useTexture(e.url),a=g.useRef(0),o=g.useRef(-1),c=Y.useScreenRectAspect(),[r,l]=t!=null?Me(c,t):[1,1];return be.useFrame((A,f)=>{i.wrapS=ue.RepeatWrapping,i.wrapT=ue.RepeatWrapping,i.magFilter=ue.LinearFilter,i.minFilter=ue.LinearFilter,i.generateMipmaps=!1,i.repeat.set(1/e.cols,1/e.rows),a.current+=f;const h=Math.floor(a.current*e.fps)%e.frames;if(h===o.current)return;o.current=h;const{x:p,y:m}=en(h,e.cols,e.rows);i.offset.set(p,m)}),d.jsxs("mesh",{name:s,renderOrder:n,scale:[r,l,1],children:[d.jsx("planeGeometry",{args:[1,1]}),d.jsx("meshBasicMaterial",{map:i,transparent:!0,toneMapped:!1,depthWrite:!1})]})},nn=({sheet:e,anchors:t=$t,contentAspect:n,renderOrder:s=10,name:i="spriteAnimation"})=>d.jsx(g.Suspense,{fallback:null,children:d.jsx(Y.ScreenTransform,{anchors:t,children:d.jsx(tn,{sheet:e,contentAspect:n,renderOrder:s,name:i})})}),sn=({segmentationMask:e,segmentation:t,invert:n=!1,customBackground:s,renderOrder:i=he.RENDER_LAYERS.BACKGROUND})=>{const{camera:a,size:o}=be.useThree(),c=De.useXRCameraTexture(),r=De.useXRModelNode(he.XRModel.BACKGROUND_SEGMENTATION),l=t?r==null?void 0:r.backgroundSegmentationMask:void 0,A=g.useRef(!1);g.useEffect(()=>{if(!t){A.current=!1;return}r===null&&!A.current&&(console.warn(`[VideoBackground] segmentation="${t}" set but no matching <Segmentation> component is mounted; rendering unmasked.`),A.current=!0)},[t,r]);const f=t?l:e,h=g.useMemo(()=>{if(!a.isPerspectiveCamera)return[10,10];const p=a,E=(p.position.z||5)- -1,S=p.fov*Math.PI/180,v=2*Math.tan(S/2)*E;return[v*(o.width/o.height),v]},[a,o]);return c?d.jsx("group",{position:[0,0,-1],children:n?d.jsxs(d.Fragment,{children:[d.jsxs("mesh",{position:[0,0,-.01],renderOrder:i-1,children:[d.jsx("planeGeometry",{args:h}),d.jsx("meshBasicMaterial",{map:c,depthTest:!1,depthWrite:!1,toneMapped:!1})]}),s&&f&&d.jsxs("mesh",{position:[0,0,0],renderOrder:i,children:[d.jsx("planeGeometry",{args:h}),d.jsx("meshBasicMaterial",{map:typeof s=="string"?void 0:s,color:typeof s=="string"?s:void 0,alphaMap:f,transparent:!1,alphaTest:.5,depthTest:!1,depthWrite:!1,toneMapped:!1},"inverted-mask")]})]}):d.jsxs(d.Fragment,{children:[s&&f&&d.jsxs("mesh",{position:[0,0,-.01],renderOrder:i-1,children:[d.jsx("planeGeometry",{args:h}),d.jsx("meshBasicMaterial",{map:typeof s=="string"?void 0:s,color:typeof s=="string"?s:void 0,depthTest:!1,depthWrite:!1,toneMapped:!1})]}),d.jsxs("mesh",{position:[0,0,0],renderOrder:i,children:[d.jsx("planeGeometry",{args:h}),d.jsx("meshBasicMaterial",{map:c,alphaMap:f,transparent:!1,alphaTest:f?.5:void 0,depthTest:!1,depthWrite:!1,toneMapped:!1},f?"with-mask":"no-mask")]})]})}):null},rn=["video/mp4","video/webm;codecs=vp9","video/webm;codecs=vp8","video/webm"];function an(e={}){const{audio:t=!1,mimeType:n,bitsPerSecond:s,onData:i,onStop:a,passThroughStream:o}=e,c=g.useRef(null),r=g.useRef(null),l=g.useRef([]),[A,f]=g.useState(!1),[h,p]=g.useState(!1),[m,u]=g.useState(null),[E,S]=g.useState(null),v=g.useCallback(()=>{var w;const y=[n,...rn].filter(Boolean);for(const b of y)if((w=MediaRecorder.isTypeSupported)!=null&&w.call(MediaRecorder,b))return b},[n]),I=g.useCallback(async y=>{const w=new MediaStream;if(y.getTracks().forEach(b=>w.addTrack(b)),t){let b;if(t instanceof MediaStream)b=t;else{const D=typeof t=="object"?{audio:t}:{audio:!0,video:!1};b=await navigator.mediaDevices.getUserMedia(D)}b.getAudioTracks().forEach(D=>w.addTrack(D))}if(!w.getTracks().length)throw new Error("No tracks available in combined stream.");return r.current=w,w},[t]),T=g.useCallback(async(y,w)=>{try{let b;o?(b=y,r.current=b):b=await I(y);const D=v(),k={};D&&(k.mimeType=D),s&&(k.bitsPerSecond=s);const L=new MediaRecorder(b,k);L.ondataavailable=W=>{var X;((X=W.data)==null?void 0:X.size)>0&&(l.current.push(W.data),i==null||i(W.data))},L.onstop=()=>{const W=new Blob(l.current,{type:D??"video/webm"});u(W),a==null||a(W),l.current=[]},c.current=L,L.start(w),f(!0),p(!1)}catch(b){console.error("start(stream) failed",b),S(b instanceof Error?b:new Error(String(b)))}},[I,v,s,i,a,o]),M=g.useCallback(()=>{const y=c.current;y&&y.state!=="inactive"&&y.stop(),f(!1),p(!1)},[]),B=g.useCallback(()=>{const y=c.current;(y==null?void 0:y.state)==="recording"&&(y.pause(),p(!0))},[]),z=g.useCallback(()=>{const y=c.current;(y==null?void 0:y.state)==="paused"&&(y.resume(),p(!1))},[]),R=g.useCallback(()=>{var y,w;try{(y=c.current)==null||y.stop(),c.current=null,(w=r.current)==null||w.getTracks().forEach(b=>b.stop()),r.current=null,u(null),f(!1),p(!1),l.current=[],S(null)}catch(b){console.error("clear failed",b)}},[]);return g.useEffect(()=>()=>R(),[]),{start:T,stop:M,pause:B,resume:z,clear:R,isRecording:A,isPaused:h,recordedBlob:m,error:E,getActiveStream:()=>r.current}}const on=(e,t)=>{const n=e.split(","),s=n[0].match(/:(.*?);/),i=s?s[1]:"application/octet-stream",a=atob(n[n.length-1]);let o=a.length;const c=new Uint8Array(o);for(;o--;)c[o]=a.charCodeAt(o);return new File([c],t,{type:i})},ln=4,cn=50,An=5e3,Oe=e=>new Promise(t=>{if(e.readyState>=4){t();return}let n=!1;const s=()=>{n||(n=!0,t())};e.addEventListener("canplaythrough",s,{once:!0}),e.addEventListener("error",s,{once:!0}),setTimeout(s,An)}),Pe=(e,t)=>{const n=document.createElement("audio");return n.src=e,n.loop=t,n.preload="auto",n.setAttribute("playsinline",""),n.setAttribute("webkit-playsinline",""),n.load(),n},dn=e=>{e.muted=!0,e.play().then(()=>{e.pause(),e.currentTime=0,e.muted=!1}).catch(()=>{e.muted=!1})};class _e{constructor(t={}){J(this,"sfxPoolSize");J(this,"coalesceMs");J(this,"muted",!0);J(this,"listeners",new Set);J(this,"music",null);J(this,"musicWanted",null);J(this,"pools",new Map);J(this,"lastPlayed",new Map);J(this,"ready",new Map);this.sfxPoolSize=t.sfxPoolSize??ln,this.coalesceMs=t.coalesceMs??cn}prefetchMusic(t,n=.4){this.musicWanted={url:t,volume:n};const s=`music:${t}`,i=this.ready.get(s);if(i)return i;this.music=Pe(t,!0),this.music.volume=n;const a=Oe(this.music);return this.ready.set(s,a),a}registerSound(t,n=1){const s=this.ready.get(t);if(s)return s;const i=[];for(let o=0;o<this.sfxPoolSize;o+=1){const c=Pe(t,!1);c.volume=n,c.addEventListener("ended",()=>{c.currentTime=0}),i.push(c)}this.pools.set(t,{els:i,next:0,volume:n});const a=Oe(i[0]);return this.ready.set(t,a),a}onMuteChange(t){return this.listeners.add(t),t(this.muted),()=>this.listeners.delete(t)}isMuted(){return this.muted}setMuted(t){t!==this.muted&&(this.muted=t,this.muted||this.pools.forEach(n=>n.els.forEach(dn)),this.applyMusic(),this.listeners.forEach(n=>n(this.muted)))}toggleMuted(){this.setMuted(!this.muted)}playOneShot(t,n){if(this.muted)return;const s=this.pools.get(t);if(!s)return;const i=performance.now();if(i-(this.lastPlayed.get(t)??-1/0)<this.coalesceMs)return;this.lastPlayed.set(t,i);const a=s.els.length;let o;for(let c=0;c<a;c+=1){const r=s.els[(s.next+c)%a];if(r.paused){o=r,s.next=(s.next+c+1)%a;break}}o||(o=s.els[s.next],s.next=(s.next+1)%a),o.muted=!1,o.volume=n??s.volume,o.currentTime!==0&&(o.currentTime=0),o.play().catch(()=>{})}startMusic(t,n=.4){this.musicWanted={url:t,volume:n},this.applyMusic()}stopMusic(){this.musicWanted=null,this.music&&(this.music.pause(),this.music.currentTime=0)}applyMusic(){!this.music||!this.musicWanted||(this.music.volume=this.musicWanted.volume,!this.muted&&this.music.paused&&this.music.play().catch(()=>{}),this.muted&&!this.music.paused&&this.music.pause())}}const j=new _e,un=(e,t)=>j.prefetchMusic(e,t),hn=(e,t)=>j.registerSound(e,t),fn=(e,t)=>j.startMusic(e,t),gn=()=>j.stopMusic(),pn=(e,t)=>j.playOneShot(e,t),En=e=>j.setMuted(e),mn=()=>j.toggleMuted(),vn=()=>j.isMuted(),Cn=e=>j.onMuteChange(e),Sn=()=>{const[e,t]=g.useState(j.isMuted());return g.useEffect(()=>j.onMuteChange(t),[]),e};exports.DEFAULT_SCREEN_IMAGE_SCENE_SETTINGS=je.DEFAULT_SCREEN_IMAGE_SCENE_SETTINGS;exports.DEFAULT_SCREEN_IMAGE_SETTINGS=je.DEFAULT_SCREEN_IMAGE_SETTINGS;exports.XRMediaSource=he.XRMediaSource;exports.XRModel=he.XRModel;exports.XRProvider=he.XRProvider;exports.ScreenTransform=Y.ScreenTransform;exports.XRScene=Y.XRScene;exports.useScreenRectAspect=Y.useScreenRectAspect;exports.AspectRatioContainer=nt;exports.AudioEngine=_e;exports.Panel=Ht;exports.ScreenImage=Tt;exports.ScreenSpaceUI=st;exports.ScreenText=_t;exports.SpriteAnimation=nn;exports.TextLabel=He;exports.VideoBackground=sn;exports.audio=j;exports.computeContainScale=Me;exports.dataURLtoFile=on;exports.isMuted=vn;exports.onMuteChange=Cn;exports.playOneShot=pn;exports.prefetchMusic=un;exports.registerSound=hn;exports.setMuted=En;exports.startMusic=fn;exports.stopMusic=gn;exports.toggleMuted=mn;exports.useMediaRecorder=an;exports.useMuted=Sn;
1
+ "use strict";var ae=Object.defineProperty;var ie=(t,e,r)=>e in t?ae(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var C=(t,e,r)=>ie(t,typeof e!="symbol"?e+"":e,r);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const j=require("./index-D4bLzBr6.cjs"),V=require("./contexts-BKvTIayr.cjs"),T=require("./index-DzEzkBIH.cjs"),m=require("react/jsx-runtime"),i=require("react"),P=require("three"),E=require("./renderPasses-CT5iBwtg.cjs"),J=require("@react-three/fiber"),oe=require("./renderLayers-lDtL0_43.cjs"),$=require("./selectors-2QvO5RYY.cjs"),ce=require("@react-three/drei"),I=require("./index-CEc1CAmB.cjs"),U=require("./FaceMeshRenderer-lQLhYIW-.cjs"),Q=require("./drawNormalizedCrop-B-7zU-Xw.cjs"),ue=require("./index-82aENaRq.cjs");function le(t){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const r in t)if(r!=="default"){const s=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(e,r,s.get?s:{enumerable:!0,get:()=>t[r]})}}return e.default=t,Object.freeze(e)}const de=le(P),O=(t,e,r,s)=>P.MathUtils.damp(t,e,Math.max(0,r),Math.max(0,s)),me=(t,e,r,s,n=new P.Vector2)=>n.set(O(t.x,e.x,r,s),O(t.y,e.y,r,s)),pe=(t,e,r,s,n=new P.Vector3)=>n.set(O(t.x,e.x,r,s),O(t.y,e.y,r,s),O(t.z,e.z,r,s)),he="rgba(20,40,110,0.88)",Ee=24,fe=512;function Se({color:t=he,borderColor:e,borderWidth:r=0,borderRadius:s=Ee,resolution:n=fe,aspect:c=1,opacity:o=1,name:u,overlay:a=!0,position:l,rotation:M,scale:p,visible:h}){const S=i.useRef(null),d=i.useRef(null),_=i.useMemo(()=>Te({width:Math.round(n*Math.max(c,.05)),height:Math.round(n),color:t,borderColor:e,borderWidth:r,borderRadius:s}),[t,e,r,s,n,c]);i.useEffect(()=>()=>{_.dispose()},[_]);const y=i.useRef(null),R=i.useRef(o);return R.current!==o&&(R.current=o,y.current=null,d.current&&(d.current.opacity=o)),i.useEffect(()=>{const L=S.current;if(L)return L.userData.setOpacity=D=>{y.current=D,d.current&&(d.current.opacity=D)},()=>{delete L.userData.setOpacity}},[]),m.jsxs("mesh",{ref:S,name:u,position:l,rotation:M,scale:p,visible:h,children:[m.jsx("planeGeometry",{args:[1,1]}),m.jsx("meshBasicMaterial",{ref:d,map:_,transparent:!0,opacity:o,depthTest:!a,depthWrite:!a})]})}function Te(t){const{width:e,height:r,color:s,borderColor:n,borderWidth:c,borderRadius:o}=t,u=typeof OffscreenCanvas<"u"?new OffscreenCanvas(e,r):(()=>{const p=document.createElement("canvas");return p.width=e,p.height=r,p})(),a=u.getContext("2d");a.clearRect(0,0,e,r);const l=Math.min(o,Math.min(e,r)/2);a.beginPath(),a.moveTo(l,0),a.lineTo(e-l,0),a.quadraticCurveTo(e,0,e,l),a.lineTo(e,r-l),a.quadraticCurveTo(e,r,e-l,r),a.lineTo(l,r),a.quadraticCurveTo(0,r,0,r-l),a.lineTo(0,l),a.quadraticCurveTo(0,0,l,0),a.closePath(),a.fillStyle=s,a.fill(),n&&c>0&&(a.lineWidth=c,a.strokeStyle=n,a.stroke());const M=new de.CanvasTexture(u);return M.needsUpdate=!0,M}const Re=({segmentationMask:t,segmentation:e,invert:r=!1,customBackground:s,renderOrder:n=oe.RENDER_LAYERS.BACKGROUND})=>{const{camera:c,size:o}=J.useThree(),u=$.useXRCameraTexture(),a=$.useXRModelNode(j.XRModel.BACKGROUND_SEGMENTATION),l=e?a==null?void 0:a.backgroundSegmentationMask:void 0,M=i.useRef(!1);i.useEffect(()=>{if(!e){M.current=!1;return}a===null&&!M.current&&(console.warn(`[VideoBackground] segmentation="${e}" set but no matching <Segmentation> component is mounted; rendering unmasked.`),M.current=!0)},[e,a]);const p=e?l:t,h=i.useMemo(()=>{if(!c.isPerspectiveCamera)return[10,10];const S=c,y=(S.position.z||5)- -1,R=S.fov*Math.PI/180,L=2*Math.tan(R/2)*y;return[L*(o.width/o.height),L]},[c,o]);return u?m.jsx("group",{position:[0,0,-1],children:r?m.jsxs(m.Fragment,{children:[m.jsxs("mesh",{position:[0,0,-.01],renderOrder:n-1,children:[m.jsx("planeGeometry",{args:h}),m.jsx("meshBasicMaterial",{map:u,depthTest:!1,depthWrite:!1,toneMapped:!1,side:P.DoubleSide})]}),s&&p&&m.jsxs("mesh",{position:[0,0,0],renderOrder:n,children:[m.jsx("planeGeometry",{args:h}),m.jsx("meshBasicMaterial",{map:typeof s=="string"?void 0:s,color:typeof s=="string"?s:void 0,alphaMap:p,transparent:!1,alphaTest:.5,depthTest:!1,depthWrite:!1,toneMapped:!1,side:P.DoubleSide},"inverted-mask")]})]}):m.jsxs(m.Fragment,{children:[s&&p&&m.jsxs("mesh",{position:[0,0,-.01],renderOrder:n-1,children:[m.jsx("planeGeometry",{args:h}),m.jsx("meshBasicMaterial",{map:typeof s=="string"?void 0:s,color:typeof s=="string"?s:void 0,depthTest:!1,depthWrite:!1,toneMapped:!1,side:P.DoubleSide})]}),m.jsxs("mesh",{position:[0,0,0],renderOrder:n,children:[m.jsx("planeGeometry",{args:h}),m.jsx("meshBasicMaterial",{map:u,alphaMap:p,transparent:!1,alphaTest:p?.5:void 0,depthTest:!1,depthWrite:!1,toneMapped:!1,side:P.DoubleSide},p?"with-mask":"no-mask")]})]})}):null},W=9,H=16,Me=({children:t})=>{const[e,r]=i.useState({width:0,height:0});return i.useEffect(()=>{const s=()=>{const n=document.documentElement.clientWidth,c=document.documentElement.clientHeight,o=n/c,u=W/H;let a,l;o>u?(l=c,a=l*W/H):(a=n,l=a*H/W),r({width:a,height:l})};return s(),window.addEventListener("resize",s),()=>window.removeEventListener("resize",s)},[]),m.jsx("div",{style:{width:"100vw",height:`${window.innerHeight}px`,display:"flex",alignItems:"center",justifyContent:"center",backgroundColor:"#0d0d0d"},children:m.jsx("div",{style:{width:e.width,height:e.height,position:"relative"},children:t})})},_e=({size:t=.25,...e})=>m.jsx("axesHelper",{args:[t],...e}),Ae={left:-1,right:1,top:1,bottom:-1},ge=(t,e,r)=>{const s=t%e,n=Math.floor(t/e);return{x:s/e,y:(r-1-n)/r}},xe=({sheet:t,contentAspect:e,renderOrder:r,name:s})=>{const n=ce.useTexture(t.url),c=i.useRef(0),o=i.useRef(-1),u=I.useScreenRectAspect(),[a,l]=e!=null?T.computeContainScale(u,e):[1,1];return J.useFrame((M,p)=>{n.wrapS=P.RepeatWrapping,n.wrapT=P.RepeatWrapping,n.magFilter=P.LinearFilter,n.minFilter=P.LinearFilter,n.generateMipmaps=!1,n.repeat.set(1/t.cols,1/t.rows),c.current+=p;const h=Math.floor(c.current*t.fps)%t.frames;if(h===o.current)return;o.current=h;const{x:S,y:d}=ge(h,t.cols,t.rows);n.offset.set(S,d)}),m.jsxs("mesh",{name:s,renderOrder:r,scale:[a,l,1],children:[m.jsx("planeGeometry",{args:[1,1]}),m.jsx("meshBasicMaterial",{map:n,transparent:!0,toneMapped:!1,depthWrite:!1})]})},ye=({sheet:t,anchors:e=Ae,contentAspect:r,renderOrder:s=10,name:n="spriteAnimation"})=>m.jsx(i.Suspense,{fallback:null,children:m.jsx(V.ScreenTransform,{anchors:e,children:m.jsx(xe,{sheet:t,contentAspect:r,renderOrder:s,name:n})})}),F=t=>{switch(t){case"start":return"starting";case"started":case"resume":return"recording";case"pause":return"paused";case"stop":return"stopping";case"complete":return"completed";case"fail":return"error";case"clear":return"idle"}},Ce=["video/mp4","video/webm;codecs=vp9","video/webm;codecs=vp8","video/webm"];function Pe(t={}){const{audio:e=!1,mimeType:r,bitsPerSecond:s,onData:n,onStop:c,onRecordingStart:o,onRecordingPause:u,onRecordingResume:a,onRecordingStop:l,onRecordingComplete:M,onError:p,passThroughStream:h}=t,S=i.useRef(null),d=i.useRef(null),_=i.useRef([]),[y,R]=i.useState("idle"),[L,D]=i.useState(null),[X,g]=i.useState(null),b=i.useCallback(()=>{var x;const f=[r,...Ce].filter(Boolean);for(const A of f)if((x=MediaRecorder.isTypeSupported)!=null&&x.call(MediaRecorder,A))return A},[r]),G=i.useCallback(async f=>{const x=new MediaStream;if(f.getTracks().forEach(A=>x.addTrack(A)),e){let A;if(e instanceof MediaStream)A=e;else{const w=typeof e=="object"?{audio:e}:{audio:!0,video:!1};A=await navigator.mediaDevices.getUserMedia(w)}A.getAudioTracks().forEach(w=>x.addTrack(w))}if(!x.getTracks().length)throw new Error("No tracks available in combined stream.");return d.current=x,x},[e]),te=i.useCallback(async(f,x)=>{R(F("start")),g(null),D(null);try{let A;if(h)A=h,d.current=A;else{if(!f)throw new Error("start(stream) requires a MediaStream.");A=await G(f)}const w=b(),q={};w&&(q.mimeType=w),s&&(q.bitsPerSecond=s);const k=new MediaRecorder(A,q);k.ondataavailable=v=>{var Y;((Y=v.data)==null?void 0:Y.size)>0&&(_.current.push(v.data),n==null||n(v.data))},k.onstop=()=>{const v=new Blob(_.current,{type:w??"video/webm"});D(v),c==null||c(v),M==null||M(v),_.current=[],R(F("complete"))},S.current=k,k.start(x),R(F("started")),o==null||o()}catch(A){const w=A instanceof Error?A:new Error(String(A));console.error("start(stream) failed",w),g(w),R(F("fail")),p==null||p(w)}},[G,b,s,n,c,M,o,p,h]),re=i.useCallback(()=>{const f=S.current;!f||f.state==="inactive"||(R(F("stop")),f.stop(),l==null||l())},[l]),se=i.useCallback(()=>{const f=S.current;(f==null?void 0:f.state)==="recording"&&(f.pause(),R(F("pause")),u==null||u())},[u]),ne=i.useCallback(()=>{const f=S.current;(f==null?void 0:f.state)==="paused"&&(f.resume(),R(F("resume")),a==null||a())},[a]),B=i.useCallback(()=>{var f;try{S.current&&(S.current.onstop=null,S.current.state!=="inactive"&&S.current.stop()),S.current=null,(f=d.current)==null||f.getTracks().forEach(x=>x.stop()),d.current=null,D(null),R(F("clear")),_.current=[],g(null)}catch(x){console.error("clear failed",x)}},[]);return i.useEffect(()=>()=>B(),[]),{status:y,start:te,stop:re,pause:se,resume:ne,clear:B,isRecording:y==="recording"||y==="paused",isPaused:y==="paused",recordedBlob:L,error:X,getActiveStream:()=>d.current}}const Ne=async(t,e={})=>{var r,s,n;(r=e.onCaptureStart)==null||r.call(e),await Promise.resolve();try{const c=t();return(s=e.onCaptureComplete)==null||s.call(e,c),c}catch(c){const o=c instanceof Error?c:new Error(String(c));throw(n=e.onError)==null||n.call(e,o),o}},Le=(t={})=>{const{session:e}=j.useXRContext(),{captureFrame:r=e.captureFrame,onCaptureStart:s,onCaptureComplete:n,onError:c}=t,[o,u]=i.useState("idle"),[a,l]=i.useState(null),[M,p]=i.useState(null),h=i.useCallback(async()=>{u("capturing"),l(null),p(null);try{const d=await Ne(r,{onCaptureStart:s,onCaptureComplete:n,onError:c});return l(d),u("completed"),d}catch(d){const _=d instanceof Error?d:new Error(String(d));return p(_),u("error"),null}},[r,s,n,c]),S=i.useCallback(()=>{u("idle"),l(null),p(null)},[]);return{status:o,capturePhoto:h,clear:S,dataUrl:a,error:M}},we=(t,e)=>{const r=t.split(","),s=r[0].match(/:(.*?);/),n=s?s[1]:"application/octet-stream",c=atob(r[r.length-1]);let o=c.length;const u=new Uint8Array(o);for(;o--;)u[o]=c.charCodeAt(o);return new File([u],e,{type:n})},De=4,be=50,Fe=5e3,z=t=>Math.min(1,Math.max(0,t)),Z=t=>new Promise(e=>{if(t.readyState>=4){e();return}let r=!1;const s=()=>{r||(r=!0,e())};t.addEventListener("canplaythrough",s,{once:!0}),t.addEventListener("error",s,{once:!0}),setTimeout(s,Fe)}),K=(t,e)=>{const r=document.createElement("audio");return r.src=t,r.loop=e,r.preload="auto",r.setAttribute("playsinline",""),r.setAttribute("webkit-playsinline",""),r.load(),r},Ue=t=>{t.muted=!0,t.play().then(()=>{t.pause(),t.currentTime=0,t.muted=!1}).catch(()=>{t.muted=!1})};class ee{constructor(e={}){C(this,"sfxPoolSize");C(this,"coalesceMs");C(this,"muted",!0);C(this,"listeners",new Set);C(this,"music",null);C(this,"musicUrl",null);C(this,"musicReady",null);C(this,"musicWanted",null);C(this,"pools",new Map);C(this,"lastPlayed",new Map);C(this,"ready",new Map);this.sfxPoolSize=e.sfxPoolSize??De,this.coalesceMs=e.coalesceMs??be}prefetchMusic(e,r=.4){const s=z(r);if(this.musicWanted={url:e,volume:s},this.musicUrl===e&&this.musicReady)return this.music&&(this.music.volume=s),this.musicReady;this.music&&(this.music.pause(),this.music.currentTime=0,this.music.removeAttribute("src"),this.music.load()),this.music=K(e,!0),this.musicUrl=e,this.music.volume=s;const n=Z(this.music);return this.musicReady=n,n}registerSound(e,r=1){const s=this.ready.get(e);if(s)return s;const n=z(r),c=[];for(let u=0;u<this.sfxPoolSize;u+=1){const a=K(e,!1);a.volume=n,a.addEventListener("ended",()=>{a.currentTime=0}),c.push(a)}this.pools.set(e,{els:c,next:0,volume:n});const o=Z(c[0]);return this.ready.set(e,o),o}onMuteChange(e){return this.listeners.add(e),e(this.muted),()=>this.listeners.delete(e)}isMuted(){return this.muted}setMuted(e){e!==this.muted&&(this.muted=e,this.muted||this.pools.forEach(r=>r.els.forEach(Ue)),this.applyMusic(),this.listeners.forEach(r=>r(this.muted)))}toggleMuted(){this.setMuted(!this.muted)}playOneShot(e,r){if(this.muted)return;const s=this.pools.get(e);if(!s)return;const n=performance.now();if(n-(this.lastPlayed.get(e)??-1/0)<this.coalesceMs)return;this.lastPlayed.set(e,n);const c=s.els.length;let o;for(let u=0;u<c;u+=1){const a=s.els[(s.next+u)%c];if(a.paused){o=a,s.next=(s.next+u+1)%c;break}}o||(o=s.els[s.next],s.next=(s.next+1)%c),o.muted=!1,o.volume=z(r??s.volume),o.currentTime!==0&&(o.currentTime=0),o.play().catch(()=>{})}startMusic(e,r=.4){const s=z(r);this.musicUrl!==e&&this.prefetchMusic(e,s),this.musicWanted={url:e,volume:s},this.applyMusic()}stopMusic(){this.musicWanted=null,this.music&&(this.music.pause(),this.music.currentTime=0)}applyMusic(){!this.music||!this.musicWanted||(this.music.volume=this.musicWanted.volume,!this.muted&&this.music.paused&&this.music.play().catch(()=>{}),this.muted&&!this.music.paused&&this.music.pause())}}const ve=(t,e,r)=>t==="infinite"||t==="loop"&&e<Math.max(1,Math.floor(r))?"replay":"ended",Oe=(t,e,r)=>t&&e!==r,Ie=t=>Math.min(100,Math.max(0,t))/100,Ge=i.forwardRef(function({src:e,playMode:r="once",loopCount:s=1,autoplay:n=!1,muted:c=!1,volume:o=100,preload:u="auto",onReady:a,onPlay:l,onPause:M,onEnded:p,onError:h},S){const d=i.useRef(null),_=i.useRef(0),y=i.useRef(null),R=i.useCallback(async()=>{const g=d.current;if(g)try{await g.play()}catch(b){const G=b instanceof Error?b:new Error(String(b));throw h==null||h(G),G}},[h]),L=i.useCallback(()=>{var g;return(g=d.current)==null?void 0:g.pause()},[]),D=i.useCallback(()=>{const g=d.current;g&&(g.pause(),g.currentTime=0,_.current=0)},[]);i.useImperativeHandle(S,()=>({play:R,pause:L,stop:D,get current(){return d.current}}),[L,R,D]),i.useEffect(()=>{_.current=0,y.current=null},[e]),i.useEffect(()=>{d.current&&(d.current.volume=Ie(o))},[o]),i.useEffect(()=>{Oe(n,y.current,e)&&(y.current=e,R().catch(()=>{}))},[n,e]);const X=i.useCallback(()=>{_.current+=1;const g=Math.max(1,Math.floor(s));if(ve(r,_.current,g)==="replay"){const b=d.current;b&&(b.currentTime=0,R().catch(()=>{}));return}_.current=0,p==null||p()},[s,p,R,r]);return m.jsx("audio",{ref:d,src:e,preload:u,autoPlay:!1,muted:c,loop:!1,playsInline:!0,style:{display:"none"},onCanPlayThrough:a,onPlay:l,onPause:M,onEnded:X,onError:()=>h==null?void 0:h(new Error(`Unable to load audio: ${e}`))})}),N=new ee,je=(t,e)=>N.prefetchMusic(t,e),ke=(t,e)=>N.registerSound(t,e),ze=(t,e)=>N.startMusic(t,e),Xe=()=>N.stopMusic(),qe=(t,e)=>N.playOneShot(t,e),We=t=>N.setMuted(t),He=()=>N.toggleMuted(),Ve=()=>N.isMuted(),Be=t=>N.onMuteChange(t),Ye=()=>{const[t,e]=i.useState(N.isMuted());return i.useEffect(()=>N.onMuteChange(e),[]),t};exports.XRMediaSource=j.XRMediaSource;exports.XRModel=j.XRModel;exports.XRProvider=j.XRProvider;exports.ScreenTransform=V.ScreenTransform;exports.XRScene=V.XRScene;exports.LightObject=T.LightObject;exports.LookAt=T.LookAt;exports.RenderGroupLayer=T.RenderGroupLayer;exports.SceneObjectRenderer=T.SceneObjectRenderer;exports.ScreenImage=T.ScreenImage;exports.ScreenSpaceUI=T.ScreenSpaceUI;exports.ScreenText=T.ScreenText;exports.SequentialRenderPasses=T.SequentialRenderPasses;exports.TextLabel=T.TextLabel;exports.clientToScreenPixels=T.clientToScreenPixels;exports.computeContainScale=T.computeContainScale;exports.mediaToScreenPixels=T.mediaToScreenPixels;exports.normalizedToScreenPixels=T.normalizedToScreenPixels;exports.screenPixelsToClient=T.screenPixelsToClient;exports.screenPixelsToMedia=T.screenPixelsToMedia;exports.screenPixelsToNormalized=T.screenPixelsToNormalized;exports.screenPixelsToUnits=T.screenPixelsToUnits;exports.screenPointToRay=T.screenPointToRay;exports.screenUnitsToPixels=T.screenUnitsToPixels;exports.worldToScreenPixels=T.worldToScreenPixels;exports.DEFAULT_PIXEL_SNAP_INCREMENT=E.DEFAULT_PIXEL_SNAP_INCREMENT;exports.DEFAULT_REFERENCE_PIXELS_PER_UNIT=E.DEFAULT_REFERENCE_PIXELS_PER_UNIT;exports.DEFAULT_SCREEN_GLASS=E.DEFAULT_SCREEN_GLASS;exports.DEFAULT_SCREEN_IMAGE_SCENE_SETTINGS=E.DEFAULT_SCREEN_IMAGE_SCENE_SETTINGS;exports.DEFAULT_SCREEN_IMAGE_SETTINGS=E.DEFAULT_SCREEN_IMAGE_SETTINGS;exports.DEFAULT_SCREEN_SHAPE_SETTINGS=E.DEFAULT_SCREEN_SHAPE_SETTINGS;exports.DEFAULT_SCREEN_TEXT_SCENE_SETTINGS=E.DEFAULT_SCREEN_TEXT_SCENE_SETTINGS;exports.DEFAULT_SCREEN_TEXT_SHADOW_LAYER=E.DEFAULT_SCREEN_TEXT_SHADOW_LAYER;exports.DEFAULT_SCREEN_TRANSFORM_2D=E.DEFAULT_SCREEN_TRANSFORM_2D;exports.DEFAULT_SCREEN_TRANSFORM_ROOT=E.DEFAULT_SCREEN_TRANSFORM_ROOT;exports.EXTERNAL_BACKGROUND_RENDER_LAYER=E.EXTERNAL_BACKGROUND_RENDER_LAYER;exports.MAX_RENDER_GROUP_PASSES=E.MAX_RENDER_GROUP_PASSES;exports.PinToMesh=E.PinToMesh;exports.ScreenGlassMaterial=E.ScreenGlassMaterial;exports.ScreenShape=E.ScreenShape;exports.getRenderGroupLayer=E.getRenderGroupLayer;exports.mapScreenImageSettingsToProps=E.mapScreenImageSettingsToProps;exports.mapScreenTextInnerShadowToProps=E.mapScreenTextInnerShadowToProps;exports.mapScreenTextSettingsToProps=E.mapScreenTextSettingsToProps;exports.mergeScreenShapeSettings=E.mergeScreenShapeSettings;exports.mergeScreenTransform2D=E.mergeScreenTransform2D;exports.normalizeScreenGlass=E.normalizeScreenGlass;exports.renderSequentialPasses=E.renderSequentialPasses;exports.resolveScreenTransform2D=E.resolveScreenTransform2D;exports.DEFAULT_MESH_RENDERER=I.DEFAULT_MESH_RENDERER;exports.DEFAULT_MESH_RENDERER_RENDER_STATE=I.DEFAULT_MESH_RENDERER_RENDER_STATE;exports.MeshRenderer=I.MeshRenderer;exports.normalizeMeshRendererRenderState=I.normalizeMeshRendererRenderState;exports.useScreenRectAspect=I.useScreenRectAspect;exports.DEFAULT_MATERIAL_FILL=U.DEFAULT_MATERIAL_FILL;exports.DEFAULT_SCREEN_GRADIENT=U.DEFAULT_SCREEN_GRADIENT;exports.DEFAULT_TRANSFORM_3D=U.DEFAULT_TRANSFORM_3D;exports.MaterialFill=U.MaterialFill;exports.ScreenGradientMaterial=U.ScreenGradientMaterial;exports.Transform3D=U.Transform3D;exports.createTwoStopGradient=U.createTwoStopGradient;exports.normalizeScreenGradient=U.normalizeScreenGradient;exports.drawNormalizedCrop=Q.drawNormalizedCrop;exports.resolveNormalizedCrop=Q.resolveNormalizedCrop;exports.MeshMaterial=ue.MeshMaterial;exports.AspectRatioContainer=Me;exports.AudioEngine=ee;exports.AudioPlayer=Ge;exports.Axes=_e;exports.Panel=Se;exports.SpriteAnimation=ye;exports.VideoBackground=Re;exports.audio=N;exports.dataURLtoFile=we;exports.isMuted=Ve;exports.onMuteChange=Be;exports.playOneShot=qe;exports.prefetchMusic=je;exports.registerSound=ke;exports.setMuted=We;exports.smoothNumber=O;exports.smoothVector2=me;exports.smoothVector3=pe;exports.startMusic=ze;exports.stopMusic=Xe;exports.toggleMuted=He;exports.useFrameCapture=Le;exports.useMediaRecorder=Pe;exports.useMuted=Ye;