@3driseai/3drise-viewer 0.1.40 → 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.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/package.json +2 -2
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { AnimationOptions, MouseMoveDomain, ShadowBoxGalleryConfig } from '@3driseai/3drise-core';
|
|
3
|
+
import type { ObjectReadyProps } from '../../types/objectReady';
|
|
4
|
+
export interface ShadowBoxGalleryProps extends ObjectReadyProps {
|
|
5
|
+
config: ShadowBoxGalleryConfig;
|
|
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 as cut-paper layers in a shadow box, lit by the scene so each sheet casts a real soft shadow on the one behind: inactive ones are pressed flat and grey, the active one opens into depth in full colour. Use for editorial, craft, kids and storytelling showcases.
|
|
15
|
+
*/
|
|
16
|
+
declare const ShadowBoxGallery: React.FC<ShadowBoxGalleryProps>;
|
|
17
|
+
export default ShadowBoxGallery;
|
|
18
|
+
//# sourceMappingURL=ShadowBoxGallery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ShadowBoxGallery.d.ts","sourceRoot":"","sources":["../../../src/components/gallery/ShadowBoxGallery.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACvG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAShE,MAAM,WAAW,qBAAsB,SAAQ,gBAAgB;IAC3D,MAAM,EAAE,sBAAsB,CAAC;IAC/B,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,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAGrD,CAAC;AAEF,eAAe,gBAAgB,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/shadowBox.js';
|
|
5
|
+
/**
|
|
6
|
+
* Pictures as cut-paper layers in a shadow box, lit by the scene so each sheet casts a real soft shadow on the one behind: inactive ones are pressed flat and grey, the active one opens into depth in full colour. Use for editorial, craft, kids and storytelling showcases.
|
|
7
|
+
*/
|
|
8
|
+
const ShadowBoxGallery = ({ config, ...rest }) => (_jsx(GalleryVariant, { look: LOOK, defaults: DEFAULT_GALLERY_OBJECTS.shadowBox, animatable: GALLERY_OBJECTS_ANIMATABLE.shadowBox, config: config, ...rest }));
|
|
9
|
+
export default ShadowBoxGallery;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { AnimationOptions, MouseMoveDomain, SilkGalleryConfig } from '@3driseai/3drise-core';
|
|
3
|
+
import type { ObjectReadyProps } from '../../types/objectReady';
|
|
4
|
+
export interface SilkGalleryProps extends ObjectReadyProps {
|
|
5
|
+
config: SilkGalleryConfig;
|
|
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 printed on sheets of silk, each a cloth simulation hanging in a light breeze and lit by the scene with a soft sheen; the cursor is a breath of air on the cloth. Use for fashion, textiles and soft, calm showcases.
|
|
15
|
+
*/
|
|
16
|
+
declare const SilkGallery: React.FC<SilkGalleryProps>;
|
|
17
|
+
export default SilkGallery;
|
|
18
|
+
//# sourceMappingURL=SilkGallery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SilkGallery.d.ts","sourceRoot":"","sources":["../../../src/components/gallery/SilkGallery.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAClG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAShE,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACtD,MAAM,EAAE,iBAAiB,CAAC;IAC1B,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,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAG3C,CAAC;AAEF,eAAe,WAAW,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/silk.js';
|
|
5
|
+
/**
|
|
6
|
+
* Pictures printed on sheets of silk, each a cloth simulation hanging in a light breeze and lit by the scene with a soft sheen; the cursor is a breath of air on the cloth. Use for fashion, textiles and soft, calm showcases.
|
|
7
|
+
*/
|
|
8
|
+
const SilkGallery = ({ config, ...rest }) => (_jsx(GalleryVariant, { look: LOOK, defaults: DEFAULT_GALLERY_OBJECTS.silk, animatable: GALLERY_OBJECTS_ANIMATABLE.silk, config: config, ...rest }));
|
|
9
|
+
export default SilkGallery;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { AnimationOptions, MouseMoveDomain, SlatsGalleryConfig } from '@3driseai/3drise-core';
|
|
3
|
+
import type { ObjectReadyProps } from '../../types/objectReady';
|
|
4
|
+
export interface SlatsGalleryProps extends ObjectReadyProps {
|
|
5
|
+
config: SlatsGalleryConfig;
|
|
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 cut into thin vertical slats lit by the scene: inactive ones stand nearly edge-on as fine grey lines, the active one turns its slats to face you in a soft wave, closing into the picture; the cursor turns the slats near it. Use for architecture, interiors and product showcases.
|
|
15
|
+
*/
|
|
16
|
+
declare const SlatsGallery: React.FC<SlatsGalleryProps>;
|
|
17
|
+
export default SlatsGallery;
|
|
18
|
+
//# sourceMappingURL=SlatsGallery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SlatsGallery.d.ts","sourceRoot":"","sources":["../../../src/components/gallery/SlatsGallery.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACnG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAShE,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACvD,MAAM,EAAE,kBAAkB,CAAC;IAC3B,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,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAG7C,CAAC;AAEF,eAAe,YAAY,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/slats.js';
|
|
5
|
+
/**
|
|
6
|
+
* Pictures cut into thin vertical slats lit by the scene: inactive ones stand nearly edge-on as fine grey lines, the active one turns its slats to face you in a soft wave, closing into the picture; the cursor turns the slats near it. Use for architecture, interiors and product showcases.
|
|
7
|
+
*/
|
|
8
|
+
const SlatsGallery = ({ config, ...rest }) => (_jsx(GalleryVariant, { look: LOOK, defaults: DEFAULT_GALLERY_OBJECTS.slats, animatable: GALLERY_OBJECTS_ANIMATABLE.slats, config: config, ...rest }));
|
|
9
|
+
export default SlatsGallery;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { AnimationOptions, MouseMoveDomain, StrataGalleryConfig } from '@3driseai/3drise-core';
|
|
3
|
+
import type { ObjectReadyProps } from '../../types/objectReady';
|
|
4
|
+
export interface StrataGalleryProps extends ObjectReadyProps {
|
|
5
|
+
config: StrataGalleryConfig;
|
|
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 as stacks of thin horizontal plates lit by the scene, each plate’s front following the picture’s brightness like a laser-cut relief: inactive ones are a flat grey stack, the active one slides forward into relief in full colour; the cursor pushes plates back. Use for architecture, product, interiors and craft showcases.
|
|
15
|
+
*/
|
|
16
|
+
declare const StrataGallery: React.FC<StrataGalleryProps>;
|
|
17
|
+
export default StrataGallery;
|
|
18
|
+
//# sourceMappingURL=StrataGallery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StrataGallery.d.ts","sourceRoot":"","sources":["../../../src/components/gallery/StrataGallery.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACpG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAShE,MAAM,WAAW,kBAAmB,SAAQ,gBAAgB;IACxD,MAAM,EAAE,mBAAmB,CAAC;IAC5B,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,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAG/C,CAAC;AAEF,eAAe,aAAa,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/strata.js';
|
|
5
|
+
/**
|
|
6
|
+
* Pictures as stacks of thin horizontal plates lit by the scene, each plate’s front following the picture’s brightness like a laser-cut relief: inactive ones are a flat grey stack, the active one slides forward into relief in full colour; the cursor pushes plates back. Use for architecture, product, interiors and craft showcases.
|
|
7
|
+
*/
|
|
8
|
+
const StrataGallery = ({ config, ...rest }) => (_jsx(GalleryVariant, { look: LOOK, defaults: DEFAULT_GALLERY_OBJECTS.strata, animatable: GALLERY_OBJECTS_ANIMATABLE.strata, config: config, ...rest }));
|
|
9
|
+
export default StrataGallery;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { AnimationOptions, MouseMoveDomain, TerracesGalleryConfig } from '@3driseai/3drise-core';
|
|
3
|
+
import type { ObjectReadyProps } from '../../types/objectReady';
|
|
4
|
+
export interface TerracesGalleryProps extends ObjectReadyProps {
|
|
5
|
+
config: TerracesGalleryConfig;
|
|
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 as topographic models of stacked card lit by the scene: inactive ones are a flat grey contour map, the active one rises into terraces of its own brightness in full colour behind a soft wave; the cursor lifts the terraces higher. Use for architecture, maps, data and craft showcases.
|
|
15
|
+
*/
|
|
16
|
+
declare const TerracesGallery: React.FC<TerracesGalleryProps>;
|
|
17
|
+
export default TerracesGallery;
|
|
18
|
+
//# sourceMappingURL=TerracesGallery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TerracesGallery.d.ts","sourceRoot":"","sources":["../../../src/components/gallery/TerracesGallery.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACtG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAShE,MAAM,WAAW,oBAAqB,SAAQ,gBAAgB;IAC1D,MAAM,EAAE,qBAAqB,CAAC;IAC9B,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,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAGnD,CAAC;AAEF,eAAe,eAAe,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/terraces.js';
|
|
5
|
+
/**
|
|
6
|
+
* Pictures as topographic models of stacked card lit by the scene: inactive ones are a flat grey contour map, the active one rises into terraces of its own brightness in full colour behind a soft wave; the cursor lifts the terraces higher. Use for architecture, maps, data and craft showcases.
|
|
7
|
+
*/
|
|
8
|
+
const TerracesGallery = ({ config, ...rest }) => (_jsx(GalleryVariant, { look: LOOK, defaults: DEFAULT_GALLERY_OBJECTS.terraces, animatable: GALLERY_OBJECTS_ANIMATABLE.terraces, config: config, ...rest }));
|
|
9
|
+
export default TerracesGallery;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { AnimationOptions, MouseMoveDomain, WireReliefGalleryConfig } from '@3driseai/3drise-core';
|
|
3
|
+
import type { ObjectReadyProps } from '../../types/objectReady';
|
|
4
|
+
export interface WireReliefGalleryProps extends ObjectReadyProps {
|
|
5
|
+
config: WireReliefGalleryConfig;
|
|
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 as a fine wire mesh lifted by their own brightness: inactive ones are a flat grey wire grid, the active one rises into relief and fills with colour panels behind a soft wave; near the cursor the panels lift away to the wire. Use for tech, data, architecture and engineering showcases.
|
|
15
|
+
*/
|
|
16
|
+
declare const WireReliefGallery: React.FC<WireReliefGalleryProps>;
|
|
17
|
+
export default WireReliefGallery;
|
|
18
|
+
//# sourceMappingURL=WireReliefGallery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WireReliefGallery.d.ts","sourceRoot":"","sources":["../../../src/components/gallery/WireReliefGallery.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACxG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAShE,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;IAC5D,MAAM,EAAE,uBAAuB,CAAC;IAChC,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,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAGvD,CAAC;AAEF,eAAe,iBAAiB,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/wireRelief.js';
|
|
5
|
+
/**
|
|
6
|
+
* Pictures as a fine wire mesh lifted by their own brightness: inactive ones are a flat grey wire grid, the active one rises into relief and fills with colour panels behind a soft wave; near the cursor the panels lift away to the wire. Use for tech, data, architecture and engineering showcases.
|
|
7
|
+
*/
|
|
8
|
+
const WireReliefGallery = ({ config, ...rest }) => (_jsx(GalleryVariant, { look: LOOK, defaults: DEFAULT_GALLERY_OBJECTS.wireRelief, animatable: GALLERY_OBJECTS_ANIMATABLE.wireRelief, config: config, ...rest }));
|
|
9
|
+
export default WireReliefGallery;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
export type { LightThreadsGalleryProps } from './LightThreadsGallery';
|
|
3
|
+
export { default as LightThreadsGallery } from './LightThreadsGallery';
|
|
4
|
+
export type { SilkGalleryProps } from './SilkGallery';
|
|
5
|
+
export { default as SilkGallery } from './SilkGallery';
|
|
6
|
+
export type { ParticleShiftGalleryProps } from './ParticleShiftGallery';
|
|
7
|
+
export { default as ParticleShiftGallery } from './ParticleShiftGallery';
|
|
8
|
+
export type { GlassPanesGalleryProps } from './GlassPanesGallery';
|
|
9
|
+
export { default as GlassPanesGallery } from './GlassPanesGallery';
|
|
10
|
+
export type { HaloGalleryProps } from './HaloGallery';
|
|
11
|
+
export { default as HaloGallery } from './HaloGallery';
|
|
12
|
+
export type { LoomGalleryProps } from './LoomGallery';
|
|
13
|
+
export { default as LoomGallery } from './LoomGallery';
|
|
14
|
+
export type { BasicCarouselGalleryProps } from './BasicCarouselGallery';
|
|
15
|
+
export { default as BasicCarouselGallery } from './BasicCarouselGallery';
|
|
16
|
+
export type { PaperLanternsGalleryProps } from './PaperLanternsGallery';
|
|
17
|
+
export { default as PaperLanternsGallery } from './PaperLanternsGallery';
|
|
18
|
+
export type { PinscreenGalleryProps } from './PinscreenGallery';
|
|
19
|
+
export { default as PinscreenGallery } from './PinscreenGallery';
|
|
20
|
+
export type { DepthLayersGalleryProps } from './DepthLayersGallery';
|
|
21
|
+
export { default as DepthLayersGallery } from './DepthLayersGallery';
|
|
22
|
+
export type { ContourLinesGalleryProps } from './ContourLinesGallery';
|
|
23
|
+
export { default as ContourLinesGallery } from './ContourLinesGallery';
|
|
24
|
+
export type { PrismSplitGalleryProps } from './PrismSplitGallery';
|
|
25
|
+
export { default as PrismSplitGallery } from './PrismSplitGallery';
|
|
26
|
+
export type { EngravingGalleryProps } from './EngravingGallery';
|
|
27
|
+
export { default as EngravingGallery } from './EngravingGallery';
|
|
28
|
+
export type { SlatsGalleryProps } from './SlatsGallery';
|
|
29
|
+
export { default as SlatsGallery } from './SlatsGallery';
|
|
30
|
+
export type { FoldGalleryProps } from './FoldGallery';
|
|
31
|
+
export { default as FoldGallery } from './FoldGallery';
|
|
32
|
+
export type { WireReliefGalleryProps } from './WireReliefGallery';
|
|
33
|
+
export { default as WireReliefGallery } from './WireReliefGallery';
|
|
34
|
+
export type { TerracesGalleryProps } from './TerracesGallery';
|
|
35
|
+
export { default as TerracesGallery } from './TerracesGallery';
|
|
36
|
+
export type { ShadowBoxGalleryProps } from './ShadowBoxGallery';
|
|
37
|
+
export { default as ShadowBoxGallery } from './ShadowBoxGallery';
|
|
38
|
+
export type { PopUpGalleryProps } from './PopUpGallery';
|
|
39
|
+
export { default as PopUpGallery } from './PopUpGallery';
|
|
40
|
+
export type { RidgelinesGalleryProps } from './RidgelinesGallery';
|
|
41
|
+
export { default as RidgelinesGallery } from './RidgelinesGallery';
|
|
42
|
+
export type { FlowLinesGalleryProps } from './FlowLinesGallery';
|
|
43
|
+
export { default as FlowLinesGallery } from './FlowLinesGallery';
|
|
44
|
+
export type { StrataGalleryProps } from './StrataGallery';
|
|
45
|
+
export { default as StrataGallery } from './StrataGallery';
|
|
46
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/gallery/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export { default as LightThreadsGallery } from './LightThreadsGallery.js';
|
|
2
|
+
export { default as SilkGallery } from './SilkGallery.js';
|
|
3
|
+
export { default as ParticleShiftGallery } from './ParticleShiftGallery.js';
|
|
4
|
+
export { default as GlassPanesGallery } from './GlassPanesGallery.js';
|
|
5
|
+
export { default as HaloGallery } from './HaloGallery.js';
|
|
6
|
+
export { default as LoomGallery } from './LoomGallery.js';
|
|
7
|
+
export { default as BasicCarouselGallery } from './BasicCarouselGallery.js';
|
|
8
|
+
export { default as PaperLanternsGallery } from './PaperLanternsGallery.js';
|
|
9
|
+
export { default as PinscreenGallery } from './PinscreenGallery.js';
|
|
10
|
+
export { default as DepthLayersGallery } from './DepthLayersGallery.js';
|
|
11
|
+
export { default as ContourLinesGallery } from './ContourLinesGallery.js';
|
|
12
|
+
export { default as PrismSplitGallery } from './PrismSplitGallery.js';
|
|
13
|
+
export { default as EngravingGallery } from './EngravingGallery.js';
|
|
14
|
+
export { default as SlatsGallery } from './SlatsGallery.js';
|
|
15
|
+
export { default as FoldGallery } from './FoldGallery.js';
|
|
16
|
+
export { default as WireReliefGallery } from './WireReliefGallery.js';
|
|
17
|
+
export { default as TerracesGallery } from './TerracesGallery.js';
|
|
18
|
+
export { default as ShadowBoxGallery } from './ShadowBoxGallery.js';
|
|
19
|
+
export { default as PopUpGallery } from './PopUpGallery.js';
|
|
20
|
+
export { default as RidgelinesGallery } from './RidgelinesGallery.js';
|
|
21
|
+
export { default as FlowLinesGallery } from './FlowLinesGallery.js';
|
|
22
|
+
export { default as StrataGallery } from './StrataGallery.js';
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import * as THREE from 'three';
|
|
3
|
+
import type { AnimationOptions, MouseMoveDomain } from '@3driseai/3drise-core';
|
|
4
|
+
import type { ObjectReadyProps } from '../../../types/objectReady';
|
|
5
|
+
export interface GalleryPointer {
|
|
6
|
+
x: number;
|
|
7
|
+
y: number;
|
|
8
|
+
nx: number;
|
|
9
|
+
ny: number;
|
|
10
|
+
}
|
|
11
|
+
export interface GalleryLookInstance {
|
|
12
|
+
object: THREE.Object3D;
|
|
13
|
+
/** An invisible plane over the active picture's slot (clicks, "over the gallery"). */
|
|
14
|
+
pickMesh?: THREE.Object3D;
|
|
15
|
+
controls: {
|
|
16
|
+
next(): void;
|
|
17
|
+
prev(): void;
|
|
18
|
+
goTo(i: number): void;
|
|
19
|
+
jump(i: number): void;
|
|
20
|
+
readonly index: number;
|
|
21
|
+
readonly count: number;
|
|
22
|
+
readonly busy: boolean;
|
|
23
|
+
setTexture(tex: THREE.DataArrayTexture, count: number): void;
|
|
24
|
+
dragBegin?(x: number): void;
|
|
25
|
+
dragMove?(x: number): void;
|
|
26
|
+
dragEnd?(dt: number): void;
|
|
27
|
+
/** The picture under the cursor (-1 = none), for looks with a hover state (Paper Lanterns' glow). */
|
|
28
|
+
hover?(i: number): void;
|
|
29
|
+
};
|
|
30
|
+
/** Looks whose pictures are separate clickable things (Paper Lanterns): the picture a hit is on, else
|
|
31
|
+
* undefined. A click on one goes to it; without this a click right / left of the centre goes next / prev. */
|
|
32
|
+
pickPicture?(hit: {
|
|
33
|
+
object: THREE.Object3D;
|
|
34
|
+
instanceId?: number;
|
|
35
|
+
}): number | undefined;
|
|
36
|
+
apply(k: Record<string, unknown>): void;
|
|
37
|
+
update(dt: number, pointer: GalleryPointer | null, state?: {
|
|
38
|
+
dpr: number;
|
|
39
|
+
h: number;
|
|
40
|
+
}): void;
|
|
41
|
+
dispose(): void;
|
|
42
|
+
}
|
|
43
|
+
export interface GalleryLook {
|
|
44
|
+
DEFAULTS: Record<string, unknown>;
|
|
45
|
+
STRUCTURAL: readonly string[];
|
|
46
|
+
createUniforms(): Record<string, {
|
|
47
|
+
value: unknown;
|
|
48
|
+
}>;
|
|
49
|
+
build(u: Record<string, {
|
|
50
|
+
value: unknown;
|
|
51
|
+
}>, c: Record<string, unknown>): GalleryLookInstance;
|
|
52
|
+
}
|
|
53
|
+
export interface GalleryVariantProps extends ObjectReadyProps {
|
|
54
|
+
look: GalleryLook;
|
|
55
|
+
/** The variant's defaults from core (DEFAULT_GALLERY_OBJECTS[key]). */
|
|
56
|
+
defaults: Record<string, unknown>;
|
|
57
|
+
/** The variant's animatable knobs from core (GALLERY_OBJECTS_ANIMATABLE[key]). */
|
|
58
|
+
animatable: readonly {
|
|
59
|
+
value: string;
|
|
60
|
+
}[];
|
|
61
|
+
config: Record<string, unknown>;
|
|
62
|
+
id?: string;
|
|
63
|
+
keyframes?: AnimationOptions[];
|
|
64
|
+
mouseMove?: MouseMoveDomain;
|
|
65
|
+
}
|
|
66
|
+
declare const GalleryVariant: React.FC<GalleryVariantProps>;
|
|
67
|
+
export default GalleryVariant;
|
|
68
|
+
//# sourceMappingURL=GalleryVariant.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GalleryVariant.d.ts","sourceRoot":"","sources":["../../../../src/components/gallery/kit/GalleryVariant.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';
|
|
3
|
+
import * as THREE from 'three';
|
|
4
|
+
import { useFrame, useThree } from '@react-three/fiber';
|
|
5
|
+
import { withConfigDefaults } from '../../../utils/configAnimations.js';
|
|
6
|
+
import { useObjectReady } from '../../../hooks/useObjectReady.js';
|
|
7
|
+
import { useConfigDriver } from '../../../hooks/useConfigDriver.js';
|
|
8
|
+
import GalleryRuntime from '../../../galleryRuntime.js';
|
|
9
|
+
import { loadPictureArray, pictureTexture, placeholderPictures } from './pictures.js';
|
|
10
|
+
import { createFeeds } from './feeds.js';
|
|
11
|
+
const PLACEHOLDERS = 6;
|
|
12
|
+
const NAV_KEYS = ['autoplay', 'navigation', 'feeds'];
|
|
13
|
+
const GalleryVariant = ({ look, defaults, animatable, config, id, keyframes, mouseMove, onObjectReady, onObjectDispose }) => {
|
|
14
|
+
const rootRef = useRef(null);
|
|
15
|
+
useObjectReady(rootRef, config, onObjectReady, onObjectDispose);
|
|
16
|
+
const { gl, camera, size, events, scene } = useThree();
|
|
17
|
+
const cfg = useMemo(() => withConfigDefaults(defaults, config), [defaults, config]);
|
|
18
|
+
const STRUCTURAL = look.STRUCTURAL;
|
|
19
|
+
const ALLOWED = useMemo(() => new Set(animatable.map((a) => a.value)), [animatable]);
|
|
20
|
+
const uniforms = useMemo(() => look.createUniforms(), [look]);
|
|
21
|
+
// ---- the look: rebuilt on a structural change only (imageUrls only reloads the pictures)
|
|
22
|
+
const buildKey = STRUCTURAL.filter((k) => k !== 'imageUrls').map((k) => JSON.stringify(cfg[k])).join('|');
|
|
23
|
+
// the look never runs its own autoplay, never leans toward the cursor (a mouse-move binding on the object's
|
|
24
|
+
// rotation does that, configurably), and structural keys never go live
|
|
25
|
+
const toLook = (m) => {
|
|
26
|
+
const out = {};
|
|
27
|
+
for (const [k, v] of Object.entries(m))
|
|
28
|
+
if (!STRUCTURAL.includes(k) && !NAV_KEYS.includes(k))
|
|
29
|
+
out[k] = v;
|
|
30
|
+
out.autoplay = 0;
|
|
31
|
+
out.lean = 0;
|
|
32
|
+
return out;
|
|
33
|
+
};
|
|
34
|
+
const instance = useMemo(() => look.build(uniforms, { ...look.DEFAULTS, ...cfg, autoplay: 0, lean: 0 }), [look, uniforms, buildKey]); // eslint-disable-line react-hooks/exhaustive-deps
|
|
35
|
+
useEffect(() => () => instance.dispose(), [instance]);
|
|
36
|
+
const instRef = useRef(instance);
|
|
37
|
+
instRef.current = instance;
|
|
38
|
+
// ---- pictures
|
|
39
|
+
const urls = Array.isArray(cfg.imageUrls) ? cfg.imageUrls.filter((u) => typeof u === 'string' && u) : [];
|
|
40
|
+
const urlsKey = urls.join('\n');
|
|
41
|
+
const aspect = Number(cfg.aspect) || 1.5;
|
|
42
|
+
const [pictures, setPictures] = useState(null);
|
|
43
|
+
useEffect(() => {
|
|
44
|
+
let alive = true;
|
|
45
|
+
const sources = urls.length ? urls : placeholderPictures(PLACEHOLDERS, aspect);
|
|
46
|
+
loadPictureArray(sources, aspect).then((p) => { if (alive)
|
|
47
|
+
setPictures(p); }).catch(() => { });
|
|
48
|
+
return () => { alive = false; };
|
|
49
|
+
}, [urlsKey, aspect]); // eslint-disable-line react-hooks/exhaustive-deps
|
|
50
|
+
const nav = useRef({ index: 0, paused: false, autoT: 0, lastIndex: -1, dragging: false, autoplay: Number(cfg.autoplay) || 0 });
|
|
51
|
+
useEffect(() => {
|
|
52
|
+
if (!pictures)
|
|
53
|
+
return;
|
|
54
|
+
const keep = nav.current.lastIndex >= 0 ? nav.current.index : 0;
|
|
55
|
+
instance.controls.setTexture(pictureTexture(pictures), pictures.count);
|
|
56
|
+
instance.controls.jump(Math.min(keep, Math.max(0, pictures.count - 1)));
|
|
57
|
+
}, [instance, pictures]);
|
|
58
|
+
// ---- config: committed + live + keyframes + pointer bindings, through one push
|
|
59
|
+
useLayoutEffect(() => { instance.apply(toLook(cfg)); nav.current.autoplay = Number(cfg.autoplay) || 0; }, [instance, cfg]); // eslint-disable-line react-hooks/exhaustive-deps
|
|
60
|
+
const push = useCallback((merged) => { instRef.current.apply(toLook(merged)); if (merged.autoplay !== undefined)
|
|
61
|
+
nav.current.autoplay = Number(merged.autoplay) || 0; }, []); // eslint-disable-line react-hooks/exhaustive-deps
|
|
62
|
+
useConfigDriver({ rootRef, id, family: 'gallery', base: cfg, structural: STRUCTURAL, allowed: ALLOWED, keyframes, mouseMove, push });
|
|
63
|
+
// ---- navigation: one stable controls object over whichever look is current
|
|
64
|
+
const urlsRef = useRef(urls);
|
|
65
|
+
urlsRef.current = urls;
|
|
66
|
+
const controls = useMemo(() => {
|
|
67
|
+
const c = () => instRef.current.controls;
|
|
68
|
+
const wrapI = (i) => { const n = c().count; return n ? ((Math.round(i) % n) + n) % n : 0; };
|
|
69
|
+
return {
|
|
70
|
+
next() { nav.current.autoT = 0; c().next(); },
|
|
71
|
+
prev() { nav.current.autoT = 0; c().prev(); },
|
|
72
|
+
goTo(i) { nav.current.autoT = 0; c().goTo(wrapI(i)); },
|
|
73
|
+
jump(i) { nav.current.autoT = 0; c().jump(wrapI(i)); },
|
|
74
|
+
pause() { nav.current.paused = true; },
|
|
75
|
+
resume() { nav.current.paused = false; nav.current.autoT = 0; },
|
|
76
|
+
get index() { return c().index; },
|
|
77
|
+
get count() { return c().count; },
|
|
78
|
+
get busy() { return c().busy; },
|
|
79
|
+
get paused() { return nav.current.paused; },
|
|
80
|
+
get currentUrl() { return urlsRef.current[c().index]; },
|
|
81
|
+
};
|
|
82
|
+
}, []);
|
|
83
|
+
useEffect(() => {
|
|
84
|
+
const root = rootRef.current;
|
|
85
|
+
if (!id) {
|
|
86
|
+
if (root)
|
|
87
|
+
root.userData.gallery = controls;
|
|
88
|
+
return () => { if (root)
|
|
89
|
+
delete root.userData.gallery; };
|
|
90
|
+
}
|
|
91
|
+
return GalleryRuntime.register(id, controls, root);
|
|
92
|
+
}, [id, controls]);
|
|
93
|
+
// ---- feeds: the active picture on other objects too (config.feeds; ./feeds.ts). Only real pictures are sent
|
|
94
|
+
const feeds = useMemo(() => createFeeds(scene), [scene]);
|
|
95
|
+
useEffect(() => () => feeds.dispose(), [feeds]);
|
|
96
|
+
const feedIds = Array.isArray(cfg.feeds) ? cfg.feeds.filter((f) => typeof f === 'string' && f && f !== id) : [];
|
|
97
|
+
const feedRef = useRef({ ids: feedIds, t: 0 });
|
|
98
|
+
feedRef.current.ids = feedIds;
|
|
99
|
+
// ---- the cursor
|
|
100
|
+
const ptr = useRef({ inside: false, ndc: new THREE.Vector2(), down: null });
|
|
101
|
+
const ray = useMemo(() => new THREE.Raycaster(), []);
|
|
102
|
+
const tmp = useMemo(() => ({ inv: new THREE.Matrix4(), hit: new THREE.Vector3(), plane: new THREE.Plane(new THREE.Vector3(0, 0, 1), 0) }), []);
|
|
103
|
+
/** The cursor on the gallery's own z = 0 plane, in gallery units (null if the ray misses it). */
|
|
104
|
+
const localHit = useCallback((ndc) => {
|
|
105
|
+
const root = rootRef.current;
|
|
106
|
+
if (!root)
|
|
107
|
+
return null;
|
|
108
|
+
ray.setFromCamera(ndc, camera);
|
|
109
|
+
root.updateWorldMatrix(true, false);
|
|
110
|
+
tmp.inv.copy(root.matrixWorld).invert();
|
|
111
|
+
ray.ray.applyMatrix4(tmp.inv);
|
|
112
|
+
return ray.ray.intersectPlane(tmp.plane, tmp.hit) ? tmp.hit.clone() : null;
|
|
113
|
+
}, [camera, ray, tmp]);
|
|
114
|
+
useEffect(() => {
|
|
115
|
+
const el = (events.connected ?? gl.domElement);
|
|
116
|
+
const toNdc = (e) => { const r = el.getBoundingClientRect(); ptr.current.ndc.set(((e.clientX - r.left) / r.width) * 2 - 1, -((e.clientY - r.top) / r.height) * 2 + 1); };
|
|
117
|
+
const move = (e) => {
|
|
118
|
+
toNdc(e);
|
|
119
|
+
ptr.current.inside = true;
|
|
120
|
+
const d = ptr.current.down, c = instRef.current.controls;
|
|
121
|
+
if (!d || cfg.navigation !== 'drag' || !c.dragBegin)
|
|
122
|
+
return;
|
|
123
|
+
const h = localHit(ptr.current.ndc);
|
|
124
|
+
if (!d.drag && Math.hypot(e.clientX - d.cx, e.clientY - d.cy) > 6) {
|
|
125
|
+
d.drag = true;
|
|
126
|
+
nav.current.dragging = true;
|
|
127
|
+
c.dragBegin(d.x);
|
|
128
|
+
}
|
|
129
|
+
if (d.drag && h) {
|
|
130
|
+
c.dragMove?.(h.x);
|
|
131
|
+
d.t = performance.now();
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
const leave = () => { ptr.current.inside = false; };
|
|
135
|
+
const up = () => {
|
|
136
|
+
const d = ptr.current.down;
|
|
137
|
+
ptr.current.down = null;
|
|
138
|
+
if (!d)
|
|
139
|
+
return;
|
|
140
|
+
const c = instRef.current.controls;
|
|
141
|
+
if (d.drag) {
|
|
142
|
+
nav.current.dragging = false;
|
|
143
|
+
nav.current.autoT = 0;
|
|
144
|
+
c.dragEnd?.((performance.now() - d.t) / 1000 + 1 / 60);
|
|
145
|
+
}
|
|
146
|
+
else if (cfg.navigation === 'click' || cfg.navigation === 'drag') {
|
|
147
|
+
if (d.pick !== undefined) {
|
|
148
|
+
if (d.pick !== controls.index)
|
|
149
|
+
controls.goTo(d.pick);
|
|
150
|
+
} // a click on a picture brings it in
|
|
151
|
+
else if (!instRef.current.pickPicture)
|
|
152
|
+
(d.x >= 0 ? controls.next : controls.prev)();
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
el.addEventListener('pointermove', move, { passive: true });
|
|
156
|
+
el.addEventListener('pointerleave', leave, { passive: true });
|
|
157
|
+
window.addEventListener('pointerup', up, { passive: true });
|
|
158
|
+
return () => { el.removeEventListener('pointermove', move); el.removeEventListener('pointerleave', leave); window.removeEventListener('pointerup', up); };
|
|
159
|
+
}, [gl, events, cfg.navigation, controls, localHit]);
|
|
160
|
+
const onPointerDown = useCallback((e) => {
|
|
161
|
+
if (cfg.navigation !== 'click' && cfg.navigation !== 'drag')
|
|
162
|
+
return;
|
|
163
|
+
const root = rootRef.current;
|
|
164
|
+
if (!root || e.button !== 0)
|
|
165
|
+
return;
|
|
166
|
+
if (ptr.current.down?.ev === e.nativeEvent)
|
|
167
|
+
return; // R3F calls this once per hit: the nearest one counts
|
|
168
|
+
const p = root.worldToLocal(e.point.clone());
|
|
169
|
+
const pick = instRef.current.pickPicture?.({ object: e.object, instanceId: e.instanceId });
|
|
170
|
+
ptr.current.down = { cx: e.nativeEvent.clientX, cy: e.nativeEvent.clientY, x: p.x, drag: false, t: performance.now(), pick, ev: e.nativeEvent };
|
|
171
|
+
}, [cfg.navigation]);
|
|
172
|
+
// the picture under the cursor, for looks with a hover state
|
|
173
|
+
const hovered = useRef(-1), hoverEv = useRef(null);
|
|
174
|
+
const onPointerHover = useCallback((e) => {
|
|
175
|
+
const inst = instRef.current;
|
|
176
|
+
if (!inst.pickPicture || !inst.controls.hover || hoverEv.current === e.nativeEvent)
|
|
177
|
+
return; // the nearest hit only
|
|
178
|
+
hoverEv.current = e.nativeEvent;
|
|
179
|
+
const i = inst.pickPicture({ object: e.object, instanceId: e.instanceId }) ?? -1;
|
|
180
|
+
if (i !== hovered.current) {
|
|
181
|
+
hovered.current = i;
|
|
182
|
+
inst.controls.hover(i);
|
|
183
|
+
}
|
|
184
|
+
}, []);
|
|
185
|
+
const onPointerLeave = useCallback(() => {
|
|
186
|
+
if (hovered.current < 0)
|
|
187
|
+
return;
|
|
188
|
+
hovered.current = -1;
|
|
189
|
+
instRef.current.controls.hover?.(-1);
|
|
190
|
+
}, []);
|
|
191
|
+
useFrame((_, delta) => {
|
|
192
|
+
const dt = Math.min(delta, 0.1);
|
|
193
|
+
const inst = instRef.current;
|
|
194
|
+
let pointer = null;
|
|
195
|
+
if (ptr.current.inside) {
|
|
196
|
+
const h = localHit(ptr.current.ndc);
|
|
197
|
+
if (h)
|
|
198
|
+
pointer = { x: h.x, y: h.y, nx: ptr.current.ndc.x, ny: ptr.current.ndc.y };
|
|
199
|
+
}
|
|
200
|
+
const n = inst.controls.count, a = nav.current.autoplay;
|
|
201
|
+
if (a > 0 && n > 1 && !nav.current.paused && !nav.current.dragging && !ptr.current.down) {
|
|
202
|
+
nav.current.autoT += dt;
|
|
203
|
+
if (nav.current.autoT >= a)
|
|
204
|
+
controls.next();
|
|
205
|
+
}
|
|
206
|
+
else if (a <= 0)
|
|
207
|
+
nav.current.autoT = 0;
|
|
208
|
+
inst.update(dt, pointer, { dpr: gl.getPixelRatio(), h: size.height });
|
|
209
|
+
// every change of index is reported once
|
|
210
|
+
const i = inst.controls.index;
|
|
211
|
+
nav.current.index = i;
|
|
212
|
+
if (i !== nav.current.lastIndex) {
|
|
213
|
+
const first = nav.current.lastIndex < 0;
|
|
214
|
+
nav.current.lastIndex = i;
|
|
215
|
+
nav.current.autoT = 0;
|
|
216
|
+
if (!first && id)
|
|
217
|
+
GalleryRuntime.emitChange(id);
|
|
218
|
+
feedRef.current.t = 1; // sync the feeds now
|
|
219
|
+
}
|
|
220
|
+
const fr = feedRef.current;
|
|
221
|
+
fr.t += dt;
|
|
222
|
+
if (fr.t >= 0.25) {
|
|
223
|
+
fr.t = 0;
|
|
224
|
+
feeds.sync(fr.ids, pictures && urlsRef.current.length ? urlsRef.current[i] : null);
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
|
+
if (!cfg.enabled)
|
|
228
|
+
return null;
|
|
229
|
+
return (_jsx("group", { ref: rootRef, onPointerDown: onPointerDown, onPointerMove: onPointerHover, onPointerOut: onPointerLeave, children: _jsx("primitive", { object: instance.object }) }));
|
|
230
|
+
};
|
|
231
|
+
export default GalleryVariant;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as THREE from 'three';
|
|
2
|
+
export declare function createFeeds(scene: THREE.Object3D): {
|
|
3
|
+
/** Bring every target in line: `ids` fed with `url` (null = no picture: release them all). */
|
|
4
|
+
sync(ids: readonly string[], url: string | null | undefined): void;
|
|
5
|
+
dispose(): void;
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=feeds.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feeds.d.ts","sourceRoot":"","sources":["../../../../src/components/gallery/kit/feeds.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AA4B/B,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ;IAwBzC,8FAA8F;cACpF,SAAS,MAAM,EAAE,OAAO,MAAM,GAAG,IAAI,GAAG,SAAS;;EAOlE"}
|