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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (362) hide show
  1. package/GROUNDING.md +1813 -27
  2. package/dist/{DebuggerUI-CEfdddkZ.cjs → DebuggerUI-B45_Gb9d.cjs} +1 -1
  3. package/dist/{DebuggerUI-Dgop6Q6o.js → DebuggerUI-Cq28c18s.js} +1 -1
  4. package/dist/FaceMeshRenderer-6t8OsQhK.js +1195 -0
  5. package/dist/FaceMeshRenderer-lQLhYIW-.cjs +155 -0
  6. package/dist/FaceRetouch-CDrL0pXg.js +551 -0
  7. package/dist/FaceRetouch-DtNl8-4e.cjs +134 -0
  8. package/dist/audio/AudioEngine.d.ts +3 -1
  9. package/dist/audio/AudioPlayer.d.ts +29 -0
  10. package/dist/audio/AudioPlayerLogic.d.ts +4 -0
  11. package/dist/audio/index.d.ts +2 -0
  12. package/dist/components/Axes/index.d.ts +6 -0
  13. package/dist/components/FaceMesh/FaceMeshRenderer.d.ts +17 -0
  14. package/dist/components/FaceMesh/canonical/CanonicalFaceMeshRenderer.d.ts +22 -1
  15. package/dist/components/FaceMesh/canonical/FaceMeshMaterial.d.ts +25 -0
  16. package/dist/components/FaceMesh/canonical/assets.d.ts +3 -0
  17. package/dist/components/FaceMesh/canonical/geometryGroups.d.ts +9 -0
  18. package/dist/components/FaceMesh/canonical/parseCanonicalFaceModel.d.ts +2 -0
  19. package/dist/components/FaceMesh/canonical/shaders.d.ts +2 -0
  20. package/dist/components/FaceMesh/deform.d.ts +3 -0
  21. package/dist/components/FaceMesh/index.d.ts +5 -0
  22. package/dist/components/FaceMesh/material/defaults.d.ts +74 -0
  23. package/dist/components/FaceMesh/material/index.d.ts +1 -0
  24. package/dist/components/FaceMesh/material/options.d.ts +5 -1
  25. package/dist/components/FaceMesh/material/support.d.ts +7 -2
  26. package/dist/components/FaceMesh/material/textures.d.ts +4 -0
  27. package/dist/components/FaceMesh/material/types.d.ts +4 -2
  28. package/dist/components/FaceRetouch/Background.d.ts +9 -5
  29. package/dist/components/FaceRetouch/FaceRetouch.d.ts +47 -0
  30. package/dist/components/FaceRetouch/index.d.ts +2 -6
  31. package/dist/components/FaceRetouch/landmarkMask.d.ts +4 -6
  32. package/dist/components/FaceRetouch/useFaceRetouchMask.d.ts +4 -7
  33. package/dist/components/FaceTracker/index.d.ts +5 -3
  34. package/dist/components/FaceWarp3D/FaceWarp3DHead.d.ts +15 -0
  35. package/dist/components/FaceWarp3D/defaults.d.ts +37 -0
  36. package/dist/components/FaceWarp3D/index.d.ts +3 -0
  37. package/dist/components/FaceWarp3D/warp.d.ts +13 -0
  38. package/dist/components/HandJoints2D/index.d.ts +6 -0
  39. package/dist/components/HandTracker/index.d.ts +2 -2
  40. package/dist/components/HandTracking2D/HandVisual.d.ts +12 -0
  41. package/dist/components/HandTracking2D/index.d.ts +5 -0
  42. package/dist/components/HandTracking2DController/index.d.ts +5 -0
  43. package/dist/components/HandTracking3D/index.d.ts +6 -0
  44. package/dist/components/LightObject/index.d.ts +20 -0
  45. package/dist/components/LookAt/index.d.ts +23 -0
  46. package/dist/components/MeshRenderer/index.d.ts +58 -0
  47. package/dist/components/PerspectiveCamera/index.d.ts +2 -8
  48. package/dist/components/PinToMesh/index.d.ts +47 -0
  49. package/dist/components/RenderGroupLayer/index.d.ts +6 -0
  50. package/dist/components/SceneObjectRenderer/index.d.ts +16 -0
  51. package/dist/components/Screen2D/ScreenTransformFrame.d.ts +11 -0
  52. package/dist/components/Screen2D/ScreenTransformHelpers.d.ts +19 -0
  53. package/dist/components/Screen2D/ScreenTransformInteraction.d.ts +18 -0
  54. package/dist/components/Screen2D/index.d.ts +5 -0
  55. package/dist/components/ScreenGlass/defaults.d.ts +3 -0
  56. package/dist/components/ScreenGlass/index.d.ts +5 -0
  57. package/dist/components/ScreenGlass/shaders.d.ts +2 -0
  58. package/dist/components/ScreenGlass/types.d.ts +10 -0
  59. package/dist/components/ScreenGradient/defaults.d.ts +5 -0
  60. package/dist/components/ScreenGradient/index.d.ts +5 -0
  61. package/dist/components/ScreenGradient/shaders.d.ts +2 -0
  62. package/dist/components/ScreenGradient/types.d.ts +19 -0
  63. package/dist/components/ScreenImage/ScreenImage.d.ts +4 -0
  64. package/dist/components/ScreenImage/components/DynamicTextureSync.d.ts +9 -0
  65. package/dist/components/ScreenImage/components/ScreenImageBody.d.ts +9 -0
  66. package/dist/components/ScreenImage/components/ScreenImageFrame.d.ts +9 -0
  67. package/dist/components/ScreenImage/components/ScreenImageTransformFrame.d.ts +9 -0
  68. package/dist/components/ScreenImage/fit.d.ts +52 -0
  69. package/dist/components/ScreenImage/index.d.ts +8 -0
  70. package/dist/components/ScreenImage/materials/ScreenImageBlendMaterial.d.ts +9 -0
  71. package/dist/components/ScreenImage/materials/ScreenImageMatcap.d.ts +3 -0
  72. package/dist/components/ScreenImage/source.d.ts +16 -0
  73. package/dist/components/ScreenImage/types.d.ts +37 -0
  74. package/dist/components/ScreenImage/utils/ScreenImageConstants.d.ts +9 -0
  75. package/dist/components/ScreenImage/utils/ScreenImageHelpers.d.ts +4 -0
  76. package/dist/components/ScreenShape/geometry.d.ts +5 -0
  77. package/dist/components/ScreenShape/index.d.ts +5 -0
  78. package/dist/components/ScreenShape/types.d.ts +41 -0
  79. package/dist/components/ScreenSpaceUI/ScreenTransformGuide.d.ts +15 -0
  80. package/dist/components/ScreenSpaceUI/ScreenTransformOverlayGuide.d.ts +9 -0
  81. package/dist/components/ScreenSpaceUI/index.d.ts +2 -0
  82. package/dist/components/ScreenText/components/ScreenTextBody.d.ts +2 -0
  83. package/dist/components/ScreenText/components/ScreenTextTransformFrame.d.ts +9 -0
  84. package/dist/components/ScreenText/constants.d.ts +5 -0
  85. package/dist/components/ScreenText/index.d.ts +6 -0
  86. package/dist/components/ScreenText/types.d.ts +31 -0
  87. package/dist/components/ScreenText/utils/ScreenTextHelpers.d.ts +14 -0
  88. package/dist/components/ScreenText/utils/ScreenTextMappings.d.ts +17 -0
  89. package/dist/components/SequentialRenderPasses/index.d.ts +6 -0
  90. package/dist/components/TextLabel/TextLabel.d.ts +5 -0
  91. package/dist/components/TextLabel/alignment.d.ts +4 -0
  92. package/dist/components/TextLabel/bend.d.ts +9 -0
  93. package/dist/components/TextLabel/canvas/buildTextLabelTexture.d.ts +4 -0
  94. package/dist/components/TextLabel/canvas/canvasTypography.d.ts +13 -0
  95. package/dist/components/TextLabel/canvas/drawBackground.d.ts +21 -0
  96. package/dist/components/TextLabel/canvas/drawEffects.d.ts +34 -0
  97. package/dist/components/TextLabel/canvas/drawText.d.ts +19 -0
  98. package/dist/components/TextLabel/components/TextLabelMesh.d.ts +13 -0
  99. package/dist/components/TextLabel/constants.d.ts +2 -0
  100. package/dist/components/TextLabel/hooks/useTextLabelTexture.d.ts +7 -0
  101. package/dist/components/TextLabel/index.d.ts +2 -62
  102. package/dist/components/TextLabel/layout/measurement.d.ts +8 -0
  103. package/dist/components/TextLabel/layout/resolveTextLayout.d.ts +25 -0
  104. package/dist/components/TextLabel/layout/wrapText.d.ts +6 -0
  105. package/dist/components/TextLabel/types.d.ts +227 -0
  106. package/dist/components/TrackingAnchor/index.d.ts +18 -2
  107. package/dist/components/Transform3D/index.d.ts +30 -0
  108. package/dist/components/XRMediaSurface/index.d.ts +6 -6
  109. package/dist/components/XRScene/index.d.ts +14 -3
  110. package/dist/components/XRViewport/XRViewport.d.ts +11 -0
  111. package/dist/components/XRViewport/components/HiddenMedia.d.ts +7 -0
  112. package/dist/components/XRViewport/components/MediaAssetPicker.d.ts +8 -0
  113. package/dist/components/XRViewport/components/MediaControlStack.d.ts +13 -0
  114. package/dist/components/XRViewport/components/XRViewportLayers.d.ts +30 -0
  115. package/dist/components/XRViewport/constants.d.ts +24 -0
  116. package/dist/components/XRViewport/contexts.d.ts +6 -0
  117. package/dist/components/XRViewport/hooks/useViewportExternalFaces.d.ts +13 -0
  118. package/dist/components/XRViewport/hooks/useViewportMediaSource.d.ts +16 -0
  119. package/dist/components/XRViewport/hooks/useViewportMediaTexture.d.ts +10 -0
  120. package/dist/components/XRViewport/hooks/useViewportPipeline.d.ts +41 -0
  121. package/dist/components/XRViewport/hooks/useViewportRenderState.d.ts +47 -0
  122. package/dist/components/XRViewport/index.d.ts +3 -101
  123. package/dist/components/XRViewport/layout.d.ts +16 -0
  124. package/dist/components/XRViewport/slots.d.ts +16 -0
  125. package/dist/components/XRViewport/types.d.ts +89 -0
  126. package/dist/components/XRViewport/useViewportSize.d.ts +3 -0
  127. package/dist/components/index.d.ts +19 -0
  128. package/dist/contexts-BKvTIayr.cjs +1 -0
  129. package/dist/contexts-Bk5zz_VR.js +214 -0
  130. package/dist/debug-ui/component-editor/index.d.ts +19 -0
  131. package/dist/debug-ui/default-setting/index.d.ts +37 -0
  132. package/dist/debug-ui/default-setting.cjs +21 -0
  133. package/dist/debug-ui/default-setting.js +777 -0
  134. package/dist/debug-ui/face-mesh-renderer-settings/index.d.ts +8 -0
  135. package/dist/debug-ui/face-retouch/index.d.ts +11 -0
  136. package/dist/debug-ui/face-warp-3d/index.d.ts +6 -0
  137. package/dist/debug-ui/hand-joints-2d/index.d.ts +6 -0
  138. package/dist/debug-ui/hand-tracking-2d/index.d.ts +6 -0
  139. package/dist/debug-ui/hand-tracking-2d-controller/index.d.ts +6 -0
  140. package/dist/debug-ui/hand-tracking-3d/index.d.ts +6 -0
  141. package/dist/debug-ui/hierarchy-panel/index.d.ts +29 -0
  142. package/dist/debug-ui/index.d.ts +46 -0
  143. package/dist/debug-ui/layer-panel/index.d.ts +18 -0
  144. package/dist/debug-ui/media-source/MediaSourceSwitcher.d.ts +10 -0
  145. package/dist/debug-ui/media-source/index.d.ts +6 -0
  146. package/dist/debug-ui/media-source/media-preset.d.ts +9 -0
  147. package/dist/debug-ui/media-source/session.d.ts +12 -0
  148. package/dist/debug-ui/media-source.cjs +1 -0
  149. package/dist/debug-ui/media-source.js +9 -0
  150. package/dist/debug-ui/mesh-renderer-settings/index.d.ts +6 -0
  151. package/dist/debug-ui/object-inspector-panel/index.d.ts +25 -0
  152. package/dist/debug-ui/pin-to-mesh-settings/index.d.ts +10 -0
  153. package/dist/debug-ui/scene-editor/context.d.ts +38 -0
  154. package/dist/debug-ui/scene-editor/hierarchy-panel.d.ts +9 -0
  155. package/dist/debug-ui/scene-editor/index.d.ts +11 -0
  156. package/dist/debug-ui/scene-editor/inspector-panel.d.ts +7 -0
  157. package/dist/debug-ui/scene-editor/store-utils.d.ts +2 -0
  158. package/dist/debug-ui/scene-editor/viewport-toolbar.d.ts +4 -0
  159. package/dist/debug-ui/scene-editor/viewport.d.ts +21 -0
  160. package/dist/debug-ui/screen-glass-settings/index.d.ts +6 -0
  161. package/dist/debug-ui/screen-gradient-settings/GradientStopsEditor.d.ts +5 -0
  162. package/dist/debug-ui/screen-gradient-settings/index.d.ts +6 -0
  163. package/dist/debug-ui/screen-gradient-settings/styles.d.ts +3 -0
  164. package/dist/debug-ui/screen-image-settings/index.d.ts +9 -0
  165. package/dist/debug-ui/screen-shape-settings/index.d.ts +6 -0
  166. package/dist/debug-ui/screen-text-settings/NumberField.d.ts +9 -0
  167. package/dist/debug-ui/screen-text-settings/ScreenTextSettingsPanel.d.ts +3 -0
  168. package/dist/debug-ui/screen-text-settings/controls/NestedSection.d.ts +7 -0
  169. package/dist/debug-ui/screen-text-settings/controls/Section.d.ts +8 -0
  170. package/dist/debug-ui/screen-text-settings/controls/icons.d.ts +4 -0
  171. package/dist/debug-ui/screen-text-settings/index.d.ts +2 -0
  172. package/dist/debug-ui/screen-text-settings/sections/BackgroundSection.d.ts +8 -0
  173. package/dist/debug-ui/screen-text-settings/sections/ContentSection.d.ts +5 -0
  174. package/dist/debug-ui/screen-text-settings/sections/EffectsSection.d.ts +25 -0
  175. package/dist/debug-ui/screen-text-settings/sections/StyleSection.d.ts +5 -0
  176. package/dist/debug-ui/screen-text-settings/sections/TransformSection.d.ts +5 -0
  177. package/dist/debug-ui/screen-text-settings/sections/background/BackgroundFillControls.d.ts +2 -0
  178. package/dist/debug-ui/screen-text-settings/sections/background/BackgroundSizeControls.d.ts +2 -0
  179. package/dist/debug-ui/screen-text-settings/sections/background/BackgroundStrokeControls.d.ts +2 -0
  180. package/dist/debug-ui/screen-text-settings/sections/background/types.d.ts +7 -0
  181. package/dist/debug-ui/screen-text-settings/sections/effects/BendEffectSection.d.ts +4 -0
  182. package/dist/debug-ui/screen-text-settings/sections/effects/EffectChrome.d.ts +21 -0
  183. package/dist/debug-ui/screen-text-settings/sections/effects/GlowEffectSection.d.ts +4 -0
  184. package/dist/debug-ui/screen-text-settings/sections/effects/InnerShadowEffectSection.d.ts +4 -0
  185. package/dist/debug-ui/screen-text-settings/sections/effects/OutlineEffectSection.d.ts +4 -0
  186. package/dist/debug-ui/screen-text-settings/sections/effects/ShadowEffectSection.d.ts +4 -0
  187. package/dist/debug-ui/screen-text-settings/sections/effects/types.d.ts +14 -0
  188. package/dist/debug-ui/screen-text-settings/settings.d.ts +90 -0
  189. package/dist/debug-ui/screen-text-settings/styles.d.ts +26 -0
  190. package/dist/debug-ui/screen-text-settings/transform.d.ts +6 -0
  191. package/dist/debug-ui/screen-text-settings/types.d.ts +9 -0
  192. package/dist/debug-ui/settings-panel/index.d.ts +38 -0
  193. package/dist/debug-ui/shared/MaterialSection.d.ts +13 -0
  194. package/dist/debug-ui/shared/ScreenTransformSection.d.ts +32 -0
  195. package/dist/debug-ui/transform-3d-settings/index.d.ts +11 -0
  196. package/dist/debug-ui.cjs +10 -0
  197. package/dist/debug-ui.js +8861 -0
  198. package/dist/drawNormalizedCrop-B-7zU-Xw.cjs +1 -0
  199. package/dist/drawNormalizedCrop-CRdIDyl1.js +44 -0
  200. package/dist/entries/all.d.ts +1 -0
  201. package/dist/entries/core.d.ts +55 -4
  202. package/dist/entries/face-effects.d.ts +12 -8
  203. package/dist/entries/internal.d.ts +1 -1
  204. package/dist/entries/low-level.d.ts +21 -4
  205. package/dist/entries/scene-object.d.ts +10 -0
  206. package/dist/entries/tracking.d.ts +25 -2
  207. package/dist/face-action/index.d.ts +34 -0
  208. package/dist/face-attribute-expression/index.d.ts +10 -0
  209. package/dist/face-effects.cjs +1 -252
  210. package/dist/face-effects.js +1404 -2613
  211. package/dist/face-info/blendshapes.d.ts +3 -0
  212. package/dist/face-info/derive.d.ts +8 -0
  213. package/dist/face-info/drawFaceCrop.d.ts +10 -0
  214. package/dist/face-info/getFaceInfo.d.ts +8 -0
  215. package/dist/face-info/index.d.ts +8 -0
  216. package/dist/face-info/landmarks.d.ts +21 -0
  217. package/dist/face-info/types.d.ts +52 -0
  218. package/dist/getFaceInfo-CyPAKh3h.cjs +1 -0
  219. package/dist/getFaceInfo-hUKMLFcr.js +118 -0
  220. package/dist/hand/handJoints2d.d.ts +49 -0
  221. package/dist/hand/handTracking2d.d.ts +33 -0
  222. package/dist/hand/handTracking2dController.d.ts +65 -0
  223. package/dist/hand/handTracking3d.d.ts +52 -0
  224. package/dist/hooks/faceResults.d.ts +1 -1
  225. package/dist/hooks/useCalibrationFaceTracker.d.ts +1 -1
  226. package/dist/hooks/useFaceAction.d.ts +3 -0
  227. package/dist/hooks/useFaceAttributeExpression.d.ts +16 -0
  228. package/dist/hooks/useFaceDetection.d.ts +18 -0
  229. package/dist/hooks/useFaceInfo.d.ts +7 -0
  230. package/dist/hooks/useFaceInfos.d.ts +15 -0
  231. package/dist/hooks/useFaceResultReader.d.ts +10 -0
  232. package/dist/hooks/useFrameCapture.d.ts +18 -0
  233. package/dist/hooks/useMediaRecorder.d.ts +14 -2
  234. package/dist/hooks/useOwnedTexture.d.ts +6 -0
  235. package/dist/hooks/useTrackerContext.d.ts +2 -2
  236. package/dist/hooks/useXRSession/facade.d.ts +3 -0
  237. package/dist/hooks/useXRSession/registry.d.ts +9 -0
  238. package/dist/index-82aENaRq.cjs +1 -0
  239. package/dist/{index-BD-JWMjE.js → index-BgQAX8rs.js} +198 -134
  240. package/dist/index-CEc1CAmB.cjs +1 -0
  241. package/dist/index-CTHeBQOs.js +178 -0
  242. package/dist/index-D4bLzBr6.cjs +1 -0
  243. package/dist/index-DSpzjuqd.cjs +1 -0
  244. package/dist/index-Di70KWuY.js +2049 -0
  245. package/dist/index-DzEzkBIH.cjs +17 -0
  246. package/dist/{index-CYMj26Ej.js → index-JygePOwo.js} +565 -498
  247. package/dist/index-UC0Ux38E.js +111 -0
  248. package/dist/{internal-KOKJDxCG.js → internal-DuMPpcbp.js} +86 -80
  249. package/dist/internal-i2JkM85N.cjs +1 -0
  250. package/dist/internal.cjs +1 -1
  251. package/dist/internal.js +2 -2
  252. package/dist/low-level.cjs +1 -1
  253. package/dist/low-level.js +959 -632
  254. package/dist/main.cjs +1 -1
  255. package/dist/main.js +556 -455
  256. package/dist/material/MaterialFill.d.ts +20 -0
  257. package/dist/material/MeshMaterial.d.ts +14 -0
  258. package/dist/material/index.d.ts +2 -0
  259. package/dist/models/Body/index.d.ts +1 -1
  260. package/dist/models/Face/index.d.ts +1 -0
  261. package/dist/models/Face/rotation.d.ts +3 -0
  262. package/dist/models/Hand/HandTracking.d.ts +2 -0
  263. package/dist/render/layerStack.d.ts +29 -0
  264. package/dist/render/renderGroups.d.ts +47 -0
  265. package/dist/render/renderPasses.d.ts +18 -0
  266. package/dist/renderGroups-C9QJrAXu.js +152 -0
  267. package/dist/renderGroups-Dvm1J4lW.cjs +1 -0
  268. package/dist/renderLayers-lDtL0_43.cjs +1 -0
  269. package/dist/renderLayers-zrK2pv5O.js +13 -0
  270. package/dist/renderPasses-CT5iBwtg.cjs +21 -0
  271. package/dist/renderPasses-CjgG_6kQ.js +1500 -0
  272. package/dist/scene-object/index.d.ts +146 -0
  273. package/dist/scene-object/runtimeRegistry.d.ts +14 -0
  274. package/dist/scene-object.cjs +1 -0
  275. package/dist/scene-object.js +40 -0
  276. package/dist/screen-image/screenImagePresets.d.ts +13 -0
  277. package/dist/screen-image/screenImageSettings.d.ts +57 -0
  278. package/dist/screen-text/screenTextPresets.d.ts +6 -0
  279. package/dist/screen-text/screenTextSettings.d.ts +147 -0
  280. package/dist/screen2d/coordinates.d.ts +87 -0
  281. package/dist/screen2d/index.d.ts +7 -0
  282. package/dist/screen2d/material-runtime.d.ts +32 -0
  283. package/dist/screen2d/screenTransform.d.ts +47 -0
  284. package/dist/screen2d/smoothing.d.ts +5 -0
  285. package/dist/screen2d/texture.d.ts +10 -0
  286. package/dist/screen2d/transform.d.ts +25 -0
  287. package/dist/screen2d/types.d.ts +90 -0
  288. package/dist/{selectors-Bub0o3qy.cjs → selectors-2QvO5RYY.cjs} +1 -1
  289. package/dist/{selectors-BHO6TnoC.js → selectors-Dw3C-gSk.js} +5 -5
  290. package/dist/services/MetricsCollector/index.d.ts +7 -1
  291. package/dist/services/MetricsCollector/utils.d.ts +1 -1
  292. package/dist/session-BChR4TgK.cjs +31 -0
  293. package/dist/session-C1StwN0f.js +363 -0
  294. package/dist/texture/animatedTexture.d.ts +61 -0
  295. package/dist/texture/animationMath.d.ts +8 -0
  296. package/dist/texture/sourceResolver.d.ts +30 -0
  297. package/dist/tracking.cjs +1 -1
  298. package/dist/tracking.js +582 -298
  299. package/dist/types/face.d.ts +1 -13
  300. package/dist/types/hand-tracking.d.ts +8 -0
  301. package/dist/types/index.d.ts +0 -1
  302. package/dist/types/nodes.d.ts +4 -1
  303. package/dist/types/session.d.ts +2 -0
  304. package/dist/types/tracking.d.ts +8 -2
  305. package/dist/types/util-types.d.ts +1 -1
  306. package/dist/useFaceInfo-C-WfMlYp.cjs +1 -0
  307. package/dist/useFaceInfo-CwsHZedC.js +62 -0
  308. package/dist/useFaceResults-CkFc1egZ.js +19 -0
  309. package/dist/useFaceResults-VcFdOUFV.cjs +1 -0
  310. package/dist/utils/drawNormalizedCrop.d.ts +22 -0
  311. package/dist/utils/integrity.d.ts +4 -25
  312. package/dist/utils/landmarkBounds.d.ts +1 -1
  313. package/dist/utils/logger.d.ts +2 -2
  314. package/dist/x-Co8jPhP0.js +127 -0
  315. package/dist/x-KC8E4Gaj.cjs +41 -0
  316. package/docs/MIGRATION_GUIDE.md +589 -0
  317. package/docs/SDK_DOCUMENTATION.md +1155 -0
  318. package/docs/api/audio.mdx +36 -0
  319. package/docs/api/behavior-components.mdx +164 -0
  320. package/docs/api/capture-recording.mdx +103 -0
  321. package/docs/api/debug-ui-scene-editor.mdx +249 -0
  322. package/docs/api/face-actions.mdx +104 -0
  323. package/docs/api/face-attribute-expression.mdx +87 -0
  324. package/docs/api/face-binding-anchors.mdx +53 -0
  325. package/docs/api/face-effects.mdx +19 -0
  326. package/docs/api/face-info.mdx +112 -0
  327. package/docs/api/face-mesh.mdx +98 -0
  328. package/docs/api/face-painting.mdx +33 -0
  329. package/docs/api/face-retouching.mdx +73 -0
  330. package/docs/api/material-render-state.mdx +132 -0
  331. package/docs/api/runtime-3d.mdx +311 -0
  332. package/docs/api/scene-object-store.mdx +213 -0
  333. package/docs/api/screen-image.mdx +41 -0
  334. package/docs/api/screen-shape.mdx +64 -0
  335. package/docs/api/screen-space-coordinates.mdx +41 -0
  336. package/docs/api/screen-text.mdx +39 -0
  337. package/docs/api/texture-sources.mdx +55 -0
  338. package/docs/api/trackers.mdx +46 -0
  339. package/docs/docs.json +70 -0
  340. package/docs/examples/scene-object-recipes.mdx +194 -0
  341. package/docs/guides/harness-debug-ui.mdx +139 -0
  342. package/docs/inspector/hierarchy-panel.mdx +51 -0
  343. package/docs/inspector/object-inspector-panel.mdx +51 -0
  344. package/docs/introduction.mdx +121 -0
  345. package/docs/scene-objects/overview.mdx +127 -0
  346. package/docs/scene-objects/render-groups.mdx +77 -0
  347. package/docs/scene-objects/runtime-rendering.mdx +75 -0
  348. package/docs/texture-api-consumer.md +58 -0
  349. package/package.json +55 -7
  350. package/dist/components/FaceRetouch/retouchRegions.d.ts +0 -23
  351. package/dist/components/FaceRetouch/useFaceRetouchRegions.d.ts +0 -12
  352. package/dist/index-B5J4gzn2.cjs +0 -1
  353. package/dist/index-BVBVg96G.cjs +0 -1
  354. package/dist/index-DtwHElmG.js +0 -157
  355. package/dist/index-PtFmD6B8.cjs +0 -1
  356. package/dist/internal-DH5d1Xnq.cjs +0 -1
  357. package/dist/modules/XRClient/index.d.ts +0 -9
  358. package/dist/modules/index.d.ts +0 -1
  359. package/dist/services/ApiService.d.ts +0 -12
  360. package/dist/types/client.d.ts +0 -3
  361. package/dist/useFaceResults-cpsSmKKc.js +0 -81
  362. package/dist/useFaceResults-hVUJYSEY.cjs +0 -1
