@vincentt-xr/sdk 2.0.0-alpha.8 → 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 (517) hide show
  1. package/GROUNDING.md +4643 -170
  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/gltfLoader.d.ts +16 -0
  18. package/dist/assets/loaders.d.ts +16 -1
  19. package/dist/body-pose/index.d.ts +521 -0
  20. package/dist/body-trigger/__fixtures__/syntheticBody.d.ts +83 -0
  21. package/dist/body-trigger/frame.d.ts +88 -0
  22. package/dist/body-trigger/index.d.ts +6 -0
  23. package/dist/body-trigger/moves.d.ts +235 -0
  24. package/dist/body-trigger/trigger.d.ts +75 -0
  25. package/dist/calibration/calibration.d.ts +11 -6
  26. package/dist/canonicalFace-BHwyCx1c.js +9 -0
  27. package/dist/canonicalFace-C83I225R.cjs +1 -0
  28. package/dist/components/BodyInstruction/BodyPoseHint.d.ts +63 -0
  29. package/dist/components/BodyInstruction/index.d.ts +69 -0
  30. package/dist/components/BodyInstruction/useBodyPose.d.ts +23 -0
  31. package/dist/components/BodyTracker/index.d.ts +10 -2
  32. package/dist/components/BodyTrigger/index.d.ts +49 -0
  33. package/dist/components/Debugger/DebuggerProvider.d.ts +14 -1
  34. package/dist/components/Debugger/DebuggerUI.d.ts +3 -1
  35. package/dist/components/FaceAtlas/FaceAtlasLayer.d.ts +114 -0
  36. package/dist/components/FaceAtlas/MadeUpCamera.d.ts +80 -0
  37. package/dist/components/FaceAtlas/constants.d.ts +8 -0
  38. package/dist/components/FaceAtlas/index.d.ts +7 -0
  39. package/dist/components/FaceAtlas/useFaceAtlasSurface.d.ts +84 -0
  40. package/dist/components/FaceAtlas/useFaceSkin.d.ts +84 -0
  41. package/dist/components/FaceCharacter/ExternalFaceMesh.d.ts +109 -0
  42. package/dist/components/FaceCharacter/FaceExpressionController.d.ts +53 -0
  43. package/dist/components/FaceCharacter/FaceMorph.d.ts +71 -0
  44. package/dist/components/FaceCharacter/FacePiercing.d.ts +65 -0
  45. package/dist/components/FaceCharacter/FaceReprojection.d.ts +85 -0
  46. package/dist/components/FaceCharacter/FaceRig.d.ts +38 -0
  47. package/dist/components/FaceCharacter/FaceSurface.d.ts +49 -0
  48. package/dist/components/FaceCharacter/FaceSurfaceOccluder.d.ts +39 -0
  49. package/dist/components/FaceCharacter/PinToFaceMesh.d.ts +68 -0
  50. package/dist/components/FaceCharacter/index.d.ts +18 -0
  51. package/dist/components/FaceCharacter/useFaceReprojector.d.ts +10 -0
  52. package/dist/components/FaceInset/FaceInset.d.ts +68 -0
  53. package/dist/components/FaceInset/frame.d.ts +94 -0
  54. package/dist/components/FaceInset/index.d.ts +6 -0
  55. package/dist/components/FaceInset/material.d.ts +40 -0
  56. package/dist/components/FaceInset/useFaceInsetTexture.d.ts +37 -0
  57. package/dist/components/FaceInstruction/FaceExpressionHint.d.ts +43 -0
  58. package/dist/components/FaceInstruction/index.d.ts +56 -0
  59. package/dist/components/FaceInstruction/useFaceExpression.d.ts +20 -0
  60. package/dist/components/FaceLiquify/FaceLiquify.d.ts +49 -0
  61. package/dist/components/FaceLiquify/debug.d.ts +37 -0
  62. package/dist/components/FaceLiquify/frame.d.ts +55 -0
  63. package/dist/components/FaceLiquify/index.d.ts +10 -0
  64. package/dist/components/FaceLiquify/material.d.ts +39 -0
  65. package/dist/components/FaceLiquify/pass.d.ts +49 -0
  66. package/dist/components/FaceLiquify/presence.d.ts +25 -0
  67. package/dist/components/FaceLiquify/presets.d.ts +82 -0
  68. package/dist/components/FaceLiquify/selfTest.d.ts +66 -0
  69. package/dist/components/FaceLiquify/target.d.ts +85 -0
  70. package/dist/components/FaceLiquify/warp.d.ts +72 -0
  71. package/dist/components/FaceMesh/canonical/CanonicalFaceMeshRenderer.d.ts +5 -3
  72. package/dist/components/FaceMesh/canonical/geometryGroups.d.ts +21 -0
  73. package/dist/components/FaceMesh/canonical/parseCanonicalFaceModel.d.ts +9 -0
  74. package/dist/components/FaceMesh/index.d.ts +1 -1
  75. package/dist/components/FaceRetouch/Background.d.ts +3 -1
  76. package/dist/components/FaceRetouch/FaceRetouch.d.ts +5 -0
  77. package/dist/components/FaceRetouch/renderState.d.ts +19 -0
  78. package/dist/components/FaceSwap/FaceMirror.d.ts +46 -0
  79. package/dist/components/FaceSwap/FaceSwap.d.ts +58 -0
  80. package/dist/components/FaceSwap/FaceTextureLayer.d.ts +72 -0
  81. package/dist/components/FaceSwap/faceSwapPlan.d.ts +91 -0
  82. package/dist/components/FaceSwap/index.d.ts +13 -0
  83. package/dist/components/FaceSwap/settings.d.ts +300 -0
  84. package/dist/components/FaceSwap/useFaceTexture.d.ts +35 -0
  85. package/dist/components/FaceSwap/useLiveFace.d.ts +38 -0
  86. package/dist/components/FaceSwap/useLiveFaceTexture.d.ts +31 -0
  87. package/dist/components/FaceWarp3D/FaceWarp3D.d.ts +50 -0
  88. package/dist/components/FaceWarp3D/index.d.ts +2 -3
  89. package/dist/components/Faceless/Faceless.d.ts +51 -0
  90. package/dist/components/Faceless/index.d.ts +2 -0
  91. package/dist/components/HairLock/HairLock.d.ts +39 -0
  92. package/dist/components/HairLock/index.d.ts +2 -0
  93. package/dist/components/HairLock/lockGeometry.d.ts +15 -0
  94. package/dist/components/HandCutout/index.d.ts +35 -0
  95. package/dist/components/HandInstruction/HandGestureHint.d.ts +70 -0
  96. package/dist/components/HandInstruction/index.d.ts +74 -0
  97. package/dist/components/HandInstruction/useHandGesture.d.ts +22 -0
  98. package/dist/components/HandRig/ForearmOccluder.d.ts +29 -0
  99. package/dist/components/HandRig/HandAttachment.d.ts +34 -0
  100. package/dist/components/HandRig/HandOccluder.d.ts +55 -0
  101. package/dist/components/HandRig/HandTattoo.d.ts +61 -0
  102. package/dist/components/HandRig/WristAttachment.d.ts +34 -0
  103. package/dist/components/HandRig/index.d.ts +101 -0
  104. package/dist/components/HandRig/useArmMask.d.ts +29 -0
  105. package/dist/components/HandRig/wristSolve.d.ts +69 -0
  106. package/dist/components/HandTouch/HandTouch.d.ts +62 -0
  107. package/dist/components/HandTouch/Touchable.d.ts +36 -0
  108. package/dist/components/HandTouch/index.d.ts +2 -0
  109. package/dist/components/HeadBinding/index.d.ts +14 -0
  110. package/dist/components/HeadOccluder/CanonicalHeadFrame.d.ts +22 -0
  111. package/dist/components/HeadOccluder/Earrings.d.ts +55 -0
  112. package/dist/components/HeadOccluder/HeadAttachment.d.ts +38 -0
  113. package/dist/components/HeadOccluder/NeckOccluder.d.ts +64 -0
  114. package/dist/components/HeadOccluder/earringPlacement.d.ts +31 -0
  115. package/dist/components/HeadOccluder/headAttachmentPoints.d.ts +69 -0
  116. package/dist/components/HeadOccluder/index.d.ts +57 -3
  117. package/dist/components/HeadOccluder/useCanonicalHeadFit.d.ts +36 -0
  118. package/dist/components/HeadOccluder/useLandmarkPoseFit.d.ts +80 -0
  119. package/dist/components/Instruction/HintStage.d.ts +29 -0
  120. package/dist/components/Instruction/InstructionCue.d.ts +126 -0
  121. package/dist/components/Instruction/gestureHold.d.ts +20 -0
  122. package/dist/components/Instruction/ghost.d.ts +129 -0
  123. package/dist/components/Instruction/hintBlend.d.ts +19 -0
  124. package/dist/components/Instruction/hintLook.d.ts +81 -0
  125. package/dist/components/Instruction/hintLoop.d.ts +36 -0
  126. package/dist/components/Instruction/index.d.ts +41 -0
  127. package/dist/components/Instruction/useGhostModel.d.ts +33 -0
  128. package/dist/components/Instruction/useInstructionHold.d.ts +72 -0
  129. package/dist/components/LipEffect/LipEffect.d.ts +22 -2
  130. package/dist/components/LipEffect/LipEffectMaterial.d.ts +62 -10
  131. package/dist/components/LipEffect/LipEffects.d.ts +5 -2
  132. package/dist/components/LipEffect/defaults.d.ts +21 -2
  133. package/dist/components/LipEffect/index.d.ts +1 -1
  134. package/dist/components/LipEffect/lipShading.d.ts +73 -0
  135. package/dist/components/LipEffect/settings.d.ts +117 -13
  136. package/dist/components/LipEffect/shader.d.ts +39 -0
  137. package/dist/components/LipEffect/types.d.ts +82 -10
  138. package/dist/components/LipEffect/useLipDesignTextures.d.ts +6 -0
  139. package/dist/components/LipEffect/uvGuide.d.ts +31 -16
  140. package/dist/components/Makeup/Blush.d.ts +18 -0
  141. package/dist/components/Makeup/Brows.d.ts +20 -0
  142. package/dist/components/Makeup/Contour.d.ts +17 -0
  143. package/dist/components/Makeup/Eyeliner.d.ts +20 -0
  144. package/dist/components/Makeup/Eyeshadow.d.ts +20 -0
  145. package/dist/components/Makeup/Highlighter.d.ts +18 -0
  146. package/dist/components/Makeup/MakeupDesign.d.ts +37 -0
  147. package/dist/components/Makeup/MakeupRegion.d.ts +132 -0
  148. package/dist/components/Makeup/constants.d.ts +44 -0
  149. package/dist/components/Makeup/design.d.ts +106 -0
  150. package/dist/components/Makeup/designSamples.d.ts +42 -0
  151. package/dist/components/Makeup/eyes.d.ts +114 -0
  152. package/dist/components/Makeup/fields.d.ts +10 -0
  153. package/dist/components/Makeup/geometry.d.ts +106 -0
  154. package/dist/components/Makeup/index.d.ts +26 -0
  155. package/dist/components/Makeup/looks.d.ts +28 -0
  156. package/dist/components/Makeup/material.d.ts +239 -0
  157. package/dist/components/Makeup/settings.d.ts +54 -0
  158. package/dist/components/Makeup/shades.d.ts +143 -0
  159. package/dist/components/Makeup/shapes.d.ts +27 -0
  160. package/dist/components/Makeup/skinTone.d.ts +135 -0
  161. package/dist/components/Makeup/types.d.ts +110 -0
  162. package/dist/components/Makeup/useMakeupSkinTone.d.ts +40 -0
  163. package/dist/components/Necklace/Necklace.d.ts +44 -0
  164. package/dist/components/Necklace/index.d.ts +1 -0
  165. package/dist/components/ParticleEmitter/ParticleEmitter.d.ts +69 -0
  166. package/dist/components/ParticleEmitter/index.d.ts +1 -0
  167. package/dist/components/ShoulderOccluder/index.d.ts +43 -0
  168. package/dist/components/ShoulderOccluder/useCanonicalTorsoFit.d.ts +24 -0
  169. package/dist/components/SpringSwing/SpringSwing.d.ts +22 -0
  170. package/dist/components/SpringSwing/index.d.ts +1 -0
  171. package/dist/components/XRScene/renderOutputTarget.d.ts +12 -0
  172. package/dist/components/index.d.ts +8 -0
  173. package/dist/config/index.d.ts +0 -1
  174. package/dist/context-DTxSQvp4.js +13 -0
  175. package/dist/context-hA0Rb2Xa.cjs +1 -0
  176. package/dist/contexts-BH7PdKFS.cjs +1 -0
  177. package/dist/contexts-jak8-tND.js +667 -0
  178. package/dist/coordinates/index.d.ts +2 -0
  179. package/dist/coordinates/side.d.ts +40 -0
  180. package/dist/debug-ui/default-setting.cjs +2 -2
  181. package/dist/debug-ui/face-swap-settings/index.d.ts +22 -0
  182. package/dist/debug-ui/hierarchy-panel/index.d.ts +3 -2
  183. package/dist/debug-ui/index.d.ts +4 -3
  184. package/dist/debug-ui/media-source/index.d.ts +1 -1
  185. package/dist/debug-ui/media-source/session.d.ts +30 -2
  186. package/dist/debug-ui/media-source.cjs +1 -1
  187. package/dist/debug-ui/media-source.js +1 -1
  188. package/dist/debug-ui/object-inspector-panel/index.d.ts +3 -2
  189. package/dist/debug-ui/product-hotspots/index.d.ts +3 -2
  190. package/dist/debug-ui/scene-editor/hierarchy-panel.d.ts +3 -1
  191. package/dist/debug-ui/scene-editor/inspector-panel.d.ts +3 -1
  192. package/dist/debug-ui/screen-image-settings/index.d.ts +3 -1
  193. package/dist/debug-ui/screen-text-settings/ScreenTextSettingsPanel.d.ts +1 -1
  194. package/dist/debug-ui/screen-text-settings/types.d.ts +2 -0
  195. package/dist/debug-ui/settings-panel/index.d.ts +6 -1
  196. package/dist/debug-ui/shared/debugWindow.d.ts +51 -0
  197. package/dist/debug-ui/xr-diagnostics/index.d.ts +3 -2
  198. package/dist/debug-ui.cjs +3 -3
  199. package/dist/debug-ui.js +2250 -2472
  200. package/dist/entries/all.d.ts +3 -1
  201. package/dist/entries/core.d.ts +3 -2
  202. package/dist/entries/face-effects.d.ts +114 -8
  203. package/dist/entries/instructions.d.ts +48 -0
  204. package/dist/entries/internal.d.ts +2 -1
  205. package/dist/entries/low-level.d.ts +28 -1
  206. package/dist/entries/particles.d.ts +11 -0
  207. package/dist/entries/tracking.d.ts +37 -2
  208. package/dist/face-atlas/attributes.d.ts +30 -0
  209. package/dist/face-atlas/eyes.d.ts +272 -0
  210. package/dist/face-atlas/faceAtlas.generated.d.ts +46 -0
  211. package/dist/face-atlas/glsl/atlasVertex.d.ts +46 -0
  212. package/dist/face-atlas/glsl/common.d.ts +55 -0
  213. package/dist/face-atlas/glsl/design.d.ts +49 -0
  214. package/dist/face-atlas/glsl/eyes.d.ts +73 -0
  215. package/dist/face-atlas/glsl/finish.d.ts +24 -0
  216. package/dist/face-atlas/glsl/format.d.ts +4 -0
  217. package/dist/face-atlas/glsl/index.d.ts +59 -0
  218. package/dist/face-atlas/glsl/shading.d.ts +15 -0
  219. package/dist/face-atlas/glsl/shapes.d.ts +66 -0
  220. package/dist/face-atlas/glsl/sparkle.d.ts +19 -0
  221. package/dist/face-atlas/glsl/uniforms.d.ts +106 -0
  222. package/dist/face-atlas/guide.d.ts +51 -0
  223. package/dist/face-atlas/index.d.ts +25 -0
  224. package/dist/face-atlas/lead.d.ts +117 -0
  225. package/dist/face-atlas/madeUpCamera.d.ts +125 -0
  226. package/dist/face-atlas/masks.d.ts +53 -0
  227. package/dist/face-atlas/obj.d.ts +69 -0
  228. package/dist/face-atlas/polylines.d.ts +63 -0
  229. package/dist/face-atlas/probe/FaceSkinProbe.d.ts +208 -0
  230. package/dist/face-atlas/probe/__fixtures__/emulate.d.ts +9 -0
  231. package/dist/face-atlas/probe/__fixtures__/face.d.ts +24 -0
  232. package/dist/face-atlas/probe/constants.d.ts +137 -0
  233. package/dist/face-atlas/probe/glsl.d.ts +43 -0
  234. package/dist/face-atlas/probe/lightFit.d.ts +108 -0
  235. package/dist/face-atlas/probe/schedule.d.ts +44 -0
  236. package/dist/face-atlas/probe/selfTest.d.ts +87 -0
  237. package/dist/face-atlas/probe/stats.d.ts +143 -0
  238. package/dist/face-atlas/probe/targets.d.ts +70 -0
  239. package/dist/face-atlas/probe/unwrap.d.ts +76 -0
  240. package/dist/face-atlas/quality.d.ts +28 -0
  241. package/dist/face-atlas/regions.d.ts +31 -0
  242. package/dist/face-atlas/registry.d.ts +252 -0
  243. package/dist/face-atlas/renderState.d.ts +86 -0
  244. package/dist/face-atlas/selfOcclusion.d.ts +62 -0
  245. package/dist/face-atlas/shading.d.ts +406 -0
  246. package/dist/face-atlas/shapes.d.ts +86 -0
  247. package/dist/face-atlas/sides.d.ts +41 -0
  248. package/dist/face-atlas/skinMask.d.ts +35 -0
  249. package/dist/face-atlas/surface.d.ts +155 -0
  250. package/dist/face-atlas/topology.d.ts +44 -0
  251. package/dist/face-character/__fixtures__/faceImageDetections.d.ts +25 -0
  252. package/dist/face-character/__fixtures__/faceNode.d.ts +22 -0
  253. package/dist/face-character/bindFaceModel.d.ts +106 -0
  254. package/dist/face-character/canonicalFace.d.ts +17 -0
  255. package/dist/face-character/canonicalFaceGeometry.d.ts +11 -0
  256. package/dist/face-character/canonicalFacePositions.d.ts +7 -0
  257. package/dist/face-character/driveFaceModel.d.ts +57 -0
  258. package/dist/face-character/expressionOutputs.d.ts +45 -0
  259. package/dist/face-character/faceExpressions.d.ts +104 -0
  260. package/dist/face-character/faceImageLandmarker.d.ts +93 -0
  261. package/dist/face-character/faceMeshBinding.d.ts +62 -0
  262. package/dist/face-character/faceMorph.d.ts +77 -0
  263. package/dist/face-character/faceMorphs.d.ts +46 -0
  264. package/dist/face-character/facePhoto.d.ts +138 -0
  265. package/dist/face-character/facePiercings.d.ts +116 -0
  266. package/dist/face-character/facePin.d.ts +131 -0
  267. package/dist/face-character/faceReprojection.d.ts +273 -0
  268. package/dist/face-character/faceReprojector.d.ts +171 -0
  269. package/dist/face-character/faceRig.d.ts +176 -0
  270. package/dist/face-character/faceSwapPresence.d.ts +85 -0
  271. package/dist/face-character/faceTexture.d.ts +169 -0
  272. package/dist/face-character/faceTextureBaker.d.ts +86 -0
  273. package/dist/face-character/faceTextureGuide.d.ts +106 -0
  274. package/dist/face-character/faceTextureStats.d.ts +298 -0
  275. package/dist/face-character/faceTransfer.d.ts +396 -0
  276. package/dist/face-character/faceTransferGeometry.d.ts +109 -0
  277. package/dist/face-character/faceTransferSelfTest.d.ts +94 -0
  278. package/dist/face-character/faceWarp3D.d.ts +101 -0
  279. package/dist/face-character/faceless.d.ts +79 -0
  280. package/dist/face-character/featureWarp.d.ts +28 -0
  281. package/dist/face-character/liveFaceRegistry.d.ts +370 -0
  282. package/dist/face-character/liveValue.d.ts +12 -0
  283. package/dist/face-character/memo.d.ts +15 -0
  284. package/dist/face-effects.cjs +2252 -83
  285. package/dist/face-effects.js +14234 -1231
  286. package/dist/face-expression/index.d.ts +182 -0
  287. package/dist/face-info/landmarks.d.ts +17 -3
  288. package/dist/face-info/types.d.ts +20 -3
  289. package/dist/gestures/definitions.d.ts +15 -2
  290. package/dist/gestures/index.d.ts +1 -1
  291. package/dist/gestures/measures.d.ts +21 -8
  292. package/dist/getFaceInfo-B1otSDMX.cjs +1 -0
  293. package/dist/getFaceInfo-Cu4xDWiL.js +62 -0
  294. package/dist/hand/armFit.d.ts +46 -0
  295. package/dist/hand/armMask.d.ts +178 -0
  296. package/dist/hand/handCutout.d.ts +23 -0
  297. package/dist/hand/handCutoutRegistry.d.ts +7 -0
  298. package/dist/hand/handGestures.d.ts +524 -0
  299. package/dist/hand/handPose.d.ts +98 -0
  300. package/dist/hand/handRigSolver.d.ts +159 -0
  301. package/dist/hand/handTattoo.d.ts +81 -0
  302. package/dist/hand/handTouch.d.ts +240 -0
  303. package/dist/hand/wrist.d.ts +44 -0
  304. package/dist/hand/wristFilter.d.ts +44 -0
  305. package/dist/hooks/selectors.d.ts +8 -0
  306. package/dist/hooks/useFaceModelAcquisition.d.ts +38 -0
  307. package/dist/hooks/useTrackerContext.d.ts +6 -0
  308. package/dist/index-B1_TzJaI.js +1104 -0
  309. package/dist/index-BavF06C6.js +190 -0
  310. package/dist/index-BfFmpddl.cjs +21 -0
  311. package/dist/index-BuBzneeW.cjs +46 -0
  312. package/dist/index-CGsQWodV.cjs +1 -0
  313. package/dist/index-CIe7eCMH.js +3200 -0
  314. package/dist/index-CfSF8LXa.cjs +1 -0
  315. package/dist/index-D5GTzOzD.cjs +1 -0
  316. package/dist/index-DBhQzvVa.js +314 -0
  317. package/dist/index-DE17y0ZI.cjs +1 -0
  318. package/dist/index-JII7huPk.js +442 -0
  319. package/dist/index-tpCr9CLj.cjs +1 -0
  320. package/dist/{renderPasses-NnKZVfBy.js → index-w1S7fI2B.js} +219 -247
  321. package/dist/index-zGaqrz_K.js +188 -0
  322. package/dist/instructions.cjs +30 -0
  323. package/dist/instructions.js +1507 -0
  324. package/dist/{internal-vsfNQycj.js → internal-B90P-clC.js} +138 -118
  325. package/dist/internal-Cjinca64.cjs +1 -0
  326. package/dist/internal.cjs +1 -1
  327. package/dist/internal.js +15 -10
  328. package/dist/iris/compute.d.ts +7 -5
  329. package/dist/iris/types.d.ts +6 -4
  330. package/dist/{landmarkMask-CbTFzBYG.js → landmarkMask-BFDyBnKM.js} +6 -6
  331. package/dist/landmarks-BlUqf5MZ.cjs +1 -0
  332. package/dist/landmarks-bftdwq6Z.js +76 -0
  333. package/dist/loaders-BGAUACsd.js +363 -0
  334. package/dist/loaders-BJ1_QCHt.cjs +1 -0
  335. package/dist/low-level.cjs +1 -1
  336. package/dist/low-level.js +666 -602
  337. package/dist/main.cjs +1 -1
  338. package/dist/main.js +866 -1182
  339. package/dist/models/Body/index.d.ts +2 -0
  340. package/dist/models/Face/constants.d.ts +8 -0
  341. package/dist/models/Face/index.d.ts +3 -11
  342. package/dist/models/Face/rotation.d.ts +18 -3
  343. package/dist/models/Hand/HandTracking.d.ts +17 -1
  344. package/dist/models/Segmentation/index.d.ts +2 -0
  345. package/dist/models/nodeSource.d.ts +9 -0
  346. package/dist/particles/emission.d.ts +24 -0
  347. package/dist/particles/eyes.d.ts +24 -0
  348. package/dist/particles/glsl.d.ts +14 -0
  349. package/dist/particles/index.d.ts +10 -0
  350. package/dist/particles/motion.d.ts +42 -0
  351. package/dist/particles/presets.d.ts +12 -0
  352. package/dist/particles/ring.d.ts +58 -0
  353. package/dist/particles/selfTest.d.ts +53 -0
  354. package/dist/particles/settings.d.ts +127 -0
  355. package/dist/particles/shapes.d.ts +29 -0
  356. package/dist/particles/spawner.d.ts +60 -0
  357. package/dist/particles/system.d.ts +64 -0
  358. package/dist/particles.cjs +122 -0
  359. package/dist/particles.js +774 -0
  360. package/dist/product.cjs +1 -1
  361. package/dist/product.js +29 -29
  362. package/dist/{providers-C0Dlhh9Z.js → providers-C8rE26Uf.js} +127 -126
  363. package/dist/providers-DHsrhDI2.cjs +62 -0
  364. package/dist/render/renderPasses.d.ts +8 -0
  365. package/dist/render/sceneBeforeRender.d.ts +12 -0
  366. package/dist/{renderGroups-CN1cGFUo.js → renderGroups-B38pUaX2.js} +1 -1
  367. package/dist/{renderGroups-O4KmaMl9.cjs → renderGroups-Cb_4Ar1Q.cjs} +1 -1
  368. package/dist/renderPasses-B6l8IpJv.js +1290 -0
  369. package/dist/renderPasses-dqmkft4P.cjs +158 -0
  370. package/dist/renderState-CJNmj5jz.js +39 -0
  371. package/dist/renderState-apSfg4eR.cjs +1 -0
  372. package/dist/scene-object.cjs +1 -1
  373. package/dist/scene-object.js +2 -2
  374. package/dist/segmentation-Cb3ouK6Z.js +1758 -0
  375. package/dist/segmentation-D9pYO6aR.cjs +1 -0
  376. package/dist/segmentation2d/types.d.ts +6 -0
  377. package/dist/select-Ck5LGz-J.cjs +1 -0
  378. package/dist/select-pYRo_win.js +233 -0
  379. package/dist/selectors-C4X71aoD.cjs +1 -0
  380. package/dist/selectors-DmNaKIwE.js +196 -0
  381. package/dist/session-BrH8G7iJ.cjs +31 -0
  382. package/dist/session-DgA_z6O1.js +418 -0
  383. package/dist/{settings-aQk845NJ.js → settings-BJ7FMBsO.js} +53 -15
  384. package/dist/settings-C63FMBlF.cjs +1 -0
  385. package/dist/similarityFit-BFqHND2e.cjs +1 -0
  386. package/dist/similarityFit-Bbz-R8AY.js +91 -0
  387. package/dist/spring/index.d.ts +2 -0
  388. package/dist/spring/spring.d.ts +69 -0
  389. package/dist/spring/swing.d.ts +54 -0
  390. package/dist/tracking.cjs +10 -1
  391. package/dist/tracking.js +1002 -855
  392. package/dist/trigger-D0Pm9noT.cjs +49 -0
  393. package/dist/trigger-IQeys0oS.js +2128 -0
  394. package/dist/types/face.d.ts +20 -1
  395. package/dist/types/hand-tracking.d.ts +9 -0
  396. package/dist/types/nodes.d.ts +20 -1
  397. package/dist/types/segmentation.d.ts +5 -0
  398. package/dist/updateThrottle-BseecYag.js +4 -0
  399. package/dist/updateThrottle-Of5Y4SVa.cjs +1 -0
  400. package/dist/useFaceInfo-BHDNCvsJ.cjs +1 -0
  401. package/dist/useFaceInfo-J4x7LsqL.js +76 -0
  402. package/dist/useFaceResultReader-BvEo5REG.js +61 -0
  403. package/dist/useFaceResultReader-DuaL1KJG.cjs +1 -0
  404. package/dist/useInstructionHold-DOu-RpCM.js +53 -0
  405. package/dist/useInstructionHold-DwJY1Alr.cjs +1 -0
  406. package/dist/useLandmarkPoseFit-Bg-h9BPb.cjs +1 -0
  407. package/dist/useLandmarkPoseFit-Bmb3h6Mw.js +87 -0
  408. package/dist/{useXRCapabilities-B1R2ghy-.cjs → useXRCapabilities-Cr3RzuAW.cjs} +1 -1
  409. package/dist/{useXRCapabilities-C68v__wB.js → useXRCapabilities-Cxmlmpbd.js} +1 -1
  410. package/dist/utils/canonicalRigidLandmarks.d.ts +8 -0
  411. package/dist/utils/headOccluderFit.d.ts +42 -0
  412. package/dist/utils/integrity.d.ts +17 -0
  413. package/dist/utils/resolveNumFaces.d.ts +13 -0
  414. package/dist/utils/shoulderOccluderFit.d.ts +38 -0
  415. package/dist/utils/similarityFit.d.ts +23 -0
  416. package/dist/uv-BMFt19bg.cjs +1 -0
  417. package/dist/{index-CsUdQ-pn.js → uv-DJU_XfmN.js} +15 -249
  418. package/docs/SDK_DOCUMENTATION.md +1 -2
  419. package/docs/api/adaptive-quality.mdx +1 -1
  420. package/docs/api/body-instructions.mdx +285 -0
  421. package/docs/api/body-triggers.mdx +234 -0
  422. package/docs/api/camera-permission.mdx +1 -1
  423. package/docs/api/coordinate-spaces.mdx +7 -4
  424. package/docs/api/cross-camera.mdx +3 -2
  425. package/docs/api/debug-ui-scene-editor.mdx +23 -2
  426. package/docs/api/external-face-mesh.mdx +231 -0
  427. package/docs/api/face-actions.mdx +20 -16
  428. package/docs/api/face-attribute-expression.mdx +1 -1
  429. package/docs/api/face-binding-anchors.mdx +4 -2
  430. package/docs/api/face-character.mdx +157 -0
  431. package/docs/api/face-effects.mdx +3 -0
  432. package/docs/api/face-expression-controller.mdx +153 -0
  433. package/docs/api/face-info.mdx +17 -11
  434. package/docs/api/face-inset.mdx +204 -0
  435. package/docs/api/face-instructions.mdx +183 -0
  436. package/docs/api/face-liquify.mdx +196 -0
  437. package/docs/api/face-mesh.mdx +4 -7
  438. package/docs/api/face-morph.mdx +117 -0
  439. package/docs/api/face-painting.mdx +7 -0
  440. package/docs/api/face-reprojection.mdx +154 -0
  441. package/docs/api/face-retouching.mdx +18 -10
  442. package/docs/api/face-swap.mdx +350 -0
  443. package/docs/api/face-warp-3d.mdx +166 -0
  444. package/docs/api/faceless.mdx +143 -0
  445. package/docs/api/gestures.mdx +68 -32
  446. package/docs/api/hair.mdx +97 -0
  447. package/docs/api/hand-instructions.mdx +222 -0
  448. package/docs/api/hand-rig.mdx +535 -0
  449. package/docs/api/hand-touch.mdx +162 -0
  450. package/docs/api/head-occluder.mdx +563 -0
  451. package/docs/api/holistic-tracker.mdx +6 -1
  452. package/docs/api/instructions.mdx +323 -0
  453. package/docs/api/iris-tracking.mdx +24 -19
  454. package/docs/api/made-up-camera.mdx +131 -0
  455. package/docs/api/makeup-skin-tone.mdx +135 -0
  456. package/docs/api/makeup.mdx +353 -0
  457. package/docs/api/multi-subject.mdx +4 -1
  458. package/docs/api/particles.mdx +155 -0
  459. package/docs/api/person-cutout.mdx +1 -1
  460. package/docs/api/pin-to-face-mesh.mdx +274 -0
  461. package/docs/api/product-ar.mdx +5 -2
  462. package/docs/api/segmentation-overlay.mdx +1 -1
  463. package/docs/docs.json +29 -1
  464. package/docs/examples/lip-shaders.mdx +82 -33
  465. package/docs/guides/face-atlas-template.svg +1 -0
  466. package/docs/guides/face-atlas-textures.mdx +186 -0
  467. package/docs/guides/face-texture-template.svg +1 -0
  468. package/docs/guides/harness-debug-ui.mdx +4 -4
  469. package/docs/guides/lip-effect-textures.mdx +178 -102
  470. package/docs/guides/lip-uv-template.png +0 -0
  471. package/docs/guides/lip-uv-template.svg +1 -1
  472. package/docs/guides/makeup-design-textures.mdx +109 -0
  473. package/docs/introduction.mdx +1 -2
  474. package/package.json +11 -1
  475. package/dist/DebuggerUI-C-ldiozL.js +0 -269
  476. package/dist/DebuggerUI-CWX5EtQv.cjs +0 -1
  477. package/dist/FaceMeshRenderer-BEEXZwS6.cjs +0 -158
  478. package/dist/FaceMeshRenderer-UuH5sTXG.js +0 -1322
  479. package/dist/FaceRetouch-C7h7x9kd.js +0 -683
  480. package/dist/FaceRetouch-DqftT26Y.cjs +0 -134
  481. package/dist/GLTFLoader-C5q63sKO.js +0 -1633
  482. package/dist/GLTFLoader-Cb_CRwmG.cjs +0 -1
  483. package/dist/SegmentationOverlay-DQuW3dsc.js +0 -133
  484. package/dist/SegmentationOverlay-aWVod8Kl.cjs +0 -1
  485. package/dist/components/FaceWarp3D/FaceWarp3DHead.d.ts +0 -15
  486. package/dist/components/FaceWarp3D/defaults.d.ts +0 -37
  487. package/dist/components/FaceWarp3D/warp.d.ts +0 -13
  488. package/dist/contexts-CO0sd4JQ.cjs +0 -1
  489. package/dist/contexts-FzlnnMYD.js +0 -669
  490. package/dist/debug-ui/face-warp-3d/index.d.ts +0 -6
  491. package/dist/getFaceInfo-BkZfaQs-.js +0 -118
  492. package/dist/getFaceInfo-ahPxQFGu.cjs +0 -1
  493. package/dist/index--RgGzZ6X.cjs +0 -47
  494. package/dist/index-CHVbH0hz.js +0 -214
  495. package/dist/index-CeVkgsag.cjs +0 -1
  496. package/dist/index-CnGox6Xr.js +0 -3054
  497. package/dist/index-DKBAh6hV.cjs +0 -1
  498. package/dist/index-DsZwTfG0.cjs +0 -1
  499. package/dist/index-Dw6tj2Mi.js +0 -144
  500. package/dist/index-OCPjOaeP.cjs +0 -1
  501. package/dist/index-s9pF4zkG.js +0 -2053
  502. package/dist/internal-BYza1h8_.cjs +0 -1
  503. package/dist/measures-9dQPdw96.js +0 -154
  504. package/dist/measures-KfJzpvod.cjs +0 -1
  505. package/dist/providers-YNwkmNeK.cjs +0 -62
  506. package/dist/renderPasses-Cg-zqmEz.cjs +0 -21
  507. package/dist/screenTransform-BenfCtZt.js +0 -44
  508. package/dist/screenTransform-BiXdpVf0.cjs +0 -1
  509. package/dist/segmentation-9PhSvc-R.cjs +0 -1
  510. package/dist/segmentation-CeOTKemr.js +0 -5
  511. package/dist/selectors-C5G1PMYL.js +0 -195
  512. package/dist/selectors-Du_PsVnW.cjs +0 -1
  513. package/dist/session-BBr0yN8h.cjs +0 -31
  514. package/dist/session-Cy0m7l7-.js +0 -363
  515. package/dist/settings-DRR7-snV.cjs +0 -1
  516. package/dist/useFaceInfo-Blf7FCu3.js +0 -303
  517. package/dist/useFaceInfo-C5mO8NQY.cjs +0 -1
