{"version":3,"file":"830-e3f6ea39cf257ec8ce60.js","mappings":"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","sources":["webpack://royal-geographical-society/./src/helpers/layers.ts","webpack://royal-geographical-society/./src/hooks/useModalGallery.ts","webpack://royal-geographical-society/./src/stories/Components/Global/Modal/Context/Context.tsx","webpack://royal-geographical-society/./src/stories/Components/Global/Modal/Background/Background.styles.ts","webpack://royal-geographical-society/./src/stories/Components/Global/Modal/Background/Background.tsx","webpack://royal-geographical-society/./src/stories/Components/Global/Modal/Close/Close.styles.ts","webpack://royal-geographical-society/./src/stories/Components/Global/Modal/Close/Close.tsx","webpack://royal-geographical-society/./src/stories/Components/Global/Modal/Modal.styles.ts","webpack://royal-geographical-society/./src/stories/Components/Global/Modal/Modal.tsx","webpack://royal-geographical-society/./src/stories/Components/Global/ModalGallery/ModalGallery.styles.ts","webpack://royal-geographical-society/./src/stories/Components/Global/ModalGallery/ModalGalleryProvider/ModalGalleryProvider.tsx","webpack://royal-geographical-society/./src/stories/Components/Global/ModalGallery/ModalGallery.tsx","webpack://royal-geographical-society/./src/stories/Components/Carousels/ImageGallery/ImageGallery.styles.ts","webpack://royal-geographical-society/./src/stories/Components/Carousels/ImageGallery/ImageGallery.tsx"],"sourcesContent":["/**\r\n * The various major z-index layers, adjust with caution and leave space between to add to later.\r\n */\r\nexport const Layers = {\r\n Modal: 1000,\r\n};\r\n","import * as React from 'react';\r\nexport function useModalGallery(params) {\r\n const [modalGalleryState, dispatch] = React.useReducer(modalGalleryReducer, {\r\n activeIndex: 0,\r\n maxIndex: 0,\r\n });\r\n React.useEffect(() => {\r\n initModalGallery();\r\n }, []);\r\n return {\r\n ...modalGalleryState,\r\n goToIndex,\r\n goToNext,\r\n goToPrev,\r\n };\r\n /**\r\n * Initialise the reducer state.\r\n */\r\n function initModalGallery() {\r\n // Initialise the modalGallery state.\r\n dispatch({ type: 'init', payload: { maxIndex: params.count - 1 } });\r\n }\r\n /**\r\n * Go to the next item.\r\n */\r\n function goToNext(wrap) {\r\n dispatch({ type: 'next', payload: { wrap: wrap ?? false } });\r\n }\r\n /**\r\n * Go to the previous item.\r\n */\r\n function goToPrev(wrap) {\r\n dispatch({ type: 'prev', payload: { wrap: wrap ?? false } });\r\n }\r\n /**\r\n * Go to the target index.\r\n */\r\n function goToIndex(index) {\r\n dispatch({ type: 'goto', payload: index });\r\n }\r\n function modalGalleryReducer(state, action) {\r\n switch (action.type) {\r\n case 'init':\r\n return {\r\n activeIndex: 0,\r\n maxIndex: action.payload.maxIndex,\r\n };\r\n case 'goto':\r\n return { ...state, activeIndex: clamp(action.payload) };\r\n case 'next':\r\n if (action.payload.wrap && state.activeIndex === state.maxIndex) {\r\n return { ...state, activeIndex: 0 };\r\n }\r\n return { ...state, activeIndex: clamp(state.activeIndex + 1) };\r\n case 'prev':\r\n if (action.payload.wrap && state.activeIndex === 0) {\r\n return { ...state, activeIndex: state.maxIndex };\r\n }\r\n return { ...state, activeIndex: clamp(state.activeIndex - 1) };\r\n }\r\n /** Clamp index to be within the min/max index range. */\r\n function clamp(value) {\r\n return Math.max(Math.min(value, state.maxIndex), 0);\r\n }\r\n }\r\n}\r\n","import noop from 'lodash/noop';\r\nimport * as React from 'react';\r\nconst ModalContext = React.createContext({\r\n closeOnBackground: false,\r\n showBackground: false,\r\n showClose: false,\r\n onClose: noop,\r\n});\r\nexport const useModal = () => React.useContext(ModalContext);\r\nexport const ModalProvider = (props) => {\r\n return React.createElement(ModalContext.Provider, { value: props }, props.children);\r\n};\r\n","import styled from 'styled-components';\r\nconst Background = styled.div `\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n display: block;\r\n background: var(--tintColor);\r\n height: 100%;\r\n width: 100%;\r\n\r\n &[data-close='true'] {\r\n cursor: zoom-out;\r\n }\r\n`;\r\nconst BackgroundStyles = {\r\n Background,\r\n};\r\nexport default BackgroundStyles;\r\n","import * as React from 'react';\r\nimport { useModal } from '../Context/Context';\r\nimport S from './Background.styles';\r\nconst Background = () => {\r\n const modal = useModal();\r\n return (React.createElement(S.Background, { \"data-close\": modal.closeOnBackground, \"aria-hidden\": true, onClick: modal.closeOnBackground\r\n ? (event) => {\r\n event.preventDefault();\r\n modal.onClose();\r\n }\r\n : undefined }));\r\n};\r\nexport default Background;\r\n","import { ButtonReset } from '@helpers/global';\r\nimport { Device, from } from '@helpers/media';\r\nimport styled from 'styled-components';\r\nconst Button = styled.button `\r\n ${ButtonReset}\r\n\r\n position: fixed;\r\n top: 0;\r\n right: 0;\r\n display: grid;\r\n background: var(--bgColor);\r\n color: var(--fgColor);\r\n height: var(--buttonSize);\r\n place-content: center;\r\n place-items: center;\r\n width: var(--buttonSize);\r\n z-index: 1;\r\n transform: translate(-50%, 50%);\r\n\r\n svg {\r\n display: block;\r\n height: 100%;\r\n width: 100%;\r\n }\r\n\r\n &.focus-ring {\r\n outline: auto;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n position: absolute;\r\n transform: translateY(-150%);\r\n }\r\n`;\r\nconst CloseStyles = {\r\n Button,\r\n};\r\nexport default CloseStyles;\r\n","import { SystemIcon, getSvgFromSystem } from '@helpers/systemIcons';\r\nimport { FocusRing } from '@react-aria/focus';\r\nimport * as React from 'react';\r\nimport { useModal } from '../Context/Context';\r\nimport S from './Close.styles';\r\nconst Close = () => {\r\n const modal = useModal();\r\n return (React.createElement(FocusRing, { focusRingClass: \"focus-ring\" },\r\n React.createElement(S.Button, { type: \"button\", \"aria-label\": \"Close\", onClick: (event) => {\r\n event.preventDefault();\r\n modal.onClose();\r\n } }, getSvgFromSystem(SystemIcon.Close))));\r\n};\r\nexport default Close;\r\n","import brand from '@helpers/brand';\r\nimport { fluid } from '@helpers/fluid';\r\nimport { Layers } from '@helpers/layers';\r\nimport { Device, from } from '@helpers/media';\r\nimport styled from 'styled-components';\r\nconst Container = styled.section `\r\n --bgColor: transparent;\r\n --fgColor: ${brand.white};\r\n --tintColor: rgba(0, 0, 0, 0.7);\r\n --buttonSize: ${fluid(18, 35)};\r\n --gutter: 75px;\r\n\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n display: grid;\r\n color: var(--fgColor);\r\n height: 100%;\r\n place-content: center;\r\n place-items: center;\r\n width: 100%;\r\n z-index: ${Layers.Modal};\r\n\r\n &[data-open='false'] {\r\n display: none;\r\n }\r\n`;\r\nconst Inner = styled.div `\r\n position: relative;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n margin: var(--gutter) 0;\r\n\r\n > video,\r\n > img {\r\n max-height: calc(100vh - (var(--gutter) * 2));\r\n }\r\n }\r\n`;\r\nconst ModalStyles = {\r\n Container,\r\n Inner,\r\n};\r\nexport default ModalStyles;\r\n","import { isSSR } from '@helpers/ssr';\r\nimport { FocusScope } from '@react-aria/focus';\r\nimport * as React from 'react';\r\nimport * as ReactDOM from 'react-dom';\r\nimport Background from './Background/Background';\r\nimport Close from './Close/Close';\r\nimport { ModalProvider } from './Context/Context';\r\nimport S from './Modal.styles';\r\nconst Modal = (props) => {\r\n if (isSSR() || !props.isOpen) {\r\n return null;\r\n }\r\n // Use #root if available, otherwise fallback to body.\r\n const portalContainer = document.getElementById('root') ?? document.body;\r\n const portalContent = (React.createElement(ModalProvider, { closeOnBackground: props.closeOnBackground, showBackground: props.showBackground, showClose: props.showClose, onClose: props.onClose },\r\n React.createElement(FocusScope, { autoFocus: true, contain: true, restoreFocus: true },\r\n React.createElement(S.Container, { id: props.id, role: \"dialog\", \"aria-label\": props.ariaLabel, \"aria-modal\": \"true\", onKeyDown: (event) => {\r\n if (event.key === 'Escape') {\r\n props.onClose();\r\n }\r\n } },\r\n props.showBackground && React.createElement(Background, null),\r\n React.createElement(S.Inner, null,\r\n props.children,\r\n props.showClose && React.createElement(Close, null))))));\r\n return ReactDOM.createPortal(portalContent, portalContainer);\r\n};\r\nexport default Modal;\r\n","import { transition } from '@helpers/animate';\r\nimport brand from '@helpers/brand';\r\nimport { ButtonReset } from '@helpers/global';\r\nimport { Device, from } from '@helpers/media';\r\nimport styled from 'styled-components';\r\nconst Container = styled.section ``;\r\nconst Image = styled.img ``;\r\nconst Video = styled.video ``;\r\nconst DragContainer = styled.div `\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n z-index: 1;\r\n\r\n &:active {\r\n cursor: grabbing;\r\n cursor: -moz-grabbing;\r\n cursor: -webkit-grabbing;\r\n }\r\n`;\r\nconst ControlButton = styled.button `\r\n ${ButtonReset};\r\n display: flex;\r\n height: 50px;\r\n place-content: center;\r\n place-items: center;\r\n width: 50px;\r\n background-color: ${brand.green};\r\n color: ${brand.white};\r\n position: absolute;\r\n bottom: 0;\r\n left: 50%;\r\n\r\n &[data-variant='prev'] {\r\n transform: translate(-150%, 100%) scaleX(-1);\r\n }\r\n\r\n &[data-variant='next'] {\r\n transform: translate(50%, 100%);\r\n }\r\n\r\n svg {\r\n display: block;\r\n height: 25px;\r\n width: 25px;\r\n ${transition('transform')};\r\n }\r\n\r\n &:hover svg {\r\n transform: scale(1.1);\r\n }\r\n\r\n &:disabled {\r\n opacity: 0.5;\r\n\r\n svg {\r\n transform: none;\r\n }\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n bottom: 50%;\r\n\r\n &[data-variant='prev'] {\r\n left: 0;\r\n transform: translate(calc(-100% - 4px), 50%) scaleX(-1);\r\n }\r\n\r\n &[data-variant='next'] {\r\n right: 0;\r\n left: auto;\r\n transform: translate(calc(100% + 4px), 50%);\r\n }\r\n }\r\n`;\r\nconst ModalGalleryStyles = {\r\n Container,\r\n DragContainer,\r\n Image,\r\n Video,\r\n ControlButton,\r\n};\r\nexport default ModalGalleryStyles;\r\n","import { useModalGallery, } from '@hooks/useModalGallery';\r\nimport noop from 'lodash/noop';\r\nimport * as React from 'react';\r\nconst ModalGalleryContext = React.createContext({\r\n activeIndex: 0,\r\n goToIndex: noop,\r\n goToNext: noop,\r\n goToPrev: noop,\r\n maxIndex: 0,\r\n});\r\nexport const useModalGalleryContext = () => React.useContext(ModalGalleryContext);\r\nconst ModalGalleryProvider = ({ children, ...otherProps }) => {\r\n const modalGallery = useModalGallery(otherProps);\r\n return (React.createElement(ModalGalleryContext.Provider, { value: modalGallery }, children));\r\n};\r\nexport default ModalGalleryProvider;\r\n","import { getSrcs } from '@helpers/image';\r\nimport { SystemIcon, getSvgFromSystem } from '@helpers/systemIcons';\r\nimport * as React from 'react';\r\nimport Modal from '../Modal/Modal';\r\nimport S from './ModalGallery.styles';\r\nimport { useModalGalleryContext } from './ModalGalleryProvider/ModalGalleryProvider';\r\nconst ModalGallery = (props) => {\r\n const { media, openIndex, ...rest } = props;\r\n const [startingX, setStartingX] = React.useState(0);\r\n const modalGallery = useModalGalleryContext();\r\n const activeItem = media != undefined && media[modalGallery.activeIndex];\r\n React.useEffect(() => {\r\n if (openIndex !== modalGallery.activeIndex) {\r\n modalGallery.goToIndex(openIndex);\r\n }\r\n }, [openIndex]);\r\n if (!activeItem) {\r\n return null;\r\n }\r\n const srcs = getSrcs(activeItem, 1920, 284, 12);\r\n return (React.createElement(Modal, { ...rest },\r\n React.createElement(S.Image, { src: srcs[0].split(' ')[0], srcSet: srcs.join(','), alt: activeItem.altText ?? undefined, role: !activeItem.altText ? 'presentation' : undefined }),\r\n React.createElement(S.DragContainer, { draggable: true, onTouchStart: (event) => {\r\n setStartingX(event.targetTouches[0].clientX);\r\n }, onTouchEnd: (event) => {\r\n const endingX = event.changedTouches[0].clientX;\r\n if (endingX < startingX) {\r\n modalGallery.goToNext(false);\r\n }\r\n else {\r\n modalGallery.goToPrev(false);\r\n }\r\n } }),\r\n media.length > 1 && (React.createElement(React.Fragment, null,\r\n React.createElement(S.ControlButton, { \"aria-label\": \"Previous\", disabled: modalGallery.activeIndex === 0, type: \"button\", \"data-variant\": \"prev\", onClick: (event) => {\r\n event.preventDefault();\r\n modalGallery.goToPrev(false);\r\n } }, getSvgFromSystem(SystemIcon.HoverArrowRight)),\r\n React.createElement(S.ControlButton, { \"aria-label\": \"Next\", disabled: modalGallery.activeIndex === modalGallery.maxIndex, type: \"button\", \"data-variant\": \"next\", onClick: (event) => {\r\n event.preventDefault();\r\n modalGallery.goToNext(false);\r\n } }, getSvgFromSystem(SystemIcon.HoverArrowRight))))));\r\n};\r\nexport default ModalGallery;\r\n","import brand from '@helpers/brand';\r\nimport { fluid } from '@helpers/fluid';\r\nimport fonts from '@helpers/fonts';\r\nimport { Device, from } from '@helpers/media';\r\nimport SectionWrapper from '@stories/Components/Global/SectionWrapper/SectionWrapper';\r\nimport styled from 'styled-components';\r\nimport Controls from '../Carousel/Controls/Controls';\r\nimport MotionTrack from '../Carousel/MotionTrack/MotionTrack';\r\nimport FullWidthCarouselStyles from '../FullWidthCarousel/FullWidthCarousel.styles';\r\nconst Container = styled(SectionWrapper) ``;\r\nconst MainImageWrapper = styled.div `\r\n position: relative;\r\n`;\r\nconst MainImage = styled.img `\r\n /* width: 880px; // dev only\r\n height: 500px; // dev only */\r\n cursor: pointer;\r\n`;\r\nconst ImageCaption = styled.span `\r\n margin-top: ${fluid(10, 16)};\r\n font-size: 14px;\r\n`;\r\nconst CopyrightInformation = styled.div `\r\n position: absolute;\r\n bottom: 0;\r\n right: 0;\r\n padding: 4px 9px;\r\n background-color: ${brand.white};\r\n ${fonts.agBook.light};\r\n font-style: italic;\r\n font-size: 12px;\r\n line-height: 14px;\r\n z-index: 1;\r\n\r\n &[data-copyright-info-position='left'] {\r\n right: auto;\r\n left: 0;\r\n }\r\n`;\r\nconst GalleryNavWrapper = styled.div `\r\n position: relative;\r\n margin-top: ${fluid(10, 16)};\r\n`;\r\nconst GalleryNav = styled.div `\r\n position: static;\r\n --itemGutter: ${fluid(10, 16)};\r\n --visibleItems: 2;\r\n width: calc(100% - calc(var(--itemGutter) * 7));\r\n margin-left: auto;\r\n margin-right: auto;\r\n overflow-x: hidden;\r\n\r\n @media ${from(Device.TabletSmall)} {\r\n --visibleItems: 4;\r\n }\r\n`;\r\nconst Track = styled(MotionTrack) ``;\r\nconst Item = styled(FullWidthCarouselStyles.Item) `\r\n &:last-child {\r\n padding-right: 0;\r\n }\r\n`;\r\nconst Thumbnail = styled.img `\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n`;\r\nconst StyledControls = styled(Controls) `\r\n position: absolute;\r\n top: 50%;\r\n left: 0;\r\n width: 100%;\r\n transform: translateY(-50%);\r\n pointer-events: none;\r\n display: flex;\r\n justify-content: space-between;\r\n\r\n * {\r\n pointer-events: auto;\r\n }\r\n`;\r\nconst Button = styled(FullWidthCarouselStyles.Button) `\r\n padding: 0;\r\n\r\n &:first-child {\r\n justify-content: flex-start;\r\n margin-left: -8px;\r\n }\r\n\r\n &:last-child {\r\n justify-content: flex-end;\r\n margin-right: -8px;\r\n }\r\n`;\r\nexport const ImageGalleryStyles = {\r\n Button,\r\n Container,\r\n Controls: StyledControls,\r\n CopyrightInformation,\r\n GalleryNav,\r\n GalleryNavWrapper,\r\n ImageCaption,\r\n Item,\r\n MainImage,\r\n MainImageWrapper,\r\n Thumbnail,\r\n Track,\r\n};\r\n","import { getSrcs, imageUrl } from '@helpers/image';\r\nimport { SystemIcon, getSvgFromSystem } from '@helpers/systemIcons';\r\nimport { withMotionMax } from '@hoc/withMotionMax';\r\nimport { useModalGallery } from '@hooks/useModalGallery';\r\nimport ModalGallery from '@stories/Components/Global/ModalGallery/ModalGallery';\r\nimport ModalGalleryProvider from '@stories/Components/Global/ModalGallery/ModalGalleryProvider/ModalGalleryProvider';\r\nimport { MotionConfig } from 'framer-motion';\r\nimport React, { useState } from 'react';\r\nimport CarouselProvider from '../Carousel/CarouselProvider/CarouselProvider';\r\nimport Connected from '../Carousel/Connected/Connected';\r\nimport { ImageGalleryStyles as S } from './ImageGallery.styles';\r\nconst ImageGallery = ({ id, items }) => {\r\n const [currentImage, setCurrentImage] = useState(items[0]);\r\n const [currentImageIndex, setCurrentImageIndex] = useState(0);\r\n const [currentCopyrightInfo, setCurrentCopyrightInfo] = useState(items[0].citation);\r\n const [currentCopyrightInfoPosition, setCurrentCopyrightInfoPosition] = useState(items[0].citationPosition);\r\n const wrapper = React.useRef(null);\r\n useModalGallery({ count: items.length });\r\n const [modalOpen, setModalOpen] = React.useState(false);\r\n const [goToIndex, setGoToIndex] = React.useState(0);\r\n let imageSrc;\r\n let imageSrcSet;\r\n if (items.length > 1) {\r\n imageSrc = getSrcs(currentImage, 880, 320, 4, 9 / 16)[0].split(' ')[0];\r\n imageSrcSet = getSrcs(currentImage, 880, 320, 4, 9 / 16).join(',');\r\n }\r\n else {\r\n imageSrc = getSrcs(currentImage, 880, 320, 4)[0].split(' ')[0];\r\n imageSrcSet = getSrcs(currentImage, 880, 320, 4).join(',');\r\n }\r\n return (React.createElement(MotionConfig, { transition: { duration: 0.45, ease: 'easeOut' } },\r\n React.createElement(ModalGalleryProvider, { count: items.length },\r\n React.createElement(CarouselProvider, { count: items.length },\r\n React.createElement(S.Container, { id: id, innerWidth: \"narrow\", flush: \"top\" }, items && (React.createElement(React.Fragment, null,\r\n React.createElement(S.MainImageWrapper, null,\r\n React.createElement(S.MainImage, { alt: currentImage.altText, loading: \"lazy\", role: currentImage.altText ? undefined : 'presentation', src: imageSrc, srcSet: imageSrcSet, onClick: () => {\r\n setModalOpen(true);\r\n setGoToIndex(currentImageIndex);\r\n }, width: \"880\" }),\r\n currentCopyrightInfo && (React.createElement(S.CopyrightInformation, { \"data-copyright-info-position\": currentCopyrightInfoPosition },\r\n \"\\u00A9 \",\r\n currentCopyrightInfo))),\r\n currentImage.caption &&\r\n React.createElement(S.ImageCaption, null, currentImage.caption),\r\n items.length > 1 && (React.createElement(S.GalleryNavWrapper, null,\r\n React.createElement(S.GalleryNav, { ref: wrapper },\r\n React.createElement(S.Track, { trackMutations: true, enableCarousel: true }, items.map((item, i) => (React.createElement(S.Item, { key: `card-${i}` },\r\n React.createElement(S.Thumbnail, { alt: items[i].altText, loading: \"lazy\", role: items[i].altText ? undefined : 'presentation', src: imageUrl(items[i], { width: 180, height: 112 }), onClick: () => updateStates(items, i) }))))),\r\n React.createElement(Connected, null, () => (React.createElement(S.Controls, { wrap: false, renderPrev: (buttonProps) => (React.createElement(S.Button, { \"aria-label\": \"previous\", ...buttonProps }, getSvgFromSystem(SystemIcon.HoverArrowRight))), renderNext: (buttonProps) => (React.createElement(S.Button, { \"aria-label\": \"next\", ...buttonProps }, getSvgFromSystem(SystemIcon.HoverArrowRight))) })))))))))),\r\n React.createElement(ModalGallery, { ariaLabel: \"Image Gallery\", isOpen: modalOpen, openIndex: goToIndex, media: items, closeOnBackground: true, showBackground: true, showClose: true, onClose: () => setModalOpen(false) }))));\r\n function updateStates(items, index) {\r\n setCurrentImage(items[index]);\r\n setCurrentImageIndex(index);\r\n setCurrentCopyrightInfo(items[index].citation);\r\n setCurrentCopyrightInfoPosition(items[index].citationPosition);\r\n }\r\n};\r\nexport default withMotionMax(ImageGallery);\r\n"],"names":["Layers","Modal","useModalGallery","params","modalGalleryState","dispatch","React","state","action","type","activeIndex","maxIndex","payload","clamp","wrap","value","Math","max","min","count","goToIndex","index","goToNext","goToPrev","ModalContext","closeOnBackground","showBackground","showClose","onClose","noop","useModal","ModalProvider","props","Provider","children","Background","styled","modal","S","onClick","event","preventDefault","undefined","Button","ButtonReset","from","Device","FocusRing","focusRingClass","getSvgFromSystem","SystemIcon","Container","brand","fluid","Inner","isSSR","isOpen","portalContainer","document","getElementById","body","portalContent","FocusScope","autoFocus","contain","restoreFocus","id","role","ariaLabel","onKeyDown","key","Close","ReactDOM","Image","Video","DragContainer","ControlButton","transition","ModalGalleryContext","otherProps","modalGallery","media","openIndex","rest","startingX","setStartingX","activeItem","srcs","getSrcs","src","split","srcSet","join","alt","altText","draggable","onTouchStart","targetTouches","clientX","onTouchEnd","changedTouches","length","disabled","SectionWrapper","MainImageWrapper","MainImage","ImageCaption","CopyrightInformation","fonts","GalleryNavWrapper","GalleryNav","Track","MotionTrack","Item","FullWidthCarouselStyles","Thumbnail","StyledControls","Controls","ImageGalleryStyles","withMotionMax","items","currentImage","setCurrentImage","useState","currentImageIndex","setCurrentImageIndex","currentCopyrightInfo","setCurrentCopyrightInfo","citation","currentCopyrightInfoPosition","setCurrentCopyrightInfoPosition","citationPosition","wrapper","modalOpen","setModalOpen","setGoToIndex","imageSrc","imageSrcSet","MotionConfig","duration","ease","ModalGalleryProvider","CarouselProvider","innerWidth","flush","loading","width","caption","ref","trackMutations","enableCarousel","map","item","i","imageUrl","height","updateStates","Connected","renderPrev","buttonProps","renderNext","ModalGallery"],"sourceRoot":""}