@3driseai/3drise-viewer 0.1.28 → 0.1.29
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/dist/animationsV2/ClipPlayer.d.ts.map +1 -1
- package/dist/animationsV2/ClipPlayer.js +13 -9
- package/dist/animationsV2/ClipsRuntime.d.ts +44 -3
- package/dist/animationsV2/ClipsRuntime.d.ts.map +1 -1
- package/dist/animationsV2/ClipsRuntime.js +173 -55
- package/dist/animationsV2/appliers.d.ts.map +1 -1
- package/dist/animationsV2/appliers.js +21 -5
- package/dist/animationsV2/index.d.ts +1 -1
- package/dist/animationsV2/index.d.ts.map +1 -1
- package/dist/animationsV2/normalize.d.ts.map +1 -1
- package/dist/animationsV2/normalize.js +7 -3
- package/dist/animationsV2/sequenceUtils.d.ts +44 -6
- package/dist/animationsV2/sequenceUtils.d.ts.map +1 -1
- package/dist/animationsV2/sequenceUtils.js +58 -12
- package/dist/animationsV2/types.d.ts +22 -12
- package/dist/animationsV2/types.d.ts.map +1 -1
- package/dist/api/sceneHandle.d.ts +35 -1
- package/dist/api/sceneHandle.d.ts.map +1 -1
- package/dist/api/sceneHandle.js +88 -17
- package/dist/components/AdvancedGrid.d.ts +1 -5
- package/dist/components/AdvancedGrid.d.ts.map +1 -1
- package/dist/components/AdvancedGrid.js +6 -35
- package/dist/components/AnimatedObject.d.ts.map +1 -1
- package/dist/components/AnimatedObject.js +9 -4
- package/dist/components/ApollonianGrid.d.ts +1 -1
- package/dist/components/ApollonianGrid.d.ts.map +1 -1
- package/dist/components/ApollonianGrid.js +3 -28
- package/dist/components/ChladniGrid.d.ts +1 -1
- package/dist/components/ChladniGrid.d.ts.map +1 -1
- package/dist/components/ChladniGrid.js +6 -35
- package/dist/components/CircuitGrid.d.ts +1 -1
- package/dist/components/CircuitGrid.d.ts.map +1 -1
- package/dist/components/CircuitGrid.js +6 -34
- package/dist/components/ConformalGrid.d.ts +1 -1
- package/dist/components/ConformalGrid.d.ts.map +1 -1
- package/dist/components/ConformalGrid.js +3 -34
- package/dist/components/ContourGrid.d.ts +1 -1
- package/dist/components/ContourGrid.d.ts.map +1 -1
- package/dist/components/ContourGrid.js +6 -34
- package/dist/components/CustomPrimitive.js +1 -1
- package/dist/components/EnvironmentObject.d.ts.map +1 -1
- package/dist/components/EnvironmentObject.js +9 -7
- package/dist/components/FlowNetGrid.d.ts +1 -1
- package/dist/components/FlowNetGrid.d.ts.map +1 -1
- package/dist/components/FlowNetGrid.js +6 -34
- package/dist/components/FractalGrid.d.ts +1 -1
- package/dist/components/FractalGrid.d.ts.map +1 -1
- package/dist/components/FractalGrid.js +6 -37
- package/dist/components/Galaxy.d.ts.map +1 -1
- package/dist/components/Galaxy.js +9 -23
- package/dist/components/GirihGrid.d.ts +1 -1
- package/dist/components/GirihGrid.d.ts.map +1 -1
- package/dist/components/GirihGrid.js +6 -35
- package/dist/components/GravWaveGrid.d.ts +1 -1
- package/dist/components/GravWaveGrid.d.ts.map +1 -1
- package/dist/components/GravWaveGrid.js +6 -35
- package/dist/components/HexGrid.d.ts +1 -5
- package/dist/components/HexGrid.d.ts.map +1 -1
- package/dist/components/HexGrid.js +6 -36
- package/dist/components/HilbertGrid.d.ts +1 -1
- package/dist/components/HilbertGrid.d.ts.map +1 -1
- package/dist/components/HilbertGrid.js +3 -30
- package/dist/components/HyperbolicGrid.d.ts +1 -1
- package/dist/components/HyperbolicGrid.d.ts.map +1 -1
- package/dist/components/HyperbolicGrid.js +6 -34
- package/dist/components/LandObject.d.ts +9 -0
- package/dist/components/LandObject.d.ts.map +1 -0
- package/dist/components/LandObject.js +15 -0
- package/dist/components/LensingGrid.d.ts +1 -1
- package/dist/components/LensingGrid.d.ts.map +1 -1
- package/dist/components/LensingGrid.js +3 -29
- package/dist/components/LightsManager.d.ts.map +1 -1
- package/dist/components/LightsManager.js +8 -0
- package/dist/components/ModelBoundary.d.ts +2 -0
- package/dist/components/ModelBoundary.d.ts.map +1 -1
- package/dist/components/ModelBoundary.js +3 -0
- package/dist/components/ModelPrimitive.d.ts.map +1 -1
- package/dist/components/ModelPrimitive.js +6 -0
- package/dist/components/MoireGrid.d.ts +1 -1
- package/dist/components/MoireGrid.d.ts.map +1 -1
- package/dist/components/MoireGrid.js +6 -35
- package/dist/components/MoonDisc.d.ts +11 -0
- package/dist/components/MoonDisc.d.ts.map +1 -0
- package/dist/components/MoonDisc.js +128 -0
- package/dist/components/ObjectNode.d.ts.map +1 -1
- package/dist/components/ObjectNode.js +15 -4
- package/dist/components/ObjectsRenderer.d.ts.map +1 -1
- package/dist/components/ObjectsRenderer.js +7 -5
- package/dist/components/OceanBuilder.d.ts.map +1 -1
- package/dist/components/OceanBuilder.js +2 -0
- package/dist/components/ParastichyGrid.d.ts +1 -1
- package/dist/components/ParastichyGrid.d.ts.map +1 -1
- package/dist/components/ParastichyGrid.js +3 -30
- package/dist/components/PhyllotaxisGrid.d.ts +1 -1
- package/dist/components/PhyllotaxisGrid.d.ts.map +1 -1
- package/dist/components/PhyllotaxisGrid.js +3 -32
- package/dist/components/ProjectLoader.d.ts +5 -3
- package/dist/components/ProjectLoader.d.ts.map +1 -1
- package/dist/components/ProjectLoader.js +6 -3
- package/dist/components/QuasiGrid.d.ts +1 -1
- package/dist/components/QuasiGrid.d.ts.map +1 -1
- package/dist/components/QuasiGrid.js +6 -33
- package/dist/components/RadarGrid.d.ts +1 -1
- package/dist/components/RadarGrid.d.ts.map +1 -1
- package/dist/components/RadarGrid.js +6 -34
- package/dist/components/ReactionDiffusionGrid.d.ts +1 -1
- package/dist/components/ReactionDiffusionGrid.d.ts.map +1 -1
- package/dist/components/ReactionDiffusionGrid.js +6 -35
- package/dist/components/SceneBuilder.d.ts +25 -3
- package/dist/components/SceneBuilder.d.ts.map +1 -1
- package/dist/components/SceneBuilder.js +68 -38
- package/dist/components/SkyController.d.ts +25 -1
- package/dist/components/SkyController.d.ts.map +1 -1
- package/dist/components/SkyController.js +189 -130
- package/dist/components/SkyMesh.d.ts.map +1 -1
- package/dist/components/SkyMesh.js +26 -1
- package/dist/components/SkyStars.d.ts +11 -0
- package/dist/components/SkyStars.d.ts.map +1 -0
- package/dist/components/SkyStars.js +187 -0
- package/dist/components/SkySystem.d.ts +3 -3
- package/dist/components/SkySystem.d.ts.map +1 -1
- package/dist/components/SkySystem.js +8 -2
- package/dist/components/Sun.d.ts +15 -1
- package/dist/components/Sun.d.ts.map +1 -1
- package/dist/components/Sun.js +64 -3
- package/dist/components/SunLight.d.ts +6 -1
- package/dist/components/SunLight.d.ts.map +1 -1
- package/dist/components/SunLight.js +96 -44
- package/dist/components/TerrainBuilder.d.ts.map +1 -1
- package/dist/components/TerrainBuilder.js +2 -0
- package/dist/components/TextGenerator.d.ts +9 -0
- package/dist/components/TextGenerator.d.ts.map +1 -0
- package/dist/components/TextGenerator.js +29 -0
- package/dist/components/TruchetGrid.d.ts +1 -1
- package/dist/components/TruchetGrid.d.ts.map +1 -1
- package/dist/components/TruchetGrid.js +3 -30
- package/dist/components/VoronoiGrid.d.ts +1 -1
- package/dist/components/VoronoiGrid.d.ts.map +1 -1
- package/dist/components/VoronoiGrid.js +6 -33
- package/dist/components/WallpaperGrid.d.ts +1 -1
- package/dist/components/WallpaperGrid.d.ts.map +1 -1
- package/dist/components/WallpaperGrid.js +6 -35
- package/dist/components/environment/Rain.d.ts +15 -0
- package/dist/components/environment/Rain.d.ts.map +1 -0
- package/dist/components/environment/Rain.js +110 -0
- package/dist/components/environment/Rainbow.d.ts +20 -0
- package/dist/components/environment/Rainbow.d.ts.map +1 -0
- package/dist/components/environment/Rainbow.js +974 -0
- package/dist/components/environment/Sandstorm.d.ts +20 -0
- package/dist/components/environment/Sandstorm.d.ts.map +1 -0
- package/dist/components/environment/Sandstorm.js +776 -0
- package/dist/components/environment/Snow.d.ts +20 -0
- package/dist/components/environment/Snow.d.ts.map +1 -0
- package/dist/components/environment/Snow.js +609 -0
- package/dist/components/environment/Thunderstorm.d.ts +20 -0
- package/dist/components/environment/Thunderstorm.d.ts.map +1 -0
- package/dist/components/environment/Thunderstorm.js +731 -0
- package/dist/components/environment/Tornado.d.ts +20 -0
- package/dist/components/environment/Tornado.d.ts.map +1 -0
- package/dist/components/environment/Tornado.js +762 -0
- package/dist/components/environment/index.d.ts +13 -0
- package/dist/components/environment/index.d.ts.map +1 -0
- package/dist/components/environment/index.js +7 -0
- package/dist/components/index.d.ts +10 -10
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +8 -6
- package/dist/components/land/LandPatch.d.ts +15 -0
- package/dist/components/land/LandPatch.d.ts.map +1 -0
- package/dist/components/land/LandPatch.js +170 -0
- package/dist/components/land/index.d.ts +3 -0
- package/dist/components/land/index.d.ts.map +1 -0
- package/dist/components/land/index.js +1 -0
- package/dist/components/space/Earth.d.ts +16 -0
- package/dist/components/space/Earth.d.ts.map +1 -0
- package/dist/components/space/Earth.js +75 -0
- package/dist/components/space/ShootingStar.d.ts +21 -0
- package/dist/components/space/ShootingStar.d.ts.map +1 -0
- package/dist/components/space/ShootingStar.js +101 -0
- package/dist/components/space/ShootingStars.d.ts +16 -0
- package/dist/components/space/ShootingStars.d.ts.map +1 -0
- package/dist/components/space/ShootingStars.js +71 -0
- package/dist/components/space/SolarSystem.d.ts +16 -0
- package/dist/components/space/SolarSystem.d.ts.map +1 -0
- package/dist/components/space/SolarSystem.js +141 -0
- package/dist/components/space/Stars.d.ts +20 -0
- package/dist/components/space/Stars.d.ts.map +1 -0
- package/dist/components/space/Stars.js +160 -0
- package/dist/components/space/index.d.ts +11 -0
- package/dist/components/space/index.d.ts.map +1 -0
- package/dist/components/space/index.js +8 -0
- package/dist/components/terrain/TerrainSurface.d.ts.map +1 -1
- package/dist/components/terrain/TerrainSurface.js +27 -3
- package/dist/components/terrain/types.d.ts +5 -1
- package/dist/components/terrain/types.d.ts.map +1 -1
- package/dist/components/text/BurnAwayText.d.ts +15 -0
- package/dist/components/text/BurnAwayText.d.ts.map +1 -0
- package/dist/components/text/BurnAwayText.js +4 -0
- package/dist/components/text/ChalkboardText.d.ts +15 -0
- package/dist/components/text/ChalkboardText.d.ts.map +1 -0
- package/dist/components/text/ChalkboardText.js +4 -0
- package/dist/components/text/ConstellationText.d.ts +15 -0
- package/dist/components/text/ConstellationText.d.ts.map +1 -0
- package/dist/components/text/ConstellationText.js +4 -0
- package/dist/components/text/EmbroideryText.d.ts +15 -0
- package/dist/components/text/EmbroideryText.d.ts.map +1 -0
- package/dist/components/text/EmbroideryText.js +4 -0
- package/dist/components/text/FourierSketchText.d.ts +15 -0
- package/dist/components/text/FourierSketchText.d.ts.map +1 -0
- package/dist/components/text/FourierSketchText.js +4 -0
- package/dist/components/text/FrostGrowthText.d.ts +15 -0
- package/dist/components/text/FrostGrowthText.d.ts.map +1 -0
- package/dist/components/text/FrostGrowthText.js +4 -0
- package/dist/components/text/HandwritingText.d.ts +15 -0
- package/dist/components/text/HandwritingText.d.ts.map +1 -0
- package/dist/components/text/HandwritingText.js +4 -0
- package/dist/components/text/InkBleedText.d.ts +15 -0
- package/dist/components/text/InkBleedText.d.ts.map +1 -0
- package/dist/components/text/InkBleedText.js +4 -0
- package/dist/components/text/LightPaintingText.d.ts +15 -0
- package/dist/components/text/LightPaintingText.d.ts.map +1 -0
- package/dist/components/text/LightPaintingText.js +4 -0
- package/dist/components/text/LiquidMetalText.d.ts +15 -0
- package/dist/components/text/LiquidMetalText.d.ts.map +1 -0
- package/dist/components/text/LiquidMetalText.js +4 -0
- package/dist/components/text/NeonTubeText.d.ts +15 -0
- package/dist/components/text/NeonTubeText.d.ts.map +1 -0
- package/dist/components/text/NeonTubeText.js +4 -0
- package/dist/components/text/PlasmaDischargeText.d.ts +15 -0
- package/dist/components/text/PlasmaDischargeText.d.ts.map +1 -0
- package/dist/components/text/PlasmaDischargeText.js +4 -0
- package/dist/components/text/TextObjectView.d.ts +12 -0
- package/dist/components/text/TextObjectView.d.ts.map +1 -0
- package/dist/components/text/TextObjectView.js +11 -0
- package/dist/components/text/engine/fieldkit.d.ts +24 -0
- package/dist/components/text/engine/fieldkit.d.ts.map +1 -0
- package/dist/components/text/engine/fieldkit.js +201 -0
- package/dist/components/text/engine/glyphs.d.ts +19 -0
- package/dist/components/text/engine/glyphs.d.ts.map +1 -0
- package/dist/components/text/engine/glyphs.js +269 -0
- package/dist/components/text/engine/looks/burnAway.d.ts +144 -0
- package/dist/components/text/engine/looks/burnAway.d.ts.map +1 -0
- package/dist/components/text/engine/looks/burnAway.js +593 -0
- package/dist/components/text/engine/looks/chalkboard.d.ts +135 -0
- package/dist/components/text/engine/looks/chalkboard.d.ts.map +1 -0
- package/dist/components/text/engine/looks/chalkboard.js +426 -0
- package/dist/components/text/engine/looks/constellation.d.ts +111 -0
- package/dist/components/text/engine/looks/constellation.d.ts.map +1 -0
- package/dist/components/text/engine/looks/constellation.js +496 -0
- package/dist/components/text/engine/looks/embroidery.d.ts +165 -0
- package/dist/components/text/engine/looks/embroidery.d.ts.map +1 -0
- package/dist/components/text/engine/looks/embroidery.js +645 -0
- package/dist/components/text/engine/looks/frostGrowth.d.ts +109 -0
- package/dist/components/text/engine/looks/frostGrowth.d.ts.map +1 -0
- package/dist/components/text/engine/looks/frostGrowth.js +727 -0
- package/dist/components/text/engine/looks/index.d.ts +2 -0
- package/dist/components/text/engine/looks/index.d.ts.map +1 -0
- package/dist/components/text/engine/looks/index.js +48 -0
- package/dist/components/text/engine/looks/inkBleed.d.ts +103 -0
- package/dist/components/text/engine/looks/inkBleed.d.ts.map +1 -0
- package/dist/components/text/engine/looks/inkBleed.js +590 -0
- package/dist/components/text/engine/looks/lightPainting.d.ts +132 -0
- package/dist/components/text/engine/looks/lightPainting.d.ts.map +1 -0
- package/dist/components/text/engine/looks/lightPainting.js +567 -0
- package/dist/components/text/engine/looks/liquidMetal.d.ts +135 -0
- package/dist/components/text/engine/looks/liquidMetal.d.ts.map +1 -0
- package/dist/components/text/engine/looks/liquidMetal.js +655 -0
- package/dist/components/text/engine/looks/plasmaDischarge.d.ts +126 -0
- package/dist/components/text/engine/looks/plasmaDischarge.d.ts.map +1 -0
- package/dist/components/text/engine/looks/plasmaDischarge.js +763 -0
- package/dist/components/text/engine/methods.d.ts +19 -0
- package/dist/components/text/engine/methods.d.ts.map +1 -0
- package/dist/components/text/engine/methods.js +126 -0
- package/dist/components/text/engine/playback.d.ts +40 -0
- package/dist/components/text/engine/playback.d.ts.map +1 -0
- package/dist/components/text/engine/playback.js +114 -0
- package/dist/components/text/engine/ribbon.d.ts +58 -0
- package/dist/components/text/engine/ribbon.d.ts.map +1 -0
- package/dist/components/text/engine/ribbon.js +250 -0
- package/dist/components/text/engine/variants.d.ts +159 -0
- package/dist/components/text/engine/variants.d.ts.map +1 -0
- package/dist/components/text/engine/variants.js +378 -0
- package/dist/components/text/fonts/architects-daughter.outline.d.ts +3 -0
- package/dist/components/text/fonts/architects-daughter.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/architects-daughter.outline.js +4 -0
- package/dist/components/text/fonts/architects-daughter.strokes.d.ts +3 -0
- package/dist/components/text/fonts/architects-daughter.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/architects-daughter.strokes.js +4 -0
- package/dist/components/text/fonts/caveat.outline.d.ts +3 -0
- package/dist/components/text/fonts/caveat.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/caveat.outline.js +4 -0
- package/dist/components/text/fonts/caveat.strokes.d.ts +3 -0
- package/dist/components/text/fonts/caveat.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/caveat.strokes.js +4 -0
- package/dist/components/text/fonts/courgette.outline.d.ts +3 -0
- package/dist/components/text/fonts/courgette.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/courgette.outline.js +4 -0
- package/dist/components/text/fonts/courgette.strokes.d.ts +3 -0
- package/dist/components/text/fonts/courgette.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/courgette.strokes.js +4 -0
- package/dist/components/text/fonts/dancing-script.outline.d.ts +3 -0
- package/dist/components/text/fonts/dancing-script.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/dancing-script.outline.js +4 -0
- package/dist/components/text/fonts/dancing-script.strokes.d.ts +3 -0
- package/dist/components/text/fonts/dancing-script.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/dancing-script.strokes.js +4 -0
- package/dist/components/text/fonts/gochi-hand.outline.d.ts +3 -0
- package/dist/components/text/fonts/gochi-hand.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/gochi-hand.outline.js +4 -0
- package/dist/components/text/fonts/gochi-hand.strokes.d.ts +3 -0
- package/dist/components/text/fonts/gochi-hand.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/gochi-hand.strokes.js +4 -0
- package/dist/components/text/fonts/handlee.outline.d.ts +3 -0
- package/dist/components/text/fonts/handlee.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/handlee.outline.js +4 -0
- package/dist/components/text/fonts/handlee.strokes.d.ts +3 -0
- package/dist/components/text/fonts/handlee.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/handlee.strokes.js +4 -0
- package/dist/components/text/fonts/index.d.ts +5 -0
- package/dist/components/text/fonts/index.d.ts.map +1 -0
- package/dist/components/text/fonts/index.js +44 -0
- package/dist/components/text/fonts/indie-flower.outline.d.ts +3 -0
- package/dist/components/text/fonts/indie-flower.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/indie-flower.outline.js +4 -0
- package/dist/components/text/fonts/indie-flower.strokes.d.ts +3 -0
- package/dist/components/text/fonts/indie-flower.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/indie-flower.strokes.js +4 -0
- package/dist/components/text/fonts/kalam.outline.d.ts +3 -0
- package/dist/components/text/fonts/kalam.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/kalam.outline.js +4 -0
- package/dist/components/text/fonts/kalam.strokes.d.ts +3 -0
- package/dist/components/text/fonts/kalam.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/kalam.strokes.js +4 -0
- package/dist/components/text/fonts/kaushan-script.outline.d.ts +3 -0
- package/dist/components/text/fonts/kaushan-script.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/kaushan-script.outline.js +4 -0
- package/dist/components/text/fonts/kaushan-script.strokes.d.ts +3 -0
- package/dist/components/text/fonts/kaushan-script.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/kaushan-script.strokes.js +4 -0
- package/dist/components/text/fonts/mynerve.outline.d.ts +3 -0
- package/dist/components/text/fonts/mynerve.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/mynerve.outline.js +4 -0
- package/dist/components/text/fonts/mynerve.strokes.d.ts +3 -0
- package/dist/components/text/fonts/mynerve.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/mynerve.strokes.js +4 -0
- package/dist/components/text/fonts/nanum-pen-script.outline.d.ts +3 -0
- package/dist/components/text/fonts/nanum-pen-script.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/nanum-pen-script.outline.js +4 -0
- package/dist/components/text/fonts/nanum-pen-script.strokes.d.ts +3 -0
- package/dist/components/text/fonts/nanum-pen-script.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/nanum-pen-script.strokes.js +4 -0
- package/dist/components/text/fonts/pacifico.outline.d.ts +3 -0
- package/dist/components/text/fonts/pacifico.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/pacifico.outline.js +4 -0
- package/dist/components/text/fonts/pacifico.strokes.d.ts +3 -0
- package/dist/components/text/fonts/pacifico.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/pacifico.strokes.js +4 -0
- package/dist/components/text/fonts/patrick-hand.outline.d.ts +3 -0
- package/dist/components/text/fonts/patrick-hand.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/patrick-hand.outline.js +4 -0
- package/dist/components/text/fonts/patrick-hand.strokes.d.ts +3 -0
- package/dist/components/text/fonts/patrick-hand.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/patrick-hand.strokes.js +4 -0
- package/dist/components/text/fonts/poppins.outline.d.ts +3 -0
- package/dist/components/text/fonts/poppins.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/poppins.outline.js +4 -0
- package/dist/components/text/fonts/poppins.strokes.d.ts +3 -0
- package/dist/components/text/fonts/poppins.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/poppins.strokes.js +4 -0
- package/dist/components/text/fonts/satisfy.outline.d.ts +3 -0
- package/dist/components/text/fonts/satisfy.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/satisfy.outline.js +4 -0
- package/dist/components/text/fonts/satisfy.strokes.d.ts +3 -0
- package/dist/components/text/fonts/satisfy.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/satisfy.strokes.js +4 -0
- package/dist/components/text/fonts/sriracha.outline.d.ts +3 -0
- package/dist/components/text/fonts/sriracha.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/sriracha.outline.js +4 -0
- package/dist/components/text/fonts/sriracha.strokes.d.ts +3 -0
- package/dist/components/text/fonts/sriracha.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/sriracha.strokes.js +4 -0
- package/dist/components/text/index.d.ts +27 -0
- package/dist/components/text/index.d.ts.map +1 -0
- package/dist/components/text/index.js +13 -0
- package/dist/components/text/useTextObject.d.ts +21 -0
- package/dist/components/text/useTextObject.d.ts.map +1 -0
- package/dist/components/text/useTextObject.js +118 -0
- package/dist/components/water/OceanSurface.d.ts.map +1 -1
- package/dist/components/water/OceanSurface.js +3 -1
- package/dist/components/water/WaterBody.d.ts.map +1 -1
- package/dist/components/water/WaterBody.js +3 -1
- package/dist/components/water/types.d.ts +5 -1
- package/dist/components/water/types.d.ts.map +1 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +4 -0
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +1 -0
- package/dist/hooks/useCloudSun.d.ts +9 -4
- package/dist/hooks/useCloudSun.d.ts.map +1 -1
- package/dist/hooks/useCloudSun.js +17 -7
- package/dist/hooks/useConfigLive.d.ts +3 -2
- package/dist/hooks/useConfigLive.d.ts.map +1 -1
- package/dist/hooks/useContinuousEffects.d.ts.map +1 -1
- package/dist/hooks/useContinuousEffects.js +4 -10
- package/dist/hooks/useEnvironmentProbe.d.ts +3 -22
- package/dist/hooks/useEnvironmentProbe.d.ts.map +1 -1
- package/dist/hooks/useEnvironmentProbe.js +47 -8
- package/dist/hooks/useGridSurface.d.ts +3 -10
- package/dist/hooks/useGridSurface.d.ts.map +1 -1
- package/dist/hooks/useGridSurface.js +5 -31
- package/dist/hooks/useInteraction.d.ts.map +1 -1
- package/dist/hooks/useInteraction.js +19 -72
- package/dist/hooks/useLightConfig.d.ts +2 -1
- package/dist/hooks/useLightConfig.d.ts.map +1 -1
- package/dist/hooks/useOceanMaterial.d.ts +6 -2
- package/dist/hooks/useOceanMaterial.d.ts.map +1 -1
- package/dist/hooks/useOceanMaterial.js +37 -2
- package/dist/hooks/useSkyLive.d.ts +23 -0
- package/dist/hooks/useSkyLive.d.ts.map +1 -0
- package/dist/hooks/useSkyLive.js +30 -0
- package/dist/hooks/useSkyUniforms.d.ts.map +1 -1
- package/dist/hooks/useSkyUniforms.js +2 -10
- package/dist/hooks/useTerrainLive.d.ts +3 -1
- package/dist/hooks/useTerrainLive.d.ts.map +1 -1
- package/dist/hooks/useTerrainTextures.d.ts +38 -0
- package/dist/hooks/useTerrainTextures.d.ts.map +1 -0
- package/dist/hooks/useTerrainTextures.js +149 -0
- package/dist/index.d.ts +11 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -1
- package/dist/operations/catalogue/blastOff.d.ts +3 -0
- package/dist/operations/catalogue/blastOff.d.ts.map +1 -0
- package/dist/operations/catalogue/blastOff.js +118 -0
- package/dist/operations/catalogue/bounce.d.ts +3 -0
- package/dist/operations/catalogue/bounce.d.ts.map +1 -0
- package/dist/operations/catalogue/bounce.js +34 -0
- package/dist/operations/catalogue/curlSmoke.d.ts.map +1 -1
- package/dist/operations/catalogue/curlSmoke.js +3 -1
- package/dist/operations/catalogue/dissolve.d.ts.map +1 -1
- package/dist/operations/catalogue/dissolve.js +2 -1
- package/dist/operations/catalogue/driftUp.d.ts +3 -0
- package/dist/operations/catalogue/driftUp.d.ts.map +1 -0
- package/dist/operations/catalogue/driftUp.js +57 -0
- package/dist/operations/catalogue/emberAsh.d.ts.map +1 -1
- package/dist/operations/catalogue/emberAsh.js +2 -1
- package/dist/operations/catalogue/flip.d.ts.map +1 -1
- package/dist/operations/catalogue/flip.js +19 -9
- package/dist/operations/catalogue/float.d.ts +3 -0
- package/dist/operations/catalogue/float.d.ts.map +1 -0
- package/dist/operations/catalogue/float.js +39 -0
- package/dist/operations/catalogue/flyBy.d.ts +3 -0
- package/dist/operations/catalogue/flyBy.d.ts.map +1 -0
- package/dist/operations/catalogue/flyBy.js +79 -0
- package/dist/operations/catalogue/frost.d.ts.map +1 -1
- package/dist/operations/catalogue/frost.js +10 -3
- package/dist/operations/catalogue/grow.d.ts +3 -0
- package/dist/operations/catalogue/grow.d.ts.map +1 -0
- package/dist/operations/catalogue/grow.js +19 -0
- package/dist/operations/catalogue/hologram.d.ts.map +1 -1
- package/dist/operations/catalogue/hologram.js +11 -5
- package/dist/operations/catalogue/jelly.d.ts.map +1 -1
- package/dist/operations/catalogue/jelly.js +18 -8
- package/dist/operations/catalogue/knockAway.d.ts +3 -0
- package/dist/operations/catalogue/knockAway.d.ts.map +1 -0
- package/dist/operations/catalogue/knockAway.js +74 -0
- package/dist/operations/catalogue/leafFall.d.ts +3 -0
- package/dist/operations/catalogue/leafFall.d.ts.map +1 -0
- package/dist/operations/catalogue/leafFall.js +74 -0
- package/dist/operations/catalogue/lidarScan.d.ts.map +1 -1
- package/dist/operations/catalogue/lidarScan.js +4 -1
- package/dist/operations/catalogue/metalize.d.ts.map +1 -1
- package/dist/operations/catalogue/metalize.js +8 -2
- package/dist/operations/catalogue/motionTrail.d.ts +6 -0
- package/dist/operations/catalogue/motionTrail.d.ts.map +1 -0
- package/dist/operations/catalogue/motionTrail.js +221 -0
- package/dist/operations/catalogue/petrify.d.ts.map +1 -1
- package/dist/operations/catalogue/petrify.js +9 -3
- package/dist/operations/catalogue/physicalExit.d.ts +55 -0
- package/dist/operations/catalogue/physicalExit.d.ts.map +1 -0
- package/dist/operations/catalogue/physicalExit.js +165 -0
- package/dist/operations/catalogue/physicalHeld.d.ts +41 -0
- package/dist/operations/catalogue/physicalHeld.d.ts.map +1 -0
- package/dist/operations/catalogue/physicalHeld.js +78 -0
- package/dist/operations/catalogue/physicalMix.d.ts +45 -0
- package/dist/operations/catalogue/physicalMix.d.ts.map +1 -0
- package/dist/operations/catalogue/physicalMix.js +144 -0
- package/dist/operations/catalogue/pop.d.ts +3 -0
- package/dist/operations/catalogue/pop.d.ts.map +1 -0
- package/dist/operations/catalogue/pop.js +44 -0
- package/dist/operations/catalogue/print3d.d.ts.map +1 -1
- package/dist/operations/catalogue/print3d.js +5 -1
- package/dist/operations/catalogue/pulse.d.ts +3 -0
- package/dist/operations/catalogue/pulse.d.ts.map +1 -0
- package/dist/operations/catalogue/pulse.js +29 -0
- package/dist/operations/catalogue/restPose.d.ts +5 -7
- package/dist/operations/catalogue/restPose.d.ts.map +1 -1
- package/dist/operations/catalogue/restPose.js +18 -48
- package/dist/operations/catalogue/rotate.d.ts +3 -0
- package/dist/operations/catalogue/rotate.d.ts.map +1 -0
- package/dist/operations/catalogue/rotate.js +49 -0
- package/dist/operations/catalogue/shake.d.ts +3 -0
- package/dist/operations/catalogue/shake.d.ts.map +1 -0
- package/dist/operations/catalogue/shake.js +31 -0
- package/dist/operations/catalogue/shatter.d.ts.map +1 -1
- package/dist/operations/catalogue/shatter.js +5 -1
- package/dist/operations/catalogue/slam.d.ts +3 -0
- package/dist/operations/catalogue/slam.d.ts.map +1 -0
- package/dist/operations/catalogue/slam.js +89 -0
- package/dist/operations/catalogue/slingshot.d.ts +3 -0
- package/dist/operations/catalogue/slingshot.d.ts.map +1 -0
- package/dist/operations/catalogue/slingshot.js +88 -0
- package/dist/operations/catalogue/spin.d.ts.map +1 -1
- package/dist/operations/catalogue/spin.js +24 -13
- package/dist/operations/catalogue/sway.d.ts +3 -0
- package/dist/operations/catalogue/sway.d.ts.map +1 -0
- package/dist/operations/catalogue/sway.js +23 -0
- package/dist/operations/catalogue/swirl.d.ts.map +1 -1
- package/dist/operations/catalogue/swirl.js +6 -5
- package/dist/operations/catalogue/trailCore.d.ts +89 -0
- package/dist/operations/catalogue/trailCore.d.ts.map +1 -0
- package/dist/operations/catalogue/trailCore.js +190 -0
- package/dist/operations/catalogue/trailGhosts.d.ts +5 -0
- package/dist/operations/catalogue/trailGhosts.d.ts.map +1 -0
- package/dist/operations/catalogue/trailGhosts.js +179 -0
- package/dist/operations/catalogue/trailStampStyles.d.ts +11 -0
- package/dist/operations/catalogue/trailStampStyles.d.ts.map +1 -0
- package/dist/operations/catalogue/trailStampStyles.js +479 -0
- package/dist/operations/catalogue/trailStamps.d.ts +57 -0
- package/dist/operations/catalogue/trailStamps.d.ts.map +1 -0
- package/dist/operations/catalogue/trailStamps.js +349 -0
- package/dist/operations/catalogue/trailStreaks.d.ts +3 -0
- package/dist/operations/catalogue/trailStreaks.d.ts.map +1 -0
- package/dist/operations/catalogue/trailStreaks.js +147 -0
- package/dist/operations/catalogue/transitionField.d.ts +30 -0
- package/dist/operations/catalogue/transitionField.d.ts.map +1 -1
- package/dist/operations/catalogue/transitionField.js +21 -0
- package/dist/operations/catalogue/turnAway.d.ts +3 -0
- package/dist/operations/catalogue/turnAway.d.ts.map +1 -0
- package/dist/operations/catalogue/turnAway.js +54 -0
- package/dist/operations/catalogue/vortexDrain.d.ts +3 -0
- package/dist/operations/catalogue/vortexDrain.d.ts.map +1 -0
- package/dist/operations/catalogue/vortexDrain.js +68 -0
- package/dist/operations/catalogue/warp.d.ts +3 -0
- package/dist/operations/catalogue/warp.d.ts.map +1 -0
- package/dist/operations/catalogue/warp.js +73 -0
- package/dist/operations/catalogue/whoosh.d.ts +3 -0
- package/dist/operations/catalogue/whoosh.d.ts.map +1 -0
- package/dist/operations/catalogue/whoosh.js +84 -0
- package/dist/operations/catalogue/wobble.d.ts +3 -0
- package/dist/operations/catalogue/wobble.d.ts.map +1 -0
- package/dist/operations/catalogue/wobble.js +23 -0
- package/dist/operations/clipPreview.d.ts +3 -0
- package/dist/operations/clipPreview.d.ts.map +1 -0
- package/dist/operations/clipPreview.js +20 -0
- package/dist/operations/groupFanout.d.ts +96 -0
- package/dist/operations/groupFanout.d.ts.map +1 -0
- package/dist/operations/groupFanout.js +365 -0
- package/dist/operations/groups.d.ts +20 -0
- package/dist/operations/groups.d.ts.map +1 -0
- package/dist/operations/groups.js +66 -0
- package/dist/operations/index.d.ts +5 -2
- package/dist/operations/index.d.ts.map +1 -1
- package/dist/operations/index.js +5 -2
- package/dist/operations/objectEffects.d.ts +161 -6
- package/dist/operations/objectEffects.d.ts.map +1 -1
- package/dist/operations/objectEffects.js +1091 -17
- package/dist/operations/registry.d.ts.map +1 -1
- package/dist/operations/registry.js +24 -2
- package/dist/operations/runtime.d.ts +57 -2
- package/dist/operations/runtime.d.ts.map +1 -1
- package/dist/operations/runtime.js +161 -18
- package/dist/operations/types.d.ts +60 -3
- package/dist/operations/types.d.ts.map +1 -1
- package/dist/operations/types.js +5 -1
- package/dist/operations/useObjectEffectLayers.d.ts +2 -2
- package/dist/operations/useObjectEffectLayers.d.ts.map +1 -1
- package/dist/operations/useObjectEffectLayers.js +31 -10
- package/dist/operations/usePresentedVisibility.d.ts +10 -0
- package/dist/operations/usePresentedVisibility.d.ts.map +1 -0
- package/dist/operations/usePresentedVisibility.js +53 -0
- package/dist/presets/terrainBiomes.d.ts +67 -0
- package/dist/presets/terrainBiomes.d.ts.map +1 -0
- package/dist/presets/terrainBiomes.js +294 -0
- package/dist/presets/terrainPresets.d.ts +6 -0
- package/dist/presets/terrainPresets.d.ts.map +1 -1
- package/dist/presets/terrainPresets.js +26 -38
- package/dist/shaders/glsl/oceanCore.glsl.d.ts +2 -2
- package/dist/shaders/glsl/oceanCore.glsl.d.ts.map +1 -1
- package/dist/shaders/glsl/oceanCore.glsl.js +17 -0
- package/dist/shaders/glsl/surfaceCore.glsl.d.ts +21 -0
- package/dist/shaders/glsl/surfaceCore.glsl.d.ts.map +1 -0
- package/dist/shaders/glsl/surfaceCore.glsl.js +120 -0
- package/dist/shaders/glsl/terrainCore.glsl.d.ts +16 -3
- package/dist/shaders/glsl/terrainCore.glsl.d.ts.map +1 -1
- package/dist/shaders/glsl/terrainCore.glsl.js +266 -20
- package/dist/shaders/ocean/OceanSurfaceMaterial.d.ts +2 -0
- package/dist/shaders/ocean/OceanSurfaceMaterial.d.ts.map +1 -1
- package/dist/shaders/ocean/OceanSurfaceMaterial.js +3 -0
- package/dist/shaders/terrain/TerrainMaterial.d.ts +17 -0
- package/dist/shaders/terrain/TerrainMaterial.d.ts.map +1 -1
- package/dist/shaders/terrain/TerrainMaterial.js +107 -8
- package/dist/triggers/engine.d.ts +44 -0
- package/dist/triggers/engine.d.ts.map +1 -0
- package/dist/triggers/engine.js +165 -0
- package/dist/triggers/hosts/actions.d.ts +8 -0
- package/dist/triggers/hosts/actions.d.ts.map +1 -0
- package/dist/triggers/hosts/actions.js +22 -0
- package/dist/triggers/hosts/interactions.d.ts +6 -0
- package/dist/triggers/hosts/interactions.d.ts.map +1 -0
- package/dist/triggers/hosts/interactions.js +4 -0
- package/dist/triggers/hosts/timelineCues.d.ts +2 -0
- package/dist/triggers/hosts/timelineCues.d.ts.map +1 -0
- package/dist/triggers/hosts/timelineCues.js +22 -0
- package/dist/triggers/index.d.ts +13 -0
- package/dist/triggers/index.d.ts.map +1 -0
- package/dist/triggers/index.js +9 -0
- package/dist/triggers/kinds/action.d.ts +2 -0
- package/dist/triggers/kinds/action.d.ts.map +1 -0
- package/dist/triggers/kinds/action.js +31 -0
- package/dist/triggers/kinds/animations.d.ts +2 -0
- package/dist/triggers/kinds/animations.d.ts.map +1 -0
- package/dist/triggers/kinds/animations.js +75 -0
- package/dist/triggers/kinds/effects.d.ts +2 -0
- package/dist/triggers/kinds/effects.d.ts.map +1 -0
- package/dist/triggers/kinds/effects.js +27 -0
- package/dist/triggers/kinds/index.d.ts +4 -0
- package/dist/triggers/kinds/index.d.ts.map +1 -0
- package/dist/triggers/kinds/index.js +4 -0
- package/dist/triggers/log.d.ts +21 -0
- package/dist/triggers/log.d.ts.map +1 -0
- package/dist/triggers/log.js +43 -0
- package/dist/triggers/readiness.d.ts +40 -0
- package/dist/triggers/readiness.d.ts.map +1 -0
- package/dist/triggers/readiness.js +158 -0
- package/dist/triggers/registry.d.ts +41 -0
- package/dist/triggers/registry.d.ts.map +1 -0
- package/dist/triggers/registry.js +7 -0
- package/dist/types/gridConfigs.d.ts +18 -23
- package/dist/types/gridConfigs.d.ts.map +1 -1
- package/dist/ui/UiAnchorUpdater.d.ts +10 -0
- package/dist/ui/UiAnchorUpdater.d.ts.map +1 -0
- package/dist/ui/UiAnchorUpdater.js +111 -0
- package/dist/ui/UiLayers.d.ts +20 -0
- package/dist/ui/UiLayers.d.ts.map +1 -0
- package/dist/ui/UiLayers.js +57 -0
- package/dist/ui/index.d.ts +9 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +6 -0
- package/dist/ui/uiAnchors.d.ts +21 -0
- package/dist/ui/uiAnchors.d.ts.map +1 -0
- package/dist/ui/uiAnchors.js +22 -0
- package/dist/ui/uiBaseStyles.d.ts +2 -0
- package/dist/ui/uiBaseStyles.d.ts.map +1 -0
- package/dist/ui/uiBaseStyles.js +100 -0
- package/dist/ui/uiBinder.d.ts +30 -0
- package/dist/ui/uiBinder.d.ts.map +1 -0
- package/dist/ui/uiBinder.js +344 -0
- package/dist/utils/configAnimations.d.ts.map +1 -1
- package/dist/utils/configAnimations.js +5 -1
- package/dist/utils/gridConfig.d.ts +1 -1
- package/dist/utils/gridConfig.d.ts.map +1 -1
- package/dist/utils/gridConfig.js +1 -1
- package/dist/utils/landPatch.d.ts +33 -0
- package/dist/utils/landPatch.d.ts.map +1 -0
- package/dist/utils/landPatch.js +114 -0
- package/dist/utils/renderedSky.d.ts +32 -0
- package/dist/utils/renderedSky.d.ts.map +1 -0
- package/dist/utils/renderedSky.js +57 -0
- package/dist/utils/skyMoon.d.ts +35 -0
- package/dist/utils/skyMoon.d.ts.map +1 -0
- package/dist/utils/skyMoon.js +41 -0
- package/dist/utils/terrainHeight.d.ts +4 -0
- package/dist/utils/terrainHeight.d.ts.map +1 -0
- package/dist/utils/terrainHeight.js +150 -0
- package/dist/utils/terrainTextureResolver.d.ts +18 -0
- package/dist/utils/terrainTextureResolver.d.ts.map +1 -0
- package/dist/utils/terrainTextureResolver.js +17 -0
- package/dist/utils/terrainUniforms.d.ts +17 -0
- package/dist/utils/terrainUniforms.d.ts.map +1 -1
- package/dist/utils/terrainUniforms.js +84 -0
- package/dist/utils/textureArrays.d.ts +29 -0
- package/dist/utils/textureArrays.d.ts.map +1 -0
- package/dist/utils/textureArrays.js +140 -0
- package/package.json +2 -2
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// UiAnchorUpdater — positions data-anchor elements over objects and model parts
|
|
3
|
+
// =============================================================================
|
|
4
|
+
//
|
|
5
|
+
// Mount once inside the <Canvas>. Each frame it projects every registered anchor to
|
|
6
|
+
// screen pixels and writes `transform` on the element (refs, not React state).
|
|
7
|
+
//
|
|
8
|
+
// - the point is the centre of the target's bounding box, refreshed every few
|
|
9
|
+
// frames, plus the target's movement since — cheap, and it follows animation;
|
|
10
|
+
// - an element is hidden (`data-offscreen`) behind the camera or outside the canvas;
|
|
11
|
+
// - `data-anchor-occlude` also hides it (`data-occluded`) while a mesh is in front.
|
|
12
|
+
//
|
|
13
|
+
import { useFrame } from '@react-three/fiber';
|
|
14
|
+
import { Box3, Raycaster, Vector3 } from 'three';
|
|
15
|
+
import { findById, findByName } from '../utils/sceneQuery.js';
|
|
16
|
+
import { uiAnchors } from './uiAnchors.js';
|
|
17
|
+
const BOX_EVERY = 8; // frames between bounding-box refreshes
|
|
18
|
+
const OCCLUDE_EVERY = 6; // frames between occlusion raycasts
|
|
19
|
+
const RESOLVE_EVERY = 30; // frames between lookups while the target is missing
|
|
20
|
+
const MARGIN = 48; // px outside the canvas before an element is hidden
|
|
21
|
+
const tracked = new WeakMap();
|
|
22
|
+
const _box = new Box3();
|
|
23
|
+
const _v = new Vector3();
|
|
24
|
+
const _pt = new Vector3();
|
|
25
|
+
const _pos = new Vector3();
|
|
26
|
+
const _ray = new Raycaster();
|
|
27
|
+
function resolveTarget(entry) {
|
|
28
|
+
const obj = findById(entry.object) ?? findByName(entry.object);
|
|
29
|
+
if (!obj)
|
|
30
|
+
return null;
|
|
31
|
+
if (!entry.node)
|
|
32
|
+
return obj;
|
|
33
|
+
return obj.getObjectByName(entry.node) ?? null;
|
|
34
|
+
}
|
|
35
|
+
function insideSubtree(hit, root) {
|
|
36
|
+
for (let o = hit; o; o = o.parent)
|
|
37
|
+
if (o === root)
|
|
38
|
+
return true;
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
/** Pure projection of a world point; exported for tests. */
|
|
42
|
+
export function projectPoint(point, camera, width, height, out) {
|
|
43
|
+
_v.copy(point).applyMatrix4(camera.matrixWorldInverse);
|
|
44
|
+
out.behind = _v.z >= 0; // view space looks down -Z
|
|
45
|
+
_v.copy(point).project(camera);
|
|
46
|
+
out.x = (_v.x * 0.5 + 0.5) * width;
|
|
47
|
+
out.y = (-_v.y * 0.5 + 0.5) * height;
|
|
48
|
+
}
|
|
49
|
+
const _p = { x: 0, y: 0, behind: false };
|
|
50
|
+
export function updateAnchors(camera, scene, width, height, frame) {
|
|
51
|
+
if (!uiAnchors.size)
|
|
52
|
+
return;
|
|
53
|
+
camera.updateMatrixWorld();
|
|
54
|
+
for (const entry of uiAnchors) {
|
|
55
|
+
let t = tracked.get(entry);
|
|
56
|
+
if (!t) {
|
|
57
|
+
t = { target: null, center: new Vector3(), origin: new Vector3(), frame: -1e9, missingSince: -1e9 };
|
|
58
|
+
tracked.set(entry, t);
|
|
59
|
+
}
|
|
60
|
+
if (!t.target || !t.target.parent) {
|
|
61
|
+
if (frame - t.missingSince < RESOLVE_EVERY)
|
|
62
|
+
continue;
|
|
63
|
+
t.target = resolveTarget(entry);
|
|
64
|
+
if (!t.target) {
|
|
65
|
+
t.missingSince = frame;
|
|
66
|
+
entry.el.setAttribute('data-offscreen', '');
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
t.frame = -1e9;
|
|
70
|
+
}
|
|
71
|
+
const target = t.target;
|
|
72
|
+
target.getWorldPosition(_pos);
|
|
73
|
+
if (frame - t.frame >= BOX_EVERY) {
|
|
74
|
+
_box.setFromObject(target);
|
|
75
|
+
if (_box.isEmpty()) {
|
|
76
|
+
_box.min.copy(_pos);
|
|
77
|
+
_box.max.copy(_pos);
|
|
78
|
+
}
|
|
79
|
+
_box.getCenter(t.center);
|
|
80
|
+
t.origin.copy(_pos);
|
|
81
|
+
t.frame = frame;
|
|
82
|
+
}
|
|
83
|
+
const point = _pt.copy(t.center).add(_pos).sub(t.origin);
|
|
84
|
+
projectPoint(point, camera, width, height, _p);
|
|
85
|
+
const off = _p.behind || _p.x < -MARGIN || _p.x > width + MARGIN || _p.y < -MARGIN || _p.y > height + MARGIN;
|
|
86
|
+
entry.el.toggleAttribute('data-offscreen', off);
|
|
87
|
+
if (off)
|
|
88
|
+
continue;
|
|
89
|
+
entry.el.style.transform = `translate3d(${(_p.x + entry.offset[0]).toFixed(1)}px, ${(_p.y + entry.offset[1]).toFixed(1)}px, 0) translate(-50%, -50%)`;
|
|
90
|
+
if (entry.occlude && frame % OCCLUDE_EVERY === 0) {
|
|
91
|
+
const from = camera.getWorldPosition(new Vector3());
|
|
92
|
+
const dir = point.clone().sub(from);
|
|
93
|
+
const dist = dir.length();
|
|
94
|
+
_ray.set(from, dir.normalize());
|
|
95
|
+
_ray.far = Math.max(0, dist - 0.02);
|
|
96
|
+
const hits = _ray.intersectObjects(scene.children, true).filter(h => h.object.isMesh && h.object.visible && !insideSubtree(h.object, target));
|
|
97
|
+
entry.el.toggleAttribute('data-occluded', hits.length > 0);
|
|
98
|
+
}
|
|
99
|
+
else if (!entry.occlude) {
|
|
100
|
+
entry.el.removeAttribute('data-occluded');
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
let frameCount = 0;
|
|
105
|
+
export default function UiAnchorUpdater() {
|
|
106
|
+
useFrame(({ camera, scene, gl }) => {
|
|
107
|
+
const c = gl.domElement;
|
|
108
|
+
updateAnchors(camera, scene, c.clientWidth, c.clientHeight, ++frameCount);
|
|
109
|
+
});
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type UiLayer } from '@3driseai/3drise-core';
|
|
2
|
+
import { type BoundControl, type UiBinderHandle, type UiSceneApi } from './uiBinder';
|
|
3
|
+
export interface UiLayerRuntime {
|
|
4
|
+
id: string;
|
|
5
|
+
key: string;
|
|
6
|
+
root: ShadowRoot;
|
|
7
|
+
inspect(): BoundControl[];
|
|
8
|
+
press: UiBinderHandle['press'];
|
|
9
|
+
refresh(): void;
|
|
10
|
+
}
|
|
11
|
+
/** A rendered layer by key, id, or name-less id. Undefined while it is hidden or not mounted. */
|
|
12
|
+
export declare function getUiLayerRuntime(ref: string): UiLayerRuntime | undefined;
|
|
13
|
+
export interface UiLayersProps {
|
|
14
|
+
layers: UiLayer[] | undefined;
|
|
15
|
+
scene: UiSceneApi;
|
|
16
|
+
/** Extra CSS appended to every layer after its own (ProjectLoader's `uiStyles`). */
|
|
17
|
+
extraCss?: string;
|
|
18
|
+
}
|
|
19
|
+
export default function UiLayers({ layers, scene, extraCss }: UiLayersProps): import("react").JSX.Element;
|
|
20
|
+
//# sourceMappingURL=UiLayers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UiLayers.d.ts","sourceRoot":"","sources":["../../src/ui/UiLayers.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAgD,KAAK,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACnG,OAAO,EAAe,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAOlG,MAAM,WAAW,cAAc;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,IAAI,YAAY,EAAE,CAAC;IAC1B,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IAC/B,OAAO,IAAI,IAAI,CAAC;CACnB;AAGD,iGAAiG;AACjG,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAGzE;AA+BD,MAAM,WAAW,aAAa;IAC1B,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC;IAC9B,KAAK,EAAE,UAAU,CAAC;IAClB,oFAAoF;IACpF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,aAAa,+BAY1E"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
// =============================================================================
|
|
3
|
+
// UiLayers — renders a project's UI layers over the scene
|
|
4
|
+
// =============================================================================
|
|
5
|
+
//
|
|
6
|
+
// A sibling of the <Canvas> in a relatively positioned container (SceneBuilder, the
|
|
7
|
+
// studio's scene view). Each visible layer gets a host element with a shadow root: the
|
|
8
|
+
// layer's CSS cannot leak out, and the page's CSS cannot reach in. The HTML and CSS
|
|
9
|
+
// are sanitized again here — the viewer never renders what it did not clean itself.
|
|
10
|
+
//
|
|
11
|
+
// Props-driven, so the studio (through a connector) and the published viewer use the
|
|
12
|
+
// same component.
|
|
13
|
+
//
|
|
14
|
+
import { useEffect, useRef } from 'react';
|
|
15
|
+
import { UI_HOST_CLASS, sanitizeUiCss, sanitizeUiHtml } from '@3driseai/3drise-core';
|
|
16
|
+
import { bindUiLayer } from './uiBinder.js';
|
|
17
|
+
import { UI_BASE_CSS } from './uiBaseStyles.js';
|
|
18
|
+
const runtimes = new Map();
|
|
19
|
+
/** A rendered layer by key, id, or name-less id. Undefined while it is hidden or not mounted. */
|
|
20
|
+
export function getUiLayerRuntime(ref) {
|
|
21
|
+
for (const r of runtimes.values())
|
|
22
|
+
if (r.key === ref || r.id === ref)
|
|
23
|
+
return r;
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
// ---------------------------------------------------------------------------
|
|
27
|
+
function UiLayerHost({ layer, scene, extraCss }) {
|
|
28
|
+
const ref = useRef(null);
|
|
29
|
+
useEffect(() => {
|
|
30
|
+
const host = ref.current;
|
|
31
|
+
if (!host)
|
|
32
|
+
return;
|
|
33
|
+
const root = host.shadowRoot ?? host.attachShadow({ mode: 'open' });
|
|
34
|
+
root.replaceChildren();
|
|
35
|
+
const style = (css) => { const s = document.createElement('style'); s.textContent = css; return s; };
|
|
36
|
+
const body = document.createElement('div');
|
|
37
|
+
body.className = 'rise-layer';
|
|
38
|
+
body.innerHTML = sanitizeUiHtml(layer.html).out;
|
|
39
|
+
root.append(style(UI_BASE_CSS), style(sanitizeUiCss(layer.css).out), ...(extraCss ? [style(sanitizeUiCss(extraCss).out)] : []), body);
|
|
40
|
+
const binder = bindUiLayer(root, scene, { onWarn: (m) => console.warn(`[3drise ui:${layer.key}] ${m}`) });
|
|
41
|
+
runtimes.set(layer.id, { id: layer.id, key: layer.key, root, inspect: binder.inspect, press: binder.press, refresh: binder.refresh });
|
|
42
|
+
return () => {
|
|
43
|
+
binder.dispose();
|
|
44
|
+
runtimes.delete(layer.id);
|
|
45
|
+
root.replaceChildren();
|
|
46
|
+
};
|
|
47
|
+
}, [layer.id, layer.key, layer.html, layer.css, extraCss, scene]);
|
|
48
|
+
return _jsx("div", { ref: ref, className: UI_HOST_CLASS, "data-ui-layer": layer.key, style: { position: 'absolute', inset: 0, pointerEvents: 'none' } });
|
|
49
|
+
}
|
|
50
|
+
export default function UiLayers({ layers, scene, extraCss }) {
|
|
51
|
+
const visible = (layers ?? []).filter(l => l.visible !== false);
|
|
52
|
+
if (!visible.length)
|
|
53
|
+
return null;
|
|
54
|
+
return (_jsx("div", { className: "rise-ui-overlay",
|
|
55
|
+
// translateZ(0): a `position: fixed` inside a layer is then relative to this overlay, not the page.
|
|
56
|
+
style: { position: 'absolute', inset: 0, pointerEvents: 'none', overflow: 'hidden', transform: 'translateZ(0)', zIndex: 10 }, children: visible.map(l => _jsx(UiLayerHost, { layer: l, scene: scene, extraCss: extraCss }, l.id)) }));
|
|
57
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { default as UiLayers, getUiLayerRuntime } from './UiLayers';
|
|
2
|
+
export type { UiLayersProps, UiLayerRuntime } from './UiLayers';
|
|
3
|
+
export { default as UiAnchorUpdater } from './UiAnchorUpdater';
|
|
4
|
+
export { bindUiLayer } from './uiBinder';
|
|
5
|
+
export type { BindOptions, BoundControl, UiBinderHandle, UiSceneApi } from './uiBinder';
|
|
6
|
+
export { uiAnchors } from './uiAnchors';
|
|
7
|
+
export type { AnchorEntry } from './uiAnchors';
|
|
8
|
+
export { UI_BASE_CSS } from './uiBaseStyles';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/ui/index.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// UI layers: agent-written HTML/CSS that controls the scene (see claude/ui-module.md)
|
|
2
|
+
export { default as UiLayers, getUiLayerRuntime } from './UiLayers.js';
|
|
3
|
+
export { default as UiAnchorUpdater } from './UiAnchorUpdater.js';
|
|
4
|
+
export { bindUiLayer } from './uiBinder.js';
|
|
5
|
+
export { uiAnchors } from './uiAnchors.js';
|
|
6
|
+
export { UI_BASE_CSS } from './uiBaseStyles.js';
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface AnchorEntry {
|
|
2
|
+
el: HTMLElement;
|
|
3
|
+
/** Object ref: its id, else its Three.js name. */
|
|
4
|
+
object: string;
|
|
5
|
+
/** A node inside a model. */
|
|
6
|
+
node?: string;
|
|
7
|
+
/** Hide while another mesh is in front of the point (a raycast every few frames). */
|
|
8
|
+
occlude: boolean;
|
|
9
|
+
/** px, added after projection. */
|
|
10
|
+
offset: [number, number];
|
|
11
|
+
}
|
|
12
|
+
declare class AnchorRegistry {
|
|
13
|
+
private entries;
|
|
14
|
+
register(entry: AnchorEntry): () => void;
|
|
15
|
+
get size(): number;
|
|
16
|
+
[Symbol.iterator](): SetIterator<AnchorEntry>;
|
|
17
|
+
clear(): void;
|
|
18
|
+
}
|
|
19
|
+
export declare const uiAnchors: AnchorRegistry;
|
|
20
|
+
export type { AnchorRegistry };
|
|
21
|
+
//# sourceMappingURL=uiAnchors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uiAnchors.d.ts","sourceRoot":"","sources":["../../src/ui/uiAnchors.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,WAAW;IACxB,EAAE,EAAE,WAAW,CAAC;IAChB,kDAAkD;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,6BAA6B;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qFAAqF;IACrF,OAAO,EAAE,OAAO,CAAC;IACjB,kCAAkC;IAClC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5B;AAED,cAAM,cAAc;IAChB,OAAO,CAAC,OAAO,CAA0B;IACzC,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,IAAI;IAIxC,IAAI,IAAI,WAAgC;IACxC,CAAC,MAAM,CAAC,QAAQ,CAAC;IACjB,KAAK;CACR;AAED,eAAO,MAAM,SAAS,gBAAuB,CAAC;AAC9C,YAAY,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// Anchor registry — data-anchor elements waiting to be positioned
|
|
3
|
+
// =============================================================================
|
|
4
|
+
//
|
|
5
|
+
// The binder registers an element here; UiAnchorUpdater (inside the canvas, where the
|
|
6
|
+
// camera lives) projects each one to the screen every frame and writes its transform
|
|
7
|
+
// directly. No React state is involved — positions change every frame.
|
|
8
|
+
//
|
|
9
|
+
// One registry per page: like SceneActions and ClipsRuntime, it is shared by every
|
|
10
|
+
// scene on the page (one scene per page for now).
|
|
11
|
+
//
|
|
12
|
+
class AnchorRegistry {
|
|
13
|
+
entries = new Set();
|
|
14
|
+
register(entry) {
|
|
15
|
+
this.entries.add(entry);
|
|
16
|
+
return () => { this.entries.delete(entry); };
|
|
17
|
+
}
|
|
18
|
+
get size() { return this.entries.size; }
|
|
19
|
+
[Symbol.iterator]() { return this.entries[Symbol.iterator](); }
|
|
20
|
+
clear() { this.entries.clear(); }
|
|
21
|
+
}
|
|
22
|
+
export const uiAnchors = new AnchorRegistry();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uiBaseStyles.d.ts","sourceRoot":"","sources":["../../src/ui/uiBaseStyles.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,WAAW,QAgFvB,CAAC"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// Base stylesheet for UI layers
|
|
3
|
+
// =============================================================================
|
|
4
|
+
//
|
|
5
|
+
// Styles the generic classes (UI_CLASSES) so agent-written HTML looks right with no CSS
|
|
6
|
+
// of its own, and so one rule or one variable restyles every control. Lives in each
|
|
7
|
+
// layer's shadow root, before the layer's own CSS.
|
|
8
|
+
//
|
|
9
|
+
// Variables: the public `--rise-*` ones (UI_VARIABLES) are read through a private
|
|
10
|
+
// `--_rise-*` copy declared on :host with the default as fallback. That keeps them
|
|
11
|
+
// inheriting from the page: set `--rise-accent` on <body>, or on `.rise-ui-layer`,
|
|
12
|
+
// and every layer follows. A plain `:host { --rise-accent: … }` would block that.
|
|
13
|
+
//
|
|
14
|
+
// The task-1 look is plain and functional; polishing it is the design task.
|
|
15
|
+
//
|
|
16
|
+
import { UI_VARIABLES } from '@3driseai/3drise-core';
|
|
17
|
+
const priv = (name) => `--_${name.slice(2)}`; // --rise-accent -> --_rise-accent
|
|
18
|
+
const v = (name) => `var(${priv(name)})`;
|
|
19
|
+
const hostVars = UI_VARIABLES.map(x => `${priv(x.name)}: var(${x.name}, ${x.default});`).join('\n ');
|
|
20
|
+
export const UI_BASE_CSS = /* css */ `
|
|
21
|
+
:host {
|
|
22
|
+
${hostVars}
|
|
23
|
+
display: block; position: absolute; inset: 0; pointer-events: none; overflow: hidden;
|
|
24
|
+
font-family: ${v('--rise-font')}; font-size: 14px; line-height: 1.4; color: ${v('--rise-text')};
|
|
25
|
+
}
|
|
26
|
+
*, *::before, *::after { box-sizing: border-box; }
|
|
27
|
+
[hidden] { display: none !important; }
|
|
28
|
+
.rise-layer { position: absolute; inset: 0; pointer-events: none; }
|
|
29
|
+
|
|
30
|
+
/* Only controls and surfaces take the pointer; the scene stays interactive around them. */
|
|
31
|
+
button, a, input, select, [data-click], [data-hover-in], [data-hover-out],
|
|
32
|
+
.rise-panel, .rise-menu, .rise-card, .rise-hotspot { pointer-events: auto; }
|
|
33
|
+
[data-click] { cursor: pointer; }
|
|
34
|
+
[data-offscreen] { visibility: hidden; pointer-events: none !important; }
|
|
35
|
+
[data-occluded] { opacity: 0; pointer-events: none !important; }
|
|
36
|
+
|
|
37
|
+
.rise-panel, .rise-menu, .rise-card {
|
|
38
|
+
background: ${v('--rise-bg')}; border: 1px solid ${v('--rise-border')}; border-radius: ${v('--rise-radius')};
|
|
39
|
+
-webkit-backdrop-filter: blur(${v('--rise-blur')}); backdrop-filter: blur(${v('--rise-blur')});
|
|
40
|
+
}
|
|
41
|
+
.rise-panel { display: flex; flex-wrap: wrap; align-items: center; gap: ${v('--rise-gap')}; padding: ${v('--rise-gap')}; }
|
|
42
|
+
|
|
43
|
+
.rise-button, .rise-toggle {
|
|
44
|
+
display: inline-flex; align-items: center; justify-content: center; gap: 6px;
|
|
45
|
+
padding: 8px 14px; font: inherit; color: inherit; cursor: pointer;
|
|
46
|
+
background: ${v('--rise-bg')}; border: 1px solid ${v('--rise-border')}; border-radius: ${v('--rise-radius')};
|
|
47
|
+
transition: background-color .15s, border-color .15s, color .15s, filter .15s;
|
|
48
|
+
}
|
|
49
|
+
.rise-button:hover, .rise-toggle:hover { filter: brightness(1.2); }
|
|
50
|
+
.rise-button:active, .rise-toggle:active { filter: brightness(0.95); }
|
|
51
|
+
.rise-button:focus-visible, .rise-toggle:focus-visible, .rise-menu-item:focus-visible, .rise-slider:focus-visible, .rise-input:focus-visible {
|
|
52
|
+
outline: 2px solid ${v('--rise-accent')}; outline-offset: 2px;
|
|
53
|
+
}
|
|
54
|
+
.rise-button[data-on="true"], .rise-toggle[data-on="true"] {
|
|
55
|
+
background: ${v('--rise-accent')}; border-color: ${v('--rise-accent')}; color: ${v('--rise-accent-text')};
|
|
56
|
+
}
|
|
57
|
+
.rise-toggle::before {
|
|
58
|
+
content: ""; width: 8px; height: 8px; border-radius: 50%; background: ${v('--rise-muted')};
|
|
59
|
+
}
|
|
60
|
+
.rise-toggle[data-on="true"]::before { background: ${v('--rise-accent-text')}; }
|
|
61
|
+
|
|
62
|
+
.rise-slider {
|
|
63
|
+
-webkit-appearance: none; appearance: none; width: 160px; height: 4px; margin: 8px 0;
|
|
64
|
+
background: ${v('--rise-border')}; border-radius: 2px; outline: none;
|
|
65
|
+
}
|
|
66
|
+
.rise-slider::-webkit-slider-thumb {
|
|
67
|
+
-webkit-appearance: none; width: 16px; height: 16px; border-radius: 50%; border: 0; background: ${v('--rise-accent')}; cursor: pointer;
|
|
68
|
+
}
|
|
69
|
+
.rise-slider::-moz-range-thumb { width: 16px; height: 16px; border-radius: 50%; border: 0; background: ${v('--rise-accent')}; cursor: pointer; }
|
|
70
|
+
|
|
71
|
+
.rise-input {
|
|
72
|
+
padding: 8px 10px; font: inherit; color: inherit; background: ${v('--rise-bg')};
|
|
73
|
+
border: 1px solid ${v('--rise-border')}; border-radius: ${v('--rise-radius')};
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.rise-menu { display: flex; flex-direction: column; gap: 2px; padding: 4px; }
|
|
77
|
+
.rise-menu-item { padding: 8px 12px; border-radius: calc(${v('--rise-radius')} - 4px); cursor: pointer; transition: background-color .15s; }
|
|
78
|
+
.rise-menu-item:hover { background: rgba(255, 255, 255, 0.08); }
|
|
79
|
+
.rise-menu-item[data-on="true"] { background: ${v('--rise-accent')}; color: ${v('--rise-accent-text')}; }
|
|
80
|
+
|
|
81
|
+
.rise-card { max-width: 280px; padding: 14px; box-shadow: 0 8px 28px rgba(0, 0, 0, 0.35); }
|
|
82
|
+
.rise-card-title { margin: 0 0 4px; font-size: 15px; font-weight: 600; }
|
|
83
|
+
.rise-card-body { margin: 0; color: ${v('--rise-muted')}; }
|
|
84
|
+
.rise-card-image { display: block; width: 100%; margin-bottom: 8px; border-radius: calc(${v('--rise-radius')} - 4px); }
|
|
85
|
+
|
|
86
|
+
.rise-hotspot {
|
|
87
|
+
width: 22px; height: 22px; border-radius: 50%; cursor: pointer; padding: 0;
|
|
88
|
+
background: ${v('--rise-accent')}; border: 2px solid #fff; box-shadow: 0 0 0 0 ${v('--rise-accent')};
|
|
89
|
+
animation: rise-pulse 2s ease-out infinite; transition: opacity .2s;
|
|
90
|
+
}
|
|
91
|
+
.rise-hotspot[data-on="true"] { animation: none; box-shadow: 0 0 0 4px ${v('--rise-accent')}; }
|
|
92
|
+
@keyframes rise-pulse { 0% { box-shadow: 0 0 0 0 rgba(255, 255, 255, 0.55); } 70%, 100% { box-shadow: 0 0 0 14px rgba(255, 255, 255, 0); } }
|
|
93
|
+
|
|
94
|
+
.rise-label {
|
|
95
|
+
display: inline-block; padding: 2px 8px; font-size: 12px; color: ${v('--rise-text')};
|
|
96
|
+
background: ${v('--rise-bg')}; border-radius: calc(${v('--rise-radius')} - 4px);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation: none !important; transition: none !important; } }
|
|
100
|
+
`;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type UiTrigger } from '@3driseai/3drise-core';
|
|
2
|
+
import type { SceneHandle } from '../api/sceneHandle';
|
|
3
|
+
import { uiAnchors } from './uiAnchors';
|
|
4
|
+
export type UiSceneApi = Pick<SceneHandle, 'actions' | 'clips' | 'sequences' | 'values' | 'on'>;
|
|
5
|
+
export interface BindOptions {
|
|
6
|
+
/** Called with a problem the binder met at run time (an unknown ref). */
|
|
7
|
+
onWarn?: (message: string) => void;
|
|
8
|
+
/** Where data-anchor elements register. Defaults to the shared registry. */
|
|
9
|
+
anchors?: typeof uiAnchors;
|
|
10
|
+
/** State poll interval, ms. 0 turns it off. */
|
|
11
|
+
pollMs?: number;
|
|
12
|
+
}
|
|
13
|
+
export interface BoundControl {
|
|
14
|
+
element: string;
|
|
15
|
+
trigger: string;
|
|
16
|
+
command: string;
|
|
17
|
+
/** False when the ref does not resolve in this project. */
|
|
18
|
+
resolved: boolean;
|
|
19
|
+
}
|
|
20
|
+
export interface UiBinderHandle {
|
|
21
|
+
dispose(): void;
|
|
22
|
+
/** Re-evaluate data-state and data-show-when now. */
|
|
23
|
+
refresh(): void;
|
|
24
|
+
/** What every control is bound to, for the agent. */
|
|
25
|
+
inspect(): BoundControl[];
|
|
26
|
+
/** Dispatch a real click (or hover) on an element, so the real handlers run. */
|
|
27
|
+
press(selector: string, trigger?: UiTrigger): boolean;
|
|
28
|
+
}
|
|
29
|
+
export declare function bindUiLayer(root: ParentNode, scene: UiSceneApi, options?: BindOptions): UiBinderHandle;
|
|
30
|
+
//# sourceMappingURL=uiBinder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uiBinder.d.ts","sourceRoot":"","sources":["../../src/ui/uiBinder.ts"],"names":[],"mappings":"AAiBA,OAAO,EAEgE,KAAK,SAAS,EACpF,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAoB,MAAM,aAAa,CAAC;AAE1D,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,OAAO,GAAG,WAAW,GAAG,QAAQ,GAAG,IAAI,CAAC,CAAC;AAEhG,MAAM,WAAW,WAAW;IACxB,yEAAyE;IACzE,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,4EAA4E;IAC5E,OAAO,CAAC,EAAE,OAAO,SAAS,CAAC;IAC3B,+CAA+C;IAC/C,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,QAAQ,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC3B,OAAO,IAAI,IAAI,CAAC;IAChB,qDAAqD;IACrD,OAAO,IAAI,IAAI,CAAC;IAChB,qDAAqD;IACrD,OAAO,IAAI,YAAY,EAAE,CAAC;IAC1B,gFAAgF;IAChF,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;CACzD;AAKD,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,GAAE,WAAgB,GAAG,cAAc,CA2O1G"}
|