@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.
- package/GROUNDING.md +5651 -82
- package/README.md +1 -0
- package/dist/CanonicalHeadFrame-BHcWyaiK.js +1506 -0
- package/dist/CanonicalHeadFrame-D-_T1OMU.cjs +1 -0
- package/dist/DebuggerUI-7ngnJsBe.js +275 -0
- package/dist/DebuggerUI-CoglgKdO.cjs +1 -0
- package/dist/FaceRetouch-CLoTfrcs.js +1071 -0
- package/dist/FaceRetouch-J1lC1WbS.cjs +134 -0
- package/dist/FaceSurface-CHAMEeG1.cjs +1 -0
- package/dist/FaceSurface-DmP9AEeC.js +27 -0
- package/dist/SegmentationOverlay-D_FWkcyP.cjs +35 -0
- package/dist/SegmentationOverlay-vn5x_knv.js +6237 -0
- package/dist/SkeletonUtils-C2r90MtN.js +21 -0
- package/dist/SkeletonUtils-CddIup1F.cjs +1 -0
- package/dist/TextLabel-XE0rQSDn.cjs +2 -0
- package/dist/TextLabel-c9BCucOI.js +961 -0
- package/dist/assets/cache.d.ts +99 -0
- package/dist/assets/estimate.d.ts +11 -0
- package/dist/assets/gltfLoader.d.ts +16 -0
- package/dist/assets/index.d.ts +7 -0
- package/dist/assets/loaders.d.ts +43 -0
- package/dist/assets/react.d.ts +33 -0
- package/dist/body-pose/index.d.ts +521 -0
- package/dist/body-trigger/__fixtures__/syntheticBody.d.ts +83 -0
- package/dist/body-trigger/frame.d.ts +88 -0
- package/dist/body-trigger/index.d.ts +6 -0
- package/dist/body-trigger/moves.d.ts +235 -0
- package/dist/body-trigger/trigger.d.ts +75 -0
- package/dist/calibration/calibration.d.ts +75 -0
- package/dist/calibration/index.d.ts +6 -0
- package/dist/calibration/storage.d.ts +13 -0
- package/dist/calibration/types.d.ts +53 -0
- package/dist/calibration/useXRCalibration.d.ts +46 -0
- package/dist/camera/CameraPermissionGate.d.ts +26 -0
- package/dist/camera/devices.d.ts +26 -0
- package/dist/camera/index.d.ts +8 -0
- package/dist/camera/permission.d.ts +86 -0
- package/dist/camera/useCameraPermission.d.ts +35 -0
- package/dist/canonicalFace-BHwyCx1c.js +9 -0
- package/dist/canonicalFace-C83I225R.cjs +1 -0
- package/dist/capabilities/detect.d.ts +45 -0
- package/dist/capabilities/index.d.ts +5 -0
- package/dist/capabilities/types.d.ts +120 -0
- package/dist/capabilities/useXRCapabilities.d.ts +18 -0
- package/dist/compat/environment.d.ts +5 -0
- package/dist/compat/index.d.ts +4 -0
- package/dist/compat/run.d.ts +18 -0
- package/dist/compat/scenarios.d.ts +10 -0
- package/dist/compat/types.d.ts +101 -0
- package/dist/components/BodyInstruction/BodyPoseHint.d.ts +63 -0
- package/dist/components/BodyInstruction/index.d.ts +69 -0
- package/dist/components/BodyInstruction/useBodyPose.d.ts +23 -0
- package/dist/components/BodyTracker/index.d.ts +17 -0
- package/dist/components/BodyTrigger/index.d.ts +49 -0
- package/dist/components/Debugger/DebuggerProvider.d.ts +14 -1
- package/dist/components/Debugger/DebuggerUI.d.ts +3 -1
- package/dist/components/FaceAtlas/FaceAtlasLayer.d.ts +114 -0
- package/dist/components/FaceAtlas/MadeUpCamera.d.ts +80 -0
- package/dist/components/FaceAtlas/constants.d.ts +8 -0
- package/dist/components/FaceAtlas/index.d.ts +7 -0
- package/dist/components/FaceAtlas/useFaceAtlasSurface.d.ts +84 -0
- package/dist/components/FaceAtlas/useFaceSkin.d.ts +84 -0
- package/dist/components/FaceCharacter/ExternalFaceMesh.d.ts +109 -0
- package/dist/components/FaceCharacter/FaceExpressionController.d.ts +53 -0
- package/dist/components/FaceCharacter/FaceMorph.d.ts +71 -0
- package/dist/components/FaceCharacter/FacePiercing.d.ts +65 -0
- package/dist/components/FaceCharacter/FaceReprojection.d.ts +85 -0
- package/dist/components/FaceCharacter/FaceRig.d.ts +38 -0
- package/dist/components/FaceCharacter/FaceSurface.d.ts +49 -0
- package/dist/components/FaceCharacter/FaceSurfaceOccluder.d.ts +39 -0
- package/dist/components/FaceCharacter/PinToFaceMesh.d.ts +68 -0
- package/dist/components/FaceCharacter/index.d.ts +18 -0
- package/dist/components/FaceCharacter/useFaceReprojector.d.ts +10 -0
- package/dist/components/FaceInset/FaceInset.d.ts +68 -0
- package/dist/components/FaceInset/frame.d.ts +94 -0
- package/dist/components/FaceInset/index.d.ts +6 -0
- package/dist/components/FaceInset/material.d.ts +40 -0
- package/dist/components/FaceInset/useFaceInsetTexture.d.ts +37 -0
- package/dist/components/FaceInstruction/FaceExpressionHint.d.ts +43 -0
- package/dist/components/FaceInstruction/index.d.ts +56 -0
- package/dist/components/FaceInstruction/useFaceExpression.d.ts +20 -0
- package/dist/components/FaceLiquify/FaceLiquify.d.ts +49 -0
- package/dist/components/FaceLiquify/debug.d.ts +37 -0
- package/dist/components/FaceLiquify/frame.d.ts +55 -0
- package/dist/components/FaceLiquify/index.d.ts +10 -0
- package/dist/components/FaceLiquify/material.d.ts +39 -0
- package/dist/components/FaceLiquify/pass.d.ts +49 -0
- package/dist/components/FaceLiquify/presence.d.ts +25 -0
- package/dist/components/FaceLiquify/presets.d.ts +82 -0
- package/dist/components/FaceLiquify/selfTest.d.ts +66 -0
- package/dist/components/FaceLiquify/target.d.ts +85 -0
- package/dist/components/FaceLiquify/warp.d.ts +72 -0
- package/dist/components/FaceMesh/canonical/CanonicalFaceMeshRenderer.d.ts +37 -5
- package/dist/components/FaceMesh/canonical/geometryGroups.d.ts +21 -0
- package/dist/components/FaceMesh/canonical/parseCanonicalFaceModel.d.ts +21 -0
- package/dist/components/FaceMesh/canonical/shaders.d.ts +1 -1
- package/dist/components/FaceMesh/index.d.ts +2 -2
- package/dist/components/FaceRetouch/Background.d.ts +3 -1
- package/dist/components/FaceRetouch/FaceRetouch.d.ts +5 -0
- package/dist/components/FaceRetouch/renderState.d.ts +19 -0
- package/dist/components/FaceSwap/FaceMirror.d.ts +46 -0
- package/dist/components/FaceSwap/FaceSwap.d.ts +58 -0
- package/dist/components/FaceSwap/FaceTextureLayer.d.ts +72 -0
- package/dist/components/FaceSwap/faceSwapPlan.d.ts +91 -0
- package/dist/components/FaceSwap/index.d.ts +13 -0
- package/dist/components/FaceSwap/settings.d.ts +300 -0
- package/dist/components/FaceSwap/useFaceTexture.d.ts +35 -0
- package/dist/components/FaceSwap/useLiveFace.d.ts +38 -0
- package/dist/components/FaceSwap/useLiveFaceTexture.d.ts +31 -0
- package/dist/components/FaceWarp3D/FaceWarp3D.d.ts +50 -0
- package/dist/components/FaceWarp3D/index.d.ts +2 -3
- package/dist/components/Faceless/Faceless.d.ts +51 -0
- package/dist/components/Faceless/index.d.ts +2 -0
- package/dist/components/GestureListener/index.d.ts +11 -0
- package/dist/components/HairLock/HairLock.d.ts +39 -0
- package/dist/components/HairLock/index.d.ts +2 -0
- package/dist/components/HairLock/lockGeometry.d.ts +15 -0
- package/dist/components/HandCutout/index.d.ts +35 -0
- package/dist/components/HandInstruction/HandGestureHint.d.ts +70 -0
- package/dist/components/HandInstruction/index.d.ts +74 -0
- package/dist/components/HandInstruction/useHandGesture.d.ts +22 -0
- package/dist/components/HandRig/ForearmOccluder.d.ts +29 -0
- package/dist/components/HandRig/HandAttachment.d.ts +34 -0
- package/dist/components/HandRig/HandOccluder.d.ts +55 -0
- package/dist/components/HandRig/HandTattoo.d.ts +61 -0
- package/dist/components/HandRig/WristAttachment.d.ts +34 -0
- package/dist/components/HandRig/index.d.ts +101 -0
- package/dist/components/HandRig/useArmMask.d.ts +29 -0
- package/dist/components/HandRig/wristSolve.d.ts +69 -0
- package/dist/components/HandTouch/HandTouch.d.ts +62 -0
- package/dist/components/HandTouch/Touchable.d.ts +36 -0
- package/dist/components/HandTouch/index.d.ts +2 -0
- package/dist/components/HandTracker/index.d.ts +10 -0
- package/dist/components/HeadBinding/index.d.ts +14 -0
- package/dist/components/HeadOccluder/CanonicalHeadFrame.d.ts +22 -0
- package/dist/components/HeadOccluder/Earrings.d.ts +55 -0
- package/dist/components/HeadOccluder/HeadAttachment.d.ts +38 -0
- package/dist/components/HeadOccluder/NeckOccluder.d.ts +64 -0
- package/dist/components/HeadOccluder/earringPlacement.d.ts +31 -0
- package/dist/components/HeadOccluder/headAttachmentPoints.d.ts +69 -0
- package/dist/components/HeadOccluder/index.d.ts +57 -3
- package/dist/components/HeadOccluder/useCanonicalHeadFit.d.ts +36 -0
- package/dist/components/HeadOccluder/useLandmarkPoseFit.d.ts +80 -0
- package/dist/components/HolisticTracker/index.d.ts +69 -0
- package/dist/components/HolisticTracker/settings.d.ts +58 -0
- package/dist/components/HolisticTracker/signals.d.ts +49 -0
- package/dist/components/Instruction/HintStage.d.ts +29 -0
- package/dist/components/Instruction/InstructionCue.d.ts +126 -0
- package/dist/components/Instruction/gestureHold.d.ts +20 -0
- package/dist/components/Instruction/ghost.d.ts +129 -0
- package/dist/components/Instruction/hintBlend.d.ts +19 -0
- package/dist/components/Instruction/hintLook.d.ts +81 -0
- package/dist/components/Instruction/hintLoop.d.ts +36 -0
- package/dist/components/Instruction/index.d.ts +41 -0
- package/dist/components/Instruction/useGhostModel.d.ts +33 -0
- package/dist/components/Instruction/useInstructionHold.d.ts +72 -0
- package/dist/components/IrisEffect/IrisMaterial.d.ts +73 -0
- package/dist/components/IrisEffect/index.d.ts +51 -0
- package/dist/components/IrisEffect/settings.d.ts +117 -0
- package/dist/components/LipEffect/LipEffect.d.ts +27 -1
- package/dist/components/LipEffect/LipEffectMaterial.d.ts +95 -7
- package/dist/components/LipEffect/LipEffects.d.ts +12 -0
- package/dist/components/LipEffect/defaults.d.ts +46 -4
- package/dist/components/LipEffect/index.d.ts +11 -3
- package/dist/components/LipEffect/lipShading.d.ts +73 -0
- package/dist/components/LipEffect/settings.d.ts +375 -0
- package/dist/components/LipEffect/shader.d.ts +39 -0
- package/dist/components/LipEffect/types.d.ts +128 -9
- package/dist/components/LipEffect/useLipDesignTextures.d.ts +17 -0
- package/dist/components/LipEffect/uvGuide.d.ts +74 -0
- package/dist/components/Makeup/Blush.d.ts +18 -0
- package/dist/components/Makeup/Brows.d.ts +20 -0
- package/dist/components/Makeup/Contour.d.ts +17 -0
- package/dist/components/Makeup/Eyeliner.d.ts +20 -0
- package/dist/components/Makeup/Eyeshadow.d.ts +20 -0
- package/dist/components/Makeup/Highlighter.d.ts +18 -0
- package/dist/components/Makeup/MakeupDesign.d.ts +37 -0
- package/dist/components/Makeup/MakeupRegion.d.ts +132 -0
- package/dist/components/Makeup/constants.d.ts +44 -0
- package/dist/components/Makeup/design.d.ts +106 -0
- package/dist/components/Makeup/designSamples.d.ts +42 -0
- package/dist/components/Makeup/eyes.d.ts +114 -0
- package/dist/components/Makeup/fields.d.ts +10 -0
- package/dist/components/Makeup/geometry.d.ts +106 -0
- package/dist/components/Makeup/index.d.ts +26 -0
- package/dist/components/Makeup/looks.d.ts +28 -0
- package/dist/components/Makeup/material.d.ts +239 -0
- package/dist/components/Makeup/settings.d.ts +54 -0
- package/dist/components/Makeup/shades.d.ts +143 -0
- package/dist/components/Makeup/shapes.d.ts +27 -0
- package/dist/components/Makeup/skinTone.d.ts +135 -0
- package/dist/components/Makeup/types.d.ts +110 -0
- package/dist/components/Makeup/useMakeupSkinTone.d.ts +40 -0
- package/dist/components/Necklace/Necklace.d.ts +44 -0
- package/dist/components/Necklace/index.d.ts +1 -0
- package/dist/components/ParticleEmitter/ParticleEmitter.d.ts +69 -0
- package/dist/components/ParticleEmitter/index.d.ts +1 -0
- package/dist/components/PersonCutout/index.d.ts +50 -0
- package/dist/components/PersonCutout/personCutout.d.ts +16 -0
- package/dist/components/ScreenImage/components/ScreenImageBody.d.ts +1 -1
- package/dist/components/ScreenImage/index.d.ts +3 -1
- package/dist/components/ScreenImage/materials/ScreenImageBlendMaterial.d.ts +1 -1
- package/dist/components/ScreenImage/materials/ScreenImageMaskMaterial.d.ts +11 -0
- package/dist/components/ScreenImage/source.d.ts +6 -0
- package/dist/components/ScreenImage/types.d.ts +18 -0
- package/dist/components/SegmentationOverlay/SegmentationOverlay.d.ts +37 -0
- package/dist/components/SegmentationOverlay/SegmentationOverlayMaterial.d.ts +31 -0
- package/dist/components/SegmentationOverlay/index.d.ts +9 -0
- package/dist/components/SegmentationOverlay/maskTexture.d.ts +23 -0
- package/dist/components/SegmentationOverlay/providers.d.ts +72 -0
- package/dist/components/SegmentationOverlay/settings.d.ts +65 -0
- package/dist/components/ShoulderOccluder/index.d.ts +43 -0
- package/dist/components/ShoulderOccluder/useCanonicalTorsoFit.d.ts +24 -0
- package/dist/components/SpringSwing/SpringSwing.d.ts +22 -0
- package/dist/components/SpringSwing/index.d.ts +1 -0
- package/dist/components/XRProvider/index.d.ts +16 -2
- package/dist/components/XRScene/renderOutputTarget.d.ts +12 -0
- package/dist/components/XRViewport/hooks/useViewportExternalFaces.d.ts +1 -1
- package/dist/components/XRViewport/hooks/useViewportMediaSource.d.ts +1 -1
- package/dist/components/XRViewport/hooks/useViewportPipeline.d.ts +1 -1
- package/dist/components/index.d.ts +11 -0
- package/dist/config/index.d.ts +0 -1
- package/dist/constants/index.d.ts +4 -1
- package/dist/context-DTxSQvp4.js +13 -0
- package/dist/context-hA0Rb2Xa.cjs +1 -0
- package/dist/contexts-BH7PdKFS.cjs +1 -0
- package/dist/contexts-jak8-tND.js +667 -0
- package/dist/coordinates/feed.d.ts +52 -0
- package/dist/coordinates/index.d.ts +7 -0
- package/dist/coordinates/side.d.ts +40 -0
- package/dist/coordinates/spaces.d.ts +49 -0
- package/dist/coordinates/viewport.d.ts +22 -0
- package/dist/coordinates/world.d.ts +15 -0
- package/dist/debug-ui/default-setting.cjs +2 -2
- package/dist/debug-ui/face-swap-settings/index.d.ts +22 -0
- package/dist/debug-ui/gesture-settings/index.d.ts +14 -0
- package/dist/debug-ui/hierarchy-panel/index.d.ts +3 -2
- package/dist/debug-ui/holistic-tracker-settings/index.d.ts +16 -0
- package/dist/debug-ui/index.d.ts +18 -3
- package/dist/debug-ui/iris-effect-settings/index.d.ts +12 -0
- package/dist/debug-ui/lip-effect-settings/index.d.ts +15 -0
- package/dist/debug-ui/media-source/index.d.ts +1 -1
- package/dist/debug-ui/media-source/session.d.ts +30 -2
- package/dist/debug-ui/media-source.cjs +1 -1
- package/dist/debug-ui/media-source.js +1 -1
- package/dist/debug-ui/object-inspector-panel/index.d.ts +3 -2
- package/dist/debug-ui/product-hotspots/index.d.ts +25 -0
- package/dist/debug-ui/scene-editor/hierarchy-panel.d.ts +3 -1
- package/dist/debug-ui/scene-editor/inspector-panel.d.ts +3 -1
- package/dist/debug-ui/screen-image-settings/index.d.ts +3 -1
- package/dist/debug-ui/screen-text-settings/ScreenTextSettingsPanel.d.ts +1 -1
- package/dist/debug-ui/screen-text-settings/types.d.ts +2 -0
- package/dist/debug-ui/segmentation-overlay-settings/index.d.ts +12 -0
- package/dist/debug-ui/settings-panel/index.d.ts +6 -1
- package/dist/debug-ui/shared/debugWindow.d.ts +51 -0
- package/dist/debug-ui/xr-diagnostics/index.d.ts +26 -0
- package/dist/debug-ui.cjs +3 -3
- package/dist/debug-ui.js +2695 -2547
- package/dist/detector-K8aej4MB.js +59 -0
- package/dist/detector-ijypGtse.cjs +1 -0
- package/dist/entries/all.d.ts +3 -1
- package/dist/entries/core.d.ts +20 -2
- package/dist/entries/face-effects.d.ts +123 -9
- package/dist/entries/instructions.d.ts +48 -0
- package/dist/entries/internal.d.ts +2 -1
- package/dist/entries/low-level.d.ts +49 -3
- package/dist/entries/particles.d.ts +11 -0
- package/dist/entries/product.d.ts +11 -0
- package/dist/entries/tracking.d.ts +60 -2
- package/dist/face-atlas/attributes.d.ts +30 -0
- package/dist/face-atlas/eyes.d.ts +272 -0
- package/dist/face-atlas/faceAtlas.generated.d.ts +46 -0
- package/dist/face-atlas/glsl/atlasVertex.d.ts +46 -0
- package/dist/face-atlas/glsl/common.d.ts +55 -0
- package/dist/face-atlas/glsl/design.d.ts +49 -0
- package/dist/face-atlas/glsl/eyes.d.ts +73 -0
- package/dist/face-atlas/glsl/finish.d.ts +24 -0
- package/dist/face-atlas/glsl/format.d.ts +4 -0
- package/dist/face-atlas/glsl/index.d.ts +59 -0
- package/dist/face-atlas/glsl/shading.d.ts +15 -0
- package/dist/face-atlas/glsl/shapes.d.ts +66 -0
- package/dist/face-atlas/glsl/sparkle.d.ts +19 -0
- package/dist/face-atlas/glsl/uniforms.d.ts +106 -0
- package/dist/face-atlas/guide.d.ts +51 -0
- package/dist/face-atlas/index.d.ts +25 -0
- package/dist/face-atlas/lead.d.ts +117 -0
- package/dist/face-atlas/madeUpCamera.d.ts +125 -0
- package/dist/face-atlas/masks.d.ts +53 -0
- package/dist/face-atlas/obj.d.ts +69 -0
- package/dist/face-atlas/polylines.d.ts +63 -0
- package/dist/face-atlas/probe/FaceSkinProbe.d.ts +208 -0
- package/dist/face-atlas/probe/__fixtures__/emulate.d.ts +9 -0
- package/dist/face-atlas/probe/__fixtures__/face.d.ts +24 -0
- package/dist/face-atlas/probe/constants.d.ts +137 -0
- package/dist/face-atlas/probe/glsl.d.ts +43 -0
- package/dist/face-atlas/probe/lightFit.d.ts +108 -0
- package/dist/face-atlas/probe/schedule.d.ts +44 -0
- package/dist/face-atlas/probe/selfTest.d.ts +87 -0
- package/dist/face-atlas/probe/stats.d.ts +143 -0
- package/dist/face-atlas/probe/targets.d.ts +70 -0
- package/dist/face-atlas/probe/unwrap.d.ts +76 -0
- package/dist/face-atlas/quality.d.ts +28 -0
- package/dist/face-atlas/regions.d.ts +31 -0
- package/dist/face-atlas/registry.d.ts +252 -0
- package/dist/face-atlas/renderState.d.ts +86 -0
- package/dist/face-atlas/selfOcclusion.d.ts +62 -0
- package/dist/face-atlas/shading.d.ts +406 -0
- package/dist/face-atlas/shapes.d.ts +86 -0
- package/dist/face-atlas/sides.d.ts +41 -0
- package/dist/face-atlas/skinMask.d.ts +35 -0
- package/dist/face-atlas/surface.d.ts +155 -0
- package/dist/face-atlas/topology.d.ts +44 -0
- package/dist/face-character/__fixtures__/faceImageDetections.d.ts +25 -0
- package/dist/face-character/__fixtures__/faceNode.d.ts +22 -0
- package/dist/face-character/bindFaceModel.d.ts +106 -0
- package/dist/face-character/canonicalFace.d.ts +17 -0
- package/dist/face-character/canonicalFaceGeometry.d.ts +11 -0
- package/dist/face-character/canonicalFacePositions.d.ts +7 -0
- package/dist/face-character/driveFaceModel.d.ts +57 -0
- package/dist/face-character/expressionOutputs.d.ts +45 -0
- package/dist/face-character/faceExpressions.d.ts +104 -0
- package/dist/face-character/faceImageLandmarker.d.ts +93 -0
- package/dist/face-character/faceMeshBinding.d.ts +62 -0
- package/dist/face-character/faceMorph.d.ts +77 -0
- package/dist/face-character/faceMorphs.d.ts +46 -0
- package/dist/face-character/facePhoto.d.ts +138 -0
- package/dist/face-character/facePiercings.d.ts +116 -0
- package/dist/face-character/facePin.d.ts +131 -0
- package/dist/face-character/faceReprojection.d.ts +273 -0
- package/dist/face-character/faceReprojector.d.ts +171 -0
- package/dist/face-character/faceRig.d.ts +176 -0
- package/dist/face-character/faceSwapPresence.d.ts +85 -0
- package/dist/face-character/faceTexture.d.ts +169 -0
- package/dist/face-character/faceTextureBaker.d.ts +86 -0
- package/dist/face-character/faceTextureGuide.d.ts +106 -0
- package/dist/face-character/faceTextureStats.d.ts +298 -0
- package/dist/face-character/faceTransfer.d.ts +396 -0
- package/dist/face-character/faceTransferGeometry.d.ts +109 -0
- package/dist/face-character/faceTransferSelfTest.d.ts +94 -0
- package/dist/face-character/faceWarp3D.d.ts +101 -0
- package/dist/face-character/faceless.d.ts +79 -0
- package/dist/face-character/featureWarp.d.ts +28 -0
- package/dist/face-character/liveFaceRegistry.d.ts +370 -0
- package/dist/face-character/liveValue.d.ts +12 -0
- package/dist/face-character/memo.d.ts +15 -0
- package/dist/face-effects.cjs +2324 -1
- package/dist/face-effects.js +14208 -2268
- package/dist/face-expression/index.d.ts +182 -0
- package/dist/face-info/landmarks.d.ts +17 -3
- package/dist/face-info/types.d.ts +20 -3
- package/dist/gestures/definitions.d.ts +98 -0
- package/dist/gestures/detector.d.ts +87 -0
- package/dist/gestures/index.d.ts +8 -0
- package/dist/gestures/measures.d.ts +114 -0
- package/dist/gestures/settings.d.ts +49 -0
- package/dist/getFaceInfo-B1otSDMX.cjs +1 -0
- package/dist/getFaceInfo-Cu4xDWiL.js +62 -0
- package/dist/hand/armFit.d.ts +46 -0
- package/dist/hand/armMask.d.ts +178 -0
- package/dist/hand/handCutout.d.ts +23 -0
- package/dist/hand/handCutoutRegistry.d.ts +7 -0
- package/dist/hand/handGestures.d.ts +524 -0
- package/dist/hand/handPose.d.ts +98 -0
- package/dist/hand/handRigSolver.d.ts +159 -0
- package/dist/hand/handTattoo.d.ts +81 -0
- package/dist/hand/handTouch.d.ts +240 -0
- package/dist/hand/wrist.d.ts +44 -0
- package/dist/hand/wristFilter.d.ts +44 -0
- package/dist/hooks/selectors.d.ts +76 -1
- package/dist/hooks/useCalibrationFaceTracker.d.ts +1 -1
- package/dist/hooks/useFaceInfo.d.ts +13 -1
- package/dist/hooks/useFaceInfos.d.ts +1 -1
- package/dist/hooks/useFaceModelAcquisition.d.ts +38 -0
- package/dist/hooks/useGesture.d.ts +32 -0
- package/dist/hooks/useIrisTracking.d.ts +45 -0
- package/dist/hooks/useTrackerContext.d.ts +6 -0
- package/dist/hooks/useXRDiagnostics.d.ts +81 -0
- package/dist/hooks/useXRModel.d.ts +7 -0
- package/dist/hooks/useXRSession/facade.d.ts +42 -2
- package/dist/hooks/useXRSession/index.d.ts +2 -2
- package/dist/hooks/useXRSession/reason.d.ts +3 -1
- package/dist/hooks/useXRSession/registry.d.ts +14 -0
- package/dist/hooks/useXRSession/store.d.ts +52 -3
- package/dist/index-B1_TzJaI.js +1104 -0
- package/dist/index-BavF06C6.js +190 -0
- package/dist/index-BfFmpddl.cjs +21 -0
- package/dist/index-BuBzneeW.cjs +46 -0
- package/dist/index-CGsQWodV.cjs +1 -0
- package/dist/index-CIe7eCMH.js +3200 -0
- package/dist/index-CfSF8LXa.cjs +1 -0
- package/dist/index-D5GTzOzD.cjs +1 -0
- package/dist/index-DBhQzvVa.js +314 -0
- package/dist/index-DE17y0ZI.cjs +1 -0
- package/dist/index-JII7huPk.js +442 -0
- package/dist/index-tpCr9CLj.cjs +1 -0
- package/dist/index-w1S7fI2B.js +1432 -0
- package/dist/index-zGaqrz_K.js +188 -0
- package/dist/instructions.cjs +30 -0
- package/dist/instructions.js +1507 -0
- package/dist/{internal-Dmk1cTXq.js → internal-B90P-clC.js} +138 -119
- package/dist/internal-Cjinca64.cjs +1 -0
- package/dist/internal.cjs +1 -1
- package/dist/internal.js +15 -10
- package/dist/iris/compute.d.ts +27 -0
- package/dist/iris/index.d.ts +4 -0
- package/dist/iris/lead.d.ts +19 -0
- package/dist/iris/types.d.ts +89 -0
- package/dist/landmarkMask-BFDyBnKM.js +224 -0
- package/dist/landmarkMask-u7es2k4X.cjs +1 -0
- package/dist/landmarks-BlUqf5MZ.cjs +1 -0
- package/dist/landmarks-bftdwq6Z.js +76 -0
- package/dist/loaders-BGAUACsd.js +363 -0
- package/dist/loaders-BJ1_QCHt.cjs +1 -0
- package/dist/low-level.cjs +1 -1
- package/dist/low-level.js +1190 -675
- package/dist/main.cjs +1 -1
- package/dist/main.js +1190 -452
- package/dist/models/Base/index.d.ts +49 -0
- package/dist/models/Body/index.d.ts +3 -1
- package/dist/models/Face/constants.d.ts +8 -0
- package/dist/models/Face/index.d.ts +4 -12
- package/dist/models/Face/rotation.d.ts +18 -3
- package/dist/models/Hand/GestureTracking.d.ts +1 -1
- package/dist/models/Hand/HandTracking.d.ts +17 -1
- package/dist/models/Holistic/index.d.ts +49 -0
- package/dist/models/Holistic/result.d.ts +68 -0
- package/dist/models/Segmentation/index.d.ts +2 -0
- package/dist/models/SemanticSegmentation/index.d.ts +31 -0
- package/dist/models/SemanticSegmentation/presets.d.ts +28 -0
- package/dist/models/index.d.ts +2 -0
- package/dist/models/nodeSource.d.ts +9 -0
- package/dist/particles/emission.d.ts +24 -0
- package/dist/particles/eyes.d.ts +24 -0
- package/dist/particles/glsl.d.ts +14 -0
- package/dist/particles/index.d.ts +10 -0
- package/dist/particles/motion.d.ts +42 -0
- package/dist/particles/presets.d.ts +12 -0
- package/dist/particles/ring.d.ts +58 -0
- package/dist/particles/selfTest.d.ts +53 -0
- package/dist/particles/settings.d.ts +127 -0
- package/dist/particles/shapes.d.ts +29 -0
- package/dist/particles/spawner.d.ts +60 -0
- package/dist/particles/system.d.ts +64 -0
- package/dist/particles.cjs +122 -0
- package/dist/particles.js +774 -0
- package/dist/product/ProductDimensions.d.ts +16 -0
- package/dist/product/ProductHotspot.d.ts +16 -0
- package/dist/product/ProductViewer.d.ts +9 -0
- package/dist/product/details.d.ts +53 -0
- package/dist/product/index.d.ts +14 -0
- package/dist/product/loadModelViewer.d.ts +4 -0
- package/dist/product/types.d.ts +71 -0
- package/dist/product/useProductAr.d.ts +37 -0
- package/dist/product/useProductDetails.d.ts +60 -0
- package/dist/product.cjs +1 -0
- package/dist/product.js +414 -0
- package/dist/providers-C8rE26Uf.js +366 -0
- package/dist/providers-DHsrhDI2.cjs +62 -0
- package/dist/quality/XRQualityController.d.ts +25 -0
- package/dist/quality/controller.d.ts +33 -0
- package/dist/quality/index.d.ts +6 -0
- package/dist/quality/types.d.ts +100 -0
- package/dist/quality/useXRQuality.d.ts +28 -0
- package/dist/render/renderPasses.d.ts +8 -0
- package/dist/render/sceneBeforeRender.d.ts +12 -0
- package/dist/{renderGroups-KZk6eRiY.js → renderGroups-B38pUaX2.js} +1 -1
- package/dist/{renderGroups-80H3DpTl.cjs → renderGroups-Cb_4Ar1Q.cjs} +1 -1
- package/dist/renderPasses-B6l8IpJv.js +1290 -0
- package/dist/renderPasses-dqmkft4P.cjs +158 -0
- package/dist/renderState-CJNmj5jz.js +39 -0
- package/dist/renderState-apSfg4eR.cjs +1 -0
- package/dist/scene-object.cjs +1 -1
- package/dist/scene-object.js +2 -2
- package/dist/segmentation-Cb3ouK6Z.js +1758 -0
- package/dist/segmentation-D9pYO6aR.cjs +1 -0
- package/dist/segmentation2d/faceMemory.d.ts +28 -0
- package/dist/segmentation2d/faceRegions.d.ts +24 -0
- package/dist/segmentation2d/index.d.ts +9 -0
- package/dist/segmentation2d/maskUv.d.ts +23 -0
- package/dist/segmentation2d/rasterize.d.ts +14 -0
- package/dist/segmentation2d/types.d.ts +52 -0
- package/dist/select-Ck5LGz-J.cjs +1 -0
- package/dist/select-pYRo_win.js +233 -0
- package/dist/selectors-C4X71aoD.cjs +1 -0
- package/dist/selectors-DmNaKIwE.js +196 -0
- package/dist/session-BrH8G7iJ.cjs +31 -0
- package/dist/session-DgA_z6O1.js +418 -0
- package/dist/settings-BJ7FMBsO.js +111 -0
- package/dist/settings-C63FMBlF.cjs +1 -0
- package/dist/similarityFit-BFqHND2e.cjs +1 -0
- package/dist/similarityFit-Bbz-R8AY.js +91 -0
- package/dist/spring/index.d.ts +2 -0
- package/dist/spring/spring.d.ts +69 -0
- package/dist/spring/swing.d.ts +54 -0
- package/dist/subjects/index.d.ts +2 -0
- package/dist/subjects/select.d.ts +62 -0
- package/dist/subjects/types.d.ts +55 -0
- package/dist/tracking-config/apply.d.ts +57 -0
- package/dist/tracking-config/index.d.ts +7 -0
- package/dist/tracking-config/resolve.d.ts +25 -0
- package/dist/tracking-config/storage.d.ts +8 -0
- package/dist/tracking-config/types.d.ts +106 -0
- package/dist/tracking-config/useXRTrackingConfig.d.ts +38 -0
- package/dist/tracking.cjs +10 -1
- package/dist/tracking.js +1326 -506
- package/dist/trigger-D0Pm9noT.cjs +49 -0
- package/dist/trigger-IQeys0oS.js +2128 -0
- package/dist/types/compositor.d.ts +21 -0
- package/dist/types/face.d.ts +20 -1
- package/dist/types/hand-tracking.d.ts +9 -0
- package/dist/types/holistic.d.ts +121 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/model.d.ts +22 -2
- package/dist/types/nodes.d.ts +47 -3
- package/dist/types/segmentation.d.ts +24 -0
- package/dist/types/session.d.ts +41 -3
- package/dist/updateThrottle-BseecYag.js +4 -0
- package/dist/updateThrottle-Of5Y4SVa.cjs +1 -0
- package/dist/useFaceInfo-BHDNCvsJ.cjs +1 -0
- package/dist/useFaceInfo-J4x7LsqL.js +76 -0
- package/dist/useFaceResultReader-BvEo5REG.js +61 -0
- package/dist/useFaceResultReader-DuaL1KJG.cjs +1 -0
- package/dist/useInstructionHold-DOu-RpCM.js +53 -0
- package/dist/useInstructionHold-DwJY1Alr.cjs +1 -0
- package/dist/useLandmarkPoseFit-Bg-h9BPb.cjs +1 -0
- package/dist/useLandmarkPoseFit-Bmb3h6Mw.js +87 -0
- package/dist/useXRCapabilities-Cr3RzuAW.cjs +1 -0
- package/dist/useXRCapabilities-Cxmlmpbd.js +30 -0
- package/dist/utils/canonicalRigidLandmarks.d.ts +8 -0
- package/dist/utils/fns.d.ts +6 -3
- package/dist/utils/headOccluderFit.d.ts +42 -0
- package/dist/utils/integrity.d.ts +21 -1
- package/dist/utils/resolveNumFaces.d.ts +13 -0
- package/dist/utils/shoulderOccluderFit.d.ts +38 -0
- package/dist/utils/similarityFit.d.ts +23 -0
- package/dist/utils/updateThrottle.d.ts +2 -0
- package/dist/utils/useStableUniforms.d.ts +18 -0
- package/dist/uv-BMFt19bg.cjs +1 -0
- package/dist/{index-ByoNj0QP.js → uv-DJU_XfmN.js} +15 -247
- package/docs/SDK_DOCUMENTATION.md +1 -2
- package/docs/api/adaptive-quality.mdx +104 -0
- package/docs/api/asset-lifecycle.mdx +78 -0
- package/docs/api/body-instructions.mdx +285 -0
- package/docs/api/body-triggers.mdx +234 -0
- package/docs/api/camera-permission.mdx +142 -0
- package/docs/api/coordinate-spaces.mdx +168 -0
- package/docs/api/cross-camera.mdx +89 -0
- package/docs/api/debug-ui-scene-editor.mdx +23 -2
- package/docs/api/diagnostics-calibration.mdx +97 -0
- package/docs/api/external-face-mesh.mdx +231 -0
- package/docs/api/face-actions.mdx +20 -16
- package/docs/api/face-attribute-expression.mdx +1 -1
- package/docs/api/face-binding-anchors.mdx +4 -2
- package/docs/api/face-character.mdx +157 -0
- package/docs/api/face-effects.mdx +9 -0
- package/docs/api/face-expression-controller.mdx +153 -0
- package/docs/api/face-info.mdx +17 -11
- package/docs/api/face-inset.mdx +204 -0
- package/docs/api/face-instructions.mdx +183 -0
- package/docs/api/face-liquify.mdx +196 -0
- package/docs/api/face-mesh.mdx +8 -9
- package/docs/api/face-morph.mdx +117 -0
- package/docs/api/face-painting.mdx +7 -0
- package/docs/api/face-reprojection.mdx +154 -0
- package/docs/api/face-retouching.mdx +18 -10
- package/docs/api/face-swap.mdx +350 -0
- package/docs/api/face-warp-3d.mdx +166 -0
- package/docs/api/faceless.mdx +143 -0
- package/docs/api/gestures.mdx +209 -0
- package/docs/api/hair.mdx +97 -0
- package/docs/api/hand-instructions.mdx +222 -0
- package/docs/api/hand-rig.mdx +535 -0
- package/docs/api/hand-touch.mdx +162 -0
- package/docs/api/head-occluder.mdx +563 -0
- package/docs/api/holistic-tracker.mdx +164 -0
- package/docs/api/instructions.mdx +323 -0
- package/docs/api/iris-tracking.mdx +247 -0
- package/docs/api/made-up-camera.mdx +131 -0
- package/docs/api/makeup-skin-tone.mdx +135 -0
- package/docs/api/makeup.mdx +353 -0
- package/docs/api/multi-subject.mdx +98 -0
- package/docs/api/particles.mdx +155 -0
- package/docs/api/person-cutout.mdx +136 -0
- package/docs/api/pin-to-face-mesh.mdx +274 -0
- package/docs/api/product-ar.mdx +114 -0
- package/docs/api/product-details.mdx +78 -0
- package/docs/api/screen-space-coordinates.mdx +4 -1
- package/docs/api/segmentation-overlay.mdx +301 -0
- package/docs/api/session-lifecycle.mdx +136 -0
- package/docs/api/trackers.mdx +5 -0
- package/docs/api/tracking-config.mdx +108 -0
- package/docs/docs.json +51 -1
- package/docs/examples/lip-shaders.mdx +273 -0
- package/docs/guides/face-atlas-template.svg +1 -0
- package/docs/guides/face-atlas-textures.mdx +186 -0
- package/docs/guides/face-texture-template.svg +1 -0
- package/docs/guides/harness-debug-ui.mdx +4 -4
- package/docs/guides/lip-effect-textures.mdx +368 -0
- package/docs/guides/lip-uv-template.png +0 -0
- package/docs/guides/lip-uv-template.svg +1 -0
- package/docs/guides/makeup-design-textures.mdx +109 -0
- package/docs/introduction.mdx +1 -2
- package/package.json +23 -1
- package/dist/DebuggerUI-B6bP6P9r.cjs +0 -1
- package/dist/DebuggerUI-BjOMr8q_.js +0 -269
- package/dist/FaceMeshRenderer-C5l6VLdO.cjs +0 -155
- package/dist/FaceMeshRenderer-wjAHrJzP.js +0 -1270
- package/dist/FaceRetouch-BkJzoA79.cjs +0 -134
- package/dist/FaceRetouch-DwbKQJAN.js +0 -551
- package/dist/components/FaceWarp3D/FaceWarp3DHead.d.ts +0 -15
- package/dist/components/FaceWarp3D/defaults.d.ts +0 -37
- package/dist/components/FaceWarp3D/warp.d.ts +0 -13
- package/dist/contexts-ByhzppYl.js +0 -663
- package/dist/contexts-Dr62It_K.cjs +0 -1
- package/dist/debug-ui/face-warp-3d/index.d.ts +0 -6
- package/dist/getFaceInfo-C4QpCQIY.js +0 -118
- package/dist/getFaceInfo-fA1bFBub.cjs +0 -1
- package/dist/index-9dlAQAhy.js +0 -1462
- package/dist/index-BjmTe9eM.cjs +0 -1
- package/dist/index-BpEf2BBb.cjs +0 -1
- package/dist/index-CyUUurQT.cjs +0 -1
- package/dist/index-DCiMbxC3.cjs +0 -1
- package/dist/index-DXT3WccE.js +0 -2089
- package/dist/index-DpI-qo5X.cjs +0 -17
- package/dist/index-DyVF4vEW.js +0 -111
- package/dist/index-VJ0SJwmG.js +0 -214
- package/dist/internal-Cq-TEQ5Y.cjs +0 -1
- package/dist/renderLayers-lDtL0_43.cjs +0 -1
- package/dist/renderLayers-zrK2pv5O.js +0 -13
- package/dist/renderPasses-BOoBSr8z.cjs +0 -21
- package/dist/renderPasses-BcquyVtu.js +0 -1500
- package/dist/selectors-B8H97CKA.js +0 -59
- package/dist/selectors-CZLKT2Iv.cjs +0 -1
- package/dist/session-CpkiK5YA.cjs +0 -31
- package/dist/session-DLFN_VII.js +0 -363
- package/dist/useFaceInfo-BJ8-_MOs.cjs +0 -1
- package/dist/useFaceInfo-Dk426LTu.js +0 -62
- package/dist/useFaceResults-CtetsO9M.js +0 -19
- package/dist/useFaceResults-wBJF3zyp.cjs +0 -1
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { CSSProperties } from 'react';
|
|
2
|
+
import { DimensionLine, ProductDimensions as Dimensions } from './details';
|
|
3
|
+
export type ProductDimensionsProps = {
|
|
4
|
+
dimensions: Dimensions | null;
|
|
5
|
+
unit?: "metric" | "imperial";
|
|
6
|
+
/** Which axes to label. Default all three. */
|
|
7
|
+
axes?: Array<DimensionLine["axis"]>;
|
|
8
|
+
style?: CSSProperties;
|
|
9
|
+
};
|
|
10
|
+
export declare const DIMENSION_SLOT_PREFIX = "hotspot-__dim-";
|
|
11
|
+
/**
|
|
12
|
+
* True-size labels on the model's bounding box (width / height / depth),
|
|
13
|
+
* anchored as hotspots so they track the model. Child of `<ProductViewer>`.
|
|
14
|
+
* Pair with `scale="fixed"` so AR shows the same size.
|
|
15
|
+
*/
|
|
16
|
+
export declare const ProductDimensions: ({ dimensions, unit, axes, style, }: ProductDimensionsProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { CSSProperties, ReactNode } from 'react';
|
|
2
|
+
import { ProductHotspotData } from './details';
|
|
3
|
+
export type ProductHotspotProps = {
|
|
4
|
+
hotspot: ProductHotspotData;
|
|
5
|
+
/** Custom content; default a dot with the label. */
|
|
6
|
+
children?: ReactNode;
|
|
7
|
+
onClick?: (hotspot: ProductHotspotData) => void;
|
|
8
|
+
style?: CSSProperties;
|
|
9
|
+
className?: string;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* A surface-anchored callout. Must be a child of `<ProductViewer>`: model-viewer
|
|
13
|
+
* slots it as `hotspot-{id}` and keeps it over `position` as the camera
|
|
14
|
+
* orbits, fading it when the surface faces away.
|
|
15
|
+
*/
|
|
16
|
+
export declare const ProductHotspot: ({ hotspot, children, onClick, style, className, }: ProductHotspotProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ProductViewerElement, ProductViewerProps } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Surface-placement product viewer: a typed React wrapper over Google's
|
|
4
|
+
* `<model-viewer>`, loaded lazily. Renders the GLB with camera controls and
|
|
5
|
+
* hands off to WebXR, Scene Viewer or Quick Look from a user gesture. This
|
|
6
|
+
* is not the SDK's camera session; see `useProductAr` for the camera
|
|
7
|
+
* handoff when both exist on one page.
|
|
8
|
+
*/
|
|
9
|
+
export declare const ProductViewer: import('react').ForwardRefExoticComponent<ProductViewerProps & import('react').RefAttributes<ProductViewerElement | null>>;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure helpers for product details: variants, hotspots and dimensions.
|
|
3
|
+
* model-viewer expresses positions as "x y z" strings in model metres; the
|
|
4
|
+
* SDK keeps them as numeric tuples so they are serializable and testable.
|
|
5
|
+
*/
|
|
6
|
+
export type Vec3 = [number, number, number];
|
|
7
|
+
/** A surface-anchored annotation, serializable authoring data. */
|
|
8
|
+
export type ProductHotspotData = {
|
|
9
|
+
/** Unique within the product; becomes `slot="hotspot-{id}"`. */
|
|
10
|
+
id: string;
|
|
11
|
+
/** Model-space position in metres. */
|
|
12
|
+
position: Vec3;
|
|
13
|
+
/** Surface normal at the position (unit vector). */
|
|
14
|
+
normal: Vec3;
|
|
15
|
+
/** Short label shown in the callout. */
|
|
16
|
+
label?: string;
|
|
17
|
+
/** Longer text, free-form. */
|
|
18
|
+
description?: string;
|
|
19
|
+
};
|
|
20
|
+
export type ProductDimensions = {
|
|
21
|
+
/** Size along x / y / z in metres. */
|
|
22
|
+
size: Vec3;
|
|
23
|
+
center: Vec3;
|
|
24
|
+
};
|
|
25
|
+
export declare const formatVec3: (v: Vec3, digits?: number) => string;
|
|
26
|
+
export declare const parseVec3: (text: string) => Vec3 | null;
|
|
27
|
+
/** `data-position` / `data-normal` attribute pair for a hotspot. */
|
|
28
|
+
export declare const hotspotAttributes: (hotspot: ProductHotspotData) => {
|
|
29
|
+
slot: string;
|
|
30
|
+
"data-position": string;
|
|
31
|
+
"data-normal": string;
|
|
32
|
+
};
|
|
33
|
+
/** A stable id from a label (or a counter when the label is empty / taken). */
|
|
34
|
+
export declare const nextHotspotId: (existing: ReadonlyArray<ProductHotspotData>, label?: string) => string;
|
|
35
|
+
/** Validate a hotspot list from storage / import; invalid entries are dropped. */
|
|
36
|
+
export declare const parseHotspots: (raw: unknown) => ProductHotspotData[];
|
|
37
|
+
export declare const serializeHotspots: (hotspots: ReadonlyArray<ProductHotspotData>) => string;
|
|
38
|
+
/** Human size string: metres under 1 m become centimetres. */
|
|
39
|
+
export declare const formatLength: (metres: number, unit?: "metric" | "imperial") => string;
|
|
40
|
+
export type DimensionLine = {
|
|
41
|
+
axis: "x" | "y" | "z";
|
|
42
|
+
/** Hotspot anchors at both ends and the label midpoint (model metres). */
|
|
43
|
+
start: Vec3;
|
|
44
|
+
end: Vec3;
|
|
45
|
+
mid: Vec3;
|
|
46
|
+
length: number;
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Three edge lines of the bounding box (width along x at the front-bottom
|
|
50
|
+
* edge, height along y at the front-left edge, depth along z at the
|
|
51
|
+
* bottom-left edge), each anchored as hotspots so they track the model.
|
|
52
|
+
*/
|
|
53
|
+
export declare const dimensionLines: ({ size, center }: ProductDimensions) => DimensionLine[];
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export { ProductViewer } from './ProductViewer';
|
|
2
|
+
export { useProductAr, releaseSessionForAr, supportedProductArModes } from './useProductAr';
|
|
3
|
+
export type { UseProductArOptions, UseProductArResult } from './useProductAr';
|
|
4
|
+
export { isModelViewerDefined, loadModelViewer } from './loadModelViewer';
|
|
5
|
+
export { DEFAULT_PRODUCT_AR_MODES } from './types';
|
|
6
|
+
export { dimensionLines, formatLength, formatVec3, hotspotAttributes, nextHotspotId, parseHotspots, parseVec3, serializeHotspots, } from './details';
|
|
7
|
+
export type { DimensionLine, ProductDimensions as ProductDimensionsData, ProductHotspotData, Vec3, } from './details';
|
|
8
|
+
export { useDimensionLines, useProductDimensions, useProductHotspots, useProductVariants, } from './useProductDetails';
|
|
9
|
+
export type { ProductDetailsElement, UseProductHotspotsOptions, UseProductHotspotsResult, } from './useProductDetails';
|
|
10
|
+
export { ProductHotspot } from './ProductHotspot';
|
|
11
|
+
export type { ProductHotspotProps } from './ProductHotspot';
|
|
12
|
+
export { ProductDimensions } from './ProductDimensions';
|
|
13
|
+
export type { ProductDimensionsProps } from './ProductDimensions';
|
|
14
|
+
export type { ProductArMode, ProductArState, ProductArStatus, ProductViewerElement, ProductViewerPlacement, ProductViewerProps, ProductViewerScale, } from './types';
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { XRFallbackReason } from '../capabilities/types';
|
|
2
|
+
/** The native path a device takes for surface placement. */
|
|
3
|
+
export type ProductArMode = "webxr" | "scene-viewer" | "quick-look";
|
|
4
|
+
/** Preference order shared by `<ProductViewer arModes>` and `useProductAr({ modes })`. */
|
|
5
|
+
export declare const DEFAULT_PRODUCT_AR_MODES: readonly ProductArMode[];
|
|
6
|
+
/**
|
|
7
|
+
* model-viewer's `ar-status` values, plus the SDK's `unavailable` when no
|
|
8
|
+
* mode is supported on the device.
|
|
9
|
+
*/
|
|
10
|
+
export type ProductArStatus = "unavailable" | "not-presenting" | "session-started" | "object-placed" | "failed";
|
|
11
|
+
export type ProductViewerPlacement = "floor" | "wall";
|
|
12
|
+
export type ProductViewerScale = "auto" | "fixed";
|
|
13
|
+
export type ProductViewerProps = {
|
|
14
|
+
/** glTF / GLB URL (the model every platform renders). */
|
|
15
|
+
src: string;
|
|
16
|
+
/** USDZ URL for iOS Quick Look. Without it iOS falls back to model-viewer's own USDZ export (slower, lower fidelity). */
|
|
17
|
+
iosSrc?: string;
|
|
18
|
+
/** Accessible description. */
|
|
19
|
+
alt?: string;
|
|
20
|
+
/** Poster image shown until the model loads. */
|
|
21
|
+
poster?: string;
|
|
22
|
+
/** Native paths to offer, in preference order. Default `["webxr", "scene-viewer", "quick-look"]`. */
|
|
23
|
+
arModes?: ProductArMode[];
|
|
24
|
+
/** Enable the AR button / `activateAR()`. Default `true`. */
|
|
25
|
+
ar?: boolean;
|
|
26
|
+
/** Where the object lands. Default `floor`. */
|
|
27
|
+
placement?: ProductViewerPlacement;
|
|
28
|
+
/** `fixed` keeps real-world size (no pinch-to-resize). Default `auto`. */
|
|
29
|
+
scale?: ProductViewerScale;
|
|
30
|
+
cameraControls?: boolean;
|
|
31
|
+
autoRotate?: boolean;
|
|
32
|
+
/** `auto` | `eager` | `lazy`; default `auto`. */
|
|
33
|
+
loading?: "auto" | "eager" | "lazy";
|
|
34
|
+
/** Environment image URL or `neutral`. */
|
|
35
|
+
environmentImage?: string;
|
|
36
|
+
shadowIntensity?: number;
|
|
37
|
+
exposure?: number;
|
|
38
|
+
/** Extra attributes passed straight to `<model-viewer>` (anything not wrapped). */
|
|
39
|
+
attributes?: Record<string, string | number | boolean>;
|
|
40
|
+
className?: string;
|
|
41
|
+
style?: React.CSSProperties;
|
|
42
|
+
children?: React.ReactNode;
|
|
43
|
+
onLoad?: () => void;
|
|
44
|
+
onError?: (error: Error) => void;
|
|
45
|
+
/** Fires on every `ar-status` change. */
|
|
46
|
+
onArStatus?: (status: ProductArStatus) => void;
|
|
47
|
+
/** The custom element, once model-viewer is loaded and mounted. */
|
|
48
|
+
onReady?: (element: ProductViewerElement) => void;
|
|
49
|
+
};
|
|
50
|
+
/** The subset of `ModelViewerElement` the SDK relies on (typed loosely so the peer stays optional). */
|
|
51
|
+
export type ProductViewerElement = HTMLElement & {
|
|
52
|
+
src: string;
|
|
53
|
+
canActivateAR: boolean;
|
|
54
|
+
activateAR: () => Promise<void>;
|
|
55
|
+
loaded: boolean;
|
|
56
|
+
modelIsVisible: boolean;
|
|
57
|
+
addEventListener: HTMLElement["addEventListener"];
|
|
58
|
+
removeEventListener: HTMLElement["removeEventListener"];
|
|
59
|
+
};
|
|
60
|
+
export type ProductArState = {
|
|
61
|
+
status: ProductArStatus;
|
|
62
|
+
/** Modes the device supports (from the capability check), in the viewer's preference order. */
|
|
63
|
+
supportedModes: ProductArMode[];
|
|
64
|
+
/** `canActivateAR` from the element once it is ready. */
|
|
65
|
+
canActivate: boolean;
|
|
66
|
+
/** Why AR is unavailable, when it is. */
|
|
67
|
+
reason: XRFallbackReason | null;
|
|
68
|
+
/** True while the viewer library is still loading. */
|
|
69
|
+
loading: boolean;
|
|
70
|
+
error: Error | null;
|
|
71
|
+
};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { XRCapabilities } from '../capabilities/types';
|
|
2
|
+
import { SessionFacade } from '../hooks/useXRSession';
|
|
3
|
+
import { ProductArMode, ProductArState, ProductArStatus, ProductViewerElement } from './types';
|
|
4
|
+
/** Modes the device supports, in the viewer's preference order. */
|
|
5
|
+
export declare const supportedProductArModes: (placement: XRCapabilities["placement"] | null, preference: ProductArMode[]) => ProductArMode[];
|
|
6
|
+
/**
|
|
7
|
+
* The camera handoff. Only WebXR runs in the page and needs the camera the
|
|
8
|
+
* tracking session holds; Scene Viewer and Quick Look open a native activity
|
|
9
|
+
* and never touch the page's stream. So: for `webxr`, stop a running or
|
|
10
|
+
* paused webcam session before AR and bring the same camera back in the
|
|
11
|
+
* same lifecycle (a paused session returns paused) when AR ends; for every
|
|
12
|
+
* other mode do nothing. Pure over the facade; returns the resume function
|
|
13
|
+
* (a no-op when nothing was stopped).
|
|
14
|
+
*/
|
|
15
|
+
export declare const releaseSessionForAr: (session: SessionFacade | null, mode?: ProductArMode | null) => Promise<() => Promise<void>>;
|
|
16
|
+
export type UseProductArOptions = {
|
|
17
|
+
/** Preference order; default `["webxr", "scene-viewer", "quick-look"]`. */
|
|
18
|
+
modes?: ProductArMode[];
|
|
19
|
+
/** Release a running tracking session's camera before AR and restore it after. Default `true`. */
|
|
20
|
+
handoffCamera?: boolean;
|
|
21
|
+
onStatus?: (status: ProductArStatus) => void;
|
|
22
|
+
};
|
|
23
|
+
export type UseProductArResult = ProductArState & {
|
|
24
|
+
/** Attach to `<ProductViewer onReady>` (or pass the element). */
|
|
25
|
+
bind: (element: ProductViewerElement | null) => void;
|
|
26
|
+
/** Launch AR. Must run from a user gesture. Resolves when the native session starts or fails. */
|
|
27
|
+
activate: () => Promise<void>;
|
|
28
|
+
/** The `onArStatus` callback for `<ProductViewer>`; `bind` already listens, this is for apps that wire manually. */
|
|
29
|
+
handleStatus: (status: ProductArStatus) => void;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Observe and drive placement AR for a `<ProductViewer>`: supported modes
|
|
33
|
+
* from the capability check, `canActivate` from the element, the live
|
|
34
|
+
* `ar-status`, and `activate()` with the camera handoff when an
|
|
35
|
+
* `<XRProvider>` session is running on the same page.
|
|
36
|
+
*/
|
|
37
|
+
export declare const useProductAr: (options?: UseProductArOptions) => UseProductArResult;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { DimensionLine, ProductDimensions, ProductHotspotData } from './details';
|
|
2
|
+
import { ProductViewerElement } from './types';
|
|
3
|
+
type Vector3D = {
|
|
4
|
+
x: number;
|
|
5
|
+
y: number;
|
|
6
|
+
z: number;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* The model-viewer members these hooks read, all optional: a
|
|
10
|
+
* `ProductViewerElement` (what `onReady` / the ref hand back) is assignable
|
|
11
|
+
* as is, no cast needed.
|
|
12
|
+
*/
|
|
13
|
+
export type ProductDetailsElement = ProductViewerElement & {
|
|
14
|
+
availableVariants?: string[];
|
|
15
|
+
variantName?: string | null;
|
|
16
|
+
getDimensions?: () => Vector3D;
|
|
17
|
+
getBoundingBoxCenter?: () => Vector3D;
|
|
18
|
+
positionAndNormalFromPoint?: (x: number, y: number) => {
|
|
19
|
+
position: Vector3D;
|
|
20
|
+
normal: Vector3D;
|
|
21
|
+
} | null;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* `KHR_materials_variants` on the loaded model: the names, the active one,
|
|
25
|
+
* and a setter. Variants change materials only, so they carry into AR
|
|
26
|
+
* wherever the platform renders the glTF (WebXR, Scene Viewer); Quick Look
|
|
27
|
+
* shows the USDZ as exported.
|
|
28
|
+
*/
|
|
29
|
+
export declare const useProductVariants: (element: ProductViewerElement | null) => {
|
|
30
|
+
variants: string[];
|
|
31
|
+
variant: string | null;
|
|
32
|
+
setVariant: (name: string | null) => void;
|
|
33
|
+
};
|
|
34
|
+
/** Bounding-box size and centre (model metres) once the model is loaded; `null` before. */
|
|
35
|
+
export declare const useProductDimensions: (element: ProductDetailsElement | null) => ProductDimensions | null;
|
|
36
|
+
export type UseProductHotspotsOptions = {
|
|
37
|
+
/** Starting list (authoring data from storage or the CMS). A new array identity replaces the list, so async data is adopted when it arrives. */
|
|
38
|
+
initial?: ProductHotspotData[];
|
|
39
|
+
onChange?: (hotspots: ProductHotspotData[]) => void;
|
|
40
|
+
};
|
|
41
|
+
export type UseProductHotspotsResult = {
|
|
42
|
+
hotspots: ProductHotspotData[];
|
|
43
|
+
/** Place a hotspot where the pointer hit the model (client coordinates); `null` when the ray missed. */
|
|
44
|
+
placeFromPointer: (clientX: number, clientY: number, label?: string) => ProductHotspotData | null;
|
|
45
|
+
add: (hotspot: Omit<ProductHotspotData, "id"> & {
|
|
46
|
+
id?: string;
|
|
47
|
+
}) => ProductHotspotData;
|
|
48
|
+
update: (id: string, patch: Partial<Omit<ProductHotspotData, "id">>) => void;
|
|
49
|
+
remove: (id: string) => void;
|
|
50
|
+
clear: () => void;
|
|
51
|
+
/** JSON for storage / the CMS. */
|
|
52
|
+
json: string;
|
|
53
|
+
/** Replace from JSON; invalid entries are dropped. */
|
|
54
|
+
importJson: (json: string) => void;
|
|
55
|
+
};
|
|
56
|
+
/** Authoring + runtime state for hotspots; render them with `<ProductHotspot>` inside `<ProductViewer>`. */
|
|
57
|
+
export declare const useProductHotspots: (element: ProductDetailsElement | null, options?: UseProductHotspotsOptions) => UseProductHotspotsResult;
|
|
58
|
+
/** Dimension lines for `<ProductDimensions>`; `[]` until the model is loaded. */
|
|
59
|
+
export declare const useDimensionLines: (dimensions: ProductDimensions | null) => DimensionLine[];
|
|
60
|
+
export {};
|
package/dist/product.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var ae=Object.create;var X=Object.defineProperty;var ie=Object.getOwnPropertyDescriptor;var ce=Object.getOwnPropertyNames;var ue=Object.getPrototypeOf,le=Object.prototype.hasOwnProperty;var de=(e,r,t,a)=>{if(r&&typeof r=="object"||typeof r=="function")for(let s of ce(r))!le.call(e,s)&&s!==t&&X(e,s,{get:()=>r[s],enumerable:!(a=ie(r,s))||a.enumerable});return e};var fe=(e,r,t)=>(t=e!=null?ae(ue(e)):{},de(r||!e||!e.__esModule?X(t,"default",{value:e,enumerable:!0}):t,e));Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const S=require("react/jsx-runtime"),o=require("react"),N=require("./index-CfSF8LXa.cjs"),pe=require("./useXRCapabilities-Cr3RzuAW.cjs");let j=null;const B=()=>typeof customElements<"u"&&customElements.get("model-viewer")!==void 0,U=()=>B()?Promise.resolve():(j||(j=import("@google/model-viewer").then(()=>{}).catch(e=>{throw j=null,new Error(`@google/model-viewer could not be loaded (install it as a dependency to use <ProductViewer>): ${e instanceof Error?e.message:String(e)}`)})),j),O=["webxr","scene-viewer","quick-look"],W=o.forwardRef(({src:e,iosSrc:r,alt:t="3D product",poster:a,arModes:s=O,ar:n=!0,placement:i="floor",scale:d="auto",cameraControls:f=!0,autoRotate:A=!1,loading:v="auto",environmentImage:x,shadowIntensity:l=1,exposure:c,attributes:p,className:m,style:y,children:h,onLoad:g,onError:P,onArStatus:F,onReady:M},u)=>{const E=o.useRef(null),[R,re]=o.useState(!1),L=o.useRef({onLoad:g,onError:P,onArStatus:F,onReady:M});L.current={onLoad:g,onError:P,onArStatus:F,onReady:M};const ne=o.useCallback(b=>{E.current=b,typeof u=="function"?u(b):u&&(u.current=b)},[u]);o.useEffect(()=>{let b=!0;return U().then(()=>{b&&re(!0)}).catch($=>{var D,z;b&&((z=(D=L.current).onError)==null||z.call(D,$))}),()=>{b=!1}},[]),o.useEffect(()=>{var q,I;const b=E.current;if(!R||!b)return;const $=()=>{var k,w;return(w=(k=L.current).onLoad)==null?void 0:w.call(k)},D=k=>{var V,T;const w=k.detail;(T=(V=L.current).onError)==null||T.call(V,(w==null?void 0:w.sourceError)??new Error(`model-viewer ${(w==null?void 0:w.type)??"error"} for ${e}`))},z=k=>{var w,V;return(V=(w=L.current).onArStatus)==null?void 0:V.call(w,k.detail.status)};return b.addEventListener("load",$),b.addEventListener("error",D),b.addEventListener("ar-status",z),(I=(q=L.current).onReady)==null||I.call(q,b),()=>{b.removeEventListener("load",$),b.removeEventListener("error",D),b.removeEventListener("ar-status",z)}},[R,e]);const oe={src:e,alt:t,...r?{"ios-src":r}:{},...a?{poster:a}:{},...n?{ar:"","ar-modes":s.join(" "),"ar-placement":i,"ar-scale":d}:{},...f?{"camera-controls":""}:{},...A?{"auto-rotate":""}:{},loading:v,...x?{"environment-image":x}:{},"shadow-intensity":String(l),...c!==void 0?{exposure:String(c)}:{},...p??{},class:m,style:y,ref:ne};return o.createElement("model-viewer",oe,h)});W.displayName="ProductViewer";const J=(e,r)=>{if(!e)return[];const t={webxr:e.webxr,"scene-viewer":e.sceneViewer,"quick-look":e.quickLook};return r.filter(a=>t[a])},G=async(e,r="webxr")=>{if(!e||r!=="webxr")return async()=>{};const t=e.store.getSnapshot(),a=t.lifecycle==="paused";if(t.lifecycle!=="running"&&!a)return async()=>{};if(t.source!==N.XRMediaSource.WEBCAM)return async()=>{};const s=t.cameraFacing??"user";return await e.stop(),async()=>{await e.switchCamera({facingMode:s}),a&&e.pause()}},me=(e={})=>{var M;const{handoffCamera:r=!0}=e,t=(e.modes??O).join(","),a=o.useMemo(()=>t.split(","),[t]),s=pe.useXRCapabilities({queryPermission:!1}),n=N.useOptionalXRContext(),[i,d]=o.useState(null),[f,A]=o.useState("not-presenting"),[v,x]=o.useState(!1),[l,c]=o.useState(null),p=o.useRef(null),m=o.useRef(e.onStatus);m.current=e.onStatus;const y=o.useMemo(()=>{var u;return J(((u=s.capabilities)==null?void 0:u.placement)??null,a)},[s.capabilities,a]),h=s.status==="ready"&&y.length===0?((M=s.capabilities)==null?void 0:M.placement.reason)??N.createFallbackReason("placement-unsupported"):null,g=o.useCallback(u=>{var E;if(A(u),(E=m.current)==null||E.call(m,u),u==="not-presenting"||u==="failed"){const R=p.current;p.current=null,R&&R().catch(()=>{})}},[]),P=o.useCallback(u=>{d(u)},[]);o.useEffect(()=>{if(!i)return;const u=R=>g(R.detail.status),E=()=>x(!!i.canActivateAR);return i.addEventListener("ar-status",u),i.addEventListener("load",E),x(!!i.canActivateAR),()=>{i.removeEventListener("ar-status",u),i.removeEventListener("load",E)}},[i,g]);const F=o.useCallback(async()=>{if(!i)throw new Error("useProductAr: bind the <ProductViewer> first");c(null);try{r&&(p.current=await G((n==null?void 0:n.session)??null,y[0]??null)),await i.activateAR()}catch(u){const E=u instanceof Error?u:new Error(String(u));throw c(E),g("failed"),E}},[i,r,n,g,y]);return o.useMemo(()=>({status:h?"unavailable":f,supportedModes:y,canActivate:v,reason:h,loading:s.status==="checking"||s.status==="idle",error:l,bind:P,activate:F,handleStatus:g}),[h,f,y,v,s.status,l,P,F,g])},H=(e,r=4)=>e.map(t=>Number(t.toFixed(r))).join(" "),K=e=>({slot:`hotspot-${e.id}`,"data-position":H(e.position),"data-normal":H(e.normal)}),be=/[^a-z0-9-]+/g,Q=(e,r)=>{let t=(r??"").toLowerCase().replace(be,"-").replace(/^-+|-+$/g,"")||"hotspot";t.startsWith("__")&&(t=t.replace(/^_+/,"")||"hotspot");const a=new Set(e.map(n=>n.id));if(!a.has(t))return t;let s=2;for(;a.has(`${t}-${s}`);)s+=1;return`${t}-${s}`},_=e=>{if(!Array.isArray(e))return[];const r=[],t=new Set;for(const a of e){if(!a||typeof a!="object")continue;const s=a,n=Array.isArray(s.position)?s.position:null,i=Array.isArray(s.normal)?s.normal:[0,0,1];typeof s.id!="string"||!s.id||t.has(s.id)||s.id.startsWith("__")||!n||n.length!==3||n.some(d=>typeof d!="number"||!Number.isFinite(d))||i.length!==3||i.some(d=>typeof d!="number"||!Number.isFinite(d))||(t.add(s.id),r.push({id:s.id,position:[n[0],n[1],n[2]],normal:[i[0],i[1],i[2]],...typeof s.label=="string"?{label:s.label}:{},...typeof s.description=="string"?{description:s.description}:{}}))}return r},Y=e=>JSON.stringify(_(e),null,2),Z=(e,r="metric")=>{if(!Number.isFinite(e))return"–";if(r==="imperial"){const t=e/.0254;return t>=12?`${(t/12).toFixed(2)} ft`:`${t.toFixed(1)} in`}return e>=1?`${e.toFixed(2)} m`:`${(e*100).toFixed(1)} cm`},ee=({size:e,center:r})=>{const[t,a,s]=e,[n,i,d]=r,f=n-t/2,A=n+t/2,v=i-a/2,x=i+a/2,l=d-s/2,c=d+s/2,p=(m,y,h,g)=>({axis:m,start:y,end:h,mid:[(y[0]+h[0])/2,(y[1]+h[1])/2,(y[2]+h[2])/2],length:g});return[p("x",[f,v,c],[A,v,c],t),p("y",[f,v,c],[f,x,c],a),p("z",[f,v,l],[f,v,c],s)]},C=e=>e,te=(e,r)=>(e.loaded&&r(),e.addEventListener("load",r),()=>e.removeEventListener("load",r)),ye=e=>{const[r,t]=o.useState([]),[a,s]=o.useState(null);o.useEffect(()=>{if(e)return te(e,()=>{t([...C(e).availableVariants??[]]),s(C(e).variantName??null)})},[e]);const n=o.useCallback(i=>{e&&(C(e).variantName=i,s(i))},[e]);return o.useMemo(()=>({variants:r,variant:a,setVariant:n}),[r,a,n])},ge=e=>{const[r,t]=o.useState(null);return o.useEffect(()=>{if(e)return te(e,()=>{var n,i,d,f;const a=(i=(n=C(e)).getDimensions)==null?void 0:i.call(n),s=(f=(d=C(e)).getBoundingBoxCenter)==null?void 0:f.call(d);!a||!s||t({size:[a.x,a.y,a.z],center:[s.x,s.y,s.z]})})},[e]),r},ve=(e,r={})=>{const[t,a]=o.useState(()=>_(r.initial??[])),s=o.useRef(r.initial);o.useEffect(()=>{r.initial!==s.current&&(s.current=r.initial,a(_(r.initial??[])))},[r.initial]);const n=o.useCallback(l=>{var c;a(l),(c=r.onChange)==null||c.call(r,l)},[r.onChange]),i=o.useCallback(l=>{const c={...l,id:l.id??Q(t,l.label)};return n([...t,c]),c},[t,n]),d=o.useCallback((l,c,p)=>{var g,P;const m=e?(P=(g=C(e)).positionAndNormalFromPoint)==null?void 0:P.call(g,l,c):null;if(!m)return null;const y=[m.position.x,m.position.y,m.position.z],h=[m.normal.x,m.normal.y,m.normal.z];return i({position:y,normal:h,...p?{label:p}:{}})},[e,i]),f=o.useCallback((l,c)=>n(t.map(p=>p.id===l?{...p,...c}:p)),[t,n]),A=o.useCallback(l=>n(t.filter(c=>c.id!==l)),[t,n]),v=o.useCallback(()=>n([]),[n]),x=o.useCallback(l=>{try{n(_(JSON.parse(l)))}catch{}},[n]);return o.useMemo(()=>({hotspots:t,placeFromPointer:d,add:i,update:f,remove:A,clear:v,json:Y(t),importJson:x}),[t,d,i,f,A,v,x])},se=e=>o.useMemo(()=>e?ee(e):[],[e]),he={display:"flex",alignItems:"center",gap:6,padding:"4px 8px",borderRadius:999,background:"rgba(8, 15, 28, 0.85)",color:"#f8fafc",border:"1px solid rgba(255,255,255,0.3)",fontSize:12,fontFamily:"system-ui, sans-serif",whiteSpace:"nowrap",cursor:"pointer"},we={display:"inline-flex",alignItems:"center",gap:6,transform:"translate(-50%, -50%)"},Ee={background:"none",border:0,padding:0,margin:0},xe=({hotspot:e,children:r,onClick:t,style:a,className:s})=>S.jsx("button",{type:"button",...K(e),className:s,style:Ee,onClick:n=>{n.stopPropagation(),t==null||t(e)},"aria-label":e.label??e.id,"data-visibility-attribute":"visible",children:S.jsx("span",{style:{...he,...we,...a},children:r??S.jsxs(S.Fragment,{children:[S.jsx("span",{style:{width:8,height:8,borderRadius:4,background:"#22d3ee"}}),e.label]})})}),Se={padding:"2px 6px",borderRadius:4,background:"rgba(8, 15, 28, 0.85)",color:"#f8fafc",border:"1px solid rgba(255,255,255,0.3)",fontSize:11,fontFamily:"ui-monospace, monospace",whiteSpace:"nowrap",transform:"translate(-50%, -50%)"},Ae="hotspot-__dim-",Pe={x:"W",y:"H",z:"D"},Re=({dimensions:e,unit:r="metric",axes:t=["x","y","z"],style:a})=>{const s=se(e);return S.jsx(S.Fragment,{children:s.filter(n=>t.includes(n.axis)).map(n=>S.jsx("div",{slot:`${Ae}${n.axis}`,"data-position":H(n.mid),"data-normal":n.axis==="y"?"-1 0 0":"0 0 1",children:S.jsxs("span",{style:{...Se,...a},children:[Pe[n.axis]," ",Z(n.length,r)]})},n.axis))})};exports.DEFAULT_PRODUCT_AR_MODES=O;exports.ProductDimensions=Re;exports.ProductHotspot=xe;exports.ProductViewer=W;exports.dimensionLines=ee;exports.formatLength=Z;exports.hotspotAttributes=K;exports.isModelViewerDefined=B;exports.loadModelViewer=U;exports.nextHotspotId=Q;exports.parseHotspots=_;exports.releaseSessionForAr=G;exports.serializeHotspots=Y;exports.supportedProductArModes=J;exports.useDimensionLines=se;exports.useProductAr=me;exports.useProductDimensions=ge;exports.useProductHotspots=ve;exports.useProductVariants=ye;
|