react-motion-gallery 2.0.5 → 2.0.6

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.d.mts CHANGED
@@ -44,10 +44,7 @@ type ResponsivePosition = ThumbnailPosition | Array<ThumbnailPosition> | Record<
44
44
  type ThumbnailLoadingOptions = {
45
45
  isLoading?: boolean;
46
46
  skeletonCount?: ResponsiveNumber;
47
- renderLoading?: (args: {
48
- layout: "slider" | "thumbnails";
49
- count: number;
50
- }) => React$1.ReactNode;
47
+ renderLoading?: () => React$1.ReactNode;
51
48
  };
52
49
  type ThumbnailIntroOptions = {
53
50
  renderIntro?: (args: {
@@ -171,11 +168,80 @@ interface GalleryApi {
171
168
  }) => void): () => void;
172
169
  }
173
170
 
171
+ type SkeletonLength$2 = number | string;
172
+ type SkeletonShimmer$2 = {
173
+ enabled?: boolean;
174
+ durationMs?: number;
175
+ bandSizePct?: number;
176
+ angleDeg?: number;
177
+ };
178
+ type SkeletonBaseStyle$2 = {
179
+ width?: SkeletonLength$2;
180
+ maxWidth?: SkeletonLength$2;
181
+ height?: SkeletonLength$2;
182
+ maxHeight?: SkeletonLength$2;
183
+ backgroundColor?: string;
184
+ borderRadius?: SkeletonLength$2;
185
+ marginTop?: SkeletonLength$2;
186
+ marginRight?: SkeletonLength$2;
187
+ marginBottom?: SkeletonLength$2;
188
+ marginLeft?: SkeletonLength$2;
189
+ alignSelf?: React$1.CSSProperties["alignSelf"];
190
+ aspectRatio?: SkeletonLength$2;
191
+ };
192
+ type SkeletonContainerStyle$2 = {
193
+ gap?: SkeletonLength$2;
194
+ padding?: SkeletonLength$2;
195
+ align?: React$1.CSSProperties["alignItems"];
196
+ justify?: React$1.CSSProperties["justifyContent"];
197
+ wrap?: boolean;
198
+ width?: SkeletonLength$2;
199
+ maxWidth?: SkeletonLength$2;
200
+ };
201
+ type SkeletonContainerStyleResponsive$2 = SkeletonContainerStyle$2 | Record<string, SkeletonContainerStyle$2>;
202
+ type SliderSkeletonNode = {
203
+ kind: "slider";
204
+ style?: SkeletonContainerStyleResponsive$2;
205
+ count?: number;
206
+ item: SkeletonNode$2;
207
+ itemWrapStyle?: SkeletonBaseStyle$2;
208
+ direction?: "row" | "col";
209
+ } | SkeletonNode$2;
210
+ type SkeletonNode$2 = {
211
+ kind: "stack" | "row" | "col";
212
+ style?: SkeletonContainerStyleResponsive$2;
213
+ children: SkeletonNode$2[];
214
+ } | {
215
+ kind: "rect" | "square" | "circle";
216
+ style?: SkeletonBaseStyle$2;
217
+ shimmer?: SkeletonShimmer$2;
218
+ } | {
219
+ kind: "media";
220
+ count: number;
221
+ direction?: "row" | "col";
222
+ style?: SkeletonContainerStyleResponsive$2;
223
+ tile?: {
224
+ shape?: "rect" | "square" | "circle";
225
+ style?: SkeletonBaseStyle$2;
226
+ shimmer?: SkeletonShimmer$2;
227
+ };
228
+ };
229
+ type SliderSkeletonSpec = {
230
+ className?: string;
231
+ layout?: SliderSkeletonNode;
232
+ defaults?: {
233
+ backgroundColor?: string;
234
+ highlightColor?: string;
235
+ radius?: SkeletonLength$2;
236
+ shimmer?: SkeletonShimmer$2;
237
+ };
238
+ };
239
+
174
240
  type ResponsiveHeightRule = {
175
241
  query: string;
176
242
  height: string;
177
243
  };
