@3driseai/3drise-viewer 0.1.39 → 0.1.41
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 +30 -0
- package/dist/animationsV2/ClipsRuntime.d.ts.map +1 -1
- package/dist/animationsV2/ClipsRuntime.js +185 -14
- package/dist/animationsV2/clipUtils.d.ts +15 -0
- package/dist/animationsV2/clipUtils.d.ts.map +1 -1
- package/dist/animationsV2/clipUtils.js +39 -2
- package/dist/animationsV2/normalize.d.ts.map +1 -1
- package/dist/animationsV2/normalize.js +4 -0
- package/dist/animationsV2/types.d.ts +12 -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/AnimatedObject.d.ts.map +1 -1
- package/dist/components/AnimatedObject.js +6 -2
- package/dist/components/EnabledContext.d.ts +12 -0
- package/dist/components/EnabledContext.d.ts.map +1 -0
- package/dist/components/EnabledContext.js +12 -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 +17 -6
- package/dist/components/ObjectsRenderer.d.ts.map +1 -1
- package/dist/components/ObjectsRenderer.js +9 -0
- 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 +1 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +18 -5
- 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/motionTrail.d.ts.map +1 -1
- package/dist/operations/catalogue/motionTrail.js +8 -1
- 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/UiAnchorUpdater.d.ts.map +1 -1
- package/dist/ui/UiAnchorUpdater.js +2 -1
- package/dist/utils/cursorPicking.d.ts.map +1 -1
- package/dist/utils/cursorPicking.js +2 -1
- package/dist/utils/shownInScene.d.ts +13 -0
- package/dist/utils/shownInScene.d.ts.map +1 -0
- package/dist/utils/shownInScene.js +16 -0
- package/package.json +2 -2
|
@@ -78,13 +78,47 @@ export interface SceneValues {
|
|
|
78
78
|
/** Why `set` would fail, or undefined when it can write this path. */
|
|
79
79
|
check(target: string, path: string): string | undefined;
|
|
80
80
|
}
|
|
81
|
-
export type SceneHandleEventType = 'actionApplied' | 'actionReverted' | 'animationStart' | 'animationEnd' | 'animationLoop';
|
|
81
|
+
export type SceneHandleEventType = 'actionApplied' | 'actionReverted' | 'animationStart' | 'animationEnd' | 'animationLoop' | 'galleryChange';
|
|
82
82
|
export interface SceneHandleEvent {
|
|
83
83
|
type: SceneHandleEventType;
|
|
84
|
-
kind: 'action' | 'clip' | 'sequence';
|
|
84
|
+
kind: 'action' | 'clip' | 'sequence' | 'gallery';
|
|
85
85
|
id: string;
|
|
86
86
|
key?: string;
|
|
87
87
|
name: string;
|
|
88
|
+
/** galleryChange: the picture now shown. */
|
|
89
|
+
index?: number;
|
|
90
|
+
count?: number;
|
|
91
|
+
url?: string;
|
|
92
|
+
}
|
|
93
|
+
export interface SceneGalleryInfo {
|
|
94
|
+
id: string;
|
|
95
|
+
key?: string;
|
|
96
|
+
name: string;
|
|
97
|
+
/** The picture shown now (0-based) and how many there are. */
|
|
98
|
+
index: number;
|
|
99
|
+
count: number;
|
|
100
|
+
/** True while a picture change is playing. */
|
|
101
|
+
busy: boolean;
|
|
102
|
+
/** Autoplay paused by pause(). */
|
|
103
|
+
paused: boolean;
|
|
104
|
+
url?: string;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* The scene's galleries that can be driven (variants with navigation: carousel, …; the layout gallery has none) —
|
|
108
|
+
* drive them from your own buttons: `scene.galleries.next('hero')`, `scene.on('galleryChange', …)`.
|
|
109
|
+
*/
|
|
110
|
+
export interface SceneGalleries {
|
|
111
|
+
list(): SceneGalleryInfo[];
|
|
112
|
+
get(ref: string): SceneGalleryInfo | undefined;
|
|
113
|
+
next(ref: string): boolean;
|
|
114
|
+
prev(ref: string): boolean;
|
|
115
|
+
/** Change to picture i (wraps). */
|
|
116
|
+
goTo(ref: string, index: number): boolean;
|
|
117
|
+
/** Show picture i at once, without the change animation. */
|
|
118
|
+
jump(ref: string, index: number): boolean;
|
|
119
|
+
/** Pause / resume its autoplay. */
|
|
120
|
+
pause(ref: string): boolean;
|
|
121
|
+
resume(ref: string): boolean;
|
|
88
122
|
}
|
|
89
123
|
export interface SceneHandle {
|
|
90
124
|
actions: {
|
|
@@ -98,6 +132,8 @@ export interface SceneHandle {
|
|
|
98
132
|
reset(): void;
|
|
99
133
|
};
|
|
100
134
|
clips: ScenePlayback<SceneClipInfo>;
|
|
135
|
+
/** Galleries: next / prev / goTo and `on('galleryChange', …)`. */
|
|
136
|
+
galleries: SceneGalleries;
|
|
101
137
|
sequences: ScenePlayback<SceneSequenceInfo> & {
|
|
102
138
|
/**
|
|
103
139
|
* Drive a sequence from your own input (page scroll, a slider…): its position,
|
|
@@ -123,11 +159,12 @@ export interface SceneHandleSource {
|
|
|
123
159
|
actions: ActionSequence[];
|
|
124
160
|
clips: AnimationClip[];
|
|
125
161
|
sequences: AnimationSequence[];
|
|
126
|
-
/** The project's objects, to resolve a `values` target by key, id or name. */
|
|
162
|
+
/** The project's objects, to resolve a `values` or gallery target by key, id or name. */
|
|
127
163
|
objects?: Array<{
|
|
128
164
|
id: string;
|
|
129
165
|
name?: string;
|
|
130
166
|
key?: string;
|
|
167
|
+
type?: string;
|
|
131
168
|
}>;
|
|
132
169
|
}
|
|
133
170
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sceneHandle.d.ts","sourceRoot":"","sources":["../../src/api/sceneHandle.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"sceneHandle.d.ts","sourceRoot":"","sources":["../../src/api/sceneHandle.ts"],"names":[],"mappings":"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"}
|
package/dist/api/sceneHandle.js
CHANGED
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
//
|
|
21
21
|
import { SceneActions } from '@3driseai/3drise-core';
|
|
22
22
|
import ClipsRuntime from '../animationsV2/ClipsRuntime.js';
|
|
23
|
+
import GalleryRuntime from '../galleryRuntime.js';
|
|
23
24
|
import { runCommand } from '../triggers/index.js';
|
|
24
25
|
import { clipMap, resolveSequence } from '../animationsV2/sequenceUtils.js';
|
|
25
26
|
function resolve(items, ref, kind) {
|
|
@@ -203,6 +204,36 @@ export function createSceneHandle(getSource) {
|
|
|
203
204
|
const current = ClipsRuntime.getLiveValue(state, m[1], node);
|
|
204
205
|
return Array.isArray(current) ? { base: m[1], index: COMPONENT[m[2]] } : undefined;
|
|
205
206
|
}
|
|
207
|
+
// ----- galleries -------------------------------------------------------------------
|
|
208
|
+
const galleryObjects = () => (getSource().objects ?? []).filter(o => GalleryRuntime.has(o.id));
|
|
209
|
+
const findGallery = (ref) => {
|
|
210
|
+
const list = galleryObjects();
|
|
211
|
+
return list.find(o => o.key === ref) ?? list.find(o => o.id === ref) ?? list.find(o => o.name === ref);
|
|
212
|
+
};
|
|
213
|
+
const galleryInfo = (o) => {
|
|
214
|
+
const g = GalleryRuntime.info(o.id);
|
|
215
|
+
return g ? { id: o.id, key: o.key, name: o.name ?? o.id, index: g.index, count: g.count, busy: g.busy, paused: g.paused, url: g.currentUrl } : undefined;
|
|
216
|
+
};
|
|
217
|
+
const galleryRun = (ref, command, index) => {
|
|
218
|
+
const o = findGallery(ref);
|
|
219
|
+
if (!o) {
|
|
220
|
+
console.warn(`[3drise] No gallery "${ref}" in this project. Known: ${galleryObjects().map(i => i.key || i.name || i.id).join(', ') || 'none'}`);
|
|
221
|
+
return false;
|
|
222
|
+
}
|
|
223
|
+
runCommand({ id: `code:gallery:${o.id}`, kind: 'gallery', ref: o.id, command, ...(index !== undefined ? { index } : {}) }, code({ id: o.id, key: o.key }));
|
|
224
|
+
return true;
|
|
225
|
+
};
|
|
226
|
+
const galleries = {
|
|
227
|
+
list: () => galleryObjects().map(galleryInfo).filter((g) => !!g),
|
|
228
|
+
get: (ref) => { const o = findGallery(ref); return o ? galleryInfo(o) : undefined; },
|
|
229
|
+
next: (ref) => galleryRun(ref, 'next'),
|
|
230
|
+
prev: (ref) => galleryRun(ref, 'prev'),
|
|
231
|
+
goTo: (ref, index) => galleryRun(ref, 'goTo', index),
|
|
232
|
+
jump: (ref, index) => { const o = findGallery(ref); const g = o && GalleryRuntime.get(o.id); if (!g)
|
|
233
|
+
return false; g.jump(index); return true; },
|
|
234
|
+
pause: (ref) => galleryRun(ref, 'pause'),
|
|
235
|
+
resume: (ref) => galleryRun(ref, 'resume'),
|
|
236
|
+
};
|
|
206
237
|
const values = {
|
|
207
238
|
check(ref, path) {
|
|
208
239
|
const t = target(ref);
|
|
@@ -280,9 +311,18 @@ export function createSceneHandle(getSource) {
|
|
|
280
311
|
},
|
|
281
312
|
},
|
|
282
313
|
clips: clipControls,
|
|
314
|
+
galleries,
|
|
283
315
|
sequences: sequenceControls,
|
|
284
316
|
run: (command) => runCommand(command, { source: { host: 'code', id: 'run' }, chain: [], catalog }),
|
|
285
317
|
on(type, listener) {
|
|
318
|
+
if (type === 'galleryChange') {
|
|
319
|
+
return GalleryRuntime.on((e) => {
|
|
320
|
+
// Only this project's galleries — another scene on the page shares the runtime.
|
|
321
|
+
const o = (getSource().objects ?? []).find(x => x.id === e.id);
|
|
322
|
+
if (o)
|
|
323
|
+
listener({ type, kind: 'gallery', id: o.id, key: o.key, name: o.name ?? o.id, index: e.index, count: e.count, url: e.currentUrl });
|
|
324
|
+
});
|
|
325
|
+
}
|
|
286
326
|
if (type === 'actionApplied' || type === 'actionReverted') {
|
|
287
327
|
return SceneActions.onEvent((e) => {
|
|
288
328
|
if (e.type === 'reset')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnimatedObject.d.ts","sourceRoot":"","sources":["../../src/components/AnimatedObject.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"AnimatedObject.d.ts","sourceRoot":"","sources":["../../src/components/AnimatedObject.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAQ7D,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACtG,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IACzD,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,iBAAiB,CAAC;IACtC,aAAa,EAAE,qBAAqB,CAAC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACtC,iBAAiB,CAAC,EAAE,CAAC,aAAa,EAAE,qBAAqB,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;IACjH,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC;IACvD,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC;IACvD,MAAM,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC7B;AAGD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA4FvD,CAAC;AAEH,eAAe,cAAc,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { useObjectReady } from '../hooks/useObjectReady.js';
|
|
3
|
-
import { useRef, useEffect, useCallback, useMemo, memo } from 'react';
|
|
3
|
+
import { useRef, useEffect, useCallback, useMemo, memo, useContext } from 'react';
|
|
4
|
+
import { EnabledContext } from './EnabledContext.js';
|
|
4
5
|
import { objectEffectClipOf, objectEffectStepsOf, objectTakesVisualEffects, DEFAULT_EFFECT_SPREAD } from '@3driseai/3drise-core';
|
|
5
6
|
import { usePathAnimation } from '../hooks/usePathAnimation.js';
|
|
6
7
|
import { useObjectEffectLayers } from '../operations/useObjectEffectLayers.js';
|
|
@@ -36,8 +37,11 @@ visible = true, children, parentRef, handleObjectClick, onPointerEnter, onPointe
|
|
|
36
37
|
// Pass the ref itself, not `groupRef.current`: the animation hooks read
|
|
37
38
|
// `.current` inside useFrame, so the group resolves the moment React
|
|
38
39
|
// attaches it — no scene lookup and no extra render needed.
|
|
40
|
+
// Disabled (hidden itself, or under a hidden group): its constant animations and mouse-move pause.
|
|
41
|
+
// They are time-based, so on enable they pick up where the clock is — no catch-up jump.
|
|
42
|
+
const enabled = useContext(EnabledContext) && visible;
|
|
39
43
|
useObjectAnimation(createdObject, animateMaterial, {
|
|
40
|
-
enabled: createdObject.type !== 'gallery', //
|
|
44
|
+
enabled: createdObject.type !== 'gallery' && enabled, //
|
|
41
45
|
hovered,
|
|
42
46
|
}, groupRef);
|
|
43
47
|
// Effects layered on the object (frost, metalize…) — switched on / off, held while on.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether the scene object rendering here is enabled: its own `visible` AND every ancestor's.
|
|
3
|
+
*
|
|
4
|
+
* A group's enabled state overrides its children's, recursively, at runtime only — nothing is
|
|
5
|
+
* written to the children, so switching the group back on brings each child back to its own
|
|
6
|
+
* state (a child hidden on its own stays hidden). ObjectNode provides it per object (from the
|
|
7
|
+
* PRESENTED visibility, so a group whose effects follow its visibility plays them out before its
|
|
8
|
+
* children switch off); AnimatedObject reads it to pause the object's own constant animations
|
|
9
|
+
* and mouse-move while disabled. Pointer events skip hidden subtrees separately (shownInScene).
|
|
10
|
+
*/
|
|
11
|
+
export declare const EnabledContext: import("react").Context<boolean>;
|
|
12
|
+
//# sourceMappingURL=EnabledContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EnabledContext.d.ts","sourceRoot":"","sources":["../../src/components/EnabledContext.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,kCAAsB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { createContext } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Whether the scene object rendering here is enabled: its own `visible` AND every ancestor's.
|
|
4
|
+
*
|
|
5
|
+
* A group's enabled state overrides its children's, recursively, at runtime only — nothing is
|
|
6
|
+
* written to the children, so switching the group back on brings each child back to its own
|
|
7
|
+
* state (a child hidden on its own stays hidden). ObjectNode provides it per object (from the
|
|
8
|
+
* PRESENTED visibility, so a group whose effects follow its visibility plays them out before its
|
|
9
|
+
* children switch off); AnimatedObject reads it to pause the object's own constant animations
|
|
10
|
+
* and mouse-move while disabled. Pointer events skip hidden subtrees separately (shownInScene).
|
|
11
|
+
*/
|
|
12
|
+
export const EnabledContext = createContext(true);
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { CreatedObjectSettings } from '@3driseai/3drise-core';
|
|
3
|
+
import type { Object3D } from 'three';
|
|
4
|
+
import type { ThreeEvent } from '@react-three/fiber';
|
|
5
|
+
import type { ObjectReadyProps } from '../types/objectReady';
|
|
6
|
+
type GalleryObjectProps = ObjectReadyProps & {
|
|
7
|
+
createdObject: CreatedObjectSettings;
|
|
8
|
+
/** A click on a frame (the layout gallery): the studio selects it and runs the interaction. */
|
|
9
|
+
handleObjectClick?: (createdObject: CreatedObjectSettings, ref: Object3D, event: ThreeEvent<MouseEvent>) => void;
|
|
10
|
+
};
|
|
11
|
+
declare const GalleryObject: React.FC<GalleryObjectProps>;
|
|
12
|
+
export default GalleryObject;
|
|
13
|
+
//# sourceMappingURL=GalleryObject.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GalleryObject.d.ts","sourceRoot":"","sources":["../../src/components/GalleryObject.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,qBAAqB,EAA2C,MAAM,uBAAuB,CAAC;AAC5G,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAI7D,KAAK,kBAAkB,GAAG,gBAAgB,GAAG;IACzC,aAAa,EAAE,qBAAqB,CAAC;IACrC,+FAA+F;IAC/F,iBAAiB,CAAC,EAAE,CAAC,aAAa,EAAE,qBAAqB,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;CACpH,CAAC;AAiCF,QAAA,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAe/C,CAAC;AACF,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import GalleryLayout from './GalleryLayout.js';
|
|
3
|
+
import { LightThreadsGallery, SilkGallery, ParticleShiftGallery, GlassPanesGallery, HaloGallery, LoomGallery, BasicCarouselGallery, PaperLanternsGallery, PinscreenGallery, DepthLayersGallery, ContourLinesGallery, PrismSplitGallery, EngravingGallery, SlatsGallery, FoldGallery, WireReliefGallery, TerracesGallery, ShadowBoxGallery, PopUpGallery, RidgelinesGallery, FlowLinesGallery, StrataGallery } from './gallery/index.js';
|
|
4
|
+
/**
|
|
5
|
+
* The gallery variants' components by config.type. `layout` is the layout gallery (GalleryLayout: frames on a layout,
|
|
6
|
+
* driven by the shared transform effects, taking the material); every other variant is its own construction with
|
|
7
|
+
* the uniform contract (config, id, keyframes, mouseMove, ready callbacks) and registers with GalleryRuntime.
|
|
8
|
+
*/
|
|
9
|
+
const FAMILY = {
|
|
10
|
+
layout: GalleryLayout,
|
|
11
|
+
lightThreads: LightThreadsGallery,
|
|
12
|
+
silk: SilkGallery,
|
|
13
|
+
particleShift: ParticleShiftGallery,
|
|
14
|
+
glassPanes: GlassPanesGallery,
|
|
15
|
+
halo: HaloGallery,
|
|
16
|
+
loom: LoomGallery,
|
|
17
|
+
basicCarousel: BasicCarouselGallery,
|
|
18
|
+
paperLanterns: PaperLanternsGallery,
|
|
19
|
+
pinscreen: PinscreenGallery,
|
|
20
|
+
depthLayers: DepthLayersGallery,
|
|
21
|
+
contourLines: ContourLinesGallery,
|
|
22
|
+
prismSplit: PrismSplitGallery,
|
|
23
|
+
engraving: EngravingGallery,
|
|
24
|
+
slats: SlatsGallery,
|
|
25
|
+
fold: FoldGallery,
|
|
26
|
+
wireRelief: WireReliefGallery,
|
|
27
|
+
terraces: TerracesGallery,
|
|
28
|
+
shadowBox: ShadowBoxGallery,
|
|
29
|
+
popUp: PopUpGallery,
|
|
30
|
+
ridgelines: RidgelinesGallery,
|
|
31
|
+
flowLines: FlowLinesGallery,
|
|
32
|
+
strata: StrataGallery,
|
|
33
|
+
};
|
|
34
|
+
const GalleryObject = ({ createdObject, handleObjectClick, onObjectReady, onObjectDispose }) => {
|
|
35
|
+
const config = createdObject.config;
|
|
36
|
+
if (!config)
|
|
37
|
+
return null;
|
|
38
|
+
// A gallery saved before the family existed has no config.type: it is the layout gallery (migrateGalleryObject adds it on load).
|
|
39
|
+
const Component = FAMILY[config.type ?? 'layout'];
|
|
40
|
+
if (!Component)
|
|
41
|
+
return null;
|
|
42
|
+
// Every variant renders the same way: FAMILY is the only per-key entry. The layout gallery reads createdObject
|
|
43
|
+
// (its frames carry the material and the transform effects) and ignores the rest.
|
|
44
|
+
return _jsx(Component, { config: config, id: createdObject.id, createdObject: createdObject, handleObjectClick: handleObjectClick, keyframes: createdObject.animations?.gallery?.animations, mouseMove: createdObject.mouseMove?.gallery, onObjectReady: (_source, ref) => onObjectReady?.(createdObject, ref), onObjectDispose: (_source, ref) => onObjectDispose?.(createdObject, ref) });
|
|
45
|
+
};
|
|
46
|
+
export default GalleryObject;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { CreatedObjectSettings } from '@3driseai/3drise-core';
|
|
3
|
+
import type { ObjectReadyProps } from '../types/objectReady';
|
|
4
|
+
type ImageObjectProps = ObjectReadyProps & {
|
|
5
|
+
createdObject: CreatedObjectSettings;
|
|
6
|
+
};
|
|
7
|
+
declare const ImageObject: React.FC<ImageObjectProps>;
|
|
8
|
+
export default ImageObject;
|
|
9
|
+
//# sourceMappingURL=ImageObject.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ImageObject.d.ts","sourceRoot":"","sources":["../../src/components/ImageObject.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,qBAAqB,EAA2C,MAAM,uBAAuB,CAAC;AAC5G,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAG7D,KAAK,gBAAgB,GAAG,gBAAgB,GAAG;IACvC,aAAa,EAAE,qBAAqB,CAAC;CACxC,CAAC;AAiBF,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAa3C,CAAC;AACF,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { ShardsImage, ProjectorImage, ReliefImage, PinscreenImage, PrismImage, LenticularImage, FrostImage, RollImage, ContourImage, EngravingImage } from './image/index.js';
|
|
3
|
+
/** The image variants' components by config.type (shards, …). */
|
|
4
|
+
const FAMILY = {
|
|
5
|
+
shards: ShardsImage,
|
|
6
|
+
projector: ProjectorImage,
|
|
7
|
+
relief: ReliefImage,
|
|
8
|
+
pinscreen: PinscreenImage,
|
|
9
|
+
prism: PrismImage,
|
|
10
|
+
lenticular: LenticularImage,
|
|
11
|
+
frost: FrostImage,
|
|
12
|
+
roll: RollImage,
|
|
13
|
+
contour: ContourImage,
|
|
14
|
+
engraving: EngravingImage,
|
|
15
|
+
};
|
|
16
|
+
const ImageObject = ({ createdObject, onObjectReady, onObjectDispose }) => {
|
|
17
|
+
const config = createdObject.config;
|
|
18
|
+
if (!config)
|
|
19
|
+
return null;
|
|
20
|
+
const Component = FAMILY[config.type];
|
|
21
|
+
if (!Component)
|
|
22
|
+
return null;
|
|
23
|
+
// Every variant renders the same way: FAMILY is the only per-key entry.
|
|
24
|
+
return _jsx(Component, { config: config, id: createdObject.id, keyframes: createdObject.animations?.image?.animations, mouseMove: createdObject.mouseMove?.image, onObjectReady: (_source, ref) => onObjectReady?.(createdObject, ref), onObjectDispose: (_source, ref) => onObjectDispose?.(createdObject, ref) });
|
|
25
|
+
};
|
|
26
|
+
export default ImageObject;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObjectNode.d.ts","sourceRoot":"","sources":["../../src/components/ObjectNode.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ObjectNode.d.ts","sourceRoot":"","sources":["../../src/components/ObjectNode.tsx"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,KAAK,EAAe,qBAAqB,EAA2C,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACzI,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAiBrD,KAAK,eAAe,GAAG,gBAAgB,GAAG;IACtC,IAAI,EAAE,cAAc,CAAC;IACrB,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,qBAAqB,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;CAC7G,CAAC;AA8BF,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAmJzC,CAAC;AACF,eAAe,UAAU,CAAC"}
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useCallback, useContext, useMemo } from "react";
|
|
3
3
|
import { GroupMaterialContext, groupMaterialFor } from "./GroupMaterialContext.js";
|
|
4
|
+
import { EnabledContext } from "./EnabledContext.js";
|
|
4
5
|
import CustomPrimitive from "./CustomPrimitive.js";
|
|
5
6
|
import CreatedObject from "./CreatedObject.js";
|
|
6
7
|
import PathRenderer from './PathRenderer.js';
|
|
7
|
-
import GalleryLayout from './GalleryLayout.js';
|
|
8
8
|
import EffectsGenerator from './EffectsGenerator.js';
|
|
9
9
|
import ParticlesGenerator from './ParticlesGenerator.js';
|
|
10
10
|
import LightObject from "./LightObject.js";
|
|
11
11
|
import EnvironmentObject from "./EnvironmentObject.js";
|
|
12
12
|
import LandObject from "./LandObject.js";
|
|
13
13
|
import TextGenerator from "./TextGenerator.js";
|
|
14
|
+
import ImageObject from "./ImageObject.js";
|
|
15
|
+
import GalleryObject from "./GalleryObject.js";
|
|
14
16
|
import Galaxy from "./Galaxy.js";
|
|
15
17
|
import GridGenerator from "./GridsGenerator.js";
|
|
16
18
|
import OceanBuilder from "./OceanBuilder.js";
|
|
@@ -19,7 +21,7 @@ import LayoutInstances from "./LayoutInstances.js";
|
|
|
19
21
|
import { useRuntimeSettings } from "../hooks/useRuntimeSettings.js";
|
|
20
22
|
import { usePresentedVisibility } from "../operations/usePresentedVisibility.js";
|
|
21
23
|
import { SELF_MANAGED_MATERIAL } from "../constants.js";
|
|
22
|
-
import { LAYOUT_CAPABLE_TYPES, getObjectLayoutSupport, normalizeObjectLayout, isGenerativeParticlesConfig } from "@3driseai/3drise-core";
|
|
24
|
+
import { LAYOUT_CAPABLE_TYPES, getObjectLayoutSupport, normalizeObjectLayout, isGenerativeParticlesConfig, isGalleryObjectConfig, galleryTakesMaterial } from "@3driseai/3drise-core";
|
|
23
25
|
// Slots after the first render with no ready callbacks: one object reports once.
|
|
24
26
|
const NO_READY = {};
|
|
25
27
|
// A point light's shadow is six extra renders; only slot 0 keeps it. Cached per settings
|
|
@@ -46,7 +48,9 @@ const GroupWithChildren = ({ createdObject, children, onObjectReady, onObjectDis
|
|
|
46
48
|
const isGroup = createdObject.type === 'group';
|
|
47
49
|
// Generative particle objects own their shaders, like effects do.
|
|
48
50
|
const selfManagedMaterial = SELF_MANAGED_MATERIAL.has(createdObject.type)
|
|
49
|
-
|| (createdObject.type === 'particles' && isGenerativeParticlesConfig(createdObject.config))
|
|
51
|
+
|| (createdObject.type === 'particles' && isGenerativeParticlesConfig(createdObject.config))
|
|
52
|
+
// Gallery variants with their own shaders (carousel, …); the layout gallery's frames take the material.
|
|
53
|
+
|| (createdObject.type === 'gallery' && isGalleryObjectConfig(createdObject.config) && !galleryTakesMaterial(createdObject.config));
|
|
50
54
|
// A group's material (Apply on) goes to the objects inside it — see GroupMaterialContext.
|
|
51
55
|
const parentMaterial = useContext(GroupMaterialContext);
|
|
52
56
|
const ms = createdObject.materialSettings;
|
|
@@ -66,6 +70,9 @@ const ObjectNode = ({ node, onObjectReady, onObjectDispose, handleObjectClick })
|
|
|
66
70
|
const runtimeObject = useRuntimeSettings(node.createdObject?.id, node.createdObject);
|
|
67
71
|
// An object whose effects follow its visibility stays drawn until they have played out.
|
|
68
72
|
const createdObject = usePresentedVisibility(runtimeObject);
|
|
73
|
+
// Enabled = its own (presented) visibility and every ancestor's — see EnabledContext.
|
|
74
|
+
const parentEnabled = useContext(EnabledContext);
|
|
75
|
+
const enabled = parentEnabled && createdObject?.meshSettings?.visible !== false;
|
|
69
76
|
// Children describe themselves with their own settings; the scene above
|
|
70
77
|
// knows them by the node's createdObject, so relabel on the way up.
|
|
71
78
|
const relabel = useCallback((obj) => ({
|
|
@@ -133,11 +140,14 @@ const ObjectNode = ({ node, onObjectReady, onObjectDispose, handleObjectClick })
|
|
|
133
140
|
effect: (obj, _onObjectReady, slot = 0) => (_jsx(EffectsGenerator, { settings: {
|
|
134
141
|
config: obj.config,
|
|
135
142
|
}, id: obj.id /* every layout slot: each copy registers its live handle, so clips and drags reach the whole layout */, keyframes: obj.animations?.effect?.animations, mouseMove: obj.mouseMove?.effect, ...(slot === 0 ? relabel(obj) : NO_READY) }, obj.id)),
|
|
136
|
-
|
|
143
|
+
// Gallery variants by config.type (layout = GalleryLayout, carousel, …) through GalleryObject's FAMILY table.
|
|
144
|
+
gallery: (obj, onObjectReady) => (_jsx(GalleryObject, { createdObject: obj, handleObjectClick: handleObjectClick, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose })),
|
|
137
145
|
light: (obj, _onObjectReady, slot = 0) => (_jsx(LightObject, { createdObject: slot === 0 ? obj : withoutShadow(obj), ...(slot === 0 ? relabel(obj) : NO_READY) })),
|
|
138
146
|
environment: (obj, onObjectReady) => (_jsx(EnvironmentObject, { createdObject: obj, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose })),
|
|
139
147
|
space: (obj, onObjectReady) => (_jsx(Galaxy, { createdObject: obj, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose })),
|
|
140
148
|
land: (obj, onObjectReady) => (_jsx(LandObject, { createdObject: obj, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose })),
|
|
149
|
+
// Image variants (config.type: shards, …): one picture at a time from config.imageUrls, every change animated.
|
|
150
|
+
image: (obj, onObjectReady) => (_jsx(ImageObject, { createdObject: obj, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose })),
|
|
141
151
|
// rain: (obj: CreatedObjectSettings, cameraSettings: CameraState, onObjectReady?: (object: CreatedObjectSettings, ref: Object3D) => void) => (
|
|
142
152
|
// <Rain
|
|
143
153
|
// settings={obj}
|
|
@@ -180,13 +190,14 @@ const ObjectNode = ({ node, onObjectReady, onObjectDispose, handleObjectClick })
|
|
|
180
190
|
const shouldRenderAsGroup = hasChildren || createdObject.type === 'group' || createdObject.type === 'effect';
|
|
181
191
|
const renderedObject = shouldRenderAsGroup
|
|
182
192
|
? _jsx(GroupWithChildren, { createdObject: createdObject, children: children, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose, handleObjectClick: handleObjectClick, renderObject: renderObject })
|
|
183
|
-
: _jsx(CreatedObject, { createdObject: createdObject, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose, handleObjectClick: handleObjectClick, shouldApply3driseMaterial: !SELF_MANAGED_MATERIAL.has(createdObject.type), children: renderObject(createdObject) }, createdObject.id);
|
|
193
|
+
: _jsx(CreatedObject, { createdObject: createdObject, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose, handleObjectClick: handleObjectClick, shouldApply3driseMaterial: !(SELF_MANAGED_MATERIAL.has(createdObject.type) || (createdObject.type === 'gallery' && isGalleryObjectConfig(createdObject.config) && !galleryTakesMaterial(createdObject.config))), children: renderObject(createdObject) }, createdObject.id);
|
|
184
194
|
// createdObject.effects
|
|
185
195
|
// ? <>
|
|
186
196
|
// {renderObject(createdObject)}
|
|
187
197
|
// {/* <EffectsLayer effects={createdObject.effects} /> */}
|
|
188
198
|
// </>
|
|
189
199
|
// : renderObject(createdObject);
|
|
190
|
-
|
|
200
|
+
// Always the Provider (same element type whatever the value), so toggling never remounts the subtree.
|
|
201
|
+
return _jsx(EnabledContext.Provider, { value: enabled, children: renderedObject });
|
|
191
202
|
};
|
|
192
203
|
export default ObjectNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObjectsRenderer.d.ts","sourceRoot":"","sources":["../../src/components/ObjectsRenderer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACvH,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAU9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,KAAK,UAAU,
|
|
1
|
+
{"version":3,"file":"ObjectsRenderer.d.ts","sourceRoot":"","sources":["../../src/components/ObjectsRenderer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACvH,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAU9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,KAAK,UAAU,EAAY,MAAM,oBAAoB,CAAC;AAE/D,UAAU,oBAAqB,SAAQ,gBAAgB;IACnD,cAAc,EAAE,WAAW,CAAC;IAC5B,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C,cAAc,EAAE,qBAAqB,EAAE,CAAC;IACxC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,qBAAqB,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;IAC1G,mEAAmE;IACnE,SAAS,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAChC,KAAK,CAAC,EAAE,aAAa,EAAE,CAAC;IACxB,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;CACtC;AAGD,QAAA,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAuGlD,CAAC;AAEH,eAAe,eAAe,CAAC"}
|
|
@@ -10,6 +10,8 @@ import { installStallLog } from '../utils/stallLog.js';
|
|
|
10
10
|
import { findById } from '../utils/sceneQuery.js';
|
|
11
11
|
import { commandsOf, sceneReadiness } from '../triggers/index.js';
|
|
12
12
|
import { useObjectReady } from '../hooks/useObjectReady.js';
|
|
13
|
+
import { useThree } from "@react-three/fiber";
|
|
14
|
+
import { shownHits } from '../utils/shownInScene.js';
|
|
13
15
|
const ObjectsRenderer = memo(({ cameraSettings, createdObjects, generalObjectSettings, onObjectsReady, onObjectReady, onObjectDispose, handleObjectClick, sequences = [], clips = [], actionSequences = [], }) => {
|
|
14
16
|
const groupRef = useRef(null);
|
|
15
17
|
const objectsTree = useMemo(() => buildObjectTree(createdObjects), [createdObjects]);
|
|
@@ -30,6 +32,13 @@ const ObjectsRenderer = memo(({ cameraSettings, createdObjects, generalObjectSet
|
|
|
30
32
|
readyObjectsCount.current = Math.max(0, readyObjectsCount.current - 1);
|
|
31
33
|
onObjectDispose && onObjectDispose(object, ref);
|
|
32
34
|
}, [onObjectDispose]);
|
|
35
|
+
// Pointer events reach only what is shown: R3F (like three's Raycaster) ignores `visible`, so
|
|
36
|
+
// objects inside a disabled group would still take hover / click and block what is behind them.
|
|
37
|
+
const setEvents = useThree(s => s.setEvents);
|
|
38
|
+
useEffect(() => {
|
|
39
|
+
setEvents({ filter: (hits) => shownHits(hits) });
|
|
40
|
+
return () => setEvents({ filter: undefined });
|
|
41
|
+
}, [setEvents]);
|
|
33
42
|
// The wrapper group itself is an Object3D the parent may want to transform.
|
|
34
43
|
useObjectReady(groupRef, generalObjectSettings, onObjectReady, onObjectDispose);
|
|
35
44
|
function filterInteractionsByEvent(interactions, mouseEvent) {
|
|
@@ -13,6 +13,8 @@ declare const ProjectLoader: React.ForwardRefExoticComponent<ObjectReadyProps &
|
|
|
13
13
|
ui?: boolean;
|
|
14
14
|
/** CSS appended to every UI layer after its own — restyle the generic rise-* classes or set --rise-* variables. */
|
|
15
15
|
uiStyles?: string;
|
|
16
|
+
/** Keyboard control as the project's keyPadSettings sets it (default true). `false` leaves the page's keys alone. */
|
|
17
|
+
keyboard?: boolean;
|
|
16
18
|
onSceneInitialized?: () => void;
|
|
17
19
|
/**
|
|
18
20
|
* Called once the project is loaded and its canvas exists, with the handle for
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectLoader.d.ts","sourceRoot":"","sources":["../../src/components/ProjectLoader.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAItD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAInE,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"ProjectLoader.d.ts","sourceRoot":"","sources":["../../src/components/ProjectLoader.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAItD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAInE,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAuB7D,QAAA,MAAM,aAAa;eApBJ,MAAM;uBACE,KAAK,CAAC,SAAS;oBAClB,CAAC,MAAM,EAAE,qBAAqB,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,KAAK,IAAI;oBACrF,CAAC,MAAM,EAAE,qBAAqB,EAAE,GAAG,EAAE,QAAQ,KAAK,IAAI;IACtE,oHAAoH;SAC/G,OAAO;IACZ,mHAAmH;eACxG,MAAM;IACjB,qHAAqH;eAC1G,OAAO;yBACG,MAAM,IAAI;IAC/B;;;;OAIG;mBACY,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI;qCA6D7C,CAAC;AAEH,eAAe,aAAa,CAAC"}
|
|
@@ -7,7 +7,7 @@ import { migrateObject } from '@3driseai/3drise-core';
|
|
|
7
7
|
import LoadingIndicator from "./LoadingIndicator.js";
|
|
8
8
|
import { useMeshController } from "../hooks/useMeshController.js";
|
|
9
9
|
import { installCdnUrls } from "../utils/cdnUrls.js";
|
|
10
|
-
const ProjectLoader = forwardRef(({ projectId, onObjectClick, onObjectHover, ui = true, uiStyles, onSceneInitialized, onSceneReady, onObjectReady, onObjectDispose, loadingIndicator = _jsx(LoadingIndicator, { text: "Loading project...", fullScreen: true, animate: true }) }, ref) => {
|
|
10
|
+
const ProjectLoader = forwardRef(({ projectId, onObjectClick, onObjectHover, ui = true, uiStyles, keyboard = true, onSceneInitialized, onSceneReady, onObjectReady, onObjectDispose, loadingIndicator = _jsx(LoadingIndicator, { text: "Loading project...", fullScreen: true, animate: true }) }, ref) => {
|
|
11
11
|
const [project, setProject] = useState(null);
|
|
12
12
|
const meshController = useMeshController();
|
|
13
13
|
useEffect(() => {
|
|
@@ -61,7 +61,7 @@ const ProjectLoader = forwardRef(({ projectId, onObjectClick, onObjectHover, ui
|
|
|
61
61
|
flexDirection: 'column', gap: '1rem'
|
|
62
62
|
}, children: loadingIndicator });
|
|
63
63
|
}
|
|
64
|
-
return _jsx(_Fragment, { children: _jsx(SceneBuilder, { ref: ref, project: project, onSceneReady: onSceneReady, loadingIndicator: loadingIndicator, onSceneInitialized: onSceneInitialized, ui: ui, uiStyles: uiStyles, onObjectClick: onObjectClick, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose }) });
|
|
64
|
+
return _jsx(_Fragment, { children: _jsx(SceneBuilder, { ref: ref, project: project, onSceneReady: onSceneReady, loadingIndicator: loadingIndicator, onSceneInitialized: onSceneInitialized, ui: ui, uiStyles: uiStyles, keyboard: keyboard, onObjectClick: onObjectClick, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose }) });
|
|
65
65
|
});
|
|
66
66
|
ProjectLoader.displayName = 'ProjectLoader';
|
|
67
67
|
export default ProjectLoader;
|
|
@@ -16,6 +16,11 @@ export type SceneBuilderViewerProps = SceneBuilderProps & ObjectReadyProps & {
|
|
|
16
16
|
uiLayers?: UiLayer[];
|
|
17
17
|
/** Extra CSS appended to every UI layer after its own, to restyle them. */
|
|
18
18
|
uiStyles?: string;
|
|
19
|
+
/**
|
|
20
|
+
* Keyboard control (arrows / Ctrl / Alt / + − / Home) as the project's
|
|
21
|
+
* sceneSettings.keyPadSettings sets it (default true). `false` leaves the page's keys alone.
|
|
22
|
+
*/
|
|
23
|
+
keyboard?: boolean;
|
|
19
24
|
};
|
|
20
25
|
declare const SceneBuilder: React.ForwardRefExoticComponent<SceneBuilderProps & ObjectReadyProps & {
|
|
21
26
|
/**
|
|
@@ -31,6 +36,11 @@ declare const SceneBuilder: React.ForwardRefExoticComponent<SceneBuilderProps &
|
|
|
31
36
|
uiLayers?: UiLayer[];
|
|
32
37
|
/** Extra CSS appended to every UI layer after its own, to restyle them. */
|
|
33
38
|
uiStyles?: string;
|
|
39
|
+
/**
|
|
40
|
+
* Keyboard control (arrows / Ctrl / Alt / + − / Home) as the project's
|
|
41
|
+
* sceneSettings.keyPadSettings sets it (default true). `false` leaves the page's keys alone.
|
|
42
|
+
*/
|
|
43
|
+
keyboard?: boolean;
|
|
34
44
|
} & React.RefAttributes<SceneHandle>>;
|
|
35
45
|
export default SceneBuilder;
|
|
36
46
|
//# sourceMappingURL=SceneBuilder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SceneBuilder.d.ts","sourceRoot":"","sources":["../../src/components/SceneBuilder.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAqB,KAAK,WAAW,EAA0B,MAAM,oBAAoB,CAAC;AAGjG,OAAO,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAWxE,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"SceneBuilder.d.ts","sourceRoot":"","sources":["../../src/components/SceneBuilder.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAqB,KAAK,WAAW,EAA0B,MAAM,oBAAoB,CAAC;AAGjG,OAAO,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAWxE,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAO7D,MAAM,MAAM,uBAAuB,GAAG,iBAAiB,GAAG,gBAAgB,GAAG;IACzE;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IAC5C,mFAAmF;IACnF,gBAAgB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACnC,oEAAoE;IACpE,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,qFAAqF;IACrF,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,QAAA,MAAM,YAAY;IApBd;;;OAGG;mBACY,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI;IAC3C,mFAAmF;uBAChE,KAAK,CAAC,SAAS;IAClC,oEAAoE;SAC/D,OAAO;IACZ,qFAAqF;eAC1E,OAAO,EAAE;IACpB,2EAA2E;eAChE,MAAM;IACjB;;;OAGG;eACQ,OAAO;qCA8LpB,CAAC;AAIH,eAAe,YAAY,CAAC"}
|
|
@@ -21,7 +21,8 @@ import UiLayers from "../ui/UiLayers.js";
|
|
|
21
21
|
import { sceneReadiness, useSceneReady } from "../triggers/readiness.js";
|
|
22
22
|
import { resetSunSystemLive } from "../animationsV2/sunSystemLive.js";
|
|
23
23
|
import UiAnchorUpdater from "../ui/UiAnchorUpdater.js";
|
|
24
|
-
|
|
24
|
+
import KeyPadControls from "../keyPad/KeyPadControls.js";
|
|
25
|
+
const SceneBuilder = forwardRef(({ project, width = "100%", height = "100vh", style = {}, className = "", onSceneInitialized, onSceneReady, loadingIndicator, ui = true, uiLayers, uiStyles, keyboard = true, onObjectClick, onObjectReady, onObjectDispose, }, ref) => {
|
|
25
26
|
const sceneSettings = (project.sceneSettingsData || {});
|
|
26
27
|
// const meshController = useMeshController();
|
|
27
28
|
const [isThreeJsMounted, setIsThreeJsMounted] = useState(false);
|
|
@@ -189,7 +190,7 @@ const SceneBuilder = forwardRef(({ project, width = "100%", height = "100vh", st
|
|
|
189
190
|
clouds: environment?.clouds,
|
|
190
191
|
ocean: environment?.ocean,
|
|
191
192
|
terrain: environment?.terrain,
|
|
192
|
-
}) }), _jsx(CursorController, { effects: project.cursor?.effects, clickActions: project.cursor?.clickActions, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose }), _jsx(UiAnchorUpdater, {})] }) }), ui && _jsx(UiLayers, { layers: uiLayers ?? project.uiLayers, scene: sceneHandle, extraCss: uiStyles }), (!started || !ready) && (_jsx("div", { style: { position: 'absolute', inset: 0, zIndex: 1000, backgroundColor, display: 'flex', alignItems: 'center', justifyContent: 'center' }, children: loadingIndicator }))] }));
|
|
193
|
+
}) }), _jsx(CursorController, { effects: project.cursor?.effects, clickActions: project.cursor?.clickActions, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose }), _jsx(UiAnchorUpdater, {})] }) }), ui && _jsx(UiLayers, { layers: uiLayers ?? project.uiLayers, scene: sceneHandle, extraCss: uiStyles }), keyboard && ready && _jsx(KeyPadControls, { settings: sceneSettings.keyPadSettings, clips: animationClips, sequences: animationSequences, homePosition: position }), (!started || !ready) && (_jsx("div", { style: { position: 'absolute', inset: 0, zIndex: 1000, backgroundColor, display: 'flex', alignItems: 'center', justifyContent: 'center' }, children: loadingIndicator }))] }));
|
|
193
194
|
});
|
|
194
195
|
SceneBuilder.displayName = 'SceneBuilder';
|
|
195
196
|
/** Readiness entry for "the canvas exists" (its renderer is what compiles the shaders). */
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { AnimationOptions, MouseMoveDomain, BasicCarouselGalleryConfig } from '@3driseai/3drise-core';
|
|
3
|
+
import type { ObjectReadyProps } from '../../types/objectReady';
|
|
4
|
+
export interface BasicCarouselGalleryProps extends ObjectReadyProps {
|
|
5
|
+
config: BasicCarouselGalleryConfig;
|
|
6
|
+
/** Scene object id: the live-edit handle and the gallery's runtime entry are found by it. */
|
|
7
|
+
id?: string;
|
|
8
|
+
/** Keyframes on the config knobs (animations.gallery.animations). */
|
|
9
|
+
keyframes?: AnimationOptions[];
|
|
10
|
+
/** Pointer bindings on the config knobs (mouseMove.gallery). */
|
|
11
|
+
mouseMove?: MouseMoveDomain;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* A coverflow carousel of framed pictures on a damped scroll with drag, throw and snap, a lifted centre frame and a soft floor reflection; the cursor tilts or lifts the frames. Use for portfolios, product lines and photo sets.
|
|
15
|
+
*/
|
|
16
|
+
declare const BasicCarouselGallery: React.FC<BasicCarouselGalleryProps>;
|
|
17
|
+
export default BasicCarouselGallery;
|
|
18
|
+
//# sourceMappingURL=BasicCarouselGallery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BasicCarouselGallery.d.ts","sourceRoot":"","sources":["../../../src/components/gallery/BasicCarouselGallery.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAC3G,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAShE,MAAM,WAAW,yBAA0B,SAAQ,gBAAgB;IAC/D,MAAM,EAAE,0BAA0B,CAAC;IACnC,6FAA6F;IAC7F,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,qEAAqE;IACrE,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B,gEAAgE;IAChE,SAAS,CAAC,EAAE,eAAe,CAAC;CAC/B;AAED;;GAEG;AACH,QAAA,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CAG7D,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { DEFAULT_GALLERY_OBJECTS, GALLERY_OBJECTS_ANIMATABLE } from '@3driseai/3drise-core';
|
|
3
|
+
import GalleryVariant from './kit/GalleryVariant.js';
|
|
4
|
+
import * as LOOK from './looks/basicCarousel.js';
|
|
5
|
+
/**
|
|
6
|
+
* A coverflow carousel of framed pictures on a damped scroll with drag, throw and snap, a lifted centre frame and a soft floor reflection; the cursor tilts or lifts the frames. Use for portfolios, product lines and photo sets.
|
|
7
|
+
*/
|
|
8
|
+
const BasicCarouselGallery = ({ config, ...rest }) => (_jsx(GalleryVariant, { look: LOOK, defaults: DEFAULT_GALLERY_OBJECTS.basicCarousel, animatable: GALLERY_OBJECTS_ANIMATABLE.basicCarousel, config: config, ...rest }));
|
|
9
|
+
export default BasicCarouselGallery;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { AnimationOptions, MouseMoveDomain, ContourLinesGalleryConfig } from '@3driseai/3drise-core';
|
|
3
|
+
import type { ObjectReadyProps } from '../../types/objectReady';
|
|
4
|
+
export interface ContourLinesGalleryProps extends ObjectReadyProps {
|
|
5
|
+
config: ContourLinesGalleryConfig;
|
|
6
|
+
/** Scene object id: the live-edit handle and the gallery's runtime entry are found by it. */
|
|
7
|
+
id?: string;
|
|
8
|
+
/** Keyframes on the config knobs (animations.gallery.animations). */
|
|
9
|
+
keyframes?: AnimationOptions[];
|
|
10
|
+
/** Pointer bindings on the config knobs (mouseMove.gallery). */
|
|
11
|
+
mouseMove?: MouseMoveDomain;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Pictures drawn as the contour lines of their own brightness, like a topographic map: inactive ones are a few thin grey lines, the active one fills in as a soft wave thickens the lines into the solid picture; the cursor lifts the contours into relief. Use for architecture, data and graphic showcases.
|
|
15
|
+
*/
|
|
16
|
+
declare const ContourLinesGallery: React.FC<ContourLinesGalleryProps>;
|
|
17
|
+
export default ContourLinesGallery;
|
|
18
|
+
//# sourceMappingURL=ContourLinesGallery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContourLinesGallery.d.ts","sourceRoot":"","sources":["../../../src/components/gallery/ContourLinesGallery.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAC1G,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAShE,MAAM,WAAW,wBAAyB,SAAQ,gBAAgB;IAC9D,MAAM,EAAE,yBAAyB,CAAC;IAClC,6FAA6F;IAC7F,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,qEAAqE;IACrE,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B,gEAAgE;IAChE,SAAS,CAAC,EAAE,eAAe,CAAC;CAC/B;AAED;;GAEG;AACH,QAAA,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAG3D,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { DEFAULT_GALLERY_OBJECTS, GALLERY_OBJECTS_ANIMATABLE } from '@3driseai/3drise-core';
|
|
3
|
+
import GalleryVariant from './kit/GalleryVariant.js';
|
|
4
|
+
import * as LOOK from './looks/contourLines.js';
|
|
5
|
+
/**
|
|
6
|
+
* Pictures drawn as the contour lines of their own brightness, like a topographic map: inactive ones are a few thin grey lines, the active one fills in as a soft wave thickens the lines into the solid picture; the cursor lifts the contours into relief. Use for architecture, data and graphic showcases.
|
|
7
|
+
*/
|
|
8
|
+
const ContourLinesGallery = ({ config, ...rest }) => (_jsx(GalleryVariant, { look: LOOK, defaults: DEFAULT_GALLERY_OBJECTS.contourLines, animatable: GALLERY_OBJECTS_ANIMATABLE.contourLines, config: config, ...rest }));
|
|
9
|
+
export default ContourLinesGallery;
|