{"version":3,"sources":["../src/components/SlideshowLightbox/SlideshowLightbox.tsx","esbuild-css-modules-plugin-namespace:C:\\Users\\silvi\\AppData\\Local\\Temp\\tmp-11556-yFtwcDhzpj25\\lightbox.js-react\\src\\components\\SlideshowLightbox\\SlideshowLightbox.module.css.js","../src/components/SlideshowLightbox/utility.js"],"sourcesContent":["import * as React from 'react'\r\nimport { useState, useEffect, useRef, useCallback, forwardRef, useImperativeHandle, ForwardRefExoticComponent } from 'react'\r\nimport { motion, AnimatePresence, AnimateSharedLayout, useIsPresent, MotionGlobalConfig, } from 'framer-motion'\r\nimport styles from './SlideshowLightbox.module.css'\r\n\r\nimport {\r\n  wrapNums,\r\n  getVideoHeight,\r\n  getVideoWidth,\r\n  shouldAutoplay,\r\n  getScale,\r\n} from './utility'\r\nimport {\r\n  ZoomIn,\r\n  ZoomOut,\r\n  Fullscreen,\r\n  PlayCircleFill,\r\n  Search,\r\n  Download,\r\n  ArrowClockwise,\r\n  PauseCircleFill,\r\n  FullscreenExit,\r\n  InfoCircle,\r\n  XLg,\r\n  GridFill\r\n} from 'react-bootstrap-icons'\r\nimport { ReactNode } from 'react';\r\nimport Magnifier from '@oemuap/react-magnifier'\r\nimport { Portal } from 'react-portal'\r\nimport { TransformWrapper, TransformComponent, ReactZoomPanPinchRef, } from 'react-zoom-pan-pinch'\r\n// import { saveAs } from 'file-saver-es'\r\nimport Div100vh from 'react-div-100vh'\r\nimport KeyHandler from '@banzai-inc/react-key-handler'\r\nimport { useInterval } from 'usehooks-ts'\r\nimport useEmblaCarousel from 'embla-carousel-react'\r\nimport YouTube from 'react-youtube';\r\nimport useResizeObserver from '@react-hook/resize-observer';\r\n//import exifr from 'exifr'\r\nimport exifr from 'exifr/dist/full.esm.mjs'\r\n\r\nlet thumbnailVariants: any = {\r\n  visible: { opacity: 1, y: 0 },\r\n  hidden: { opacity: 0, y: 100 }\r\n}\r\n\r\nconst themes: any = {\r\n  day: {\r\n    background: 'white',\r\n    iconColor: 'black',\r\n    thumbnailBorder: 'solid transparent 2px',\r\n    textColor: 'black',\r\n    metadataTextColor: \"black\"\r\n  },\r\n  night: {\r\n    background: '#151515',\r\n    iconColor: '#626b77',\r\n    thumbnailBorder: 'solid rgb(107, 133, 206)  2px',\r\n    textColor: 'silver',\r\n    metadataTextColor: \"white\"\r\n\r\n  },\r\n  lightbox: {\r\n    background: 'rgba(12, 12, 12, 0.93)',\r\n    iconColor: '#626b77',\r\n    thumbnailBorder: 'solid rgb(107, 133, 206) 2px',\r\n    textColor: 'silver',\r\n    metadataTextColor: \"white\"\r\n\r\n  }\r\n}\r\n\r\n// const activeThumbnailBorder = 'solid rgba(107, 133, 206, 0.6) 2px'\r\nconst inactiveThumbnailBorder = 'solid transparent 2px'\r\n\r\nconst defaultTheme = 'night'\r\nconst mobileWidth = 768\r\nconst tabletWidth = 1100\r\n\r\nconst usePrevious = (value) => {\r\n  // custom hook to get previous prop value\r\n  const ref = useRef();\r\n\r\n  useEffect(() => {\r\n    ref.current = value;\r\n  });\r\n\r\n  return ref.current;\r\n}\r\n\r\ninterface SlideItem {\r\n  src?: any,\r\n  original?: string,\r\n  type?: string,\r\n  alt?: string,\r\n  loaded?: boolean,\r\n  thumbnailSrc?: string,\r\n}\r\n\r\ninterface ImageElement {\r\n  src?: any,\r\n  alt?: string,\r\n  loaded?: boolean,\r\n}\r\n\r\ntype SlideshowLightboxHandle = {\r\n  children?: ReactNode;\r\n  reset: () => void;\r\n};\r\n\r\nexport interface SlideshowLightboxProps {\r\n  children?: ReactNode;\r\n  ref?: any;\r\n  thumbnailBorder?: string;\r\n  magnifyingGlass?: boolean;\r\n  backgroundColor?: string;\r\n  theme?: string;\r\n  iconColor?: any;\r\n  fullScreen?: boolean;\r\n  showControls?: boolean;\r\n  disableImageZoom?: boolean;\r\n  slideshowInterval?: number;\r\n  slideDuration?: number;\r\n  lightboxWidth?: string;\r\n  showThumbnails?: boolean;\r\n  open?: boolean;\r\n  displayMetadata?: boolean;\r\n  noWindow?: boolean;\r\n  navigationDots?: boolean;\r\n  animateThumbnails?: boolean;\r\n  queryElems?: any;\r\n  showFullScreenIcon?: boolean;\r\n  showThumbnailIcon?: boolean;\r\n  showSlideshowIcon?: boolean;\r\n  showMagnificationIcons?: boolean;\r\n  roundedImages?: boolean;\r\n  downloadImages?: boolean;\r\n  showNavigationDots?: boolean;\r\n  rtl?: boolean;\r\n  modalClose?: string;\r\n  framework?: string;\r\n  lightboxIdentifier?: string;\r\n  nextArrow?: any;\r\n  prevArrow?: any;\r\n  arrowStyle?: any;\r\n  showLoader?: boolean;\r\n  useCoverMode?: boolean;\r\n  disableAnim?: any;\r\n  rightArrowStyle?: any;\r\n  leftArrowStyle?: any;\r\n  imgAnimation?: string;\r\n  maxZoomScale?: number;\r\n  textColor?: string;\r\n  licenseKey?: string;\r\n  images?: any;\r\n  render?: any;\r\n  imageComponent?: boolean;\r\n  imgElemClassname?: string;\r\n  showArrows?: boolean;\r\n  showControlsBar?: boolean;\r\n  rightSidebarComponent?: any;\r\n  closeIconBtnStyle?: any;\r\n  controlComponent?: any;\r\n  lightboxImgClass?: string;\r\n  thumbnailImgAnim?: boolean;\r\n  thumbnailImgClass?: string;\r\n  coverImageInLightbox?: boolean;\r\n  captionPlacement?: string;\r\n  onOpen?: any;\r\n  onClose?: any;\r\n  onNext?: any;\r\n  onPrev?: any;\r\n  onSelect?: any;\r\n  onRotate?: any;\r\n  onThumbnailClick?: any;\r\n  onImgError?: any;\r\n  className?: string;\r\n  imgWrapperClassName?: string;\r\n  fullScreenFillMode?: string;\r\n  imgClassName?: string;\r\n  startingSlideIndex?: number;\r\n  rotateIcon?: boolean;\r\n  showAllImages?: any;\r\n  rightArrowClassname?: string;\r\n  leftArrowClassname?: string;\r\n  displayedImages?: any;\r\n  metadataTimeLocale?: string;\r\n  captionStyle?: any;\r\n}\r\n\r\nexport const SlideshowLightbox: React.FC<SlideshowLightboxProps> = React.forwardRef<SlideshowLightboxHandle, SlideshowLightboxProps>((props, ref) => {\r\n\r\n  useImperativeHandle(\r\n    ref,\r\n    () => ({\r\n      reset() {\r\n        initImages(true, true)\r\n      }\r\n    })\r\n  )\r\n\r\n  const [[imgSlideIndex, direction], setImgSlideIndex] = useState([0, 0])\r\n  const [showModal, setShowModal] = useState(false)\r\n  const [slideAnimDuration, setSlideAnimDuration] = useState(props.slideDuration ? props.slideDuration : 25)\r\n\r\n  const [isSlideshowPlaying, setIsSlideshowPlaying] = useState(false)\r\n\r\n  const [emblaReinitialized, setEmblaReinitialized] = useState(false)\r\n\r\n  const [images, setImages] = useState<SlideItem[]>([]);\r\n\r\n  const [previewImageElems, setPreviewImageElems] = useState<any[]>([]);\r\n\r\n  const slideIndex = wrapNums(0, images.length, imgSlideIndex)\r\n\r\n  const [reactSwipeOptions, setReactSwipeOptions] = useState({\r\n    loop: true,\r\n    startIndex: 0,\r\n    active: true,\r\n    duration: slideAnimDuration,\r\n    dragThreshold: 10,\r\n    skipSnaps: true\r\n  })\r\n\r\n  let initialThumbnailOptions: any = {\r\n    startIndex: 0,\r\n    containScroll: 'keepSnaps',\r\n    dragFree: true\r\n  }\r\n\r\n  const [width, setWidth] = useState(0)\r\n\r\n  const isMobile = width <= mobileWidth;\r\n  const isTablet = width <= tabletWidth;\r\n\r\n  const [thumbnailSwipeOptions, setThumbnailSwipeOptions] = useState(initialThumbnailOptions)\r\n\r\n  const [carouselReady, setCarouselReady] = useState(false)\r\n  const[isTabletUserAgent, setIsTabletUserAgent] = useState(false);\r\n\r\n  const [zoomedIn, setZoomedIn] = useState(false)\r\n\r\n  const [isDisplay, setIsDisplay] = useState(false)\r\n\r\n  const [fullImg, setFullImg] = useState(false)\r\n\r\n  const [isOpen, setIsOpen] = useState(false)\r\n\r\n  const [prevFocusedElem, setPrevFocusedElem] = useState<HTMLElement | null>(null)\r\n  const [animationEntered, setAnimationEntered] = useState(false)\r\n\r\n  const [lightboxModalWidth, setLightboxModalWidth] = useState(\r\n    props.lightboxWidth ? props.lightboxWidth : \"100vw\"\r\n  )\r\n\r\n  const [magnifyingGlassFeature, _setMagnifyingGlassFeature] = useState(\r\n    props.magnifyingGlass ? props.magnifyingGlass : false\r\n  )\r\n\r\n  const [disableZoom, setDisableZoom] = useState(\r\n    props.disableImageZoom ? props.disableImageZoom : false\r\n  )\r\n\r\n  const [slideshowInterval, setSlideshowInterval] = useState(\r\n    props.slideshowInterval ? props.slideshowInterval : 1700\r\n  )\r\n\r\n  const [rightArrowStyle, setRightArrowStyle] = useState(\r\n    props.rightArrowStyle ? props.rightArrowStyle : {}\r\n  )\r\n\r\n  const [leftArrowStyle, setLeftArrowStyle] = useState(\r\n    props.leftArrowStyle ? props.leftArrowStyle : {}\r\n  )\r\n\r\n  const [maxScale, setMaxScale] = useState<number>(\r\n    props.maxZoomScale ? getScale(props.maxZoomScale, 24) : 8\r\n  )\r\n\r\n  const [isRounded, setIsRounded] = useState(\r\n    props.roundedImages ? props.roundedImages : false\r\n  )\r\n\r\n  const [showControls, setShowControls] = useState<boolean>(\r\n    props.showControls ? props.showControls : true\r\n  )\r\n\r\n  const [displayFullScreenIcon, setDisplayFullScreenIcon] = useState<boolean>(\r\n    props.showFullScreenIcon ? props.showFullScreenIcon : true\r\n  )\r\n\r\n  const [displayThumbnailIcon, setDisplayThumbnailIcon] = useState<boolean>(\r\n    props.showThumbnailIcon ? props.showThumbnailIcon : true\r\n  )\r\n\r\n  const [displaySlideshowIcon, setDisplaySlideshowIcon] = useState<boolean>(\r\n    props.showSlideshowIcon ? props.showSlideshowIcon : true\r\n  )\r\n\r\n  const [rotateImgIcon, setRotateImgIcon] = useState<boolean>(\r\n    props.rotateIcon ? props.rotateIcon : false\r\n  )\r\n\r\n  const [displayMagnificationIcons, setDisplayMagnificationIcons] = useState<boolean>(\r\n    props.showMagnificationIcons ? props.showMagnificationIcons : true\r\n  )\r\n\r\n  const [nextArrowElem, setNextArrowElem] = useState(\r\n    props.nextArrow ? props.nextArrow : null\r\n  )\r\n\r\n  const [isImageComponent, setImageComponent] = useState(\r\n    props.imageComponent ? props.imageComponent : null\r\n  )\r\n\r\n  const [prevArrowElem, setPrevArrowElem] = useState(\r\n    props.prevArrow ? props.prevArrow : null\r\n  )\r\n\r\n  const [modalCloseOption, setModalCloseOption] = useState(\r\n    props.modalClose ? props.modalClose : \"default\"\r\n  )\r\n\r\n  const [showDownloadBtn, setShowDownloadBtn] = useState(\r\n    props.downloadImages ? props.downloadImages : false\r\n  )\r\n\r\n  const [navigationDots, setNavigationDots] = useState(\r\n    props.showNavigationDots ? props.showNavigationDots : false\r\n  )\r\n\r\n  const [metadataLocale, setMetadataLocale] = useState(props.metadataTimeLocale ? props.metadataTimeLocale : \"en-US\")\r\n\r\n  const [isRTL, setIsRTL] = useState(props.rtl ? props.rtl : false)\r\n\r\n  const [frameworkID, setFrameworkID] = useState(\r\n    props.framework ? props.framework : ''\r\n  )\r\n  const [lightboxIdentifier, setLightboxIdentifier] = useState(\r\n    props.lightboxIdentifier ? props.lightboxIdentifier : false\r\n  )\r\n  const [imageFullScreen, setImageFullScreen] = useState(\r\n    props.fullScreen ? props.fullScreen : false\r\n  )\r\n  const [licenseKey, setLicenseKey] = useState(\r\n    props.licenseKey ? props.licenseKey : ''\r\n  )\r\n\r\n  const [displayLoader, setDisplayLoader] = useState(\r\n    props.showLoader ? props.showLoader : false\r\n  )\r\n\r\n  const [customControlComponent, setCustomControlComponent] = useState(\r\n    props.controlComponent ? props.controlComponent : false\r\n  )\r\n\r\n  const [startingIndex, setStartingIndex] = useState(\r\n    props.startingSlideIndex ? props.startingSlideIndex : 0\r\n  )\r\n\r\n  // Styling/theming\r\n  const [backgroundColor, setBackgroundColor] = useState(\r\n    props.backgroundColor\r\n      ? props.backgroundColor\r\n      : themes[defaultTheme].background\r\n  )\r\n  const [iconColor, setIconColor] = useState(\r\n    props.iconColor ? props.iconColor : null\r\n  )\r\n  const [textColor, setTextColor] = useState(\r\n    props.textColor ? props.textColor : themes[defaultTheme].textColor\r\n  )\r\n  const [showControlsBar, setShowControlsBar] = useState(\r\n    props.showControlsBar ? props.showControlsBar : true\r\n  )\r\n\r\n  const [imgCaptionPlacement, setImgCaptionPlacement] = useState(\r\n    props.captionPlacement ? props.captionPlacement : \"below\"\r\n  )\r\n\r\n  const [coverMode, setCoverMode] = useState(\r\n    props.useCoverMode ? props.useCoverMode : false\r\n  )\r\n\r\n  const [displayImgMetadata, setDisplayImgMetadata] = useState(\r\n    props.displayMetadata ? props.displayMetadata : false\r\n  )\r\n\r\n  const [showImgMetadataPanel, setShowImgMetadataPanel] = useState(false)\r\n\r\n  const [imgMetadata, setImgMetadata] = useState({})\r\n\r\n  const [showThumbnails, setShowThumbnails] = useState(\r\n    props.showThumbnails ? props.showThumbnails : false\r\n  )\r\n  const [animatedThumbnails, setAnimatedThumbnails] = useState(\r\n    props.animateThumbnails ? props.animateThumbnails : true\r\n  )\r\n  const [imgAnimation, setImgAnimation] = useState(\r\n    props.imgAnimation ? props.imgAnimation : 'imgDrag'\r\n  )\r\n  const [arrowStyle, setArrowStyle] = useState(\r\n    props.arrowStyle ? props.arrowStyle : 'dark'\r\n  )\r\n\r\n  const [YTVideoCurrentlyPlaying, setYTVideoCurrentlyPlaying] = useState(false)\r\n\r\n\r\n  const [isBrowserFullScreen, setIsBrowserFullScreen] = useState(false)\r\n  const [enableMagnifyingGlass, setMagnifyingGlass] = useState(false)\r\n  const [imagesLoaded, setImagesLoaded] = useState(false)\r\n\r\n  const imageRef: React.RefObject<HTMLImageElement> = useRef(null)\r\n\r\n  const [zoomIdx, setZoomIdx] = useState(0)\r\n\r\n  const [imgContainHeight, setImgContainHeight] = useState(500)\r\n  const [imgContainWidth, setImgContainWidth] = useState(426)\r\n  const [isInit, setIsInit] = useState(false)\r\n  const [currentRotation, setCurrentRotation] = useState(0)\r\n\r\n  const { open } = props;\r\n  const previousValues: any = usePrevious({ open });\r\n\r\n  // Refs\r\n  const zoomReferences = useRef<(ReactZoomPanPinchRef | null)[]>([])\r\n  const videoReferences = useRef({})\r\n  const imageRefs = useRef([])\r\n\r\n  const btnRef = useRef(null)\r\n  const [videoElements, setVideoElements] = useState({});\r\n\r\n  const [isLoading, setIsLoading] = useState(true);\r\n  const [noWindow, setNoWindow] = useState(props.noWindow ? props.noWindow : false)\r\n\r\n  \r\n  const [touchStart, setTouchStart] = useState<any>(0)\r\n  const [touchEnd, setTouchEnd] = useState<any>(0)\r\n\r\n  const [mouseStartX, setMouseStartX] = useState<any>(0)\r\n  const [mouseStartY, setMouseStartY] = useState<any>(0)\r\n\r\n  const minimumSwipeDistance = 50 \r\n\r\n  const onTouchStart = (e) => {\r\n    setTouchEnd(null)\r\n    setTouchStart(e.targetTouches[0].clientX)\r\n  }\r\n\r\n  const onTouchMove = (e) => setTouchEnd(e.targetTouches[0].clientX)\r\n\r\n  const onTouchEnd = () => {\r\n    // only move to new image if imgAnimation set to \"fade\"\r\n    if (touchStart != null && touchEnd != null && imgAnimation == \"fade\") {\r\n      const distance: any = touchStart - touchEnd\r\n      if (distance != null) {\r\n        const isLeftSwipe = distance > minimumSwipeDistance\r\n        const isRightSwipe = distance < -minimumSwipeDistance\r\n        if (isLeftSwipe) {\r\n          nextSlide()\r\n        }\r\n        else if (isRightSwipe) {\r\n          prevSlide();\r\n        } \r\n      }\r\n    }\r\n\r\n  }\r\n\r\n  const delta = 6;\r\n\r\n  const onMouseDown = (event) => {\r\n    setMouseStartX(event.pageX)\r\n    setMouseStartY(event.pageY)\r\n  }\r\n\r\n  const onMouseUp = (event) => {\r\n\r\n    if (imgAnimation == \"fade\" && zoomedIn == false) {\r\n      const differenceX = Math.abs(event.pageX - mouseStartX);\r\n    \r\n      if (differenceX > delta) {\r\n        const isLeftDragMotion = (mouseStartX - event.pageX) > delta;\r\n        const isRightDragMotion = (mouseStartX - event.pageX) < -delta;\r\n        \r\n        if (isLeftDragMotion) {\r\n          nextSlide();\r\n        }\r\n        else if (isRightDragMotion) {\r\n          prevSlide()\r\n        }\r\n      }\r\n    }\r\n\r\n  }\r\n\r\n  const createCustomThumbnailBorder = (): string | void => {\r\n    if (props.thumbnailBorder) {\r\n      return `solid ${props.thumbnailBorder} 2px`\r\n    }\r\n  }\r\n\r\n  const [thumbnailBorder, setThumbnailBorder] = useState(\r\n    props.thumbnailBorder\r\n      ? createCustomThumbnailBorder()\r\n      : themes[defaultTheme].thumbnailBorder\r\n  )\r\n\r\n  const [emblaRef, emblaApi] = useEmblaCarousel(reactSwipeOptions);\r\n  const [emblaThumbsRef, emblaThumbsApi] = useEmblaCarousel(thumbnailSwipeOptions)\r\n\r\n  const getLoaderThemeClass = () => {\r\n    if (props.theme) {\r\n      if (props.theme == 'night' || props.theme == 'lightbox') {\r\n        return styles.nightLoader\r\n      } else if (props.theme == 'day') {\r\n        return styles.dayLoader\r\n      }\r\n    }\r\n    return styles.nightLoader\r\n  }\r\n\r\n  const scrollPrev = useCallback(() => {\r\n    if (emblaApi) { emblaApi.scrollPrev();\r\n    }\r\n\r\n  }, [emblaApi])\r\n\r\n  const scrollNext = useCallback(() => {\r\n    if (emblaApi) {\r\n      emblaApi.scrollNext() \r\n\r\n    }\r\n  }, [emblaApi])\r\n\r\n  const variants = {\r\n    active: {\r\n      opacity: 1,\r\n    },\r\n    inactive: {\r\n      opacity: 0,\r\n    }\r\n  }\r\n\r\n  const isImageCaption = (placement) => {\r\n    if (placement != imgCaptionPlacement) {\r\n      return false;\r\n    }\r\n    if (props.images && props.images.length > 0) {\r\n      if (props.images[slideIndex]?.caption) {\r\n        return true\r\n      }\r\n    }\r\n    return false\r\n  }\r\n\r\n  const getInnerContainerStyles = () => {\r\n\r\n    if (isImageCaption(\"above\")) {\r\n      return styles.innerContainerWithTopCaption\r\n    }\r\n    if (rotateImgIcon) {\r\n      return styles.rotateImgInnerContainer;\r\n    }\r\n    return styles.slideshowInnerContainerThumbnails\r\n   \r\n  }\r\n\r\n  const displayDownloadBtn = () => {\r\n    if (isVideo(slideIndex)) {\r\n      return false\r\n    } else {\r\n      return showDownloadBtn\r\n    }\r\n  }\r\n\r\n  function handleWindowResize() {\r\n    if (!noWindow) {\r\n      setWidth(window.innerWidth)\r\n    }\r\n  }\r\n\r\n  const shouldDisplayMagnifyingGlassIcon = () => {\r\n    if (isVideo(slideIndex)) {\r\n      return false\r\n    }\r\n    if (isMobile == true) {\r\n      return false\r\n    }\r\n    if (imageFullScreen == true) {\r\n      return false\r\n    }\r\n\r\n    if (magnifyingGlassFeature == true) {\r\n      return true\r\n    }\r\n    return false\r\n  }\r\n\r\n  const getImageStyle = () => {\r\n    let styleObject = {};\r\n    if (imageFullScreen) {\r\n      if (props.fullScreenFillMode) {\r\n        styleObject[\"objectFit\"] = props.fullScreenFillMode;\r\n      }\r\n      else {\r\n        styleObject[\"objectFit\"] = \"cover\"\r\n\r\n      }\r\n      \r\n    }\r\n    if (!imageFullScreen && !rotateImgIcon) {\r\n      if (isImageCaption(imgCaptionPlacement) && showThumbnails == false) {\r\n        styleObject[\"height\"] = \"67vh\"\r\n      }\r\n      if (isImageCaption(imgCaptionPlacement) && showThumbnails) {\r\n        styleObject[\"height\"] = \"67vh\"\r\n      }\r\n      \r\n      if (props.thumbnailImgAnim && showThumbnails == false) {\r\n        styleObject[\"height\"] = \"87vh\"\r\n      }\r\n      else if (isImageCaption(imgCaptionPlacement) != true) {\r\n        styleObject[\"height\"] = \"77vh\"\r\n\r\n      }\r\n      if (props.thumbnailImgAnim && showThumbnails) {\r\n        styleObject[\"height\"] = \"67vh\"\r\n      }\r\n    }\r\n\r\n    if (rotateImgIcon && showThumbnails) {\r\n      styleObject[\"width\"] = \"57vw\"\r\n      styleObject[\"marginTop\"] = \"10vh\"\r\n    }\r\n    else if (rotateImgIcon && showThumbnails == false) {\r\n      styleObject[\"width\"] = \"57vw\"\r\n      styleObject[\"marginTop\"] = \"15vh\"\r\n    }\r\n\r\n\r\n    if (isRounded) {\r\n      styleObject[\"borderRadius\"] = \"20px\";\r\n    }\r\n    if (modalCloseOption == \"clickOutside\") {\r\n      styleObject[\"pointerEvents\"] = \"auto\"\r\n    }\r\n    if (isImageComponent && showThumbnails == false && !isMobile) {\r\n      styleObject[\"height\"] = \"85vh\";\r\n    }\r\n    return styleObject;\r\n  }\r\n\r\n  const shouldDisplaySlideshowIcon = () => {\r\n\r\n    if (props.showSlideshowIcon != undefined) {\r\n      return props.showSlideshowIcon;\r\n    }\r\n\r\n    if (images) {\r\n      if (images.length == 1) {\r\n        return false;\r\n      }\r\n    }\r\n    else if (props.images) {\r\n      if (props.images.length == 1) {\r\n        return false;\r\n      }\r\n    }\r\n\r\n    return true;\r\n  }\r\n\r\n  const navigationClick = (index) => {\r\n    initLoader(index)\r\n    setCurrentSlide(index)\r\n  }\r\n\r\n  const checkModalClick = (e) => {\r\n    const modals = document.getElementsByClassName('imageModal')\r\n    let arr_modals = Array.from(modals)\r\n    for (let i = 0; i < arr_modals.length; i++) {\r\n      let elem = arr_modals[i]\r\n      let clickInside = elem.contains(e.target);\r\n\r\n      if (clickInside) {\r\n        return\r\n      }\r\n    }\r\n\r\n    closeModal()\r\n  }\r\n\r\n  const isZoomEnabled = () => {\r\n    if (disableZoom == true) {\r\n      return false;\r\n    }\r\n  }\r\n\r\n  const getRTLIndex = (img_gallery_length, i) => {\r\n    let index\r\n    if (i == 0) {\r\n      index = img_gallery_length - 1\r\n    } else if (i == img_gallery_length - 1) {\r\n      index = 0\r\n    } else {\r\n      index = img_gallery_length - i - 1\r\n    }\r\n    return index\r\n  }\r\n\r\n  const getMetadataTextColor = () => {\r\n    if (props.theme) {\r\n      if (themes[props.theme]) {\r\n        return themes[props.theme].metadataTextColor;\r\n      }\r\n    }\r\n    else {\r\n      return themes[defaultTheme].metadataTextColor;\r\n    }\r\n  }\r\n\r\n  const fullScreen = () => {\r\n    let lightbox = document.getElementById('slideshowAnim')\r\n    openFullScreen(lightbox)\r\n    setIsBrowserFullScreen(true)\r\n    initFullScreenChangeEventListeners()\r\n  }\r\n\r\n  const exitFullScreenHandler = () => {\r\n    //in full screen mode\r\n    if (\r\n      document['webkitIsFullScreen'] ||\r\n      document['mozFullScreen'] ||\r\n      document['msFullscreenElement']\r\n    ) {\r\n      setIsBrowserFullScreen(true)\r\n    } else {\r\n      if (isBrowserFullScreen) {\r\n        closeFullScreen(document)\r\n      }\r\n      removeFullScreenChangeEventListeners()\r\n      setIsBrowserFullScreen(false)\r\n    }\r\n  }\r\n\r\n  const exitFullScreen = () => {\r\n    closeFullScreen(document)\r\n    removeFullScreenChangeEventListeners()\r\n    setIsBrowserFullScreen(false)\r\n  }\r\n\r\n  const emblaSlideSelect = useCallback((emblaApi) => {    \r\n  }, [])\r\n\r\n  useEffect(() => {    \r\n    if (emblaApi) emblaApi.on('slidesInView', emblaSlideSelect)  }, \r\n  [emblaApi, emblaSlideSelect])\r\n\r\n\r\n  const updateImageSlideshow = (newDirection) => {\r\n    if (isRTL) {\r\n      scrollPrev()\r\n    } else {\r\n      scrollNext();\r\n    }\r\n\r\n    setImgSlideIndex([imgSlideIndex + newDirection, newDirection])\r\n    if (isRTL) {\r\n      setZoomIdx(zoomIdx - 1 < 0 ? images.length - 1 : zoomIdx - 1)\r\n    } else {\r\n      setZoomIdx(zoomIdx + 1 >= images.length ? 0 : zoomIdx + 1)\r\n    }\r\n  }\r\n\r\n  const displayArrows = () => {\r\n    if (props.showArrows == false) {\r\n      return false;\r\n    }\r\n    if (props.images) {\r\n      if (props.images.length == 1) {\r\n        return false;\r\n      }\r\n    }\r\n    else if (images.length == 1) {\r\n      return false;\r\n    }\r\n\r\n    return true;\r\n  }\r\n\r\n  const initLoader = (newIndex) => {\r\n    if (props.showLoader && props.images) {\r\n      if (!isVideo(newIndex) && images[newIndex].loaded != true) {\r\n        setDisplayLoader(true)\r\n      } else if (\r\n        props.showLoader &&\r\n        props.images &&\r\n        images[newIndex]['loaded']\r\n      ) {\r\n        setDisplayLoader(false)\r\n      }\r\n    }\r\n  }\r\n\r\n  const getImageCaption = (): string => {\r\n    if (props.images && props.images.length > 0) {\r\n      return props.images[slideIndex].caption;\r\n    }\r\n    return \"\"\r\n  }\r\n\r\n  const getArrowStyle = (): string | void => {\r\n    if (arrowStyle == 'dark') {\r\n      return styles.darkIcon\r\n    } else if (arrowStyle == 'light') {\r\n      return styles.lightIcon\r\n    }\r\n  }\r\n\r\n  const getIconStyle = (): string | undefined => {\r\n    if (arrowStyle == 'dark') {\r\n      return styles.darkHeaderIcon\r\n    }\r\n    else if (arrowStyle == 'light') {\r\n      return styles.lightHeaderIcon\r\n    }\r\n  }\r\n\r\n  const setCurrentSlide = (newIndex) => {\r\n    let newDirection\r\n    if (newIndex > imgSlideIndex) {\r\n      newDirection = 1\r\n    } else {\r\n      newDirection = -1\r\n    }\r\n\r\n    setZoomIdx(newIndex)\r\n\r\n    setImgSlideIndex([newIndex, newDirection])\r\n\r\n    if (emblaApi) {\r\n      emblaApi.scrollTo(newIndex)\r\n    }\r\n  }\r\n\r\n  const dispatchOpenEvent = () => {\r\n    if (props.onOpen) {\r\n      props.onOpen(slideIndex, images[slideIndex]);\r\n    }\r\n    if (props.onSelect) {\r\n      props.onSelect(slideIndex, images[slideIndex])\r\n    }\r\n\r\n  }\r\n\r\n  const dispatchCloseEvent = () => {\r\n    if (props.onClose) {\r\n      props.onClose(slideIndex)\r\n    }\r\n  }\r\n\r\n  const dispatchNextImgEvent = (newIndex) => {\r\n    if (props.onNext) {\r\n      props.onNext(newIndex, images[newIndex])\r\n    }\r\n  }\r\n\r\n  const dispatchPrevImgEvent = (newIndex) => {\r\n    if (props.onPrev) {\r\n      props.onPrev(newIndex, images[newIndex])\r\n    }\r\n  }\r\n\r\n  const closeModal = () => {\r\n    //reset zoom ref\r\n    setZoomIdx(0)\r\n\r\n    if (isBrowserFullScreen) {\r\n      exitFullScreen()\r\n    }\r\n\r\n    // ensure slideshow is paused\r\n    if (isSlideshowPlaying) {\r\n      setIsSlideshowPlaying(false)\r\n    }\r\n\r\n    setShowModal(false)\r\n    setIsOpen(false)\r\n    setCarouselReady(false)\r\n    setEmblaReinitialized(false)\r\n    setCurrentRotation(0);\r\n    //resetRotation()\r\n    if (prevFocusedElem) prevFocusedElem?.focus();\r\n  }\r\n\r\n  const openModal = (num) => {\r\n\r\n    if (emblaApi) {\r\n      emblaApi.reInit();\r\n      if (emblaThumbsApi) {\r\n        emblaThumbsApi?.scrollTo(emblaApi.selectedScrollSnap())\r\n      }\r\n    }\r\n    setImgSlideIndex([num, 1])\r\n    setShowModal(true)\r\n    setIsOpen(true)\r\n\r\n  }\r\n\r\n  const setItemLoaded = (index) => {\r\n    if (props.images) {\r\n\r\n      setImages(images =>\r\n        images.map((img, i) => index === i ? {\r\n          ...img,\r\n          loaded: true\r\n        } : img)\r\n      )\r\n\r\n    }\r\n  }\r\n\r\n  const setImagesItemLoaded = (index) => {\r\n    setImages(images =>\r\n      images.map((img, i) => index === i ? {\r\n        ...img,\r\n        loaded: true\r\n      } : img)\r\n    )\r\n  }\r\n\r\n  const resetMedia = (slide_index) => {\r\n    resetVideo(slide_index)\r\n    resetImage()\r\n  }\r\n\r\n  const initImgMetadataPanel = () => {\r\n    if (isMobile && showImgMetadataPanel) {\r\n      setShowImgMetadataPanel(false)\r\n    }\r\n  }\r\n\r\n  const initSlide = (newSlideIndex) => {\r\n    setImgSlideIndex([newSlideIndex, 1])\r\n    let wrap_slide_index = wrapNums(0, images.length, newSlideIndex)\r\n    setZoomIdx(wrap_slide_index)\r\n    initLoader(wrap_slide_index);\r\n    imageRefs.current[wrap_slide_index].classList.add(`${styles.rotate_img}`)\r\n\r\n    if (displayImgMetadata) {\r\n      initImgMetadataPanel();\r\n\r\n      if (!imgMetadata[wrap_slide_index]) {\r\n        setIsLoading(true)\r\n      }\r\n    }\r\n\r\n  }\r\n\r\n  const nextSlide = () => {\r\n    scrollNext();\r\n    initSlide(imgSlideIndex + 1);\r\n    if (imgAnimation == \"fade\") {\r\n      // since embla carousel not used for fade animations, dispatch next event manually\r\n      dispatchNextImgEvent((imgSlideIndex + 1) % images.length)\r\n    }\r\n  }\r\n\r\n  const prevSlide = () => {\r\n    scrollPrev()\r\n    initSlide(imgSlideIndex - 1);\r\n    if (imgAnimation == \"fade\") {\r\n      // since embla carousel not used for fade animations, dispatch next event manually\r\n      dispatchPrevImgEvent((imgSlideIndex - 1) % images.length)\r\n    }\r\n  }\r\n\r\n  const setThumbnailStartIndex = (index) => {\r\n    let thumbnailSwipeOptionConfig = thumbnailSwipeOptions;\r\n    thumbnailSwipeOptionConfig.startIndex = index\r\n    setThumbnailSwipeOptions(thumbnailSwipeOptionConfig)\r\n  }\r\n\r\n  const openModalWithSlideNum = (index) => {\r\n\r\n    let reactSwipeOptionConfig = reactSwipeOptions\r\n    reactSwipeOptionConfig.startIndex = index\r\n    setReactSwipeOptions(reactSwipeOptionConfig)\r\n    setThumbnailStartIndex(index)\r\n    setZoomIdx(index)\r\n    openModal(index)\r\n  }\r\n\r\n  const saveImage = () => {\r\n    if (props.images.length > 0) {\r\n      if (props.images[slideIndex].original) {\r\n        // saveAs(props.images[slideIndex].original, 'image.jpg')\r\n      } else {\r\n        // saveAs(props.images[slideIndex]['src'], 'image.jpg')\r\n      }\r\n    } else {\r\n      if (images[slideIndex].src) {\r\n        // saveAs(images[slideIndex].src!, 'image.jpeg')\r\n      }\r\n    }\r\n  }\r\n\r\n\r\n\r\n  const playSlideshow = () => {\r\n    setMagnifyingGlass(false)\r\n    if (isRTL) {\r\n      updateImageSlideshow(-1)\r\n    } else {\r\n      updateImageSlideshow(1)\r\n    }\r\n    setIsSlideshowPlaying(true)\r\n  }\r\n\r\n  const stopSlideshow = () => {\r\n    setIsSlideshowPlaying(false)\r\n  }\r\n\r\n  const getEmbedIndex = (slide_index, elems) => {\r\n    if (props.images) {\r\n      let iframe_index = 0;\r\n\r\n      for (let i = 0; i < props.images.length; i++) {\r\n        let item = props.images[i];\r\n        if ((item.type == \"customVideoEmbed\" || item.type == \"yt\")) {\r\n          if (i == slide_index) {\r\n            iframe_index++;\r\n            break;\r\n          }\r\n          else {\r\n            iframe_index++;\r\n          }\r\n        }\r\n      }\r\n\r\n      return iframe_index - 1;\r\n    }\r\n  }\r\n\r\n  const getEmblaClass = (index) => {\r\n\r\n    if (displayImgMetadata) {\r\n      return styles.emblaSlideGrid;\r\n    }\r\n\r\n    if (slideIndex == index && imgAnimation == \"fade\") {\r\n      return `${styles.imgfade} ${styles.emblaSlide} ${styles.emblaSlideSelected}`\r\n    }\r\n    else if (imgAnimation == \"fade\") {\r\n      return `${styles.imgfade} ${styles.emblaSlide}`;\r\n    }\r\n    else {\r\n      return styles.emblaSlide;\r\n    }\r\n  }\r\n\r\n  const resetVideo = (slide_index) => {\r\n    if (props.images) {\r\n      let elem = props.images[slide_index]\r\n      if (elem) {\r\n        if (elem.type == 'htmlVideo') {\r\n          videoReferences.current[slide_index].pause()\r\n        }\r\n        else if (elem.type == \"yt\") {\r\n          if (videoElements[slide_index]) {\r\n            videoElements[slide_index].target.pauseVideo()\r\n\r\n          }\r\n        }\r\n        else if (elem.type == \"customVideoEmbed\") {\r\n          let lightboxjs_elem = document.getElementById(\"lightboxContainer\");\r\n          let elems = lightboxjs_elem?.querySelectorAll(\"iframe\");\r\n          if (elems) {\r\n            let iframe_elem_index = getEmbedIndex(slide_index, elems);\r\n            if (iframe_elem_index != undefined && iframe_elem_index >= 0) {\r\n              // reset iframe\r\n              let iframe = elems[iframe_elem_index];\r\n              let iframe_src = iframe.src\r\n              iframe.src = iframe_src;\r\n            }\r\n\r\n          }\r\n\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  const getNavigationDot = (index) => {\r\n    return (\r\n      <button style={slideIndex === index ? { backgroundColor: \"cornflowerblue\" } : {}}\r\n        className={`${styles.navigationDot} imageModal`} onClick={() => { navigationClick(index) }}></button>\r\n\r\n    )\r\n  }\r\n\r\n  const getThumbnailsOuterContainerStyle = () => {\r\n    let style = {};\r\n    if (isImageCaption(\"below\")) {\r\n      if (showThumbnails) {\r\n        style[\"height\"] = \"21vh\" \r\n      }\r\n      else {\r\n        style[\"height\"] = \"12vh\"\r\n      }\r\n      style[\"backgroundColor\"] = backgroundColor;\r\n    }\r\n    return style;\r\n\r\n  }\r\n\r\n\r\n\r\n  const getImageThumbnail = (img, index, isNextJS, props) => {\r\n    return (\r\n      <div key={\"thumbnail_slide_\" + index} className={`${styles.emblaThumbsSlide}`}>\r\n\r\n        <img\r\n          className={`${styles.thumbnail} imageModal ${props.thumbnailImgClass ? props.thumbnailImgClass : \"\"}  `}\r\n          src={isNextJS == true ? getThumbnailImgSrcNext(img, index) : getThumbnailImgSrc(img, index)}\r\n          alt={img.alt}\r\n          onLoad={() => setImagesLoaded(true)}\r\n          style={\r\n            slideIndex === index\r\n              ? { border: thumbnailBorder }\r\n              : { border: inactiveThumbnailBorder }\r\n          }\r\n          key={\"thumbnail_\" + index}\r\n          onClick={(event) => {\r\n\r\n            if (props.onThumbnailClick) {\r\n              props.onThumbnailClick(index, img);\r\n            }\r\n            navigationClick(index);\r\n          }}\r\n        />\r\n      </div>\r\n    )\r\n  }\r\n\r\n  const handleError = (event, index) => {\r\n    if (props.onImgError) {\r\n      props.onImgError(event, images[slideIndex], index);\r\n\r\n    }\r\n  }\r\n\r\n  const rotateImage = () => {\r\n    let img_elem = imageRefs.current[zoomIdx];\r\n    let transform_val = img_elem.style.transform;\r\n    \r\n    let current_rotation = 0;\r\n    if (transform_val) {\r\n      var reg = /rotate\\(([0-9.]+)deg\\)/;\r\n      current_rotation = parseFloat(transform_val.match(reg)[1]);\r\n    }\r\n\r\n    let newRotation = current_rotation + 90;\r\n\r\n    let res = newRotation / 90;\r\n\r\n    img_elem.style.transform = `rotate(${newRotation}deg)`\r\n\r\n    setCurrentRotation(newRotation);\r\n    if (props.onRotate) {\r\n      let rotationVal = newRotation;\r\n      if (newRotation > 360) {\r\n        rotationVal = newRotation % 360;\r\n      }\r\n      props.onRotate(rotationVal);\r\n    }\r\n  }\r\n\r\n\r\nconst resetRotation = () => {\r\n  imageRefs.current[zoomIdx].classList.remove(`${styles.rotate_img}`)\r\n\r\n  imageRefs.current[zoomIdx].style.transform = \"\";\r\n    setCurrentRotation(0)\r\n}\r\n\r\n  const resetImage = () => {\r\n    if (enableMagnifyingGlass) {\r\n      initMagnifyingGlass()\r\n    } else {\r\n      if (zoomReferences.current[zoomIdx] != null) {\r\n        zoomReferences.current[zoomIdx]!.resetTransform()\r\n      }\r\n    }\r\n    // resetRotation()\r\n  }\r\n\r\n  const getThumbnailImgSrc = (img, index) => {\r\n\r\n    if (props.images && props.images.length > 0) {\r\n      if (props.images[index].thumbnailSrc) {\r\n        return props.images[index].thumbnailSrc\r\n      }\r\n    }\r\n\r\n    if (isVideo(index) && img.thumbnail) {\r\n      return img.thumbnail\r\n    }\r\n    else {\r\n      return img.src\r\n    }\r\n  }\r\n\r\n  const getThumbnailImgSrcNext = (img, index) => {\r\n    if (img.thumbnailSrc) {\r\n      return img.thumbnailSrc\r\n    }\r\n\r\n    else if (isVideo(index)) {\r\n      return img.thumbnail\r\n    } else {\r\n      let img_src = img.src\r\n      if (\r\n        typeof img_src === 'object' &&\r\n        !Array.isArray(img_src) &&\r\n        img_src !== null\r\n      ) {\r\n        return img_src.src\r\n      } else {\r\n        return img_src\r\n      }\r\n    }\r\n  }\r\n\r\n  const isAnimImageComponent = () => {\r\n    if (images) {\r\n      if (images.length == 1) {\r\n        return true;\r\n      }\r\n    }\r\n    return false;\r\n  }\r\n\r\n  const initWrapperClassname = () => {\r\n\r\n    let classNameStr = \"\";\r\n    if (props.className) {\r\n      classNameStr += `${props.className} `\r\n    }\r\n    if (isAnimImageComponent()) {\r\n      if (props.imgWrapperClassName) {\r\n        classNameStr += `${props.imgWrapperClassName} `\r\n      }\r\n    }\r\n\r\n    classNameStr += `${styles.lightboxjs}`;\r\n\r\n    return classNameStr;\r\n  }\r\n\r\n  const initStyling = () => {\r\n    if (props.theme) {\r\n      if (themes[props.theme]) {\r\n        setBackgroundColor(themes[props.theme].background)\r\n        // setIconColor(themes[props.theme].iconColor)\r\n        // setThumbnailBorder(themes[props.theme].thumbnailBorder)\r\n        setTextColor(themes[props.theme].textColor)\r\n      }\r\n    }\r\n\r\n    if (props.fullScreen) {\r\n      if (props.fullScreen == true) {\r\n        setImgAnimation(props.imgAnimation && props.imgAnimation == \"imgDrag\" ? props.imgAnimation : \"fade\")\r\n        setIsRounded(false)\r\n      }\r\n    }\r\n  }\r\n\r\n  const getMetadataPanel = () => {\r\n\r\n    let imgMetadataItem = imgMetadata[slideIndex];\r\n\r\n    if (imgMetadataItem) {\r\n      let element = <div className={styles.metadataPanel}>\r\n        <b>Filename</b>\r\n        {imgMetadataItem.name ? <p>{imgMetadataItem.name}</p> : null}\r\n\r\n        {imgMetadataItem.createDate ?\r\n          <div>\r\n            <b>Captured Time</b>\r\n            <p>{imgMetadataItem.createDate.toString()}</p>\r\n          </div>\r\n\r\n          : null}\r\n\r\n        {\r\n          imgMetadataItem.width && imgMetadataItem.height ?\r\n            <div>\r\n              <b>Resolution</b>\r\n              <p>{imgMetadataItem.width}*{imgMetadataItem.height}</p>\r\n            </div> : null\r\n        }\r\n\r\n        {imgMetadataItem.isoData || imgMetadataItem.fNumber || imgMetadataItem.shutterSpeed ?\r\n          <div>\r\n            <b>Image Details</b>\r\n            {\r\n              imgMetadataItem.isoData ? <span>ISO {imgMetadataItem.isoData}</span>\r\n                : null\r\n            }\r\n\r\n            {\r\n              imgMetadataItem.fNumber ? <span>f{imgMetadataItem.fNumber}</span> : null\r\n            }\r\n\r\n            {\r\n              imgMetadataItem.shutterSpeed ? <span>Shutter speed: {imgMetadataItem.shutterSpeed}</span> : null\r\n            }\r\n          </div> : null\r\n\r\n        }\r\n\r\n      </div>\r\n      return element;\r\n    }\r\n\r\n  }\r\n\r\n  const imageSlideElement = (index) => {\r\n    let imageElem;\r\n    if (!props.images) {\r\n      imageElem = (\r\n        <img\r\n          className={`imageModal ${fullImg && props.thumbnailImgAnim ? styles.fullImg : false}  \r\n          ${props.imgElemClassname ? props.imgElemClassname : ''}\r\n        ${styles.lightboxImg} \r\n        ${enableMagnifyingGlass\r\n              ? styles.maxWidthFull\r\n              : styles.maxWidthWithoutMagnifier\r\n            }  ${styles.containImg} `}\r\n          style={getImageStyle()}\r\n          ref={el => imageRefs.current[index] = el}\r\n          loading='lazy'\r\n          src={\r\n            images[index].original ? images[index].original : images[index].src\r\n          }\r\n          onError={(event) => {\r\n            handleError(event, index)\r\n          }}\r\n          onLoad={(img) => {\r\n            if (index == slideIndex) {\r\n              setDisplayLoader(false)\r\n            }\r\n\r\n            if (props.images) {\r\n              setItemLoaded(index)\r\n            } else {\r\n              setImagesItemLoaded(index)\r\n            }\r\n\r\n          }}\r\n          id='img'\r\n        />\r\n\r\n      )\r\n    } else if (props.images && props.render) {\r\n      imageElem = props.render.imgSlide(props.images[index])\r\n    } else {\r\n      let img_link\r\n\r\n      // check if object (Next.js local image imports are passed as objects with a src attribute)\r\n      if (props.images) {\r\n        if (\r\n          typeof images[index].src === 'object' &&\r\n          !Array.isArray(images[index].src) &&\r\n          images[index].src !== null\r\n        ) {\r\n          img_link = images[index].src?.src\r\n        } else if (props.coverImageInLightbox == true) {\r\n          img_link = images[index].src\r\n        } else {\r\n          img_link = images[index].src\r\n        }\r\n      }\r\n\r\n\r\n      imageElem = (\r\n        <img\r\n          className={`imageModal  ${fullImg && props.thumbnailImgAnim ? styles.fullImg : false}   \r\n           ${props.imgElemClassname ? props.imgElemClassname : ''}\r\n        ${ styles.lightboxImg} \r\n        ${enableMagnifyingGlass\r\n              ? styles.maxWidthFull\r\n              : styles.maxWidthWithoutMagnifier\r\n            } ${styles.containImg} `}\r\n          ref={el => imageRefs.current[index] = el}\r\n          loading='lazy'\r\n          style={getImageStyle()}\r\n          src={\r\n            images[index].original\r\n              ? images[index].original\r\n              : img_link\r\n          }\r\n          onError={(event) => {\r\n            handleError(event, index)\r\n          }}\r\n          onLoad={(img) => {\r\n            if (index == slideIndex) {\r\n              setDisplayLoader(false)\r\n            }\r\n\r\n            if (props.images) {\r\n              setItemLoaded(index)\r\n            } else {\r\n              setImagesItemLoaded(index)\r\n            }\r\n\r\n          }}\r\n          id='img'\r\n        />\r\n      )\r\n    }\r\n\r\n    return imageElem\r\n  }\r\n\r\n  const getCloseIconBtnStyle = () => {\r\n    let style_object = {}\r\n    if (iconColor) {\r\n      style_object =  { color: iconColor }\r\n    }\r\n    if (props.closeIconBtnStyle) {\r\n      let closeIconBtnStyleKeys = Object.keys(props.closeIconBtnStyle)\r\n      for (let i = 0; i < closeIconBtnStyleKeys.length; i++) {\r\n        let keyName = closeIconBtnStyleKeys[i];\r\n        let style_obj = props.closeIconBtnStyle[keyName]\r\n        style_object[keyName] =  style_obj;\r\n      }\r\n    }\r\n    return style_object;\r\n\r\n  }\r\n\r\n  const isPanningDisabled = () => { \r\n    if ((isMobile || isTablet || isTabletUserAgent) && zoomedIn == false) {\r\n      return true;\r\n    }\r\n    if ((isMobile || isTablet || isTabletUserAgent) && zoomedIn) {\r\n      return false;\r\n    }\r\n    return false;\r\n  }\r\n\r\n  const getImageFilename = (img_src) => {\r\n    let img_src_split = img_src.split(\"/\");\r\n    let name = img_src_split[img_src_split.length - 1];\r\n    return name;\r\n  }\r\n\r\n  const parseCreateDate = (js_date) => {\r\n\r\n    if (js_date) {\r\n      let date = js_date.getDate();\r\n      let month = js_date.getMonth() + 1;\r\n      let year = js_date.getFullYear();\r\n      let time = js_date.toLocaleTimeString(metadataLocale);\r\n\r\n      return '' + year + '-' + (month <= 9 ? '0' + month : month) + '-' + (date <= 9 ? '0' + date : date) + ` ${time}`;\r\n    }\r\n    return \"\"\r\n  }\r\n\r\n  const getLightboxElem = (index) => {\r\n    if (isCustomEmbed(index)) {\r\n      return customEmbedElement(index)\r\n    }\r\n    else if (isVideo(index)) {\r\n      return videoSlideElement(index)\r\n    }\r\n    else if (isPictureElement(index)) {\r\n      let elem_metadata = props.images[index][\"picture\"];\r\n      return <picture className={`imageModal \r\n      ${styles.lightboxImg} \r\n      ${enableMagnifyingGlass\r\n          ? styles.maxWidthFull\r\n          : styles.maxWidthWithoutMagnifier\r\n        } `}>\r\n        {Object.keys(elem_metadata).map((format) => (\r\n          <source\r\n            type={format}\r\n            key={format}\r\n            srcSet={elem_metadata[format].srcSet}\r\n          />\r\n        ))}\r\n        <img src={elem_metadata['fallback']}\r\n          onError={(error) => {\r\n            handleError(error, index)\r\n          }}\r\n        />\r\n      </picture>\r\n    }\r\n    else {\r\n\r\n      if ((images && props.render) ||\r\n        frameworkID == 'next') {\r\n        return imageSlideElement(index);\r\n      }\r\n      else {\r\n        return <img\r\n          className={`imageModal  ${fullImg && props.thumbnailImgAnim ? styles.fullImg : false}   \r\n           ${props.imgElemClassname ? props.imgElemClassname : ''}\r\n          ${styles.lightboxImg} ${styles.rotate_img}\r\n          ${enableMagnifyingGlass\r\n              ? styles.maxWidthFull\r\n              : styles.maxWidthWithoutMagnifier\r\n            } ${styles.containImg} `}\r\n          ref={el => imageRefs.current[index] = el}\r\n          key={index}\r\n          loading='lazy'\r\n          style={getImageStyle()}\r\n          src={\r\n            images && images[index].original\r\n              ? images[index].original\r\n              : images[index].src\r\n          }\r\n          onLoad={(img: any) => {\r\n\r\n            if (displayImgMetadata) {\r\n\r\n              if (img) {\r\n                let img_target: any = img.target;\r\n                let individual_image_metadata = {};\r\n                console.log(\"display img metadata \")\r\n\r\n                // get filename\r\n                let name = getImageFilename(img_target.src)\r\n                individual_image_metadata[\"name\"] = name;\r\n\r\n                exifr.parse(img_target, true).then(exif => {\r\n                  console.log(\"display img metadata: \", exif)\r\n\r\n                  if (exif) {\r\n                    let keys = [\"isoData\", \"createDate\", \"height\", \"width\", \"shutterSpeed\", \"fNumber\"];\r\n\r\n                    for (let i = 0; i < keys.length; i++) {\r\n                      let keyName = keys[i];\r\n                      switch (keyName) {\r\n                        case \"isoData\":\r\n                          if (exif.ISO) {\r\n                            individual_image_metadata[\"isoData\"] = exif.ISO;\r\n                          }\r\n                          break;\r\n                        case \"createDate\":\r\n                          if (exif.CreateDate) {\r\n                            individual_image_metadata[\"createDate\"] = parseCreateDate(exif.CreateDate);\r\n                          }\r\n                          break;\r\n                        case \"height\":\r\n                          if (exif.ExifImageHeight) {\r\n                            individual_image_metadata[\"height\"] = exif.ExifImageHeight;\r\n                          }\r\n                          break;\r\n                        case \"width\":\r\n                          if (exif.ExifImageWidth) {\r\n                            individual_image_metadata[\"width\"] = exif.ExifImageWidth;\r\n                          }\r\n                          break;\r\n                        case \"fNumber\":\r\n                          if (exif.fNumber) {\r\n                            individual_image_metadata[\"fNumber\"] = exif.fNumber;\r\n                          }\r\n                          break;\r\n                        case \"shutterSpeed\":\r\n                          if (exif.ShutterSpeedValue) {\r\n                            individual_image_metadata[\"shutterSpeed\"] = exif.ShutterSpeedValue;\r\n                          }\r\n                          break;\r\n                      }\r\n                    }\r\n\r\n                    let imgMetadataItems = imgMetadata;\r\n                    imgMetadataItems[index] = individual_image_metadata;\r\n                    setImgMetadata(imgMetadataItems);\r\n\r\n                    if (index == slideIndex) {\r\n                      setIsLoading(false)\r\n                    }\r\n                  }\r\n\r\n                })\r\n              }\r\n            }\r\n\r\n            if (index == slideIndex) {\r\n              setDisplayLoader(false)\r\n            }\r\n\r\n            if (props.images) {\r\n              setItemLoaded(index)\r\n            } else {\r\n              setImagesItemLoaded(index)\r\n            }\r\n          }}\r\n          id='img'\r\n        />\r\n\r\n      }\r\n    }\r\n  }\r\n\r\n  const isCustomEmbed = (index) => {\r\n\r\n    if (props.images) {\r\n      let elem = props.images[index]\r\n      if (elem) {\r\n        if (elem.type == 'customEmbed') {\r\n          return true\r\n        }\r\n      }\r\n    }\r\n    return false\r\n  }\r\n\r\n  const isVideo = (index) => {\r\n\r\n    if (props.images) {\r\n      let elem = props.images[index]\r\n      if (elem) {\r\n        if (elem.type == 'yt' || elem.type == 'htmlVideo' || elem.type == 'customVideoEmbed') {\r\n          return true\r\n        }\r\n      }\r\n    }\r\n\r\n    return false\r\n  }\r\n\r\n  const shouldDisplayMetadataPanel = () => {\r\n    if (isMobile) {\r\n      if (showImgMetadataPanel) {\r\n        return true;\r\n      }\r\n      else {\r\n        return false;\r\n      }\r\n    }\r\n    else {\r\n      return displayImgMetadata;\r\n    }\r\n  }\r\n\r\n  const isPictureElement = (index) => {\r\n    if (props.images) {\r\n      let elem = props.images[index]\r\n      if (elem) {\r\n        if (elem.picture) {\r\n          return true\r\n        }\r\n      }\r\n    }\r\n\r\n    return false\r\n  }\r\n\r\n  useEffect(() => {\r\n    if (!emblaApi) return\r\n\r\n    if (imgAnimation == \"fade\") {\r\n      emblaApi.internalEngine().translate.toggleActive(false);\r\n    }\r\n\r\n  }, [\r\n    carouselReady, emblaApi\r\n  ])\r\n\r\n  const isHTMLVideo = (index) => {\r\n    if (props.images) {\r\n      if (props.images && props.images[index].type == 'htmlVideo') {\r\n        return true\r\n      }\r\n    }\r\n\r\n    return false\r\n  }\r\n\r\n  const videoSlideElement = (index) => {\r\n    let elem = props.images[index];\r\n    let videoElem;\r\n\r\n    if (elem.type == 'yt') {\r\n      videoElem = (\r\n        <div className={`${styles.videoOuterContainer} imageModal`}>\r\n          <YouTube\r\n            videoId={elem.videoID}\r\n            ref={(el) => (videoReferences.current[index] = el)}\r\n            iframeClassName={`${styles.ytVideo}`}\r\n            title='YouTube video player'\r\n            opts={{\r\n              height: getVideoHeight(elem),\r\n              width: getVideoWidth(elem),\r\n              playerVars: {\r\n                // https://developers.google.com/youtube/player_parameters\r\n                autoplay: shouldAutoplay(elem) ? 1 : 0,\r\n              }\r\n            }\r\n            }\r\n            // style={object}\r\n            // className={`${styles.ytVideo}`}\r\n            //loading={string}                     \r\n            onReady={(event) => {\r\n              let videoElems = videoElements; videoElems[index] = event; setVideoElements(videoElems);\r\n              if (index == slideIndex) {\r\n                setDisplayLoader(false)\r\n              }\r\n              setItemLoaded(index)\r\n            }}\r\n            onPlay={(event) => {\r\n              setYTVideoCurrentlyPlaying(true)\r\n            }}\r\n            onPause={(event) => {\r\n              setYTVideoCurrentlyPlaying(false)\r\n            }}\r\n            onEnd={(event) => { setYTVideoCurrentlyPlaying(false) }}\r\n            onError={(event) => { handleError(event, index) }}\r\n            onStateChange={(event) => { }}\r\n            onPlaybackRateChange={(event) => { }}\r\n            onPlaybackQualityChange={(event) => { }}\r\n          />\r\n        </div>\r\n      )\r\n    } else if (elem.type == 'htmlVideo') {\r\n      videoElem = (\r\n        <div\r\n          className={`${styles.htmlVideo} ${styles.htmlVideoOuterContainer} imageModal`}\r\n        >\r\n          <video\r\n            className={`${styles.cursorPointer} ${styles.lightboxVideo}`}\r\n            width={getVideoWidth(elem)}\r\n            ref={(el) => (videoReferences.current[index] = el)}\r\n            onPlay={() => {\r\n            }}\r\n            onError={(event) => {\r\n              handleError(event, index)\r\n            }}\r\n            height={getVideoHeight(elem)}\r\n            autoPlay={index == imgSlideIndex ? shouldAutoplay(elem) : false}\r\n            controls\r\n          >\r\n            <source\r\n              src={elem.videoSrc}\r\n              type='video/mp4'\r\n              onLoad={() => {\r\n                setItemLoaded(index)\r\n              }}\r\n            />\r\n          </video>\r\n        </div>\r\n      )\r\n    }\r\n    else if (elem.type == \"customVideoEmbed\") {\r\n      videoElem = (\r\n        <div className={`${styles.customVideoContainer} imageModal`}>\r\n          {elem.embed}\r\n        </div>\r\n      )\r\n    }\r\n\r\n    return videoElem\r\n  }\r\n\r\n  const customEmbedElement = (index) => {\r\n    let elem = props.images[index];\r\n    let customElem;\r\n\r\n    if (elem.type == \"customEmbed\") {\r\n      customElem = (\r\n        <div className={`${styles.customEmbedContainer} imageModal`}>\r\n          {elem.embed}\r\n        </div>\r\n      )\r\n    }\r\n\r\n    return customElem\r\n  }\r\n\r\n  const initZoom = (ref) => {\r\n    if (imgAnimation == \"fade\") {\r\n      if (ref.state.scale <= 1) {\r\n        setZoomedIn(false)\r\n      }\r\n      else {\r\n        setZoomedIn(true)\r\n      }\r\n    }\r\n    else {\r\n      if (ref.state.scale <= 1.65) {\r\n        setZoomedIn(false)\r\n      }\r\n      else {\r\n        setZoomedIn(true)\r\n      }\r\n    }\r\n\r\n\r\n  }\r\n\r\n  const regularImgPaneNodes = Array.apply(null, Array(images.length)).map(\r\n    (_, index) => {\r\n      return (\r\n        <div key={index} className={`${props.fullScreen ? styles.fullScreenContainer : null}`}>\r\n          \r\n          {\r\n            enableMagnifyingGlass == true ? (\r\n              <div></div>\r\n              // <Magnifier\r\n              //   src={images[index].src!}\r\n              //   className={`${styles.magnifyWrapper} ${styles.lightboxImg}`}\r\n              //   height={imgContainHeight}\r\n              //   width={imgContainWidth}\r\n              //   mgShowOverflow={false}\r\n              // />\r\n            )\r\n\r\n              : (\r\n                <div className={getEmblaClass(index)} onTouchStart={onTouchStart} onTouchMove={onTouchMove}\r\n                onTouchEnd={onTouchEnd} onMouseDown={onMouseDown} onMouseUp={onMouseUp}>\r\n\r\n                  <TransformWrapper\r\n                    ref={(el) => (zoomReferences.current[index] = el)}\r\n                    onWheel={(ref, wheelEvent) => {\r\n                      initZoom(ref)\r\n                    }}\r\n                    disabled={disableZoom}\r\n                    panning={{\r\n                      disabled: isPanningDisabled()\r\n                    }}\r\n\r\n                    key={index}\r\n                    onZoom={\r\n                      (ref, event) => {\r\n                        initZoom(ref)\r\n                      }\r\n                    }\r\n                    onZoomStop={(ref, event) => { initZoom(ref) }}\r\n                    onTransformed={\r\n                      (ref, event) => {\r\n                        initZoom(ref)\r\n                      }\r\n                    }\r\n                    onPinchingStop={(ref, event) => {\r\n                      initZoom(ref)\r\n                    }}\r\n                    centerZoomedOut={true}\r\n                    initialScale={1}\r\n                    maxScale={maxScale}\r\n                    alignmentAnimation={{ sizeX: 0, sizeY: 0 }}\r\n                  >\r\n                    <TransformComponent\r\n                      wrapperClass={styles.reactTransformWrapper}\r\n                      contentClass={styles.reactTransformComponent}\r\n                      wrapperStyle={{\r\n                        maxWidth: '100vw',\r\n                        height: '100vh',\r\n                        margin: 'auto'\r\n                      }}\r\n                      contentStyle={\r\n                        {\r\n                            maxWidth: '100vw',\r\n                            height: '100vh',\r\n                            margin: 'auto',\r\n                            display: 'grid'\r\n                          }\r\n                      }\r\n                      key={index}\r\n                    > \r\n                      <div\r\n                        className={`${styles.slideshowImg} ${props.lightboxImgClass ? props.lightboxImgClass : \"\"}\r\n                      ${displayImgMetadata ? styles.slideshowImgMetadata : \"\"}\r\n                      `}\r\n                      style={{\r\n                        width: props.lightboxWidth ? props.lightboxWidth : \"\"\r\n                      }}\r\n                      >\r\n                         \r\n                         {getLightboxElem(index)} \r\n                      </div>\r\n                     </TransformComponent>\r\n                  </TransformWrapper> \r\n                </div>\r\n              )}\r\n        </div>\r\n      )\r\n    }\r\n  )\r\n\r\n  const initMagnifyingGlass = () => {\r\n    if (!enableMagnifyingGlass) {\r\n      initImageDimensions()\r\n    } else {\r\n      setImgAnimation('imgDrag')\r\n    }\r\n    setMagnifyingGlass(!enableMagnifyingGlass)\r\n  }\r\n\r\n  // const shouldShowImgMetadataPanel = () => {\r\n  //   if (displayImgMetadata && showImgMetadataPanel) {\r\n  //     return true;\r\n  //   }\r\n  //   return false;\r\n  // }\r\n\r\n  const getMetadataPanelStyle = () => {\r\n    let style_object = {}\r\n    if (isMobile && showImgMetadataPanel) {\r\n      style_object = { height: \"100vh\" }\r\n    }\r\n    style_object[\"color\"] = getMetadataTextColor()\r\n    return style_object;\r\n  }\r\n\r\n  const initImageDimensions = () => {\r\n    let img\r\n    if (imgSlideIndex == 0 || imgSlideIndex % images.length == 0) {\r\n      img = document.getElementById('img')\r\n    } else {\r\n      img = imageRef.current\r\n    }\r\n\r\n    var ratio = img.naturalWidth / img.naturalHeight\r\n    var width = img.height * ratio\r\n    var height = img.height\r\n    if (width > img.width) {\r\n      width = img.width\r\n      height = img.width / ratio\r\n    }\r\n\r\n    setImgContainHeight(height)\r\n    setImgContainWidth(width)\r\n  }\r\n\r\n  const initFullScreenChangeEventListeners = () => {\r\n    document.addEventListener('fullscreenchange', exitFullScreenHandler)\r\n    document.addEventListener('webkitfullscreenchange', exitFullScreenHandler)\r\n    document.addEventListener('MSFullscreenChange', exitFullScreenHandler)\r\n    document.addEventListener('mozfullscreenchange', exitFullScreenHandler)\r\n  }\r\n\r\n  const removeFullScreenChangeEventListeners = () => {\r\n    document.removeEventListener('fullscreenchange', exitFullScreenHandler)\r\n    document.removeEventListener(\r\n      'webkitfullscreenchange',\r\n      exitFullScreenHandler\r\n    )\r\n    document.removeEventListener('MSFullscreenChange', exitFullScreenHandler)\r\n    document.removeEventListener('mozfullscreenchange', exitFullScreenHandler)\r\n  }\r\n\r\n  const initEventListeners = () => {\r\n    if (isBrowser() && !noWindow) {\r\n      window.addEventListener('resize', handleWindowResize)\r\n    }\r\n  }\r\n\r\n  const removeEventListeners = () => {\r\n    removeOnSelectListener();\r\n    if (isBrowser() && !noWindow) {\r\n      window.removeEventListener('resize', handleWindowResize)\r\n    }\r\n  }\r\n\r\n  const setReducedMotion = (mediaQuery) => {\r\n    if (mediaQuery.matches) {\r\n      setImgAnimation('fade')\r\n    }\r\n  }\r\n\r\n  // Check if the user has a preference for reduced motion\r\n  // If so, the image animation transitions between slides in the slideshow will be adjusted\r\n  // to account for this\r\n  const checkAndInitReducedMotion = () => {\r\n    let reducedMotionMediaQuery: any = ''\r\n\r\n    if (isBrowser() && !noWindow) {\r\n      reducedMotionMediaQuery = window.matchMedia(\r\n        '(prefers-reduced-motion: reduce)'\r\n      )\r\n\r\n      if (!reducedMotionMediaQuery || reducedMotionMediaQuery.matches) {\r\n        setImgAnimation('fade')\r\n      }\r\n\r\n      if (reducedMotionMediaQuery?.addEventListener) {\r\n        reducedMotionMediaQuery.addEventListener('change', setReducedMotion(reducedMotionMediaQuery));\r\n      } \r\n      else {\r\n        reducedMotionMediaQuery.addListener(setReducedMotion(reducedMotionMediaQuery));\r\n      }\r\n\r\n    }\r\n\r\n    return reducedMotionMediaQuery\r\n  }\r\n\r\n  const initPropsForControlIcons = () => {\r\n    if (props.showFullScreenIcon != undefined) {\r\n      setDisplayFullScreenIcon(props.showFullScreenIcon)\r\n    }\r\n    if (props.showThumbnailIcon != undefined) {\r\n      setDisplayThumbnailIcon(props.showThumbnailIcon)\r\n    }\r\n\r\n    if (props.showSlideshowIcon != undefined) {\r\n      setDisplaySlideshowIcon(props.showSlideshowIcon)\r\n    }\r\n    if (props.showMagnificationIcons != undefined) {\r\n      setDisplayMagnificationIcons(props.showMagnificationIcons)\r\n    }\r\n  }\r\n\r\n  const initProps = () => {\r\n    if (props.showControls != undefined) {\r\n      setShowControls(props.showControls)\r\n      if (props.showControls == false) {\r\n        setDisplayMagnificationIcons(false)\r\n      }\r\n    }\r\n\r\n    if (props.disableAnim == true) {\r\n      MotionGlobalConfig.skipAnimations = true\r\n    }\r\n\r\n    initPropsForControlIcons()\r\n\r\n    if (props.disableImageZoom) {\r\n      setDisableZoom(props.disableImageZoom)\r\n    }\r\n\r\n    if (isBrowser() && !noWindow) {\r\n      setWidth(window.innerWidth)\r\n    }\r\n\r\n    // if (window.innerWidth <= mobileWidth) {\r\n    //   setImgAnimation('fade')\r\n    // }\r\n  }\r\n\r\n  // Slideshow feature; if isSlideshowPlaying set to true, then slideshow cycles through images\r\n  useInterval(\r\n    () => {\r\n      if (isRTL) {\r\n        updateImageSlideshow(-1)\r\n      } else {\r\n        updateImageSlideshow(1)\r\n      }\r\n    },\r\n\r\n    // Delay in milliseconds or null to stop it\r\n    isSlideshowPlaying ? slideshowInterval : null\r\n  )\r\n\r\n  const openFullScreen = (lightbox_elem) => {\r\n    if (lightbox_elem.requestFullscreen) {\r\n      lightbox_elem.requestFullscreen();\r\n    }\r\n\r\n    /* Safari */\r\n    else if (lightbox_elem.webkitRequestFullscreen) {\r\n      lightbox_elem.webkitRequestFullscreen();\r\n    }\r\n\r\n    /* Internet Explorer */\r\n    else if (lightbox_elem.msRequestFullscreen) {\r\n      lightbox_elem.msRequestFullscreen();\r\n    }\r\n  }\r\n\r\n  const closeFullScreen = (document) => {\r\n    if (document.exitFullscreen) {\r\n      document.exitFullscreen();\r\n    }\r\n\r\n    /* Safari */\r\n    else if (document.webkitExitFullscreen) {\r\n      document.webkitExitFullscreen();\r\n    }\r\n\r\n    /* Internet Explorer */\r\n    else if (document.msExitFullscreen) {\r\n      document.msExitFullscreen();\r\n    }\r\n  }\r\n\r\n  const isBrowser = () => {\r\n    if (!noWindow) {\r\n      return typeof window !== \"undefined\"\r\n    }\r\n    return false;\r\n  }\r\n\r\n  const initRTLImages = () => {\r\n    // flip images array\r\n    let imagesMetadataCopy = props.images\r\n    imagesMetadataCopy.reverse()\r\n\r\n    setImages(imagesMetadataCopy)\r\n\r\n    if (images.length > 0) {\r\n      let imagesRTLCopy = images\r\n      imagesRTLCopy.reverse()\r\n      setImages(imagesRTLCopy)\r\n    }\r\n  }\r\n\r\n  const initAndOpenLightbox = (i, img_gallery, isMounted) => {\r\n    let index;\r\n  \r\n    if (isRTL) {\r\n      index = getRTLIndex(img_gallery.length, i)\r\n    } else {\r\n      index = i\r\n    }\r\n  \r\n    let reactSwipeOptionConfig = reactSwipeOptions\r\n     reactSwipeOptionConfig.startIndex = index\r\n  \r\n    if (isMounted) setReactSwipeOptions(reactSwipeOptionConfig)\r\n    setZoomIdx(index)\r\n    openModal(index)\r\n  }\r\n\r\n  const initImages = (isMounted, updateImages) => {\r\n    if (coverMode && props.images) {\r\n      if (props.coverImageInLightbox == false) {\r\n        let filterImages = props.images.filter((img) => img.cover != true)\r\n        setImages(filterImages)\r\n      } else {\r\n        setImages(props.images)\r\n      }\r\n    }\r\n\r\n    if (updateImages || !isInit) {\r\n      if (lightboxIdentifier && props.children) {\r\n\r\n        if (props.queryElems) {\r\n          let img_gallery: any = [];\r\n          for (let k = 0; k < props.queryElems.length; k++) {\r\n            let elemSelector = props.queryElems[k];\r\n            let queryElems = document.querySelectorAll(\r\n              `${elemSelector}`\r\n            );\r\n            queryElems.forEach(element => {\r\n              img_gallery.push(element)\r\n            });\r\n              \r\n          }\r\n          let img_elements: ImageElement[] = []\r\n\r\n          if (img_gallery.length > 0) {\r\n            for (let i = 0; i <= img_gallery.length - 1; i++) {\r\n              let img = img_gallery[i]\r\n                img.addEventListener(\r\n                  'click',\r\n                  () => {\r\n                    initAndOpenLightbox(i, img_gallery, isMounted)\r\n                  },\r\n                  false\r\n                )\r\n                img.classList.add('cursor-pointer')\r\n                \r\n                if (img.src) {\r\n                  img_elements.push({\r\n                    src: img.src,\r\n                    alt: img.alt,\r\n                    loaded: false\r\n                  })\r\n                }else if (img.href) {\r\n                  img_elements.push({\r\n                    src: img.href,\r\n                    alt: img.alt,\r\n                    loaded: false\r\n                  })\r\n                }\r\n          \r\n            }\r\n            \r\n            if (isMounted && !coverMode) {\r\n              if (props.framework != \"next\") {\r\n                setImages(img_elements)\r\n              }\r\n              else if (props.framework == \"next\") {\r\n                setImages(props.images)\r\n              }\r\n            }\r\n\r\n        }\r\n      }\r\n        else {\r\n\r\n          let img_gallery: NodeListOf<HTMLImageElement> = document.querySelectorAll(\r\n            `[data-lightboxjs=${lightboxIdentifier}]`\r\n          )\r\n          let originalImageAttr = false;\r\n  \r\n          let img_elements: ImageElement[] = []\r\n          if (img_gallery.length > 0) {\r\n            for (let i = 0; i <= img_gallery.length - 1; i++) {\r\n              let img = img_gallery[i]\r\n  \r\n              let attr_val = img.getAttribute('data-lightboxjs')\r\n              if (attr_val == lightboxIdentifier) {\r\n                img.addEventListener(\r\n                  'click',\r\n                  () => {\r\n                    initAndOpenLightbox(i, img_gallery, isMounted)\r\n                  },\r\n                  false\r\n                )\r\n                img.classList.add('cursor-pointer')\r\n  \r\n                let original_img_src = img.getAttribute('data-lightboxjs-original')\r\n  \r\n                if (original_img_src) {\r\n                  img_elements.push({\r\n                    src: original_img_src,\r\n                    alt: img.alt,\r\n                    loaded: false\r\n                  })\r\n                  originalImageAttr = true;\r\n                }\r\n                else if (img.src) {\r\n                  img_elements.push({\r\n                    src: img.src,\r\n                    alt: img.alt,\r\n                    loaded: false\r\n                  })\r\n                } else if (img.tagName == 'DIV') {\r\n                  let corresponding_img_item = props.images[i]\r\n                  let img_src = corresponding_img_item.src\r\n                  let img_alt = corresponding_img_item.alt\r\n                  img_elements.push({\r\n                    src: img_src,\r\n                    alt: img_alt,\r\n                    loaded: false\r\n                  })\r\n                }\r\n              }\r\n            }\r\n            if (isMounted && !coverMode) {\r\n              if (originalImageAttr) {\r\n                setImages(img_elements)\r\n  \r\n              }\r\n              else if (props.showAllImages != true && props.framework != \"next\") {\r\n                setImages(img_elements)\r\n              }\r\n              else if (props.framework == \"next\" && !originalImageAttr) {\r\n                setImages(props.images)\r\n              }\r\n              else {\r\n                setImages(props.images)\r\n              }\r\n            }\r\n          }\r\n          else {\r\n            if (props.images) {\r\n              setImages(props.images)\r\n            }\r\n          }\r\n        }\r\n\r\n      }\r\n      else if (lightboxIdentifier && props.images && !props.children) {\r\n        setImages(props.images)\r\n\r\n      }\r\n      else if (!lightboxIdentifier && props.images && !props.children) {\r\n        setImages(props.images)\r\n      }\r\n\r\n      // otherwise, if no lightbox identifier or custom render method\r\n      else if (!props.render) {\r\n        let imgArray: any = [];\r\n        // only one image\r\n        if (!Array.isArray(props.children)) {\r\n          imgArray.push(props.children);\r\n        }\r\n\r\n        // multiple images\r\n        else {\r\n          imgArray = props.children;\r\n        }\r\n\r\n        let imgs: ImageElement[] = []\r\n        for (let k = 0; k < imgArray.length; k++) {\r\n          let img_elem = imgArray[k]\r\n          let img_obj = {\r\n            src: img_elem.props.src,\r\n            alt: img_elem.props.alt,\r\n            loaded: false\r\n          }\r\n          imgs.push(img_obj)\r\n        }\r\n        if (isRTL) {\r\n          imgs.reverse()\r\n        }\r\n        if (isMounted) setImages(imgs)\r\n\r\n        setPreviewImageElems(imgArray)\r\n\r\n      } else {\r\n        if (isMounted) {\r\n          setImages(props.images);\r\n        }\r\n      }\r\n\r\n      if (isMounted) setIsInit(true)\r\n    }\r\n  }\r\n\r\n  const useForceUpdate = () => {\r\n    let [value, setValue] = useState(true);\r\n    return () => setValue(!value);\r\n  }\r\n\r\n  const forceUpdate = useForceUpdate();\r\n\r\n  const dispatchSlideSelectEvents = (newIndex, prevIndex) => {\r\n\r\n    if (props.onSelect) {\r\n      props.onSelect(newIndex, images[newIndex])\r\n      forceUpdate();\r\n    }\r\n\r\n    if (newIndex == 0 && prevIndex == images.length - 1) {\r\n      dispatchNextImgEvent(newIndex)\r\n    }\r\n    else if (newIndex == images.length - 1 && prevIndex == 0) {\r\n      dispatchPrevImgEvent(newIndex)\r\n    }\r\n\r\n    else if (newIndex > prevIndex) {\r\n      dispatchNextImgEvent(newIndex)\r\n    }\r\n    else if (newIndex < prevIndex) {\r\n      dispatchPrevImgEvent(newIndex)\r\n    }\r\n\r\n  }\r\n\r\n  const onSelect = useCallback(() => {\r\n\r\n    if (!emblaApi) return\r\n\r\n    let newSlideIndex: any = emblaApi.selectedScrollSnap();\r\n    let prevSlideIndex: any = emblaApi.previousScrollSnap();\r\n\r\n    if (newSlideIndex != prevSlideIndex) {\r\n      initSlide(newSlideIndex);\r\n      resetMedia(prevSlideIndex);\r\n      dispatchSlideSelectEvents(newSlideIndex, prevSlideIndex)\r\n    }\r\n\r\n    if (emblaThumbsApi) {\r\n      emblaThumbsApi.scrollTo(emblaApi.selectedScrollSnap())\r\n    }\r\n\r\n  }, [emblaApi, emblaThumbsApi])\r\n\r\n  const onReinit = useCallback(() => {\r\n    if (!emblaApi) return\r\n    setEmblaReinitialized(true)\r\n\r\n  }, [emblaApi, emblaReinitialized])\r\n\r\n\r\n  const handleResize = (entry) => {\r\n    emblaApi?.reInit();\r\n  };\r\n\r\n  const rootNode = emblaApi?.rootNode() || null;\r\n\r\n  if (isBrowser() && !noWindow) {\r\n    useResizeObserver(rootNode, handleResize);\r\n\r\n  }\r\n\r\n  const removeOnSelectListener = useCallback(() => {\r\n    if (emblaApi) emblaApi.off('select', onSelect)\r\n  }, [emblaApi, onSelect])\r\n\r\n  useEffect(() => {\r\n    if (emblaApi) {\r\n      if (zoomedIn) {\r\n        emblaApi.reInit({ watchDrag: false });\r\n      }\r\n      else {\r\n        emblaApi.reInit({ watchDrag: true });\r\n      }\r\n    }\r\n  }, [zoomedIn])\r\n\r\n  useEffect(() => {\r\n    if (displayImgMetadata) {\r\n      if (width != 0 && isMobile) {\r\n        setShowImgMetadataPanel(false)\r\n      }\r\n      else {\r\n        setShowImgMetadataPanel(true)\r\n      }\r\n    }\r\n\r\n  }, [width])\r\n\r\n  useEffect(() => {\r\n    if (!emblaApi) return\r\n\r\n    if (showModal) emblaApi.reInit()\r\n  }, [showModal, emblaApi])\r\n\r\n  useEffect(() => {\r\n    if (emblaApi) emblaApi.on('select', onSelect)\r\n    if (emblaApi) { }\r\n  }, [emblaApi, onSelect])\r\n\r\n  useEffect(() => {\r\n    if (emblaApi) emblaApi.on('reInit', onReinit)\r\n  }, [emblaApi, onReinit])\r\n\r\n  // update theme if prop changes\r\n  useEffect(() => {\r\n    initStyling();\r\n    if (props.iconColor) { setIconColor(props.iconColor) }\r\n    if (props.backgroundColor) { setBackgroundColor(props.backgroundColor) }\r\n\r\n  }, [props.theme, props.iconColor, props.backgroundColor]);\r\n\r\n  useEffect(() => {\r\n    initImages(true, true)\r\n  }, [props.images, props.displayedImages]);\r\n\r\n  const prevValue = usePrevious(open);\r\n  const prevImages: any = usePrevious(images);\r\n\r\n  const areObjectsEqual = (object1, object2) =>\r\n    typeof object1 === 'object' && object1 != null && typeof object2 === 'object' && object2 != null\r\n      && Object.keys(object1).length > 0\r\n      ? Object.keys(object1).length === Object.keys(object2).length\r\n      && Object.keys(object1).every(p => areObjectsEqual(object1[p], object2[p]))\r\n      : object1 === object2;\r\n\r\n  const imagesEqualToPrevious = (images: any) => {\r\n    if (images && prevImages) {\r\n      if ((images && images?.length) != (prevImages && prevImages?.length)) {\r\n        return false;\r\n      }\r\n\r\n      let imgArray;\r\n      if (images.length > prevImages) {\r\n        imgArray = images;\r\n      }\r\n      else {\r\n        imgArray = prevImages\r\n      }\r\n      for (let i = 0; i < imgArray.length; i++) {\r\n        let images_copy = images.slice(0);\r\n        let prevImages_copy = prevImages.slice(0);\r\n\r\n        let image = images_copy[i];\r\n        let prevImage = prevImages_copy[i];\r\n\r\n        if (image[\"loaded\"]) {\r\n          delete image[\"loaded\"]\r\n        }\r\n\r\n        if (prevImage[\"loaded\"]) {\r\n          delete prevImage[\"loaded\"]\r\n        }\r\n\r\n        if (!areObjectsEqual(image, prevImage)) {\r\n          return false;\r\n        }\r\n\r\n      }\r\n    }\r\n    return true;\r\n  }\r\n\r\n  useEffect(() => {\r\n    let starting_index = 0;\r\n    if (props.startingSlideIndex) {\r\n      starting_index = wrapNums(0, images.length, props.startingSlideIndex);\r\n      setStartingIndex(starting_index)\r\n    }\r\n\r\n    if ((props.open == true) && imagesEqualToPrevious(images) == false && props.startingSlideIndex) {\r\n      if (props.images) {\r\n        setImages(props.images)\r\n      }\r\n      openModalWithSlideNum(starting_index)\r\n    }\r\n\r\n    else if ((props.open && prevValue != true)) {\r\n      if (props.images) {\r\n        setImages(props.images)\r\n      }\r\n\r\n      setIsDisplay(true)\r\n\r\n      openModalWithSlideNum(starting_index)\r\n    }\r\n    else if (props.open == false) {\r\n      setIsDisplay(false)\r\n      closeModal()\r\n    }\r\n  }, [props.open, props.startingSlideIndex, images]);\r\n\r\n  useEffect(() => {\r\n    if (isOpen == true) {\r\n      dispatchOpenEvent()\r\n    }\r\n    else {\r\n      dispatchCloseEvent()\r\n    }\r\n\r\n  }, [isOpen])\r\n\r\n  useEffect(() => {\r\n\r\n    console.log(\"display img metadata \", displayImgMetadata)\r\n\r\n\r\n    // Error check\r\n    if (props.render) {\r\n      if (!props.images) {\r\n        console.error(\r\n          'Array of images must be passed to `SlideshowLightbox` (with the `images` prop) if using custom render method. '\r\n        )\r\n      }\r\n    }\r\n\r\n\r\n    let isMounted = true\r\n    if (isMounted) initProps()\r\n\r\n    if (window) {\r\n      const userAgent = window.navigator.userAgent.toLowerCase();\r\n      let is_tablet_useragent = /(ipad|iphone|tablet|(android(?!.*mobile))|(windows(?!.*phone)(.*touch))|kindle|playbook|silk|(puffin(?!.*(IP|AP|WP))))/.test(userAgent);\r\n      let is_ipad_useragent = /Macintosh/i.test(navigator.userAgent) && navigator.maxTouchPoints && navigator.maxTouchPoints > 1;\r\n\r\n      setIsTabletUserAgent(is_tablet_useragent || is_ipad_useragent) \r\n    }\r\n\r\n    if (coverMode && props.images) {\r\n      if (props.coverImageInLightbox == false) {\r\n        let filterImages = props.images.filter((img) => img.cover != true)\r\n        setImages(filterImages)\r\n      } else {\r\n        setImages(props.images)\r\n      }\r\n    }\r\n\r\n    if (isMounted) {\r\n      initEventListeners()\r\n    }\r\n\r\n    let reducedMotionMediaQuery = checkAndInitReducedMotion()\r\n\r\n    if (displayImgMetadata) {\r\n      setImgAnimation(\"fade\")\r\n    }\r\n\r\n    if (!isInit) {\r\n\r\n      initImages(isMounted, false);\r\n\r\n      if (props.images && isRTL == true) {\r\n        initRTLImages();\r\n      }\r\n    }\r\n\r\n    if (isMounted) initStyling()\r\n\r\n    return () => {\r\n      isMounted = false\r\n      removeEventListeners()\r\n      if (reducedMotionMediaQuery) {\r\n        reducedMotionMediaQuery.removeEventListener(\r\n          'change',\r\n          reducedMotionMediaQuery\r\n        )\r\n      }\r\n\r\n    }\r\n  }, [])\r\n\r\n  const renderPreviewImages = () => {\r\n    let image_elems;\r\n\r\n    if (props.images && props.children && lightboxIdentifier == false) {\r\n        image_elems =  props.children\r\n    }\r\n    else if (props.images && lightboxIdentifier == false) {\r\n        image_elems = props.images.map((elem, index) => (\r\n          <img\r\n            className={`${props.imgClassName ? props.imgClassName : ''\r\n              } ${styles.cursorPointer}`}\r\n\r\n            src={!isVideo(index) ? elem.src : elem.thumbnail}\r\n            onClick={() => {\r\n              let img_index\r\n\r\n              if (isRTL) {\r\n                img_index = getRTLIndex(props.images.length, index)\r\n              } else {\r\n                img_index = index\r\n              }\r\n\r\n              openModalWithSlideNum(img_index)\r\n            }}\r\n            key={index}\r\n          />\r\n        ))\r\n    }\r\n    else if (lightboxIdentifier != false && props.children && coverMode == false) {\r\n      {/* IF Lightbox identifier provided or props.images provided AND props.children */}\r\n        image_elems = props.children\r\n    }\r\n    // No lightbox identifier provided or no cover mode\r\n    else if (!((lightboxIdentifier == false && props.images) || coverMode == true)) {\r\n        image_elems = previewImageElems\r\n        .filter((elem) => elem.type == 'img')\r\n        .map((elem, index) => (\r\n          <img\r\n            {...elem.props}\r\n            className={`${elem.props.className ? elem.props.className : ''\r\n              } ${styles.cursorPointer}`}\r\n            onClick={() => {\r\n              let img_index\r\n\r\n              if (isRTL) {\r\n                img_index = getRTLIndex(previewImageElems.length, index)\r\n              } else {\r\n                img_index = index\r\n              }\r\n\r\n              openModalWithSlideNum(img_index)\r\n            }}\r\n            key={index}\r\n          />\r\n        ))\r\n    }\r\n    else if (coverMode) {\r\n        image_elems = props.children\r\n    }\r\n    return image_elems;\r\n\r\n  }\r\n\r\n  return <div className={`${initWrapperClassname()}`}>\r\n\r\n    {renderPreviewImages()}\r\n\r\n      {/* <AnimateSharedLayout> */}\r\n\r\n        <AnimatePresence initial={false} mode={\"wait\"}>\r\n          {showModal !== false && (\r\n            <Portal>\r\n              <Div100vh>\r\n                <motion.div className={`${styles.modalContainer}`}\r\n                   initial={\"inactive\"}\r\n                   variants={variants}\r\n                   animate={showModal ? \"active\" : \"inactive\"}\r\n                   exit={\"inactive\"}\r\n                   transition={\r\n                     { duration: \"0.3\" }\r\n                   }\r\n                   onAnimationComplete={() => {\r\n                     let animEntered = !animationEntered;\r\n                     setAnimationEntered(animEntered);\r\n \r\n                     if (animEntered == true) {\r\n                       let prevFocusedElement: any = document.activeElement;\r\n                       setPrevFocusedElem(prevFocusedElement)\r\n \r\n                       document.getElementById(\"lightboxContainer\")?.focus();\r\n                     }\r\n                     else {\r\n                       prevFocusedElem?.focus();\r\n                     }\r\n                     if (emblaApi) emblaApi.reInit()\r\n                   }}\r\n >\r\n                <motion.div\r\n                  className={`${styles.slideshowAnimContainer} `}\r\n                  key='slideshowAnimContainer'\r\n\r\n                  id='slideshowAnim'\r\n                  style={{\r\n                    backgroundColor: backgroundColor,\r\n                    width: lightboxModalWidth,\r\n                  }}\r\n               \r\n                >\r\n                  <div className={`${styles.lightboxContainer} `} id=\"lightboxContainer\" tabIndex={-1} role=\"dialog\"\r\n                    onClick={(e) => { if (modalCloseOption == \"clickOutside\") { checkModalClick(e) } }}>\r\n                    <section\r\n                      className={`${styles.iconsHeader} ${iconColor ? '' : getIconStyle()\r\n                        } imageModal`}\r\n                      style={{ color: iconColor }}\r\n                    >\r\n                      <KeyHandler\r\n                        keyValue={'ArrowLeft'}\r\n                        code={'37'}\r\n                        onKeyHandle={() => {\r\n                          prevSlide()\r\n                        }}\r\n                      />\r\n                      <KeyHandler\r\n                        keyValue={'ArrowRight'}\r\n                        code={'39'}\r\n                        onKeyHandle={() => {\r\n                          nextSlide()\r\n                        }}\r\n                      />\r\n                      <KeyHandler\r\n                        keyValue={'Escape'}\r\n                        code={'27'}\r\n                        onKeyHandle={(event) => {\r\n                          event.preventDefault();\r\n                          event.stopPropagation();\r\n                          if (!isBrowserFullScreen) {\r\n                            closeModal()\r\n                          }\r\n                        }}\r\n                      />\r\n\r\n                      {/* Support for Internet Explorer and Edge key values  */}\r\n                      <KeyHandler\r\n                        keyValue={'Left'}\r\n                        code={'37'}\r\n                        onKeyHandle={() => {\r\n                          prevSlide()\r\n                        }}\r\n                      />\r\n                      <KeyHandler\r\n                        keyValue={'Right'}\r\n                        code={'39'}\r\n                        onKeyHandle={() => {\r\n                          nextSlide()\r\n                        }}\r\n                      />\r\n                      <KeyHandler\r\n                        keyValue={'Esc'}\r\n                        code={'27'}\r\n                        onKeyHandle={(event) => {\r\n                          event.preventDefault();\r\n                          event.stopPropagation();\r\n                          if (!isBrowserFullScreen) {\r\n                            closeModal()\r\n                          }\r\n                        }}\r\n                      />\r\n\r\n                      {showControls == true && (\r\n                        <div className={`${styles.controls}`}>\r\n                          {disableZoom ||\r\n                            displayMagnificationIcons == false ? null :\r\n                            <motion.div>\r\n                              <button onClick={() => {\r\n                                if (enableMagnifyingGlass) {\r\n                                  initMagnifyingGlass()\r\n                                }\r\n                                if (zoomReferences.current[zoomIdx] != null) {\r\n                                  zoomReferences.current[zoomIdx]!.zoomIn()\r\n                                }\r\n                                setZoomedIn(true)\r\n                              }}>\r\n                                <ZoomIn\r\n                                  size={24}\r\n                                  color={iconColor ? iconColor : undefined}\r\n                                  className={`${styles.lightboxjsIcon} ${iconColor ? '' : getIconStyle()\r\n                                    }`}\r\n                                  style={iconColor ? { color: iconColor } : {}}\r\n                                />\r\n                              </button>\r\n\r\n                            </motion.div>\r\n                          }\r\n\r\n                          {disableZoom ||\r\n                            displayMagnificationIcons == false ? null :\r\n                            <motion.div>\r\n                              <button\r\n                                onClick={() => {\r\n                                  zoomReferences.current[zoomIdx]!.zoomOut();\r\n                                  let scale = zoomReferences.current[zoomIdx]!.state.scale;\r\n\r\n                                  if (scale == 1 || scale == 1.65) {\r\n                                    setZoomedIn(false)\r\n                                  }\r\n\r\n                                }}>\r\n                                <ZoomOut\r\n                                  size={24}\r\n                                  className={`${styles.lightboxjsIcon} ${iconColor ? '' : getIconStyle()\r\n                                    }`}\r\n                                  style={iconColor ? { color: iconColor } : {}}\r\n                                  color={iconColor ? iconColor : undefined}\r\n\r\n                                />\r\n                              </button>\r\n\r\n                            </motion.div>\r\n                          }\r\n\r\n                          {displayDownloadBtn() ? (\r\n                            <button\r\n                              onClick={() => {\r\n                                saveImage()\r\n                              }}>\r\n                              <Download\r\n                                size={24}\r\n                                className={`${styles.lightboxjsIcon} ${iconColor ? '' : getIconStyle()\r\n                                  }`}\r\n                                style={iconColor ? { color: iconColor } : {}}\r\n                                color={iconColor ? iconColor : undefined}\r\n\r\n                              />\r\n                            </button>\r\n\r\n                          ) : null}\r\n\r\n                          {displayFullScreenIcon ? (\r\n                            isBrowserFullScreen ? (\r\n                              <motion.div>\r\n                                <button\r\n                                  onClick={() => {\r\n                                    isBrowserFullScreen\r\n                                      ? exitFullScreen()\r\n                                      : fullScreen()\r\n                                  }}>\r\n                                  <FullscreenExit\r\n                                    size={24}\r\n                                    className={`${styles.lightboxjsIcon} ${iconColor ? '' : getIconStyle()\r\n                                      }`}\r\n                                    style={iconColor ? { color: iconColor } : {}}\r\n                                    color={iconColor ? iconColor : undefined}\r\n\r\n                                  />\r\n                                </button>\r\n\r\n                              </motion.div>\r\n                            ) : (\r\n                              <motion.div>\r\n                                <button onClick={() => {\r\n                                  isBrowserFullScreen\r\n                                    ? exitFullScreen()\r\n                                    : fullScreen()\r\n                                }}>\r\n                                  <Fullscreen\r\n                                    size={24}\r\n                                    className={`${styles.lightboxjsIcon} ${iconColor ? '' : getIconStyle()\r\n                                      }`}\r\n                                    style={iconColor ? { color: iconColor } : {}}\r\n                                    color={iconColor ? iconColor : undefined}\r\n\r\n                                  />\r\n                                </button>\r\n\r\n                              </motion.div>\r\n                            )\r\n                          ) : null}\r\n\r\n                          {isMobile && displayImgMetadata ?\r\n                            <motion.div>\r\n                              <button onClick={() => {\r\n                                setShowImgMetadataPanel(!showImgMetadataPanel)\r\n                                setDisplayLoader(false)\r\n                              }}>\r\n                                <InfoCircle\r\n                                  size={24}\r\n                                  className={`${styles.lightboxjsIcon} ${iconColor ? '' : getIconStyle()\r\n                                    }`}\r\n                                  style={iconColor ? { color: iconColor } : {}}\r\n                                  color={iconColor ? iconColor : undefined}\r\n                                />\r\n                              </button>\r\n\r\n                            </motion.div> : null}\r\n\r\n                            {rotateImgIcon ? (\r\n                            <motion.div>\r\n                              <button\r\n                                onClick={() => {\r\n                                  // setShowThumbnails(!showThumbnails)\r\n                                  // setFullImg(!fullImg)\r\n                                  rotateImage();\r\n                                }}>\r\n                                <ArrowClockwise\r\n                                  size={24}\r\n                                  className={`${styles.lightboxjsIcon} ${iconColor ? '' : getIconStyle()\r\n                                    }`}\r\n                                  style={iconColor ? { color: iconColor } : {}}\r\n                                  color={iconColor ? iconColor : undefined}\r\n\r\n                                />\r\n                              </button>\r\n\r\n                            </motion.div>\r\n                          ) : null}\r\n\r\n                          {displayThumbnailIcon ? (\r\n                            <motion.div>\r\n                              <button\r\n                                onClick={() => {\r\n                                  setShowThumbnails(!showThumbnails)\r\n                                  setFullImg(!fullImg)\r\n                                }}>\r\n                                <GridFill\r\n                                  size={24}\r\n                                  className={`${styles.lightboxjsIcon} ${iconColor ? '' : getIconStyle()\r\n                                    }`}\r\n                                  style={iconColor ? { color: iconColor } : {}}\r\n                                  color={iconColor ? iconColor : undefined}\r\n\r\n                                />\r\n                              </button>\r\n\r\n                            </motion.div>\r\n                          ) : null}\r\n\r\n                          {shouldDisplayMagnifyingGlassIcon() ? (\r\n                            <motion.div>\r\n                              <button\r\n                                onClick={() => initMagnifyingGlass()}\r\n                              >\r\n                                <Search\r\n                                  size={24}\r\n                                  className={`${styles.lightboxjsIcon} ${iconColor ? '' : getIconStyle()\r\n                                    }`}\r\n                                  style={iconColor ? { color: iconColor } : {}}\r\n                                  color={iconColor ? iconColor : undefined}\r\n                                />\r\n                              </button>\r\n\r\n                            </motion.div>\r\n                          ) : null}\r\n\r\n                          {shouldDisplaySlideshowIcon() ? (\r\n                            <motion.div className={styles.slideshowPlayBtn}>\r\n                              {isSlideshowPlaying ? (\r\n                                <button onClick={() => {\r\n                                  isSlideshowPlaying\r\n                                    ? stopSlideshow()\r\n                                    : playSlideshow()\r\n                                }}>\r\n                                  <PauseCircleFill\r\n                                    size={24}\r\n                                    className={`${styles.lightboxjsIcon} ${iconColor ? '' : getIconStyle()\r\n                                      }`}\r\n                                    style={iconColor ? { color: iconColor } : {}}\r\n                                    color={iconColor ? iconColor : undefined}\r\n\r\n                                  />\r\n                                </button>\r\n\r\n                              ) : (\r\n                                <button onClick={() => {\r\n                                  isSlideshowPlaying\r\n                                    ? stopSlideshow()\r\n                                    : playSlideshow()\r\n                                }}>\r\n                                  <PlayCircleFill\r\n                                    size={24}\r\n                                    className={`${styles.lightboxjsIcon} ${iconColor ? '' : getIconStyle()\r\n                                      }`}\r\n                                    style={iconColor ? { color: iconColor } : {}}\r\n                                    color={iconColor ? iconColor : undefined}\r\n\r\n                                  />\r\n                                </button>\r\n\r\n                              )}\r\n                            </motion.div>\r\n                          ) : null}\r\n\r\n                          {customControlComponent ? <motion.div>{customControlComponent}</motion.div> : null}\r\n                        </div>\r\n                      )}\r\n                      <motion.div className={`${styles.closeIcon} ${props.showControls == false ? styles.mlAuto : \"\"}`}>\r\n                        <button id=\"closeBtn\" className={`${props.showControlsBar == false && props.showControls == false \r\n                        ? styles.closeButtonRounded : styles.closeButton}`}\r\n\r\n                          onClick={() => {\r\n                            closeModal()\r\n                          }}>\r\n                          <XLg\r\n                            id=\"closeIcon\"\r\n                            size={24}\r\n                            className={`${styles.lightboxjsIcon} ${iconColor ? '' : getIconStyle()\r\n                              }`}\r\n                            color={iconColor ? iconColor : undefined}\r\n                            style={getCloseIconBtnStyle()}\r\n                          />\r\n                        </button>\r\n\r\n                      </motion.div>\r\n                    </section>\r\n                    {displayArrows() ?\r\n\r\n                      <div>\r\n                        <div\r\n                          className={\r\n                            rightArrowStyle\r\n                              ? `${styles.next1} ${getArrowStyle()} imageModal`\r\n                              : \"imageModal\"\r\n                          }\r\n                          style={rightArrowStyle}\r\n                          onClick={() => {\r\n                            nextSlide()\r\n                          }}\r\n                        >\r\n                          {nextArrowElem ? nextArrowElem :\r\n                            <span className={`${props.rightArrowClassname ? props.rightArrowClassname : \"\"}`}>&#10095;</span>\r\n                          }\r\n                        </div>\r\n                        <div\r\n                          className={\r\n                            leftArrowStyle\r\n                              ? `${styles.prev1} ${getArrowStyle()} imageModal ${displayImgMetadata ? styles.prev1Metadata : \"\"}`\r\n                              : \"imageModal\"\r\n                          }\r\n                          style={leftArrowStyle}\r\n                          onClick={() => {\r\n                            prevSlide()\r\n                          }}\r\n                        >\r\n                          {prevArrowElem ? prevArrowElem :\r\n                            <span className={`${props.leftArrowClassname ? props.leftArrowClassname : \"\"}`}>&#10094;</span>\r\n                          }\r\n                        </div>\r\n                      </div>\r\n                      : null\r\n                    }\r\n\r\n                    <AnimatePresence initial={false} custom={direction}>\r\n\r\n                      <div\r\n                        className={`${getInnerContainerStyles()} ${styles.embla} \r\n                        ${isImageCaption(\"below\") && showControlsBar == true ? styles.slideImageAndCaption : ''\r\n                          } \r\n                          ${props.fullScreen ? \"\" : styles.slideshowInnerContainer } \r\n                          ${props.showControlsBar == false || props.fullScreen\r\n                            ? styles.hideControlsBar\r\n                            : \"\"\r\n                          }\r\n                          ${displayImgMetadata ? styles.slideshowInnerContainerImgMetadata : \"\"}  `}>\r\n\r\n                        {shouldDisplayMetadataPanel() ?\r\n                          <div className={styles.metadata}\r\n                            style={getMetadataPanelStyle()}>\r\n                            {isLoading ? null :\r\n                              <div className={styles.metadataInnerContainer}>\r\n\r\n                                {getMetadataPanel()}\r\n\r\n                                {isMobile && showImgMetadataPanel ?\r\n                                  <button className={styles.imgMetadataCloseBtn}\r\n                                    onClick={() => {\r\n                                      setShowImgMetadataPanel(false)\r\n                                    }}>\r\n                                    <XLg\r\n                                      size={24}\r\n                                      className={`${styles.lightboxjsIcon} ${iconColor ? '' : getIconStyle()\r\n                                        }`}\r\n                                      color={iconColor ? iconColor : undefined}\r\n                                      style={iconColor ? { color: iconColor } : {}}\r\n                                    />\r\n                                  </button> : null\r\n                                }\r\n                              </div>\r\n                            }\r\n\r\n\r\n                          </div>\r\n                          : null}\r\n                            {isImageCaption(\"above\") ? (\r\n                        <div className={`${styles.imgTitleContainer} imageModal`}>\r\n                          <p\r\n                            className={`${styles.imgTitle}`}\r\n                            key={'imgCaption' + slideIndex}\r\n                            style={\r\n                              props.captionStyle\r\n                                ? props.captionStyle\r\n                                : { color: textColor }\r\n                            }\r\n                          >\r\n                            {getImageCaption()}\r\n                          </p>\r\n                        </div>\r\n                      ) : null}\r\n\r\n                        <div className={`${styles.emblaViewport} \r\n                            ${displayImgMetadata ? styles.emblaContainerImgMetadata : \"\"}`}\r\n                          ref={showModal ? emblaRef : null}>\r\n                          <div className={`\r\n                          ${imgAnimation == \"fade\" ? styles.imgfade : \"\"} \r\n                          ${styles.emblaContainer}\r\n                            ${displayImgMetadata ? styles.emblaContainerImgMetadata : \"\"}`}>\r\n                      \r\n                            {regularImgPaneNodes} \r\n\r\n                          </div>\r\n                        </div>\r\n                      </div>\r\n\r\n                      {displayLoader == true && !isHTMLVideo(slideIndex) ? (\r\n                        <span\r\n                          key='loader'\r\n                          className={`${styles.loader\r\n                            } ${getLoaderThemeClass()}`}\r\n                        ></span>\r\n                      ) : null}\r\n                    </AnimatePresence>\r\n\r\n                    <div\r\n                      className={`${styles.thumbnailsOuterContainer} ${isImageCaption(\"below\") ? styles.thumbnailsAndCaption : ''}\r\n                      ${displayImgMetadata ? styles.thumbnailsOuterContainerMetadata : \"\"} `}\r\n                      style={\r\n                        getThumbnailsOuterContainerStyle()\r\n                      }\r\n                    >\r\n                      {isImageCaption(\"below\") ? (\r\n                        <div className={`${styles.imgTitleContainer} imageModal`}>\r\n                          <p\r\n                            className={`${styles.imgTitle}`}\r\n                            key={'imgCaption' + slideIndex}\r\n                            style={\r\n                              props.captionStyle\r\n                                ? props.captionStyle\r\n                                : { color: textColor }\r\n                            }\r\n                          >\r\n                            {getImageCaption()}\r\n                          </p>\r\n                        </div>\r\n                      ) : null}\r\n\r\n                      <AnimatePresence initial={animatedThumbnails}>\r\n                        {showThumbnails !== false && navigationDots !== true && (\r\n                          <motion.div\r\n                            initial={'hidden'}\r\n                            exit={'hidden'}\r\n                            animate={'visible'}\r\n                            style={\r\n                              imagesLoaded ? {} : { display: 'displayHidden' }\r\n                            }\r\n                            transition={{\r\n                              type: 'spring',\r\n                              duration: 0.75\r\n                            }}\r\n                            variants={thumbnailVariants}\r\n                            className={`${styles.thumbnails} ${isImageCaption(\"below\")\r\n                              ? styles.thumbnailsWithCaption\r\n                              : ''\r\n                              }`}\r\n                          >\r\n                            <div className={`${styles.emblaThumbs} ${styles.thumbnails}`}>\r\n                              <div className={styles.emblaThumbsViewport} ref={emblaThumbsRef}>\r\n                                <div className={styles.emblaThumbsContainer}>\r\n                                  {frameworkID == 'next' &&\r\n                                    props.images\r\n                                    ? props.images.map((img, index) => (\r\n                                      getImageThumbnail(img, index, true, props)\r\n                                    ))\r\n                                    : // Not Next.js\r\n                                    images.map((img, index) => (\r\n                                      getImageThumbnail(img, index, false, props)\r\n                                    ))}\r\n\r\n                                </div>\r\n                              </div>\r\n                            </div>\r\n\r\n                          </motion.div>\r\n                        )}\r\n\r\n                        {showThumbnails !== true && navigationDots !== false && (\r\n                          <motion.div\r\n                            initial={'hidden'}\r\n                            exit={'hidden'}\r\n                            animate={'visible'}\r\n                            style={\r\n                              imagesLoaded ? {} : { display: 'displayHidden' }\r\n                            }\r\n                            transition={{\r\n                              type: 'spring',\r\n                              duration: 0.75\r\n                            }}\r\n                            variants={thumbnailVariants}\r\n                            className={`${styles.thumbnails} ${isImageCaption(\"below\")\r\n                              ? styles.thumbnailsWithCaption\r\n                              : ''\r\n                              }`}\r\n                          >\r\n                            <div className={`${styles.emblathumbs} ${styles.thumbnails}`}>\r\n                              <div className={styles.emblaThumbsViewport} ref={emblaThumbsRef}>\r\n                                <div className={`${styles.navigationDots} ${styles.emblaThumbsContainer} imageModal\r\n                                `}>\r\n                                  {frameworkID == 'next' &&\r\n                                    props.images\r\n                                    ? props.images.map((img, index) => (\r\n                                      getNavigationDot(index)\r\n                                    ))\r\n                                    : // Not Next.js\r\n                                    images.map((img, index) => (\r\n                                      getNavigationDot(index)\r\n                                    ))}\r\n\r\n                                </div>\r\n                              </div>\r\n                            </div>\r\n                          </motion.div>\r\n                        )}\r\n                      </AnimatePresence>\r\n                    </div>\r\n                  </div>\r\n                </motion.div>\r\n                {props.rightSidebarComponent ? props.rightSidebarComponent : null}\r\n\r\n                </motion.div>\r\n             \r\n\r\n              </Div100vh>\r\n            </Portal>\r\n          )}\r\n        </AnimatePresence>\r\n      {/* </AnimateSharedLayout> */}\r\n    </div>\r\n}\r\n)","\nconst digest = '9d73527626f8a8a1042de989c031b5cbe703d01619b535abb35afcabe77b8abe';\nconst css = `._lightboxjs_bsfex_1 {\r\n    margin: 0;\r\n    padding: 0;\r\n  }\r\n  \r\n  ._lightboxjs_bsfex_1 * {\r\n    box-sizing: border-box;\r\n  }\r\n  \r\n  /* .lightboxjs img,\r\n  .lightboxjs svg,\r\n  .lightboxjs video {\r\n    display: block;\r\n    vertical-align: middle;\r\n    height: auto;\r\n    max-width: 100%;\r\n  } */\r\n  \r\n  ._slideshowContainer_bsfex_37 {\r\n    background-color: black;\r\n    height: 100vh;\r\n    width: 100vw;\r\n    position: fixed;\r\n    top: 0;\r\n    left: 0;\r\n  }\r\n  \r\n  ._slideshowBtn_bsfex_55 {\r\n    padding-bottom: 2px;\r\n  }\r\n  \r\n  ._closeIcon_bsfex_63:hover,\r\n  ._closeIcon_bsfex_63:focus,\r\n  ._iconsHeader_bsfex_67 svg:hover,\r\n  ._iconsHeader_bsfex_67 svg:focus,\r\n  ._prev1_bsfex_71 span:hover,\r\n  ._next1_bsfex_73:hover,\r\n  ._icon_bsfex_67:hover {\r\n    text-decoration: none;\r\n    cursor: pointer;\r\n    /* color: rgb(230, 230, 230); */\r\n  }\r\n  \r\n  /* On hover, add a black background color with a little bit see-through */\r\n  ._prevIcon_bsfex_89:hover,\r\n  ._nextIcon_bsfex_91:hover {\r\n    background-color: rgba(0, 0, 0, 0.8);\r\n    color: rgb(230, 230, 230);\r\n  }\r\n  \r\n  ._show_bsfex_101 {\r\n    display: flex;\r\n  }\r\n  \r\n  ._displayHidden_bsfex_109 {\r\n    display: none;\r\n  }\r\n  \r\n  ._thumbnail_bsfex_117 {\r\n    opacity: 1;\r\n    transition: all 0.3s;\r\n    cursor: pointer;\r\n    position: relative;\r\n  }\r\n  \r\n  img._hoverShadow_bsfex_131 {\r\n    transition: 0.3s;\r\n  }\r\n  \r\n  ._hoverShadow_bsfex_131:hover {\r\n    box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);\r\n  }\r\n  \r\n  ._next1_bsfex_73 {\r\n    right: 1%;\r\n    padding-left: 2vw;\r\n    padding-right: 3vw;\r\n  }\r\n  \r\n  ._prev1_bsfex_71 {\r\n    left: 2%;\r\n    padding-right: 2vw;\r\n  }\r\n  \r\n  \r\n  ._thumbnails_bsfex_171 {\r\n    transition: border 0.3s;\r\n  }\r\n  \r\n  ._thumbnail_bsfex_117 {\r\n    display: inline;\r\n  }\r\n  \r\n  ._thumbnailsWithCaption_bsfex_187 {\r\n    width: 90%;\r\n  }\r\n  \r\n  ._navigationDots_bsfex_195 {\r\n    display: flex;\r\n    flex-direction: row;\r\n    flex-wrap: wrap;\r\n  }\r\n  \r\n  /* Mobile screens */\r\n  @media screen and (min-width: 20em) {\r\n    ._imageSlide_bsfex_211 {\r\n      height: 67vw;\r\n      width: 60%;\r\n    }\r\n\r\n    ._thumbnailsOuterContainer_bsfex_221 {\r\n      position: fixed;\r\n      bottom: 5%;\r\n      width: 100vw;\r\n      /* width: 100%; */\r\n    }\r\n  \r\n    ._hideControlsBar_bsfex_235 ._slideshowImg_bsfex_235 {\r\n      height: 100vh;\r\n    }\r\n  \r\n    ._rotateImgInnerContainer_bsfex_243 {\r\n      top: 8%;\r\n    }\r\n  \r\n    ._hideControlsBar_bsfex_235 ._slideshowInnerContainer_bsfex_251 {\r\n      top: 0;\r\n    }\r\n  \r\n    ._thumbnail_bsfex_117 {\r\n      width: 80px;\r\n      max-width: 80px;\r\n      height: 7vh;\r\n    }\r\n  \r\n    ._videoThumbnailsOuterContainer_bsfex_271 {\r\n      bottom: 2%;\r\n    }\r\n  \r\n    ._imgTitleContainer_bsfex_279 {\r\n      padding-bottom: 16px;\r\n      width: 100vw;\r\n    }\r\n  \r\n    ._thumbnails_bsfex_171 {\r\n      margin-left: auto;\r\n      margin-right: auto;\r\n    }\r\n  \r\n    ._next1_bsfex_73 {\r\n      right: 0.9%;\r\n    }\r\n  \r\n    ._prev1_bsfex_71 {\r\n      left: 1.5%;\r\n    }\r\n  }\r\n  \r\n  ._thumbnail_bsfex_117 {\r\n    height: 5vh;\r\n    border-radius: 6px;\r\n    margin-right: 7px;\r\n    object-fit: cover;\r\n  }\r\n  \r\n  ._thumbnailsOuterContainer_bsfex_221 {\r\n    position: absolute;\r\n    bottom: 10%;\r\n    height: 5vh;\r\n    width: 100vw;\r\n    z-index: 10000000;\r\n    margin-top: 10px;\r\n    display: flex;\r\n    flex-wrap: wrap;\r\n    flex-direction: row;\r\n  }\r\n  \r\n  ._thumbnailsOuterContainerMetadata_bsfex_355 {\r\n    width: 78vw;\r\n  }\r\n  \r\n  ._videoThumbnailsOuterContainer_bsfex_271 {\r\n    bottom: 5%;\r\n  }\r\n  \r\n  ._thumbnailsAndCaption_bsfex_371 {\r\n    height: 19vh;\r\n  }\r\n  \r\n  ._htmlVideoOuterContainer_bsfex_379 video {\r\n    height: 100%;\r\n    max-height: 70vh;\r\n    width: 100%;\r\n  }\r\n  \r\n  ._caption_bsfex_391 {\r\n    position: absolute;\r\n    bottom: 14%;\r\n    width: 100vw;\r\n    z-index: 10000000;\r\n    margin-top: 10px;\r\n    margin-left: auto;\r\n    margin-right: auto;\r\n  }\r\n  \r\n  ._galleryImg_bsfex_411 {\r\n    cursor: pointer;\r\n    margin: 0.2em;\r\n  }\r\n  \r\n  ._modalContainer_bsfex_421 {\r\n    width: 100vw;\r\n    height: 100%;\r\n    max-height: 100%;\r\n    direction: ltr;\r\n    overflow: hidden;\r\n    touch-action: none;\r\n    padding: 0;\r\n    overflow-y: hidden;\r\n    margin: 0;\r\n    display: flex;\r\n    justify-content: center;\r\n    align-items: center;\r\n    position: fixed;\r\n    top: 0;\r\n    left: 0;\r\n    z-index: 1000000;\r\n  }\r\n  \r\n  ._slideshowAnimContainer_bsfex_459 {\r\n    height: 100%;\r\n    max-height: 100%;\r\n    direction: ltr;\r\n    overflow: hidden;\r\n    touch-action: none;\r\n    padding: 0;\r\n    overflow-y: hidden;\r\n    margin: 0;\r\n    display: flex;\r\n    justify-content: center;\r\n    align-items: center;\r\n    /* position: fixed; */\r\n    top: 0;\r\n    left: 0;\r\n    z-index: 1000000;\r\n  }\r\n  \r\n  ._fullScreenContainer_bsfex_495 img {\r\n    height: 100vh;\r\n    max-width: 100%;\r\n    max-height: 100%;\r\n  }\r\n  \r\n  ._imageInnerContainer_bsfex_507 img {\r\n    height: 80vh;\r\n    max-width: 100%;\r\n    max-height: 100%;\r\n  }\r\n  \r\n  ._imageInnerContainer_bsfex_507 {\r\n    position: fixed;\r\n    display: flex;\r\n    flex-direction: column;\r\n    justify-content: center;\r\n    top: 0;\r\n    align-content: center;\r\n    margin-left: auto;\r\n    margin-right: auto;\r\n    text-align: center;\r\n    z-index: 1000000;\r\n  }\r\n  \r\n  ._magnifyWrapper_bsfex_545 {\r\n    margin-bottom: 3em;\r\n    margin-left: auto;\r\n    margin-right: auto;\r\n  }\r\n  \r\n  ._slideshowInnerContainer_bsfex_251 {\r\n    /* position: fixed; */\r\n    display: flex;\r\n    flex-direction: column;\r\n    justify-content: center;\r\n    transition: top 0.2s ease-in-out 0s;\r\n    top: 10%;\r\n    align-content: center;\r\n    margin-left: auto;\r\n    margin-right: auto;\r\n    text-align: center;\r\n    z-index: 1000000;\r\n  }\r\n  \r\n  ._slideshowInnerVideoContainer_bsfex_585 {\r\n    top: 6%;\r\n  }\r\n  \r\n  ._slideshowInnerContainerThumbnails_bsfex_593 {\r\n    top: 12%;\r\n  }\r\n  \r\n  ._hideControlsBar_bsfex_235  {\r\n    top: 0;\r\n  }\r\n  \r\n  ._fullScreenContainer_bsfex_495 {\r\n    top: 0;\r\n  }\r\n  \r\n  ._lightboxContainer_bsfex_617 {\r\n    width: 100%;\r\n    height: 100%;\r\n    position: relative;\r\n    display: flex;\r\n    justify-content: center;\r\n    align-items: center;\r\n  }\r\n  \r\n  ._next1_bsfex_73,\r\n  ._prev1_bsfex_71 {\r\n    top: calc(50% - 20px);\r\n    position: absolute;\r\n    display: flex;\r\n    transition: all 0.2s;\r\n    justify-content: center;\r\n    align-items: center;\r\n    padding-bottom: 2vh;\r\n    padding-top: 2vh;\r\n    user-select: none;\r\n    cursor: pointer;\r\n    font-weight: bold;\r\n    border-radius: 30px;\r\n    width: 40px;\r\n    height: 40px;\r\n    font-size: 18px;\r\n    z-index: 10000000;\r\n  }\r\n  \r\n  \r\n  \r\n  ._next1_bsfex_73:hover,\r\n  ._prev1_bsfex_71:hover {\r\n    color: rgb(230, 230, 230);\r\n  }\r\n  \r\n  ._slideshowAnimImg_bsfex_689 {\r\n    position: absolute;\r\n    max-width: 100vw;\r\n  }\r\n  \r\n  ._controls_bsfex_699 {\r\n    display: flex;\r\n    flex-direction: row;\r\n    align-items: center;\r\n  }\r\n  \r\n  ._iconsHeader_bsfex_67 {\r\n    color: white;\r\n    position: absolute;\r\n    display: flex;\r\n    flex-direction: row;\r\n    /* align-items: center;\r\n      justify-content: center; */\r\n    cursor: pointer;\r\n    top: 10px;\r\n    right: 45px;\r\n    z-index: 999999999;\r\n    /* padding: 0.14vw; */\r\n  }\r\n  \r\n  ._ytVideo_bsfex_739 {\r\n    aspect-ratio: 16 / 9;\r\n    height: 65vh;\r\n    width: 100%;\r\n  }\r\n  \r\n  ._videoOuterContainer_bsfex_751 {\r\n    width: 65%;\r\n    margin-left: auto;\r\n    margin-right: auto;\r\n    height: 60vh;\r\n    max-height: 65vh;\r\n  }\r\n  \r\n  ._htmlVideoOuterContainer_bsfex_379 {\r\n    width: 80%;\r\n    margin-left: auto;\r\n    margin-right: auto;\r\n  }\r\n  \r\n  ._customVideoContainer_bsfex_779, ._customEmbedContainer_bsfex_779 {\r\n    margin-left: auto;\r\n    margin-right: auto;\r\n  }\r\n  \r\n  ._videoIconsHeader_bsfex_789 {\r\n    position: fixed;\r\n    top: 4%;\r\n    right: 3%;\r\n  }\r\n  \r\n  ._lightbox_bsfex_1 ._iconsHeader_bsfex_67 svg {\r\n    transition: 0.3s all;\r\n  }\r\n  \r\n  ._iconsHeader_bsfex_67 svg:active {\r\n    transform: scale(0.97);\r\n  }\r\n  \r\n  ._imgTitle_bsfex_279 {\r\n    text-align: center;\r\n    width: 80%;\r\n    margin-left: auto;\r\n    margin-right: auto;\r\n  }\r\n  \r\n  ._iconsHeader_bsfex_67 svg {\r\n    margin-left: 0.6em;\r\n    padding: 0.2em;\r\n    transition: all 0.1s;\r\n    /* width: 32px;  */\r\n    /* font-size: 18px; */\r\n    line-height: 16px;\r\n    vertical-align: baseline;\r\n  }\r\n  \r\n  ._icon_bsfex_67 {\r\n    /* width: 32px;  */\r\n  }\r\n  \r\n  @media screen and (min-width: 6em) {\r\n    ._iconsHeader_bsfex_67 {\r\n      top: 3%;\r\n    }\r\n  \r\n    ._slideshowAnimContainer_bsfex_459 {\r\n      width: 100vw;\r\n    }\r\n  \r\n    ._iconsHeader_bsfex_67 svg {\r\n      /* width: 34px;  */\r\n      padding-right: 0.3em;\r\n    }\r\n  \r\n    ._lightboxjs_bsfex_1 img {\r\n      cursor: pointer;\r\n    }\r\n  \r\n    ._thumbnail_bsfex_117 {\r\n      height: 9vh;\r\n      /* width: 22vw; */\r\n    }\r\n  \r\n    ._next1_bsfex_73 {\r\n      top: calc(48% - 20px);\r\n    }\r\n  \r\n    ._prev1_bsfex_71 {\r\n      top: calc(48% - 20px);\r\n  \r\n    }\r\n  \r\n  \r\n  }\r\n  \r\n  @media screen and (min-width: 39em) {\r\n    ._slideshowAnimContainer_bsfex_459 {\r\n      width: 100vw;\r\n    }\r\n  \r\n    ._slideshowInnerContainer_bsfex_251 {\r\n      width: 100vw;\r\n      height: 95vh;\r\n      position: absolute;\r\n    }\r\n  \r\n    ._imgTitleContainer_bsfex_279 {\r\n      padding-bottom: 0px;\r\n    }\r\n    \r\n  \r\n    ._next1_bsfex_73 {\r\n      right: 0.7%;\r\n    }\r\n  \r\n    /* .hideControlsBar .slideshow_img {\r\n      height: 70vh;\r\n  \r\n    }\r\n  \r\n    .hideControlsBar {\r\n      top: 10%;\r\n    } */\r\n  \r\n    ._fullScreenContainer_bsfex_495 {\r\n      width: 100vw;\r\n      height: 100vh;\r\n    }\r\n  \r\n    ._fullScreenContainer_bsfex_495 img {\r\n      height: 100vh;\r\n    }\r\n  \r\n    ._thumbnails_bsfex_171 {\r\n      margin-top: 0.6em;\r\n    }\r\n  \r\n    ._thumbnail_bsfex_117 {\r\n      /* height: 8vh; */\r\n      width: 80px;\r\n      max-width: 80px;\r\n    }\r\n  \r\n    ._iconsHeader_bsfex_67 svg {\r\n      /* width: 32px; \r\n        font-size: 32px; */\r\n    }\r\n  \r\n    ._prev1_bsfex_71 {\r\n      left: 2.7%;\r\n      padding-right: 2vw;\r\n    }\r\n  }\r\n  \r\n  /* Desktop screens */\r\n  @media screen and (min-width: 42em) {\r\n    ._imageSlide_bsfex_211 {\r\n      height: 70vh;\r\n      width: 80vw;\r\n    }\r\n\r\n    ._innerContainerWithTopCaption_bsfex_1061 {\r\n      top: 8%;\r\n    }\r\n\r\n    ._slideshowImgFullscreen_bsfex_1069 {\r\n      display: grid;\r\n      width: 92vw;\r\n      place-items: start;\r\n      margin-left: auto;\r\n      margin-right: auto;\r\n      scrollbar-gutter: stable both-edges;\r\n    }\r\n    \r\n    ._rotateImgInnerContainer_bsfex_243 {\r\n      top: 2%;\r\n    }\r\n  \r\n    ._slideshowInnerContainer_bsfex_251 img {\r\n      margin-top: 0vh;\r\n      /* width: 70vw; */\r\n    }\r\n  \r\n    ._fullScreenContainer_bsfex_495 img {\r\n      width: 80vw;\r\n    }\r\n  \r\n    ._slideshowInnerContainerFullScreen_bsfex_1113 {\r\n      top: 0%;\r\n    }\r\n  \r\n    ._fullScreenLightboxImg_bsfex_1121 {\r\n      margin-left: auto;\r\n      margin-right: auto;\r\n      height: 100vh;\r\n    }\r\n\r\n    ._slideshowInnerContainerImgMetadata_bsfex_1133 {\r\n      display: flex;\r\n      flex-direction: column;\r\n      flex-wrap: wrap;\r\n      justify-content: flex-start;\r\n    }\r\n  \r\n    ._slideshowInnerContainerFullScreen_bsfex_1113 {\r\n      height: 100vh;\r\n      width: 100vw;\r\n      position: absolute;\r\n    }\r\n  \r\n    ._slideshowInnerContainerFullScreen_bsfex_1113 img {\r\n      object-fit: contain;\r\n    }\r\n  \r\n    ._thumbnails_bsfex_171 {\r\n      scrollbar-width: none;\r\n      -ms-overflow-style: none;\r\n      margin-top: 1.1em;\r\n    }\r\n  \r\n    ._thumbnails_bsfex_171::-webkit-scrollbar {\r\n      display: none; /* Safari and Chrome */\r\n    }\r\n  \r\n    ._opacity-fade_bsfex_1187 {\r\n      transition: opacity 0.3s;\r\n      -webkit-transition: opacity 0.3s;\r\n      opacity: 1;\r\n    }\r\n  \r\n    ._thumbnailsOuterContainer_bsfex_221 {\r\n      margin-top: 0.1em;\r\n      padding-top: 0.3em;\r\n      height: 5vh;\r\n      bottom: 11%;\r\n    }\r\n  \r\n    ._thumbnail_bsfex_117,\r\n    ._imageSliderThumbnails_bsfex_1215 img {\r\n      height: 10vh;\r\n      /* width: 7em; */\r\n    }\r\n  \r\n    ._slideshowAnimContainer_bsfex_459 {\r\n      width: 100vw;\r\n    }\r\n  \r\n    ._slideshowInnerContainer_bsfex_251 {\r\n      width: 100vw;\r\n      height: 95vh;\r\n    }\r\n  \r\n    ._hideControlsBar_bsfex_235 {\r\n      height: 100vh;\r\n    }\r\n  \r\n    ._fullScreenContainer_bsfex_495 {\r\n      width: 100vw;\r\n      height: 100vh;\r\n    }\r\n  \r\n    ._iconsHeader_bsfex_67 svg {\r\n      /* width: 37px;\r\n        font-size: 34px; */\r\n    }\r\n  \r\n    ._prev1_bsfex_71 {\r\n      left: 2%;\r\n      padding-right: 2vw;\r\n    }\r\n  \r\n    ._next1_bsfex_73 {\r\n      right: 0.4%;\r\n    }\r\n  \r\n    \r\n    ._slideshowImgMetadata_bsfex_1291 {\r\n      width: 78vw;\r\n    }\r\n  \r\n    ._prev1Metadata_bsfex_1299 {\r\n      left: 1%;\r\n    }\r\n  \r\n    ._navigationDots_bsfex_195 {\r\n      gap: 8px;\r\n    }\r\n  }\r\n  \r\n  @media screen and (min-width: 53em) {\r\n    \r\n    ._slideshowImg_bsfex_235 {\r\n      display: grid;\r\n      width: 100vw;\r\n      height: 70vh;\r\n      place-items: start;\r\n      /* margin-top: 7vh; */\r\n    }\r\n  \r\n    ._hideControlsBar_bsfex_235 ._slideshowImg_bsfex_235, ._hideControlsBarAndCaption_bsfex_1337 ._slideshowImg_bsfex_235  {\r\n      padding-top: 12vh;\r\n    }\r\n\r\n    ._fullScreenContainer_bsfex_495 ._slideshowImg_bsfex_235 {\r\n      padding-top: 0vh;\r\n    }\r\n  \r\n  \r\n    ._lightboxImg_bsfex_1355 {\r\n        /* height: 70vh; */\r\n    }\r\n  \r\n    ._thumbnail_bsfex_117 {\r\n      width: 95px;\r\n      max-width: 80px;\r\n    } \r\n  \r\n    ._slideshowImgMetadata_bsfex_1291 {\r\n      width: 78vw;\r\n    }\r\n  }\r\n    \r\n  \r\n  @media screen and (min-width: 80em) {\r\n    ._slideshowInnerContainer_bsfex_251 img {\r\n      /* width: 60vw; */\r\n    }\r\n  \r\n    ._fullScreenContainer_bsfex_495 img {\r\n      width: 80vw;\r\n    }\r\n  }\r\n  \r\n  ._lightIcon_bsfex_1405,\r\n  ._lightIcon_bsfex_1405 svg {\r\n    background-color: white;\r\n    color: black;\r\n  }\r\n  \r\n  ._lightIcon_bsfex_1405:hover,\r\n  ._lightIcon_bsfex_1405 svg:hover {\r\n    background-color: white;\r\n    color: black;\r\n    fill: black;\r\n  }\r\n  \r\n  ._darkIcon_bsfex_1431,\r\n  ._darkIcon_bsfex_1431 svg {\r\n    background-color: transparent;\r\n    /* background-color: #151515; */\r\n    color: silver;\r\n    fill: silver;\r\n  }\r\n  \r\n  ._darkIcon_bsfex_1431:hover,\r\n  ._darkIcon_bsfex_1431 svg:hover {\r\n    color: rgba(107, 107, 107, 0.8);\r\n    fill: rgba(107, 107, 107, 0.8);\r\n  }\r\n  \r\n  /* Header icons  */\r\n  ._lightHeaderIcon_bsfex_1461 svg {\r\n    background-color: white;\r\n    color: black;\r\n    fill: black;\r\n  }\r\n  \r\n  ._lightHeaderIcon_bsfex_1461 svg:hover {\r\n    background-color: white;\r\n    color: rgb(24, 24, 24, 0.8);\r\n    fill: rgb(24, 24, 24, 0.8);\r\n\r\n  }\r\n  \r\n  ._darkHeaderIcon_bsfex_1487 svg {\r\n    background-color: transparent;\r\n    /* background-color: #151515; */\r\n    color: #626b77;\r\n    fill: #626b77;\r\n  }\r\n  \r\n  ._darkHeaderIcon_bsfex_1487 svg:hover {\r\n    color: rgba(99, 99, 99, 0.8);\r\n    fill: rgba(99, 99, 99, 0.8);\r\n  }\r\n  \r\n  ._magnifierImage_bsfex_1511 {\r\n    object-fit: contain;\r\n  }\r\n  \r\n  ._thumbnails_bsfex_171 ._active_bsfex_1519 {\r\n    border: solid rgb(107, 133, 206) 2px;\r\n  }\r\n  \r\n  ._inactiveThumbnailBorder_bsfex_1527 {\r\n    border: solid transparent 2px;\r\n  }\r\n  \r\n  ._thumbnails_bsfex_171 {\r\n    width: 95%;\r\n  }\r\n  \r\n  ._emblaThumbs_bsfex_1543 {\r\n    --thumbs-slide-spacing: 2px; \r\n    /* --thumbs-slide-height: 9rem; */\r\n    margin-top: var(--thumbs-slide-spacing);\r\n  }\r\n\r\n  @media screen and (max-width: 40em) {\r\n    ._innerContainerWithTopCaption_bsfex_1061 {\r\n      position: relative;\r\n    }\r\n  \r\n    ._imgTitleContainer_bsfex_279 {\r\n      position: absolute;\r\n      top: 12%;\r\n    }\r\n  }\r\n\r\n  @media screen and (max-width: 44em) and (min-width: 30em) {\r\n    ._innerContainerWithTopCaption_bsfex_1061 {\r\n      position: relative;\r\n    }\r\n  \r\n    ._imgTitleContainer_bsfex_279 {\r\n      position: absolute;\r\n      top: 5%;\r\n    }\r\n  }\r\n\r\n  @media screen and (max-width: 46em) and (min-width: 30em) {\r\n    ._innerContainerWithTopCaption_bsfex_1061 {\r\n      position: relative;\r\n    }\r\n  \r\n    ._imgTitleContainer_bsfex_279 {\r\n      position: absolute;\r\n      top: 7%;\r\n    }\r\n  }\r\n  \r\n  @media screen and (max-width: 49em) and (min-width: 45em) {\r\n    ._innerContainerWithTopCaption_bsfex_1061 {\r\n      position: relative;\r\n    }\r\n  \r\n    ._imgTitleContainer_bsfex_279 {\r\n      position: absolute;\r\n      top: 5%;\r\n    }\r\n  }\r\n  \r\n  @media screen and (max-width: 29em) {\r\n    ._fullScreenContainer_bsfex_495 img {\r\n      object-fit: cover;\r\n    }\r\n  \r\n    ._emblaThumbs_bsfex_1543 {\r\n      --thumbs-slide-spacing: 3px; \r\n      /* --thumbs-slide-height: 9rem; */\r\n      margin-top: var(--thumbs-slide-spacing);\r\n    }\r\n\r\n\r\n\r\n    ._htmlVideo_bsfex_379 {\r\n      margin-top: 5vh;\r\n    }\r\n  \r\n    ._thumbnails_bsfex_171 {\r\n      width: 98%;\r\n    }\r\n  \r\n    ._thumbnail_bsfex_117 {\r\n      width: 80px;\r\n      max-width: 80px;\r\n    }\r\n  \r\n    ._htmlVideoOuterContainer_bsfex_379 video {\r\n      max-height: 65vh;\r\n    }\r\n  \r\n    ._videoIconsHeader_bsfex_789 {\r\n      position: fixed;\r\n      top: 2%;\r\n      right: 15px;\r\n    }\r\n  \r\n    ._videoOuterContainer_bsfex_751 {\r\n      width: 88%;\r\n      margin-left: auto;\r\n      margin-right: auto;\r\n      height: 100%;\r\n      max-height: 65vh;\r\n    }\r\n  \r\n    ._htmlVideoOuterContainer_bsfex_379 {\r\n      width: 94%;\r\n      margin-left: auto;\r\n      margin-right: auto;\r\n    }\r\n  \r\n    ._iconsHeader_bsfex_67 {\r\n      position: fixed;\r\n      left: 115px;\r\n    }\r\n  \r\n    ._slideshowInnerVideoContainer_bsfex_585 {\r\n      top: 3%;\r\n    }\r\n  \r\n    ._next1_bsfex_73,\r\n    ._prev1_bsfex_71 {\r\n      padding-bottom: 2vh;\r\n      padding-top: 2vh;\r\n    }\r\n  \r\n    ._next1_bsfex_73 {\r\n      padding-left: 4vw;\r\n    }\r\n  \r\n    ._prev1_bsfex_71 {\r\n      padding-right: 4vw;\r\n    }\r\n  \r\n    ._iconsHeader_bsfex_67 {\r\n      /* font-size: 28px; */\r\n    }\r\n  \r\n  }\r\n\r\n\r\n\r\n  \r\n  @media screen and (max-width: 53em) {\r\n    ._slideshowImg_bsfex_235 {\r\n      display: flex;\r\n      justify-content: center;\r\n      align-items: center;\r\n      text-align: center;\r\n      width: 100vw;\r\n      height: 70vh;\r\n    }\r\n  \r\n    ._slideshowImg_bsfex_235 img {\r\n      margin-left: auto;\r\n      margin-right: auto;\r\n    }\r\n  \r\n    ._slideshowImg_bsfex_235 {\r\n      display: flex;\r\n      justify-content: center;\r\n      align-items: center;\r\n      text-align: center;\r\n      width: 100vw;\r\n      height: 70vh;\r\n    }\r\n  \r\n    ._slideshowInnerContainerFullScreen_bsfex_1113 {\r\n      position: fixed;\r\n      display: flex;\r\n      flex-direction: column;\r\n      justify-content: center;\r\n      transition: top 0.2s ease-in-out 0s;\r\n      top: 10%;\r\n      align-content: center;\r\n      margin-left: auto;\r\n      margin-right: auto;\r\n      text-align: center;\r\n      z-index: 1000000;\r\n    }\r\n  \r\n    ._containImg_bsfex_1883 {\r\n      object-fit: contain;\r\n    }\r\n  \r\n  }\r\n  \r\n  ._fullScreenContainer_bsfex_495 img {\r\n    object-fit: contain;\r\n    width: 100%;\r\n    height: 100%;\r\n    \r\n  }\r\n  \r\n  ._thumbnails_bsfex_171 {\r\n    text-align: center;\r\n    white-space: nowrap;\r\n  }\r\n  \r\n  ._reactTransformComponent_bsfex_1919 {\r\n    margin-left: auto;\r\n    margin-right: auto;\r\n  }\r\n  \r\n  ._magnifierImage_bsfex_1511 {\r\n    margin-left: auto;\r\n    margin-right: auto;\r\n  }\r\n  \r\n  /* CSS loader  */\r\n  ._loader_bsfex_1941 {\r\n    width: 44px;\r\n    height: 44px;\r\n    box-sizing: border-box;\r\n  \r\n    border-radius: 50%;\r\n  \r\n    display: inline-block;\r\n    position: fixed;\r\n    top: 50%;\r\n    left: 50%;\r\n    animation: _rotation_bsfex_1 1s linear infinite;\r\n  }\r\n  \r\n  @keyframes _rotation_bsfex_1 {\r\n    0% {\r\n      transform: rotate(0deg);\r\n    }\r\n    100% {\r\n      transform: rotate(360deg);\r\n    }\r\n  }\r\n  \r\n  ._dayLoader_bsfex_1987 {\r\n    border: 5px solid #626b77;\r\n    border-bottom-color: transparent;\r\n  }\r\n  \r\n  ._nightLoader_bsfex_1997 {\r\n    border: 5px solid #fff;\r\n    border-bottom-color: transparent;\r\n  }\r\n  \r\n  ._lightboxImg_bsfex_1355 {\r\n    max-height: 70vh;\r\n    margin-left: auto;\r\n    margin-right: auto;\r\n  }\r\n  \r\n  ._controls_bsfex_699 button, ._closeButton_bsfex_2019, ._closeButtonRounded_bsfex_2019 {\r\n    background: none;\r\n    border: none;\r\n    padding: 0;\r\n    cursor: pointer;\r\n    font-size: 16px;\r\n  }\r\n  \r\n  ._controls_bsfex_699 svg {\r\n    box-sizing: border-box;\r\n  }\r\n  \r\n  ._closeButton_bsfex_2019 svg, ._closeButtonRounded_bsfex_2019 svg {\r\n    box-sizing: border-box;\r\n    font-size: 16px;\r\n    padding-top: 0.5px;\r\n  }\r\n  \r\n  ._closeButton_bsfex_2019 {\r\n    padding-top: 3px;\r\n  }\r\n  \r\n  ._closeButtonRounded_bsfex_2019 {\r\n    cursor: pointer;\r\n  \r\n  }\r\n  \r\n  ._closeButtonRounded_bsfex_2019 svg {\r\n    margin: 0;\r\n    padding: 5px;\r\n    background-color: black;\r\n    border-color: transparent;\r\n    border-radius: 28px;\r\n  \r\n  }\r\n  \r\n  ._thumbnailsAndCaption_bsfex_371 {\r\n    bottom: 0%;\r\n    height: 19vh;\r\n    margin-top: 0em;\r\n    width: 100vw;\r\n  }\r\n  \r\n  ._thumbnailsWithCaption_bsfex_187 {\r\n    margin-top: 0em;\r\n  }\r\n  \r\n  ._slideImageAndCaption_bsfex_2113 {\r\n    top: 9%;\r\n  }\r\n  \r\n  ._slideImageAndCaption_bsfex_2113._hideControlsBar_bsfex_235 {\r\n    top: 0;\r\n  }\r\n  \r\n  ._slideshowAnimContainer_bsfex_459 {\r\n    -ms-overflow-style: none;\r\n    /* scrollbar-width: none;   */\r\n  }\r\n  ._thumbnails_bsfex_171::-webkit-scrollbar {\r\n    display: none;\r\n  }\r\n  \r\n  ._roundedBorder_bsfex_2145 {\r\n    border-radius: 20px;\r\n  }\r\n  \r\n  ._maxWidthFull_bsfex_2153 {\r\n    max-width: 100%;\r\n  }\r\n  \r\n  ._maxWidthWithoutMagnifier_bsfex_2161 {\r\n    max-width: 80%;\r\n  }\r\n  \r\n  @media screen and (max-width: 880px) {\r\n    ._iconsHeader_bsfex_67 {\r\n      position: fixed;\r\n      right: 5%;\r\n    }\r\n  }\r\n  \r\n  @media screen and (max-width: 480px) {\r\n    ._iconsHeader_bsfex_67 {\r\n      position: fixed;\r\n      left: 180px;\r\n    }\r\n    \r\n  }\r\n  \r\n  @media screen and (max-width: 440px) {\r\n    ._iconsHeader_bsfex_67 {\r\n      position: fixed;\r\n      left: 160px;\r\n    }\r\n  }\r\n  \r\n  @media screen and (max-width: 410px) {\r\n    ._iconsHeader_bsfex_67 {\r\n      position: fixed;\r\n      left: 140px;\r\n    }\r\n  }\r\n  \r\n  @media screen and (max-width: 385px) {\r\n    ._iconsHeader_bsfex_67 {\r\n      position: fixed;\r\n      left: 135px;\r\n      /* top: 24px; */\r\n    }\r\n  }\r\n  \r\n  @media screen and (max-width: 365px) {\r\n    ._iconsHeader_bsfex_67 {\r\n      position: fixed;\r\n      left: 90px;\r\n    }\r\n  }\r\n  \r\n  @media screen and (max-width: 345px) {\r\n    ._iconsHeader_bsfex_67 {\r\n      position: fixed;\r\n      left: 82px;\r\n    }\r\n  }\r\n  \r\n  @media screen and (max-width: 325px) {\r\n    ._iconsHeader_bsfex_67 {\r\n      position: fixed;\r\n      left: 60px;\r\n    }\r\n  }\r\n  \r\n  @media screen and (max-width: 300px) {\r\n    ._iconsHeader_bsfex_67 {\r\n      position: fixed;\r\n      left: 30px;\r\n    }\r\n  }\r\n  \r\n  ._lightboxVideo_bsfex_2299 {\r\n    margin-left: auto;\r\n    margin-right: auto;\r\n  }\r\n \r\n  ._navigation-wrapper_bsfex_2309 {\r\n    position: relative;\r\n  }\r\n  \r\n  ._dots_bsfex_2317 {\r\n    display: flex;\r\n    padding: 10px 0;\r\n    justify-content: center;\r\n  }\r\n  \r\n  ._dot_bsfex_2317 {\r\n    border: none;\r\n    width: 10px;\r\n    height: 10px;\r\n    background: #c5c5c5;\r\n    border-radius: 50%;\r\n    margin: 0 5px;\r\n    padding: 5px;\r\n    cursor: pointer;\r\n  }\r\n  \r\n  ._dot_bsfex_2317:focus {\r\n    outline: none;\r\n  }\r\n  \r\n  ._dot_bsfex_2317._active_bsfex_1519 {\r\n    background: #000;\r\n  }\r\n  \r\n  ._arrow_bsfex_2367 {\r\n    position: absolute;\r\n    top: 50%;\r\n    font-size: 24px;\r\n    font-weight: bold;\r\n    transition: all 0.2s;\r\n    transform: translateY(-50%);\r\n    -webkit-transform: translateY(-50%);\r\n    color: #fff;\r\n    cursor: pointer;\r\n    padding-top: 10px;\r\n    padding-bottom: 10px;\r\n    font-family: sans-serif;\r\n  }\r\n  \r\n  ._leftArrow_bsfex_2397 {\r\n    left: 8px;\r\n    padding-right: 10px;\r\n    padding-top: 30px;\r\n    padding-bottom: 30px;\r\n  }\r\n  \r\n  ._rightArrow_bsfex_2411 {\r\n    left: auto;\r\n    right: 8px;\r\n    padding-left: 10px;\r\n    padding-top: 30px;\r\n    padding-bottom: 30px;\r\n  }\r\n  \r\n  ._arrow_bsfex_2367:hover {\r\n    color: rgb(230, 230, 230);\r\n  }\r\n  \r\n  ._arrow--disabled_bsfex_2435,\r\n  ._arrow--disabled_bsfex_2435:hover {\r\n    color: rgba(255, 255, 255, 0.5);\r\n  }\r\n  \r\n  ._navDotsMargin_bsfex_2445 {\r\n    margin-top: 12px;\r\n  }\r\n  \r\n  ._inactiveThumbnailBorderImgSlider_bsfex_2453 {\r\n    border: 'solid transparent 2px';\r\n  }\r\n  \r\n  ._ytVideoImgSlider_bsfex_2461 {\r\n    width: 100%;\r\n    height: 100%;\r\n  }\r\n  \r\n  ._ytVideoImgSlider_bsfex_2461 iframe {\r\n    width: 100%;\r\n    height: 100%;\r\n  }\r\n  \r\n  ._outerYTVideoImgSlider_bsfex_2481 {\r\n    height: 100%;\r\n  }\r\n  \r\n  ._lightboxjs_bsfex_1 iframe {\r\n    margin: none;\r\n    padding: none;\r\n    border: none;\r\n  }\r\n  \r\n  ._imgSliderArrow_bsfex_2501 {\r\n    z-index: 100000;\r\n    background-color: transparent;\r\n    border: none;\r\n  }\r\n  \r\n  ._thumbnails_bsfex_171 {\r\n    margin-left: auto;\r\n    margin-right: auto;\r\n  }\r\n  \r\n  ._cursorPointer_bsfex_2523 {\r\n    cursor: pointer;\r\n  }\r\n  \r\n  ._lightboxjsIcon_bsfex_2531 > * { color: inherit; fill: inherit }\r\n  \r\n  ._embla_bsfex_1543 {\r\n    margin-left: auto;\r\n    margin-right: auto;\r\n    --slide-spacing: 1rem;\r\n    --slide-size: 100%;\r\n    --slide-height: 19rem;\r\n  }\r\n  \r\n  ._emblaViewport_bsfex_2551 {\r\n    overflow: hidden;\r\n    width: 100vw;\r\n  }\r\n  \r\n  ._emblaContainer_bsfex_2561 {\r\n    backface-visibility: hidden; \r\n    touch-action: pan-y;\r\n    height: auto;\r\n    margin-left: calc(var(--slide-spacing) * -1);\r\n    display: grid;  \r\n    grid-auto-flow: column;  \r\n    grid-auto-columns: 100%; \r\n    max-width: 100vw;\r\n    margin-left: auto;\r\n    margin-right: auto; \r\n    /* width: 80%;\r\n  */\r\n  }\r\n  \r\n  ._emblaContainerImgMetadata_bsfex_2591 {\r\n    width: 78vw;\r\n    max-width: 78vw;\r\n    height: 80vh;\r\n  }\r\n  \r\n  ._imgdrag_bsfex_2603 ._emblaSlide_bsfex_2603 {\r\n    flex: 0 0 80%;\r\n    min-width: 0;\r\n    max-width: 100%;\r\n    padding-left: 12px;\r\n    position: relative;\r\n    margin-left: auto;\r\n    margin-right: auto;\r\n  }\r\n  \r\n  ._emblaThumbsViewport_bsfex_2623 {\r\n    overflow: hidden;\r\n  }\r\n  \r\n  ._emblaThumbsContainer_bsfex_2631 {\r\n    display: flex;\r\n    flex-direction: row;\r\n    margin-left: calc(var(--thumbs-slide-spacing) * -1);\r\n    width: 100%;\r\n    /* align-items: center;\r\n    text-align: center;\r\n    width: fit-content; */\r\n    /* justify-content: center; */\r\n    \r\n  }\r\n  \r\n  ._emblaThumbsContainer_bsfex_2631::before, ._emblaThumbsContainer_bsfex_2631::after {\r\n    content: '';  /* Insert pseudo-element */\r\n    margin: auto; /* Make it push flex items to the center */\r\n  }\r\n  \r\n  \r\n  ._emblaThumbsSlide_bsfex_2667 {\r\n    /* min-width: 0; */\r\n    padding-left: var(--thumbs-slide-spacing);\r\n    /* position: relative; */\r\n    /* width: 140px; */\r\n  }\r\n  \r\n  ._emblaThumbsSlideImg_bsfex_2681 {\r\n    /* display: block; */\r\n    height: var(--thumbs-slide-height);\r\n    width: 100%;\r\n    object-fit: cover;\r\n  }\r\n  \r\n  ._mlAuto_bsfex_2695 {\r\n    margin-left: auto;\r\n  }\r\n  \r\n  ._metadata_bsfex_2703 {\r\n    color: white;\r\n  }\r\n  \r\n  ._emblaSlideGrid_bsfex_2711 {\r\n    display: flex;\r\n  }\r\n  \r\n  ._metadata_bsfex_2703 {\r\n    text-align: left;\r\n    min-width: 17vw;\r\n    max-width: 17vw;\r\n    padding-top: 5vw;\r\n  }\r\n  \r\n  ._metadataPanel_bsfex_2733 {\r\n    display: flex;\r\n    flex-direction: column;\r\n    flex-wrap: wrap;\r\n  }\r\n  \r\n  ._metadataInnerContainer_bsfex_2745 {\r\n    padding-left: 7vw;\r\n  }\r\n  \r\n  ._metadataInnerContainer_bsfex_2745 span {\r\n    display: block;\r\n  }\r\n  \r\n  \r\n  ._imgMetadataCloseBtn_bsfex_2763 {\r\n    position: absolute;\r\n    top: 1%;\r\n    right: 2%;\r\n    background: none;\r\n    color: white;\r\n    border: none;\r\n    cursor: pointer;\r\n  }\r\n  \r\n  /* Styling from react-zoom-pan-pinch library */\r\n  ._reactTransformWrapper_bsfex_2785 {\r\n    position: relative;\r\n    width: -moz-fit-content;\r\n    width: fit-content;\r\n    height: -moz-fit-content;\r\n    height: fit-content;\r\n    overflow: hidden;\r\n    -webkit-touch-callout: none; /* iOS Safari */\r\n    -webkit-user-select: none; /* Safari */\r\n    -moz-user-select: none; /* Firefox */\r\n    -khtml-user-select: none; /* Konqueror HTML */\r\n    -ms-user-select: none; /* Internet Explorer/Edge */\r\n    user-select: none;\r\n    margin: 0;\r\n    padding: 0;\r\n  }\r\n  \r\n  ._reactTransformComponent_bsfex_1919 {\r\n    display: flex;\r\n    flex-wrap: wrap;\r\n    width: -moz-fit-content;\r\n    width: fit-content;\r\n    height: -moz-fit-content;\r\n    height: fit-content;\r\n    margin: 0;\r\n    padding: 0;\r\n    transform-origin: 0% 0%;\r\n  }\r\n  \r\n  ._reactTransformComponent_bsfex_1919 img {\r\n    pointer-events: none;\r\n  }\r\n  \r\n  ._navigationDot_bsfex_195 {\r\n    height: 10px;\r\n    width: 10px;\r\n    background-color: silver;\r\n    border-radius: 8px;\r\n    border: none;\r\n    cursor: pointer;\r\n  }\r\n  \r\n  ._navigationDotContainer_bsfex_2869 {\r\n    padding-top: 24px;\r\n    padding-bottom: 24px;\r\n    padding-left: 12px;\r\n    padding-right: 12px;\r\n  }\r\n  \r\n  ._imgfade_bsfex_2883._emblaContainer_bsfex_2561 {\r\n    transform: none !important; /* override Embla */\r\n    display: flex;\r\n    height: 250px;\r\n  }\r\n  \r\n  ._imgfade_bsfex_2883._emblaSlide_bsfex_2603 {\r\n    flex: 0 0 auto;\r\n    width: 100%;\r\n    height: 100%;\r\n    position: absolute;\r\n    /* top: 0; */\r\n    left: 0 !important; /* override Embla */\r\n    right: 0 !important; /* override Embla */\r\n    opacity: 0;\r\n    transition: opacity 0.5s;\r\n    counter-increment: embla;\r\n    border-radius: 0.5rem;\r\n  }\r\n  \r\n  ._imgfade_bsfex_2883._emblaSlideSelected_bsfex_2923 {\r\n    opacity: 1;\r\n    transition: opacity 0.3s;\r\n    z-index: 1;\r\n  }\r\n  \r\n  ._imgfade_bsfex_2883._emblaSlide_bsfex_2603:before {\r\n    position: absolute;\r\n    top: 50%;\r\n    left: 50%;\r\n    transform: translate(-50%, -50%);\r\n  }\r\n\r\n  ._fullImg_bsfex_2949 {\r\n    height: 84vh;\r\n    max-height: 84vh;\r\n    object-fit: contain;\r\n  }\r\n\r\n._rotateImg90Deg_bsfex_2961{\r\n  transform: rotate(90deg);\r\n  transition: transform 1s linear;\r\n}  \r\n\r\n._rotate_img_bsfex_2971 {\r\n  transition: transform 0.7s linear;\r\n}\r\n\r\n`;\n\n(function() {\n  if (typeof document === 'undefined') {\n    return;\n  }\n  if (!document.getElementById(digest)) {\n    var el = document.createElement('style');\n    el.id = digest;\n    el.textContent = css;\n    document.head.appendChild(el);\n  }\n})();\n    \nexport default {\"lightboxjs\":\"_lightboxjs_bsfex_1\",\"slideshowContainer\":\"_slideshowContainer_bsfex_37\",\"slideshowBtn\":\"_slideshowBtn_bsfex_55\",\"closeIcon\":\"_closeIcon_bsfex_63\",\"iconsHeader\":\"_iconsHeader_bsfex_67\",\"prev1\":\"_prev1_bsfex_71\",\"next1\":\"_next1_bsfex_73\",\"icon\":\"_icon_bsfex_67\",\"prevIcon\":\"_prevIcon_bsfex_89\",\"nextIcon\":\"_nextIcon_bsfex_91\",\"show\":\"_show_bsfex_101\",\"displayHidden\":\"_displayHidden_bsfex_109\",\"thumbnail\":\"_thumbnail_bsfex_117\",\"hoverShadow\":\"_hoverShadow_bsfex_131\",\"thumbnails\":\"_thumbnails_bsfex_171\",\"thumbnailsWithCaption\":\"_thumbnailsWithCaption_bsfex_187\",\"navigationDots\":\"_navigationDots_bsfex_195\",\"imageSlide\":\"_imageSlide_bsfex_211\",\"thumbnailsOuterContainer\":\"_thumbnailsOuterContainer_bsfex_221\",\"hideControlsBar\":\"_hideControlsBar_bsfex_235\",\"slideshowImg\":\"_slideshowImg_bsfex_235\",\"rotateImgInnerContainer\":\"_rotateImgInnerContainer_bsfex_243\",\"slideshowInnerContainer\":\"_slideshowInnerContainer_bsfex_251\",\"videoThumbnailsOuterContainer\":\"_videoThumbnailsOuterContainer_bsfex_271\",\"imgTitleContainer\":\"_imgTitleContainer_bsfex_279\",\"thumbnailsOuterContainerMetadata\":\"_thumbnailsOuterContainerMetadata_bsfex_355\",\"thumbnailsAndCaption\":\"_thumbnailsAndCaption_bsfex_371\",\"htmlVideoOuterContainer\":\"_htmlVideoOuterContainer_bsfex_379\",\"caption\":\"_caption_bsfex_391\",\"galleryImg\":\"_galleryImg_bsfex_411\",\"modalContainer\":\"_modalContainer_bsfex_421\",\"slideshowAnimContainer\":\"_slideshowAnimContainer_bsfex_459\",\"fullScreenContainer\":\"_fullScreenContainer_bsfex_495\",\"imageInnerContainer\":\"_imageInnerContainer_bsfex_507\",\"magnifyWrapper\":\"_magnifyWrapper_bsfex_545\",\"slideshowInnerVideoContainer\":\"_slideshowInnerVideoContainer_bsfex_585\",\"slideshowInnerContainerThumbnails\":\"_slideshowInnerContainerThumbnails_bsfex_593\",\"lightboxContainer\":\"_lightboxContainer_bsfex_617\",\"slideshowAnimImg\":\"_slideshowAnimImg_bsfex_689\",\"controls\":\"_controls_bsfex_699\",\"ytVideo\":\"_ytVideo_bsfex_739\",\"videoOuterContainer\":\"_videoOuterContainer_bsfex_751\",\"customVideoContainer\":\"_customVideoContainer_bsfex_779\",\"customEmbedContainer\":\"_customEmbedContainer_bsfex_779\",\"videoIconsHeader\":\"_videoIconsHeader_bsfex_789\",\"lightbox\":\"_lightbox_bsfex_1\",\"imgTitle\":\"_imgTitle_bsfex_279\",\"innerContainerWithTopCaption\":\"_innerContainerWithTopCaption_bsfex_1061\",\"slideshowImgFullscreen\":\"_slideshowImgFullscreen_bsfex_1069\",\"slideshowInnerContainerFullScreen\":\"_slideshowInnerContainerFullScreen_bsfex_1113\",\"fullScreenLightboxImg\":\"_fullScreenLightboxImg_bsfex_1121\",\"slideshowInnerContainerImgMetadata\":\"_slideshowInnerContainerImgMetadata_bsfex_1133\",\"opacityFade\":\"_opacity-fade_bsfex_1187\",\"imageSliderThumbnails\":\"_imageSliderThumbnails_bsfex_1215\",\"slideshowImgMetadata\":\"_slideshowImgMetadata_bsfex_1291\",\"prev1Metadata\":\"_prev1Metadata_bsfex_1299\",\"hideControlsBarAndCaption\":\"_hideControlsBarAndCaption_bsfex_1337\",\"lightboxImg\":\"_lightboxImg_bsfex_1355\",\"lightIcon\":\"_lightIcon_bsfex_1405\",\"darkIcon\":\"_darkIcon_bsfex_1431\",\"lightHeaderIcon\":\"_lightHeaderIcon_bsfex_1461\",\"darkHeaderIcon\":\"_darkHeaderIcon_bsfex_1487\",\"magnifierImage\":\"_magnifierImage_bsfex_1511\",\"active\":\"_active_bsfex_1519\",\"inactiveThumbnailBorder\":\"_inactiveThumbnailBorder_bsfex_1527\",\"emblaThumbs\":\"_emblaThumbs_bsfex_1543\",\"htmlVideo\":\"_htmlVideo_bsfex_379\",\"containImg\":\"_containImg_bsfex_1883\",\"reactTransformComponent\":\"_reactTransformComponent_bsfex_1919\",\"loader\":\"_loader_bsfex_1941\",\"rotation\":\"_rotation_bsfex_1\",\"dayLoader\":\"_dayLoader_bsfex_1987\",\"nightLoader\":\"_nightLoader_bsfex_1997\",\"closeButton\":\"_closeButton_bsfex_2019\",\"closeButtonRounded\":\"_closeButtonRounded_bsfex_2019\",\"slideImageAndCaption\":\"_slideImageAndCaption_bsfex_2113\",\"roundedBorder\":\"_roundedBorder_bsfex_2145\",\"maxWidthFull\":\"_maxWidthFull_bsfex_2153\",\"maxWidthWithoutMagnifier\":\"_maxWidthWithoutMagnifier_bsfex_2161\",\"lightboxVideo\":\"_lightboxVideo_bsfex_2299\",\"navigationWrapper\":\"_navigation-wrapper_bsfex_2309\",\"dots\":\"_dots_bsfex_2317\",\"dot\":\"_dot_bsfex_2317\",\"arrow\":\"_arrow_bsfex_2367\",\"leftArrow\":\"_leftArrow_bsfex_2397\",\"rightArrow\":\"_rightArrow_bsfex_2411\",\"arrowDisabled\":\"_arrow--disabled_bsfex_2435\",\"navDotsMargin\":\"_navDotsMargin_bsfex_2445\",\"inactiveThumbnailBorderImgSlider\":\"_inactiveThumbnailBorderImgSlider_bsfex_2453\",\"ytVideoImgSlider\":\"_ytVideoImgSlider_bsfex_2461\",\"outerYtVideoImgSlider\":\"_outerYTVideoImgSlider_bsfex_2481\",\"imgSliderArrow\":\"_imgSliderArrow_bsfex_2501\",\"cursorPointer\":\"_cursorPointer_bsfex_2523\",\"lightboxjsIcon\":\"_lightboxjsIcon_bsfex_2531\",\"embla\":\"_embla_bsfex_1543\",\"emblaViewport\":\"_emblaViewport_bsfex_2551\",\"emblaContainer\":\"_emblaContainer_bsfex_2561\",\"emblaContainerImgMetadata\":\"_emblaContainerImgMetadata_bsfex_2591\",\"imgdrag\":\"_imgdrag_bsfex_2603\",\"emblaSlide\":\"_emblaSlide_bsfex_2603\",\"emblaThumbsViewport\":\"_emblaThumbsViewport_bsfex_2623\",\"emblaThumbsContainer\":\"_emblaThumbsContainer_bsfex_2631\",\"emblaThumbsSlide\":\"_emblaThumbsSlide_bsfex_2667\",\"emblaThumbsSlideImg\":\"_emblaThumbsSlideImg_bsfex_2681\",\"mlAuto\":\"_mlAuto_bsfex_2695\",\"metadata\":\"_metadata_bsfex_2703\",\"emblaSlideGrid\":\"_emblaSlideGrid_bsfex_2711\",\"metadataPanel\":\"_metadataPanel_bsfex_2733\",\"metadataInnerContainer\":\"_metadataInnerContainer_bsfex_2745\",\"imgMetadataCloseBtn\":\"_imgMetadataCloseBtn_bsfex_2763\",\"reactTransformWrapper\":\"_reactTransformWrapper_bsfex_2785\",\"navigationDot\":\"_navigationDot_bsfex_195\",\"navigationDotContainer\":\"_navigationDotContainer_bsfex_2869\",\"imgfade\":\"_imgfade_bsfex_2883\",\"emblaSlideSelected\":\"_emblaSlideSelected_bsfex_2923\",\"fullImg\":\"_fullImg_bsfex_2949\",\"rotateImg90Deg\":\"_rotateImg90Deg_bsfex_2961\",\"rotateImg\":\"_rotate_img_bsfex_2971\"};\nexport { css, digest };\n  ","import { useState, useCallback, useEffect, useRef } from \"react\";\r\n\r\nexport const wrapNums = (minNum, maxNum, v) => {\r\n      if (minNum == maxNum) {\r\n        return minNum;\r\n      }\r\n      let rangeSize = maxNum - minNum;\r\n      return ((((v - minNum) % rangeSize) + rangeSize) % rangeSize) + minNum;\r\n};\r\n\r\nexport const shouldAutoplay = (elem) => {\r\n  // Autoplay for HTML5 Video elems set to true by default\r\n  // Autoplay is off by default for YouTube embeds\r\n\r\n  if (elem.type == 'yt' && elem.autoPlay != true && elem.autoPlay != 'true') {\r\n    return false\r\n  } else if (elem.autoPlay == false || elem.autoPlay == 'false') {\r\n    return false\r\n  }\r\n  return true\r\n}\r\n\r\nexport const getVideoHeight = (elem) => {\r\n  if (elem.videoHeight) {\r\n    return elem.videoHeight\r\n  }\r\n  return \"200\"\r\n}\r\n\r\nexport const getVideoWidth = (elem) => {\r\n  if (elem.videoWidth) {\r\n    return elem.videoWidth\r\n  }\r\n  return \"900\"\r\n}\r\n\r\nexport const useInterval = (callback, timeDelay) => {\r\n      const savedCallbackRef = useRef();\r\n    \r\n      useEffect(() => {\r\n        savedCallbackRef.current = callback;\r\n      }, [callback]);\r\n    \r\n      useEffect(() => {\r\n        function tick() {\r\n          savedCallbackRef.current();\r\n        }\r\n        if (timeDelay !== null) {\r\n          // Set the interval\r\n          let intervalID = setInterval(tick, timeDelay);\r\n\r\n          // Remove the interval\r\n          return () => clearInterval(intervalID);\r\n        }\r\n      }, [timeDelay]);\r\n}\r\n\r\nexport const openFullScreen = (lightbox_elem) => {\r\n  if (lightbox_elem.requestFullscreen) {\r\n    lightbox_elem.requestFullscreen();\r\n  } \r\n\r\n  /* Safari */\r\n  else if (lightbox_elem.webkitRequestFullscreen) { \r\n    lightbox_elem.webkitRequestFullscreen();\r\n  } \r\n  \r\n  /* Internet Explorer */\r\n  else if (lightbox_elem.msRequestFullscreen) { \r\n    lightbox_elem.msRequestFullscreen();\r\n  }\r\n}\r\n\r\nexport const closeFullScreen = (document) => {\r\n  if (document.exitFullscreen) {\r\n    document.exitFullscreen();\r\n  } \r\n\r\n  /* Safari */\r\n  else if (document.webkitExitFullscreen) { \r\n    document.webkitExitFullscreen();\r\n  } \r\n  \r\n  /* Internet Explorer */\r\n  else if (document.msExitFullscreen) { \r\n    document.msExitFullscreen();\r\n  }\r\n}\r\n\r\nexport const swipePower = (offset, velocity) => {\r\n    return Math.abs(offset) * velocity;\r\n};\r\n\r\nexport const getScale = (num, maxScale) => {\r\n  if (num < 1) {\r\n    return 1\r\n  }\r\n  else if (num > maxScale) {\r\n    return maxScale;\r\n  }\r\n  \r\n  return num;\r\n  \r\n}"],"mappings":";;;AAAA,YAAY,WAAW;AACvB,SAAS,YAAAA,WAAU,aAAAC,YAAW,UAAAC,SAAQ,eAAAC,cAAyB,2BAAsD;AACrH,SAAS,QAAQ,iBAAoD,0BAA2B;;;ACDhG,IAAM,SAAS;AACf,IAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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","names":["useState","useEffect","useRef","useCallback","useRef","useEffect","useState","useCallback","emblaApi","images","props","ref","width","document"]}