@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.
Files changed (315) hide show
  1. package/dist/animationsV2/ClipsRuntime.d.ts +30 -0
  2. package/dist/animationsV2/ClipsRuntime.d.ts.map +1 -1
  3. package/dist/animationsV2/ClipsRuntime.js +185 -14
  4. package/dist/animationsV2/clipUtils.d.ts +15 -0
  5. package/dist/animationsV2/clipUtils.d.ts.map +1 -1
  6. package/dist/animationsV2/clipUtils.js +39 -2
  7. package/dist/animationsV2/normalize.d.ts.map +1 -1
  8. package/dist/animationsV2/normalize.js +4 -0
  9. package/dist/animationsV2/types.d.ts +12 -0
  10. package/dist/animationsV2/types.d.ts.map +1 -1
  11. package/dist/api/sceneHandle.d.ts +40 -3
  12. package/dist/api/sceneHandle.d.ts.map +1 -1
  13. package/dist/api/sceneHandle.js +40 -0
  14. package/dist/components/AnimatedObject.d.ts.map +1 -1
  15. package/dist/components/AnimatedObject.js +6 -2
  16. package/dist/components/EnabledContext.d.ts +12 -0
  17. package/dist/components/EnabledContext.d.ts.map +1 -0
  18. package/dist/components/EnabledContext.js +12 -0
  19. package/dist/components/GalleryObject.d.ts +13 -0
  20. package/dist/components/GalleryObject.d.ts.map +1 -0
  21. package/dist/components/GalleryObject.js +46 -0
  22. package/dist/components/ImageObject.d.ts +9 -0
  23. package/dist/components/ImageObject.d.ts.map +1 -0
  24. package/dist/components/ImageObject.js +26 -0
  25. package/dist/components/ObjectNode.d.ts.map +1 -1
  26. package/dist/components/ObjectNode.js +17 -6
  27. package/dist/components/ObjectsRenderer.d.ts.map +1 -1
  28. package/dist/components/ObjectsRenderer.js +9 -0
  29. package/dist/components/ProjectLoader.d.ts +2 -0
  30. package/dist/components/ProjectLoader.d.ts.map +1 -1
  31. package/dist/components/ProjectLoader.js +2 -2
  32. package/dist/components/SceneBuilder.d.ts +10 -0
  33. package/dist/components/SceneBuilder.d.ts.map +1 -1
  34. package/dist/components/SceneBuilder.js +3 -2
  35. package/dist/components/gallery/BasicCarouselGallery.d.ts +18 -0
  36. package/dist/components/gallery/BasicCarouselGallery.d.ts.map +1 -0
  37. package/dist/components/gallery/BasicCarouselGallery.js +9 -0
  38. package/dist/components/gallery/ContourLinesGallery.d.ts +18 -0
  39. package/dist/components/gallery/ContourLinesGallery.d.ts.map +1 -0
  40. package/dist/components/gallery/ContourLinesGallery.js +9 -0
  41. package/dist/components/gallery/DepthLayersGallery.d.ts +18 -0
  42. package/dist/components/gallery/DepthLayersGallery.d.ts.map +1 -0
  43. package/dist/components/gallery/DepthLayersGallery.js +9 -0
  44. package/dist/components/gallery/EngravingGallery.d.ts +18 -0
  45. package/dist/components/gallery/EngravingGallery.d.ts.map +1 -0
  46. package/dist/components/gallery/EngravingGallery.js +9 -0
  47. package/dist/components/gallery/FlowLinesGallery.d.ts +18 -0
  48. package/dist/components/gallery/FlowLinesGallery.d.ts.map +1 -0
  49. package/dist/components/gallery/FlowLinesGallery.js +9 -0
  50. package/dist/components/gallery/FoldGallery.d.ts +18 -0
  51. package/dist/components/gallery/FoldGallery.d.ts.map +1 -0
  52. package/dist/components/gallery/FoldGallery.js +9 -0
  53. package/dist/components/gallery/GlassPanesGallery.d.ts +18 -0
  54. package/dist/components/gallery/GlassPanesGallery.d.ts.map +1 -0
  55. package/dist/components/gallery/GlassPanesGallery.js +9 -0
  56. package/dist/components/gallery/HaloGallery.d.ts +18 -0
  57. package/dist/components/gallery/HaloGallery.d.ts.map +1 -0
  58. package/dist/components/gallery/HaloGallery.js +9 -0
  59. package/dist/components/gallery/LightThreadsGallery.d.ts +18 -0
  60. package/dist/components/gallery/LightThreadsGallery.d.ts.map +1 -0
  61. package/dist/components/gallery/LightThreadsGallery.js +9 -0
  62. package/dist/components/gallery/LoomGallery.d.ts +18 -0
  63. package/dist/components/gallery/LoomGallery.d.ts.map +1 -0
  64. package/dist/components/gallery/LoomGallery.js +9 -0
  65. package/dist/components/gallery/PaperLanternsGallery.d.ts +18 -0
  66. package/dist/components/gallery/PaperLanternsGallery.d.ts.map +1 -0
  67. package/dist/components/gallery/PaperLanternsGallery.js +9 -0
  68. package/dist/components/gallery/ParticleShiftGallery.d.ts +18 -0
  69. package/dist/components/gallery/ParticleShiftGallery.d.ts.map +1 -0
  70. package/dist/components/gallery/ParticleShiftGallery.js +9 -0
  71. package/dist/components/gallery/PinscreenGallery.d.ts +18 -0
  72. package/dist/components/gallery/PinscreenGallery.d.ts.map +1 -0
  73. package/dist/components/gallery/PinscreenGallery.js +9 -0
  74. package/dist/components/gallery/PopUpGallery.d.ts +18 -0
  75. package/dist/components/gallery/PopUpGallery.d.ts.map +1 -0
  76. package/dist/components/gallery/PopUpGallery.js +9 -0
  77. package/dist/components/gallery/PrismSplitGallery.d.ts +18 -0
  78. package/dist/components/gallery/PrismSplitGallery.d.ts.map +1 -0
  79. package/dist/components/gallery/PrismSplitGallery.js +9 -0
  80. package/dist/components/gallery/RidgelinesGallery.d.ts +18 -0
  81. package/dist/components/gallery/RidgelinesGallery.d.ts.map +1 -0
  82. package/dist/components/gallery/RidgelinesGallery.js +9 -0
  83. package/dist/components/gallery/ShadowBoxGallery.d.ts +18 -0
  84. package/dist/components/gallery/ShadowBoxGallery.d.ts.map +1 -0
  85. package/dist/components/gallery/ShadowBoxGallery.js +9 -0
  86. package/dist/components/gallery/SilkGallery.d.ts +18 -0
  87. package/dist/components/gallery/SilkGallery.d.ts.map +1 -0
  88. package/dist/components/gallery/SilkGallery.js +9 -0
  89. package/dist/components/gallery/SlatsGallery.d.ts +18 -0
  90. package/dist/components/gallery/SlatsGallery.d.ts.map +1 -0
  91. package/dist/components/gallery/SlatsGallery.js +9 -0
  92. package/dist/components/gallery/StrataGallery.d.ts +18 -0
  93. package/dist/components/gallery/StrataGallery.d.ts.map +1 -0
  94. package/dist/components/gallery/StrataGallery.js +9 -0
  95. package/dist/components/gallery/TerracesGallery.d.ts +18 -0
  96. package/dist/components/gallery/TerracesGallery.d.ts.map +1 -0
  97. package/dist/components/gallery/TerracesGallery.js +9 -0
  98. package/dist/components/gallery/WireReliefGallery.d.ts +18 -0
  99. package/dist/components/gallery/WireReliefGallery.d.ts.map +1 -0
  100. package/dist/components/gallery/WireReliefGallery.js +9 -0
  101. package/dist/components/gallery/index.d.ts +46 -0
  102. package/dist/components/gallery/index.d.ts.map +1 -0
  103. package/dist/components/gallery/index.js +22 -0
  104. package/dist/components/gallery/kit/GalleryVariant.d.ts +68 -0
  105. package/dist/components/gallery/kit/GalleryVariant.d.ts.map +1 -0
  106. package/dist/components/gallery/kit/GalleryVariant.js +231 -0
  107. package/dist/components/gallery/kit/feeds.d.ts +7 -0
  108. package/dist/components/gallery/kit/feeds.d.ts.map +1 -0
  109. package/dist/components/gallery/kit/feeds.js +83 -0
  110. package/dist/components/gallery/kit/galleryKit.d.ts +118 -0
  111. package/dist/components/gallery/kit/galleryKit.d.ts.map +1 -0
  112. package/dist/components/gallery/kit/galleryKit.js +298 -0
  113. package/dist/components/gallery/kit/lookBase.d.ts +157 -0
  114. package/dist/components/gallery/kit/lookBase.d.ts.map +1 -0
  115. package/dist/components/gallery/kit/lookBase.js +211 -0
  116. package/dist/components/gallery/kit/pictures.d.ts +14 -0
  117. package/dist/components/gallery/kit/pictures.d.ts.map +1 -0
  118. package/dist/components/gallery/kit/pictures.js +81 -0
  119. package/dist/components/gallery/looks/basicCarousel.d.ts +177 -0
  120. package/dist/components/gallery/looks/basicCarousel.d.ts.map +1 -0
  121. package/dist/components/gallery/looks/basicCarousel.js +315 -0
  122. package/dist/components/gallery/looks/contourLines.d.ts +153 -0
  123. package/dist/components/gallery/looks/contourLines.d.ts.map +1 -0
  124. package/dist/components/gallery/looks/contourLines.js +91 -0
  125. package/dist/components/gallery/looks/depthLayers.d.ts +155 -0
  126. package/dist/components/gallery/looks/depthLayers.d.ts.map +1 -0
  127. package/dist/components/gallery/looks/depthLayers.js +87 -0
  128. package/dist/components/gallery/looks/engraving.d.ts +162 -0
  129. package/dist/components/gallery/looks/engraving.d.ts.map +1 -0
  130. package/dist/components/gallery/looks/engraving.js +96 -0
  131. package/dist/components/gallery/looks/flowLines.d.ts +180 -0
  132. package/dist/components/gallery/looks/flowLines.d.ts.map +1 -0
  133. package/dist/components/gallery/looks/flowLines.js +113 -0
  134. package/dist/components/gallery/looks/fold.d.ts +209 -0
  135. package/dist/components/gallery/looks/fold.d.ts.map +1 -0
  136. package/dist/components/gallery/looks/fold.js +155 -0
  137. package/dist/components/gallery/looks/glassPanes.d.ts +133 -0
  138. package/dist/components/gallery/looks/glassPanes.d.ts.map +1 -0
  139. package/dist/components/gallery/looks/glassPanes.js +208 -0
  140. package/dist/components/gallery/looks/halo.d.ts +100 -0
  141. package/dist/components/gallery/looks/halo.d.ts.map +1 -0
  142. package/dist/components/gallery/looks/halo.js +119 -0
  143. package/dist/components/gallery/looks/lightThreads.d.ts +199 -0
  144. package/dist/components/gallery/looks/lightThreads.d.ts.map +1 -0
  145. package/dist/components/gallery/looks/lightThreads.js +246 -0
  146. package/dist/components/gallery/looks/loom.d.ts +238 -0
  147. package/dist/components/gallery/looks/loom.d.ts.map +1 -0
  148. package/dist/components/gallery/looks/loom.js +256 -0
  149. package/dist/components/gallery/looks/paperLanterns.d.ts +181 -0
  150. package/dist/components/gallery/looks/paperLanterns.d.ts.map +1 -0
  151. package/dist/components/gallery/looks/paperLanterns.js +399 -0
  152. package/dist/components/gallery/looks/particleShift.d.ts +193 -0
  153. package/dist/components/gallery/looks/particleShift.d.ts.map +1 -0
  154. package/dist/components/gallery/looks/particleShift.js +282 -0
  155. package/dist/components/gallery/looks/pinscreen.d.ts +175 -0
  156. package/dist/components/gallery/looks/pinscreen.d.ts.map +1 -0
  157. package/dist/components/gallery/looks/pinscreen.js +96 -0
  158. package/dist/components/gallery/looks/popUp.d.ts +206 -0
  159. package/dist/components/gallery/looks/popUp.d.ts.map +1 -0
  160. package/dist/components/gallery/looks/popUp.js +132 -0
  161. package/dist/components/gallery/looks/prismSplit.d.ts +151 -0
  162. package/dist/components/gallery/looks/prismSplit.d.ts.map +1 -0
  163. package/dist/components/gallery/looks/prismSplit.js +84 -0
  164. package/dist/components/gallery/looks/ridgelines.d.ts +179 -0
  165. package/dist/components/gallery/looks/ridgelines.d.ts.map +1 -0
  166. package/dist/components/gallery/looks/ridgelines.js +111 -0
  167. package/dist/components/gallery/looks/shadowBox.d.ts +152 -0
  168. package/dist/components/gallery/looks/shadowBox.d.ts.map +1 -0
  169. package/dist/components/gallery/looks/shadowBox.js +82 -0
  170. package/dist/components/gallery/looks/silk.d.ts +140 -0
  171. package/dist/components/gallery/looks/silk.d.ts.map +1 -0
  172. package/dist/components/gallery/looks/silk.js +346 -0
  173. package/dist/components/gallery/looks/slats.d.ts +176 -0
  174. package/dist/components/gallery/looks/slats.d.ts.map +1 -0
  175. package/dist/components/gallery/looks/slats.js +93 -0
  176. package/dist/components/gallery/looks/strata.d.ts +172 -0
  177. package/dist/components/gallery/looks/strata.d.ts.map +1 -0
  178. package/dist/components/gallery/looks/strata.js +88 -0
  179. package/dist/components/gallery/looks/terraces.d.ts +168 -0
  180. package/dist/components/gallery/looks/terraces.d.ts.map +1 -0
  181. package/dist/components/gallery/looks/terraces.js +91 -0
  182. package/dist/components/gallery/looks/wireRelief.d.ts +153 -0
  183. package/dist/components/gallery/looks/wireRelief.d.ts.map +1 -0
  184. package/dist/components/gallery/looks/wireRelief.js +128 -0
  185. package/dist/components/image/ContourImage.d.ts +7 -0
  186. package/dist/components/image/ContourImage.d.ts.map +1 -0
  187. package/dist/components/image/ContourImage.js +6 -0
  188. package/dist/components/image/EngravingImage.d.ts +7 -0
  189. package/dist/components/image/EngravingImage.d.ts.map +1 -0
  190. package/dist/components/image/EngravingImage.js +6 -0
  191. package/dist/components/image/FrostImage.d.ts +7 -0
  192. package/dist/components/image/FrostImage.d.ts.map +1 -0
  193. package/dist/components/image/FrostImage.js +6 -0
  194. package/dist/components/image/LenticularImage.d.ts +7 -0
  195. package/dist/components/image/LenticularImage.d.ts.map +1 -0
  196. package/dist/components/image/LenticularImage.js +6 -0
  197. package/dist/components/image/PinscreenImage.d.ts +7 -0
  198. package/dist/components/image/PinscreenImage.d.ts.map +1 -0
  199. package/dist/components/image/PinscreenImage.js +6 -0
  200. package/dist/components/image/PrismImage.d.ts +7 -0
  201. package/dist/components/image/PrismImage.d.ts.map +1 -0
  202. package/dist/components/image/PrismImage.js +6 -0
  203. package/dist/components/image/ProjectorImage.d.ts +7 -0
  204. package/dist/components/image/ProjectorImage.d.ts.map +1 -0
  205. package/dist/components/image/ProjectorImage.js +6 -0
  206. package/dist/components/image/ReliefImage.d.ts +7 -0
  207. package/dist/components/image/ReliefImage.d.ts.map +1 -0
  208. package/dist/components/image/ReliefImage.js +6 -0
  209. package/dist/components/image/RollImage.d.ts +7 -0
  210. package/dist/components/image/RollImage.d.ts.map +1 -0
  211. package/dist/components/image/RollImage.js +6 -0
  212. package/dist/components/image/ShardsImage.d.ts +126 -0
  213. package/dist/components/image/ShardsImage.d.ts.map +1 -0
  214. package/dist/components/image/ShardsImage.js +470 -0
  215. package/dist/components/image/core/contour.d.ts +126 -0
  216. package/dist/components/image/core/contour.d.ts.map +1 -0
  217. package/dist/components/image/core/contour.js +123 -0
  218. package/dist/components/image/core/engraving.d.ts +135 -0
  219. package/dist/components/image/core/engraving.d.ts.map +1 -0
  220. package/dist/components/image/core/engraving.js +163 -0
  221. package/dist/components/image/core/frost.d.ts +126 -0
  222. package/dist/components/image/core/frost.d.ts.map +1 -0
  223. package/dist/components/image/core/frost.js +156 -0
  224. package/dist/components/image/core/imageCore.d.ts +110 -0
  225. package/dist/components/image/core/imageCore.d.ts.map +1 -0
  226. package/dist/components/image/core/imageCore.js +269 -0
  227. package/dist/components/image/core/lenticular.d.ts +129 -0
  228. package/dist/components/image/core/lenticular.d.ts.map +1 -0
  229. package/dist/components/image/core/lenticular.js +132 -0
  230. package/dist/components/image/core/pinscreen.d.ts +126 -0
  231. package/dist/components/image/core/pinscreen.d.ts.map +1 -0
  232. package/dist/components/image/core/pinscreen.js +147 -0
  233. package/dist/components/image/core/prism.d.ts +120 -0
  234. package/dist/components/image/core/prism.d.ts.map +1 -0
  235. package/dist/components/image/core/prism.js +164 -0
  236. package/dist/components/image/core/projector.d.ts +135 -0
  237. package/dist/components/image/core/projector.d.ts.map +1 -0
  238. package/dist/components/image/core/projector.js +225 -0
  239. package/dist/components/image/core/relief.d.ts +111 -0
  240. package/dist/components/image/core/relief.d.ts.map +1 -0
  241. package/dist/components/image/core/relief.js +94 -0
  242. package/dist/components/image/core/roll.d.ts +114 -0
  243. package/dist/components/image/core/roll.d.ts.map +1 -0
  244. package/dist/components/image/core/roll.js +116 -0
  245. package/dist/components/image/imageVariant.d.ts +46 -0
  246. package/dist/components/image/imageVariant.d.ts.map +1 -0
  247. package/dist/components/image/imageVariant.js +128 -0
  248. package/dist/components/image/index.d.ts +22 -0
  249. package/dist/components/image/index.d.ts.map +1 -0
  250. package/dist/components/image/index.js +10 -0
  251. package/dist/components/image/pictureCycle.d.ts +15 -0
  252. package/dist/components/image/pictureCycle.d.ts.map +1 -0
  253. package/dist/components/image/pictureCycle.js +82 -0
  254. package/dist/components/index.d.ts +4 -0
  255. package/dist/components/index.d.ts.map +1 -1
  256. package/dist/components/index.js +4 -0
  257. package/dist/components/volumetricClouds/VolumetricCloudsPass.d.ts +9 -7
  258. package/dist/components/volumetricClouds/VolumetricCloudsPass.d.ts.map +1 -1
  259. package/dist/components/volumetricClouds/VolumetricCloudsPass.js +39 -27
  260. package/dist/constants.d.ts +1 -1
  261. package/dist/constants.d.ts.map +1 -1
  262. package/dist/constants.js +18 -5
  263. package/dist/galleryRuntime.d.ts +57 -0
  264. package/dist/galleryRuntime.d.ts.map +1 -0
  265. package/dist/galleryRuntime.js +105 -0
  266. package/dist/hooks/useConfigLive.d.ts +1 -1
  267. package/dist/hooks/useConfigLive.d.ts.map +1 -1
  268. package/dist/index.d.ts +4 -1
  269. package/dist/index.d.ts.map +1 -1
  270. package/dist/index.js +4 -0
  271. package/dist/keyPad/KeyPadControls.d.ts +16 -0
  272. package/dist/keyPad/KeyPadControls.d.ts.map +1 -0
  273. package/dist/keyPad/KeyPadControls.js +176 -0
  274. package/dist/keyPad/index.d.ts +16 -0
  275. package/dist/keyPad/index.d.ts.map +1 -0
  276. package/dist/keyPad/index.js +8 -0
  277. package/dist/keyPad/keyBindings.d.ts +43 -0
  278. package/dist/keyPad/keyBindings.d.ts.map +1 -0
  279. package/dist/keyPad/keyBindings.js +92 -0
  280. package/dist/keyPad/keyPadAnimation.d.ts +28 -0
  281. package/dist/keyPad/keyPadAnimation.d.ts.map +1 -0
  282. package/dist/keyPad/keyPadAnimation.js +131 -0
  283. package/dist/keyPad/keyPadMotion.d.ts +68 -0
  284. package/dist/keyPad/keyPadMotion.d.ts.map +1 -0
  285. package/dist/keyPad/keyPadMotion.js +283 -0
  286. package/dist/keyPad/keyPadStore.d.ts +25 -0
  287. package/dist/keyPad/keyPadStore.d.ts.map +1 -0
  288. package/dist/keyPad/keyPadStore.js +63 -0
  289. package/dist/keyPad/types.d.ts +23 -0
  290. package/dist/keyPad/types.d.ts.map +1 -0
  291. package/dist/keyPad/types.js +9 -0
  292. package/dist/operations/catalogue/motionTrail.d.ts.map +1 -1
  293. package/dist/operations/catalogue/motionTrail.js +8 -1
  294. package/dist/operations/catalogue/visibility.d.ts.map +1 -1
  295. package/dist/operations/catalogue/visibility.js +23 -1
  296. package/dist/shaders/clouds/CloudResolveMaterial.d.ts +2 -1
  297. package/dist/shaders/clouds/CloudResolveMaterial.d.ts.map +1 -1
  298. package/dist/shaders/clouds/CloudResolveMaterial.js +37 -12
  299. package/dist/shaders/clouds/CloudVolumeMaterial.d.ts +4 -0
  300. package/dist/shaders/clouds/CloudVolumeMaterial.d.ts.map +1 -1
  301. package/dist/shaders/clouds/CloudVolumeMaterial.js +15 -3
  302. package/dist/triggers/kinds/gallery.d.ts +2 -0
  303. package/dist/triggers/kinds/gallery.d.ts.map +1 -0
  304. package/dist/triggers/kinds/gallery.js +39 -0
  305. package/dist/triggers/kinds/index.d.ts +1 -0
  306. package/dist/triggers/kinds/index.d.ts.map +1 -1
  307. package/dist/triggers/kinds/index.js +1 -0
  308. package/dist/ui/UiAnchorUpdater.d.ts.map +1 -1
  309. package/dist/ui/UiAnchorUpdater.js +2 -1
  310. package/dist/utils/cursorPicking.d.ts.map +1 -1
  311. package/dist/utils/cursorPicking.js +2 -1
  312. package/dist/utils/shownInScene.d.ts +13 -0
  313. package/dist/utils/shownInScene.d.ts.map +1 -0
  314. package/dist/utils/shownInScene.js +16 -0
  315. package/package.json +2 -2
