yet-another-react-lightbox 3.17.3 → 3.17.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.d.ts
CHANGED
|
@@ -36,6 +36,7 @@ declare function getSlideIndex(index: number, slidesCount: number): number;
|
|
|
36
36
|
declare function hasSlides(slides: Slide[]): slides is [Slide, ...Slide[]];
|
|
37
37
|
declare function getSlide(slides: [Slide, ...Slide[]], index: number): SlideImage;
|
|
38
38
|
declare function getSlideIfPresent(slides: Slide[], index: number): SlideImage | undefined;
|
|
39
|
+
declare function getSlideKey(slide: Slide): string | undefined;
|
|
39
40
|
declare function addToolbarButton(toolbar: ToolbarSettings, key: string, button: React.ReactNode): ToolbarSettings;
|
|
40
41
|
declare function stopNavigationEventsPropagation(): {
|
|
41
42
|
onPointerDown: (event: React.PointerEvent | React.KeyboardEvent | React.WheelEvent) => void;
|
|
@@ -265,4 +266,4 @@ declare const RootModule: Module;
|
|
|
265
266
|
declare function Toolbar({ toolbar: { buttons }, render: { buttonClose, iconClose }, styles }: ComponentProps): React.JSX.Element;
|
|
266
267
|
declare const ToolbarModule: Module;
|
|
267
268
|
|
|
268
|
-
export { Augmentation, Callback, Carousel, CarouselModule, CarouselSettings, CloseIcon, Component, ComponentProps, type ComputeAnimation, ContainerRect, Controller, ControllerContext, type ControllerContextType, ControllerModule, ControllerRef, ControllerSettings, ErrorIcon, type Event, type EventCallback, EventTypes, EventsContext, type EventsContextType, EventsProvider, IconButton, type IconButtonProps, ImageSlide, type ImageSlideProps, type KeyboardEventType, Labels, LengthOrPercentage, Lightbox, LightboxDefaultProps, LightboxDispatchContext, type LightboxDispatchContextType, LightboxExternalProps, LightboxProps, LightboxPropsContext, type LightboxPropsContextType, LightboxPropsProvider, LightboxState, type LightboxStateAction, LightboxStateContext, type LightboxStateContextType, LightboxStateProvider, type LightboxStateProviderProps, LightboxStateSwipeAction, LightboxStateUpdateAction, LoadingIcon, Module, Navigation, NavigationButton, type NavigationButtonProps, NavigationModule, NextIcon, NoScroll, NoScrollModule, Node, Plugin, type PointerEventType, Portal, PortalModule, PreviousIcon, type Publish, type ReactEventType, type RegisterSensors, Render, RenderFunction, Root, RootModule, type SensorCallback, Slide, SlideImage, type Subscribe, type SubscribeSensors, type SupportedEventType, SwipeState, TimeoutsContext, type TimeoutsContextType, TimeoutsProvider, Toolbar, ToolbarModule, ToolbarSettings, type Topic, type Unsubscribe, type UseSensors, type WheelEventType, addToolbarButton, calculatePreload, cleanup, clsx, composePrefix, computeSlideRect, createIcon, createIconDisabled, createModule, createNode, cssClass, cssVar, Lightbox as default, devicePixelRatio, getSlide, getSlideIfPresent, getSlideIndex, hasSlides, hasWindow, isImageFitCover, isImageSlide, label, makeComposePrefix, makeUseContext, parseInt, parseLengthPercentage, round, setRef, stopNavigationEventsPropagation, useAnimation, useContainerRect, useController, useDelay, useEventCallback, useEvents, useForkRef, useKeyboardNavigation, useLayoutEffect, useLightboxDispatch, useLightboxProps, useLightboxState, useLoseFocus, useMotionPreference, useNavigationState, usePointerSwipe, usePreventWheelDefaults, useRTL, useSensors, useThrottle, useTimeouts, useWheelSwipe, withPlugins };
|
|
269
|
+
export { Augmentation, Callback, Carousel, CarouselModule, CarouselSettings, CloseIcon, Component, ComponentProps, type ComputeAnimation, ContainerRect, Controller, ControllerContext, type ControllerContextType, ControllerModule, ControllerRef, ControllerSettings, ErrorIcon, type Event, type EventCallback, EventTypes, EventsContext, type EventsContextType, EventsProvider, IconButton, type IconButtonProps, ImageSlide, type ImageSlideProps, type KeyboardEventType, Labels, LengthOrPercentage, Lightbox, LightboxDefaultProps, LightboxDispatchContext, type LightboxDispatchContextType, LightboxExternalProps, LightboxProps, LightboxPropsContext, type LightboxPropsContextType, LightboxPropsProvider, LightboxState, type LightboxStateAction, LightboxStateContext, type LightboxStateContextType, LightboxStateProvider, type LightboxStateProviderProps, LightboxStateSwipeAction, LightboxStateUpdateAction, LoadingIcon, Module, Navigation, NavigationButton, type NavigationButtonProps, NavigationModule, NextIcon, NoScroll, NoScrollModule, Node, Plugin, type PointerEventType, Portal, PortalModule, PreviousIcon, type Publish, type ReactEventType, type RegisterSensors, Render, RenderFunction, Root, RootModule, type SensorCallback, Slide, SlideImage, type Subscribe, type SubscribeSensors, type SupportedEventType, SwipeState, TimeoutsContext, type TimeoutsContextType, TimeoutsProvider, Toolbar, ToolbarModule, ToolbarSettings, type Topic, type Unsubscribe, type UseSensors, type WheelEventType, addToolbarButton, calculatePreload, cleanup, clsx, composePrefix, computeSlideRect, createIcon, createIconDisabled, createModule, createNode, cssClass, cssVar, Lightbox as default, devicePixelRatio, getSlide, getSlideIfPresent, getSlideIndex, getSlideKey, hasSlides, hasWindow, isImageFitCover, isImageSlide, label, makeComposePrefix, makeUseContext, parseInt, parseLengthPercentage, round, setRef, stopNavigationEventsPropagation, useAnimation, useContainerRect, useController, useDelay, useEventCallback, useEvents, useForkRef, useKeyboardNavigation, useLayoutEffect, useLightboxDispatch, useLightboxProps, useLightboxState, useLoseFocus, useMotionPreference, useNavigationState, usePointerSwipe, usePreventWheelDefaults, useRTL, useSensors, useThrottle, useTimeouts, useWheelSwipe, withPlugins };
|
package/dist/index.js
CHANGED
|
@@ -89,6 +89,9 @@ function getSlide(slides, index) {
|
|
|
89
89
|
function getSlideIfPresent(slides, index) {
|
|
90
90
|
return hasSlides(slides) ? getSlide(slides, index) : undefined;
|
|
91
91
|
}
|
|
92
|
+
function getSlideKey(slide) {
|
|
93
|
+
return isImageSlide(slide) ? slide.src : undefined;
|
|
94
|
+
}
|
|
92
95
|
function addToolbarButton(toolbar, key, button) {
|
|
93
96
|
if (!button)
|
|
94
97
|
return toolbar;
|
|
@@ -1217,17 +1220,20 @@ function Carousel({ carousel }) {
|
|
|
1217
1220
|
const { setCarouselRef } = useController();
|
|
1218
1221
|
const spacingValue = parseLengthPercentage(carousel.spacing);
|
|
1219
1222
|
const paddingValue = parseLengthPercentage(carousel.padding);
|
|
1220
|
-
const items = [];
|
|
1221
1223
|
const preload = calculatePreload(carousel, slides, 1);
|
|
1224
|
+
const items = [];
|
|
1222
1225
|
if (hasSlides(slides)) {
|
|
1223
|
-
for (let
|
|
1224
|
-
const
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1226
|
+
for (let index = currentIndex - preload; index <= currentIndex + preload; index += 1) {
|
|
1227
|
+
const slide = getSlide(slides, index);
|
|
1228
|
+
const key = globalIndex - currentIndex + index;
|
|
1229
|
+
const placeholder = carousel.finite && (index < 0 || index > slides.length - 1);
|
|
1230
|
+
items.push(!placeholder
|
|
1231
|
+
? {
|
|
1232
|
+
key: [`${key}`, getSlideKey(slide)].filter(Boolean).join("|"),
|
|
1233
|
+
offset: index - currentIndex,
|
|
1234
|
+
slide,
|
|
1235
|
+
}
|
|
1236
|
+
: { key });
|
|
1231
1237
|
}
|
|
1232
1238
|
}
|
|
1233
1239
|
return (React.createElement("div", { ref: setCarouselRef, className: clsx(cssClass(cssPrefix$2()), items.length > 0 && cssClass(cssPrefix$2("with_slides"))), style: {
|
|
@@ -1236,7 +1242,7 @@ function Carousel({ carousel }) {
|
|
|
1236
1242
|
[`${cssVar(cssPrefix$2("spacing_percent"))}`]: spacingValue.percent || 0,
|
|
1237
1243
|
[`${cssVar(cssPrefix$2("padding_px"))}`]: paddingValue.pixel || 0,
|
|
1238
1244
|
[`${cssVar(cssPrefix$2("padding_percent"))}`]: paddingValue.percent || 0,
|
|
1239
|
-
} }, items));
|
|
1245
|
+
} }, items.map(({ key, slide, offset }) => slide ? React.createElement(CarouselSlide, { key: key, slide: slide, offset: offset }) : React.createElement(Placeholder, { key: key }))));
|
|
1240
1246
|
}
|
|
1241
1247
|
const CarouselModule = createModule(MODULE_CAROUSEL, Carousel);
|
|
1242
1248
|
|
|
@@ -1502,4 +1508,4 @@ function Lightbox({ carousel, animation, render, toolbar, controller, noScroll,
|
|
|
1502
1508
|
React.createElement(EventsProvider, null, renderNode(createNode(RootModule, config), props))))));
|
|
1503
1509
|
}
|
|
1504
1510
|
|
|
1505
|
-
export { ACTION_CLOSE, ACTION_NEXT, ACTION_PREV, ACTION_SWIPE, CLASS_FLEX_CENTER, CLASS_NO_SCROLL, CLASS_NO_SCROLL_PADDING, CLASS_SLIDE_WRAPPER, Carousel, CarouselModule, CloseIcon, Controller, ControllerContext, ControllerModule, ELEMENT_BUTTON, ELEMENT_ICON, EVENT_ON_KEY_DOWN, EVENT_ON_KEY_UP, EVENT_ON_POINTER_CANCEL, EVENT_ON_POINTER_DOWN, EVENT_ON_POINTER_LEAVE, EVENT_ON_POINTER_MOVE, EVENT_ON_POINTER_UP, EVENT_ON_WHEEL, ErrorIcon, EventsContext, EventsProvider, IMAGE_FIT_CONTAIN, IMAGE_FIT_COVER, IconButton, ImageSlide, Lightbox, LightboxDefaultProps, LightboxDispatchContext, LightboxPropsContext, LightboxPropsProvider, LightboxStateContext, LightboxStateProvider, LoadingIcon, MODULE_CAROUSEL, MODULE_CONTROLLER, MODULE_NAVIGATION, MODULE_NO_SCROLL, MODULE_PORTAL, MODULE_ROOT, MODULE_TOOLBAR, Navigation, NavigationButton, NavigationModule, NextIcon, NoScroll, NoScrollModule, Portal, PortalModule, PreviousIcon, Root, RootModule, SLIDE_STATUS_COMPLETE, SLIDE_STATUS_ERROR, SLIDE_STATUS_LOADING, SLIDE_STATUS_PLACEHOLDER, SwipeState, TimeoutsContext, TimeoutsProvider, Toolbar, ToolbarModule, UNKNOWN_ACTION_TYPE, VK_ARROW_LEFT, VK_ARROW_RIGHT, VK_ESCAPE, activeSlideStatus, addToolbarButton, calculatePreload, cleanup, clsx, composePrefix, computeSlideRect, createIcon, createIconDisabled, createModule, createNode, cssClass, cssVar, Lightbox as default, devicePixelRatio, getSlide, getSlideIfPresent, getSlideIndex, hasSlides, hasWindow, isImageFitCover, isImageSlide, label, makeComposePrefix, makeUseContext, parseInt, parseLengthPercentage, round, setRef, stopNavigationEventsPropagation, useAnimation, useContainerRect, useController, useDelay, useEventCallback, useEvents, useForkRef, useKeyboardNavigation, useLayoutEffect, useLightboxDispatch, useLightboxProps, useLightboxState, useLoseFocus, useMotionPreference, useNavigationState, usePointerEvents, usePointerSwipe, usePreventWheelDefaults, useRTL, useSensors, useThrottle, useTimeouts, useWheelSwipe, withPlugins };
|
|
1511
|
+
export { ACTION_CLOSE, ACTION_NEXT, ACTION_PREV, ACTION_SWIPE, CLASS_FLEX_CENTER, CLASS_NO_SCROLL, CLASS_NO_SCROLL_PADDING, CLASS_SLIDE_WRAPPER, Carousel, CarouselModule, CloseIcon, Controller, ControllerContext, ControllerModule, ELEMENT_BUTTON, ELEMENT_ICON, EVENT_ON_KEY_DOWN, EVENT_ON_KEY_UP, EVENT_ON_POINTER_CANCEL, EVENT_ON_POINTER_DOWN, EVENT_ON_POINTER_LEAVE, EVENT_ON_POINTER_MOVE, EVENT_ON_POINTER_UP, EVENT_ON_WHEEL, ErrorIcon, EventsContext, EventsProvider, IMAGE_FIT_CONTAIN, IMAGE_FIT_COVER, IconButton, ImageSlide, Lightbox, LightboxDefaultProps, LightboxDispatchContext, LightboxPropsContext, LightboxPropsProvider, LightboxStateContext, LightboxStateProvider, LoadingIcon, MODULE_CAROUSEL, MODULE_CONTROLLER, MODULE_NAVIGATION, MODULE_NO_SCROLL, MODULE_PORTAL, MODULE_ROOT, MODULE_TOOLBAR, Navigation, NavigationButton, NavigationModule, NextIcon, NoScroll, NoScrollModule, Portal, PortalModule, PreviousIcon, Root, RootModule, SLIDE_STATUS_COMPLETE, SLIDE_STATUS_ERROR, SLIDE_STATUS_LOADING, SLIDE_STATUS_PLACEHOLDER, SwipeState, TimeoutsContext, TimeoutsProvider, Toolbar, ToolbarModule, UNKNOWN_ACTION_TYPE, VK_ARROW_LEFT, VK_ARROW_RIGHT, VK_ESCAPE, activeSlideStatus, addToolbarButton, calculatePreload, cleanup, clsx, composePrefix, computeSlideRect, createIcon, createIconDisabled, createModule, createNode, cssClass, cssVar, Lightbox as default, devicePixelRatio, getSlide, getSlideIfPresent, getSlideIndex, getSlideKey, hasSlides, hasWindow, isImageFitCover, isImageSlide, label, makeComposePrefix, makeUseContext, parseInt, parseLengthPercentage, round, setRef, stopNavigationEventsPropagation, useAnimation, useContainerRect, useController, useDelay, useEventCallback, useEvents, useForkRef, useKeyboardNavigation, useLayoutEffect, useLightboxDispatch, useLightboxProps, useLightboxState, useLoseFocus, useMotionPreference, useNavigationState, usePointerEvents, usePointerSwipe, usePreventWheelDefaults, useRTL, useSensors, useThrottle, useTimeouts, useWheelSwipe, withPlugins };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { useLightboxProps, composePrefix, createIcon, cssClass, isImageSlide,
|
|
1
|
+
import { useLightboxProps, composePrefix, createIcon, cssClass, isImageSlide, ImageSlide, makeComposePrefix, useEventCallback, clsx, cssVar, useRTL, useEvents, useLightboxState, useSensors, useKeyboardNavigation, useAnimation, cleanup, calculatePreload, hasSlides, getSlide, getSlideKey, makeUseContext, LightboxPropsProvider, createIconDisabled, IconButton, addToolbarButton, createModule } from '../../index.js';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { PLUGIN_THUMBNAILS, ELEMENT_ICON,
|
|
3
|
+
import { PLUGIN_THUMBNAILS, ELEMENT_ICON, CLASS_FLEX_CENTER, ACTION_SWIPE, ACTION_NEXT, ACTION_PREV, PLUGIN_FULLSCREEN, MODULE_CONTROLLER } from '../../types.js';
|
|
4
4
|
|
|
5
5
|
const defaultThumbnailsProps = {
|
|
6
6
|
ref: null,
|
|
@@ -35,16 +35,14 @@ function renderThumbnail({ slide, render, rect, imageFit }) {
|
|
|
35
35
|
return customThumbnail;
|
|
36
36
|
}
|
|
37
37
|
const thumbnailIconClass = cssClass(cssThumbnailPrefix(ELEMENT_ICON));
|
|
38
|
-
if (
|
|
39
|
-
if (slide.type === "video") {
|
|
40
|
-
return (React.createElement(React.Fragment, null,
|
|
41
|
-
"poster" in slide && (React.createElement("img", { alt: "", src: slide.poster, className: clsx(cssClass(CLASS_FULLSIZE), cssClass(cssPrefix("contain_image"))) })),
|
|
42
|
-
React.createElement(VideoThumbnailIcon, { className: thumbnailIconClass })));
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
38
|
+
if (isImageSlide(slide)) {
|
|
46
39
|
return React.createElement(ImageSlide, { slide: slide, render: render, rect: rect, imageFit: imageFit });
|
|
47
40
|
}
|
|
41
|
+
if (slide.type === "video") {
|
|
42
|
+
return (React.createElement(React.Fragment, null,
|
|
43
|
+
slide.poster && (React.createElement(ImageSlide, { key: slide.poster, slide: { src: slide.poster }, render: render, rect: rect, imageFit: imageFit })),
|
|
44
|
+
React.createElement(VideoThumbnailIcon, { className: thumbnailIconClass })));
|
|
45
|
+
}
|
|
48
46
|
return React.createElement(UnknownThumbnailIcon, { className: thumbnailIconClass });
|
|
49
47
|
}
|
|
50
48
|
const activePrefix = makeComposePrefix("active");
|
|
@@ -97,7 +95,6 @@ function ThumbnailsTrack({ visible, containerRef }) {
|
|
|
97
95
|
useKeyboardNavigation(subscribeSensors);
|
|
98
96
|
const thumbnails = useThumbnailsProps();
|
|
99
97
|
const { position, width, height, border, borderStyle, borderColor, borderRadius, padding, gap, vignette } = thumbnails;
|
|
100
|
-
const index = globalIndex;
|
|
101
98
|
const animationDuration = (animation === null || animation === void 0 ? void 0 : animation.duration) || 0;
|
|
102
99
|
const offset = (animationDuration > 0 && (animation === null || animation === void 0 ? void 0 : animation.increment)) || 0;
|
|
103
100
|
const { prepareAnimation } = useAnimation(track, (snapshot) => ({
|
|
@@ -132,40 +129,21 @@ function ThumbnailsTrack({ visible, containerRef }) {
|
|
|
132
129
|
const preload = calculatePreload(carousel, slides);
|
|
133
130
|
const items = [];
|
|
134
131
|
if (hasSlides(slides)) {
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
items.push({ slide: getSlide(slides, i), index: i });
|
|
143
|
-
}
|
|
144
|
-
else {
|
|
145
|
-
items.push({ slide: null, index: i, placeholder: true });
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
items.push({ slide: getSlide(slides, index), index });
|
|
149
|
-
for (let i = index + 1; i <= index + preload - Math.min(offset, 0); i += 1) {
|
|
150
|
-
if (!carousel.finite || i <= slides.length - 1) {
|
|
151
|
-
items.push({ slide: getSlide(slides, i), index: i });
|
|
152
|
-
}
|
|
153
|
-
else {
|
|
154
|
-
items.push({ slide: null, index: i, placeholder: true });
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
if (offset > 0) {
|
|
158
|
-
for (let i = index + preload + 1; i <= index + preload + offset; i += 1) {
|
|
159
|
-
items.push({ slide: null, index: i, placeholder: true });
|
|
160
|
-
}
|
|
132
|
+
for (let index = globalIndex - preload - Math.abs(offset); index <= globalIndex + preload + Math.abs(offset); index += 1) {
|
|
133
|
+
const placeholder = (carousel.finite && (index < 0 || index > slides.length - 1)) ||
|
|
134
|
+
(offset < 0 && index < globalIndex - preload) ||
|
|
135
|
+
(offset > 0 && index > globalIndex + preload);
|
|
136
|
+
const slide = !placeholder ? getSlide(slides, index) : null;
|
|
137
|
+
const key = [`${index}`, slide ? getSlideKey(slide) : "placeholder"].filter(Boolean).join("|");
|
|
138
|
+
items.push({ key, index, slide });
|
|
161
139
|
}
|
|
162
140
|
}
|
|
163
141
|
const handleClick = (slideIndex) => () => {
|
|
164
|
-
if (slideIndex >
|
|
165
|
-
publish(ACTION_NEXT, { count: slideIndex -
|
|
142
|
+
if (slideIndex > globalIndex) {
|
|
143
|
+
publish(ACTION_NEXT, { count: slideIndex - globalIndex });
|
|
166
144
|
}
|
|
167
|
-
else if (slideIndex <
|
|
168
|
-
publish(ACTION_PREV, { count:
|
|
145
|
+
else if (slideIndex < globalIndex) {
|
|
146
|
+
publish(ACTION_PREV, { count: globalIndex - slideIndex });
|
|
169
147
|
}
|
|
170
148
|
};
|
|
171
149
|
return (React.createElement("div", { className: clsx(cssClass(cssPrefix("container")), cssClass(CLASS_FLEX_CENTER)), style: {
|
|
@@ -188,26 +166,26 @@ function ThumbnailsTrack({ visible, containerRef }) {
|
|
|
188
166
|
...(gap !== defaultThumbnailsProps.gap ? { [cssVar(cssThumbnailPrefix("gap"))]: `${gap}px` } : null),
|
|
189
167
|
...styles.thumbnailsContainer,
|
|
190
168
|
} },
|
|
191
|
-
React.createElement("nav", { ref: track, style: styles.thumbnailsTrack, className: clsx(cssClass(cssPrefix("track")), cssClass(CLASS_FLEX_CENTER)), tabIndex: -1, ...registerSensors }, items.map(({
|
|
169
|
+
React.createElement("nav", { ref: track, style: styles.thumbnailsTrack, className: clsx(cssClass(cssPrefix("track")), cssClass(CLASS_FLEX_CENTER)), tabIndex: -1, ...registerSensors }, items.map(({ key, index, slide }) => {
|
|
192
170
|
const fadeAnimationDuration = animationDuration / Math.abs(offset || 1);
|
|
193
|
-
const fadeIn = (offset > 0 &&
|
|
194
|
-
(offset < 0 &&
|
|
171
|
+
const fadeIn = (offset > 0 && index > globalIndex + preload - offset && index <= globalIndex + preload) ||
|
|
172
|
+
(offset < 0 && index < globalIndex - preload - offset && index >= globalIndex - preload)
|
|
195
173
|
? {
|
|
196
174
|
duration: fadeAnimationDuration,
|
|
197
|
-
delay: ((offset > 0 ?
|
|
175
|
+
delay: ((offset > 0 ? index - (globalIndex + preload - offset) : globalIndex - preload - offset - index) -
|
|
198
176
|
1) *
|
|
199
177
|
fadeAnimationDuration,
|
|
200
178
|
}
|
|
201
179
|
: undefined;
|
|
202
|
-
const fadeOut = (offset > 0 &&
|
|
180
|
+
const fadeOut = (offset > 0 && index < globalIndex - preload) || (offset < 0 && index > globalIndex + preload)
|
|
203
181
|
? {
|
|
204
182
|
duration: fadeAnimationDuration,
|
|
205
183
|
delay: (offset > 0
|
|
206
|
-
? offset - (
|
|
207
|
-
: -offset - (
|
|
184
|
+
? offset - (globalIndex - preload - index)
|
|
185
|
+
: -offset - (index - (globalIndex + preload))) * fadeAnimationDuration,
|
|
208
186
|
}
|
|
209
187
|
: undefined;
|
|
210
|
-
return (React.createElement(Thumbnail, { key:
|
|
188
|
+
return (React.createElement(Thumbnail, { key: key, slide: slide, active: index === globalIndex, fadeIn: fadeIn, fadeOut: fadeOut, placeholder: !slide, onClick: handleClick(index), onLoseFocus: () => { var _a; return (_a = track.current) === null || _a === void 0 ? void 0 : _a.focus(); } }));
|
|
211
189
|
})),
|
|
212
190
|
vignette && React.createElement("div", { className: cssClass(cssPrefix("vignette")) })));
|
|
213
191
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.yarl__thumbnails{display:flex;height:100%}.yarl__thumbnails_bottom,.yarl__thumbnails_end .yarl__thumbnails_track,.yarl__thumbnails_start .yarl__thumbnails_track,.yarl__thumbnails_top{flex-direction:column}.yarl__thumbnails_wrapper{flex:1;position:relative}.yarl__thumbnails_container{background-color:var(--yarl__thumbnails_container_background_color,var(--yarl__color_backdrop,#000));flex:0 0 auto;overflow:hidden;padding:var(--yarl__thumbnails_container_padding,16px);position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-touch-callout:none}.yarl__thumbnails_vignette{pointer-events:none;position:absolute;--yarl__thumbnails_vignette_size:12%}@media (min-width:1200px){.yarl__thumbnails_vignette{--yarl__thumbnails_vignette_size:8%}}@media (min-width:2000px){.yarl__thumbnails_vignette{--yarl__thumbnails_vignette_size:5%}}.yarl__thumbnails_bottom .yarl__thumbnails_vignette,.yarl__thumbnails_top .yarl__thumbnails_vignette{background:linear-gradient(to right,var(--yarl__color_backdrop,#000) 0,transparent var(--yarl__thumbnails_vignette_size,12%) calc(100% - var(--yarl__thumbnails_vignette_size, 12%)),var(--yarl__color_backdrop,#000) 100%);height:100%;left:0;right:0}.yarl__thumbnails_end .yarl__thumbnails_vignette,.yarl__thumbnails_start .yarl__thumbnails_vignette{background:linear-gradient(to bottom,var(--yarl__color_backdrop,#000) 0,transparent var(--yarl__thumbnails_vignette_size,12%) calc(100% - var(--yarl__thumbnails_vignette_size, 12%)),var(--yarl__color_backdrop,#000) 100%);bottom:0;top:0;width:100%}.yarl__thumbnails_track{gap:var(--yarl__thumbnails_thumbnail_gap,16px);outline:none}.yarl__thumbnails_thumbnail{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--yarl__thumbnails_thumbnail_background,#000);border-color:var(--yarl__thumbnails_thumbnail_border_color,var(--yarl__color_button,hsla(0,0%,100%,.8)));border-radius:var(--yarl__thumbnails_thumbnail_border_radius,4px);border-style:var(--yarl__thumbnails_thumbnail_border_style,solid);border-width:var(--yarl__thumbnails_thumbnail_border,1px);cursor:pointer;flex:0 0 auto;-webkit-tap-highlight-color:transparent;box-sizing:content-box;height:var(--yarl__thumbnails_thumbnail_height,80px);outline:none;overflow:hidden;padding:var(--yarl__thumbnails_thumbnail_padding,4px);position:relative;width:var(--yarl__thumbnails_thumbnail_width,120px)}.yarl__thumbnails_thumbnail_active{border-color:var(--yarl__thumbnails_thumbnail_active_border_color,var(--yarl__color_button_active,#fff))}.yarl__thumbnails_thumbnail_fadein{animation:yarl__thumbnails_thumbnail_fadein var(--yarl__thumbnails_thumbnail_fadein_duration,.5s) ease-in-out var(--yarl__thumbnails_thumbnail_fadein_delay,0s) forwards;opacity:0}.yarl__thumbnails_thumbnail_fadeout{animation:yarl__thumbnails_thumbnail_fadeout var(--yarl__thumbnails_thumbnail_fadeout_duration,.5s) ease-in-out var(--yarl__thumbnails_thumbnail_fadeout_delay,0s) forwards;cursor:unset}.yarl__thumbnails_thumbnail_placeholder{cursor:unset;visibility:hidden}.yarl__thumbnails_thumbnail:focus{box-shadow:var(--yarl__thumbnails_thumbnail_focus_box_shadow,#000 0 0 0 2px,var(--yarl__color_button,hsla(0,0%,100%,.8)) 0 0 0 4px)}.yarl__thumbnails_thumbnail:focus:not(:focus-visible){box-shadow:unset}.yarl__thumbnails_thumbnail:focus-visible{box-shadow:var(--yarl__thumbnails_thumbnail_focus_box_shadow,#000 0 0 0 2px,var(--yarl__color_button,hsla(0,0%,100%,.8)) 0 0 0 4px)}.yarl__thumbnails_thumbnail_icon{color:var(--yarl__thumbnails_thumbnail_icon_color,var(--yarl__color_button,hsla(0,0%,100%,.8)));filter:var(--yarl__thumbnails_thumbnail_icon_filter,drop-shadow(2px 2px 2px rgba(0,0,0,.8)));height:var(--yarl__thumbnails_thumbnail_icon_size,32px);left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);width:var(--yarl__thumbnails_thumbnail_icon_size,32px)}
|
|
1
|
+
.yarl__thumbnails{display:flex;height:100%}.yarl__thumbnails_bottom,.yarl__thumbnails_end .yarl__thumbnails_track,.yarl__thumbnails_start .yarl__thumbnails_track,.yarl__thumbnails_top{flex-direction:column}.yarl__thumbnails_wrapper{flex:1;position:relative}.yarl__thumbnails_container{background-color:var(--yarl__thumbnails_container_background_color,var(--yarl__color_backdrop,#000));flex:0 0 auto;overflow:hidden;padding:var(--yarl__thumbnails_container_padding,16px);position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-touch-callout:none}.yarl__thumbnails_vignette{pointer-events:none;position:absolute;--yarl__thumbnails_vignette_size:12%}@media (min-width:1200px){.yarl__thumbnails_vignette{--yarl__thumbnails_vignette_size:8%}}@media (min-width:2000px){.yarl__thumbnails_vignette{--yarl__thumbnails_vignette_size:5%}}.yarl__thumbnails_bottom .yarl__thumbnails_vignette,.yarl__thumbnails_top .yarl__thumbnails_vignette{background:linear-gradient(to right,var(--yarl__color_backdrop,#000) 0,transparent var(--yarl__thumbnails_vignette_size,12%) calc(100% - var(--yarl__thumbnails_vignette_size, 12%)),var(--yarl__color_backdrop,#000) 100%);height:100%;left:0;right:0}.yarl__thumbnails_end .yarl__thumbnails_vignette,.yarl__thumbnails_start .yarl__thumbnails_vignette{background:linear-gradient(to bottom,var(--yarl__color_backdrop,#000) 0,transparent var(--yarl__thumbnails_vignette_size,12%) calc(100% - var(--yarl__thumbnails_vignette_size, 12%)),var(--yarl__color_backdrop,#000) 100%);bottom:0;top:0;width:100%}.yarl__thumbnails_track{gap:var(--yarl__thumbnails_thumbnail_gap,16px);outline:none}.yarl__thumbnails_thumbnail{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--yarl__thumbnails_thumbnail_background,#000);border-color:var(--yarl__thumbnails_thumbnail_border_color,var(--yarl__color_button,hsla(0,0%,100%,.8)));border-radius:var(--yarl__thumbnails_thumbnail_border_radius,4px);border-style:var(--yarl__thumbnails_thumbnail_border_style,solid);border-width:var(--yarl__thumbnails_thumbnail_border,1px);cursor:pointer;flex:0 0 auto;-webkit-tap-highlight-color:transparent;box-sizing:content-box;height:var(--yarl__thumbnails_thumbnail_height,80px);outline:none;overflow:hidden;padding:var(--yarl__thumbnails_thumbnail_padding,4px);position:relative;width:var(--yarl__thumbnails_thumbnail_width,120px)}.yarl__thumbnails_thumbnail_active{border-color:var(--yarl__thumbnails_thumbnail_active_border_color,var(--yarl__color_button_active,#fff))}.yarl__thumbnails_thumbnail_fadein{animation:yarl__thumbnails_thumbnail_fadein var(--yarl__thumbnails_thumbnail_fadein_duration,.5s) ease-in-out var(--yarl__thumbnails_thumbnail_fadein_delay,0s) forwards;opacity:0}.yarl__thumbnails_thumbnail_fadeout{animation:yarl__thumbnails_thumbnail_fadeout var(--yarl__thumbnails_thumbnail_fadeout_duration,.5s) ease-in-out var(--yarl__thumbnails_thumbnail_fadeout_delay,0s) forwards;cursor:unset}.yarl__thumbnails_thumbnail_placeholder{cursor:unset;visibility:hidden}.yarl__thumbnails_thumbnail:focus{box-shadow:var(--yarl__thumbnails_thumbnail_focus_box_shadow,#000 0 0 0 2px,var(--yarl__color_button,hsla(0,0%,100%,.8)) 0 0 0 4px)}.yarl__thumbnails_thumbnail:focus:not(:focus-visible){box-shadow:unset}.yarl__thumbnails_thumbnail:focus-visible{box-shadow:var(--yarl__thumbnails_thumbnail_focus_box_shadow,#000 0 0 0 2px,var(--yarl__color_button,hsla(0,0%,100%,.8)) 0 0 0 4px)}.yarl__thumbnails_thumbnail_icon{color:var(--yarl__thumbnails_thumbnail_icon_color,var(--yarl__color_button,hsla(0,0%,100%,.8)));filter:var(--yarl__thumbnails_thumbnail_icon_filter,drop-shadow(2px 2px 2px rgba(0,0,0,.8)));height:var(--yarl__thumbnails_thumbnail_icon_size,32px);left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);width:var(--yarl__thumbnails_thumbnail_icon_size,32px)}@keyframes yarl__thumbnails_thumbnail_fadein{0%{opacity:0}to{opacity:1}}@keyframes yarl__thumbnails_thumbnail_fadeout{0%{opacity:1}to{opacity:0}}
|
|
@@ -82,7 +82,7 @@ function VideoSlide({ slide, offset }) {
|
|
|
82
82
|
publish(ACTIVE_SLIDE_PLAYING);
|
|
83
83
|
}, onEnded: () => {
|
|
84
84
|
publish(ACTIVE_SLIDE_COMPLETE);
|
|
85
|
-
} }, sources.map(({ src, type }
|
|
85
|
+
} }, sources.map(({ src, type }) => (React.createElement("source", { key: [src, type].join("|"), src: src, type: type })))))))));
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
function isVideoSlide(slide) {
|
|
@@ -93,10 +93,7 @@ function Video({ augment }) {
|
|
|
93
93
|
render: {
|
|
94
94
|
slide: ({ slide, offset, rect }) => {
|
|
95
95
|
var _a;
|
|
96
|
-
|
|
97
|
-
return (React.createElement(VideoSlide, { key: (_a = slide.sources) === null || _a === void 0 ? void 0 : _a.map((source) => source.src).join(" "), slide: slide, offset: offset }));
|
|
98
|
-
}
|
|
99
|
-
return renderSlide === null || renderSlide === void 0 ? void 0 : renderSlide({ slide, offset, rect });
|
|
96
|
+
return isVideoSlide(slide) ? (React.createElement(VideoSlide, { key: (_a = slide.sources) === null || _a === void 0 ? void 0 : _a.map((source) => source.src).join("|"), slide: slide, offset: offset })) : (renderSlide === null || renderSlide === void 0 ? void 0 : renderSlide({ slide, offset, rect }));
|
|
100
97
|
},
|
|
101
98
|
...restRender,
|
|
102
99
|
},
|
|
@@ -462,7 +462,7 @@ function ZoomWrapper({ render, slide, offset, rect }) {
|
|
|
462
462
|
imageProps: carousel.imageProps,
|
|
463
463
|
onClick: offset === 0 ? () => { var _a; return (_a = on.click) === null || _a === void 0 ? void 0 : _a.call(on, { index: currentIndex }); } : undefined,
|
|
464
464
|
};
|
|
465
|
-
rendered = isResponsiveImageSlide(slide) ? (React.createElement(ResponsiveImage, {
|
|
465
|
+
rendered = isResponsiveImageSlide(slide) ? (React.createElement(ResponsiveImage, { ...slideProps, slide: slide, rect: offset === 0 ? { width: rect.width * zoom, height: rect.height * zoom } : rect })) : (React.createElement(ImageSlide, { onLoad: (img) => setImageDimensions({ width: img.naturalWidth, height: img.naturalHeight }), ...slideProps }));
|
|
466
466
|
}
|
|
467
467
|
if (!rendered)
|
|
468
468
|
return null;
|