react-motion-gallery 2.0.4 → 2.0.5
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/dist/index.css +274 -307
- package/dist/index.css.map +1 -1
- package/dist/index.d.mts +625 -190
- package/dist/index.mjs +12273 -6763
- package/dist/index.mjs.map +1 -1
- package/dist/metafile-esm.json +1 -1
- package/package.json +40 -7
- package/dist/FullscreenRuntime-CEYIXWZZ.mjs +0 -2666
- package/dist/FullscreenRuntime-CEYIXWZZ.mjs.map +0 -1
- package/dist/FullscreenRuntime-D6G3BRAU.css +0 -123
- package/dist/FullscreenRuntime-D6G3BRAU.css.map +0 -1
- package/dist/chunk-HOCUKMYX.mjs +0 -2634
- package/dist/chunk-HOCUKMYX.mjs.map +0 -1
package/dist/index.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import * as React$1 from 'react';
|
|
2
|
-
import React__default, { ReactNode } from 'react';
|
|
3
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import * as React$1 from 'react';
|
|
3
|
+
import React__default, { RefObject } from 'react';
|
|
4
4
|
import { APITypes } from 'plyr-react';
|
|
5
5
|
|
|
6
6
|
type ArrowRenderArgs = {
|
|
@@ -45,7 +45,7 @@ type ThumbnailLoadingOptions = {
|
|
|
45
45
|
isLoading?: boolean;
|
|
46
46
|
skeletonCount?: ResponsiveNumber;
|
|
47
47
|
renderLoading?: (args: {
|
|
48
|
-
layout: "thumbnails";
|
|
48
|
+
layout: "slider" | "thumbnails";
|
|
49
49
|
count: number;
|
|
50
50
|
}) => React$1.ReactNode;
|
|
51
51
|
};
|
|
@@ -121,6 +121,7 @@ type ThumbnailsOptions = {
|
|
|
121
121
|
breakpointMap?: BreakpointMap;
|
|
122
122
|
};
|
|
123
123
|
|
|
124
|
+
declare const BREAKPOINT_MAP: Record<string, number>;
|
|
124
125
|
type BreakpointMap = Record<string, number>;
|
|
125
126
|
type ResponsiveNumber = number | string | Array<number | string> | Record<string, number | string>;
|
|
126
127
|
|
|
@@ -140,6 +141,217 @@ type MediaItem = {
|
|
|
140
141
|
thumb?: string;
|
|
141
142
|
caption?: React.ReactNode;
|
|
142
143
|
};
|
|
144
|
+
declare const toMediaItems: (urls: string[]) => MediaItem[];
|
|
145
|
+
|
|
146
|
+
type IndexMode = "instant" | "animated";
|
|
147
|
+
interface GalleryApi {
|
|
148
|
+
rootNode(): HTMLElement | null;
|
|
149
|
+
containerNode(): HTMLElement | null;
|
|
150
|
+
slideNodes(): HTMLElement[];
|
|
151
|
+
onReady?(cb: (nodes: HTMLElement[]) => void): () => void;
|
|
152
|
+
whenReady?(): Promise<HTMLElement[]>;
|
|
153
|
+
isReady?(): boolean;
|
|
154
|
+
scrollTo(index: number, jump?: boolean): void;
|
|
155
|
+
scrollNext(jump?: boolean): void;
|
|
156
|
+
scrollPrev(jump?: boolean): void;
|
|
157
|
+
canScrollNext(): boolean;
|
|
158
|
+
canScrollPrev(): boolean;
|
|
159
|
+
getIndex(): number;
|
|
160
|
+
selectCell(index: number, jump?: boolean): void;
|
|
161
|
+
scrollProgress(): number;
|
|
162
|
+
cellsInView(): number[];
|
|
163
|
+
append(nodes: React.ReactNode | React.ReactNode[]): number;
|
|
164
|
+
prepend(nodes: React.ReactNode | React.ReactNode[]): number;
|
|
165
|
+
insert(index: number, nodes: React.ReactNode | React.ReactNode[]): number;
|
|
166
|
+
remove(indexOrPredicate: number | ((i: number) => boolean)): number;
|
|
167
|
+
replace(index: number, node: React.ReactNode): void;
|
|
168
|
+
setItems(nodes: React.ReactNode[]): number;
|
|
169
|
+
onIndexChange(cb: (i: number, meta: {
|
|
170
|
+
mode: IndexMode;
|
|
171
|
+
}) => void): () => void;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
type ResponsiveHeightRule = {
|
|
175
|
+
query: string;
|
|
176
|
+
height: string;
|
|
177
|
+
};
|
|
178
|
+
type SliderLayout$1 = {
|
|
179
|
+
gap?: number;
|
|
180
|
+
cellsPerSlide?: ResponsiveNumber;
|
|
181
|
+
};
|
|
182
|
+
type SliderDirection = {
|
|
183
|
+
dir?: "ltr" | "rtl";
|
|
184
|
+
axis?: "x" | "y";
|
|
185
|
+
};
|
|
186
|
+
type SliderSize = {
|
|
187
|
+
height?: string;
|
|
188
|
+
heightRules?: ResponsiveHeightRule[];
|
|
189
|
+
initialHeight?: number | string;
|
|
190
|
+
initialHeightRules?: ResponsiveHeightRule[];
|
|
191
|
+
aspectRatio?: number | `${number}/${number}` | `${number} / ${number}`;
|
|
192
|
+
};
|
|
193
|
+
type SliderElements = {
|
|
194
|
+
viewport?: ElementStyle;
|
|
195
|
+
container?: ElementStyle;
|
|
196
|
+
};
|
|
197
|
+
type SliderScroll = {
|
|
198
|
+
groupCells?: boolean;
|
|
199
|
+
skipSnaps?: boolean;
|
|
200
|
+
freeScroll?: boolean;
|
|
201
|
+
loop?: boolean;
|
|
202
|
+
};
|
|
203
|
+
type SliderArrows = {
|
|
204
|
+
enabled?: boolean;
|
|
205
|
+
arrow?: ElementStyle;
|
|
206
|
+
prev?: ElementStyle;
|
|
207
|
+
next?: ElementStyle;
|
|
208
|
+
render?: (args: ArrowRenderArgs & {
|
|
209
|
+
dir: "prev" | "next";
|
|
210
|
+
}) => React.ReactNode;
|
|
211
|
+
renderPrev?: (args: ArrowRenderArgs) => React.ReactNode;
|
|
212
|
+
renderNext?: (args: ArrowRenderArgs) => React.ReactNode;
|
|
213
|
+
};
|
|
214
|
+
type SliderDots = {
|
|
215
|
+
enabled?: boolean;
|
|
216
|
+
root?: ElementStyle;
|
|
217
|
+
dot?: ElementStyle;
|
|
218
|
+
render?: (args: DotsRenderArgs) => React.ReactNode;
|
|
219
|
+
};
|
|
220
|
+
type SliderProgress = {
|
|
221
|
+
enabled?: boolean;
|
|
222
|
+
root?: ElementStyle;
|
|
223
|
+
bar?: ElementStyle;
|
|
224
|
+
render?: (args: ProgressRenderArgs) => React.ReactNode;
|
|
225
|
+
};
|
|
226
|
+
type SliderRipple = {
|
|
227
|
+
enabled?: boolean;
|
|
228
|
+
className?: string;
|
|
229
|
+
};
|
|
230
|
+
type SliderControls = {
|
|
231
|
+
arrows?: SliderArrows;
|
|
232
|
+
dots?: SliderDots;
|
|
233
|
+
progress?: SliderProgress;
|
|
234
|
+
ripple?: SliderRipple;
|
|
235
|
+
};
|
|
236
|
+
type SliderAutoPlay = {
|
|
237
|
+
enabled?: boolean;
|
|
238
|
+
speedMs?: number;
|
|
239
|
+
pauseMs?: number;
|
|
240
|
+
pauseOnHover?: boolean;
|
|
241
|
+
};
|
|
242
|
+
type SliderAutoScroll = {
|
|
243
|
+
enabled?: boolean;
|
|
244
|
+
speedMs?: number;
|
|
245
|
+
pauseMs?: number;
|
|
246
|
+
pauseOnHover?: boolean;
|
|
247
|
+
};
|
|
248
|
+
type SliderAuto = {
|
|
249
|
+
play?: SliderAutoPlay;
|
|
250
|
+
scroll?: SliderAutoScroll;
|
|
251
|
+
};
|
|
252
|
+
type SliderLoadingOptions = {
|
|
253
|
+
isLoading?: boolean;
|
|
254
|
+
skeletonCount?: ResponsiveNumber;
|
|
255
|
+
renderLoading?: (args: {
|
|
256
|
+
layout: "slider" | "thumbnails";
|
|
257
|
+
count: number;
|
|
258
|
+
}) => React.ReactNode;
|
|
259
|
+
shimmer?: {
|
|
260
|
+
radius?: number | string;
|
|
261
|
+
c1?: string;
|
|
262
|
+
c2?: string;
|
|
263
|
+
c3?: string;
|
|
264
|
+
size?: string;
|
|
265
|
+
duration?: string;
|
|
266
|
+
timing?: string;
|
|
267
|
+
};
|
|
268
|
+
};
|
|
269
|
+
type SliderIntroOptions = {
|
|
270
|
+
renderIntro?: (args: {
|
|
271
|
+
active: boolean;
|
|
272
|
+
containerProps: React.HTMLAttributes<HTMLDivElement>;
|
|
273
|
+
}, content: React.ReactNode) => React.ReactNode;
|
|
274
|
+
staggerMs?: number;
|
|
275
|
+
transform?: number | string;
|
|
276
|
+
durationMs?: number;
|
|
277
|
+
easing?: string;
|
|
278
|
+
};
|
|
279
|
+
type SliderTransitions = {
|
|
280
|
+
loading?: SliderLoadingOptions;
|
|
281
|
+
intro?: SliderIntroOptions;
|
|
282
|
+
};
|
|
283
|
+
type SliderParallax = {
|
|
284
|
+
enabled?: boolean;
|
|
285
|
+
bleedPct?: string;
|
|
286
|
+
borderRadius?: string;
|
|
287
|
+
sideWidth?: string;
|
|
288
|
+
};
|
|
289
|
+
type SliderScale = {
|
|
290
|
+
enabled?: boolean;
|
|
291
|
+
amount?: number;
|
|
292
|
+
};
|
|
293
|
+
type SliderFade = {
|
|
294
|
+
enabled?: boolean;
|
|
295
|
+
};
|
|
296
|
+
type SliderEffects = {
|
|
297
|
+
parallax?: SliderParallax;
|
|
298
|
+
scale?: SliderScale;
|
|
299
|
+
fade?: SliderFade;
|
|
300
|
+
};
|
|
301
|
+
type SliderMotion = {
|
|
302
|
+
selectDuration?: number;
|
|
303
|
+
freeScrollDuration?: number;
|
|
304
|
+
friction?: number;
|
|
305
|
+
};
|
|
306
|
+
type SliderOptions = {
|
|
307
|
+
layout?: SliderLayout$1;
|
|
308
|
+
direction?: SliderDirection;
|
|
309
|
+
size?: SliderSize;
|
|
310
|
+
align?: "start" | "center";
|
|
311
|
+
scroll?: SliderScroll;
|
|
312
|
+
elements?: SliderElements;
|
|
313
|
+
lazyLoad?: boolean;
|
|
314
|
+
controls?: SliderControls;
|
|
315
|
+
thumbnails?: ThumbnailsOptions;
|
|
316
|
+
auto?: SliderAuto;
|
|
317
|
+
transitions?: SliderTransitions;
|
|
318
|
+
motion?: SliderMotion;
|
|
319
|
+
effects?: SliderEffects;
|
|
320
|
+
};
|
|
321
|
+
interface SliderHandle {
|
|
322
|
+
centerSlider: () => void;
|
|
323
|
+
getIndex: () => number;
|
|
324
|
+
setIndex: (i: number, mode?: IndexMode) => void;
|
|
325
|
+
subscribeIndex: (fn: () => void) => () => void;
|
|
326
|
+
slideIndexForCell: (cellIndex: number) => number;
|
|
327
|
+
getRootNode(): HTMLElement | null;
|
|
328
|
+
getContainerNode(): HTMLElement | null;
|
|
329
|
+
getSlideNodes(): HTMLElement[];
|
|
330
|
+
onSlidesBuilt(cb: (nodes: HTMLElement[]) => void): () => void;
|
|
331
|
+
whenSlidesBuilt(): Promise<HTMLElement[]>;
|
|
332
|
+
isSlidesBuilt(): boolean;
|
|
333
|
+
scrollNext: (mode?: IndexMode) => void;
|
|
334
|
+
scrollPrev: (mode?: IndexMode) => void;
|
|
335
|
+
canScrollNext: () => boolean;
|
|
336
|
+
canScrollPrev: () => boolean;
|
|
337
|
+
scrollProgress: () => number;
|
|
338
|
+
cellsInView: () => number[];
|
|
339
|
+
getInternals(): {
|
|
340
|
+
slides: RefObject<{
|
|
341
|
+
cells: {
|
|
342
|
+
element: HTMLElement;
|
|
343
|
+
index: number;
|
|
344
|
+
}[];
|
|
345
|
+
target: number;
|
|
346
|
+
}[]>;
|
|
347
|
+
slider: RefObject<HTMLDivElement | null>;
|
|
348
|
+
visibleImages: RefObject<number>;
|
|
349
|
+
selectedIndex: RefObject<number>;
|
|
350
|
+
sliderX: RefObject<number>;
|
|
351
|
+
sliderVelocity: RefObject<number>;
|
|
352
|
+
isWrapping: RefObject<boolean>;
|
|
353
|
+
};
|
|
354
|
+
}
|
|
143
355
|
|
|
144
356
|
type LoadingOptions = {
|
|
145
357
|
isLoading?: boolean;
|
|
@@ -148,6 +360,17 @@ type LoadingOptions = {
|
|
|
148
360
|
layout: "slider" | "grid" | "masonry" | "entries";
|
|
149
361
|
count: number;
|
|
150
362
|
}) => React.ReactNode;
|
|
363
|
+
shimmer?: {
|
|
364
|
+
paddingBottom?: string;
|
|
365
|
+
radius?: number | string;
|
|
366
|
+
c1?: string;
|
|
367
|
+
c2?: string;
|
|
368
|
+
c3?: string;
|
|
369
|
+
size?: string;
|
|
370
|
+
duration?: string;
|
|
371
|
+
timing?: string;
|
|
372
|
+
};
|
|
373
|
+
ratios?: number[];
|
|
151
374
|
};
|
|
152
375
|
type IntroOptions = {
|
|
153
376
|
renderIntro?: (args: {
|
|
@@ -203,12 +426,168 @@ type EntriesOptions = {
|
|
|
203
426
|
loading?: LoadingOptions;
|
|
204
427
|
intro?: IntroOptions;
|
|
205
428
|
};
|
|
429
|
+
type SlideOwner = {
|
|
430
|
+
entryIndex: number;
|
|
431
|
+
};
|
|
432
|
+
|
|
433
|
+
declare const DEFAULT_ENTRIES: Required<Pick<EntriesOptions, "mediaLayout">>;
|
|
434
|
+
|
|
435
|
+
type EntriesMediaContainerRender = (args: {
|
|
436
|
+
entryIndex: number;
|
|
437
|
+
mediaNodes: React$1.ReactNode[];
|
|
438
|
+
entrySliderRefs?: React$1.RefObject<Array<SliderHandle | null>>;
|
|
439
|
+
}) => React$1.ReactNode;
|
|
440
|
+
type FullscreenItemsInput = MediaItem[] | string[];
|
|
441
|
+
/**
|
|
442
|
+
* Flatten entries -> media list + link map + entry->flat indices + owners
|
|
443
|
+
* Useful for:
|
|
444
|
+
* - fullscreenItems (fs addon)
|
|
445
|
+
* - entryFlatIndexRef / entryMapRef bookkeeping
|
|
446
|
+
*/
|
|
447
|
+
declare function flattenEntries(items: EntryItem[] | undefined): {
|
|
448
|
+
flattenedMedia: MediaItem[];
|
|
449
|
+
flattenedMap: MediaEntryLink[];
|
|
450
|
+
entryFlatIndex: number[][] | null;
|
|
451
|
+
owners: SlideOwner[];
|
|
452
|
+
};
|
|
453
|
+
type EntriesProps = {
|
|
454
|
+
enabled?: boolean;
|
|
455
|
+
entries: EntriesOptions;
|
|
456
|
+
/**
|
|
457
|
+
* If you don't pass this, Entries will default to:
|
|
458
|
+
* - fullscreen.items if provided
|
|
459
|
+
* - else flattened entries media
|
|
460
|
+
*/
|
|
461
|
+
fullscreen?: {
|
|
462
|
+
enabled?: boolean;
|
|
463
|
+
items?: FullscreenItemsInput;
|
|
464
|
+
};
|
|
465
|
+
/**
|
|
466
|
+
* Called by EntryList to wrap mediaNodes in the chosen layout container.
|
|
467
|
+
* This is what makes slider/grid/masonry *fully treeshakable*:
|
|
468
|
+
* users import ONE media renderer module and pass it here.
|
|
469
|
+
*/
|
|
470
|
+
renderMediaContainer: EntriesMediaContainerRender;
|
|
471
|
+
/**
|
|
472
|
+
* Override for media node creation when entries.render.media isn't provided.
|
|
473
|
+
*/
|
|
474
|
+
nodeFromMedia?: (m: MediaItem) => React$1.ReactNode;
|
|
475
|
+
/**
|
|
476
|
+
* Optional: provide your own refs if you want to read them outside.
|
|
477
|
+
* If omitted, Entries creates internal refs.
|
|
478
|
+
*/
|
|
479
|
+
entryFlatIndexRef?: React$1.RefObject<number[][] | null>;
|
|
480
|
+
entryMapRef?: React$1.RefObject<MediaEntryLink[] | null>;
|
|
481
|
+
fsOwnersRef?: React$1.RefObject<SlideOwner[]>;
|
|
482
|
+
entrySliderRefs?: React$1.RefObject<Array<SliderHandle | null>>;
|
|
483
|
+
/**
|
|
484
|
+
* Optional: if you're NOT inside GalleryCore and still want to open fullscreen,
|
|
485
|
+
* you can provide a callback.
|
|
486
|
+
*/
|
|
487
|
+
onOpenFullscreen?: (args: {
|
|
488
|
+
index: number;
|
|
489
|
+
img: HTMLImageElement;
|
|
490
|
+
event?: Event;
|
|
491
|
+
}) => void;
|
|
492
|
+
};
|
|
493
|
+
declare function Entries(props: EntriesProps): react_jsx_runtime.JSX.Element;
|
|
494
|
+
|
|
495
|
+
type FullscreenOpenRequest = {
|
|
496
|
+
source: "slider";
|
|
497
|
+
index: number;
|
|
498
|
+
img: HTMLImageElement | null;
|
|
499
|
+
event?: Event;
|
|
500
|
+
} | {
|
|
501
|
+
source: "grid" | "masonry" | "entries";
|
|
502
|
+
index: number;
|
|
503
|
+
img: HTMLImageElement | null;
|
|
504
|
+
event?: Event;
|
|
505
|
+
};
|
|
506
|
+
type CoreLayout = "slider" | "grid" | "masonry" | "entries";
|
|
507
|
+
type Cell = {
|
|
508
|
+
id: string;
|
|
509
|
+
node: React$1.ReactNode;
|
|
510
|
+
};
|
|
511
|
+
type FullscreenSource = FullscreenOpenRequest["source"];
|
|
512
|
+
type FullscreenEntryContext = {
|
|
513
|
+
entryMapRef?: React$1.RefObject<MediaEntryLink[] | null>;
|
|
514
|
+
entryMediaLayout?: "slider" | "grid" | "masonry";
|
|
515
|
+
entriesObject?: any;
|
|
516
|
+
entrySliderRefs?: React$1.RefObject<Array<SliderHandle | null>>;
|
|
517
|
+
expandableImgRefs?: React$1.RefObject<Array<HTMLImageElement | null>>;
|
|
518
|
+
};
|
|
519
|
+
type FullscreenSourceAdapter = {
|
|
520
|
+
/** for layouts that have a “real slider” behind a given index */
|
|
521
|
+
getOwnerSliderHandle?: (index: number) => SliderHandle | null;
|
|
522
|
+
/** for entries: ensure the correct media slider is ready before opening */
|
|
523
|
+
syncBeforeOpen?: (index: number) => void;
|
|
524
|
+
/** used by intro logic to find the “cell wrapper” */
|
|
525
|
+
closestSelector?: string;
|
|
526
|
+
/** extra context used by fullscreen runtime (entries only) */
|
|
527
|
+
getEntryContext?: () => FullscreenEntryContext;
|
|
528
|
+
};
|
|
529
|
+
type GalleryCoreProps = {
|
|
530
|
+
children?: React$1.ReactNode;
|
|
531
|
+
/** tells add-ons which base layout is mounted */
|
|
532
|
+
layout: CoreLayout;
|
|
533
|
+
/** optional breakpoint override */
|
|
534
|
+
breakpoints?: BreakpointMap;
|
|
535
|
+
/**
|
|
536
|
+
* optional: provide fullscreen/media items centrally.
|
|
537
|
+
* - If MediaItem[], use as-is
|
|
538
|
+
* - If string[], will be converted via toMediaItems()
|
|
539
|
+
*/
|
|
540
|
+
fullscreenItems?: MediaItem[] | string[];
|
|
541
|
+
/**
|
|
542
|
+
* optional: if user passes children nodes (e.g. SliderLayout children),
|
|
543
|
+
* core can manage them as cells.
|
|
544
|
+
*
|
|
545
|
+
* NOTE: This is intentionally "opt-in" to keep core generic.
|
|
546
|
+
*/
|
|
547
|
+
nodes?: React$1.ReactNode | React$1.ReactNode[];
|
|
548
|
+
};
|
|
549
|
+
/** Provider (internal name kept for clarity) */
|
|
550
|
+
declare function GalleryCoreProvider(props: GalleryCoreProps): react_jsx_runtime.JSX.Element;
|
|
551
|
+
type GalleryCore = {
|
|
552
|
+
layout: CoreLayout;
|
|
553
|
+
effectiveBreakpoints: BreakpointMap;
|
|
554
|
+
cellsState: Cell[];
|
|
555
|
+
cellsRef: React$1.RefObject<Cell[]>;
|
|
556
|
+
normalizedItems: MediaItem[];
|
|
557
|
+
setNormalizedItems: React$1.Dispatch<React$1.SetStateAction<MediaItem[]>>;
|
|
558
|
+
sliderApiRef: React$1.RefObject<SliderHandle | null>;
|
|
559
|
+
append: (nodes: React$1.ReactNode | React$1.ReactNode[]) => number;
|
|
560
|
+
prepend: (nodes: React$1.ReactNode | React$1.ReactNode[]) => number;
|
|
561
|
+
insert: (index: number, nodes: React$1.ReactNode | React$1.ReactNode[]) => number;
|
|
562
|
+
remove: (index: number) => number;
|
|
563
|
+
replace: (index: number, node: React$1.ReactNode) => void;
|
|
564
|
+
setItems: (nodes: React$1.ReactNode[]) => number;
|
|
565
|
+
requestFullscreenOpen: (req: FullscreenOpenRequest) => void;
|
|
566
|
+
fsOpenSub: {
|
|
567
|
+
emit(v: FullscreenOpenRequest): void;
|
|
568
|
+
subscribe(fn: (v: FullscreenOpenRequest) => void): () => void;
|
|
569
|
+
};
|
|
570
|
+
isFullscreenOpen: boolean;
|
|
571
|
+
isFullscreenOpenRef: React$1.RefObject<boolean>;
|
|
572
|
+
setFullscreenOpen: (open: boolean) => void;
|
|
573
|
+
registerFullscreenAdapter: (source: FullscreenSource, a: FullscreenSourceAdapter) => void;
|
|
574
|
+
getFullscreenAdapter: (source: FullscreenSource) => FullscreenSourceAdapter | null;
|
|
575
|
+
expandableImgRefs: React$1.RefObject<Array<HTMLImageElement | null>>;
|
|
576
|
+
registerExpandableImg: (index: number, node: HTMLElement | null) => void;
|
|
577
|
+
};
|
|
578
|
+
/** ✅ Option A: public component alias */
|
|
579
|
+
declare const GalleryCore: typeof GalleryCoreProvider;
|
|
206
580
|
|
|
207
581
|
type FsCounterArgs = {
|
|
208
582
|
index: number;
|
|
209
583
|
count: number;
|
|
210
584
|
};
|
|
211
585
|
type FsCaptionPlacement = "top" | "right" | "bottom" | "left";
|
|
586
|
+
type FsIntroRequest = null | {
|
|
587
|
+
origImg: HTMLImageElement;
|
|
588
|
+
index: number;
|
|
589
|
+
closestSelector?: string;
|
|
590
|
+
};
|
|
212
591
|
type FSImageRender = (args: {
|
|
213
592
|
item: Extract<MediaItem, {
|
|
214
593
|
kind: "image";
|
|
@@ -301,22 +680,107 @@ type FullscreenOptions = {
|
|
|
301
680
|
effects?: FullscreenEffectsOptions;
|
|
302
681
|
};
|
|
303
682
|
|
|
304
|
-
type
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
683
|
+
type UseFullscreenArgs = {
|
|
684
|
+
fullscreen?: FullscreenOptions;
|
|
685
|
+
slider?: SliderOptions;
|
|
686
|
+
sliderObject: any;
|
|
687
|
+
cellsStateLength: number;
|
|
688
|
+
};
|
|
689
|
+
declare function useFullscreenController(args: UseFullscreenArgs): {
|
|
690
|
+
fs: {
|
|
691
|
+
slider: {
|
|
692
|
+
duration: number;
|
|
693
|
+
friction: number;
|
|
694
|
+
};
|
|
695
|
+
zoom: {
|
|
696
|
+
clickZoomLevel: number;
|
|
697
|
+
maxZoomLevel: number;
|
|
698
|
+
panDuration: number;
|
|
699
|
+
panFriction: number;
|
|
700
|
+
};
|
|
701
|
+
effects: {
|
|
702
|
+
introDuration: number;
|
|
703
|
+
introEasing: string;
|
|
704
|
+
introFade: boolean;
|
|
705
|
+
slideFade: boolean;
|
|
706
|
+
slideFadeDuration: number;
|
|
707
|
+
slideFadeEasing: string;
|
|
708
|
+
thumbnailsFadeDuration: number;
|
|
709
|
+
thumbnailsFadeEasing: string;
|
|
710
|
+
};
|
|
711
|
+
controls: {
|
|
712
|
+
close?: FullscreenClose;
|
|
713
|
+
arrows?: FullscreenArrows;
|
|
714
|
+
counter?: FullscreenCounter;
|
|
715
|
+
};
|
|
716
|
+
caption: {
|
|
717
|
+
className?: string;
|
|
718
|
+
style?: React__default.CSSProperties;
|
|
719
|
+
placement?: FsCaptionPlacement;
|
|
720
|
+
width?: number;
|
|
721
|
+
height?: number;
|
|
722
|
+
breakpoint?: number;
|
|
723
|
+
render?: (args: FsCaptionRenderArgs) => React__default.ReactNode;
|
|
724
|
+
};
|
|
725
|
+
thumbnails: {
|
|
726
|
+
children?: React__default.ReactNode;
|
|
727
|
+
layout?: ThumbnailsLayout;
|
|
728
|
+
elements?: ThumbnailsElements;
|
|
729
|
+
scroll?: ThumbnailsScroll;
|
|
730
|
+
controls?: ThumbnailsControls;
|
|
731
|
+
motion?: ThumbnailsMotion;
|
|
732
|
+
transitions?: ThumbnailsTransitions;
|
|
733
|
+
breakpointMap?: BreakpointMap;
|
|
734
|
+
};
|
|
735
|
+
enabled: boolean;
|
|
736
|
+
items?: MediaItem[] | string[];
|
|
737
|
+
renderImage?: FSImageRender;
|
|
738
|
+
video?: FullscreenVideoOptions;
|
|
315
739
|
};
|
|
316
|
-
|
|
317
|
-
|
|
740
|
+
fullscreenNode: react_jsx_runtime.JSX.Element | null;
|
|
741
|
+
openFullscreenAt: (source: FullscreenOpenRequest["source"], gridIndex: number, originEl?: HTMLElement | null) => void;
|
|
742
|
+
isClick: React__default.RefObject<boolean>;
|
|
743
|
+
expandableImgRefs: React__default.RefObject<(HTMLImageElement | null)[]>;
|
|
744
|
+
overlayDivRef: React__default.RefObject<HTMLDivElement | null>;
|
|
745
|
+
duplicateImgRef: React__default.RefObject<HTMLElement | null>;
|
|
746
|
+
closeButtonRef: React__default.RefObject<HTMLElement | null>;
|
|
747
|
+
counterRef: React__default.RefObject<HTMLElement | null>;
|
|
748
|
+
leftChevronRef: React__default.RefObject<HTMLElement | null>;
|
|
749
|
+
rightChevronRef: React__default.RefObject<HTMLElement | null>;
|
|
750
|
+
sliderForFullscreen: React__default.RefObject<HTMLDivElement | null>;
|
|
751
|
+
slidesForFullscreen: React__default.RefObject<{
|
|
752
|
+
cells: {
|
|
753
|
+
element: HTMLElement;
|
|
754
|
+
index: number;
|
|
755
|
+
}[];
|
|
756
|
+
target: number;
|
|
757
|
+
}[]>;
|
|
758
|
+
visibleImagesForFullscreen: React__default.RefObject<number>;
|
|
759
|
+
selectedIndexForFullscreen: React__default.RefObject<number>;
|
|
760
|
+
sliderXForFullscreen: React__default.RefObject<number>;
|
|
761
|
+
sliderVelocityForFullscreen: React__default.RefObject<number>;
|
|
762
|
+
isWrappingForFullscreen: React__default.RefObject<boolean>;
|
|
763
|
+
fsThumbContainerRef: React__default.RefObject<HTMLDivElement | null>;
|
|
764
|
+
cells: React__default.RefObject<{
|
|
765
|
+
element: HTMLElement;
|
|
766
|
+
index: number;
|
|
767
|
+
}[]>;
|
|
768
|
+
setSlideIndex: React__default.Dispatch<React__default.SetStateAction<number>>;
|
|
769
|
+
setShowFullscreenModal: React__default.Dispatch<React__default.SetStateAction<boolean>>;
|
|
770
|
+
setShowFullscreenSlider: React__default.Dispatch<React__default.SetStateAction<boolean>>;
|
|
771
|
+
setFsFadeOpening: React__default.Dispatch<React__default.SetStateAction<boolean>>;
|
|
772
|
+
showFullscreenModal: boolean;
|
|
773
|
+
showFullscreenSlider: boolean;
|
|
774
|
+
fsFadeOpening: boolean;
|
|
775
|
+
closingModal: boolean;
|
|
318
776
|
};
|
|
319
777
|
|
|
778
|
+
declare const SliderLayout: React$1.ForwardRefExoticComponent<SliderOptions & {
|
|
779
|
+
children?: React$1.ReactNode;
|
|
780
|
+
breakpoints?: BreakpointMap;
|
|
781
|
+
expandableImgRefs?: React$1.RefObject<Array<HTMLImageElement | null>>;
|
|
782
|
+
} & React$1.RefAttributes<SliderHandle>>;
|
|
783
|
+
|
|
320
784
|
type GridOptions = {
|
|
321
785
|
columns?: ResponsiveNumber;
|
|
322
786
|
minColumnWidth?: number | string;
|
|
@@ -327,184 +791,35 @@ type GridOptions = {
|
|
|
327
791
|
intro?: IntroOptions;
|
|
328
792
|
};
|
|
329
793
|
|
|
330
|
-
type
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
onReady?(cb: (nodes: HTMLElement[]) => void): () => void;
|
|
336
|
-
whenReady?(): Promise<HTMLElement[]>;
|
|
337
|
-
isReady?(): boolean;
|
|
338
|
-
scrollTo(index: number, jump?: boolean): void;
|
|
339
|
-
scrollNext(jump?: boolean): void;
|
|
340
|
-
scrollPrev(jump?: boolean): void;
|
|
341
|
-
canScrollNext(): boolean;
|
|
342
|
-
canScrollPrev(): boolean;
|
|
343
|
-
getIndex(): number;
|
|
344
|
-
selectCell(index: number, jump?: boolean): void;
|
|
345
|
-
scrollProgress(): number;
|
|
346
|
-
cellsInView(): number[];
|
|
347
|
-
append(nodes: React.ReactNode | React.ReactNode[]): number;
|
|
348
|
-
prepend(nodes: React.ReactNode | React.ReactNode[]): number;
|
|
349
|
-
insert(index: number, nodes: React.ReactNode | React.ReactNode[]): number;
|
|
350
|
-
remove(indexOrPredicate: number | ((i: number) => boolean)): number;
|
|
351
|
-
replace(index: number, node: React.ReactNode): void;
|
|
352
|
-
setItems(nodes: React.ReactNode[]): number;
|
|
353
|
-
onIndexChange(cb: (i: number, meta: {
|
|
354
|
-
mode: IndexMode;
|
|
355
|
-
}) => void): () => void;
|
|
356
|
-
}
|
|
357
|
-
|
|
358
|
-
type ResponsiveHeightRule = {
|
|
359
|
-
query: string;
|
|
360
|
-
height: string;
|
|
361
|
-
};
|
|
362
|
-
type SliderLayout = {
|
|
363
|
-
gap?: number;
|
|
364
|
-
cellsPerSlide?: ResponsiveNumber;
|
|
365
|
-
};
|
|
366
|
-
type SliderDirection = {
|
|
367
|
-
dir?: "ltr" | "rtl";
|
|
368
|
-
axis?: "x" | "y";
|
|
369
|
-
};
|
|
370
|
-
type SliderSize = {
|
|
371
|
-
height?: string;
|
|
372
|
-
heightRules?: ResponsiveHeightRule[];
|
|
373
|
-
initialHeight?: number | string;
|
|
374
|
-
};
|
|
375
|
-
type SliderElements = {
|
|
376
|
-
viewport?: ElementStyle;
|
|
377
|
-
container?: ElementStyle;
|
|
378
|
-
};
|
|
379
|
-
type SliderScroll = {
|
|
380
|
-
groupCells?: boolean;
|
|
381
|
-
skipSnaps?: boolean;
|
|
382
|
-
freeScroll?: boolean;
|
|
383
|
-
loop?: boolean;
|
|
384
|
-
};
|
|
385
|
-
type SliderArrows = {
|
|
386
|
-
enabled?: boolean;
|
|
387
|
-
arrow?: ElementStyle;
|
|
388
|
-
prev?: ElementStyle;
|
|
389
|
-
next?: ElementStyle;
|
|
390
|
-
render?: (args: ArrowRenderArgs & {
|
|
391
|
-
dir: "prev" | "next";
|
|
392
|
-
}) => React.ReactNode;
|
|
393
|
-
renderPrev?: (args: ArrowRenderArgs) => React.ReactNode;
|
|
394
|
-
renderNext?: (args: ArrowRenderArgs) => React.ReactNode;
|
|
395
|
-
};
|
|
396
|
-
type SliderDots = {
|
|
397
|
-
enabled?: boolean;
|
|
398
|
-
root?: ElementStyle;
|
|
399
|
-
dot?: ElementStyle;
|
|
400
|
-
render?: (args: DotsRenderArgs) => React.ReactNode;
|
|
401
|
-
};
|
|
402
|
-
type SliderProgress = {
|
|
403
|
-
enabled?: boolean;
|
|
404
|
-
root?: ElementStyle;
|
|
405
|
-
bar?: ElementStyle;
|
|
406
|
-
render?: (args: ProgressRenderArgs) => React.ReactNode;
|
|
407
|
-
};
|
|
408
|
-
type SliderRipple = {
|
|
409
|
-
enabled?: boolean;
|
|
410
|
-
className?: string;
|
|
411
|
-
};
|
|
412
|
-
type SliderControls = {
|
|
413
|
-
arrows?: SliderArrows;
|
|
414
|
-
dots?: SliderDots;
|
|
415
|
-
progress?: SliderProgress;
|
|
416
|
-
ripple?: SliderRipple;
|
|
417
|
-
};
|
|
418
|
-
type SliderAutoPlay = {
|
|
419
|
-
enabled?: boolean;
|
|
420
|
-
speedMs?: number;
|
|
421
|
-
pauseMs?: number;
|
|
422
|
-
pauseOnHover?: boolean;
|
|
423
|
-
};
|
|
424
|
-
type SliderAutoScroll = {
|
|
425
|
-
enabled?: boolean;
|
|
426
|
-
speedMs?: number;
|
|
427
|
-
pauseMs?: number;
|
|
428
|
-
pauseOnHover?: boolean;
|
|
429
|
-
};
|
|
430
|
-
type SliderAuto = {
|
|
431
|
-
play?: SliderAutoPlay;
|
|
432
|
-
scroll?: SliderAutoScroll;
|
|
433
|
-
};
|
|
434
|
-
type SliderLoadingOptions = {
|
|
435
|
-
isLoading?: boolean;
|
|
436
|
-
skeletonCount?: ResponsiveNumber;
|
|
437
|
-
renderLoading?: (args: {
|
|
438
|
-
layout: "slider" | "grid" | "masonry" | "entries";
|
|
439
|
-
count: number;
|
|
440
|
-
}) => React.ReactNode;
|
|
441
|
-
};
|
|
442
|
-
type SliderIntroOptions = {
|
|
443
|
-
renderIntro?: (args: {
|
|
444
|
-
active: boolean;
|
|
445
|
-
containerProps: React.HTMLAttributes<HTMLDivElement>;
|
|
446
|
-
}, content: React.ReactNode) => React.ReactNode;
|
|
447
|
-
staggerMs?: number;
|
|
448
|
-
transform?: number | string;
|
|
449
|
-
durationMs?: number;
|
|
450
|
-
easing?: string;
|
|
451
|
-
};
|
|
452
|
-
type SliderTransitions = {
|
|
453
|
-
loading?: SliderLoadingOptions;
|
|
454
|
-
intro?: SliderIntroOptions;
|
|
455
|
-
};
|
|
456
|
-
type SliderParallax = {
|
|
457
|
-
enabled?: boolean;
|
|
458
|
-
bleedPct?: string;
|
|
459
|
-
borderRadius?: string;
|
|
460
|
-
sideWidth?: string;
|
|
461
|
-
};
|
|
462
|
-
type SliderScale = {
|
|
463
|
-
enabled?: boolean;
|
|
464
|
-
amount?: number;
|
|
465
|
-
};
|
|
466
|
-
type SliderFade = {
|
|
467
|
-
enabled?: boolean;
|
|
468
|
-
};
|
|
469
|
-
type SliderEffects = {
|
|
470
|
-
parallax?: SliderParallax;
|
|
471
|
-
scale?: SliderScale;
|
|
472
|
-
fade?: SliderFade;
|
|
473
|
-
};
|
|
474
|
-
type SliderMotion = {
|
|
475
|
-
selectDuration?: number;
|
|
476
|
-
freeScrollDuration?: number;
|
|
477
|
-
friction?: number;
|
|
794
|
+
type Props$1 = GridOptions & {
|
|
795
|
+
children?: React$1.ReactNode;
|
|
796
|
+
breakpoints?: BreakpointMap;
|
|
797
|
+
gridItemBaseClass?: string;
|
|
798
|
+
renderMode?: "wrap" | "passthrough";
|
|
478
799
|
};
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
800
|
+
declare function GridLayoutRuntime(props: Props$1): react_jsx_runtime.JSX.Element;
|
|
801
|
+
|
|
802
|
+
type MasonryOptions = {
|
|
803
|
+
columns?: ResponsiveNumber;
|
|
804
|
+
gap?: ResponsiveNumber;
|
|
805
|
+
placement?: "balanced" | "roundRobin";
|
|
806
|
+
estimatedItemHeight?: number;
|
|
807
|
+
as?: React.ElementType;
|
|
808
|
+
rootRef?: React.Ref<HTMLDivElement>;
|
|
809
|
+
classNames?: {
|
|
810
|
+
root?: string;
|
|
811
|
+
column?: string;
|
|
812
|
+
item?: string;
|
|
813
|
+
};
|
|
814
|
+
loading?: LoadingOptions;
|
|
815
|
+
intro?: IntroOptions;
|
|
493
816
|
};
|
|
494
817
|
|
|
495
|
-
type Props = {
|
|
496
|
-
children?: ReactNode;
|
|
497
|
-
fullscreen?: FullscreenOptions;
|
|
498
|
-
slider?: SliderOptions;
|
|
499
|
-
layout?: 'slider' | 'grid' | 'masonry' | 'entries';
|
|
500
|
-
grid?: GridOptions;
|
|
501
|
-
masonry?: MasonryOptions;
|
|
502
|
-
entries?: EntriesOptions;
|
|
818
|
+
type Props = MasonryOptions & {
|
|
819
|
+
children?: React$1.ReactNode;
|
|
503
820
|
breakpoints?: BreakpointMap;
|
|
504
|
-
root?: ElementStyle;
|
|
505
|
-
container?: ElementStyle;
|
|
506
821
|
};
|
|
507
|
-
declare
|
|
822
|
+
declare function MasonryLayoutRuntime(props: Props): react_jsx_runtime.JSX.Element;
|
|
508
823
|
|
|
509
824
|
type RmgPlyrSourceBuilder = (args: {
|
|
510
825
|
src: string;
|
|
@@ -531,4 +846,124 @@ type RmgPlyrVideoProps = {
|
|
|
531
846
|
};
|
|
532
847
|
declare function RmgPlyrVideo(props: RmgPlyrVideoProps): react_jsx_runtime.JSX.Element;
|
|
533
848
|
|
|
534
|
-
|
|
849
|
+
declare function PanAxis(): {
|
|
850
|
+
scroll: "x";
|
|
851
|
+
cross: "y";
|
|
852
|
+
direction(n: number): number;
|
|
853
|
+
};
|
|
854
|
+
type PanAxisType = ReturnType<typeof PanAxis>;
|
|
855
|
+
|
|
856
|
+
declare const DEFAULT_SLIDER: {
|
|
857
|
+
readonly layout: {
|
|
858
|
+
readonly gap: 20;
|
|
859
|
+
};
|
|
860
|
+
readonly direction: {
|
|
861
|
+
readonly dir: "ltr";
|
|
862
|
+
readonly axis: "x";
|
|
863
|
+
};
|
|
864
|
+
readonly align: "start";
|
|
865
|
+
readonly scroll: {
|
|
866
|
+
readonly groupCells: false;
|
|
867
|
+
readonly skipSnaps: false;
|
|
868
|
+
readonly freeScroll: false;
|
|
869
|
+
readonly loop: false;
|
|
870
|
+
};
|
|
871
|
+
readonly lazyLoad: false;
|
|
872
|
+
readonly controls: {
|
|
873
|
+
readonly arrows: {
|
|
874
|
+
readonly enabled: true;
|
|
875
|
+
readonly arrow: {};
|
|
876
|
+
readonly prev: {};
|
|
877
|
+
readonly next: {};
|
|
878
|
+
};
|
|
879
|
+
readonly dots: {
|
|
880
|
+
readonly enabled: true;
|
|
881
|
+
readonly root: {};
|
|
882
|
+
readonly dot: {};
|
|
883
|
+
};
|
|
884
|
+
readonly progress: {
|
|
885
|
+
readonly enabled: false;
|
|
886
|
+
readonly root: {};
|
|
887
|
+
readonly bar: {};
|
|
888
|
+
};
|
|
889
|
+
readonly ripple: {
|
|
890
|
+
readonly enabled: true;
|
|
891
|
+
readonly className: "";
|
|
892
|
+
};
|
|
893
|
+
};
|
|
894
|
+
readonly thumbnails: Required<Pick<ThumbnailsOptions, "layout" | "scroll" | "motion">>;
|
|
895
|
+
readonly auto: {
|
|
896
|
+
readonly play: {
|
|
897
|
+
readonly enabled: false;
|
|
898
|
+
readonly speedMs: 3000;
|
|
899
|
+
readonly pauseMs: 1000;
|
|
900
|
+
readonly pauseOnHover: true;
|
|
901
|
+
};
|
|
902
|
+
readonly scroll: {
|
|
903
|
+
readonly enabled: false;
|
|
904
|
+
readonly speedMs: 3000;
|
|
905
|
+
readonly pauseMs: 1000;
|
|
906
|
+
readonly pauseOnHover: true;
|
|
907
|
+
};
|
|
908
|
+
};
|
|
909
|
+
readonly motion: {
|
|
910
|
+
readonly selectDuration: 25;
|
|
911
|
+
readonly freeScrollDuration: 43;
|
|
912
|
+
readonly friction: 0.68;
|
|
913
|
+
};
|
|
914
|
+
};
|
|
915
|
+
|
|
916
|
+
declare const DEFAULT_GRID: Required<Pick<GridOptions, "minColumnWidth" | "gap">>;
|
|
917
|
+
|
|
918
|
+
declare const DEFAULT_MASONRY: Required<Pick<MasonryOptions, "placement">>;
|
|
919
|
+
|
|
920
|
+
declare const DEFAULT_FULLSCREEN: {
|
|
921
|
+
readonly enabled: false;
|
|
922
|
+
readonly controls: {
|
|
923
|
+
readonly close: {
|
|
924
|
+
readonly enabled: true;
|
|
925
|
+
readonly style: {};
|
|
926
|
+
readonly className: "";
|
|
927
|
+
readonly render: undefined;
|
|
928
|
+
};
|
|
929
|
+
readonly arrows: {
|
|
930
|
+
readonly enabled: true;
|
|
931
|
+
readonly arrow: {};
|
|
932
|
+
readonly prev: {};
|
|
933
|
+
readonly next: {};
|
|
934
|
+
readonly render: undefined;
|
|
935
|
+
readonly renderPrev: undefined;
|
|
936
|
+
readonly renderNext: undefined;
|
|
937
|
+
};
|
|
938
|
+
readonly counter: {
|
|
939
|
+
readonly enabled: true;
|
|
940
|
+
readonly style: {};
|
|
941
|
+
readonly className: "";
|
|
942
|
+
readonly render: undefined;
|
|
943
|
+
};
|
|
944
|
+
};
|
|
945
|
+
readonly effects: {
|
|
946
|
+
readonly introDuration: 300;
|
|
947
|
+
readonly introEasing: "cubic-bezier(.4,0,.22,1)";
|
|
948
|
+
readonly introFade: false;
|
|
949
|
+
readonly slideFade: false;
|
|
950
|
+
readonly slideFadeDuration: 120;
|
|
951
|
+
readonly slideFadeEasing: "cubic-bezier(.4,0,.22,1)";
|
|
952
|
+
readonly thumbnailsFadeDuration: 300;
|
|
953
|
+
readonly thumbnailsFadeEasing: "cubic-bezier(.4,0,.22,1)";
|
|
954
|
+
};
|
|
955
|
+
readonly thumbnails: {};
|
|
956
|
+
readonly slider: {
|
|
957
|
+
readonly duration: 25;
|
|
958
|
+
readonly friction: 0.68;
|
|
959
|
+
};
|
|
960
|
+
readonly zoom: {
|
|
961
|
+
readonly clickZoomLevel: 2.5;
|
|
962
|
+
readonly maxZoomLevel: 3;
|
|
963
|
+
readonly panDuration: 43;
|
|
964
|
+
readonly panFriction: 0.68;
|
|
965
|
+
};
|
|
966
|
+
readonly caption: {};
|
|
967
|
+
};
|
|
968
|
+
|
|
969
|
+
export { BREAKPOINT_MAP, DEFAULT_ENTRIES, DEFAULT_FULLSCREEN, DEFAULT_GRID, DEFAULT_MASONRY, DEFAULT_SLIDER, type ElementStyle, Entries, type EntriesOptions, type FsCaptionPlacement, type FsIntroRequest, type FullscreenOptions, type GalleryApi, GalleryCore, GridLayoutRuntime, type GridOptions, type IndexMode, MasonryLayoutRuntime, type MasonryOptions, type MediaEntryLink, type MediaItem, type PanAxisType, type ResponsiveHeightRule, RmgPlyrVideo, type SlideOwner, type SliderHandle, SliderLayout, type SliderOptions, flattenEntries, toMediaItems, useFullscreenController };
|