@mantine-bites/lightbox 1.0.0-beta.5 → 1.0.0-beta.7

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 (132) hide show
  1. package/dist/cjs/Lightbox.cjs +141 -253
  2. package/dist/cjs/Lightbox.cjs.map +1 -1
  3. package/dist/cjs/Lightbox.context.cjs.map +1 -1
  4. package/dist/cjs/Lightbox.defaults.cjs +31 -0
  5. package/dist/cjs/Lightbox.defaults.cjs.map +1 -0
  6. package/dist/cjs/Lightbox.module.css.cjs +1 -1
  7. package/dist/cjs/LightboxSlide.cjs.map +1 -1
  8. package/dist/cjs/components/LightboxSlides.cjs +88 -0
  9. package/dist/cjs/components/LightboxSlides.cjs.map +1 -0
  10. package/dist/cjs/components/LightboxThumbnails.cjs +29 -0
  11. package/dist/cjs/components/LightboxThumbnails.cjs.map +1 -0
  12. package/dist/cjs/components/LightboxToolbar.cjs +81 -0
  13. package/dist/cjs/components/LightboxToolbar.cjs.map +1 -0
  14. package/dist/cjs/components/Pause.cjs +28 -0
  15. package/dist/cjs/components/Pause.cjs.map +1 -0
  16. package/dist/cjs/components/Play.cjs +22 -0
  17. package/dist/cjs/components/Play.cjs.map +1 -0
  18. package/dist/cjs/hooks/useAutoPlay.cjs +53 -0
  19. package/dist/cjs/hooks/useAutoPlay.cjs.map +1 -0
  20. package/dist/cjs/hooks/useCarouselOptions.cjs +30 -0
  21. package/dist/cjs/hooks/useCarouselOptions.cjs.map +1 -0
  22. package/dist/cjs/hooks/useFullscreen.cjs +39 -0
  23. package/dist/cjs/hooks/useFullscreen.cjs.map +1 -0
  24. package/dist/cjs/hooks/useKeyboardNavigation.cjs +29 -0
  25. package/dist/cjs/hooks/useKeyboardNavigation.cjs.map +1 -0
  26. package/dist/cjs/hooks/useLightbox.cjs +106 -109
  27. package/dist/cjs/hooks/useLightbox.cjs.map +1 -1
  28. package/dist/cjs/hooks/useSlideInteractions.cjs +94 -0
  29. package/dist/cjs/hooks/useSlideInteractions.cjs.map +1 -0
  30. package/dist/cjs/hooks/useZoom.cjs +25 -18
  31. package/dist/cjs/hooks/useZoom.cjs.map +1 -1
  32. package/dist/cjs/utils/fullscreen.cjs.map +1 -1
  33. package/dist/cjs/utils/zoom.cjs +44 -1
  34. package/dist/cjs/utils/zoom.cjs.map +1 -1
  35. package/dist/esm/Lightbox.context.mjs.map +1 -1
  36. package/dist/esm/Lightbox.defaults.mjs +29 -0
  37. package/dist/esm/Lightbox.defaults.mjs.map +1 -0
  38. package/dist/esm/Lightbox.mjs +142 -254
  39. package/dist/esm/Lightbox.mjs.map +1 -1
  40. package/dist/esm/Lightbox.module.css.mjs +1 -1
  41. package/dist/esm/LightboxSlide.mjs.map +1 -1
  42. package/dist/esm/components/LightboxSlides.mjs +86 -0
  43. package/dist/esm/components/LightboxSlides.mjs.map +1 -0
  44. package/dist/esm/components/LightboxThumbnails.mjs +27 -0
  45. package/dist/esm/components/LightboxThumbnails.mjs.map +1 -0
  46. package/dist/esm/components/LightboxToolbar.mjs +79 -0
  47. package/dist/esm/components/LightboxToolbar.mjs.map +1 -0
  48. package/dist/esm/components/Pause.mjs +26 -0
  49. package/dist/esm/components/Pause.mjs.map +1 -0
  50. package/dist/esm/components/Play.mjs +20 -0
  51. package/dist/esm/components/Play.mjs.map +1 -0
  52. package/dist/esm/hooks/useAutoPlay.mjs +51 -0
  53. package/dist/esm/hooks/useAutoPlay.mjs.map +1 -0
  54. package/dist/esm/hooks/useCarouselOptions.mjs +28 -0
  55. package/dist/esm/hooks/useCarouselOptions.mjs.map +1 -0
  56. package/dist/esm/hooks/useFullscreen.mjs +37 -0
  57. package/dist/esm/hooks/useFullscreen.mjs.map +1 -0
  58. package/dist/esm/hooks/useKeyboardNavigation.mjs +27 -0
  59. package/dist/esm/hooks/useKeyboardNavigation.mjs.map +1 -0
  60. package/dist/esm/hooks/useLightbox.mjs +107 -110
  61. package/dist/esm/hooks/useLightbox.mjs.map +1 -1
  62. package/dist/esm/hooks/useSlideInteractions.mjs +92 -0
  63. package/dist/esm/hooks/useSlideInteractions.mjs.map +1 -0
  64. package/dist/esm/hooks/useZoom.mjs +26 -19
  65. package/dist/esm/hooks/useZoom.mjs.map +1 -1
  66. package/dist/esm/utils/fullscreen.mjs.map +1 -1
  67. package/dist/esm/utils/zoom.mjs +38 -2
  68. package/dist/esm/utils/zoom.mjs.map +1 -1
  69. package/dist/styles.css +1 -1
  70. package/dist/styles.layer.css +1 -1
  71. package/dist/types/Lightbox.context.d.ts +27 -0
  72. package/dist/types/Lightbox.context.d.ts.map +1 -1
  73. package/dist/types/Lightbox.d.ts +81 -15
  74. package/dist/types/Lightbox.d.ts.map +1 -1
  75. package/dist/types/Lightbox.defaults.d.ts +26 -0
  76. package/dist/types/Lightbox.defaults.d.ts.map +1 -0
  77. package/dist/types/Lightbox.story.d.ts +1 -0
  78. package/dist/types/Lightbox.story.d.ts.map +1 -1
  79. package/dist/types/LightboxSlide.d.ts +1 -1
  80. package/dist/types/LightboxSlide.d.ts.map +1 -1
  81. package/dist/types/components/LightboxSlides.d.ts +2 -0
  82. package/dist/types/components/LightboxSlides.d.ts.map +1 -0
  83. package/dist/types/components/LightboxThumbnails.d.ts +2 -0
  84. package/dist/types/components/LightboxThumbnails.d.ts.map +1 -0
  85. package/dist/types/components/LightboxToolbar.d.ts +2 -0
  86. package/dist/types/components/LightboxToolbar.d.ts.map +1 -0
  87. package/dist/types/components/Pause.d.ts +3 -0
  88. package/dist/types/components/Pause.d.ts.map +1 -0
  89. package/dist/types/components/Play.d.ts +3 -0
  90. package/dist/types/components/Play.d.ts.map +1 -0
  91. package/dist/types/hooks/useAutoPlay.d.ts +10 -0
  92. package/dist/types/hooks/useAutoPlay.d.ts.map +1 -0
  93. package/dist/types/hooks/useAutoPlay.test.d.ts +2 -0
  94. package/dist/types/hooks/useAutoPlay.test.d.ts.map +1 -0
  95. package/dist/types/hooks/useCarouselOptions.d.ts +20 -0
  96. package/dist/types/hooks/useCarouselOptions.d.ts.map +1 -0
  97. package/dist/types/hooks/useFullscreen.d.ts +11 -0
  98. package/dist/types/hooks/useFullscreen.d.ts.map +1 -0
  99. package/dist/types/hooks/useKeyboardNavigation.d.ts +10 -0
  100. package/dist/types/hooks/useKeyboardNavigation.d.ts.map +1 -0
  101. package/dist/types/hooks/useLightbox.d.ts +40 -22
  102. package/dist/types/hooks/useLightbox.d.ts.map +1 -1
  103. package/dist/types/hooks/useSlideInteractions.d.ts +26 -0
  104. package/dist/types/hooks/useSlideInteractions.d.ts.map +1 -0
  105. package/dist/types/hooks/useZoom.d.ts +9 -2
  106. package/dist/types/hooks/useZoom.d.ts.map +1 -1
  107. package/dist/types/index.d.mts +1 -1
  108. package/dist/types/index.d.ts +1 -1
  109. package/dist/types/index.d.ts.map +1 -1
  110. package/dist/types/utils/fullscreen.d.ts +16 -0
  111. package/dist/types/utils/fullscreen.d.ts.map +1 -1
  112. package/dist/types/utils/zoom.d.ts +88 -0
  113. package/dist/types/utils/zoom.d.ts.map +1 -1
  114. package/package.json +2 -1
  115. package/dist/cjs/components/ChevronLeft.cjs +0 -24
  116. package/dist/cjs/components/ChevronLeft.cjs.map +0 -1
  117. package/dist/cjs/components/ChevronRight.cjs +0 -24
  118. package/dist/cjs/components/ChevronRight.cjs.map +0 -1
  119. package/dist/cjs/hooks/useLightboxSlide.cjs +0 -21
  120. package/dist/cjs/hooks/useLightboxSlide.cjs.map +0 -1
  121. package/dist/esm/components/ChevronLeft.mjs +0 -22
  122. package/dist/esm/components/ChevronLeft.mjs.map +0 -1
  123. package/dist/esm/components/ChevronRight.mjs +0 -22
  124. package/dist/esm/components/ChevronRight.mjs.map +0 -1
  125. package/dist/esm/hooks/useLightboxSlide.mjs +0 -19
  126. package/dist/esm/hooks/useLightboxSlide.mjs.map +0 -1
  127. package/dist/types/components/ChevronLeft.d.ts +0 -2
  128. package/dist/types/components/ChevronLeft.d.ts.map +0 -1
  129. package/dist/types/components/ChevronRight.d.ts +0 -2
  130. package/dist/types/components/ChevronRight.d.ts.map +0 -1
  131. package/dist/types/hooks/useLightboxSlide.d.ts +0 -357
  132. package/dist/types/hooks/useLightboxSlide.d.ts.map +0 -1
