{"version":3,"sources":["webpack:///../node_modules/yet-another-react-lightbox/dist/types.js","webpack:///../node_modules/yet-another-react-lightbox/dist/index.js","webpack:///../node_modules/yet-another-react-lightbox/dist/plugins/video/index.js","webpack:///../node_modules/yet-another-react-lightbox/dist/plugins/thumbnails/index.js","webpack:///../node_modules/yet-another-react-lightbox/dist/plugins/zoom/index.js"],"names":["MODULE_CAROUSEL","MODULE_CONTROLLER","MODULE_NAVIGATION","MODULE_NO_SCROLL","MODULE_PORTAL","MODULE_ROOT","MODULE_TOOLBAR","PLUGIN_FULLSCREEN","PLUGIN_THUMBNAILS","PLUGIN_ZOOM","SLIDE_STATUS_LOADING","SLIDE_STATUS_ERROR","SLIDE_STATUS_COMPLETE","SLIDE_STATUS_PLACEHOLDER","activeSlideStatus","status","ACTIVE_SLIDE_LOADING","ACTIVE_SLIDE_PLAYING","ACTIVE_SLIDE_COMPLETE","CLASS_FULLSIZE","CLASS_FLEX_CENTER","CLASS_NO_SCROLL","CLASS_NO_SCROLL_PADDING","CLASS_SLIDE_WRAPPER","CLASS_SLIDE_WRAPPER_INTERACTIVE","ACTION_PREV","ACTION_NEXT","ACTION_SWIPE","ACTION_CLOSE","EVENT_ON_POINTER_DOWN","EVENT_ON_POINTER_MOVE","EVENT_ON_POINTER_UP","EVENT_ON_POINTER_LEAVE","EVENT_ON_POINTER_CANCEL","EVENT_ON_KEY_DOWN","EVENT_ON_KEY_UP","EVENT_ON_WHEEL","VK_ESCAPE","VK_ARROW_LEFT","VK_ARROW_RIGHT","ELEMENT_BUTTON","ELEMENT_ICON","IMAGE_FIT_CONTAIN","IMAGE_FIT_COVER","UNKNOWN_ACTION_TYPE","clsx","classes","filter","Boolean","join","cssClass","name","cssVar","composePrefix","base","prefix","makeComposePrefix","cleanup","cleaners","forEach","cleaner","makeUseContext","contextName","context","ctx","Error","hasWindow","window","round","value","decimals","factor","Math","Number","EPSILON","isImageSlide","slide","undefined","type","isImageFitCover","image","imageFit","parseInt","parseLengthPercentage","input","pixel","endsWith","percent","computeSlideRect","containerRect","padding","paddingValue","paddingPixels","width","max","height","devicePixelRatio","getSlideIndex","index","slidesCount","hasSlides","slides","length","getSlide","getSlideIfPresent","getSlideKey","src","addToolbarButton","toolbar","key","button","buttons","restToolbar","findIndex","item","buttonWithKey","result","splice","calculatePreload","carousel","minimum","min","preload","finite","floor","isReact19","split","LightboxDefaultProps","open","close","render","plugins","labels","animation","fade","swipe","easing","navigation","spacing","imageProps","controller","ref","focus","aria","touchAction","closeOnPullUp","closeOnPullDown","closeOnBackdropClick","preventDefaultWheelX","preventDefaultWheelY","portal","noScroll","disabled","on","styles","className","createModule","component","createNode","module","children","traverse","nodes","target","apply","flatMap","node","_a","traverseNode","n","DocumentContext","useDocumentContext","DocumentContextProvider","nodeRef","getOwnerDocument","current","ownerDocument","document","getOwnerWindow","defaultView","Provider","EventsContext","useEvents","EventsProvider","subscriptions","Object","keys","topic","unsubscribe","callback","cb","publish","event","subscribe","push","LightboxPropsContext","useLightboxProps","LightboxPropsProvider","props","LightboxStateContext","useLightboxState","LightboxDispatchContext","useLightboxDispatch","reducer","state","action","increment","globalIndex","currentIndex","currentSlide","duration","LightboxStateProvider","dispatch","TimeoutsContext","useTimeouts","TimeoutsProvider","timeouts","tid","clearTimeout","removeTimeout","id","setTimeout","fn","delay","IconButton","label","label$1","icon","Icon","renderIcon","onClick","style","rest","buttonLabel","defaultLabel","title","svgIcon","xmlns","viewBox","focusable","displayName","createIcon","glyph","fill","d","createIconDisabled","stroke","strokeWidth","mask","CloseIcon","PreviousIcon","NextIcon","LoadingIcon","Array","from","map","_","array","x1","y1","x2","y2","strokeLinecap","strokeOpacity","transform","ErrorIcon","useLayoutEffect","useMotionPreference","reduceMotion","setReduceMotion","_b","mediaQuery","matchMedia","call","matches","listener","addEventListener","removeEventListener","useAnimation","computeAnimation","snapshot","_c","keyframes","onfinish","getBoundingClientRect","x","y","z","matcher","getComputedStyle","match","values","currentTransformation","cancel","animate","err","console","error","prepareAnimation","currentSnapshot","isAnimationPlaying","playState","useContainerRect","containerRef","observerRef","setContainerRect","setContainerRef","disconnect","updateContainerRect","parse","parseFloat","clientWidth","paddingLeft","paddingRight","clientHeight","paddingTop","paddingBottom","ResizeObserver","observe","useDelay","timeoutId","useEventCallback","args","setRef","useForkRef","refA","refB","refValue","useLoseFocus","focused","onFocus","onBlur","useRTL","isRTL","setIsRTL","documentElement","direction","useSensors","subscribers","notifySubscribers","isPropagationStopped","registerSensors","onPointerDown","onPointerMove","onPointerUp","onPointerLeave","onPointerCancel","onKeyDown","onKeyUp","onWheel","subscribeSensors","unshift","listeners","el","useThrottle","lastCallbackTime","delayCallback","executeCallback","Date","now","slidePrefix","slideImagePrefix","ImageSlide","offset","rect","onLoad","onError","_d","_e","_f","_g","setStatus","imageRef","handleLoading","img","decode","Promise","resolve","catch","then","parentNode","setImageRef","complete","handleOnLoad","currentTarget","handleOnError","cover","nonInfinite","fallback","isFinite","maxWidth","srcSet","concat","naturalWidth","maxHeight","naturalHeight","defaultStyle","sort","a","b","sizes","MAX_VALUE","imagePropsStyle","imagePropsClassName","restImageProps","draggable","alt","iconLoading","iconError","LightboxRoot","SwipeState","Gesture","usePointerEvents","cssContainerPrefix","ControllerContext","useController","ControllerModule","toolbarWidth","setToolbarWidth","swipeState","setSwipeState","NONE","swipeOffset","pullOffset","pullOpacity","cleanupAnimationIncrement","cleanupSwipeOffset","cleanupPullOffset","handleContainerRef","horizontal","abs","deltaX","deltaY","ctrlKey","preventDefault","passive","usePreventWheelDefaults","carouselRef","setCarouselRef","rtl","getLightboxProps","getLightboxState","prev","params","next","isSwipeValid","setSwipeOffset","setProperty","setPullOffset","offsetValue","preparePullAnimation","translate","opacity","pull","ANIMATION","parsedSpacing","spacingValue","currentSwipeOffset","swipeDuration","swipeEasing","count","newSwipeState","newSwipeAnimationDuration","containerWidth","elapsedTime","expectedTime","swipeParams","SWIPE","pullParams","PULL","swipeAnimationDuration","onSwipeStart","onSwipeProgress","onSwipeFinish","onSwipeCancel","pullUpEnabled","pullDownEnabled","onPullStart","onPullProgress","onPullFinish","onPullCancel","pointers","activePointer","startTime","gesture","clearPointer","pointerId","currentPointers","p","addPointer","persist","exceedsPullThreshold","threshold","find","currentOffset","pointer","isCurrentPointer","clientX","clientY","startGesture","newGesture","usePointerSwipe","intent","intentCleanup","resetCleanup","wheelInertia","wheelInertiaCleanup","cancelSwipeIntentCleanup","cancelSwipeResetCleanup","handleCleanup","handleCancelSwipe","setWheelInertia","inertia","currentSwipeIntent","newSwipeOffset","sign","useWheelSwipe","focusOnMount","querySelector","onViewCallback","view","slideRect","container","role","tabIndex","controls","cssPrefix$2","cssSlidePrefix","CarouselSlide","click","offscreen","contains","activeElement","condition","inert","HTMLElement","classList","rendered","slideHeader","slideContainer","slideFooter","renderSlide","Placeholder","CarouselModule","items","placeholder","useNavigationState","prevDisabled","nextDisabled","useKeyboardNavigation","throttle","handleKeyDown","NavigationButton","NavigationModule","buttonPrev","buttonNext","iconPrev","iconNext","navigationPrev","navigationNext","noScrollPadding","isHTMLElement","element","padScrollbar","property","computedValue","originalValue","getPropertyValue","removeProperty","NoScrollModule","ownerWindow","body","scrollbar","innerWidth","elements","getElementsByTagName","i","add","remove","clean","cssPrefix$1","setAttribute","attribute","previousValue","getAttribute","removeAttribute","PortalModule","mounted","setMounted","visible","setVisible","restoreFocus","animationDuration","handleClose","exiting","exited","handleEnter","scrollTop","entering","indexOf","tagName","entered","handleRef","root","relatedTarget","RootModule","ToolbarModule","buttonClose","iconClose","mergeAnimation","defaultAnimation","defaultAnimationEasing","restDefaultAnimation","restAnimation","Lightbox","restProps","defaultCarousel","defaultRender","defaultToolbar","defaultController","defaultNoScroll","defaultOn","defaultSlides","defaultIndex","defaultPlugins","restDefaultProps","config","augmentation","augmentations","pop","addParent","append","addChild","precede","addSibling","addModule","replace","augment","plugin","reduce","acc","withPlugins","renderNode","child","defaultVideoProps","playsInline","resolveVideoProps","video","VideoSlide","useVideoProps","videoRef","paused","pause","autoPlay","play","handleVideoRef","setVideoRef","poster","sources","resolveBoolean","attr","resolveString","scalingProps","widthBound","elementWidth","elementHeight","scaleWidthAndHeight","onPlay","onEnded","media","Video","restRender","isVideoSlide","source","defaultThumbnailsProps","position","border","borderRadius","gap","vignette","hidden","showToggle","resolveThumbnailsProps","thumbnails","useThumbnailsProps","cssPrefix","cssThumbnailPrefix","VideoThumbnailIcon","UnknownThumbnailIcon","activePrefix","fadeInPrefix","fadeOutPrefix","placeholderPrefix","Thumbnail","active","fadeIn","fadeOut","onLoseFocus","onLoseFocusCallback","thumbnail","customThumbnail","imageSlideProps","thumbnailIconClass","renderThumbnail","isHorizontal","includes","boxSize","dimension","getThumbnailKey","ThumbnailsTrack","track","borderStyle","borderColor","handleControllerSwipe","animationOffset","trackRect","left","top","display","thumbnailsContainer","thumbnailsTrack","fadeAnimationDuration","slideIndex","ThumbnailsContext","useThumbnails","ThumbnailsContextProvider","show","hide","thumbnailsIcon","strokeLinejoin","ThumbnailsVisible","ThumbnailsHidden","ThumbnailsButton","buttonThumbnails","iconThumbnailsVisible","iconThumbnailsHidden","Thumbnails","thumbnailsProps","defaultZoomProps","maxZoomPixelRatio","zoomInMultiplier","doubleTapDelay","doubleClickDelay","doubleClickMaxStops","keyboardMoveDistance","wheelZoomDistanceFactor","pinchZoomDistanceFactor","scrollToZoom","resolveZoomProps","zoom","useZoomProps","distance","pointerA","pointerB","scaleZoom","delta","clamp","useZoomState","imageRect","maxZoom","zoomWrapperRef","setZoom","offsetX","setOffsetX","offsetY","setOffsetY","zoomAnimation","zoomAnimationStart","zoomAnimationDuration","playZoomAnimation","useZoomAnimation","currentSource","changeOffsets","dx","dy","targetZoom","newZoom","newOffsetX","newOffsetY","maxOffsetX","maxOffsetY","changeZoom","rapid","handleControllerRectChange","zoomIn","zoomOut","ZoomControllerContext","useZoom","ZoomContextProvider","zoomWrapper","setZoomWrapper","imageDimensions","maxImageRect","useZoomImageRect","onZoomCallback","useZoomCallback","activePointers","lastPointerDown","pinchZoomDistance","translateCoordinates","pageX","pageY","scrollX","scrollY","stopPropagation","move","handleChangeZoom","zoomValue","hasMeta","getModifierState","replacePointer","pointerType","timeStamp","currentDistance","coordinate","cleanupSensors","useZoomSensors","zoomRef","ZoomInIcon","ZoomOutIcon","ZoomButton","wasEnabled","wasFocused","zoomInCallback","zoomOutCallback","zoomDisabled","iconZoomIn","iconZoomOut","ZoomButtonsGroup","zoomInRef","zoomOutRef","focusSibling","sibling","focusZoomIn","focusZoomOut","ZoomToolbarControl","buttonZoom","ResponsiveImage","interactive","targetWidth","pixelDensity","handleResize","targetSource","handlePreload","currentPreload","WebkitTransform","assign","visibility","ZoomWrapper","setImageDimensions","slideProps","isResponsiveImageSlide","Zoom","zoomProps"],"mappings":"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","file":"3.08afa43fe87cf0a7de60.js","sourcesContent":["const MODULE_CAROUSEL = \"carousel\";\nconst MODULE_CONTROLLER = \"controller\";\nconst MODULE_NAVIGATION = \"navigation\";\nconst MODULE_NO_SCROLL = \"no-scroll\";\nconst MODULE_PORTAL = \"portal\";\nconst MODULE_ROOT = \"root\";\nconst MODULE_TOOLBAR = \"toolbar\";\nconst PLUGIN_CAPTIONS = \"captions\";\nconst PLUGIN_COUNTER = \"counter\";\nconst PLUGIN_DOWNLOAD = \"download\";\nconst PLUGIN_FULLSCREEN = \"fullscreen\";\nconst PLUGIN_INLINE = \"inline\";\nconst PLUGIN_SHARE = \"share\";\nconst PLUGIN_SLIDESHOW = \"slideshow\";\nconst PLUGIN_THUMBNAILS = \"thumbnails\";\nconst PLUGIN_ZOOM = \"zoom\";\nconst SLIDE_STATUS_LOADING = \"loading\";\nconst SLIDE_STATUS_PLAYING = \"playing\";\nconst SLIDE_STATUS_ERROR = \"error\";\nconst SLIDE_STATUS_COMPLETE = \"complete\";\nconst SLIDE_STATUS_PLACEHOLDER = \"placeholder\";\nconst activeSlideStatus = (status) => `active-slide-${status}`;\nconst ACTIVE_SLIDE_LOADING = activeSlideStatus(SLIDE_STATUS_LOADING);\nconst ACTIVE_SLIDE_PLAYING = activeSlideStatus(SLIDE_STATUS_PLAYING);\nconst ACTIVE_SLIDE_ERROR = activeSlideStatus(SLIDE_STATUS_ERROR);\nconst ACTIVE_SLIDE_COMPLETE = activeSlideStatus(SLIDE_STATUS_COMPLETE);\nconst CLASS_FULLSIZE = \"fullsize\";\nconst CLASS_FLEX_CENTER = \"flex_center\";\nconst CLASS_NO_SCROLL = \"no_scroll\";\nconst CLASS_NO_SCROLL_PADDING = \"no_scroll_padding\";\nconst CLASS_SLIDE_WRAPPER = \"slide_wrapper\";\nconst CLASS_SLIDE_WRAPPER_INTERACTIVE = \"slide_wrapper_interactive\";\nconst ACTION_PREV = \"prev\";\nconst ACTION_NEXT = \"next\";\nconst ACTION_SWIPE = \"swipe\";\nconst ACTION_CLOSE = \"close\";\nconst EVENT_ON_POINTER_DOWN = \"onPointerDown\";\nconst EVENT_ON_POINTER_MOVE = \"onPointerMove\";\nconst EVENT_ON_POINTER_UP = \"onPointerUp\";\nconst EVENT_ON_POINTER_LEAVE = \"onPointerLeave\";\nconst EVENT_ON_POINTER_CANCEL = \"onPointerCancel\";\nconst EVENT_ON_KEY_DOWN = \"onKeyDown\";\nconst EVENT_ON_KEY_UP = \"onKeyUp\";\nconst EVENT_ON_WHEEL = \"onWheel\";\nconst VK_ESCAPE = \"Escape\";\nconst VK_ARROW_LEFT = \"ArrowLeft\";\nconst VK_ARROW_RIGHT = \"ArrowRight\";\nconst ELEMENT_BUTTON = \"button\";\nconst ELEMENT_ICON = \"icon\";\nconst IMAGE_FIT_CONTAIN = \"contain\";\nconst IMAGE_FIT_COVER = \"cover\";\nconst UNKNOWN_ACTION_TYPE = \"Unknown action type\";\n\nexport { ACTION_CLOSE, ACTION_NEXT, ACTION_PREV, ACTION_SWIPE, ACTIVE_SLIDE_COMPLETE, ACTIVE_SLIDE_ERROR, ACTIVE_SLIDE_LOADING, ACTIVE_SLIDE_PLAYING, CLASS_FLEX_CENTER, CLASS_FULLSIZE, CLASS_NO_SCROLL, CLASS_NO_SCROLL_PADDING, CLASS_SLIDE_WRAPPER, CLASS_SLIDE_WRAPPER_INTERACTIVE, 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, IMAGE_FIT_CONTAIN, IMAGE_FIT_COVER, MODULE_CAROUSEL, MODULE_CONTROLLER, MODULE_NAVIGATION, MODULE_NO_SCROLL, MODULE_PORTAL, MODULE_ROOT, MODULE_TOOLBAR, PLUGIN_CAPTIONS, PLUGIN_COUNTER, PLUGIN_DOWNLOAD, PLUGIN_FULLSCREEN, PLUGIN_INLINE, PLUGIN_SHARE, PLUGIN_SLIDESHOW, PLUGIN_THUMBNAILS, PLUGIN_ZOOM, SLIDE_STATUS_COMPLETE, SLIDE_STATUS_ERROR, SLIDE_STATUS_LOADING, SLIDE_STATUS_PLACEHOLDER, SLIDE_STATUS_PLAYING, UNKNOWN_ACTION_TYPE, VK_ARROW_LEFT, VK_ARROW_RIGHT, VK_ESCAPE, activeSlideStatus };\n","'use client';\nimport * as React from 'react';\nimport { IMAGE_FIT_COVER, IMAGE_FIT_CONTAIN, ACTION_CLOSE, MODULE_CONTROLLER, UNKNOWN_ACTION_TYPE, ELEMENT_BUTTON, ELEMENT_ICON, EVENT_ON_POINTER_DOWN, EVENT_ON_POINTER_MOVE, EVENT_ON_POINTER_UP, EVENT_ON_POINTER_LEAVE, EVENT_ON_POINTER_CANCEL, EVENT_ON_KEY_DOWN, EVENT_ON_KEY_UP, EVENT_ON_WHEEL, SLIDE_STATUS_LOADING, activeSlideStatus, SLIDE_STATUS_COMPLETE, SLIDE_STATUS_ERROR, SLIDE_STATUS_PLACEHOLDER, ACTION_PREV, ACTION_NEXT, ACTION_SWIPE, MODULE_PORTAL, CLASS_FLEX_CENTER, MODULE_CAROUSEL, CLASS_SLIDE_WRAPPER, VK_ARROW_RIGHT, VK_ARROW_LEFT, VK_ESCAPE, MODULE_NAVIGATION, CLASS_NO_SCROLL, CLASS_NO_SCROLL_PADDING, MODULE_NO_SCROLL, MODULE_ROOT, MODULE_TOOLBAR } from './types.js';\nimport { createPortal } from 'react-dom';\nexport { ACTIVE_SLIDE_COMPLETE, ACTIVE_SLIDE_ERROR, ACTIVE_SLIDE_LOADING, ACTIVE_SLIDE_PLAYING, CLASS_FULLSIZE, CLASS_SLIDE_WRAPPER_INTERACTIVE, PLUGIN_CAPTIONS, PLUGIN_COUNTER, PLUGIN_DOWNLOAD, PLUGIN_FULLSCREEN, PLUGIN_INLINE, PLUGIN_SHARE, PLUGIN_SLIDESHOW, PLUGIN_THUMBNAILS, PLUGIN_ZOOM, SLIDE_STATUS_PLAYING } from './types.js';\n\nconst cssPrefix$3 = \"yarl__\";\nfunction clsx(...classes) {\n return [...classes].filter(Boolean).join(\" \");\n}\nfunction cssClass(name) {\n return `${cssPrefix$3}${name}`;\n}\nfunction cssVar(name) {\n return `--${cssPrefix$3}${name}`;\n}\nfunction composePrefix(base, prefix) {\n return `${base}${prefix ? `_${prefix}` : \"\"}`;\n}\nfunction makeComposePrefix(base) {\n return (prefix) => composePrefix(base, prefix);\n}\nfunction label(labels, defaultLabel) {\n var _a;\n return (_a = labels === null || labels === void 0 ? void 0 : labels[defaultLabel]) !== null && _a !== void 0 ? _a : defaultLabel;\n}\nfunction cleanup(...cleaners) {\n return () => {\n cleaners.forEach((cleaner) => {\n cleaner();\n });\n };\n}\nfunction makeUseContext(name, contextName, context) {\n return () => {\n const ctx = React.useContext(context);\n if (!ctx) {\n throw new Error(`${name} must be used within a ${contextName}.Provider`);\n }\n return ctx;\n };\n}\nfunction hasWindow() {\n return typeof window !== \"undefined\";\n}\nfunction round(value, decimals = 0) {\n const factor = 10 ** decimals;\n return Math.round((value + Number.EPSILON) * factor) / factor;\n}\nfunction isImageSlide(slide) {\n return slide.type === undefined || slide.type === \"image\";\n}\nfunction isImageFitCover(image, imageFit) {\n return image.imageFit === IMAGE_FIT_COVER || (image.imageFit !== IMAGE_FIT_CONTAIN && imageFit === IMAGE_FIT_COVER);\n}\nfunction parseInt(value) {\n return typeof value === \"string\" ? Number.parseInt(value, 10) : value;\n}\nfunction parseLengthPercentage(input) {\n if (typeof input === \"number\") {\n return { pixel: input };\n }\n if (typeof input === \"string\") {\n const value = parseInt(input);\n return input.endsWith(\"%\") ? { percent: value } : { pixel: value };\n }\n return { pixel: 0 };\n}\nfunction computeSlideRect(containerRect, padding) {\n const paddingValue = parseLengthPercentage(padding);\n const paddingPixels = paddingValue.percent !== undefined ? (containerRect.width / 100) * paddingValue.percent : paddingValue.pixel;\n return {\n width: Math.max(containerRect.width - 2 * paddingPixels, 0),\n height: Math.max(containerRect.height - 2 * paddingPixels, 0),\n };\n}\nfunction devicePixelRatio() {\n return (hasWindow() ? window === null || window === void 0 ? void 0 : window.devicePixelRatio : undefined) || 1;\n}\nfunction getSlideIndex(index, slidesCount) {\n return slidesCount > 0 ? ((index % slidesCount) + slidesCount) % slidesCount : 0;\n}\nfunction hasSlides(slides) {\n return slides.length > 0;\n}\nfunction getSlide(slides, index) {\n return slides[getSlideIndex(index, slides.length)];\n}\nfunction getSlideIfPresent(slides, index) {\n return hasSlides(slides) ? getSlide(slides, index) : undefined;\n}\nfunction getSlideKey(slide) {\n return isImageSlide(slide) ? slide.src : undefined;\n}\nfunction addToolbarButton(toolbar, key, button) {\n if (!button)\n return toolbar;\n const { buttons, ...restToolbar } = toolbar;\n const index = buttons.findIndex((item) => item === key);\n const buttonWithKey = React.isValidElement(button) ? React.cloneElement(button, { key }, null) : button;\n if (index >= 0) {\n const result = [...buttons];\n result.splice(index, 1, buttonWithKey);\n return { buttons: result, ...restToolbar };\n }\n return { buttons: [buttonWithKey, ...buttons], ...restToolbar };\n}\nfunction stopNavigationEventsPropagation() {\n const stopPropagation = (event) => {\n event.stopPropagation();\n };\n return { onPointerDown: stopPropagation, onKeyDown: stopPropagation, onWheel: stopPropagation };\n}\nfunction calculatePreload(carousel, slides, minimum = 0) {\n return Math.min(carousel.preload, Math.max(carousel.finite ? slides.length - 1 : Math.floor(slides.length / 2), minimum));\n}\nconst isReact19 = Number(React.version.split(\".\")[0]) >= 19;\nfunction makeInertWhen(condition) {\n const legacyValue = condition ? \"\" : undefined;\n return { inert: isReact19 ? condition : legacyValue };\n}\n\nconst LightboxDefaultProps = {\n open: false,\n close: () => { },\n index: 0,\n slides: [],\n render: {},\n plugins: [],\n toolbar: { buttons: [ACTION_CLOSE] },\n labels: {},\n animation: {\n fade: 250,\n swipe: 500,\n easing: {\n fade: \"ease\",\n swipe: \"ease-out\",\n navigation: \"ease-in-out\",\n },\n },\n carousel: {\n finite: false,\n preload: 2,\n padding: \"16px\",\n spacing: \"30%\",\n imageFit: IMAGE_FIT_CONTAIN,\n imageProps: {},\n },\n controller: {\n ref: null,\n focus: true,\n aria: false,\n touchAction: \"none\",\n closeOnPullUp: false,\n closeOnPullDown: false,\n closeOnBackdropClick: false,\n preventDefaultWheelX: true,\n preventDefaultWheelY: false,\n },\n portal: {},\n noScroll: {\n disabled: false,\n },\n on: {},\n styles: {},\n className: \"\",\n};\n\nfunction createModule(name, component) {\n return { name, component };\n}\nfunction createNode(module, children) {\n return { module, children };\n}\nfunction traverseNode(node, target, apply) {\n if (node.module.name === target) {\n return apply(node);\n }\n if (node.children) {\n return [\n createNode(node.module, node.children.flatMap((n) => { var _a; return (_a = traverseNode(n, target, apply)) !== null && _a !== void 0 ? _a : []; })),\n ];\n }\n return [node];\n}\nfunction traverse(nodes, target, apply) {\n return nodes.flatMap((node) => { var _a; return (_a = traverseNode(node, target, apply)) !== null && _a !== void 0 ? _a : []; });\n}\nfunction withPlugins(root, plugins = [], augmentations = []) {\n let config = root;\n const contains = (target) => {\n const nodes = [...config];\n while (nodes.length > 0) {\n const node = nodes.pop();\n if ((node === null || node === void 0 ? void 0 : node.module.name) === target)\n return true;\n if (node === null || node === void 0 ? void 0 : node.children)\n nodes.push(...node.children);\n }\n return false;\n };\n const addParent = (target, module) => {\n if (target === \"\") {\n config = [createNode(module, config)];\n return;\n }\n config = traverse(config, target, (node) => [createNode(module, [node])]);\n };\n const append = (target, module) => {\n config = traverse(config, target, (node) => [createNode(node.module, [createNode(module, node.children)])]);\n };\n const addChild = (target, module, precede) => {\n config = traverse(config, target, (node) => {\n var _a;\n return [\n createNode(node.module, [\n ...(precede ? [createNode(module)] : []),\n ...((_a = node.children) !== null && _a !== void 0 ? _a : []),\n ...(!precede ? [createNode(module)] : []),\n ]),\n ];\n });\n };\n const addSibling = (target, module, precede) => {\n config = traverse(config, target, (node) => [\n ...(precede ? [createNode(module)] : []),\n node,\n ...(!precede ? [createNode(module)] : []),\n ]);\n };\n const addModule = (module) => {\n append(MODULE_CONTROLLER, module);\n };\n const replace = (target, module) => {\n config = traverse(config, target, (node) => [createNode(module, node.children)]);\n };\n const remove = (target) => {\n config = traverse(config, target, (node) => node.children);\n };\n const augment = (augmentation) => {\n augmentations.push(augmentation);\n };\n plugins.forEach((plugin) => {\n plugin({\n contains,\n addParent,\n append,\n addChild,\n addSibling,\n addModule,\n replace,\n remove,\n augment,\n });\n });\n return {\n config,\n augmentation: (props) => augmentations.reduce((acc, augmentation) => augmentation(acc), props),\n };\n}\n\nconst DocumentContext = React.createContext(null);\nconst useDocumentContext = makeUseContext(\"useDocument\", \"DocumentContext\", DocumentContext);\nfunction DocumentContextProvider({ nodeRef, children }) {\n const context = React.useMemo(() => {\n const getOwnerDocument = (node) => { var _a; return ((_a = (node || nodeRef.current)) === null || _a === void 0 ? void 0 : _a.ownerDocument) || document; };\n const getOwnerWindow = (node) => { var _a; return ((_a = getOwnerDocument(node)) === null || _a === void 0 ? void 0 : _a.defaultView) || window; };\n return { getOwnerDocument, getOwnerWindow };\n }, [nodeRef]);\n return React.createElement(DocumentContext.Provider, { value: context }, children);\n}\n\nconst EventsContext = React.createContext(null);\nconst useEvents = makeUseContext(\"useEvents\", \"EventsContext\", EventsContext);\nfunction EventsProvider({ children }) {\n const [subscriptions] = React.useState({});\n React.useEffect(() => () => {\n Object.keys(subscriptions).forEach((topic) => delete subscriptions[topic]);\n }, [subscriptions]);\n const context = React.useMemo(() => {\n const unsubscribe = (topic, callback) => {\n var _a;\n (_a = subscriptions[topic]) === null || _a === void 0 ? void 0 : _a.splice(0, subscriptions[topic].length, ...subscriptions[topic].filter((cb) => cb !== callback));\n };\n const subscribe = (topic, callback) => {\n if (!subscriptions[topic]) {\n subscriptions[topic] = [];\n }\n subscriptions[topic].push(callback);\n return () => unsubscribe(topic, callback);\n };\n const publish = (...[topic, event]) => {\n var _a;\n (_a = subscriptions[topic]) === null || _a === void 0 ? void 0 : _a.forEach((callback) => callback(event));\n };\n return { publish, subscribe, unsubscribe };\n }, [subscriptions]);\n return React.createElement(EventsContext.Provider, { value: context }, children);\n}\n\nconst LightboxPropsContext = React.createContext(null);\nconst useLightboxProps = makeUseContext(\"useLightboxProps\", \"LightboxPropsContext\", LightboxPropsContext);\nfunction LightboxPropsProvider({ children, ...props }) {\n return React.createElement(LightboxPropsContext.Provider, { value: props }, children);\n}\n\nconst LightboxStateContext = React.createContext(null);\nconst useLightboxState = makeUseContext(\"useLightboxState\", \"LightboxStateContext\", LightboxStateContext);\nconst LightboxDispatchContext = React.createContext(null);\nconst useLightboxDispatch = makeUseContext(\"useLightboxDispatch\", \"LightboxDispatchContext\", LightboxDispatchContext);\nfunction reducer(state, action) {\n switch (action.type) {\n case \"swipe\": {\n const { slides } = state;\n const increment = (action === null || action === void 0 ? void 0 : action.increment) || 0;\n const globalIndex = state.globalIndex + increment;\n const currentIndex = getSlideIndex(globalIndex, slides.length);\n const currentSlide = getSlideIfPresent(slides, currentIndex);\n const animation = increment || action.duration\n ? {\n increment,\n duration: action.duration,\n easing: action.easing,\n }\n : undefined;\n return { slides, currentIndex, globalIndex, currentSlide, animation };\n }\n case \"update\":\n if (action.slides !== state.slides || action.index !== state.currentIndex) {\n return {\n slides: action.slides,\n currentIndex: action.index,\n globalIndex: action.index,\n currentSlide: getSlideIfPresent(action.slides, action.index),\n };\n }\n return state;\n default:\n throw new Error(UNKNOWN_ACTION_TYPE);\n }\n}\nfunction LightboxStateProvider({ slides, index, children }) {\n const [state, dispatch] = React.useReducer(reducer, {\n slides,\n currentIndex: index,\n globalIndex: index,\n currentSlide: getSlideIfPresent(slides, index),\n });\n React.useEffect(() => {\n dispatch({ type: \"update\", slides, index });\n }, [slides, index]);\n const context = React.useMemo(() => ({ ...state, state, dispatch }), [state, dispatch]);\n return (React.createElement(LightboxDispatchContext.Provider, { value: dispatch },\n React.createElement(LightboxStateContext.Provider, { value: context }, children)));\n}\n\nconst TimeoutsContext = React.createContext(null);\nconst useTimeouts = makeUseContext(\"useTimeouts\", \"TimeoutsContext\", TimeoutsContext);\nfunction TimeoutsProvider({ children }) {\n const [timeouts] = React.useState([]);\n React.useEffect(() => () => {\n timeouts.forEach((tid) => window.clearTimeout(tid));\n timeouts.splice(0, timeouts.length);\n }, [timeouts]);\n const context = React.useMemo(() => {\n const removeTimeout = (id) => {\n timeouts.splice(0, timeouts.length, ...timeouts.filter((tid) => tid !== id));\n };\n const setTimeout = (fn, delay) => {\n const id = window.setTimeout(() => {\n removeTimeout(id);\n fn();\n }, delay);\n timeouts.push(id);\n return id;\n };\n const clearTimeout = (id) => {\n if (id !== undefined) {\n removeTimeout(id);\n window.clearTimeout(id);\n }\n };\n return { setTimeout, clearTimeout };\n }, [timeouts]);\n return React.createElement(TimeoutsContext.Provider, { value: context }, children);\n}\n\nconst IconButton = React.forwardRef(function IconButton({ label: label$1, className, icon: Icon, renderIcon, onClick, style, ...rest }, ref) {\n const { styles, labels } = useLightboxProps();\n const buttonLabel = label(labels, label$1);\n return (React.createElement(\"button\", { ref: ref, type: \"button\", title: buttonLabel, \"aria-label\": buttonLabel, className: clsx(cssClass(ELEMENT_BUTTON), className), onClick: onClick, style: { ...style, ...styles.button }, ...rest }, renderIcon ? renderIcon() : React.createElement(Icon, { className: cssClass(ELEMENT_ICON), style: styles.icon })));\n});\n\nfunction svgIcon(name, children) {\n const icon = (props) => (React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 24 24\", width: \"24\", height: \"24\", \"aria-hidden\": \"true\", focusable: \"false\", ...props }, children));\n icon.displayName = name;\n return icon;\n}\nfunction createIcon(name, glyph) {\n return svgIcon(name, React.createElement(\"g\", { fill: \"currentColor\" },\n React.createElement(\"path\", { d: \"M0 0h24v24H0z\", fill: \"none\" }),\n glyph));\n}\nfunction createIconDisabled(name, glyph) {\n return svgIcon(name, React.createElement(React.Fragment, null,\n React.createElement(\"defs\", null,\n React.createElement(\"mask\", { id: \"strike\" },\n React.createElement(\"path\", { d: \"M0 0h24v24H0z\", fill: \"white\" }),\n React.createElement(\"path\", { d: \"M0 0L24 24\", stroke: \"black\", strokeWidth: 4 }))),\n React.createElement(\"path\", { d: \"M0.70707 2.121320L21.878680 23.292883\", stroke: \"currentColor\", strokeWidth: 2 }),\n React.createElement(\"g\", { fill: \"currentColor\", mask: \"url(#strike)\" },\n React.createElement(\"path\", { d: \"M0 0h24v24H0z\", fill: \"none\" }),\n glyph)));\n}\nconst CloseIcon = createIcon(\"Close\", React.createElement(\"path\", { d: \"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\" }));\nconst PreviousIcon = createIcon(\"Previous\", React.createElement(\"path\", { d: \"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z\" }));\nconst NextIcon = createIcon(\"Next\", React.createElement(\"path\", { d: \"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\" }));\nconst LoadingIcon = createIcon(\"Loading\", React.createElement(React.Fragment, null, Array.from({ length: 8 }).map((_, index, array) => (React.createElement(\"line\", { key: index, x1: \"12\", y1: \"6.5\", x2: \"12\", y2: \"1.8\", strokeLinecap: \"round\", strokeWidth: \"2.6\", stroke: \"currentColor\", strokeOpacity: (1 / array.length) * (index + 1), transform: `rotate(${(360 / array.length) * index}, 12, 12)` })))));\nconst ErrorIcon = createIcon(\"Error\", React.createElement(\"path\", { d: \"M21.9,21.9l-8.49-8.49l0,0L3.59,3.59l0,0L2.1,2.1L0.69,3.51L3,5.83V19c0,1.1,0.9,2,2,2h13.17l2.31,2.31L21.9,21.9z M5,18 l3.5-4.5l2.5,3.01L12.17,15l3,3H5z M21,18.17L5.83,3H19c1.1,0,2,0.9,2,2V18.17z\" }));\n\nconst useLayoutEffect = hasWindow() ? React.useLayoutEffect : React.useEffect;\n\nfunction useMotionPreference() {\n const [reduceMotion, setReduceMotion] = React.useState(false);\n React.useEffect(() => {\n var _a, _b;\n const mediaQuery = (_a = window.matchMedia) === null || _a === void 0 ? void 0 : _a.call(window, \"(prefers-reduced-motion: reduce)\");\n setReduceMotion(mediaQuery === null || mediaQuery === void 0 ? void 0 : mediaQuery.matches);\n const listener = (event) => setReduceMotion(event.matches);\n (_b = mediaQuery === null || mediaQuery === void 0 ? void 0 : mediaQuery.addEventListener) === null || _b === void 0 ? void 0 : _b.call(mediaQuery, \"change\", listener);\n return () => { var _a; return (_a = mediaQuery === null || mediaQuery === void 0 ? void 0 : mediaQuery.removeEventListener) === null || _a === void 0 ? void 0 : _a.call(mediaQuery, \"change\", listener); };\n }, []);\n return reduceMotion;\n}\n\nfunction currentTransformation(node) {\n let x = 0;\n let y = 0;\n let z = 0;\n const matrix = window.getComputedStyle(node).transform;\n const matcher = matrix.match(/matrix.*\\((.+)\\)/);\n if (matcher) {\n const values = matcher[1].split(\",\").map(parseInt);\n if (values.length === 6) {\n x = values[4];\n y = values[5];\n }\n else if (values.length === 16) {\n x = values[12];\n y = values[13];\n z = values[14];\n }\n }\n return { x, y, z };\n}\nfunction useAnimation(nodeRef, computeAnimation) {\n const snapshot = React.useRef();\n const animation = React.useRef();\n const reduceMotion = useMotionPreference();\n useLayoutEffect(() => {\n var _a, _b, _c;\n if (nodeRef.current && snapshot.current !== undefined && !reduceMotion) {\n const { keyframes, duration, easing, onfinish } = computeAnimation(snapshot.current, nodeRef.current.getBoundingClientRect(), currentTransformation(nodeRef.current)) || {};\n if (keyframes && duration) {\n (_a = animation.current) === null || _a === void 0 ? void 0 : _a.cancel();\n animation.current = undefined;\n try {\n animation.current = (_c = (_b = nodeRef.current).animate) === null || _c === void 0 ? void 0 : _c.call(_b, keyframes, { duration, easing });\n }\n catch (err) {\n console.error(err);\n }\n if (animation.current) {\n animation.current.onfinish = () => {\n animation.current = undefined;\n onfinish === null || onfinish === void 0 ? void 0 : onfinish();\n };\n }\n }\n }\n snapshot.current = undefined;\n });\n return {\n prepareAnimation: (currentSnapshot) => {\n snapshot.current = currentSnapshot;\n },\n isAnimationPlaying: () => { var _a; return ((_a = animation.current) === null || _a === void 0 ? void 0 : _a.playState) === \"running\"; },\n };\n}\n\nfunction useContainerRect() {\n const containerRef = React.useRef(null);\n const observerRef = React.useRef();\n const [containerRect, setContainerRect] = React.useState();\n const setContainerRef = React.useCallback((node) => {\n containerRef.current = node;\n if (observerRef.current) {\n observerRef.current.disconnect();\n observerRef.current = undefined;\n }\n const updateContainerRect = () => {\n if (node) {\n const styles = window.getComputedStyle(node);\n const parse = (value) => parseFloat(value) || 0;\n setContainerRect({\n width: Math.round(node.clientWidth - parse(styles.paddingLeft) - parse(styles.paddingRight)),\n height: Math.round(node.clientHeight - parse(styles.paddingTop) - parse(styles.paddingBottom)),\n });\n }\n else {\n setContainerRect(undefined);\n }\n };\n updateContainerRect();\n if (node && typeof ResizeObserver !== \"undefined\") {\n observerRef.current = new ResizeObserver(updateContainerRect);\n observerRef.current.observe(node);\n }\n }, []);\n return { setContainerRef, containerRef, containerRect };\n}\n\nfunction useDelay() {\n const timeoutId = React.useRef();\n const { setTimeout, clearTimeout } = useTimeouts();\n return React.useCallback((callback, delay) => {\n clearTimeout(timeoutId.current);\n timeoutId.current = setTimeout(callback, delay > 0 ? delay : 0);\n }, [setTimeout, clearTimeout]);\n}\n\nfunction useEventCallback(fn) {\n const ref = React.useRef(fn);\n useLayoutEffect(() => {\n ref.current = fn;\n });\n return React.useCallback((...args) => { var _a; return (_a = ref.current) === null || _a === void 0 ? void 0 : _a.call(ref, ...args); }, []);\n}\n\nfunction setRef(ref, value) {\n if (typeof ref === \"function\") {\n ref(value);\n }\n else if (ref) {\n ref.current = value;\n }\n}\nfunction useForkRef(refA, refB) {\n return React.useMemo(() => refA == null && refB == null\n ? null\n : (refValue) => {\n setRef(refA, refValue);\n setRef(refB, refValue);\n }, [refA, refB]);\n}\n\nfunction useLoseFocus(focus, disabled = false) {\n const focused = React.useRef();\n useLayoutEffect(() => {\n if (disabled && focused.current) {\n focused.current = false;\n focus();\n }\n }, [disabled, focus]);\n const onFocus = React.useCallback(() => {\n focused.current = true;\n }, []);\n const onBlur = React.useCallback(() => {\n focused.current = false;\n }, []);\n return { onFocus, onBlur };\n}\n\nfunction useRTL() {\n const [isRTL, setIsRTL] = React.useState(false);\n useLayoutEffect(() => {\n setIsRTL(window.getComputedStyle(window.document.documentElement).direction === \"rtl\");\n }, []);\n return isRTL;\n}\n\nfunction useSensors() {\n const [subscribers] = React.useState({});\n const notifySubscribers = React.useCallback((type, event) => {\n var _a;\n (_a = subscribers[type]) === null || _a === void 0 ? void 0 : _a.forEach((listener) => {\n if (!event.isPropagationStopped())\n listener(event);\n });\n }, [subscribers]);\n const registerSensors = React.useMemo(() => ({\n onPointerDown: (event) => notifySubscribers(EVENT_ON_POINTER_DOWN, event),\n onPointerMove: (event) => notifySubscribers(EVENT_ON_POINTER_MOVE, event),\n onPointerUp: (event) => notifySubscribers(EVENT_ON_POINTER_UP, event),\n onPointerLeave: (event) => notifySubscribers(EVENT_ON_POINTER_LEAVE, event),\n onPointerCancel: (event) => notifySubscribers(EVENT_ON_POINTER_CANCEL, event),\n onKeyDown: (event) => notifySubscribers(EVENT_ON_KEY_DOWN, event),\n onKeyUp: (event) => notifySubscribers(EVENT_ON_KEY_UP, event),\n onWheel: (event) => notifySubscribers(EVENT_ON_WHEEL, event),\n }), [notifySubscribers]);\n const subscribeSensors = React.useCallback((type, callback) => {\n if (!subscribers[type]) {\n subscribers[type] = [];\n }\n subscribers[type].unshift(callback);\n return () => {\n const listeners = subscribers[type];\n if (listeners) {\n listeners.splice(0, listeners.length, ...listeners.filter((el) => el !== callback));\n }\n };\n }, [subscribers]);\n return { registerSensors, subscribeSensors };\n}\n\nfunction useThrottle(callback, delay) {\n const lastCallbackTime = React.useRef(0);\n const delayCallback = useDelay();\n const executeCallback = useEventCallback((...args) => {\n lastCallbackTime.current = Date.now();\n callback(args);\n });\n return React.useCallback((...args) => {\n delayCallback(() => {\n executeCallback(args);\n }, delay - (Date.now() - lastCallbackTime.current));\n }, [delay, executeCallback, delayCallback]);\n}\n\nconst slidePrefix = makeComposePrefix(\"slide\");\nconst slideImagePrefix = makeComposePrefix(\"slide_image\");\nfunction ImageSlide({ slide: image, offset, render, rect, imageFit, imageProps, onClick, onLoad, onError, style, }) {\n var _a, _b, _c, _d, _e, _f, _g;\n const [status, setStatus] = React.useState(SLIDE_STATUS_LOADING);\n const { publish } = useEvents();\n const { setTimeout } = useTimeouts();\n const imageRef = React.useRef(null);\n React.useEffect(() => {\n if (offset === 0) {\n publish(activeSlideStatus(status));\n }\n }, [offset, status, publish]);\n const handleLoading = useEventCallback((img) => {\n (\"decode\" in img ? img.decode() : Promise.resolve())\n .catch(() => { })\n .then(() => {\n if (!img.parentNode) {\n return;\n }\n setStatus(SLIDE_STATUS_COMPLETE);\n setTimeout(() => {\n onLoad === null || onLoad === void 0 ? void 0 : onLoad(img);\n }, 0);\n });\n });\n const setImageRef = React.useCallback((img) => {\n imageRef.current = img;\n if (img === null || img === void 0 ? void 0 : img.complete) {\n handleLoading(img);\n }\n }, [handleLoading]);\n const handleOnLoad = React.useCallback((event) => {\n handleLoading(event.currentTarget);\n }, [handleLoading]);\n const handleOnError = useEventCallback(() => {\n setStatus(SLIDE_STATUS_ERROR);\n onError === null || onError === void 0 ? void 0 : onError();\n });\n const cover = isImageFitCover(image, imageFit);\n const nonInfinite = (value, fallback) => (Number.isFinite(value) ? value : fallback);\n const maxWidth = nonInfinite(Math.max(...((_b = (_a = image.srcSet) === null || _a === void 0 ? void 0 : _a.map((x) => x.width)) !== null && _b !== void 0 ? _b : []).concat(image.width ? [image.width] : []).filter(Boolean)), ((_c = imageRef.current) === null || _c === void 0 ? void 0 : _c.naturalWidth) || 0);\n const maxHeight = nonInfinite(Math.max(...((_e = (_d = image.srcSet) === null || _d === void 0 ? void 0 : _d.map((x) => x.height)) !== null && _e !== void 0 ? _e : []).concat(image.height ? [image.height] : []).filter(Boolean)), ((_f = imageRef.current) === null || _f === void 0 ? void 0 : _f.naturalHeight) || 0);\n const defaultStyle = maxWidth && maxHeight\n ? {\n maxWidth: `min(${maxWidth}px, 100%)`,\n maxHeight: `min(${maxHeight}px, 100%)`,\n }\n : {\n maxWidth: \"100%\",\n maxHeight: \"100%\",\n };\n const srcSet = (_g = image.srcSet) === null || _g === void 0 ? void 0 : _g.sort((a, b) => a.width - b.width).map((item) => `${item.src} ${item.width}w`).join(\", \");\n const estimateActualWidth = () => rect && !cover && image.width && image.height ? (rect.height / image.height) * image.width : Number.MAX_VALUE;\n const sizes = srcSet && rect && hasWindow() ? `${Math.round(Math.min(estimateActualWidth(), rect.width))}px` : undefined;\n const { style: imagePropsStyle, className: imagePropsClassName, ...restImageProps } = imageProps || {};\n return (React.createElement(React.Fragment, null,\n React.createElement(\"img\", { ref: setImageRef, onLoad: handleOnLoad, onError: handleOnError, onClick: onClick, draggable: false, className: clsx(cssClass(slideImagePrefix()), cover && cssClass(slideImagePrefix(\"cover\")), status !== SLIDE_STATUS_COMPLETE && cssClass(slideImagePrefix(\"loading\")), imagePropsClassName), style: { ...defaultStyle, ...style, ...imagePropsStyle }, ...restImageProps, alt: image.alt, sizes: sizes, srcSet: srcSet, src: image.src }),\n status !== SLIDE_STATUS_COMPLETE && (React.createElement(\"div\", { className: cssClass(slidePrefix(SLIDE_STATUS_PLACEHOLDER)) },\n status === SLIDE_STATUS_LOADING &&\n ((render === null || render === void 0 ? void 0 : render.iconLoading) ? (render.iconLoading()) : (React.createElement(LoadingIcon, { className: clsx(cssClass(ELEMENT_ICON), cssClass(slidePrefix(SLIDE_STATUS_LOADING))) }))),\n status === SLIDE_STATUS_ERROR &&\n ((render === null || render === void 0 ? void 0 : render.iconError) ? (render.iconError()) : (React.createElement(ErrorIcon, { className: clsx(cssClass(ELEMENT_ICON), cssClass(slidePrefix(SLIDE_STATUS_ERROR))) })))))));\n}\n\nconst LightboxRoot = React.forwardRef(function LightboxRoot({ className, children, ...rest }, ref) {\n const nodeRef = React.useRef(null);\n return (React.createElement(DocumentContextProvider, { nodeRef: nodeRef },\n React.createElement(\"div\", { ref: useForkRef(ref, nodeRef), className: clsx(cssClass(\"root\"), className), ...rest }, children)));\n});\n\nvar SwipeState;\n(function (SwipeState) {\n SwipeState[SwipeState[\"NONE\"] = 0] = \"NONE\";\n SwipeState[SwipeState[\"SWIPE\"] = 1] = \"SWIPE\";\n SwipeState[SwipeState[\"PULL\"] = 2] = \"PULL\";\n SwipeState[SwipeState[\"ANIMATION\"] = 3] = \"ANIMATION\";\n})(SwipeState || (SwipeState = {}));\n\nfunction usePointerEvents(subscribeSensors, onPointerDown, onPointerMove, onPointerUp, disabled) {\n React.useEffect(() => !disabled\n ? cleanup(subscribeSensors(EVENT_ON_POINTER_DOWN, onPointerDown), subscribeSensors(EVENT_ON_POINTER_MOVE, onPointerMove), subscribeSensors(EVENT_ON_POINTER_UP, onPointerUp), subscribeSensors(EVENT_ON_POINTER_LEAVE, onPointerUp), subscribeSensors(EVENT_ON_POINTER_CANCEL, onPointerUp))\n : () => { }, [subscribeSensors, onPointerDown, onPointerMove, onPointerUp, disabled]);\n}\n\nvar Gesture;\n(function (Gesture) {\n Gesture[Gesture[\"NONE\"] = 0] = \"NONE\";\n Gesture[Gesture[\"SWIPE\"] = 1] = \"SWIPE\";\n Gesture[Gesture[\"PULL\"] = 2] = \"PULL\";\n})(Gesture || (Gesture = {}));\nconst SWIPE_THRESHOLD = 30;\nfunction usePointerSwipe(subscribeSensors, isSwipeValid, containerWidth, swipeAnimationDuration, onSwipeStart, onSwipeProgress, onSwipeFinish, onSwipeCancel, pullUpEnabled, pullDownEnabled, onPullStart, onPullProgress, onPullFinish, onPullCancel) {\n const offset = React.useRef(0);\n const pointers = React.useRef([]);\n const activePointer = React.useRef();\n const startTime = React.useRef(0);\n const gesture = React.useRef(Gesture.NONE);\n const clearPointer = React.useCallback((event) => {\n if (activePointer.current === event.pointerId) {\n activePointer.current = undefined;\n gesture.current = Gesture.NONE;\n }\n const currentPointers = pointers.current;\n currentPointers.splice(0, currentPointers.length, ...currentPointers.filter((p) => p.pointerId !== event.pointerId));\n }, []);\n const addPointer = React.useCallback((event) => {\n clearPointer(event);\n event.persist();\n pointers.current.push(event);\n }, [clearPointer]);\n const onPointerDown = useEventCallback((event) => {\n addPointer(event);\n });\n const exceedsPullThreshold = (value, threshold) => (pullDownEnabled && value > threshold) || (pullUpEnabled && value < -threshold);\n const onPointerUp = useEventCallback((event) => {\n if (pointers.current.find((x) => x.pointerId === event.pointerId) && activePointer.current === event.pointerId) {\n const duration = Date.now() - startTime.current;\n const currentOffset = offset.current;\n if (gesture.current === Gesture.SWIPE) {\n if (Math.abs(currentOffset) > 0.3 * containerWidth ||\n (Math.abs(currentOffset) > 5 && duration < swipeAnimationDuration)) {\n onSwipeFinish(currentOffset, duration);\n }\n else {\n onSwipeCancel(currentOffset);\n }\n }\n else if (gesture.current === Gesture.PULL) {\n if (exceedsPullThreshold(currentOffset, 2 * SWIPE_THRESHOLD)) {\n onPullFinish(currentOffset, duration);\n }\n else {\n onPullCancel(currentOffset);\n }\n }\n offset.current = 0;\n gesture.current = Gesture.NONE;\n }\n clearPointer(event);\n });\n const onPointerMove = useEventCallback((event) => {\n const pointer = pointers.current.find((p) => p.pointerId === event.pointerId);\n if (pointer) {\n const isCurrentPointer = activePointer.current === event.pointerId;\n if (event.buttons === 0) {\n if (isCurrentPointer && offset.current !== 0) {\n onPointerUp(event);\n }\n else {\n clearPointer(pointer);\n }\n return;\n }\n const deltaX = event.clientX - pointer.clientX;\n const deltaY = event.clientY - pointer.clientY;\n if (activePointer.current === undefined) {\n const startGesture = (newGesture) => {\n addPointer(event);\n activePointer.current = event.pointerId;\n startTime.current = Date.now();\n gesture.current = newGesture;\n };\n if (Math.abs(deltaX) > Math.abs(deltaY) && Math.abs(deltaX) > SWIPE_THRESHOLD && isSwipeValid(deltaX)) {\n startGesture(Gesture.SWIPE);\n onSwipeStart();\n }\n else if (Math.abs(deltaY) > Math.abs(deltaX) && exceedsPullThreshold(deltaY, SWIPE_THRESHOLD)) {\n startGesture(Gesture.PULL);\n onPullStart();\n }\n }\n else if (isCurrentPointer) {\n if (gesture.current === Gesture.SWIPE) {\n offset.current = deltaX;\n onSwipeProgress(deltaX);\n }\n else if (gesture.current === Gesture.PULL) {\n offset.current = deltaY;\n onPullProgress(deltaY);\n }\n }\n }\n });\n usePointerEvents(subscribeSensors, onPointerDown, onPointerMove, onPointerUp);\n}\n\nfunction usePreventWheelDefaults({ preventDefaultWheelX, preventDefaultWheelY, }) {\n const ref = React.useRef(null);\n const listener = useEventCallback((event) => {\n const horizontal = Math.abs(event.deltaX) > Math.abs(event.deltaY);\n if ((horizontal && preventDefaultWheelX) || (!horizontal && preventDefaultWheelY) || event.ctrlKey) {\n event.preventDefault();\n }\n });\n return React.useCallback((node) => {\n var _a;\n if (node) {\n node.addEventListener(\"wheel\", listener, { passive: false });\n }\n else {\n (_a = ref.current) === null || _a === void 0 ? void 0 : _a.removeEventListener(\"wheel\", listener);\n }\n ref.current = node;\n }, [listener]);\n}\n\nfunction useWheelSwipe(swipeState, subscribeSensors, isSwipeValid, containerWidth, swipeAnimationDuration, onSwipeStart, onSwipeProgress, onSwipeFinish, onSwipeCancel) {\n const offset = React.useRef(0);\n const intent = React.useRef(0);\n const intentCleanup = React.useRef();\n const resetCleanup = React.useRef();\n const wheelInertia = React.useRef(0);\n const wheelInertiaCleanup = React.useRef();\n const startTime = React.useRef(0);\n const { setTimeout, clearTimeout } = useTimeouts();\n const cancelSwipeIntentCleanup = React.useCallback(() => {\n if (intentCleanup.current) {\n clearTimeout(intentCleanup.current);\n intentCleanup.current = undefined;\n }\n }, [clearTimeout]);\n const cancelSwipeResetCleanup = React.useCallback(() => {\n if (resetCleanup.current) {\n clearTimeout(resetCleanup.current);\n resetCleanup.current = undefined;\n }\n }, [clearTimeout]);\n const handleCleanup = useEventCallback(() => {\n if (swipeState !== SwipeState.SWIPE) {\n offset.current = 0;\n startTime.current = 0;\n cancelSwipeIntentCleanup();\n cancelSwipeResetCleanup();\n }\n });\n React.useEffect(handleCleanup, [swipeState, handleCleanup]);\n const handleCancelSwipe = useEventCallback((currentSwipeOffset) => {\n resetCleanup.current = undefined;\n if (offset.current === currentSwipeOffset) {\n onSwipeCancel(offset.current);\n }\n });\n const onWheel = useEventCallback((event) => {\n if (event.ctrlKey) {\n return;\n }\n if (Math.abs(event.deltaY) > Math.abs(event.deltaX)) {\n return;\n }\n const setWheelInertia = (inertia) => {\n wheelInertia.current = inertia;\n clearTimeout(wheelInertiaCleanup.current);\n wheelInertiaCleanup.current =\n inertia > 0\n ? setTimeout(() => {\n wheelInertia.current = 0;\n wheelInertiaCleanup.current = undefined;\n }, 300)\n : undefined;\n };\n if (swipeState === SwipeState.NONE) {\n if (Math.abs(event.deltaX) <= 1.2 * Math.abs(wheelInertia.current)) {\n setWheelInertia(event.deltaX);\n return;\n }\n if (!isSwipeValid(-event.deltaX)) {\n return;\n }\n intent.current += event.deltaX;\n cancelSwipeIntentCleanup();\n if (Math.abs(intent.current) > 30) {\n intent.current = 0;\n setWheelInertia(0);\n startTime.current = Date.now();\n onSwipeStart();\n }\n else {\n const currentSwipeIntent = intent.current;\n intentCleanup.current = setTimeout(() => {\n intentCleanup.current = undefined;\n if (currentSwipeIntent === intent.current) {\n intent.current = 0;\n }\n }, swipeAnimationDuration);\n }\n }\n else if (swipeState === SwipeState.SWIPE) {\n let newSwipeOffset = offset.current - event.deltaX;\n newSwipeOffset = Math.min(Math.abs(newSwipeOffset), containerWidth) * Math.sign(newSwipeOffset);\n offset.current = newSwipeOffset;\n onSwipeProgress(newSwipeOffset);\n cancelSwipeResetCleanup();\n if (Math.abs(newSwipeOffset) > 0.2 * containerWidth) {\n setWheelInertia(event.deltaX);\n onSwipeFinish(newSwipeOffset, Date.now() - startTime.current);\n return;\n }\n resetCleanup.current = setTimeout(() => handleCancelSwipe(newSwipeOffset), 2 * swipeAnimationDuration);\n }\n else {\n setWheelInertia(event.deltaX);\n }\n });\n React.useEffect(() => subscribeSensors(EVENT_ON_WHEEL, onWheel), [subscribeSensors, onWheel]);\n}\n\nconst cssContainerPrefix = makeComposePrefix(\"container\");\nconst ControllerContext = React.createContext(null);\nconst useController = makeUseContext(\"useController\", \"ControllerContext\", ControllerContext);\nfunction Controller({ children, ...props }) {\n var _a;\n const { carousel, animation, controller, on, styles, render } = props;\n const { closeOnPullUp, closeOnPullDown, preventDefaultWheelX, preventDefaultWheelY } = controller;\n const [toolbarWidth, setToolbarWidth] = React.useState();\n const state = useLightboxState();\n const dispatch = useLightboxDispatch();\n const [swipeState, setSwipeState] = React.useState(SwipeState.NONE);\n const swipeOffset = React.useRef(0);\n const pullOffset = React.useRef(0);\n const pullOpacity = React.useRef(1);\n const { registerSensors, subscribeSensors } = useSensors();\n const { subscribe, publish } = useEvents();\n const cleanupAnimationIncrement = useDelay();\n const cleanupSwipeOffset = useDelay();\n const cleanupPullOffset = useDelay();\n const { containerRef, setContainerRef, containerRect } = useContainerRect();\n const handleContainerRef = useForkRef(usePreventWheelDefaults({ preventDefaultWheelX, preventDefaultWheelY }), setContainerRef);\n const carouselRef = React.useRef(null);\n const setCarouselRef = useForkRef(carouselRef, undefined);\n const { getOwnerDocument } = useDocumentContext();\n const isRTL = useRTL();\n const rtl = (value) => (isRTL ? -1 : 1) * (typeof value === \"number\" ? value : 1);\n const focus = useEventCallback(() => { var _a; return (_a = containerRef.current) === null || _a === void 0 ? void 0 : _a.focus(); });\n const getLightboxProps = useEventCallback(() => props);\n const getLightboxState = useEventCallback(() => state);\n const prev = React.useCallback((params) => publish(ACTION_PREV, params), [publish]);\n const next = React.useCallback((params) => publish(ACTION_NEXT, params), [publish]);\n const close = React.useCallback(() => publish(ACTION_CLOSE), [publish]);\n const isSwipeValid = (offset) => !(carousel.finite &&\n ((rtl(offset) > 0 && state.currentIndex === 0) ||\n (rtl(offset) < 0 && state.currentIndex === state.slides.length - 1)));\n const setSwipeOffset = (offset) => {\n var _a;\n swipeOffset.current = offset;\n (_a = containerRef.current) === null || _a === void 0 ? void 0 : _a.style.setProperty(cssVar(\"swipe_offset\"), `${Math.round(offset)}px`);\n };\n const setPullOffset = (offset) => {\n var _a, _b;\n pullOffset.current = offset;\n pullOpacity.current = (() => {\n const threshold = 60;\n const minOpacity = 0.5;\n const offsetValue = (() => {\n if (closeOnPullDown && offset > 0)\n return offset;\n if (closeOnPullUp && offset < 0)\n return -offset;\n return 0;\n })();\n return Math.min(Math.max(round(1 - (offsetValue / threshold) * (1 - minOpacity), 2), minOpacity), 1);\n })();\n (_a = containerRef.current) === null || _a === void 0 ? void 0 : _a.style.setProperty(cssVar(\"pull_offset\"), `${Math.round(offset)}px`);\n (_b = containerRef.current) === null || _b === void 0 ? void 0 : _b.style.setProperty(cssVar(\"pull_opacity\"), `${pullOpacity.current}`);\n };\n const { prepareAnimation: preparePullAnimation } = useAnimation(carouselRef, (snapshot, rect, translate) => {\n if (carouselRef.current && containerRect) {\n return {\n keyframes: [\n {\n transform: `translate(0, ${snapshot.rect.y - rect.y + translate.y}px)`,\n opacity: snapshot.opacity,\n },\n { transform: \"translate(0, 0)\", opacity: 1 },\n ],\n duration: snapshot.duration,\n easing: animation.easing.fade,\n };\n }\n return undefined;\n });\n const pull = (offset, cancel) => {\n if (closeOnPullUp || closeOnPullDown) {\n setPullOffset(offset);\n let duration = 0;\n if (carouselRef.current) {\n duration = animation.fade * (cancel ? 2 : 1);\n preparePullAnimation({\n rect: carouselRef.current.getBoundingClientRect(),\n opacity: pullOpacity.current,\n duration,\n });\n }\n cleanupPullOffset(() => {\n setPullOffset(0);\n setSwipeState(SwipeState.NONE);\n }, duration);\n setSwipeState(SwipeState.ANIMATION);\n if (!cancel) {\n close();\n }\n }\n };\n const { prepareAnimation, isAnimationPlaying } = useAnimation(carouselRef, (snapshot, rect, translate) => {\n var _a;\n if (carouselRef.current && containerRect && ((_a = state.animation) === null || _a === void 0 ? void 0 : _a.duration)) {\n const parsedSpacing = parseLengthPercentage(carousel.spacing);\n const spacingValue = (parsedSpacing.percent ? (parsedSpacing.percent * containerRect.width) / 100 : parsedSpacing.pixel) || 0;\n return {\n keyframes: [\n {\n transform: `translate(${rtl(state.globalIndex - snapshot.index) * (containerRect.width + spacingValue) +\n snapshot.rect.x -\n rect.x +\n translate.x}px, 0)`,\n },\n { transform: \"translate(0, 0)\" },\n ],\n duration: state.animation.duration,\n easing: state.animation.easing,\n };\n }\n return undefined;\n });\n const swipe = useEventCallback((action) => {\n var _a, _b;\n const currentSwipeOffset = action.offset || 0;\n const swipeDuration = !currentSwipeOffset ? ((_a = animation.navigation) !== null && _a !== void 0 ? _a : animation.swipe) : animation.swipe;\n const swipeEasing = !currentSwipeOffset && !isAnimationPlaying() ? animation.easing.navigation : animation.easing.swipe;\n let { direction } = action;\n const count = (_b = action.count) !== null && _b !== void 0 ? _b : 1;\n let newSwipeState = SwipeState.ANIMATION;\n let newSwipeAnimationDuration = swipeDuration * count;\n if (!direction) {\n const containerWidth = containerRect === null || containerRect === void 0 ? void 0 : containerRect.width;\n const elapsedTime = action.duration || 0;\n const expectedTime = containerWidth\n ? (swipeDuration / containerWidth) * Math.abs(currentSwipeOffset)\n : swipeDuration;\n if (count !== 0) {\n if (elapsedTime < expectedTime) {\n newSwipeAnimationDuration =\n (newSwipeAnimationDuration / expectedTime) * Math.max(elapsedTime, expectedTime / 5);\n }\n else if (containerWidth) {\n newSwipeAnimationDuration =\n (swipeDuration / containerWidth) * (containerWidth - Math.abs(currentSwipeOffset));\n }\n direction = rtl(currentSwipeOffset) > 0 ? ACTION_PREV : ACTION_NEXT;\n }\n else {\n newSwipeAnimationDuration = swipeDuration / 2;\n }\n }\n let increment = 0;\n if (direction === ACTION_PREV) {\n if (isSwipeValid(rtl(1))) {\n increment = -count;\n }\n else {\n newSwipeState = SwipeState.NONE;\n newSwipeAnimationDuration = swipeDuration;\n }\n }\n else if (direction === ACTION_NEXT) {\n if (isSwipeValid(rtl(-1))) {\n increment = count;\n }\n else {\n newSwipeState = SwipeState.NONE;\n newSwipeAnimationDuration = swipeDuration;\n }\n }\n newSwipeAnimationDuration = Math.round(newSwipeAnimationDuration);\n cleanupSwipeOffset(() => {\n setSwipeOffset(0);\n setSwipeState(SwipeState.NONE);\n }, newSwipeAnimationDuration);\n if (carouselRef.current) {\n prepareAnimation({\n rect: carouselRef.current.getBoundingClientRect(),\n index: state.globalIndex,\n });\n }\n setSwipeState(newSwipeState);\n publish(ACTION_SWIPE, {\n type: \"swipe\",\n increment,\n duration: newSwipeAnimationDuration,\n easing: swipeEasing,\n });\n });\n React.useEffect(() => {\n var _a, _b;\n if (((_a = state.animation) === null || _a === void 0 ? void 0 : _a.increment) && ((_b = state.animation) === null || _b === void 0 ? void 0 : _b.duration)) {\n cleanupAnimationIncrement(() => dispatch({ type: \"swipe\", increment: 0 }), state.animation.duration);\n }\n }, [state.animation, dispatch, cleanupAnimationIncrement]);\n const swipeParams = [\n subscribeSensors,\n isSwipeValid,\n (containerRect === null || containerRect === void 0 ? void 0 : containerRect.width) || 0,\n animation.swipe,\n () => setSwipeState(SwipeState.SWIPE),\n (offset) => setSwipeOffset(offset),\n (offset, duration) => swipe({ offset, duration, count: 1 }),\n (offset) => swipe({ offset, count: 0 }),\n ];\n const pullParams = [\n () => {\n if (closeOnPullDown) {\n setSwipeState(SwipeState.PULL);\n }\n },\n (offset) => setPullOffset(offset),\n (offset) => pull(offset),\n (offset) => pull(offset, true),\n ];\n usePointerSwipe(...swipeParams, closeOnPullUp, closeOnPullDown, ...pullParams);\n useWheelSwipe(swipeState, ...swipeParams);\n const focusOnMount = useEventCallback(() => {\n if (controller.focus &&\n getOwnerDocument().querySelector(`.${cssClass(MODULE_PORTAL)} .${cssClass(cssContainerPrefix())}`)) {\n focus();\n }\n });\n React.useEffect(focusOnMount, [focusOnMount]);\n const onViewCallback = useEventCallback(() => {\n var _a;\n (_a = on.view) === null || _a === void 0 ? void 0 : _a.call(on, { index: state.currentIndex });\n });\n React.useEffect(onViewCallback, [state.globalIndex, onViewCallback]);\n React.useEffect(() => cleanup(subscribe(ACTION_PREV, (action) => swipe({ direction: ACTION_PREV, ...action })), subscribe(ACTION_NEXT, (action) => swipe({ direction: ACTION_NEXT, ...action })), subscribe(ACTION_SWIPE, (action) => dispatch(action))), [subscribe, swipe, dispatch]);\n const context = React.useMemo(() => ({\n prev,\n next,\n close,\n focus,\n slideRect: containerRect ? computeSlideRect(containerRect, carousel.padding) : { width: 0, height: 0 },\n containerRect: containerRect || { width: 0, height: 0 },\n subscribeSensors,\n containerRef,\n setCarouselRef,\n toolbarWidth,\n setToolbarWidth,\n }), [\n prev,\n next,\n close,\n focus,\n subscribeSensors,\n containerRect,\n containerRef,\n setCarouselRef,\n toolbarWidth,\n setToolbarWidth,\n carousel.padding,\n ]);\n React.useImperativeHandle(controller.ref, () => ({\n prev,\n next,\n close,\n focus,\n getLightboxProps,\n getLightboxState,\n }), [prev, next, close, focus, getLightboxProps, getLightboxState]);\n return (React.createElement(\"div\", { ref: handleContainerRef, className: clsx(cssClass(cssContainerPrefix()), cssClass(CLASS_FLEX_CENTER)), style: {\n ...(swipeState === SwipeState.SWIPE\n ? { [cssVar(\"swipe_offset\")]: `${Math.round(swipeOffset.current)}px` }\n : null),\n ...(swipeState === SwipeState.PULL\n ? {\n [cssVar(\"pull_offset\")]: `${Math.round(pullOffset.current)}px`,\n [cssVar(\"pull_opacity\")]: `${pullOpacity.current}`,\n }\n : null),\n ...(controller.touchAction !== \"none\" ? { [cssVar(\"controller_touch_action\")]: controller.touchAction } : null),\n ...styles.container,\n }, ...(controller.aria ? { role: \"presentation\", \"aria-live\": \"polite\" } : null), tabIndex: -1, ...registerSensors }, containerRect && (React.createElement(ControllerContext.Provider, { value: context },\n children, (_a = render.controls) === null || _a === void 0 ? void 0 :\n _a.call(render)))));\n}\nconst ControllerModule = createModule(MODULE_CONTROLLER, Controller);\n\nfunction cssPrefix$2(value) {\n return composePrefix(MODULE_CAROUSEL, value);\n}\nfunction cssSlidePrefix(value) {\n return composePrefix(\"slide\", value);\n}\nfunction CarouselSlide({ slide, offset }) {\n const containerRef = React.useRef(null);\n const { currentIndex } = useLightboxState();\n const { slideRect, close, focus } = useController();\n const { render, carousel: { imageFit, imageProps }, on: { click: onClick }, controller: { closeOnBackdropClick }, styles: { slide: style }, } = useLightboxProps();\n const { getOwnerDocument } = useDocumentContext();\n const offscreen = offset !== 0;\n React.useEffect(() => {\n var _a;\n if (offscreen && ((_a = containerRef.current) === null || _a === void 0 ? void 0 : _a.contains(getOwnerDocument().activeElement))) {\n focus();\n }\n }, [offscreen, focus, getOwnerDocument]);\n const renderSlide = () => {\n var _a, _b, _c, _d;\n let rendered = (_a = render.slide) === null || _a === void 0 ? void 0 : _a.call(render, { slide, offset, rect: slideRect });\n if (!rendered && isImageSlide(slide)) {\n rendered = (React.createElement(ImageSlide, { slide: slide, offset: offset, render: render, rect: slideRect, imageFit: imageFit, imageProps: imageProps, onClick: !offscreen ? () => onClick === null || onClick === void 0 ? void 0 : onClick({ index: currentIndex }) : undefined }));\n }\n return rendered ? (React.createElement(React.Fragment, null, (_b = render.slideHeader) === null || _b === void 0 ? void 0 :\n _b.call(render, { slide }),\n ((_c = render.slideContainer) !== null && _c !== void 0 ? _c : (({ children }) => children))({ slide, children: rendered }), (_d = render.slideFooter) === null || _d === void 0 ? void 0 :\n _d.call(render, { slide }))) : null;\n };\n const handleBackdropClick = (event) => {\n const container = containerRef.current;\n const target = event.target instanceof HTMLElement ? event.target : undefined;\n if (closeOnBackdropClick &&\n target &&\n container &&\n (target === container ||\n (Array.from(container.children).find((x) => x === target) &&\n target.classList.contains(cssClass(CLASS_SLIDE_WRAPPER))))) {\n close();\n }\n };\n return (React.createElement(\"div\", { ref: containerRef, className: clsx(cssClass(cssSlidePrefix()), !offscreen && cssClass(cssSlidePrefix(\"current\")), cssClass(CLASS_FLEX_CENTER)), ...makeInertWhen(offscreen), onClick: handleBackdropClick, style: style }, renderSlide()));\n}\nfunction Placeholder() {\n const style = useLightboxProps().styles.slide;\n return React.createElement(\"div\", { className: cssClass(\"slide\"), style: style });\n}\nfunction Carousel({ carousel }) {\n const { slides, currentIndex, globalIndex } = useLightboxState();\n const { setCarouselRef } = useController();\n const spacingValue = parseLengthPercentage(carousel.spacing);\n const paddingValue = parseLengthPercentage(carousel.padding);\n const preload = calculatePreload(carousel, slides, 1);\n const items = [];\n if (hasSlides(slides)) {\n for (let index = currentIndex - preload; index <= currentIndex + preload; index += 1) {\n const slide = getSlide(slides, index);\n const key = globalIndex - currentIndex + index;\n const placeholder = carousel.finite && (index < 0 || index > slides.length - 1);\n items.push(!placeholder\n ? {\n key: [`${key}`, getSlideKey(slide)].filter(Boolean).join(\"|\"),\n offset: index - currentIndex,\n slide,\n }\n : { key });\n }\n }\n return (React.createElement(\"div\", { ref: setCarouselRef, className: clsx(cssClass(cssPrefix$2()), items.length > 0 && cssClass(cssPrefix$2(\"with_slides\"))), style: {\n [`${cssVar(cssPrefix$2(\"slides_count\"))}`]: items.length,\n [`${cssVar(cssPrefix$2(\"spacing_px\"))}`]: spacingValue.pixel || 0,\n [`${cssVar(cssPrefix$2(\"spacing_percent\"))}`]: spacingValue.percent || 0,\n [`${cssVar(cssPrefix$2(\"padding_px\"))}`]: paddingValue.pixel || 0,\n [`${cssVar(cssPrefix$2(\"padding_percent\"))}`]: paddingValue.percent || 0,\n } }, items.map(({ key, slide, offset }) => slide ? React.createElement(CarouselSlide, { key: key, slide: slide, offset: offset }) : React.createElement(Placeholder, { key: key }))));\n}\nconst CarouselModule = createModule(MODULE_CAROUSEL, Carousel);\n\nfunction useNavigationState() {\n const { carousel } = useLightboxProps();\n const { slides, currentIndex } = useLightboxState();\n const prevDisabled = slides.length === 0 || (carousel.finite && currentIndex === 0);\n const nextDisabled = slides.length === 0 || (carousel.finite && currentIndex === slides.length - 1);\n return { prevDisabled, nextDisabled };\n}\n\nfunction useKeyboardNavigation(subscribeSensors) {\n var _a;\n const isRTL = useRTL();\n const { publish } = useEvents();\n const { animation } = useLightboxProps();\n const { prevDisabled, nextDisabled } = useNavigationState();\n const throttle = ((_a = animation.navigation) !== null && _a !== void 0 ? _a : animation.swipe) / 2;\n const prev = useThrottle(() => publish(ACTION_PREV), throttle);\n const next = useThrottle(() => publish(ACTION_NEXT), throttle);\n const handleKeyDown = useEventCallback((event) => {\n switch (event.key) {\n case VK_ESCAPE:\n publish(ACTION_CLOSE);\n break;\n case VK_ARROW_LEFT:\n if (!(isRTL ? nextDisabled : prevDisabled))\n (isRTL ? next : prev)();\n break;\n case VK_ARROW_RIGHT:\n if (!(isRTL ? prevDisabled : nextDisabled))\n (isRTL ? prev : next)();\n break;\n default:\n }\n });\n React.useEffect(() => subscribeSensors(EVENT_ON_KEY_DOWN, handleKeyDown), [subscribeSensors, handleKeyDown]);\n}\n\nfunction NavigationButton({ label, icon, renderIcon, action, onClick, disabled, style }) {\n return (React.createElement(IconButton, { label: label, icon: icon, renderIcon: renderIcon, className: cssClass(`navigation_${action}`), disabled: disabled, onClick: onClick, style: style, ...useLoseFocus(useController().focus, disabled) }));\n}\nfunction Navigation({ render: { buttonPrev, buttonNext, iconPrev, iconNext }, styles }) {\n const { prev, next, subscribeSensors } = useController();\n const { prevDisabled, nextDisabled } = useNavigationState();\n useKeyboardNavigation(subscribeSensors);\n return (React.createElement(React.Fragment, null,\n buttonPrev ? (buttonPrev()) : (React.createElement(NavigationButton, { label: \"Previous\", action: ACTION_PREV, icon: PreviousIcon, renderIcon: iconPrev, style: styles.navigationPrev, disabled: prevDisabled, onClick: prev })),\n buttonNext ? (buttonNext()) : (React.createElement(NavigationButton, { label: \"Next\", action: ACTION_NEXT, icon: NextIcon, renderIcon: iconNext, style: styles.navigationNext, disabled: nextDisabled, onClick: next }))));\n}\nconst NavigationModule = createModule(MODULE_NAVIGATION, Navigation);\n\nconst noScroll = cssClass(CLASS_NO_SCROLL);\nconst noScrollPadding = cssClass(CLASS_NO_SCROLL_PADDING);\nfunction isHTMLElement(element) {\n return \"style\" in element;\n}\nfunction padScrollbar(element, padding, rtl) {\n const styles = window.getComputedStyle(element);\n const property = rtl ? \"padding-left\" : \"padding-right\";\n const computedValue = rtl ? styles.paddingLeft : styles.paddingRight;\n const originalValue = element.style.getPropertyValue(property);\n element.style.setProperty(property, `${(parseInt(computedValue) || 0) + padding}px`);\n return () => {\n if (originalValue) {\n element.style.setProperty(property, originalValue);\n }\n else {\n element.style.removeProperty(property);\n }\n };\n}\nfunction NoScroll({ noScroll: { disabled }, children }) {\n const rtl = useRTL();\n const { getOwnerDocument, getOwnerWindow } = useDocumentContext();\n React.useEffect(() => {\n if (disabled)\n return () => { };\n const cleanup = [];\n const ownerWindow = getOwnerWindow();\n const { body, documentElement } = getOwnerDocument();\n const scrollbar = Math.round(ownerWindow.innerWidth - documentElement.clientWidth);\n if (scrollbar > 0) {\n cleanup.push(padScrollbar(body, scrollbar, rtl));\n const elements = body.getElementsByTagName(\"*\");\n for (let i = 0; i < elements.length; i += 1) {\n const element = elements[i];\n if (isHTMLElement(element) &&\n ownerWindow.getComputedStyle(element).getPropertyValue(\"position\") === \"fixed\" &&\n !element.classList.contains(noScrollPadding)) {\n cleanup.push(padScrollbar(element, scrollbar, rtl));\n }\n }\n }\n body.classList.add(noScroll);\n return () => {\n body.classList.remove(noScroll);\n cleanup.forEach((clean) => clean());\n };\n }, [rtl, disabled, getOwnerDocument, getOwnerWindow]);\n return React.createElement(React.Fragment, null, children);\n}\nconst NoScrollModule = createModule(MODULE_NO_SCROLL, NoScroll);\n\nfunction cssPrefix$1(value) {\n return composePrefix(MODULE_PORTAL, value);\n}\nfunction setAttribute(element, attribute, value) {\n const previousValue = element.getAttribute(attribute);\n element.setAttribute(attribute, value);\n return () => {\n if (previousValue) {\n element.setAttribute(attribute, previousValue);\n }\n else {\n element.removeAttribute(attribute);\n }\n };\n}\nfunction Portal({ children, animation, styles, className, on, portal, close }) {\n const [mounted, setMounted] = React.useState(false);\n const [visible, setVisible] = React.useState(false);\n const cleanup = React.useRef([]);\n const restoreFocus = React.useRef(null);\n const { setTimeout } = useTimeouts();\n const { subscribe } = useEvents();\n const reduceMotion = useMotionPreference();\n const animationDuration = !reduceMotion ? animation.fade : 0;\n React.useEffect(() => {\n setMounted(true);\n return () => {\n setMounted(false);\n setVisible(false);\n };\n }, []);\n const handleCleanup = useEventCallback(() => {\n cleanup.current.forEach((clean) => clean());\n cleanup.current = [];\n });\n const handleClose = useEventCallback(() => {\n var _a;\n setVisible(false);\n handleCleanup();\n (_a = on.exiting) === null || _a === void 0 ? void 0 : _a.call(on);\n setTimeout(() => {\n var _a;\n (_a = on.exited) === null || _a === void 0 ? void 0 : _a.call(on);\n close();\n }, animationDuration);\n });\n React.useEffect(() => subscribe(ACTION_CLOSE, handleClose), [subscribe, handleClose]);\n const handleEnter = useEventCallback((node) => {\n var _a, _b, _c;\n node.scrollTop;\n setVisible(true);\n (_a = on.entering) === null || _a === void 0 ? void 0 : _a.call(on);\n const elements = (_c = (_b = node.parentNode) === null || _b === void 0 ? void 0 : _b.children) !== null && _c !== void 0 ? _c : [];\n for (let i = 0; i < elements.length; i += 1) {\n const element = elements[i];\n if ([\"TEMPLATE\", \"SCRIPT\", \"STYLE\"].indexOf(element.tagName) === -1 && element !== node) {\n cleanup.current.push(setAttribute(element, \"inert\", \"\"));\n cleanup.current.push(setAttribute(element, \"aria-hidden\", \"true\"));\n }\n }\n cleanup.current.push(() => {\n var _a, _b;\n (_b = (_a = restoreFocus.current) === null || _a === void 0 ? void 0 : _a.focus) === null || _b === void 0 ? void 0 : _b.call(_a);\n });\n setTimeout(() => {\n var _a;\n (_a = on.entered) === null || _a === void 0 ? void 0 : _a.call(on);\n }, animationDuration);\n });\n const handleRef = React.useCallback((node) => {\n if (node) {\n handleEnter(node);\n }\n else {\n handleCleanup();\n }\n }, [handleEnter, handleCleanup]);\n return mounted\n ? createPortal(React.createElement(LightboxRoot, { ref: handleRef, className: clsx(className, cssClass(cssPrefix$1()), cssClass(CLASS_NO_SCROLL_PADDING), visible && cssClass(cssPrefix$1(\"open\"))), role: \"presentation\", \"aria-live\": \"polite\", style: {\n ...(animation.fade !== LightboxDefaultProps.animation.fade\n ? { [cssVar(\"fade_animation_duration\")]: `${animationDuration}ms` }\n : null),\n ...(animation.easing.fade !== LightboxDefaultProps.animation.easing.fade\n ? { [cssVar(\"fade_animation_timing_function\")]: animation.easing.fade }\n : null),\n ...styles.root,\n }, onFocus: (event) => {\n if (!restoreFocus.current) {\n restoreFocus.current = event.relatedTarget;\n }\n } }, children), portal.root || document.body)\n : null;\n}\nconst PortalModule = createModule(MODULE_PORTAL, Portal);\n\nfunction Root({ children }) {\n return React.createElement(React.Fragment, null, children);\n}\nconst RootModule = createModule(MODULE_ROOT, Root);\n\nfunction cssPrefix(value) {\n return composePrefix(MODULE_TOOLBAR, value);\n}\nfunction Toolbar({ toolbar: { buttons }, render: { buttonClose, iconClose }, styles }) {\n const { close, setToolbarWidth } = useController();\n const { setContainerRef, containerRect } = useContainerRect();\n useLayoutEffect(() => {\n setToolbarWidth(containerRect === null || containerRect === void 0 ? void 0 : containerRect.width);\n }, [setToolbarWidth, containerRect === null || containerRect === void 0 ? void 0 : containerRect.width]);\n const renderCloseButton = () => {\n if (buttonClose)\n return buttonClose();\n return React.createElement(IconButton, { key: ACTION_CLOSE, label: \"Close\", icon: CloseIcon, renderIcon: iconClose, onClick: close });\n };\n return (React.createElement(\"div\", { ref: setContainerRef, style: styles.toolbar, className: cssClass(cssPrefix()) }, buttons === null || buttons === void 0 ? void 0 : buttons.map((button) => (button === ACTION_CLOSE ? renderCloseButton() : button))));\n}\nconst ToolbarModule = createModule(MODULE_TOOLBAR, Toolbar);\n\nfunction renderNode(node, props) {\n var _a;\n return React.createElement(node.module.component, { key: node.module.name, ...props }, (_a = node.children) === null || _a === void 0 ? void 0 : _a.map((child) => renderNode(child, props)));\n}\nfunction mergeAnimation(defaultAnimation, animation = {}) {\n const { easing: defaultAnimationEasing, ...restDefaultAnimation } = defaultAnimation;\n const { easing, ...restAnimation } = animation;\n return {\n easing: { ...defaultAnimationEasing, ...easing },\n ...restDefaultAnimation,\n ...restAnimation,\n };\n}\nfunction Lightbox({ carousel, animation, render, toolbar, controller, noScroll, on, plugins, slides, index, ...restProps }) {\n const { animation: defaultAnimation, carousel: defaultCarousel, render: defaultRender, toolbar: defaultToolbar, controller: defaultController, noScroll: defaultNoScroll, on: defaultOn, slides: defaultSlides, index: defaultIndex, plugins: defaultPlugins, ...restDefaultProps } = LightboxDefaultProps;\n const { config, augmentation } = withPlugins([\n createNode(PortalModule, [\n createNode(NoScrollModule, [\n createNode(ControllerModule, [\n createNode(CarouselModule),\n createNode(ToolbarModule),\n createNode(NavigationModule),\n ]),\n ]),\n ]),\n ], plugins || defaultPlugins);\n const props = augmentation({\n animation: mergeAnimation(defaultAnimation, animation),\n carousel: { ...defaultCarousel, ...carousel },\n render: { ...defaultRender, ...render },\n toolbar: { ...defaultToolbar, ...toolbar },\n controller: { ...defaultController, ...controller },\n noScroll: { ...defaultNoScroll, ...noScroll },\n on: { ...defaultOn, ...on },\n ...restDefaultProps,\n ...restProps,\n });\n if (!props.open)\n return null;\n return (React.createElement(LightboxPropsProvider, { ...props },\n React.createElement(LightboxStateProvider, { slides: slides || defaultSlides, index: parseInt(index || defaultIndex) },\n React.createElement(TimeoutsProvider, null,\n React.createElement(EventsProvider, null, renderNode(createNode(RootModule, config), props))))));\n}\n\nexport { 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, DocumentContext, DocumentContextProvider, 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, LightboxRoot, 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, makeInertWhen, makeUseContext, parseInt, parseLengthPercentage, round, setRef, stopNavigationEventsPropagation, useAnimation, useContainerRect, useController, useDelay, useDocumentContext, useEventCallback, useEvents, useForkRef, useKeyboardNavigation, useLayoutEffect, useLightboxDispatch, useLightboxProps, useLightboxState, useLoseFocus, useMotionPreference, useNavigationState, usePointerEvents, usePointerSwipe, usePreventWheelDefaults, useRTL, useSensors, useThrottle, useTimeouts, useWheelSwipe, withPlugins };","import * as React from 'react';\nimport { useLightboxProps, useEvents, useContainerRect, useEventCallback, clsx, cssClass } from '../../index.js';\nimport { ACTIVE_SLIDE_LOADING, CLASS_FLEX_CENTER, CLASS_SLIDE_WRAPPER, ACTIVE_SLIDE_PLAYING, ACTIVE_SLIDE_COMPLETE } from '../../types.js';\n\nconst defaultVideoProps = {\n controls: true,\n playsInline: true,\n};\nconst resolveVideoProps = (video) => ({\n ...defaultVideoProps,\n ...video,\n});\nfunction useVideoProps() {\n const { video } = useLightboxProps();\n return resolveVideoProps(video);\n}\n\nfunction VideoSlide({ slide, offset }) {\n const video = useVideoProps();\n const { publish } = useEvents();\n const { setContainerRef, containerRect } = useContainerRect();\n const videoRef = React.useRef(null);\n React.useEffect(() => {\n if (offset !== 0 && videoRef.current && !videoRef.current.paused) {\n videoRef.current.pause();\n }\n }, [offset]);\n React.useEffect(() => {\n if (offset === 0 && videoRef.current && (slide.autoPlay || video.autoPlay)) {\n publish(ACTIVE_SLIDE_LOADING);\n videoRef.current.play().catch(() => { });\n }\n }, [offset, video.autoPlay, slide.autoPlay, publish]);\n const handleVideoRef = useEventCallback((node) => {\n if (offset === 0 && (video.autoPlay || slide.autoPlay) && node.paused) {\n node.play().catch(() => { });\n }\n });\n const setVideoRef = React.useCallback((node) => {\n videoRef.current = node;\n if (node) {\n handleVideoRef(node);\n }\n }, [handleVideoRef]);\n const { width, height, poster, sources } = slide;\n const scaleWidthAndHeight = () => {\n const scalingProps = {};\n scalingProps.style = { maxWidth: \"100%\", maxHeight: \"100%\" };\n if (width && height && containerRect) {\n const widthBound = width / height > containerRect.width / containerRect.height;\n const elementWidth = widthBound ? containerRect.width : Math.round((containerRect.height / height) * width);\n const elementHeight = !widthBound ? containerRect.height : Math.round((containerRect.width / width) * height);\n scalingProps.width = elementWidth;\n scalingProps.height = elementHeight;\n scalingProps.style.width = elementWidth;\n scalingProps.style.height = elementHeight;\n }\n return scalingProps;\n };\n const resolveBoolean = (attr) => {\n if (slide[attr] === false)\n return null;\n if (slide[attr] === true)\n return { [attr]: true };\n if (video[attr] === false)\n return null;\n if (video[attr] === true)\n return { [attr]: true };\n return null;\n };\n const resolveString = (attr) => {\n if (video[attr] || slide[attr]) {\n return { [attr]: slide[attr] || video[attr] };\n }\n return null;\n };\n return (React.createElement(React.Fragment, null, sources && (React.createElement(\"div\", { ref: setContainerRef, style: {\n width: \"100%\",\n height: \"100%\",\n ...(width ? { maxWidth: `${width}px` } : null),\n }, className: clsx(cssClass(\"video_container\"), cssClass(CLASS_FLEX_CENTER), cssClass(CLASS_SLIDE_WRAPPER)) }, containerRect && (React.createElement(\"video\", { ref: setVideoRef, poster: poster, ...scaleWidthAndHeight(), ...resolveBoolean(\"controls\"), ...resolveBoolean(\"playsInline\"), ...resolveBoolean(\"loop\"), ...resolveBoolean(\"muted\"), ...resolveBoolean(\"playsInline\"), ...resolveBoolean(\"disablePictureInPicture\"), ...resolveBoolean(\"disableRemotePlayback\"), ...resolveString(\"controlsList\"), ...resolveString(\"crossOrigin\"), ...resolveString(\"preload\"), onPlay: () => {\n var _a;\n if (offset !== 0) {\n (_a = videoRef.current) === null || _a === void 0 ? void 0 : _a.pause();\n return;\n }\n publish(ACTIVE_SLIDE_PLAYING);\n }, onEnded: () => {\n publish(ACTIVE_SLIDE_COMPLETE);\n } }, sources.map(({ src, type, media }) => (React.createElement(\"source\", { key: [src, type, media].filter(Boolean).join(\"|\"), src: src, type: type, media: media })))))))));\n}\n\nfunction isVideoSlide(slide) {\n return slide.type === \"video\";\n}\nfunction Video({ augment }) {\n augment(({ render: { slide: renderSlide, ...restRender }, video, ...restProps }) => ({\n render: {\n slide: ({ slide, offset, rect }) => {\n var _a;\n 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 }));\n },\n ...restRender,\n },\n video: resolveVideoProps(video),\n ...restProps,\n }));\n}\n\nexport { Video as default };\n","import * as React from 'react';\nimport { useLightboxProps, composePrefix, createIcon, ImageSlide, isImageSlide, cssClass, makeComposePrefix, useDocumentContext, useEventCallback, clsx, cssVar, getSlideKey, useRTL, useEvents, useLightboxState, useSensors, useKeyboardNavigation, useAnimation, cleanup, calculatePreload, hasSlides, getSlide, makeUseContext, LightboxPropsProvider, createIconDisabled, IconButton, addToolbarButton, createModule } from '../../index.js';\nimport { PLUGIN_THUMBNAILS, ELEMENT_ICON, CLASS_FLEX_CENTER, ACTION_SWIPE, ACTION_NEXT, ACTION_PREV, PLUGIN_FULLSCREEN, MODULE_CONTROLLER } from '../../types.js';\n\nconst defaultThumbnailsProps = {\n ref: null,\n position: \"bottom\",\n width: 120,\n height: 80,\n border: 1,\n borderRadius: 4,\n padding: 4,\n gap: 16,\n imageFit: \"contain\",\n vignette: true,\n hidden: false,\n showToggle: false,\n};\nconst resolveThumbnailsProps = (thumbnails) => ({\n ...defaultThumbnailsProps,\n ...thumbnails,\n});\nfunction useThumbnailsProps() {\n const { thumbnails } = useLightboxProps();\n return resolveThumbnailsProps(thumbnails);\n}\n\nconst cssPrefix = (value) => composePrefix(PLUGIN_THUMBNAILS, value);\nconst cssThumbnailPrefix = (value) => cssPrefix(composePrefix(\"thumbnail\", value));\n\nconst VideoThumbnailIcon = createIcon(\"VideoThumbnail\", React.createElement(\"path\", { d: \"M10 16.5l6-4.5-6-4.5v9zM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\" }));\nconst UnknownThumbnailIcon = createIcon(\"UnknownThumbnail\", React.createElement(\"path\", { d: \"M23 18V6c0-1.1-.9-2-2-2H3c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2zM8.5 12.5l2.5 3.01L14.5 11l4.5 6H5l3.5-4.5z\" }));\nfunction renderThumbnail({ slide, render, rect, imageFit }) {\n var _a;\n const customThumbnail = (_a = render.thumbnail) === null || _a === void 0 ? void 0 : _a.call(render, { slide, render, rect, imageFit });\n if (customThumbnail) {\n return customThumbnail;\n }\n const imageSlideProps = { render, rect, imageFit };\n if (slide.thumbnail) {\n return React.createElement(ImageSlide, { slide: { src: slide.thumbnail }, ...imageSlideProps });\n }\n if (isImageSlide(slide)) {\n return React.createElement(ImageSlide, { slide: slide, ...imageSlideProps });\n }\n const thumbnailIconClass = cssClass(cssThumbnailPrefix(ELEMENT_ICON));\n if (slide.type === \"video\") {\n return (React.createElement(React.Fragment, null,\n slide.poster && React.createElement(ImageSlide, { slide: { src: slide.poster }, ...imageSlideProps }),\n React.createElement(VideoThumbnailIcon, { className: thumbnailIconClass })));\n }\n return React.createElement(UnknownThumbnailIcon, { className: thumbnailIconClass });\n}\nconst activePrefix = makeComposePrefix(\"active\");\nconst fadeInPrefix = makeComposePrefix(\"fadein\");\nconst fadeOutPrefix = makeComposePrefix(\"fadeout\");\nconst placeholderPrefix = makeComposePrefix(\"placeholder\");\nconst DELAY = \"delay\";\nconst DURATION = \"duration\";\nfunction Thumbnail({ slide, onClick, active, fadeIn, fadeOut, placeholder, onLoseFocus }) {\n const ref = React.useRef(null);\n const { render, styles } = useLightboxProps();\n const { getOwnerDocument } = useDocumentContext();\n const { width, height, imageFit } = useThumbnailsProps();\n const rect = { width, height };\n const onLoseFocusCallback = useEventCallback(onLoseFocus);\n React.useEffect(() => {\n if (fadeOut && getOwnerDocument().activeElement === ref.current) {\n onLoseFocusCallback();\n }\n }, [fadeOut, onLoseFocusCallback, getOwnerDocument]);\n return (React.createElement(\"button\", { ref: ref, type: \"button\", className: clsx(cssClass(CLASS_FLEX_CENTER), cssClass(cssThumbnailPrefix()), active && cssClass(cssThumbnailPrefix(activePrefix())), fadeIn && cssClass(cssThumbnailPrefix(fadeInPrefix())), fadeOut && cssClass(cssThumbnailPrefix(fadeOutPrefix())), placeholder && cssClass(cssThumbnailPrefix(placeholderPrefix()))), style: {\n ...(fadeIn\n ? {\n [cssVar(cssThumbnailPrefix(fadeInPrefix(DURATION)))]: `${fadeIn.duration}ms`,\n [cssVar(cssThumbnailPrefix(fadeInPrefix(DELAY)))]: `${fadeIn.delay}ms`,\n }\n : null),\n ...(fadeOut\n ? {\n [cssVar(cssThumbnailPrefix(fadeOutPrefix(DURATION)))]: `${fadeOut.duration}ms`,\n [cssVar(cssThumbnailPrefix(fadeOutPrefix(DELAY)))]: `${fadeOut.delay}ms`,\n }\n : null),\n ...styles.thumbnail,\n }, onClick: onClick }, slide && renderThumbnail({ slide, render, rect, imageFit })));\n}\n\nfunction isHorizontal(position) {\n return [\"top\", \"bottom\"].includes(position);\n}\nfunction boxSize(thumbnails, dimension) {\n return dimension + 2 * (thumbnails.border + thumbnails.padding) + thumbnails.gap;\n}\nfunction getThumbnailKey(slide) {\n const { thumbnail, poster } = slide || { thumbnail: \"placeholder\" };\n return ((typeof thumbnail === \"string\" && thumbnail) ||\n (typeof poster === \"string\" && poster) ||\n (slide && getSlideKey(slide)) ||\n undefined);\n}\nfunction ThumbnailsTrack({ visible, containerRef }) {\n const track = React.useRef(null);\n const isRTL = useRTL();\n const { publish, subscribe } = useEvents();\n const { carousel, styles } = useLightboxProps();\n const { slides, globalIndex, animation } = useLightboxState();\n const { registerSensors, subscribeSensors } = useSensors();\n useKeyboardNavigation(subscribeSensors);\n const thumbnails = useThumbnailsProps();\n const { position, width, height, border, borderStyle, borderColor, borderRadius, padding, gap, vignette } = thumbnails;\n const animationDuration = (animation === null || animation === void 0 ? void 0 : animation.duration) || 0;\n const offset = (animationDuration > 0 && (animation === null || animation === void 0 ? void 0 : animation.increment)) || 0;\n const { prepareAnimation } = useAnimation(track, (snapshot) => ({\n keyframes: isHorizontal(position)\n ? [\n {\n transform: `translateX(${(isRTL ? -1 : 1) * boxSize(thumbnails, width) * offset + snapshot}px)`,\n },\n { transform: \"translateX(0)\" },\n ]\n : [\n {\n transform: `translateY(${boxSize(thumbnails, height) * offset + snapshot}px)`,\n },\n { transform: \"translateY(0)\" },\n ],\n duration: animationDuration,\n easing: animation === null || animation === void 0 ? void 0 : animation.easing,\n }));\n const handleControllerSwipe = useEventCallback(() => {\n let animationOffset = 0;\n if (containerRef.current && track.current) {\n const containerRect = containerRef.current.getBoundingClientRect();\n const trackRect = track.current.getBoundingClientRect();\n animationOffset = isHorizontal(position)\n ? trackRect.left - containerRect.left - (containerRect.width - trackRect.width) / 2\n : trackRect.top - containerRect.top - (containerRect.height - trackRect.height) / 2;\n }\n prepareAnimation(animationOffset);\n });\n React.useEffect(() => cleanup(subscribe(ACTION_SWIPE, handleControllerSwipe)), [subscribe, handleControllerSwipe]);\n const preload = calculatePreload(carousel, slides);\n const items = [];\n if (hasSlides(slides)) {\n for (let index = globalIndex - preload - Math.abs(offset); index <= globalIndex + preload + Math.abs(offset); index += 1) {\n const placeholder = (carousel.finite && (index < 0 || index > slides.length - 1)) ||\n (offset < 0 && index < globalIndex - preload) ||\n (offset > 0 && index > globalIndex + preload);\n const slide = !placeholder ? getSlide(slides, index) : null;\n const key = [`${index}`, getThumbnailKey(slide)].filter(Boolean).join(\"|\");\n items.push({ key, index, slide });\n }\n }\n const handleClick = (slideIndex) => () => {\n if (slideIndex > globalIndex) {\n publish(ACTION_NEXT, { count: slideIndex - globalIndex });\n }\n else if (slideIndex < globalIndex) {\n publish(ACTION_PREV, { count: globalIndex - slideIndex });\n }\n };\n return (React.createElement(\"div\", { className: clsx(cssClass(cssPrefix(\"container\")), cssClass(CLASS_FLEX_CENTER)), style: {\n ...(!visible ? { display: \"none\" } : null),\n ...(width !== defaultThumbnailsProps.width ? { [cssVar(cssThumbnailPrefix(\"width\"))]: `${width}px` } : null),\n ...(height !== defaultThumbnailsProps.height\n ? { [cssVar(cssThumbnailPrefix(\"height\"))]: `${height}px` }\n : null),\n ...(border !== defaultThumbnailsProps.border\n ? { [cssVar(cssThumbnailPrefix(\"border\"))]: `${border}px` }\n : null),\n ...(borderStyle ? { [cssVar(cssThumbnailPrefix(\"border_style\"))]: borderStyle } : null),\n ...(borderColor ? { [cssVar(cssThumbnailPrefix(\"border_color\"))]: borderColor } : null),\n ...(borderRadius !== defaultThumbnailsProps.borderRadius\n ? { [cssVar(cssThumbnailPrefix(\"border_radius\"))]: `${borderRadius}px` }\n : null),\n ...(padding !== defaultThumbnailsProps.padding\n ? { [cssVar(cssThumbnailPrefix(\"padding\"))]: `${padding}px` }\n : null),\n ...(gap !== defaultThumbnailsProps.gap ? { [cssVar(cssThumbnailPrefix(\"gap\"))]: `${gap}px` } : null),\n ...styles.thumbnailsContainer,\n } },\n 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 }) => {\n const fadeAnimationDuration = animationDuration / Math.abs(offset || 1);\n const fadeIn = (offset > 0 && index > globalIndex + preload - offset && index <= globalIndex + preload) ||\n (offset < 0 && index < globalIndex - preload - offset && index >= globalIndex - preload)\n ? {\n duration: fadeAnimationDuration,\n delay: ((offset > 0 ? index - (globalIndex + preload - offset) : globalIndex - preload - offset - index) -\n 1) *\n fadeAnimationDuration,\n }\n : undefined;\n const fadeOut = (offset > 0 && index < globalIndex - preload) || (offset < 0 && index > globalIndex + preload)\n ? {\n duration: fadeAnimationDuration,\n delay: (offset > 0\n ? offset - (globalIndex - preload - index)\n : -offset - (index - (globalIndex + preload))) * fadeAnimationDuration,\n }\n : undefined;\n 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(); } }));\n })),\n vignette && React.createElement(\"div\", { className: cssClass(cssPrefix(\"vignette\")) })));\n}\n\nconst ThumbnailsContext = React.createContext(null);\nconst useThumbnails = makeUseContext(\"useThumbnails\", \"ThumbnailsContext\", ThumbnailsContext);\nfunction ThumbnailsContextProvider({ children, ...props }) {\n const { ref, position, hidden } = resolveThumbnailsProps(props.thumbnails);\n const [visible, setVisible] = React.useState(!hidden);\n const containerRef = React.useRef(null);\n const context = React.useMemo(() => ({\n visible,\n show: () => setVisible(true),\n hide: () => setVisible(false),\n }), [visible]);\n React.useImperativeHandle(ref, () => context, [context]);\n return (React.createElement(LightboxPropsProvider, { ...props },\n React.createElement(ThumbnailsContext.Provider, { value: context },\n React.createElement(\"div\", { ref: containerRef, className: clsx(cssClass(cssPrefix()), cssClass(cssPrefix(`${position}`))) },\n [\"start\", \"top\"].includes(position) && React.createElement(ThumbnailsTrack, { containerRef: containerRef, visible: visible }),\n React.createElement(\"div\", { className: cssClass(cssPrefix(\"wrapper\")) }, children),\n [\"end\", \"bottom\"].includes(position) && React.createElement(ThumbnailsTrack, { containerRef: containerRef, visible: visible })))));\n}\n\nconst thumbnailsIcon = () => (React.createElement(React.Fragment, null,\n React.createElement(\"path\", { strokeWidth: 2, stroke: \"currentColor\", strokeLinejoin: \"round\", fill: \"none\", d: \"M3 5l18 0l0 14l-18 0l0-14z\" }),\n React.createElement(\"path\", { d: \"M5 14h4v3h-4zM10 14h4v3h-4zM15 14h4v3h-4z\" })));\nconst ThumbnailsVisible = createIcon(\"ThumbnailsVisible\", thumbnailsIcon());\nconst ThumbnailsHidden = createIconDisabled(\"ThumbnailsHidden\", thumbnailsIcon());\nfunction ThumbnailsButton() {\n const { visible, show, hide } = useThumbnails();\n const { render } = useLightboxProps();\n if (render.buttonThumbnails) {\n return React.createElement(React.Fragment, null, render.buttonThumbnails({ visible, show, hide }));\n }\n return (React.createElement(IconButton, { label: visible ? \"Hide thumbnails\" : \"Show thumbnails\", icon: visible ? ThumbnailsVisible : ThumbnailsHidden, renderIcon: visible ? render.iconThumbnailsVisible : render.iconThumbnailsHidden, onClick: visible ? hide : show }));\n}\n\nfunction Thumbnails({ augment, contains, append, addParent }) {\n augment(({ thumbnails: thumbnailsProps, toolbar, ...restProps }) => {\n const thumbnails = resolveThumbnailsProps(thumbnailsProps);\n return {\n toolbar: addToolbarButton(toolbar, PLUGIN_THUMBNAILS, thumbnails.showToggle ? React.createElement(ThumbnailsButton, null) : null),\n thumbnails,\n ...restProps,\n };\n });\n const module = createModule(PLUGIN_THUMBNAILS, ThumbnailsContextProvider);\n if (contains(PLUGIN_FULLSCREEN)) {\n append(PLUGIN_FULLSCREEN, module);\n }\n else {\n addParent(MODULE_CONTROLLER, module);\n }\n}\n\nexport { Thumbnails as default };\n","import * as React from 'react';\nimport { useLightboxProps, useMotionPreference, useEventCallback, useLayoutEffect, useLightboxState, isImageSlide, isImageFitCover, round, useDocumentContext, useController, usePointerEvents, cleanup, makeUseContext, createIcon, IconButton, devicePixelRatio, ImageSlide, clsx, cssClass, addToolbarButton, createModule } from '../../index.js';\nimport { EVENT_ON_KEY_DOWN, EVENT_ON_WHEEL, UNKNOWN_ACTION_TYPE, CLASS_FULLSIZE, CLASS_FLEX_CENTER, CLASS_SLIDE_WRAPPER, CLASS_SLIDE_WRAPPER_INTERACTIVE, PLUGIN_ZOOM } from '../../types.js';\n\nconst defaultZoomProps = {\n maxZoomPixelRatio: 1,\n zoomInMultiplier: 2,\n doubleTapDelay: 300,\n doubleClickDelay: 500,\n doubleClickMaxStops: 2,\n keyboardMoveDistance: 50,\n wheelZoomDistanceFactor: 100,\n pinchZoomDistanceFactor: 100,\n scrollToZoom: false,\n};\nconst resolveZoomProps = (zoom) => ({\n ...defaultZoomProps,\n ...zoom,\n});\n\nfunction useZoomAnimation(zoom, offsetX, offsetY, zoomWrapperRef) {\n const zoomAnimation = React.useRef();\n const zoomAnimationStart = React.useRef();\n const { zoom: zoomAnimationDuration } = useLightboxProps().animation;\n const reduceMotion = useMotionPreference();\n const playZoomAnimation = useEventCallback(() => {\n var _a, _b, _c;\n (_a = zoomAnimation.current) === null || _a === void 0 ? void 0 : _a.cancel();\n zoomAnimation.current = undefined;\n if (zoomAnimationStart.current && (zoomWrapperRef === null || zoomWrapperRef === void 0 ? void 0 : zoomWrapperRef.current)) {\n try {\n zoomAnimation.current = (_c = (_b = zoomWrapperRef.current).animate) === null || _c === void 0 ? void 0 : _c.call(_b, [\n { transform: zoomAnimationStart.current },\n { transform: `scale(${zoom}) translateX(${offsetX}px) translateY(${offsetY}px)` },\n ], {\n duration: !reduceMotion ? (zoomAnimationDuration !== null && zoomAnimationDuration !== void 0 ? zoomAnimationDuration : 500) : 0,\n easing: zoomAnimation.current ? \"ease-out\" : \"ease-in-out\",\n });\n }\n catch (err) {\n console.error(err);\n }\n zoomAnimationStart.current = undefined;\n if (zoomAnimation.current) {\n zoomAnimation.current.onfinish = () => {\n zoomAnimation.current = undefined;\n };\n }\n }\n });\n useLayoutEffect(playZoomAnimation, [zoom, offsetX, offsetY, playZoomAnimation]);\n return React.useCallback(() => {\n zoomAnimationStart.current = (zoomWrapperRef === null || zoomWrapperRef === void 0 ? void 0 : zoomWrapperRef.current)\n ? window.getComputedStyle(zoomWrapperRef.current).transform\n : undefined;\n }, [zoomWrapperRef]);\n}\n\nfunction useZoomCallback(zoom, disabled) {\n const { on } = useLightboxProps();\n const onZoomCallback = useEventCallback(() => {\n var _a;\n if (!disabled) {\n (_a = on.zoom) === null || _a === void 0 ? void 0 : _a.call(on, { zoom });\n }\n });\n React.useEffect(onZoomCallback, [zoom, onZoomCallback]);\n}\n\nfunction useZoomProps() {\n const { zoom } = useLightboxProps();\n return resolveZoomProps(zoom);\n}\n\nfunction useZoomImageRect(slideRect, imageDimensions) {\n var _a, _b;\n let imageRect = { width: 0, height: 0 };\n let maxImageRect = { width: 0, height: 0 };\n const { currentSlide } = useLightboxState();\n const { imageFit } = useLightboxProps().carousel;\n const { maxZoomPixelRatio } = useZoomProps();\n if (slideRect && currentSlide) {\n const slide = { ...currentSlide, ...imageDimensions };\n if (isImageSlide(slide)) {\n const cover = isImageFitCover(slide, imageFit);\n const width = Math.max(...(((_a = slide.srcSet) === null || _a === void 0 ? void 0 : _a.map((x) => x.width)) || []).concat(slide.width ? [slide.width] : []));\n const height = Math.max(...(((_b = slide.srcSet) === null || _b === void 0 ? void 0 : _b.map((x) => x.height)) || []).concat(slide.height ? [slide.height] : []));\n if (width > 0 && height > 0 && slideRect.width > 0 && slideRect.height > 0) {\n maxImageRect = cover\n ? {\n width: Math.round(Math.min(width, (slideRect.width / slideRect.height) * height)),\n height: Math.round(Math.min(height, (slideRect.height / slideRect.width) * width)),\n }\n : { width, height };\n maxImageRect = {\n width: maxImageRect.width * maxZoomPixelRatio,\n height: maxImageRect.height * maxZoomPixelRatio,\n };\n imageRect = cover\n ? {\n width: Math.min(slideRect.width, maxImageRect.width, width),\n height: Math.min(slideRect.height, maxImageRect.height, height),\n }\n : {\n width: Math.round(Math.min(slideRect.width, (slideRect.height / height) * width, width)),\n height: Math.round(Math.min(slideRect.height, (slideRect.width / width) * height, height)),\n };\n }\n }\n }\n const maxZoom = imageRect.width ? Math.max(round(maxImageRect.width / imageRect.width, 5), 1) : 1;\n return { imageRect, maxZoom };\n}\n\nfunction distance(pointerA, pointerB) {\n return ((pointerA.clientX - pointerB.clientX) ** 2 + (pointerA.clientY - pointerB.clientY) ** 2) ** 0.5;\n}\nfunction scaleZoom(value, delta, factor = 100, clamp = 2) {\n return value * Math.min(1 + Math.abs(delta / factor), clamp) ** Math.sign(delta);\n}\nfunction useZoomSensors(zoom, maxZoom, disabled, changeZoom, changeOffsets, zoomWrapperRef) {\n const activePointers = React.useRef([]);\n const lastPointerDown = React.useRef(0);\n const pinchZoomDistance = React.useRef();\n const { globalIndex } = useLightboxState();\n const { getOwnerWindow } = useDocumentContext();\n const { containerRef, subscribeSensors } = useController();\n const { keyboardMoveDistance, zoomInMultiplier, wheelZoomDistanceFactor, scrollToZoom, doubleTapDelay, doubleClickDelay, doubleClickMaxStops, pinchZoomDistanceFactor, } = useZoomProps();\n const translateCoordinates = React.useCallback((event) => {\n if (containerRef.current) {\n const { pageX, pageY } = event;\n const { scrollX, scrollY } = getOwnerWindow();\n const { left, top, width, height } = containerRef.current.getBoundingClientRect();\n return [pageX - left - scrollX - width / 2, pageY - top - scrollY - height / 2];\n }\n return [];\n }, [containerRef, getOwnerWindow]);\n const onKeyDown = useEventCallback((event) => {\n const preventDefault = () => {\n event.preventDefault();\n event.stopPropagation();\n };\n if (zoom > 1) {\n const move = (deltaX, deltaY) => {\n preventDefault();\n changeOffsets(deltaX, deltaY);\n };\n if (event.key === \"ArrowDown\") {\n move(0, keyboardMoveDistance);\n }\n else if (event.key === \"ArrowUp\") {\n move(0, -keyboardMoveDistance);\n }\n else if (event.key === \"ArrowLeft\") {\n move(-keyboardMoveDistance, 0);\n }\n else if (event.key === \"ArrowRight\") {\n move(keyboardMoveDistance, 0);\n }\n }\n const handleChangeZoom = (zoomValue) => {\n preventDefault();\n changeZoom(zoomValue);\n };\n const hasMeta = () => event.getModifierState(\"Meta\");\n if (event.key === \"+\" || (event.key === \"=\" && hasMeta())) {\n handleChangeZoom(zoom * zoomInMultiplier);\n }\n else if (event.key === \"-\" || (event.key === \"_\" && hasMeta())) {\n handleChangeZoom(zoom / zoomInMultiplier);\n }\n else if (event.key === \"0\" && hasMeta()) {\n handleChangeZoom(1);\n }\n });\n const onWheel = useEventCallback((event) => {\n if (event.ctrlKey || scrollToZoom) {\n if (Math.abs(event.deltaY) > Math.abs(event.deltaX)) {\n event.stopPropagation();\n changeZoom(scaleZoom(zoom, -event.deltaY, wheelZoomDistanceFactor), true, ...translateCoordinates(event));\n return;\n }\n }\n if (zoom > 1) {\n event.stopPropagation();\n if (!scrollToZoom) {\n changeOffsets(event.deltaX, event.deltaY);\n }\n }\n });\n const clearPointer = React.useCallback((event) => {\n const pointers = activePointers.current;\n pointers.splice(0, pointers.length, ...pointers.filter((p) => p.pointerId !== event.pointerId));\n }, []);\n const replacePointer = React.useCallback((event) => {\n clearPointer(event);\n event.persist();\n activePointers.current.push(event);\n }, [clearPointer]);\n const onPointerDown = useEventCallback((event) => {\n var _a;\n const pointers = activePointers.current;\n if ((event.pointerType === \"mouse\" && event.buttons > 1) ||\n !((_a = zoomWrapperRef === null || zoomWrapperRef === void 0 ? void 0 : zoomWrapperRef.current) === null || _a === void 0 ? void 0 : _a.contains(event.target))) {\n return;\n }\n if (zoom > 1) {\n event.stopPropagation();\n }\n const { timeStamp } = event;\n if (pointers.length === 0 &&\n timeStamp - lastPointerDown.current < (event.pointerType === \"touch\" ? doubleTapDelay : doubleClickDelay)) {\n lastPointerDown.current = 0;\n changeZoom(zoom !== maxZoom ? zoom * Math.max(maxZoom ** (1 / doubleClickMaxStops), zoomInMultiplier) : 1, false, ...translateCoordinates(event));\n }\n else {\n lastPointerDown.current = timeStamp;\n }\n replacePointer(event);\n if (pointers.length === 2) {\n pinchZoomDistance.current = distance(pointers[0], pointers[1]);\n }\n });\n const onPointerMove = useEventCallback((event) => {\n const pointers = activePointers.current;\n const activePointer = pointers.find((p) => p.pointerId === event.pointerId);\n if (pointers.length === 2 && pinchZoomDistance.current) {\n event.stopPropagation();\n replacePointer(event);\n const currentDistance = distance(pointers[0], pointers[1]);\n const delta = currentDistance - pinchZoomDistance.current;\n if (Math.abs(delta) > 0) {\n changeZoom(scaleZoom(zoom, delta, pinchZoomDistanceFactor), true, ...pointers\n .map((x) => translateCoordinates(x))\n .reduce((acc, coordinate) => coordinate.map((x, i) => acc[i] + x / 2)));\n pinchZoomDistance.current = currentDistance;\n }\n return;\n }\n if (zoom > 1) {\n event.stopPropagation();\n if (activePointer) {\n if (pointers.length === 1) {\n changeOffsets((activePointer.clientX - event.clientX) / zoom, (activePointer.clientY - event.clientY) / zoom);\n }\n replacePointer(event);\n }\n }\n });\n const onPointerUp = React.useCallback((event) => {\n const pointers = activePointers.current;\n if (pointers.length === 2 && pointers.find((p) => p.pointerId === event.pointerId)) {\n pinchZoomDistance.current = undefined;\n }\n clearPointer(event);\n }, [clearPointer]);\n const cleanupSensors = React.useCallback(() => {\n const pointers = activePointers.current;\n pointers.splice(0, pointers.length);\n lastPointerDown.current = 0;\n pinchZoomDistance.current = undefined;\n }, []);\n usePointerEvents(subscribeSensors, onPointerDown, onPointerMove, onPointerUp, disabled);\n React.useEffect(cleanupSensors, [globalIndex, cleanupSensors]);\n React.useEffect(() => {\n if (!disabled) {\n return cleanup(cleanupSensors, subscribeSensors(EVENT_ON_KEY_DOWN, onKeyDown), subscribeSensors(EVENT_ON_WHEEL, onWheel));\n }\n return () => { };\n }, [disabled, subscribeSensors, cleanupSensors, onKeyDown, onWheel]);\n}\n\nfunction useZoomState(imageRect, maxZoom, zoomWrapperRef) {\n const [zoom, setZoom] = React.useState(1);\n const [offsetX, setOffsetX] = React.useState(0);\n const [offsetY, setOffsetY] = React.useState(0);\n const animate = useZoomAnimation(zoom, offsetX, offsetY, zoomWrapperRef);\n const { currentSlide, globalIndex } = useLightboxState();\n const { containerRect, slideRect } = useController();\n const { zoomInMultiplier } = useZoomProps();\n const currentSource = currentSlide && isImageSlide(currentSlide) ? currentSlide.src : undefined;\n const disabled = !currentSource || !(zoomWrapperRef === null || zoomWrapperRef === void 0 ? void 0 : zoomWrapperRef.current);\n useLayoutEffect(() => {\n setZoom(1);\n setOffsetX(0);\n setOffsetY(0);\n }, [globalIndex, currentSource]);\n const changeOffsets = React.useCallback((dx, dy, targetZoom) => {\n const newZoom = targetZoom || zoom;\n const newOffsetX = offsetX - (dx || 0);\n const newOffsetY = offsetY - (dy || 0);\n const maxOffsetX = (imageRect.width * newZoom - slideRect.width) / 2 / newZoom;\n const maxOffsetY = (imageRect.height * newZoom - slideRect.height) / 2 / newZoom;\n setOffsetX(Math.min(Math.abs(newOffsetX), Math.max(maxOffsetX, 0)) * Math.sign(newOffsetX));\n setOffsetY(Math.min(Math.abs(newOffsetY), Math.max(maxOffsetY, 0)) * Math.sign(newOffsetY));\n }, [zoom, offsetX, offsetY, slideRect, imageRect.width, imageRect.height]);\n const changeZoom = React.useCallback((targetZoom, rapid, dx, dy) => {\n const newZoom = round(Math.min(Math.max(targetZoom + 0.001 < maxZoom ? targetZoom : maxZoom, 1), maxZoom), 5);\n if (newZoom === zoom)\n return;\n if (!rapid) {\n animate();\n }\n changeOffsets(dx ? dx * (1 / zoom - 1 / newZoom) : 0, dy ? dy * (1 / zoom - 1 / newZoom) : 0, newZoom);\n setZoom(newZoom);\n }, [zoom, maxZoom, changeOffsets, animate]);\n const handleControllerRectChange = useEventCallback(() => {\n if (zoom > 1) {\n if (zoom > maxZoom) {\n changeZoom(maxZoom, true);\n }\n changeOffsets();\n }\n });\n useLayoutEffect(handleControllerRectChange, [containerRect.width, containerRect.height, handleControllerRectChange]);\n const zoomIn = React.useCallback(() => changeZoom(zoom * zoomInMultiplier), [zoom, zoomInMultiplier, changeZoom]);\n const zoomOut = React.useCallback(() => changeZoom(zoom / zoomInMultiplier), [zoom, zoomInMultiplier, changeZoom]);\n return { zoom, offsetX, offsetY, disabled, changeOffsets, changeZoom, zoomIn, zoomOut };\n}\n\nconst ZoomControllerContext = React.createContext(null);\nconst useZoom = makeUseContext(\"useZoom\", \"ZoomControllerContext\", ZoomControllerContext);\nfunction ZoomContextProvider({ children }) {\n const [zoomWrapper, setZoomWrapper] = React.useState();\n const { slideRect } = useController();\n const { imageRect, maxZoom } = useZoomImageRect(slideRect, zoomWrapper === null || zoomWrapper === void 0 ? void 0 : zoomWrapper.imageDimensions);\n const { zoom, offsetX, offsetY, disabled, changeZoom, changeOffsets, zoomIn, zoomOut } = useZoomState(imageRect, maxZoom, zoomWrapper === null || zoomWrapper === void 0 ? void 0 : zoomWrapper.zoomWrapperRef);\n useZoomCallback(zoom, disabled);\n useZoomSensors(zoom, maxZoom, disabled, changeZoom, changeOffsets, zoomWrapper === null || zoomWrapper === void 0 ? void 0 : zoomWrapper.zoomWrapperRef);\n const zoomRef = React.useMemo(() => ({ zoom, maxZoom, offsetX, offsetY, disabled, zoomIn, zoomOut, changeZoom }), [zoom, maxZoom, offsetX, offsetY, disabled, zoomIn, zoomOut, changeZoom]);\n React.useImperativeHandle(useZoomProps().ref, () => zoomRef, [zoomRef]);\n const context = React.useMemo(() => ({ ...zoomRef, setZoomWrapper }), [zoomRef, setZoomWrapper]);\n return React.createElement(ZoomControllerContext.Provider, { value: context }, children);\n}\n\nconst ZoomInIcon = createIcon(\"ZoomIn\", React.createElement(React.Fragment, null,\n React.createElement(\"path\", { d: \"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\" }),\n React.createElement(\"path\", { d: \"M12 10h-2v2H9v-2H7V9h2V7h1v2h2v1z\" })));\nconst ZoomOutIcon = createIcon(\"ZoomOut\", React.createElement(\"path\", { d: \"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14zM7 9h5v1H7z\" }));\nconst ZoomButton = React.forwardRef(function ZoomButton({ zoomIn, onLoseFocus }, ref) {\n const wasEnabled = React.useRef(false);\n const wasFocused = React.useRef(false);\n const { zoom, maxZoom, zoomIn: zoomInCallback, zoomOut: zoomOutCallback, disabled: zoomDisabled } = useZoom();\n const { render } = useLightboxProps();\n const disabled = zoomDisabled || (zoomIn ? zoom >= maxZoom : zoom <= 1);\n React.useEffect(() => {\n if (disabled && wasEnabled.current && wasFocused.current) {\n onLoseFocus();\n }\n if (!disabled) {\n wasEnabled.current = true;\n }\n }, [disabled, onLoseFocus]);\n return (React.createElement(IconButton, { ref: ref, disabled: disabled, label: zoomIn ? \"Zoom in\" : \"Zoom out\", icon: zoomIn ? ZoomInIcon : ZoomOutIcon, renderIcon: zoomIn ? render.iconZoomIn : render.iconZoomOut, onClick: zoomIn ? zoomInCallback : zoomOutCallback, onFocus: () => {\n wasFocused.current = true;\n }, onBlur: () => {\n wasFocused.current = false;\n } }));\n});\n\nfunction ZoomButtonsGroup() {\n const zoomInRef = React.useRef(null);\n const zoomOutRef = React.useRef(null);\n const { focus } = useController();\n const focusSibling = React.useCallback((sibling) => {\n var _a, _b;\n if (!((_a = sibling.current) === null || _a === void 0 ? void 0 : _a.disabled)) {\n (_b = sibling.current) === null || _b === void 0 ? void 0 : _b.focus();\n }\n else {\n focus();\n }\n }, [focus]);\n const focusZoomIn = React.useCallback(() => focusSibling(zoomInRef), [focusSibling]);\n const focusZoomOut = React.useCallback(() => focusSibling(zoomOutRef), [focusSibling]);\n return (React.createElement(React.Fragment, null,\n React.createElement(ZoomButton, { zoomIn: true, ref: zoomInRef, onLoseFocus: focusZoomOut }),\n React.createElement(ZoomButton, { ref: zoomOutRef, onLoseFocus: focusZoomIn })));\n}\n\nfunction ZoomToolbarControl() {\n const { render } = useLightboxProps();\n const zoomRef = useZoom();\n if (render.buttonZoom) {\n return React.createElement(React.Fragment, null, render.buttonZoom(zoomRef));\n }\n return React.createElement(ZoomButtonsGroup, null);\n}\n\nfunction isResponsiveImageSlide(slide) {\n var _a;\n return (((_a = slide.srcSet) === null || _a === void 0 ? void 0 : _a.length) || 0) > 0;\n}\nfunction reducer({ current, preload }, { type, source }) {\n switch (type) {\n case \"fetch\":\n if (!current) {\n return { current: source };\n }\n return { current, preload: source };\n case \"done\":\n if (source === preload) {\n return { current: source };\n }\n return { current, preload };\n default:\n throw new Error(UNKNOWN_ACTION_TYPE);\n }\n}\nfunction ResponsiveImage(props) {\n var _a, _b;\n const [{ current, preload }, dispatch] = React.useReducer(reducer, {});\n const { slide: image, rect, imageFit, render, interactive } = props;\n const srcSet = image.srcSet.sort((a, b) => a.width - b.width);\n const width = (_a = image.width) !== null && _a !== void 0 ? _a : srcSet[srcSet.length - 1].width;\n const height = (_b = image.height) !== null && _b !== void 0 ? _b : srcSet[srcSet.length - 1].height;\n const cover = isImageFitCover(image, imageFit);\n const maxWidth = Math.max(...srcSet.map((x) => x.width));\n const targetWidth = Math.min((cover ? Math.max : Math.min)(rect.width, width * (rect.height / height)), maxWidth);\n const pixelDensity = devicePixelRatio();\n const handleResize = useEventCallback(() => {\n var _a;\n const targetSource = (_a = srcSet.find((x) => x.width >= targetWidth * pixelDensity)) !== null && _a !== void 0 ? _a : srcSet[srcSet.length - 1];\n if (!current || srcSet.findIndex((x) => x.src === current) < srcSet.findIndex((x) => x === targetSource)) {\n dispatch({ type: \"fetch\", source: targetSource.src });\n }\n });\n useLayoutEffect(handleResize, [rect.width, rect.height, pixelDensity, handleResize]);\n const handlePreload = useEventCallback((currentPreload) => dispatch({ type: \"done\", source: currentPreload }));\n const style = {\n WebkitTransform: !interactive ? \"translateZ(0)\" : \"initial\",\n };\n if (!cover) {\n Object.assign(style, rect.width / rect.height < width / height ? { width: \"100%\", height: \"auto\" } : { width: \"auto\", height: \"100%\" });\n }\n return (React.createElement(React.Fragment, null,\n preload && preload !== current && (React.createElement(ImageSlide, { key: \"preload\", ...props, slide: { ...image, src: preload, srcSet: undefined }, style: { position: \"absolute\", visibility: \"hidden\", ...style }, onLoad: () => handlePreload(preload), render: {\n ...render,\n iconLoading: () => null,\n iconError: () => null,\n } })),\n current && (React.createElement(ImageSlide, { key: \"current\", ...props, slide: { ...image, src: current, srcSet: undefined }, style: style }))));\n}\n\nfunction ZoomWrapper({ render, slide, offset, rect }) {\n var _a;\n const [imageDimensions, setImageDimensions] = React.useState();\n const zoomWrapperRef = React.useRef(null);\n const { zoom, maxZoom, offsetX, offsetY, setZoomWrapper } = useZoom();\n const interactive = zoom > 1;\n const { carousel, on } = useLightboxProps();\n const { currentIndex } = useLightboxState();\n useLayoutEffect(() => {\n if (offset === 0) {\n setZoomWrapper({ zoomWrapperRef, imageDimensions });\n return () => setZoomWrapper(undefined);\n }\n return () => { };\n }, [offset, imageDimensions, setZoomWrapper]);\n let rendered = (_a = render.slide) === null || _a === void 0 ? void 0 : _a.call(render, { slide, offset, rect, zoom, maxZoom });\n if (!rendered && isImageSlide(slide)) {\n const slideProps = {\n slide,\n offset,\n rect,\n render,\n imageFit: carousel.imageFit,\n imageProps: carousel.imageProps,\n onClick: offset === 0 ? () => { var _a; return (_a = on.click) === null || _a === void 0 ? void 0 : _a.call(on, { index: currentIndex }); } : undefined,\n };\n rendered = isResponsiveImageSlide(slide) ? (React.createElement(ResponsiveImage, { ...slideProps, slide: slide, interactive: interactive, 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 }));\n }\n if (!rendered)\n return null;\n return (React.createElement(\"div\", { ref: zoomWrapperRef, className: clsx(cssClass(CLASS_FULLSIZE), cssClass(CLASS_FLEX_CENTER), cssClass(CLASS_SLIDE_WRAPPER), interactive && cssClass(CLASS_SLIDE_WRAPPER_INTERACTIVE)), style: offset === 0 ? { transform: `scale(${zoom}) translateX(${offsetX}px) translateY(${offsetY}px)` } : undefined }, rendered));\n}\n\nconst Zoom = ({ augment, addModule }) => {\n augment(({ zoom: zoomProps, toolbar, render, controller, ...restProps }) => {\n const zoom = resolveZoomProps(zoomProps);\n return {\n zoom,\n toolbar: addToolbarButton(toolbar, PLUGIN_ZOOM, React.createElement(ZoomToolbarControl, null)),\n render: {\n ...render,\n slide: (props) => { var _a; return isImageSlide(props.slide) ? React.createElement(ZoomWrapper, { render: render, ...props }) : (_a = render.slide) === null || _a === void 0 ? void 0 : _a.call(render, props); },\n },\n controller: { ...controller, preventDefaultWheelY: zoom.scrollToZoom },\n ...restProps,\n };\n });\n addModule(createModule(PLUGIN_ZOOM, ZoomContextProvider));\n};\n\nexport { Zoom as default };\n"],"sourceRoot":""}