@3driseai/3drise-viewer 0.1.40 → 0.1.42
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/ClipsRuntime.d.ts.map +1 -1
- package/dist/animationsV2/ClipsRuntime.js +9 -5
- package/dist/animationsV2/clipUtils.d.ts +9 -0
- package/dist/animationsV2/clipUtils.d.ts.map +1 -1
- package/dist/animationsV2/clipUtils.js +11 -2
- package/dist/animationsV2/normalize.d.ts.map +1 -1
- package/dist/animationsV2/normalize.js +2 -0
- package/dist/animationsV2/types.d.ts +4 -0
- package/dist/animationsV2/types.d.ts.map +1 -1
- package/dist/api/sceneHandle.d.ts +40 -3
- package/dist/api/sceneHandle.d.ts.map +1 -1
- package/dist/api/sceneHandle.js +40 -0
- package/dist/components/GalleryObject.d.ts +13 -0
- package/dist/components/GalleryObject.d.ts.map +1 -0
- package/dist/components/GalleryObject.js +46 -0
- package/dist/components/ImageObject.d.ts +9 -0
- package/dist/components/ImageObject.d.ts.map +1 -0
- package/dist/components/ImageObject.js +26 -0
- package/dist/components/ObjectNode.d.ts.map +1 -1
- package/dist/components/ObjectNode.js +11 -5
- package/dist/components/ProjectLoader.d.ts +2 -0
- package/dist/components/ProjectLoader.d.ts.map +1 -1
- package/dist/components/ProjectLoader.js +2 -2
- package/dist/components/SceneBuilder.d.ts +10 -0
- package/dist/components/SceneBuilder.d.ts.map +1 -1
- package/dist/components/SceneBuilder.js +3 -2
- package/dist/components/gallery/BasicCarouselGallery.d.ts +18 -0
- package/dist/components/gallery/BasicCarouselGallery.d.ts.map +1 -0
- package/dist/components/gallery/BasicCarouselGallery.js +9 -0
- package/dist/components/gallery/ContourLinesGallery.d.ts +18 -0
- package/dist/components/gallery/ContourLinesGallery.d.ts.map +1 -0
- package/dist/components/gallery/ContourLinesGallery.js +9 -0
- package/dist/components/gallery/DepthLayersGallery.d.ts +18 -0
- package/dist/components/gallery/DepthLayersGallery.d.ts.map +1 -0
- package/dist/components/gallery/DepthLayersGallery.js +9 -0
- package/dist/components/gallery/EngravingGallery.d.ts +18 -0
- package/dist/components/gallery/EngravingGallery.d.ts.map +1 -0
- package/dist/components/gallery/EngravingGallery.js +9 -0
- package/dist/components/gallery/FlowLinesGallery.d.ts +18 -0
- package/dist/components/gallery/FlowLinesGallery.d.ts.map +1 -0
- package/dist/components/gallery/FlowLinesGallery.js +9 -0
- package/dist/components/gallery/FoldGallery.d.ts +18 -0
- package/dist/components/gallery/FoldGallery.d.ts.map +1 -0
- package/dist/components/gallery/FoldGallery.js +9 -0
- package/dist/components/gallery/GlassPanesGallery.d.ts +18 -0
- package/dist/components/gallery/GlassPanesGallery.d.ts.map +1 -0
- package/dist/components/gallery/GlassPanesGallery.js +9 -0
- package/dist/components/gallery/HaloGallery.d.ts +18 -0
- package/dist/components/gallery/HaloGallery.d.ts.map +1 -0
- package/dist/components/gallery/HaloGallery.js +9 -0
- package/dist/components/gallery/LightThreadsGallery.d.ts +18 -0
- package/dist/components/gallery/LightThreadsGallery.d.ts.map +1 -0
- package/dist/components/gallery/LightThreadsGallery.js +9 -0
- package/dist/components/gallery/LoomGallery.d.ts +18 -0
- package/dist/components/gallery/LoomGallery.d.ts.map +1 -0
- package/dist/components/gallery/LoomGallery.js +9 -0
- package/dist/components/gallery/PaperLanternsGallery.d.ts +18 -0
- package/dist/components/gallery/PaperLanternsGallery.d.ts.map +1 -0
- package/dist/components/gallery/PaperLanternsGallery.js +9 -0
- package/dist/components/gallery/ParticleShiftGallery.d.ts +18 -0
- package/dist/components/gallery/ParticleShiftGallery.d.ts.map +1 -0
- package/dist/components/gallery/ParticleShiftGallery.js +9 -0
- package/dist/components/gallery/PinscreenGallery.d.ts +18 -0
- package/dist/components/gallery/PinscreenGallery.d.ts.map +1 -0
- package/dist/components/gallery/PinscreenGallery.js +9 -0
- package/dist/components/gallery/PopUpGallery.d.ts +18 -0
- package/dist/components/gallery/PopUpGallery.d.ts.map +1 -0
- package/dist/components/gallery/PopUpGallery.js +9 -0
- package/dist/components/gallery/PrismSplitGallery.d.ts +18 -0
- package/dist/components/gallery/PrismSplitGallery.d.ts.map +1 -0
- package/dist/components/gallery/PrismSplitGallery.js +9 -0
- package/dist/components/gallery/RidgelinesGallery.d.ts +18 -0
- package/dist/components/gallery/RidgelinesGallery.d.ts.map +1 -0
- package/dist/components/gallery/RidgelinesGallery.js +9 -0
- package/dist/components/gallery/ShadowBoxGallery.d.ts +18 -0
- package/dist/components/gallery/ShadowBoxGallery.d.ts.map +1 -0
- package/dist/components/gallery/ShadowBoxGallery.js +9 -0
- package/dist/components/gallery/SilkGallery.d.ts +18 -0
- package/dist/components/gallery/SilkGallery.d.ts.map +1 -0
- package/dist/components/gallery/SilkGallery.js +9 -0
- package/dist/components/gallery/SlatsGallery.d.ts +18 -0
- package/dist/components/gallery/SlatsGallery.d.ts.map +1 -0
- package/dist/components/gallery/SlatsGallery.js +9 -0
- package/dist/components/gallery/StrataGallery.d.ts +18 -0
- package/dist/components/gallery/StrataGallery.d.ts.map +1 -0
- package/dist/components/gallery/StrataGallery.js +9 -0
- package/dist/components/gallery/TerracesGallery.d.ts +18 -0
- package/dist/components/gallery/TerracesGallery.d.ts.map +1 -0
- package/dist/components/gallery/TerracesGallery.js +9 -0
- package/dist/components/gallery/WireReliefGallery.d.ts +18 -0
- package/dist/components/gallery/WireReliefGallery.d.ts.map +1 -0
- package/dist/components/gallery/WireReliefGallery.js +9 -0
- package/dist/components/gallery/index.d.ts +46 -0
- package/dist/components/gallery/index.d.ts.map +1 -0
- package/dist/components/gallery/index.js +22 -0
- package/dist/components/gallery/kit/GalleryVariant.d.ts +68 -0
- package/dist/components/gallery/kit/GalleryVariant.d.ts.map +1 -0
- package/dist/components/gallery/kit/GalleryVariant.js +231 -0
- package/dist/components/gallery/kit/feeds.d.ts +7 -0
- package/dist/components/gallery/kit/feeds.d.ts.map +1 -0
- package/dist/components/gallery/kit/feeds.js +83 -0
- package/dist/components/gallery/kit/galleryKit.d.ts +118 -0
- package/dist/components/gallery/kit/galleryKit.d.ts.map +1 -0
- package/dist/components/gallery/kit/galleryKit.js +298 -0
- package/dist/components/gallery/kit/lookBase.d.ts +157 -0
- package/dist/components/gallery/kit/lookBase.d.ts.map +1 -0
- package/dist/components/gallery/kit/lookBase.js +211 -0
- package/dist/components/gallery/kit/pictures.d.ts +14 -0
- package/dist/components/gallery/kit/pictures.d.ts.map +1 -0
- package/dist/components/gallery/kit/pictures.js +81 -0
- package/dist/components/gallery/looks/basicCarousel.d.ts +177 -0
- package/dist/components/gallery/looks/basicCarousel.d.ts.map +1 -0
- package/dist/components/gallery/looks/basicCarousel.js +315 -0
- package/dist/components/gallery/looks/contourLines.d.ts +153 -0
- package/dist/components/gallery/looks/contourLines.d.ts.map +1 -0
- package/dist/components/gallery/looks/contourLines.js +91 -0
- package/dist/components/gallery/looks/depthLayers.d.ts +155 -0
- package/dist/components/gallery/looks/depthLayers.d.ts.map +1 -0
- package/dist/components/gallery/looks/depthLayers.js +87 -0
- package/dist/components/gallery/looks/engraving.d.ts +162 -0
- package/dist/components/gallery/looks/engraving.d.ts.map +1 -0
- package/dist/components/gallery/looks/engraving.js +96 -0
- package/dist/components/gallery/looks/flowLines.d.ts +180 -0
- package/dist/components/gallery/looks/flowLines.d.ts.map +1 -0
- package/dist/components/gallery/looks/flowLines.js +113 -0
- package/dist/components/gallery/looks/fold.d.ts +209 -0
- package/dist/components/gallery/looks/fold.d.ts.map +1 -0
- package/dist/components/gallery/looks/fold.js +155 -0
- package/dist/components/gallery/looks/glassPanes.d.ts +133 -0
- package/dist/components/gallery/looks/glassPanes.d.ts.map +1 -0
- package/dist/components/gallery/looks/glassPanes.js +208 -0
- package/dist/components/gallery/looks/halo.d.ts +100 -0
- package/dist/components/gallery/looks/halo.d.ts.map +1 -0
- package/dist/components/gallery/looks/halo.js +119 -0
- package/dist/components/gallery/looks/lightThreads.d.ts +199 -0
- package/dist/components/gallery/looks/lightThreads.d.ts.map +1 -0
- package/dist/components/gallery/looks/lightThreads.js +246 -0
- package/dist/components/gallery/looks/loom.d.ts +238 -0
- package/dist/components/gallery/looks/loom.d.ts.map +1 -0
- package/dist/components/gallery/looks/loom.js +256 -0
- package/dist/components/gallery/looks/paperLanterns.d.ts +181 -0
- package/dist/components/gallery/looks/paperLanterns.d.ts.map +1 -0
- package/dist/components/gallery/looks/paperLanterns.js +399 -0
- package/dist/components/gallery/looks/particleShift.d.ts +193 -0
- package/dist/components/gallery/looks/particleShift.d.ts.map +1 -0
- package/dist/components/gallery/looks/particleShift.js +282 -0
- package/dist/components/gallery/looks/pinscreen.d.ts +175 -0
- package/dist/components/gallery/looks/pinscreen.d.ts.map +1 -0
- package/dist/components/gallery/looks/pinscreen.js +96 -0
- package/dist/components/gallery/looks/popUp.d.ts +206 -0
- package/dist/components/gallery/looks/popUp.d.ts.map +1 -0
- package/dist/components/gallery/looks/popUp.js +132 -0
- package/dist/components/gallery/looks/prismSplit.d.ts +151 -0
- package/dist/components/gallery/looks/prismSplit.d.ts.map +1 -0
- package/dist/components/gallery/looks/prismSplit.js +84 -0
- package/dist/components/gallery/looks/ridgelines.d.ts +179 -0
- package/dist/components/gallery/looks/ridgelines.d.ts.map +1 -0
- package/dist/components/gallery/looks/ridgelines.js +111 -0
- package/dist/components/gallery/looks/shadowBox.d.ts +152 -0
- package/dist/components/gallery/looks/shadowBox.d.ts.map +1 -0
- package/dist/components/gallery/looks/shadowBox.js +82 -0
- package/dist/components/gallery/looks/silk.d.ts +140 -0
- package/dist/components/gallery/looks/silk.d.ts.map +1 -0
- package/dist/components/gallery/looks/silk.js +346 -0
- package/dist/components/gallery/looks/slats.d.ts +176 -0
- package/dist/components/gallery/looks/slats.d.ts.map +1 -0
- package/dist/components/gallery/looks/slats.js +93 -0
- package/dist/components/gallery/looks/strata.d.ts +172 -0
- package/dist/components/gallery/looks/strata.d.ts.map +1 -0
- package/dist/components/gallery/looks/strata.js +88 -0
- package/dist/components/gallery/looks/terraces.d.ts +168 -0
- package/dist/components/gallery/looks/terraces.d.ts.map +1 -0
- package/dist/components/gallery/looks/terraces.js +91 -0
- package/dist/components/gallery/looks/wireRelief.d.ts +153 -0
- package/dist/components/gallery/looks/wireRelief.d.ts.map +1 -0
- package/dist/components/gallery/looks/wireRelief.js +128 -0
- package/dist/components/image/ContourImage.d.ts +7 -0
- package/dist/components/image/ContourImage.d.ts.map +1 -0
- package/dist/components/image/ContourImage.js +6 -0
- package/dist/components/image/EngravingImage.d.ts +7 -0
- package/dist/components/image/EngravingImage.d.ts.map +1 -0
- package/dist/components/image/EngravingImage.js +6 -0
- package/dist/components/image/FrostImage.d.ts +7 -0
- package/dist/components/image/FrostImage.d.ts.map +1 -0
- package/dist/components/image/FrostImage.js +6 -0
- package/dist/components/image/LenticularImage.d.ts +7 -0
- package/dist/components/image/LenticularImage.d.ts.map +1 -0
- package/dist/components/image/LenticularImage.js +6 -0
- package/dist/components/image/PinscreenImage.d.ts +7 -0
- package/dist/components/image/PinscreenImage.d.ts.map +1 -0
- package/dist/components/image/PinscreenImage.js +6 -0
- package/dist/components/image/PrismImage.d.ts +7 -0
- package/dist/components/image/PrismImage.d.ts.map +1 -0
- package/dist/components/image/PrismImage.js +6 -0
- package/dist/components/image/ProjectorImage.d.ts +7 -0
- package/dist/components/image/ProjectorImage.d.ts.map +1 -0
- package/dist/components/image/ProjectorImage.js +6 -0
- package/dist/components/image/ReliefImage.d.ts +7 -0
- package/dist/components/image/ReliefImage.d.ts.map +1 -0
- package/dist/components/image/ReliefImage.js +6 -0
- package/dist/components/image/RollImage.d.ts +7 -0
- package/dist/components/image/RollImage.d.ts.map +1 -0
- package/dist/components/image/RollImage.js +6 -0
- package/dist/components/image/ShardsImage.d.ts +126 -0
- package/dist/components/image/ShardsImage.d.ts.map +1 -0
- package/dist/components/image/ShardsImage.js +470 -0
- package/dist/components/image/core/contour.d.ts +126 -0
- package/dist/components/image/core/contour.d.ts.map +1 -0
- package/dist/components/image/core/contour.js +123 -0
- package/dist/components/image/core/engraving.d.ts +135 -0
- package/dist/components/image/core/engraving.d.ts.map +1 -0
- package/dist/components/image/core/engraving.js +163 -0
- package/dist/components/image/core/frost.d.ts +126 -0
- package/dist/components/image/core/frost.d.ts.map +1 -0
- package/dist/components/image/core/frost.js +156 -0
- package/dist/components/image/core/imageCore.d.ts +110 -0
- package/dist/components/image/core/imageCore.d.ts.map +1 -0
- package/dist/components/image/core/imageCore.js +269 -0
- package/dist/components/image/core/lenticular.d.ts +129 -0
- package/dist/components/image/core/lenticular.d.ts.map +1 -0
- package/dist/components/image/core/lenticular.js +132 -0
- package/dist/components/image/core/pinscreen.d.ts +126 -0
- package/dist/components/image/core/pinscreen.d.ts.map +1 -0
- package/dist/components/image/core/pinscreen.js +147 -0
- package/dist/components/image/core/prism.d.ts +120 -0
- package/dist/components/image/core/prism.d.ts.map +1 -0
- package/dist/components/image/core/prism.js +164 -0
- package/dist/components/image/core/projector.d.ts +135 -0
- package/dist/components/image/core/projector.d.ts.map +1 -0
- package/dist/components/image/core/projector.js +225 -0
- package/dist/components/image/core/relief.d.ts +111 -0
- package/dist/components/image/core/relief.d.ts.map +1 -0
- package/dist/components/image/core/relief.js +94 -0
- package/dist/components/image/core/roll.d.ts +114 -0
- package/dist/components/image/core/roll.d.ts.map +1 -0
- package/dist/components/image/core/roll.js +116 -0
- package/dist/components/image/imageVariant.d.ts +46 -0
- package/dist/components/image/imageVariant.d.ts.map +1 -0
- package/dist/components/image/imageVariant.js +128 -0
- package/dist/components/image/index.d.ts +22 -0
- package/dist/components/image/index.d.ts.map +1 -0
- package/dist/components/image/index.js +10 -0
- package/dist/components/image/pictureCycle.d.ts +15 -0
- package/dist/components/image/pictureCycle.d.ts.map +1 -0
- package/dist/components/image/pictureCycle.js +82 -0
- package/dist/components/index.d.ts +4 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +4 -0
- package/dist/components/volumetricClouds/VolumetricCloudsPass.d.ts +9 -7
- package/dist/components/volumetricClouds/VolumetricCloudsPass.d.ts.map +1 -1
- package/dist/components/volumetricClouds/VolumetricCloudsPass.js +39 -27
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +2 -0
- package/dist/galleryRuntime.d.ts +57 -0
- package/dist/galleryRuntime.d.ts.map +1 -0
- package/dist/galleryRuntime.js +105 -0
- package/dist/hooks/useConfigLive.d.ts +1 -1
- package/dist/hooks/useConfigLive.d.ts.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/keyPad/KeyPadControls.d.ts +16 -0
- package/dist/keyPad/KeyPadControls.d.ts.map +1 -0
- package/dist/keyPad/KeyPadControls.js +176 -0
- package/dist/keyPad/index.d.ts +16 -0
- package/dist/keyPad/index.d.ts.map +1 -0
- package/dist/keyPad/index.js +8 -0
- package/dist/keyPad/keyBindings.d.ts +43 -0
- package/dist/keyPad/keyBindings.d.ts.map +1 -0
- package/dist/keyPad/keyBindings.js +92 -0
- package/dist/keyPad/keyPadAnimation.d.ts +28 -0
- package/dist/keyPad/keyPadAnimation.d.ts.map +1 -0
- package/dist/keyPad/keyPadAnimation.js +131 -0
- package/dist/keyPad/keyPadMotion.d.ts +68 -0
- package/dist/keyPad/keyPadMotion.d.ts.map +1 -0
- package/dist/keyPad/keyPadMotion.js +283 -0
- package/dist/keyPad/keyPadStore.d.ts +25 -0
- package/dist/keyPad/keyPadStore.d.ts.map +1 -0
- package/dist/keyPad/keyPadStore.js +63 -0
- package/dist/keyPad/types.d.ts +23 -0
- package/dist/keyPad/types.d.ts.map +1 -0
- package/dist/keyPad/types.js +9 -0
- package/dist/operations/catalogue/visibility.d.ts.map +1 -1
- package/dist/operations/catalogue/visibility.js +23 -1
- package/dist/shaders/clouds/CloudResolveMaterial.d.ts +2 -1
- package/dist/shaders/clouds/CloudResolveMaterial.d.ts.map +1 -1
- package/dist/shaders/clouds/CloudResolveMaterial.js +37 -12
- package/dist/shaders/clouds/CloudVolumeMaterial.d.ts +4 -0
- package/dist/shaders/clouds/CloudVolumeMaterial.d.ts.map +1 -1
- package/dist/shaders/clouds/CloudVolumeMaterial.js +15 -3
- package/dist/triggers/kinds/gallery.d.ts +2 -0
- package/dist/triggers/kinds/gallery.d.ts.map +1 -0
- package/dist/triggers/kinds/gallery.js +39 -0
- package/dist/triggers/kinds/index.d.ts +1 -0
- package/dist/triggers/kinds/index.d.ts.map +1 -1
- package/dist/triggers/kinds/index.js +1 -0
- package/dist/ui/UiLayers.d.ts +17 -1
- package/dist/ui/UiLayers.d.ts.map +1 -1
- package/dist/ui/UiLayers.js +76 -3
- package/dist/ui/index.d.ts +2 -2
- package/dist/ui/index.d.ts.map +1 -1
- package/dist/ui/index.js +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// Triggerable: a gallery object's navigation (GalleryRuntime) — next / prev / goTo / pause / resume.
|
|
2
|
+
// `ref` is the gallery's scene object id; the engine waits for it to mount (targets). Or, for a scene
|
|
3
|
+
// with several galleries: GALLERY_ALL (every gallery steps together) or GALLERY_IN_VIEW (the one the
|
|
4
|
+
// viewer is looking at, decided when it runs — nothing when none is on screen). An event kind:
|
|
5
|
+
// a cue fires it when the playhead crosses it, an interaction on click, code / the agent at once.
|
|
6
|
+
import GalleryRuntime, { GALLERY_ALL, GALLERY_IN_VIEW } from '../../galleryRuntime.js';
|
|
7
|
+
import { defineTriggerable } from '../registry.js';
|
|
8
|
+
defineTriggerable({
|
|
9
|
+
kind: 'gallery',
|
|
10
|
+
commands: ['next', 'prev', 'goTo', 'pause', 'resume'],
|
|
11
|
+
timeline: 'event',
|
|
12
|
+
// The special refs wait for nothing: they mean whatever is mounted when the command runs.
|
|
13
|
+
targets: (c) => (c.ref === GALLERY_ALL || c.ref === GALLERY_IN_VIEW ? [] : [c.ref]),
|
|
14
|
+
subject: (c) => `gallery ${c.ref}${c.command === 'goTo' ? ` #${c.index ?? 0}` : ''}`,
|
|
15
|
+
run: (c) => {
|
|
16
|
+
for (const id of GalleryRuntime.resolve(c.ref)) {
|
|
17
|
+
const g = GalleryRuntime.get(id);
|
|
18
|
+
if (!g)
|
|
19
|
+
continue;
|
|
20
|
+
switch (c.command) {
|
|
21
|
+
case 'next':
|
|
22
|
+
g.next();
|
|
23
|
+
break;
|
|
24
|
+
case 'prev':
|
|
25
|
+
g.prev();
|
|
26
|
+
break;
|
|
27
|
+
case 'goTo':
|
|
28
|
+
g.goTo(Number(c.index) || 0);
|
|
29
|
+
break;
|
|
30
|
+
case 'pause':
|
|
31
|
+
g.pause();
|
|
32
|
+
break;
|
|
33
|
+
case 'resume':
|
|
34
|
+
g.resume();
|
|
35
|
+
break;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/triggers/kinds/index.ts"],"names":[],"mappings":"AACA,OAAO,WAAW,CAAC;AACnB,OAAO,UAAU,CAAC;AAClB,OAAO,cAAc,CAAC;AACtB,OAAO,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/triggers/kinds/index.ts"],"names":[],"mappings":"AACA,OAAO,WAAW,CAAC;AACnB,OAAO,UAAU,CAAC;AAClB,OAAO,cAAc,CAAC;AACtB,OAAO,UAAU,CAAC;AAClB,OAAO,WAAW,CAAC"}
|
package/dist/ui/UiLayers.d.ts
CHANGED
|
@@ -10,11 +10,27 @@ export interface UiLayerRuntime {
|
|
|
10
10
|
}
|
|
11
11
|
/** A rendered layer by key, id, or name-less id. Undefined while it is hidden or not mounted. */
|
|
12
12
|
export declare function getUiLayerRuntime(ref: string): UiLayerRuntime | undefined;
|
|
13
|
+
/** An element of a layer, by child-index path from the layer's root (the sanitized HTML's top level). */
|
|
14
|
+
export interface UiElementRef {
|
|
15
|
+
layerId: string;
|
|
16
|
+
path: number[];
|
|
17
|
+
}
|
|
18
|
+
export interface UiEditMode {
|
|
19
|
+
selected?: UiElementRef | null;
|
|
20
|
+
/** Called with the clicked element (null path: empty space in the layer). */
|
|
21
|
+
onSelect(ref: UiElementRef): void;
|
|
22
|
+
}
|
|
23
|
+
/** Child-index path of `el` under `body`. */
|
|
24
|
+
export declare function uiElementPath(body: Element, el: Element): number[];
|
|
25
|
+
/** The element at `path` under `body`, or null. */
|
|
26
|
+
export declare function uiElementAt(body: Element, path: number[]): Element | null;
|
|
13
27
|
export interface UiLayersProps {
|
|
14
28
|
layers: UiLayer[] | undefined;
|
|
15
29
|
scene: UiSceneApi;
|
|
16
30
|
/** Extra CSS appended to every layer after its own (ProjectLoader's `uiStyles`). */
|
|
17
31
|
extraCss?: string;
|
|
32
|
+
/** Studio only: clicks select elements instead of running them. */
|
|
33
|
+
edit?: UiEditMode;
|
|
18
34
|
}
|
|
19
|
-
export default function UiLayers({ layers, scene, extraCss }: UiLayersProps): import("react").JSX.Element;
|
|
35
|
+
export default function UiLayers({ layers, scene, extraCss, edit }: UiLayersProps): import("react").JSX.Element;
|
|
20
36
|
//# sourceMappingURL=UiLayers.d.ts.map
|
|
@@ -1 +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;
|
|
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;AAMD,yGAAyG;AACzG,MAAM,WAAW,YAAY;IAAG,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE;AAEjE,MAAM,WAAW,UAAU;IACvB,QAAQ,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAC/B,6EAA6E;IAC7E,QAAQ,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI,CAAC;CACrC;AAUD,6CAA6C;AAC7C,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,GAAG,MAAM,EAAE,CAUlE;AAED,mDAAmD;AACnD,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,GAAG,IAAI,CAIzE;AAqED,MAAM,WAAW,aAAa;IAC1B,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC;IAC9B,KAAK,EAAE,UAAU,CAAC;IAClB,oFAAoF;IACpF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mEAAmE;IACnE,IAAI,CAAC,EAAE,UAAU,CAAC;CACrB;AAED,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,aAAa,+BAYhF"}
|
package/dist/ui/UiLayers.js
CHANGED
|
@@ -23,9 +23,42 @@ export function getUiLayerRuntime(ref) {
|
|
|
23
23
|
return r;
|
|
24
24
|
return undefined;
|
|
25
25
|
}
|
|
26
|
+
const EDIT_CSS = `
|
|
27
|
+
.rise-layer * { pointer-events: auto !important; cursor: default !important; }
|
|
28
|
+
.rise-layer *:hover { outline: 1px dashed rgba(255,255,255,.55); outline-offset: 1px; }
|
|
29
|
+
[data-rise-selected] { outline: 2px solid #ffffff !important; outline-offset: 2px; box-shadow: 0 0 0 4px rgba(0,0,0,.45) !important; }
|
|
30
|
+
`;
|
|
31
|
+
/** Events a layer must not see while editing — its binder would run commands or write values. */
|
|
32
|
+
const SWALLOW = ['click', 'dblclick', 'pointerdown', 'pointerup', 'mousedown', 'pointerenter', 'pointerleave', 'keydown', 'input', 'change'];
|
|
33
|
+
/** Child-index path of `el` under `body`. */
|
|
34
|
+
export function uiElementPath(body, el) {
|
|
35
|
+
const path = [];
|
|
36
|
+
let cur = el;
|
|
37
|
+
while (cur && cur !== body) {
|
|
38
|
+
const parent = cur.parentElement;
|
|
39
|
+
if (!parent)
|
|
40
|
+
return [];
|
|
41
|
+
path.unshift(Array.prototype.indexOf.call(parent.children, cur));
|
|
42
|
+
cur = parent;
|
|
43
|
+
}
|
|
44
|
+
return cur === body ? path : [];
|
|
45
|
+
}
|
|
46
|
+
/** The element at `path` under `body`, or null. */
|
|
47
|
+
export function uiElementAt(body, path) {
|
|
48
|
+
let cur = body;
|
|
49
|
+
for (const i of path) {
|
|
50
|
+
cur = cur?.children[i] ?? null;
|
|
51
|
+
if (!cur)
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
return cur;
|
|
55
|
+
}
|
|
26
56
|
// ---------------------------------------------------------------------------
|
|
27
|
-
function UiLayerHost({ layer, scene, extraCss }) {
|
|
57
|
+
function UiLayerHost({ layer, scene, extraCss, edit }) {
|
|
28
58
|
const ref = useRef(null);
|
|
59
|
+
const onSelect = useRef(edit?.onSelect);
|
|
60
|
+
onSelect.current = edit?.onSelect;
|
|
61
|
+
const editing = !!edit;
|
|
29
62
|
useEffect(() => {
|
|
30
63
|
const host = ref.current;
|
|
31
64
|
if (!host)
|
|
@@ -45,13 +78,53 @@ function UiLayerHost({ layer, scene, extraCss }) {
|
|
|
45
78
|
root.replaceChildren();
|
|
46
79
|
};
|
|
47
80
|
}, [layer.id, layer.key, layer.html, layer.css, extraCss, scene]);
|
|
81
|
+
// Edit mode: swallow every event on the way down (capture on the shadow root runs
|
|
82
|
+
// before any element's listener) and report clicks as a selection.
|
|
83
|
+
useEffect(() => {
|
|
84
|
+
const root = ref.current?.shadowRoot;
|
|
85
|
+
if (!root || !editing)
|
|
86
|
+
return;
|
|
87
|
+
const style = document.createElement('style');
|
|
88
|
+
style.textContent = EDIT_CSS;
|
|
89
|
+
root.append(style);
|
|
90
|
+
const body = root.querySelector('.rise-layer');
|
|
91
|
+
const swallow = (e) => {
|
|
92
|
+
// Script presses (scene.ui.press, the panel's Test) are untrusted: they run as normal.
|
|
93
|
+
if (!e.isTrusted)
|
|
94
|
+
return;
|
|
95
|
+
e.stopPropagation();
|
|
96
|
+
if (e.type !== 'keydown' && e.cancelable)
|
|
97
|
+
e.preventDefault();
|
|
98
|
+
if (e.type !== 'click' || !body)
|
|
99
|
+
return;
|
|
100
|
+
const target = e.composedPath().find((n) => n instanceof Element && body.contains(n) && n !== body);
|
|
101
|
+
onSelect.current?.({ layerId: layer.id, path: target ? uiElementPath(body, target) : [] });
|
|
102
|
+
};
|
|
103
|
+
for (const t of SWALLOW)
|
|
104
|
+
root.addEventListener(t, swallow, true);
|
|
105
|
+
return () => {
|
|
106
|
+
for (const t of SWALLOW)
|
|
107
|
+
root.removeEventListener(t, swallow, true);
|
|
108
|
+
style.remove();
|
|
109
|
+
};
|
|
110
|
+
}, [editing, layer.id, layer.html, layer.css, extraCss, scene]);
|
|
111
|
+
// The selected element's outline lives on the live DOM only — never in the saved HTML.
|
|
112
|
+
const selPath = edit?.selected?.layerId === layer.id ? edit.selected.path.join('/') : null;
|
|
113
|
+
useEffect(() => {
|
|
114
|
+
const body = ref.current?.shadowRoot?.querySelector('.rise-layer');
|
|
115
|
+
if (!body || selPath === null || !selPath)
|
|
116
|
+
return;
|
|
117
|
+
const el = uiElementAt(body, selPath.split('/').map(Number));
|
|
118
|
+
el?.setAttribute('data-rise-selected', '');
|
|
119
|
+
return () => el?.removeAttribute('data-rise-selected');
|
|
120
|
+
}, [selPath, layer.html, layer.css, extraCss, scene]);
|
|
48
121
|
return _jsx("div", { ref: ref, className: UI_HOST_CLASS, "data-ui-layer": layer.key, style: { position: 'absolute', inset: 0, pointerEvents: 'none' } });
|
|
49
122
|
}
|
|
50
|
-
export default function UiLayers({ layers, scene, extraCss }) {
|
|
123
|
+
export default function UiLayers({ layers, scene, extraCss, edit }) {
|
|
51
124
|
const visible = (layers ?? []).filter(l => l.visible !== false);
|
|
52
125
|
if (!visible.length)
|
|
53
126
|
return null;
|
|
54
127
|
return (_jsx("div", { className: "rise-ui-overlay",
|
|
55
128
|
// 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)) }));
|
|
129
|
+
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, edit: edit }, l.id)) }));
|
|
57
130
|
}
|
package/dist/ui/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { default as UiLayers, getUiLayerRuntime } from './UiLayers';
|
|
2
|
-
export type { UiLayersProps, UiLayerRuntime } from './UiLayers';
|
|
1
|
+
export { default as UiLayers, getUiLayerRuntime, uiElementPath, uiElementAt } from './UiLayers';
|
|
2
|
+
export type { UiLayersProps, UiLayerRuntime, UiEditMode, UiElementRef } from './UiLayers';
|
|
3
3
|
export { default as UiAnchorUpdater } from './UiAnchorUpdater';
|
|
4
4
|
export { bindUiLayer } from './uiBinder';
|
|
5
5
|
export type { BindOptions, BoundControl, UiBinderHandle, UiSceneApi } from './uiBinder';
|
package/dist/ui/index.d.ts.map
CHANGED
|
@@ -1 +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;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,iBAAiB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAChG,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1F,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
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
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';
|
|
2
|
+
export { default as UiLayers, getUiLayerRuntime, uiElementPath, uiElementAt } from './UiLayers.js';
|
|
3
3
|
export { default as UiAnchorUpdater } from './UiAnchorUpdater.js';
|
|
4
4
|
export { bindUiLayer } from './uiBinder.js';
|
|
5
5
|
export { uiAnchors } from './uiAnchors.js';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@3driseai/3drise-viewer",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.42",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
41
|
"@3driseai/3drise-common": "^1.0.1",
|
|
42
|
-
"@3driseai/3drise-core": "^1.0.
|
|
42
|
+
"@3driseai/3drise-core": "^1.0.30",
|
|
43
43
|
"three-mesh-bvh": "^0.8.3"
|
|
44
44
|
}
|
|
45
45
|
}
|