@@ -4,33 +4,37 @@
4
4
  var jsxRuntime = require('react/jsx-runtime');
5
5
  var carousel = require('@mantine/carousel');
6
6
  var core = require('@mantine/core');
7
- var react = require('react');
8
- var EnterFullscreen = require('./components/EnterFullscreen.cjs');
9
- var ExitFullscreen = require('./components/ExitFullscreen.cjs');
10
- var QuestionMark = require('./components/QuestionMark.cjs');
11
- var ZoomIn = require('./components/ZoomIn.cjs');
12
- var ZoomOut = require('./components/ZoomOut.cjs');
13
- var useZoom = require('./hooks/useZoom.cjs');
7
+ var LightboxSlides = require('./components/LightboxSlides.cjs');
8
+ var LightboxThumbnails = require('./components/LightboxThumbnails.cjs');
9
+ var LightboxToolbar = require('./components/LightboxToolbar.cjs');
10
+ var useLightbox = require('./hooks/useLightbox.cjs');
14
11
  var Lightbox_context = require('./Lightbox.context.cjs');
12
+ var Lightbox_defaults = require('./Lightbox.defaults.cjs');
15
13
  var Lightbox_module = require('./Lightbox.module.css.cjs');
16
14
  var LightboxSlide = require('./LightboxSlide.cjs');