@@ -0,0 +1,20 @@
1
+ import { ScreenGradientSettings } from '../components/ScreenGradient';
2
+ import * as THREE from "three";
3
+ export type MaterialFillSource = "solid" | "gradient" | "texture";
4
+ export type MaterialFillSettings = {
5
+ source: MaterialFillSource;
6
+ color: string;
7
+ opacity: number;
8
+ textureUrl?: string;
9
+ gradient?: ScreenGradientSettings;
10
+ };
11
+ export declare const TRANSPARENT_TEXTURE_DATA_URL = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO2YpZcAAAAASUVORK5CYII=";
12
+ export declare const DEFAULT_MATERIAL_FILL: MaterialFillSettings;
13
+ export declare const createTwoStopGradient: (color: string) => ScreenGradientSettings;
14
+ export declare const MaterialFill: ({ depthTest, depthWrite, settings, side, toneMapped, }: {
15
+ settings: MaterialFillSettings;
16
+ side?: THREE.Side;
17
+ depthTest?: boolean;
18
+ depthWrite?: boolean;
19
+ toneMapped?: boolean;
20
+ }) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,14 @@
1
+ import { ReactNode } from 'react';
2
+ export type MeshMaterialSettings = {
3
+ type: "standard" | "basic";
4
+ color: string;
5
+ opacity: number;
6
+ wireframe: boolean;
7
+ roughness: number;
8
+ metalness: number;
9
+ };
10
+ export type MeshMaterialProps = {
11
+ settings: MeshMaterialSettings;
12
+ materialProps: Record<string, unknown>;
13
+ };
14
+ export declare const MeshMaterial: ({ materialProps, settings }: MeshMaterialProps) => ReactNode;
@@ -0,0 +1,2 @@
1
+ export { DEFAULT_MATERIAL_FILL, MaterialFill, TRANSPARENT_TEXTURE_DATA_URL, createTwoStopGradient, type MaterialFillSettings, type MaterialFillSource, } from './MaterialFill';
2
+ export { MeshMaterial, type MeshMaterialProps, type MeshMaterialSettings } from './MeshMaterial';
@@ -16,7 +16,7 @@ export declare class BodyTrackingModel extends BaseXRModel {
16
16
  dispose(): void;
17
17
  private getLandmarks2D;
18
18
  initialize(options?: BodyModelOptions): Promise<void>;
19
- run({ sourceCanvas }: RunModelParams): Promise<void>;
19
+ run({ sourceCanvas, targetFps }: RunModelParams): Promise<void>;
20
20
  getModelNode(): XRModelNodeBodyTracking;
21
21
  getPerformanceData(): Promise<PerformanceData>;
22
22
  }
