@mantine-bites/lightbox 1.0.0-beta.1 → 1.0.0-beta.10

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 (349) hide show
  1. package/README.md +3 -4
  2. package/dist/cjs/Lightbox.cjs +38 -242
  3. package/dist/cjs/Lightbox.cjs.map +1 -1
  4. package/dist/cjs/Lightbox.context-value.cjs +47 -0
  5. package/dist/cjs/Lightbox.context-value.cjs.map +1 -0
  6. package/dist/cjs/Lightbox.context.cjs.map +1 -1
  7. package/dist/cjs/Lightbox.defaults.cjs +29 -0
  8. package/dist/cjs/Lightbox.defaults.cjs.map +1 -0
  9. package/dist/cjs/Lightbox.module.css.cjs +1 -1
  10. package/dist/cjs/LightboxSlide.cjs +72 -5
  11. package/dist/cjs/LightboxSlide.cjs.map +1 -1
  12. package/dist/cjs/LightboxSlide.context.cjs +12 -0
  13. package/dist/cjs/LightboxSlide.context.cjs.map +1 -0
  14. package/dist/cjs/components/EnterFullscreen.cjs +30 -0
  15. package/dist/cjs/components/EnterFullscreen.cjs.map +1 -0
  16. package/dist/cjs/components/ExitFullscreen.cjs +30 -0
  17. package/dist/cjs/components/ExitFullscreen.cjs.map +1 -0
  18. package/dist/cjs/components/LightboxAutoplayButton.cjs +43 -0
  19. package/dist/cjs/components/LightboxAutoplayButton.cjs.map +1 -0
  20. package/dist/cjs/components/LightboxCarousel.cjs +29 -0
  21. package/dist/cjs/components/LightboxCarousel.cjs.map +1 -0
  22. package/dist/cjs/components/LightboxCarouselSlide.context.cjs +12 -0
  23. package/dist/cjs/components/LightboxCarouselSlide.context.cjs.map +1 -0
  24. package/dist/cjs/components/LightboxCloseButton.cjs +33 -0
  25. package/dist/cjs/components/LightboxCloseButton.cjs.map +1 -0
  26. package/dist/cjs/components/LightboxContent.cjs +38 -0
  27. package/dist/cjs/components/LightboxContent.cjs.map +1 -0
  28. package/dist/cjs/components/LightboxControls.cjs +68 -0
  29. package/dist/cjs/components/LightboxControls.cjs.map +1 -0
  30. package/dist/cjs/components/LightboxCounter.cjs +34 -0
  31. package/dist/cjs/components/LightboxCounter.cjs.map +1 -0
  32. package/dist/cjs/components/LightboxFullscreenButton.cjs +41 -0
  33. package/dist/cjs/components/LightboxFullscreenButton.cjs.map +1 -0
  34. package/dist/cjs/components/LightboxOverlay.cjs +40 -0
  35. package/dist/cjs/components/LightboxOverlay.cjs.map +1 -0
  36. package/dist/cjs/components/LightboxPreset.cjs +32 -0
  37. package/dist/cjs/components/LightboxPreset.cjs.map +1 -0
  38. package/dist/cjs/components/LightboxRoot.cjs +260 -0
  39. package/dist/cjs/components/LightboxRoot.cjs.map +1 -0
  40. package/dist/cjs/components/LightboxSlide.cjs +154 -0
  41. package/dist/cjs/components/LightboxSlide.cjs.map +1 -0
  42. package/dist/cjs/components/LightboxSlide.context.cjs +12 -0
  43. package/dist/cjs/components/LightboxSlide.context.cjs.map +1 -0
  44. package/dist/cjs/components/LightboxSlides.cjs +108 -0
  45. package/dist/cjs/components/LightboxSlides.cjs.map +1 -0
  46. package/dist/cjs/components/LightboxThumbnail.cjs +40 -0
  47. package/dist/cjs/components/LightboxThumbnail.cjs.map +1 -0
  48. package/dist/cjs/components/LightboxThumbnail.context.cjs +12 -0
  49. package/dist/cjs/components/LightboxThumbnail.context.cjs.map +1 -0
  50. package/dist/cjs/components/LightboxThumbnails.cjs +121 -0
  51. package/dist/cjs/components/LightboxThumbnails.cjs.map +1 -0
  52. package/dist/cjs/components/LightboxToolbar.cjs +94 -0
  53. package/dist/cjs/components/LightboxToolbar.cjs.map +1 -0
  54. package/dist/cjs/components/LightboxZoomButton.cjs +39 -0
  55. package/dist/cjs/components/LightboxZoomButton.cjs.map +1 -0
  56. package/dist/cjs/components/Pause.cjs +28 -0
  57. package/dist/cjs/components/Pause.cjs.map +1 -0
  58. package/dist/cjs/components/Play.cjs +22 -0
  59. package/dist/cjs/components/Play.cjs.map +1 -0
  60. package/dist/cjs/components/QuestionMark.cjs +28 -0
  61. package/dist/cjs/components/QuestionMark.cjs.map +1 -0
  62. package/dist/cjs/components/ZoomIn.cjs +30 -0
  63. package/dist/cjs/components/ZoomIn.cjs.map +1 -0
  64. package/dist/cjs/components/ZoomOut.cjs +29 -0
  65. package/dist/cjs/components/ZoomOut.cjs.map +1 -0
  66. package/dist/cjs/components/icons/EnterFullscreen.cjs +30 -0
  67. package/dist/cjs/components/icons/EnterFullscreen.cjs.map +1 -0
  68. package/dist/cjs/components/icons/ExitFullscreen.cjs +30 -0
  69. package/dist/cjs/components/icons/ExitFullscreen.cjs.map +1 -0
  70. package/dist/cjs/components/icons/Pause.cjs +28 -0
  71. package/dist/cjs/components/icons/Pause.cjs.map +1 -0
  72. package/dist/cjs/components/icons/Play.cjs +22 -0
  73. package/dist/cjs/components/icons/Play.cjs.map +1 -0
  74. package/dist/cjs/components/icons/ZoomIn.cjs +30 -0
  75. package/dist/cjs/components/icons/ZoomIn.cjs.map +1 -0
  76. package/dist/cjs/components/icons/ZoomOut.cjs +29 -0
  77. package/dist/cjs/components/icons/ZoomOut.cjs.map +1 -0
  78. package/dist/cjs/context/LightboxContext.cjs +12 -0
  79. package/dist/cjs/context/LightboxContext.cjs.map +1 -0
  80. package/dist/cjs/context/LightboxSlideContext.cjs +12 -0
  81. package/dist/cjs/context/LightboxSlideContext.cjs.map +1 -0
  82. package/dist/cjs/context/LightboxThumbnailContext.cjs +12 -0
  83. package/dist/cjs/context/LightboxThumbnailContext.cjs.map +1 -0
  84. package/dist/cjs/hooks/useAutoPlay.cjs +77 -0
  85. package/dist/cjs/hooks/useAutoPlay.cjs.map +1 -0
  86. package/dist/cjs/hooks/useCarouselOptions.cjs +30 -0
  87. package/dist/cjs/hooks/useCarouselOptions.cjs.map +1 -0
  88. package/dist/cjs/hooks/useFullscreen.cjs +39 -0
  89. package/dist/cjs/hooks/useFullscreen.cjs.map +1 -0
  90. package/dist/cjs/hooks/useKeyboardNavigation.cjs +29 -0
  91. package/dist/cjs/hooks/useKeyboardNavigation.cjs.map +1 -0
  92. package/dist/cjs/hooks/useLightbox.cjs +116 -0
  93. package/dist/cjs/hooks/useLightbox.cjs.map +1 -0
  94. package/dist/cjs/hooks/useLightboxRootOptions.cjs +20 -0
  95. package/dist/cjs/hooks/useLightboxRootOptions.cjs.map +1 -0
  96. package/dist/cjs/hooks/useSlideInteractions.cjs +94 -0
  97. package/dist/cjs/hooks/useSlideInteractions.cjs.map +1 -0
  98. package/dist/cjs/hooks/useThumbnails.cjs +61 -0
  99. package/dist/cjs/hooks/useThumbnails.cjs.map +1 -0
  100. package/dist/cjs/hooks/useZoom.cjs +264 -0
  101. package/dist/cjs/hooks/useZoom.cjs.map +1 -0
  102. package/dist/cjs/index.cjs +26 -2
  103. package/dist/cjs/index.cjs.map +1 -1
  104. package/dist/cjs/styles/Lightbox.module.css.cjs +7 -0
  105. package/dist/cjs/styles/Lightbox.module.css.cjs.map +1 -0
  106. package/dist/cjs/utils/fullscreen.cjs +41 -0
  107. package/dist/cjs/utils/fullscreen.cjs.map +1 -0
  108. package/dist/cjs/utils/pointer.cjs +50 -0
  109. package/dist/cjs/utils/pointer.cjs.map +1 -0
  110. package/dist/cjs/utils/zoom.cjs +91 -0
  111. package/dist/cjs/utils/zoom.cjs.map +1 -0
  112. package/dist/esm/Lightbox.context-value.mjs +45 -0
  113. package/dist/esm/Lightbox.context-value.mjs.map +1 -0
  114. package/dist/esm/Lightbox.context.mjs.map +1 -1
  115. package/dist/esm/Lightbox.defaults.mjs +27 -0
  116. package/dist/esm/Lightbox.defaults.mjs.map +1 -0
  117. package/dist/esm/Lightbox.mjs +40 -244
  118. package/dist/esm/Lightbox.mjs.map +1 -1
  119. package/dist/esm/Lightbox.module.css.mjs +1 -1
  120. package/dist/esm/LightboxSlide.context.mjs +9 -0
  121. package/dist/esm/LightboxSlide.context.mjs.map +1 -0
  122. package/dist/esm/LightboxSlide.mjs +73 -6
  123. package/dist/esm/LightboxSlide.mjs.map +1 -1
  124. package/dist/esm/components/EnterFullscreen.mjs +28 -0
  125. package/dist/esm/components/EnterFullscreen.mjs.map +1 -0
  126. package/dist/esm/components/ExitFullscreen.mjs +28 -0
  127. package/dist/esm/components/ExitFullscreen.mjs.map +1 -0
  128. package/dist/esm/components/LightboxAutoplayButton.mjs +41 -0
  129. package/dist/esm/components/LightboxAutoplayButton.mjs.map +1 -0
  130. package/dist/esm/components/LightboxCarousel.mjs +27 -0
  131. package/dist/esm/components/LightboxCarousel.mjs.map +1 -0
  132. package/dist/esm/components/LightboxCarouselSlide.context.mjs +9 -0
  133. package/dist/esm/components/LightboxCarouselSlide.context.mjs.map +1 -0
  134. package/dist/esm/components/LightboxCloseButton.mjs +31 -0
  135. package/dist/esm/components/LightboxCloseButton.mjs.map +1 -0
  136. package/dist/esm/components/LightboxContent.mjs +36 -0
  137. package/dist/esm/components/LightboxContent.mjs.map +1 -0
  138. package/dist/esm/components/LightboxControls.mjs +66 -0
  139. package/dist/esm/components/LightboxControls.mjs.map +1 -0
  140. package/dist/esm/components/LightboxCounter.mjs +32 -0
  141. package/dist/esm/components/LightboxCounter.mjs.map +1 -0
  142. package/dist/esm/components/LightboxFullscreenButton.mjs +39 -0
  143. package/dist/esm/components/LightboxFullscreenButton.mjs.map +1 -0
  144. package/dist/esm/components/LightboxOverlay.mjs +38 -0
  145. package/dist/esm/components/LightboxOverlay.mjs.map +1 -0
  146. package/dist/esm/components/LightboxPreset.mjs +30 -0
  147. package/dist/esm/components/LightboxPreset.mjs.map +1 -0
  148. package/dist/esm/components/LightboxRoot.mjs +258 -0
  149. package/dist/esm/components/LightboxRoot.mjs.map +1 -0
  150. package/dist/esm/components/LightboxSlide.context.mjs +9 -0
  151. package/dist/esm/components/LightboxSlide.context.mjs.map +1 -0
  152. package/dist/esm/components/LightboxSlide.mjs +152 -0
  153. package/dist/esm/components/LightboxSlide.mjs.map +1 -0
  154. package/dist/esm/components/LightboxSlides.mjs +106 -0
  155. package/dist/esm/components/LightboxSlides.mjs.map +1 -0
  156. package/dist/esm/components/LightboxThumbnail.context.mjs +9 -0
  157. package/dist/esm/components/LightboxThumbnail.context.mjs.map +1 -0
  158. package/dist/esm/components/LightboxThumbnail.mjs +38 -0
  159. package/dist/esm/components/LightboxThumbnail.mjs.map +1 -0
  160. package/dist/esm/components/LightboxThumbnails.mjs +119 -0
  161. package/dist/esm/components/LightboxThumbnails.mjs.map +1 -0
  162. package/dist/esm/components/LightboxToolbar.mjs +92 -0
  163. package/dist/esm/components/LightboxToolbar.mjs.map +1 -0
  164. package/dist/esm/components/LightboxZoomButton.mjs +37 -0
  165. package/dist/esm/components/LightboxZoomButton.mjs.map +1 -0
  166. package/dist/esm/components/Pause.mjs +26 -0
  167. package/dist/esm/components/Pause.mjs.map +1 -0
  168. package/dist/esm/components/Play.mjs +20 -0
  169. package/dist/esm/components/Play.mjs.map +1 -0
  170. package/dist/esm/components/QuestionMark.mjs +26 -0
  171. package/dist/esm/components/QuestionMark.mjs.map +1 -0
  172. package/dist/esm/components/ZoomIn.mjs +28 -0
  173. package/dist/esm/components/ZoomIn.mjs.map +1 -0
  174. package/dist/esm/components/ZoomOut.mjs +27 -0
  175. package/dist/esm/components/ZoomOut.mjs.map +1 -0
  176. package/dist/esm/components/icons/EnterFullscreen.mjs +28 -0
  177. package/dist/esm/components/icons/EnterFullscreen.mjs.map +1 -0
  178. package/dist/esm/components/icons/ExitFullscreen.mjs +28 -0
  179. package/dist/esm/components/icons/ExitFullscreen.mjs.map +1 -0
  180. package/dist/esm/components/icons/Pause.mjs +26 -0
  181. package/dist/esm/components/icons/Pause.mjs.map +1 -0
  182. package/dist/esm/components/icons/Play.mjs +20 -0
  183. package/dist/esm/components/icons/Play.mjs.map +1 -0
  184. package/dist/esm/components/icons/ZoomIn.mjs +28 -0
  185. package/dist/esm/components/icons/ZoomIn.mjs.map +1 -0
  186. package/dist/esm/components/icons/ZoomOut.mjs +27 -0
  187. package/dist/esm/components/icons/ZoomOut.mjs.map +1 -0
  188. package/dist/esm/context/LightboxContext.mjs +9 -0
  189. package/dist/esm/context/LightboxContext.mjs.map +1 -0
  190. package/dist/esm/context/LightboxSlideContext.mjs +9 -0
  191. package/dist/esm/context/LightboxSlideContext.mjs.map +1 -0
  192. package/dist/esm/context/LightboxThumbnailContext.mjs +9 -0
  193. package/dist/esm/context/LightboxThumbnailContext.mjs.map +1 -0
  194. package/dist/esm/hooks/useAutoPlay.mjs +75 -0
  195. package/dist/esm/hooks/useAutoPlay.mjs.map +1 -0
  196. package/dist/esm/hooks/useCarouselOptions.mjs +28 -0
  197. package/dist/esm/hooks/useCarouselOptions.mjs.map +1 -0
  198. package/dist/esm/hooks/useFullscreen.mjs +37 -0
  199. package/dist/esm/hooks/useFullscreen.mjs.map +1 -0
  200. package/dist/esm/hooks/useKeyboardNavigation.mjs +27 -0
  201. package/dist/esm/hooks/useKeyboardNavigation.mjs.map +1 -0
  202. package/dist/esm/hooks/useLightbox.mjs +114 -0
  203. package/dist/esm/hooks/useLightbox.mjs.map +1 -0
  204. package/dist/esm/hooks/useLightboxRootOptions.mjs +18 -0
  205. package/dist/esm/hooks/useLightboxRootOptions.mjs.map +1 -0
  206. package/dist/esm/hooks/useSlideInteractions.mjs +92 -0
  207. package/dist/esm/hooks/useSlideInteractions.mjs.map +1 -0
  208. package/dist/esm/hooks/useThumbnails.mjs +59 -0
  209. package/dist/esm/hooks/useThumbnails.mjs.map +1 -0
  210. package/dist/esm/hooks/useZoom.mjs +262 -0
  211. package/dist/esm/hooks/useZoom.mjs.map +1 -0
  212. package/dist/esm/index.mjs +13 -1
  213. package/dist/esm/index.mjs.map +1 -1
  214. package/dist/esm/styles/Lightbox.module.css.mjs +5 -0
  215. package/dist/esm/styles/Lightbox.module.css.mjs.map +1 -0
  216. package/dist/esm/utils/fullscreen.mjs +36 -0
  217. package/dist/esm/utils/fullscreen.mjs.map +1 -0
  218. package/dist/esm/utils/pointer.mjs +41 -0
  219. package/dist/esm/utils/pointer.mjs.map +1 -0
  220. package/dist/esm/utils/zoom.mjs +82 -0
  221. package/dist/esm/utils/zoom.mjs.map +1 -0
  222. package/dist/styles.css +1 -1
  223. package/dist/styles.layer.css +1 -1
  224. package/dist/types/Lightbox.context-value.d.ts +16 -0
  225. package/dist/types/Lightbox.context-value.d.ts.map +1 -0
  226. package/dist/types/Lightbox.context.d.ts +29 -0
  227. package/dist/types/Lightbox.context.d.ts.map +1 -1
  228. package/dist/types/Lightbox.d.ts +53 -35
  229. package/dist/types/Lightbox.d.ts.map +1 -1
  230. package/dist/types/Lightbox.defaults.d.ts +24 -0
  231. package/dist/types/Lightbox.defaults.d.ts.map +1 -0
  232. package/dist/types/Lightbox.story.d.ts +5 -5
  233. package/dist/types/Lightbox.story.d.ts.map +1 -1
  234. package/dist/types/LightboxSlide.context.d.ts +8 -0
  235. package/dist/types/LightboxSlide.context.d.ts.map +1 -0
  236. package/dist/types/LightboxSlide.d.ts +0 -3
  237. package/dist/types/LightboxSlide.d.ts.map +1 -1
  238. package/dist/types/__tests__/Lightbox.test.d.ts +2 -0
  239. package/dist/types/__tests__/Lightbox.test.d.ts.map +1 -0
  240. package/dist/types/__tests__/LightboxSimple.test.d.ts +2 -0
  241. package/dist/types/__tests__/LightboxSimple.test.d.ts.map +1 -0
  242. package/dist/types/__tests__/pointer.test.d.ts +2 -0
  243. package/dist/types/__tests__/pointer.test.d.ts.map +1 -0
  244. package/dist/types/__tests__/zoom.test.d.ts +2 -0
  245. package/dist/types/__tests__/zoom.test.d.ts.map +1 -0
  246. package/dist/types/components/EnterFullscreen.d.ts +3 -0
  247. package/dist/types/components/EnterFullscreen.d.ts.map +1 -0
  248. package/dist/types/components/ExitFullscreen.d.ts +3 -0
  249. package/dist/types/components/ExitFullscreen.d.ts.map +1 -0
  250. package/dist/types/components/LightboxAutoplayButton.d.ts +17 -0
  251. package/dist/types/components/LightboxAutoplayButton.d.ts.map +1 -0
  252. package/dist/types/components/LightboxCarousel.d.ts +6 -0
  253. package/dist/types/components/LightboxCarousel.d.ts.map +1 -0
  254. package/dist/types/components/LightboxCarouselSlide.context.d.ts +10 -0
  255. package/dist/types/components/LightboxCarouselSlide.context.d.ts.map +1 -0
  256. package/dist/types/components/LightboxCloseButton.d.ts +17 -0
  257. package/dist/types/components/LightboxCloseButton.d.ts.map +1 -0
  258. package/dist/types/components/LightboxContent.d.ts +14 -0
  259. package/dist/types/components/LightboxContent.d.ts.map +1 -0
  260. package/dist/types/components/LightboxControls.d.ts +19 -0
  261. package/dist/types/components/LightboxControls.d.ts.map +1 -0
  262. package/dist/types/components/LightboxCounter.d.ts +19 -0
  263. package/dist/types/components/LightboxCounter.d.ts.map +1 -0
  264. package/dist/types/components/LightboxFullscreenButton.d.ts +17 -0
  265. package/dist/types/components/LightboxFullscreenButton.d.ts.map +1 -0
  266. package/dist/types/components/LightboxOverlay.d.ts +4 -0
  267. package/dist/types/components/LightboxOverlay.d.ts.map +1 -0
  268. package/dist/types/components/LightboxPreset.d.ts +10 -0
  269. package/dist/types/components/LightboxPreset.d.ts.map +1 -0
  270. package/dist/types/components/LightboxRoot.d.ts +80 -0
  271. package/dist/types/components/LightboxRoot.d.ts.map +1 -0
  272. package/dist/types/components/LightboxSlide.context.d.ts +8 -0
  273. package/dist/types/components/LightboxSlide.context.d.ts.map +1 -0
  274. package/dist/types/components/LightboxSlide.d.ts +17 -0
  275. package/dist/types/components/LightboxSlide.d.ts.map +1 -0
  276. package/dist/types/components/LightboxSlides.d.ts +24 -0
  277. package/dist/types/components/LightboxSlides.d.ts.map +1 -0
  278. package/dist/types/components/LightboxThumbnail.context.d.ts +8 -0
  279. package/dist/types/components/LightboxThumbnail.context.d.ts.map +1 -0
  280. package/dist/types/components/LightboxThumbnail.d.ts +17 -0
  281. package/dist/types/components/LightboxThumbnail.d.ts.map +1 -0
  282. package/dist/types/components/LightboxThumbnails.d.ts +20 -0
  283. package/dist/types/components/LightboxThumbnails.d.ts.map +1 -0
  284. package/dist/types/components/LightboxToolbar.d.ts +17 -0
  285. package/dist/types/components/LightboxToolbar.d.ts.map +1 -0
  286. package/dist/types/components/LightboxZoomButton.d.ts +17 -0
  287. package/dist/types/components/LightboxZoomButton.d.ts.map +1 -0
  288. package/dist/types/components/Pause.d.ts +3 -0
  289. package/dist/types/components/Pause.d.ts.map +1 -0
  290. package/dist/types/components/Play.d.ts +3 -0
  291. package/dist/types/components/Play.d.ts.map +1 -0
  292. package/dist/types/components/QuestionMark.d.ts +3 -0
  293. package/dist/types/components/QuestionMark.d.ts.map +1 -0
  294. package/dist/types/components/ZoomIn.d.ts +3 -0
  295. package/dist/types/components/ZoomIn.d.ts.map +1 -0
  296. package/dist/types/components/ZoomOut.d.ts +3 -0
  297. package/dist/types/components/ZoomOut.d.ts.map +1 -0
  298. package/dist/types/components/icons/EnterFullscreen.d.ts +3 -0
  299. package/dist/types/components/icons/EnterFullscreen.d.ts.map +1 -0
  300. package/dist/types/components/icons/ExitFullscreen.d.ts +3 -0
  301. package/dist/types/components/icons/ExitFullscreen.d.ts.map +1 -0
  302. package/dist/types/components/icons/Pause.d.ts +3 -0
  303. package/dist/types/components/icons/Pause.d.ts.map +1 -0
  304. package/dist/types/components/icons/Play.d.ts +3 -0
  305. package/dist/types/components/icons/Play.d.ts.map +1 -0
  306. package/dist/types/components/icons/ZoomIn.d.ts +3 -0
  307. package/dist/types/components/icons/ZoomIn.d.ts.map +1 -0
  308. package/dist/types/components/icons/ZoomOut.d.ts +3 -0
  309. package/dist/types/components/icons/ZoomOut.d.ts.map +1 -0
  310. package/dist/types/context/LightboxContext.d.ts +46 -0
  311. package/dist/types/context/LightboxContext.d.ts.map +1 -0
  312. package/dist/types/context/LightboxSlideContext.d.ts +8 -0
  313. package/dist/types/context/LightboxSlideContext.d.ts.map +1 -0
  314. package/dist/types/context/LightboxThumbnailContext.d.ts +8 -0
  315. package/dist/types/context/LightboxThumbnailContext.d.ts.map +1 -0
  316. package/dist/types/hooks/useAutoPlay.d.ts +11 -0
  317. package/dist/types/hooks/useAutoPlay.d.ts.map +1 -0
  318. package/dist/types/hooks/useAutoPlay.test.d.ts +2 -0
  319. package/dist/types/hooks/useAutoPlay.test.d.ts.map +1 -0
  320. package/dist/types/hooks/useCarouselOptions.d.ts +20 -0
  321. package/dist/types/hooks/useCarouselOptions.d.ts.map +1 -0
  322. package/dist/types/hooks/useFullscreen.d.ts +11 -0
  323. package/dist/types/hooks/useFullscreen.d.ts.map +1 -0
  324. package/dist/types/hooks/useKeyboardNavigation.d.ts +10 -0
  325. package/dist/types/hooks/useKeyboardNavigation.d.ts.map +1 -0
  326. package/dist/types/hooks/useLightbox.d.ts +30 -0
  327. package/dist/types/hooks/useLightbox.d.ts.map +1 -0
  328. package/dist/types/hooks/useLightboxRootOptions.d.ts +12 -0
  329. package/dist/types/hooks/useLightboxRootOptions.d.ts.map +1 -0
  330. package/dist/types/hooks/useSlideInteractions.d.ts +26 -0
  331. package/dist/types/hooks/useSlideInteractions.d.ts.map +1 -0
  332. package/dist/types/hooks/useThumbnails.d.ts +15 -0
  333. package/dist/types/hooks/useThumbnails.d.ts.map +1 -0
  334. package/dist/types/hooks/useZoom.d.ts +24 -0
  335. package/dist/types/hooks/useZoom.d.ts.map +1 -0
  336. package/dist/types/index.d.mts +27 -3
  337. package/dist/types/index.d.ts +27 -3
  338. package/dist/types/index.d.ts.map +1 -1
  339. package/dist/types/stories/Lightbox.story.d.ts +11 -0
  340. package/dist/types/stories/Lightbox.story.d.ts.map +1 -0
  341. package/dist/types/utils/fullscreen.d.ts +21 -0
  342. package/dist/types/utils/fullscreen.d.ts.map +1 -0
  343. package/dist/types/utils/pointer.d.ts +63 -0
  344. package/dist/types/utils/pointer.d.ts.map +1 -0
  345. package/dist/types/utils/zoom.d.ts +69 -0
  346. package/dist/types/utils/zoom.d.ts.map +1 -0
  347. package/dist/types/utils/zoom.test.d.ts +2 -0
  348. package/dist/types/utils/zoom.test.d.ts.map +1 -0
  349. package/package.json +2 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LightboxSlideContext.mjs","sources":["../../../src/context/LightboxSlideContext.ts"],"sourcesContent":["import { createSafeContext } from \"@mantine/core\";\n\nexport interface LightboxSlideContext {\n\tindex: number;\n}\n\nexport const [LightboxSlideProvider, useLightboxSlideContext] =\n\tcreateSafeContext<LightboxSlideContext>(\n\t\t\"LightboxSlide component was not found in the tree\",\n\t);\n"],"names":[],"mappings":";;;AAEY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAqB,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAuB,CAAC,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAiB,CAAA;AACjF,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACF,CAAA,CAAA;;"}