17
- var fullscreen = require('./utils/fullscreen.cjs');
18
- var zoom = require('./utils/zoom.cjs');
19
15
 
20
- const defaultProps = {
21
- withThumbnails: true,
22
- withCounter: true,
23
- withFullscreen: true,
24
- withZoom: true,
25
- carouselOptions: {
26
- controlSize: 36
27
- }
28
- };
16
+ const defaultProps = Lightbox_defaults.LIGHTBOX_DEFAULT_PROPS;
17
+ const varsResolver = core.createVarsResolver(
18
+ (_, { overlayProps }) => ({
19
+ root: {
20
+ "--lightbox-z-index": String(
21
+ overlayProps?.zIndex ?? Lightbox_defaults.LIGHTBOX_DEFAULT_PROPS.overlayProps.zIndex
22
+ )
23
+ },
24
+ overlay: {
25
+ "--lightbox-z-index": String(
26
+ overlayProps?.zIndex ?? Lightbox_defaults.LIGHTBOX_DEFAULT_PROPS.overlayProps.zIndex
27
+ ),
28
+ "--overlay-z-index": "var(--lightbox-z-index)"
29
+ }
30
+ })
31
+ );
29
32
  const Lightbox = core.factory((_props, ref) => {
30
33
  const props = core.useProps("Lightbox", defaultProps, _props);
31
34
  const {
32
35
  opened,
33
36
  onClose,
37
+ closeOnClickOutside,
34
38
  classNames,
35
39
  className,
36
40
  style,
@@ -44,13 +48,20 @@ const Lightbox = core.factory((_props, ref) => {
44
48
  withZoom,
45
49
  counterFormatter,
46
50
  carouselOptions,
47
- modalOptions,
48
- ...others
51
+ overlayProps,
52
+ transitionProps,
53
+ keepMounted,
54
+ trapFocus,
55
+ lockScroll,
56
+ returnFocus,
57
+ withinPortal,
58
+ portalProps
49
59
  } = props;
50
60
  const getStyles = core.useStyles({
51
61
  name: "Lightbox",
52
62
  classes: Lightbox_module,
53
63
  props,
64
+ varsResolver,
54
65
  className,
55
66
  style,
56
67
  classNames,
@@ -58,258 +69,135 @@ const Lightbox = core.factory((_props, ref) => {
58
69
  unstyled,
59
70
  vars
60
71
  });
61
- const emblaRef = react.useRef(null);
62
- const [currentIndex, setCurrentIndex] = react.useState(
63
- carouselOptions?.initialSlide ?? 0
64
- );
65
- const [isFullscreen, setIsFullscreen] = react.useState(fullscreen.isBrowserFullscreen);
72
+ const _carouselOptions = {
73
+ ...Lightbox_defaults.LIGHTBOX_DEFAULT_PROPS.carouselOptions,
74
+ ...carouselOptions
75
+ };
76
+ const _overlayProps = {
77
+ ...Lightbox_defaults.LIGHTBOX_DEFAULT_PROPS.overlayProps,
78
+ ...overlayProps
79
+ };
80
+ const _transitionProps = {
81
+ ...Lightbox_defaults.LIGHTBOX_DEFAULT_PROPS.transitionProps,
82
+ ...transitionProps
83
+ };
66
84
  const {
85
+ mergedRef,
86
+ slides,
87
+ currentIndex,
88
+ counterText,
89
+ isFullscreen,
90
+ canUseFullscreen,
91
+ toggleFullscreen,
67
92
  isZoomed,
68
93
  isDraggingZoom,
69
94
  zoomOffset,
70
95
  zoomScale,
71
96
  canZoomCurrent,
72
- isZoomedRef,
73
97
  activeZoomContainerRef,
74
- resetZoom,
75
98
  toggleZoom,
76
99
  updateCanZoomAvailability,
77
100
  handleZoomPointerDown,
78
101
  handleZoomPointerMove,
79
- handleZoomPointerEnd
80
- } = useZoom.useZoom({ opened });
81
- const slides = react.Children.toArray(children).filter(react.isValidElement);
82
- const total = slides.length;
83
- const canUseFullscreen = fullscreen.canToggleBrowserFullscreen();
84
- const counterText = counterFormatter ? counterFormatter(currentIndex, total) : `${currentIndex + 1} / ${total}`;
85
- const handleEmblaApi = react.useCallback(
86
- (embla) => {
87
- emblaRef.current = embla;
88
- carouselOptions?.getEmblaApi?.(embla);
89
- },
90
- [carouselOptions?.getEmblaApi]
91
- );
92
- const toggleFullscreen = react.useCallback(async () => {
93
- if (!canUseFullscreen) {
94
- return;
95
- }
96
- await fullscreen.toggleBrowserFullscreen();
97
- }, [canUseFullscreen]);
98
- const handleSlideChange = react.useCallback(
99
- (index) => {
100
- setCurrentIndex(index);
101
- resetZoom();
102
- requestAnimationFrame(updateCanZoomAvailability);
103
- carouselOptions?.onSlideChange?.(index);
104
- },
105
- [carouselOptions?.onSlideChange, resetZoom, updateCanZoomAvailability]
106
- );
107
- react.useEffect(() => {
108
- if (!opened) {
109
- return;
110
- }
111
- const handleKeyDown = (event) => {
112
- if (event.key === "ArrowLeft") {
113
- emblaRef.current?.scrollPrev();
114
- } else if (event.key === "ArrowRight") {
115
- emblaRef.current?.scrollNext();
116
- }
117
- };
118
- document.addEventListener("keydown", handleKeyDown);
119
- return () => document.removeEventListener("keydown", handleKeyDown);
120
- }, [opened]);
121
- react.useEffect(() => {
122
- const handleFullscreenChange = () => {
123
- setIsFullscreen(fullscreen.isBrowserFullscreen());
124
- };
125
- document.addEventListener("fullscreenchange", handleFullscreenChange);
126
- return () => document.removeEventListener("fullscreenchange", handleFullscreenChange);
127
- }, []);
128
- react.useEffect(() => {
129
- if (!opened) {
130
- setCurrentIndex(carouselOptions?.initialSlide ?? 0);
131
- void fullscreen.exitBrowserFullscreenIfActive();
132
- }
133
- }, [opened, carouselOptions?.initialSlide]);
134
- const renderedSlides = slides.map((slide, index) => {
135
- const isActive = index === currentIndex;
136
- const isActiveAndZoomed = isActive && isZoomed;
137
- const typedSlide = slide;
138
- const slideProps = typedSlide.props;
139
- return react.cloneElement(typedSlide, {
140
- children: /* @__PURE__ */ jsxRuntime.jsx(
141
- core.Box,
142
- {
143
- ref: isActive ? activeZoomContainerRef : void 0,
144
- ...getStyles("zoomContainer"),
145
- "data-active": isActive || void 0,
146
- "data-zoomed": isActiveAndZoomed || void 0,
147
- "data-can-zoom": isActive ? String(canZoomCurrent) : void 0,
148
- "data-dragging": isDraggingZoom && isActiveAndZoomed || void 0,
149
- onPointerDown: (event) => handleZoomPointerDown(
150
- event,
151
- isActive,
152
- isActiveAndZoomed,
153
- isActive ? canZoomCurrent : false
154
- ),
155
- onPointerMove: (event) => handleZoomPointerMove(event, isActiveAndZoomed),
156
- onPointerUp: handleZoomPointerEnd,
157
- onPointerCancel: handleZoomPointerEnd,
158
- onLoadCapture: (event) => {
159
- if (isActive && event.target instanceof HTMLImageElement) {
160
- updateCanZoomAvailability();
161
- }
162
- },
163
- children: /* @__PURE__ */ jsxRuntime.jsx(
164
- core.Box,
165
- {
166
- ...getStyles("zoomContent"),
167
- style: {
168
- transform: zoom.getZoomTransform({
169
- isZoomed: isActiveAndZoomed,
170
- offset: zoomOffset,
171
- scale: zoomScale
172
- })
173
- },
174
- children: slideProps.children
175
- }
176
- )
177
- }
178
- )
179
- });
102
+ handleZoomPointerEnd,
103
+ handleEmblaApi,
104
+ handleSlideChange,
105
+ handleThumbnailClick,
106
+ handleOutsideClick,
107
+ isPlaying,
108
+ canUseAutoPlay,
109
+ toggleAutoPlay,
110
+ mergedCarouselOptions
111
+ } = useLightbox.useLightbox({
112
+ ref,
113
+ opened,
114
+ onClose,
115
+ closeOnClickOutside,
116
+ trapFocus,
117
+ returnFocus,
118
+ children,
119
+ carouselOptions: _carouselOptions,
120
+ counterFormatter
180
121
  });
181
- const mergedCarouselOptions = react.useMemo(
182
- () => ({
183
- ...carouselOptions,
184
- emblaOptions: {
185
- ...carouselOptions?.emblaOptions,
186
- watchDrag: (emblaApi, event) => {
187
- if (isZoomedRef.current) {
188
- return false;
189
- }
190
- const configuredWatchDrag = carouselOptions?.emblaOptions?.watchDrag;
191
- if (typeof configuredWatchDrag === "function") {
192
- return configuredWatchDrag(emblaApi, event);
193
- }
194
- return configuredWatchDrag ?? true;
195
- }
196
- }
197
- }),
198
- [carouselOptions, isZoomedRef]
199
- );
200
- const handleThumbnailClick = react.useCallback(
201
- (index) => {
202
- if (isZoomed) {
203
- resetZoom();
204
- }
205
- emblaRef.current?.scrollTo(index);
206
- },
207
- [isZoomed, resetZoom]
208
- );
209
- return /* @__PURE__ */ jsxRuntime.jsx(
210
- core.Modal,
122
+ return /* @__PURE__ */ jsxRuntime.jsx(core.OptionalPortal, { ...portalProps, withinPortal, children: /* @__PURE__ */ jsxRuntime.jsx(
123
+ core.Transition,
211
124
  {
212
- centered: true,
213
- radius: 0,
214
- padding: 0,
215
- xOffset: 0,
216
- yOffset: 0,
217
- ...modalOptions,
218
- opened,
219
- onClose,
220
- fullScreen: true,
221
- title: void 0,
222
- withCloseButton: false,
223
- overlayProps: {
224
- backgroundOpacity: 0.95,
225
- color: "#18181B",
226
- ...modalOptions?.overlayProps
227
- },
228
- styles: {
229
- ...modalOptions?.styles,
230
- inner: {
231
- ...modalOptions?.styles?.inner,
232
- left: 0,
233
- right: 0
234
- },
235
- content: {
236
- ...modalOptions?.styles?.content,
237
- background: "transparent"
238
- }
239
- },
240
- children: /* @__PURE__ */ jsxRuntime.jsx(Lightbox_context.LightboxProvider, { value: { getStyles }, children: /* @__PURE__ */ jsxRuntime.jsxs(core.Box, { ref, ...getStyles("root"), ...others, children: [
241
- /* @__PURE__ */ jsxRuntime.jsxs(core.ActionIcon.Group, { ...getStyles("toolbar"), children: [
242
- withFullscreen && /* @__PURE__ */ jsxRuntime.jsx(
243
- core.ActionIcon,
244
- {
245
- variant: "default",
246
- size: "lg",
247
- onClick: toggleFullscreen,
248
- "aria-label": `${isFullscreen ? "Exit" : "Enter"} fullscreen`,
249
- disabled: !canUseFullscreen,
250
- ...getStyles("fullscreenButton"),
251
- children: isFullscreen ? /* @__PURE__ */ jsxRuntime.jsx(ExitFullscreen.ExitFullscreen, {}) : /* @__PURE__ */ jsxRuntime.jsx(EnterFullscreen.EnterFullscreen, {})
252
- }
253
- ),
254
- withZoom && /* @__PURE__ */ jsxRuntime.jsx(
255
- core.ActionIcon,
256
- {
257
- variant: "default",
258
- size: "lg",
259
- onClick: toggleZoom,
260
- "aria-label": isZoomed ? "Zoom out" : "Zoom in",
261
- disabled: !canZoomCurrent,
262
- ...getStyles("zoomButton"),
263
- children: isZoomed ? /* @__PURE__ */ jsxRuntime.jsx(ZoomOut.ZoomOut, {}) : /* @__PURE__ */ jsxRuntime.jsx(ZoomIn.ZoomIn, {})
264
- }
265
- ),
266
- /* @__PURE__ */ jsxRuntime.jsx(
267
- core.ActionIcon,
268
- {
269
- variant: "default",
270
- size: "lg",
271
- onClick: onClose,
272
- "aria-label": "Close lightbox",
273
- ...getStyles("closeButton"),
274
- children: /* @__PURE__ */ jsxRuntime.jsx(core.CloseIcon, {})
275
- }
276
- )
277
- ] }),
278
- withCounter && /* @__PURE__ */ jsxRuntime.jsx(core.Text, { size: "sm", ...getStyles("counter"), children: counterText }),
125
+ ..._transitionProps,
126
+ mounted: opened,
127
+ keepMounted,
128
+ children: (transitionStyles) => /* @__PURE__ */ jsxRuntime.jsxs(core.RemoveScroll, { enabled: lockScroll, children: [
279
129
  /* @__PURE__ */ jsxRuntime.jsx(
280
- carousel.Carousel,
130
+ core.Overlay,
281
131
  {
282
- slideGap: 0,
283
- includeGapInSize: false,
284
- withIndicators: false,
285
- slideSize: "100%",
286
- height: "100%",
287
- ...mergedCarouselOptions,
288
- ...getStyles("slides"),
289
- withKeyboardEvents: false,
290
- onSlideChange: handleSlideChange,
291
- getEmblaApi: handleEmblaApi,
292
- children: renderedSlides
132
+ ..._overlayProps,
133
+ ...getStyles("overlay", {
134
+ className: _overlayProps.className,
135
+ style: [transitionStyles, overlayProps?.style]
136
+ })
293
137
  }
294
138
  ),
295
- withThumbnails && /* @__PURE__ */ jsxRuntime.jsx(core.Box, { ...getStyles("thumbnails"), children: slides.map((slide, i) => {
296
- const { thumbnail } = slide.props;
297
- return /* @__PURE__ */ jsxRuntime.jsx(
298
- core.UnstyledButton,
299
- {
300
- onClick: () => handleThumbnailClick(i),
301
- "aria-label": `Go to slide ${i + 1}`,
302
- "aria-current": i === currentIndex ? "true" : void 0,
303
- "data-active": i === currentIndex || void 0,
304
- ...getStyles("thumbnailButton"),
305
- children: thumbnail ?? /* @__PURE__ */ jsxRuntime.jsx(core.Box, { ...getStyles("thumbnailPlaceholder"), children: /* @__PURE__ */ jsxRuntime.jsx(QuestionMark.QuestionMark, {}) })
139
+ /* @__PURE__ */ jsxRuntime.jsx(
140
+ Lightbox_context.LightboxProvider,
141
+ {
142
+ value: {
143
+ getStyles,
144
+ slides,
145
+ currentIndex,
146
+ withFullscreen,
147
+ withZoom,
148
+ isFullscreen,
149
+ canUseFullscreen,
150
+ onToggleFullscreen: toggleFullscreen,
151
+ onToggleZoom: toggleZoom,
152
+ isZoomed,
153
+ isDraggingZoom,
154
+ canZoomCurrent,
155
+ zoomOffset,
156
+ zoomScale,
157
+ activeZoomContainerRef,
158
+ updateCanZoomAvailability,
159
+ handleZoomPointerDown,
160
+ handleZoomPointerMove,
161
+ handleZoomPointerEnd,
162
+ onClose,
163
+ handleOutsideClick,
164
+ onThumbnailClick: handleThumbnailClick,
165
+ canUseAutoPlay,
166
+ isPlaying,
167
+ onToggleAutoPlay: toggleAutoPlay
306
168
  },
307
- slide.key ?? i
308
- );
309
- }) })
310
- ] }) })
169
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
170
+ core.Box,
171
+ {
172
+ ref: mergedRef,
173
+ ...getStyles("root", { style: transitionStyles }),
174
+ children: [
175
+ /* @__PURE__ */ jsxRuntime.jsx(LightboxToolbar.LightboxToolbar, {}),
176
+ withCounter && /* @__PURE__ */ jsxRuntime.jsx(core.Text, { size: "sm", ...getStyles("counter"), children: counterText }),
177
+ /* @__PURE__ */ jsxRuntime.jsx(
178
+ carousel.Carousel,
179
+ {
180
+ includeGapInSize: false,
181
+ slideSize: "100%",
182
+ height: "100%",
183
+ ...mergedCarouselOptions,
184
+ ...getStyles("slides"),
185
+ withIndicators: false,
186
+ withKeyboardEvents: false,
187
+ onSlideChange: handleSlideChange,
188
+ getEmblaApi: handleEmblaApi,
189
+ children: /* @__PURE__ */ jsxRuntime.jsx(LightboxSlides.LightboxSlides, {})
190
+ }
191
+ ),
192
+ withThumbnails && /* @__PURE__ */ jsxRuntime.jsx(LightboxThumbnails.LightboxThumbnails, {})
193
+ ]
194
+ }
195
+ )
196
+ }
197
+ )
198
+ ] })
311
199
  }
312
- );
200
+ ) });
313
201
  });
314
202
  Lightbox.displayName = "Lightbox";
315
203
  Lightbox.classes = Lightbox_module;