@@ -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"}
@@ -0,0 +1,83 @@
1
+ import { texturesManager } from '@3driseai/3drise-core';
2
+ function findIn(scene, id) {
3
+ let found = null;
4
+ scene.traverse((o) => { if (!found && o.userData?.id === id)
5
+ found = o; });
6
+ return found;
7
+ }
8
+ function attached(o, scene) {
9
+ let p = o;
10
+ while (p) {
11
+ if (p === scene)
12
+ return true;
13
+ p = p.parent;
14
+ }
15
+ return false;
16
+ }
17
+ /** The target's own door: an image object's feedImage, else the first mesh material with a map slot. */
18
+ function doorOf(obj) {
19
+ let feed;
20
+ let mesh;
21
+ obj.traverse((c) => {
22
+ if (!feed && typeof c.userData?.feedImage === 'function')
23
+ feed = c.userData.feedImage;
24
+ const m = c.material;
25
+ if (!mesh && m && !Array.isArray(m) && 'map' in m)
26
+ mesh = c;
27
+ });
28
+ return feed ? { feed } : mesh ? { mesh } : null;
29
+ }
30
+ const loadTexture = (url) => texturesManager.loadTexture(url.split('/').pop()?.split('.')[0] || `feed-${Date.now()}`, url, 'images');
31
+ export function createFeeds(scene) {
32
+ const fed = new Map();
33
+ const send = (id, url) => {
34
+ let f = fed.get(id);
35
+ if (f && !attached(f.obj, scene)) {
36
+ fed.delete(id);
37
+ f = undefined;
38
+ } // the target remounted: start over
39
+ if (f && f.url === url)
40
+ return;
41
+ const obj = f?.obj ?? findIn(scene, id);
42
+ if (!obj)
43
+ return;
44
+ const door = doorOf(obj);
45
+ if (!door)
46
+ return;
47
+ if (door.feed) {
48
+ door.feed(url);
49
+ if (!f)
50
+ fed.set(id, { obj, url, release: () => door.feed(null) });
51
+ else
52
+ f.url = url;
53
+ return;
54
+ }
55
+ const mesh = door.mesh, mat = mesh.material;
56
+ if (!f) {
57
+ const own = mat.map;
58
+ fed.set(id, { obj, url, release: () => { mat.map = own; mat.needsUpdate = true; } });
59
+ }
60
+ else
61
+ f.url = url;
62
+ loadTexture(url).then((t) => { if (fed.get(id)?.url === url) {
63
+ mat.map = t;
64
+ mat.needsUpdate = true;
65
+ } }).catch(() => { });
66
+ };
67
+ return {
68
+ /** Bring every target in line: `ids` fed with `url` (null = no picture: release them all). */
69
+ sync(ids, url) {
70
+ const want = new Set(url ? ids : []);
71
+ for (const [id, f] of fed)
72
+ if (!want.has(id)) {
73
+ f.release();
74
+ fed.delete(id);
75
+ }
76
+ if (url)
77
+ for (const id of want)
78
+ send(id, url);
79
+ },
80
+ dispose() { for (const f of fed.values())
81
+ f.release(); fed.clear(); },
82
+ };
83
+ }