178
- type SliderLayout$1 = {
244
+ type SliderLayout = {
179
245
  gap?: number;
180
246
  cellsPerSlide?: ResponsiveNumber;
181
247
  };
@@ -252,10 +318,8 @@ type SliderAuto = {
252
318
  type SliderLoadingOptions = {
253
319
  isLoading?: boolean;
254
320
  skeletonCount?: ResponsiveNumber;
255
- renderLoading?: (args: {
256
- layout: "slider" | "thumbnails";
257
- count: number;
258
- }) => React.ReactNode;
321
+ renderLoading?: () => React.ReactNode;
322
+ skeleton?: SliderSkeletonSpec;
259
323
  shimmer?: {
260
324
  radius?: number | string;
261
325
  c1?: string;
@@ -304,7 +368,7 @@ type SliderMotion = {
304
368
  friction?: number;
305
369
  };
306
370
  type SliderOptions = {
307
- layout?: SliderLayout$1;
371
+ layout?: SliderLayout;
308
372
  direction?: SliderDirection;
309
373
  size?: SliderSize;
310
374
  align?: "start" | "center";
@@ -353,35 +417,66 @@ interface SliderHandle {
353
417
  };
354
418
  }
355
419
 
356
- type LoadingOptions = {
357
- isLoading?: boolean;
358
- skeletonCount?: ResponsiveNumber;
359
- renderLoading?: (args: {
360
- layout: "slider" | "grid" | "masonry" | "entries";
361
- count: number;
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;
420
+ type SkeletonLength$1 = number | string;
421
+ type SkeletonShimmer$1 = {
422
+ enabled?: boolean;
423
+ durationMs?: number;
424
+ bandSizePct?: number;
425
+ angleDeg?: number;
426
+ };
427
+ type SkeletonBaseStyle$1 = {
428
+ width?: SkeletonLength$1;
429
+ maxWidth?: SkeletonLength$1;
430
+ height?: SkeletonLength$1;
431
+ maxHeight?: SkeletonLength$1;
432
+ backgroundColor?: string;
433
+ borderRadius?: SkeletonLength$1;
434
+ marginTop?: SkeletonLength$1;
435
+ marginRight?: SkeletonLength$1;
436
+ marginBottom?: SkeletonLength$1;
437
+ marginLeft?: SkeletonLength$1;
438
+ alignSelf?: React$1.CSSProperties["alignSelf"];
439
+ aspectRatio?: number | string;
440
+ };
441
+ type SkeletonContainerStyle$1 = {
442
+ gap?: SkeletonLength$1;
443
+ padding?: SkeletonLength$1;
444
+ align?: React$1.CSSProperties["alignItems"];
445
+ justify?: React$1.CSSProperties["justifyContent"];
446
+ wrap?: boolean;
447
+ width?: SkeletonLength$1;
448
+ maxWidth?: SkeletonLength$1;
449
+ };
450
+ type SkeletonContainerStyleResponsive$1 = SkeletonContainerStyle$1 | Record<string, SkeletonContainerStyle$1>;
451
+ type SkeletonNode$1 = {
452
+ kind: "stack" | "row" | "col";
453
+ style?: SkeletonContainerStyleResponsive$1;
454
+ children: SkeletonNode$1[];
455
+ } | {
456
+ kind: "rect" | "square" | "circle";
457
+ style?: SkeletonBaseStyle$1;
458
+ shimmer?: SkeletonShimmer$1;
459
+ } | {
460
+ kind: "media";
461
+ count: number;
462
+ direction?: "row" | "col";
463
+ style?: SkeletonContainerStyleResponsive$1;
464
+ tile?: {
465
+ shape?: "rect" | "square" | "circle";
466
+ style?: SkeletonBaseStyle$1;
467
+ shimmer?: SkeletonShimmer$1;
372
468
  };
373
- ratios?: number[];
374
469
  };
375
- type IntroOptions = {
376
- renderIntro?: (args: {
377
- active: boolean;
378
- containerProps: React.HTMLAttributes<HTMLDivElement>;
379
- }, content: React.ReactNode) => React.ReactNode;
380
- staggerMs?: number;
381
- transform?: string;
382
- durationMs?: number;
383
- easing?: string;
384
- staggerLimit?: number;
470
+ type EntrySkeletonSpec = {
471
+ layout?: SkeletonNode$1;
472
+ variant?: "solid";
473
+ minHeight?: SkeletonLength$1;
474
+ defaults?: {
475
+ backgroundColor?: string;
476
+ highlightColor?: string;
477
+ radius?: SkeletonLength$1;
478
+ shimmer?: SkeletonShimmer$1;
479
+ };
385
480
  };
386
481
 
387
482
  type EntryItem = {
@@ -414,6 +509,35 @@ type EntryCardRenderArgs = {
414
509
  entryIndex: number;
415
510
  media: React.ReactNode;
416
511
  };
512
+ type EntrySkeletonResolverArgs = {
513
+ entry: EntryItem;
514
+ entryIndex: number;
515
+ };
516
+ type EntriesLoadingOptions = {
517
+ isLoading?: boolean;
518
+ skeleton?: EntrySkeletonSpec | ((args: EntrySkeletonResolverArgs) => EntrySkeletonSpec | null | undefined);
519
+ minHeight?: SkeletonLength$1;
520
+ nearMargin?: string;
521
+ viewMargin?: string;
522
+ threshold?: number;
523
+ waitForDecode?: boolean;
524
+ decodeTimeoutMs?: number;
525
+ skeletonWrap?: ElementStyle;
526
+ };
527
+ type IntroOptions$2 = {
528
+ renderIntro?: (args: {
529
+ active: boolean;
530
+ containerProps: React.HTMLAttributes<HTMLDivElement>;
531
+ }, content: React.ReactNode) => React.ReactNode;
532
+ staggerMs?: number;
533
+ durationMs?: number;
534
+ easing?: string;
535
+ staggerLimit?: number;
536
+ };
537
+ type EntrySkeletonRenderArgs = {
538
+ entry: EntryItem;
539
+ entryIndex: number;
540
+ };
417
541
  type EntriesOptions = {
418
542
  items?: EntryItem[];
419
543
  mediaLayout?: EntryMediaLayout;
@@ -421,10 +545,13 @@ type EntriesOptions = {
421
545
  card?: (args: EntryCardRenderArgs) => React.ReactNode;
422
546
  media?: (args: EntryMediaRenderArgs) => React.ReactNode;
423
547
  overlay?: (args: EntryOverlayRenderArgs) => React.ReactNode;
548
+ skeleton?: (args: EntrySkeletonRenderArgs) => React.ReactNode;
424
549
  };
425
550
  overlay?: ElementStyle;
426
- loading?: LoadingOptions;
427
- intro?: IntroOptions;
551
+ loading?: EntriesLoadingOptions;
552
+ intro?: IntroOptions$2;
553
+ entryList?: ElementStyle;
554
+ entryRow?: ElementStyle;
428
555
  };
429
556
  type SlideOwner = {
430
557
  entryIndex: number;
@@ -438,12 +565,6 @@ type EntriesMediaContainerRender = (args: {
438
565
  entrySliderRefs?: React$1.RefObject<Array<SliderHandle | null>>;
439
566
  }) => React$1.ReactNode;
440
567
  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
568
  declare function flattenEntries(items: EntryItem[] | undefined): {
448
569
  flattenedMedia: MediaItem[];
449
570
  flattenedMap: MediaEntryLink[];
@@ -453,37 +574,16 @@ declare function flattenEntries(items: EntryItem[] | undefined): {
453
574
  type EntriesProps = {
454
575
  enabled?: boolean;
455
576
  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
577
  fullscreen?: {
462
578
  enabled?: boolean;
463
579
  items?: FullscreenItemsInput;
464
580
  };
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
581
  renderMediaContainer: EntriesMediaContainerRender;
471
- /**
472
- * Override for media node creation when entries.render.media isn't provided.
473
- */
474
582
  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
583
  entryFlatIndexRef?: React$1.RefObject<number[][] | null>;
480
584
  entryMapRef?: React$1.RefObject<MediaEntryLink[] | null>;
481
585
  fsOwnersRef?: React$1.RefObject<SlideOwner[]>;
482
586
  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
587
  onOpenFullscreen?: (args: {
488
588
  index: number;
489
589
  img: HTMLImageElement;
@@ -517,36 +617,18 @@ type FullscreenEntryContext = {
517
617
  expandableImgRefs?: React$1.RefObject<Array<HTMLImageElement | null>>;
518
618
  };
519
619
  type FullscreenSourceAdapter = {
520
- /** for layouts that have a “real slider” behind a given index */
521
620
  getOwnerSliderHandle?: (index: number) => SliderHandle | null;
522
- /** for entries: ensure the correct media slider is ready before opening */
523
621
  syncBeforeOpen?: (index: number) => void;
524
- /** used by intro logic to find the “cell wrapper” */
525
622
  closestSelector?: string;
526
- /** extra context used by fullscreen runtime (entries only) */
527
623
  getEntryContext?: () => FullscreenEntryContext;
528
624
  };
529
625
  type GalleryCoreProps = {
530
626
  children?: React$1.ReactNode;
531
- /** tells add-ons which base layout is mounted */
532
627
  layout: CoreLayout;
533
- /** optional breakpoint override */
534
628
  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
629
  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
630
  nodes?: React$1.ReactNode | React$1.ReactNode[];
548
631
  };
549
- /** Provider (internal name kept for clarity) */
550
632
  declare function GalleryCoreProvider(props: GalleryCoreProps): react_jsx_runtime.JSX.Element;
551
633
  type GalleryCore = {
552
634
  layout: CoreLayout;
@@ -575,7 +657,6 @@ type GalleryCore = {
575
657
  expandableImgRefs: React$1.RefObject<Array<HTMLImageElement | null>>;
576
658
  registerExpandableImg: (index: number, node: HTMLElement | null) => void;
577
659
  };
578
- /** ✅ Option A: public component alias */
579
660
  declare const GalleryCore: typeof GalleryCoreProvider;
580
661
 
581
662
  type FsCounterArgs = {
@@ -775,20 +856,116 @@ declare function useFullscreenController(args: UseFullscreenArgs): {
775
856
  closingModal: boolean;
776
857
  };
777
858
 
778
- declare const SliderLayout: React$1.ForwardRefExoticComponent<SliderOptions & {
859
+ declare const Slider: React$1.ForwardRefExoticComponent<SliderOptions & {
779
860
  children?: React$1.ReactNode;
780
861
  breakpoints?: BreakpointMap;
781
862
  expandableImgRefs?: React$1.RefObject<Array<HTMLImageElement | null>>;
782
863
  } & React$1.RefAttributes<SliderHandle>>;
783
864
 
865
+ type SkeletonLength = number | string;
866
+ type SkeletonShimmer = {
867
+ enabled?: boolean;
868
+ durationMs?: number;
869
+ bandSizePct?: number;
870
+ angleDeg?: number;
871
+ };
872
+ type SkeletonBaseStyle = {
873
+ width?: SkeletonLength;
874
+ maxWidth?: SkeletonLength;
875
+ height?: SkeletonLength;
876
+ maxHeight?: SkeletonLength;
877
+ backgroundColor?: string;
878
+ borderRadius?: SkeletonLength;
879
+ marginTop?: SkeletonLength;
880
+ marginRight?: SkeletonLength;
881
+ marginBottom?: SkeletonLength;
882
+ marginLeft?: SkeletonLength;
883
+ alignSelf?: React$1.CSSProperties["alignSelf"];
884
+ aspectRatio?: SkeletonLength;
885
+ };
886
+ type SkeletonContainerStyle = {
887
+ gap?: SkeletonLength;
888
+ padding?: SkeletonLength;
889
+ align?: React$1.CSSProperties["alignItems"];
890
+ justify?: React$1.CSSProperties["justifyContent"];
891
+ wrap?: boolean;
892
+ width?: SkeletonLength;
893
+ maxWidth?: SkeletonLength;
894
+ };
895
+ type SkeletonContainerStyleResponsive = SkeletonContainerStyle | Record<string, SkeletonContainerStyle>;
896
+ type GridSkeletonNode = {
897
+ kind: "grid";
898
+ style?: SkeletonContainerStyleResponsive;
899
+ count?: number;
900
+ item: SkeletonNode;
901
+ itemWrapStyle?: SkeletonBaseStyle;
902
+ } | SkeletonNode;
903
+ type SkeletonNode = {
904
+ kind: "stack" | "row" | "col";
905
+ style?: SkeletonContainerStyleResponsive;
906
+ children: SkeletonNode[];
907
+ } | {
908
+ kind: "rect" | "square" | "circle";
909
+ style?: SkeletonBaseStyle;
910
+ shimmer?: SkeletonShimmer;
911
+ } | {
912
+ kind: "media";
913
+ count: number;
914
+ direction?: "row" | "col";
915
+ style?: SkeletonContainerStyleResponsive;
916
+ tile?: {
917
+ shape?: "rect" | "square" | "circle";
918
+ style?: SkeletonBaseStyle;
919
+ shimmer?: SkeletonShimmer;
920
+ };
921
+ };
922
+ type GridSkeletonSpec = {
923
+ className?: string;
924
+ layout?: GridSkeletonNode;
925
+ defaults?: {
926
+ backgroundColor?: string;
927
+ highlightColor?: string;
928
+ radius?: SkeletonLength;
929
+ shimmer?: SkeletonShimmer;
930
+ };
931
+ };
932
+
933
+ type LoadingOptions$1 = {
934
+ isLoading?: boolean;
935
+ renderLoading?: (args: {
936
+ count: number;
937
+ }) => React.ReactNode;
938
+ skeleton?: GridSkeletonSpec;
939
+ shimmer?: {
940
+ paddingBottom?: string;
941
+ radius?: number | string;
942
+ c1?: string;
943
+ c2?: string;
944
+ c3?: string;
945
+ size?: string;
946
+ duration?: string;
947
+ timing?: string;
948
+ };
949
+ };
950
+ type IntroOptions$1 = {
951
+ renderIntro?: (args: {
952
+ active: boolean;
953
+ containerProps: React.HTMLAttributes<HTMLDivElement>;
954
+ }, content: React.ReactNode) => React.ReactNode;
955
+ staggerMs?: number;
956
+ transform?: string;
957
+ durationMs?: number;
958
+ easing?: string;
959
+ staggerLimit?: number;
960
+ };
784
961
  type GridOptions = {
785
962
  columns?: ResponsiveNumber;
786
963
  minColumnWidth?: number | string;
787
964
  gap?: ResponsiveNumber;
788
965
  rootClassName?: string;
789
966
  itemClassName?: string;
790
- loading?: LoadingOptions;
791
- intro?: IntroOptions;
967
+ loading?: LoadingOptions$1;
968
+ intro?: IntroOptions$1;
792
969
  };
793
970
 
794
971
  type Props$1 = GridOptions & {
@@ -799,6 +976,32 @@ type Props$1 = GridOptions & {
799
976
  };
800
977
  declare function GridLayoutRuntime(props: Props$1): react_jsx_runtime.JSX.Element;
801
978
 
979
+ type LoadingOptions = {
980
+ isLoading?: boolean;
981
+ renderLoading?: () => React.ReactNode;
982
+ shimmer?: {
983
+ paddingBottom?: string;
984
+ radius?: number | string;
985
+ c1?: string;
986
+ c2?: string;
987
+ c3?: string;
988
+ size?: string;
989
+ duration?: string;
990
+ timing?: string;
991
+ };
992
+ ratios?: number[];
993
+ };
994
+ type IntroOptions = {
995
+ renderIntro?: (args: {
996
+ active: boolean;
997
+ containerProps: React.HTMLAttributes<HTMLDivElement>;
998
+ }, content: React.ReactNode) => React.ReactNode;
999
+ staggerMs?: number;
1000
+ transform?: string;
1001
+ durationMs?: number;
1002
+ easing?: string;
1003
+ staggerLimit?: number;
1004
+ };
802
1005
  type MasonryOptions = {
803
1006
  columns?: ResponsiveNumber;
804
1007
  gap?: ResponsiveNumber;
@@ -819,7 +1022,7 @@ type Props = MasonryOptions & {
819
1022
  children?: React$1.ReactNode;
820
1023
  breakpoints?: BreakpointMap;
821
1024
  };
822
- declare function MasonryLayoutRuntime(props: Props): react_jsx_runtime.JSX.Element;
1025
+ declare function Masonry(props: Props): react_jsx_runtime.JSX.Element;
823
1026
 
824
1027
  type RmgPlyrSourceBuilder = (args: {
825
1028
  src: string;
@@ -830,7 +1033,7 @@ type RmgPlyrOptionsResolver = any | ((args: {
830
1033
  poster?: string;
831
1034
  index: number;
832
1035
  }) => any);
833
- type RmgPlyrVideoProps = {
1036
+ type VideoProps = {
834
1037
  src: string;
835
1038
  poster?: string;
836
1039
  alt?: string;
@@ -844,7 +1047,7 @@ type RmgPlyrVideoProps = {
844
1047
  onApi?: (api: APITypes | null) => void;
845
1048
  registerApiByIndex?: (index: number, api: APITypes | null) => void;
846
1049
  };
847
- declare function RmgPlyrVideo(props: RmgPlyrVideoProps): react_jsx_runtime.JSX.Element;
1050
+ declare function Video(props: VideoProps): react_jsx_runtime.JSX.Element;
848
1051
 
849
1052
  declare function PanAxis(): {
850
1053
  scroll: "x";
@@ -891,7 +1094,7 @@ declare const DEFAULT_SLIDER: {
891
1094
  readonly className: "";
892
1095
  };
893
1096
  };
894
- readonly thumbnails: Required<Pick<ThumbnailsOptions, "layout" | "scroll" | "motion">>;
1097
+ readonly thumbnails: Required<Pick<ThumbnailsOptions, "scroll" | "layout" | "motion">>;
895
1098
  readonly auto: {
896
1099
  readonly play: {
897
1100
  readonly enabled: false;
@@ -966,4 +1169,4 @@ declare const DEFAULT_FULLSCREEN: {
966
1169
  readonly caption: {};
967
1170
  };
968
1171
 
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 };
1172
+ 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 as Grid, type GridOptions, type IndexMode, Masonry, type MasonryOptions, type MediaEntryLink, type MediaItem, type PanAxisType, type ResponsiveHeightRule, type SlideOwner, Slider, type SliderHandle, type SliderOptions, Video, flattenEntries, toMediaItems, useFullscreenController };