@mantine/lightbox 9.5.2
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/LICENSE +21 -0
- package/README.md +21 -0
- package/cjs/Lightbox.cjs +56 -0
- package/cjs/Lightbox.cjs.map +1 -0
- package/cjs/Lightbox.module.cjs +30 -0
- package/cjs/Lightbox.module.cjs.map +1 -0
- package/cjs/LightboxCaption/LightboxCaption.cjs +30 -0
- package/cjs/LightboxCaption/LightboxCaption.cjs.map +1 -0
- package/cjs/LightboxCloseButton/LightboxCloseButton.cjs +32 -0
- package/cjs/LightboxCloseButton/LightboxCloseButton.cjs.map +1 -0
- package/cjs/LightboxNavigation/LightboxNavigation.cjs +105 -0
- package/cjs/LightboxNavigation/LightboxNavigation.cjs.map +1 -0
- package/cjs/LightboxProvider/LightboxProvider.cjs +29 -0
- package/cjs/LightboxProvider/LightboxProvider.cjs.map +1 -0
- package/cjs/LightboxRoot/LightboxRoot.cjs +407 -0
- package/cjs/LightboxRoot/LightboxRoot.cjs.map +1 -0
- package/cjs/LightboxSlide/ImageSlide.cjs +27 -0
- package/cjs/LightboxSlide/ImageSlide.cjs.map +1 -0
- package/cjs/LightboxSlide/LightboxSlide.cjs +55 -0
- package/cjs/LightboxSlide/LightboxSlide.cjs.map +1 -0
- package/cjs/LightboxSlide/VideoSlide.cjs +42 -0
- package/cjs/LightboxSlide/VideoSlide.cjs.map +1 -0
- package/cjs/LightboxSlides/LightboxSlides.cjs +56 -0
- package/cjs/LightboxSlides/LightboxSlides.cjs.map +1 -0
- package/cjs/LightboxThumbnails/LightboxThumbnails.cjs +74 -0
- package/cjs/LightboxThumbnails/LightboxThumbnails.cjs.map +1 -0
- package/cjs/LightboxToolbar/LightboxToolbar.cjs +80 -0
- package/cjs/LightboxToolbar/LightboxToolbar.cjs.map +1 -0
- package/cjs/LightboxToolbar/toolbar-items.cjs +156 -0
- package/cjs/LightboxToolbar/toolbar-items.cjs.map +1 -0
- package/cjs/_virtual/_rolldown/runtime.cjs +24 -0
- package/cjs/default-labels.cjs +20 -0
- package/cjs/default-labels.cjs.map +1 -0
- package/cjs/hooks/use-lightbox-keyboard.cjs +107 -0
- package/cjs/hooks/use-lightbox-keyboard.cjs.map +1 -0
- package/cjs/hooks/use-lightbox-lock-scroll.cjs +30 -0
- package/cjs/hooks/use-lightbox-lock-scroll.cjs.map +1 -0
- package/cjs/hooks/use-lightbox-swipe-close.cjs +38 -0
- package/cjs/hooks/use-lightbox-swipe-close.cjs.map +1 -0
- package/cjs/hooks/use-lightbox-zoom.cjs +257 -0
- package/cjs/hooks/use-lightbox-zoom.cjs.map +1 -0
- package/cjs/index.cjs +34 -0
- package/cjs/lightbox.context.cjs +8 -0
- package/cjs/lightbox.context.cjs.map +1 -0
- package/cjs/lightbox.store.cjs +90 -0
- package/cjs/lightbox.store.cjs.map +1 -0
- package/esm/Lightbox.mjs +56 -0
- package/esm/Lightbox.mjs.map +1 -0
- package/esm/Lightbox.module.mjs +30 -0
- package/esm/Lightbox.module.mjs.map +1 -0
- package/esm/LightboxCaption/LightboxCaption.mjs +30 -0
- package/esm/LightboxCaption/LightboxCaption.mjs.map +1 -0
- package/esm/LightboxCloseButton/LightboxCloseButton.mjs +32 -0
- package/esm/LightboxCloseButton/LightboxCloseButton.mjs.map +1 -0
- package/esm/LightboxNavigation/LightboxNavigation.mjs +105 -0
- package/esm/LightboxNavigation/LightboxNavigation.mjs.map +1 -0
- package/esm/LightboxProvider/LightboxProvider.mjs +29 -0
- package/esm/LightboxProvider/LightboxProvider.mjs.map +1 -0
- package/esm/LightboxRoot/LightboxRoot.mjs +404 -0
- package/esm/LightboxRoot/LightboxRoot.mjs.map +1 -0
- package/esm/LightboxSlide/ImageSlide.mjs +27 -0
- package/esm/LightboxSlide/ImageSlide.mjs.map +1 -0
- package/esm/LightboxSlide/LightboxSlide.mjs +55 -0
- package/esm/LightboxSlide/LightboxSlide.mjs.map +1 -0
- package/esm/LightboxSlide/VideoSlide.mjs +42 -0
- package/esm/LightboxSlide/VideoSlide.mjs.map +1 -0
- package/esm/LightboxSlides/LightboxSlides.mjs +56 -0
- package/esm/LightboxSlides/LightboxSlides.mjs.map +1 -0
- package/esm/LightboxThumbnails/LightboxThumbnails.mjs +72 -0
- package/esm/LightboxThumbnails/LightboxThumbnails.mjs.map +1 -0
- package/esm/LightboxToolbar/LightboxToolbar.mjs +80 -0
- package/esm/LightboxToolbar/LightboxToolbar.mjs.map +1 -0
- package/esm/LightboxToolbar/toolbar-items.mjs +153 -0
- package/esm/LightboxToolbar/toolbar-items.mjs.map +1 -0
- package/esm/default-labels.mjs +20 -0
- package/esm/default-labels.mjs.map +1 -0
- package/esm/hooks/use-lightbox-keyboard.mjs +107 -0
- package/esm/hooks/use-lightbox-keyboard.mjs.map +1 -0
- package/esm/hooks/use-lightbox-lock-scroll.mjs +30 -0
- package/esm/hooks/use-lightbox-lock-scroll.mjs.map +1 -0
- package/esm/hooks/use-lightbox-swipe-close.mjs +38 -0
- package/esm/hooks/use-lightbox-swipe-close.mjs.map +1 -0
- package/esm/hooks/use-lightbox-zoom.mjs +257 -0
- package/esm/hooks/use-lightbox-zoom.mjs.map +1 -0
- package/esm/index.mjs +14 -0
- package/esm/lightbox.context.mjs +8 -0
- package/esm/lightbox.context.mjs.map +1 -0
- package/esm/lightbox.store.mjs +79 -0
- package/esm/lightbox.store.mjs.map +1 -0
- package/lib/Lightbox.d.ts +63 -0
- package/lib/LightboxCaption/LightboxCaption.d.ts +18 -0
- package/lib/LightboxCloseButton/LightboxCloseButton.d.ts +16 -0
- package/lib/LightboxNavigation/LightboxNavigation.d.ts +16 -0
- package/lib/LightboxProvider/LightboxProvider.d.ts +19 -0
- package/lib/LightboxRoot/LightboxRoot.d.ts +88 -0
- package/lib/LightboxSlide/ImageSlide.d.ts +12 -0
- package/lib/LightboxSlide/LightboxSlide.d.ts +25 -0
- package/lib/LightboxSlide/VideoSlide.d.ts +12 -0
- package/lib/LightboxSlides/LightboxSlides.d.ts +20 -0
- package/lib/LightboxThumbnails/LightboxThumbnails.d.ts +16 -0
- package/lib/LightboxToolbar/LightboxToolbar.d.ts +19 -0
- package/lib/LightboxToolbar/toolbar-items.d.ts +5 -0
- package/lib/default-labels.d.ts +2 -0
- package/lib/hooks/use-lightbox-keyboard.d.ts +15 -0
- package/lib/hooks/use-lightbox-lock-scroll.d.ts +7 -0
- package/lib/hooks/use-lightbox-swipe-close.d.ts +10 -0
- package/lib/hooks/use-lightbox-zoom.d.ts +33 -0
- package/lib/index.d.mts +67 -0
- package/lib/index.d.ts +67 -0
- package/lib/lightbox.context.d.ts +36 -0
- package/lib/lightbox.store.d.ts +66 -0
- package/lib/lightbox.types.d.ts +131 -0
- package/lib/test-utils.d.ts +7 -0
- package/package.json +63 -0
- package/styles.css +262 -0
- package/styles.layer.css +263 -0
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { Factory } from '@mantine/core';
|
|
2
|
+
import { lightbox } from './lightbox.store';
|
|
3
|
+
import type { ToolbarItems } from './lightbox.types';
|
|
4
|
+
import { LightboxCaption } from './LightboxCaption/LightboxCaption';
|
|
5
|
+
import { LightboxCloseButton } from './LightboxCloseButton/LightboxCloseButton';
|
|
6
|
+
import { LightboxNavigation } from './LightboxNavigation/LightboxNavigation';
|
|
7
|
+
import { LightboxProviderComponent } from './LightboxProvider/LightboxProvider';
|
|
8
|
+
import { LightboxRoot, LightboxRootProps, LightboxRootStylesNames } from './LightboxRoot/LightboxRoot';
|
|
9
|
+
import { LightboxSlide } from './LightboxSlide/LightboxSlide';
|
|
10
|
+
import { LightboxSlides } from './LightboxSlides/LightboxSlides';
|
|
11
|
+
import { LightboxThumbnails } from './LightboxThumbnails/LightboxThumbnails';
|
|
12
|
+
import { LightboxToolbar } from './LightboxToolbar/LightboxToolbar';
|
|
13
|
+
export type LightboxStylesNames = LightboxRootStylesNames;
|
|
14
|
+
export interface LightboxProps extends Omit<LightboxRootProps, 'children'> {
|
|
15
|
+
/** Custom toolbar items, overrides default toolbar. Can be a function that receives the current lightbox state and handlers. */
|
|
16
|
+
toolbarItems?: ToolbarItems;
|
|
17
|
+
/** Shows previous/next navigation arrows @default true */
|
|
18
|
+
withNavigation?: boolean;
|
|
19
|
+
/** Custom lightbox layout, overrides the default layout built from compound components */
|
|
20
|
+
children?: React.ReactNode;
|
|
21
|
+
}
|
|
22
|
+
export type LightboxFactory = Factory<{
|
|
23
|
+
props: LightboxProps;
|
|
24
|
+
ref: HTMLDivElement;
|
|
25
|
+
stylesNames: LightboxStylesNames;
|
|
26
|
+
staticComponents: {
|
|
27
|
+
Root: typeof LightboxRoot;
|
|
28
|
+
Toolbar: typeof LightboxToolbar;
|
|
29
|
+
Slides: typeof LightboxSlides;
|
|
30
|
+
Slide: typeof LightboxSlide;
|
|
31
|
+
Thumbnails: typeof LightboxThumbnails;
|
|
32
|
+
Navigation: typeof LightboxNavigation;
|
|
33
|
+
Caption: typeof LightboxCaption;
|
|
34
|
+
CloseButton: typeof LightboxCloseButton;
|
|
35
|
+
Provider: typeof LightboxProviderComponent;
|
|
36
|
+
open: typeof lightbox.open;
|
|
37
|
+
close: typeof lightbox.close;
|
|
38
|
+
next: typeof lightbox.next;
|
|
39
|
+
prev: typeof lightbox.prev;
|
|
40
|
+
setIndex: typeof lightbox.setIndex;
|
|
41
|
+
};
|
|
42
|
+
}>;
|
|
43
|
+
export declare const Lightbox: import("@mantine/core").MantineComponent<{
|
|
44
|
+
props: LightboxProps;
|
|
45
|
+
ref: HTMLDivElement;
|
|
46
|
+
stylesNames: LightboxStylesNames;
|
|
47
|
+
staticComponents: {
|
|
48
|
+
Root: typeof LightboxRoot;
|
|
49
|
+
Toolbar: typeof LightboxToolbar;
|
|
50
|
+
Slides: typeof LightboxSlides;
|
|
51
|
+
Slide: typeof LightboxSlide;
|
|
52
|
+
Thumbnails: typeof LightboxThumbnails;
|
|
53
|
+
Navigation: typeof LightboxNavigation;
|
|
54
|
+
Caption: typeof LightboxCaption;
|
|
55
|
+
CloseButton: typeof LightboxCloseButton;
|
|
56
|
+
Provider: typeof LightboxProviderComponent;
|
|
57
|
+
open: typeof lightbox.open;
|
|
58
|
+
close: typeof lightbox.close;
|
|
59
|
+
next: typeof lightbox.next;
|
|
60
|
+
prev: typeof lightbox.prev;
|
|
61
|
+
setIndex: typeof lightbox.setIndex;
|
|
62
|
+
};
|
|
63
|
+
}>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { BoxProps, CompoundStylesApiProps, ElementProps, Factory } from '@mantine/core';
|
|
2
|
+
export type LightboxCaptionStylesNames = 'caption';
|
|
3
|
+
export interface LightboxCaptionProps extends BoxProps, CompoundStylesApiProps<LightboxCaptionFactory>, ElementProps<'div'> {
|
|
4
|
+
/** Custom caption content, overrides slide caption */
|
|
5
|
+
children?: React.ReactNode;
|
|
6
|
+
}
|
|
7
|
+
export type LightboxCaptionFactory = Factory<{
|
|
8
|
+
props: LightboxCaptionProps;
|
|
9
|
+
ref: HTMLDivElement;
|
|
10
|
+
stylesNames: LightboxCaptionStylesNames;
|
|
11
|
+
compound: true;
|
|
12
|
+
}>;
|
|
13
|
+
export declare const LightboxCaption: import("@mantine/core").MantineComponent<{
|
|
14
|
+
props: LightboxCaptionProps;
|
|
15
|
+
ref: HTMLDivElement;
|
|
16
|
+
stylesNames: LightboxCaptionStylesNames;
|
|
17
|
+
compound: true;
|
|
18
|
+
}>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { BoxProps, CompoundStylesApiProps, ElementProps, Factory } from '@mantine/core';
|
|
2
|
+
export type LightboxCloseButtonStylesNames = 'closeButton';
|
|
3
|
+
export interface LightboxCloseButtonProps extends BoxProps, CompoundStylesApiProps<LightboxCloseButtonFactory>, ElementProps<'button'> {
|
|
4
|
+
}
|
|
5
|
+
export type LightboxCloseButtonFactory = Factory<{
|
|
6
|
+
props: LightboxCloseButtonProps;
|
|
7
|
+
ref: HTMLButtonElement;
|
|
8
|
+
stylesNames: LightboxCloseButtonStylesNames;
|
|
9
|
+
compound: true;
|
|
10
|
+
}>;
|
|
11
|
+
export declare const LightboxCloseButton: import("@mantine/core").MantineComponent<{
|
|
12
|
+
props: LightboxCloseButtonProps;
|
|
13
|
+
ref: HTMLButtonElement;
|
|
14
|
+
stylesNames: LightboxCloseButtonStylesNames;
|
|
15
|
+
compound: true;
|
|
16
|
+
}>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { BoxProps, CompoundStylesApiProps, ElementProps, Factory } from '@mantine/core';
|
|
2
|
+
export type LightboxNavigationStylesNames = 'navigation' | 'navigationButton';
|
|
3
|
+
export interface LightboxNavigationProps extends BoxProps, CompoundStylesApiProps<LightboxNavigationFactory>, ElementProps<'div'> {
|
|
4
|
+
}
|
|
5
|
+
export type LightboxNavigationFactory = Factory<{
|
|
6
|
+
props: LightboxNavigationProps;
|
|
7
|
+
ref: HTMLDivElement;
|
|
8
|
+
stylesNames: LightboxNavigationStylesNames;
|
|
9
|
+
compound: true;
|
|
10
|
+
}>;
|
|
11
|
+
export declare const LightboxNavigation: import("@mantine/core").MantineComponent<{
|
|
12
|
+
props: LightboxNavigationProps;
|
|
13
|
+
ref: HTMLDivElement;
|
|
14
|
+
stylesNames: LightboxNavigationStylesNames;
|
|
15
|
+
compound: true;
|
|
16
|
+
}>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Factory } from '@mantine/core';
|
|
2
|
+
import { LightboxProps } from '../Lightbox';
|
|
3
|
+
import { LightboxStore } from '../lightbox.store';
|
|
4
|
+
export interface LightboxProviderProps extends Omit<LightboxProps, 'opened' | 'onClose' | 'slides' | 'currentIndex' | 'onIndexChange'> {
|
|
5
|
+
/** Lightbox store, can be used to create multiple instances @default lightboxStore */
|
|
6
|
+
store?: LightboxStore;
|
|
7
|
+
}
|
|
8
|
+
export type LightboxProviderFactory = Factory<{
|
|
9
|
+
props: LightboxProviderProps;
|
|
10
|
+
ref: HTMLDivElement;
|
|
11
|
+
stylesNames: never;
|
|
12
|
+
compound: true;
|
|
13
|
+
}>;
|
|
14
|
+
export declare const LightboxProviderComponent: import("@mantine/core").MantineComponent<{
|
|
15
|
+
props: LightboxProviderProps;
|
|
16
|
+
ref: HTMLDivElement;
|
|
17
|
+
stylesNames: never;
|
|
18
|
+
compound: true;
|
|
19
|
+
}>;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import type { EmblaOptionsType } from 'embla-carousel';
|
|
2
|
+
import { BoxProps, ElementProps, Factory, StylesApiProps, TransitionOverride } from '@mantine/core';
|
|
3
|
+
import type { LightboxLabels, LightboxSlideData } from '../lightbox.types';
|
|
4
|
+
export type LightboxRootStylesNames = 'root' | 'overlay' | 'content' | 'toolbar' | 'toolbarGroup' | 'toolbarButton' | 'counter' | 'slides' | 'slidesViewport' | 'slidesContainer' | 'slide' | 'slideImage' | 'slideVideo' | 'thumbnails' | 'thumbnailsViewport' | 'thumbnailsContainer' | 'thumbnail' | 'thumbnailImage' | 'navigation' | 'navigationButton' | 'caption' | 'closeButton';
|
|
5
|
+
export type LightboxCssVariables = {
|
|
6
|
+
root: '--lightbox-transition-duration' | '--lightbox-overlay-color' | '--lightbox-z-index' | '--lightbox-toolbar-height' | '--lightbox-thumbnails-height';
|
|
7
|
+
};
|
|
8
|
+
export interface LightboxRootProps extends BoxProps, StylesApiProps<LightboxRootFactory>, ElementProps<'div', 'children'> {
|
|
9
|
+
/** Controls whether the lightbox is opened */
|
|
10
|
+
opened: boolean;
|
|
11
|
+
/** Called when the lightbox is closed */
|
|
12
|
+
onClose: () => void;
|
|
13
|
+
/** Lightbox content (compound components) */
|
|
14
|
+
children: React.ReactNode;
|
|
15
|
+
/** Array of slide data objects */
|
|
16
|
+
slides: LightboxSlideData[];
|
|
17
|
+
/** Controlled current slide index */
|
|
18
|
+
currentIndex?: number;
|
|
19
|
+
/** Called when the current slide index changes */
|
|
20
|
+
onIndexChange?: (index: number) => void;
|
|
21
|
+
/** Labels used in the component, used for accessibility and localization */
|
|
22
|
+
labels?: Partial<LightboxLabels>;
|
|
23
|
+
/** Enables image zoom on click/pinch @default false */
|
|
24
|
+
withZoom?: boolean;
|
|
25
|
+
/** Shows bottom thumbnail strip @default false */
|
|
26
|
+
withThumbnails?: boolean;
|
|
27
|
+
/** Adds fullscreen toggle to toolbar @default false */
|
|
28
|
+
withFullscreen?: boolean;
|
|
29
|
+
/** Adds download button to toolbar @default false */
|
|
30
|
+
withDownload?: boolean;
|
|
31
|
+
/** Enables infinite loop navigation @default false */
|
|
32
|
+
loop?: boolean;
|
|
33
|
+
/** Closes lightbox when the empty space around the slide content is clicked @default false */
|
|
34
|
+
closeOnClickOutside?: boolean;
|
|
35
|
+
/** Closes lightbox when swiping down on mobile @default true */
|
|
36
|
+
closeOnSwipeDown?: boolean;
|
|
37
|
+
/** Determines whether keyboard shortcuts (arrows, `F`/`T`/`Z`) are active, `Escape` always closes the lightbox @default true */
|
|
38
|
+
withKeyboardEvents?: boolean;
|
|
39
|
+
/** Determines whether focus should be returned to the last active element when the lightbox is closed @default true */
|
|
40
|
+
returnFocus?: boolean;
|
|
41
|
+
/** Adds a hidden focusable element at the start of the lightbox content – prevents the first toolbar button from receiving visible focus when the lightbox is opened with a pointer. Set to `false` if you need custom focus management. @default true */
|
|
42
|
+
withInitialFocusPlaceholder?: boolean;
|
|
43
|
+
/** Determines whether the lightbox should be rendered inside `Portal` @default true */
|
|
44
|
+
withinPortal?: boolean;
|
|
45
|
+
/** `z-index` of the overlay and content elements, `400` by default */
|
|
46
|
+
zIndex?: string | number;
|
|
47
|
+
/** Transition duration in milliseconds @default 200 */
|
|
48
|
+
transitionDuration?: number;
|
|
49
|
+
/** Props passed down to the `Transition` component that animates the content, the overlay always fades. By default, the content is scaled from 95% to 100% while fading in. */
|
|
50
|
+
transitionProps?: TransitionOverride;
|
|
51
|
+
/** Additional Embla carousel options. `loop` and `startIndex` are controlled by the
|
|
52
|
+
* `loop` and `currentIndex` props and cannot be set here, at the top level or in
|
|
53
|
+
* `breakpoints`; a `watchDrag` option is still honored at both levels, but dragging is
|
|
54
|
+
* always disabled while the image is zoomed. */
|
|
55
|
+
emblaOptions?: EmblaOptionsType;
|
|
56
|
+
/** Maximum zoom scale @default 3 */
|
|
57
|
+
zoomMaxScale?: number;
|
|
58
|
+
/** Enables animated slide transitions for programmatic navigation @default false */
|
|
59
|
+
withSlideTransition?: boolean;
|
|
60
|
+
}
|
|
61
|
+
export type LightboxRootFactory = Factory<{
|
|
62
|
+
props: LightboxRootProps;
|
|
63
|
+
ref: HTMLDivElement;
|
|
64
|
+
stylesNames: LightboxRootStylesNames;
|
|
65
|
+
vars: LightboxCssVariables;
|
|
66
|
+
}>;
|
|
67
|
+
export declare const lightboxRootDefaultProps: {
|
|
68
|
+
withZoom: false;
|
|
69
|
+
withThumbnails: false;
|
|
70
|
+
withFullscreen: false;
|
|
71
|
+
withDownload: false;
|
|
72
|
+
loop: false;
|
|
73
|
+
closeOnClickOutside: false;
|
|
74
|
+
closeOnSwipeDown: true;
|
|
75
|
+
withKeyboardEvents: true;
|
|
76
|
+
returnFocus: true;
|
|
77
|
+
withInitialFocusPlaceholder: true;
|
|
78
|
+
withinPortal: true;
|
|
79
|
+
transitionDuration: number;
|
|
80
|
+
zoomMaxScale: number;
|
|
81
|
+
withSlideTransition: false;
|
|
82
|
+
};
|
|
83
|
+
export declare const LightboxRoot: import("@mantine/core").MantineComponent<{
|
|
84
|
+
props: LightboxRootProps;
|
|
85
|
+
ref: HTMLDivElement;
|
|
86
|
+
stylesNames: LightboxRootStylesNames;
|
|
87
|
+
vars: LightboxCssVariables;
|
|
88
|
+
}>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { LightboxImageSlide } from '../lightbox.types';
|
|
2
|
+
import type { LightboxSlideStylesApiProps } from './LightboxSlide';
|
|
3
|
+
interface ImageSlideProps {
|
|
4
|
+
slide: LightboxImageSlide;
|
|
5
|
+
active: boolean;
|
|
6
|
+
stylesApiProps?: LightboxSlideStylesApiProps;
|
|
7
|
+
}
|
|
8
|
+
export declare function ImageSlide({ slide, active, stylesApiProps }: ImageSlideProps): import("react").JSX.Element;
|
|
9
|
+
export declare namespace ImageSlide {
|
|
10
|
+
var displayName: string;
|
|
11
|
+
}
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { BoxProps, CompoundStylesApiProps, ElementProps, Factory } from '@mantine/core';
|
|
2
|
+
import type { LightboxSlideData } from '../lightbox.types';
|
|
3
|
+
export type LightboxSlideStylesNames = 'slide' | 'slideImage' | 'slideVideo';
|
|
4
|
+
export interface LightboxSlideStylesApiProps {
|
|
5
|
+
classNames?: CompoundStylesApiProps<LightboxSlideFactory>['classNames'];
|
|
6
|
+
styles?: CompoundStylesApiProps<LightboxSlideFactory>['styles'];
|
|
7
|
+
}
|
|
8
|
+
export interface LightboxSlideProps extends BoxProps, CompoundStylesApiProps<LightboxSlideFactory>, ElementProps<'div'> {
|
|
9
|
+
/** Slide data object */
|
|
10
|
+
slide: LightboxSlideData;
|
|
11
|
+
/** Index of the slide in the slides array */
|
|
12
|
+
index: number;
|
|
13
|
+
}
|
|
14
|
+
export type LightboxSlideFactory = Factory<{
|
|
15
|
+
props: LightboxSlideProps;
|
|
16
|
+
ref: HTMLDivElement;
|
|
17
|
+
stylesNames: LightboxSlideStylesNames;
|
|
18
|
+
compound: true;
|
|
19
|
+
}>;
|
|
20
|
+
export declare const LightboxSlide: import("@mantine/core").MantineComponent<{
|
|
21
|
+
props: LightboxSlideProps;
|
|
22
|
+
ref: HTMLDivElement;
|
|
23
|
+
stylesNames: LightboxSlideStylesNames;
|
|
24
|
+
compound: true;
|
|
25
|
+
}>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { LightboxVideoSlide } from '../lightbox.types';
|
|
2
|
+
import type { LightboxSlideStylesApiProps } from './LightboxSlide';
|
|
3
|
+
interface VideoSlideProps {
|
|
4
|
+
slide: LightboxVideoSlide;
|
|
5
|
+
active: boolean;
|
|
6
|
+
stylesApiProps?: LightboxSlideStylesApiProps;
|
|
7
|
+
}
|
|
8
|
+
export declare function VideoSlide({ slide, active, stylesApiProps }: VideoSlideProps): import("react").JSX.Element;
|
|
9
|
+
export declare namespace VideoSlide {
|
|
10
|
+
var displayName: string;
|
|
11
|
+
}
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { BoxProps, CompoundStylesApiProps, ElementProps, Factory } from '@mantine/core';
|
|
2
|
+
export type LightboxSlidesStylesNames = 'slides' | 'slidesViewport' | 'slidesContainer';
|
|
3
|
+
export interface LightboxSlidesProps extends BoxProps, CompoundStylesApiProps<LightboxSlidesFactory>, ElementProps<'div'> {
|
|
4
|
+
/** Embla carousel ref callback */
|
|
5
|
+
emblaRef?: React.RefCallback<HTMLDivElement>;
|
|
6
|
+
/** Slide components */
|
|
7
|
+
children: React.ReactNode;
|
|
8
|
+
}
|
|
9
|
+
export type LightboxSlidesFactory = Factory<{
|
|
10
|
+
props: LightboxSlidesProps;
|
|
11
|
+
ref: HTMLDivElement;
|
|
12
|
+
stylesNames: LightboxSlidesStylesNames;
|
|
13
|
+
compound: true;
|
|
14
|
+
}>;
|
|
15
|
+
export declare const LightboxSlides: import("@mantine/core").MantineComponent<{
|
|
16
|
+
props: LightboxSlidesProps;
|
|
17
|
+
ref: HTMLDivElement;
|
|
18
|
+
stylesNames: LightboxSlidesStylesNames;
|
|
19
|
+
compound: true;
|
|
20
|
+
}>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { BoxProps, CompoundStylesApiProps, ElementProps, Factory } from '@mantine/core';
|
|
2
|
+
export type LightboxThumbnailsStylesNames = 'thumbnails' | 'thumbnailsViewport' | 'thumbnailsContainer' | 'thumbnail' | 'thumbnailImage';
|
|
3
|
+
export interface LightboxThumbnailsProps extends BoxProps, CompoundStylesApiProps<LightboxThumbnailsFactory>, ElementProps<'div', 'onTransitionEnd' | 'onTransitionStart'> {
|
|
4
|
+
}
|
|
5
|
+
export type LightboxThumbnailsFactory = Factory<{
|
|
6
|
+
props: LightboxThumbnailsProps;
|
|
7
|
+
ref: HTMLDivElement;
|
|
8
|
+
stylesNames: LightboxThumbnailsStylesNames;
|
|
9
|
+
compound: true;
|
|
10
|
+
}>;
|
|
11
|
+
export declare const LightboxThumbnails: import("@mantine/core").MantineComponent<{
|
|
12
|
+
props: LightboxThumbnailsProps;
|
|
13
|
+
ref: HTMLDivElement;
|
|
14
|
+
stylesNames: LightboxThumbnailsStylesNames;
|
|
15
|
+
compound: true;
|
|
16
|
+
}>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { BoxProps, CompoundStylesApiProps, ElementProps, Factory } from '@mantine/core';
|
|
2
|
+
import type { ToolbarItems } from '../lightbox.types';
|
|
3
|
+
export type LightboxToolbarStylesNames = 'toolbar' | 'toolbarGroup' | 'toolbarButton' | 'counter';
|
|
4
|
+
export interface LightboxToolbarProps extends BoxProps, CompoundStylesApiProps<LightboxToolbarFactory>, ElementProps<'div'> {
|
|
5
|
+
/** Custom toolbar items, overrides default toolbar actions. Can be a function that receives the current lightbox state and handlers. */
|
|
6
|
+
toolbarItems?: ToolbarItems;
|
|
7
|
+
}
|
|
8
|
+
export type LightboxToolbarFactory = Factory<{
|
|
9
|
+
props: LightboxToolbarProps;
|
|
10
|
+
ref: HTMLDivElement;
|
|
11
|
+
stylesNames: LightboxToolbarStylesNames;
|
|
12
|
+
compound: true;
|
|
13
|
+
}>;
|
|
14
|
+
export declare const LightboxToolbar: import("@mantine/core").MantineComponent<{
|
|
15
|
+
props: LightboxToolbarProps;
|
|
16
|
+
ref: HTMLDivElement;
|
|
17
|
+
stylesNames: LightboxToolbarStylesNames;
|
|
18
|
+
compound: true;
|
|
19
|
+
}>;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { LightboxLabels, ToolbarItem } from '../lightbox.types';
|
|
2
|
+
export declare function createFullscreenToolbarItem(toggle: () => void, isFullscreen: boolean, labels?: LightboxLabels): ToolbarItem;
|
|
3
|
+
export declare function createThumbnailsToolbarItem(toggle: () => void, visible: boolean, labels?: LightboxLabels): ToolbarItem;
|
|
4
|
+
export declare function createDownloadToolbarItem(src: string, labels?: LightboxLabels): ToolbarItem;
|
|
5
|
+
export declare function createCloseToolbarItem(onClose: () => void, labels?: LightboxLabels): ToolbarItem;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
interface UseLightboxKeyboardInput {
|
|
2
|
+
opened: boolean;
|
|
3
|
+
enabled: boolean;
|
|
4
|
+
/** Text direction of the lightbox, arrow keys follow it the same way the navigation buttons do */
|
|
5
|
+
dir: 'ltr' | 'rtl';
|
|
6
|
+
onClose: () => void;
|
|
7
|
+
onNext: () => void;
|
|
8
|
+
onPrev: () => void;
|
|
9
|
+
onToggleFullscreen?: () => void;
|
|
10
|
+
onToggleThumbnails?: () => void;
|
|
11
|
+
onToggleZoom?: () => void;
|
|
12
|
+
onZoomPan?: (deltaX: number, deltaY: number) => boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare function useLightboxKeyboard({ opened, enabled, dir, onClose, onNext, onPrev, onToggleFullscreen, onToggleThumbnails, onToggleZoom, onZoomPan, }: UseLightboxKeyboardInput): void;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
interface UseLightboxSwipeCloseInput {
|
|
2
|
+
enabled: boolean;
|
|
3
|
+
onClose: () => void;
|
|
4
|
+
isZoomed: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare function useLightboxSwipeClose({ enabled, onClose, isZoomed }: UseLightboxSwipeCloseInput): {
|
|
7
|
+
handleTouchStart: (event: React.TouchEvent) => void;
|
|
8
|
+
handleTouchEnd: (event: React.TouchEvent) => void;
|
|
9
|
+
};
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
interface UseLightboxZoomInput {
|
|
2
|
+
enabled: boolean;
|
|
3
|
+
maxScale: number;
|
|
4
|
+
currentIndex: number;
|
|
5
|
+
}
|
|
6
|
+
export declare function useLightboxZoom({ enabled, maxScale, currentIndex }: UseLightboxZoomInput): {
|
|
7
|
+
zoomState: {
|
|
8
|
+
scale: number;
|
|
9
|
+
isZoomed: boolean;
|
|
10
|
+
};
|
|
11
|
+
toggleZoom: () => void;
|
|
12
|
+
resetZoom: () => void;
|
|
13
|
+
panZoom: (deltaX: number, deltaY: number) => boolean;
|
|
14
|
+
getImageProps: () => {
|
|
15
|
+
ref: (node: HTMLImageElement | null) => void;
|
|
16
|
+
style: {
|
|
17
|
+
transform: string;
|
|
18
|
+
};
|
|
19
|
+
'data-zoom-enabled': true | undefined;
|
|
20
|
+
'data-zoomed': true | undefined;
|
|
21
|
+
'data-dragging': true | undefined;
|
|
22
|
+
onPointerDown: (event: React.PointerEvent) => void;
|
|
23
|
+
onPointerMove: (event: React.PointerEvent) => void;
|
|
24
|
+
onPointerUp: () => void;
|
|
25
|
+
onPointerCancel: () => void;
|
|
26
|
+
onLostPointerCapture: () => void;
|
|
27
|
+
onClick: (event: React.MouseEvent) => void;
|
|
28
|
+
onDoubleClick: () => void;
|
|
29
|
+
onTouchMove: (event: React.TouchEvent) => void;
|
|
30
|
+
onTouchEnd: () => void;
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
export {};
|
package/lib/index.d.mts
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { LightboxFactory, LightboxProps, LightboxStylesNames } from './Lightbox';
|
|
2
|
+
import type { LightboxCaptionProps, LightboxCaptionStylesNames } from './LightboxCaption/LightboxCaption';
|
|
3
|
+
import type { LightboxCloseButtonProps, LightboxCloseButtonStylesNames } from './LightboxCloseButton/LightboxCloseButton';
|
|
4
|
+
import type { LightboxNavigationProps, LightboxNavigationStylesNames } from './LightboxNavigation/LightboxNavigation';
|
|
5
|
+
import type { LightboxProviderProps } from './LightboxProvider/LightboxProvider';
|
|
6
|
+
import type { LightboxCssVariables, LightboxRootProps, LightboxRootStylesNames } from './LightboxRoot/LightboxRoot';
|
|
7
|
+
import type { LightboxSlideProps, LightboxSlideStylesNames } from './LightboxSlide/LightboxSlide';
|
|
8
|
+
import type { LightboxSlidesProps, LightboxSlidesStylesNames } from './LightboxSlides/LightboxSlides';
|
|
9
|
+
import type { LightboxThumbnailsProps, LightboxThumbnailsStylesNames } from './LightboxThumbnails/LightboxThumbnails';
|
|
10
|
+
import type { LightboxToolbarProps, LightboxToolbarStylesNames } from './LightboxToolbar/LightboxToolbar';
|
|
11
|
+
export { lightbox, createLightbox, createLightboxStore, useLightboxStore, lightboxStore, } from './lightbox.store.js';
|
|
12
|
+
export type { LightboxState, LightboxStore } from './lightbox.store.js';
|
|
13
|
+
export type { LightboxSlideData, LightboxImageSlide, LightboxVideoSlide, LightboxVideoSlideTrack, LightboxCustomSlide, LightboxLabels, ToolbarItem, ToolbarItems, ToolbarItemsPayload, } from './lightbox.types.js';
|
|
14
|
+
export { DEFAULT_LABELS } from './default-labels.js';
|
|
15
|
+
export { Lightbox } from './Lightbox.js';
|
|
16
|
+
export { LightboxRoot } from './LightboxRoot/LightboxRoot.js';
|
|
17
|
+
export { LightboxToolbar } from './LightboxToolbar/LightboxToolbar.js';
|
|
18
|
+
export { LightboxSlides } from './LightboxSlides/LightboxSlides.js';
|
|
19
|
+
export { LightboxSlide } from './LightboxSlide/LightboxSlide.js';
|
|
20
|
+
export { LightboxThumbnails } from './LightboxThumbnails/LightboxThumbnails.js';
|
|
21
|
+
export { LightboxNavigation } from './LightboxNavigation/LightboxNavigation.js';
|
|
22
|
+
export { LightboxCaption } from './LightboxCaption/LightboxCaption.js';
|
|
23
|
+
export { LightboxCloseButton } from './LightboxCloseButton/LightboxCloseButton.js';
|
|
24
|
+
export { LightboxProviderComponent } from './LightboxProvider/LightboxProvider.js';
|
|
25
|
+
export { createFullscreenToolbarItem, createThumbnailsToolbarItem, createDownloadToolbarItem, createCloseToolbarItem, } from './LightboxToolbar/toolbar-items.js';
|
|
26
|
+
export type { LightboxProps, LightboxStylesNames, LightboxFactory, LightboxCssVariables, LightboxRootProps, LightboxRootStylesNames, LightboxToolbarProps, LightboxToolbarStylesNames, LightboxSlidesProps, LightboxSlidesStylesNames, LightboxSlideProps, LightboxSlideStylesNames, LightboxThumbnailsProps, LightboxThumbnailsStylesNames, LightboxNavigationProps, LightboxNavigationStylesNames, LightboxCaptionProps, LightboxCaptionStylesNames, LightboxCloseButtonProps, LightboxCloseButtonStylesNames, LightboxProviderProps, };
|
|
27
|
+
export declare namespace Lightbox {
|
|
28
|
+
type Props = LightboxProps;
|
|
29
|
+
type StylesNames = LightboxStylesNames;
|
|
30
|
+
type Factory = LightboxFactory;
|
|
31
|
+
type CssVariables = LightboxCssVariables;
|
|
32
|
+
namespace Root {
|
|
33
|
+
type Props = LightboxRootProps;
|
|
34
|
+
type StylesNames = LightboxRootStylesNames;
|
|
35
|
+
}
|
|
36
|
+
namespace Toolbar {
|
|
37
|
+
type Props = LightboxToolbarProps;
|
|
38
|
+
type StylesNames = LightboxToolbarStylesNames;
|
|
39
|
+
}
|
|
40
|
+
namespace Slides {
|
|
41
|
+
type Props = LightboxSlidesProps;
|
|
42
|
+
type StylesNames = LightboxSlidesStylesNames;
|
|
43
|
+
}
|
|
44
|
+
namespace Slide {
|
|
45
|
+
type Props = LightboxSlideProps;
|
|
46
|
+
type StylesNames = LightboxSlideStylesNames;
|
|
47
|
+
}
|
|
48
|
+
namespace Thumbnails {
|
|
49
|
+
type Props = LightboxThumbnailsProps;
|
|
50
|
+
type StylesNames = LightboxThumbnailsStylesNames;
|
|
51
|
+
}
|
|
52
|
+
namespace Navigation {
|
|
53
|
+
type Props = LightboxNavigationProps;
|
|
54
|
+
type StylesNames = LightboxNavigationStylesNames;
|
|
55
|
+
}
|
|
56
|
+
namespace Caption {
|
|
57
|
+
type Props = LightboxCaptionProps;
|
|
58
|
+
type StylesNames = LightboxCaptionStylesNames;
|
|
59
|
+
}
|
|
60
|
+
namespace CloseButton {
|
|
61
|
+
type Props = LightboxCloseButtonProps;
|
|
62
|
+
type StylesNames = LightboxCloseButtonStylesNames;
|
|
63
|
+
}
|
|
64
|
+
namespace Provider {
|
|
65
|
+
type Props = LightboxProviderProps;
|
|
66
|
+
}
|
|
67
|
+
}
|
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { LightboxFactory, LightboxProps, LightboxStylesNames } from './Lightbox';
|
|
2
|
+
import type { LightboxCaptionProps, LightboxCaptionStylesNames } from './LightboxCaption/LightboxCaption';
|
|
3
|
+
import type { LightboxCloseButtonProps, LightboxCloseButtonStylesNames } from './LightboxCloseButton/LightboxCloseButton';
|
|
4
|
+
import type { LightboxNavigationProps, LightboxNavigationStylesNames } from './LightboxNavigation/LightboxNavigation';
|
|
5
|
+
import type { LightboxProviderProps } from './LightboxProvider/LightboxProvider';
|
|
6
|
+
import type { LightboxCssVariables, LightboxRootProps, LightboxRootStylesNames } from './LightboxRoot/LightboxRoot';
|
|
7
|
+
import type { LightboxSlideProps, LightboxSlideStylesNames } from './LightboxSlide/LightboxSlide';
|
|
8
|
+
import type { LightboxSlidesProps, LightboxSlidesStylesNames } from './LightboxSlides/LightboxSlides';
|
|
9
|
+
import type { LightboxThumbnailsProps, LightboxThumbnailsStylesNames } from './LightboxThumbnails/LightboxThumbnails';
|
|
10
|
+
import type { LightboxToolbarProps, LightboxToolbarStylesNames } from './LightboxToolbar/LightboxToolbar';
|
|
11
|
+
export { lightbox, createLightbox, createLightboxStore, useLightboxStore, lightboxStore, } from './lightbox.store.js';
|
|
12
|
+
export type { LightboxState, LightboxStore } from './lightbox.store.js';
|
|
13
|
+
export type { LightboxSlideData, LightboxImageSlide, LightboxVideoSlide, LightboxVideoSlideTrack, LightboxCustomSlide, LightboxLabels, ToolbarItem, ToolbarItems, ToolbarItemsPayload, } from './lightbox.types.js';
|
|
14
|
+
export { DEFAULT_LABELS } from './default-labels.js';
|
|
15
|
+
export { Lightbox } from './Lightbox.js';
|
|
16
|
+
export { LightboxRoot } from './LightboxRoot/LightboxRoot.js';
|
|
17
|
+
export { LightboxToolbar } from './LightboxToolbar/LightboxToolbar.js';
|
|
18
|
+
export { LightboxSlides } from './LightboxSlides/LightboxSlides.js';
|
|
19
|
+
export { LightboxSlide } from './LightboxSlide/LightboxSlide.js';
|
|
20
|
+
export { LightboxThumbnails } from './LightboxThumbnails/LightboxThumbnails.js';
|
|
21
|
+
export { LightboxNavigation } from './LightboxNavigation/LightboxNavigation.js';
|
|
22
|
+
export { LightboxCaption } from './LightboxCaption/LightboxCaption.js';
|
|
23
|
+
export { LightboxCloseButton } from './LightboxCloseButton/LightboxCloseButton.js';
|
|
24
|
+
export { LightboxProviderComponent } from './LightboxProvider/LightboxProvider.js';
|
|
25
|
+
export { createFullscreenToolbarItem, createThumbnailsToolbarItem, createDownloadToolbarItem, createCloseToolbarItem, } from './LightboxToolbar/toolbar-items.js';
|
|
26
|
+
export type { LightboxProps, LightboxStylesNames, LightboxFactory, LightboxCssVariables, LightboxRootProps, LightboxRootStylesNames, LightboxToolbarProps, LightboxToolbarStylesNames, LightboxSlidesProps, LightboxSlidesStylesNames, LightboxSlideProps, LightboxSlideStylesNames, LightboxThumbnailsProps, LightboxThumbnailsStylesNames, LightboxNavigationProps, LightboxNavigationStylesNames, LightboxCaptionProps, LightboxCaptionStylesNames, LightboxCloseButtonProps, LightboxCloseButtonStylesNames, LightboxProviderProps, };
|
|
27
|
+
export declare namespace Lightbox {
|
|
28
|
+
type Props = LightboxProps;
|
|
29
|
+
type StylesNames = LightboxStylesNames;
|
|
30
|
+
type Factory = LightboxFactory;
|
|
31
|
+
type CssVariables = LightboxCssVariables;
|
|
32
|
+
namespace Root {
|
|
33
|
+
type Props = LightboxRootProps;
|
|
34
|
+
type StylesNames = LightboxRootStylesNames;
|
|
35
|
+
}
|
|
36
|
+
namespace Toolbar {
|
|
37
|
+
type Props = LightboxToolbarProps;
|
|
38
|
+
type StylesNames = LightboxToolbarStylesNames;
|
|
39
|
+
}
|
|
40
|
+
namespace Slides {
|
|
41
|
+
type Props = LightboxSlidesProps;
|
|
42
|
+
type StylesNames = LightboxSlidesStylesNames;
|
|
43
|
+
}
|
|
44
|
+
namespace Slide {
|
|
45
|
+
type Props = LightboxSlideProps;
|
|
46
|
+
type StylesNames = LightboxSlideStylesNames;
|
|
47
|
+
}
|
|
48
|
+
namespace Thumbnails {
|
|
49
|
+
type Props = LightboxThumbnailsProps;
|
|
50
|
+
type StylesNames = LightboxThumbnailsStylesNames;
|
|
51
|
+
}
|
|
52
|
+
namespace Navigation {
|
|
53
|
+
type Props = LightboxNavigationProps;
|
|
54
|
+
type StylesNames = LightboxNavigationStylesNames;
|
|
55
|
+
}
|
|
56
|
+
namespace Caption {
|
|
57
|
+
type Props = LightboxCaptionProps;
|
|
58
|
+
type StylesNames = LightboxCaptionStylesNames;
|
|
59
|
+
}
|
|
60
|
+
namespace CloseButton {
|
|
61
|
+
type Props = LightboxCloseButtonProps;
|
|
62
|
+
type StylesNames = LightboxCloseButtonStylesNames;
|
|
63
|
+
}
|
|
64
|
+
namespace Provider {
|
|
65
|
+
type Props = LightboxProviderProps;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { EmblaCarouselType } from 'embla-carousel';
|
|
2
|
+
import { GetStylesApi } from '@mantine/core';
|
|
3
|
+
import type { LightboxLabels, LightboxSlideData } from './lightbox.types';
|
|
4
|
+
import type { LightboxRootFactory } from './LightboxRoot/LightboxRoot';
|
|
5
|
+
export interface LightboxContextValue {
|
|
6
|
+
getStyles: GetStylesApi<LightboxRootFactory>;
|
|
7
|
+
labels: LightboxLabels;
|
|
8
|
+
opened: boolean;
|
|
9
|
+
slides: LightboxSlideData[];
|
|
10
|
+
currentIndex: number;
|
|
11
|
+
setIndex: (index: number) => void;
|
|
12
|
+
next: () => void;
|
|
13
|
+
prev: () => void;
|
|
14
|
+
embla: EmblaCarouselType | null;
|
|
15
|
+
emblaRef: React.RefCallback<HTMLDivElement> | null;
|
|
16
|
+
withZoom: boolean;
|
|
17
|
+
withThumbnails: boolean;
|
|
18
|
+
withFullscreen: boolean;
|
|
19
|
+
withDownload: boolean;
|
|
20
|
+
thumbnailsVisible: boolean;
|
|
21
|
+
toggleThumbnails: () => void;
|
|
22
|
+
isFullscreen: boolean;
|
|
23
|
+
toggleFullscreen: () => void;
|
|
24
|
+
zoomState: {
|
|
25
|
+
scale: number;
|
|
26
|
+
isZoomed: boolean;
|
|
27
|
+
};
|
|
28
|
+
toggleZoom: () => void;
|
|
29
|
+
getImageZoomProps: () => Record<string, any>;
|
|
30
|
+
onClose: () => void;
|
|
31
|
+
loop: boolean;
|
|
32
|
+
closeOnClickOutside: boolean;
|
|
33
|
+
closeOnSwipeDown: boolean;
|
|
34
|
+
transitionDuration: number;
|
|
35
|
+
}
|
|
36
|
+
export declare const LightboxContextProvider: import("react").Context<LightboxContextValue | null>, useLightboxContext: () => LightboxContextValue;
|