@@ -1,2053 +0,0 @@
1
- import { jsx as d, jsxs as D, Fragment as Se } from "react/jsx-runtime";
2
- import { useThree as me, useFrame as se } from "@react-three/fiber";
3
- import { useMemo as x, forwardRef as qe, useEffect as te, useState as ve, useRef as R, useCallback as Be, useLayoutEffect as je } from "react";
4
- import * as B from "three";
5
- import { Quaternion as ke, Vector3 as ie, Euler as _e } from "three";
6
- import { e as $e, a as Pe, u as Me, S as et, M as tt } from "./index-CHVbH0hz.js";
7
- import { z as we, T as ue, o as nt } from "./FaceMeshRenderer-UuH5sTXG.js";
8
- import { T as Ge, s as rt, t as it, b as xe, P as at, L as ot, R as lt, E as st, I as At } from "./renderPasses-NnKZVfBy.js";
9
- import { d as ct, j as gt, k as dt, f as ft, c as ht, S as ut } from "./contexts-FzlnnMYD.js";
10
- import { m as Oe, r as ze } from "./screenTransform-BenfCtZt.js";
11
- import { b as vt, r as mt } from "./index-CsUdQ-pn.js";
12
- import { b as St, s as Ct } from "./index-Dw6tj2Mi.js";
13
- import { c as It, n as Et } from "./useFaceInfo-Blf7FCu3.js";
14
- import { aj as bt, q as pt, u as Tt } from "./index-CnGox6Xr.js";
15
- import { useTexture as yt } from "@react-three/drei";
16
- const ae = {
17
- width: 720,
18
- height: 1280
19
- }, Bt = (t = [0.5, 0.5]) => [
20
- t[0] * 2 - 1,
21
- t[1] * 2 - 1
22
- ], Ce = ({
23
- position: t = [0, 0],
24
- size: e = [1, 1]
25
- }) => {
26
- const n = e[0] / 2, i = e[1] / 2;
27
- return {
28
- left: t[0] - n,
29
- right: t[0] + n,
30
- top: t[1] + i,
31
- bottom: t[1] - i
32
- };
33
- }, Mt = ({
34
- position: t = [0, 0],
35
- size: e,
36
- canvasSize: n = ae
37
- }) => {
38
- const i = n.width / 2 || ae.width / 2, a = n.height / 2 || ae.height / 2, r = e ?? [n.width, n.height];
39
- return Ce({
40
- position: [t[0] / i, t[1] / a],
41
- size: [r[0] / i, r[1] / a]
42
- });
43
- }, He = ({
44
- coordinateSpace: t = "normalized",
45
- canvasSize: e = ae,
46
- position: n,
47
- size: i,
48
- fallbackAnchors: a
49
- }) => a || (!n && !i ? Ce({}) : t === "canvas" ? Mt({ position: n, size: i, canvasSize: e }) : Ce({ position: n, size: i })), Qt = ({ children: t, depth: e = 0 }) => {
50
- const { camera: n, size: i } = me(), a = x(() => {
51
- if (!n.isPerspectiveCamera)
52
- return { width: 10, height: 10 };
53
- const r = n, o = Math.abs(r.position.z - e), l = r.fov * Math.PI / 180, s = 2 * Math.tan(l / 2) * o;
54
- return { width: s * (i.width / i.height), height: s };
55
- }, [n, i, e]);
56
- return /* @__PURE__ */ d($e.Provider, { value: a, children: /* @__PURE__ */ d("group", { position: [0, 0, e], children: t }) });
57
- }, Je = qe(
58
- ({ texture: t, name: e, overlay: n, opacity: i, position: a, rotation: r, scale: o, visible: l, renderOrder: s }, A) => /* @__PURE__ */ D(
59
- "mesh",
60
- {
61
- ref: A,
62
- name: e,
63
- position: a,
64
- rotation: r,
65
- scale: o,
66
- visible: l,
67
- renderOrder: s,
68
- children: [
69
- /* @__PURE__ */ d("planeGeometry", { args: [1, 1] }),
70
- /* @__PURE__ */ d(
71
- "meshBasicMaterial",
72
- {
73
- map: t,
74
- transparent: !0,
75
- opacity: i,
76
- depthTest: !n,
77
- depthWrite: !n
78
- }
79
- )
80
- ]
81
- }
82
- )
83
- );
84
- Je.displayName = "TextLabelMesh";
85
- const kt = {
86
- color: "#ffffff",
87
- strokeWidth: 0,
88
- strokeOpacity: 1,
89
- shadowBlur: 0,
90
- shadowOffsetX: 0,
91
- shadowOffsetY: 0,
92
- shadowOpacity: 1,
93
- fontWeight: "bold",
94
- fontStyle: "normal",
95
- fontFamily: "Arial, sans-serif",
96
- fontSize: 48,
97
- textAlign: "center",
98
- verticalAlign: "center",
99
- minFontSize: 12,
100
- letterSpacing: 0,
101
- lineSpacing: 0.3,
102
- bgColor: "rgba(20,40,110,0.88)",
103
- bgFillMode: "solid",
104
- bgOpacity: 1,
105
- bgFit: "full",
106
- bgTextureFit: "cover",
107
- bgTextureFlipX: !1,
108
- bgTextureFlipY: !1,
109
- borderWidth: 0,
110
- borderRadius: 24,
111
- padding: 32,
112
- aspect: 2.5,
113
- resolution: 512,
114
- opacity: 1,
115
- underline: !1,
116
- strikethrough: !1,
117
- bendPreset: "arc",
118
- bendStrength: 0
119
- }, Ie = (t) => {
120
- te(
121
- () => () => {
122
- t == null || t.dispose();
123
- },
124
- [t]
125
- );
126
- };
127
- function wt(t, e, n) {
128
- return n === "left" ? e : n === "right" ? t - e : t / 2;
129
- }
130
- function xt(t, e, n, i, a) {
131
- return a === "top" ? e + n / 2 : a === "bottom" ? t - e - i + n / 2 : t / 2 - (i - n) / 2;
132
- }
133
- function Lt(t, e, n, i) {
134
- return i === "full" || n === "left" ? 0 : n === "right" ? t - e : (t - e) / 2;
135
- }
136
- function Ke(t, e, n, i) {
137
- return `${t} ${e} ${n}px ${i}`;
138
- }
139
- function le(t, e) {
140
- const n = Math.max(0, Math.min(e, 1));
141
- return t * n * 0.08;
142
- }
143
- function Ve(t, e) {
144
- const n = Math.max(0, Math.min(e, 1));
145
- return t * (1.2 + n * 0.6);
146
- }
147
- function Ne(t, e) {
148
- "letterSpacing" in t && (t.letterSpacing = `${e}px`);
149
- }
150
- function Ue(t) {
151
- "letterSpacing" in t && (t.letterSpacing = "0px");
152
- }
153
- function ne(t, e, n) {
154
- Ne(t, n);
155
- const i = t.measureText(e).width;
156
- return Ue(t), i;
157
- }
158
- function Ee(t, e, n, i) {
159
- return Math.max(1, Math.floor((t - e * 2) / Ve(n, i)));
160
- }
161
- function Ft(t, e, n, i, a) {
162
- return e.length <= i && e.every((r) => ne(t, r, a) <= n);
163
- }
164
- function be(t, e, n, i, a, r, o, l) {
165
- t.font = Ke(i, a, r, o);
166
- const s = e.split(" "), A = [];
167
- let c = "";
168
- for (const h of s) {
169
- const f = c ? `${c} ${h}` : h;
170
- ne(t, f, l) > n && c ? (A.push(c), c = h) : c = f;
171
- }
172
- return c && A.push(c), A;
173
- }
174
- function Le(t, e, n, i, a, r, o, l) {
175
- const A = e.split(/\r?\n/).flatMap((c) => c.trim().length === 0 ? [""] : be(
176
- t,
177
- c,
178
- n,
179
- i,
180
- a,
181
- r,
182
- o,
183
- l
184
- ));
185
- return A.length > 0 ? A : [e];
186
- }
187
- function Ze(t, e, n, i, a) {
188
- const r = i ? "..." : "";
189
- let o = e.trimEnd();
190
- for (; o.length > 0 && ne(t, `${o}${r}`, a) > n; )
191
- o = o.slice(0, -1).trimEnd();
192
- return `${o}${r}`;
193
- }
194
- function pe(t, e, n, i, a) {
195
- return e.map((r, o) => {
196
- if (ne(t, r, a) <= n) return r;
197
- const l = o === e.length - 1;
198
- return Ze(
199
- t,
200
- r,
201
- n,
202
- i === "ellipsis" && l,
203
- a
204
- );
205
- });
206
- }
207
- function Fe(t, e, n, i, a, r) {
208
- if (e.length <= n)
209
- return pe(
210
- t,
211
- e,
212
- i,
213
- a ? "ellipsis" : "clip",
214
- r
215
- );
216
- const o = e.slice(0, n), l = o[n - 1];
217
- return o[n - 1] = Ze(
218
- t,
219
- l,
220
- i,
221
- a,
222
- r
223
- ), pe(
224
- t,
225
- o,
226
- i,
227
- a ? "ellipsis" : "clip",
228
- r
229
- );
230
- }
231
- function Wt(t) {
232
- const {
233
- ctx: e,
234
- text: n,
235
- explicitLines: i,
236
- maxWidth: a,
237
- maxHeight: r,
238
- padding: o,
239
- fontStyle: l,
240
- fontWeight: s,
241
- fontSize: A,
242
- fontFamily: c,
243
- letterSpacing: h,
244
- lineSpacing: f,
245
- overflow: u,
246
- resizeToFit: v,
247
- minFontSize: S
248
- } = t;
249
- let m = A, C = le(m, h), E = i ?? Le(
250
- e,
251
- n,
252
- a,
253
- l,
254
- s,
255
- m,
256
- c,
257
- C
258
- ), I = Ee(r, o, m, f);
259
- const M = v === !0 || u === "shrink";
260
- for (; M && !Ft(e, E, a, I, C) && m > S && (m = Math.max(S, m - 4), C = le(m, h), E = i ?? Le(
261
- e,
262
- n,
263
- a,
264
- l,
265
- s,
266
- m,
267
- c,
268
- C
269
- ), I = Ee(r, o, m, f), m !== S); )
270
- ;
271
- return u === "ellipsis" ? E = Fe(
272
- e,
273
- E,
274
- I,
275
- a,
276
- !0,
277
- C
278
- ) : u === "clamp" || u === "shrink" ? E = Fe(
279
- e,
280
- E,
281
- I,
282
- a,
283
- !1,
284
- C
285
- ) : u !== "clip" && (E = pe(e, E, a, void 0, C)), { fontSize: m, lines: E };
286
- }
287
- function Yt(t) {
288
- const {
289
- ctx: e,
290
- text: n,
291
- maxWidth: i,
292
- maxHeight: a,
293
- padding: r,
294
- fontStyle: o,
295
- fontWeight: l,
296
- fontSize: s,
297
- fontFamily: A,
298
- letterSpacing: c,
299
- lineSpacing: h
300
- } = t;
301
- let f = s, u = be(
302
- e,
303
- n,
304
- i,
305
- o,
306
- l,
307
- f,
308
- A,
309
- le(f, c)
310
- );
311
- const v = Ee(a, r, f, h);
312
- return u.length > v && (f = Math.max(12, Math.round(f * 0.75)), u = be(
313
- e,
314
- n,
315
- i,
316
- o,
317
- l,
318
- f,
319
- A,
320
- le(f, c)
321
- )), { fontSize: f, lines: u };
322
- }
323
- function Te(t, e) {
324
- return typeof OffscreenCanvas < "u" ? new OffscreenCanvas(t, e) : (() => {
325
- const n = document.createElement("canvas");
326
- return n.width = t, n.height = e, n;
327
- })();
328
- }
329
- function Dt(t, e) {
330
- const n = e.width - e.padding * 2, a = Array.isArray(e.lines) || e.text.includes(`
331
- `) || e.overflow !== void 0 || e.resizeToFit !== void 0 ? Wt({
332
- ctx: t,
333
- text: e.text,
334
- explicitLines: e.lines,
335
- maxWidth: n,
336
- maxHeight: e.height,
337
- padding: e.padding,
338
- fontStyle: e.fontStyle,
339
- fontWeight: e.fontWeight,
340
- fontSize: e.fontSize,
341
- fontFamily: e.fontFamily,
342
- overflow: e.overflow,
343
- resizeToFit: e.resizeToFit,
344
- minFontSize: e.minFontSize,
345
- letterSpacing: e.letterSpacing,
346
- lineSpacing: e.lineSpacing
347
- }) : Yt({
348
- ctx: t,
349
- text: e.text,
350
- maxWidth: n,
351
- maxHeight: e.height,
352
- padding: e.padding,
353
- fontStyle: e.fontStyle,
354
- fontWeight: e.fontWeight,
355
- fontSize: e.fontSize,
356
- fontFamily: e.fontFamily,
357
- letterSpacing: e.letterSpacing,
358
- lineSpacing: e.lineSpacing
359
- }), r = a.fontSize, o = a.lines;
360
- t.font = Ke(e.fontStyle, e.fontWeight, r, e.fontFamily);
361
- const l = le(r, e.letterSpacing), s = Ve(r, e.lineSpacing), A = Math.max(
362
- r,
363
- r + (o.length - 1) * s
364
- ), c = xt(
365
- e.height,
366
- e.padding,
367
- r,
368
- A,
369
- e.verticalAlign
370
- ), h = o.map(
371
- (f) => ne(t, f, l)
372
- );
373
- return {
374
- fontSize: r,
375
- resolvedLines: o,
376
- letterSpacingPx: l,
377
- lineHeight: s,
378
- startY: c,
379
- textBlockWidth: Math.min(
380
- e.width,
381
- Math.max(0, Math.max(...h, 0)) + e.padding * 2
382
- ),
383
- textBlockHeight: Math.min(e.height, A + e.padding * 2),
384
- textX: wt(e.width, e.padding, e.textAlign)
385
- };
386
- }
387
- function Xt(t, e, n, i, a, r) {
388
- t.beginPath(), t.moveTo(e + r, n), t.lineTo(e + i - r, n), t.quadraticCurveTo(e + i, n, e + i, n + r), t.lineTo(e + i, n + a - r), t.quadraticCurveTo(e + i, n + a, e + i - r, n + a), t.lineTo(e + r, n + a), t.quadraticCurveTo(e, n + a, e, n + a - r), t.lineTo(e, n + r), t.quadraticCurveTo(e, n, e + r, n), t.closePath();
389
- }
390
- function We(t, e, n) {
391
- return typeof t != "number" || Number.isNaN(t) || t <= 0 ? e : Math.min(t, n);
392
- }
393
- function Rt(t, e) {
394
- const n = Lt(
395
- e.canvasWidth,
396
- e.panelWidth,
397
- e.textAlign,
398
- e.bgFit
399
- ), i = (e.canvasHeight - e.panelHeight) / 2, a = Math.min(e.borderRadius, Math.min(e.panelWidth, e.panelHeight) / 2);
400
- Xt(t, n, i, e.panelWidth, e.panelHeight, a), Pt(t, {
401
- panelX: n,
402
- panelY: i,
403
- panelWidth: e.panelWidth,
404
- panelHeight: e.panelHeight,
405
- bgColor: e.bgColor,
406
- bgFillMode: e.bgFillMode,
407
- bgOpacity: e.bgOpacity,
408
- bgGradientStops: e.bgGradientStops,
409
- bgTextureImage: e.bgTextureImage,
410
- bgTextureFit: e.bgTextureFit,
411
- bgTextureFlipX: e.bgTextureFlipX,
412
- bgTextureFlipY: e.bgTextureFlipY
413
- }), e.borderColor && e.borderWidth > 0 && (t.lineWidth = e.borderWidth, t.strokeStyle = e.borderColor, t.stroke());
414
- }
415
- function Pt(t, e) {
416
- if (t.save(), t.globalAlpha = Math.max(0, Math.min(e.bgOpacity, 1)), e.bgFillMode === "gradient" && e.bgGradientStops && e.bgGradientStops.length > 1) {
417
- const n = t.createLinearGradient(
418
- e.panelX,
419
- e.panelY,
420
- e.panelX + e.panelWidth,
421
- e.panelY + e.panelHeight
422
- );
423
- [...e.bgGradientStops].sort((i, a) => i.position - a.position).forEach(
424
- (i) => n.addColorStop(Math.max(0, Math.min(i.position, 1)), i.color)
425
- ), t.fillStyle = n, t.fill(), t.restore();
426
- return;
427
- }
428
- if (e.bgTextureImage) {
429
- t.clip(), Gt(t, {
430
- image: e.bgTextureImage,
431
- x: e.panelX,
432
- y: e.panelY,
433
- width: e.panelWidth,
434
- height: e.panelHeight,
435
- fit: e.bgTextureFit,
436
- flipX: e.bgTextureFlipX,
437
- flipY: e.bgTextureFlipY
438
- }), t.restore();
439
- return;
440
- }
441
- t.fillStyle = e.bgColor, t.fill(), t.restore();
442
- }
443
- function Gt(t, e) {
444
- const { image: n, x: i, y: a, width: r, height: o, fit: l, flipX: s, flipY: A } = e, c = "naturalWidth" in n ? n.naturalWidth : "videoWidth" in n ? n.videoWidth : n.width, h = "naturalHeight" in n ? n.naturalHeight : "videoHeight" in n ? n.videoHeight : n.height;
445
- let f = r, u = o, v = i, S = a;
446
- if (l !== "stretch" && c > 0 && h > 0) {
447
- const m = l === "cover" ? Math.max(r / c, o / h) : Math.min(r / c, o / h);
448
- f = c * m, u = h * m, v = i + (r - f) / 2, S = a + (o - u) / 2;
449
- }
450
- t.save(), (s || A) && (t.translate(s ? i + r : 0, A ? a + o : 0), t.scale(s ? -1 : 1, A ? -1 : 1), v = s ? -(v - i) - f + i : v, S = A ? -(S - a) - u + a : S), t.drawImage(n, v, S, f, u), t.restore();
451
- }
452
- function Ot(t, e, n, i, a, r) {
453
- const o = a / 72, l = Math.abs(o), s = 1 - Math.min(1, Math.abs(e)), A = Math.min(1, Math.abs(e)), c = i <= 1 ? 0.5 : n / (i - 1), h = Math.sin(c * Math.PI * 2 - Math.PI / 2), f = Math.sin(c * Math.PI * 2.7 - Math.PI / 2) * (0.65 + c * 0.35), u = a * e * e, v = 2 * a * e / r, S = {
454
- xOffset: 0,
455
- yOffset: 0,
456
- rotation: 0,
457
- scaleX: 1,
458
- scaleY: 1
459
- };
460
- switch (t) {
461
- case "arc":
462
- return { ...S, yOffset: u, rotation: Math.atan(v) };
463
- case "arc-lower":
464
- return {
465
- ...S,
466
- yOffset: u * 0.55,
467
- scaleY: Math.max(0.2, 1 + o * e * e * 0.45)
468
- };
469
- case "arc-upper":
470
- return {
471
- ...S,
472
- yOffset: -u * 0.55,
473
- scaleY: Math.max(0.2, 1 - o * e * e * 0.45)
474
- };
475
- case "arch":
476
- return { ...S, yOffset: u };
477
- case "bulge":
478
- return { ...S, scaleY: Math.max(0.2, 1 + o * s * 0.75) };
479
- case "shell-lower":
480
- return {
481
- ...S,
482
- yOffset: a * 0.45 * c * s,
483
- scaleY: Math.max(0.2, 1 + o * c * s)
484
- };
485
- case "shell-upper":
486
- return {
487
- ...S,
488
- yOffset: -a * 0.45 * (1 - c) * s,
489
- scaleY: Math.max(0.2, 1 + o * (1 - c) * s)
490
- };
491
- case "flag":
492
- return {
493
- ...S,
494
- yOffset: a * 0.65 * f,
495
- rotation: Math.atan(
496
- a / Math.max(r, 1) * Math.cos(c * Math.PI * 2.7) * 1.6
497
- )
498
- };
499
- case "wave":
500
- return {
501
- ...S,
502
- yOffset: a * 0.6 * h,
503
- rotation: Math.atan(a / Math.max(r, 1) * Math.cos(c * Math.PI * 2) * 1.4)
504
- };
505
- case "fish":
506
- return {
507
- ...S,
508
- scaleX: Math.max(0.25, 1 - l * A * 0.55),
509
- scaleY: Math.max(0.2, 1 + o * s)
510
- };
511
- case "rise":
512
- return { ...S, yOffset: a * e };
513
- case "fisheye":
514
- return {
515
- ...S,
516
- yOffset: a * 0.18 * e * s,
517
- scaleX: Math.max(0.25, 1 + o * s * 0.7),
518
- scaleY: Math.max(0.2, 1 + o * s * 0.7)
519
- };
520
- case "inflate":
521
- return {
522
- ...S,
523
- scaleX: Math.max(0.25, 1 + o * s * 0.6),
524
- scaleY: Math.max(0.2, 1 + o * s * 0.6)
525
- };
526
- case "squeeze":
527
- return { ...S, scaleY: Math.max(0.2, 1 - o * s * 0.8) };
528
- case "twist":
529
- return {
530
- ...S,
531
- yOffset: a * e,
532
- rotation: o * e * 0.45,
533
- scaleY: Math.max(0.2, 1 + o * e * 0.25)
534
- };
535
- default:
536
- return S;
537
- }
538
- }
539
- function ee(t, e, n, i, a, r, o = "arc", l = 0) {
540
- if (l !== 0) {
541
- zt(t, e, n, i, a, r, o, l);
542
- return;
543
- }
544
- Ne(t, a), r === "fill" ? t.fillText(e, n, i) : t.strokeText(e, n, i), Ue(t);
545
- }
546
- function zt(t, e, n, i, a, r, o, l) {
547
- const s = Array.from(e);
548
- if (s.length === 0) return;
549
- const A = s.map((C) => t.measureText(C).width), c = A.reduce((C, E) => C + E, 0) + a * Math.max(0, s.length - 1), h = t.textAlign, f = h === "right" ? n - c : h === "center" ? n - c / 2 : n, v = Math.max(-100, Math.min(l, 100)) / 100 * 72, S = Math.max(c / 2, 1);
550
- let m = f;
551
- for (let C = 0; C < s.length; C++) {
552
- const E = s[C], I = A[C], M = m + I / 2, b = (M - f - c / 2) / S, y = Ot(
553
- o,
554
- b,
555
- C,
556
- s.length,
557
- v,
558
- S
559
- );
560
- t.save(), t.translate(M + y.xOffset, i + y.yOffset), t.rotate(y.rotation), t.scale(y.scaleX, y.scaleY), t.textAlign = "center", r === "fill" ? t.fillText(E, 0, 0) : t.strokeText(E, 0, 0), t.restore(), m += I + a;
561
- }
562
- }
563
- function Ye(t, e, n, i, a, r, o, l, s) {
564
- const A = ne(t, e, l), c = a === "center" ? n - A / 2 : a === "right" ? n - A : n, h = s === "underline" ? o * 0.42 : -o * 0.08, f = i + h;
565
- t.save(), t.strokeStyle = r, t.lineWidth = Math.max(2, o * 0.06), t.lineCap = "round", t.beginPath(), t.moveTo(c, f), t.lineTo(c + A, f), t.stroke(), t.restore();
566
- }
567
- function Ht(t, e) {
568
- for (let n = 0; n < e.lines.length; n++) {
569
- const i = e.lines[n], a = e.startY + n * e.lineHeight;
570
- for (const r of e.shadowLayers)
571
- t.save(), t.shadowColor = r.color, t.shadowBlur = r.blur, t.shadowOffsetX = r.offsetX ?? 0, t.shadowOffsetY = r.offsetY ?? 0, t.globalAlpha = r.opacity ?? 1, t.fillStyle = e.color, ee(
572
- t,
573
- i,
574
- e.textX,
575
- a,
576
- e.letterSpacingPx,
577
- "fill",
578
- e.bendPreset,
579
- e.bendStrength
580
- ), t.restore();
581
- for (const r of e.strokeLayers)
582
- t.save(), t.lineJoin = "round", t.miterLimit = 2, t.lineWidth = r.width, t.strokeStyle = r.color, t.globalAlpha = r.opacity ?? 1, ee(
583
- t,
584
- i,
585
- e.textX,
586
- a,
587
- e.letterSpacingPx,
588
- "stroke",
589
- e.bendPreset,
590
- e.bendStrength
591
- ), t.restore();
592
- t.save(), t.fillStyle = e.color, t.globalAlpha = 1, ee(
593
- t,
594
- i,
595
- e.textX,
596
- a,
597
- e.letterSpacingPx,
598
- "fill",
599
- e.bendPreset,
600
- e.bendStrength
601
- ), t.restore(), e.underline && Ye(
602
- t,
603
- i,
604
- e.textX,
605
- a,
606
- e.textAlign,
607
- e.color,
608
- e.fontSize,
609
- e.letterSpacingPx,
610
- "underline"
611
- ), e.strikethrough && Ye(
612
- t,
613
- i,
614
- e.textX,
615
- a,
616
- e.textAlign,
617
- e.color,
618
- e.fontSize,
619
- e.letterSpacingPx,
620
- "strikethrough"
621
- );
622
- }
623
- }
624
- function Jt(t, e) {
625
- const n = Math.max(0, Math.min(e.intensity, 1));
626
- if (n <= 0) return;
627
- const i = Math.max(0, Math.min(e.range, 1)), a = i * 72, r = Math.max(-0.5, Math.min(e.horizontalAngle, 0.5)) * 80, o = Math.max(-0.5, Math.min(e.verticalAngle, 0.5)) * 80;
628
- for (let l = 0; l < e.lines.length; l++) {
629
- const s = e.startY + l * e.lineHeight;
630
- t.save(), t.globalAlpha = n, t.shadowColor = e.color, t.shadowBlur = a, t.shadowOffsetX = r, t.shadowOffsetY = o, e.style === "contoured" ? (t.lineJoin = "round", t.miterLimit = 2, t.lineWidth = Math.max(2, i * 42), t.strokeStyle = e.color, ee(
631
- t,
632
- e.lines[l],
633
- e.textX,
634
- s,
635
- e.letterSpacingPx,
636
- "stroke",
637
- e.bendPreset,
638
- e.bendStrength
639
- )) : (t.fillStyle = e.color, ee(
640
- t,
641
- e.lines[l],
642
- e.textX,
643
- s,
644
- e.letterSpacingPx,
645
- "fill",
646
- e.bendPreset,
647
- e.bendStrength
648
- )), t.restore();
649
- }
650
- }
651
- function Kt(t, e) {
652
- const n = Te(e.width, e.height), i = n.getContext("2d");
653
- i.clearRect(0, 0, e.width, e.height), i.font = e.font, i.fillStyle = "#ffffff", i.textAlign = e.textAlign, i.textBaseline = "middle";
654
- for (let o = 0; o < e.lines.length; o++)
655
- ee(
656
- i,
657
- e.lines[o],
658
- e.textX,
659
- e.startY + o * e.lineHeight,
660
- e.letterSpacingPx,
661
- "fill",
662
- e.bendPreset,
663
- e.bendStrength
664
- );
665
- const a = Te(e.width, e.height), r = a.getContext("2d");
666
- r.clearRect(0, 0, e.width, e.height), r.save(), r.globalAlpha = e.opacity, r.filter = e.blur > 0 ? `blur(${e.blur}px)` : "none", r.drawImage(n, e.offsetX, e.offsetY), r.restore(), r.globalCompositeOperation = "destination-in", r.drawImage(n, 0, 0), r.globalCompositeOperation = "source-in", r.globalAlpha = e.opacity, r.fillStyle = e.color, r.fillRect(0, 0, e.width, e.height), t.drawImage(a, 0, 0);
667
- }
668
- function Vt(t) {
669
- const {
670
- width: e,
671
- height: n,
672
- color: i,
673
- strokeLayers: a,
674
- strokeColor: r,
675
- strokeWidth: o,
676
- strokeOpacity: l,
677
- shadowLayers: s,
678
- innerShadow: A,
679
- glow: c,
680
- shadowColor: h,
681
- shadowBlur: f,
682
- shadowOffsetX: u,
683
- shadowOffsetY: v,
684
- shadowOpacity: S,
685
- textAlign: m,
686
- bgFillMode: C,
687
- bgOpacity: E,
688
- bgFit: I,
689
- bgAutoSize: M,
690
- bgWidth: b,
691
- bgHeight: y,
692
- bgGradientStops: F,
693
- bgTextureImage: p,
694
- bgTextureFit: g,
695
- bgTextureFlipX: k,
696
- bgTextureFlipY: J,
697
- underline: P,
698
- strikethrough: K,
699
- bendPreset: W,
700
- bendStrength: z
701
- } = t;
702
- let { fontSize: V, bgColor: N } = t;
703
- const U = [
704
- ...a ?? [],
705
- ...r && o > 0 ? [{ color: r, width: o, opacity: l }] : []
706
- ].filter((Q) => Q.width > 0), Z = [
707
- ...s ?? [],
708
- ...h && (f > 0 || u !== 0 || v !== 0) ? [
709
- {
710
- color: h,
711
- blur: f,
712
- offsetX: u,
713
- offsetY: v,
714
- opacity: S
715
- }
716
- ] : []
717
- ].filter((Q) => Q.blur > 0 || (Q.offsetX ?? 0) !== 0 || (Q.offsetY ?? 0) !== 0);
718
- let X;
719
- const q = Te(e, n), Y = q.getContext("2d");
720
- Y.clearRect(0, 0, e, n), Y.fillStyle = i, Y.textAlign = m, Y.textBaseline = "middle";
721
- const T = Dt(Y, t);
722
- if (V = T.fontSize, N !== "transparent") {
723
- const Q = M === !0, L = We(
724
- Q ? void 0 : b,
725
- I === "text" || Q ? T.textBlockWidth : e,
726
- e
727
- ), H = We(
728
- Q ? void 0 : y,
729
- I === "text" || Q ? T.textBlockHeight : n,
730
- n
731
- );
732
- Rt(Y, {
733
- canvasWidth: e,
734
- canvasHeight: n,
735
- textAlign: m,
736
- bgFit: I,
737
- panelWidth: L,
738
- panelHeight: H,
739
- bgColor: N,
740
- bgFillMode: C,
741
- bgOpacity: E,
742
- bgGradientStops: F,
743
- bgTextureImage: p,
744
- bgTextureFit: g,
745
- bgTextureFlipX: k,
746
- bgTextureFlipY: J,
747
- borderColor: t.borderColor,
748
- borderWidth: t.borderWidth,
749
- borderRadius: t.borderRadius
750
- });
751
- }
752
- return c && Jt(Y, {
753
- lines: T.resolvedLines,
754
- textX: T.textX,
755
- startY: T.startY,
756
- lineHeight: T.lineHeight,
757
- letterSpacingPx: T.letterSpacingPx,
758
- bendPreset: W,
759
- bendStrength: z,
760
- color: c.color,
761
- style: c.style,
762
- intensity: c.intensity ?? 0.5,
763
- range: c.range ?? 0.5,
764
- horizontalAngle: c.horizontalAngle ?? 0,
765
- verticalAngle: c.verticalAngle ?? 0
766
- }), Ht(Y, {
767
- lines: T.resolvedLines,
768
- textX: T.textX,
769
- startY: T.startY,
770
- lineHeight: T.lineHeight,
771
- textAlign: m,
772
- color: i,
773
- fontSize: V,
774
- letterSpacingPx: T.letterSpacingPx,
775
- bendPreset: W,
776
- bendStrength: z,
777
- shadowLayers: Z,
778
- strokeLayers: U,
779
- underline: P,
780
- strikethrough: K
781
- }), A && Kt(Y, {
782
- width: e,
783
- height: n,
784
- font: Y.font,
785
- lines: T.resolvedLines,
786
- textX: T.textX,
787
- startY: T.startY,
788
- lineHeight: T.lineHeight,
789
- letterSpacingPx: T.letterSpacingPx,
790
- bendPreset: W,
791
- bendStrength: z,
792
- textAlign: m,
793
- color: A.color,
794
- opacity: A.opacity ?? 1,
795
- blur: A.blur,
796
- offsetX: A.offsetX ?? 0,
797
- offsetY: A.offsetY ?? 0
798
- }), X = new B.CanvasTexture(q), X.needsUpdate = !0, X;
799
- }
800
- function Nt(t, e) {
801
- const {
802
- lines: n,
803
- color: i,
804
- strokeLayers: a,
805
- outlineEnabled: r,
806
- strokeColor: o,
807
- strokeWidth: l,
808
- strokeOpacity: s,
809
- shadowLayers: A,
810
- shadowEnabled: c,
811
- innerShadow: h,
812
- glow: f,
813
- shadowColor: u,
814
- shadowBlur: v,
815
- shadowOffsetX: S,
816
- shadowOffsetY: m,
817
- shadowOpacity: C,
818
- fontWeight: E,
819
- fontStyle: I,
820
- fontFamily: M,
821
- fontSize: b,
822
- textAlign: y,
823
- verticalAlign: F,
824
- overflow: p,
825
- resizeToFit: g,
826
- minFontSize: k,
827
- letterSpacing: J,
828
- lineSpacing: P,
829
- bgFillMode: K,
830
- bgOpacity: W,
831
- bgFit: z,
832
- bgAutoSize: V,
833
- bgWidth: N,
834
- bgHeight: U,
835
- bgGradientStops: Z,
836
- bgTextureFit: X,
837
- bgTextureFlipX: q,
838
- bgTextureFlipY: Y,
839
- borderColor: T,
840
- borderWidth: Q,
841
- borderRadius: L,
842
- padding: H,
843
- aspect: j,
844
- resolution: _,
845
- underline: Ae,
846
- strikethrough: ce,
847
- bendPreset: ge,
848
- bendStrength: re
849
- } = t, de = x(
850
- () => r === !1 ? [] : a,
851
- [r, a]
852
- ), fe = x(
853
- () => c === !1 ? [] : A,
854
- [c, A]
855
- ), G = void 0, he = x(
856
- () => ({
857
- text: e.text,
858
- lines: n,
859
- color: i,
860
- strokeLayers: de,
861
- strokeColor: r === !1 ? void 0 : o,
862
- strokeWidth: r === !1 ? 0 : l,
863
- strokeOpacity: s,
864
- shadowLayers: fe,
865
- innerShadow: h,
866
- glow: f,
867
- shadowColor: c === !1 ? void 0 : u,
868
- shadowBlur: c === !1 ? 0 : v,
869
- shadowOffsetX: c === !1 ? 0 : S,
870
- shadowOffsetY: c === !1 ? 0 : m,
871
- shadowOpacity: C,
872
- fontWeight: E,
873
- fontStyle: I,
874
- fontFamily: M,
875
- fontSize: b,
876
- textAlign: y,
877
- verticalAlign: F,
878
- overflow: p,
879
- resizeToFit: g,
880
- minFontSize: k,
881
- letterSpacing: J,
882
- lineSpacing: P,
883
- bgColor: e.bgColor,
884
- bgFillMode: K,
885
- bgOpacity: W,
886
- bgFit: z,
887
- bgAutoSize: V,
888
- bgWidth: N,
889
- bgHeight: U,
890
- bgGradientStops: Z,
891
- bgTextureImage: G,
892
- bgTextureFit: X,
893
- bgTextureFlipX: q,
894
- bgTextureFlipY: Y,
895
- borderColor: T,
896
- borderWidth: Q,
897
- borderRadius: L,
898
- padding: H,
899
- height: _,
900
- width: Math.round(_ * Math.max(j, 0.1)),
901
- underline: Ae,
902
- strikethrough: ce,
903
- bendPreset: ge,
904
- bendStrength: re
905
- }),
906
- [
907
- e.text,
908
- e.bgColor,
909
- n,
910
- i,
911
- de,
912
- r,
913
- o,
914
- l,
915
- s,
916
- fe,
917
- h,
918
- f,
919
- c,
920
- u,
921
- v,
922
- S,
923
- m,
924
- C,
925
- E,
926
- I,
927
- M,
928
- b,
929
- y,
930
- F,
931
- p,
932
- g,
933
- k,
934
- J,
935
- P,
936
- K,
937
- W,
938
- z,
939
- V,
940
- N,
941
- U,
942
- Z,
943
- G,
944
- X,
945
- q,
946
- Y,
947
- T,
948
- Q,
949
- L,
950
- H,
951
- j,
952
- _,
953
- Ae,
954
- ce,
955
- ge,
956
- re
957
- ]
958
- ), Qe = x(() => Vt(he), [he]);
959
- return Ie(Qe), Qe;
960
- }
961
- function Ut(t) {
962
- const e = { ...kt, ...t }, {
963
- text: n,
964
- bgColor: i,
965
- opacity: a,
966
- name: r,
967
- overlay: o = !0,
968
- position: l,
969
- rotation: s,
970
- scale: A,
971
- visible: c,
972
- renderOrder: h
973
- } = e, [f, u] = ve(null), [v, S] = ve(null), m = R(n);
974
- m.current !== n && (m.current = n, f !== null && u(null));
975
- const C = R(i);
976
- C.current !== i && (C.current = i, v !== null && S(null));
977
- const E = R(null), b = Nt(e, { text: f ?? n, bgColor: v ?? i });
978
- return te(() => {
979
- const y = E.current;
980
- if (y)
981
- return y.userData.setText = (F) => u(F), y.userData.setBgColor = (F) => S(F), () => {
982
- delete y.userData.setText, delete y.userData.setBgColor;
983
- };
984
- }, []), /* @__PURE__ */ d(
985
- Je,
986
- {
987
- ref: E,
988
- name: r,
989
- texture: b,
990
- overlay: o,
991
- opacity: a,
992
- position: l,
993
- rotation: s,
994
- scale: A,
995
- visible: c,
996
- renderOrder: h
997
- }
998
- );
999
- }
1000
- const Zt = "data:image/png;base64,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";
1001
- function ye(t, e) {
1002
- 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];
1003
- }
1004
- const qt = (t, e) => t || (e === "cover" ? "fill" : e === "stretch" ? "stretch" : "fit"), De = (t, e) => {
1005
- const [n, i] = ye(t, e);
1006
- return n === 1 && i === 1 ? [1, 1, 1] : n < 1 ? [1, 1 / n, 1] : [1 / i, 1, 1];
1007
- }, jt = (t, e, n, i, a, r, o) => {
1008
- let l = [1, 1, 1], s = [1, 1, 1], A = [1, 1], c = [0, 0];
1009
- switch (t) {
1010
- case "fit":
1011
- l = ye(e, n), s = l;
1012
- break;
1013
- case "fitWidth":
1014
- l = [1, e > 0 && n > 0 ? e / n : 1, 1], s = l;
1015
- break;
1016
- case "fitHeight":
1017
- l = [e > 0 && n > 0 ? n / e : 1, 1, 1], s = l;
1018
- break;
1019
- case "center":
1020
- l = r && o && r.width > 0 && r.height > 0 && o.width > 0 && o.height > 0 ? [o.width / r.width, o.height / r.height, 1] : ye(e, n), s = l;
1021
- break;
1022
- case "fill":
1023
- l = De(e, n), s = l;
1024
- break;
1025
- case "fillAndCut":
1026
- if (s = De(e, n), n > e) {
1027
- const h = e / n;
1028
- A = [h, 1], c = [(1 - h) / 2, 0];
1029
- } else if (n < e) {
1030
- const h = n / e;
1031
- A = [1, h], c = [0, (1 - h) / 2];
1032
- }
1033
- break;
1034
- }
1035
- return {
1036
- meshScale: [l[0] * (i ? -1 : 1), l[1] * (a ? -1 : 1), 1],
1037
- guideScale: s,
1038
- repeat: A,
1039
- offset: c
1040
- };
1041
- }, _t = (t, e) => t ?? (e ? { kind: "image", src: e } : { kind: "default" }), $ = (t) => {
1042
- const e = t.image;
1043
- return {
1044
- width: (e == null ? void 0 : e.videoWidth) ?? (e == null ? void 0 : e.width) ?? 1,
1045
- height: (e == null ? void 0 : e.videoHeight) ?? (e == null ? void 0 : e.height) ?? 1
1046
- };
1047
- }, $t = (t) => {
1048
- if (t.isVideoTexture || t.isCanvasTexture) return !0;
1049
- const e = t.image;
1050
- return typeof HTMLCanvasElement < "u" && e instanceof HTMLCanvasElement || typeof OffscreenCanvas < "u" && e instanceof OffscreenCanvas;
1051
- }, en = (t) => {
1052
- const { width: e, height: n } = $(t);
1053
- return e > 0 && n > 0 ? e / n : 1;
1054
- }, tn = /* @__PURE__ */ new Set([
1055
- "overlay",
1056
- "softLight",
1057
- "hardLight",
1058
- "difference",
1059
- "exclusion"
1060
- ]), nn = {
1061
- overlay: 0,
1062
- softLight: 1,
1063
- hardLight: 2,
1064
- difference: 3,
1065
- exclusion: 4
1066
- }, rn = (t) => {
1067
- switch (t) {
1068
- case "add":
1069
- return { blending: B.AdditiveBlending };
1070
- case "subtract":
1071
- return { blending: B.SubtractiveBlending };
1072
- case "multiply":
1073
- return { blending: B.MultiplyBlending };
1074
- case "screen":
1075
- return {
1076
- blending: B.CustomBlending,
1077
- blendSrc: B.OneFactor,
1078
- blendDst: B.OneMinusSrcColorFactor,
1079
- blendEquation: B.AddEquation
1080
- };
1081
- case "lighten":
1082
- return {
1083
- blending: B.CustomBlending,
1084
- blendSrc: B.OneFactor,
1085
- blendDst: B.OneFactor,
1086
- blendEquation: B.MaxEquation
1087
- };
1088
- case "darken":
1089
- return {
1090
- blending: B.CustomBlending,
1091
- blendSrc: B.OneFactor,
1092
- blendDst: B.OneFactor,
1093
- blendEquation: B.MinEquation
1094
- };
1095
- default:
1096
- return { blending: B.NormalBlending };
1097
- }
1098
- }, an = `
1099
- varying vec2 vUv;
1100
- void main(){vUv=uv;gl_Position=projectionMatrix*modelViewMatrix*vec4(position,1.0);}`, on = `
1101
- uniform sampler2D imageMap;uniform sampler2D backdropMap;uniform vec2 resolution;
1102
- uniform vec3 tint;uniform float opacity;uniform float alphaTest;uniform int blendMode;varying vec2 vUv;
1103
- float overlayChannel(float b,float s){return b<.5?2.*b*s:1.-2.*(1.-b)*(1.-s);}
1104
- float hardLightChannel(float b,float s){return s<.5?2.*b*s:1.-2.*(1.-b)*(1.-s);}
1105
- 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);}
1106
- vec3 applyAdvancedBlend(vec3 b,vec3 s){
1107
- if(blendMode==0)return vec3(overlayChannel(b.r,s.r),overlayChannel(b.g,s.g),overlayChannel(b.b,s.b));
1108
- if(blendMode==1)return vec3(softLightChannel(b.r,s.r),softLightChannel(b.g,s.g),softLightChannel(b.b,s.b));
1109
- if(blendMode==2)return vec3(hardLightChannel(b.r,s.r),hardLightChannel(b.g,s.g),hardLightChannel(b.b,s.b));
1110
- if(blendMode==3)return abs(b-s);return b+s-2.*b*s;}
1111
- void main(){vec4 image=texture2D(imageMap,vUv)*vec4(tint,opacity);if(image.a<=alphaTest)discard;
1112
- vec2 uv=gl_FragCoord.xy/max(resolution,vec2(1.));vec3 base=texture2D(backdropMap,uv).rgb;
1113
- vec3 mixed=applyAdvancedBlend(base,image.rgb);gl_FragColor=vec4(mix(base,mixed,image.a),1.);
1114
- #include <colorspace_fragment>
1115
- }`, ln = () => {
1116
- const t = document.createElement("canvas");
1117
- t.width = 256, t.height = 256;
1118
- const e = t.getContext("2d");
1119
- if (!e) return new B.CanvasTexture(t);
1120
- const n = e.createRadialGradient(96, 80, 10, 128, 128, 128);
1121
- n.addColorStop(0, "#ffffff"), n.addColorStop(0.18, "#f8fafc"), n.addColorStop(0.44, "#cbd5e1"), n.addColorStop(0.72, "#475569"), n.addColorStop(1, "#0f172a"), e.fillStyle = n, e.fillRect(0, 0, t.width, t.height);
1122
- const i = new B.CanvasTexture(t);
1123
- return i.needsUpdate = !0, i;
1124
- }, sn = ["alpha", "red", "green", "luminance"], An = (t) => {
1125
- const e = sn.indexOf(t ?? "alpha");
1126
- return e < 0 ? 0 : e;
1127
- }, cn = `
1128
- varying vec2 vUv;
1129
- void main(){vUv=uv;gl_Position=projectionMatrix*modelViewMatrix*vec4(position,1.0);}`, gn = `
1130
- uniform sampler2D imageMap;uniform sampler2D maskMap;uniform mat3 mapTransform;
1131
- uniform vec3 tint;uniform float opacity;uniform float alphaTest;uniform int maskChannel;uniform float maskInvert;
1132
- uniform float maskFeather;uniform float maskErode;uniform vec2 maskTexel;
1133
- varying vec2 vUv;
1134
- float coverageAt(vec2 uv){
1135
- vec4 m=texture2D(maskMap,uv);
1136
- float c=maskChannel==0?m.a:maskChannel==1?m.r:maskChannel==2?m.g:dot(m.rgb,vec3(0.299,0.587,0.114));
1137
- return mix(c,1.0-c,maskInvert);}
1138
- void main(){
1139
- vec2 uv=(mapTransform*vec3(vUv,1.0)).xy;
1140
- vec4 image=texture2D(imageMap,uv);
1141
- float coverage;
1142
- if(maskFeather>0.0){
1143
- vec2 step=maskTexel*maskFeather;
1144
- coverage=0.0;
1145
- for(int y=-1;y<=1;y++){for(int x=-1;x<=1;x++){coverage+=coverageAt(uv+vec2(float(x),float(y))*step);}}
1146
- coverage/=9.0;
1147
- // Erode: raise the threshold on the blurred edge so the silhouette shrinks
1148
- // by up to the feather radius (maskErode is a fraction of that width).
1149
- coverage=smoothstep(clamp(maskErode,0.0,0.95),1.0,coverage);
1150
- }else{coverage=coverageAt(uv);}
1151
- float alpha=image.a*opacity*coverage;
1152
- if(alpha<=alphaTest)discard;
1153
- gl_FragColor=vec4(image.rgb*tint,alpha);
1154
- #include <colorspace_fragment>
1155
- }`;
1156
- function dn({
1157
- materialTexture: t,
1158
- sourceTexture: e,
1159
- onSourceSizeChange: n
1160
- }) {
1161
- const i = R($(e));
1162
- return se(() => {
1163
- t.needsUpdate = !0;
1164
- const a = $(e);
1165
- (a.width !== i.current.width || a.height !== i.current.height) && (i.current = a, n(a));
1166
- }), null;
1167
- }
1168
- const fn = 999, hn = Math.PI / 180, un = gt([
1169
- ft
1170
- ]);
1171
- function vn(t) {
1172
- const [e, n] = ve(null);
1173
- return te(() => {
1174
- if (n(null), !t || typeof document > "u") return;
1175
- const i = new AbortController();
1176
- let a;
1177
- return un({ kind: "gif", src: t }, i.signal).then((r) => {
1178
- a = r, n(r);
1179
- }).catch((r) => {
1180
- r instanceof DOMException && r.name === "AbortError" || console.warn("[xr-sdk] Failed to load GIF ScreenImage source", r);
1181
- }), () => {
1182
- i.abort(), dt(a);
1183
- };
1184
- }, [t]), e;
1185
- }
1186
- function Xe({
1187
- name: t,
1188
- source: e,
1189
- src: n,
1190
- fit: i,
1191
- stretchMode: a,
1192
- materialType: r = "unlit",
1193
- blendMode: o = "normal",
1194
- backdropTexture: l = null,
1195
- rotation: s = 0,
1196
- opacity: A = 1,
1197
- color: c = "#ffffff",
1198
- maskTexture: h = null,
1199
- maskChannel: f,
1200
- maskInvert: u = !1,
1201
- maskFeather: v = 0,
1202
- maskErode: S = 0,
1203
- flipX: m = !1,
1204
- flipY: C = !1,
1205
- renderOrder: E = fn,
1206
- transparent: I = !0,
1207
- alphaTest: M = 0,
1208
- overlay: b = !0,
1209
- visible: y,
1210
- layoutSize: F
1211
- }) {
1212
- const { size: p } = me(), g = ct(), k = _t(e, n), J = k.kind === "image" ? k.src : Zt, P = yt(J), K = vn(
1213
- k.kind === "gif" ? k.src : void 0
1214
- ), W = k.kind === "texture" ? k.texture : k.kind === "gif" ? (K == null ? void 0 : K.texture) ?? P : P, z = Pe(), V = qt(a, i), [N, U] = ve(
1215
- () => $(W)
1216
- );
1217
- te(() => {
1218
- U($(W));
1219
- }, [W]);
1220
- const Z = $t(W), X = Z ? N : $(W), q = Be(
1221
- (G) => U(G),
1222
- []
1223
- ), Y = X.width > 0 && X.height > 0 ? X.width / X.height : en(W), T = x(() => ln(), []), Q = x(
1224
- () => jt(
1225
- V,
1226
- z,
1227
- Y,
1228
- m,
1229
- C,
1230
- F,
1231
- X
1232
- ),
1233
- [V, z, Y, m, C, F, X]
1234
- ), L = x(() => {
1235
- const G = W.clone();
1236
- return G.needsUpdate = !0, G.repeat.set(Q.repeat[0], Q.repeat[1]), G.offset.set(Q.offset[0], Q.offset[1]), G;
1237
- }, [W, Q.repeat, Q.offset]);
1238
- Ie(L), Ie(T);
1239
- const H = x(() => rn(o), [o]), j = tn.has(o) ? o : null, _ = l ?? (g == null ? void 0 : g.finalColorTexture) ?? (g == null ? void 0 : g.sceneColorTexture) ?? null, Ae = j !== null && _ !== null, ce = x(
1240
- () => ({
1241
- imageMap: L,
1242
- backdropMap: _,
1243
- resolution: new B.Vector2(p.width, p.height),
1244
- tint: new B.Color(c),
1245
- opacity: A,
1246
- alphaTest: M,
1247
- blendMode: j === null ? 0 : nn[j]
1248
- }),
1249
- [
1250
- j,
1251
- M,
1252
- _,
1253
- p.height,
1254
- p.width,
1255
- c,
1256
- L,
1257
- A
1258
- ]
1259
- ), ge = we(ce), re = x(() => (L.updateMatrix(), L.matrix.clone()), [L]), de = x(
1260
- () => ({
1261
- imageMap: L,
1262
- maskMap: h,
1263
- mapTransform: re,
1264
- tint: new B.Color(c),
1265
- opacity: A,
1266
- alphaTest: M,
1267
- maskChannel: An(f),
1268
- maskInvert: u ? 1 : 0,
1269
- maskFeather: v,
1270
- maskErode: S,
1271
- // Feather radius is expressed in mask texels so it stays the same
1272
- // on-screen width whatever resolution the mask arrives at.
1273
- maskTexel: (() => {
1274
- const { width: G, height: he } = $(h ?? L);
1275
- return new B.Vector2(1 / Math.max(G, 1), 1 / Math.max(he, 1));
1276
- })()
1277
- }),
1278
- [
1279
- M,
1280
- c,
1281
- re,
1282
- f,
1283
- S,
1284
- v,
1285
- u,
1286
- h,
1287
- L,
1288
- A
1289
- ]
1290
- ), fe = we(de);
1291
- return /* @__PURE__ */ D("group", { visible: y, children: [
1292
- Z ? /* @__PURE__ */ d(
1293
- dn,
1294
- {
1295
- materialTexture: L,
1296
- sourceTexture: W,
1297
- onSourceSizeChange: q
1298
- }
1299
- ) : null,
1300
- /* @__PURE__ */ D(
1301
- "mesh",
1302
- {
1303
- name: t,
1304
- scale: Q.meshScale,
1305
- rotation: [0, 0, s * hn],
1306
- renderOrder: E,
1307
- children: [
1308
- /* @__PURE__ */ d("planeGeometry", { args: [1, 1] }),
1309
- h ? /* @__PURE__ */ d(
1310
- "shaderMaterial",
1311
- {
1312
- uniforms: fe,
1313
- vertexShader: cn,
1314
- fragmentShader: gn,
1315
- transparent: !0,
1316
- depthTest: !b,
1317
- depthWrite: !b,
1318
- toneMapped: !1,
1319
- ...H
1320
- }
1321
- ) : Ae ? /* @__PURE__ */ d(
1322
- "shaderMaterial",
1323
- {
1324
- uniforms: ge,
1325
- vertexShader: an,
1326
- fragmentShader: on,
1327
- transparent: !1,
1328
- depthTest: !b,
1329
- depthWrite: !b,
1330
- toneMapped: !1
1331
- }
1332
- ) : r === "standardPBR" ? /* @__PURE__ */ d(
1333
- "meshStandardMaterial",
1334
- {
1335
- map: L,
1336
- transparent: I || A < 1,
1337
- opacity: A,
1338
- color: c,
1339
- alphaTest: M,
1340
- depthTest: !b,
1341
- depthWrite: !b,
1342
- toneMapped: !1,
1343
- roughness: 0.72,
1344
- metalness: 0.08,
1345
- emissive: c,
1346
- emissiveIntensity: 0.18,
1347
- ...H
1348
- }
1349
- ) : r === "matcap" ? /* @__PURE__ */ d(
1350
- "meshMatcapMaterial",
1351
- {
1352
- map: L,
1353
- matcap: T,
1354
- transparent: I || A < 1,
1355
- opacity: A,
1356
- color: c,
1357
- alphaTest: M,
1358
- depthTest: !b,
1359
- depthWrite: !b,
1360
- toneMapped: !1,
1361
- ...H
1362
- }
1363
- ) : /* @__PURE__ */ d(
1364
- "meshBasicMaterial",
1365
- {
1366
- map: L,
1367
- transparent: I || A < 1,
1368
- opacity: A,
1369
- color: c,
1370
- alphaTest: M,
1371
- depthTest: !b,
1372
- depthWrite: !b,
1373
- toneMapped: !1,
1374
- ...H
1375
- }
1376
- )
1377
- ]
1378
- }
1379
- )
1380
- ] });
1381
- }
1382
- const mn = { left: 0, right: 0, top: 0, bottom: 0 }, Sn = Math.PI / 180;
1383
- function Cn({
1384
- anchors: t,
1385
- offsets: e,
1386
- pivot: n,
1387
- rotation: i,
1388
- children: a
1389
- }) {
1390
- const { width: r, height: o } = Me(), l = x(
1391
- () => ({ left: -1, right: 1, top: 1, bottom: -1, ...t }),
1392
- [t]
1393
- ), s = x(() => ({ ...mn, ...e }), [e]), A = x(
1394
- () => ht(r, o, l, s, n),
1395
- [o, n, l, s, r]
1396
- ), c = A.width > 0 && A.height > 0 ? A.width / A.height : null;
1397
- return /* @__PURE__ */ d(
1398
- "group",
1399
- {
1400
- position: [A.centerX - A.pivotX, A.centerY - A.pivotY, 0],
1401
- rotation: [0, 0, i * Sn],
1402
- scale: [A.width, A.height, 1],
1403
- children: /* @__PURE__ */ d(et.Provider, { value: c, children: a })
1404
- }
1405
- );
1406
- }
1407
- function In({
1408
- transform: t,
1409
- guideLayer: e,
1410
- onChange: n,
1411
- children: i
1412
- }) {
1413
- return /* @__PURE__ */ d(
1414
- Ge,
1415
- {
1416
- guideColor: "#22d3ee",
1417
- guideLayer: e,
1418
- transform: t,
1419
- onChange: n,
1420
- children: i
1421
- }
1422
- );
1423
- }
1424
- const En = {
1425
- left: -1,
1426
- right: 1,
1427
- top: 1,
1428
- bottom: -1
1429
- }, bn = {}, pn = [0.5, 0.5];
1430
- [
1431
- ["Normal", "normal"],
1432
- ["Add", "add"],
1433
- ["Subtract", "subtract"],
1434
- ["Multiply", "multiply"],
1435
- ["Screen", "screen"],
1436
- ["Lighten", "lighten"],
1437
- ["Darken", "darken"],
1438
- ["Overlay", "overlay"],
1439
- ["Soft Light", "softLight"],
1440
- ["Hard Light", "hardLight"],
1441
- ["Difference", "difference"],
1442
- ["Exclusion", "exclusion"]
1443
- ].map(([t, e]) => ({ label: t, value: e }));
1444
- const Tn = (t) => [
1445
- t[0] * 2 - 1,
1446
- t[1] * 2 - 1
1447
- ], yn = (t, e, n, i, a) => t || (!i && !a ? En : He({
1448
- coordinateSpace: e,
1449
- canvasSize: n ?? ae,
1450
- position: i,
1451
- size: a
1452
- }));
1453
- function Bn({
1454
- anchors: t,
1455
- coordinateSpace: e,
1456
- canvasSize: n,
1457
- position: i,
1458
- size: a,
1459
- offsets: r = bn,
1460
- pivot: o = pn,
1461
- rotation: l = 0,
1462
- transform: s,
1463
- onScreenTransformChange: A,
1464
- transformGuideLayer: c = "scene",
1465
- ...h
1466
- }) {
1467
- const f = x(
1468
- () => yn(t, e, n, i, a),
1469
- [t, n, e, i, a]
1470
- ), u = x(() => Tn(o), [o]);
1471
- if (s) {
1472
- const v = Oe(s);
1473
- return v.enabled ? /* @__PURE__ */ d(
1474
- In,
1475
- {
1476
- guideLayer: c,
1477
- transform: v,
1478
- onChange: A,
1479
- children: /* @__PURE__ */ d(
1480
- Xe,
1481
- {
1482
- ...h,
1483
- layoutSize: v.size,
1484
- renderOrder: h.renderOrder ?? v.renderOrder,
1485
- overlay: h.overlay ?? v.overlay,
1486
- visible: h.visible ?? v.visible,
1487
- rotation: 0
1488
- }
1489
- )
1490
- }
1491
- ) : null;
1492
- }
1493
- return /* @__PURE__ */ d(
1494
- Cn,
1495
- {
1496
- anchors: f,
1497
- offsets: r,
1498
- pivot: u,
1499
- rotation: l,
1500
- children: /* @__PURE__ */ d(
1501
- Xe,
1502
- {
1503
- ...h,
1504
- layoutSize: a ? { width: a[0], height: a[1] } : void 0,
1505
- rotation: 0
1506
- }
1507
- )
1508
- }
1509
- );
1510
- }
1511
- const Mn = 2.5, Qn = "#38bdf8", kn = {
1512
- top: { left: -0.92, right: 0.92, top: 0.92, bottom: 0.56 },
1513
- center: { left: -0.92, right: 0.92, top: 0.18, bottom: -0.18 },
1514
- bottom: { left: -0.92, right: 0.92, top: -0.56, bottom: -0.92 }
1515
- };
1516
- function wn({
1517
- bend: t,
1518
- bendPreset: e,
1519
- bendStrength: n
1520
- }) {
1521
- return {
1522
- bendPreset: (t == null ? void 0 : t.preset) ?? e,
1523
- bendStrength: (t == null ? void 0 : t.strength) ?? n
1524
- };
1525
- }
1526
- function xn({
1527
- width: t,
1528
- height: e
1529
- }) {
1530
- const n = Math.max(1, t), i = Math.max(1, e);
1531
- return {
1532
- aspect: n / i,
1533
- resolution: i
1534
- };
1535
- }
1536
- function Re(t) {
1537
- const e = Pe(), { bend: n, layoutSize: i, renderOrder: a, overlay: r = !0, ...o } = t, l = i ? xn(i) : void 0, s = Math.max(
1538
- (l == null ? void 0 : l.aspect) ?? e ?? Mn,
1539
- 0.1
1540
- ), A = wn({
1541
- bend: n,
1542
- bendPreset: o.bendPreset,
1543
- bendStrength: o.bendStrength
1544
- });
1545
- return /* @__PURE__ */ d(
1546
- Ut,
1547
- {
1548
- ...o,
1549
- aspect: s,
1550
- resolution: (l == null ? void 0 : l.resolution) ?? o.resolution,
1551
- ...A,
1552
- overlay: r,
1553
- renderOrder: a
1554
- }
1555
- );
1556
- }
1557
- function Ln({
1558
- transform: t,
1559
- guideLayer: e,
1560
- onChange: n,
1561
- children: i
1562
- }) {
1563
- return /* @__PURE__ */ d(
1564
- Ge,
1565
- {
1566
- guideColor: Qn,
1567
- guideLayer: e,
1568
- transform: t,
1569
- onChange: n,
1570
- children: i
1571
- }
1572
- );
1573
- }
1574
- function Fn(t = "center") {
1575
- return kn[t];
1576
- }
1577
- function Wn({
1578
- anchors: t,
1579
- coordinateSpace: e,
1580
- canvasSize: n,
1581
- position: i,
1582
- size: a,
1583
- transform: r,
1584
- pivot: o,
1585
- verticalAlign: l
1586
- }) {
1587
- return {
1588
- resolvedAnchors: r != null && r.anchors ? r.anchors : t || (r != null && r.position || r != null && r.size || i || a ? He({
1589
- coordinateSpace: (r == null ? void 0 : r.coordinateSpace) ?? e,
1590
- canvasSize: (r == null ? void 0 : r.canvasSize) ?? n,
1591
- position: (r == null ? void 0 : r.position) ?? i,
1592
- size: (r == null ? void 0 : r.size) ?? a
1593
- }) : Fn(l)),
1594
- resolvedOffsets: r == null ? void 0 : r.offsets,
1595
- resolvedPivot: Bt((r == null ? void 0 : r.pivot) ?? o ?? [0.5, 0.5])
1596
- };
1597
- }
1598
- function Yn({
1599
- anchors: t,
1600
- coordinateSpace: e,
1601
- canvasSize: n,
1602
- offsets: i,
1603
- pivot: a,
1604
- position: r,
1605
- rotation: o = 0,
1606
- size: l,
1607
- transform: s,
1608
- screenTransform: A,
1609
- onScreenTransformChange: c,
1610
- transformGuideLayer: h = "scene",
1611
- verticalAlign: f = "center",
1612
- ...u
1613
- }) {
1614
- const { resolvedAnchors: v, resolvedOffsets: S, resolvedPivot: m } = x(
1615
- () => Wn({
1616
- anchors: t,
1617
- coordinateSpace: e,
1618
- canvasSize: n,
1619
- position: r,
1620
- size: l,
1621
- transform: s,
1622
- pivot: a,
1623
- verticalAlign: f
1624
- }),
1625
- [t, n, e, a, r, l, s, f]
1626
- ), C = (s == null ? void 0 : s.offsets) ?? i ?? S, E = (s == null ? void 0 : s.rotation) ?? o;
1627
- if (A) {
1628
- const I = Oe(A);
1629
- return I.enabled ? /* @__PURE__ */ d(
1630
- Ln,
1631
- {
1632
- guideLayer: h,
1633
- transform: I,
1634
- onChange: c,
1635
- children: /* @__PURE__ */ d(
1636
- Re,
1637
- {
1638
- ...u,
1639
- layoutSize: I.size,
1640
- verticalAlign: f,
1641
- renderOrder: u.renderOrder ?? I.renderOrder,
1642
- overlay: u.overlay ?? I.overlay,
1643
- visible: u.visible ?? I.visible
1644
- }
1645
- )
1646
- }
1647
- ) : null;
1648
- }
1649
- return /* @__PURE__ */ d(ut, { anchors: v, offsets: C, pivot: m, children: /* @__PURE__ */ d("group", { rotation: [0, 0, E * Math.PI / 180], children: /* @__PURE__ */ d(Re, { ...u, verticalAlign: f }) }) });
1650
- }
1651
- const Dn = ({ settings: t, transform: e }) => {
1652
- const n = x(
1653
- () => /* @__PURE__ */ D("group", { name: "LightEditorGizmo", visible: t.showHelper, children: [
1654
- /* @__PURE__ */ D("mesh", { renderOrder: 1e3, children: [
1655
- /* @__PURE__ */ d("sphereGeometry", { args: [0.12, 12, 8] }),
1656
- /* @__PURE__ */ d("meshBasicMaterial", { color: "#facc15", wireframe: !0, depthTest: !1, depthWrite: !1 })
1657
- ] }),
1658
- /* @__PURE__ */ D("mesh", { position: [0, 0, -0.35], rotation: [Math.PI / 2, 0, 0], renderOrder: 1e3, children: [
1659
- /* @__PURE__ */ d("coneGeometry", { args: [0.08, 0.45, 12] }),
1660
- /* @__PURE__ */ d("meshBasicMaterial", { color: "#fde047", wireframe: !0, depthTest: !1, depthWrite: !1 })
1661
- ] })
1662
- ] }),
1663
- [t.showHelper]
1664
- );
1665
- return t.enabled ? /* @__PURE__ */ D(ue, { value: e, children: [
1666
- n,
1667
- t.type === "ambient" ? /* @__PURE__ */ d("ambientLight", { color: t.color, intensity: t.intensity }) : null,
1668
- t.type === "directional" ? /* @__PURE__ */ d(
1669
- "directionalLight",
1670
- {
1671
- color: t.color,
1672
- intensity: t.intensity,
1673
- castShadow: t.castShadow
1674
- }
1675
- ) : null,
1676
- t.type === "point" ? /* @__PURE__ */ d(
1677
- "pointLight",
1678
- {
1679
- color: t.color,
1680
- intensity: t.intensity,
1681
- distance: t.distance,
1682
- decay: t.decay,
1683
- castShadow: t.castShadow
1684
- }
1685
- ) : null,
1686
- t.type === "spot" ? /* @__PURE__ */ d(
1687
- "spotLight",
1688
- {
1689
- color: t.color,
1690
- intensity: t.intensity,
1691
- distance: t.distance,
1692
- angle: t.angle,
1693
- penumbra: t.penumbra,
1694
- decay: t.decay,
1695
- castShadow: t.castShadow
1696
- }
1697
- ) : null
1698
- ] }) : null;
1699
- }, Xn = ({
1700
- source: t,
1701
- target: e,
1702
- settings: n
1703
- }) => {
1704
- if (!n.enabled || !e) return !1;
1705
- const i = new ke();
1706
- if (n.mode === "point") {
1707
- const r = new ie();
1708
- e.getWorldPosition(r), t.lookAt(r), i.copy(t.quaternion);
1709
- } else
1710
- e.getWorldQuaternion(i);
1711
- const a = new ke().setFromEuler(
1712
- new _e(
1713
- n.offsetRotation.x * Math.PI / 180,
1714
- n.offsetRotation.y * Math.PI / 180,
1715
- n.offsetRotation.z * Math.PI / 180
1716
- )
1717
- );
1718
- return t.quaternion.copy(i).multiply(a), !0;
1719
- }, Rn = ({ target: t, settings: e, children: n }) => {
1720
- const i = R(null);
1721
- return se(() => {
1722
- i.current && Xn({ source: i.current, target: t, settings: e });
1723
- }), /* @__PURE__ */ d("group", { ref: i, children: n });
1724
- }, Pn = (t, e) => {
1725
- let n = t;
1726
- for (; n && n !== e; ) {
1727
- if ("isTransformControls" in n && n.isTransformControls === !0) return !0;
1728
- n = n.parent;
1729
- }
1730
- return !1;
1731
- }, O = ({ children: t, layer: e }) => {
1732
- const n = R(null), i = R(0), a = Be(() => {
1733
- e === void 0 || !n.current || n.current.traverse((r) => {
1734
- Pn(r, n.current) || r.layers.set(e);
1735
- });
1736
- }, [e]);
1737
- return je(() => {
1738
- a(), i.current = 2;
1739
- }, [a, t]), se(() => {
1740
- i.current <= 0 || (a(), i.current -= 1);
1741
- }, -1e3), /* @__PURE__ */ d("group", { ref: n, children: t });
1742
- }, w = (t, e) => (t == null ? void 0 : t.type) === e, Gn = (t) => null, oe = ({ children: t, inside: e }) => e ? /* @__PURE__ */ d(Se, { children: t }) : /* @__PURE__ */ d(Qt, { children: t }), On = ({
1743
- children: t,
1744
- insideScreenSpaceUI: e,
1745
- objectRef: n,
1746
- renderOrder: i,
1747
- settings: a
1748
- }) => /* @__PURE__ */ d(oe, { inside: e, children: /* @__PURE__ */ d(zn, { settings: a, renderOrder: i, objectRef: n, children: t }) }), zn = ({
1749
- children: t,
1750
- objectRef: e,
1751
- renderOrder: n,
1752
- settings: i
1753
- }) => {
1754
- const a = Me();
1755
- if (!i.enabled || !i.visible) return null;
1756
- const r = ze({ transform: i, parentSize: a });
1757
- return /* @__PURE__ */ d(
1758
- "group",
1759
- {
1760
- ref: e,
1761
- position: r.center,
1762
- rotation: r.rotation,
1763
- scale: r.size,
1764
- renderOrder: n ?? i.renderOrder,
1765
- children: t
1766
- }
1767
- );
1768
- }, Hn = ({
1769
- anchor: t,
1770
- children: e,
1771
- insideScreenSpaceUI: n,
1772
- objectRef: i,
1773
- renderOrder: a,
1774
- settings: r
1775
- }) => /* @__PURE__ */ d(oe, { inside: n, children: /* @__PURE__ */ d(
1776
- Jn,
1777
- {
1778
- anchor: t,
1779
- settings: r,
1780
- renderOrder: a,
1781
- objectRef: i,
1782
- children: e
1783
- }
1784
- ) }), Jn = ({
1785
- anchor: t,
1786
- children: e,
1787
- objectRef: n,
1788
- renderOrder: i,
1789
- settings: a
1790
- }) => {
1791
- const r = It({ targetFps: 24 }), { size: o } = me(), l = Me(), s = R(null), A = R(new ie()), c = R({
1792
- pos: new ie(),
1793
- prevRaw: new ie(),
1794
- dxHat: new ie(),
1795
- initialized: !1
1796
- }), h = R(!1), f = R({ x: 0, y: 0, z: 0, visibility: 0 }), u = R({ x: 0, y: 0 }), v = r ? mt(
1797
- t.target,
1798
- r.landmarks,
1799
- t.customAnchorPoint,
1800
- f.current
1801
- ) : null, S = v ? Et({ point: v, viewportSize: o, target: u.current }) : null, m = S ? ze({
1802
- transform: {
1803
- ...a,
1804
- position: {
1805
- x: S.x + a.position.x + t.offset.x,
1806
- y: S.y + a.position.y + t.offset.y
1807
- }
1808
- },
1809
- parentSize: l
1810
- }) : null;
1811
- return se((C, E) => {
1812
- const I = s.current;
1813
- if (I) {
1814
- if (I.visible = !!(m && a.enabled && a.visible), !m) {
1815
- h.current = !1, c.current.initialized = !1;
1816
- return;
1817
- }
1818
- A.current.set(m.center[0], m.center[1], t.offset.z), t.smoothing > 0 ? (Ct(
1819
- c.current,
1820
- A.current,
1821
- h.current ? E : 0,
1822
- t.smoothing
1823
- ), I.position.copy(c.current.pos)) : I.position.copy(A.current), h.current = !0;
1824
- }
1825
- }), /* @__PURE__ */ d(
1826
- "group",
1827
- {
1828
- ref: (C) => {
1829
- s.current = C, n == null || n(C);
1830
- },
1831
- rotation: [
1832
- (m == null ? void 0 : m.rotation[0]) ?? 0,
1833
- (m == null ? void 0 : m.rotation[1]) ?? 0,
1834
- ((m == null ? void 0 : m.rotation[2]) ?? 0) + (t.followFaceRoll ? (r == null ? void 0 : r.pose.rotation.z) ?? 0 : 0)
1835
- ],
1836
- scale: [
1837
- a.size.width / 100 * a.scale2D.x,
1838
- a.size.height / 100 * a.scale2D.y,
1839
- 1
1840
- ],
1841
- renderOrder: i ?? a.renderOrder,
1842
- children: e
1843
- }
1844
- );
1845
- }, Kn = ({
1846
- editorMode: t = !1,
1847
- faceMeshMaterialOverrides: e,
1848
- fallback: n = Gn,
1849
- insideScreenSpaceUI: i = !1,
1850
- objectId: a,
1851
- onComponentChange: r,
1852
- renderLayer: o,
1853
- renderOrder: l,
1854
- store: s
1855
- }) => {
1856
- const A = bt(), c = pt(), h = s.objects[a];
1857
- if (!h || !h.enabled) return null;
1858
- const f = rt(s, a).filter((g) => g.enabled), u = f.find((g) => g.type === "Transform"), v = f.find((g) => g.type === "ScreenTransform"), S = f.find((g) => g.type === "ScreenImage"), m = f.find((g) => g.type === "ScreenText"), C = f.find((g) => g.type === "ScreenShape"), E = f.find((g) => g.type === "MeshRenderer"), I = f.find((g) => g.type === "FaceMeshRenderer"), M = f.find((g) => g.type === "Light"), b = f.find((g) => g.type === "LookAt"), y = f.find((g) => g.type === "PinToMesh"), F = f.find((g) => g.type === "TrackingAnchor"), p = it(s, a).map((g) => /* @__PURE__ */ d(
1859
- Kn,
1860
- {
1861
- objectId: g.id,
1862
- store: s,
1863
- editorMode: t,
1864
- renderOrder: l,
1865
- renderLayer: o,
1866
- onComponentChange: r,
1867
- fallback: n,
1868
- faceMeshMaterialOverrides: e,
1869
- insideScreenSpaceUI: i || !!v
1870
- },
1871
- g.id
1872
- ));
1873
- if (w(u, "Transform") && w(M, "Light"))
1874
- return /* @__PURE__ */ d(O, { layer: o, children: /* @__PURE__ */ D("group", { ref: (g) => A(a, g), children: [
1875
- /* @__PURE__ */ d(Dn, { settings: M.settings, transform: u.settings }),
1876
- p
1877
- ] }) });
1878
- if (w(u, "Transform") && w(E, "MeshRenderer")) {
1879
- const g = w(b, "LookAt") ? b.settings : xe("LookAt", a).settings, k = g.inheritChildren ? p : null, J = g.inheritChildren ? null : p;
1880
- return /* @__PURE__ */ d(O, { layer: o, children: /* @__PURE__ */ d("group", { ref: (P) => A(a, P), children: /* @__PURE__ */ d(
1881
- at,
1882
- {
1883
- target: w(y, "PinToMesh") ? c(y.settings.targetObjectId) : null,
1884
- settings: w(y, "PinToMesh") ? y.settings : xe("PinToMesh", a).settings,
1885
- children: /* @__PURE__ */ D(
1886
- ue,
1887
- {
1888
- value: u.settings,
1889
- onChange: r ? (P) => r({ ...u, settings: P }) : void 0,
1890
- children: [
1891
- /* @__PURE__ */ D(
1892
- Rn,
1893
- {
1894
- target: w(b, "LookAt") ? c(b.settings.targetObjectId) : null,
1895
- settings: g,
1896
- children: [
1897
- /* @__PURE__ */ d(tt, { value: E.settings, renderOrder: l }),
1898
- k
1899
- ]
1900
- }
1901
- ),
1902
- J
1903
- ]
1904
- }
1905
- )
1906
- }
1907
- ) }) });
1908
- }
1909
- if (w(I, "FaceMeshRenderer"))
1910
- return /* @__PURE__ */ d(O, { layer: o, children: /* @__PURE__ */ D("group", { ref: (g) => A(a, g), children: [
1911
- /* @__PURE__ */ d(
1912
- nt,
1913
- {
1914
- value: I.settings,
1915
- materialOverride: e == null ? void 0 : e[I.id],
1916
- transform: w(u, "Transform") ? u.settings : void 0
1917
- }
1918
- ),
1919
- p
1920
- ] }) });
1921
- if (w(u, "Transform")) {
1922
- if (w(F, "TrackingAnchor")) {
1923
- const g = F.settings;
1924
- return /* @__PURE__ */ d(O, { layer: o, children: /* @__PURE__ */ d(vt, { followFaceRoll: g.followFaceRoll, children: /* @__PURE__ */ d(
1925
- St,
1926
- {
1927
- target: g.target,
1928
- customAnchorPoint: g.customAnchorPoint,
1929
- offset: [g.offset.x, g.offset.y, g.offset.z],
1930
- smoothing: g.smoothing,
1931
- children: /* @__PURE__ */ d(
1932
- ue,
1933
- {
1934
- objectRef: (k) => A(a, k),
1935
- value: u.settings,
1936
- children: p
1937
- }
1938
- )
1939
- }
1940
- ) }) });
1941
- }
1942
- return /* @__PURE__ */ d(O, { layer: o, children: /* @__PURE__ */ d("group", { children: /* @__PURE__ */ d(
1943
- ue,
1944
- {
1945
- objectRef: (g) => A(a, g),
1946
- value: u.settings,
1947
- onChange: r ? (g) => r({ ...u, settings: g }) : void 0,
1948
- children: p
1949
- }
1950
- ) }) });
1951
- }
1952
- if (w(v, "ScreenTransform") && w(S, "ScreenImage")) {
1953
- const g = ot({
1954
- screenSpaceUI: { enabled: !0 },
1955
- screenImage: {
1956
- ...S.settings,
1957
- screenTransform: v.settings
1958
- }
1959
- });
1960
- return g.shouldRender ? /* @__PURE__ */ d(O, { layer: o, children: /* @__PURE__ */ d("group", { renderOrder: l, children: /* @__PURE__ */ D(oe, { inside: i, children: [
1961
- /* @__PURE__ */ d(
1962
- Bn,
1963
- {
1964
- ...g.props,
1965
- renderOrder: l ?? g.props.renderOrder,
1966
- onScreenTransformChange: r ? (k) => r({ ...v, settings: k }) : void 0
1967
- }
1968
- ),
1969
- p
1970
- ] }) }) }) : null;
1971
- }
1972
- if (w(v, "ScreenTransform") && w(m, "ScreenText")) {
1973
- const g = lt({
1974
- screenSpaceUI: { enabled: !0 },
1975
- screenText: {
1976
- ...m.settings,
1977
- screenTransform: v.settings
1978
- }
1979
- });
1980
- return g.shouldRender ? /* @__PURE__ */ d(O, { layer: o, children: /* @__PURE__ */ d("group", { renderOrder: l, children: /* @__PURE__ */ D(oe, { inside: i, children: [
1981
- /* @__PURE__ */ d(
1982
- Yn,
1983
- {
1984
- ...g.props,
1985
- renderOrder: l ?? g.props.renderOrder,
1986
- onScreenTransformChange: r ? (k) => r({ ...v, settings: k }) : void 0
1987
- }
1988
- ),
1989
- p
1990
- ] }) }) }) : null;
1991
- }
1992
- return w(v, "ScreenTransform") && w(C, "ScreenShape") ? /* @__PURE__ */ d(O, { layer: o, children: /* @__PURE__ */ d("group", { ref: (g) => A(a, g), renderOrder: l, children: /* @__PURE__ */ D(oe, { inside: i, children: [
1993
- /* @__PURE__ */ d(
1994
- st,
1995
- {
1996
- name: h.name,
1997
- settings: C.settings,
1998
- transform: v.settings,
1999
- renderOrder: l,
2000
- onScreenTransformChange: r ? (g) => r({ ...v, settings: g }) : void 0
2001
- }
2002
- ),
2003
- p
2004
- ] }) }) }) : w(v, "ScreenTransform") ? w(F, "TrackingAnchor") ? /* @__PURE__ */ d(O, { layer: o, children: /* @__PURE__ */ d("group", { children: /* @__PURE__ */ d(
2005
- Hn,
2006
- {
2007
- anchor: F.settings,
2008
- settings: v.settings,
2009
- renderOrder: l,
2010
- insideScreenSpaceUI: i,
2011
- objectRef: (g) => A(a, g),
2012
- children: p
2013
- }
2014
- ) }) }) : /* @__PURE__ */ d(O, { layer: o, children: /* @__PURE__ */ d("group", { children: /* @__PURE__ */ d(
2015
- On,
2016
- {
2017
- settings: v.settings,
2018
- renderOrder: l,
2019
- insideScreenSpaceUI: i,
2020
- objectRef: (g) => A(a, g),
2021
- children: p
2022
- }
2023
- ) }) }) : t ? /* @__PURE__ */ D(Se, { children: [
2024
- p,
2025
- n(
2026
- `Object "${h.name}" has unsupported components: ${f.map((g) => g.type).join(", ")}`
2027
- )
2028
- ] }) : p.length ? /* @__PURE__ */ d(Se, { children: p }) : null;
2029
- }, or = ({ layers: t }) => {
2030
- const { camera: e, gl: n, raycaster: i, scene: a } = me(), { session: r } = Tt(), o = Be(
2031
- () => At({ renderer: n, scene: a, camera: e, layers: t }),
2032
- [e, n, t, a]
2033
- );
2034
- return se(o, 1), te(() => {
2035
- const l = i.layers.mask;
2036
- return t.forEach((s) => i.layers.enable(s)), () => {
2037
- i.layers.mask = l;
2038
- };
2039
- }, [t, i]), te(() => (r._setR3FState({ renderer: n, scene: a, camera: e, renderFrame: o }), () => r._setR3FState({ renderer: n, scene: a, camera: e })), [e, n, o, a, r]), null;
2040
- };
2041
- export {
2042
- Dn as L,
2043
- O as R,
2044
- Bn as S,
2045
- Ut as T,
2046
- Qt as a,
2047
- sn as b,
2048
- ye as c,
2049
- Yn as d,
2050
- Rn as e,
2051
- Kn as f,
2052
- or as g
2053
- };