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

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 (883) hide show
  1. package/GROUNDING.md +7984 -120
  2. package/README.md +86 -52
  3. package/dist/CanonicalHeadFrame-D_0OzdB9.cjs +1 -0
  4. package/dist/CanonicalHeadFrame-DdUqF6Fv.js +1506 -0
  5. package/dist/DebuggerUI-CVuV-VJ5.cjs +1 -0
  6. package/dist/DebuggerUI-D-rcPa54.js +275 -0
  7. package/dist/FaceRetouch-C1AxBNex.js +1071 -0
  8. package/dist/FaceRetouch-D7kryDE6.cjs +134 -0
  9. package/dist/FaceSurface-CHAMEeG1.cjs +1 -0
  10. package/dist/FaceSurface-DmP9AEeC.js +27 -0
  11. package/dist/SkeletonUtils-C2r90MtN.js +21 -0
  12. package/dist/SkeletonUtils-CddIup1F.cjs +1 -0
  13. package/dist/TextLabel-XE0rQSDn.cjs +2 -0
  14. package/dist/TextLabel-c9BCucOI.js +961 -0
  15. package/dist/assets/cache.d.ts +99 -0
  16. package/dist/assets/estimate.d.ts +11 -0
  17. package/dist/assets/gltfLoader.d.ts +16 -0
  18. package/dist/assets/index.d.ts +7 -0
  19. package/dist/assets/loaders.d.ts +43 -0
  20. package/dist/assets/react.d.ts +33 -0
  21. package/dist/assets/sdkModels.d.ts +22 -0
  22. package/dist/audio/AudioEngine.d.ts +3 -1
  23. package/dist/audio/AudioPlayer.d.ts +29 -0
  24. package/dist/audio/AudioPlayerLogic.d.ts +4 -0
  25. package/dist/audio/index.d.ts +2 -0
  26. package/dist/body/__fixtures__/syntheticRig.d.ts +21 -0
  27. package/dist/body/bodyFlipGuard.d.ts +39 -0
  28. package/dist/body/bodyIdentity.d.ts +72 -0
  29. package/dist/body/bodyMask.d.ts +79 -0
  30. package/dist/body/bodyMaskMaterial.d.ts +15 -0
  31. package/dist/body/bodyPose.d.ts +58 -0
  32. package/dist/body/bodyRigFit.d.ts +148 -0
  33. package/dist/body/bodyRigSolver.d.ts +114 -0
  34. package/dist/body/bodySubject.d.ts +46 -0
  35. package/dist/body-pose/index.d.ts +521 -0
  36. package/dist/body-trigger/__fixtures__/syntheticBody.d.ts +83 -0
  37. package/dist/body-trigger/frame.d.ts +88 -0
  38. package/dist/body-trigger/index.d.ts +6 -0
  39. package/dist/body-trigger/moves.d.ts +235 -0
  40. package/dist/body-trigger/trigger.d.ts +75 -0
  41. package/dist/bodyMaskMaterial-CBWub5t_.cjs +68 -0
  42. package/dist/bodyMaskMaterial-Cs2awskk.js +207 -0
  43. package/dist/cache-2x3CUJuY.js +212 -0
  44. package/dist/cache-DL1Dbz6k.cjs +1 -0
  45. package/dist/calibration/calibration.d.ts +75 -0
  46. package/dist/calibration/index.d.ts +6 -0
  47. package/dist/calibration/storage.d.ts +13 -0
  48. package/dist/calibration/types.d.ts +53 -0
  49. package/dist/calibration/useXRCalibration.d.ts +46 -0
  50. package/dist/camera/CameraPermissionGate.d.ts +26 -0
  51. package/dist/camera/devices.d.ts +26 -0
  52. package/dist/camera/index.d.ts +8 -0
  53. package/dist/camera/permission.d.ts +86 -0
  54. package/dist/camera/useCameraPermission.d.ts +35 -0
  55. package/dist/canonicalFace-BHwyCx1c.js +9 -0
  56. package/dist/canonicalFace-C83I225R.cjs +1 -0
  57. package/dist/capabilities/detect.d.ts +45 -0
  58. package/dist/capabilities/index.d.ts +5 -0
  59. package/dist/capabilities/types.d.ts +120 -0
  60. package/dist/capabilities/useXRCapabilities.d.ts +18 -0
  61. package/dist/compat/environment.d.ts +5 -0
  62. package/dist/compat/index.d.ts +4 -0
  63. package/dist/compat/run.d.ts +18 -0
  64. package/dist/compat/scenarios.d.ts +10 -0
  65. package/dist/compat/types.d.ts +101 -0
  66. package/dist/components/Axes/index.d.ts +6 -0
  67. package/dist/components/BodyInstruction/BodyPoseHint.d.ts +63 -0
  68. package/dist/components/BodyInstruction/index.d.ts +76 -0
  69. package/dist/components/BodyInstruction/useBodyPose.d.ts +30 -0
  70. package/dist/components/BodyRig/BodyAttachment.d.ts +28 -0
  71. package/dist/components/BodyRig/BodyOccluder.d.ts +27 -0
  72. package/dist/components/BodyRig/bodyDepth.d.ts +57 -0
  73. package/dist/components/BodyRig/index.d.ts +129 -0
  74. package/dist/components/BodyRig/useBodyDepthTexture.d.ts +40 -0
  75. package/dist/components/BodyTracker/index.d.ts +26 -1
  76. package/dist/components/BodyTrigger/index.d.ts +56 -0
  77. package/dist/components/Debugger/DebuggerProvider.d.ts +14 -1
  78. package/dist/components/Debugger/DebuggerUI.d.ts +3 -1
  79. package/dist/components/FaceAtlas/FaceAtlasLayer.d.ts +114 -0
  80. package/dist/components/FaceAtlas/MadeUpCamera.d.ts +80 -0
  81. package/dist/components/FaceAtlas/constants.d.ts +8 -0
  82. package/dist/components/FaceAtlas/index.d.ts +7 -0
  83. package/dist/components/FaceAtlas/useFaceAtlasSurface.d.ts +84 -0
  84. package/dist/components/FaceAtlas/useFaceSkin.d.ts +84 -0
  85. package/dist/components/FaceCharacter/ExternalFaceMesh.d.ts +109 -0
  86. package/dist/components/FaceCharacter/FaceExpressionController.d.ts +53 -0
  87. package/dist/components/FaceCharacter/FaceMorph.d.ts +71 -0
  88. package/dist/components/FaceCharacter/FacePiercing.d.ts +65 -0
  89. package/dist/components/FaceCharacter/FaceReprojection.d.ts +85 -0
  90. package/dist/components/FaceCharacter/FaceRig.d.ts +38 -0
  91. package/dist/components/FaceCharacter/FaceSurface.d.ts +49 -0
  92. package/dist/components/FaceCharacter/FaceSurfaceOccluder.d.ts +39 -0
  93. package/dist/components/FaceCharacter/PinToFaceMesh.d.ts +68 -0
  94. package/dist/components/FaceCharacter/index.d.ts +18 -0
  95. package/dist/components/FaceCharacter/useFaceReprojector.d.ts +10 -0
  96. package/dist/components/FaceInset/FaceInset.d.ts +68 -0
  97. package/dist/components/FaceInset/frame.d.ts +94 -0
  98. package/dist/components/FaceInset/index.d.ts +6 -0
  99. package/dist/components/FaceInset/material.d.ts +40 -0
  100. package/dist/components/FaceInset/useFaceInsetTexture.d.ts +37 -0
  101. package/dist/components/FaceInstruction/FaceExpressionHint.d.ts +43 -0
  102. package/dist/components/FaceInstruction/index.d.ts +56 -0
  103. package/dist/components/FaceInstruction/useFaceExpression.d.ts +20 -0
  104. package/dist/components/FaceLiquify/FaceLiquify.d.ts +49 -0
  105. package/dist/components/FaceLiquify/debug.d.ts +37 -0
  106. package/dist/components/FaceLiquify/frame.d.ts +55 -0
  107. package/dist/components/FaceLiquify/index.d.ts +10 -0
  108. package/dist/components/FaceLiquify/material.d.ts +39 -0
  109. package/dist/components/FaceLiquify/pass.d.ts +49 -0
  110. package/dist/components/FaceLiquify/presence.d.ts +25 -0
  111. package/dist/components/FaceLiquify/presets.d.ts +82 -0
  112. package/dist/components/FaceLiquify/selfTest.d.ts +66 -0
  113. package/dist/components/FaceLiquify/target.d.ts +85 -0
  114. package/dist/components/FaceLiquify/warp.d.ts +72 -0
  115. package/dist/components/FaceMesh/FaceMeshRenderer.d.ts +25 -0
  116. package/dist/components/FaceMesh/canonical/CanonicalFaceMeshRenderer.d.ts +67 -3
  117. package/dist/components/FaceMesh/canonical/FaceMeshMaterial.d.ts +25 -0
  118. package/dist/components/FaceMesh/canonical/assets.d.ts +3 -0
  119. package/dist/components/FaceMesh/canonical/geometryGroups.d.ts +30 -0
  120. package/dist/components/FaceMesh/canonical/parseCanonicalFaceModel.d.ts +24 -0
  121. package/dist/components/FaceMesh/canonical/shaders.d.ts +2 -0
  122. package/dist/components/FaceMesh/deform.d.ts +3 -0
  123. package/dist/components/FaceMesh/index.d.ts +6 -1
  124. package/dist/components/FaceMesh/material/defaults.d.ts +70 -0
  125. package/dist/components/FaceMesh/material/index.d.ts +1 -0
  126. package/dist/components/FaceMesh/material/options.d.ts +5 -1
  127. package/dist/components/FaceMesh/material/support.d.ts +7 -2
  128. package/dist/components/FaceMesh/material/textures.d.ts +4 -0
  129. package/dist/components/FaceMesh/material/types.d.ts +2 -2
  130. package/dist/components/FaceRetouch/Background.d.ts +7 -6
  131. package/dist/components/FaceRetouch/FaceRetouch.d.ts +52 -0
  132. package/dist/components/FaceRetouch/index.d.ts +2 -8
  133. package/dist/components/FaceRetouch/landmarkMask.d.ts +0 -5
  134. package/dist/components/FaceRetouch/renderState.d.ts +19 -0
  135. package/dist/components/FaceRetouch/useFaceRetouchMask.d.ts +3 -7
  136. package/dist/components/FaceSwap/FaceMirror.d.ts +46 -0
  137. package/dist/components/FaceSwap/FaceSwap.d.ts +58 -0
  138. package/dist/components/FaceSwap/FaceTextureLayer.d.ts +72 -0
  139. package/dist/components/FaceSwap/faceSwapPlan.d.ts +91 -0
  140. package/dist/components/FaceSwap/index.d.ts +13 -0
  141. package/dist/components/FaceSwap/settings.d.ts +300 -0
  142. package/dist/components/FaceSwap/useFaceTexture.d.ts +35 -0
  143. package/dist/components/FaceSwap/useLiveFace.d.ts +38 -0
  144. package/dist/components/FaceSwap/useLiveFaceTexture.d.ts +31 -0
  145. package/dist/components/FaceTracker/index.d.ts +5 -3
  146. package/dist/components/FaceWarp3D/FaceWarp3D.d.ts +50 -0
  147. package/dist/components/FaceWarp3D/index.d.ts +2 -3
  148. package/dist/components/Faceless/Faceless.d.ts +51 -0
  149. package/dist/components/Faceless/index.d.ts +2 -0
  150. package/dist/components/GestureListener/index.d.ts +11 -0
  151. package/dist/components/HairLock/HairLock.d.ts +39 -0
  152. package/dist/components/HairLock/index.d.ts +2 -0
  153. package/dist/components/HairLock/lockGeometry.d.ts +15 -0
  154. package/dist/components/HandCutout/index.d.ts +35 -0
  155. package/dist/components/HandEffect/index.d.ts +36 -0
  156. package/dist/components/HandInstruction/HandGestureHint.d.ts +70 -0
  157. package/dist/components/HandInstruction/index.d.ts +74 -0
  158. package/dist/components/HandInstruction/useHandGesture.d.ts +22 -0
  159. package/dist/components/HandJoints2D/index.d.ts +1 -1
  160. package/dist/components/HandRig/ForearmOccluder.d.ts +29 -0
  161. package/dist/components/HandRig/HandAttachment.d.ts +34 -0
  162. package/dist/components/HandRig/HandNails.d.ts +61 -0
  163. package/dist/components/HandRig/HandOccluder.d.ts +45 -0
  164. package/dist/components/HandRig/HandTattoo.d.ts +61 -0
  165. package/dist/components/HandRig/WristAttachment.d.ts +34 -0
  166. package/dist/components/HandRig/index.d.ts +127 -0
  167. package/dist/components/HandRig/useArmMask.d.ts +29 -0
  168. package/dist/components/HandRig/wristSolve.d.ts +96 -0
  169. package/dist/components/HandTouch/HandTouch.d.ts +62 -0
  170. package/dist/components/HandTouch/Touchable.d.ts +36 -0
  171. package/dist/components/HandTouch/index.d.ts +2 -0
  172. package/dist/components/HandTracker/index.d.ts +10 -0
  173. package/dist/components/HandTracking2D/HandVisual.d.ts +1 -1
  174. package/dist/components/HandTracking2D/index.d.ts +1 -1
  175. package/dist/components/HandTracking2DController/index.d.ts +1 -1
  176. package/dist/components/HandTracking3D/index.d.ts +1 -1
  177. package/dist/components/HeadBinding/index.d.ts +14 -0
  178. package/dist/components/HeadOccluder/CanonicalHeadFrame.d.ts +22 -0
  179. package/dist/components/HeadOccluder/Earrings.d.ts +55 -0
  180. package/dist/components/HeadOccluder/HeadAttachment.d.ts +38 -0
  181. package/dist/components/HeadOccluder/NeckOccluder.d.ts +67 -0
  182. package/dist/components/HeadOccluder/earringPlacement.d.ts +31 -0
  183. package/dist/components/HeadOccluder/headAttachmentPoints.d.ts +69 -0
  184. package/dist/components/HeadOccluder/index.d.ts +57 -3
  185. package/dist/components/HeadOccluder/useCanonicalHeadFit.d.ts +36 -0
  186. package/dist/components/HeadOccluder/useLandmarkPoseFit.d.ts +80 -0
  187. package/dist/components/HolisticTracker/index.d.ts +69 -0
  188. package/dist/components/HolisticTracker/settings.d.ts +58 -0
  189. package/dist/components/HolisticTracker/signals.d.ts +49 -0
  190. package/dist/components/Instruction/HintStage.d.ts +29 -0
  191. package/dist/components/Instruction/InstructionCue.d.ts +126 -0
  192. package/dist/components/Instruction/gestureHold.d.ts +20 -0
  193. package/dist/components/Instruction/ghost.d.ts +129 -0
  194. package/dist/components/Instruction/hintBlend.d.ts +19 -0
  195. package/dist/components/Instruction/hintLook.d.ts +81 -0
  196. package/dist/components/Instruction/hintLoop.d.ts +36 -0
  197. package/dist/components/Instruction/index.d.ts +41 -0
  198. package/dist/components/Instruction/useGhostModel.d.ts +33 -0
  199. package/dist/components/Instruction/useInstructionHold.d.ts +72 -0
  200. package/dist/components/IrisEffect/IrisMaterial.d.ts +73 -0
  201. package/dist/components/IrisEffect/index.d.ts +51 -0
  202. package/dist/components/IrisEffect/settings.d.ts +117 -0
  203. package/dist/components/LightObject/index.d.ts +20 -0
  204. package/dist/components/LipEffect/LipEffect.d.ts +28 -0
  205. package/dist/components/LipEffect/LipEffectMaterial.d.ts +98 -0
  206. package/dist/components/LipEffect/LipEffects.d.ts +12 -0
  207. package/dist/components/LipEffect/defaults.d.ts +51 -0
  208. package/dist/components/LipEffect/index.d.ts +12 -0
  209. package/dist/components/LipEffect/lipShading.d.ts +73 -0
  210. package/dist/components/LipEffect/settings.d.ts +375 -0
  211. package/dist/components/LipEffect/shader.d.ts +39 -0
  212. package/dist/components/LipEffect/types.d.ts +141 -0
  213. package/dist/components/LipEffect/useLipDesignTextures.d.ts +17 -0
  214. package/dist/components/LipEffect/uvGuide.d.ts +74 -0
  215. package/dist/components/LookAt/index.d.ts +23 -0
  216. package/dist/components/Makeup/Blush.d.ts +18 -0
  217. package/dist/components/Makeup/Brows.d.ts +20 -0
  218. package/dist/components/Makeup/Contour.d.ts +17 -0
  219. package/dist/components/Makeup/Eyeliner.d.ts +20 -0
  220. package/dist/components/Makeup/Eyeshadow.d.ts +20 -0
  221. package/dist/components/Makeup/Highlighter.d.ts +18 -0
  222. package/dist/components/Makeup/MakeupDesign.d.ts +37 -0
  223. package/dist/components/Makeup/MakeupRegion.d.ts +132 -0
  224. package/dist/components/Makeup/constants.d.ts +44 -0
  225. package/dist/components/Makeup/design.d.ts +106 -0
  226. package/dist/components/Makeup/designSamples.d.ts +42 -0
  227. package/dist/components/Makeup/eyes.d.ts +114 -0
  228. package/dist/components/Makeup/fields.d.ts +10 -0
  229. package/dist/components/Makeup/geometry.d.ts +106 -0
  230. package/dist/components/Makeup/index.d.ts +26 -0
  231. package/dist/components/Makeup/looks.d.ts +28 -0
  232. package/dist/components/Makeup/material.d.ts +239 -0
  233. package/dist/components/Makeup/settings.d.ts +54 -0
  234. package/dist/components/Makeup/shades.d.ts +143 -0
  235. package/dist/components/Makeup/shapes.d.ts +27 -0
  236. package/dist/components/Makeup/skinTone.d.ts +135 -0
  237. package/dist/components/Makeup/types.d.ts +110 -0
  238. package/dist/components/Makeup/useMakeupSkinTone.d.ts +40 -0
  239. package/dist/components/MeshRenderer/index.d.ts +59 -0
  240. package/dist/components/Necklace/Necklace.d.ts +44 -0
  241. package/dist/components/Necklace/index.d.ts +1 -0
  242. package/dist/components/ParticleEmitter/ParticleEmitter.d.ts +69 -0
  243. package/dist/components/ParticleEmitter/index.d.ts +1 -0
  244. package/dist/components/PersonCutout/index.d.ts +46 -0
  245. package/dist/components/PersonCutout/personCutout.d.ts +16 -0
  246. package/dist/components/PersonCutout/personMask.d.ts +19 -0
  247. package/dist/components/PersonCutout/useBodyMaskTexture.d.ts +35 -0
  248. package/dist/components/PerspectiveCamera/index.d.ts +2 -8
  249. package/dist/components/PinToMesh/index.d.ts +47 -0
  250. package/dist/components/RenderGroupLayer/index.d.ts +6 -0
  251. package/dist/components/SceneObjectRenderer/index.d.ts +23 -0
  252. package/dist/components/Screen2D/ScreenTransformFrame.d.ts +11 -0
  253. package/dist/components/Screen2D/ScreenTransformHelpers.d.ts +19 -0
  254. package/dist/components/Screen2D/ScreenTransformInteraction.d.ts +18 -0
  255. package/dist/components/Screen2D/index.d.ts +5 -0
  256. package/dist/components/ScreenGlass/defaults.d.ts +3 -0
  257. package/dist/components/ScreenGlass/index.d.ts +5 -0
  258. package/dist/components/ScreenGlass/shaders.d.ts +2 -0
  259. package/dist/components/ScreenGlass/types.d.ts +10 -0
  260. package/dist/components/ScreenGradient/defaults.d.ts +5 -0
  261. package/dist/components/ScreenGradient/index.d.ts +5 -0
  262. package/dist/components/ScreenGradient/shaders.d.ts +2 -0
  263. package/dist/components/ScreenGradient/types.d.ts +19 -0
  264. package/dist/components/ScreenImage/ScreenImage.d.ts +4 -0
  265. package/dist/components/ScreenImage/components/DynamicTextureSync.d.ts +9 -0
  266. package/dist/components/ScreenImage/components/ScreenImageBody.d.ts +9 -0
  267. package/dist/components/ScreenImage/components/ScreenImageFrame.d.ts +9 -0
  268. package/dist/components/ScreenImage/components/ScreenImageTransformFrame.d.ts +9 -0
  269. package/dist/components/ScreenImage/fit.d.ts +52 -0
  270. package/dist/components/ScreenImage/index.d.ts +10 -87
  271. package/dist/components/ScreenImage/materials/ScreenImageBlendMaterial.d.ts +9 -0
  272. package/dist/components/ScreenImage/materials/ScreenImageMaskMaterial.d.ts +11 -0
  273. package/dist/components/ScreenImage/materials/ScreenImageMatcap.d.ts +3 -0
  274. package/dist/components/ScreenImage/source.d.ts +25 -0
  275. package/dist/components/ScreenImage/types.d.ts +64 -0
  276. package/dist/components/ScreenImage/utils/ScreenImageConstants.d.ts +9 -0
  277. package/dist/components/ScreenImage/utils/ScreenImageHelpers.d.ts +4 -0
  278. package/dist/components/ScreenShape/geometry.d.ts +5 -0
  279. package/dist/components/ScreenShape/index.d.ts +5 -0
  280. package/dist/components/ScreenShape/types.d.ts +54 -0
  281. package/dist/components/ScreenSpaceUI/ScreenTransformGuide.d.ts +15 -0
  282. package/dist/components/ScreenSpaceUI/ScreenTransformOverlayGuide.d.ts +9 -0
  283. package/dist/components/ScreenSpaceUI/index.d.ts +3 -0
  284. package/dist/components/ScreenText/components/ScreenTextBody.d.ts +2 -0
  285. package/dist/components/ScreenText/components/ScreenTextTransformFrame.d.ts +9 -0
  286. package/dist/components/ScreenText/constants.d.ts +5 -0
  287. package/dist/components/ScreenText/index.d.ts +6 -20
  288. package/dist/components/ScreenText/types.d.ts +31 -0
  289. package/dist/components/ScreenText/utils/ScreenTextHelpers.d.ts +14 -0
  290. package/dist/components/ScreenText/utils/ScreenTextMappings.d.ts +17 -0
  291. package/dist/components/SegmentationOverlay/SegmentationOverlay.d.ts +37 -0
  292. package/dist/components/SegmentationOverlay/SegmentationOverlayMaterial.d.ts +31 -0
  293. package/dist/components/SegmentationOverlay/index.d.ts +9 -0
  294. package/dist/components/SegmentationOverlay/maskTexture.d.ts +23 -0
  295. package/dist/components/SegmentationOverlay/providers.d.ts +72 -0
  296. package/dist/components/SegmentationOverlay/settings.d.ts +65 -0
  297. package/dist/components/SequentialRenderPasses/index.d.ts +6 -0
  298. package/dist/components/ShoulderOccluder/index.d.ts +46 -0
  299. package/dist/components/ShoulderOccluder/useCanonicalTorsoFit.d.ts +27 -0
  300. package/dist/components/SpringSwing/SpringSwing.d.ts +22 -0
  301. package/dist/components/SpringSwing/index.d.ts +1 -0
  302. package/dist/components/TextLabel/TextLabel.d.ts +5 -0
  303. package/dist/components/TextLabel/alignment.d.ts +4 -0
  304. package/dist/components/TextLabel/bend.d.ts +9 -0
  305. package/dist/components/TextLabel/canvas/buildTextLabelTexture.d.ts +4 -0
  306. package/dist/components/TextLabel/canvas/canvasTypography.d.ts +13 -0
  307. package/dist/components/TextLabel/canvas/drawBackground.d.ts +21 -0
  308. package/dist/components/TextLabel/canvas/drawEffects.d.ts +34 -0
  309. package/dist/components/TextLabel/canvas/drawText.d.ts +19 -0
  310. package/dist/components/TextLabel/components/TextLabelMesh.d.ts +13 -0
  311. package/dist/components/TextLabel/constants.d.ts +2 -0
  312. package/dist/components/TextLabel/hooks/useTextLabelTexture.d.ts +7 -0
  313. package/dist/components/TextLabel/index.d.ts +2 -161
  314. package/dist/components/TextLabel/layout/measurement.d.ts +8 -0
  315. package/dist/components/TextLabel/layout/resolveTextLayout.d.ts +25 -0
  316. package/dist/components/TextLabel/layout/wrapText.d.ts +6 -0
  317. package/dist/components/TextLabel/types.d.ts +337 -0
  318. package/dist/components/TrackingAnchor/index.d.ts +18 -2
  319. package/dist/components/Transform3D/index.d.ts +30 -0
  320. package/dist/components/XRMediaSurface/index.d.ts +8 -7
  321. package/dist/components/XRProvider/index.d.ts +16 -2
  322. package/dist/components/XRScene/renderOutputTarget.d.ts +12 -0
  323. package/dist/components/XRViewport/XRViewport.d.ts +11 -0
  324. package/dist/components/XRViewport/components/HiddenMedia.d.ts +7 -0
  325. package/dist/components/XRViewport/components/MediaAssetPicker.d.ts +8 -0
  326. package/dist/components/XRViewport/components/MediaControlStack.d.ts +13 -0
  327. package/dist/components/XRViewport/components/XRViewportLayers.d.ts +30 -0
  328. package/dist/components/XRViewport/constants.d.ts +24 -0
  329. package/dist/components/XRViewport/contexts.d.ts +6 -0
  330. package/dist/components/XRViewport/hooks/useViewportExternalFaces.d.ts +13 -0
  331. package/dist/components/XRViewport/hooks/useViewportMediaSource.d.ts +16 -0
  332. package/dist/components/XRViewport/hooks/useViewportMediaTexture.d.ts +10 -0
  333. package/dist/components/XRViewport/hooks/useViewportPipeline.d.ts +41 -0
  334. package/dist/components/XRViewport/hooks/useViewportRenderState.d.ts +47 -0
  335. package/dist/components/XRViewport/index.d.ts +3 -118
  336. package/dist/components/XRViewport/layout.d.ts +16 -0
  337. package/dist/components/XRViewport/slots.d.ts +16 -0
  338. package/dist/components/XRViewport/types.d.ts +89 -0
  339. package/dist/components/XRViewport/useViewportSize.d.ts +3 -0
  340. package/dist/components/index.d.ts +24 -0
  341. package/dist/components/occluder/skinnedOccluder.d.ts +39 -0
  342. package/dist/config/index.d.ts +1 -1
  343. package/dist/constants/index.d.ts +4 -1
  344. package/dist/context-DTxSQvp4.js +13 -0
  345. package/dist/context-hA0Rb2Xa.cjs +1 -0
  346. package/dist/contexts-DQc7zyqT.cjs +1 -0
  347. package/dist/contexts-Y_FhdnIv.js +667 -0
  348. package/dist/coordinates/feed.d.ts +52 -0
  349. package/dist/coordinates/index.d.ts +7 -0
  350. package/dist/coordinates/side.d.ts +40 -0
  351. package/dist/coordinates/spaces.d.ts +49 -0
  352. package/dist/coordinates/viewport.d.ts +22 -0
  353. package/dist/coordinates/world.d.ts +15 -0
  354. package/dist/debug-ui/component-editor/index.d.ts +19 -0
  355. package/dist/debug-ui/default-setting.cjs +2 -2
  356. package/dist/debug-ui/face-mesh-renderer-settings/index.d.ts +8 -0
  357. package/dist/debug-ui/face-retouch/index.d.ts +11 -0
  358. package/dist/debug-ui/face-swap-settings/index.d.ts +22 -0
  359. package/dist/debug-ui/gesture-settings/index.d.ts +14 -0
  360. package/dist/debug-ui/hand-joints-2d/index.d.ts +1 -1
  361. package/dist/debug-ui/hand-tracking-2d/index.d.ts +1 -1
  362. package/dist/debug-ui/hand-tracking-2d-controller/index.d.ts +1 -1
  363. package/dist/debug-ui/hand-tracking-3d/index.d.ts +1 -1
  364. package/dist/debug-ui/hierarchy-panel/index.d.ts +30 -0
  365. package/dist/debug-ui/holistic-tracker-settings/index.d.ts +16 -0
  366. package/dist/debug-ui/index.d.ts +43 -5
  367. package/dist/debug-ui/iris-effect-settings/index.d.ts +12 -0
  368. package/dist/debug-ui/layer-panel/index.d.ts +3 -2
  369. package/dist/debug-ui/lip-effect-settings/index.d.ts +15 -0
  370. package/dist/debug-ui/media-source/index.d.ts +4 -2
  371. package/dist/debug-ui/media-source/media-preset.d.ts +12 -0
  372. package/dist/debug-ui/media-source/session.d.ts +40 -0
  373. package/dist/debug-ui/media-source.cjs +1 -1
  374. package/dist/debug-ui/media-source.js +8 -4
  375. package/dist/debug-ui/mesh-renderer-settings/index.d.ts +6 -0
  376. package/dist/debug-ui/object-inspector-panel/index.d.ts +26 -0
  377. package/dist/debug-ui/pin-to-mesh-settings/index.d.ts +10 -0
  378. package/dist/debug-ui/product-hotspots/index.d.ts +25 -0
  379. package/dist/debug-ui/scene-editor/context.d.ts +38 -0
  380. package/dist/debug-ui/scene-editor/hierarchy-panel.d.ts +11 -0
  381. package/dist/debug-ui/scene-editor/index.d.ts +11 -0
  382. package/dist/debug-ui/scene-editor/inspector-panel.d.ts +9 -0
  383. package/dist/debug-ui/scene-editor/store-utils.d.ts +2 -0
  384. package/dist/debug-ui/scene-editor/viewport-toolbar.d.ts +4 -0
  385. package/dist/debug-ui/scene-editor/viewport.d.ts +21 -0
  386. package/dist/debug-ui/screen-glass-settings/index.d.ts +6 -0
  387. package/dist/debug-ui/screen-gradient-settings/GradientStopsEditor.d.ts +5 -0
  388. package/dist/debug-ui/screen-gradient-settings/index.d.ts +6 -0
  389. package/dist/debug-ui/screen-gradient-settings/styles.d.ts +3 -0
  390. package/dist/debug-ui/screen-image-settings/index.d.ts +6 -2
  391. package/dist/debug-ui/screen-shape-settings/index.d.ts +6 -0
  392. package/dist/debug-ui/screen-text-settings/NumberField.d.ts +9 -0
  393. package/dist/debug-ui/screen-text-settings/ScreenTextSettingsPanel.d.ts +3 -0
  394. package/dist/debug-ui/screen-text-settings/controls/NestedSection.d.ts +7 -0
  395. package/dist/debug-ui/screen-text-settings/controls/Section.d.ts +8 -0
  396. package/dist/debug-ui/screen-text-settings/controls/icons.d.ts +4 -0
  397. package/dist/debug-ui/screen-text-settings/index.d.ts +2 -122
  398. package/dist/debug-ui/screen-text-settings/sections/BackgroundSection.d.ts +8 -0
  399. package/dist/debug-ui/screen-text-settings/sections/ContentSection.d.ts +5 -0
  400. package/dist/debug-ui/screen-text-settings/sections/EffectsSection.d.ts +25 -0
  401. package/dist/debug-ui/screen-text-settings/sections/StyleSection.d.ts +5 -0
  402. package/dist/debug-ui/screen-text-settings/sections/TransformSection.d.ts +5 -0
  403. package/dist/debug-ui/screen-text-settings/sections/background/BackgroundFillControls.d.ts +2 -0
  404. package/dist/debug-ui/screen-text-settings/sections/background/BackgroundSizeControls.d.ts +2 -0
  405. package/dist/debug-ui/screen-text-settings/sections/background/BackgroundStrokeControls.d.ts +2 -0
  406. package/dist/debug-ui/screen-text-settings/sections/background/types.d.ts +7 -0
  407. package/dist/debug-ui/screen-text-settings/sections/effects/BendEffectSection.d.ts +4 -0
  408. package/dist/debug-ui/screen-text-settings/sections/effects/EffectChrome.d.ts +21 -0
  409. package/dist/debug-ui/screen-text-settings/sections/effects/GlowEffectSection.d.ts +4 -0
  410. package/dist/debug-ui/screen-text-settings/sections/effects/InnerShadowEffectSection.d.ts +4 -0
  411. package/dist/debug-ui/screen-text-settings/sections/effects/OutlineEffectSection.d.ts +4 -0
  412. package/dist/debug-ui/screen-text-settings/sections/effects/ShadowEffectSection.d.ts +4 -0
  413. package/dist/debug-ui/screen-text-settings/sections/effects/types.d.ts +14 -0
  414. package/dist/debug-ui/screen-text-settings/settings.d.ts +90 -0
  415. package/dist/debug-ui/screen-text-settings/styles.d.ts +26 -0
  416. package/dist/debug-ui/screen-text-settings/transform.d.ts +6 -0
  417. package/dist/debug-ui/screen-text-settings/types.d.ts +11 -0
  418. package/dist/debug-ui/segmentation-overlay-settings/index.d.ts +12 -0
  419. package/dist/debug-ui/settings-panel/index.d.ts +6 -1
  420. package/dist/debug-ui/shared/ScreenTransformSection.d.ts +6 -3
  421. package/dist/debug-ui/shared/debugWindow.d.ts +51 -0
  422. package/dist/debug-ui/transform-3d-settings/index.d.ts +11 -0
  423. package/dist/debug-ui/xr-diagnostics/index.d.ts +26 -0
  424. package/dist/debug-ui.cjs +3 -13
  425. package/dist/debug-ui.js +8166 -5178
  426. package/dist/detector-K8aej4MB.js +59 -0
  427. package/dist/detector-ijypGtse.cjs +1 -0
  428. package/dist/drawNormalizedCrop-C4KFaRne.cjs +1 -0
  429. package/dist/drawNormalizedCrop-DG3gtJxf.js +135 -0
  430. package/dist/entries/all.d.ts +4 -1
  431. package/dist/entries/core.d.ts +74 -8
  432. package/dist/entries/face-effects.d.ts +130 -12
  433. package/dist/entries/instructions.d.ts +48 -0
  434. package/dist/entries/internal.d.ts +5 -2
  435. package/dist/entries/low-level.d.ts +101 -6
  436. package/dist/entries/particles.d.ts +15 -0
  437. package/dist/entries/product.d.ts +11 -0
  438. package/dist/entries/scene-object.d.ts +10 -0
  439. package/dist/entries/tracking.d.ts +110 -2
  440. package/dist/face-action/index.d.ts +34 -0
  441. package/dist/face-atlas/attributes.d.ts +30 -0
  442. package/dist/face-atlas/eyes.d.ts +272 -0
  443. package/dist/face-atlas/faceAtlas.generated.d.ts +46 -0
  444. package/dist/face-atlas/glsl/atlasVertex.d.ts +46 -0
  445. package/dist/face-atlas/glsl/common.d.ts +55 -0
  446. package/dist/face-atlas/glsl/design.d.ts +49 -0
  447. package/dist/face-atlas/glsl/eyes.d.ts +73 -0
  448. package/dist/face-atlas/glsl/finish.d.ts +24 -0
  449. package/dist/face-atlas/glsl/format.d.ts +4 -0
  450. package/dist/face-atlas/glsl/index.d.ts +59 -0
  451. package/dist/face-atlas/glsl/shading.d.ts +15 -0
  452. package/dist/face-atlas/glsl/shapes.d.ts +66 -0
  453. package/dist/face-atlas/glsl/sparkle.d.ts +19 -0
  454. package/dist/face-atlas/glsl/uniforms.d.ts +106 -0
  455. package/dist/face-atlas/guide.d.ts +51 -0
  456. package/dist/face-atlas/index.d.ts +25 -0
  457. package/dist/face-atlas/lead.d.ts +117 -0
  458. package/dist/face-atlas/madeUpCamera.d.ts +125 -0
  459. package/dist/face-atlas/masks.d.ts +53 -0
  460. package/dist/face-atlas/obj.d.ts +69 -0
  461. package/dist/face-atlas/polylines.d.ts +63 -0
  462. package/dist/face-atlas/probe/FaceSkinProbe.d.ts +208 -0
  463. package/dist/face-atlas/probe/__fixtures__/emulate.d.ts +9 -0
  464. package/dist/face-atlas/probe/__fixtures__/face.d.ts +24 -0
  465. package/dist/face-atlas/probe/constants.d.ts +137 -0
  466. package/dist/face-atlas/probe/glsl.d.ts +43 -0
  467. package/dist/face-atlas/probe/lightFit.d.ts +108 -0
  468. package/dist/face-atlas/probe/schedule.d.ts +44 -0
  469. package/dist/face-atlas/probe/selfTest.d.ts +87 -0
  470. package/dist/face-atlas/probe/stats.d.ts +143 -0
  471. package/dist/face-atlas/probe/targets.d.ts +70 -0
  472. package/dist/face-atlas/probe/unwrap.d.ts +76 -0
  473. package/dist/face-atlas/quality.d.ts +28 -0
  474. package/dist/face-atlas/regions.d.ts +31 -0
  475. package/dist/face-atlas/registry.d.ts +252 -0
  476. package/dist/face-atlas/renderState.d.ts +86 -0
  477. package/dist/face-atlas/selfOcclusion.d.ts +62 -0
  478. package/dist/face-atlas/shading.d.ts +406 -0
  479. package/dist/face-atlas/shapes.d.ts +86 -0
  480. package/dist/face-atlas/sides.d.ts +41 -0
  481. package/dist/face-atlas/skinMask.d.ts +35 -0
  482. package/dist/face-atlas/surface.d.ts +155 -0
  483. package/dist/face-atlas/topology.d.ts +44 -0
  484. package/dist/face-attribute-expression/index.d.ts +10 -0
  485. package/dist/face-character/__fixtures__/faceImageDetections.d.ts +25 -0
  486. package/dist/face-character/__fixtures__/faceNode.d.ts +22 -0
  487. package/dist/face-character/bindFaceModel.d.ts +106 -0
  488. package/dist/face-character/canonicalFace.d.ts +17 -0
  489. package/dist/face-character/canonicalFaceGeometry.d.ts +11 -0
  490. package/dist/face-character/canonicalFacePositions.d.ts +7 -0
  491. package/dist/face-character/driveFaceModel.d.ts +57 -0
  492. package/dist/face-character/expressionOutputs.d.ts +45 -0
  493. package/dist/face-character/faceExpressions.d.ts +104 -0
  494. package/dist/face-character/faceImageLandmarker.d.ts +93 -0
  495. package/dist/face-character/faceMeshBinding.d.ts +62 -0
  496. package/dist/face-character/faceMorph.d.ts +77 -0
  497. package/dist/face-character/faceMorphs.d.ts +46 -0
  498. package/dist/face-character/facePhoto.d.ts +138 -0
  499. package/dist/face-character/facePiercings.d.ts +116 -0
  500. package/dist/face-character/facePin.d.ts +131 -0
  501. package/dist/face-character/faceReprojection.d.ts +273 -0
  502. package/dist/face-character/faceReprojector.d.ts +171 -0
  503. package/dist/face-character/faceRig.d.ts +176 -0
  504. package/dist/face-character/faceSwapPresence.d.ts +85 -0
  505. package/dist/face-character/faceTexture.d.ts +169 -0
  506. package/dist/face-character/faceTextureBaker.d.ts +86 -0
  507. package/dist/face-character/faceTextureGuide.d.ts +106 -0
  508. package/dist/face-character/faceTextureStats.d.ts +298 -0
  509. package/dist/face-character/faceTransfer.d.ts +396 -0
  510. package/dist/face-character/faceTransferGeometry.d.ts +109 -0
  511. package/dist/face-character/faceTransferSelfTest.d.ts +94 -0
  512. package/dist/face-character/faceWarp3D.d.ts +101 -0
  513. package/dist/face-character/faceless.d.ts +79 -0
  514. package/dist/face-character/featureWarp.d.ts +28 -0
  515. package/dist/face-character/liveFaceRegistry.d.ts +370 -0
  516. package/dist/face-character/liveValue.d.ts +12 -0
  517. package/dist/face-character/memo.d.ts +15 -0
  518. package/dist/face-effects.cjs +2271 -289
  519. package/dist/face-effects.js +14240 -3562
  520. package/dist/face-expression/index.d.ts +182 -0
  521. package/dist/face-info/blendshapes.d.ts +3 -0
  522. package/dist/face-info/derive.d.ts +8 -0
  523. package/dist/face-info/drawFaceCrop.d.ts +10 -0
  524. package/dist/face-info/getFaceInfo.d.ts +8 -0
  525. package/dist/face-info/index.d.ts +8 -0
  526. package/dist/face-info/landmarks.d.ts +35 -0
  527. package/dist/face-info/types.d.ts +69 -0
  528. package/dist/gestures/definitions.d.ts +98 -0
  529. package/dist/gestures/detector.d.ts +87 -0
  530. package/dist/gestures/index.d.ts +8 -0
  531. package/dist/gestures/measures.d.ts +114 -0
  532. package/dist/gestures/settings.d.ts +49 -0
  533. package/dist/getFaceInfo-BafgGT27.js +62 -0
  534. package/dist/getFaceInfo-BzlwHMjX.cjs +1 -0
  535. package/dist/hand/armFit.d.ts +46 -0
  536. package/dist/hand/armMask.d.ts +190 -0
  537. package/dist/hand/forearm.d.ts +114 -0
  538. package/dist/hand/handCutout.d.ts +23 -0
  539. package/dist/hand/handCutoutRegistry.d.ts +7 -0
  540. package/dist/hand/handEffect.d.ts +38 -0
  541. package/dist/hand/handGestures.d.ts +524 -0
  542. package/dist/{handJoints2d.d.ts → hand/handJoints2d.d.ts} +1 -1
  543. package/dist/hand/handNail.d.ts +73 -0
  544. package/dist/hand/handPose.d.ts +98 -0
  545. package/dist/hand/handRigSolver.d.ts +159 -0
  546. package/dist/hand/handTattoo.d.ts +81 -0
  547. package/dist/hand/handTouch.d.ts +240 -0
  548. package/dist/{handTracking2d.d.ts → hand/handTracking2d.d.ts} +1 -1
  549. package/dist/{handTracking2dController.d.ts → hand/handTracking2dController.d.ts} +1 -1
  550. package/dist/{handTracking3d.d.ts → hand/handTracking3d.d.ts} +1 -1
  551. package/dist/hand/nailImageMask.d.ts +40 -0
  552. package/dist/hand/nailMaskFingers.d.ts +23 -0
  553. package/dist/hand/nailTipRefine.d.ts +37 -0
  554. package/dist/hand/wrist.d.ts +44 -0
  555. package/dist/hand/wristFilter.d.ts +44 -0
  556. package/dist/hooks/faceResults.d.ts +1 -1
  557. package/dist/hooks/selectors.d.ts +77 -4
  558. package/dist/hooks/useBodies.d.ts +39 -0
  559. package/dist/hooks/useCalibrationFaceTracker.d.ts +1 -1
  560. package/dist/hooks/useFaceAction.d.ts +3 -0
  561. package/dist/hooks/useFaceAttributeExpression.d.ts +16 -0
  562. package/dist/hooks/useFaceDetection.d.ts +18 -0
  563. package/dist/hooks/useFaceInfo.d.ts +19 -0
  564. package/dist/hooks/useFaceInfos.d.ts +15 -0
  565. package/dist/hooks/useFaceModelAcquisition.d.ts +38 -0
  566. package/dist/hooks/useFaceResultReader.d.ts +10 -0
  567. package/dist/hooks/useFrameCapture.d.ts +18 -0
  568. package/dist/hooks/useGesture.d.ts +39 -0
  569. package/dist/hooks/useIrisTracking.d.ts +45 -0
  570. package/dist/hooks/useMediaRecorder.d.ts +14 -2
  571. package/dist/hooks/useOwnedTexture.d.ts +6 -0
  572. package/dist/hooks/useTrackerContext.d.ts +14 -2
  573. package/dist/hooks/useXRDiagnostics.d.ts +81 -0
  574. package/dist/hooks/useXRModel.d.ts +12 -0
  575. package/dist/hooks/useXRSession/facade.d.ts +47 -2
  576. package/dist/hooks/useXRSession/index.d.ts +2 -2
  577. package/dist/hooks/useXRSession/reason.d.ts +21 -0
  578. package/dist/hooks/useXRSession/registry.d.ts +23 -0
  579. package/dist/hooks/useXRSession/store.d.ts +64 -7
  580. package/dist/index-BZoBxyLn.js +1103 -0
  581. package/dist/index-By_LCo2V.cjs +1 -0
  582. package/dist/index-C-Mryx_u.cjs +21 -0
  583. package/dist/index-CKRN-xJp.js +3740 -0
  584. package/dist/index-CUldCMRl.js +188 -0
  585. package/dist/index-Cyk_VIZE.js +1432 -0
  586. package/dist/index-D-4w34GO.cjs +1 -0
  587. package/dist/index-DiIoHK_4.js +442 -0
  588. package/dist/index-Dv3WnY9n.cjs +46 -0
  589. package/dist/index-ItufYyHH.cjs +1 -0
  590. package/dist/index-S3gqudT6.cjs +1 -0
  591. package/dist/index-Sho4F4it.cjs +1 -0
  592. package/dist/index-iIQ9jBDb.js +240 -0
  593. package/dist/index-vr2ichWQ.js +190 -0
  594. package/dist/instructions.cjs +30 -0
  595. package/dist/instructions.js +1528 -0
  596. package/dist/internal-Bb9ZXbpr.cjs +1 -0
  597. package/dist/{internal-Cae1ps15.js → internal-Gt1wn6Z3.js} +152 -127
  598. package/dist/internal.cjs +1 -1
  599. package/dist/internal.js +16 -9
  600. package/dist/iris/compute.d.ts +27 -0
  601. package/dist/iris/index.d.ts +4 -0
  602. package/dist/iris/lead.d.ts +19 -0
  603. package/dist/iris/types.d.ts +89 -0
  604. package/dist/landmarkMask-CvN-L5NT.cjs +1 -0
  605. package/dist/landmarkMask-DHivVjJm.js +225 -0
  606. package/dist/landmarks-BEjJXcnE.cjs +1 -0
  607. package/dist/landmarks-DtCAFV_m.js +76 -0
  608. package/dist/low-level.cjs +1 -1
  609. package/dist/low-level.js +1766 -85
  610. package/dist/main.cjs +1 -73
  611. package/dist/main.js +1286 -1704
  612. package/dist/material/MaterialFill.d.ts +20 -0
  613. package/dist/material/MeshMaterial.d.ts +14 -0
  614. package/dist/material/index.d.ts +2 -0
  615. package/dist/models/Base/index.d.ts +49 -0
  616. package/dist/models/Body/index.d.ts +30 -1
  617. package/dist/models/Face/constants.d.ts +8 -0
  618. package/dist/models/Face/index.d.ts +5 -12
  619. package/dist/models/Face/rotation.d.ts +18 -0
  620. package/dist/models/Hand/GestureTracking.d.ts +1 -1
  621. package/dist/models/Hand/HandTracking.d.ts +17 -1
  622. package/dist/models/Holistic/index.d.ts +49 -0
  623. package/dist/models/Holistic/result.d.ts +68 -0
  624. package/dist/models/Segmentation/index.d.ts +6 -3
  625. package/dist/models/SemanticSegmentation/index.d.ts +31 -0
  626. package/dist/models/SemanticSegmentation/presets.d.ts +28 -0
  627. package/dist/models/index.d.ts +2 -0
  628. package/dist/models/nodeSource.d.ts +9 -0
  629. package/dist/particles/emission.d.ts +24 -0
  630. package/dist/particles/eyes.d.ts +24 -0
  631. package/dist/particles/glsl.d.ts +14 -0
  632. package/dist/particles/index.d.ts +10 -0
  633. package/dist/particles/motion.d.ts +42 -0
  634. package/dist/particles/presets.d.ts +12 -0
  635. package/dist/particles/ring.d.ts +58 -0
  636. package/dist/particles/selfTest.d.ts +53 -0
  637. package/dist/particles/settings.d.ts +127 -0
  638. package/dist/particles/shapes.d.ts +29 -0
  639. package/dist/particles/spawner.d.ts +71 -0
  640. package/dist/particles/system.d.ts +66 -0
  641. package/dist/particles.cjs +122 -0
  642. package/dist/particles.js +999 -0
  643. package/dist/product/ProductDimensions.d.ts +16 -0
  644. package/dist/product/ProductHotspot.d.ts +16 -0
  645. package/dist/product/ProductViewer.d.ts +9 -0
  646. package/dist/product/details.d.ts +53 -0
  647. package/dist/product/index.d.ts +14 -0
  648. package/dist/product/loadModelViewer.d.ts +4 -0
  649. package/dist/product/types.d.ts +71 -0
  650. package/dist/product/useProductAr.d.ts +37 -0
  651. package/dist/product/useProductDetails.d.ts +60 -0
  652. package/dist/product.cjs +1 -0
  653. package/dist/product.js +414 -0
  654. package/dist/providers-CEZQgz2s.cjs +62 -0
  655. package/dist/providers-CRuaD8bi.js +424 -0
  656. package/dist/quality/XRQualityController.d.ts +25 -0
  657. package/dist/quality/controller.d.ts +33 -0
  658. package/dist/quality/index.d.ts +6 -0
  659. package/dist/quality/types.d.ts +100 -0
  660. package/dist/quality/useXRQuality.d.ts +28 -0
  661. package/dist/render/renderGroups.d.ts +47 -0
  662. package/dist/render/renderPasses.d.ts +26 -0
  663. package/dist/render/sceneBeforeRender.d.ts +12 -0
  664. package/dist/renderGroups-BADrepA1.cjs +1 -0
  665. package/dist/renderGroups-CNB99dZ2.js +152 -0
  666. package/dist/renderPasses-DgxUKn9b.cjs +158 -0
  667. package/dist/renderPasses-DuapJA6V.js +1290 -0
  668. package/dist/renderState-CJNmj5jz.js +39 -0
  669. package/dist/renderState-apSfg4eR.cjs +1 -0
  670. package/dist/scene-object/index.d.ts +146 -0
  671. package/dist/scene-object/runtimeRegistry.d.ts +14 -0
  672. package/dist/scene-object.cjs +1 -0
  673. package/dist/scene-object.js +40 -0
  674. package/dist/{screenImageSettings.d.ts → screen-image/screenImageSettings.d.ts} +9 -2
  675. package/dist/{screenTextSettings.d.ts → screen-text/screenTextSettings.d.ts} +18 -2
  676. package/dist/screen2d/coordinates.d.ts +107 -0
  677. package/dist/screen2d/index.d.ts +3 -0
  678. package/dist/screen2d/screenTransform.d.ts +60 -0
  679. package/dist/screen2d/smoothing.d.ts +5 -0
  680. package/dist/segmentation-BOZJdWFC.js +1911 -0
  681. package/dist/segmentation-J8GoNBvP.cjs +1 -0
  682. package/dist/segmentation2d/faceMemory.d.ts +28 -0
  683. package/dist/segmentation2d/faceRegions.d.ts +24 -0
  684. package/dist/segmentation2d/index.d.ts +9 -0
  685. package/dist/segmentation2d/maskUv.d.ts +23 -0
  686. package/dist/segmentation2d/rasterize.d.ts +14 -0
  687. package/dist/segmentation2d/types.d.ts +52 -0
  688. package/dist/selectors-BvJepq6H.js +196 -0
  689. package/dist/selectors-QB2qsaxy.cjs +1 -0
  690. package/dist/services/MetricsCollector/index.d.ts +7 -1
  691. package/dist/services/MetricsCollector/utils.d.ts +1 -1
  692. package/dist/session-BVX859as.cjs +31 -0
  693. package/dist/session-Cz8aie4K.js +493 -0
  694. package/dist/settings-BJ7FMBsO.js +111 -0
  695. package/dist/settings-C63FMBlF.cjs +1 -0
  696. package/dist/similarityFit-BFqHND2e.cjs +1 -0
  697. package/dist/similarityFit-Bbz-R8AY.js +91 -0
  698. package/dist/spring/index.d.ts +2 -0
  699. package/dist/spring/spring.d.ts +69 -0
  700. package/dist/spring/swing.d.ts +54 -0
  701. package/dist/subjects/index.d.ts +2 -0
  702. package/dist/subjects/select.d.ts +70 -0
  703. package/dist/subjects/types.d.ts +59 -0
  704. package/dist/texture/animatedTexture.d.ts +63 -0
  705. package/dist/texture/animationMath.d.ts +8 -0
  706. package/dist/texture/gifReader.d.ts +17 -0
  707. package/dist/texture/gifTextureSource.d.ts +16 -0
  708. package/dist/texture/sourceResolver.d.ts +30 -0
  709. package/dist/textures-BVwo9Z7z.js +38 -0
  710. package/dist/textures-DAfc61zz.cjs +1 -0
  711. package/dist/tracking/coordinates.d.ts +5 -0
  712. package/dist/tracking-config/apply.d.ts +57 -0
  713. package/dist/tracking-config/index.d.ts +7 -0
  714. package/dist/tracking-config/resolve.d.ts +25 -0
  715. package/dist/tracking-config/storage.d.ts +8 -0
  716. package/dist/tracking-config/types.d.ts +106 -0
  717. package/dist/tracking-config/useXRTrackingConfig.d.ts +38 -0
  718. package/dist/tracking.cjs +10 -1
  719. package/dist/tracking.js +1529 -317
  720. package/dist/trigger-D9L4GPmQ.js +3726 -0
  721. package/dist/trigger-DZ9vU7jo.cjs +147 -0
  722. package/dist/types/common.d.ts +11 -1
  723. package/dist/types/compositor.d.ts +21 -0
  724. package/dist/types/face.d.ts +21 -14
  725. package/dist/types/gesture-tracking.d.ts +2 -2
  726. package/dist/types/hand-tracking.d.ts +12 -3
  727. package/dist/types/holistic.d.ts +121 -0
  728. package/dist/types/index.d.ts +1 -1
  729. package/dist/types/model.d.ts +22 -2
  730. package/dist/types/nodes.d.ts +81 -6
  731. package/dist/types/segmentation.d.ts +26 -0
  732. package/dist/types/session.d.ts +50 -4
  733. package/dist/types/tracking.d.ts +8 -2
  734. package/dist/types/util-types.d.ts +1 -1
  735. package/dist/useBodies-BYzJpQ4L.js +75 -0
  736. package/dist/useBodies-Cxpmx6Bb.cjs +1 -0
  737. package/dist/useFaceInfo-BzEUj2OI.js +75 -0
  738. package/dist/useFaceInfo-DlLRAVNw.cjs +1 -0
  739. package/dist/useFaceResultReader-Cc4Qrutf.js +61 -0
  740. package/dist/useFaceResultReader-D3jOQNKz.cjs +1 -0
  741. package/dist/useInstructionHold-DOu-RpCM.js +53 -0
  742. package/dist/useInstructionHold-DwJY1Alr.cjs +1 -0
  743. package/dist/useIrisTracking-Bz4uLDa7.js +6190 -0
  744. package/dist/useIrisTracking-DRGWgoNy.cjs +35 -0
  745. package/dist/useLandmarkPoseFit-Bg-h9BPb.cjs +1 -0
  746. package/dist/useLandmarkPoseFit-Bmb3h6Mw.js +87 -0
  747. package/dist/useXRCapabilities-B1KLckqw.js +30 -0
  748. package/dist/useXRCapabilities-CZlPUBjF.cjs +1 -0
  749. package/dist/utils/canonicalRigidLandmarks.d.ts +8 -0
  750. package/dist/utils/drawNormalizedCrop.d.ts +22 -0
  751. package/dist/utils/fns.d.ts +6 -3
  752. package/dist/utils/headOccluderFit.d.ts +42 -0
  753. package/dist/utils/integrity.d.ts +25 -26
  754. package/dist/utils/landmarkBounds.d.ts +1 -1
  755. package/dist/utils/logger.d.ts +2 -2
  756. package/dist/utils/resolveNumFaces.d.ts +13 -0
  757. package/dist/utils/shoulderOccluderFit.d.ts +38 -0
  758. package/dist/utils/similarityFit.d.ts +23 -0
  759. package/dist/utils/updateThrottle.d.ts +2 -0
  760. package/dist/utils/useStableUniforms.d.ts +18 -0
  761. package/dist/utils/visionWasm.d.ts +18 -0
  762. package/dist/uv-BMFt19bg.cjs +1 -0
  763. package/dist/{index-BGNbrc4C.js → uv-DJU_XfmN.js} +15 -156
  764. package/docs/MIGRATION_GUIDE.md +589 -0
  765. package/docs/SDK_DOCUMENTATION.md +1157 -0
  766. package/docs/api/adaptive-quality.mdx +104 -0
  767. package/docs/api/asset-lifecycle.mdx +78 -0
  768. package/docs/api/audio.mdx +36 -0
  769. package/docs/api/behavior-components.mdx +164 -0
  770. package/docs/api/body-instructions.mdx +287 -0
  771. package/docs/api/body-rig.mdx +384 -0
  772. package/docs/api/body-triggers.mdx +235 -0
  773. package/docs/api/camera-permission.mdx +142 -0
  774. package/docs/api/capture-recording.mdx +111 -0
  775. package/docs/api/coordinate-spaces.mdx +168 -0
  776. package/docs/api/cross-camera.mdx +89 -0
  777. package/docs/api/debug-ui-scene-editor.mdx +270 -0
  778. package/docs/api/diagnostics-calibration.mdx +97 -0
  779. package/docs/api/external-face-mesh.mdx +231 -0
  780. package/docs/api/face-actions.mdx +108 -0
  781. package/docs/api/face-attribute-expression.mdx +87 -0
  782. package/docs/api/face-binding-anchors.mdx +55 -0
  783. package/docs/api/face-character.mdx +157 -0
  784. package/docs/api/face-effects.mdx +28 -0
  785. package/docs/api/face-expression-controller.mdx +153 -0
  786. package/docs/api/face-info.mdx +118 -0
  787. package/docs/api/face-inset.mdx +204 -0
  788. package/docs/api/face-instructions.mdx +183 -0
  789. package/docs/api/face-liquify.mdx +196 -0
  790. package/docs/api/face-mesh.mdx +130 -0
  791. package/docs/api/face-morph.mdx +117 -0
  792. package/docs/api/face-painting.mdx +40 -0
  793. package/docs/api/face-reprojection.mdx +154 -0
  794. package/docs/api/face-retouching.mdx +81 -0
  795. package/docs/api/face-swap.mdx +350 -0
  796. package/docs/api/face-warp-3d.mdx +166 -0
  797. package/docs/api/faceless.mdx +143 -0
  798. package/docs/api/gestures.mdx +210 -0
  799. package/docs/api/hair.mdx +97 -0
  800. package/docs/api/hand-instructions.mdx +222 -0
  801. package/docs/api/hand-rig.mdx +661 -0
  802. package/docs/api/hand-touch.mdx +162 -0
  803. package/docs/api/head-occluder.mdx +563 -0
  804. package/docs/api/holistic-tracker.mdx +164 -0
  805. package/docs/api/instructions.mdx +323 -0
  806. package/docs/api/iris-tracking.mdx +247 -0
  807. package/docs/api/made-up-camera.mdx +131 -0
  808. package/docs/api/makeup-skin-tone.mdx +135 -0
  809. package/docs/api/makeup.mdx +353 -0
  810. package/docs/api/material-render-state.mdx +132 -0
  811. package/docs/api/multi-subject.mdx +185 -0
  812. package/docs/api/particles.mdx +183 -0
  813. package/docs/api/person-cutout.mdx +171 -0
  814. package/docs/api/pin-to-face-mesh.mdx +274 -0
  815. package/docs/api/product-ar.mdx +114 -0
  816. package/docs/api/product-details.mdx +78 -0
  817. package/docs/api/runtime-3d.mdx +316 -0
  818. package/docs/api/scene-object-store.mdx +213 -0
  819. package/docs/api/screen-image.mdx +67 -0
  820. package/docs/api/screen-shape.mdx +64 -0
  821. package/docs/api/screen-space-coordinates.mdx +75 -0
  822. package/docs/api/screen-text.mdx +39 -0
  823. package/docs/api/segmentation-overlay.mdx +301 -0
  824. package/docs/api/session-lifecycle.mdx +136 -0
  825. package/docs/api/texture-sources.mdx +74 -0
  826. package/docs/api/trackers.mdx +65 -0
  827. package/docs/api/tracking-config.mdx +108 -0
  828. package/docs/docs.json +121 -0
  829. package/docs/examples/lip-shaders.mdx +273 -0
  830. package/docs/examples/scene-object-recipes.mdx +194 -0
  831. package/docs/guides/face-atlas-template.svg +1 -0
  832. package/docs/guides/face-atlas-textures.mdx +186 -0
  833. package/docs/guides/face-texture-template.svg +1 -0
  834. package/docs/guides/harness-debug-ui.mdx +139 -0
  835. package/docs/guides/lip-effect-textures.mdx +368 -0
  836. package/docs/guides/lip-uv-template.png +0 -0
  837. package/docs/guides/lip-uv-template.svg +1 -0
  838. package/docs/guides/makeup-design-textures.mdx +109 -0
  839. package/docs/inspector/hierarchy-panel.mdx +51 -0
  840. package/docs/inspector/object-inspector-panel.mdx +51 -0
  841. package/docs/introduction.mdx +120 -0
  842. package/docs/scene-objects/overview.mdx +127 -0
  843. package/docs/scene-objects/render-groups.mdx +77 -0
  844. package/docs/scene-objects/runtime-rendering.mdx +75 -0
  845. package/docs/texture-api-consumer.md +84 -0
  846. package/package.json +69 -9
  847. package/settings.json +1998 -0
  848. package/dist/DebuggerUI-CatYc-RG.cjs +0 -1
  849. package/dist/DebuggerUI-gLMKiVwJ.js +0 -269
  850. package/dist/MediaSourceSwitcher-C-xYg0nQ.js +0 -317
  851. package/dist/MediaSourceSwitcher-Cq3g4IKw.cjs +0 -31
  852. package/dist/components/FaceRetouch/defaults.d.ts +0 -13
  853. package/dist/components/FaceRetouch/retouchRegions.d.ts +0 -23
  854. package/dist/components/FaceRetouch/useFaceRetouchRegions.d.ts +0 -12
  855. package/dist/components/FaceWarp3D/FaceWarp3DHead.d.ts +0 -15
  856. package/dist/components/FaceWarp3D/defaults.d.ts +0 -37
  857. package/dist/components/FaceWarp3D/warp.d.ts +0 -13
  858. package/dist/debug-ui/face-warp-3d/index.d.ts +0 -6
  859. package/dist/defaults-BLpcN3pG.cjs +0 -1
  860. package/dist/defaults-LtY4M7dg.js +0 -55
  861. package/dist/index-BXyObVHF.cjs +0 -1
  862. package/dist/index-CY3bUAcW.js +0 -12
  863. package/dist/index-C_Duh13c.cjs +0 -1
  864. package/dist/index-D8fpPQkC.cjs +0 -1
  865. package/dist/index-DxshgBu0.cjs +0 -1
  866. package/dist/index-O-2crZ3M.js +0 -1102
  867. package/dist/index-safCs_af.js +0 -1341
  868. package/dist/internal-BjyhBP8i.cjs +0 -1
  869. package/dist/modules/XRClient/index.d.ts +0 -9
  870. package/dist/modules/index.d.ts +0 -1
  871. package/dist/screenImageSettings-6NRg4cx9.js +0 -39
  872. package/dist/screenImageSettings-y_B4_767.cjs +0 -1
  873. package/dist/selectors-BLl2JUWW.cjs +0 -1
  874. package/dist/selectors-CXd_x-6t.js +0 -59
  875. package/dist/services/ApiService.d.ts +0 -12
  876. package/dist/types/client.d.ts +0 -3
  877. package/dist/useFaceResults-cpsSmKKc.js +0 -81
  878. package/dist/useFaceResults-hVUJYSEY.cjs +0 -1
  879. package/dist/useXRModel-3DcUa28n.cjs +0 -1
  880. package/dist/useXRModel-BMJE1hrk.js +0 -28
  881. /package/dist/{layerStack.d.ts → render/layerStack.d.ts} +0 -0
  882. /package/dist/{screenImagePresets.d.ts → screen-image/screenImagePresets.d.ts} +0 -0
  883. /package/dist/{screenTextPresets.d.ts → screen-text/screenTextPresets.d.ts} +0 -0
