@mantine-bites/lightbox 1.0.0-beta.9 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -8
- package/dist/cjs/Lightbox.cjs +41 -201
- package/dist/cjs/Lightbox.cjs.map +1 -1
- package/dist/cjs/Lightbox.context-value.cjs +47 -0
- package/dist/cjs/Lightbox.context-value.cjs.map +1 -0
- package/dist/cjs/Lightbox.context.cjs.map +1 -1
- package/dist/cjs/Lightbox.defaults.cjs +3 -8
- package/dist/cjs/Lightbox.defaults.cjs.map +1 -1
- package/dist/cjs/Lightbox.module.css.cjs +1 -1
- package/dist/cjs/LightboxSlide.cjs +72 -5
- package/dist/cjs/LightboxSlide.cjs.map +1 -1
- package/dist/cjs/LightboxSlide.context.cjs +12 -0
- package/dist/cjs/LightboxSlide.context.cjs.map +1 -0
- package/dist/cjs/components/LightboxAutoplayButton.cjs +43 -0
- package/dist/cjs/components/LightboxAutoplayButton.cjs.map +1 -0
- package/dist/cjs/components/LightboxCarousel.cjs +29 -0
- package/dist/cjs/components/LightboxCarousel.cjs.map +1 -0
- package/dist/cjs/components/LightboxCarouselSlide.context.cjs +12 -0
- package/dist/cjs/components/LightboxCarouselSlide.context.cjs.map +1 -0
- package/dist/cjs/components/LightboxCloseButton.cjs +33 -0
- package/dist/cjs/components/LightboxCloseButton.cjs.map +1 -0
- package/dist/cjs/components/LightboxContent.cjs +38 -0
- package/dist/cjs/components/LightboxContent.cjs.map +1 -0
- package/dist/cjs/components/LightboxControls.cjs +68 -0
- package/dist/cjs/components/LightboxControls.cjs.map +1 -0
- package/dist/cjs/components/LightboxCounter.cjs +34 -0
- package/dist/cjs/components/LightboxCounter.cjs.map +1 -0
- package/dist/cjs/components/LightboxFullscreenButton.cjs +41 -0
- package/dist/cjs/components/LightboxFullscreenButton.cjs.map +1 -0
- package/dist/cjs/components/LightboxOverlay.cjs +40 -0
- package/dist/cjs/components/LightboxOverlay.cjs.map +1 -0
- package/dist/cjs/components/LightboxPreset.cjs +32 -0
- package/dist/cjs/components/LightboxPreset.cjs.map +1 -0
- package/dist/cjs/components/LightboxRoot.cjs +260 -0
- package/dist/cjs/components/LightboxRoot.cjs.map +1 -0
- package/dist/cjs/components/LightboxSlide.cjs +154 -0
- package/dist/cjs/components/LightboxSlide.cjs.map +1 -0
- package/dist/cjs/components/LightboxSlide.context.cjs +12 -0
- package/dist/cjs/components/LightboxSlide.context.cjs.map +1 -0
- package/dist/cjs/components/LightboxSlides.cjs +97 -77
- package/dist/cjs/components/LightboxSlides.cjs.map +1 -1
- package/dist/cjs/components/LightboxThumbnail.cjs +40 -0
- package/dist/cjs/components/LightboxThumbnail.cjs.map +1 -0
- package/dist/cjs/components/LightboxThumbnail.context.cjs +12 -0
- package/dist/cjs/components/LightboxThumbnail.context.cjs.map +1 -0
- package/dist/cjs/components/LightboxThumbnails.cjs +110 -32
- package/dist/cjs/components/LightboxThumbnails.cjs.map +1 -1
- package/dist/cjs/components/LightboxToolbar.cjs +83 -70
- package/dist/cjs/components/LightboxToolbar.cjs.map +1 -1
- package/dist/cjs/components/LightboxZoomButton.cjs +39 -0
- package/dist/cjs/components/LightboxZoomButton.cjs.map +1 -0
- package/dist/cjs/components/icons/EnterFullscreen.cjs +30 -0
- package/dist/cjs/components/icons/EnterFullscreen.cjs.map +1 -0
- package/dist/cjs/components/icons/ExitFullscreen.cjs +30 -0
- package/dist/cjs/components/icons/ExitFullscreen.cjs.map +1 -0
- package/dist/cjs/components/icons/Pause.cjs +28 -0
- package/dist/cjs/components/icons/Pause.cjs.map +1 -0
- package/dist/cjs/components/icons/Play.cjs +22 -0
- package/dist/cjs/components/icons/Play.cjs.map +1 -0
- package/dist/cjs/components/icons/ZoomIn.cjs +30 -0
- package/dist/cjs/components/icons/ZoomIn.cjs.map +1 -0
- package/dist/cjs/components/icons/ZoomOut.cjs +29 -0
- package/dist/cjs/components/icons/ZoomOut.cjs.map +1 -0
- package/dist/cjs/context/LightboxContext.cjs +12 -0
- package/dist/cjs/context/LightboxContext.cjs.map +1 -0
- package/dist/cjs/context/LightboxSlideContext.cjs +12 -0
- package/dist/cjs/context/LightboxSlideContext.cjs.map +1 -0
- package/dist/cjs/context/LightboxThumbnailContext.cjs +12 -0
- package/dist/cjs/context/LightboxThumbnailContext.cjs.map +1 -0
- package/dist/cjs/hooks/useAutoPlay.cjs +30 -15
- package/dist/cjs/hooks/useAutoPlay.cjs.map +1 -1
- package/dist/cjs/hooks/useLightbox.cjs +62 -117
- package/dist/cjs/hooks/useLightbox.cjs.map +1 -1
- package/dist/cjs/hooks/useLightboxRootOptions.cjs +20 -0
- package/dist/cjs/hooks/useLightboxRootOptions.cjs.map +1 -0
- package/dist/cjs/hooks/useSlideInteractions.cjs +13 -13
- package/dist/cjs/hooks/useSlideInteractions.cjs.map +1 -1
- package/dist/cjs/hooks/useThumbnails.cjs +14 -11
- package/dist/cjs/hooks/useThumbnails.cjs.map +1 -1
- package/dist/cjs/hooks/useZoom.cjs +37 -38
- package/dist/cjs/hooks/useZoom.cjs.map +1 -1
- package/dist/cjs/index.cjs +26 -2
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/styles/Lightbox.module.css.cjs +7 -0
- package/dist/cjs/styles/Lightbox.module.css.cjs.map +1 -0
- package/dist/cjs/utils/pointer.cjs +50 -0
- package/dist/cjs/utils/pointer.cjs.map +1 -0
- package/dist/cjs/utils/zoom.cjs +2 -51
- package/dist/cjs/utils/zoom.cjs.map +1 -1
- package/dist/esm/Lightbox.context-value.mjs +45 -0
- package/dist/esm/Lightbox.context-value.mjs.map +1 -0
- package/dist/esm/Lightbox.context.mjs.map +1 -1
- package/dist/esm/Lightbox.defaults.mjs +3 -8
- package/dist/esm/Lightbox.defaults.mjs.map +1 -1
- package/dist/esm/Lightbox.mjs +43 -203
- package/dist/esm/Lightbox.mjs.map +1 -1
- package/dist/esm/Lightbox.module.css.mjs +1 -1
- package/dist/esm/LightboxSlide.context.mjs +9 -0
- package/dist/esm/LightboxSlide.context.mjs.map +1 -0
- package/dist/esm/LightboxSlide.mjs +73 -6
- package/dist/esm/LightboxSlide.mjs.map +1 -1
- package/dist/esm/components/LightboxAutoplayButton.mjs +41 -0
- package/dist/esm/components/LightboxAutoplayButton.mjs.map +1 -0
- package/dist/esm/components/LightboxCarousel.mjs +27 -0
- package/dist/esm/components/LightboxCarousel.mjs.map +1 -0
- package/dist/esm/components/LightboxCarouselSlide.context.mjs +9 -0
- package/dist/esm/components/LightboxCarouselSlide.context.mjs.map +1 -0
- package/dist/esm/components/LightboxCloseButton.mjs +31 -0
- package/dist/esm/components/LightboxCloseButton.mjs.map +1 -0
- package/dist/esm/components/LightboxContent.mjs +36 -0
- package/dist/esm/components/LightboxContent.mjs.map +1 -0
- package/dist/esm/components/LightboxControls.mjs +66 -0
- package/dist/esm/components/LightboxControls.mjs.map +1 -0
- package/dist/esm/components/LightboxCounter.mjs +32 -0
- package/dist/esm/components/LightboxCounter.mjs.map +1 -0
- package/dist/esm/components/LightboxFullscreenButton.mjs +39 -0
- package/dist/esm/components/LightboxFullscreenButton.mjs.map +1 -0
- package/dist/esm/components/LightboxOverlay.mjs +38 -0
- package/dist/esm/components/LightboxOverlay.mjs.map +1 -0
- package/dist/esm/components/LightboxPreset.mjs +30 -0
- package/dist/esm/components/LightboxPreset.mjs.map +1 -0
- package/dist/esm/components/LightboxRoot.mjs +258 -0
- package/dist/esm/components/LightboxRoot.mjs.map +1 -0
- package/dist/esm/components/LightboxSlide.context.mjs +9 -0
- package/dist/esm/components/LightboxSlide.context.mjs.map +1 -0
- package/dist/esm/components/LightboxSlide.mjs +152 -0
- package/dist/esm/components/LightboxSlide.mjs.map +1 -0
- package/dist/esm/components/LightboxSlides.mjs +98 -78
- package/dist/esm/components/LightboxSlides.mjs.map +1 -1
- package/dist/esm/components/LightboxThumbnail.context.mjs +9 -0
- package/dist/esm/components/LightboxThumbnail.context.mjs.map +1 -0
- package/dist/esm/components/LightboxThumbnail.mjs +38 -0
- package/dist/esm/components/LightboxThumbnail.mjs.map +1 -0
- package/dist/esm/components/LightboxThumbnails.mjs +111 -33
- package/dist/esm/components/LightboxThumbnails.mjs.map +1 -1
- package/dist/esm/components/LightboxToolbar.mjs +85 -72
- package/dist/esm/components/LightboxToolbar.mjs.map +1 -1
- package/dist/esm/components/LightboxZoomButton.mjs +37 -0
- package/dist/esm/components/LightboxZoomButton.mjs.map +1 -0
- package/dist/esm/components/icons/EnterFullscreen.mjs +28 -0
- package/dist/esm/components/icons/EnterFullscreen.mjs.map +1 -0
- package/dist/esm/components/icons/ExitFullscreen.mjs +28 -0
- package/dist/esm/components/icons/ExitFullscreen.mjs.map +1 -0
- package/dist/esm/components/icons/Pause.mjs +26 -0
- package/dist/esm/components/icons/Pause.mjs.map +1 -0
- package/dist/esm/components/icons/Play.mjs +20 -0
- package/dist/esm/components/icons/Play.mjs.map +1 -0
- package/dist/esm/components/icons/ZoomIn.mjs +28 -0
- package/dist/esm/components/icons/ZoomIn.mjs.map +1 -0
- package/dist/esm/components/icons/ZoomOut.mjs +27 -0
- package/dist/esm/components/icons/ZoomOut.mjs.map +1 -0
- package/dist/esm/context/LightboxContext.mjs +9 -0
- package/dist/esm/context/LightboxContext.mjs.map +1 -0
- package/dist/esm/context/LightboxSlideContext.mjs +9 -0
- package/dist/esm/context/LightboxSlideContext.mjs.map +1 -0
- package/dist/esm/context/LightboxThumbnailContext.mjs +9 -0
- package/dist/esm/context/LightboxThumbnailContext.mjs.map +1 -0
- package/dist/esm/hooks/useAutoPlay.mjs +22 -7
- package/dist/esm/hooks/useAutoPlay.mjs.map +1 -1
- package/dist/esm/hooks/useLightbox.mjs +58 -113
- package/dist/esm/hooks/useLightbox.mjs.map +1 -1
- package/dist/esm/hooks/useLightboxRootOptions.mjs +18 -0
- package/dist/esm/hooks/useLightboxRootOptions.mjs.map +1 -0
- package/dist/esm/hooks/useSlideInteractions.mjs +1 -1
- package/dist/esm/hooks/useSlideInteractions.mjs.map +1 -1
- package/dist/esm/hooks/useThumbnails.mjs +7 -4
- package/dist/esm/hooks/useThumbnails.mjs.map +1 -1
- package/dist/esm/hooks/useZoom.mjs +6 -7
- package/dist/esm/hooks/useZoom.mjs.map +1 -1
- package/dist/esm/index.mjs +13 -1
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/styles/Lightbox.module.css.mjs +5 -0
- package/dist/esm/styles/Lightbox.module.css.mjs.map +1 -0
- package/dist/esm/utils/pointer.mjs +41 -0
- package/dist/esm/utils/pointer.mjs.map +1 -0
- package/dist/esm/utils/zoom.mjs +3 -44
- package/dist/esm/utils/zoom.mjs.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/styles.layer.css +1 -1
- package/dist/types/Lightbox.context-value.d.ts +16 -0
- package/dist/types/Lightbox.context-value.d.ts.map +1 -0
- package/dist/types/Lightbox.context.d.ts +17 -15
- package/dist/types/Lightbox.context.d.ts.map +1 -1
- package/dist/types/Lightbox.d.ts +56 -97
- package/dist/types/Lightbox.d.ts.map +1 -1
- package/dist/types/Lightbox.defaults.d.ts +3 -8
- package/dist/types/Lightbox.defaults.d.ts.map +1 -1
- package/dist/types/Lightbox.story.d.ts +2 -2
- package/dist/types/Lightbox.story.d.ts.map +1 -1
- package/dist/types/LightboxSlide.context.d.ts +8 -0
- package/dist/types/LightboxSlide.context.d.ts.map +1 -0
- package/dist/types/LightboxSlide.d.ts +0 -3
- package/dist/types/LightboxSlide.d.ts.map +1 -1
- package/dist/types/__tests__/Lightbox.test.d.ts +2 -0
- package/dist/types/__tests__/Lightbox.test.d.ts.map +1 -0
- package/dist/types/__tests__/LightboxSimple.test.d.ts +2 -0
- package/dist/types/__tests__/LightboxSimple.test.d.ts.map +1 -0
- package/dist/types/__tests__/pointer.test.d.ts +2 -0
- package/dist/types/__tests__/pointer.test.d.ts.map +1 -0
- package/dist/types/__tests__/zoom.test.d.ts +2 -0
- package/dist/types/__tests__/zoom.test.d.ts.map +1 -0
- package/dist/types/components/LightboxAutoplayButton.d.ts +17 -0
- package/dist/types/components/LightboxAutoplayButton.d.ts.map +1 -0
- package/dist/types/components/LightboxCarousel.d.ts +6 -0
- package/dist/types/components/LightboxCarousel.d.ts.map +1 -0
- package/dist/types/components/LightboxCarouselSlide.context.d.ts +10 -0
- package/dist/types/components/LightboxCarouselSlide.context.d.ts.map +1 -0
- package/dist/types/components/LightboxCloseButton.d.ts +17 -0
- package/dist/types/components/LightboxCloseButton.d.ts.map +1 -0
- package/dist/types/components/LightboxContent.d.ts +14 -0
- package/dist/types/components/LightboxContent.d.ts.map +1 -0
- package/dist/types/components/LightboxControls.d.ts +19 -0
- package/dist/types/components/LightboxControls.d.ts.map +1 -0
- package/dist/types/components/LightboxCounter.d.ts +19 -0
- package/dist/types/components/LightboxCounter.d.ts.map +1 -0
- package/dist/types/components/LightboxFullscreenButton.d.ts +17 -0
- package/dist/types/components/LightboxFullscreenButton.d.ts.map +1 -0
- package/dist/types/components/LightboxOverlay.d.ts +4 -0
- package/dist/types/components/LightboxOverlay.d.ts.map +1 -0
- package/dist/types/components/LightboxPreset.d.ts +10 -0
- package/dist/types/components/LightboxPreset.d.ts.map +1 -0
- package/dist/types/components/LightboxRoot.d.ts +80 -0
- package/dist/types/components/LightboxRoot.d.ts.map +1 -0
- package/dist/types/components/LightboxSlide.context.d.ts +8 -0
- package/dist/types/components/LightboxSlide.context.d.ts.map +1 -0
- package/dist/types/components/LightboxSlide.d.ts +17 -0
- package/dist/types/components/LightboxSlide.d.ts.map +1 -0
- package/dist/types/components/LightboxSlides.d.ts +23 -1
- package/dist/types/components/LightboxSlides.d.ts.map +1 -1
- package/dist/types/components/LightboxThumbnail.context.d.ts +8 -0
- package/dist/types/components/LightboxThumbnail.context.d.ts.map +1 -0
- package/dist/types/components/LightboxThumbnail.d.ts +17 -0
- package/dist/types/components/LightboxThumbnail.d.ts.map +1 -0
- package/dist/types/components/LightboxThumbnails.d.ts +18 -6
- package/dist/types/components/LightboxThumbnails.d.ts.map +1 -1
- package/dist/types/components/LightboxToolbar.d.ts +16 -1
- package/dist/types/components/LightboxToolbar.d.ts.map +1 -1
- package/dist/types/components/LightboxZoomButton.d.ts +17 -0
- package/dist/types/components/LightboxZoomButton.d.ts.map +1 -0
- package/dist/types/components/icons/EnterFullscreen.d.ts +3 -0
- package/dist/types/components/icons/EnterFullscreen.d.ts.map +1 -0
- package/dist/types/components/icons/ExitFullscreen.d.ts +3 -0
- package/dist/types/components/icons/ExitFullscreen.d.ts.map +1 -0
- package/dist/types/components/icons/Pause.d.ts +3 -0
- package/dist/types/components/icons/Pause.d.ts.map +1 -0
- package/dist/types/components/icons/Play.d.ts +3 -0
- package/dist/types/components/icons/Play.d.ts.map +1 -0
- package/dist/types/components/icons/ZoomIn.d.ts +3 -0
- package/dist/types/components/icons/ZoomIn.d.ts.map +1 -0
- package/dist/types/components/icons/ZoomOut.d.ts +3 -0
- package/dist/types/components/icons/ZoomOut.d.ts.map +1 -0
- package/dist/types/context/LightboxContext.d.ts +46 -0
- package/dist/types/context/LightboxContext.d.ts.map +1 -0
- package/dist/types/context/LightboxSlideContext.d.ts +8 -0
- package/dist/types/context/LightboxSlideContext.d.ts.map +1 -0
- package/dist/types/context/LightboxThumbnailContext.d.ts +8 -0
- package/dist/types/context/LightboxThumbnailContext.d.ts.map +1 -0
- package/dist/types/hooks/useAutoPlay.d.ts +1 -1
- package/dist/types/hooks/useAutoPlay.d.ts.map +1 -1
- package/dist/types/hooks/useLightbox.d.ts +5 -28
- package/dist/types/hooks/useLightbox.d.ts.map +1 -1
- package/dist/types/hooks/useLightboxRootOptions.d.ts +12 -0
- package/dist/types/hooks/useLightboxRootOptions.d.ts.map +1 -0
- package/dist/types/hooks/useSlideInteractions.d.ts +3 -3
- package/dist/types/hooks/useThumbnails.d.ts +5 -4
- package/dist/types/hooks/useThumbnails.d.ts.map +1 -1
- package/dist/types/hooks/useZoom.d.ts +2 -9
- package/dist/types/hooks/useZoom.d.ts.map +1 -1
- package/dist/types/index.d.mts +27 -3
- package/dist/types/index.d.ts +27 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/stories/Lightbox.story.d.ts +11 -0
- package/dist/types/stories/Lightbox.story.d.ts.map +1 -0
- package/dist/types/utils/pointer.d.ts +63 -0
- package/dist/types/utils/pointer.d.ts.map +1 -0
- package/dist/types/utils/zoom.d.ts +0 -62
- package/dist/types/utils/zoom.d.ts.map +1 -1
- package/package.json +2 -4
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { createSafeContext } from '@mantine/core';
|
|
3
|
+
|
|
4
|
+
const [LightboxCarouselSlideProvider, useLightboxCarouselSlideContext] = createSafeContext(
|
|
5
|
+
"Lightbox.Slide must be used inside Lightbox.Carousel"
|
|
6
|
+
);
|
|
7
|
+
|
|
8
|
+
export { LightboxCarouselSlideProvider, useLightboxCarouselSlideContext };
|
|
9
|
+
//# sourceMappingURL=LightboxCarouselSlide.context.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LightboxCarouselSlide.context.mjs","sources":["../../../src/components/LightboxCarouselSlide.context.ts"],"sourcesContent":["import { createSafeContext } from \"@mantine/core\";\n\ninterface LightboxCarouselSlideContextValue {\n\tindex: number;\n\tisActive: boolean;\n}\n\nexport const [LightboxCarouselSlideProvider, useLightboxCarouselSlideContext] =\n\tcreateSafeContext<LightboxCarouselSlideContextValue>(\n\t\t\"Lightbox.Slide must be used inside Lightbox.Carousel\",\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,CAAA,CAAA,CAAA,CAAA,CAA6B,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,CAA+B,CAAC,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAiB,CAAA;AACjG,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;AACF,CAAA,CAAA;;"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { factory, useProps, ActionIcon, CloseIcon } from '@mantine/core';
|
|
4
|
+
import { useLightboxContext } from '../context/LightboxContext.mjs';
|
|
5
|
+
import classes from '../styles/Lightbox.module.css.mjs';
|
|
6
|
+
|
|
7
|
+
const LightboxCloseButton = factory(
|
|
8
|
+
(_props, ref) => {
|
|
9
|
+
const props = useProps("LightboxCloseButton", null, _props);
|
|
10
|
+
const { classNames, className, style, styles, vars, ...others } = props;
|
|
11
|
+
const { onClose, getStyles } = useLightboxContext();
|
|
12
|
+
return /* @__PURE__ */ jsx(
|
|
13
|
+
ActionIcon,
|
|
14
|
+
{
|
|
15
|
+
ref,
|
|
16
|
+
variant: "default",
|
|
17
|
+
size: "lg",
|
|
18
|
+
onClick: onClose,
|
|
19
|
+
"aria-label": "Close lightbox",
|
|
20
|
+
...getStyles("closeButton", { className, style, classNames, styles }),
|
|
21
|
+
...others,
|
|
22
|
+
children: /* @__PURE__ */ jsx(CloseIcon, {})
|
|
23
|
+
}
|
|
24
|
+
);
|
|
25
|
+
}
|
|
26
|
+
);
|
|
27
|
+
LightboxCloseButton.classes = classes;
|
|
28
|
+
LightboxCloseButton.displayName = "LightboxCloseButton";
|
|
29
|
+
|
|
30
|
+
export { LightboxCloseButton };
|
|
31
|
+
//# sourceMappingURL=LightboxCloseButton.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LightboxCloseButton.mjs","sources":["../../../src/components/LightboxCloseButton.tsx"],"sourcesContent":["import {\n\tActionIcon,\n\ttype BoxProps,\n\tCloseIcon,\n\ttype CompoundStylesApiProps,\n\ttype ElementProps,\n\ttype Factory,\n\tfactory,\n\tuseProps,\n} from \"@mantine/core\";\nimport { useLightboxContext } from \"../context/LightboxContext.js\";\nimport classes from \"../styles/Lightbox.module.css\";\n\nexport type LightboxCloseButtonStylesNames = \"closeButton\";\n\nexport interface LightboxCloseButtonProps\n\textends BoxProps,\n\t\tCompoundStylesApiProps<LightboxCloseButtonFactory>,\n\t\tElementProps<\"button\"> {}\n\nexport type LightboxCloseButtonFactory = Factory<{\n\tprops: LightboxCloseButtonProps;\n\tref: HTMLButtonElement;\n\tstylesNames: LightboxCloseButtonStylesNames;\n\tcompound: true;\n}>;\n\nexport const LightboxCloseButton = factory<LightboxCloseButtonFactory>(\n\t(_props, ref) => {\n\t\tconst props = useProps(\"LightboxCloseButton\", null, _props);\n\n\t\tconst { classNames, className, style, styles, vars, ...others } = props;\n\n\t\tconst { onClose, getStyles } = useLightboxContext();\n\n\t\treturn (\n\t\t\t<ActionIcon\n\t\t\t\tref={ref}\n\t\t\t\tvariant=\"default\"\n\t\t\t\tsize=\"lg\"\n\t\t\t\tonClick={onClose}\n\t\t\t\taria-label=\"Close lightbox\"\n\t\t\t\t{...getStyles(\"closeButton\", { className, style, classNames, styles })}\n\t\t\t\t{...others}\n\t\t\t>\n\t\t\t\t<CloseIcon />\n\t\t\t</ActionIcon>\n\t\t);\n\t},\n);\n\nLightboxCloseButton.classes = classes;\n\nLightboxCloseButton.displayName = \"LightboxCloseButton\";\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { useProps, Transition, Box } from '@mantine/core';
|
|
4
|
+
import { useLightboxContext } from '../Lightbox.context.mjs';
|
|
5
|
+
|
|
6
|
+
const DEFAULT_TRANSITION_PROPS = { transition: "fade", duration: 250 };
|
|
7
|
+
const defaultProps = {};
|
|
8
|
+
function LightboxContent(_props) {
|
|
9
|
+
const props = useProps("LightboxContent", defaultProps, _props);
|
|
10
|
+
const { transitionProps, children, style, ...others } = props;
|
|
11
|
+
const { opened, keepMounted, mergedRef, getStyles } = useLightboxContext();
|
|
12
|
+
const resolvedTransitionProps = {
|
|
13
|
+
...DEFAULT_TRANSITION_PROPS,
|
|
14
|
+
...transitionProps
|
|
15
|
+
};
|
|
16
|
+
return /* @__PURE__ */ jsx(
|
|
17
|
+
Transition,
|
|
18
|
+
{
|
|
19
|
+
...resolvedTransitionProps,
|
|
20
|
+
mounted: opened,
|
|
21
|
+
keepMounted,
|
|
22
|
+
children: (transitionStyles) => /* @__PURE__ */ jsx(
|
|
23
|
+
Box,
|
|
24
|
+
{
|
|
25
|
+
ref: mergedRef,
|
|
26
|
+
...getStyles("root", { style: [transitionStyles, style] }),
|
|
27
|
+
...others,
|
|
28
|
+
children
|
|
29
|
+
}
|
|
30
|
+
)
|
|
31
|
+
}
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export { LightboxContent };
|
|
36
|
+
//# sourceMappingURL=LightboxContent.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LightboxContent.mjs","sources":["../../../src/components/LightboxContent.tsx"],"sourcesContent":["import {\n\tBox,\n\ttype BoxProps,\n\ttype ElementProps,\n\tTransition,\n\ttype TransitionOverride,\n\tuseProps,\n} from \"@mantine/core\";\nimport type { ReactNode } from \"react\";\nimport { useLightboxContext } from \"../Lightbox.context.js\";\n\nexport interface LightboxContentProps extends BoxProps, ElementProps<\"div\"> {\n\t/**\n\t * Transition applied to the content panel, merged with\n\t * `{ transition: 'fade', duration: 250 }` by default.\n\t * Note: `mounted` and `keepMounted` within `transitionProps` have no effect —\n\t * they are controlled by `LightboxRoot`.\n\t */\n\ttransitionProps?: TransitionOverride;\n\tchildren?: ReactNode;\n}\n\nconst DEFAULT_TRANSITION_PROPS = { transition: \"fade\", duration: 250 } as const;\n\nconst defaultProps: Partial<LightboxContentProps> = {};\n\nexport function LightboxContent(_props: LightboxContentProps) {\n\tconst props = useProps(\"LightboxContent\", defaultProps, _props);\n\tconst { transitionProps, children, style, ...others } = props;\n\n\tconst { opened, keepMounted, mergedRef, getStyles } = useLightboxContext();\n\n\tconst resolvedTransitionProps = {\n\t\t...DEFAULT_TRANSITION_PROPS,\n\t\t...transitionProps,\n\t};\n\n\treturn (\n\t\t<Transition\n\t\t\t{...resolvedTransitionProps}\n\t\t\tmounted={opened}\n\t\t\tkeepMounted={keepMounted}\n\t\t>\n\t\t\t{(transitionStyles) => (\n\t\t\t\t<Box\n\t\t\t\t\tref={mergedRef}\n\t\t\t\t\t{...getStyles(\"root\", { style: [transitionStyles, style] })}\n\t\t\t\t\t{...others}\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</Box>\n\t\t\t)}\n\t\t</Transition>\n\t);\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { factory, useProps, useDirection, UnstyledButton, AccordionChevron, rem } from '@mantine/core';
|
|
4
|
+
import { useLightboxContext } from '../context/LightboxContext.mjs';
|
|
5
|
+
import classes from '../styles/Lightbox.module.css.mjs';
|
|
6
|
+
|
|
7
|
+
const defaultProps = {
|
|
8
|
+
size: 36
|
|
9
|
+
};
|
|
10
|
+
const LightboxControls = factory(
|
|
11
|
+
(_props, _ref) => {
|
|
12
|
+
const props = useProps("LightboxControls", defaultProps, _props);
|
|
13
|
+
const { classNames, styles, size } = props;
|
|
14
|
+
const { onScrollPrev, onScrollNext, getStyles, orientation } = useLightboxContext();
|
|
15
|
+
const { dir } = useDirection();
|
|
16
|
+
const prevRotation = orientation === "horizontal" ? 90 * (dir === "ltr" ? 1 : -1) : -180;
|
|
17
|
+
const nextRotation = orientation === "horizontal" ? 90 * (dir === "ltr" ? -1 : 1) : 0;
|
|
18
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
19
|
+
/* @__PURE__ */ jsx(
|
|
20
|
+
UnstyledButton,
|
|
21
|
+
{
|
|
22
|
+
...getStyles("control", {
|
|
23
|
+
style: { "--lightbox-control-size": rem(size) },
|
|
24
|
+
classNames,
|
|
25
|
+
styles
|
|
26
|
+
}),
|
|
27
|
+
"data-direction": "prev",
|
|
28
|
+
"aria-label": "Previous slide",
|
|
29
|
+
onClick: onScrollPrev,
|
|
30
|
+
children: /* @__PURE__ */ jsx(
|
|
31
|
+
AccordionChevron,
|
|
32
|
+
{
|
|
33
|
+
style: { transform: `rotate(${prevRotation}deg)` }
|
|
34
|
+
}
|
|
35
|
+
)
|
|
36
|
+
}
|
|
37
|
+
),
|
|
38
|
+
/* @__PURE__ */ jsx(
|
|
39
|
+
UnstyledButton,
|
|
40
|
+
{
|
|
41
|
+
...getStyles("control", {
|
|
42
|
+
style: {
|
|
43
|
+
"--lightbox-control-size": rem(size)
|
|
44
|
+
},
|
|
45
|
+
classNames,
|
|
46
|
+
styles
|
|
47
|
+
}),
|
|
48
|
+
"data-direction": "next",
|
|
49
|
+
"aria-label": "Next slide",
|
|
50
|
+
onClick: onScrollNext,
|
|
51
|
+
children: /* @__PURE__ */ jsx(
|
|
52
|
+
AccordionChevron,
|
|
53
|
+
{
|
|
54
|
+
style: { transform: `rotate(${nextRotation}deg)` }
|
|
55
|
+
}
|
|
56
|
+
)
|
|
57
|
+
}
|
|
58
|
+
)
|
|
59
|
+
] });
|
|
60
|
+
}
|
|
61
|
+
);
|
|
62
|
+
LightboxControls.classes = classes;
|
|
63
|
+
LightboxControls.displayName = "LightboxControls";
|
|
64
|
+
|
|
65
|
+
export { LightboxControls };
|
|
66
|
+
//# sourceMappingURL=LightboxControls.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LightboxControls.mjs","sources":["../../../src/components/LightboxControls.tsx"],"sourcesContent":["import {\n\tAccordionChevron,\n\ttype CompoundStylesApiProps,\n\ttype Factory,\n\tfactory,\n\trem,\n\tUnstyledButton,\n\tuseDirection,\n\tuseProps,\n} from \"@mantine/core\";\nimport { useLightboxContext } from \"../context/LightboxContext.js\";\nimport classes from \"../styles/Lightbox.module.css\";\n\nexport type LightboxControlsStylesNames = \"control\";\n\nexport interface LightboxControlsProps\n\textends CompoundStylesApiProps<LightboxControlsFactory> {\n\t/** Size of the prev/next navigation buttons in px, `36` by default */\n\tsize?: number;\n}\n\nconst defaultProps = {\n\tsize: 36,\n} satisfies Partial<LightboxControlsProps>;\n\nexport type LightboxControlsFactory = Factory<{\n\tprops: LightboxControlsProps;\n\tref: HTMLElement;\n\tstylesNames: LightboxControlsStylesNames;\n\tcompound: true;\n}>;\n\nexport const LightboxControls = factory<LightboxControlsFactory>(\n\t(_props, _ref) => {\n\t\tconst props = useProps(\"LightboxControls\", defaultProps, _props);\n\n\t\tconst { classNames, styles, size } = props;\n\n\t\tconst { onScrollPrev, onScrollNext, getStyles, orientation } =\n\t\t\tuseLightboxContext();\n\n\t\tconst { dir } = useDirection();\n\n\t\tconst prevRotation =\n\t\t\torientation === \"horizontal\" ? 90 * (dir === \"ltr\" ? 1 : -1) : -180;\n\t\tconst nextRotation =\n\t\t\torientation === \"horizontal\" ? 90 * (dir === \"ltr\" ? -1 : 1) : 0;\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<UnstyledButton\n\t\t\t\t\t{...getStyles(\"control\", {\n\t\t\t\t\t\tstyle: { \"--lightbox-control-size\": rem(size) },\n\t\t\t\t\t\tclassNames,\n\t\t\t\t\t\tstyles,\n\t\t\t\t\t})}\n\t\t\t\t\tdata-direction=\"prev\"\n\t\t\t\t\taria-label=\"Previous slide\"\n\t\t\t\t\tonClick={onScrollPrev}\n\t\t\t\t>\n\t\t\t\t\t<AccordionChevron\n\t\t\t\t\t\tstyle={{ transform: `rotate(${prevRotation}deg)` }}\n\t\t\t\t\t/>\n\t\t\t\t</UnstyledButton>\n\t\t\t\t<UnstyledButton\n\t\t\t\t\t{...getStyles(\"control\", {\n\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\"--lightbox-control-size\": rem(size),\n\t\t\t\t\t\t} as React.CSSProperties,\n\t\t\t\t\t\tclassNames,\n\t\t\t\t\t\tstyles,\n\t\t\t\t\t})}\n\t\t\t\t\tdata-direction=\"next\"\n\t\t\t\t\taria-label=\"Next slide\"\n\t\t\t\t\tonClick={onScrollNext}\n\t\t\t\t>\n\t\t\t\t\t<AccordionChevron\n\t\t\t\t\t\tstyle={{ transform: `rotate(${nextRotation}deg)` }}\n\t\t\t\t\t/>\n\t\t\t\t</UnstyledButton>\n\t\t\t</>\n\t\t);\n\t},\n);\n\nLightboxControls.classes = classes;\n\nLightboxControls.displayName = \"LightboxControls\";\n"],"names":[],"mappings":";;;;;;AAYA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,YAAY,CAAA,CAAA,CAAG,CAAA;AACrB,CAAA,CAAE,IAAI,CAAA,CAAE,CAAA,CAAA;AACR,CAAC,CAAA;AACW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgB,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA;AACvC,CAAA,CAAE,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAE,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA;AACpB,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAC,kBAAkB,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAC,CAAA;AACpE,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,EAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAE,MAAM,CAAA,CAAE,CAAA,CAAA,CAAA,CAAI,CAAA,CAAE,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA;AAC9C,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAA,CAAE,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAkB,CAAA,CAAE,CAAA;AACvF,CAAA,CAAA,CAAA,CAAI,MAAM,CAAA,CAAE,CAAA,CAAA,CAAG,CAAA,CAAE,CAAA,CAAA,CAAG,YAAY,CAAA,CAAE,CAAA;AAClC,CAAA,CAAA,CAAA,CAAI,MAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAA,CAAA,CAAG,WAAW,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,GAAG,CAAA,CAAE,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAK,KAAK,CAAA,CAAA,CAAG,CAAC,GAAG,CAAA,CAAE,CAAC,GAAG,CAAA,CAAA,CAAA,CAAI,CAAA;AAC5F,CAAA,CAAA,CAAA,CAAI,MAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAA,CAAA,CAAG,WAAW,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,GAAG,CAAA,CAAE,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAK,KAAK,CAAA,CAAA,CAAG,CAAA,CAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;AACzF,CAAA,CAAA,CAAA,CAAI,uBAAuB,CAAA,CAAA,CAAA,CAAI,CAAC,QAAQ,CAAA,CAAE,CAAA,CAAE,QAAQ,CAAA,CAAE,CAAA;AACtD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAsB,CAAA,CAAA,CAAG,CAAA;AACzB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAc,CAAA;AACtB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA;AACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAE,CAAA;AAClC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAA,CAAA,CAAA,CAAA,CAAK,EAAE,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,CAAyB,EAAE,CAAA,CAAA,CAAG,CAAC,CAAA,CAAA,CAAA,CAAI,CAAC,CAAA,CAAE,CAAA;AAC3D,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA;AACtB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACZ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAC,CAAA;AACZ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgB,EAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA;AAClC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,EAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgB,CAAA;AACxC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,EAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAA;AAC/B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,kBAAkB,CAAA,CAAA,CAAG,CAAA;AACvC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgB,CAAA;AAC5B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAA;AACZ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAc,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAE,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAE,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAC,CAAA,CAAA,CAAA,CAAI,CAAC,CAAA,CAAA;AAC9D,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA;AACP,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAsB,CAAA,CAAA,CAAG,CAAA;AACzB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAc,CAAA;AACtB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA;AACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAE,CAAA;AAClC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,KAAK,CAAA,CAAE,CAAA;AACnB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,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,CAAG,CAAC,CAAA,CAAA,CAAA,CAAI,CAAA;AACjD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,CAAA;AACb,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA;AACtB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACZ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAC,CAAA;AACZ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgB,EAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA;AAClC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,EAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAA;AACpC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,EAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAA;AAC/B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,kBAAkB,CAAA,CAAA,CAAG,CAAA;AACvC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgB,CAAA;AAC5B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAA;AACZ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAc,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAE,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAE,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAC,CAAA,CAAA,CAAA,CAAI,CAAC,CAAA,CAAA;AAC9D,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACA,CAAA,CAAA,CAAA,CAAA,CAAK,EAAE,CAAC,CAAA;AACR,CAAA,CAAE,CAAA;AACF,CAAA,CAAA;AACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgB,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA;AAClC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgB,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAkB,CAAA;;"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { factory, useProps, Text } from '@mantine/core';
|
|
4
|
+
import { useLightboxContext } from '../context/LightboxContext.mjs';
|
|
5
|
+
import classes from '../styles/Lightbox.module.css.mjs';
|
|
6
|
+
|
|
7
|
+
const LightboxCounter = factory(
|
|
8
|
+
(_props, ref) => {
|
|
9
|
+
const props = useProps("LightboxCounter", null, _props);
|
|
10
|
+
const { classNames, className, style, styles, vars, formatter, ...others } = props;
|
|
11
|
+
const { currentIndex, slideCount, getStyles } = useLightboxContext();
|
|
12
|
+
if (slideCount === null) {
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
const label = formatter ? formatter(currentIndex, slideCount) : `${currentIndex + 1} / ${slideCount}`;
|
|
16
|
+
return /* @__PURE__ */ jsx(
|
|
17
|
+
Text,
|
|
18
|
+
{
|
|
19
|
+
ref,
|
|
20
|
+
size: "sm",
|
|
21
|
+
...getStyles("counter", { className, style, classNames, styles }),
|
|
22
|
+
...others,
|
|
23
|
+
children: label
|
|
24
|
+
}
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
);
|
|
28
|
+
LightboxCounter.classes = classes;
|
|
29
|
+
LightboxCounter.displayName = "LightboxCounter";
|
|
30
|
+
|
|
31
|
+
export { LightboxCounter };
|
|
32
|
+
//# sourceMappingURL=LightboxCounter.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LightboxCounter.mjs","sources":["../../../src/components/LightboxCounter.tsx"],"sourcesContent":["import {\n\ttype BoxProps,\n\ttype CompoundStylesApiProps,\n\ttype Factory,\n\tfactory,\n\tText,\n\tuseProps,\n} from \"@mantine/core\";\nimport { useLightboxContext } from \"../context/LightboxContext.js\";\nimport classes from \"../styles/Lightbox.module.css\";\n\nexport type LightboxCounterStylesNames = \"counter\";\n\nexport interface LightboxCounterProps\n\textends BoxProps,\n\t\tCompoundStylesApiProps<LightboxCounterFactory> {\n\t/** Custom formatter for the counter label, `(i, t) => \\`${i + 1} / ${t}\\`` by default */\n\tformatter?: (index: number, total: number) => string;\n}\n\nexport type LightboxCounterFactory = Factory<{\n\tprops: LightboxCounterProps;\n\tref: HTMLParagraphElement;\n\tstylesNames: LightboxCounterStylesNames;\n\tcompound: true;\n}>;\n\nexport const LightboxCounter = factory<LightboxCounterFactory>(\n\t(_props, ref) => {\n\t\tconst props = useProps(\"LightboxCounter\", null, _props);\n\n\t\tconst { classNames, className, style, styles, vars, formatter, ...others } =\n\t\t\tprops;\n\n\t\tconst { currentIndex, slideCount, getStyles } = useLightboxContext();\n\n\t\tif (slideCount === null) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst label = formatter\n\t\t\t? formatter(currentIndex, slideCount)\n\t\t\t: `${currentIndex + 1} / ${slideCount}`;\n\n\t\treturn (\n\t\t\t<Text\n\t\t\t\tref={ref}\n\t\t\t\tsize=\"sm\"\n\t\t\t\t{...getStyles(\"counter\", { className, style, classNames, styles })}\n\t\t\t\t{...others}\n\t\t\t>\n\t\t\t\t{label}\n\t\t\t</Text>\n\t\t);\n\t},\n);\n\nLightboxCounter.classes = classes;\n\nLightboxCounter.displayName = \"LightboxCounter\";\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { factory, useProps, ActionIcon } from '@mantine/core';
|
|
4
|
+
import { useLightboxContext } from '../context/LightboxContext.mjs';
|
|
5
|
+
import classes from '../styles/Lightbox.module.css.mjs';
|
|
6
|
+
import { EnterFullscreen } from './icons/EnterFullscreen.mjs';
|
|
7
|
+
import { ExitFullscreen } from './icons/ExitFullscreen.mjs';
|
|
8
|
+
|
|
9
|
+
const LightboxFullscreenButton = factory((_props, ref) => {
|
|
10
|
+
const props = useProps("LightboxFullscreenButton", null, _props);
|
|
11
|
+
const { classNames, className, style, styles, vars, ...others } = props;
|
|
12
|
+
const { withFullscreen, isFullscreen, toggleFullscreen, getStyles } = useLightboxContext();
|
|
13
|
+
if (!withFullscreen) {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
return /* @__PURE__ */ jsx(
|
|
17
|
+
ActionIcon,
|
|
18
|
+
{
|
|
19
|
+
ref,
|
|
20
|
+
variant: "default",
|
|
21
|
+
size: "lg",
|
|
22
|
+
onClick: toggleFullscreen,
|
|
23
|
+
"aria-label": `${isFullscreen ? "Exit" : "Enter"} fullscreen`,
|
|
24
|
+
...getStyles("fullscreenButton", {
|
|
25
|
+
className,
|
|
26
|
+
style,
|
|
27
|
+
classNames,
|
|
28
|
+
styles
|
|
29
|
+
}),
|
|
30
|
+
...others,
|
|
31
|
+
children: isFullscreen ? /* @__PURE__ */ jsx(ExitFullscreen, {}) : /* @__PURE__ */ jsx(EnterFullscreen, {})
|
|
32
|
+
}
|
|
33
|
+
);
|
|
34
|
+
});
|
|
35
|
+
LightboxFullscreenButton.classes = classes;
|
|
36
|
+
LightboxFullscreenButton.displayName = "LightboxFullscreenButton";
|
|
37
|
+
|
|
38
|
+
export { LightboxFullscreenButton };
|
|
39
|
+
//# sourceMappingURL=LightboxFullscreenButton.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LightboxFullscreenButton.mjs","sources":["../../../src/components/LightboxFullscreenButton.tsx"],"sourcesContent":["import {\n\tActionIcon,\n\ttype BoxProps,\n\ttype CompoundStylesApiProps,\n\ttype ElementProps,\n\ttype Factory,\n\tfactory,\n\tuseProps,\n} from \"@mantine/core\";\nimport { useLightboxContext } from \"../context/LightboxContext.js\";\nimport classes from \"../styles/Lightbox.module.css\";\nimport { EnterFullscreen } from \"./icons/EnterFullscreen.js\";\nimport { ExitFullscreen } from \"./icons/ExitFullscreen.js\";\n\nexport type LightboxFullscreenButtonStylesNames = \"fullscreenButton\";\n\nexport interface LightboxFullscreenButtonProps\n\textends BoxProps,\n\t\tCompoundStylesApiProps<LightboxFullscreenButtonFactory>,\n\t\tElementProps<\"button\"> {}\n\nexport type LightboxFullscreenButtonFactory = Factory<{\n\tprops: LightboxFullscreenButtonProps;\n\tref: HTMLButtonElement;\n\tstylesNames: LightboxFullscreenButtonStylesNames;\n\tcompound: true;\n}>;\n\nexport const LightboxFullscreenButton =\n\tfactory<LightboxFullscreenButtonFactory>((_props, ref) => {\n\t\tconst props = useProps(\"LightboxFullscreenButton\", null, _props);\n\n\t\tconst { classNames, className, style, styles, vars, ...others } = props;\n\n\t\tconst { withFullscreen, isFullscreen, toggleFullscreen, getStyles } =\n\t\t\tuseLightboxContext();\n\n\t\tif (!withFullscreen) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn (\n\t\t\t<ActionIcon\n\t\t\t\tref={ref}\n\t\t\t\tvariant=\"default\"\n\t\t\t\tsize=\"lg\"\n\t\t\t\tonClick={toggleFullscreen}\n\t\t\t\taria-label={`${isFullscreen ? \"Exit\" : \"Enter\"} fullscreen`}\n\t\t\t\t{...getStyles(\"fullscreenButton\", {\n\t\t\t\t\tclassName,\n\t\t\t\t\tstyle,\n\t\t\t\t\tclassNames,\n\t\t\t\t\tstyles,\n\t\t\t\t})}\n\t\t\t\t{...others}\n\t\t\t>\n\t\t\t\t{isFullscreen ? <ExitFullscreen /> : <EnterFullscreen />}\n\t\t\t</ActionIcon>\n\t\t);\n\t});\n\nLightboxFullscreenButton.classes = classes;\n\nLightboxFullscreenButton.displayName = \"LightboxFullscreenButton\";\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { useProps, Transition, Overlay } from '@mantine/core';
|
|
4
|
+
import { useLightboxContext } from '../Lightbox.context.mjs';
|
|
5
|
+
|
|
6
|
+
const defaultProps = {
|
|
7
|
+
fixed: true,
|
|
8
|
+
backgroundOpacity: 0.9,
|
|
9
|
+
color: "#18181B",
|
|
10
|
+
zIndex: 200
|
|
11
|
+
};
|
|
12
|
+
function LightboxOverlay(_props) {
|
|
13
|
+
const props = useProps("LightboxOverlay", defaultProps, _props);
|
|
14
|
+
const { className, style, ...overlayProps } = props;
|
|
15
|
+
const { opened, keepMounted, getStyles } = useLightboxContext();
|
|
16
|
+
return /* @__PURE__ */ jsx(
|
|
17
|
+
Transition,
|
|
18
|
+
{
|
|
19
|
+
transition: "fade",
|
|
20
|
+
duration: 250,
|
|
21
|
+
mounted: opened,
|
|
22
|
+
keepMounted,
|
|
23
|
+
children: (transitionStyles) => /* @__PURE__ */ jsx(
|
|
24
|
+
Overlay,
|
|
25
|
+
{
|
|
26
|
+
...overlayProps,
|
|
27
|
+
...getStyles("overlay", {
|
|
28
|
+
className,
|
|
29
|
+
style: [transitionStyles, style]
|
|
30
|
+
})
|
|
31
|
+
}
|
|
32
|
+
)
|
|
33
|
+
}
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export { LightboxOverlay };
|
|
38
|
+
//# sourceMappingURL=LightboxOverlay.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LightboxOverlay.mjs","sources":["../../../src/components/LightboxOverlay.tsx"],"sourcesContent":["import {\n\tOverlay,\n\ttype OverlayProps,\n\tTransition,\n\tuseProps,\n} from \"@mantine/core\";\nimport { useLightboxContext } from \"../Lightbox.context.js\";\n\nexport type LightboxOverlayProps = OverlayProps;\n\nconst defaultProps: Partial<LightboxOverlayProps> = {\n\tfixed: true,\n\tbackgroundOpacity: 0.9,\n\tcolor: \"#18181B\",\n\tzIndex: 200,\n};\n\nexport function LightboxOverlay(_props: LightboxOverlayProps) {\n\tconst props = useProps(\"LightboxOverlay\", defaultProps, _props);\n\tconst { className, style, ...overlayProps } = props;\n\n\tconst { opened, keepMounted, getStyles } = useLightboxContext();\n\n\treturn (\n\t\t<Transition\n\t\t\ttransition=\"fade\"\n\t\t\tduration={250}\n\t\t\tmounted={opened}\n\t\t\tkeepMounted={keepMounted}\n\t\t>\n\t\t\t{(transitionStyles) => (\n\t\t\t\t<Overlay\n\t\t\t\t\t{...overlayProps}\n\t\t\t\t\t{...getStyles(\"overlay\", {\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t\tstyle: [transitionStyles, style],\n\t\t\t\t\t})}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</Transition>\n\t);\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { LightboxCarousel } from './LightboxCarousel.mjs';
|
|
4
|
+
import { LightboxContent } from './LightboxContent.mjs';
|
|
5
|
+
import { LightboxCounter } from './LightboxCounter.mjs';
|
|
6
|
+
import { LightboxOverlay } from './LightboxOverlay.mjs';
|
|
7
|
+
import { LightboxRoot } from './LightboxRoot.mjs';
|
|
8
|
+
import { LightboxThumbnails } from './LightboxThumbnails.mjs';
|
|
9
|
+
import { LightboxToolbar } from './LightboxToolbar.mjs';
|
|
10
|
+
|
|
11
|
+
function LightboxPreset({
|
|
12
|
+
children,
|
|
13
|
+
withToolbar = true,
|
|
14
|
+
withCounter = true,
|
|
15
|
+
withThumbnails = true,
|
|
16
|
+
...rootProps
|
|
17
|
+
}) {
|
|
18
|
+
return /* @__PURE__ */ jsxs(LightboxRoot, { ...rootProps, children: [
|
|
19
|
+
/* @__PURE__ */ jsx(LightboxOverlay, {}),
|
|
20
|
+
/* @__PURE__ */ jsxs(LightboxContent, { children: [
|
|
21
|
+
withToolbar && /* @__PURE__ */ jsx(LightboxToolbar, {}),
|
|
22
|
+
withCounter && /* @__PURE__ */ jsx(LightboxCounter, {}),
|
|
23
|
+
/* @__PURE__ */ jsx(LightboxCarousel, { children }),
|
|
24
|
+
withThumbnails && /* @__PURE__ */ jsx(LightboxThumbnails, {})
|
|
25
|
+
] })
|
|
26
|
+
] });
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export { LightboxPreset };
|
|
30
|
+
//# sourceMappingURL=LightboxPreset.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LightboxPreset.mjs","sources":["../../../src/components/LightboxPreset.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport type { LightboxProps } from \"../Lightbox.js\";\nimport { LightboxCarousel } from \"./LightboxCarousel.js\";\nimport { LightboxContent } from \"./LightboxContent.js\";\nimport { LightboxCounter } from \"./LightboxCounter.js\";\nimport { LightboxOverlay } from \"./LightboxOverlay.js\";\nimport { LightboxRoot } from \"./LightboxRoot.js\";\nimport { LightboxThumbnails } from \"./LightboxThumbnails.js\";\nimport { LightboxToolbar } from \"./LightboxToolbar.js\";\n\nexport interface LightboxPresetProps extends LightboxProps {\n\tchildren?: ReactNode;\n\twithToolbar?: boolean;\n\twithCounter?: boolean;\n\twithThumbnails?: boolean;\n}\n\nexport function LightboxPreset({\n\tchildren,\n\twithToolbar = true,\n\twithCounter = true,\n\twithThumbnails = true,\n\t...rootProps\n}: LightboxPresetProps) {\n\treturn (\n\t\t<LightboxRoot {...rootProps}>\n\t\t\t<LightboxOverlay />\n\t\t\t<LightboxContent>\n\t\t\t\t{withToolbar && <LightboxToolbar />}\n\t\t\t\t{withCounter && <LightboxCounter />}\n\t\t\t\t<LightboxCarousel>{children}</LightboxCarousel>\n\t\t\t\t{withThumbnails && <LightboxThumbnails />}\n\t\t\t</LightboxContent>\n\t\t</LightboxRoot>\n\t);\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
3
|
+
import { getDefaultZIndex, factory, useProps, useStyles, OptionalPortal, RemoveScroll, Transition, Overlay, Box } from '@mantine/core';
|
|
4
|
+
import { useFocusTrap, useMergedRef, useFocusReturn, useFullscreen, useHotkeys } from '@mantine/hooks';
|
|
5
|
+
import { useRef, useState, useEffect, useCallback } from 'react';
|
|
6
|
+
import { LightboxProvider } from '../context/LightboxContext.mjs';
|
|
7
|
+
import { useAutoPlay } from '../hooks/useAutoPlay.mjs';
|
|
8
|
+
import { useZoom } from '../hooks/useZoom.mjs';
|
|
9
|
+
import classes from '../styles/Lightbox.module.css.mjs';
|
|
10
|
+
import { LightboxAutoplayButton } from './LightboxAutoplayButton.mjs';
|
|
11
|
+
import { LightboxCloseButton } from './LightboxCloseButton.mjs';
|
|
12
|
+
import { LightboxControls } from './LightboxControls.mjs';
|
|
13
|
+
import { LightboxCounter } from './LightboxCounter.mjs';
|
|
14
|
+
import { LightboxFullscreenButton } from './LightboxFullscreenButton.mjs';
|
|
15
|
+
import { LightboxSlide } from './LightboxSlide.mjs';
|
|
16
|
+
import { LightboxSlides } from './LightboxSlides.mjs';
|
|
17
|
+
import { LightboxThumbnail } from './LightboxThumbnail.mjs';
|
|
18
|
+
import { LightboxThumbnails } from './LightboxThumbnails.mjs';
|
|
19
|
+
import { LightboxToolbar } from './LightboxToolbar.mjs';
|
|
20
|
+
import { LightboxZoomButton } from './LightboxZoomButton.mjs';
|
|
21
|
+
|
|
22
|
+
const defaultProps = {
|
|
23
|
+
closeOnClickOutside: true,
|
|
24
|
+
keepMounted: false,
|
|
25
|
+
trapFocus: true,
|
|
26
|
+
lockScroll: true,
|
|
27
|
+
returnFocus: true,
|
|
28
|
+
withinPortal: true,
|
|
29
|
+
withZoom: true,
|
|
30
|
+
withFullscreen: true,
|
|
31
|
+
orientation: "horizontal",
|
|
32
|
+
transitionProps: {
|
|
33
|
+
transition: "fade",
|
|
34
|
+
duration: 250
|
|
35
|
+
},
|
|
36
|
+
overlayProps: {
|
|
37
|
+
fixed: true,
|
|
38
|
+
backgroundOpacity: 0.9,
|
|
39
|
+
color: "#18181B",
|
|
40
|
+
zIndex: getDefaultZIndex("modal")
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
const LightboxRoot = factory((_props, ref) => {
|
|
44
|
+
const props = useProps("Lightbox", defaultProps, _props);
|
|
45
|
+
const {
|
|
46
|
+
opened,
|
|
47
|
+
onClose,
|
|
48
|
+
classNames,
|
|
49
|
+
className,
|
|
50
|
+
style,
|
|
51
|
+
styles,
|
|
52
|
+
unstyled,
|
|
53
|
+
vars,
|
|
54
|
+
children,
|
|
55
|
+
closeOnClickOutside,
|
|
56
|
+
keepMounted,
|
|
57
|
+
trapFocus,
|
|
58
|
+
lockScroll,
|
|
59
|
+
returnFocus,
|
|
60
|
+
withinPortal,
|
|
61
|
+
transitionProps,
|
|
62
|
+
overlayProps,
|
|
63
|
+
orientation,
|
|
64
|
+
withZoom,
|
|
65
|
+
withFullscreen,
|
|
66
|
+
...others
|
|
67
|
+
} = props;
|
|
68
|
+
const getStyles = useStyles({
|
|
69
|
+
name: "Lightbox",
|
|
70
|
+
classes,
|
|
71
|
+
props,
|
|
72
|
+
className,
|
|
73
|
+
style,
|
|
74
|
+
classNames,
|
|
75
|
+
styles,
|
|
76
|
+
unstyled,
|
|
77
|
+
vars
|
|
78
|
+
});
|
|
79
|
+
const _transitionProps = {
|
|
80
|
+
...defaultProps.transitionProps,
|
|
81
|
+
...transitionProps
|
|
82
|
+
};
|
|
83
|
+
const _overlayProps = { ...defaultProps.overlayProps, ...overlayProps };
|
|
84
|
+
const focusTrapRef = useFocusTrap(opened && trapFocus);
|
|
85
|
+
const mergedRef = useMergedRef(ref, focusTrapRef);
|
|
86
|
+
useFocusReturn({ opened, shouldReturnFocus: returnFocus });
|
|
87
|
+
const slidesEmblaRef = useRef(null);
|
|
88
|
+
const thumbnailsEmblaRef = useRef(null);
|
|
89
|
+
const [currentIndex, setCurrentIndex] = useState(0);
|
|
90
|
+
const [slideCount, setSlideCount] = useState(null);
|
|
91
|
+
const {
|
|
92
|
+
isZoomed,
|
|
93
|
+
isZoomedRef,
|
|
94
|
+
isDraggingZoom,
|
|
95
|
+
zoomOffset,
|
|
96
|
+
zoomScale,
|
|
97
|
+
canZoomCurrent,
|
|
98
|
+
activeZoomContainerRef,
|
|
99
|
+
resetZoom,
|
|
100
|
+
toggleZoom,
|
|
101
|
+
updateCanZoomAvailability,
|
|
102
|
+
handleZoomPointerDown,
|
|
103
|
+
handleZoomPointerMove,
|
|
104
|
+
handleZoomPointerEnd
|
|
105
|
+
} = useZoom({ opened, withZoom });
|
|
106
|
+
const {
|
|
107
|
+
canAutoPlay,
|
|
108
|
+
isPlaying,
|
|
109
|
+
toggleAutoPlay,
|
|
110
|
+
notifyAutoPlayInteraction,
|
|
111
|
+
handleEmblaApiForAutoPlay
|
|
112
|
+
} = useAutoPlay();
|
|
113
|
+
const { fullscreen: isFullscreen, toggle: toggleFullscreen } = useFullscreen();
|
|
114
|
+
useEffect(() => {
|
|
115
|
+
if (opened || typeof document === "undefined" || !document.fullscreenElement || typeof document.exitFullscreen !== "function") {
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
void document.exitFullscreen();
|
|
119
|
+
}, [opened]);
|
|
120
|
+
useHotkeys([
|
|
121
|
+
[
|
|
122
|
+
"ArrowLeft",
|
|
123
|
+
() => orientation === "horizontal" && opened && slidesEmblaRef.current?.scrollPrev()
|
|
124
|
+
],
|
|
125
|
+
[
|
|
126
|
+
"ArrowRight",
|
|
127
|
+
() => orientation === "horizontal" && opened && slidesEmblaRef.current?.scrollNext()
|
|
128
|
+
],
|
|
129
|
+
[
|
|
130
|
+
"ArrowUp",
|
|
131
|
+
() => orientation === "vertical" && opened && slidesEmblaRef.current?.scrollPrev()
|
|
132
|
+
],
|
|
133
|
+
[
|
|
134
|
+
"ArrowDown",
|
|
135
|
+
() => orientation === "vertical" && opened && slidesEmblaRef.current?.scrollNext()
|
|
136
|
+
],
|
|
137
|
+
["Escape", () => opened && onClose()]
|
|
138
|
+
]);
|
|
139
|
+
const handleSlideChange = useCallback(
|
|
140
|
+
(index) => {
|
|
141
|
+
setCurrentIndex(index);
|
|
142
|
+
resetZoom();
|
|
143
|
+
requestAnimationFrame(updateCanZoomAvailability);
|
|
144
|
+
},
|
|
145
|
+
[resetZoom, updateCanZoomAvailability]
|
|
146
|
+
);
|
|
147
|
+
const handleThumbnailClick = useCallback(
|
|
148
|
+
(index) => {
|
|
149
|
+
notifyAutoPlayInteraction();
|
|
150
|
+
slidesEmblaRef.current?.scrollTo(index);
|
|
151
|
+
resetZoom();
|
|
152
|
+
},
|
|
153
|
+
[notifyAutoPlayInteraction, resetZoom]
|
|
154
|
+
);
|
|
155
|
+
const handleScrollPrev = useCallback(() => {
|
|
156
|
+
notifyAutoPlayInteraction();
|
|
157
|
+
slidesEmblaRef.current?.scrollPrev();
|
|
158
|
+
}, [notifyAutoPlayInteraction]);
|
|
159
|
+
const handleScrollNext = useCallback(() => {
|
|
160
|
+
notifyAutoPlayInteraction();
|
|
161
|
+
slidesEmblaRef.current?.scrollNext();
|
|
162
|
+
}, [notifyAutoPlayInteraction]);
|
|
163
|
+
const handleOutsideClick = useCallback(() => {
|
|
164
|
+
if (!closeOnClickOutside) {
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
onClose();
|
|
168
|
+
}, [closeOnClickOutside, onClose]);
|
|
169
|
+
const handleToggleZoom = useCallback(() => {
|
|
170
|
+
notifyAutoPlayInteraction();
|
|
171
|
+
toggleZoom();
|
|
172
|
+
}, [notifyAutoPlayInteraction, toggleZoom]);
|
|
173
|
+
return /* @__PURE__ */ jsx(OptionalPortal, { withinPortal, children: /* @__PURE__ */ jsx(RemoveScroll, { enabled: lockScroll && opened, children: /* @__PURE__ */ jsx(
|
|
174
|
+
Transition,
|
|
175
|
+
{
|
|
176
|
+
..._transitionProps,
|
|
177
|
+
mounted: opened,
|
|
178
|
+
keepMounted,
|
|
179
|
+
children: (transitionStyles) => /* @__PURE__ */ jsxs(
|
|
180
|
+
LightboxProvider,
|
|
181
|
+
{
|
|
182
|
+
value: {
|
|
183
|
+
getStyles,
|
|
184
|
+
opened,
|
|
185
|
+
currentIndex,
|
|
186
|
+
slideCount,
|
|
187
|
+
slidesEmblaRef,
|
|
188
|
+
thumbnailsEmblaRef,
|
|
189
|
+
setCurrentIndex: handleSlideChange,
|
|
190
|
+
setSlideCount,
|
|
191
|
+
onClose,
|
|
192
|
+
onOutsideClick: handleOutsideClick,
|
|
193
|
+
onThumbnailClick: handleThumbnailClick,
|
|
194
|
+
onScrollPrev: handleScrollPrev,
|
|
195
|
+
onScrollNext: handleScrollNext,
|
|
196
|
+
orientation,
|
|
197
|
+
canAutoPlay,
|
|
198
|
+
isPlaying,
|
|
199
|
+
toggleAutoPlay,
|
|
200
|
+
onSlidesEmblaApi: handleEmblaApiForAutoPlay,
|
|
201
|
+
withFullscreen,
|
|
202
|
+
isFullscreen,
|
|
203
|
+
toggleFullscreen,
|
|
204
|
+
withZoom,
|
|
205
|
+
isZoomed,
|
|
206
|
+
isZoomedRef,
|
|
207
|
+
isDraggingZoom,
|
|
208
|
+
canZoomCurrent,
|
|
209
|
+
zoomOffset,
|
|
210
|
+
zoomScale,
|
|
211
|
+
activeZoomContainerRef,
|
|
212
|
+
toggleZoom: handleToggleZoom,
|
|
213
|
+
updateCanZoomAvailability,
|
|
214
|
+
handleZoomPointerDown,
|
|
215
|
+
handleZoomPointerMove,
|
|
216
|
+
handleZoomPointerEnd
|
|
217
|
+
},
|
|
218
|
+
children: [
|
|
219
|
+
/* @__PURE__ */ jsx(
|
|
220
|
+
Overlay,
|
|
221
|
+
{
|
|
222
|
+
..._overlayProps,
|
|
223
|
+
...getStyles("overlay", { style: transitionStyles })
|
|
224
|
+
}
|
|
225
|
+
),
|
|
226
|
+
/* @__PURE__ */ jsx(
|
|
227
|
+
Box,
|
|
228
|
+
{
|
|
229
|
+
ref: mergedRef,
|
|
230
|
+
...getStyles("root", { style: transitionStyles }),
|
|
231
|
+
"data-orientation": orientation,
|
|
232
|
+
...others,
|
|
233
|
+
children
|
|
234
|
+
}
|
|
235
|
+
)
|
|
236
|
+
]
|
|
237
|
+
}
|
|
238
|
+
)
|
|
239
|
+
}
|
|
240
|
+
) }) });
|
|
241
|
+
});
|
|
242
|
+
LightboxRoot.displayName = "LightboxRoot";
|
|
243
|
+
LightboxRoot.classes = classes;
|
|
244
|
+
LightboxRoot.Root = LightboxRoot;
|
|
245
|
+
LightboxRoot.Toolbar = LightboxToolbar;
|
|
246
|
+
LightboxRoot.Counter = LightboxCounter;
|
|
247
|
+
LightboxRoot.Controls = LightboxControls;
|
|
248
|
+
LightboxRoot.Slides = LightboxSlides;
|
|
249
|
+
LightboxRoot.Thumbnails = LightboxThumbnails;
|
|
250
|
+
LightboxRoot.Thumbnail = LightboxThumbnail;
|
|
251
|
+
LightboxRoot.Slide = LightboxSlide;
|
|
252
|
+
LightboxRoot.CloseButton = LightboxCloseButton;
|
|
253
|
+
LightboxRoot.ZoomButton = LightboxZoomButton;
|
|
254
|
+
LightboxRoot.FullscreenButton = LightboxFullscreenButton;
|
|
255
|
+
LightboxRoot.AutoplayButton = LightboxAutoplayButton;
|
|
256
|
+
|
|
257
|
+
export { LightboxRoot };
|
|
258
|
+
//# sourceMappingURL=LightboxRoot.mjs.map
|