@vincentt-xr/sdk 2.0.0-alpha.7 → 2.0.0-alpha.9

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 (639) hide show
  1. package/GROUNDING.md +5651 -82
  2. package/README.md +1 -0
  3. package/dist/CanonicalHeadFrame-BHcWyaiK.js +1506 -0
  4. package/dist/CanonicalHeadFrame-D-_T1OMU.cjs +1 -0
  5. package/dist/DebuggerUI-7ngnJsBe.js +275 -0
  6. package/dist/DebuggerUI-CoglgKdO.cjs +1 -0
  7. package/dist/FaceRetouch-CLoTfrcs.js +1071 -0
  8. package/dist/FaceRetouch-J1lC1WbS.cjs +134 -0
  9. package/dist/FaceSurface-CHAMEeG1.cjs +1 -0
  10. package/dist/FaceSurface-DmP9AEeC.js +27 -0
  11. package/dist/SegmentationOverlay-D_FWkcyP.cjs +35 -0
  12. package/dist/SegmentationOverlay-vn5x_knv.js +6237 -0
  13. package/dist/SkeletonUtils-C2r90MtN.js +21 -0
  14. package/dist/SkeletonUtils-CddIup1F.cjs +1 -0
  15. package/dist/TextLabel-XE0rQSDn.cjs +2 -0
  16. package/dist/TextLabel-c9BCucOI.js +961 -0
  17. package/dist/assets/cache.d.ts +99 -0
  18. package/dist/assets/estimate.d.ts +11 -0
  19. package/dist/assets/gltfLoader.d.ts +16 -0
  20. package/dist/assets/index.d.ts +7 -0
  21. package/dist/assets/loaders.d.ts +43 -0
  22. package/dist/assets/react.d.ts +33 -0
  23. package/dist/body-pose/index.d.ts +521 -0
  24. package/dist/body-trigger/__fixtures__/syntheticBody.d.ts +83 -0
  25. package/dist/body-trigger/frame.d.ts +88 -0
  26. package/dist/body-trigger/index.d.ts +6 -0
  27. package/dist/body-trigger/moves.d.ts +235 -0
  28. package/dist/body-trigger/trigger.d.ts +75 -0
  29. package/dist/calibration/calibration.d.ts +75 -0
  30. package/dist/calibration/index.d.ts +6 -0
  31. package/dist/calibration/storage.d.ts +13 -0
  32. package/dist/calibration/types.d.ts +53 -0
  33. package/dist/calibration/useXRCalibration.d.ts +46 -0
  34. package/dist/camera/CameraPermissionGate.d.ts +26 -0
  35. package/dist/camera/devices.d.ts +26 -0
  36. package/dist/camera/index.d.ts +8 -0
  37. package/dist/camera/permission.d.ts +86 -0
  38. package/dist/camera/useCameraPermission.d.ts +35 -0
  39. package/dist/canonicalFace-BHwyCx1c.js +9 -0
  40. package/dist/canonicalFace-C83I225R.cjs +1 -0
  41. package/dist/capabilities/detect.d.ts +45 -0
  42. package/dist/capabilities/index.d.ts +5 -0
  43. package/dist/capabilities/types.d.ts +120 -0
  44. package/dist/capabilities/useXRCapabilities.d.ts +18 -0
  45. package/dist/compat/environment.d.ts +5 -0
  46. package/dist/compat/index.d.ts +4 -0
  47. package/dist/compat/run.d.ts +18 -0
  48. package/dist/compat/scenarios.d.ts +10 -0
  49. package/dist/compat/types.d.ts +101 -0
  50. package/dist/components/BodyInstruction/BodyPoseHint.d.ts +63 -0
  51. package/dist/components/BodyInstruction/index.d.ts +69 -0
  52. package/dist/components/BodyInstruction/useBodyPose.d.ts +23 -0
  53. package/dist/components/BodyTracker/index.d.ts +17 -0
  54. package/dist/components/BodyTrigger/index.d.ts +49 -0
  55. package/dist/components/Debugger/DebuggerProvider.d.ts +14 -1
  56. package/dist/components/Debugger/DebuggerUI.d.ts +3 -1
  57. package/dist/components/FaceAtlas/FaceAtlasLayer.d.ts +114 -0
  58. package/dist/components/FaceAtlas/MadeUpCamera.d.ts +80 -0
  59. package/dist/components/FaceAtlas/constants.d.ts +8 -0
  60. package/dist/components/FaceAtlas/index.d.ts +7 -0
  61. package/dist/components/FaceAtlas/useFaceAtlasSurface.d.ts +84 -0
  62. package/dist/components/FaceAtlas/useFaceSkin.d.ts +84 -0
  63. package/dist/components/FaceCharacter/ExternalFaceMesh.d.ts +109 -0
  64. package/dist/components/FaceCharacter/FaceExpressionController.d.ts +53 -0
  65. package/dist/components/FaceCharacter/FaceMorph.d.ts +71 -0
  66. package/dist/components/FaceCharacter/FacePiercing.d.ts +65 -0
  67. package/dist/components/FaceCharacter/FaceReprojection.d.ts +85 -0
  68. package/dist/components/FaceCharacter/FaceRig.d.ts +38 -0
  69. package/dist/components/FaceCharacter/FaceSurface.d.ts +49 -0
  70. package/dist/components/FaceCharacter/FaceSurfaceOccluder.d.ts +39 -0
  71. package/dist/components/FaceCharacter/PinToFaceMesh.d.ts +68 -0
  72. package/dist/components/FaceCharacter/index.d.ts +18 -0
  73. package/dist/components/FaceCharacter/useFaceReprojector.d.ts +10 -0
  74. package/dist/components/FaceInset/FaceInset.d.ts +68 -0
  75. package/dist/components/FaceInset/frame.d.ts +94 -0
  76. package/dist/components/FaceInset/index.d.ts +6 -0
  77. package/dist/components/FaceInset/material.d.ts +40 -0
  78. package/dist/components/FaceInset/useFaceInsetTexture.d.ts +37 -0
  79. package/dist/components/FaceInstruction/FaceExpressionHint.d.ts +43 -0
  80. package/dist/components/FaceInstruction/index.d.ts +56 -0
  81. package/dist/components/FaceInstruction/useFaceExpression.d.ts +20 -0
  82. package/dist/components/FaceLiquify/FaceLiquify.d.ts +49 -0
  83. package/dist/components/FaceLiquify/debug.d.ts +37 -0
  84. package/dist/components/FaceLiquify/frame.d.ts +55 -0
  85. package/dist/components/FaceLiquify/index.d.ts +10 -0
  86. package/dist/components/FaceLiquify/material.d.ts +39 -0
  87. package/dist/components/FaceLiquify/pass.d.ts +49 -0
  88. package/dist/components/FaceLiquify/presence.d.ts +25 -0
  89. package/dist/components/FaceLiquify/presets.d.ts +82 -0
  90. package/dist/components/FaceLiquify/selfTest.d.ts +66 -0
  91. package/dist/components/FaceLiquify/target.d.ts +85 -0
  92. package/dist/components/FaceLiquify/warp.d.ts +72 -0
  93. package/dist/components/FaceMesh/canonical/CanonicalFaceMeshRenderer.d.ts +37 -5
  94. package/dist/components/FaceMesh/canonical/geometryGroups.d.ts +21 -0
  95. package/dist/components/FaceMesh/canonical/parseCanonicalFaceModel.d.ts +21 -0
  96. package/dist/components/FaceMesh/canonical/shaders.d.ts +1 -1
  97. package/dist/components/FaceMesh/index.d.ts +2 -2
  98. package/dist/components/FaceRetouch/Background.d.ts +3 -1
  99. package/dist/components/FaceRetouch/FaceRetouch.d.ts +5 -0
  100. package/dist/components/FaceRetouch/renderState.d.ts +19 -0
  101. package/dist/components/FaceSwap/FaceMirror.d.ts +46 -0
  102. package/dist/components/FaceSwap/FaceSwap.d.ts +58 -0
  103. package/dist/components/FaceSwap/FaceTextureLayer.d.ts +72 -0
  104. package/dist/components/FaceSwap/faceSwapPlan.d.ts +91 -0
  105. package/dist/components/FaceSwap/index.d.ts +13 -0
  106. package/dist/components/FaceSwap/settings.d.ts +300 -0
  107. package/dist/components/FaceSwap/useFaceTexture.d.ts +35 -0
  108. package/dist/components/FaceSwap/useLiveFace.d.ts +38 -0
  109. package/dist/components/FaceSwap/useLiveFaceTexture.d.ts +31 -0
  110. package/dist/components/FaceWarp3D/FaceWarp3D.d.ts +50 -0
  111. package/dist/components/FaceWarp3D/index.d.ts +2 -3
  112. package/dist/components/Faceless/Faceless.d.ts +51 -0
  113. package/dist/components/Faceless/index.d.ts +2 -0
  114. package/dist/components/GestureListener/index.d.ts +11 -0
  115. package/dist/components/HairLock/HairLock.d.ts +39 -0
  116. package/dist/components/HairLock/index.d.ts +2 -0
  117. package/dist/components/HairLock/lockGeometry.d.ts +15 -0
  118. package/dist/components/HandCutout/index.d.ts +35 -0
  119. package/dist/components/HandInstruction/HandGestureHint.d.ts +70 -0
  120. package/dist/components/HandInstruction/index.d.ts +74 -0
  121. package/dist/components/HandInstruction/useHandGesture.d.ts +22 -0
  122. package/dist/components/HandRig/ForearmOccluder.d.ts +29 -0
  123. package/dist/components/HandRig/HandAttachment.d.ts +34 -0
  124. package/dist/components/HandRig/HandOccluder.d.ts +55 -0
  125. package/dist/components/HandRig/HandTattoo.d.ts +61 -0
  126. package/dist/components/HandRig/WristAttachment.d.ts +34 -0
  127. package/dist/components/HandRig/index.d.ts +101 -0
  128. package/dist/components/HandRig/useArmMask.d.ts +29 -0
  129. package/dist/components/HandRig/wristSolve.d.ts +69 -0
  130. package/dist/components/HandTouch/HandTouch.d.ts +62 -0
  131. package/dist/components/HandTouch/Touchable.d.ts +36 -0
  132. package/dist/components/HandTouch/index.d.ts +2 -0
  133. package/dist/components/HandTracker/index.d.ts +10 -0
  134. package/dist/components/HeadBinding/index.d.ts +14 -0
  135. package/dist/components/HeadOccluder/CanonicalHeadFrame.d.ts +22 -0
  136. package/dist/components/HeadOccluder/Earrings.d.ts +55 -0
  137. package/dist/components/HeadOccluder/HeadAttachment.d.ts +38 -0
  138. package/dist/components/HeadOccluder/NeckOccluder.d.ts +64 -0
  139. package/dist/components/HeadOccluder/earringPlacement.d.ts +31 -0
  140. package/dist/components/HeadOccluder/headAttachmentPoints.d.ts +69 -0
  141. package/dist/components/HeadOccluder/index.d.ts +57 -3
  142. package/dist/components/HeadOccluder/useCanonicalHeadFit.d.ts +36 -0
  143. package/dist/components/HeadOccluder/useLandmarkPoseFit.d.ts +80 -0
  144. package/dist/components/HolisticTracker/index.d.ts +69 -0
  145. package/dist/components/HolisticTracker/settings.d.ts +58 -0
  146. package/dist/components/HolisticTracker/signals.d.ts +49 -0
  147. package/dist/components/Instruction/HintStage.d.ts +29 -0
  148. package/dist/components/Instruction/InstructionCue.d.ts +126 -0
  149. package/dist/components/Instruction/gestureHold.d.ts +20 -0
  150. package/dist/components/Instruction/ghost.d.ts +129 -0
  151. package/dist/components/Instruction/hintBlend.d.ts +19 -0
  152. package/dist/components/Instruction/hintLook.d.ts +81 -0
  153. package/dist/components/Instruction/hintLoop.d.ts +36 -0
  154. package/dist/components/Instruction/index.d.ts +41 -0
  155. package/dist/components/Instruction/useGhostModel.d.ts +33 -0
  156. package/dist/components/Instruction/useInstructionHold.d.ts +72 -0
  157. package/dist/components/IrisEffect/IrisMaterial.d.ts +73 -0
  158. package/dist/components/IrisEffect/index.d.ts +51 -0
  159. package/dist/components/IrisEffect/settings.d.ts +117 -0
  160. package/dist/components/LipEffect/LipEffect.d.ts +27 -1
  161. package/dist/components/LipEffect/LipEffectMaterial.d.ts +95 -7
  162. package/dist/components/LipEffect/LipEffects.d.ts +12 -0
  163. package/dist/components/LipEffect/defaults.d.ts +46 -4
  164. package/dist/components/LipEffect/index.d.ts +11 -3
  165. package/dist/components/LipEffect/lipShading.d.ts +73 -0
  166. package/dist/components/LipEffect/settings.d.ts +375 -0
  167. package/dist/components/LipEffect/shader.d.ts +39 -0
  168. package/dist/components/LipEffect/types.d.ts +128 -9
  169. package/dist/components/LipEffect/useLipDesignTextures.d.ts +17 -0
  170. package/dist/components/LipEffect/uvGuide.d.ts +74 -0
  171. package/dist/components/Makeup/Blush.d.ts +18 -0
  172. package/dist/components/Makeup/Brows.d.ts +20 -0
  173. package/dist/components/Makeup/Contour.d.ts +17 -0
  174. package/dist/components/Makeup/Eyeliner.d.ts +20 -0
  175. package/dist/components/Makeup/Eyeshadow.d.ts +20 -0
  176. package/dist/components/Makeup/Highlighter.d.ts +18 -0
  177. package/dist/components/Makeup/MakeupDesign.d.ts +37 -0
  178. package/dist/components/Makeup/MakeupRegion.d.ts +132 -0
  179. package/dist/components/Makeup/constants.d.ts +44 -0
  180. package/dist/components/Makeup/design.d.ts +106 -0
  181. package/dist/components/Makeup/designSamples.d.ts +42 -0
  182. package/dist/components/Makeup/eyes.d.ts +114 -0
  183. package/dist/components/Makeup/fields.d.ts +10 -0
  184. package/dist/components/Makeup/geometry.d.ts +106 -0
  185. package/dist/components/Makeup/index.d.ts +26 -0
  186. package/dist/components/Makeup/looks.d.ts +28 -0
  187. package/dist/components/Makeup/material.d.ts +239 -0
  188. package/dist/components/Makeup/settings.d.ts +54 -0
  189. package/dist/components/Makeup/shades.d.ts +143 -0
  190. package/dist/components/Makeup/shapes.d.ts +27 -0
  191. package/dist/components/Makeup/skinTone.d.ts +135 -0
  192. package/dist/components/Makeup/types.d.ts +110 -0
  193. package/dist/components/Makeup/useMakeupSkinTone.d.ts +40 -0
  194. package/dist/components/Necklace/Necklace.d.ts +44 -0
  195. package/dist/components/Necklace/index.d.ts +1 -0
  196. package/dist/components/ParticleEmitter/ParticleEmitter.d.ts +69 -0
  197. package/dist/components/ParticleEmitter/index.d.ts +1 -0
  198. package/dist/components/PersonCutout/index.d.ts +50 -0
  199. package/dist/components/PersonCutout/personCutout.d.ts +16 -0
  200. package/dist/components/ScreenImage/components/ScreenImageBody.d.ts +1 -1
  201. package/dist/components/ScreenImage/index.d.ts +3 -1
  202. package/dist/components/ScreenImage/materials/ScreenImageBlendMaterial.d.ts +1 -1
  203. package/dist/components/ScreenImage/materials/ScreenImageMaskMaterial.d.ts +11 -0
  204. package/dist/components/ScreenImage/source.d.ts +6 -0
  205. package/dist/components/ScreenImage/types.d.ts +18 -0
  206. package/dist/components/SegmentationOverlay/SegmentationOverlay.d.ts +37 -0
  207. package/dist/components/SegmentationOverlay/SegmentationOverlayMaterial.d.ts +31 -0
  208. package/dist/components/SegmentationOverlay/index.d.ts +9 -0
  209. package/dist/components/SegmentationOverlay/maskTexture.d.ts +23 -0
  210. package/dist/components/SegmentationOverlay/providers.d.ts +72 -0
  211. package/dist/components/SegmentationOverlay/settings.d.ts +65 -0
  212. package/dist/components/ShoulderOccluder/index.d.ts +43 -0
  213. package/dist/components/ShoulderOccluder/useCanonicalTorsoFit.d.ts +24 -0
  214. package/dist/components/SpringSwing/SpringSwing.d.ts +22 -0
  215. package/dist/components/SpringSwing/index.d.ts +1 -0
  216. package/dist/components/XRProvider/index.d.ts +16 -2
  217. package/dist/components/XRScene/renderOutputTarget.d.ts +12 -0
  218. package/dist/components/XRViewport/hooks/useViewportExternalFaces.d.ts +1 -1
  219. package/dist/components/XRViewport/hooks/useViewportMediaSource.d.ts +1 -1
  220. package/dist/components/XRViewport/hooks/useViewportPipeline.d.ts +1 -1
  221. package/dist/components/index.d.ts +11 -0
  222. package/dist/config/index.d.ts +0 -1
  223. package/dist/constants/index.d.ts +4 -1
  224. package/dist/context-DTxSQvp4.js +13 -0
  225. package/dist/context-hA0Rb2Xa.cjs +1 -0
  226. package/dist/contexts-BH7PdKFS.cjs +1 -0
  227. package/dist/contexts-jak8-tND.js +667 -0
  228. package/dist/coordinates/feed.d.ts +52 -0
  229. package/dist/coordinates/index.d.ts +7 -0
  230. package/dist/coordinates/side.d.ts +40 -0
  231. package/dist/coordinates/spaces.d.ts +49 -0
  232. package/dist/coordinates/viewport.d.ts +22 -0
  233. package/dist/coordinates/world.d.ts +15 -0
  234. package/dist/debug-ui/default-setting.cjs +2 -2
  235. package/dist/debug-ui/face-swap-settings/index.d.ts +22 -0
  236. package/dist/debug-ui/gesture-settings/index.d.ts +14 -0
  237. package/dist/debug-ui/hierarchy-panel/index.d.ts +3 -2
  238. package/dist/debug-ui/holistic-tracker-settings/index.d.ts +16 -0
  239. package/dist/debug-ui/index.d.ts +18 -3
  240. package/dist/debug-ui/iris-effect-settings/index.d.ts +12 -0
  241. package/dist/debug-ui/lip-effect-settings/index.d.ts +15 -0
  242. package/dist/debug-ui/media-source/index.d.ts +1 -1
  243. package/dist/debug-ui/media-source/session.d.ts +30 -2
  244. package/dist/debug-ui/media-source.cjs +1 -1
  245. package/dist/debug-ui/media-source.js +1 -1
  246. package/dist/debug-ui/object-inspector-panel/index.d.ts +3 -2
  247. package/dist/debug-ui/product-hotspots/index.d.ts +25 -0
  248. package/dist/debug-ui/scene-editor/hierarchy-panel.d.ts +3 -1
  249. package/dist/debug-ui/scene-editor/inspector-panel.d.ts +3 -1
  250. package/dist/debug-ui/screen-image-settings/index.d.ts +3 -1
  251. package/dist/debug-ui/screen-text-settings/ScreenTextSettingsPanel.d.ts +1 -1
  252. package/dist/debug-ui/screen-text-settings/types.d.ts +2 -0
  253. package/dist/debug-ui/segmentation-overlay-settings/index.d.ts +12 -0
  254. package/dist/debug-ui/settings-panel/index.d.ts +6 -1
  255. package/dist/debug-ui/shared/debugWindow.d.ts +51 -0
  256. package/dist/debug-ui/xr-diagnostics/index.d.ts +26 -0
  257. package/dist/debug-ui.cjs +3 -3
  258. package/dist/debug-ui.js +2695 -2547
  259. package/dist/detector-K8aej4MB.js +59 -0
  260. package/dist/detector-ijypGtse.cjs +1 -0
  261. package/dist/entries/all.d.ts +3 -1
  262. package/dist/entries/core.d.ts +20 -2
  263. package/dist/entries/face-effects.d.ts +123 -9
  264. package/dist/entries/instructions.d.ts +48 -0
  265. package/dist/entries/internal.d.ts +2 -1
  266. package/dist/entries/low-level.d.ts +49 -3
  267. package/dist/entries/particles.d.ts +11 -0
  268. package/dist/entries/product.d.ts +11 -0
  269. package/dist/entries/tracking.d.ts +60 -2
  270. package/dist/face-atlas/attributes.d.ts +30 -0
  271. package/dist/face-atlas/eyes.d.ts +272 -0
  272. package/dist/face-atlas/faceAtlas.generated.d.ts +46 -0
  273. package/dist/face-atlas/glsl/atlasVertex.d.ts +46 -0
  274. package/dist/face-atlas/glsl/common.d.ts +55 -0
  275. package/dist/face-atlas/glsl/design.d.ts +49 -0
  276. package/dist/face-atlas/glsl/eyes.d.ts +73 -0
  277. package/dist/face-atlas/glsl/finish.d.ts +24 -0
  278. package/dist/face-atlas/glsl/format.d.ts +4 -0
  279. package/dist/face-atlas/glsl/index.d.ts +59 -0
  280. package/dist/face-atlas/glsl/shading.d.ts +15 -0
  281. package/dist/face-atlas/glsl/shapes.d.ts +66 -0
  282. package/dist/face-atlas/glsl/sparkle.d.ts +19 -0
  283. package/dist/face-atlas/glsl/uniforms.d.ts +106 -0
  284. package/dist/face-atlas/guide.d.ts +51 -0
  285. package/dist/face-atlas/index.d.ts +25 -0
  286. package/dist/face-atlas/lead.d.ts +117 -0
  287. package/dist/face-atlas/madeUpCamera.d.ts +125 -0
  288. package/dist/face-atlas/masks.d.ts +53 -0
  289. package/dist/face-atlas/obj.d.ts +69 -0
  290. package/dist/face-atlas/polylines.d.ts +63 -0
  291. package/dist/face-atlas/probe/FaceSkinProbe.d.ts +208 -0
  292. package/dist/face-atlas/probe/__fixtures__/emulate.d.ts +9 -0
  293. package/dist/face-atlas/probe/__fixtures__/face.d.ts +24 -0
  294. package/dist/face-atlas/probe/constants.d.ts +137 -0
  295. package/dist/face-atlas/probe/glsl.d.ts +43 -0
  296. package/dist/face-atlas/probe/lightFit.d.ts +108 -0
  297. package/dist/face-atlas/probe/schedule.d.ts +44 -0
  298. package/dist/face-atlas/probe/selfTest.d.ts +87 -0
  299. package/dist/face-atlas/probe/stats.d.ts +143 -0
  300. package/dist/face-atlas/probe/targets.d.ts +70 -0
  301. package/dist/face-atlas/probe/unwrap.d.ts +76 -0
  302. package/dist/face-atlas/quality.d.ts +28 -0
  303. package/dist/face-atlas/regions.d.ts +31 -0
  304. package/dist/face-atlas/registry.d.ts +252 -0
  305. package/dist/face-atlas/renderState.d.ts +86 -0
  306. package/dist/face-atlas/selfOcclusion.d.ts +62 -0
  307. package/dist/face-atlas/shading.d.ts +406 -0
  308. package/dist/face-atlas/shapes.d.ts +86 -0
  309. package/dist/face-atlas/sides.d.ts +41 -0
  310. package/dist/face-atlas/skinMask.d.ts +35 -0
  311. package/dist/face-atlas/surface.d.ts +155 -0
  312. package/dist/face-atlas/topology.d.ts +44 -0
  313. package/dist/face-character/__fixtures__/faceImageDetections.d.ts +25 -0
  314. package/dist/face-character/__fixtures__/faceNode.d.ts +22 -0
  315. package/dist/face-character/bindFaceModel.d.ts +106 -0
  316. package/dist/face-character/canonicalFace.d.ts +17 -0
  317. package/dist/face-character/canonicalFaceGeometry.d.ts +11 -0
  318. package/dist/face-character/canonicalFacePositions.d.ts +7 -0
  319. package/dist/face-character/driveFaceModel.d.ts +57 -0
  320. package/dist/face-character/expressionOutputs.d.ts +45 -0
  321. package/dist/face-character/faceExpressions.d.ts +104 -0
  322. package/dist/face-character/faceImageLandmarker.d.ts +93 -0
  323. package/dist/face-character/faceMeshBinding.d.ts +62 -0
  324. package/dist/face-character/faceMorph.d.ts +77 -0
  325. package/dist/face-character/faceMorphs.d.ts +46 -0
  326. package/dist/face-character/facePhoto.d.ts +138 -0
  327. package/dist/face-character/facePiercings.d.ts +116 -0
  328. package/dist/face-character/facePin.d.ts +131 -0
  329. package/dist/face-character/faceReprojection.d.ts +273 -0
  330. package/dist/face-character/faceReprojector.d.ts +171 -0
  331. package/dist/face-character/faceRig.d.ts +176 -0
  332. package/dist/face-character/faceSwapPresence.d.ts +85 -0
  333. package/dist/face-character/faceTexture.d.ts +169 -0
  334. package/dist/face-character/faceTextureBaker.d.ts +86 -0
  335. package/dist/face-character/faceTextureGuide.d.ts +106 -0
  336. package/dist/face-character/faceTextureStats.d.ts +298 -0
  337. package/dist/face-character/faceTransfer.d.ts +396 -0
  338. package/dist/face-character/faceTransferGeometry.d.ts +109 -0
  339. package/dist/face-character/faceTransferSelfTest.d.ts +94 -0
  340. package/dist/face-character/faceWarp3D.d.ts +101 -0
  341. package/dist/face-character/faceless.d.ts +79 -0
  342. package/dist/face-character/featureWarp.d.ts +28 -0
  343. package/dist/face-character/liveFaceRegistry.d.ts +370 -0
  344. package/dist/face-character/liveValue.d.ts +12 -0
  345. package/dist/face-character/memo.d.ts +15 -0
  346. package/dist/face-effects.cjs +2324 -1
  347. package/dist/face-effects.js +14208 -2268
  348. package/dist/face-expression/index.d.ts +182 -0
  349. package/dist/face-info/landmarks.d.ts +17 -3
  350. package/dist/face-info/types.d.ts +20 -3
  351. package/dist/gestures/definitions.d.ts +98 -0
  352. package/dist/gestures/detector.d.ts +87 -0
  353. package/dist/gestures/index.d.ts +8 -0
  354. package/dist/gestures/measures.d.ts +114 -0
  355. package/dist/gestures/settings.d.ts +49 -0
  356. package/dist/getFaceInfo-B1otSDMX.cjs +1 -0
  357. package/dist/getFaceInfo-Cu4xDWiL.js +62 -0
  358. package/dist/hand/armFit.d.ts +46 -0
  359. package/dist/hand/armMask.d.ts +178 -0
  360. package/dist/hand/handCutout.d.ts +23 -0
  361. package/dist/hand/handCutoutRegistry.d.ts +7 -0
  362. package/dist/hand/handGestures.d.ts +524 -0
  363. package/dist/hand/handPose.d.ts +98 -0
  364. package/dist/hand/handRigSolver.d.ts +159 -0
  365. package/dist/hand/handTattoo.d.ts +81 -0
  366. package/dist/hand/handTouch.d.ts +240 -0
  367. package/dist/hand/wrist.d.ts +44 -0
  368. package/dist/hand/wristFilter.d.ts +44 -0
  369. package/dist/hooks/selectors.d.ts +76 -1
  370. package/dist/hooks/useCalibrationFaceTracker.d.ts +1 -1
  371. package/dist/hooks/useFaceInfo.d.ts +13 -1
  372. package/dist/hooks/useFaceInfos.d.ts +1 -1
  373. package/dist/hooks/useFaceModelAcquisition.d.ts +38 -0
  374. package/dist/hooks/useGesture.d.ts +32 -0
  375. package/dist/hooks/useIrisTracking.d.ts +45 -0
  376. package/dist/hooks/useTrackerContext.d.ts +6 -0
  377. package/dist/hooks/useXRDiagnostics.d.ts +81 -0
  378. package/dist/hooks/useXRModel.d.ts +7 -0
  379. package/dist/hooks/useXRSession/facade.d.ts +42 -2
  380. package/dist/hooks/useXRSession/index.d.ts +2 -2
  381. package/dist/hooks/useXRSession/reason.d.ts +3 -1
  382. package/dist/hooks/useXRSession/registry.d.ts +14 -0
  383. package/dist/hooks/useXRSession/store.d.ts +52 -3
  384. package/dist/index-B1_TzJaI.js +1104 -0
  385. package/dist/index-BavF06C6.js +190 -0
  386. package/dist/index-BfFmpddl.cjs +21 -0
  387. package/dist/index-BuBzneeW.cjs +46 -0
  388. package/dist/index-CGsQWodV.cjs +1 -0
  389. package/dist/index-CIe7eCMH.js +3200 -0
  390. package/dist/index-CfSF8LXa.cjs +1 -0
  391. package/dist/index-D5GTzOzD.cjs +1 -0
  392. package/dist/index-DBhQzvVa.js +314 -0
  393. package/dist/index-DE17y0ZI.cjs +1 -0
  394. package/dist/index-JII7huPk.js +442 -0
  395. package/dist/index-tpCr9CLj.cjs +1 -0
  396. package/dist/index-w1S7fI2B.js +1432 -0
  397. package/dist/index-zGaqrz_K.js +188 -0
  398. package/dist/instructions.cjs +30 -0
  399. package/dist/instructions.js +1507 -0
  400. package/dist/{internal-Dmk1cTXq.js → internal-B90P-clC.js} +138 -119
  401. package/dist/internal-Cjinca64.cjs +1 -0
  402. package/dist/internal.cjs +1 -1
  403. package/dist/internal.js +15 -10
  404. package/dist/iris/compute.d.ts +27 -0
  405. package/dist/iris/index.d.ts +4 -0
  406. package/dist/iris/lead.d.ts +19 -0
  407. package/dist/iris/types.d.ts +89 -0
  408. package/dist/landmarkMask-BFDyBnKM.js +224 -0
  409. package/dist/landmarkMask-u7es2k4X.cjs +1 -0
  410. package/dist/landmarks-BlUqf5MZ.cjs +1 -0
  411. package/dist/landmarks-bftdwq6Z.js +76 -0
  412. package/dist/loaders-BGAUACsd.js +363 -0
  413. package/dist/loaders-BJ1_QCHt.cjs +1 -0
  414. package/dist/low-level.cjs +1 -1
  415. package/dist/low-level.js +1190 -675
  416. package/dist/main.cjs +1 -1
  417. package/dist/main.js +1190 -452
  418. package/dist/models/Base/index.d.ts +49 -0
  419. package/dist/models/Body/index.d.ts +3 -1
  420. package/dist/models/Face/constants.d.ts +8 -0
  421. package/dist/models/Face/index.d.ts +4 -12
  422. package/dist/models/Face/rotation.d.ts +18 -3
  423. package/dist/models/Hand/GestureTracking.d.ts +1 -1
  424. package/dist/models/Hand/HandTracking.d.ts +17 -1
  425. package/dist/models/Holistic/index.d.ts +49 -0
  426. package/dist/models/Holistic/result.d.ts +68 -0
  427. package/dist/models/Segmentation/index.d.ts +2 -0
  428. package/dist/models/SemanticSegmentation/index.d.ts +31 -0
  429. package/dist/models/SemanticSegmentation/presets.d.ts +28 -0
  430. package/dist/models/index.d.ts +2 -0
  431. package/dist/models/nodeSource.d.ts +9 -0
  432. package/dist/particles/emission.d.ts +24 -0
  433. package/dist/particles/eyes.d.ts +24 -0
  434. package/dist/particles/glsl.d.ts +14 -0
  435. package/dist/particles/index.d.ts +10 -0
  436. package/dist/particles/motion.d.ts +42 -0
  437. package/dist/particles/presets.d.ts +12 -0
  438. package/dist/particles/ring.d.ts +58 -0
  439. package/dist/particles/selfTest.d.ts +53 -0
  440. package/dist/particles/settings.d.ts +127 -0
  441. package/dist/particles/shapes.d.ts +29 -0
  442. package/dist/particles/spawner.d.ts +60 -0
  443. package/dist/particles/system.d.ts +64 -0
  444. package/dist/particles.cjs +122 -0
  445. package/dist/particles.js +774 -0
  446. package/dist/product/ProductDimensions.d.ts +16 -0
  447. package/dist/product/ProductHotspot.d.ts +16 -0
  448. package/dist/product/ProductViewer.d.ts +9 -0
  449. package/dist/product/details.d.ts +53 -0
  450. package/dist/product/index.d.ts +14 -0
  451. package/dist/product/loadModelViewer.d.ts +4 -0
  452. package/dist/product/types.d.ts +71 -0
  453. package/dist/product/useProductAr.d.ts +37 -0
  454. package/dist/product/useProductDetails.d.ts +60 -0
  455. package/dist/product.cjs +1 -0
  456. package/dist/product.js +414 -0
  457. package/dist/providers-C8rE26Uf.js +366 -0
  458. package/dist/providers-DHsrhDI2.cjs +62 -0
  459. package/dist/quality/XRQualityController.d.ts +25 -0
  460. package/dist/quality/controller.d.ts +33 -0
  461. package/dist/quality/index.d.ts +6 -0
  462. package/dist/quality/types.d.ts +100 -0
  463. package/dist/quality/useXRQuality.d.ts +28 -0
  464. package/dist/render/renderPasses.d.ts +8 -0
  465. package/dist/render/sceneBeforeRender.d.ts +12 -0
  466. package/dist/{renderGroups-KZk6eRiY.js → renderGroups-B38pUaX2.js} +1 -1
  467. package/dist/{renderGroups-80H3DpTl.cjs → renderGroups-Cb_4Ar1Q.cjs} +1 -1
  468. package/dist/renderPasses-B6l8IpJv.js +1290 -0
  469. package/dist/renderPasses-dqmkft4P.cjs +158 -0
  470. package/dist/renderState-CJNmj5jz.js +39 -0
  471. package/dist/renderState-apSfg4eR.cjs +1 -0
  472. package/dist/scene-object.cjs +1 -1
  473. package/dist/scene-object.js +2 -2
  474. package/dist/segmentation-Cb3ouK6Z.js +1758 -0
  475. package/dist/segmentation-D9pYO6aR.cjs +1 -0
  476. package/dist/segmentation2d/faceMemory.d.ts +28 -0
  477. package/dist/segmentation2d/faceRegions.d.ts +24 -0
  478. package/dist/segmentation2d/index.d.ts +9 -0
  479. package/dist/segmentation2d/maskUv.d.ts +23 -0
  480. package/dist/segmentation2d/rasterize.d.ts +14 -0
  481. package/dist/segmentation2d/types.d.ts +52 -0
  482. package/dist/select-Ck5LGz-J.cjs +1 -0
  483. package/dist/select-pYRo_win.js +233 -0
  484. package/dist/selectors-C4X71aoD.cjs +1 -0
  485. package/dist/selectors-DmNaKIwE.js +196 -0
  486. package/dist/session-BrH8G7iJ.cjs +31 -0
  487. package/dist/session-DgA_z6O1.js +418 -0
  488. package/dist/settings-BJ7FMBsO.js +111 -0
  489. package/dist/settings-C63FMBlF.cjs +1 -0
  490. package/dist/similarityFit-BFqHND2e.cjs +1 -0
  491. package/dist/similarityFit-Bbz-R8AY.js +91 -0
  492. package/dist/spring/index.d.ts +2 -0
  493. package/dist/spring/spring.d.ts +69 -0
  494. package/dist/spring/swing.d.ts +54 -0
  495. package/dist/subjects/index.d.ts +2 -0
  496. package/dist/subjects/select.d.ts +62 -0
  497. package/dist/subjects/types.d.ts +55 -0
  498. package/dist/tracking-config/apply.d.ts +57 -0
  499. package/dist/tracking-config/index.d.ts +7 -0
  500. package/dist/tracking-config/resolve.d.ts +25 -0
  501. package/dist/tracking-config/storage.d.ts +8 -0
  502. package/dist/tracking-config/types.d.ts +106 -0
  503. package/dist/tracking-config/useXRTrackingConfig.d.ts +38 -0
  504. package/dist/tracking.cjs +10 -1
  505. package/dist/tracking.js +1326 -506
  506. package/dist/trigger-D0Pm9noT.cjs +49 -0
  507. package/dist/trigger-IQeys0oS.js +2128 -0
  508. package/dist/types/compositor.d.ts +21 -0
  509. package/dist/types/face.d.ts +20 -1
  510. package/dist/types/hand-tracking.d.ts +9 -0
  511. package/dist/types/holistic.d.ts +121 -0
  512. package/dist/types/index.d.ts +1 -0
  513. package/dist/types/model.d.ts +22 -2
  514. package/dist/types/nodes.d.ts +47 -3
  515. package/dist/types/segmentation.d.ts +24 -0
  516. package/dist/types/session.d.ts +41 -3
  517. package/dist/updateThrottle-BseecYag.js +4 -0
  518. package/dist/updateThrottle-Of5Y4SVa.cjs +1 -0
  519. package/dist/useFaceInfo-BHDNCvsJ.cjs +1 -0
  520. package/dist/useFaceInfo-J4x7LsqL.js +76 -0
  521. package/dist/useFaceResultReader-BvEo5REG.js +61 -0
  522. package/dist/useFaceResultReader-DuaL1KJG.cjs +1 -0
  523. package/dist/useInstructionHold-DOu-RpCM.js +53 -0
  524. package/dist/useInstructionHold-DwJY1Alr.cjs +1 -0
  525. package/dist/useLandmarkPoseFit-Bg-h9BPb.cjs +1 -0
  526. package/dist/useLandmarkPoseFit-Bmb3h6Mw.js +87 -0
  527. package/dist/useXRCapabilities-Cr3RzuAW.cjs +1 -0
  528. package/dist/useXRCapabilities-Cxmlmpbd.js +30 -0
  529. package/dist/utils/canonicalRigidLandmarks.d.ts +8 -0
  530. package/dist/utils/fns.d.ts +6 -3
  531. package/dist/utils/headOccluderFit.d.ts +42 -0
  532. package/dist/utils/integrity.d.ts +21 -1
  533. package/dist/utils/resolveNumFaces.d.ts +13 -0
  534. package/dist/utils/shoulderOccluderFit.d.ts +38 -0
  535. package/dist/utils/similarityFit.d.ts +23 -0
  536. package/dist/utils/updateThrottle.d.ts +2 -0
  537. package/dist/utils/useStableUniforms.d.ts +18 -0
  538. package/dist/uv-BMFt19bg.cjs +1 -0
  539. package/dist/{index-ByoNj0QP.js → uv-DJU_XfmN.js} +15 -247
  540. package/docs/SDK_DOCUMENTATION.md +1 -2
  541. package/docs/api/adaptive-quality.mdx +104 -0
  542. package/docs/api/asset-lifecycle.mdx +78 -0
  543. package/docs/api/body-instructions.mdx +285 -0
  544. package/docs/api/body-triggers.mdx +234 -0
  545. package/docs/api/camera-permission.mdx +142 -0
  546. package/docs/api/coordinate-spaces.mdx +168 -0
  547. package/docs/api/cross-camera.mdx +89 -0
  548. package/docs/api/debug-ui-scene-editor.mdx +23 -2
  549. package/docs/api/diagnostics-calibration.mdx +97 -0
  550. package/docs/api/external-face-mesh.mdx +231 -0
  551. package/docs/api/face-actions.mdx +20 -16
  552. package/docs/api/face-attribute-expression.mdx +1 -1
  553. package/docs/api/face-binding-anchors.mdx +4 -2
  554. package/docs/api/face-character.mdx +157 -0
  555. package/docs/api/face-effects.mdx +9 -0
  556. package/docs/api/face-expression-controller.mdx +153 -0
  557. package/docs/api/face-info.mdx +17 -11
  558. package/docs/api/face-inset.mdx +204 -0
  559. package/docs/api/face-instructions.mdx +183 -0
  560. package/docs/api/face-liquify.mdx +196 -0
  561. package/docs/api/face-mesh.mdx +8 -9
  562. package/docs/api/face-morph.mdx +117 -0
  563. package/docs/api/face-painting.mdx +7 -0
  564. package/docs/api/face-reprojection.mdx +154 -0
  565. package/docs/api/face-retouching.mdx +18 -10
  566. package/docs/api/face-swap.mdx +350 -0
  567. package/docs/api/face-warp-3d.mdx +166 -0
  568. package/docs/api/faceless.mdx +143 -0
  569. package/docs/api/gestures.mdx +209 -0
  570. package/docs/api/hair.mdx +97 -0
  571. package/docs/api/hand-instructions.mdx +222 -0
  572. package/docs/api/hand-rig.mdx +535 -0
  573. package/docs/api/hand-touch.mdx +162 -0
  574. package/docs/api/head-occluder.mdx +563 -0
  575. package/docs/api/holistic-tracker.mdx +164 -0
  576. package/docs/api/instructions.mdx +323 -0
  577. package/docs/api/iris-tracking.mdx +247 -0
  578. package/docs/api/made-up-camera.mdx +131 -0
  579. package/docs/api/makeup-skin-tone.mdx +135 -0
  580. package/docs/api/makeup.mdx +353 -0
  581. package/docs/api/multi-subject.mdx +98 -0
  582. package/docs/api/particles.mdx +155 -0
  583. package/docs/api/person-cutout.mdx +136 -0
  584. package/docs/api/pin-to-face-mesh.mdx +274 -0
  585. package/docs/api/product-ar.mdx +114 -0
  586. package/docs/api/product-details.mdx +78 -0
  587. package/docs/api/screen-space-coordinates.mdx +4 -1
  588. package/docs/api/segmentation-overlay.mdx +301 -0
  589. package/docs/api/session-lifecycle.mdx +136 -0
  590. package/docs/api/trackers.mdx +5 -0
  591. package/docs/api/tracking-config.mdx +108 -0
  592. package/docs/docs.json +51 -1
  593. package/docs/examples/lip-shaders.mdx +273 -0
  594. package/docs/guides/face-atlas-template.svg +1 -0
  595. package/docs/guides/face-atlas-textures.mdx +186 -0
  596. package/docs/guides/face-texture-template.svg +1 -0
  597. package/docs/guides/harness-debug-ui.mdx +4 -4
  598. package/docs/guides/lip-effect-textures.mdx +368 -0
  599. package/docs/guides/lip-uv-template.png +0 -0
  600. package/docs/guides/lip-uv-template.svg +1 -0
  601. package/docs/guides/makeup-design-textures.mdx +109 -0
  602. package/docs/introduction.mdx +1 -2
  603. package/package.json +23 -1
  604. package/dist/DebuggerUI-B6bP6P9r.cjs +0 -1
  605. package/dist/DebuggerUI-BjOMr8q_.js +0 -269
  606. package/dist/FaceMeshRenderer-C5l6VLdO.cjs +0 -155
  607. package/dist/FaceMeshRenderer-wjAHrJzP.js +0 -1270
  608. package/dist/FaceRetouch-BkJzoA79.cjs +0 -134
  609. package/dist/FaceRetouch-DwbKQJAN.js +0 -551
  610. package/dist/components/FaceWarp3D/FaceWarp3DHead.d.ts +0 -15
  611. package/dist/components/FaceWarp3D/defaults.d.ts +0 -37
  612. package/dist/components/FaceWarp3D/warp.d.ts +0 -13
  613. package/dist/contexts-ByhzppYl.js +0 -663
  614. package/dist/contexts-Dr62It_K.cjs +0 -1
  615. package/dist/debug-ui/face-warp-3d/index.d.ts +0 -6
  616. package/dist/getFaceInfo-C4QpCQIY.js +0 -118
  617. package/dist/getFaceInfo-fA1bFBub.cjs +0 -1
  618. package/dist/index-9dlAQAhy.js +0 -1462
  619. package/dist/index-BjmTe9eM.cjs +0 -1
  620. package/dist/index-BpEf2BBb.cjs +0 -1
  621. package/dist/index-CyUUurQT.cjs +0 -1
  622. package/dist/index-DCiMbxC3.cjs +0 -1
  623. package/dist/index-DXT3WccE.js +0 -2089
  624. package/dist/index-DpI-qo5X.cjs +0 -17
  625. package/dist/index-DyVF4vEW.js +0 -111
  626. package/dist/index-VJ0SJwmG.js +0 -214
  627. package/dist/internal-Cq-TEQ5Y.cjs +0 -1
  628. package/dist/renderLayers-lDtL0_43.cjs +0 -1
  629. package/dist/renderLayers-zrK2pv5O.js +0 -13
  630. package/dist/renderPasses-BOoBSr8z.cjs +0 -21
  631. package/dist/renderPasses-BcquyVtu.js +0 -1500
  632. package/dist/selectors-B8H97CKA.js +0 -59
  633. package/dist/selectors-CZLKT2Iv.cjs +0 -1
  634. package/dist/session-CpkiK5YA.cjs +0 -31
  635. package/dist/session-DLFN_VII.js +0 -363
  636. package/dist/useFaceInfo-BJ8-_MOs.cjs +0 -1
  637. package/dist/useFaceInfo-Dk426LTu.js +0 -62
  638. package/dist/useFaceResults-CtetsO9M.js +0 -19
  639. package/dist/useFaceResults-wBJF3zyp.cjs +0 -1
