{"version":3,"file":"ImageSlider.mjs","names":["Dialog","makeStyles","React","useCallback","useMemo","useState","useTranslation","ImageViewerSideSheet","Image","ImageFooter","AmbientCard","IconButtonWithTooltip","getIconFromName","useStyles","theme","root","backgroundColor","palette","background","paper","imagesWrapper","display","width","height","overflow","alignItems","imageSection","image","objectFit","flexShrink","flexGrow","transition","openSideSheetIcon","position","top","props","title","right","zIndex","dialogContent","flexDirection","closeDialog","margin","spacing","dialogImageSection","flex","defaultFieldMapping","filePath","fileName","primaryText","secondaryText","ImageSlider","$","_c","images","fieldMapping","t0","sideSheetTitle","sideSheetWidth","hideDownload","hidePrimaryText","hideSecondaryText","hidePrimaryTextInExpandMode","hideSecondaryTextInExpandMode","expandInSideSheet","t1","undefined","classes","t","currentImageIndex","setCurrentImageIndex","openSideSheet","setOpenSideSheet","t2","Symbol","for","t3","previous","_temp","_temp2","handleViewImage","handleExpandImage","t4","bb0","imgObj","t5","t6","t7","t8","t9","currentImageObj","map","translate","defaultValue","t10","t11","t12","prev","prev_0"],"sources":["../../../../src/UI/fileViewer/imageSlider/ImageSlider.jsx"],"sourcesContent":["import { Dialog, makeStyles } from '@material-ui/core';\nimport React, { useCallback, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { ImageViewerSideSheet } from './ImageViewerSideSheet';\nimport { Image } from './Image';\nimport { ImageFooter } from './ImageFooter';\nimport { AmbientCard } from '../../surfaces/cards/AmbientCard';\nimport { IconButtonWithTooltip } from '../../inputs/buttons/IconButtonWithToolTip';\nimport { getIconFromName } from '../../../utilities/tree/TreeUtilities';\n\nconst useStyles = makeStyles(theme => ({\n  root: {\n    backgroundColor: theme.palette.background.paper,\n  },\n  imagesWrapper: {\n    display: 'flex',\n    width: '100%',\n    height: '100%',\n    overflow: 'hidden',\n    alignItems: 'center',\n  },\n  imageSection: {\n    width: '100%',\n    height: '100%',\n  },\n  image: {\n    objectFit: 'contain',\n    display: 'block',\n    flexShrink: 0,\n    flexGrow: 0,\n    transition: 'translate 300ms ease-in-out',\n  },\n  openSideSheetIcon: {\n    display: 'block',\n    position: 'absolute',\n    top: props => (props?.title ? 64 : 8),\n    right: 8,\n    zIndex: 3,\n    backgroundColor: theme.palette.background.paper,\n  },\n  dialogContent: {\n    overflow: 'hidden',\n    width: '100vw',\n    height: '100vh',\n    display: 'flex',\n    flexDirection: 'column',\n  },\n  closeDialog: {\n    margin: theme.spacing(1),\n  },\n  dialogImageSection: {\n    flex: 2,\n    height: '100%',\n  },\n}));\n\nconst defaultFieldMapping = {\n  filePath: 'filePath',\n  fileName: 'fileName',\n  primaryText: 'primaryText',\n  secondaryText: 'secondaryText',\n};\n\nexport const ImageSlider = props => {\n  const {\n    title,\n    images,\n    fieldMapping = defaultFieldMapping,\n    sideSheetTitle,\n    sideSheetWidth,\n    hideDownload,\n    hidePrimaryText,\n    hideSecondaryText,\n    hidePrimaryTextInExpandMode,\n    hideSecondaryTextInExpandMode,\n    expandInSideSheet = true,\n  } = props;\n  const classes = useStyles(props);\n  const { t } = useTranslation();\n  const [currentImageIndex, setCurrentImageIndex] = useState(0);\n  const [openSideSheet, setOpenSideSheet] = useState(false);\n\n  const handleViewImage = useCallback((previous = false) => {\n    if (previous) {\n      setCurrentImageIndex(prev => prev - 1);\n    } else {\n      setCurrentImageIndex(prev => prev + 1);\n    }\n  }, []);\n\n  const handleExpandImage = useCallback(() => {\n    setOpenSideSheet(true);\n  }, []);\n\n  const currentImageObj = useMemo(() => {\n    const imgObj = images?.[currentImageIndex];\n    if (!imgObj) return {};\n\n    return {\n      filePath: imgObj[fieldMapping?.filePath],\n      fileName: imgObj[fieldMapping?.fileName],\n      primaryText: imgObj[fieldMapping?.primaryText],\n      secondaryText: imgObj[fieldMapping?.secondaryText],\n    };\n  }, [currentImageIndex, fieldMapping, images]);\n\n  return (\n    <AmbientCard\n      fullWidth\n      title={title}\n      removePadding\n      lastChildBottomPadding=\"0px\"\n      removeTopLayoutUnit\n    >\n      <div className={classes.imagesWrapper}>\n        {images?.map(image => (\n          <img\n            src={image?.[fieldMapping?.filePath]}\n            alt={`${image?.[fieldMapping?.fileName]}`}\n            loading=\"lazy\"\n            width=\"100%\"\n            height=\"auto\"\n            className={classes.image}\n            style={{ translate: `${-100 * currentImageIndex}%` }}\n          />\n        ))}\n      </div>\n      <IconButtonWithTooltip\n        icon={getIconFromName('MiniExpand')}\n        title={t('fileViewer.expandImage', { defaultValue: 'Expand Image' })}\n        onClick={handleExpandImage}\n        id=\"udpRecord-ImageSlider-ExpandBtn\"\n        udprecordid=\"udpRecord-ImageSlider-ExpandBtn\"\n        className={classes.openSideSheetIcon}\n      />\n      <ImageFooter\n        images={images}\n        currentImageObj={currentImageObj}\n        hidePrimaryText={hidePrimaryText}\n        hideSecondaryText={hideSecondaryText}\n        handleViewImage={handleViewImage}\n        currentImageIndex={currentImageIndex}\n      />\n\n      {expandInSideSheet ? (\n        <ImageViewerSideSheet\n          title={sideSheetTitle}\n          open={openSideSheet}\n          onClose={() => {\n            setOpenSideSheet(false);\n          }}\n          imageObj={currentImageObj}\n          width={sideSheetWidth}\n          hideDownload={hideDownload}\n          hidePrimaryText={hidePrimaryTextInExpandMode}\n          hideSecondaryText={hideSecondaryTextInExpandMode}\n        />\n      ) : (\n        <Dialog\n          onClose={() => {\n            setOpenSideSheet(false);\n          }}\n          open={openSideSheet}\n          fullScreen\n        >\n          <div className={classes.dialogContent}>\n            <div className={classes.closeDialog}>\n              <IconButtonWithTooltip\n                icon={getIconFromName('Cancel')}\n                title={t('common.close', { defaultValue: 'Close' })}\n                onClick={() => {\n                  setOpenSideSheet(false);\n                }}\n                id=\"udpRecord-ImageSlider-PreviousBtn\"\n                udprecordid=\"udpRecord-ImageSlider-PreviousBtn\"\n              />\n            </div>\n            <div className={classes.dialogImageSection}>\n              <Image\n                imageObj={currentImageObj}\n                hidePrimaryText={hidePrimaryTextInExpandMode}\n                hideSecondaryText={hideSecondaryTextInExpandMode}\n              />\n            </div>\n          </div>\n        </Dialog>\n      )}\n    </AmbientCard>\n  );\n};\n"],"mappings":"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"}