@@ -0,0 +1,9 @@
1
+ 'use client';
2
+ import { createSafeContext } from '@mantine/core';
3
+
4
+ const [LightboxThumbnailProvider, useLightboxThumbnailContext] = createSafeContext(
5
+ "LightboxThumbnail component was not found in the tree"
6
+ );
7
+
8
+ export { LightboxThumbnailProvider, useLightboxThumbnailContext };
9
+ //# sourceMappingURL=LightboxThumbnailContext.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LightboxThumbnailContext.mjs","sources":["../../../src/context/LightboxThumbnailContext.ts"],"sourcesContent":["import { createSafeContext } from \"@mantine/core\";\n\nexport interface LightboxThumbnailContext {\n\tindex: number;\n}\n\nexport const [LightboxThumbnailProvider, useLightboxThumbnailContext] =\n\tcreateSafeContext<LightboxThumbnailContext>(\n\t\t\"LightboxThumbnail component was not found in the tree\",\n\t);\n"],"names":[],"mappings":";;;AAEY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAyB,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA2B,CAAC,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAiB,CAAA;AACzF,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACF,CAAA,CAAA;;"}
@@ -0,0 +1,75 @@
1
+ 'use client';
2
+ import { useRef, useState, useCallback } from 'react';
3
+
4
+ function useAutoPlay() {
5
+ const autoplayPluginRef = useRef(null);
6
+ const emblaInstanceRef = useRef(null);
7
+ const autoplayShouldRunRef = useRef(false);
8
+ const [canAutoPlay, setCanAutoPlay] = useState(false);
9
+ const [isPlaying, setIsPlaying] = useState(false);
10
+ const onAutoPlayPlay = useCallback(() => {
11
+ setIsPlaying(true);
12
+ }, []);
13
+ const onAutoPlayStop = useCallback(() => setIsPlaying(false), []);
14
+ const onEmblaPointerUp = useCallback(() => {
15
+ if (!autoplayShouldRunRef.current) {
16
+ autoplayPluginRef.current?.stop();
17
+ }
18
+ }, []);
19
+ const handleEmblaApiForAutoPlay = useCallback(
20
+ (embla) => {
21
+ const plugin = embla.plugins()?.autoplay;
22
+ if (!plugin || typeof plugin !== "object" || typeof plugin.play !== "function") {
23
+ return;
24
+ }
25
+ const prevEmbla = emblaInstanceRef.current;
26
+ if (prevEmbla) {
27
+ prevEmbla.off("autoplay:play", onAutoPlayPlay);
28
+ prevEmbla.off("autoplay:stop", onAutoPlayStop);
29
+ prevEmbla.off("pointerUp", onEmblaPointerUp);
30
+ }
31
+ emblaInstanceRef.current = embla;
32
+ autoplayPluginRef.current = plugin;
33
+ embla.on("autoplay:play", onAutoPlayPlay);
34
+ embla.on("autoplay:stop", onAutoPlayStop);
35
+ embla.on("pointerUp", onEmblaPointerUp);
36
+ const playing = plugin.isPlaying();
37
+ setCanAutoPlay(true);
38
+ setIsPlaying(playing);
39
+ autoplayShouldRunRef.current = playing;
40
+ },
41
+ [onAutoPlayPlay, onAutoPlayStop, onEmblaPointerUp]
42
+ );
43
+ const toggleAutoPlay = useCallback(() => {
44
+ const plugin = autoplayPluginRef.current;
45
+ if (!plugin) {
46
+ return;
47
+ }
48
+ if (isPlaying) {
49
+ autoplayShouldRunRef.current = false;
50
+ plugin.stop();
51
+ } else {
52
+ autoplayShouldRunRef.current = true;
53
+ plugin.play();
54
+ }
55
+ }, [isPlaying]);
56
+ const notifyAutoPlayInteraction = useCallback(() => {
57
+ const embla = emblaInstanceRef.current;
58
+ const plugin = autoplayPluginRef.current;
59
+ if (!embla || !plugin?.isPlaying()) {
60
+ return;
61
+ }
62
+ embla.emit("pointerDown");
63
+ embla.emit("pointerUp");
64
+ }, []);
65
+ return {
66
+ canAutoPlay,
67
+ isPlaying,
68
+ toggleAutoPlay,
69
+ notifyAutoPlayInteraction,
70
+ handleEmblaApiForAutoPlay
71
+ };
72
+ }
73
+
74
+ export { useAutoPlay };
75
+ //# sourceMappingURL=useAutoPlay.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAutoPlay.mjs","sources":["../../../src/hooks/useAutoPlay.ts"],"sourcesContent":["import type { EmblaCarouselType } from \"embla-carousel\";\nimport type { AutoplayType } from \"embla-carousel-autoplay\";\nimport { useCallback, useRef, useState } from \"react\";\n\ninterface UseAutoPlayOutput {\n\tcanAutoPlay: boolean;\n\tisPlaying: boolean;\n\ttoggleAutoPlay: () => void;\n\tnotifyAutoPlayInteraction: () => void;\n\thandleEmblaApiForAutoPlay: (embla: EmblaCarouselType) => void;\n}\n\nexport function useAutoPlay(): UseAutoPlayOutput {\n\tconst autoplayPluginRef = useRef<AutoplayType | null>(null);\n\tconst emblaInstanceRef = useRef<EmblaCarouselType | null>(null);\n\tconst autoplayShouldRunRef = useRef(false);\n\n\tconst [canAutoPlay, setCanAutoPlay] = useState(false);\n\tconst [isPlaying, setIsPlaying] = useState(false);\n\n\tconst onAutoPlayPlay = useCallback(() => {\n\t\tsetIsPlaying(true);\n\t}, []);\n\n\tconst onAutoPlayStop = useCallback(() => setIsPlaying(false), []);\n\n\tconst onEmblaPointerUp = useCallback(() => {\n\t\tif (!autoplayShouldRunRef.current) {\n\t\t\tautoplayPluginRef.current?.stop();\n\t\t}\n\t}, []);\n\n\tconst handleEmblaApiForAutoPlay = useCallback(\n\t\t(embla: EmblaCarouselType) => {\n\t\t\tconst plugin = embla.plugins()?.autoplay;\n\n\t\t\tif (\n\t\t\t\t!plugin ||\n\t\t\t\ttypeof plugin !== \"object\" ||\n\t\t\t\ttypeof plugin.play !== \"function\"\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst prevEmbla = emblaInstanceRef.current;\n\n\t\t\tif (prevEmbla) {\n\t\t\t\tprevEmbla.off(\"autoplay:play\", onAutoPlayPlay);\n\t\t\t\tprevEmbla.off(\"autoplay:stop\", onAutoPlayStop);\n\t\t\t\tprevEmbla.off(\"pointerUp\", onEmblaPointerUp);\n\t\t\t}\n\n\t\t\temblaInstanceRef.current = embla;\n\t\t\tautoplayPluginRef.current = plugin;\n\n\t\t\tembla.on(\"autoplay:play\", onAutoPlayPlay);\n\t\t\tembla.on(\"autoplay:stop\", onAutoPlayStop);\n\t\t\tembla.on(\"pointerUp\", onEmblaPointerUp);\n\n\t\t\tconst playing = plugin.isPlaying();\n\t\t\tsetCanAutoPlay(true);\n\t\t\tsetIsPlaying(playing);\n\t\t\tautoplayShouldRunRef.current = playing;\n\t\t},\n\t\t[onAutoPlayPlay, onAutoPlayStop, onEmblaPointerUp],\n\t);\n\n\tconst toggleAutoPlay = useCallback(() => {\n\t\tconst plugin = autoplayPluginRef.current;\n\n\t\tif (!plugin) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (isPlaying) {\n\t\t\tautoplayShouldRunRef.current = false;\n\t\t\tplugin.stop();\n\t\t} else {\n\t\t\tautoplayShouldRunRef.current = true;\n\t\t\tplugin.play();\n\t\t}\n\t}, [isPlaying]);\n\n\tconst notifyAutoPlayInteraction = useCallback(() => {\n\t\tconst embla = emblaInstanceRef.current;\n\t\tconst plugin = autoplayPluginRef.current;\n\n\t\tif (!embla || !plugin?.isPlaying()) {\n\t\t\treturn;\n\t\t}\n\n\t\tembla.emit(\"pointerDown\");\n\t\tembla.emit(\"pointerUp\");\n\t}, []);\n\n\treturn {\n\t\tcanAutoPlay,\n\t\tisPlaying,\n\t\ttoggleAutoPlay,\n\t\tnotifyAutoPlayInteraction,\n\t\thandleEmblaApiForAutoPlay,\n\t};\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ 'use client';
2
+ import { useMemo } from 'react';
3
+
4
+ function useCarouselOptions(props) {
5
+ const { carouselOptions, isZoomedRef } = props;
6
+ return useMemo(
7
+ () => ({
8
+ ...carouselOptions,
9
+ emblaOptions: {
10
+ ...carouselOptions?.emblaOptions,
11
+ watchDrag: (emblaApi, event) => {
12
+ if (isZoomedRef.current) {
13
+ return false;
14
+ }
15
+ const configuredWatchDrag = carouselOptions?.emblaOptions?.watchDrag;
16
+ if (typeof configuredWatchDrag === "function") {
17
+ return configuredWatchDrag(emblaApi, event);
18
+ }
19
+ return configuredWatchDrag ?? true;
20
+ }
21
+ }
22
+ }),
23
+ [carouselOptions, isZoomedRef]
24
+ );
25
+ }
26
+
27
+ export { useCarouselOptions };
28
+ //# sourceMappingURL=useCarouselOptions.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCarouselOptions.mjs","sources":["../../../src/hooks/useCarouselOptions.ts"],"sourcesContent":["import type { EmblaCarouselType } from \"embla-carousel\";\nimport type { RefObject } from \"react\";\nimport { useMemo } from \"react\";\nimport type { LightboxCarouselOptions } from \"../Lightbox.js\";\n\ninterface UseCarouselOptionsInput {\n\tcarouselOptions: LightboxCarouselOptions | undefined;\n\tisZoomedRef: RefObject<boolean>;\n}\n\nexport type UseCarouselOptionsOutput = LightboxCarouselOptions & {\n\temblaOptions: NonNullable<LightboxCarouselOptions[\"emblaOptions\"]>;\n};\n\n/**\n * Merges consumer-supplied carousel options with lightbox-internal overrides.\n *\n * Injects a `watchDrag` guard that disables Embla's drag when the lightbox is\n * zoomed. Uses `isZoomedRef` (not `isZoomed` state) so that the returned\n * options object stays stable across zoom state changes, preventing Embla from\n * being re-initialised on every zoom toggle.\n */\nexport function useCarouselOptions(\n\tprops: UseCarouselOptionsInput,\n): UseCarouselOptionsOutput {\n\tconst { carouselOptions, isZoomedRef } = props;\n\n\treturn useMemo(\n\t\t() => ({\n\t\t\t...carouselOptions,\n\t\t\temblaOptions: {\n\t\t\t\t...carouselOptions?.emblaOptions,\n\t\t\t\twatchDrag: (\n\t\t\t\t\temblaApi: EmblaCarouselType,\n\t\t\t\t\tevent: MouseEvent | TouchEvent,\n\t\t\t\t) => {\n\t\t\t\t\tif (isZoomedRef.current) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst configuredWatchDrag = carouselOptions?.emblaOptions?.watchDrag;\n\n\t\t\t\t\tif (typeof configuredWatchDrag === \"function\") {\n\t\t\t\t\t\treturn configuredWatchDrag(emblaApi, event);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn configuredWatchDrag ?? true;\n\t\t\t\t},\n\t\t\t},\n\t\t}),\n\t\t[carouselOptions, isZoomedRef],\n\t);\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ 'use client';
2
+ import { useState, useCallback, useEffect } from 'react';
3
+ import { isBrowserFullscreen, canToggleBrowserFullscreen, toggleBrowserFullscreen, exitBrowserFullscreenIfActive } from '../utils/fullscreen.mjs';
4
+
5
+ function useFullscreen(props) {
6
+ const { opened } = props;
7
+ const [isFullscreen, setIsFullscreen] = useState(isBrowserFullscreen);
8
+ const canUseFullscreen = canToggleBrowserFullscreen();
9
+ const toggleFullscreen = useCallback(async () => {
10
+ if (!canUseFullscreen) {
11
+ return;
12
+ }
13
+ await toggleBrowserFullscreen();
14
+ }, [canUseFullscreen]);
15
+ useEffect(() => {
16
+ const handleFullscreenChange = () => {
17
+ setIsFullscreen(isBrowserFullscreen());
18
+ };
19
+ document.addEventListener("fullscreenchange", handleFullscreenChange);
20
+ return () => {
21
+ document.removeEventListener("fullscreenchange", handleFullscreenChange);
22
+ };
23
+ }, []);
24
+ useEffect(() => {
25
+ if (!opened) {
26
+ void exitBrowserFullscreenIfActive();
27
+ }
28
+ }, [opened]);
29
+ return {
30
+ isFullscreen,
31
+ canUseFullscreen,
32
+ toggleFullscreen
33
+ };
34
+ }
35
+
36
+ export { useFullscreen };
37
+ //# sourceMappingURL=useFullscreen.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFullscreen.mjs","sources":["../../../src/hooks/useFullscreen.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from \"react\";\nimport {\n\tcanToggleBrowserFullscreen,\n\texitBrowserFullscreenIfActive,\n\tisBrowserFullscreen,\n\ttoggleBrowserFullscreen,\n} from \"../utils/fullscreen.js\";\n\ninterface UseFullscreenInput {\n\topened: boolean;\n}\n\ninterface UseFullscreenOutput {\n\tisFullscreen: boolean;\n\tcanUseFullscreen: boolean;\n\ttoggleFullscreen: () => void;\n}\n\nexport function useFullscreen(props: UseFullscreenInput): UseFullscreenOutput {\n\tconst { opened } = props;\n\n\tconst [isFullscreen, setIsFullscreen] = useState(isBrowserFullscreen);\n\n\tconst canUseFullscreen = canToggleBrowserFullscreen();\n\n\tconst toggleFullscreen = useCallback(async () => {\n\t\tif (!canUseFullscreen) {\n\t\t\treturn;\n\t\t}\n\n\t\tawait toggleBrowserFullscreen();\n\t}, [canUseFullscreen]);\n\n\tuseEffect(() => {\n\t\tconst handleFullscreenChange = () => {\n\t\t\tsetIsFullscreen(isBrowserFullscreen());\n\t\t};\n\n\t\tdocument.addEventListener(\"fullscreenchange\", handleFullscreenChange);\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener(\"fullscreenchange\", handleFullscreenChange);\n\t\t};\n\t}, []);\n\n\tuseEffect(() => {\n\t\tif (!opened) {\n\t\t\tvoid exitBrowserFullscreenIfActive();\n\t\t}\n\t}, [opened]);\n\n\treturn {\n\t\tisFullscreen,\n\t\tcanUseFullscreen,\n\t\ttoggleFullscreen,\n\t};\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ 'use client';
2
+ import { useEffect } from 'react';
3
+
4
+ function useKeyboardNavigation(props) {
5
+ const { opened, emblaRef, onClose } = props;
6
+ useEffect(() => {
7
+ if (!opened) {
8
+ return;
9
+ }
10
+ const handleKeyDown = (event) => {
11
+ if (event.key === "Escape") {
12
+ onClose();
13
+ } else if (event.key === "ArrowLeft") {
14
+ emblaRef.current?.scrollPrev();
15
+ } else if (event.key === "ArrowRight") {
16
+ emblaRef.current?.scrollNext();
17
+ }
18
+ };
19
+ document.addEventListener("keydown", handleKeyDown);
20
+ return () => {
21
+ document.removeEventListener("keydown", handleKeyDown);
22
+ };
23
+ }, [opened, emblaRef, onClose]);
24
+ }
25
+
26
+ export { useKeyboardNavigation };
27
+ //# sourceMappingURL=useKeyboardNavigation.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useKeyboardNavigation.mjs","sources":["../../../src/hooks/useKeyboardNavigation.ts"],"sourcesContent":["import type { EmblaCarouselType } from \"embla-carousel\";\nimport type { RefObject } from \"react\";\nimport { useEffect } from \"react\";\n\ninterface UseKeyboardNavigationInput {\n\topened: boolean;\n\temblaRef: RefObject<EmblaCarouselType | null>;\n\tonClose: () => void;\n}\n\nexport function useKeyboardNavigation(props: UseKeyboardNavigationInput): void {\n\tconst { opened, emblaRef, onClose } = props;\n\n\tuseEffect(() => {\n\t\tif (!opened) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst handleKeyDown = (event: KeyboardEvent) => {\n\t\t\tif (event.key === \"Escape\") {\n\t\t\t\tonClose();\n\t\t\t} else if (event.key === \"ArrowLeft\") {\n\t\t\t\temblaRef.current?.scrollPrev();\n\t\t\t} else if (event.key === \"ArrowRight\") {\n\t\t\t\temblaRef.current?.scrollNext();\n\t\t\t}\n\t\t};\n\n\t\tdocument.addEventListener(\"keydown\", handleKeyDown);\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener(\"keydown\", handleKeyDown);\n\t\t};\n\t}, [opened, emblaRef, onClose]);\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,114 @@
1
+ 'use client';
2
+ import { useFocusTrap, useMergedRef, useFocusReturn, useHotkeys } from '@mantine/hooks';
3
+ import { useMemo, useRef, useState, useCallback } from 'react';
4
+ import { LIGHTBOX_DEFAULT_PROPS } from '../Lightbox.defaults.mjs';
5
+
6
+ function useLightbox(props) {
7
+ const {
8
+ ref,
9
+ opened,
10
+ initialSlide,
11
+ onClose,
12
+ closeOnClickOutside,
13
+ trapFocus,
14
+ returnFocus,
15
+ carouselOptions,
16
+ thumbnailEmblaOptions,
17
+ counterFormatter
18
+ } = props;
19
+ const shouldCloseOnClickOutside = closeOnClickOutside ?? LIGHTBOX_DEFAULT_PROPS.closeOnClickOutside;
20
+ const shouldTrapFocus = trapFocus ?? LIGHTBOX_DEFAULT_PROPS.trapFocus;
21
+ const shouldReturnFocus = returnFocus ?? LIGHTBOX_DEFAULT_PROPS.returnFocus;
22
+ const mergedBaseCarouselOptions = useMemo(
23
+ () => ({
24
+ ...LIGHTBOX_DEFAULT_PROPS.carouselOptions,
25
+ ...carouselOptions,
26
+ initialSlide
27
+ }),
28
+ [carouselOptions, initialSlide]
29
+ );
30
+ const mergedThumbnailEmblaOptions = useMemo(
31
+ () => ({
32
+ ...LIGHTBOX_DEFAULT_PROPS.thumbnailEmblaOptions,
33
+ ...thumbnailEmblaOptions
34
+ }),
35
+ [thumbnailEmblaOptions]
36
+ );
37
+ const focusTrapRef = useFocusTrap(opened && shouldTrapFocus);
38
+ const mergedRef = useMergedRef(ref, focusTrapRef);
39
+ useFocusReturn({ opened, shouldReturnFocus });
40
+ const slidesEmblaRef = useRef(null);
41
+ const thumbnailsEmblaRef = useRef(null);
42
+ const [currentIndex, setCurrentIndex] = useState(
43
+ mergedBaseCarouselOptions?.initialSlide ?? 0
44
+ );
45
+ const [total, setTotal] = useState(null);
46
+ useHotkeys([
47
+ ["ArrowLeft", () => opened && slidesEmblaRef.current?.scrollPrev()],
48
+ ["ArrowRight", () => opened && slidesEmblaRef.current?.scrollNext()],
49
+ ["Escape", () => opened && onClose()]
50
+ ]);
51
+ const counterText = useMemo(() => {
52
+ if (total === null) {
53
+ return null;
54
+ }
55
+ if (counterFormatter) {
56
+ return counterFormatter(currentIndex, total);
57
+ }
58
+ return `${currentIndex + 1} / ${total}`;
59
+ }, [counterFormatter, currentIndex, total]);
60
+ const handleEmblaApi = useCallback(
61
+ (embla) => {
62
+ slidesEmblaRef.current = embla;
63
+ const onInit = (api) => {
64
+ setTotal(api.slideNodes().length);
65
+ mergedBaseCarouselOptions.getEmblaApi?.(api);
66
+ };
67
+ const onSelect = (api) => {
68
+ setCurrentIndex(api.selectedScrollSnap());
69
+ thumbnailsEmblaRef.current?.scrollTo(api.selectedScrollSnap());
70
+ };
71
+ const onDestroy = () => {
72
+ setCurrentIndex(mergedBaseCarouselOptions?.initialSlide ?? 0);
73
+ setTotal(null);
74
+ thumbnailsEmblaRef.current = null;
75
+ slidesEmblaRef.current = null;
76
+ };
77
+ onInit(embla);
78
+ embla.on("select", onSelect);
79
+ embla.on("destroy", onDestroy);
80
+ },
81
+ [mergedBaseCarouselOptions]
82
+ );
83
+ const handleThumbnailsEmblaApi = useCallback(
84
+ (embla) => {
85
+ thumbnailsEmblaRef.current = embla;
86
+ embla.scrollTo(currentIndex);
87
+ },
88
+ [currentIndex]
89
+ );
90
+ const handleThumbnailClick = useCallback((index) => {
91
+ slidesEmblaRef.current?.scrollTo(index);
92
+ }, []);
93
+ const handleOutsideClick = useCallback(() => {
94
+ if (!shouldCloseOnClickOutside) {
95
+ return;
96
+ }
97
+ onClose();
98
+ }, [shouldCloseOnClickOutside, onClose]);
99
+ const mergedCarouselOptions = mergedBaseCarouselOptions;
100
+ return {
101
+ mergedRef,
102
+ currentIndex,
103
+ counterText,
104
+ handleEmblaApi,
105
+ handleThumbnailsEmblaApi,
106
+ handleThumbnailClick,
107
+ handleOutsideClick,
108
+ mergedCarouselOptions,
109
+ mergedThumbnailEmblaOptions
110
+ };
111
+ }
112
+
113
+ export { useLightbox };
114
+ //# sourceMappingURL=useLightbox.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLightbox.mjs","sources":["../../../src/hooks/useLightbox.ts"],"sourcesContent":["import type { CarouselProps } from \"@mantine/carousel\";\nimport {\n\tuseFocusReturn,\n\tuseFocusTrap,\n\tuseHotkeys,\n\tuseMergedRef,\n} from \"@mantine/hooks\";\nimport type { EmblaCarouselType } from \"embla-carousel\";\nimport {\n\ttype ForwardedRef,\n\tuseCallback,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n} from \"react\";\nimport { LIGHTBOX_DEFAULT_PROPS } from \"../Lightbox.defaults.js\";\nimport type {\n\tLightboxCarouselOptions,\n\tLightboxThumbnailEmblaOptions,\n} from \"../Lightbox.js\";\n\ninterface UseLightboxInput {\n\tref: ForwardedRef<HTMLDivElement>;\n\topened: boolean;\n\tinitialSlide: number | undefined;\n\tonClose: () => void;\n\tcloseOnClickOutside: boolean | undefined;\n\ttrapFocus: boolean | undefined;\n\treturnFocus: boolean | undefined;\n\tcarouselOptions: LightboxCarouselOptions | undefined;\n\tthumbnailEmblaOptions: LightboxThumbnailEmblaOptions | undefined;\n\tcounterFormatter: ((index: number, total: number) => string) | undefined;\n}\n\nexport interface UseLightboxOutput {\n\tmergedRef: (node: HTMLDivElement | null) => void;\n\tcurrentIndex: number;\n\tcounterText: string | null;\n\thandleEmblaApi: CarouselProps[\"getEmblaApi\"];\n\thandleThumbnailsEmblaApi: (embla: EmblaCarouselType) => void;\n\thandleThumbnailClick: (index: number) => void;\n\thandleOutsideClick: () => void;\n\tmergedCarouselOptions: LightboxCarouselOptions;\n\tmergedThumbnailEmblaOptions: LightboxThumbnailEmblaOptions;\n}\n\nexport function useLightbox(props: UseLightboxInput): UseLightboxOutput {\n\tconst {\n\t\tref,\n\t\topened,\n\t\tinitialSlide,\n\t\tonClose,\n\t\tcloseOnClickOutside,\n\t\ttrapFocus,\n\t\treturnFocus,\n\t\tcarouselOptions,\n\t\tthumbnailEmblaOptions,\n\t\tcounterFormatter,\n\t} = props;\n\n\tconst shouldCloseOnClickOutside =\n\t\tcloseOnClickOutside ?? LIGHTBOX_DEFAULT_PROPS.closeOnClickOutside;\n\n\tconst shouldTrapFocus = trapFocus ?? LIGHTBOX_DEFAULT_PROPS.trapFocus;\n\n\tconst shouldReturnFocus = returnFocus ?? LIGHTBOX_DEFAULT_PROPS.returnFocus;\n\n\tconst mergedBaseCarouselOptions = useMemo<LightboxCarouselOptions>(\n\t\t() => ({\n\t\t\t...LIGHTBOX_DEFAULT_PROPS.carouselOptions,\n\t\t\t...carouselOptions,\n\t\t\tinitialSlide,\n\t\t}),\n\t\t[carouselOptions, initialSlide],\n\t);\n\n\tconst mergedThumbnailEmblaOptions = useMemo<LightboxThumbnailEmblaOptions>(\n\t\t() => ({\n\t\t\t...LIGHTBOX_DEFAULT_PROPS.thumbnailEmblaOptions,\n\t\t\t...thumbnailEmblaOptions,\n\t\t}),\n\t\t[thumbnailEmblaOptions],\n\t);\n\n\tconst focusTrapRef = useFocusTrap(opened && shouldTrapFocus);\n\n\tconst mergedRef = useMergedRef(ref, focusTrapRef);\n\n\tuseFocusReturn({ opened, shouldReturnFocus });\n\n\tconst slidesEmblaRef = useRef<EmblaCarouselType | null>(null);\n\tconst thumbnailsEmblaRef = useRef<EmblaCarouselType | null>(null);\n\n\tconst [currentIndex, setCurrentIndex] = useState(\n\t\tmergedBaseCarouselOptions?.initialSlide ?? 0,\n\t);\n\tconst [total, setTotal] = useState<number | null>(null);\n\n\tuseHotkeys([\n\t\t[\"ArrowLeft\", () => opened && slidesEmblaRef.current?.scrollPrev()],\n\t\t[\"ArrowRight\", () => opened && slidesEmblaRef.current?.scrollNext()],\n\t\t[\"Escape\", () => opened && onClose()],\n\t]);\n\n\tconst counterText = useMemo(() => {\n\t\tif (total === null) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif (counterFormatter) {\n\t\t\treturn counterFormatter(currentIndex, total);\n\t\t}\n\n\t\treturn `${currentIndex + 1} / ${total}`;\n\t}, [counterFormatter, currentIndex, total]);\n\n\tconst handleEmblaApi = useCallback(\n\t\t(embla: EmblaCarouselType) => {\n\t\t\tslidesEmblaRef.current = embla;\n\n\t\t\tconst onInit = (api: EmblaCarouselType) => {\n\t\t\t\tsetTotal(api.slideNodes().length);\n\t\t\t\tmergedBaseCarouselOptions.getEmblaApi?.(api);\n\t\t\t};\n\n\t\t\tconst onSelect = (api: EmblaCarouselType) => {\n\t\t\t\tsetCurrentIndex(api.selectedScrollSnap());\n\t\t\t\tthumbnailsEmblaRef.current?.scrollTo(api.selectedScrollSnap());\n\t\t\t};\n\n\t\t\tconst onDestroy = () => {\n\t\t\t\tsetCurrentIndex(mergedBaseCarouselOptions?.initialSlide ?? 0);\n\t\t\t\tsetTotal(null);\n\t\t\t\tthumbnailsEmblaRef.current = null;\n\t\t\t\tslidesEmblaRef.current = null;\n\t\t\t};\n\n\t\t\tonInit(embla);\n\n\t\t\tembla.on(\"select\", onSelect);\n\t\t\tembla.on(\"destroy\", onDestroy);\n\t\t},\n\t\t[mergedBaseCarouselOptions],\n\t);\n\n\tconst handleThumbnailsEmblaApi = useCallback(\n\t\t(embla: EmblaCarouselType) => {\n\t\t\tthumbnailsEmblaRef.current = embla;\n\n\t\t\tembla.scrollTo(currentIndex);\n\t\t},\n\t\t[currentIndex],\n\t);\n\n\tconst handleThumbnailClick = useCallback((index: number) => {\n\t\tslidesEmblaRef.current?.scrollTo(index);\n\t}, []);\n\n\tconst handleOutsideClick = useCallback(() => {\n\t\tif (!shouldCloseOnClickOutside) {\n\t\t\treturn;\n\t\t}\n\n\t\tonClose();\n\t}, [shouldCloseOnClickOutside, onClose]);\n\n\tconst mergedCarouselOptions = mergedBaseCarouselOptions;\n\n\treturn {\n\t\tmergedRef,\n\t\tcurrentIndex,\n\t\tcounterText,\n\t\thandleEmblaApi,\n\t\thandleThumbnailsEmblaApi,\n\t\thandleThumbnailClick,\n\t\thandleOutsideClick,\n\t\tmergedCarouselOptions,\n\t\tmergedThumbnailEmblaOptions,\n\t};\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ 'use client';
2
+ import { LIGHTBOX_DEFAULT_PROPS } from '../Lightbox.defaults.mjs';
3
+
4
+ function useLightboxRootOptions(props) {
5
+ return {
6
+ overlayProps: {
7
+ ...LIGHTBOX_DEFAULT_PROPS.overlayProps,
8
+ ...props.overlayProps
9
+ },
10
+ transitionProps: {
11
+ ...LIGHTBOX_DEFAULT_PROPS.transitionProps,
12
+ ...props.transitionProps
13
+ }
14
+ };
15
+ }
16
+
17
+ export { useLightboxRootOptions };
18
+ //# sourceMappingURL=useLightboxRootOptions.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLightboxRootOptions.mjs","sources":["../../../src/hooks/useLightboxRootOptions.ts"],"sourcesContent":["import type { OverlayProps, TransitionOverride } from \"@mantine/core\";\nimport { LIGHTBOX_DEFAULT_PROPS } from \"../Lightbox.defaults.js\";\n\ninterface UseLightboxRootOptionsInput {\n\toverlayProps: OverlayProps | undefined;\n\ttransitionProps: TransitionOverride | undefined;\n}\n\ninterface UseLightboxRootOptionsOutput {\n\toverlayProps: OverlayProps;\n\ttransitionProps: TransitionOverride;\n}\n\nexport function useLightboxRootOptions(\n\tprops: UseLightboxRootOptionsInput,\n): UseLightboxRootOptionsOutput {\n\treturn {\n\t\toverlayProps: {\n\t\t\t...LIGHTBOX_DEFAULT_PROPS.overlayProps,\n\t\t\t...props.overlayProps,\n\t\t},\n\t\ttransitionProps: {\n\t\t\t...LIGHTBOX_DEFAULT_PROPS.transitionProps,\n\t\t\t...props.transitionProps,\n\t\t},\n\t};\n}\n"],"names":[],"mappings":";;;AAEO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAsB,CAAC,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAE,CAAA;AAC9C,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA;AACT,CAAA,CAAA,CAAA,CAAI,YAAY,CAAA,CAAE,CAAA;AAClB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAsB,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAA;AAC5C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAG,KAAK,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACf,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA;AACL,CAAA,CAAA,CAAA,CAAI,eAAe,CAAA,CAAE,CAAA;AACrB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAsB,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAe,CAAA;AAC/C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAG,KAAK,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACf,CAAA,CAAA,CAAA,CAAA,CAAA;AACA,CAAA,CAAA,CAAG,CAAA;AACH,CAAA;;"}
@@ -0,0 +1,92 @@
1
+ 'use client';
2
+ import { useRef, useCallback } from 'react';
3
+ import { isEventTargetWithinSelector, createOutsideClosePointerState, updateOutsideClosePointerState, shouldCloseFromOutsidePointerState } from '../utils/pointer.mjs';
4
+
5
+ function useSlideInteractions(props) {
6
+ const {
7
+ onClose,
8
+ onZoomPointerDown,
9
+ onZoomPointerMove,
10
+ onZoomPointerEnd,
11
+ updateCanZoomAvailability
12
+ } = props;
13
+ const outsideClosePointerRef = useRef(null);
14
+ const handleSlidePointerDown = useCallback(
15
+ (event) => {
16
+ const startedInsideContent = isEventTargetWithinSelector(
17
+ event.target,
18
+ "[data-lightbox-slide-content]"
19
+ );
20
+ outsideClosePointerRef.current = createOutsideClosePointerState({
21
+ pointerId: event.pointerId,
22
+ clientX: event.clientX,
23
+ clientY: event.clientY,
24
+ startedOutsideContent: !startedInsideContent
25
+ });
26
+ onZoomPointerDown(event);
27
+ },
28
+ [onZoomPointerDown]
29
+ );
30
+ const handleSlidePointerMove = useCallback(
31
+ (event) => {
32
+ const outsideClosePointer = outsideClosePointerRef.current;
33
+ if (outsideClosePointer && outsideClosePointer.pointerId === event.pointerId) {
34
+ outsideClosePointerRef.current = updateOutsideClosePointerState(
35
+ outsideClosePointer,
36
+ {
37
+ clientX: event.clientX,
38
+ clientY: event.clientY
39
+ }
40
+ );
41
+ }
42
+ onZoomPointerMove(event);
43
+ },
44
+ [onZoomPointerMove]
45
+ );
46
+ const handleSlidePointerUp = useCallback(
47
+ (event) => {
48
+ onZoomPointerEnd(event);
49
+ const outsideClosePointer = outsideClosePointerRef.current;
50
+ if (!outsideClosePointer || outsideClosePointer.pointerId !== event.pointerId) {
51
+ return;
52
+ }
53
+ const finalizedPointer = updateOutsideClosePointerState(
54
+ outsideClosePointer,
55
+ {
56
+ clientX: event.clientX,
57
+ clientY: event.clientY
58
+ }
59
+ );
60
+ outsideClosePointerRef.current = null;
61
+ if (shouldCloseFromOutsidePointerState(finalizedPointer)) {
62
+ onClose();
63
+ }
64
+ },
65
+ [onClose, onZoomPointerEnd]
66
+ );
67
+ const handleSlidePointerCancel = useCallback(
68
+ (event) => {
69
+ outsideClosePointerRef.current = null;
70
+ onZoomPointerEnd(event);
71
+ },
72
+ [onZoomPointerEnd]
73
+ );
74
+ const handleSlideLoadCapture = useCallback(
75
+ (event) => {
76
+ if (event.target instanceof HTMLImageElement) {
77
+ updateCanZoomAvailability();
78
+ }
79
+ },
80
+ [updateCanZoomAvailability]
81
+ );
82
+ return {
83
+ handleSlidePointerDown,
84
+ handleSlidePointerMove,
85
+ handleSlidePointerUp,
86
+ handleSlidePointerCancel,
87
+ handleSlideLoadCapture
88
+ };
89
+ }
90
+
91
+ export { useSlideInteractions };
92
+ //# sourceMappingURL=useSlideInteractions.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSlideInteractions.mjs","sources":["../../../src/hooks/useSlideInteractions.ts"],"sourcesContent":["import type { PointerEvent as ReactPointerEvent, SyntheticEvent } from \"react\";\nimport { useCallback, useRef } from \"react\";\nimport {\n\tcreateOutsideClosePointerState,\n\tisEventTargetWithinSelector,\n\ttype OutsideClosePointerState,\n\tshouldCloseFromOutsidePointerState,\n\tupdateOutsideClosePointerState,\n} from \"../utils/pointer.js\";\n\ninterface UseSlideInteractionsProps {\n\tonClose: () => void;\n\tonZoomPointerDown: (event: ReactPointerEvent<HTMLDivElement>) => void;\n\tonZoomPointerMove: (event: ReactPointerEvent<HTMLDivElement>) => void;\n\tonZoomPointerEnd: (event: ReactPointerEvent<HTMLDivElement>) => void;\n\tupdateCanZoomAvailability: () => void;\n}\n\ninterface UseSlideInteractionsReturn {\n\thandleSlidePointerDown: (event: ReactPointerEvent<HTMLDivElement>) => void;\n\thandleSlidePointerMove: (event: ReactPointerEvent<HTMLDivElement>) => void;\n\thandleSlidePointerUp: (event: ReactPointerEvent<HTMLDivElement>) => void;\n\thandleSlidePointerCancel: (event: ReactPointerEvent<HTMLDivElement>) => void;\n\thandleSlideLoadCapture: (event: SyntheticEvent<HTMLDivElement>) => void;\n}\n\n/**\n * Combines outside-content close detection with zoom pointer event delegation\n * for a single lightbox slide element.\n *\n * Tracks whether each pointer press originated outside `[data-lightbox-slide-content]`\n * and closes the lightbox on release if the pointer did not drag. Zoom pointer\n * events are forwarded to the provided zoom handlers throughout.\n */\nexport function useSlideInteractions(\n\tprops: UseSlideInteractionsProps,\n): UseSlideInteractionsReturn {\n\tconst {\n\t\tonClose,\n\t\tonZoomPointerDown,\n\t\tonZoomPointerMove,\n\t\tonZoomPointerEnd,\n\t\tupdateCanZoomAvailability,\n\t} = props;\n\n\tconst outsideClosePointerRef = useRef<OutsideClosePointerState | null>(null);\n\n\tconst handleSlidePointerDown = useCallback(\n\t\t(event: ReactPointerEvent<HTMLDivElement>) => {\n\t\t\tconst startedInsideContent = isEventTargetWithinSelector(\n\t\t\t\tevent.target,\n\t\t\t\t\"[data-lightbox-slide-content]\",\n\t\t\t);\n\n\t\t\toutsideClosePointerRef.current = createOutsideClosePointerState({\n\t\t\t\tpointerId: event.pointerId,\n\t\t\t\tclientX: event.clientX,\n\t\t\t\tclientY: event.clientY,\n\t\t\t\tstartedOutsideContent: !startedInsideContent,\n\t\t\t});\n\n\t\t\tonZoomPointerDown(event);\n\t\t},\n\t\t[onZoomPointerDown],\n\t);\n\n\tconst handleSlidePointerMove = useCallback(\n\t\t(event: ReactPointerEvent<HTMLDivElement>) => {\n\t\t\tconst outsideClosePointer = outsideClosePointerRef.current;\n\n\t\t\tif (\n\t\t\t\toutsideClosePointer &&\n\t\t\t\toutsideClosePointer.pointerId === event.pointerId\n\t\t\t) {\n\t\t\t\toutsideClosePointerRef.current = updateOutsideClosePointerState(\n\t\t\t\t\toutsideClosePointer,\n\t\t\t\t\t{\n\t\t\t\t\t\tclientX: event.clientX,\n\t\t\t\t\t\tclientY: event.clientY,\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tonZoomPointerMove(event);\n\t\t},\n\t\t[onZoomPointerMove],\n\t);\n\n\tconst handleSlidePointerUp = useCallback(\n\t\t(event: ReactPointerEvent<HTMLDivElement>) => {\n\t\t\tonZoomPointerEnd(event);\n\n\t\t\tconst outsideClosePointer = outsideClosePointerRef.current;\n\n\t\t\tif (\n\t\t\t\t!outsideClosePointer ||\n\t\t\t\toutsideClosePointer.pointerId !== event.pointerId\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst finalizedPointer = updateOutsideClosePointerState(\n\t\t\t\toutsideClosePointer,\n\t\t\t\t{\n\t\t\t\t\tclientX: event.clientX,\n\t\t\t\t\tclientY: event.clientY,\n\t\t\t\t},\n\t\t\t);\n\n\t\t\toutsideClosePointerRef.current = null;\n\n\t\t\tif (shouldCloseFromOutsidePointerState(finalizedPointer)) {\n\t\t\t\tonClose();\n\t\t\t}\n\t\t},\n\t\t[onClose, onZoomPointerEnd],\n\t);\n\n\tconst handleSlidePointerCancel = useCallback(\n\t\t(event: ReactPointerEvent<HTMLDivElement>) => {\n\t\t\toutsideClosePointerRef.current = null;\n\t\t\tonZoomPointerEnd(event);\n\t\t},\n\t\t[onZoomPointerEnd],\n\t);\n\n\tconst handleSlideLoadCapture = useCallback(\n\t\t(event: SyntheticEvent<HTMLDivElement>) => {\n\t\t\tif (event.target instanceof HTMLImageElement) {\n\t\t\t\tupdateCanZoomAvailability();\n\t\t\t}\n\t\t},\n\t\t[updateCanZoomAvailability],\n\t);\n\n\treturn {\n\t\thandleSlidePointerDown,\n\t\thandleSlidePointerMove,\n\t\thandleSlidePointerUp,\n\t\thandleSlidePointerCancel,\n\t\thandleSlideLoadCapture,\n\t};\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ 'use client';
2
+ import useEmblaCarousel from 'embla-carousel-react';
3
+ import { useRef, useState, useCallback, useEffect } from 'react';
4
+
5
+ function useThumbnails(props) {
6
+ const { emblaOptions, thumbnailsEmblaRef, initialIndex } = props;
7
+ const [emblaRef, emblaApi] = useEmblaCarousel(emblaOptions);
8
+ const viewportRef = useRef(null);
9
+ const containerRef = useRef(null);
10
+ const initialIndexRef = useRef(initialIndex);
11
+ const [hasOverflow, setHasOverflow] = useState(false);
12
+ const setViewportRef = useCallback(
13
+ (node) => {
14
+ viewportRef.current = node;
15
+ emblaRef(node);
16
+ },
17
+ [emblaRef]
18
+ );
19
+ useEffect(() => {
20
+ if (!emblaApi) {
21
+ return;
22
+ }
23
+ thumbnailsEmblaRef.current = emblaApi;
24
+ emblaApi.scrollTo(initialIndexRef.current);
25
+ }, [emblaApi, thumbnailsEmblaRef]);
26
+ useEffect(() => {
27
+ const updateOverflow = () => {
28
+ const viewport2 = viewportRef.current;
29
+ const container2 = containerRef.current;
30
+ if (!viewport2 || !container2) {
31
+ return;
32
+ }
33
+ setHasOverflow(container2.scrollWidth > viewport2.clientWidth + 1);
34
+ };
35
+ updateOverflow();
36
+ if (typeof ResizeObserver === "undefined") {
37
+ window.addEventListener("resize", updateOverflow);
38
+ return () => window.removeEventListener("resize", updateOverflow);
39
+ }
40
+ const observer = new ResizeObserver(updateOverflow);
41
+ const viewport = viewportRef.current;
42
+ const container = containerRef.current;
43
+ if (viewport) {
44
+ observer.observe(viewport);
45
+ }
46
+ if (container) {
47
+ observer.observe(container);
48
+ }
49
+ return () => observer.disconnect();
50
+ }, []);
51
+ return {
52
+ setViewportRef,
53
+ containerRef,
54
+ hasOverflow
55
+ };
56
+ }
57
+
58
+ export { useThumbnails };
59
+ //# sourceMappingURL=useThumbnails.mjs.map