package/dist/main.js CHANGED
@@ -1,1773 +1,537 @@
1
- var nt = Object.defineProperty;
2
- var rt = (t, e, n) => e in t ? nt(t, e, { enumerable: !0, configurable: !0, writable: !0, value: n }) : t[e] = n;
3
- var U = (t, e, n) => rt(t, typeof e != "symbol" ? e + "" : e, n);
4
- import { a as Vn, D as Zn } from "./screenImageSettings-6NRg4cx9.js";
5
- import { useState as _, useEffect as $, useMemo as x, useRef as X, Suspense as st, useCallback as te } from "react";
6
- import { X as it, R as at } from "./index-safCs_af.js";
7
- import { d as qn, c as _n } from "./index-safCs_af.js";
8
- import { h as ot, u as lt, c as At, S as ct, f as dt, i as De, j as Ne } from "./index-O-2crZ3M.js";
9
- import { k as er } from "./index-O-2crZ3M.js";
10
- import { jsx as v, jsxs as W, Fragment as Te } from "react/jsx-runtime";
11
- import { useThree as Ye, useFrame as ut } from "@react-three/fiber";
12
- import * as T from "three";
13
- import { RepeatWrapping as Re, LinearFilter as Oe } from "three";
14
- import { b as ht, d as ft } from "./selectors-CXd_x-6t.js";
15
- import { useTexture as Ve } from "@react-three/drei";
16
- const Qe = 9, we = 16, Qn = ({ children: t }) => {
17
- const [e, n] = _({ width: 0, height: 0 });
18
- return $(() => {
19
- const r = () => {
20
- const i = document.documentElement.clientWidth, a = document.documentElement.clientHeight, o = i / a, A = Qe / we;
21
- let s, l;
22
- o > A ? (l = a, s = l * Qe / we) : (s = i, l = s * we / Qe), n({ width: s, height: l });
23
- };
24
- return r(), window.addEventListener("resize", r), () => window.removeEventListener("resize", r);
25
- }, []), /* @__PURE__ */ v(
26
- "div",
27
- {
28
- style: {
29
- width: "100vw",
30
- height: `${window.innerHeight}px`,
31
- display: "flex",
32
- alignItems: "center",
33
- justifyContent: "center",
34
- backgroundColor: "#0d0d0d"
35
- },
36
- children: /* @__PURE__ */ v("div", { style: { width: e.width, height: e.height, position: "relative" }, children: t })
37
- }
38
- );
39
- }, wn = ({ children: t, depth: e = 0 }) => {
40
- const { camera: n, size: r } = Ye(), i = x(() => {
41
- if (!n.isPerspectiveCamera)
42
- return { width: 10, height: 10 };
43
- const a = n, o = Math.abs(a.position.z - e), A = a.fov * Math.PI / 180, s = 2 * Math.tan(A / 2) * o;
44
- return { width: s * (r.width / r.height), height: s };
45
- }, [n, r, e]);
46
- return /* @__PURE__ */ v(ot.Provider, { value: i, children: /* @__PURE__ */ v("group", { position: [0, 0, e], children: t }) });
47
- };
48
- function Xe(t, e) {
49
- return !Number.isFinite(t) || !Number.isFinite(e) || t <= 0 || e <= 0 ? [1, 1, 1] : Math.abs(t - e) < 1e-6 ? [1, 1, 1] : t > e ? [e / t, 1, 1] : [1, t / e, 1];
50
- }
51
- const ne = {
52
- width: 720,
53
- height: 1280
54
- }, gt = (t = [0.5, 0.5]) => [
55
- t[0] * 2 - 1,
56
- t[1] * 2 - 1
57
- ], ke = ({
58
- position: t = [0, 0],
59
- size: e = [1, 1]
60
- }) => {
61
- const n = e[0] / 2, r = e[1] / 2;
62
- return {
63
- left: t[0] - n,
64
- right: t[0] + n,
65
- top: t[1] + r,
66
- bottom: t[1] - r
67
- };
68
- }, pt = ({
69
- position: t = [0, 0],
70
- size: e = [ne.width, ne.width],
71
- canvasSize: n = ne
72
- }) => {
73
- const r = n.width / 2 || ne.width / 2, i = n.height / 2 || ne.height / 2;
74
- return ke({
75
- position: [t[0] / r, t[1] / i],
76
- size: [e[0] / r, e[1] / i]
77
- });
78
- }, Ze = ({
79
- coordinateSpace: t = "normalized",
80
- canvasSize: e = ne,
81
- position: n,
82
- size: r,
83
- fallbackAnchors: i
84
- }) => i || (!n && !r ? ke({}) : t === "canvas" ? pt({ position: n, size: r, canvasSize: e }) : ke({ position: n, size: r })), vt = "data:image/png;base64,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", je = {
85
- left: -0.35,
86
- right: 0.35,
87
- top: 0.35,
88
- bottom: -0.35
89
- }, mt = {}, Et = {
90
- left: 0,
91
- right: 0,
92
- top: 0,
93
- bottom: 0
94
- }, Ct = [0.5, 0.5], It = 999, Le = Math.PI / 180, bt = () => {
95
- const t = document.createElement("canvas");
96
- t.width = 256, t.height = 256;
97
- const e = t.getContext("2d");
98
- if (!e)
99
- return new T.CanvasTexture(t);
100
- const n = e.createRadialGradient(96, 80, 10, 128, 128, 128);
101
- n.addColorStop(0, "#ffffff"), n.addColorStop(0.18, "#f8fafc"), n.addColorStop(0.44, "#cbd5e1"), n.addColorStop(0.72, "#475569"), n.addColorStop(1, "#0f172a"), e.fillStyle = n, e.fillRect(0, 0, t.width, t.height);
102
- const r = new T.CanvasTexture(t);
103
- return r.needsUpdate = !0, r;
104
- }, St = /* @__PURE__ */ new Set([
105
- "overlay",
106
- "softLight",
107
- "hardLight",
108
- "difference",
109
- "exclusion"
110
- ]), Mt = (t) => {
111
- switch (t) {
112
- case "add":
113
- return { blending: T.AdditiveBlending };
114
- case "subtract":
115
- return { blending: T.SubtractiveBlending };
116
- case "multiply":
117
- return { blending: T.MultiplyBlending };
118
- case "screen":
119
- return {
120
- blending: T.CustomBlending,
121
- blendSrc: T.OneFactor,
122
- blendDst: T.OneMinusSrcColorFactor,
123
- blendEquation: T.AddEquation
124
- };
125
- case "lighten":
126
- return {
127
- blending: T.CustomBlending,
128
- blendSrc: T.OneFactor,
129
- blendDst: T.OneFactor,
130
- blendEquation: T.MaxEquation
131
- };
132
- case "darken":
133
- return {
134
- blending: T.CustomBlending,
135
- blendSrc: T.OneFactor,
136
- blendDst: T.OneFactor,
137
- blendEquation: T.MinEquation
138
- };
139
- case "normal":
140
- default:
141
- return { blending: T.NormalBlending };
142
- }
143
- }, Bt = {
144
- overlay: 0,
145
- softLight: 1,
146
- hardLight: 2,
147
- difference: 3,
148
- exclusion: 4
149
- }, yt = `
150
- varying vec2 vUv;
151
-
152
- void main() {
153
- vUv = uv;
154
- gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
155
- }
156
- `, Qt = `
157
- uniform sampler2D imageMap;
158
- uniform sampler2D backdropMap;
159
- uniform vec2 resolution;
160
- uniform vec3 tint;
161
- uniform float opacity;
162
- uniform float alphaTest;
163
- uniform int blendMode;
164
- varying vec2 vUv;
165
-
166
- float overlayChannel(float base, float blend) {
167
- return base < 0.5 ? 2.0 * base * blend : 1.0 - 2.0 * (1.0 - base) * (1.0 - blend);
168
- }
169
-
170
- float hardLightChannel(float base, float blend) {
171
- return blend < 0.5 ? 2.0 * base * blend : 1.0 - 2.0 * (1.0 - base) * (1.0 - blend);
172
- }
173
-
174
- float softLightChannel(float base, float blend) {
175
- return blend < 0.5
176
- ? base - (1.0 - 2.0 * blend) * base * (1.0 - base)
177
- : base + (2.0 * blend - 1.0) * (sqrt(max(base, 0.0)) - base);
178
- }
179
-
180
- vec3 applyAdvancedBlend(vec3 base, vec3 blend) {
181
- if (blendMode == 0) {
182
- return vec3(
183
- overlayChannel(base.r, blend.r),
184
- overlayChannel(base.g, blend.g),
185
- overlayChannel(base.b, blend.b)
186
- );
187
- }
188
- if (blendMode == 1) {
189
- return vec3(
190
- softLightChannel(base.r, blend.r),
191
- softLightChannel(base.g, blend.g),
192
- softLightChannel(base.b, blend.b)
193
- );
194
- }
195
- if (blendMode == 2) {
196
- return vec3(
197
- hardLightChannel(base.r, blend.r),
198
- hardLightChannel(base.g, blend.g),
199
- hardLightChannel(base.b, blend.b)
200
- );
201
- }
202
- if (blendMode == 3) {
203
- return abs(base - blend);
204
- }
205
- return base + blend - 2.0 * base * blend;
206
- }
207
-
208
- void main() {
209
- vec4 image = texture2D(imageMap, vUv) * vec4(tint, opacity);
210
- if (image.a <= alphaTest) {
211
- discard;
212
- }
213
-
214
- vec2 backdropUv = gl_FragCoord.xy / max(resolution, vec2(1.0));
215
- vec3 backdrop = texture2D(backdropMap, backdropUv).rgb;
216
- vec3 blended = applyAdvancedBlend(backdrop, image.rgb);
217
- vec3 composited = mix(backdrop, blended, image.a);
218
- gl_FragColor = vec4(composited, 1.0);
219
- }
220
- `, wt = (t, e) => t || (e ? { kind: "image", src: e } : { kind: "default" }), Tt = (t) => {
221
- const e = t.image, n = (e == null ? void 0 : e.videoWidth) ?? (e == null ? void 0 : e.width) ?? 1, r = (e == null ? void 0 : e.videoHeight) ?? (e == null ? void 0 : e.height) ?? 1;
222
- return n > 0 && r > 0 ? n / r : 1;
223
- }, Pe = (t, e) => {
224
- const [n, r] = Xe(t, e);
225
- return n === 1 && r === 1 ? [1, 1, 1] : n < 1 ? [1, 1 / n, 1] : [1 / r, 1, 1];
226
- }, kt = (t, e) => t <= 0 || e <= 0 ? [1, 1, 1] : [1, t / e, 1], Lt = (t, e) => t <= 0 || e <= 0 ? [1, 1, 1] : [e / t, 1, 1], Ft = (t) => [
227
- t[0] * 2 - 1,
228
- t[1] * 2 - 1
229
- ], Wt = (t, e) => t || (e === "cover" ? "fill" : e === "stretch" ? "stretch" : "fit"), xt = (t, e, n, r, i) => t || (!r && !i ? je : Ze({
230
- coordinateSpace: e,
231
- canvasSize: n ?? ne,
232
- position: r,
233
- size: i
234
- })), Dt = (t, e, n, r, i) => {
235
- let a = [1, 1, 1], o = [1, 1, 1], A = [1, 1], s = [0, 0];
236
- switch (t) {
237
- case "fit":
238
- a = Xe(e, n), o = a;
239
- break;
240
- case "fitWidth":
241
- a = kt(e, n), o = a;
242
- break;
243
- case "fitHeight":
244
- a = Lt(e, n), o = a;
245
- break;
246
- case "stretch":
247
- break;
248
- case "fill":
249
- a = Pe(e, n), o = a;
250
- break;
251
- case "fillAndCut": {
252
- if (o = Pe(e, n), n > e) {
253
- const c = e / n;
254
- A = [c, 1], s = [(1 - c) / 2, 0];
255
- } else if (n < e) {
256
- const c = n / e;
257
- A = [1, c], s = [0, (1 - c) / 2];
258
- }
259
- break;
260
- }
261
- }
262
- return {
263
- meshScale: [a[0] * (r ? -1 : 1), a[1] * (i ? -1 : 1), 1],
264
- guideScale: o,
265
- repeat: A,
266
- offset: s
267
- };
268
- };
269
- function Yt({
270
- name: t,
271
- source: e,
272
- src: n,
273
- fit: r,
274
- stretchMode: i,
275
- materialType: a = "unlit",
276
- blendMode: o = "normal",
277
- backdropTexture: A = null,
278
- rotation: s = 0,
279
- opacity: l = 1,
280
- color: c = "#ffffff",
281
- flipX: h = !1,
282
- flipY: u = !1,
283
- renderOrder: f = It,
284
- transparent: p = !0,
285
- alphaTest: d = 0,
286
- overlay: g = !0,
287
- visible: C,
288
- showFitGuides: m = !1
289
- }) {
290
- const { size: I } = Ye(), y = dt(), S = wt(e, n), M = S.kind === "image" ? S.src : vt, H = Ve(M), G = S.kind === "texture" ? S.texture : H, B = De(), w = Wt(i, r), b = Tt(G), Y = x(() => bt(), []), k = x(
291
- () => Dt(w, B, b, h, u),
292
- [w, B, b, h, u]
293
- ), L = x(() => {
294
- const K = G.clone();
295
- return K.needsUpdate = !0, K.repeat.set(k.repeat[0], k.repeat[1]), K.offset.set(k.offset[0], k.offset[1]), K;
296
- }, [G, k.repeat, k.offset]), D = x(() => Mt(o), [o]), R = St.has(o) ? o : null, Z = A ?? (y == null ? void 0 : y.finalColorTexture) ?? (y == null ? void 0 : y.sceneColorTexture) ?? null, re = R !== null && Z !== null, se = x(
297
- () => ({
298
- imageMap: { value: L },
299
- backdropMap: { value: Z },
300
- resolution: { value: new T.Vector2(I.width, I.height) },
301
- tint: { value: new T.Color(c) },
302
- opacity: { value: l },
303
- alphaTest: { value: d },
304
- blendMode: {
305
- value: R === null ? 0 : Bt[R]
306
- }
307
- }),
308
- [
309
- R,
310
- d,
311
- Z,
312
- I.height,
313
- I.width,
314
- c,
315
- L,
316
- l
317
- ]
318
- );
319
- return /* @__PURE__ */ W("group", { visible: C, children: [
320
- /* @__PURE__ */ W(
321
- "mesh",
322
- {
323
- name: t,
324
- scale: k.meshScale,
325
- rotation: [0, 0, s * Le],
326
- renderOrder: f,
327
- children: [
328
- /* @__PURE__ */ v("planeGeometry", { args: [1, 1] }),
329
- re ? /* @__PURE__ */ v(
330
- "shaderMaterial",
331
- {
332
- uniforms: se,
333
- vertexShader: yt,
334
- fragmentShader: Qt,
335
- transparent: !1,
336
- depthTest: !g,
337
- depthWrite: !g,
338
- toneMapped: !1
339
- }
340
- ) : a === "standardPBR" ? /* @__PURE__ */ v(
341
- "meshStandardMaterial",
342
- {
343
- map: L,
344
- transparent: p || l < 1,
345
- opacity: l,
346
- color: c,
347
- alphaTest: d,
348
- depthTest: !g,
349
- depthWrite: !g,
350
- toneMapped: !1,
351
- roughness: 0.72,
352
- metalness: 0.08,
353
- emissive: c,
354
- emissiveIntensity: 0.18,
355
- ...D
356
- }
357
- ) : a === "matcap" ? /* @__PURE__ */ v(
358
- "meshMatcapMaterial",
359
- {
360
- map: L,
361
- matcap: Y,
362
- transparent: p || l < 1,
363
- opacity: l,
364
- color: c,
365
- alphaTest: d,
366
- depthTest: !g,
367
- depthWrite: !g,
368
- toneMapped: !1,
369
- ...D
370
- }
371
- ) : /* @__PURE__ */ v(
372
- "meshBasicMaterial",
373
- {
374
- map: L,
375
- transparent: p || l < 1,
376
- opacity: l,
377
- color: c,
378
- alphaTest: d,
379
- depthTest: !g,
380
- depthWrite: !g,
381
- toneMapped: !1,
382
- ...D
383
- }
384
- )
385
- ]
386
- }
387
- ),
388
- m ? /* @__PURE__ */ W("group", { renderOrder: f + 1, children: [
389
- /* @__PURE__ */ W("mesh", { position: [0, 0, 2e-3], children: [
390
- /* @__PURE__ */ v("planeGeometry", { args: [1, 1] }),
391
- /* @__PURE__ */ v(
392
- "meshBasicMaterial",
393
- {
394
- color: "#22d3ee",
395
- wireframe: !0,
396
- transparent: !0,
397
- opacity: 0.9,
398
- depthTest: !1,
399
- depthWrite: !1,
400
- toneMapped: !1
401
- }
402
- )
403
- ] }),
404
- /* @__PURE__ */ W(
405
- "mesh",
406
- {
407
- position: [0, 0, 4e-3],
408
- scale: k.guideScale,
409
- rotation: [0, 0, s * Le],
410
- children: [
411
- /* @__PURE__ */ v("planeGeometry", { args: [1, 1] }),
412
- /* @__PURE__ */ v(
413
- "meshBasicMaterial",
414
- {
415
- color: "#f59e0b",
416
- wireframe: !0,
417
- transparent: !0,
418
- opacity: 0.9,
419
- depthTest: !1,
420
- depthWrite: !1,
421
- toneMapped: !1
422
- }
423
- )
424
- ]
425
- }
426
- )
427
- ] }) : null
428
- ] });
429
- }
430
- function Xt({
431
- anchors: t,
432
- offsets: e,
433
- pivot: n,
434
- rotation: r,
435
- children: i
436
- }) {
437
- const { width: a, height: o } = lt(), A = x(() => ({ ...je, ...t }), [t]), s = x(() => ({ ...Et, ...e }), [e]), l = x(
438
- () => At(a, o, A, s, n),
439
- [o, a, A, s, n]
440
- ), c = l.width > 0 && l.height > 0 ? l.width / l.height : null;
441
- return /* @__PURE__ */ v(
442
- "group",
443
- {
444
- position: [l.centerX - l.pivotX, l.centerY - l.pivotY, 0],
445
- rotation: [0, 0, r * Le],
446
- scale: [l.width, l.height, 1],
447
- children: /* @__PURE__ */ v(ct.Provider, { value: c, children: i })
448
- }
449
- );
450
- }
451
- function Tn({
452
- anchors: t,
453
- coordinateSpace: e,
454
- canvasSize: n,
455
- position: r,
456
- size: i,
457
- offsets: a = mt,
458
- pivot: o = Ct,
459
- rotation: A = 0,
460
- ...s
461
- }) {
462
- const l = x(
463
- () => xt(t, e, n, r, i),
464
- [t, n, e, r, i]
465
- ), c = x(() => Ft(o), [o]);
466
- return /* @__PURE__ */ v(
467
- Xt,
468
- {
469
- anchors: l,
470
- offsets: a,
471
- pivot: c,
472
- rotation: A,
473
- children: /* @__PURE__ */ v(Yt, { ...s, rotation: 0 })
474
- }
475
- );
476
- }
477
- const Gt = {
478
- color: "#ffffff",
479
- strokeWidth: 0,
480
- strokeOpacity: 1,
481
- shadowBlur: 0,
482
- shadowOffsetX: 0,
483
- shadowOffsetY: 0,
484
- shadowOpacity: 1,
485
- fontWeight: "bold",
486
- fontStyle: "normal",
487
- fontFamily: "Arial, sans-serif",
488
- fontSize: 48,
489
- textAlign: "center",
490
- minFontSize: 12,
491
- letterSpacing: 0,
492
- lineSpacing: 0.3,
493
- bgColor: "rgba(20,40,110,0.88)",
494
- bgFillMode: "solid",
495
- bgOpacity: 1,
496
- bgFit: "full",
497
- bgTextureFit: "cover",
498
- bgTextureFlipX: !1,
499
- bgTextureFlipY: !1,
500
- borderWidth: 0,
501
- borderRadius: 24,
502
- padding: 32,
503
- aspect: 2.5,
504
- resolution: 512,
505
- opacity: 1,
506
- underline: !1,
507
- bendPreset: "arc",
508
- bendStrength: 0
509
- };
510
- function Rt(t) {
511
- const e = { ...Gt, ...t }, {
512
- text: n,
513
- lines: r,
514
- color: i,
515
- strokeLayers: a,
516
- strokeColor: o,
517
- strokeWidth: A,
518
- strokeOpacity: s,
519
- shadowLayers: l,
520
- innerShadow: c,
521
- glow: h,
522
- shadowColor: u,
523
- shadowBlur: f,
524
- shadowOffsetX: p,
525
- shadowOffsetY: d,
526
- shadowOpacity: g,
527
- fontWeight: C,
528
- fontStyle: m,
529
- fontFamily: I,
530
- fontSize: y,
531
- textAlign: S,
532
- overflow: M,
533
- resizeToFit: H,
534
- minFontSize: G,
535
- letterSpacing: B,
536
- lineSpacing: w,
537
- bgColor: b,
538
- bgFillMode: Y,
539
- bgOpacity: k,
540
- bgFit: L,
541
- bgAutoSize: D,
542
- bgWidth: R,
543
- bgHeight: Z,
544
- bgGradientStops: re,
545
- bgTextureFit: se,
546
- bgTextureFlipX: K,
547
- bgTextureFlipY: ve,
548
- borderColor: me,
549
- borderWidth: Ee,
550
- borderRadius: j,
551
- padding: q,
552
- aspect: O,
553
- resolution: ie,
554
- opacity: Be,
555
- underline: Ce,
556
- bendPreset: ae,
557
- bendStrength: ce,
558
- name: E,
559
- overlay: de = !0,
560
- position: Ge,
561
- rotation: Ie,
562
- scale: P,
563
- visible: N,
564
- renderOrder: ee
565
- } = e, [oe, be] = _(null), [Se, Me] = _(null), V = X(n);
566
- V.current !== n && (V.current = n, oe !== null && be(null));
567
- const Q = X(b);
568
- Q.current !== b && (Q.current = b, Se !== null && Me(null));
569
- const J = X(null), F = oe ?? n, ue = Se ?? b, he = void 0, fe = x(
570
- () => Ot({
571
- text: F,
572
- lines: r,
573
- color: i,
574
- strokeLayers: a,
575
- strokeColor: o,
576
- strokeWidth: A,
577
- strokeOpacity: s,
578
- shadowLayers: l,
579
- innerShadow: c,
580
- glow: h,
581
- shadowColor: u,
582
- shadowBlur: f,
583
- shadowOffsetX: p,
584
- shadowOffsetY: d,
585
- shadowOpacity: g,
586
- fontWeight: C,
587
- fontStyle: m,
588
- fontFamily: I,
589
- fontSize: y,
590
- textAlign: S,
591
- overflow: M,
592
- resizeToFit: H,
593
- minFontSize: G,
594
- letterSpacing: B,
595
- lineSpacing: w,
596
- bgColor: ue,
597
- bgFillMode: Y,
598
- bgOpacity: k,
599
- bgFit: L,
600
- bgAutoSize: D,
601
- bgWidth: R,
602
- bgHeight: Z,
603
- bgGradientStops: re,
604
- bgTextureImage: he,
605
- bgTextureFit: se,
606
- bgTextureFlipX: K,
607
- bgTextureFlipY: ve,
608
- borderColor: me,
609
- borderWidth: Ee,
610
- borderRadius: j,
611
- padding: q,
612
- height: ie,
613
- width: Math.round(ie * Math.max(O, 0.1)),
614
- underline: Ce,
615
- bendPreset: ae,
616
- bendStrength: ce
617
- }),
618
- [
619
- F,
620
- r,
621
- i,
622
- a,
623
- o,
624
- A,
625
- s,
626
- l,
627
- c,
628
- h,
629
- u,
630
- f,
631
- p,
632
- d,
633
- g,
634
- C,
635
- m,
636
- I,
637
- y,
638
- S,
639
- M,
640
- H,
641
- G,
642
- B,
643
- w,
644
- ue,
645
- Y,
646
- k,
647
- L,
648
- D,
649
- R,
650
- Z,
651
- re,
652
- he,
653
- se,
654
- K,
655
- ve,
656
- me,
657
- Ee,
658
- j,
659
- q,
660
- O,
661
- ie,
662
- Ce,
663
- ae,
664
- ce
665
- ]
666
- );
667
- return $(() => {
668
- const ge = J.current;
669
- if (ge)
670
- return ge.userData.setText = (ye) => be(ye), ge.userData.setBgColor = (ye) => Me(ye), () => {
671
- delete ge.userData.setText, delete ge.userData.setBgColor;
672
- };
673
- }, []), $(() => () => {
674
- fe.dispose();
675
- }, [fe]), /* @__PURE__ */ W(
676
- "mesh",
677
- {
678
- ref: J,
679
- name: E,
680
- position: Ge,
681
- rotation: Ie,
682
- scale: P,
683
- visible: N,
684
- renderOrder: ee,
685
- children: [
686
- /* @__PURE__ */ v("planeGeometry", { args: [1, 1] }),
687
- /* @__PURE__ */ v(
688
- "meshBasicMaterial",
689
- {
690
- map: fe,
691
- transparent: !0,
692
- opacity: Be,
693
- depthTest: !de,
694
- depthWrite: !de
695
- }
696
- )
697
- ]
698
- }
699
- );
700
- }
701
- function Ot(t) {
702
- const {
703
- width: e,
704
- height: n,
705
- text: r,
706
- lines: i,
707
- color: a,
708
- strokeLayers: o,
709
- strokeColor: A,
710
- strokeWidth: s,
711
- strokeOpacity: l,
712
- shadowLayers: c,
713
- innerShadow: h,
714
- glow: u,
715
- shadowColor: f,
716
- shadowBlur: p,
717
- shadowOffsetX: d,
718
- shadowOffsetY: g,
719
- shadowOpacity: C,
720
- fontStyle: m,
721
- fontFamily: I,
722
- fontWeight: y,
723
- textAlign: S,
724
- padding: M,
725
- overflow: H,
726
- resizeToFit: G,
727
- minFontSize: B,
728
- letterSpacing: w,
729
- lineSpacing: b,
730
- bgFillMode: Y,
731
- bgOpacity: k,
732
- bgFit: L,
733
- bgAutoSize: D,
734
- bgWidth: R,
735
- bgHeight: Z,
736
- bgGradientStops: re,
737
- bgTextureImage: se,
738
- bgTextureFit: K,
739
- bgTextureFlipX: ve,
740
- bgTextureFlipY: me,
741
- underline: Ee,
742
- bendPreset: j,
743
- bendStrength: q
744
- } = t;
745
- let { fontSize: O, bgColor: ie } = t;
746
- const Be = [
747
- ...o ?? [],
748
- ...A && s > 0 ? [{ color: A, width: s, opacity: l }] : []
749
- ].filter((Q) => Q.width > 0), Ce = [
750
- ...c ?? [],
751
- ...f && (p > 0 || d !== 0 || g !== 0) ? [
752
- {
753
- color: f,
754
- blur: p,
755
- offsetX: d,
756
- offsetY: g,
757
- opacity: C
758
- }
759
- ] : []
760
- ].filter((Q) => Q.blur > 0 || (Q.offsetX ?? 0) !== 0 || (Q.offsetY ?? 0) !== 0);
761
- let ae;
762
- const ce = typeof OffscreenCanvas < "u" ? new OffscreenCanvas(e, n) : (() => {
763
- const Q = document.createElement("canvas");
764
- return Q.width = e, Q.height = n, Q;
765
- })(), E = ce.getContext("2d");
766
- E.clearRect(0, 0, e, n), E.fillStyle = a, E.textAlign = S, E.textBaseline = "middle";
767
- const de = e - M * 2, Ie = Array.isArray(i) || r.includes(`
768
- `) || H !== void 0 || G !== void 0 ? _t({
769
- ctx: E,
770
- text: r,
771
- explicitLines: i,
772
- maxWidth: de,
773
- maxHeight: n,
774
- padding: M,
775
- fontStyle: m,
776
- fontWeight: y,
777
- fontSize: O,
778
- fontFamily: I,
779
- overflow: H,
780
- resizeToFit: G,
781
- minFontSize: B,
782
- letterSpacing: w,
783
- lineSpacing: b
784
- }) : $t({
785
- ctx: E,
786
- text: r,
787
- maxWidth: de,
788
- maxHeight: n,
789
- padding: M,
790
- fontStyle: m,
791
- fontWeight: y,
792
- fontSize: O,
793
- fontFamily: I,
794
- letterSpacing: w,
795
- lineSpacing: b
796
- });
797
- O = Ie.fontSize;
798
- const P = Ie.lines;
799
- E.font = qe(m, y, O, I);
800
- const N = pe(O, w), ee = _e(O, b), oe = n / 2 - (P.length - 1) * ee / 2, be = P.map(
801
- (Q) => Ae(E, Q, N)
802
- ), Se = Math.min(
803
- e,
804
- Math.max(0, Math.max(...be, 0)) + M * 2
805
- ), Me = Math.min(
806
- n,
807
- Math.max(O, O + (P.length - 1) * ee) + M * 2
808
- ), V = Pt(e, M, S);
809
- if (ie !== "transparent") {
810
- const Q = D === !0, J = Je(
811
- Q ? void 0 : R,
812
- L === "text" || Q ? Se : e,
813
- e
814
- ), F = Je(
815
- Q ? void 0 : Z,
816
- L === "text" || Q ? Me : n,
817
- n
818
- ), ue = Jt(e, J, S, L), he = (n - F) / 2, fe = Math.min(t.borderRadius, Math.min(J, F) / 2);
819
- Ht(E, ue, he, J, F, fe), Kt(E, {
820
- panelX: ue,
821
- panelY: he,
822
- panelWidth: J,
823
- panelHeight: F,
824
- bgColor: ie,
825
- bgFillMode: Y,
826
- bgOpacity: k,
827
- bgGradientStops: re,
828
- bgTextureImage: se,
829
- bgTextureFit: K,
830
- bgTextureFlipX: ve,
831
- bgTextureFlipY: me
832
- }), t.borderColor && t.borderWidth > 0 && (E.lineWidth = t.borderWidth, E.strokeStyle = t.borderColor, E.stroke());
833
- }
834
- u && Vt(E, {
835
- lines: P,
836
- textX: V,
837
- startY: oe,
838
- lineHeight: ee,
839
- letterSpacingPx: N,
840
- bendPreset: j,
841
- bendStrength: q,
842
- color: u.color,
843
- style: u.style,
844
- intensity: u.intensity ?? 0.5,
845
- range: u.range ?? 0.5,
846
- horizontalAngle: u.horizontalAngle ?? 0,
847
- verticalAngle: u.verticalAngle ?? 0
848
- });
849
- for (let Q = 0; Q < P.length; Q++) {
850
- const J = oe + Q * ee;
851
- for (const F of Ce)
852
- E.save(), E.shadowColor = F.color, E.shadowBlur = F.blur, E.shadowOffsetX = F.offsetX ?? 0, E.shadowOffsetY = F.offsetY ?? 0, E.globalAlpha = F.opacity ?? 1, E.fillStyle = a, le(
853
- E,
854
- P[Q],
855
- V,
856
- J,
857
- N,
858
- "fill",
859
- j,
860
- q
861
- ), E.restore();
862
- for (const F of Be)
863
- E.save(), E.lineJoin = "round", E.miterLimit = 2, E.lineWidth = F.width, E.strokeStyle = F.color, E.globalAlpha = F.opacity ?? 1, le(
864
- E,
865
- P[Q],
866
- V,
867
- J,
868
- N,
869
- "stroke",
870
- j,
871
- q
872
- ), E.restore();
873
- E.save(), E.fillStyle = a, E.globalAlpha = 1, le(
874
- E,
875
- P[Q],
876
- V,
877
- J,
878
- N,
879
- "fill",
880
- j,
881
- q
882
- ), E.restore(), Ee && jt(
883
- E,
884
- P[Q],
885
- V,
886
- J,
887
- S,
888
- a,
889
- O,
890
- N
891
- );
892
- }
893
- return h && Zt(E, {
894
- width: e,
895
- height: n,
896
- font: E.font,
897
- lines: P,
898
- textX: V,
899
- startY: oe,
900
- lineHeight: ee,
901
- letterSpacingPx: N,
902
- bendPreset: j,
903
- bendStrength: q,
904
- textAlign: S,
905
- color: h.color,
906
- opacity: h.opacity ?? 1,
907
- blur: h.blur,
908
- offsetX: h.offsetX ?? 0,
909
- offsetY: h.offsetY ?? 0
910
- }), ae = new T.CanvasTexture(ce), ae.needsUpdate = !0, ae;
911
- }
912
- function Pt(t, e, n) {
913
- return n === "left" ? e : n === "right" ? t - e : t / 2;
914
- }
915
- function Jt(t, e, n, r) {
916
- return r === "full" || n === "left" ? 0 : n === "right" ? t - e : (t - e) / 2;
917
- }
918
- function qe(t, e, n, r) {
919
- return `${t} ${e} ${n}px ${r}`;
920
- }
921
- function pe(t, e) {
922
- const n = Math.max(0, Math.min(e, 1));
923
- return t * n * 0.08;
924
- }
925
- function _e(t, e) {
926
- const n = Math.max(0, Math.min(e, 1));
927
- return t * (1.2 + n * 0.6);
928
- }
929
- function Ae(t, e, n) {
930
- $e(t, n);
931
- const r = t.measureText(e).width;
932
- return et(t), r;
933
- }
934
- function le(t, e, n, r, i, a, o = "arc", A = 0) {
935
- if (A !== 0) {
936
- zt(t, e, n, r, i, a, o, A);
937
- return;
938
- }
939
- $e(t, i), a === "fill" ? t.fillText(e, n, r) : t.strokeText(e, n, r), et(t);
940
- }
941
- function zt(t, e, n, r, i, a, o, A) {
942
- const s = Array.from(e);
943
- if (s.length === 0) return;
944
- const l = s.map((C) => t.measureText(C).width), c = l.reduce((C, m) => C + m, 0) + i * Math.max(0, s.length - 1), h = t.textAlign, u = h === "right" ? n - c : h === "center" ? n - c / 2 : n, p = Math.max(-100, Math.min(A, 100)) / 100 * 72, d = Math.max(c / 2, 1);
945
- let g = u;
946
- for (let C = 0; C < s.length; C++) {
947
- const m = s[C], I = l[C], y = g + I / 2, S = (y - u - c / 2) / d, M = Ut(
948
- o,
949
- S,
950
- C,
951
- s.length,
952
- p,
953
- d
954
- );
955
- t.save(), t.translate(y + M.xOffset, r + M.yOffset), t.rotate(M.rotation), t.scale(M.scaleX, M.scaleY), t.textAlign = "center", a === "fill" ? t.fillText(m, 0, 0) : t.strokeText(m, 0, 0), t.restore(), g += I + i;
956
- }
957
- }
958
- function Ut(t, e, n, r, i, a) {
959
- const o = i / 72, A = Math.abs(o), s = 1 - Math.min(1, Math.abs(e)), l = Math.min(1, Math.abs(e)), c = r <= 1 ? 0.5 : n / (r - 1), h = Math.sin(c * Math.PI * 2 - Math.PI / 2), u = Math.sin(c * Math.PI * 2.7 - Math.PI / 2) * (0.65 + c * 0.35), f = i * e * e, p = 2 * i * e / a, d = {
960
- xOffset: 0,
961
- yOffset: 0,
962
- rotation: 0,
963
- scaleX: 1,
964
- scaleY: 1
965
- };
966
- switch (t) {
967
- case "arc":
968
- return {
969
- ...d,
970
- yOffset: f,
971
- rotation: Math.atan(p)
972
- };
973
- case "arc-lower":
974
- return {
975
- ...d,
976
- yOffset: f * 0.55,
977
- scaleY: Math.max(0.2, 1 + o * e * e * 0.45)
978
- };
979
- case "arc-upper":
980
- return {
981
- ...d,
982
- yOffset: -f * 0.55,
983
- scaleY: Math.max(0.2, 1 - o * e * e * 0.45)
984
- };
985
- case "arch":
986
- return {
987
- ...d,
988
- yOffset: f
989
- };
990
- case "bulge":
991
- return {
992
- ...d,
993
- scaleY: Math.max(0.2, 1 + o * s * 0.75)
994
- };
995
- case "shell-lower":
996
- return {
997
- ...d,
998
- yOffset: i * 0.45 * c * s,
999
- scaleY: Math.max(0.2, 1 + o * c * s)
1000
- };
1001
- case "shell-upper":
1002
- return {
1003
- ...d,
1004
- yOffset: -i * 0.45 * (1 - c) * s,
1005
- scaleY: Math.max(0.2, 1 + o * (1 - c) * s)
1006
- };
1007
- case "flag":
1008
- return {
1009
- ...d,
1010
- yOffset: i * 0.65 * u,
1011
- rotation: Math.atan(
1012
- i / Math.max(a, 1) * Math.cos(c * Math.PI * 2.7) * 1.6
1013
- )
1014
- };
1015
- case "wave":
1016
- return {
1017
- ...d,
1018
- yOffset: i * 0.6 * h,
1019
- rotation: Math.atan(i / Math.max(a, 1) * Math.cos(c * Math.PI * 2) * 1.4)
1020
- };
1021
- case "fish":
1022
- return {
1023
- ...d,
1024
- scaleX: Math.max(0.25, 1 - A * l * 0.55),
1025
- scaleY: Math.max(0.2, 1 + o * s)
1026
- };
1027
- case "rise":
1028
- return {
1029
- ...d,
1030
- yOffset: i * e
1031
- };
1032
- case "fisheye":
1033
- return {
1034
- ...d,
1035
- yOffset: i * 0.18 * e * s,
1036
- scaleX: Math.max(0.25, 1 + o * s * 0.7),
1037
- scaleY: Math.max(0.2, 1 + o * s * 0.7)
1038
- };
1039
- case "inflate":
1040
- return {
1041
- ...d,
1042
- scaleX: Math.max(0.25, 1 + o * s * 0.6),
1043
- scaleY: Math.max(0.2, 1 + o * s * 0.6)
1044
- };
1045
- case "squeeze":
1046
- return {
1047
- ...d,
1048
- scaleY: Math.max(0.2, 1 - o * s * 0.8)
1049
- };
1050
- case "twist":
1051
- return {
1052
- ...d,
1053
- yOffset: i * e,
1054
- rotation: o * e * 0.45,
1055
- scaleY: Math.max(0.2, 1 + o * e * 0.25)
1056
- };
1057
- default:
1058
- return d;
1059
- }
1060
- }
1061
- function $e(t, e) {
1062
- "letterSpacing" in t && (t.letterSpacing = `${e}px`);
1063
- }
1064
- function et(t) {
1065
- "letterSpacing" in t && (t.letterSpacing = "0px");
1066
- }
1067
- function Je(t, e, n) {
1068
- return typeof t != "number" || Number.isNaN(t) || t <= 0 ? e : Math.min(t, n);
1069
- }
1070
- function Ht(t, e, n, r, i, a) {
1071
- t.beginPath(), t.moveTo(e + a, n), t.lineTo(e + r - a, n), t.quadraticCurveTo(e + r, n, e + r, n + a), t.lineTo(e + r, n + i - a), t.quadraticCurveTo(e + r, n + i, e + r - a, n + i), t.lineTo(e + a, n + i), t.quadraticCurveTo(e, n + i, e, n + i - a), t.lineTo(e, n + a), t.quadraticCurveTo(e, n, e + a, n), t.closePath();
1072
- }
1073
- function Kt(t, e) {
1074
- const {
1075
- panelX: n,
1076
- panelY: r,
1077
- panelWidth: i,
1078
- panelHeight: a,
1079
- bgColor: o,
1080
- bgFillMode: A,
1081
- bgOpacity: s,
1082
- bgGradientStops: l,
1083
- bgTextureImage: c,
1084
- bgTextureFit: h,
1085
- bgTextureFlipX: u,
1086
- bgTextureFlipY: f
1087
- } = e;
1088
- if (t.save(), t.globalAlpha = Math.max(0, Math.min(s, 1)), A === "gradient" && l && l.length > 1) {
1089
- const p = t.createLinearGradient(
1090
- n,
1091
- r,
1092
- n + i,
1093
- r + a
1094
- );
1095
- [...l].sort((d, g) => d.position - g.position).forEach(
1096
- (d) => p.addColorStop(Math.max(0, Math.min(d.position, 1)), d.color)
1097
- ), t.fillStyle = p, t.fill(), t.restore();
1098
- return;
1099
- }
1100
- if (c) {
1101
- t.clip(), Nt(t, {
1102
- image: c,
1103
- x: n,
1104
- y: r,
1105
- width: i,
1106
- height: a,
1107
- fit: h,
1108
- flipX: u,
1109
- flipY: f
1110
- }), t.restore();
1111
- return;
1112
- }
1113
- t.fillStyle = o, t.fill(), t.restore();
1114
- }
1115
- function Nt(t, e) {
1116
- const { image: n, x: r, y: i, width: a, height: o, fit: A, flipX: s, flipY: l } = e, c = "naturalWidth" in n ? n.naturalWidth : "videoWidth" in n ? n.videoWidth : n.width, h = "naturalHeight" in n ? n.naturalHeight : "videoHeight" in n ? n.videoHeight : n.height;
1117
- let u = a, f = o, p = r, d = i;
1118
- if (A !== "stretch" && c > 0 && h > 0) {
1119
- const g = A === "cover" ? Math.max(a / c, o / h) : Math.min(a / c, o / h);
1120
- u = c * g, f = h * g, p = r + (a - u) / 2, d = i + (o - f) / 2;
1121
- }
1122
- t.save(), (s || l) && (t.translate(s ? r + a : 0, l ? i + o : 0), t.scale(s ? -1 : 1, l ? -1 : 1), p = s ? -(p - r) - u + r : p, d = l ? -(d - i) - f + i : d), t.drawImage(n, p, d, u, f), t.restore();
1123
- }
1124
- function Vt(t, e) {
1125
- const {
1126
- lines: n,
1127
- textX: r,
1128
- startY: i,
1129
- lineHeight: a,
1130
- letterSpacingPx: o,
1131
- bendPreset: A,
1132
- bendStrength: s,
1133
- color: l,
1134
- style: c,
1135
- intensity: h,
1136
- range: u,
1137
- horizontalAngle: f,
1138
- verticalAngle: p
1139
- } = e, d = Math.max(0, Math.min(h, 1));
1140
- if (d <= 0) return;
1141
- const g = Math.max(0, Math.min(u, 1)), C = g * 72, m = Math.max(-0.5, Math.min(f, 0.5)) * 80, I = Math.max(-0.5, Math.min(p, 0.5)) * 80;
1142
- for (let y = 0; y < n.length; y++) {
1143
- const S = i + y * a;
1144
- t.save(), t.globalAlpha = d, t.shadowColor = l, t.shadowBlur = C, t.shadowOffsetX = m, t.shadowOffsetY = I, c === "contoured" ? (t.lineJoin = "round", t.miterLimit = 2, t.lineWidth = Math.max(2, g * 42), t.strokeStyle = l, le(
1145
- t,
1146
- n[y],
1147
- r,
1148
- S,
1149
- o,
1150
- "stroke",
1151
- A,
1152
- s
1153
- )) : (t.fillStyle = l, le(t, n[y], r, S, o, "fill", A, s)), t.restore();
1154
- }
1155
- }
1156
- function Zt(t, e) {
1157
- const {
1158
- width: n,
1159
- height: r,
1160
- font: i,
1161
- lines: a,
1162
- textX: o,
1163
- startY: A,
1164
- lineHeight: s,
1165
- letterSpacingPx: l,
1166
- bendPreset: c,
1167
- bendStrength: h,
1168
- textAlign: u,
1169
- color: f,
1170
- opacity: p,
1171
- blur: d,
1172
- offsetX: g,
1173
- offsetY: C
1174
- } = e, m = typeof OffscreenCanvas < "u" ? new OffscreenCanvas(n, r) : (() => {
1175
- const M = document.createElement("canvas");
1176
- return M.width = n, M.height = r, M;
1177
- })(), I = m.getContext("2d");
1178
- I.clearRect(0, 0, n, r), I.font = i, I.fillStyle = "#ffffff", I.textAlign = u, I.textBaseline = "middle";
1179
- for (let M = 0; M < a.length; M++)
1180
- le(
1181
- I,
1182
- a[M],
1183
- o,
1184
- A + M * s,
1185
- l,
1186
- "fill",
1187
- c,
1188
- h
1189
- );
1190
- const y = typeof OffscreenCanvas < "u" ? new OffscreenCanvas(n, r) : (() => {
1191
- const M = document.createElement("canvas");
1192
- return M.width = n, M.height = r, M;
1193
- })(), S = y.getContext("2d");
1194
- S.clearRect(0, 0, n, r), S.save(), S.globalAlpha = p, S.filter = d > 0 ? `blur(${d}px)` : "none", S.drawImage(m, g, C), S.restore(), S.globalCompositeOperation = "destination-in", S.drawImage(m, 0, 0), S.globalCompositeOperation = "source-in", S.globalAlpha = p, S.fillStyle = f, S.fillRect(0, 0, n, r), t.drawImage(y, 0, 0);
1195
- }
1196
- function jt(t, e, n, r, i, a, o, A) {
1197
- const s = Ae(t, e, A), l = i === "center" ? n - s / 2 : i === "right" ? n - s : n, c = r + o * 0.42;
1198
- t.save(), t.strokeStyle = a, t.lineWidth = Math.max(2, o * 0.06), t.lineCap = "round", t.beginPath(), t.moveTo(l, c), t.lineTo(l + s, c), t.stroke(), t.restore();
1199
- }
1200
- function Fe(t, e, n, r, i, a, o, A) {
1201
- t.font = qe(r, i, a, o);
1202
- const s = e.split(" "), l = [];
1203
- let c = "";
1204
- for (const h of s) {
1205
- const u = c ? `${c} ${h}` : h;
1206
- Ae(t, u, A) > n && c ? (l.push(c), c = h) : c = u;
1207
- }
1208
- return c && l.push(c), l;
1209
- }
1210
- function ze(t, e, n, r, i, a, o, A) {
1211
- const l = e.split(/\r?\n/).flatMap((c) => c.trim().length === 0 ? [""] : Fe(
1212
- t,
1213
- c,
1214
- n,
1215
- r,
1216
- i,
1217
- a,
1218
- o,
1219
- A
1220
- ));
1221
- return l.length > 0 ? l : [e];
1222
- }
1223
- function We(t, e, n, r) {
1224
- return Math.max(1, Math.floor((t - e * 2) / _e(n, r)));
1225
- }
1226
- function tt(t, e, n, r, i) {
1227
- const a = r ? "..." : "";
1228
- let o = e.trimEnd();
1229
- for (; o.length > 0 && Ae(t, `${o}${a}`, i) > n; )
1230
- o = o.slice(0, -1).trimEnd();
1231
- return `${o}${a}`;
1232
- }
1233
- function xe(t, e, n, r, i) {
1234
- return e.map((a, o) => {
1235
- if (Ae(t, a, i) <= n)
1236
- return a;
1237
- const A = o === e.length - 1;
1238
- return tt(
1239
- t,
1240
- a,
1241
- n,
1242
- r === "ellipsis" && A,
1243
- i
1244
- );
1245
- });
1246
- }
1247
- function Ue(t, e, n, r, i, a) {
1248
- if (e.length <= n)
1249
- return xe(
1250
- t,
1251
- e,
1252
- r,
1253
- i ? "ellipsis" : "clip",
1254
- a
1255
- );
1256
- const o = e.slice(0, n), A = o[n - 1];
1257
- return o[n - 1] = tt(
1258
- t,
1259
- A,
1260
- r,
1261
- i,
1262
- a
1263
- ), xe(
1264
- t,
1265
- o,
1266
- r,
1267
- i ? "ellipsis" : "clip",
1268
- a
1269
- );
1270
- }
1271
- function qt(t, e, n, r, i) {
1272
- return e.length <= r && e.every((a) => Ae(t, a, i) <= n);
1273
- }
1274
- function _t(t) {
1275
- const {
1276
- ctx: e,
1277
- text: n,
1278
- explicitLines: r,
1279
- maxWidth: i,
1280
- maxHeight: a,
1281
- padding: o,
1282
- fontStyle: A,
1283
- fontWeight: s,
1284
- fontSize: l,
1285
- fontFamily: c,
1286
- letterSpacing: h,
1287
- lineSpacing: u,
1288
- overflow: f,
1289
- resizeToFit: p,
1290
- minFontSize: d
1291
- } = t;
1292
- let g = l, C = pe(g, h), m = r ?? ze(
1293
- e,
1294
- n,
1295
- i,
1296
- A,
1297
- s,
1298
- g,
1299
- c,
1300
- C
1301
- ), I = We(a, o, g, u);
1302
- const y = p === !0 || f === "shrink";
1303
- for (; y && !qt(e, m, i, I, C) && g > d && (g = Math.max(d, g - 4), C = pe(g, h), m = r ?? ze(
1304
- e,
1305
- n,
1306
- i,
1307
- A,
1308
- s,
1309
- g,
1310
- c,
1311
- C
1312
- ), I = We(a, o, g, u), g !== d); )
1313
- ;
1314
- return f === "ellipsis" ? m = Ue(
1315
- e,
1316
- m,
1317
- I,
1318
- i,
1319
- !0,
1320
- C
1321
- ) : f === "clamp" || f === "shrink" ? m = Ue(
1322
- e,
1323
- m,
1324
- I,
1325
- i,
1326
- !1,
1327
- C
1328
- ) : f === "clip" ? m = m : m = xe(e, m, i, void 0, C), { fontSize: g, lines: m };
1329
- }
1330
- function $t(t) {
1331
- const {
1332
- ctx: e,
1333
- text: n,
1334
- maxWidth: r,
1335
- maxHeight: i,
1336
- padding: a,
1337
- fontStyle: o,
1338
- fontWeight: A,
1339
- fontSize: s,
1340
- fontFamily: l,
1341
- letterSpacing: c,
1342
- lineSpacing: h
1343
- } = t;
1344
- let u = s, f = Fe(
1345
- e,
1346
- n,
1347
- r,
1348
- o,
1349
- A,
1350
- u,
1351
- l,
1352
- pe(u, c)
1353
- );
1354
- const p = We(i, a, u, h);
1355
- return f.length > p && (u = Math.max(12, Math.round(u * 0.75)), f = Fe(
1356
- e,
1357
- n,
1358
- r,
1359
- o,
1360
- A,
1361
- u,
1362
- l,
1363
- pe(u, c)
1364
- )), { fontSize: u, lines: f };
1365
- }
1366
- const en = "rgba(20,40,110,0.88)", tn = 24, nn = 512;
1367
- function kn({
1368
- color: t = en,
1369
- borderColor: e,
1370
- borderWidth: n = 0,
1371
- borderRadius: r = tn,
1372
- resolution: i = nn,
1373
- aspect: a = 1,
1374
- opacity: o = 1,
1375
- name: A,
1376
- overlay: s = !0,
1
+ var De = Object.defineProperty;
2
+ var Ne = (e, t, s) => t in e ? De(e, t, { enumerable: !0, configurable: !0, writable: !0, value: s }) : e[t] = s;
3
+ var U = (e, t, s) => Ne(e, typeof t != "symbol" ? t + "" : t, s);
4
+ import { j as v, u as Ie, Q as Le, R as Oe, T as Ge, U as qe, V as Be, W as We } from "./index-CKRN-xJp.js";
5
+ import { av as Bs, Z as Ws, aw as Ks, M as Xs, P as Hs, L as zs, w as $s, Y as js, ax as Vs, ar as Zs, as as Ys, _ as Qs, c as Js, z as er, y as tr, d as sr, k as rr, ab as ar, ac as nr, ad as ir, ae as or, n as cr, af as lr, i as ur, $ as dr, O as mr, ag as pr, a0 as fr, ah as hr, ai as gr, ap as Sr, p as yr, A as Mr, at as Tr, r as Er, K as Rr, au as br, a2 as Ar, aj as Fr, a3 as Cr, a4 as vr, a5 as kr, a1 as _r, a6 as xr, a7 as wr, a8 as Ur, ak as Pr, aq as Dr, a9 as Nr, al as Ir, t as Lr, am as Or, an as Gr, aa as qr, ao as Br } from "./index-CKRN-xJp.js";
6
+ import { S as Ke } from "./contexts-Y_FhdnIv.js";
7
+ import { X as Kr } from "./contexts-Y_FhdnIv.js";
8
+ import { S as Hr, T as zr } from "./TextLabel-c9BCucOI.js";
9
+ import { jsxs as L, jsx as g, Fragment as re } from "react/jsx-runtime";
10
+ import { useRef as F, useMemo as Z, useEffect as _, useState as x, Suspense as Xe, useCallback as R, forwardRef as He, useImperativeHandle as ze, useContext as $e, createContext as je, useId as Ve, useSyncExternalStore as Ze } from "react";
11
+ import * as Ye from "three";
12
+ import { MathUtils as Qe, Vector2 as Je, Vector3 as et, DoubleSide as te, RepeatWrapping as Se, LinearFilter as ye } from "three";
13
+ import { D as jr, H as Vr, G as Zr, E as Yr, J as Qr, K as Jr, P as ea, S as ta, C as sa, I as ra, L as aa, M as na, F as ia, B as oa } from "./index-Cyk_VIZE.js";
14
+ import { useThree as tt, useFrame as st } from "@react-three/fiber";
15
+ import { R as rt } from "./uv-DJU_XfmN.js";
16
+ import { c as Fe, b as at } from "./selectors-BvJepq6H.js";
17
+ import { u as nt, a as it, s as ot, F as ct } from "./drawNormalizedCrop-DG3gtJxf.js";
18
+ import { d as la, b as ua, r as da } from "./drawNormalizedCrop-DG3gtJxf.js";
19
+ import { S as lt, c as ut } from "./index-BZoBxyLn.js";
20
+ import { L as pa, d as fa, R as ha, a as ga, e as Sa, b as ya, f as Ma } from "./index-BZoBxyLn.js";
21
+ import { useTexture as dt } from "@react-three/drei";
22
+ import { a as mt } from "./context-DTxSQvp4.js";
23
+ import { k as Ea, D as Ra, j as ba, E as Aa, M as Fa, h as Ca, S as va, T as ka, l as _a, g as xa, n as wa, r as Ua } from "./renderPasses-DuapJA6V.js";
24
+ import { D as Da, a as Na, M as Ia, n as La } from "./index-CUldCMRl.js";
25
+ import { M as Ga } from "./index-vr2ichWQ.js";
26
+ import { u as Ba } from "./useXRCapabilities-B1KLckqw.js";
27
+ import { g as Ce } from "./cache-2x3CUJuY.js";
28
+ import { D as Ka, X as Xa, c as Ha, u as za } from "./cache-2x3CUJuY.js";
29
+ import { S as pt } from "./segmentation-BOZJdWFC.js";
30
+ import { d as ja, a as Va, b as Za, e as Ya, f as Qa, g as Ja, h as en } from "./segmentation-BOZJdWFC.js";
31
+ const V = (e, t, s, r) => Qe.damp(e, t, Math.max(0, s), Math.max(0, r)), ls = (e, t, s, r, a = new Je()) => a.set(
32
+ V(e.x, t.x, s, r),
33
+ V(e.y, t.y, s, r)
34
+ ), us = (e, t, s, r, a = new et()) => a.set(
35
+ V(e.x, t.x, s, r),
36
+ V(e.y, t.y, s, r),
37
+ V(e.z, t.z, s, r)
38
+ ), ft = "rgba(20,40,110,0.88)", ht = 24, gt = 512;
39
+ function ds({
40
+ color: e = ft,
41
+ borderColor: t,
42
+ borderWidth: s = 0,
43
+ borderRadius: r = ht,
44
+ resolution: a = gt,
45
+ aspect: n = 1,
46
+ opacity: i = 1,
47
+ name: c,
48
+ overlay: o = !0,
1377
49
  position: l,
1378
- rotation: c,
1379
- scale: h,
1380
- visible: u
50
+ rotation: h,
51
+ scale: d,
52
+ visible: m
1381
53
  }) {
1382
- const f = X(null), p = X(null), d = x(() => rn({
1383
- width: Math.round(i * Math.max(a, 0.05)),
1384
- height: Math.round(i),
1385
- color: t,
1386
- borderColor: e,
1387
- borderWidth: n,
54
+ const u = F(null), p = F(null), M = Z(() => St({
55
+ width: Math.round(a * Math.max(n, 0.05)),
56
+ height: Math.round(a),
57
+ color: e,
58
+ borderColor: t,
59
+ borderWidth: s,
1388
60
  borderRadius: r
1389
- }), [t, e, n, r, i, a]);
1390
- $(() => () => {
1391
- d.dispose();
1392
- }, [d]);
1393
- const g = X(null), C = X(o);
1394
- return C.current !== o && (C.current = o, g.current = null, p.current && (p.current.opacity = o)), $(() => {
1395
- const m = f.current;
1396
- if (m)
1397
- return m.userData.setOpacity = (I) => {
1398
- g.current = I, p.current && (p.current.opacity = I);
61
+ }), [e, t, s, r, a, n]);
62
+ _(() => () => {
63
+ M.dispose();
64
+ }, [M]);
65
+ const E = F(null), f = F(i);
66
+ return f.current !== i && (f.current = i, E.current = null, p.current && (p.current.opacity = i)), _(() => {
67
+ const S = u.current;
68
+ if (S)
69
+ return S.userData.setOpacity = (b) => {
70
+ E.current = b, p.current && (p.current.opacity = b);
1399
71
  }, () => {
1400
- delete m.userData.setOpacity;
72
+ delete S.userData.setOpacity;
1401
73
  };
1402
- }, []), /* @__PURE__ */ W(
74
+ }, []), /* @__PURE__ */ L(
1403
75
  "mesh",
1404
76
  {
1405
- ref: f,
1406
- name: A,
77
+ ref: u,
78
+ name: c,
1407
79
  position: l,
1408
- rotation: c,
1409
- scale: h,
1410
- visible: u,
80
+ rotation: h,
81
+ scale: d,
82
+ visible: m,
1411
83
  children: [
1412
- /* @__PURE__ */ v("planeGeometry", { args: [1, 1] }),
1413
- /* @__PURE__ */ v(
84
+ /* @__PURE__ */ g("planeGeometry", { args: [1, 1] }),
85
+ /* @__PURE__ */ g(
1414
86
  "meshBasicMaterial",
1415
87
  {
1416
88
  ref: p,
1417
- map: d,
89
+ map: M,
1418
90
  transparent: !0,
1419
- opacity: o,
1420
- depthTest: !s,
1421
- depthWrite: !s
91
+ opacity: i,
92
+ depthTest: !o,
93
+ depthWrite: !o
1422
94
  }
1423
95
  )
1424
96
  ]
1425
97
  }
1426
98
  );
1427
99
  }
1428
- function rn(t) {
1429
- const { width: e, height: n, color: r, borderColor: i, borderWidth: a, borderRadius: o } = t, A = typeof OffscreenCanvas < "u" ? new OffscreenCanvas(e, n) : (() => {
1430
- const h = document.createElement("canvas");
1431
- return h.width = e, h.height = n, h;
1432
- })(), s = A.getContext("2d");
1433
- s.clearRect(0, 0, e, n);
1434
- const l = Math.min(o, Math.min(e, n) / 2);
1435
- s.beginPath(), s.moveTo(l, 0), s.lineTo(e - l, 0), s.quadraticCurveTo(e, 0, e, l), s.lineTo(e, n - l), s.quadraticCurveTo(e, n, e - l, n), s.lineTo(l, n), s.quadraticCurveTo(0, n, 0, n - l), s.lineTo(0, l), s.quadraticCurveTo(0, 0, l, 0), s.closePath(), s.fillStyle = r, s.fill(), i && a > 0 && (s.lineWidth = a, s.strokeStyle = i, s.stroke());
1436
- const c = new T.CanvasTexture(A);
1437
- return c.needsUpdate = !0, c;
1438
- }
1439
- const sn = 2.5, an = {
1440
- top: { left: -0.92, right: 0.92, top: 0.92, bottom: 0.56 },
1441
- center: { left: -0.92, right: 0.92, top: 0.18, bottom: -0.18 },
1442
- bottom: { left: -0.92, right: 0.92, top: -0.56, bottom: -0.92 }
1443
- };
1444
- function on(t = "center") {
1445
- return an[t];
1446
- }
1447
- function ln(t) {
1448
- const e = De(), n = Math.max(e || sn, 0.1), { showTransformGuides: r = !1, renderOrder: i, overlay: a = !0, ...o } = t;
1449
- return /* @__PURE__ */ W(Te, { children: [
1450
- /* @__PURE__ */ v(
1451
- Rt,
1452
- {
1453
- ...o,
1454
- aspect: n,
1455
- overlay: a,
1456
- renderOrder: i
1457
- }
1458
- ),
1459
- r ? /* @__PURE__ */ v("group", { renderOrder: (i ?? 0) + 1, children: /* @__PURE__ */ W("mesh", { position: [0, 0, 4e-3], children: [
1460
- /* @__PURE__ */ v("planeGeometry", { args: [1, 1] }),
1461
- /* @__PURE__ */ v(
1462
- "meshBasicMaterial",
1463
- {
1464
- color: "#38bdf8",
1465
- wireframe: !0,
1466
- transparent: !0,
1467
- opacity: 0.9,
1468
- depthTest: !1,
1469
- depthWrite: !1,
1470
- toneMapped: !1
1471
- }
1472
- )
1473
- ] }) }) : null
1474
- ] });
1475
- }
1476
- function Ln({
1477
- anchors: t,
1478
- coordinateSpace: e,
1479
- canvasSize: n,
1480
- offsets: r,
1481
- pivot: i,
1482
- position: a,
1483
- rotation: o = 0,
1484
- size: A,
1485
- transform: s,
1486
- verticalAlign: l = "center",
1487
- ...c
1488
- }) {
1489
- const h = x(() => s != null && s.anchors ? s.anchors : t || (s != null && s.position || s != null && s.size || a || A ? Ze({
1490
- coordinateSpace: (s == null ? void 0 : s.coordinateSpace) ?? e,
1491
- canvasSize: (s == null ? void 0 : s.canvasSize) ?? n,
1492
- position: (s == null ? void 0 : s.position) ?? a,
1493
- size: (s == null ? void 0 : s.size) ?? A
1494
- }) : on(l)), [t, n, e, a, A, s, l]), u = (s == null ? void 0 : s.offsets) ?? r, f = x(
1495
- () => gt((s == null ? void 0 : s.pivot) ?? i ?? [0.5, 0.5]),
1496
- [i, s == null ? void 0 : s.pivot]
1497
- ), p = (s == null ? void 0 : s.rotation) ?? o;
1498
- return /* @__PURE__ */ v(Ne, { anchors: h, offsets: u, pivot: f, children: /* @__PURE__ */ v("group", { rotation: [0, 0, p * Math.PI / 180], children: /* @__PURE__ */ v(ln, { ...c }) }) });
100
+ function St(e) {
101
+ const { width: t, height: s, color: r, borderColor: a, borderWidth: n, borderRadius: i } = e, c = typeof OffscreenCanvas < "u" ? new OffscreenCanvas(t, s) : (() => {
102
+ const d = document.createElement("canvas");
103
+ return d.width = t, d.height = s, d;
104
+ })(), o = c.getContext("2d");
105
+ o.clearRect(0, 0, t, s);
106
+ const l = Math.min(i, Math.min(t, s) / 2);
107
+ o.beginPath(), o.moveTo(l, 0), o.lineTo(t - l, 0), o.quadraticCurveTo(t, 0, t, l), o.lineTo(t, s - l), o.quadraticCurveTo(t, s, t - l, s), o.lineTo(l, s), o.quadraticCurveTo(0, s, 0, s - l), o.lineTo(0, l), o.quadraticCurveTo(0, 0, l, 0), o.closePath(), o.fillStyle = r, o.fill(), a && n > 0 && (o.lineWidth = n, o.strokeStyle = a, o.stroke());
108
+ const h = new Ye.CanvasTexture(c);
109
+ return h.needsUpdate = !0, h;
1499
110
  }
1500
- const An = { left: -1, right: 1, top: 1, bottom: -1 }, cn = (t, e, n) => {
1501
- const r = t % e, i = Math.floor(t / e);
1502
- return { x: r / e, y: (n - 1 - i) / n };
1503
- }, dn = ({
1504
- sheet: t,
1505
- contentAspect: e,
1506
- renderOrder: n,
1507
- name: r
1508
- }) => {
1509
- const i = Ve(t.url), a = X(0), o = X(-1), A = De(), [s, l] = e != null ? Xe(A, e) : [1, 1];
1510
- return ut((c, h) => {
1511
- i.wrapS = Re, i.wrapT = Re, i.magFilter = Oe, i.minFilter = Oe, i.generateMipmaps = !1, i.repeat.set(1 / t.cols, 1 / t.rows), a.current += h;
1512
- const u = Math.floor(a.current * t.fps) % t.frames;
1513
- if (u === o.current) return;
1514
- o.current = u;
1515
- const { x: f, y: p } = cn(u, t.cols, t.rows);
1516
- i.offset.set(f, p);
1517
- }), /* @__PURE__ */ W("mesh", { name: r, renderOrder: n, scale: [s, l, 1], children: [
1518
- /* @__PURE__ */ v("planeGeometry", { args: [1, 1] }),
1519
- /* @__PURE__ */ v("meshBasicMaterial", { map: i, transparent: !0, toneMapped: !1, depthWrite: !1 })
1520
- ] });
1521
- }, Fn = ({
1522
- sheet: t,
1523
- anchors: e = An,
1524
- contentAspect: n,
1525
- renderOrder: r = 10,
1526
- name: i = "spriteAnimation"
1527
- }) => /* @__PURE__ */ v(st, { fallback: null, children: /* @__PURE__ */ v(Ne, { anchors: e, children: /* @__PURE__ */ v(dn, { sheet: t, contentAspect: n, renderOrder: r, name: i }) }) }), Wn = ({
1528
- segmentationMask: t,
1529
- segmentation: e,
1530
- invert: n = !1,
111
+ const ms = ({
112
+ segmentationMask: e,
113
+ segmentation: t,
114
+ invert: s = !1,
1531
115
  customBackground: r,
1532
- renderOrder: i = at.BACKGROUND
116
+ renderOrder: a = rt.BACKGROUND
1533
117
  }) => {
1534
- const { camera: a, size: o } = Ye(), A = ht(), s = ft(it.BACKGROUND_SEGMENTATION), l = e ? s == null ? void 0 : s.backgroundSegmentationMask : void 0, c = X(!1);
1535
- $(() => {
1536
- if (!e) {
1537
- c.current = !1;
118
+ const { camera: n, size: i } = tt(), c = Fe(), o = at(v.BACKGROUND_SEGMENTATION), l = t ? o == null ? void 0 : o.backgroundSegmentationMask : void 0, h = F(!1);
119
+ _(() => {
120
+ if (!t) {
121
+ h.current = !1;
1538
122
  return;
1539
123
  }
1540
- s === null && !c.current && (console.warn(
1541
- `[VideoBackground] segmentation="${e}" set but no matching <Segmentation> component is mounted; rendering unmasked.`
1542
- ), c.current = !0);
1543
- }, [e, s]);
1544
- const h = e ? l : t, u = x(() => {
1545
- if (!a.isPerspectiveCamera)
124
+ o === null && !h.current && (console.warn(
125
+ `[VideoBackground] segmentation="${t}" set but no matching <Segmentation> component is mounted; rendering unmasked.`
126
+ ), h.current = !0);
127
+ }, [t, o]);
128
+ const d = t ? l : e, m = Z(() => {
129
+ if (!n.isPerspectiveCamera)
1546
130
  return [10, 10];
1547
- const f = a, g = (f.position.z || 5) - -1, C = f.fov * Math.PI / 180, m = 2 * Math.tan(C / 2) * g;
1548
- return [m * (o.width / o.height), m];
1549
- }, [a, o]);
1550
- return A ? /* @__PURE__ */ v("group", { position: [0, 0, -1], children: n ? /* @__PURE__ */ W(Te, { children: [
1551
- /* @__PURE__ */ W("mesh", { position: [0, 0, -0.01], renderOrder: i - 1, children: [
1552
- /* @__PURE__ */ v("planeGeometry", { args: u }),
1553
- /* @__PURE__ */ v(
131
+ const u = n, E = (u.position.z || 5) - -1, f = u.fov * Math.PI / 180, S = 2 * Math.tan(f / 2) * E;
132
+ return [S * (i.width / i.height), S];
133
+ }, [n, i]);
134
+ return c ? /* @__PURE__ */ g("group", { position: [0, 0, -1], children: s ? /* @__PURE__ */ L(re, { children: [
135
+ /* @__PURE__ */ L("mesh", { position: [0, 0, -0.01], renderOrder: a - 1, children: [
136
+ /* @__PURE__ */ g("planeGeometry", { args: m }),
137
+ /* @__PURE__ */ g(
1554
138
  "meshBasicMaterial",
1555
139
  {
1556
- map: A,
140
+ map: c,
1557
141
  depthTest: !1,
1558
142
  depthWrite: !1,
1559
- toneMapped: !1
143
+ toneMapped: !1,
144
+ side: te
1560
145
  }
1561
146
  )
1562
147
  ] }),
1563
- r && h && /* @__PURE__ */ W("mesh", { position: [0, 0, 0], renderOrder: i, children: [
1564
- /* @__PURE__ */ v("planeGeometry", { args: u }),
1565
- /* @__PURE__ */ v(
148
+ r && d && /* @__PURE__ */ L("mesh", { position: [0, 0, 0], renderOrder: a, children: [
149
+ /* @__PURE__ */ g("planeGeometry", { args: m }),
150
+ /* @__PURE__ */ g(
1566
151
  "meshBasicMaterial",
1567
152
  {
1568
153
  map: typeof r == "string" ? void 0 : r,
1569
154
  color: typeof r == "string" ? r : void 0,
1570
- alphaMap: h,
155
+ alphaMap: d,
1571
156
  transparent: !1,
1572
157
  alphaTest: 0.5,
1573
158
  depthTest: !1,
1574
159
  depthWrite: !1,
1575
- toneMapped: !1
160
+ toneMapped: !1,
161
+ side: te
1576
162
  },
1577
163
  "inverted-mask"
1578
164
  )
1579
165
  ] })
1580
- ] }) : /* @__PURE__ */ W(Te, { children: [
1581
- r && h && /* @__PURE__ */ W("mesh", { position: [0, 0, -0.01], renderOrder: i - 1, children: [
1582
- /* @__PURE__ */ v("planeGeometry", { args: u }),
1583
- /* @__PURE__ */ v(
166
+ ] }) : /* @__PURE__ */ L(re, { children: [
167
+ r && d && /* @__PURE__ */ L("mesh", { position: [0, 0, -0.01], renderOrder: a - 1, children: [
168
+ /* @__PURE__ */ g("planeGeometry", { args: m }),
169
+ /* @__PURE__ */ g(
1584
170
  "meshBasicMaterial",
1585
171
  {
1586
172
  map: typeof r == "string" ? void 0 : r,
1587
173
  color: typeof r == "string" ? r : void 0,
1588
174
  depthTest: !1,
1589
175
  depthWrite: !1,
1590
- toneMapped: !1
176
+ toneMapped: !1,
177
+ side: te
1591
178
  }
1592
179
  )
1593
180
  ] }),
1594
- /* @__PURE__ */ W("mesh", { position: [0, 0, 0], renderOrder: i, children: [
1595
- /* @__PURE__ */ v("planeGeometry", { args: u }),
1596
- /* @__PURE__ */ v(
181
+ /* @__PURE__ */ L("mesh", { position: [0, 0, 0], renderOrder: a, children: [
182
+ /* @__PURE__ */ g("planeGeometry", { args: m }),
183
+ /* @__PURE__ */ g(
1597
184
  "meshBasicMaterial",
1598
185
  {
1599
- map: A,
1600
- alphaMap: h,
186
+ map: c,
187
+ alphaMap: d,
1601
188
  transparent: !1,
1602
- alphaTest: h ? 0.5 : void 0,
189
+ alphaTest: d ? 0.5 : void 0,
1603
190
  depthTest: !1,
1604
191
  depthWrite: !1,
1605
- toneMapped: !1
192
+ toneMapped: !1,
193
+ side: te
1606
194
  },
1607
- h ? "with-mask" : "no-mask"
195
+ d ? "with-mask" : "no-mask"
1608
196
  )
1609
197
  ] })
1610
198
  ] }) }) : null;
1611
- }, un = [
199
+ }, ve = ({
200
+ mask: e,
201
+ status: t,
202
+ error: s,
203
+ invert: r = !1,
204
+ fallback: a = "camera",
205
+ onStatusChange: n,
206
+ fit: i = "cover",
207
+ anchors: c = ct,
208
+ renderOrder: o = 100,
209
+ visible: l = !0,
210
+ maskFeather: h = 4,
211
+ maskErode: d = 0.7,
212
+ ...m
213
+ }) => {
214
+ const u = Fe();
215
+ if (_(() => {
216
+ n == null || n(t, s);
217
+ }, [t, s, n]), !u) return null;
218
+ const p = t === "ready" && e;
219
+ return !p && !ot(t, a) ? null : /* @__PURE__ */ g(
220
+ lt,
221
+ {
222
+ ...m,
223
+ source: { kind: "texture", texture: u },
224
+ fit: i,
225
+ anchors: c,
226
+ renderOrder: o,
227
+ visible: l,
228
+ maskTexture: p ? e : null,
229
+ maskChannel: "green",
230
+ maskInvert: r,
231
+ maskFeather: h,
232
+ maskErode: d
233
+ }
234
+ );
235
+ }, yt = ({ active: e = !0, ...t }) => {
236
+ const { texture: s, status: r, error: a } = it(e);
237
+ return /* @__PURE__ */ g(ve, { ...t, mask: s, status: r, error: a });
238
+ }, Mt = ({ bodyId: e, subject: t, numBodies: s, active: r = !0, ...a }) => {
239
+ const { texture: n, status: i, error: c } = nt({ bodyId: e, subject: t, numBodies: s, active: r });
240
+ return /* @__PURE__ */ g(ve, { ...a, mask: n, status: i, error: c });
241
+ }, ps = ({ bodyId: e, subject: t, numBodies: s, ...r }) => e !== void 0 || t ? /* @__PURE__ */ g(Mt, { ...r, bodyId: e, subject: t, numBodies: s }) : /* @__PURE__ */ g(yt, { ...r }), ie = 9, oe = 16, fs = ({ children: e }) => {
242
+ const [t, s] = x({ width: 0, height: 0 });
243
+ return _(() => {
244
+ const r = () => {
245
+ const a = document.documentElement.clientWidth, n = document.documentElement.clientHeight, i = a / n, c = ie / oe;
246
+ let o, l;
247
+ i > c ? (l = n, o = l * ie / oe) : (o = a, l = o * oe / ie), s({ width: o, height: l });
248
+ };
249
+ return r(), window.addEventListener("resize", r), () => window.removeEventListener("resize", r);
250
+ }, []), /* @__PURE__ */ g(
251
+ "div",
252
+ {
253
+ style: {
254
+ width: "100vw",
255
+ height: `${window.innerHeight}px`,
256
+ display: "flex",
257
+ alignItems: "center",
258
+ justifyContent: "center",
259
+ backgroundColor: "#0d0d0d"
260
+ },
261
+ children: /* @__PURE__ */ g("div", { style: { width: t.width, height: t.height, position: "relative" }, children: e })
262
+ }
263
+ );
264
+ }, hs = ({ size: e = 0.25, ...t }) => /* @__PURE__ */ g("axesHelper", { args: [e], ...t }), Tt = { left: -1, right: 1, top: 1, bottom: -1 }, Et = (e, t, s) => {
265
+ const r = e % t, a = Math.floor(e / t);
266
+ return { x: r / t, y: (s - 1 - a) / s };
267
+ }, Rt = ({
268
+ sheet: e,
269
+ contentAspect: t,
270
+ renderOrder: s,
271
+ name: r
272
+ }) => {
273
+ const a = dt(e.url), n = F(0), i = F(-1), c = mt(), [o, l] = t != null ? ut(c, t) : [1, 1];
274
+ return st((h, d) => {
275
+ a.wrapS = Se, a.wrapT = Se, a.magFilter = ye, a.minFilter = ye, a.generateMipmaps = !1, a.repeat.set(1 / e.cols, 1 / e.rows), n.current += d;
276
+ const m = Math.floor(n.current * e.fps) % e.frames;
277
+ if (m === i.current) return;
278
+ i.current = m;
279
+ const { x: u, y: p } = Et(m, e.cols, e.rows);
280
+ a.offset.set(u, p);
281
+ }), /* @__PURE__ */ L("mesh", { name: r, renderOrder: s, scale: [o, l, 1], children: [
282
+ /* @__PURE__ */ g("planeGeometry", { args: [1, 1] }),
283
+ /* @__PURE__ */ g("meshBasicMaterial", { map: a, transparent: !0, toneMapped: !1, depthWrite: !1 })
284
+ ] });
285
+ }, gs = ({
286
+ sheet: e,
287
+ anchors: t = Tt,
288
+ contentAspect: s,
289
+ renderOrder: r = 10,
290
+ name: a = "spriteAnimation"
291
+ }) => /* @__PURE__ */ g(Xe, { fallback: null, children: /* @__PURE__ */ g(Ke, { anchors: t, children: /* @__PURE__ */ g(Rt, { sheet: e, contentAspect: s, renderOrder: r, name: a }) }) }), q = (e) => {
292
+ switch (e) {
293
+ case "start":
294
+ return "starting";
295
+ case "started":
296
+ case "resume":
297
+ return "recording";
298
+ case "pause":
299
+ return "paused";
300
+ case "stop":
301
+ return "stopping";
302
+ case "complete":
303
+ return "completed";
304
+ case "fail":
305
+ return "error";
306
+ case "clear":
307
+ return "idle";
308
+ }
309
+ }, bt = [
1612
310
  "video/mp4",
1613
311
  "video/webm;codecs=vp9",
1614
312
  "video/webm;codecs=vp8",
1615
313
  "video/webm"
1616
314
  ];
1617
- function xn(t = {}) {
1618
- const { audio: e = !1, mimeType: n, bitsPerSecond: r, onData: i, onStop: a, passThroughStream: o } = t, A = X(null), s = X(null), l = X([]), [c, h] = _(!1), [u, f] = _(!1), [p, d] = _(null), [g, C] = _(null), m = te(() => {
1619
- var w;
1620
- const B = [n, ...un].filter(Boolean);
1621
- for (const b of B)
1622
- if ((w = MediaRecorder.isTypeSupported) != null && w.call(MediaRecorder, b)) return b;
1623
- }, [n]), I = te(
1624
- async (B) => {
1625
- const w = new MediaStream();
1626
- if (B.getTracks().forEach((b) => w.addTrack(b)), e) {
1627
- let b;
1628
- if (e instanceof MediaStream)
1629
- b = e;
315
+ function Ss(e = {}) {
316
+ const {
317
+ audio: t = !1,
318
+ mimeType: s,
319
+ bitsPerSecond: r,
320
+ onData: a,
321
+ onStop: n,
322
+ onRecordingStart: i,
323
+ onRecordingPause: c,
324
+ onRecordingResume: o,
325
+ onRecordingStop: l,
326
+ onRecordingComplete: h,
327
+ onError: d,
328
+ passThroughStream: m
329
+ } = e, u = F(null), p = F(null), M = F([]), [E, f] = x("idle"), [S, b] = x(null), [X, A] = x(null), w = R(() => {
330
+ var C;
331
+ const y = [s, ...bt].filter(Boolean);
332
+ for (const T of y)
333
+ if ((C = MediaRecorder.isTypeSupported) != null && C.call(MediaRecorder, T)) return T;
334
+ }, [s]), G = R(
335
+ async (y) => {
336
+ const C = new MediaStream();
337
+ if (y.getTracks().forEach((T) => C.addTrack(T)), t) {
338
+ let T;
339
+ if (t instanceof MediaStream)
340
+ T = t;
1630
341
  else {
1631
- const Y = typeof e == "object" ? { audio: e } : { audio: !0, video: !1 };
1632
- b = await navigator.mediaDevices.getUserMedia(Y);
342
+ const k = typeof t == "object" ? { audio: t } : { audio: !0, video: !1 };
343
+ T = await navigator.mediaDevices.getUserMedia(k);
1633
344
  }
1634
- b.getAudioTracks().forEach((Y) => w.addTrack(Y));
345
+ T.getAudioTracks().forEach((k) => C.addTrack(k));
1635
346
  }
1636
- if (!w.getTracks().length)
347
+ if (!C.getTracks().length)
1637
348
  throw new Error("No tracks available in combined stream.");
1638
- return s.current = w, w;
349
+ return p.current = C, C;
1639
350
  },
1640
- [e]
1641
- ), y = te(
1642
- async (B, w) => {
351
+ [t]
352
+ ), Y = R(
353
+ async (y, C) => {
354
+ f(q("start")), A(null), b(null);
1643
355
  try {
1644
- let b;
1645
- o ? (b = B, s.current = b) : b = await I(B);
1646
- const Y = m(), k = {};
1647
- Y && (k.mimeType = Y), r && (k.bitsPerSecond = r);
1648
- const L = new MediaRecorder(b, k);
1649
- L.ondataavailable = (D) => {
1650
- var R;
1651
- ((R = D.data) == null ? void 0 : R.size) > 0 && (l.current.push(D.data), i == null || i(D.data));
1652
- }, L.onstop = () => {
1653
- const D = new Blob(l.current, {
1654
- type: Y ?? "video/webm"
356
+ let T;
357
+ if (m)
358
+ T = m, p.current = T;
359
+ else {
360
+ if (!y) throw new Error("start(stream) requires a MediaStream.");
361
+ T = await G(y);
362
+ }
363
+ const k = w(), H = {};
364
+ k && (H.mimeType = k), r && (H.bitsPerSecond = r);
365
+ const K = new MediaRecorder(T, H);
366
+ K.ondataavailable = (N) => {
367
+ var $;
368
+ (($ = N.data) == null ? void 0 : $.size) > 0 && (M.current.push(N.data), a == null || a(N.data));
369
+ }, K.onstop = () => {
370
+ const N = new Blob(M.current, {
371
+ type: k ?? "video/webm"
1655
372
  });
1656
- d(D), a == null || a(D), l.current = [];
1657
- }, A.current = L, L.start(w), h(!0), f(!1);
1658
- } catch (b) {
1659
- console.error("start(stream) failed", b), C(b instanceof Error ? b : new Error(String(b)));
373
+ b(N), n == null || n(N), h == null || h(N), M.current = [], f(q("complete"));
374
+ }, u.current = K, K.start(C), f(q("started")), i == null || i();
375
+ } catch (T) {
376
+ const k = T instanceof Error ? T : new Error(String(T));
377
+ console.error("start(stream) failed", k), A(k), f(q("fail")), d == null || d(k);
1660
378
  }
1661
379
  },
1662
- [I, m, r, i, a, o]
1663
- ), S = te(() => {
1664
- const B = A.current;
1665
- B && B.state !== "inactive" && B.stop(), h(!1), f(!1);
1666
- }, []), M = te(() => {
1667
- const B = A.current;
1668
- (B == null ? void 0 : B.state) === "recording" && (B.pause(), f(!0));
1669
- }, []), H = te(() => {
1670
- const B = A.current;
1671
- (B == null ? void 0 : B.state) === "paused" && (B.resume(), f(!1));
1672
- }, []), G = te(() => {
1673
- var B, w;
380
+ [
381
+ G,
382
+ w,
383
+ r,
384
+ a,
385
+ n,
386
+ h,
387
+ i,
388
+ d,
389
+ m
390
+ ]
391
+ ), Q = R(() => {
392
+ const y = u.current;
393
+ !y || y.state === "inactive" || (f(q("stop")), y.stop(), l == null || l());
394
+ }, [l]), J = R(() => {
395
+ const y = u.current;
396
+ (y == null ? void 0 : y.state) === "recording" && (y.pause(), f(q("pause")), c == null || c());
397
+ }, [c]), ee = R(() => {
398
+ const y = u.current;
399
+ (y == null ? void 0 : y.state) === "paused" && (y.resume(), f(q("resume")), o == null || o());
400
+ }, [o]), z = R(() => {
401
+ var y;
1674
402
  try {
1675
- (B = A.current) == null || B.stop(), A.current = null, (w = s.current) == null || w.getTracks().forEach((b) => b.stop()), s.current = null, d(null), h(!1), f(!1), l.current = [], C(null);
1676
- } catch (b) {
1677
- console.error("clear failed", b);
403
+ u.current && (u.current.onstop = null, u.current.state !== "inactive" && u.current.stop()), u.current = null, (y = p.current) == null || y.getTracks().forEach((C) => C.stop()), p.current = null, b(null), f(q("clear")), M.current = [], A(null);
404
+ } catch (C) {
405
+ console.error("clear failed", C);
1678
406
  }
1679
407
  }, []);
1680
- return $(() => () => G(), []), {
1681
- start: y,
1682
- stop: S,
1683
- pause: M,
1684
- resume: H,
1685
- clear: G,
1686
- isRecording: c,
1687
- isPaused: u,
1688
- recordedBlob: p,
1689
- error: g,
1690
- getActiveStream: () => s.current
408
+ return _(() => () => z(), []), {
409
+ status: E,
410
+ start: Y,
411
+ stop: Q,
412
+ pause: J,
413
+ resume: ee,
414
+ clear: z,
415
+ isRecording: E === "recording" || E === "paused",
416
+ isPaused: E === "paused",
417
+ recordedBlob: S,
418
+ error: X,
419
+ getActiveStream: () => p.current
1691
420
  };
1692
421
  }
1693
- const Dn = (t, e) => {
1694
- const n = t.split(","), r = n[0].match(/:(.*?);/), i = r ? r[1] : "application/octet-stream", a = atob(n[n.length - 1]);
1695
- let o = a.length;
1696
- const A = new Uint8Array(o);
1697
- for (; o--; )
1698
- A[o] = a.charCodeAt(o);
1699
- return new File([A], e, { type: i });
1700
- }, hn = 4, fn = 50, gn = 5e3, He = (t) => new Promise((e) => {
1701
- if (t.readyState >= 4) {
1702
- e();
422
+ const At = async (e, t = {}) => {
423
+ var s, r, a;
424
+ (s = t.onCaptureStart) == null || s.call(t), await Promise.resolve();
425
+ try {
426
+ const n = e();
427
+ return (r = t.onCaptureComplete) == null || r.call(t, n), n;
428
+ } catch (n) {
429
+ const i = n instanceof Error ? n : new Error(String(n));
430
+ throw (a = t.onError) == null || a.call(t, i), i;
431
+ }
432
+ }, ys = (e = {}) => {
433
+ const { session: t } = Ie(), {
434
+ captureFrame: s = t.captureFrame,
435
+ onCaptureStart: r,
436
+ onCaptureComplete: a,
437
+ onError: n
438
+ } = e, [i, c] = x("idle"), [o, l] = x(null), [h, d] = x(null), m = R(async () => {
439
+ c("capturing"), l(null), d(null);
440
+ try {
441
+ const p = await At(s, {
442
+ onCaptureStart: r,
443
+ onCaptureComplete: a,
444
+ onError: n
445
+ });
446
+ return l(p), c("completed"), p;
447
+ } catch (p) {
448
+ const M = p instanceof Error ? p : new Error(String(p));
449
+ return d(M), c("error"), null;
450
+ }
451
+ }, [s, r, a, n]), u = R(() => {
452
+ c("idle"), l(null), d(null);
453
+ }, []);
454
+ return { status: i, capturePhoto: m, clear: u, dataUrl: o, error: h };
455
+ }, Ms = (e, t) => {
456
+ const s = e.split(","), r = s[0].match(/:(.*?);/), a = r ? r[1] : "application/octet-stream", n = atob(s[s.length - 1]);
457
+ let i = n.length;
458
+ const c = new Uint8Array(i);
459
+ for (; i--; )
460
+ c[i] = n.charCodeAt(i);
461
+ return new File([c], t, { type: a });
462
+ }, Ft = 4, Ct = 50, vt = 5e3, se = (e) => Math.min(1, Math.max(0, e)), Me = (e) => new Promise((t) => {
463
+ if (e.readyState >= 4) {
464
+ t();
1703
465
  return;
1704
466
  }
1705
- let n = !1;
467
+ let s = !1;
1706
468
  const r = () => {
1707
- n || (n = !0, e());
469
+ s || (s = !0, t());
1708
470
  };
1709
- t.addEventListener("canplaythrough", r, { once: !0 }), t.addEventListener("error", r, { once: !0 }), setTimeout(r, gn);
1710
- }), Ke = (t, e) => {
1711
- const n = document.createElement("audio");
1712
- return n.src = t, n.loop = e, n.preload = "auto", n.setAttribute("playsinline", ""), n.setAttribute("webkit-playsinline", ""), n.load(), n;
1713
- }, pn = (t) => {
1714
- t.muted = !0, t.play().then(() => {
1715
- t.pause(), t.currentTime = 0, t.muted = !1;
471
+ e.addEventListener("canplaythrough", r, { once: !0 }), e.addEventListener("error", r, { once: !0 }), setTimeout(r, vt);
472
+ }), Te = (e, t) => {
473
+ const s = document.createElement("audio");
474
+ return s.src = e, s.loop = t, s.preload = "auto", s.setAttribute("playsinline", ""), s.setAttribute("webkit-playsinline", ""), s.load(), s;
475
+ }, kt = (e) => {
476
+ e.muted = !0, e.play().then(() => {
477
+ e.pause(), e.currentTime = 0, e.muted = !1;
1716
478
  }).catch(() => {
1717
- t.muted = !1;
479
+ e.muted = !1;
1718
480
  });
1719
481
  };
1720
- class vn {
1721
- constructor(e = {}) {
482
+ class _t {
483
+ constructor(t = {}) {
1722
484
  U(this, "sfxPoolSize");
1723
485
  U(this, "coalesceMs");
1724
486
  U(this, "muted", !0);
1725
487
  U(this, "listeners", /* @__PURE__ */ new Set());
1726
488
  U(this, "music", null);
489
+ U(this, "musicUrl", null);
490
+ U(this, "musicReady", null);
1727
491
  U(this, "musicWanted", null);
1728
492
  U(this, "pools", /* @__PURE__ */ new Map());
1729
493
  /** Last play time per SFX URL, for the coalesce window. */
1730
494
  U(this, "lastPlayed", /* @__PURE__ */ new Map());
1731
495
  /** Readiness promises so a loading gate can await decode/buffer. */
1732
496
  U(this, "ready", /* @__PURE__ */ new Map());
1733
- this.sfxPoolSize = e.sfxPoolSize ?? hn, this.coalesceMs = e.coalesceMs ?? fn;
497
+ this.sfxPoolSize = t.sfxPoolSize ?? Ft, this.coalesceMs = t.coalesceMs ?? Ct;
1734
498
  }
1735
499
  /**
1736
500
  * Create + buffer the looping music element. Await in the loading gate so the
1737
501
  * unmute tap is instant. Idempotent per URL (re-requesting the same track is
1738
502
  * a no-op that returns the in-flight promise).
1739
503
  */
1740
- prefetchMusic(e, n = 0.4) {
1741
- this.musicWanted = { url: e, volume: n };
1742
- const r = `music:${e}`, i = this.ready.get(r);
1743
- if (i) return i;
1744
- this.music = Ke(e, !0), this.music.volume = n;
1745
- const a = He(this.music);
1746
- return this.ready.set(r, a), a;
504
+ prefetchMusic(t, s = 0.4) {
505
+ const r = se(s);
506
+ if (this.musicWanted = { url: t, volume: r }, this.musicUrl === t && this.musicReady)
507
+ return this.music && (this.music.volume = r), this.musicReady;
508
+ this.music && (this.music.pause(), this.music.currentTime = 0, this.music.removeAttribute("src"), this.music.load()), this.music = Te(t, !0), this.musicUrl = t, this.music.volume = r;
509
+ const a = Me(this.music);
510
+ return this.musicReady = a, a;
1747
511
  }
1748
512
  /**
1749
513
  * Create + buffer an SFX voice pool (round-robin so overlapping plays don't
1750
514
  * cut each other off). Returns a promise that resolves when the first element
1751
515
  * buffers. Idempotent per URL.
1752
516
  */
1753
- registerSound(e, n = 1) {
1754
- const r = this.ready.get(e);
517
+ registerSound(t, s = 1) {
518
+ const r = this.ready.get(t);
1755
519
  if (r) return r;
1756
- const i = [];
1757
- for (let o = 0; o < this.sfxPoolSize; o += 1) {
1758
- const A = Ke(e, !1);
1759
- A.volume = n, A.addEventListener("ended", () => {
1760
- A.currentTime = 0;
1761
- }), i.push(A);
520
+ const a = se(s), n = [];
521
+ for (let c = 0; c < this.sfxPoolSize; c += 1) {
522
+ const o = Te(t, !1);
523
+ o.volume = a, o.addEventListener("ended", () => {
524
+ o.currentTime = 0;
525
+ }), n.push(o);
1762
526
  }
1763
- this.pools.set(e, { els: i, next: 0, volume: n });
1764
- const a = He(i[0]);
1765
- return this.ready.set(e, a), a;
527
+ this.pools.set(t, { els: n, next: 0, volume: a });
528
+ const i = Me(n[0]);
529
+ return this.ready.set(t, i), i;
1766
530
  }
1767
531
  /** Subscribe to mute-state changes (for a toggle UI). Fires immediately with
1768
532
  * the current state. Returns an unsubscribe. */
1769
- onMuteChange(e) {
1770
- return this.listeners.add(e), e(this.muted), () => this.listeners.delete(e);
533
+ onMuteChange(t) {
534
+ return this.listeners.add(t), t(this.muted), () => this.listeners.delete(t);
1771
535
  }
1772
536
  isMuted() {
1773
537
  return this.muted;
@@ -1778,8 +542,8 @@ class vn {
1778
542
  * element with a muted play/pause so later `playOneShot` calls are allowed,
1779
543
  * then start the music. All elements are already buffered, so this is instant.
1780
544
  */
1781
- setMuted(e) {
1782
- e !== this.muted && (this.muted = e, this.muted || this.pools.forEach((n) => n.els.forEach(pn)), this.applyMusic(), this.listeners.forEach((n) => n(this.muted)));
545
+ setMuted(t) {
546
+ t !== this.muted && (this.muted = t, this.muted || this.pools.forEach((s) => s.els.forEach(kt)), this.applyMusic(), this.listeners.forEach((s) => s(this.muted)));
1783
547
  }
1784
548
  toggleMuted() {
1785
549
  this.setMuted(!this.muted);
@@ -1790,29 +554,30 @@ class vn {
1790
554
  * same sound into one play, and does NO synchronous `currentTime` seek on a
1791
555
  * ready element (the pool rewinds on `ended`, off the hot path).
1792
556
  */
1793
- playOneShot(e, n) {
557
+ playOneShot(t, s) {
1794
558
  if (this.muted) return;
1795
- const r = this.pools.get(e);
559
+ const r = this.pools.get(t);
1796
560
  if (!r) return;
1797
- const i = performance.now();
1798
- if (i - (this.lastPlayed.get(e) ?? -1 / 0) < this.coalesceMs) return;
1799
- this.lastPlayed.set(e, i);
1800
- const a = r.els.length;
1801
- let o;
1802
- for (let A = 0; A < a; A += 1) {
1803
- const s = r.els[(r.next + A) % a];
1804
- if (s.paused) {
1805
- o = s, r.next = (r.next + A + 1) % a;
561
+ const a = performance.now();
562
+ if (a - (this.lastPlayed.get(t) ?? -1 / 0) < this.coalesceMs) return;
563
+ this.lastPlayed.set(t, a);
564
+ const n = r.els.length;
565
+ let i;
566
+ for (let c = 0; c < n; c += 1) {
567
+ const o = r.els[(r.next + c) % n];
568
+ if (o.paused) {
569
+ i = o, r.next = (r.next + c + 1) % n;
1806
570
  break;
1807
571
  }
1808
572
  }
1809
- o || (o = r.els[r.next], r.next = (r.next + 1) % a), o.muted = !1, o.volume = n ?? r.volume, o.currentTime !== 0 && (o.currentTime = 0), o.play().catch(() => {
573
+ i || (i = r.els[r.next], r.next = (r.next + 1) % n), i.muted = !1, i.volume = se(s ?? r.volume), i.currentTime !== 0 && (i.currentTime = 0), i.play().catch(() => {
1810
574
  });
1811
575
  }
1812
576
  /** Request the looping background track (buffer it with prefetchMusic, which
1813
577
  * a loading gate awaits). Remembered while muted; starts on unmute. */
1814
- startMusic(e, n = 0.4) {
1815
- this.musicWanted = { url: e, volume: n }, this.applyMusic();
578
+ startMusic(t, s = 0.4) {
579
+ const r = se(s);
580
+ this.musicUrl !== t && this.prefetchMusic(t, r), this.musicWanted = { url: t, volume: r }, this.applyMusic();
1816
581
  }
1817
582
  stopMusic() {
1818
583
  this.musicWanted = null, this.music && (this.music.pause(), this.music.currentTime = 0);
@@ -1822,40 +587,857 @@ class vn {
1822
587
  }), this.muted && !this.music.paused && this.music.pause());
1823
588
  }
1824
589
  }
1825
- const z = new vn(), Yn = (t, e) => z.prefetchMusic(t, e), Xn = (t, e) => z.registerSound(t, e), Gn = (t, e) => z.startMusic(t, e), Rn = () => z.stopMusic(), On = (t, e) => z.playOneShot(t, e), Pn = (t) => z.setMuted(t), Jn = () => z.toggleMuted(), zn = () => z.isMuted(), Un = (t) => z.onMuteChange(t), Hn = () => {
1826
- const [t, e] = _(z.isMuted());
1827
- return $(() => z.onMuteChange(e), []), t;
590
+ const xt = (e, t, s) => e === "infinite" || e === "loop" && t < Math.max(1, Math.floor(s)) ? "replay" : "ended", wt = (e, t, s) => e && t !== s, Ut = (e) => Math.min(100, Math.max(0, e)) / 100, Ts = He(function({
591
+ src: t,
592
+ playMode: s = "once",
593
+ loopCount: r = 1,
594
+ autoplay: a = !1,
595
+ muted: n = !1,
596
+ volume: i = 100,
597
+ preload: c = "auto",
598
+ onReady: o,
599
+ onPlay: l,
600
+ onPause: h,
601
+ onEnded: d,
602
+ onError: m
603
+ }, u) {
604
+ const p = F(null), M = F(0), E = F(null), f = R(async () => {
605
+ const A = p.current;
606
+ if (A)
607
+ try {
608
+ await A.play();
609
+ } catch (w) {
610
+ const G = w instanceof Error ? w : new Error(String(w));
611
+ throw m == null || m(G), G;
612
+ }
613
+ }, [m]), S = R(() => {
614
+ var A;
615
+ return (A = p.current) == null ? void 0 : A.pause();
616
+ }, []), b = R(() => {
617
+ const A = p.current;
618
+ A && (A.pause(), A.currentTime = 0, M.current = 0);
619
+ }, []);
620
+ ze(
621
+ u,
622
+ () => ({
623
+ play: f,
624
+ pause: S,
625
+ stop: b,
626
+ get current() {
627
+ return p.current;
628
+ }
629
+ }),
630
+ [S, f, b]
631
+ ), _(() => {
632
+ M.current = 0, E.current = null;
633
+ }, [t]), _(() => {
634
+ p.current && (p.current.volume = Ut(i));
635
+ }, [i]), _(() => {
636
+ wt(a, E.current, t) && (E.current = t, f().catch(() => {
637
+ }));
638
+ }, [a, t]);
639
+ const X = R(() => {
640
+ M.current += 1;
641
+ const A = Math.max(1, Math.floor(r));
642
+ if (xt(s, M.current, A) === "replay") {
643
+ const w = p.current;
644
+ w && (w.currentTime = 0, f().catch(() => {
645
+ }));
646
+ return;
647
+ }
648
+ M.current = 0, d == null || d();
649
+ }, [r, d, f, s]);
650
+ return /* @__PURE__ */ g(
651
+ "audio",
652
+ {
653
+ ref: p,
654
+ src: t,
655
+ preload: c,
656
+ autoPlay: !1,
657
+ muted: n,
658
+ loop: !1,
659
+ playsInline: !0,
660
+ style: { display: "none" },
661
+ onCanPlayThrough: o,
662
+ onPlay: l,
663
+ onPause: h,
664
+ onEnded: X,
665
+ onError: () => m == null ? void 0 : m(new Error(`Unable to load audio: ${t}`))
666
+ }
667
+ );
668
+ }), D = new _t(), Es = (e, t) => D.prefetchMusic(e, t), Rs = (e, t) => D.registerSound(e, t), bs = (e, t) => D.startMusic(e, t), As = () => D.stopMusic(), Fs = (e, t) => D.playOneShot(e, t), Cs = (e) => D.setMuted(e), vs = () => D.toggleMuted(), ks = () => D.isMuted(), _s = (e) => D.onMuteChange(e), xs = () => {
669
+ const [e, t] = x(D.isMuted());
670
+ return _(() => D.onMuteChange(t), []), e;
671
+ }, Pt = (e = {}) => {
672
+ const { auto: t = !1 } = e, s = F(e.env ?? Le()), r = F(e.constraints);
673
+ r.current = e.constraints;
674
+ const [a, n] = x("unknown"), [i, c] = x(null), o = F(0), l = R(async () => {
675
+ const d = ++o.current, m = await Oe(s.current);
676
+ if (d !== o.current) return a;
677
+ const u = m.state === "unknown" ? "unknown" : m.state;
678
+ return n((p) => p === "requesting" ? p : u), u !== "blocked" && c(null), u;
679
+ }, []), h = R(
680
+ async (d) => {
681
+ const m = ++o.current;
682
+ n("requesting"), c(null);
683
+ const u = await Ge(
684
+ { constraints: (d == null ? void 0 : d.constraints) ?? r.current, keepStream: !1 },
685
+ s.current
686
+ );
687
+ return m !== o.current || (n(u.state), c(u.reason)), u.state;
688
+ },
689
+ []
690
+ );
691
+ return _(() => {
692
+ let d = () => {
693
+ }, m = !0;
694
+ return t ? h() : l(), qe((u) => {
695
+ m && (n((p) => p === "requesting" ? p : u.state === "unknown" ? "unknown" : u.state), u.state !== "blocked" && c(null));
696
+ }, s.current).then((u) => {
697
+ m ? d = u : u();
698
+ }), () => {
699
+ m = !1, o.current += 1, d();
700
+ };
701
+ }, [t, l, h]), Z(
702
+ () => ({
703
+ state: a,
704
+ reason: i,
705
+ canPrompt: Be(a),
706
+ usable: a === "granted",
707
+ request: h,
708
+ refresh: l
709
+ }),
710
+ [a, i, h, l]
711
+ );
712
+ }, Dt = {
713
+ display: "flex",
714
+ flexDirection: "column",
715
+ alignItems: "center",
716
+ justifyContent: "center",
717
+ gap: 12,
718
+ height: "100%",
719
+ minHeight: 160,
720
+ padding: 24,
721
+ textAlign: "center",
722
+ background: "#111827",
723
+ color: "#f9fafb",
724
+ fontFamily: "system-ui, sans-serif"
725
+ }, Nt = {
726
+ font: "inherit",
727
+ padding: "10px 18px",
728
+ borderRadius: 8,
729
+ border: "1px solid rgba(255,255,255,0.3)",
730
+ background: "#2563eb",
731
+ color: "#fff",
732
+ cursor: "pointer"
733
+ }, ws = ({
734
+ children: e,
735
+ fallback: t,
736
+ auto: s = !1,
737
+ constraints: r,
738
+ requestLabel: a = "Allow camera"
739
+ }) => {
740
+ const n = Pt({ auto: s, constraints: r });
741
+ if (n.usable) return /* @__PURE__ */ g(re, { children: e });
742
+ if (t) return /* @__PURE__ */ g(re, { children: t(n) });
743
+ const { state: i, reason: c, canPrompt: o, request: l } = n;
744
+ return /* @__PURE__ */ L("div", { style: Dt, role: "region", "aria-label": "Camera access", children: [
745
+ /* @__PURE__ */ g("p", { "aria-live": "polite", style: { margin: 0 }, children: (c == null ? void 0 : c.message) ?? We[i] }),
746
+ /* @__PURE__ */ g(
747
+ "button",
748
+ {
749
+ type: "button",
750
+ onClick: () => void l(),
751
+ disabled: !o || i === "requesting",
752
+ "aria-disabled": !o || i === "requesting",
753
+ style: { ...Nt, opacity: o && i !== "requesting" ? 1 : 0.5 },
754
+ children: i === "requesting" ? "Waiting…" : i === "denied" ? "Try again" : a
755
+ }
756
+ )
757
+ ] });
758
+ }, It = () => {
759
+ var e;
760
+ return {
761
+ enumerateDevices: typeof navigator < "u" && ((e = navigator.mediaDevices) != null && e.enumerateDevices) ? () => navigator.mediaDevices.enumerateDevices() : void 0
762
+ };
763
+ }, Lt = /\b(back|rear|environment|world)\b/i, Ot = /\b(front|user|facetime|selfie)\b/i, Gt = (e) => Lt.test(e) ? "environment" : Ot.test(e) ? "user" : null, Us = async (e = It()) => {
764
+ if (!e.enumerateDevices) return [];
765
+ try {
766
+ return (await e.enumerateDevices()).filter((s) => s.kind === "videoinput").map((s) => ({
767
+ deviceId: s.deviceId,
768
+ label: s.label,
769
+ facing: Gt(s.label)
770
+ }));
771
+ } catch {
772
+ return [];
773
+ }
774
+ }, Ps = (e, t) => e.find((s) => s.facing === t) ?? null, ke = je(null), Ds = ({
775
+ cache: e,
776
+ disposeUnreferencedOnUnmount: t = !0,
777
+ children: s
778
+ }) => {
779
+ const r = e ?? Ce();
780
+ return _(() => () => {
781
+ t && r.disposeUnreferenced();
782
+ }, [r, t]), /* @__PURE__ */ g(ke.Provider, { value: r, children: s });
783
+ }, _e = () => $e(ke) ?? Ce(), Ns = (e, t = {}) => {
784
+ const { enabled: s = !0 } = t, r = _e(), a = Ve(), n = (e == null ? void 0 : e.key) ?? null, [i, c] = x({
785
+ value: null,
786
+ status: "idle",
787
+ error: null
788
+ });
789
+ return _(() => {
790
+ if (!e || !s) {
791
+ c({ value: null, status: "idle", error: null });
792
+ return;
793
+ }
794
+ let o = !0;
795
+ const l = r.get(e.key);
796
+ return c({ value: l ?? null, status: l ? "ready" : "loading", error: null }), r.acquire(e, a).then((h) => {
797
+ o && c({ value: h, status: "ready", error: null });
798
+ }).catch((h) => {
799
+ o && c({ value: null, status: "error", error: h });
800
+ }), () => {
801
+ o = !1, r.release(e.key, a);
802
+ };
803
+ }, [r, n, s, a]), i;
804
+ }, Is = (e) => {
805
+ const t = _e(), s = e ?? t;
806
+ return Ze(
807
+ (r) => s.subscribe(r),
808
+ () => s.getStats(),
809
+ () => s.getStats()
810
+ );
811
+ }, ae = 1, xe = Object.freeze({
812
+ version: ae,
813
+ trackers: {
814
+ face: { enabled: !0, numFaces: 1, targetFps: null, holdMs: 250, predictMs: 0, smoothing: 0 },
815
+ hand: { enabled: !1, targetFps: null },
816
+ gesture: { enabled: !1, targetFps: null },
817
+ body: { enabled: !1, targetFps: null },
818
+ holistic: {
819
+ enabled: !1,
820
+ targetFps: null,
821
+ hands: "both",
822
+ holdMs: 250,
823
+ predictMs: 0,
824
+ analysisMaxDimension: 768,
825
+ outputFaceBlendshapes: !0,
826
+ confidence: 0.5,
827
+ delegate: "auto"
828
+ },
829
+ segmentation: { enabled: !1, quality: "low" },
830
+ semanticSegmentation: { enabled: !1, preset: "multiclass", quality: "medium" }
831
+ },
832
+ perf: { targetFps: 24, camRes: 720, cameraZoom: 1.2, analysisScale: 1 },
833
+ lifecycle: { pauseWhenHidden: !1 },
834
+ quality: {},
835
+ camera: { facingMode: "user", deviceId: null, mirrored: "auto" },
836
+ fallbacks: { onUnsupported: "degrade", delegate: "auto" },
837
+ assets: { holisticModelUrl: null, semanticSegmentationModelUrl: null },
838
+ updatedAt: 0
839
+ }), P = (e, t, s, r, a, n) => {
840
+ if (e === void 0) return t;
841
+ if (typeof e != "number" || !Number.isFinite(e))
842
+ return n(`${a}: not a number, kept ${t}`), t;
843
+ const i = Math.min(r, Math.max(s, e));
844
+ return i !== e && n(`${a}: ${e} clamped to ${i}`), i;
845
+ }, j = (e, t, s, r) => e === void 0 ? t : e === null ? null : typeof e != "number" || !Number.isFinite(e) || e <= 0 ? (r(`${s}: invalid fps, kept ${t}`), t) : (e > 120 && r(`${s}: ${e} clamped to 120`), Math.min(120, e)), qt = [
846
+ "tiers",
847
+ "budget",
848
+ "initialTier",
849
+ "minTier",
850
+ "maxTier",
851
+ "adaptive",
852
+ "historySize"
853
+ ], Ee = (e) => {
854
+ const t = {};
855
+ for (const s of qt) e[s] !== void 0 && (t[s] = e[s]);
856
+ return t;
857
+ }, I = (e, t, s, r) => e === void 0 ? t : typeof e != "boolean" ? (r(`${s}: not a boolean, kept ${t}`), t) : e, B = (e, t, s, r, a) => e === void 0 ? s : t.includes(e) ? e : (a(`${r}: "${String(e)}" is not one of ${t.join(" | ")}, kept ${s}`), s), Re = (e, t, s, r) => e === void 0 ? t : e === null ? null : typeof e != "string" || !/^https?:\/\//.test(e) ? (r(`${s}: not an http(s) URL, kept ${t === null ? "the SDK default" : t}`), t) : e, W = (e = {}, t = xe, s = []) => {
858
+ var c, o, l, h, d, m, u, p, M, E, f, S, b, X, A, w, G, Y, Q, J, ee, z, y, C, T, k, H, K, N, $, le, ue, de, me, pe, fe, he, ge;
859
+ const r = (Pe) => s.push(Pe), a = e.trackers ?? {}, n = t.trackers, i = e.quality === void 0 ? t.quality === !1 ? !1 : Ee(t.quality) : e.quality === !1 ? !1 : typeof e.quality == "object" && e.quality !== null ? Ee(e.quality) : (r("quality: must be an object or false, kept base"), t.quality);
860
+ return {
861
+ version: ae,
862
+ trackers: {
863
+ face: {
864
+ enabled: I((c = a.face) == null ? void 0 : c.enabled, n.face.enabled, "trackers.face.enabled", r),
865
+ numFaces: Math.round(
866
+ P((o = a.face) == null ? void 0 : o.numFaces, n.face.numFaces, 1, 10, "trackers.face.numFaces", r)
867
+ ),
868
+ targetFps: j((l = a.face) == null ? void 0 : l.targetFps, n.face.targetFps, "trackers.face.targetFps", r),
869
+ holdMs: P((h = a.face) == null ? void 0 : h.holdMs, n.face.holdMs, 0, 5e3, "trackers.face.holdMs", r),
870
+ predictMs: P(
871
+ (d = a.face) == null ? void 0 : d.predictMs,
872
+ n.face.predictMs,
873
+ 0,
874
+ 1e3,
875
+ "trackers.face.predictMs",
876
+ r
877
+ ),
878
+ smoothing: P(
879
+ (m = a.face) == null ? void 0 : m.smoothing,
880
+ n.face.smoothing,
881
+ 0,
882
+ 100,
883
+ "trackers.face.smoothing",
884
+ r
885
+ )
886
+ },
887
+ hand: {
888
+ enabled: I((u = a.hand) == null ? void 0 : u.enabled, n.hand.enabled, "trackers.hand.enabled", r),
889
+ targetFps: j((p = a.hand) == null ? void 0 : p.targetFps, n.hand.targetFps, "trackers.hand.targetFps", r)
890
+ },
891
+ gesture: {
892
+ enabled: I((M = a.gesture) == null ? void 0 : M.enabled, n.gesture.enabled, "trackers.gesture.enabled", r),
893
+ targetFps: j(
894
+ (E = a.gesture) == null ? void 0 : E.targetFps,
895
+ n.gesture.targetFps,
896
+ "trackers.gesture.targetFps",
897
+ r
898
+ )
899
+ },
900
+ body: {
901
+ enabled: I((f = a.body) == null ? void 0 : f.enabled, n.body.enabled, "trackers.body.enabled", r),
902
+ targetFps: j((S = a.body) == null ? void 0 : S.targetFps, n.body.targetFps, "trackers.body.targetFps", r)
903
+ },
904
+ holistic: {
905
+ enabled: I((b = a.holistic) == null ? void 0 : b.enabled, n.holistic.enabled, "trackers.holistic.enabled", r),
906
+ targetFps: j(
907
+ (X = a.holistic) == null ? void 0 : X.targetFps,
908
+ n.holistic.targetFps,
909
+ "trackers.holistic.targetFps",
910
+ r
911
+ ),
912
+ hands: B(
913
+ (A = a.holistic) == null ? void 0 : A.hands,
914
+ ["both", "left", "right", "none"],
915
+ n.holistic.hands,
916
+ "trackers.holistic.hands",
917
+ r
918
+ ),
919
+ holdMs: P(
920
+ (w = a.holistic) == null ? void 0 : w.holdMs,
921
+ n.holistic.holdMs,
922
+ 0,
923
+ 5e3,
924
+ "trackers.holistic.holdMs",
925
+ r
926
+ ),
927
+ predictMs: P(
928
+ (G = a.holistic) == null ? void 0 : G.predictMs,
929
+ n.holistic.predictMs,
930
+ 0,
931
+ 1e3,
932
+ "trackers.holistic.predictMs",
933
+ r
934
+ ),
935
+ analysisMaxDimension: Math.round(
936
+ P(
937
+ (Y = a.holistic) == null ? void 0 : Y.analysisMaxDimension,
938
+ n.holistic.analysisMaxDimension,
939
+ 128,
940
+ 2048,
941
+ "trackers.holistic.analysisMaxDimension",
942
+ r
943
+ )
944
+ ),
945
+ outputFaceBlendshapes: I(
946
+ (Q = a.holistic) == null ? void 0 : Q.outputFaceBlendshapes,
947
+ n.holistic.outputFaceBlendshapes,
948
+ "trackers.holistic.outputFaceBlendshapes",
949
+ r
950
+ ),
951
+ confidence: P(
952
+ (J = a.holistic) == null ? void 0 : J.confidence,
953
+ n.holistic.confidence,
954
+ 0,
955
+ 1,
956
+ "trackers.holistic.confidence",
957
+ r
958
+ ),
959
+ delegate: B(
960
+ (ee = a.holistic) == null ? void 0 : ee.delegate,
961
+ ["auto", "GPU", "CPU"],
962
+ n.holistic.delegate,
963
+ "trackers.holistic.delegate",
964
+ r
965
+ )
966
+ },
967
+ segmentation: {
968
+ enabled: I(
969
+ (z = a.segmentation) == null ? void 0 : z.enabled,
970
+ n.segmentation.enabled,
971
+ "trackers.segmentation.enabled",
972
+ r
973
+ ),
974
+ quality: B(
975
+ (y = a.segmentation) == null ? void 0 : y.quality,
976
+ ["low", "medium", "high"],
977
+ n.segmentation.quality,
978
+ "trackers.segmentation.quality",
979
+ r
980
+ )
981
+ },
982
+ semanticSegmentation: {
983
+ enabled: I(
984
+ (C = a.semanticSegmentation) == null ? void 0 : C.enabled,
985
+ n.semanticSegmentation.enabled,
986
+ "trackers.semanticSegmentation.enabled",
987
+ r
988
+ ),
989
+ preset: B(
990
+ (T = a.semanticSegmentation) == null ? void 0 : T.preset,
991
+ pt,
992
+ n.semanticSegmentation.preset,
993
+ "trackers.semanticSegmentation.preset",
994
+ r
995
+ ),
996
+ quality: B(
997
+ (k = a.semanticSegmentation) == null ? void 0 : k.quality,
998
+ ["low", "medium", "high"],
999
+ n.semanticSegmentation.quality,
1000
+ "trackers.semanticSegmentation.quality",
1001
+ r
1002
+ )
1003
+ }
1004
+ },
1005
+ perf: {
1006
+ targetFps: P((H = e.perf) == null ? void 0 : H.targetFps, t.perf.targetFps, 0, 120, "perf.targetFps", r),
1007
+ camRes: Math.round(P((K = e.perf) == null ? void 0 : K.camRes, t.perf.camRes, 160, 3840, "perf.camRes", r)),
1008
+ cameraZoom: P((N = e.perf) == null ? void 0 : N.cameraZoom, t.perf.cameraZoom, 1, 3, "perf.cameraZoom", r),
1009
+ analysisScale: P(
1010
+ ($ = e.perf) == null ? void 0 : $.analysisScale,
1011
+ t.perf.analysisScale,
1012
+ 0.25,
1013
+ 1,
1014
+ "perf.analysisScale",
1015
+ r
1016
+ )
1017
+ },
1018
+ lifecycle: {
1019
+ pauseWhenHidden: I(
1020
+ (le = e.lifecycle) == null ? void 0 : le.pauseWhenHidden,
1021
+ t.lifecycle.pauseWhenHidden,
1022
+ "lifecycle.pauseWhenHidden",
1023
+ r
1024
+ )
1025
+ },
1026
+ quality: i,
1027
+ camera: {
1028
+ facingMode: B(
1029
+ (ue = e.camera) == null ? void 0 : ue.facingMode,
1030
+ ["user", "environment"],
1031
+ t.camera.facingMode,
1032
+ "camera.facingMode",
1033
+ r
1034
+ ),
1035
+ deviceId: ((de = e.camera) == null ? void 0 : de.deviceId) === void 0 ? t.camera.deviceId : typeof e.camera.deviceId == "string" || e.camera.deviceId === null ? e.camera.deviceId : (r("camera.deviceId: not a string, kept base"), t.camera.deviceId),
1036
+ mirrored: ((me = e.camera) == null ? void 0 : me.mirrored) === void 0 ? t.camera.mirrored : e.camera.mirrored === "auto" || typeof e.camera.mirrored == "boolean" ? e.camera.mirrored : (r('camera.mirrored: must be boolean or "auto", kept base'), t.camera.mirrored)
1037
+ },
1038
+ fallbacks: {
1039
+ onUnsupported: B(
1040
+ (pe = e.fallbacks) == null ? void 0 : pe.onUnsupported,
1041
+ ["block", "degrade"],
1042
+ t.fallbacks.onUnsupported,
1043
+ "fallbacks.onUnsupported",
1044
+ r
1045
+ ),
1046
+ delegate: B(
1047
+ (fe = e.fallbacks) == null ? void 0 : fe.delegate,
1048
+ ["auto", "GPU", "CPU"],
1049
+ t.fallbacks.delegate,
1050
+ "fallbacks.delegate",
1051
+ r
1052
+ )
1053
+ },
1054
+ assets: {
1055
+ holisticModelUrl: Re(
1056
+ (he = e.assets) == null ? void 0 : he.holisticModelUrl,
1057
+ t.assets.holisticModelUrl,
1058
+ "assets.holisticModelUrl",
1059
+ r
1060
+ ),
1061
+ semanticSegmentationModelUrl: Re(
1062
+ (ge = e.assets) == null ? void 0 : ge.semanticSegmentationModelUrl,
1063
+ t.assets.semanticSegmentationModelUrl,
1064
+ "assets.semanticSegmentationModelUrl",
1065
+ r
1066
+ )
1067
+ },
1068
+ updatedAt: typeof e.updatedAt == "number" && Number.isFinite(e.updatedAt) ? e.updatedAt : t.updatedAt
1069
+ };
1070
+ }, be = (e, t, s = Date.now()) => W({ ...t, updatedAt: s }, e), we = (e) => JSON.stringify(W({}, e)), Ue = (e) => {
1071
+ const t = [];
1072
+ let s = e;
1073
+ if (typeof e == "string")
1074
+ try {
1075
+ s = JSON.parse(e);
1076
+ } catch {
1077
+ return {
1078
+ config: W(),
1079
+ migrated: !0,
1080
+ warnings: ["not valid JSON; defaults used"]
1081
+ };
1082
+ }
1083
+ if (!s || typeof s != "object")
1084
+ return {
1085
+ config: W(),
1086
+ migrated: !0,
1087
+ warnings: ["not an object; defaults used"]
1088
+ };
1089
+ const r = s, a = r.version !== ae;
1090
+ return a && t.push(
1091
+ `migrated from version ${String(r.version ?? "none")} to ${ae}`
1092
+ ), { config: W(r, xe, t), migrated: a, warnings: t };
1093
+ }, Ls = [
1094
+ "face",
1095
+ "hand",
1096
+ "gesture",
1097
+ "body",
1098
+ "holistic",
1099
+ "segmentation",
1100
+ "semanticSegmentation"
1101
+ ], Bt = (e) => ({
1102
+ perf: {
1103
+ targetFps: e.perf.targetFps > 0 ? e.perf.targetFps : void 0,
1104
+ camRes: e.perf.camRes,
1105
+ cameraZoom: e.perf.cameraZoom,
1106
+ analysisScale: e.perf.analysisScale
1107
+ },
1108
+ lifecycle: { pauseWhenHidden: e.lifecycle.pauseWhenHidden },
1109
+ quality: e.quality
1110
+ }), Wt = (e) => ({
1111
+ facingMode: e.camera.facingMode,
1112
+ ...e.camera.deviceId ? { deviceId: e.camera.deviceId } : {},
1113
+ ...e.camera.mirrored === "auto" ? {} : { mirrored: e.camera.mirrored }
1114
+ }), O = (e) => e === null ? {} : { targetFps: e }, Kt = (e, t) => {
1115
+ const s = e.trackers;
1116
+ return {
1117
+ face: {
1118
+ numFaces: s.face.numFaces,
1119
+ ...O(s.face.targetFps),
1120
+ holdMs: s.face.holdMs,
1121
+ predictMs: s.face.predictMs,
1122
+ active: s.face.enabled
1123
+ },
1124
+ hand: { ...O(s.hand.targetFps), active: s.hand.enabled },
1125
+ gesture: { ...O(s.gesture.targetFps), active: s.gesture.enabled },
1126
+ body: { active: s.body.enabled },
1127
+ holistic: {
1128
+ ...O(s.holistic.targetFps),
1129
+ hands: s.holistic.hands,
1130
+ holdMs: s.holistic.holdMs,
1131
+ predictMs: s.holistic.predictMs,
1132
+ analysisMaxDimension: s.holistic.analysisMaxDimension,
1133
+ outputFaceBlendshapes: s.holistic.outputFaceBlendshapes,
1134
+ delegate: s.holistic.delegate === "auto" ? e.fallbacks.delegate : s.holistic.delegate,
1135
+ ...e.assets.holisticModelUrl ? { modelUrl: e.assets.holisticModelUrl } : {},
1136
+ active: s.holistic.enabled
1137
+ },
1138
+ segmentation: { quality: s.segmentation.quality, active: s.segmentation.enabled },
1139
+ semanticSegmentation: {
1140
+ preset: s.semanticSegmentation.preset,
1141
+ quality: s.semanticSegmentation.quality,
1142
+ ...e.assets.semanticSegmentationModelUrl ? { modelUrl: e.assets.semanticSegmentationModelUrl } : {},
1143
+ active: s.semanticSegmentation.enabled
1144
+ }
1145
+ }[t];
1146
+ }, Xt = (e, t) => {
1147
+ const s = e.trackers;
1148
+ switch (t) {
1149
+ case v.FACE_TRACKER:
1150
+ return { numFaces: s.face.numFaces, ...O(s.face.targetFps) };
1151
+ case v.HAND_TRACKER:
1152
+ return { ...O(s.hand.targetFps) };
1153
+ case v.GESTURE_TRACKER:
1154
+ return { ...O(s.gesture.targetFps) };
1155
+ case v.BODY_TRACKER:
1156
+ return { ...O(s.body.targetFps) };
1157
+ case v.HOLISTIC_TRACKER: {
1158
+ const r = s.holistic;
1159
+ return {
1160
+ ...O(r.targetFps),
1161
+ hands: r.hands,
1162
+ holdMs: r.holdMs,
1163
+ predictMs: r.predictMs,
1164
+ analysisMaxDimension: r.analysisMaxDimension,
1165
+ outputFaceBlendshapes: r.outputFaceBlendshapes,
1166
+ minFaceDetectionConfidence: r.confidence,
1167
+ minFacePresenceConfidence: r.confidence,
1168
+ minPoseDetectionConfidence: r.confidence,
1169
+ minPosePresenceConfidence: r.confidence,
1170
+ minHandLandmarksConfidence: r.confidence,
1171
+ delegate: r.delegate === "auto" ? e.fallbacks.delegate : r.delegate,
1172
+ ...e.assets.holisticModelUrl ? { modelUrl: e.assets.holisticModelUrl } : {}
1173
+ };
1174
+ }
1175
+ case v.BACKGROUND_SEGMENTATION:
1176
+ return { quality: s.segmentation.quality };
1177
+ case v.SEMANTIC_SEGMENTATION:
1178
+ return {
1179
+ preset: s.semanticSegmentation.preset,
1180
+ quality: s.semanticSegmentation.quality,
1181
+ ...e.assets.semanticSegmentationModelUrl ? { modelUrl: e.assets.semanticSegmentationModelUrl } : {}
1182
+ };
1183
+ default:
1184
+ return {};
1185
+ }
1186
+ }, Ht = (e) => {
1187
+ const t = e.trackers, s = [];
1188
+ return t.face.enabled && s.push(v.FACE_TRACKER), t.hand.enabled && s.push(v.HAND_TRACKER), t.gesture.enabled && s.push(v.GESTURE_TRACKER), t.body.enabled && s.push(v.BODY_TRACKER), t.holistic.enabled && s.push(v.HOLISTIC_TRACKER), t.segmentation.enabled && s.push(v.BACKGROUND_SEGMENTATION), t.semanticSegmentation.enabled && s.push(v.SEMANTIC_SEGMENTATION), s;
1189
+ }, ne = "vincentt.xr.tracking-config", ce = () => {
1190
+ try {
1191
+ return typeof localStorage < "u" ? localStorage : null;
1192
+ } catch {
1193
+ return null;
1194
+ }
1195
+ }, zt = (e = ne, t = ce()) => {
1196
+ if (!t) return null;
1197
+ try {
1198
+ const s = t.getItem(e);
1199
+ return s ? Ue(s) : null;
1200
+ } catch {
1201
+ return null;
1202
+ }
1203
+ }, Ae = (e, t = ne, s = ce()) => {
1204
+ if (!s) return !1;
1205
+ try {
1206
+ return s.setItem(t, we(e)), !0;
1207
+ } catch {
1208
+ return !1;
1209
+ }
1210
+ }, $t = (e = ne, t = ce()) => {
1211
+ if (t)
1212
+ try {
1213
+ t.removeItem(e);
1214
+ } catch {
1215
+ }
1216
+ }, Os = (e = {}) => {
1217
+ const { storageKey: t = ne, persist: s = !0 } = e, r = e.storage, a = F(e.initial), n = Z(() => W(a.current ?? {}), []), [i, c] = x(n), [o, l] = x([]), [h, d] = x(!s), m = F(i);
1218
+ m.current = i, _(() => {
1219
+ if (!s) {
1220
+ d(!0);
1221
+ return;
1222
+ }
1223
+ const f = zt(t, r);
1224
+ if (f) {
1225
+ const S = W(f.config, n);
1226
+ m.current = S, c(S), l(f.warnings), f.migrated && Ae(S, t, r);
1227
+ }
1228
+ d(!0);
1229
+ }, [s, t, r, n]);
1230
+ const u = R(
1231
+ (f, S) => (m.current = f, c(f), l(S), s && Ae(f, t, r), f),
1232
+ [s, t, r]
1233
+ ), p = R(
1234
+ (f) => {
1235
+ const S = [], b = W({ ...f, updatedAt: Date.now() }, m.current, S);
1236
+ return u(b, S);
1237
+ },
1238
+ [u]
1239
+ ), M = R(() => {
1240
+ const f = be(n, {}, 0);
1241
+ return m.current = f, c(f), l([]), s && $t(t, r), f;
1242
+ }, [n, s, t, r]), E = R(
1243
+ (f) => {
1244
+ const S = Ue(f);
1245
+ return S.warnings.some((b) => b.startsWith("not valid JSON") || b.startsWith("not an object")) ? (l([`import: ${S.warnings[0]}; config unchanged`]), m.current) : u(be(S.config, {}, Date.now()), S.warnings);
1246
+ },
1247
+ [u]
1248
+ );
1249
+ return Z(
1250
+ () => ({
1251
+ config: i,
1252
+ hydrated: h,
1253
+ warnings: o,
1254
+ update: p,
1255
+ reset: M,
1256
+ importJson: E,
1257
+ json: we(i),
1258
+ providerProps: Bt(i),
1259
+ cameraRequest: Wt(i),
1260
+ trackerProps: (f) => Kt(i, f),
1261
+ modelOptions: (f) => Xt(i, f),
1262
+ enabledModels: Ht(i)
1263
+ }),
1264
+ [i, h, o, p, M, E]
1265
+ );
1828
1266
  };
1829
1267
  export {
1830
- Qn as AspectRatioContainer,
1831
- vn as AudioEngine,
1832
- Vn as DEFAULT_SCREEN_IMAGE_SCENE_SETTINGS,
1833
- Zn as DEFAULT_SCREEN_IMAGE_SETTINGS,
1834
- kn as Panel,
1835
- Tn as ScreenImage,
1836
- wn as ScreenSpaceUI,
1837
- Ln as ScreenText,
1838
- Ne as ScreenTransform,
1839
- Fn as SpriteAnimation,
1840
- Rt as TextLabel,
1841
- Wn as VideoBackground,
1842
- qn as XRMediaSource,
1843
- it as XRModel,
1844
- _n as XRProvider,
1845
- er as XRScene,
1846
- z as audio,
1847
- Xe as computeContainScale,
1848
- Dn as dataURLtoFile,
1849
- zn as isMuted,
1850
- Un as onMuteChange,
1851
- On as playOneShot,
1852
- Yn as prefetchMusic,
1853
- Xn as registerSound,
1854
- Pn as setMuted,
1855
- Gn as startMusic,
1856
- Rn as stopMusic,
1857
- Jn as toggleMuted,
1858
- xn as useMediaRecorder,
1859
- Hn as useMuted,
1860
- De as useScreenRectAspect
1268
+ fs as AspectRatioContainer,
1269
+ _t as AudioEngine,
1270
+ Ts as AudioPlayer,
1271
+ hs as Axes,
1272
+ We as CAMERA_PERMISSION_MESSAGES,
1273
+ ws as CameraPermissionGate,
1274
+ Ka as DEFAULT_ASSET_BUDGET_BYTES,
1275
+ Ea as DEFAULT_MATERIAL_FILL,
1276
+ Da as DEFAULT_MESH_RENDERER,
1277
+ Na as DEFAULT_MESH_RENDERER_RENDER_STATE,
1278
+ Bs as DEFAULT_PERFORMANCE_BUDGET,
1279
+ Ws as DEFAULT_PIXEL_SNAP_INCREMENT,
1280
+ Ks as DEFAULT_QUALITY_TIERS,
1281
+ Xs as DEFAULT_REFERENCE_PIXELS_PER_UNIT,
1282
+ jr as DEFAULT_SCREEN_GLASS,
1283
+ Ra as DEFAULT_SCREEN_GRADIENT,
1284
+ Vr as DEFAULT_SCREEN_IMAGE_SCENE_SETTINGS,
1285
+ Zr as DEFAULT_SCREEN_IMAGE_SETTINGS,
1286
+ Yr as DEFAULT_SCREEN_SHAPE_SETTINGS,
1287
+ Qr as DEFAULT_SCREEN_TEXT_SCENE_SETTINGS,
1288
+ Jr as DEFAULT_SCREEN_TEXT_SHADOW_LAYER,
1289
+ Hs as DEFAULT_SCREEN_TRANSFORM_2D,
1290
+ zs as DEFAULT_SCREEN_TRANSFORM_ROOT,
1291
+ xe as DEFAULT_TRACKING_CONFIG,
1292
+ ba as DEFAULT_TRANSFORM_3D,
1293
+ Aa as EXTERNAL_BACKGROUND_RENDER_LAYER,
1294
+ ct as FULL_SCREEN_ANCHORS,
1295
+ pa as LightObject,
1296
+ fa as LookAt,
1297
+ Fa as MAX_RENDER_GROUP_PASSES,
1298
+ Ca as MaterialFill,
1299
+ Ga as MeshMaterial,
1300
+ Ia as MeshRenderer,
1301
+ ds as Panel,
1302
+ ps as PersonCutout,
1303
+ ea as PinToMesh,
1304
+ ha as RenderGroupLayer,
1305
+ ga as SCREEN_IMAGE_MASK_CHANNELS,
1306
+ Sa as SceneObjectRenderer,
1307
+ ta as ScreenGlassMaterial,
1308
+ va as ScreenGradientMaterial,
1309
+ lt as ScreenImage,
1310
+ sa as ScreenShape,
1311
+ Hr as ScreenSpaceUI,
1312
+ ya as ScreenText,
1313
+ Ke as ScreenTransform,
1314
+ Ma as SequentialRenderPasses,
1315
+ gs as SpriteAnimation,
1316
+ Ls as TRACKER_KINDS,
1317
+ ne as TRACKING_CONFIG_STORAGE_KEY,
1318
+ ae as TRACKING_CONFIG_VERSION,
1319
+ zr as TextLabel,
1320
+ ka as Transform3D,
1321
+ ms as VideoBackground,
1322
+ Xa as XRAssetCache,
1323
+ Ds as XRAssetCacheProvider,
1324
+ $s as XRMediaSource,
1325
+ v as XRModel,
1326
+ js as XRProvider,
1327
+ Vs as XRQualityController,
1328
+ Kr as XRScene,
1329
+ Zs as XR_FALLBACK_MESSAGES,
1330
+ Ys as XR_MODEL_ASSET_URLS,
1331
+ D as audio,
1332
+ Be as canPromptForCamera,
1333
+ $t as clearTrackingConfig,
1334
+ Qs as clientToScreenPixels,
1335
+ ut as computeContainScale,
1336
+ Js as computeFeedCrop,
1337
+ er as computeFitLayout,
1338
+ Ha as createAssetCache,
1339
+ tr as createFallbackReason,
1340
+ _a as createTwoStopGradient,
1341
+ Ms as dataURLtoFile,
1342
+ ja as defineGltfAsset,
1343
+ Va as defineTextureAsset,
1344
+ Za as defineVideoAsset,
1345
+ sr as detectXRCapabilities,
1346
+ Ya as disposeObject3D,
1347
+ la as drawNormalizedCrop,
1348
+ Ht as enabledModels,
1349
+ Qa as estimateGeometryBytes,
1350
+ Ja as estimateObjectBytes,
1351
+ en as estimateTextureBytes,
1352
+ rr as feedSidedName,
1353
+ ar as feedToScreenPixels,
1354
+ nr as feedToSource,
1355
+ ir as feedToTracker,
1356
+ or as feedToViewport,
1357
+ cr as feedToWorld,
1358
+ Ps as findCameraByFacing,
1359
+ Ce as getDefaultAssetCache,
1360
+ xa as getRenderGroupLayer,
1361
+ lr as isFeedPointInSource,
1362
+ ur as isMirroredSourceKind,
1363
+ ks as isMuted,
1364
+ Us as listCameras,
1365
+ zt as loadTrackingConfig,
1366
+ ra as mapScreenImageSettingsToProps,
1367
+ aa as mapScreenTextInnerShadowToProps,
1368
+ na as mapScreenTextSettingsToProps,
1369
+ dr as mediaToScreenPixels,
1370
+ ia as mergeScreenShapeSettings,
1371
+ mr as mergeScreenTransform2D,
1372
+ be as mergeTrackingConfig,
1373
+ pr as mirrorFeedX,
1374
+ La as normalizeMeshRendererRenderState,
1375
+ oa as normalizeScreenGlass,
1376
+ wa as normalizeScreenGradient,
1377
+ fr as normalizedToScreenPixels,
1378
+ _s as onMuteChange,
1379
+ hr as orientSourcePoint,
1380
+ gr as orientedSize,
1381
+ Sr as otherSide,
1382
+ Ue as parseTrackingConfig,
1383
+ yr as personLeftSign,
1384
+ Mr as personSide,
1385
+ Fs as playOneShot,
1386
+ Es as prefetchMusic,
1387
+ Oe as queryCameraPermission,
1388
+ Rs as registerSound,
1389
+ Ua as renderSequentialPasses,
1390
+ Ge as requestCameraAccess,
1391
+ Tr as resolveModelAssetUrl,
1392
+ ua as resolveNormalizedCrop,
1393
+ da as resolvePersonCutoutStatus,
1394
+ Er as resolveQualityConfig,
1395
+ Rr as resolveScreenTransform2D,
1396
+ br as resolveTrackerSupport,
1397
+ W as resolveTrackingConfig,
1398
+ Ae as saveTrackingConfig,
1399
+ Ar as screenPixelsToClient,
1400
+ Fr as screenPixelsToFeed,
1401
+ Cr as screenPixelsToMedia,
1402
+ vr as screenPixelsToNormalized,
1403
+ kr as screenPixelsToScreenSpace,
1404
+ _r as screenPixelsToUnits,
1405
+ xr as screenPointToRay,
1406
+ wr as screenSpaceToScreenPixels,
1407
+ Ur as screenUnitsToPixels,
1408
+ we as serializeTrackingConfig,
1409
+ Cs as setMuted,
1410
+ ot as shouldDrawFallback,
1411
+ V as smoothNumber,
1412
+ ls as smoothVector2,
1413
+ us as smoothVector3,
1414
+ Pr as sourceToFeed,
1415
+ bs as startMusic,
1416
+ As as stopMusic,
1417
+ qe as subscribeCameraPermission,
1418
+ Dr as swapSidedName,
1419
+ Wt as toCameraRequest,
1420
+ Xt as toModelOptions,
1421
+ Bt as toProviderProps,
1422
+ Kt as toTrackerProps,
1423
+ vs as toggleMuted,
1424
+ Nr as trackerPointToScreenPixels,
1425
+ Ir as trackerToFeed,
1426
+ Lr as trackerToWorld,
1427
+ Pt as useCameraPermission,
1428
+ ys as useFrameCapture,
1429
+ Ss as useMediaRecorder,
1430
+ xs as useMuted,
1431
+ it as usePersonMaskTexture,
1432
+ mt as useScreenRectAspect,
1433
+ Ns as useXRAsset,
1434
+ _e as useXRAssetCache,
1435
+ Is as useXRAssetStats,
1436
+ Ba as useXRCapabilities,
1437
+ za as useXRQuality,
1438
+ Os as useXRTrackingConfig,
1439
+ Or as viewportToFeed,
1440
+ Gr as worldToFeed,
1441
+ qr as worldToScreenPixels,
1442
+ Br as worldToTracker
1861
1443
  };