@@ -1,17 +0,0 @@
1
- "use strict";const a=require("react/jsx-runtime"),U=require("@react-three/fiber"),v=require("react"),Y=require("three"),K=require("./index-BjmTe9eM.cjs"),re=require("./FaceMeshRenderer-C5l6VLdO.cjs"),I=require("./renderPasses-BOoBSr8z.cjs"),te=require("./contexts-Dr62It_K.cjs"),We=require("./index-CyUUurQT.cjs"),Xe=require("./index-BpEf2BBb.cjs"),nt=require("./useFaceInfo-BJ8-_MOs.cjs"),Ae=require("./index-DCiMbxC3.cjs"),rt=require("@react-three/drei");function it(t){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const n in t)if(n!=="default"){const r=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(e,n,r.get?r:{enumerable:!0,get:()=>t[n]})}}return e.default=t,Object.freeze(e)}const M=it(Y),ie={width:720,height:1280},st=(t=[.5,.5])=>[t[0]*2-1,t[1]*2-1],he=({position:t=[0,0],size:e=[1,1]})=>{const n=e[0]/2,r=e[1]/2;return{left:t[0]-n,right:t[0]+n,top:t[1]+r,bottom:t[1]-r}},ot=({position:t=[0,0],size:e,canvasSize:n=ie})=>{const r=n.width/2||ie.width/2,s=n.height/2||ie.height/2,i=e??[n.width,n.height];return he({position:[t[0]/r,t[1]/s],size:[i[0]/r,i[1]/s]})},je=({coordinateSpace:t="normalized",canvasSize:e=ie,position:n,size:r,fallbackAnchors:s})=>s||(!n&&!r?he({}):t==="canvas"?ot({position:n,size:r,canvasSize:e}):he({position:n,size:r})),k=(t,e)=>{if(!Number.isFinite(t)||t<=0)throw new RangeError(`${e} must be positive`);return t},at=(t,e)=>{const n=k(e.width,"root.width"),r=k(e.height,"root.height");return!Number.isFinite(t.width)||!Number.isFinite(t.height)||t.width<=0||t.height<=0?0:Math.min(t.width/n,t.height/r)},Ee=(t,e,n,r)=>e.width<=0||e.height<=0?Object.assign(r,{x:0,y:0}):(k(n.width,"root.width"),k(n.height,"root.height"),r.x=(t.x/e.width-.5)*n.width,r.y=(.5-t.y/e.height)*n.height,r),Ce=(t,e,n,r)=>e.width<=0||e.height<=0?Object.assign(r,{x:0,y:0}):(k(n.width,"root.width"),k(n.height,"root.height"),r.x=(t.x/n.width+.5)*e.width,r.y=(.5-t.y/n.height)*e.height,r),Ge=({parentSize:t,referencePixelsPerUnit:e=I.DEFAULT_REFERENCE_PIXELS_PER_UNIT,root:n=I.DEFAULT_SCREEN_TRANSFORM_ROOT})=>at(t,n)*(I.DEFAULT_REFERENCE_PIXELS_PER_UNIT/k(e,"referencePixelsPerUnit")),lt=(t,e)=>t*Ge(e),ct=(t,e)=>{const n=Ge(e);return n===0?0:t/n},At=({point:t,parentSize:e,referencePixelsPerUnit:n=I.DEFAULT_REFERENCE_PIXELS_PER_UNIT,root:r=I.DEFAULT_SCREEN_TRANSFORM_ROOT,target:s={x:0,y:0}})=>{if(e.width<=0||e.height<=0)return Object.assign(s,{x:0,y:0});const i=I.DEFAULT_REFERENCE_PIXELS_PER_UNIT/k(n,"referencePixelsPerUnit");return s.x=t.x*(e.width/k(r.width,"root.width"))*i,s.y=t.y*(e.height/k(r.height,"root.height"))*i,s},ht=({point:t,parentSize:e,referencePixelsPerUnit:n=I.DEFAULT_REFERENCE_PIXELS_PER_UNIT,root:r=I.DEFAULT_SCREEN_TRANSFORM_ROOT,target:s={x:0,y:0}})=>{if(e.width<=0||e.height<=0)return Object.assign(s,{x:0,y:0});const i=I.DEFAULT_REFERENCE_PIXELS_PER_UNIT/k(n,"referencePixelsPerUnit");return s.x=t.x/(e.width/k(r.width,"root.width")*i),s.y=t.y/(e.height/k(r.height,"root.height")*i),s},dt=({point:t,rect:e,root:n=I.DEFAULT_SCREEN_TRANSFORM_ROOT,target:r={x:0,y:0}})=>Ee({x:t.x-e.left,y:t.y-e.top},e,n,r),gt=({point:t,rect:e,root:n=I.DEFAULT_SCREEN_TRANSFORM_ROOT,target:r={x:0,y:0}})=>(Ce(t,e,n,r),r.x+=e.left,r.y+=e.top,r),ve=({point:t,root:e=I.DEFAULT_SCREEN_TRANSFORM_ROOT,target:n={x:0,y:0},viewportSize:r})=>Ee({x:t.x*r.width,y:t.y*r.height},r,e,n),ut=({point:t,root:e=I.DEFAULT_SCREEN_TRANSFORM_ROOT,target:n={x:0,y:0},viewportSize:r})=>r.width<=0||r.height<=0?Object.assign(n,{x:0,y:0}):(Ce(t,r,e,n),n.x/=r.width,n.y/=r.height,n),ft=({point:t,root:e=I.DEFAULT_SCREEN_TRANSFORM_ROOT,target:n={x:0,y:0},viewportSize:r})=>ve({point:{x:(t.x+1)/2,y:(1-t.y)/2},viewportSize:r,root:e,target:n}),St=({layout:t,mirrored:e=!1,point:n,root:r=I.DEFAULT_SCREEN_TRANSFORM_ROOT,target:s={x:0,y:0}})=>{if(t.scale<=0)return Object.assign(s,{x:0,y:0});const i=t.offsetX+n.x*t.scale;return Ee({x:e?t.destination.width-i:i,y:t.offsetY+n.y*t.scale},t.destination,r,s)},Et=({layout:t,mirrored:e=!1,point:n,root:r=I.DEFAULT_SCREEN_TRANSFORM_ROOT,target:s={x:0,y:0}})=>{if(t.scale<=0)return Object.assign(s,{x:0,y:0});Ce(n,t.destination,r,s);const i=e?t.destination.width-s.x:s.x;return s.x=(i-t.offsetX)/t.scale,s.y=(s.y-t.offsetY)/t.scale,s},ae=new Y.Vector3,Qe=new Y.Vector2,Fe=new Y.Raycaster,Ct=({camera:t,point:e,root:n=I.DEFAULT_SCREEN_TRANSFORM_ROOT,target:r={x:0,y:0,depth:0},viewportSize:s})=>(k(n.width,"root.width"),k(n.height,"root.height"),ae.set(e.x,e.y,e.z).project(t),r.x=ae.x*n.width/2,r.y=ae.y*n.height/2,r.depth=ae.z,r),vt=({camera:t,point:e,root:n=I.DEFAULT_SCREEN_TRANSFORM_ROOT,target:r=new Y.Ray,viewportSize:s})=>(k(n.width,"root.width"),k(n.height,"root.height"),Qe.set(e.x*2/n.width,e.y*2/n.height),Fe.setFromCamera(Qe,t),r.copy(Fe.ray)),Ne=({children:t,depth:e=0})=>{const{camera:n,size:r}=U.useThree(),s=v.useMemo(()=>{if(!n.isPerspectiveCamera)return{width:10,height:10};const i=n,o=Math.abs(i.position.z-e),l=i.fov*Math.PI/180,c=2*Math.tan(l/2)*o;return{width:c*(r.width/r.height),height:c}},[n,r,e]);return a.jsx(K.ScreenSpaceContext.Provider,{value:s,children:a.jsx("group",{position:[0,0,e],children:t})})},He=v.forwardRef(({texture:t,name:e,overlay:n,opacity:r,position:s,rotation:i,scale:o,visible:l,renderOrder:c},A)=>a.jsxs("mesh",{ref:A,name:e,position:s,rotation:i,scale:o,visible:l,renderOrder:c,children:[a.jsx("planeGeometry",{args:[1,1]}),a.jsx("meshBasicMaterial",{map:t,transparent:!0,opacity:r,depthTest:!n,depthWrite:!n})]}));He.displayName="TextLabelMesh";const mt={color:"#ffffff",strokeWidth:0,strokeOpacity:1,shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,shadowOpacity:1,fontWeight:"bold",fontStyle:"normal",fontFamily:"Arial, sans-serif",fontSize:48,textAlign:"center",verticalAlign:"center",minFontSize:12,letterSpacing:0,lineSpacing:.3,bgColor:"rgba(20,40,110,0.88)",bgFillMode:"solid",bgOpacity:1,bgFit:"full",bgTextureFit:"cover",bgTextureFlipX:!1,bgTextureFlipY:!1,borderWidth:0,borderRadius:24,padding:32,aspect:2.5,resolution:512,opacity:1,underline:!1,strikethrough:!1,bendPreset:"arc",bendStrength:0},de=t=>{v.useEffect(()=>()=>{t==null||t.dispose()},[t])};function Tt(t,e,n){return n==="left"?e:n==="right"?t-e:t/2}function It(t,e,n,r,s){return s==="top"?e+n/2:s==="bottom"?t-e-r+n/2:t/2-(r-n)/2}function bt(t,e,n,r){return r==="full"||n==="left"?0:n==="right"?t-e:(t-e)/2}function Je(t,e,n,r){return`${t} ${e} ${n}px ${r}`}function oe(t,e){const n=Math.max(0,Math.min(e,1));return t*n*.08}function Ue(t,e){const n=Math.max(0,Math.min(e,1));return t*(1.2+n*.6)}function ze(t,e){"letterSpacing"in t&&(t.letterSpacing=`${e}px`)}function Ke(t){"letterSpacing"in t&&(t.letterSpacing="0px")}function ne(t,e,n){ze(t,n);const r=t.measureText(e).width;return Ke(t),r}function ge(t,e,n,r){return Math.max(1,Math.floor((t-e*2)/Ue(n,r)))}function xt(t,e,n,r,s){return e.length<=r&&e.every(i=>ne(t,i,s)<=n)}function ue(t,e,n,r,s,i,o,l){t.font=Je(r,s,i,o);const c=e.split(" "),A=[];let h="";for(const u of c){const g=h?`${h} ${u}`:u;ne(t,g,l)>n&&h?(A.push(h),h=u):h=g}return h&&A.push(h),A}function ke(t,e,n,r,s,i,o,l){const A=e.split(/\r?\n/).flatMap(h=>h.trim().length===0?[""]:ue(t,h,n,r,s,i,o,l));return A.length>0?A:[e]}function Ve(t,e,n,r,s){const i=r?"...":"";let o=e.trimEnd();for(;o.length>0&&ne(t,`${o}${i}`,s)>n;)o=o.slice(0,-1).trimEnd();return`${o}${i}`}function fe(t,e,n,r,s){return e.map((i,o)=>{if(ne(t,i,s)<=n)return i;const l=o===e.length-1;return Ve(t,i,n,r==="ellipsis"&&l,s)})}function Le(t,e,n,r,s,i){if(e.length<=n)return fe(t,e,r,s?"ellipsis":"clip",i);const o=e.slice(0,n),l=o[n-1];return o[n-1]=Ve(t,l,r,s,i),fe(t,o,r,s?"ellipsis":"clip",i)}function yt(t){const{ctx:e,text:n,explicitLines:r,maxWidth:s,maxHeight:i,padding:o,fontStyle:l,fontWeight:c,fontSize:A,fontFamily:h,letterSpacing:u,lineSpacing:g,overflow:S,resizeToFit:E,minFontSize:C}=t;let f=A,m=oe(f,u),b=r??ke(e,n,s,l,c,f,h,m),T=ge(i,o,f,g);const p=E===!0||S==="shrink";for(;p&&!xt(e,b,s,T,m)&&f>C&&(f=Math.max(C,f-4),m=oe(f,u),b=r??ke(e,n,s,l,c,f,h,m),T=ge(i,o,f,g),f!==C););return S==="ellipsis"?b=Le(e,b,T,s,!0,m):S==="clamp"||S==="shrink"?b=Le(e,b,T,s,!1,m):S!=="clip"&&(b=fe(e,b,s,void 0,m)),{fontSize:f,lines:b}}function Bt(t){const{ctx:e,text:n,maxWidth:r,maxHeight:s,padding:i,fontStyle:o,fontWeight:l,fontSize:c,fontFamily:A,letterSpacing:h,lineSpacing:u}=t;let g=c,S=ue(e,n,r,o,l,g,A,oe(g,h));const E=ge(s,i,g,u);return S.length>E&&(g=Math.max(12,Math.round(g*.75)),S=ue(e,n,r,o,l,g,A,oe(g,h))),{fontSize:g,lines:S}}function Se(t,e){return typeof OffscreenCanvas<"u"?new OffscreenCanvas(t,e):(()=>{const n=document.createElement("canvas");return n.width=t,n.height=e,n})()}function Mt(t,e){const n=e.width-e.padding*2,s=Array.isArray(e.lines)||e.text.includes(`
2
- `)||e.overflow!==void 0||e.resizeToFit!==void 0?yt({ctx:t,text:e.text,explicitLines:e.lines,maxWidth:n,maxHeight:e.height,padding:e.padding,fontStyle:e.fontStyle,fontWeight:e.fontWeight,fontSize:e.fontSize,fontFamily:e.fontFamily,overflow:e.overflow,resizeToFit:e.resizeToFit,minFontSize:e.minFontSize,letterSpacing:e.letterSpacing,lineSpacing:e.lineSpacing}):Bt({ctx:t,text:e.text,maxWidth:n,maxHeight:e.height,padding:e.padding,fontStyle:e.fontStyle,fontWeight:e.fontWeight,fontSize:e.fontSize,fontFamily:e.fontFamily,letterSpacing:e.letterSpacing,lineSpacing:e.lineSpacing}),i=s.fontSize,o=s.lines;t.font=Je(e.fontStyle,e.fontWeight,i,e.fontFamily);const l=oe(i,e.letterSpacing),c=Ue(i,e.lineSpacing),A=Math.max(i,i+(o.length-1)*c),h=It(e.height,e.padding,i,A,e.verticalAlign),u=o.map(g=>ne(t,g,l));return{fontSize:i,resolvedLines:o,letterSpacingPx:l,lineHeight:c,startY:h,textBlockWidth:Math.min(e.width,Math.max(0,Math.max(...u,0))+e.padding*2),textBlockHeight:Math.min(e.height,A+e.padding*2),textX:Tt(e.width,e.padding,e.textAlign)}}function wt(t,e,n,r,s,i){t.beginPath(),t.moveTo(e+i,n),t.lineTo(e+r-i,n),t.quadraticCurveTo(e+r,n,e+r,n+i),t.lineTo(e+r,n+s-i),t.quadraticCurveTo(e+r,n+s,e+r-i,n+s),t.lineTo(e+i,n+s),t.quadraticCurveTo(e,n+s,e,n+s-i),t.lineTo(e,n+i),t.quadraticCurveTo(e,n,e+i,n),t.closePath()}function Re(t,e,n){return typeof t!="number"||Number.isNaN(t)||t<=0?e:Math.min(t,n)}function pt(t,e){const n=bt(e.canvasWidth,e.panelWidth,e.textAlign,e.bgFit),r=(e.canvasHeight-e.panelHeight)/2,s=Math.min(e.borderRadius,Math.min(e.panelWidth,e.panelHeight)/2);wt(t,n,r,e.panelWidth,e.panelHeight,s),Qt(t,{panelX:n,panelY:r,panelWidth:e.panelWidth,panelHeight:e.panelHeight,bgColor:e.bgColor,bgFillMode:e.bgFillMode,bgOpacity:e.bgOpacity,bgGradientStops:e.bgGradientStops,bgTextureImage:e.bgTextureImage,bgTextureFit:e.bgTextureFit,bgTextureFlipX:e.bgTextureFlipX,bgTextureFlipY:e.bgTextureFlipY}),e.borderColor&&e.borderWidth>0&&(t.lineWidth=e.borderWidth,t.strokeStyle=e.borderColor,t.stroke())}function Qt(t,e){if(t.save(),t.globalAlpha=Math.max(0,Math.min(e.bgOpacity,1)),e.bgFillMode==="gradient"&&e.bgGradientStops&&e.bgGradientStops.length>1){const n=t.createLinearGradient(e.panelX,e.panelY,e.panelX+e.panelWidth,e.panelY+e.panelHeight);[...e.bgGradientStops].sort((r,s)=>r.position-s.position).forEach(r=>n.addColorStop(Math.max(0,Math.min(r.position,1)),r.color)),t.fillStyle=n,t.fill(),t.restore();return}if(e.bgTextureImage){t.clip(),Ft(t,{image:e.bgTextureImage,x:e.panelX,y:e.panelY,width:e.panelWidth,height:e.panelHeight,fit:e.bgTextureFit,flipX:e.bgTextureFlipX,flipY:e.bgTextureFlipY}),t.restore();return}t.fillStyle=e.bgColor,t.fill(),t.restore()}function Ft(t,e){const{image:n,x:r,y:s,width:i,height:o,fit:l,flipX:c,flipY:A}=e,h="naturalWidth"in n?n.naturalWidth:"videoWidth"in n?n.videoWidth:n.width,u="naturalHeight"in n?n.naturalHeight:"videoHeight"in n?n.videoHeight:n.height;let g=i,S=o,E=r,C=s;if(l!=="stretch"&&h>0&&u>0){const f=l==="cover"?Math.max(i/h,o/u):Math.min(i/h,o/u);g=h*f,S=u*f,E=r+(i-g)/2,C=s+(o-S)/2}t.save(),(c||A)&&(t.translate(c?r+i:0,A?s+o:0),t.scale(c?-1:1,A?-1:1),E=c?-(E-r)-g+r:E,C=A?-(C-s)-S+s:C),t.drawImage(n,E,C,g,S),t.restore()}function kt(t,e,n,r,s,i){const o=s/72,l=Math.abs(o),c=1-Math.min(1,Math.abs(e)),A=Math.min(1,Math.abs(e)),h=r<=1?.5:n/(r-1),u=Math.sin(h*Math.PI*2-Math.PI/2),g=Math.sin(h*Math.PI*2.7-Math.PI/2)*(.65+h*.35),S=s*e*e,E=2*s*e/i,C={xOffset:0,yOffset:0,rotation:0,scaleX:1,scaleY:1};switch(t){case"arc":return{...C,yOffset:S,rotation:Math.atan(E)};case"arc-lower":return{...C,yOffset:S*.55,scaleY:Math.max(.2,1+o*e*e*.45)};case"arc-upper":return{...C,yOffset:-S*.55,scaleY:Math.max(.2,1-o*e*e*.45)};case"arch":return{...C,yOffset:S};case"bulge":return{...C,scaleY:Math.max(.2,1+o*c*.75)};case"shell-lower":return{...C,yOffset:s*.45*h*c,scaleY:Math.max(.2,1+o*h*c)};case"shell-upper":return{...C,yOffset:-s*.45*(1-h)*c,scaleY:Math.max(.2,1+o*(1-h)*c)};case"flag":return{...C,yOffset:s*.65*g,rotation:Math.atan(s/Math.max(i,1)*Math.cos(h*Math.PI*2.7)*1.6)};case"wave":return{...C,yOffset:s*.6*u,rotation:Math.atan(s/Math.max(i,1)*Math.cos(h*Math.PI*2)*1.4)};case"fish":return{...C,scaleX:Math.max(.25,1-l*A*.55),scaleY:Math.max(.2,1+o*c)};case"rise":return{...C,yOffset:s*e};case"fisheye":return{...C,yOffset:s*.18*e*c,scaleX:Math.max(.25,1+o*c*.7),scaleY:Math.max(.2,1+o*c*.7)};case"inflate":return{...C,scaleX:Math.max(.25,1+o*c*.6),scaleY:Math.max(.2,1+o*c*.6)};case"squeeze":return{...C,scaleY:Math.max(.2,1-o*c*.8)};case"twist":return{...C,yOffset:s*e,rotation:o*e*.45,scaleY:Math.max(.2,1+o*e*.25)};default:return C}}function $(t,e,n,r,s,i,o="arc",l=0){if(l!==0){Lt(t,e,n,r,s,i,o,l);return}ze(t,s),i==="fill"?t.fillText(e,n,r):t.strokeText(e,n,r),Ke(t)}function Lt(t,e,n,r,s,i,o,l){const c=Array.from(e);if(c.length===0)return;const A=c.map(m=>t.measureText(m).width),h=A.reduce((m,b)=>m+b,0)+s*Math.max(0,c.length-1),u=t.textAlign,g=u==="right"?n-h:u==="center"?n-h/2:n,E=Math.max(-100,Math.min(l,100))/100*72,C=Math.max(h/2,1);let f=g;for(let m=0;m<c.length;m++){const b=c[m],T=A[m],p=f+T/2,w=(p-g-h/2)/C,y=kt(o,w,m,c.length,E,C);t.save(),t.translate(p+y.xOffset,r+y.yOffset),t.rotate(y.rotation),t.scale(y.scaleX,y.scaleY),t.textAlign="center",i==="fill"?t.fillText(b,0,0):t.strokeText(b,0,0),t.restore(),f+=T+s}}function Pe(t,e,n,r,s,i,o,l,c){const A=ne(t,e,l),h=s==="center"?n-A/2:s==="right"?n-A:n,u=c==="underline"?o*.42:-o*.08,g=r+u;t.save(),t.strokeStyle=i,t.lineWidth=Math.max(2,o*.06),t.lineCap="round",t.beginPath(),t.moveTo(h,g),t.lineTo(h+A,g),t.stroke(),t.restore()}function Rt(t,e){for(let n=0;n<e.lines.length;n++){const r=e.lines[n],s=e.startY+n*e.lineHeight;for(const i of e.shadowLayers)t.save(),t.shadowColor=i.color,t.shadowBlur=i.blur,t.shadowOffsetX=i.offsetX??0,t.shadowOffsetY=i.offsetY??0,t.globalAlpha=i.opacity??1,t.fillStyle=e.color,$(t,r,e.textX,s,e.letterSpacingPx,"fill",e.bendPreset,e.bendStrength),t.restore();for(const i of e.strokeLayers)t.save(),t.lineJoin="round",t.miterLimit=2,t.lineWidth=i.width,t.strokeStyle=i.color,t.globalAlpha=i.opacity??1,$(t,r,e.textX,s,e.letterSpacingPx,"stroke",e.bendPreset,e.bendStrength),t.restore();t.save(),t.fillStyle=e.color,t.globalAlpha=1,$(t,r,e.textX,s,e.letterSpacingPx,"fill",e.bendPreset,e.bendStrength),t.restore(),e.underline&&Pe(t,r,e.textX,s,e.textAlign,e.color,e.fontSize,e.letterSpacingPx,"underline"),e.strikethrough&&Pe(t,r,e.textX,s,e.textAlign,e.color,e.fontSize,e.letterSpacingPx,"strikethrough")}}function Pt(t,e){const n=Math.max(0,Math.min(e.intensity,1));if(n<=0)return;const r=Math.max(0,Math.min(e.range,1)),s=r*72,i=Math.max(-.5,Math.min(e.horizontalAngle,.5))*80,o=Math.max(-.5,Math.min(e.verticalAngle,.5))*80;for(let l=0;l<e.lines.length;l++){const c=e.startY+l*e.lineHeight;t.save(),t.globalAlpha=n,t.shadowColor=e.color,t.shadowBlur=s,t.shadowOffsetX=i,t.shadowOffsetY=o,e.style==="contoured"?(t.lineJoin="round",t.miterLimit=2,t.lineWidth=Math.max(2,r*42),t.strokeStyle=e.color,$(t,e.lines[l],e.textX,c,e.letterSpacingPx,"stroke",e.bendPreset,e.bendStrength)):(t.fillStyle=e.color,$(t,e.lines[l],e.textX,c,e.letterSpacingPx,"fill",e.bendPreset,e.bendStrength)),t.restore()}}function Dt(t,e){const n=Se(e.width,e.height),r=n.getContext("2d");r.clearRect(0,0,e.width,e.height),r.font=e.font,r.fillStyle="#ffffff",r.textAlign=e.textAlign,r.textBaseline="middle";for(let o=0;o<e.lines.length;o++)$(r,e.lines[o],e.textX,e.startY+o*e.lineHeight,e.letterSpacingPx,"fill",e.bendPreset,e.bendStrength);const s=Se(e.width,e.height),i=s.getContext("2d");i.clearRect(0,0,e.width,e.height),i.save(),i.globalAlpha=e.opacity,i.filter=e.blur>0?`blur(${e.blur}px)`:"none",i.drawImage(n,e.offsetX,e.offsetY),i.restore(),i.globalCompositeOperation="destination-in",i.drawImage(n,0,0),i.globalCompositeOperation="source-in",i.globalAlpha=e.opacity,i.fillStyle=e.color,i.fillRect(0,0,e.width,e.height),t.drawImage(s,0,0)}function Ot(t){const{width:e,height:n,color:r,strokeLayers:s,strokeColor:i,strokeWidth:o,strokeOpacity:l,shadowLayers:c,innerShadow:A,glow:h,shadowColor:u,shadowBlur:g,shadowOffsetX:S,shadowOffsetY:E,shadowOpacity:C,textAlign:f,bgFillMode:m,bgOpacity:b,bgFit:T,bgAutoSize:p,bgWidth:w,bgHeight:y,bgGradientStops:L,bgTextureImage:B,bgTextureFit:d,bgTextureFlipX:R,bgTextureFlipY:N,underline:G,strikethrough:V,bendPreset:H,bendStrength:O}=t;let{fontSize:q,bgColor:z}=t;const Z=[...s??[],...i&&o>0?[{color:i,width:o,opacity:l}]:[]].filter(P=>P.width>0),W=[...c??[],...u&&(g>0||S!==0||E!==0)?[{color:u,blur:g,offsetX:S,offsetY:E,opacity:C}]:[]].filter(P=>P.blur>0||(P.offsetX??0)!==0||(P.offsetY??0)!==0);let D;const J=Se(e,n),F=J.getContext("2d");F.clearRect(0,0,e,n),F.fillStyle=r,F.textAlign=f,F.textBaseline="middle";const x=Mt(F,t);if(q=x.fontSize,z!=="transparent"){const P=p===!0,_=Re(P?void 0:w,T==="text"||P?x.textBlockWidth:e,e),X=Re(P?void 0:y,T==="text"||P?x.textBlockHeight:n,n);pt(F,{canvasWidth:e,canvasHeight:n,textAlign:f,bgFit:T,panelWidth:_,panelHeight:X,bgColor:z,bgFillMode:m,bgOpacity:b,bgGradientStops:L,bgTextureImage:B,bgTextureFit:d,bgTextureFlipX:R,bgTextureFlipY:N,borderColor:t.borderColor,borderWidth:t.borderWidth,borderRadius:t.borderRadius})}return h&&Pt(F,{lines:x.resolvedLines,textX:x.textX,startY:x.startY,lineHeight:x.lineHeight,letterSpacingPx:x.letterSpacingPx,bendPreset:H,bendStrength:O,color:h.color,style:h.style,intensity:h.intensity??.5,range:h.range??.5,horizontalAngle:h.horizontalAngle??0,verticalAngle:h.verticalAngle??0}),Rt(F,{lines:x.resolvedLines,textX:x.textX,startY:x.startY,lineHeight:x.lineHeight,textAlign:f,color:r,fontSize:q,letterSpacingPx:x.letterSpacingPx,bendPreset:H,bendStrength:O,shadowLayers:W,strokeLayers:Z,underline:G,strikethrough:V}),A&&Dt(F,{width:e,height:n,font:F.font,lines:x.resolvedLines,textX:x.textX,startY:x.startY,lineHeight:x.lineHeight,letterSpacingPx:x.letterSpacingPx,bendPreset:H,bendStrength:O,textAlign:f,color:A.color,opacity:A.opacity??1,blur:A.blur,offsetX:A.offsetX??0,offsetY:A.offsetY??0}),D=new M.CanvasTexture(J),D.needsUpdate=!0,D}function Yt(t,e){const{lines:n,color:r,strokeLayers:s,outlineEnabled:i,strokeColor:o,strokeWidth:l,strokeOpacity:c,shadowLayers:A,shadowEnabled:h,innerShadow:u,glow:g,shadowColor:S,shadowBlur:E,shadowOffsetX:C,shadowOffsetY:f,shadowOpacity:m,fontWeight:b,fontStyle:T,fontFamily:p,fontSize:w,textAlign:y,verticalAlign:L,overflow:B,resizeToFit:d,minFontSize:R,letterSpacing:N,lineSpacing:G,bgFillMode:V,bgOpacity:H,bgFit:O,bgAutoSize:q,bgWidth:z,bgHeight:Z,bgGradientStops:W,bgTextureFit:D,bgTextureFlipX:J,bgTextureFlipY:F,borderColor:x,borderWidth:P,borderRadius:_,padding:X,aspect:me,resolution:ce,underline:Te,strikethrough:Ie,bendPreset:be,bendStrength:xe}=t,ye=v.useMemo(()=>i===!1?[]:s,[i,s]),Be=v.useMemo(()=>h===!1?[]:A,[h,A]),Me=void 0,we=v.useMemo(()=>({text:e.text,lines:n,color:r,strokeLayers:ye,strokeColor:i===!1?void 0:o,strokeWidth:i===!1?0:l,strokeOpacity:c,shadowLayers:Be,innerShadow:u,glow:g,shadowColor:h===!1?void 0:S,shadowBlur:h===!1?0:E,shadowOffsetX:h===!1?0:C,shadowOffsetY:h===!1?0:f,shadowOpacity:m,fontWeight:b,fontStyle:T,fontFamily:p,fontSize:w,textAlign:y,verticalAlign:L,overflow:B,resizeToFit:d,minFontSize:R,letterSpacing:N,lineSpacing:G,bgColor:e.bgColor,bgFillMode:V,bgOpacity:H,bgFit:O,bgAutoSize:q,bgWidth:z,bgHeight:Z,bgGradientStops:W,bgTextureImage:Me,bgTextureFit:D,bgTextureFlipX:J,bgTextureFlipY:F,borderColor:x,borderWidth:P,borderRadius:_,padding:X,height:ce,width:Math.round(ce*Math.max(me,.1)),underline:Te,strikethrough:Ie,bendPreset:be,bendStrength:xe}),[e.text,e.bgColor,n,r,ye,i,o,l,c,Be,u,g,h,S,E,C,f,m,b,T,p,w,y,L,B,d,R,N,G,V,H,O,q,z,Z,W,Me,D,J,F,x,P,_,X,me,ce,Te,Ie,be,xe]),pe=v.useMemo(()=>Ot(we),[we]);return de(pe),pe}function qe(t){const e={...mt,...t},{text:n,bgColor:r,opacity:s,name:i,overlay:o=!0,position:l,rotation:c,scale:A,visible:h,renderOrder:u}=e,[g,S]=v.useState(null),[E,C]=v.useState(null),f=v.useRef(n);f.current!==n&&(f.current=n,g!==null&&S(null));const m=v.useRef(r);m.current!==r&&(m.current=r,E!==null&&C(null));const b=v.useRef(null),w=Yt(e,{text:g??n,bgColor:E??r});return v.useEffect(()=>{const y=b.current;if(y)return y.userData.setText=L=>S(L),y.userData.setBgColor=L=>C(L),()=>{delete y.userData.setText,delete y.userData.setBgColor}},[]),a.jsx(He,{ref:b,name:i,texture:w,overlay:o,opacity:s,position:l,rotation:c,scale:A,visible:h,renderOrder:u})}function le(t,e){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]}const Wt="data:image/png;base64,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",Xt=(t,e)=>t||(e==="cover"?"fill":e==="stretch"?"stretch":"fit"),De=(t,e)=>{const[n,r]=le(t,e);return n===1&&r===1?[1,1,1]:n<1?[1,1/n,1]:[1/r,1,1]},jt=(t,e,n,r,s,i,o)=>{let l=[1,1,1],c=[1,1,1],A=[1,1],h=[0,0];switch(t){case"fit":l=le(e,n),c=l;break;case"fitWidth":l=[1,e>0&&n>0?e/n:1,1],c=l;break;case"fitHeight":l=[e>0&&n>0?n/e:1,1,1],c=l;break;case"center":l=i&&o&&i.width>0&&i.height>0&&o.width>0&&o.height>0?[o.width/i.width,o.height/i.height,1]:le(e,n),c=l;break;case"fill":l=De(e,n),c=l;break;case"fillAndCut":if(c=De(e,n),n>e){const u=e/n;A=[u,1],h=[(1-u)/2,0]}else if(n<e){const u=n/e;A=[1,u],h=[0,(1-u)/2]}break}return{meshScale:[l[0]*(r?-1:1),l[1]*(s?-1:1),1],guideScale:c,repeat:A,offset:h}},Gt=(t,e)=>t??(e?{kind:"image",src:e}:{kind:"default"}),ee=t=>{const e=t.image;return{width:(e==null?void 0:e.videoWidth)??(e==null?void 0:e.width)??1,height:(e==null?void 0:e.videoHeight)??(e==null?void 0:e.height)??1}},Nt=t=>{const{width:e,height:n}=ee(t);return e>0&&n>0?e/n:1},Ht=new Set(["overlay","softLight","hardLight","difference","exclusion"]),Jt={overlay:0,softLight:1,hardLight:2,difference:3,exclusion:4},Ut=t=>{switch(t){case"add":return{blending:M.AdditiveBlending};case"subtract":return{blending:M.SubtractiveBlending};case"multiply":return{blending:M.MultiplyBlending};case"screen":return{blending:M.CustomBlending,blendSrc:M.OneFactor,blendDst:M.OneMinusSrcColorFactor,blendEquation:M.AddEquation};case"lighten":return{blending:M.CustomBlending,blendSrc:M.OneFactor,blendDst:M.OneFactor,blendEquation:M.MaxEquation};case"darken":return{blending:M.CustomBlending,blendSrc:M.OneFactor,blendDst:M.OneFactor,blendEquation:M.MinEquation};default:return{blending:M.NormalBlending}}},zt=`
3
- varying vec2 vUv;
4
- void main(){vUv=uv;gl_Position=projectionMatrix*modelViewMatrix*vec4(position,1.0);}`,Kt=`
5
- uniform sampler2D imageMap;uniform sampler2D backdropMap;uniform vec2 resolution;
6
- uniform vec3 tint;uniform float opacity;uniform float alphaTest;uniform int blendMode;varying vec2 vUv;
7
- float overlayChannel(float b,float s){return b<.5?2.*b*s:1.-2.*(1.-b)*(1.-s);}
8
- float hardLightChannel(float b,float s){return s<.5?2.*b*s:1.-2.*(1.-b)*(1.-s);}
9
- float softLightChannel(float b,float s){return s<.5?b-(1.-2.*s)*b*(1.-b):b+(2.*s-1.)*(sqrt(max(b,0.))-b);}
10
- vec3 applyAdvancedBlend(vec3 b,vec3 s){
11
- if(blendMode==0)return vec3(overlayChannel(b.r,s.r),overlayChannel(b.g,s.g),overlayChannel(b.b,s.b));
12
- if(blendMode==1)return vec3(softLightChannel(b.r,s.r),softLightChannel(b.g,s.g),softLightChannel(b.b,s.b));
13
- if(blendMode==2)return vec3(hardLightChannel(b.r,s.r),hardLightChannel(b.g,s.g),hardLightChannel(b.b,s.b));
14
- if(blendMode==3)return abs(b-s);return b+s-2.*b*s;}
15
- void main(){vec4 image=texture2D(imageMap,vUv)*vec4(tint,opacity);if(image.a<=alphaTest)discard;
16
- vec2 uv=gl_FragCoord.xy/max(resolution,vec2(1.));vec3 base=texture2D(backdropMap,uv).rgb;
17
- vec3 mixed=applyAdvancedBlend(base,image.rgb);gl_FragColor=vec4(mix(base,mixed,image.a),1.);}`,Vt=()=>{const t=document.createElement("canvas");t.width=256,t.height=256;const e=t.getContext("2d");if(!e)return new M.CanvasTexture(t);const n=e.createRadialGradient(96,80,10,128,128,128);n.addColorStop(0,"#ffffff"),n.addColorStop(.18,"#f8fafc"),n.addColorStop(.44,"#cbd5e1"),n.addColorStop(.72,"#475569"),n.addColorStop(1,"#0f172a"),e.fillStyle=n,e.fillRect(0,0,t.width,t.height);const r=new M.CanvasTexture(t);return r.needsUpdate=!0,r};function qt({materialTexture:t,sourceTexture:e,onSourceSizeChange:n}){const r=v.useRef(ee(e));return U.useFrame(()=>{t.needsUpdate=!0;const s=ee(e);(s.width!==r.current.width||s.height!==r.current.height)&&(r.current=s,n(s))}),null}const Zt=999,_t=Math.PI/180,$t=te.createTextureSourceResolver([te.gifTextureSourceProvider]);function en(t){const[e,n]=v.useState(null);return v.useEffect(()=>{if(n(null),!t||typeof document>"u")return;const r=new AbortController;let s;return $t({kind:"gif",src:t},r.signal).then(i=>{s=i,n(i)}).catch(i=>{i instanceof DOMException&&i.name==="AbortError"||console.warn("[xr-sdk] Failed to load GIF ScreenImage source",i)}),()=>{r.abort(),te.disposeResolvedTextureSource(s)}},[t]),e}function Oe({name:t,source:e,src:n,fit:r,stretchMode:s,materialType:i="unlit",blendMode:o="normal",backdropTexture:l=null,rotation:c=0,opacity:A=1,color:h="#ffffff",flipX:u=!1,flipY:g=!1,renderOrder:S=Zt,transparent:E=!0,alphaTest:C=0,overlay:f=!0,visible:m,layoutSize:b}){const{size:T}=U.useThree(),p=te.useXRViewportRenderOutputs(),w=Gt(e,n),y=w.kind==="image"?w.src:Wt,L=rt.useTexture(y),B=en(w.kind==="gif"?w.src:void 0),d=w.kind==="texture"?w.texture:w.kind==="gif"?(B==null?void 0:B.texture)??L:L,R=K.useScreenRectAspect(),N=Xt(s,r),[G,V]=v.useState(()=>ee(d));v.useEffect(()=>{V(ee(d))},[d]);const H=d instanceof M.VideoTexture||typeof HTMLCanvasElement<"u"&&d.image instanceof HTMLCanvasElement,O=H?G:ee(d),q=v.useCallback(X=>V(X),[]),z=O.width>0&&O.height>0?O.width/O.height:Nt(d),Z=v.useMemo(()=>Vt(),[]),W=v.useMemo(()=>jt(N,R,z,u,g,b,O),[N,R,z,u,g,b,O]),D=v.useMemo(()=>{const X=d.clone();return X.needsUpdate=!0,X.repeat.set(W.repeat[0],W.repeat[1]),X.offset.set(W.offset[0],W.offset[1]),X},[d,W.repeat,W.offset]);de(D),de(Z);const J=v.useMemo(()=>Ut(o),[o]),F=Ht.has(o)?o:null,x=l??(p==null?void 0:p.finalColorTexture)??(p==null?void 0:p.sceneColorTexture)??null,P=F!==null&&x!==null,_=v.useMemo(()=>({imageMap:{value:D},backdropMap:{value:x},resolution:{value:new M.Vector2(T.width,T.height)},tint:{value:new M.Color(h)},opacity:{value:A},alphaTest:{value:C},blendMode:{value:F===null?0:Jt[F]}}),[F,C,x,T.height,T.width,h,D,A]);return a.jsxs("group",{visible:m,children:[H?a.jsx(qt,{materialTexture:D,sourceTexture:d,onSourceSizeChange:q}):null,a.jsxs("mesh",{name:t,scale:W.meshScale,rotation:[0,0,c*_t],renderOrder:S,children:[a.jsx("planeGeometry",{args:[1,1]}),P?a.jsx("shaderMaterial",{uniforms:_,vertexShader:zt,fragmentShader:Kt,transparent:!1,depthTest:!f,depthWrite:!f,toneMapped:!1}):i==="standardPBR"?a.jsx("meshStandardMaterial",{map:D,transparent:E||A<1,opacity:A,color:h,alphaTest:C,depthTest:!f,depthWrite:!f,toneMapped:!1,roughness:.72,metalness:.08,emissive:h,emissiveIntensity:.18,...J}):i==="matcap"?a.jsx("meshMatcapMaterial",{map:D,matcap:Z,transparent:E||A<1,opacity:A,color:h,alphaTest:C,depthTest:!f,depthWrite:!f,toneMapped:!1,...J}):a.jsx("meshBasicMaterial",{map:D,transparent:E||A<1,opacity:A,color:h,alphaTest:C,depthTest:!f,depthWrite:!f,toneMapped:!1,...J})]})]})}const tn={left:0,right:0,top:0,bottom:0},nn=Math.PI/180;function rn({anchors:t,offsets:e,pivot:n,rotation:r,children:s}){const{width:i,height:o}=K.useScreenSpace(),l=v.useMemo(()=>({left:-1,right:1,top:1,bottom:-1,...t}),[t]),c=v.useMemo(()=>({...tn,...e}),[e]),A=v.useMemo(()=>te.computeScreenTransform(i,o,l,c,n),[o,n,l,c,i]),h=A.width>0&&A.height>0?A.width/A.height:null;return a.jsx("group",{position:[A.centerX-A.pivotX,A.centerY-A.pivotY,0],rotation:[0,0,r*nn],scale:[A.width,A.height,1],children:a.jsx(K.ScreenRectAspectContext.Provider,{value:h,children:s})})}function sn({transform:t,guideLayer:e,onChange:n,children:r}){return a.jsx(I.ScreenTransformFrame,{guideColor:"#22d3ee",guideLayer:e,transform:t,onChange:n,children:r})}const on={left:-1,right:1,top:1,bottom:-1},an={},ln=[.5,.5];[["Normal","normal"],["Add","add"],["Subtract","subtract"],["Multiply","multiply"],["Screen","screen"],["Lighten","lighten"],["Darken","darken"],["Overlay","overlay"],["Soft Light","softLight"],["Hard Light","hardLight"],["Difference","difference"],["Exclusion","exclusion"]].map(([t,e])=>({label:t,value:e}));const cn=t=>[t[0]*2-1,t[1]*2-1],An=(t,e,n,r,s)=>t||(!r&&!s?on:je({coordinateSpace:e,canvasSize:n??ie,position:r,size:s}));function Ze({anchors:t,coordinateSpace:e,canvasSize:n,position:r,size:s,offsets:i=an,pivot:o=ln,rotation:l=0,transform:c,onScreenTransformChange:A,transformGuideLayer:h="scene",...u}){const g=v.useMemo(()=>An(t,e,n,r,s),[t,n,e,r,s]),S=v.useMemo(()=>cn(o),[o]);if(c){const E=I.mergeScreenTransform2D(c);return E.enabled?a.jsx(sn,{guideLayer:h,transform:E,onChange:A,children:a.jsx(Oe,{...u,layoutSize:E.size,renderOrder:u.renderOrder??E.renderOrder,overlay:u.overlay??E.overlay,visible:u.visible??E.visible,rotation:0})}):null}return a.jsx(rn,{anchors:g,offsets:i,pivot:S,rotation:l,children:a.jsx(Oe,{...u,layoutSize:s?{width:s[0],height:s[1]}:void 0,rotation:0})})}const hn=2.5,dn="#38bdf8",gn={top:{left:-.92,right:.92,top:.92,bottom:.56},center:{left:-.92,right:.92,top:.18,bottom:-.18},bottom:{left:-.92,right:.92,top:-.56,bottom:-.92}};function un({bend:t,bendPreset:e,bendStrength:n}){return{bendPreset:(t==null?void 0:t.preset)??e,bendStrength:(t==null?void 0:t.strength)??n}}function fn({width:t,height:e}){const n=Math.max(1,t),r=Math.max(1,e);return{aspect:n/r,resolution:r}}function Ye(t){const e=K.useScreenRectAspect(),{bend:n,layoutSize:r,renderOrder:s,overlay:i=!0,...o}=t,l=r?fn(r):void 0,c=Math.max((l==null?void 0:l.aspect)??e??hn,.1),A=un({bend:n,bendPreset:o.bendPreset,bendStrength:o.bendStrength});return a.jsx(qe,{...o,aspect:c,resolution:(l==null?void 0:l.resolution)??o.resolution,...A,overlay:i,renderOrder:s})}function Sn({transform:t,guideLayer:e,onChange:n,children:r}){return a.jsx(I.ScreenTransformFrame,{guideColor:dn,guideLayer:e,transform:t,onChange:n,children:r})}function En(t="center"){return gn[t]}function Cn({anchors:t,coordinateSpace:e,canvasSize:n,position:r,size:s,transform:i,pivot:o,verticalAlign:l}){return{resolvedAnchors:i!=null&&i.anchors?i.anchors:t||(i!=null&&i.position||i!=null&&i.size||r||s?je({coordinateSpace:(i==null?void 0:i.coordinateSpace)??e,canvasSize:(i==null?void 0:i.canvasSize)??n,position:(i==null?void 0:i.position)??r,size:(i==null?void 0:i.size)??s}):En(l)),resolvedOffsets:i==null?void 0:i.offsets,resolvedPivot:st((i==null?void 0:i.pivot)??o??[.5,.5])}}function _e({anchors:t,coordinateSpace:e,canvasSize:n,offsets:r,pivot:s,position:i,rotation:o=0,size:l,transform:c,screenTransform:A,onScreenTransformChange:h,transformGuideLayer:u="scene",verticalAlign:g="center",...S}){const{resolvedAnchors:E,resolvedOffsets:C,resolvedPivot:f}=v.useMemo(()=>Cn({anchors:t,coordinateSpace:e,canvasSize:n,position:i,size:l,transform:c,pivot:s,verticalAlign:g}),[t,n,e,s,i,l,c,g]),m=(c==null?void 0:c.offsets)??r??C,b=(c==null?void 0:c.rotation)??o;if(A){const T=I.mergeScreenTransform2D(A);return T.enabled?a.jsx(Sn,{guideLayer:u,transform:T,onChange:h,children:a.jsx(Ye,{...S,layoutSize:T.size,verticalAlign:g,renderOrder:S.renderOrder??T.renderOrder,overlay:S.overlay??T.overlay,visible:S.visible??T.visible})}):null}return a.jsx(te.ScreenTransform,{anchors:E,offsets:m,pivot:f,children:a.jsx("group",{rotation:[0,0,b*Math.PI/180],children:a.jsx(Ye,{...S,verticalAlign:g})})})}const $e=({settings:t,transform:e})=>{const n=v.useMemo(()=>a.jsxs("group",{name:"LightEditorGizmo",visible:t.showHelper,children:[a.jsxs("mesh",{renderOrder:1e3,children:[a.jsx("sphereGeometry",{args:[.12,12,8]}),a.jsx("meshBasicMaterial",{color:"#facc15",wireframe:!0,depthTest:!1,depthWrite:!1})]}),a.jsxs("mesh",{position:[0,0,-.35],rotation:[Math.PI/2,0,0],renderOrder:1e3,children:[a.jsx("coneGeometry",{args:[.08,.45,12]}),a.jsx("meshBasicMaterial",{color:"#fde047",wireframe:!0,depthTest:!1,depthWrite:!1})]})]}),[t.showHelper]);return t.enabled?a.jsxs(re.Transform3D,{value:e,children:[n,t.type==="ambient"?a.jsx("ambientLight",{color:t.color,intensity:t.intensity}):null,t.type==="directional"?a.jsx("directionalLight",{color:t.color,intensity:t.intensity,castShadow:t.castShadow}):null,t.type==="point"?a.jsx("pointLight",{color:t.color,intensity:t.intensity,distance:t.distance,decay:t.decay,castShadow:t.castShadow}):null,t.type==="spot"?a.jsx("spotLight",{color:t.color,intensity:t.intensity,distance:t.distance,angle:t.angle,penumbra:t.penumbra,decay:t.decay,castShadow:t.castShadow}):null]}):null},vn=({source:t,target:e,settings:n})=>{if(!n.enabled||!e)return!1;const r=new Y.Quaternion;if(n.mode==="point"){const i=new Y.Vector3;e.getWorldPosition(i),t.lookAt(i),r.copy(t.quaternion)}else e.getWorldQuaternion(r);const s=new Y.Quaternion().setFromEuler(new Y.Euler(n.offsetRotation.x*Math.PI/180,n.offsetRotation.y*Math.PI/180,n.offsetRotation.z*Math.PI/180));return t.quaternion.copy(r).multiply(s),!0},et=({target:t,settings:e,children:n})=>{const r=v.useRef(null);return U.useFrame(()=>{r.current&&vn({source:r.current,target:t,settings:e})}),a.jsx("group",{ref:r,children:n})},mn=(t,e)=>{let n=t;for(;n&&n!==e;){if("isTransformControls"in n&&n.isTransformControls===!0)return!0;n=n.parent}return!1},j=({children:t,layer:e})=>{const n=v.useRef(null),r=v.useRef(0),s=v.useCallback(()=>{e===void 0||!n.current||n.current.traverse(i=>{mn(i,n.current)||i.layers.set(e)})},[e]);return v.useLayoutEffect(()=>{s(),r.current=2},[s,t]),U.useFrame(()=>{r.current<=0||(s(),r.current-=1)},-1e3),a.jsx("group",{ref:n,children:t})},Q=(t,e)=>(t==null?void 0:t.type)===e,Tn=t=>null,se=({children:t,inside:e})=>e?a.jsx(a.Fragment,{children:t}):a.jsx(Ne,{children:t}),In=({children:t,insideScreenSpaceUI:e,objectRef:n,renderOrder:r,settings:s})=>a.jsx(se,{inside:e,children:a.jsx(bn,{settings:s,renderOrder:r,objectRef:n,children:t})}),bn=({children:t,objectRef:e,renderOrder:n,settings:r})=>{const s=K.useScreenSpace();if(!r.enabled||!r.visible)return null;const i=I.resolveScreenTransform2D({transform:r,parentSize:s});return a.jsx("group",{ref:e,position:i.center,rotation:i.rotation,scale:i.size,renderOrder:n??r.renderOrder,children:t})},xn=({anchor:t,children:e,insideScreenSpaceUI:n,objectRef:r,renderOrder:s,settings:i})=>a.jsx(se,{inside:n,children:a.jsx(yn,{anchor:t,settings:i,renderOrder:s,objectRef:r,children:e})}),yn=({anchor:t,children:e,objectRef:n,renderOrder:r,settings:s})=>{const i=nt.useFaceInfo({targetFps:24}),{size:o}=U.useThree(),l=K.useScreenSpace(),c=v.useRef(null),A=v.useRef(new Y.Vector3),h=v.useRef({pos:new Y.Vector3,prevRaw:new Y.Vector3,dxHat:new Y.Vector3,initialized:!1}),u=v.useRef(!1),g=v.useRef({x:0,y:0,z:0,visibility:0}),S=v.useRef({x:0,y:0}),E=i?We.resolveFaceAnchorPoint(t.target,i.landmarks,t.customAnchorPoint,g.current):null,C=E?ve({point:E,viewportSize:o,target:S.current}):null,f=C?I.resolveScreenTransform2D({transform:{...s,position:{x:C.x+s.position.x+t.offset.x,y:C.y+s.position.y+t.offset.y}},parentSize:l}):null;return U.useFrame((m,b)=>{const T=c.current;if(T){if(T.visible=!!(f&&s.enabled&&s.visible),!f){u.current=!1,h.current.initialized=!1;return}A.current.set(f.center[0],f.center[1],t.offset.z),t.smoothing>0?(Xe.stepTrackingSmoothing(h.current,A.current,u.current?b:0,t.smoothing),T.position.copy(h.current.pos)):T.position.copy(A.current),u.current=!0}}),a.jsx("group",{ref:m=>{c.current=m,n==null||n(m)},rotation:[(f==null?void 0:f.rotation[0])??0,(f==null?void 0:f.rotation[1])??0,((f==null?void 0:f.rotation[2])??0)+(t.followFaceRoll?(i==null?void 0:i.pose.rotation.z)??0:0)],scale:[s.size.width/100*s.scale2D.x,s.size.height/100*s.scale2D.y,1],renderOrder:r??s.renderOrder,children:e})},tt=({editorMode:t=!1,faceMeshMaterialOverrides:e,fallback:n=Tn,insideScreenSpaceUI:r=!1,objectId:s,onComponentChange:i,renderLayer:o,renderOrder:l,store:c})=>{const A=Ae.useRegisterRuntimeObject(),h=Ae.useResolveRuntimeObject(),u=c.objects[s];if(!u||!u.enabled)return null;const g=I.getOrderedComponents(c,s).filter(d=>d.enabled),S=g.find(d=>d.type==="Transform"),E=g.find(d=>d.type==="ScreenTransform"),C=g.find(d=>d.type==="ScreenImage"),f=g.find(d=>d.type==="ScreenText"),m=g.find(d=>d.type==="ScreenShape"),b=g.find(d=>d.type==="MeshRenderer"),T=g.find(d=>d.type==="FaceMeshRenderer"),p=g.find(d=>d.type==="Light"),w=g.find(d=>d.type==="LookAt"),y=g.find(d=>d.type==="PinToMesh"),L=g.find(d=>d.type==="TrackingAnchor"),B=I.getSceneObjectChildren(c,s).map(d=>a.jsx(tt,{objectId:d.id,store:c,editorMode:t,renderOrder:l,renderLayer:o,onComponentChange:i,fallback:n,faceMeshMaterialOverrides:e,insideScreenSpaceUI:r||!!E},d.id));if(Q(S,"Transform")&&Q(p,"Light"))return a.jsx(j,{layer:o,children:a.jsxs("group",{ref:d=>A(s,d),children:[a.jsx($e,{settings:p.settings,transform:S.settings}),B]})});if(Q(S,"Transform")&&Q(b,"MeshRenderer")){const d=Q(w,"LookAt")?w.settings:I.createDefaultComponent("LookAt",s).settings,R=d.inheritChildren?B:null,N=d.inheritChildren?null:B;return a.jsx(j,{layer:o,children:a.jsx("group",{ref:G=>A(s,G),children:a.jsx(I.PinToMesh,{target:Q(y,"PinToMesh")?h(y.settings.targetObjectId):null,settings:Q(y,"PinToMesh")?y.settings:I.createDefaultComponent("PinToMesh",s).settings,children:a.jsxs(re.Transform3D,{value:S.settings,onChange:i?G=>i({...S,settings:G}):void 0,children:[a.jsxs(et,{target:Q(w,"LookAt")?h(w.settings.targetObjectId):null,settings:d,children:[a.jsx(K.MeshRenderer,{value:b.settings,renderOrder:l}),R]}),N]})})})})}if(Q(T,"FaceMeshRenderer"))return a.jsx(j,{layer:o,children:a.jsxs("group",{ref:d=>A(s,d),children:[a.jsx(re.FaceMeshRenderer,{value:T.settings,materialOverride:e==null?void 0:e[T.id],transform:Q(S,"Transform")?S.settings:void 0}),B]})});if(Q(S,"Transform")){if(Q(L,"TrackingAnchor")){const d=L.settings;return a.jsx(j,{layer:o,children:a.jsx(We.FaceTracker,{followFaceRoll:d.followFaceRoll,children:a.jsx(Xe.TrackingAnchor,{target:d.target,customAnchorPoint:d.customAnchorPoint,offset:[d.offset.x,d.offset.y,d.offset.z],smoothing:d.smoothing,children:a.jsx(re.Transform3D,{objectRef:R=>A(s,R),value:S.settings,children:B})})})})}return a.jsx(j,{layer:o,children:a.jsx("group",{children:a.jsx(re.Transform3D,{objectRef:d=>A(s,d),value:S.settings,onChange:i?d=>i({...S,settings:d}):void 0,children:B})})})}if(Q(E,"ScreenTransform")&&Q(C,"ScreenImage")){const d=I.mapScreenImageSettingsToProps({screenSpaceUI:{enabled:!0},screenImage:{...C.settings,screenTransform:E.settings}});return d.shouldRender?a.jsx(j,{layer:o,children:a.jsx("group",{renderOrder:l,children:a.jsxs(se,{inside:r,children:[a.jsx(Ze,{...d.props,renderOrder:l??d.props.renderOrder,onScreenTransformChange:i?R=>i({...E,settings:R}):void 0}),B]})})}):null}if(Q(E,"ScreenTransform")&&Q(f,"ScreenText")){const d=I.mapScreenTextSettingsToProps({screenSpaceUI:{enabled:!0},screenText:{...f.settings,screenTransform:E.settings}});return d.shouldRender?a.jsx(j,{layer:o,children:a.jsx("group",{renderOrder:l,children:a.jsxs(se,{inside:r,children:[a.jsx(_e,{...d.props,renderOrder:l??d.props.renderOrder,onScreenTransformChange:i?R=>i({...E,settings:R}):void 0}),B]})})}):null}return Q(E,"ScreenTransform")&&Q(m,"ScreenShape")?a.jsx(j,{layer:o,children:a.jsx("group",{ref:d=>A(s,d),renderOrder:l,children:a.jsxs(se,{inside:r,children:[a.jsx(I.ScreenShape,{name:u.name,settings:m.settings,transform:E.settings,renderOrder:l,onScreenTransformChange:i?d=>i({...E,settings:d}):void 0}),B]})})}):Q(E,"ScreenTransform")?Q(L,"TrackingAnchor")?a.jsx(j,{layer:o,children:a.jsx("group",{children:a.jsx(xn,{anchor:L.settings,settings:E.settings,renderOrder:l,insideScreenSpaceUI:r,objectRef:d=>A(s,d),children:B})})}):a.jsx(j,{layer:o,children:a.jsx("group",{children:a.jsx(In,{settings:E.settings,renderOrder:l,insideScreenSpaceUI:r,objectRef:d=>A(s,d),children:B})})}):t?a.jsxs(a.Fragment,{children:[B,n(`Object "${u.name}" has unsupported components: ${g.map(d=>d.type).join(", ")}`)]}):B.length?a.jsx(a.Fragment,{children:B}):null},Bn=({layers:t})=>{const{camera:e,gl:n,raycaster:r,scene:s}=U.useThree(),{session:i}=Ae.useXRContext(),o=v.useCallback(()=>I.renderSequentialPasses({renderer:n,scene:s,camera:e,layers:t}),[e,n,t,s]);return U.useFrame(o,1),v.useEffect(()=>{const l=r.layers.mask;return t.forEach(c=>r.layers.enable(c)),()=>{r.layers.mask=l}},[t,r]),v.useEffect(()=>(i._setR3FState({renderer:n,scene:s,camera:e,renderFrame:o}),()=>i._setR3FState({renderer:n,scene:s,camera:e})),[e,n,o,s,i]),null};exports.LightObject=$e;exports.LookAt=et;exports.RenderGroupLayer=j;exports.SceneObjectRenderer=tt;exports.ScreenImage=Ze;exports.ScreenSpaceUI=Ne;exports.ScreenText=_e;exports.SequentialRenderPasses=Bn;exports.TextLabel=qe;exports.clientToScreenPixels=dt;exports.computeContainScale=le;exports.mediaToScreenPixels=St;exports.normalizedToScreenPixels=ve;exports.screenPixelsToClient=gt;exports.screenPixelsToMedia=Et;exports.screenPixelsToNormalized=ut;exports.screenPixelsToScreenSpace=At;exports.screenPixelsToUnits=lt;exports.screenPointToRay=vt;exports.screenSpaceToScreenPixels=ht;exports.screenUnitsToPixels=ct;exports.trackerPointToScreenPixels=ft;exports.worldToScreenPixels=Ct;
@@ -1,111 +0,0 @@
1
- import { jsx as w } from "react/jsx-runtime";
2
- import { useFrame as A } from "@react-three/fiber";
3
- import { useRef as y, useEffect as k } from "react";
4
- import * as p from "three";
5
- import { R as H } from "./renderLayers-zrK2pv5O.js";
6
- import { a as v } from "./index-ByoNj0QP.js";
7
- const O = [
8
- "face.center",
9
- "face.forehead",
10
- "face.noseTip",
11
- "face.chin",
12
- "face.leftEyeOuter",
13
- "face.rightEyeOuter",
14
- "face.leftCheek",
15
- "face.rightCheek",
16
- "face.mouthCenter",
17
- "face.leftEye",
18
- "face.rightEye",
19
- "face.leftEarlobe",
20
- "face.rightEarlobe",
21
- "face.custom"
22
- ], N = [
23
- "hand.wrist",
24
- "hand.thumbTip",
25
- "hand.indexTip",
26
- "hand.middleTip",
27
- "hand.ringTip",
28
- "hand.pinkyTip",
29
- "hand.indexBase",
30
- "hand.middleBase",
31
- "hand.ringBase",
32
- "hand.pinkyBase"
33
- ], P = [
34
- "body.head",
35
- "body.neck",
36
- "body.leftShoulder",
37
- "body.rightShoulder",
38
- "body.leftElbow",
39
- "body.rightElbow",
40
- "body.leftWrist",
41
- "body.rightWrist",
42
- "body.leftHip",
43
- "body.rightHip",
44
- "body.leftKnee",
45
- "body.rightKnee",
46
- "body.leftAnkle",
47
- "body.rightAnkle"
48
- ], z = (e) => e.startsWith("face.") ? "face" : e.startsWith("hand.") ? "hand" : e.startsWith("body.") ? "body" : null, q = {
49
- target: "face.center",
50
- customAnchorPoint: { x: 0, y: 0, z: 0 },
51
- offset: { x: 0, y: 0, z: 0 },
52
- smoothing: 0,
53
- followFaceRoll: !1
54
- }, m = (e, r, n) => r + n * (e - r), E = (e, r) => 1 / (1 + 1 / (2 * Math.PI * e) / r), B = (e, r, n, i, T, o) => {
55
- if (!e.initialized || n <= 0)
56
- return e.pos.copy(r), e.prevRaw.copy(r), e.dxHat.set(0, 0, 0), e.initialized = !0, e;
57
- const a = E(o, n), l = ["x", "y", "z"];
58
- for (const t of l) {
59
- const f = (r[t] - e.prevRaw[t]) / n, c = m(f, e.dxHat[t], a);
60
- e.dxHat[t] = c;
61
- const u = i + T * Math.abs(c), d = E(u, n);
62
- e.pos[t] = m(r[t], e.pos[t], d), e.prevRaw[t] = r[t];
63
- }
64
- return e;
65
- }, D = (e, r, n, i) => B(e, r, n, i * 0.1, 0.5, 1), G = ({
66
- target: e,
67
- customAnchorPoint: r,
68
- offset: n,
69
- smoothing: i = 0,
70
- children: T
71
- }) => {
72
- const o = v(), a = y(null), l = y(!1), t = y(new p.Vector3()), f = y({
73
- pos: new p.Vector3(),
74
- prevRaw: new p.Vector3(),
75
- dxHat: new p.Vector3(),
76
- initialized: !1
77
- }), c = z(e), u = o !== null && c !== null && o.type !== c, d = o === null, b = d || u || c === null;
78
- return k(() => {
79
- d ? console.warn(
80
- `[TrackingAnchor] target "${e}" requires a FaceTracker / HandTracker / BodyTracker ancestor; rendering null.`
81
- ) : u ? console.warn(
82
- `[TrackingAnchor] target "${e}" namespace does not match parent tracker type "${o == null ? void 0 : o.type}"; rendering null.`
83
- ) : c === null && console.warn(
84
- `[TrackingAnchor] target "${e}" is not a recognized face/hand/body landmark; rendering null.`
85
- );
86
- }, [e, c, d, u, o == null ? void 0 : o.type]), A((F, R) => {
87
- if (b || !a.current || !o) return;
88
- const h = o.resolveLandmark(e, r);
89
- if (!h) {
90
- a.current.visible = !1, l.current = !1, f.current.initialized = !1;
91
- return;
92
- }
93
- a.current.visible = !0;
94
- const s = t.current.copy(h.position), g = a.current.parent;
95
- if (g) {
96
- g.updateMatrixWorld();
97
- const x = new p.Matrix4().copy(g.matrixWorld).invert();
98
- s.applyMatrix4(x);
99
- }
100
- n && (s.x += n[0], s.y += n[1], s.z += n[2]), i > 0 ? (D(f.current, s, l.current ? R : 0, i), a.current.position.copy(f.current.pos)) : a.current.position.copy(s), l.current = !0, h.quaternion && a.current.quaternion.copy(h.quaternion);
101
- }), b ? null : /* @__PURE__ */ w("group", { ref: a, renderOrder: H.TRACKED, children: T });
102
- };
103
- export {
104
- P as B,
105
- q as D,
106
- O as F,
107
- N as H,
108
- G as T,
109
- z as g,
110
- D as s
111
- };
@@ -1,214 +0,0 @@
1
- import { createContext as A, useContext as _, Suspense as B, useRef as T, useMemo as v, useEffect as R } from "react";
2
- import { jsx as p, jsxs as L } from "react/jsx-runtime";
3
- import { useGLTF as P } from "@react-three/drei";
4
- import { useFrame as U } from "@react-three/fiber";
5
- import { AdditiveBlending as W, SubtractiveBlending as q, MultiplyBlending as K, NoBlending as N, NormalBlending as G, NeverDepth as F, LessDepth as I, EqualDepth as z, GreaterDepth as H, NotEqualDepth as Y, GreaterEqualDepth as V, AlwaysDepth as $, LessEqualDepth as J, BackSide as Q, DoubleSide as X, FrontSide as Z, AnimationMixer as j, LoopRepeat as ee } from "three";
6
- import { M as re } from "./index-ByoNj0QP.js";
7
- const te = A(null), ke = () => {
8
- const e = _(te);
9
- if (!e)
10
- throw new Error("useScreenSpace must be used within ScreenSpaceUI");
11
- return e;
12
- }, oe = A(null), Re = () => _(oe) ?? 1;
13
- function ne(e) {
14
- const r = /* @__PURE__ */ new Map(), t = /* @__PURE__ */ new Map(), i = e.clone();
15
- return S(e, i, function(a, n) {
16
- r.set(n, a), t.set(a, n);
17
- }), i.traverse(function(a) {
18
- if (!a.isSkinnedMesh) return;
19
- const n = a, u = r.get(a), c = u.skeleton.bones;
20
- n.skeleton = u.skeleton.clone(), n.bindMatrix.copy(u.bindMatrix), n.skeleton.bones = c.map(function(f) {
21
- return t.get(f);
22
- }), n.bind(n.skeleton, n.bindMatrix);
23
- }), i;
24
- }
25
- function S(e, r, t) {
26
- t(e, r);
27
- for (let i = 0; i < e.children.length; i++)
28
- S(e.children[i], r.children[i], t);
29
- }
30
- const ye = {
31
- enabled: !0,
32
- mesh: "cube",
33
- material: {
34
- type: "standard",
35
- color: "#ffffff",
36
- opacity: 1,
37
- wireframe: !1,
38
- roughness: 0.42,
39
- metalness: 0.08
40
- },
41
- shadowMode: "off",
42
- visible: !0
43
- }, k = {
44
- depthTest: !0,
45
- depthWrite: !0,
46
- depthFunc: "lessEqual",
47
- colorWrite: !0,
48
- colorMask: {
49
- r: !0,
50
- g: !0,
51
- b: !0,
52
- a: !0
53
- },
54
- cullMode: "back",
55
- blendMode: "normal",
56
- polygonOffset: {
57
- enabled: !1,
58
- factor: 0,
59
- units: 0
60
- }
61
- }, h = (e) => ({
62
- ...k,
63
- ...e,
64
- colorMask: {
65
- ...k.colorMask,
66
- ...e == null ? void 0 : e.colorMask
67
- },
68
- polygonOffset: {
69
- ...k.polygonOffset,
70
- ...e == null ? void 0 : e.polygonOffset
71
- }
72
- }), se = (e) => e === "never" ? F : e === "less" ? I : e === "equal" ? z : e === "greater" ? H : e === "notEqual" ? Y : e === "greaterEqual" ? V : e === "always" ? $ : J, ae = (e) => e === "front" ? Q : e === "off" ? X : Z, ie = (e) => e === "additive" ? W : e === "subtractive" ? q : e === "multiply" ? K : e === "none" ? N : G, O = (e) => {
73
- const r = h(e), t = r.colorWrite && (r.colorMask.r || r.colorMask.g || r.colorMask.b || r.colorMask.a);
74
- return {
75
- depthTest: r.depthTest,
76
- depthWrite: r.depthWrite,
77
- depthFunc: se(r.depthFunc),
78
- colorWrite: t,
79
- side: ae(r.cullMode),
80
- blending: ie(r.blendMode),
81
- polygonOffset: r.polygonOffset.enabled,
82
- polygonOffsetFactor: r.polygonOffset.factor,
83
- polygonOffsetUnits: r.polygonOffset.units
84
- };
85
- }, w = (e, r) => {
86
- const t = h(r);
87
- return e < 1 || t.blendMode !== "normal" && t.blendMode !== "none";
88
- }, D = (e) => e.colorWrite && (!e.colorMask.r || !e.colorMask.g || !e.colorMask.b || !e.colorMask.a), d = "__vincenttPreviousColorMask", y = "__vincenttColorMaskBaseBefore", E = "__vincenttColorMaskBaseAfter", ce = (e, r) => {
89
- const t = e.userData, i = t[y] ?? e.onBeforeRender.bind(e), a = t[E] ?? e.onAfterRender.bind(e);
90
- if (t[y] = i, t[E] = a, !D(r)) {
91
- e.onBeforeRender = i, e.onAfterRender = a;
92
- return;
93
- }
94
- e.onBeforeRender = (n, u, c, f, o, l) => {
95
- i(n, u, c, f, o, l);
96
- const s = n.getContext();
97
- e.userData[d] = s.getParameter(s.COLOR_WRITEMASK), s.colorMask(
98
- r.colorMask.r,
99
- r.colorMask.g,
100
- r.colorMask.b,
101
- r.colorMask.a
102
- );
103
- }, e.onAfterRender = (n, u, c, f, o, l) => {
104
- const s = e.userData[d];
105
- s && (n.getContext().colorMask(...s), delete e.userData[d]), a(n, u, c, f, o, l);
106
- };
107
- }, C = (e) => ({
108
- castShadow: e === "cast" || e === "castReceive",
109
- receiveShadow: e === "receive" || e === "castReceive"
110
- }), le = ({ mesh: e }) => e === "sphere" ? /* @__PURE__ */ p("sphereGeometry", { args: [0.85, 48, 32] }) : e === "plane" ? /* @__PURE__ */ p("planeGeometry", { args: [1.6, 1.6] }) : /* @__PURE__ */ p("boxGeometry", { args: [1.4, 1.4, 1.4] }), ue = ({
111
- url: e,
112
- nodeName: r,
113
- settings: t,
114
- renderOrder: i
115
- }) => {
116
- const { scene: a, animations: n } = P(e), u = T(null), c = v(() => {
117
- const o = n.length ? ne(a) : a.clone(!0);
118
- return o.traverse((l) => {
119
- const s = l;
120
- !s.isMesh || !s.material || (s.material = Array.isArray(s.material) ? s.material.map((g) => g.clone()) : s.material.clone());
121
- }), o;
122
- }, [a, n.length]);
123
- R(() => {
124
- const o = C(t.shadowMode), l = Math.min(1, Math.max(0, t.material.opacity)), s = O(t.material.renderState), g = w(l, t.material.renderState);
125
- c.traverse((x) => {
126
- const m = x;
127
- if (!m.isMesh || !m.material) return;
128
- m.castShadow = o.castShadow, m.receiveShadow = o.receiveShadow, (Array.isArray(m.material) ? m.material : [m.material]).forEach((M) => {
129
- if (!M) return;
130
- const b = M;
131
- b.wireframe = t.material.wireframe, M.opacity = l, M.transparent = g, Object.assign(M, s), M.needsUpdate = !0;
132
- }), ce(m, h(t.material.renderState));
133
- });
134
- }, [
135
- c,
136
- t.material.opacity,
137
- t.material.renderState,
138
- t.material.wireframe,
139
- t.shadowMode
140
- ]);
141
- const f = r ? c.getObjectByName(r) : c;
142
- return R(() => {
143
- if (!n.length) return;
144
- const o = new j(c);
145
- return n.filter(
146
- (s) => t.assetAnimation === "all" || s.name === t.assetAnimation
147
- ).forEach((s) => o.clipAction(s).setLoop(ee, 1 / 0).play()), u.current = o, () => {
148
- o.stopAllAction(), o.uncacheRoot(c), u.current = null;
149
- };
150
- }, [n, c, t.assetAnimation]), U((o, l) => {
151
- var s;
152
- return (s = u.current) == null ? void 0 : s.update(l);
153
- }), /* @__PURE__ */ p("group", { renderOrder: i, children: /* @__PURE__ */ p("primitive", { object: f ?? c }) });
154
- }, Ee = ({ renderOrder: e, value: r }) => {
155
- if (!r.enabled || !r.visible) return null;
156
- if (r.assetUrl)
157
- return /* @__PURE__ */ p(B, { fallback: null, children: /* @__PURE__ */ p(
158
- ue,
159
- {
160
- url: r.assetUrl,
161
- nodeName: r.assetNodeName,
162
- settings: r,
163
- renderOrder: e
164
- }
165
- ) });
166
- const t = Math.min(1, Math.max(0, r.material.opacity)), i = {
167
- color: r.material.color,
168
- transparent: w(t, r.material.renderState),
169
- opacity: t,
170
- wireframe: r.material.wireframe,
171
- ...O(r.material.renderState)
172
- };
173
- return /* @__PURE__ */ L(
174
- "mesh",
175
- {
176
- ...C(r.shadowMode),
177
- onBeforeRender: (a, n, u, c, f) => {
178
- const o = h(r.material.renderState);
179
- if (!D(o)) return;
180
- const l = a.getContext();
181
- f.userData[d] = l.getParameter(
182
- l.COLOR_WRITEMASK
183
- ), l.colorMask(
184
- o.colorMask.r,
185
- o.colorMask.g,
186
- o.colorMask.b,
187
- o.colorMask.a
188
- );
189
- },
190
- onAfterRender: (a, n, u, c, f) => {
191
- const o = f.userData[d];
192
- o && (a.getContext().colorMask(...o), delete f.userData[d]);
193
- },
194
- renderOrder: e,
195
- children: [
196
- /* @__PURE__ */ p(le, { mesh: r.mesh }),
197
- /* @__PURE__ */ p(re, { settings: r.material, materialProps: i })
198
- ]
199
- }
200
- );
201
- };
202
- export {
203
- ye as D,
204
- Ee as M,
205
- oe as S,
206
- Re as a,
207
- k as b,
208
- se as c,
209
- ae as d,
210
- te as e,
211
- ie as g,
212
- h as n,
213
- ke as u
214
- };
@@ -1 +0,0 @@
1
- "use strict";var H=Object.defineProperty;var z=(t,e,r)=>e in t?H(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var i=(t,e,r)=>z(t,typeof e!="symbol"?e+"":e,r);const m=require("react/jsx-runtime"),n=require("react"),O=require("./selectors-CZLKT2Iv.cjs"),$=require("./index-DCiMbxC3.cjs"),B=require("@react-three/fiber");require("./hasFullUnitUVBounds-p1Dl0ejX.cjs");require("./renderLayers-lDtL0_43.cjs");const K=({children:t,defaultCollapsed:e=!0,title:r,width:s=320})=>{const[o,a]=n.useState(e);return o?m.jsx("button",{type:"button",onClick:()=>a(!1),"aria-label":`Open ${r}`,title:`Open ${r}`,style:{position:"absolute",right:16,bottom:16,zIndex:40,width:40,height:40,border:"1px solid rgba(255,255,255,0.12)",borderRadius:999,background:"rgba(15, 23, 42, 0.72)",color:"#e5eefb",boxShadow:"0 12px 30px rgba(0,0,0,0.18)",backdropFilter:"blur(10px)",cursor:"pointer",pointerEvents:"auto"},children:"◫"}):m.jsxs("div",{style:{position:"absolute",right:16,bottom:16,zIndex:40,width:s,maxWidth:"calc(100vw - 32px)",padding:14,borderRadius:14,boxShadow:"0 12px 30px rgba(0,0,0,0.26)",backdropFilter:"blur(10px)",pointerEvents:"auto",background:"rgba(15, 23, 42, 0.78)",border:"1px solid rgba(255,255,255,0.12)",color:"#e5eefb"},children:[m.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12,marginBottom:10},children:[m.jsx("div",{style:{fontSize:13,fontWeight:700},children:r}),m.jsx("button",{type:"button",onClick:()=>a(!0),"aria-label":`Close ${r}`,title:`Close ${r}`,style:{width:32,height:32,border:"1px solid rgba(255,255,255,0.12)",borderRadius:999,background:"rgba(255,255,255,0.04)",color:"#e5eefb",cursor:"pointer",flex:"0 0 auto"},children:"×"})]}),t]})};class V{constructor(){i(this,"frameTimestamps",[]);i(this,"lastUpdateTime",0);i(this,"currentFPS",0);i(this,"updateInterval",500);this.lastUpdateTime=performance.now()}trackFrame(){const e=performance.now();this.frameTimestamps.push(e);const r=e-this.updateInterval;this.frameTimestamps=this.frameTimestamps.filter(s=>s>r),e-this.lastUpdateTime>=this.updateInterval&&(this.currentFPS=this.frameTimestamps.length*2,this.lastUpdateTime=e)}getFPS(){return this.currentFPS}reset(){this.frameTimestamps=[],this.lastUpdateTime=performance.now(),this.currentFPS=0}}function W(t,e=1){return t.toFixed(e)}function x(t){return t/(1024*1024)}function X(t,e){return e===0?0:t/e*100}class J{constructor(e=1e3){i(this,"intervalId",null);i(this,"memoryUsage",null);i(this,"updateInterval");i(this,"isSupported",!1);this.updateInterval=e,this.checkSupport()}checkSupport(){const e=performance;this.isSupported="memory"in e&&e.memory!==void 0,this.isSupported||console.warn("[MemoryTracker] performance.memory not available (Chrome-only API)")}start(){if(this.intervalId!==null){console.warn("[MemoryTracker] Already running");return}if(!this.isSupported){this.memoryUsage=null;return}this.updateMemory(),this.intervalId=window.setInterval(()=>{this.updateMemory()},this.updateInterval)}stop(){this.intervalId!==null&&(clearInterval(this.intervalId),this.intervalId=null)}updateMemory(){if(!this.isSupported)return;const e=performance;if(!e.memory)return;const r=e.memory.usedJSHeapSize,s=e.memory.jsHeapSizeLimit;this.memoryUsage={used:x(r),total:x(s),percentage:X(r,s)}}getMemoryUsage(){return this.memoryUsage}isMemorySupported(){return this.isSupported}}class G{constructor(){i(this,"resolution","N/A");i(this,"videoElement",null);i(this,"metadataListener",null)}start(e){if(!e){this.resolution="N/A";return}this.videoElement=e,e.videoWidth>0&&e.videoHeight>0&&this.updateResolution(),this.metadataListener=()=>{this.updateResolution()},e.addEventListener("loadedmetadata",this.metadataListener)}stop(){this.videoElement&&this.metadataListener&&(this.videoElement.removeEventListener("loadedmetadata",this.metadataListener),this.metadataListener=null),this.videoElement=null,this.resolution="N/A"}updateResolution(){if(!this.videoElement){this.resolution="N/A";return}const e=this.videoElement.videoWidth,r=this.videoElement.videoHeight;e>0&&r>0?this.resolution=`${e}x${r}`:this.resolution="N/A"}getResolution(){return this.videoElement&&this.updateResolution(),this.resolution}}class Q{constructor(e={}){i(this,"options");i(this,"isRunning",!1);i(this,"metrics",{cameraFPS:0,detectionTime:0,modelPerformance:[],renderTime:0,effectiveFPS:0,memory:null,resolution:"N/A"});i(this,"cameraFPSTracker");i(this,"memoryTracker");i(this,"resolutionTracker");i(this,"frameTimes",[]);i(this,"lastEffectiveFPSUpdate",0);this.options={enableMemoryTracking:e.enableMemoryTracking??!0,memoryUpdateInterval:e.memoryUpdateInterval??1e3},this.cameraFPSTracker=new V,this.memoryTracker=new J(this.options.memoryUpdateInterval),this.resolutionTracker=new G}start(e){if(this.isRunning){console.warn("[MetricsCollector] Already running");return}this.isRunning=!0,this.lastEffectiveFPSUpdate=performance.now(),this.options.enableMemoryTracking&&this.memoryTracker.start(),e&&this.resolutionTracker.start(e),this.setupCameraFPSHook(),console.info("[MetricsCollector] Started")}stop(){this.isRunning&&(this.isRunning=!1,this.memoryTracker.stop(),this.resolutionTracker.stop(),this.cameraFPSTracker.reset(),this.cleanupCameraFPSHook(),console.info("[MetricsCollector] Stopped"))}setupCameraFPSHook(){const e=window;e.__xr_debugger_metrics||(e.__xr_debugger_metrics={trackCameraFrame:()=>{this.cameraFPSTracker.trackFrame(),this.metrics.cameraFPS=this.cameraFPSTracker.getFPS()}})}cleanupCameraFPSHook(){const e=window;e.__xr_debugger_metrics&&delete e.__xr_debugger_metrics}getMetrics(){return this.updateMetricsFromTrackers(),{...this.metrics}}updateMetricsFromTrackers(){this.isRunning&&(this.metrics.memory=this.memoryTracker.getMemoryUsage(),this.metrics.resolution=this.resolutionTracker.getResolution(),this.updateEffectiveFPS())}updateRenderTime(e){this.metrics.renderTime=e,this.updateEffectiveFPS()}async updateDetectionTime(e){if(!e||!this.isRunning){this.metrics.detectionTime=0,this.metrics.modelPerformance=[];return}try{const r=Object.values(e).filter(Boolean);if(r.length===0){this.metrics.detectionTime=0,this.metrics.modelPerformance=[];return}const s=r.map(c=>c&&typeof c.getPerformanceData=="function"?c.getPerformanceData():Promise.resolve({name:"unknown",processingTime:0})),o=await Promise.all(s);this.metrics.modelPerformance=o.map(c=>({name:c.name,processingTime:c.processingTime||0}));const a=o.reduce((c,p)=>c+(p.processingTime||0),0);this.metrics.detectionTime=a,this.updateEffectiveFPS()}catch(r){console.warn("[MetricsCollector] Error updating detection time:",r),this.metrics.detectionTime=0,this.metrics.modelPerformance=[]}}updateEffectiveFPS(){const e=performance.now(),r=this.metrics.detectionTime+this.metrics.renderTime;if(this.frameTimes.push(r),e-this.lastEffectiveFPSUpdate>=1e3){if(this.frameTimes.length>0){const s=this.frameTimes.reduce((o,a)=>o+a,0)/this.frameTimes.length;this.metrics.effectiveFPS=s>0?1e3/s:0}this.frameTimes=[],this.lastEffectiveFPSUpdate=e}}isActive(){return this.isRunning}}const Y=n.lazy(async()=>({default:(await Promise.resolve().then(()=>require("./DebuggerUI-B6bP6P9r.cjs"))).DebuggerUI})),k=n.createContext(null);function Z({children:t,keyboardShortcut:e="ctrl+shift+d",initialEnabled:r=!1,position:s="top-left"}){const[o,a]=n.useState(r),[c,p]=n.useState(!1),[y,_]=n.useState({cameraFPS:0,detectionTime:0,modelPerformance:[],renderTime:0,effectiveFPS:0,memory:null,resolution:"N/A"}),f=n.useRef(null),u=n.useRef(null),g=n.useRef(!1),{session:b}=$.useXRContext(),T=O.useXRReady();n.useEffect(()=>(f.current||(f.current=new Q,window.__xr_metrics_collector=f.current),()=>{f.current&&f.current.stop(),u.current&&clearInterval(u.current),window.__xr_metrics_collector&&delete window.__xr_metrics_collector}),[]),n.useEffect(()=>{const l=f.current;if(l){if(o&&T){const d=b._getVideoElement();l.start(d),u.current=window.setInterval(async()=>{if(!g.current){g.current=!0;try{const S=Object.fromEntries(b.store.getSnapshot().pipeline);await l.updateDetectionTime(S),_(l.getMetrics())}finally{g.current=!1}}},100)}else l.stop(),u.current&&(clearInterval(u.current),u.current=null),g.current=!1;return()=>{u.current&&(clearInterval(u.current),u.current=null)}}},[o,T,b]),n.useEffect(()=>{const l=d=>{const h=e.toLowerCase().split("+"),D=h.includes("ctrl")||h.includes("control"),I=h.includes("shift"),M=h.includes("alt"),U=h[h.length-1],j=D?d.ctrlKey||d.metaKey:!0,L=I?d.shiftKey:!0,A=M?d.altKey:!0,q=d.key.toLowerCase()===U;j&&L&&A&&q&&(d.preventDefault(),a(N=>!N))};return window.addEventListener("keydown",l),()=>{window.removeEventListener("keydown",l)}},[e]);const C=n.useCallback(()=>{a(l=>!l)},[]),R=n.useCallback(()=>{a(!0)},[]),w=n.useCallback(()=>{a(!1)},[]),E={state:{enabled:o,collapsed:c,metrics:y},toggle:C,setCollapsed:p,enable:R,disable:w};return m.jsxs(k.Provider,{value:E,children:[t,o&&m.jsx(n.Suspense,{fallback:null,children:m.jsx(Y,{metrics:y,collapsed:c,onCollapse:p,onClose:w,position:s,keyboardShortcut:e})})]})}function ee(){const t=n.useContext(k);if(!t)throw new Error("useDebuggerContext must be used within a DebuggerProvider");return t}function te({onUpdate:t}){const e=n.useRef(0),r=n.useRef(!0);return B.useFrame(()=>{if(r.current)r.current=!1;else{const o=performance.now()-e.current;t(o)}e.current=performance.now()},-1e3),null}function P(){const t=ee();return{metrics:t.state.metrics,enabled:t.state.enabled,collapsed:t.state.collapsed,toggle:t.toggle,setCollapsed:t.setCollapsed,enable:t.enable,disable:t.disable}}function re(){const{enabled:t}=P(),e=r=>{const s=window;s.__xr_metrics_collector&&s.__xr_metrics_collector.updateRenderTime(r)};return t?m.jsx(te,{onUpdate:e}):null}const v=600;function F(){if(typeof window>"u")return;const t=window;return t.__xrCalibrationDebugState||(t.__xrCalibrationDebugState={events:[]}),t.__xrCalibrationDebugState}function se(t,e,r){const s=F();s&&(s.events.push({source:t,label:e,payload:r,ts:performance.now()}),s.events.length>v&&s.events.splice(0,s.events.length-v))}function ie(t=v){const e=F();return e?e.events.slice(Math.max(0,e.events.length-t)):[]}exports.DebuggerOverlay=re;exports.DebuggerProvider=Z;exports.XRDebugView=K;exports.formatNumber=W;exports.readCalibrationDebugEvents=ie;exports.recordCalibrationDebugEvent=se;exports.useDebugger=P;
@@ -1 +0,0 @@
1
- "use strict";const R={BACKGROUND:-1e3,WORLD:0,TRACKED:100,SCREEN_UI:1e3};exports.RENDER_LAYERS=R;
@@ -1,13 +0,0 @@
1
- const R = {
2
- /** Camera background and segmentation mask. `depthTest` disabled. */
3
- BACKGROUND: -1e3,
4
- /** Free world-space content. `depthTest` enabled. */
5
- WORLD: 0,
6
- /** Descendants of `FaceTracker` / `HandTracker` / `BodyTracker`. `depthTest` enabled. */
7
- TRACKED: 100,
8
- /** Descendants of `ScreenSpaceUI`. `depthTest` disabled. */
9
- SCREEN_UI: 1e3
10
- };
11
- export {
12
- R
13
- };