@@ -25,6 +25,7 @@ export declare class FaceTrackingModel extends BaseXRModel {
25
25
  private extractAndUpdateFaceData;
26
26
  private processFaceTracking;
27
27
  resume(): void;
28
+ dispose(): void;
28
29
  private getFace;
29
30
  private getDetectionResults;
30
31
  private getRawFaceTrackingData;
@@ -0,0 +1,3 @@
1
+ import { Euler, Vector3 } from 'three';
2
+ /** Writes the SDK convention: up/left positive, down/right negative. */
3
+ export declare const writeFaceRotation: (euler: Euler, target: Vector3) => Vector3;
@@ -5,8 +5,10 @@ import { BaseXRModel } from '../Base';
5
5
  export declare class HandTrackingModel extends BaseXRModel {
6
6
  private landmarker;
7
7
  private processingTime;
8
+ private hands;
8
9
  private coordinates;
9
10
  private gesture;
11
+ private handedness;
10
12
  private sourceCanvas;
11
13
  private readonly downscaler;
12
14
  constructor();
@@ -0,0 +1,29 @@
1
+ export type LayerDomain = "group" | "screen2d" | "scene3d" | "webgl" | "shader" | "custom";
2
+ export type LayerNode = {
3
+ id: string;
4
+ domain: LayerDomain;
5
+ type: string;
6
+ label: string;
7
+ enabled: boolean;
8
+ visible: boolean;
9
+ locked?: boolean;
10
+ expanded?: boolean;
11
+ renderOrder: number;
12
+ children?: LayerNode[];
13
+ meta?: Record<string, unknown>;
14
+ };
15
+ export declare const LAYER_STACK_BASE_RENDER_ORDER = 1000;
16
+ export declare function normalizeLayerStack(layers: LayerNode[], baseRenderOrder?: number): {
17
+ renderOrder: number;
18
+ id: string;
19
+ domain: LayerDomain;
20
+ type: string;
21
+ label: string;
22
+ enabled: boolean;
23
+ visible: boolean;
24
+ locked?: boolean;
25
+ expanded?: boolean;
26
+ children?: LayerNode[];
27
+ meta?: Record<string, unknown>;
28
+ }[];
29
+ export declare function moveLayerNode(layers: LayerNode[], activeId: string, overId: string): LayerNode[];
@@ -0,0 +1,47 @@
1
+ import { SceneComponent, SceneObject, SceneObjectId, SceneObjectStore } from '../scene-object';
2
+ export type RenderGroupId = string;
3
+ export type RenderGroupDomain = "background" | "scene3d" | "tracking" | "screen2d" | "post";
4
+ export type RenderMode = "background" | "depth3d" | "tracking" | "screenOverlay" | "post";
5
+ export type RenderGroup = {
6
+ id: RenderGroupId;
7
+ name: string;
8
+ domain: RenderGroupDomain;
9
+ enabled: boolean;
10
+ locked?: boolean;
11
+ objectIds: SceneObjectId[];
12
+ };
13
+ export type RenderGroupSceneObjectStore = SceneObjectStore & {
14
+ renderGroups: Record<RenderGroupId, RenderGroup>;
15
+ renderGroupOrder: RenderGroupId[];
16
+ };
17
+ export type RenderGroupPolicy = {
18
+ domain: RenderGroupDomain;
19
+ accepts: (components: SceneComponent[]) => boolean;
20
+ defaultFor: (components: SceneComponent[]) => boolean;
21
+ renderMode: RenderMode;
22
+ };
23
+ export type RenderPlanEntry = {
24
+ groupId: RenderGroupId;
25
+ groupIndex: number;
26
+ objectId: SceneObjectId;
27
+ objectIndex: number;
28
+ renderMode: RenderMode;
29
+ renderOrder: number;
30
+ renderLayer: number;
31
+ };
32
+ export declare const DEFAULT_RENDER_GROUP_IDS: {
33
+ readonly background: "background";
34
+ readonly scene3d: "general";
35
+ readonly tracking: "ar-tracking";
36
+ readonly screen2d: "2d-foreground";
37
+ readonly post: "post-effects";
38
+ };
39
+ export declare const RENDER_GROUP_POLICIES: Record<RenderGroupDomain, RenderGroupPolicy>;
40
+ export declare const getObjectComponents: (store: SceneObjectStore, object: SceneObject) => SceneComponent[];
41
+ export declare const getDefaultRenderGroupId: (components: SceneComponent[]) => RenderGroupId;
42
+ export declare const validateGroupCompatibility: (store: RenderGroupSceneObjectStore, objectId: SceneObjectId, groupId: RenderGroupId) => boolean;
43
+ export declare const reorderRenderGroup: <TStore extends RenderGroupSceneObjectStore>(store: TStore, groupId: RenderGroupId, nextIndex: number) => TStore;
44
+ export declare const reorderObjectWithinGroup: <TStore extends RenderGroupSceneObjectStore>(store: TStore, groupId: RenderGroupId, objectId: SceneObjectId, nextIndex: number) => TStore;
45
+ export declare const moveObjectToGroup: <TStore extends RenderGroupSceneObjectStore>(store: TStore, objectId: SceneObjectId, targetGroupId: RenderGroupId, nextIndex?: number) => TStore;
46
+ export declare const migrateToRenderGroups: <TStore extends SceneObjectStore>(store: TStore, objectOrder?: SceneObjectId[]) => TStore & RenderGroupSceneObjectStore;
47
+ export declare const createRenderPlan: (store: RenderGroupSceneObjectStore, bandSize?: number) => RenderPlanEntry[];
@@ -0,0 +1,18 @@
1
+ import { Camera, Scene, WebGLRenderer } from 'three';
2
+ export declare const MAX_RENDER_GROUP_PASSES = 30;
3
+ /** Temporary layer for backgrounds not yet represented by a scene object. */
4
+ export declare const EXTERNAL_BACKGROUND_RENDER_LAYER = 31;
5
+ export declare const getRenderGroupLayer: (groupIndex: number, baseLayer?: number) => number;
6
+ export type SequentialRenderOptions = {
7
+ renderer: WebGLRenderer;
8
+ scene: Scene;
9
+ camera: Camera;
10
+ layers: number[];
11
+ includeDefaultLayer?: boolean;
12
+ };
13
+ /**
14
+ * Composes isolated camera layers from first to last into the current target.
15
+ * Color is preserved between passes while depth is cleared, so a later group
16
+ * reliably draws over an earlier group regardless of opaque/transparent queues.
17
+ */
18
+ export declare const renderSequentialPasses: ({ renderer, scene, camera, layers, includeDefaultLayer, }: SequentialRenderOptions) => void;
@@ -0,0 +1,152 @@
1
+ import { M as D, B as I } from "./renderPasses-CjgG_6kQ.js";
2
+ const p = {
3
+ background: "background",
4
+ scene3d: "general",
5
+ tracking: "ar-tracking",
6
+ screen2d: "2d-foreground",
7
+ post: "post-effects"
8
+ }, u = (e, ...r) => {
9
+ const t = new Set(e.map((c) => c.type));
10
+ return r.every((c) => t.has(c));
11
+ }, b = (e) => u(e, "ScreenTransform") && (u(e, "ScreenText") || u(e, "ScreenImage") || u(e, "ScreenShape") || e.every(
12
+ (r) => ["ScreenTransform", "TrackingAnchor"].includes(r.type)
13
+ )), h = (e) => (u(e, "Transform") || u(e, "FaceMeshRenderer")) && !b(e), f = {
14
+ background: {
15
+ domain: "background",
16
+ accepts: () => !1,
17
+ defaultFor: () => !1,
18
+ renderMode: "background"
19
+ },
20
+ scene3d: {
21
+ domain: "scene3d",
22
+ accepts: h,
23
+ defaultFor: h,
24
+ renderMode: "depth3d"
25
+ },
26
+ tracking: {
27
+ domain: "tracking",
28
+ accepts: () => !1,
29
+ defaultFor: () => !1,
30
+ renderMode: "tracking"
31
+ },
32
+ screen2d: {
33
+ domain: "screen2d",
34
+ accepts: b,
35
+ defaultFor: b,
36
+ renderMode: "screenOverlay"
37
+ },
38
+ post: {
39
+ domain: "post",
40
+ accepts: () => !1,
41
+ defaultFor: () => !1,
42
+ renderMode: "post"
43
+ }
44
+ }, y = {
45
+ background: "Background",
46
+ scene3d: "General / 3D Scene",
47
+ tracking: "AR Tracking",
48
+ screen2d: "2D Foreground",
49
+ post: "Post Effects"
50
+ }, k = (e) => ({
51
+ id: p[e],
52
+ name: y[e],
53
+ domain: e,
54
+ enabled: !0,
55
+ objectIds: []
56
+ }), G = (e, r) => r.componentIds.map((t) => e.components[t]).filter((t) => !!t), T = (e) => {
57
+ var r;
58
+ return p[((r = Object.values(f).find((t) => t.defaultFor(e))) == null ? void 0 : r.domain) ?? "scene3d"];
59
+ }, v = (e, r, t) => {
60
+ const c = e.objects[r], n = e.renderGroups[t];
61
+ return !c || !n ? !1 : f[n.domain].accepts(G(e, c));
62
+ }, M = (e, r, t) => {
63
+ if (r < 0 || r >= e.length) return e;
64
+ const c = Math.max(0, Math.min(t, e.length - 1));
65
+ if (r === c) return e;
66
+ const n = [...e], [s] = n.splice(r, 1);
67
+ return n.splice(c, 0, s), n;
68
+ }, P = (e, r, t) => {
69
+ const c = e.renderGroupOrder.indexOf(r), n = M(e.renderGroupOrder, c, t);
70
+ return n === e.renderGroupOrder ? e : { ...e, renderGroupOrder: n };
71
+ }, A = (e, r, t, c) => {
72
+ const n = e.renderGroups[r];
73
+ if (!n) return e;
74
+ const s = n.objectIds.indexOf(t), o = M(n.objectIds, s, c);
75
+ return o === n.objectIds ? e : {
76
+ ...e,
77
+ renderGroups: { ...e.renderGroups, [r]: { ...n, objectIds: o } }
78
+ };
79
+ }, N = (e, r, t, c) => {
80
+ if (!v(e, r, t)) return e;
81
+ const n = Object.fromEntries(
82
+ Object.entries(e.renderGroups).map(([o, d]) => [
83
+ o,
84
+ { ...d, objectIds: d.objectIds.filter((a) => a !== r) }
85
+ ])
86
+ ), s = n[t].objectIds;
87
+ return s.splice(
88
+ Math.max(0, Math.min(c ?? s.length, s.length)),
89
+ 0,
90
+ r
91
+ ), {
92
+ ...e,
93
+ objects: {
94
+ ...e.objects,
95
+ [r]: { ...e.objects[r], renderGroupId: t }
96
+ },
97
+ renderGroups: n
98
+ };
99
+ }, U = (e, r = Object.keys(e.objects)) => {
100
+ const t = {}, c = [], n = { ...e.objects };
101
+ return [
102
+ ...r,
103
+ ...Object.keys(n).filter((o) => !r.includes(o))
104
+ ].forEach((o) => {
105
+ var m, R;
106
+ const d = n[o];
107
+ if (!d) return;
108
+ const a = d.renderGroupId ?? d.layerId, S = T(G(e, d)), E = (m = Object.entries(p).find(
109
+ ([, l]) => l === a
110
+ )) == null ? void 0 : m[0], O = (R = Object.entries(p).find(
111
+ ([, l]) => l === S
112
+ )) == null ? void 0 : R[0], j = k(E ?? O), g = f[j.domain].accepts(
113
+ G(e, d)
114
+ ) ? j : k(O), i = g.id;
115
+ t[i] || (t[i] = g, c.push(i)), t[i].objectIds.push(o), n[o] = { ...d, renderGroupId: i };
116
+ }), {
117
+ ...e,
118
+ objects: n,
119
+ renderGroups: t,
120
+ renderGroupOrder: c
121
+ };
122
+ }, L = (e, r = 1e3) => e.renderGroupOrder.flatMap((t, c) => {
123
+ if (c >= D) return [];
124
+ const n = e.renderGroups[t];
125
+ if (!n || !n.enabled) return [];
126
+ const s = f[n.domain];
127
+ return n.objectIds.flatMap((o, d) => {
128
+ const a = e.objects[o];
129
+ return !a || !a.enabled ? [] : a.parentObjectId && e.objects[a.parentObjectId] ? [] : [
130
+ {
131
+ groupId: t,
132
+ groupIndex: c,
133
+ objectId: o,
134
+ objectIndex: d,
135
+ renderMode: s.renderMode,
136
+ renderOrder: c * r + d,
137
+ renderLayer: I(c)
138
+ }
139
+ ];
140
+ });
141
+ });
142
+ export {
143
+ p as D,
144
+ f as R,
145
+ N as a,
146
+ P as b,
147
+ L as c,
148
+ T as g,
149
+ U as m,
150
+ A as r,
151
+ v
152
+ };
@@ -0,0 +1 @@
1
+ "use strict";const E=require("./renderPasses-CT5iBwtg.cjs"),p={background:"background",scene3d:"general",tracking:"ar-tracking",screen2d:"2d-foreground",post:"post-effects"},u=(e,...r)=>{const t=new Set(e.map(c=>c.type));return r.every(c=>t.has(c))},b=e=>u(e,"ScreenTransform")&&(u(e,"ScreenText")||u(e,"ScreenImage")||u(e,"ScreenShape")||e.every(r=>["ScreenTransform","TrackingAnchor"].includes(r.type))),h=e=>(u(e,"Transform")||u(e,"FaceMeshRenderer"))&&!b(e),l={background:{domain:"background",accepts:()=>!1,defaultFor:()=>!1,renderMode:"background"},scene3d:{domain:"scene3d",accepts:h,defaultFor:h,renderMode:"depth3d"},tracking:{domain:"tracking",accepts:()=>!1,defaultFor:()=>!1,renderMode:"tracking"},screen2d:{domain:"screen2d",accepts:b,defaultFor:b,renderMode:"screenOverlay"},post:{domain:"post",accepts:()=>!1,defaultFor:()=>!1,renderMode:"post"}},y={background:"Background",scene3d:"General / 3D Scene",tracking:"AR Tracking",screen2d:"2D Foreground",post:"Post Effects"},D=e=>({id:p[e],name:y[e],domain:e,enabled:!0,objectIds:[]}),G=(e,r)=>r.componentIds.map(t=>e.components[t]).filter(t=>!!t),I=e=>{var r;return p[((r=Object.values(l).find(t=>t.defaultFor(e)))==null?void 0:r.domain)??"scene3d"]},S=(e,r,t)=>{const c=e.objects[r],n=e.renderGroups[t];return!c||!n?!1:l[n.domain].accepts(G(e,c))},k=(e,r,t)=>{if(r<0||r>=e.length)return e;const c=Math.max(0,Math.min(t,e.length-1));if(r===c)return e;const n=[...e],[s]=n.splice(r,1);return n.splice(c,0,s),n},T=(e,r,t)=>{const c=e.renderGroupOrder.indexOf(r),n=k(e.renderGroupOrder,c,t);return n===e.renderGroupOrder?e:{...e,renderGroupOrder:n}},P=(e,r,t,c)=>{const n=e.renderGroups[r];if(!n)return e;const s=n.objectIds.indexOf(t),o=k(n.objectIds,s,c);return o===n.objectIds?e:{...e,renderGroups:{...e.renderGroups,[r]:{...n,objectIds:o}}}},v=(e,r,t,c)=>{if(!S(e,r,t))return e;const n=Object.fromEntries(Object.entries(e.renderGroups).map(([o,d])=>[o,{...d,objectIds:d.objectIds.filter(a=>a!==r)}])),s=n[t].objectIds;return s.splice(Math.max(0,Math.min(c??s.length,s.length)),0,r),{...e,objects:{...e.objects,[r]:{...e.objects[r],renderGroupId:t}},renderGroups:n}},F=(e,r=Object.keys(e.objects))=>{const t={},c=[],n={...e.objects};return[...r,...Object.keys(n).filter(o=>!r.includes(o))].forEach(o=>{var g,m;const d=n[o];if(!d)return;const a=d.renderGroupId??d.layerId,M=I(G(e,d)),_=(g=Object.entries(p).find(([,f])=>f===a))==null?void 0:g[0],O=(m=Object.entries(p).find(([,f])=>f===M))==null?void 0:m[0],R=D(_??O),j=l[R.domain].accepts(G(e,d))?R:D(O),i=j.id;t[i]||(t[i]=j,c.push(i)),t[i].objectIds.push(o),n[o]={...d,renderGroupId:i}}),{...e,objects:n,renderGroups:t,renderGroupOrder:c}},U=(e,r=1e3)=>e.renderGroupOrder.flatMap((t,c)=>{if(c>=E.MAX_RENDER_GROUP_PASSES)return[];const n=e.renderGroups[t];if(!n||!n.enabled)return[];const s=l[n.domain];return n.objectIds.flatMap((o,d)=>{const a=e.objects[o];return!a||!a.enabled?[]:a.parentObjectId&&e.objects[a.parentObjectId]?[]:[{groupId:t,groupIndex:c,objectId:o,objectIndex:d,renderMode:s.renderMode,renderOrder:c*r+d,renderLayer:E.getRenderGroupLayer(c)}]})});exports.DEFAULT_RENDER_GROUP_IDS=p;exports.RENDER_GROUP_POLICIES=l;exports.createRenderPlan=U;exports.getDefaultRenderGroupId=I;exports.migrateToRenderGroups=F;exports.moveObjectToGroup=v;exports.reorderObjectWithinGroup=P;exports.reorderRenderGroup=T;exports.validateGroupCompatibility=S;
@@ -0,0 +1 @@
1
+ "use strict";const R={BACKGROUND:-1e3,WORLD:0,TRACKED:100,SCREEN_UI:1e3};exports.RENDER_LAYERS=R;
@@ -0,0 +1,13 @@
1
+ const R = {
2
+ /** Camera background and segmentation mask. `depthTest` disabled. */
3
+ BACKGROUND: -1e3,
4
+ /** Free world-space content. `depthTest` enabled. */
5
+ WORLD: 0,
6
+ /** Descendants of `FaceTracker` / `HandTracker` / `BodyTracker`. `depthTest` enabled. */
7
+ TRACKED: 100,
8
+ /** Descendants of `ScreenSpaceUI`. `depthTest` disabled. */
9
+ SCREEN_UI: 1e3
10
+ };
11
+ export {
12
+ R
13
+ };
@@ -0,0 +1,21 @@
1
+ "use strict";const $=require("./index-CEc1CAmB.cjs"),ae=require("@react-three/fiber"),m=require("react"),d=require("three"),ke=require("./index-D4bLzBr6.cjs"),Xe=require("./index-DSpzjuqd.cjs"),k=require("./FaceMeshRenderer-lQLhYIW-.cjs"),p=require("react/jsx-runtime"),Be=require("@react-three/drei");function Ye(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const o in e)if(o!=="default"){const n=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(t,o,n.get?n:{enumerable:!0,get:()=>e[o]})}}return t.default=e,Object.freeze(t)}const ne=Ye(d),de={move:"grab",pivot:"all-scroll",rotateTopLeft:"alias",rotateTopRight:"alias",rotateBottomLeft:"alias",rotateBottomRight:"alias",top:"ns-resize",bottom:"ns-resize",left:"ew-resize",right:"ew-resize",topLeft:"nwse-resize",bottomRight:"nwse-resize",topRight:"nesw-resize",bottomLeft:"nesw-resize"},Ve=({color:e="#22d3ee",controlScale:t=[1,1,1],handleColor:o="#ffffff",onHandlePointerDown:n,opacity:s=.9,pivot:r=[.5,.5],pivotScale:a=t,renderOrder:i,showSideHandles:l=!0,thickness:f=.004})=>{const h=p.jsx("meshBasicMaterial",{color:e,transparent:!0,opacity:s,depthTest:!1,depthWrite:!1,toneMapped:!1}),g=p.jsx("meshBasicMaterial",{color:o,transparent:!0,opacity:1,depthTest:!1,depthWrite:!1,toneMapped:!1}),w=Math.max(f*7,.028),y=Math.max(f*7,.03),R=Math.max(f*8,.032),S=.04,c=.06,E=.08,T=.1,u=i??0,_=[["topLeft",-.5,.5],["topRight",.5,.5],["bottomLeft",-.5,-.5],["bottomRight",.5,-.5],...l?[["top",0,.5],["bottom",0,-.5],["left",-.5,0],["right",.5,0]]:[]],D=[["rotateTopLeft",-.56,.56,0],["rotateTopRight",.56,.56,-Math.PI/2],["rotateBottomRight",.56,-.56,Math.PI],["rotateBottomLeft",-.56,-.56,Math.PI/2]],b=x=>n?P=>{P.stopPropagation(),document.body.style.cursor=x==="move"?"grabbing":de[x],n(x,P)}:void 0,v=x=>{n&&(document.body.style.cursor=de[x])},O=()=>{n&&(document.body.style.cursor="")},M=[r[0]-.5,r[1]-.5,T];return p.jsxs("group",{renderOrder:u,children:[p.jsxs("mesh",{position:[0,.5,S],scale:[1,f,1],renderOrder:u,children:[p.jsx("planeGeometry",{args:[1,1]}),h]}),p.jsxs("mesh",{position:[0,-.5,S],scale:[1,f,1],renderOrder:u,children:[p.jsx("planeGeometry",{args:[1,1]}),h]}),p.jsxs("mesh",{position:[-.5,0,S],scale:[f,1,1],renderOrder:u,children:[p.jsx("planeGeometry",{args:[1,1]}),h]}),p.jsxs("mesh",{position:[.5,0,S],scale:[f,1,1],renderOrder:u,children:[p.jsx("planeGeometry",{args:[1,1]}),h]}),p.jsxs("mesh",{position:[0,0,c],renderOrder:u+1,onPointerDown:b("move"),onPointerOver:()=>v("move"),onPointerOut:O,children:[p.jsx("planeGeometry",{args:[1,1]}),p.jsx("meshBasicMaterial",{transparent:!0,opacity:0,depthTest:!1,depthWrite:!1})]}),_.map(([x,P,C])=>p.jsxs("mesh",{position:[P,C,E],scale:[w*t[0],w*t[1],t[2]],renderOrder:u+2,onPointerDown:b(x),onPointerOver:()=>v(x),onPointerOut:O,children:[p.jsx("planeGeometry",{args:[1,1]}),g]},x)),D.map(([x,P,C,B])=>p.jsx("group",{position:[P,C,E+.01],rotation:[0,0,B],scale:[R*t[0],R*t[1],t[2]],renderOrder:u+3,onPointerDown:b(x),onPointerOver:()=>v(x),onPointerOut:O,children:p.jsxs("mesh",{renderOrder:u+3,children:[p.jsx("planeGeometry",{args:[1.9,1.9]}),p.jsx("meshBasicMaterial",{transparent:!0,opacity:0,depthTest:!1,depthWrite:!1})]})},x)),p.jsx("group",{position:M,scale:[y*a[0],y*a[1],a[2]],renderOrder:u+5,onPointerDown:b("pivot"),onPointerOver:()=>v("pivot"),onPointerOut:O,children:p.jsxs("group",{rotation:[0,0,Math.PI/4],children:[p.jsxs("mesh",{scale:[1.8,1.8,1],renderOrder:u+5,children:[p.jsx("planeGeometry",{args:[1,1]}),p.jsx("meshBasicMaterial",{transparent:!0,opacity:0,depthTest:!1,depthWrite:!1})]}),p.jsxs("mesh",{position:[0,0,.002],renderOrder:u+6,children:[p.jsx("planeGeometry",{args:[1,1]}),g]}),p.jsxs("mesh",{scale:[.62,.62,1],position:[0,0,.004],renderOrder:u+7,children:[p.jsx("planeGeometry",{args:[1,1]}),p.jsx("meshBasicMaterial",{color:"#111827",transparent:!0,opacity:1,depthTest:!1,depthWrite:!1,toneMapped:!1})]})]})})]})},j={width:720,height:1280},G=32,Se=.5,F={enabled:!0,position:{x:0,y:0},size:{width:680,height:1230},pivot:[.5,.5],rotation:0,scale2D:{x:1,y:1},referencePixelsPerUnit:G,renderOrder:999,overlay:!0,visible:!0,showTransformGuides:!1},$e=Math.PI/180,fe=(e,t)=>t<=0?e:Math.round(e/t)*t,H=({transform:e,parentSize:t,root:o=j,snapIncrement:n=Se})=>{const r=Math.min(t.width/o.width,t.height/o.height)*(G/e.referencePixelsPerUnit),a=e.size.width*e.scale2D.x*r,i=e.size.height*e.scale2D.y*r,l=fe(e.position.x,n)*r,f=fe(e.position.y,n)*r,h=(e.pivot[0]-.5)*a,g=(e.pivot[1]-.5)*i;return{center:[l-h,f-g,0],size:[a,i,1],rotation:[0,0,e.rotation*$e],pivotOffset:[h/Math.max(a,1e-6),g/Math.max(i,1e-6),0],aspect:a>0&&i>0?Math.abs(a/i):1}},xe=e=>({...F,...e,position:{...F.position,...e==null?void 0:e.position},size:{...F.size,...e==null?void 0:e.size},scale2D:{...F.scale2D,...e==null?void 0:e.scale2D}}),L=e=>Math.round(e*2)/2,pe=e=>Math.min(1,Math.max(0,e)),Q={move:"grab",pivot:"all-scroll",rotateTopLeft:"alias",rotateTopRight:"alias",rotateBottomLeft:"alias",rotateBottomRight:"alias",top:"ns-resize",bottom:"ns-resize",left:"ew-resize",right:"ew-resize",topLeft:"nwse-resize",bottomRight:"nwse-resize",topRight:"nesw-resize",bottomLeft:"nesw-resize"},He=[["topLeft",0,0],["top",.5,0],["topRight",1,0],["right",1,.5],["bottomRight",1,1],["bottom",.5,1],["bottomLeft",0,1],["left",0,.5]],qe=[["rotateTopLeft",-.03,-.03],["rotateTopRight",1.03,-.03],["rotateBottomRight",1.03,1.03],["rotateBottomLeft",-.03,1.03]],Qe=(e,t)=>{const o=H({transform:t,parentSize:{width:e.width,height:e.height}}),n=Math.min(e.width/j.width,e.height/j.height)*(G/Math.max(t.referencePixelsPerUnit,1e-6))||1,s=j.width*n,r=j.height*n,a=e.left+(e.width-s)/2,i=e.top+(e.height-r)/2,l=a+s/2,f=i+r/2,h=o.size[0],g=o.size[1],w=l+o.center[0],y=f-o.center[1];return{centerX:w,centerY:y,height:g,left:w-h/2,scale:n,top:y-g/2,width:h}},Ke=(e,t,o,n)=>{const s=j.width*n,r=j.height*n,a=o.left+(o.width-s)/2,i=o.top+(o.height-r)/2;return{x:(e-(a+s/2))/n,y:(i+r/2-t)/n}},Ze=({color:e="#38bdf8",handleColor:t="#ffffff",onChange:o,transform:n})=>{const s=m.useRef(o);s.current=o;const{gl:r}=ae.useThree(),[a,i]=m.useState(null),l=m.useRef(null),f=m.useRef(null),h=m.useCallback(()=>{i(r.domElement.getBoundingClientRect())},[r.domElement]);m.useEffect(()=>(h(),window.addEventListener("resize",h),window.addEventListener("scroll",h,!0),()=>{window.removeEventListener("resize",h),window.removeEventListener("scroll",h,!0)}),[h]);const g=m.useMemo(()=>a?Qe(a,n):null,[a,n]),w=m.useCallback(S=>{const c=l.current,E=s.current;if(!c||!E)return;const T=(S.clientX-c.startX)/c.scale,u=-(S.clientY-c.startY)/c.scale,_={x:c.startPointerDesign.x+T,y:c.startPointerDesign.y+u},D={...c.startTransform,position:{...c.startTransform.position},size:{...c.startTransform.size},pivot:[...c.startTransform.pivot]};if(c.handle==="move")D.position={x:L(c.startTransform.position.x+T),y:L(c.startTransform.position.y+u)};else if(c.handle==="pivot"){const b=Math.max(1,c.startTransform.size.width*c.startTransform.scale2D.x),v=Math.max(1,c.startTransform.size.height*c.startTransform.scale2D.y),O=pe(c.startTransform.pivot[0]+T/b),M=pe(c.startTransform.pivot[1]+u/v);D.pivot=[L(O*1e3)/1e3,L(M*1e3)/1e3],D.position={x:L(c.startTransform.position.x+(D.pivot[0]-c.startTransform.pivot[0])*b),y:L(c.startTransform.position.y+(D.pivot[1]-c.startTransform.pivot[1])*v)}}else if(c.handle.startsWith("rotate")){const b=Math.atan2(c.startPointerDesign.y-c.startTransform.position.y,c.startPointerDesign.x-c.startTransform.position.x),v=Math.atan2(_.y-c.startTransform.position.y,_.x-c.startTransform.position.x);D.rotation=L(c.startTransform.rotation+(v-b)*180/Math.PI)}else{const b=c.handle==="left"||c.handle.endsWith("Left"),v=c.handle==="right"||c.handle.endsWith("Right"),O=c.handle==="top"||c.handle.startsWith("top"),M=c.handle==="bottom"||c.handle.startsWith("bottom"),x=v?T*2:b?-T*2:0,P=O?u*2:M?-u*2:0;D.size={width:Math.max(1,L(c.startTransform.size.width+x)),height:Math.max(1,L(c.startTransform.size.height+P))}}E(D)},[]),y=m.useCallback(()=>{l.current=null,document.body.style.cursor="",window.removeEventListener("pointermove",w),window.removeEventListener("pointerup",y)},[w]);m.useEffect(()=>y,[y]);const R=m.useCallback((S,c)=>{!a||!g||!o||(c.preventDefault(),document.body.style.cursor=S==="move"?"grabbing":Q[S],l.current={handle:S,startX:c.clientX,startY:c.clientY,startPointerDesign:Ke(c.clientX,c.clientY,a,g.scale),startTransform:n,scale:g.scale},window.addEventListener("pointermove",w),window.addEventListener("pointerup",y))},[a,g,o,y,n,w]);return m.useEffect(()=>{if(typeof document>"u")return;const S=document.createElement("div");return document.body.appendChild(S),f.current=S,()=>{S.remove(),f.current=null}},[]),m.useEffect(()=>{const S=f.current;if(!S||(S.replaceChildren(),!g))return;const c=12,E=12,T=document.createElement("div");Object.assign(T.style,{position:"fixed",inset:"0",zIndex:"19999",pointerEvents:"none"});const u=document.createElement("div");Object.assign(u.style,{position:"absolute",left:`${g.left}px`,top:`${g.top}px`,width:`${g.width}px`,height:`${g.height}px`,border:`1px solid ${e}`,boxSizing:"border-box",transform:`rotate(${-n.rotation}deg)`,transformOrigin:`${n.pivot[0]*100}% ${(1-n.pivot[1])*100}%`,pointerEvents:o?"auto":"none",cursor:Q.move}),u.addEventListener("pointerdown",b=>R("move",b));const _=(b,v,O,M,x="translate(-50%, -50%)")=>{const P=document.createElement("div");return Object.assign(P.style,{position:"absolute",left:`${v*100}%`,top:`${O*100}%`,width:`${M}px`,height:`${M}px`,cursor:Q[b],transform:x,pointerEvents:"auto"}),P.addEventListener("pointerdown",C=>{C.stopPropagation(),R(b,C)}),P};for(const[b,v,O]of He){const M=_(b,v,O,c);M.style.background=t,u.appendChild(M)}for(const[b,v,O]of qe)u.appendChild(_(b,v,O,26));const D=_("pivot",n.pivot[0],1-n.pivot[1],E,"translate(-50%, -50%) rotate(45deg)");return Object.assign(D.style,{border:"2px solid #ffffff",background:"#111827",boxSizing:"border-box"}),u.appendChild(D),T.appendChild(u),S.appendChild(T),()=>{S.replaceChildren()}},[e,t,g,o,R,n]),null},Y={enabled:!1,targetObjectId:null,orientation:"none",uv:{x:.5,y:.5},vertexNormal:!1,offsetSpace:"local",offsetPosition:{x:0,y:0,z:0},offsetRotation:{x:0,y:0,z:0}},Je=(e,t,o,n)=>{const s=o.clone().sub(t),r=n.clone().sub(t),a=e.clone().sub(t),i=s.x*r.y-r.x*s.y;if(Math.abs(i)<1e-8)return null;const l=(a.x*r.y-r.x*a.y)/i,f=(s.x*a.y-a.x*s.y)/i,h=1-l-f;return h>=-1e-5&&l>=-1e-5&&f>=-1e-5?[h,l,f]:null},et=(e,t,o=!1)=>{const n=new d.Vector2(t.x,t.y),s=new d.Vector2,r=new d.Vector2,a=new d.Vector2,i=new d.Vector3,l=new d.Vector3,f=new d.Vector3,h=new d.Vector3,g=new d.Vector3,w=new d.Vector3;let y=null;if(e.traverse(S=>{var v,O;if(y||!S.isMesh)return;const c=S,E=c.geometry,T=(v=E==null?void 0:E.attributes)==null?void 0:v.position,u=(O=E==null?void 0:E.attributes)==null?void 0:O.uv;if(!T||!u)return;const _=E.attributes.normal,D=E.index,b=M=>(D==null?void 0:D.getX(M))??M;for(let M=0;M<(D?D.count:T.count);M+=3){const x=[b(M),b(M+1),b(M+2)];s.set(u.getX(x[0]),u.getY(x[0])),r.set(u.getX(x[1]),u.getY(x[1])),a.set(u.getX(x[2]),u.getY(x[2]));const P=Je(n,s,r,a);if(P){i.set(0,0,0),l.set(0,0,0),x.forEach((C,B)=>{f.fromBufferAttribute(T,C),i.addScaledVector(f,P[B]),_&&o&&l.addScaledVector(f.fromBufferAttribute(_,C),P[B])}),o||(h.fromBufferAttribute(T,x[0]),g.fromBufferAttribute(T,x[1]),w.fromBufferAttribute(T,x[2]),l.copy(g.sub(h).cross(w.sub(h)).normalize())),y={mesh:c,localPosition:i.clone(),localNormal:l.clone().normalize()};break}}}),y)return y;const R=new d.Box3().setFromObject(e);return{mesh:e,localPosition:e.worldToLocal(R.getCenter(new d.Vector3)),localNormal:new d.Vector3(0,1,0)}},tt=e=>({position:e.mesh.localToWorld(e.localPosition.clone()),normal:e.localNormal.clone().transformDirection(e.mesh.matrixWorld).normalize()}),N=(e,t=0)=>Number.isFinite(e)?e:t,K=new d.Vector3,Z=new d.Vector3,ue=new d.Matrix4,J=new d.Quaternion,ee=new d.Quaternion,ot=new d.Vector3(0,1,0),nt=e=>{e.position.set(0,0,0),e.quaternion.identity()},rt=({settings:e,source:t,surface:o})=>{e.orientation==="positionAndDirection"?(ue.lookAt(o.position,o.position.clone().add(o.normal),ot),J.setFromRotationMatrix(ue)):J.identity(),t.quaternion.copy(J),Z.set(N(e.offsetPosition.x),N(e.offsetPosition.y),N(e.offsetPosition.z)),e.offsetSpace==="local"&&Z.applyQuaternion(t.quaternion),K.copy(o.position).add(Z),t.parent&&t.parent.worldToLocal(K),t.position.copy(K),ee.setFromEuler(new d.Euler(N(e.offsetRotation.x)*Math.PI/180,N(e.offsetRotation.y)*Math.PI/180,N(e.offsetRotation.z)*Math.PI/180)),e.offsetSpace==="local"?t.quaternion.multiply(ee):t.quaternion.premultiply(ee)},st=({target:e,settings:t,children:o})=>{const n=ke.useResolveRuntimeObject(),s=m.useRef(null),r=m.useRef(null),a=()=>{s.current&&nt(s.current)};return m.useEffect(()=>{r.current=null},[t.targetObjectId]),m.useEffect(()=>{t.enabled||a()},[t.enabled]),ae.useFrame(()=>{const i=e??n(t.targetObjectId);if(!t.enabled||!i||!s.current){(!t.enabled||!i)&&a();return}const l=`${t.uv.x}:${t.uv.y}:${t.vertexNormal?"vertex":"face"}`;(!r.current||r.current.target!==i||r.current.key!==l)&&(r.current={key:l,target:i,surface:et(i,t.uv,t.vertexNormal)}),i.updateWorldMatrix(!0,!0);const f=tt(r.current.surface);rt({source:s.current,surface:f,settings:t})}),m.createElement("group",{ref:s},o)},A=e=>Math.round(e*2)/2,he=e=>Math.min(1,Math.max(0,e));function it(e){return Math.min(e.width/j.width,e.height/j.height)||1}function at({resolved:e,transform:t}){return e.size[0]/Math.max(Math.abs(t.size.width*t.scale2D.x),1e-6)||1}function ct({parent:e,resolved:t,transform:o}){const r=16*((Math.min(e.width/j.width,e.height/j.height)||1)*(G/Math.max(o.referencePixelsPerUnit,1e-6))),a=.028;return[r/Math.max(Math.abs(t.size[0])*a,1e-6),r/Math.max(Math.abs(t.size[1])*a,1e-6),1]}function lt({drag:e,clientX:t,clientY:o,designScale:n}){const s=(t-e.startX)/n,r=-(o-e.startY)/n,a={x:e.startPointerDesign.x+s,y:e.startPointerDesign.y+r},i={...e.startTransform,position:{...e.startTransform.position},size:{...e.startTransform.size},pivot:[...e.startTransform.pivot]};if(e.handle==="move")return i.position={x:A(e.startTransform.position.x+s),y:A(e.startTransform.position.y+r)},i;if(e.handle==="pivot"){const R=Math.max(1,e.startTransform.size.width*e.startTransform.scale2D.x),S=Math.max(1,e.startTransform.size.height*e.startTransform.scale2D.y),c=he(e.startTransform.pivot[0]+s/R),E=he(e.startTransform.pivot[1]+r/S);return i.pivot=[A(c*1e3)/1e3,A(E*1e3)/1e3],i.position={x:A(e.startTransform.position.x+(i.pivot[0]-e.startTransform.pivot[0])*R),y:A(e.startTransform.position.y+(i.pivot[1]-e.startTransform.pivot[1])*S)},i}if(e.handle.startsWith("rotate")){const R=Math.atan2(e.startPointerDesign.y-e.startTransform.position.y,e.startPointerDesign.x-e.startTransform.position.x),S=Math.atan2(a.y-e.startTransform.position.y,a.x-e.startTransform.position.x);return i.rotation=A(e.startTransform.rotation+(S-R)*180/Math.PI),i}const l=e.handle==="left"||e.handle.endsWith("Left"),f=e.handle==="right"||e.handle.endsWith("Right"),h=e.handle==="top"||e.handle.startsWith("top"),g=e.handle==="bottom"||e.handle.startsWith("bottom"),w=f?s*2:l?-s*2:0,y=h?r*2:g?-r*2:0;return i.size={width:Math.max(1,A(e.startTransform.size.width+w)),height:Math.max(1,A(e.startTransform.size.height+y))},i}function ge({transform:e,guideLayer:t,guideColor:o,onChange:n,children:s}){const r=$.useScreenSpace(),{size:a}=ae.useThree(),i=m.useRef(n);i.current=n;const l=m.useRef(null),f=m.useMemo(()=>H({transform:e,parentSize:r}),[r,e]),h=it(a),g=m.useRef(h);g.current=h;const w=at({resolved:f,transform:e}),y=m.useCallback(E=>{const T=l.current,u=i.current;!T||!u||u(lt({drag:T,clientX:E.clientX,clientY:E.clientY,designScale:g.current}))},[]),R=m.useCallback(()=>{l.current=null,document.body.style.cursor="",window.removeEventListener("pointermove",y),window.removeEventListener("pointerup",R)},[y]);m.useEffect(()=>R,[R]);const S=m.useCallback((E,T)=>{n&&(l.current={handle:E,startX:T.nativeEvent.clientX,startY:T.nativeEvent.clientY,startPointerDesign:{x:T.point.x/w,y:T.point.y/w},startTransform:e},window.addEventListener("pointermove",y),window.addEventListener("pointerup",R))},[n,R,e,w,y]),c=m.useMemo(()=>ct({parent:r,resolved:f,transform:e}),[r,f,e]);return p.jsx("group",{position:[f.center[0]+(e.pivot[0]-.5)*f.size[0],f.center[1]+(e.pivot[1]-.5)*f.size[1],0],rotation:f.rotation,children:p.jsx("group",{position:[(.5-e.pivot[0])*f.size[0],(.5-e.pivot[1])*f.size[1],0],scale:f.size,children:p.jsxs($.ScreenRectAspectContext.Provider,{value:f.aspect,children:[s,e.showTransformGuides&&t==="scene"?p.jsx(Ve,{color:o,controlScale:c,onHandlePointerDown:n?S:void 0,pivot:e.pivot,pivotScale:c,renderOrder:e.renderOrder+1}):null,e.showTransformGuides&&t==="overlay"?p.jsx(Ze,{color:o,onChange:n,transform:e}):null]})})})}const U={tint:"#dff6ff",opacity:.28,frost:.35,highlight:.55},ce=e=>({...U,...e,opacity:d.MathUtils.clamp((e==null?void 0:e.opacity)??U.opacity,0,1),frost:d.MathUtils.clamp((e==null?void 0:e.frost)??U.frost,0,1),highlight:d.MathUtils.clamp((e==null?void 0:e.highlight)??U.highlight,0,1)}),dt=`
2
+ varying vec2 vPosition;
3
+ void main() {
4
+ vPosition = position.xy;
5
+ gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
6
+ }
7
+ `,ft=`
8
+ uniform vec3 tint;
9
+ uniform float opacity;
10
+ uniform float frost;
11
+ uniform float highlight;
12
+ varying vec2 vPosition;
13
+
14
+ void main() {
15
+ float grain = fract(sin(dot(vPosition * 997.0, vec2(12.9898, 78.233))) * 43758.5453);
16
+ float sheen = smoothstep(0.15, 0.85, 1.0 - (vPosition.x + vPosition.y + 1.0) * 0.5);
17
+ vec3 frosted = mix(tint, vec3(1.0), frost * (0.18 + grain * 0.08));
18
+ vec3 color = mix(frosted, vec3(1.0), sheen * highlight * 0.32);
19
+ gl_FragColor = vec4(color, opacity);
20
+ }
21
+ `,Te=({opacity:e=1,value:t})=>{const o=m.useMemo(()=>{const n=ce(t);return{tint:{value:new d.Color(n.tint)},opacity:{value:n.opacity*e},frost:{value:n.frost},highlight:{value:n.highlight}}},[e,t]);return p.jsx("shaderMaterial",{uniforms:o,vertexShader:dt,fragmentShader:ft,transparent:!0,depthTest:!1,depthWrite:!1,toneMapped:!1})},te=(e,t=1)=>Array.from({length:e},(o,n)=>{const s=n%2?t*.5:.5,r=-Math.PI/2+n/e*Math.PI*2;return[Math.cos(r)*s,Math.sin(r)*s,0]}),pt=e=>{switch(e.kind){case"line":return[[e.lineStart.x-.5,.5-e.lineStart.y,0],[e.lineEnd.x-.5,.5-e.lineEnd.y,0]];case"polygon":return te(Math.max(3,Math.round(e.sides)));case"star":return te(Math.max(3,Math.round(e.sides))*2,ne.MathUtils.clamp(e.innerRadiusRatio,.05,.95));case"rectangle":return[[-.5,-.5,0],[.5,-.5,0],[.5,.5,0],[-.5,.5,0]];case"roundedRectangle":{const t=ne.MathUtils.clamp(e.cornerRadius,0,.5),o=[];return[[.5-t,.5-t,0],[-.5+t,.5-t,Math.PI/2],[-.5+t,-.5+t,Math.PI],[.5-t,-.5+t,Math.PI*1.5]].forEach(([s,r,a])=>{for(let i=0;i<=6;i+=1){const l=a+i/6*(Math.PI/2);o.push([s+Math.cos(l)*t,r+Math.sin(l)*t,0])}}),o}case"circle":case"ellipse":default:return te(64)}},ut=e=>{const t=new ne.Shape;return e.forEach(([o,n],s)=>s?t.lineTo(o,n):t.moveTo(o,n)),t.closePath(),t},W={kind:"rectangle",fillColor:"#38bdf8",fillOpacity:1,fillMode:"solid",gradient:k.DEFAULT_SCREEN_GRADIENT,glass:U,strokeColor:"#ffffff",strokeOpacity:1,strokeWidth:3,cornerRadius:.15,sides:5,innerRadiusRatio:.45,dashed:!1,lineStart:{x:.1,y:.5},lineEnd:{x:.9,y:.5}},be=e=>{const t={...W,...e,lineStart:{...W.lineStart,...e==null?void 0:e.lineStart},lineEnd:{...W.lineEnd,...e==null?void 0:e.lineEnd},gradient:k.normalizeScreenGradient(e==null?void 0:e.gradient),glass:ce(e==null?void 0:e.glass)},o=(n,s)=>Number.isFinite(n)?n:s;return{...t,fillOpacity:d.MathUtils.clamp(o(t.fillOpacity,1),0,1),strokeOpacity:d.MathUtils.clamp(o(t.strokeOpacity,1),0,1),strokeWidth:Math.max(0,o(t.strokeWidth,0)),cornerRadius:d.MathUtils.clamp(o(t.cornerRadius,0),0,.5),sides:d.MathUtils.clamp(Math.round(o(t.sides,5)),3,12),innerRadiusRatio:d.MathUtils.clamp(o(t.innerRadiusRatio,.45),.05,.95),lineStart:{x:d.MathUtils.clamp(o(t.lineStart.x,.1),0,1),y:d.MathUtils.clamp(o(t.lineStart.y,.5),0,1)},lineEnd:{x:d.MathUtils.clamp(o(t.lineEnd.x,.9),0,1),y:d.MathUtils.clamp(o(t.lineEnd.y,.5),0,1)}}},ht=({name:e,renderOrder:t,settings:o,visible:n})=>{const s=$.useScreenRectAspect(),r=m.useMemo(()=>pt(o),[o]),a=m.useMemo(()=>ut(r),[r]),l=["circle","polygon","star"].includes(o.kind)?[Math.min(1,1/s),Math.min(1,s),1]:[1,1,1],h=o.kind!=="line"?[...r,r[0]]:r;return p.jsxs("group",{name:e,visible:n,scale:l,children:[o.kind!=="line"&&o.fillOpacity>0?p.jsxs("mesh",{renderOrder:t,children:[p.jsx("shapeGeometry",{args:[a]}),o.fillMode==="glass"?p.jsx(Te,{value:o.glass,opacity:o.fillOpacity}):p.jsx(k.MaterialFill,{settings:{source:o.fillMode,color:o.fillColor,opacity:o.fillOpacity,gradient:o.gradient}})]}):null,o.strokeWidth>0&&o.strokeOpacity>0?p.jsx(Be.Line,{points:h,color:o.strokeColor,lineWidth:o.strokeWidth,opacity:o.strokeOpacity,transparent:o.strokeOpacity<1,dashed:o.dashed,dashSize:.05,gapSize:.03,depthTest:!1,depthWrite:!1,renderOrder:t+1}):null]})},mt=({name:e,onScreenTransformChange:t,renderOrder:o,settings:n,transform:s,transformGuideLayer:r="scene",visible:a=!0})=>{const i=m.useMemo(()=>be(n),[n]),l=m.useMemo(()=>xe(s??F),[s]);return l.enabled?p.jsx(ge,{transform:l,guideLayer:r,guideColor:"#38bdf8",onChange:t,children:p.jsx(ht,{name:e,settings:i,visible:a&&l.visible,renderOrder:o??l.renderOrder})}):null};function St(e){const{screenSpaceUI:t,screenImage:o}=e,{image:n,transformation:s}=o,r=n.src.trim();return{shouldRender:t.enabled&&o.enabled&&s.enabled,props:{source:n.sourceKind==="image"&&r.length>0?{kind:"image",src:r}:{kind:"default"},transform:o.screenTransform,coordinateSpace:s.coordinateSpace,canvasSize:s.canvasSize,position:[s.position.x,s.position.y],size:[s.size.width,s.size.height],rotation:s.rotation,pivot:s.pivot,stretchMode:n.stretchMode,materialType:n.materialType,blendMode:n.blendMode,opacity:n.opacity,color:n.color,flipX:n.flipX,flipY:n.flipY,renderOrder:s.renderOrder,transparent:n.transparent,alphaTest:n.alphaTest,overlay:s.overlay,visible:s.visible}}}const q={enabled:!0,preset:"placeholder",transformation:{enabled:!0,showFitGuides:!1,coordinateSpace:"canvas",canvasSize:{width:720,height:1280},position:{x:0,y:0},size:{width:680,height:1230},rotation:0,pivot:[.5,.5],renderOrder:999,overlay:!0,visible:!0},screenTransform:{...F,renderOrder:999},image:{sourceKind:"default",src:"",stretchMode:"fit",materialType:"unlit",blendMode:"normal",opacity:1,color:"#ffffff",flipX:!1,flipY:!1,transparent:!0,alphaTest:0}},xt={screenImage:q,screenSpaceUI:{enabled:!0}},gt=e=>e*Math.PI/180;function ye(e){if(!e)return;const t=e.offset??0,o=gt(e.angle??-45);return{color:e.color,opacity:e.opacity,blur:(e.feather??0)*100,offsetX:Math.cos(o)*t,offsetY:Math.sin(o)*t}}function Tt(e){const{screenSpaceUI:t,screenText:o}=e,{content:n,layout:s,style:r,transformation:a}=o,i=r.background;return{shouldRender:t.enabled&&o.enabled&&a.enabled,props:{text:n.text,screenTransform:o.screenTransform,coordinateSpace:a.coordinateSpace,canvasSize:a.canvasSize,position:[a.position.x,a.position.y],size:[a.size.width,a.size.height],rotation:a.rotation,pivot:a.pivot,renderOrder:a.renderOrder,overlay:a.overlay,visible:a.visible,showTransformGuides:a.showTransformGuides,fontSize:r.fontSize,fontFamily:r.fontFamily,fontWeight:r.fontWeight,fontStyle:r.fontStyle,underline:r.underline,strikethrough:r.strikethrough,letterSpacing:r.letterSpacing,lineSpacing:r.lineSpacing,color:r.color,opacity:r.opacity,outlineEnabled:r.outlineEnabled,strokeLayers:r.strokeLayers,shadowEnabled:r.shadowEnabled,shadowLayers:r.shadowLayers,innerShadow:r.innerShadowEnabled?ye(r.innerShadow):void 0,glow:r.glowEnabled?r.glow:void 0,bend:r.bendEnabled?r.bend:void 0,bgColor:i.enabled?i.color:"transparent",bgOpacity:i.opacity,bgFit:i.fit,bgAutoSize:i.autoSize,bgFillMode:i.fillMode,bgWidth:i.width,bgHeight:i.height,bgGradientStops:i.gradientStops,bgTextureUrl:i.textureUrl,bgTextureFit:i.textureFit,bgTextureFlipX:i.textureFlipX,bgTextureFlipY:i.textureFlipY,padding:i.padding,borderColor:i.borderEnabled?i.borderColor:void 0,borderWidth:i.borderEnabled?i.borderWidth:0,borderRadius:i.borderRadius,textAlign:s.textAlign,verticalAlign:s.verticalAlign,overflow:s.overflow,resizeToFit:s.resizeToFit,minFontSize:s.minFontSize}}}const Ee={color:"#000000",blur:0,offsetX:7.071,offsetY:-7.071,opacity:1,offset:10,angle:-45,feather:0},ve={screenText:{enabled:!0,content:{text:"Hello from Vincentt"},layout:{textAlign:"center",verticalAlign:"center",overflow:"clip",resizeToFit:!1,minFontSize:32},style:{fontSize:72,fontFamily:'"Space Grotesk", sans-serif',fontWeight:400,bold:!1,fontStyle:"normal",underline:!1,strikethrough:!1,letterSpacing:0,lineSpacing:.3,color:"#ffffff",opacity:1,aspect:3,outlineEnabled:!0,shadowEnabled:!1,innerShadowEnabled:!1,innerShadow:{color:"#000000",opacity:1,offset:10,angle:-45,feather:0},glowEnabled:!1,glow:{color:"#ffffff",style:"outward",intensity:.5,range:.5,horizontalAngle:0,verticalAngle:0},bendEnabled:!1,bend:{preset:"arc",strength:100},background:{enabled:!1,autoSize:!0,fit:"text",fillMode:"solid",color:"#14286e",opacity:1,borderRadius:32,padding:0,width:540,height:220,borderEnabled:!1,borderWidth:0,borderColor:"#ffffff",gradientStops:[{color:"#14286e",position:0},{color:"#3657d6",position:.5},{color:"#8ab4ff",position:1}],textureUrl:"",textureFit:"cover",textureFlipX:!1,textureFlipY:!1},strokeLayers:[{color:"#0f172a",width:12,opacity:1}],shadowLayers:[Ee]},screenTransform:{...F,renderOrder:1e3},transformation:{enabled:!0,showTransformGuides:!1,coordinateSpace:"canvas",canvasSize:{width:720,height:1280},position:{x:0,y:0},size:{width:680,height:1230},rotation:0,pivot:[.5,.5],renderOrder:1e3,overlay:!0,visible:!0},textArtPreset:"clean"},screenImage:q,screenSpaceUI:{enabled:!0}},le=e=>{const t=typeof crypto<"u"&&"randomUUID"in crypto?crypto.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`;return`${e}_${t}`},Me=()=>le("obj"),we=()=>le("cmp"),I=e=>typeof structuredClone=="function"?structuredClone(e):JSON.parse(JSON.stringify(e)),Re=()=>I(k.DEFAULT_TRANSFORM_3D),De=()=>I(F),Oe=()=>I(q),Pe=()=>I(ve.screenText),ze=()=>I(W),je=()=>I($.DEFAULT_MESH_RENDERER),_e=()=>I(k.DEFAULT_FACE_MESH_RENDERER),Ce=()=>({type:"standard",color:"#ffffff",opacity:1,wireframe:!1,roughness:.42,metalness:.08}),Le=()=>({flipX:!1,flipY:!1}),bt=()=>({enabled:!0,type:"directional",color:"#ffffff",intensity:2.2,castShadow:!0,distance:10,angle:Math.PI/6,penumbra:.2,decay:2,showHelper:!1}),yt=()=>({enabled:!1,targetObjectId:null,mode:"point",inheritChildren:!1,offsetRotation:{x:0,y:0,z:0}}),Et=()=>({...Y,uv:{...Y.uv},offsetPosition:{...Y.offsetPosition},offsetRotation:{...Y.offsetRotation}}),vt=()=>I(Xe.DEFAULT_TRACKING_ANCHOR),Ae={Transform:Re,ScreenTransform:De,ScreenImage:Oe,ScreenText:Pe,ScreenShape:ze,MeshRenderer:je,FaceMeshRenderer:_e,Material:Ce,Texture:Le,Light:bt,LookAt:yt,PinToMesh:Et,TrackingAnchor:vt},Mt=({componentIds:e=[],enabled:t=!0,id:o=Me(),parentObjectId:n=null,childObjectIds:s=[],renderGroupId:r,layerId:a,name:i})=>({id:o,name:i,enabled:t,parentObjectId:n,childObjectIds:s,layerId:a,renderGroupId:r??a,componentIds:e}),wt=(e,t)=>({id:we(),objectId:t,type:e,enabled:!0,settings:Ae[e]()}),X=(e,t)=>{const o=e.objects[t];return o?o.componentIds.map(n=>e.components[n]).filter(n=>!!n):[]},Rt=()=>{let e=null,t=null,o=null,n=[];return(s,r)=>{const a=s.objects[r];if(!a)return e=s,t=r,o=null,n=[],n;const i=a.componentIds;return e===s&&t===r&&o===i&&n.length===i.length&&n.every(f=>s.components[f.id]===f)||(e=s,t=r,o=i,n=X(s,r)),n}},Dt=(e,t)=>{const o=e.objects[t.objectId];return o?{...e,objects:{...e.objects,[o.id]:{...o,componentIds:[...o.componentIds,t.id]}},components:{...e.components,[t.id]:t}}:e},Ot=(e,t,o,n)=>{const s=e.objects[t];if(!s||s.componentIds.indexOf(o)<0)return e;const a=s.componentIds.filter(i=>i!==o);return a.splice(Math.max(0,Math.min(n,a.length)),0,o),{...e,objects:{...e.objects,[t]:{...s,componentIds:a}}}},Pt=(e,t,o)=>{const n=e.objects[t];if(!n)return e;const s={...e.components};return delete s[o],{...e,objects:{...e.objects,[t]:{...n,componentIds:n.componentIds.filter(r=>r!==o)}},components:s}},re=(e,t)=>e.components[t.id]?{...e,components:{...e.components,[t.id]:t}}:e,Fe=(e,t)=>e.objects[t.id]?{...e,objects:{...e.objects,[t.id]:t}}:e,Ie=(e,t)=>{const o=e.objects[t],n=(o==null?void 0:o.childObjectIds)??[],s=Object.values(e.objects).filter(a=>a.parentObjectId===t).map(a=>a.id);return[...new Set([...n,...s])].map(a=>e.objects[a]).filter(a=>!!a)},zt=(e,t,o)=>{var r;let n=o;const s=new Set;for(;n;){if(n===t||s.has(n))return!0;s.add(n),n=((r=e.objects[n])==null?void 0:r.parentObjectId)??null}return!1},me=(e,t)=>{const o=new Set(X(e,t).map(n=>n.type));return o.has("Transform")?"3d":o.has("ScreenTransform")?"2d":null},Ne=(e,t,o,n)=>{const s=e.objects[t];if(!s||o!==null&&!e.objects[o])return e;if(o!==null){const i=me(e,t),l=me(e,o);if(i&&l&&i!==l)return e}if(zt(e,t,o))return e;const r=s.parentObjectId??null;if(r===o&&o===null)return e;const a={...e.objects};if(r&&a[r]){const i=a[r];a[r]={...i,childObjectIds:(i.childObjectIds??[]).filter(l=>l!==t)}}if(a[t]={...s,parentObjectId:o},o){const i=a[o],l=(i.childObjectIds??[]).filter(f=>f!==t);l.splice(Math.max(0,Math.min(n??l.length,l.length)),0,t),a[o]={...i,childObjectIds:l}}return{...e,objects:a}},oe=Math.PI/180,V=180/Math.PI,z=e=>Number(e.toFixed(4)),jt=e=>(e==null?void 0:e.type)==="Transform",Ue=(e,t)=>X(e,t).find(jt)??null,_t=e=>(e==null?void 0:e.type)==="ScreenTransform",Ge=(e,t)=>X(e,t).find(_t)??null,Ct=e=>new d.Matrix4().compose(new d.Vector3(e.position.x,e.position.y,e.position.z),new d.Quaternion().setFromEuler(new d.Euler(e.rotation.x*oe,e.rotation.y*oe,e.rotation.z*oe)),new d.Vector3(e.scale.x,e.scale.y,e.scale.z)),Lt=(e,t)=>{const o=Ue(e,t);return o?Ct(o.settings):new d.Matrix4},se=(e,t)=>{const o=e.objects[t],n=Lt(e,t);return!(o!=null&&o.parentObjectId)||!e.objects[o.parentObjectId]?n:se(e,o.parentObjectId).multiply(n)},At=e=>{const t=H({transform:e,parentSize:j,snapIncrement:0});return new d.Matrix4().compose(new d.Vector3(...t.center),new d.Quaternion().setFromEuler(new d.Euler(...t.rotation)),new d.Vector3(...t.size))},ie=(e,t)=>{var r;const o=Ge(e,t),n=o?At(o.settings):new d.Matrix4,s=(r=e.objects[t])==null?void 0:r.parentObjectId;return!s||!e.objects[s]?n:ie(e,s).multiply(n)},Ft=(e,t)=>{const o=new d.Vector3,n=new d.Quaternion,s=new d.Vector3;e.decompose(o,n,s);const r=new d.Euler().setFromQuaternion(n);return{...t,position:{x:z(o.x),y:z(o.y),z:z(o.z)},rotation:{x:z(r.x*V),y:z(r.y*V),z:z(r.z*V)},scale:{x:z(s.x),y:z(s.y),z:z(s.z)}}},It=(e,t)=>{const o=new d.Vector3,n=new d.Quaternion,s=new d.Vector3;e.decompose(o,n,s);const r=new d.Euler().setFromQuaternion(n),a=G/t.referencePixelsPerUnit,i=Math.abs(s.x),l=Math.abs(s.y),f=(t.pivot[0]-.5)*i,h=(t.pivot[1]-.5)*l;return{...t,position:{x:z((o.x+f)/a),y:z((o.y+h)/a)},rotation:z(r.z*V),scale2D:{x:z(i/(t.size.width*a)),y:z(l/(t.size.height*a))}}},Nt=(e,t,o,n)=>{const s=Ue(e,t),r=Ge(e,t),a=s?se(e,t):r?ie(e,t):null,i=Ne(e,t,o,n);if(i===e||!a)return i;const f=(o?s?se(i,o):ie(i,o):new d.Matrix4).clone().invert().multiply(a);return r?re(i,{...r,settings:It(f,r.settings)}):s?re(i,{...s,settings:Ft(f,s.settings)}):i},Ut=(e,t,o)=>{const n=e.objects[t];return n?Fe(e,{...n,enabled:o}):e},Gt=(e,t)=>{const o=e.objects[t];if(!o)return e;const n=Ie(e,t).map(i=>i.id),s={...e.objects};delete s[t];const r=Object.fromEntries(Object.entries(s).map(([i,l])=>[i,n.includes(i)||l.parentObjectId===t?{...l,parentObjectId:null}:{...l,childObjectIds:(l.childObjectIds??[]).filter(f=>f!==t)}])),a={...e.components};for(const i of o.componentIds)delete a[i];return{...e,objects:r,components:a}},We=30,Wt=31,kt=(e,t=1)=>{const o=t+e;if(o<1||o>We)throw new RangeError(`Render-group layer ${o} is outside the supported range 1-30.`);return o},Xt=({renderer:e,scene:t,camera:o,layers:n,includeDefaultLayer:s=!0})=>{const r=o.layers.mask,a=e.autoClear;try{if(e.autoClear=!1,e.clear(!0,!0,!0),n.length===0){o.layers.set(0),e.render(t,o);return}n.forEach((i,l)=>{o.layers.set(i),s&&i!==0&&o.layers.enable(0),l>0&&e.clearDepth(),e.render(t,o)})}finally{o.layers.mask=r,e.autoClear=a}};exports.DEFAULT_PIXEL_SNAP_INCREMENT=Se;exports.DEFAULT_REFERENCE_PIXELS_PER_UNIT=G;exports.DEFAULT_SCREEN_GLASS=U;exports.DEFAULT_SCREEN_IMAGE_SCENE_SETTINGS=xt;exports.DEFAULT_SCREEN_IMAGE_SETTINGS=q;exports.DEFAULT_SCREEN_SHAPE_SETTINGS=W;exports.DEFAULT_SCREEN_TEXT_SCENE_SETTINGS=ve;exports.DEFAULT_SCREEN_TEXT_SHADOW_LAYER=Ee;exports.DEFAULT_SCREEN_TRANSFORM_2D=F;exports.DEFAULT_SCREEN_TRANSFORM_ROOT=j;exports.EXTERNAL_BACKGROUND_RENDER_LAYER=Wt;exports.MAX_RENDER_GROUP_PASSES=We;exports.PinToMesh=st;exports.ScreenGlassMaterial=Te;exports.ScreenShape=mt;exports.ScreenTransformFrame=ge;exports.addComponentToObject=Dt;exports.componentDefaults=Ae;exports.createDefaultComponent=wt;exports.createDefaultFaceMeshRendererSettings=_e;exports.createDefaultMaterialSettings=Ce;exports.createDefaultMeshRendererSettings=je;exports.createDefaultScreenImageSettings=Oe;exports.createDefaultScreenShapeSettings=ze;exports.createDefaultScreenTextSettings=Pe;exports.createDefaultScreenTransformSettings=De;exports.createDefaultTextureSettings=Le;exports.createDefaultTransformSettings=Re;exports.createOrderedComponentsSelector=Rt;exports.createSceneComponentId=we;exports.createSceneId=le;exports.createSceneObject=Mt;exports.createSceneObjectId=Me;exports.deleteSceneObject=Gt;exports.getOrderedComponents=X;exports.getRenderGroupLayer=kt;exports.getSceneObjectChildren=Ie;exports.mapScreenImageSettingsToProps=St;exports.mapScreenTextInnerShadowToProps=ye;exports.mapScreenTextSettingsToProps=Tt;exports.mergeScreenShapeSettings=be;exports.mergeScreenTransform2D=xe;exports.moveComponent=Ot;exports.normalizeScreenGlass=ce;exports.removeComponent=Pt;exports.renderSequentialPasses=Xt;exports.replaceSceneComponent=re;exports.replaceSceneObject=Fe;exports.resolveScreenTransform2D=H;exports.setSceneObjectParent=Ne;exports.setSceneObjectParentPreserveWorldTransform=Nt;exports.setSceneObjectVisible=Ut;