{"version":3,"file":"/etc.clientlibs/corp-aem-sherwin/components/photogrid/clientlibs/site-photogrid/site-photogrid.e37cb11ad0849d6068fd.js","mappings":"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","sources":["webpack://aem-maven-archetype/../ui.apps/src/main/content/jcr_root/apps/corp-aem-sherwin/components/photogrid/MediaElement.tsx","webpack://aem-maven-archetype/../ui.apps/src/main/content/jcr_root/apps/corp-aem-sherwin/components/photogrid/Media.tsx","webpack://aem-maven-archetype/../ui.apps/src/main/content/jcr_root/apps/corp-aem-sherwin/components/photogrid/photogrid.site.tsx","webpack://aem-maven-archetype/../ui.apps/src/main/content/jcr_root/apps/corp-aem-sherwin/components/photogrid/PhotoGrid.tsx","webpack://aem-maven-archetype/../ui.apps/src/main/content/jcr_root/apps/corp-aem-sherwin/components/pressreleaselisting/Icon.tsx","webpack://aem-maven-archetype/../ui.apps/src/main/content/jcr_root/apps/corp-aem-sherwin/components/pressreleaselisting/useFilter.tsx"],"sourcesContent":["import React from 'react';\n\ninterface MediaElementProps {\n  src: string;\n  alt: string;\n  className?: string;\n  index?: number;\n  onClick?: (index: number) => void;\n}\n\nexport function isVideoSrc(src: string): boolean {\n  return /\\.(mp4|webm)$/.test(src);\n}\n\nexport function MediaElement({\n  src,\n  alt,\n  className,\n  index,\n  onClick,\n}: MediaElementProps) {\n  if (isVideoSrc(src)) {\n    const videoType = src.endsWith('.mp4') ? 'video/mp4' : 'video/webm';\n\n    return (\n      <video\n        onClick={onClick ? () => onClick(index) : null}\n        controls={onClick ? null : true}\n        className={className ? className + ' cmp-photogrid__photo-media-video': null}\n      >\n        <source src={src} type={videoType} />\n        Sorry, your browser does not support embedded videos.\n      </video>\n    );\n  }\n\n  return (\n    <img\n      src={src}\n      alt={alt ? alt : null}\n      className={\n        className ? className + ' cmp-photogrid__photo-media-img' : null\n      }\n      onClick={onClick ? () => onClick(index) : null}\n    />\n  );\n}\n","import React, {useCallback} from 'react';\n\nimport {Icon} from '../pressreleaselisting/Icon';\nimport {MediaElement} from './MediaElement';\n\ninterface PhotoProps {\n  src: string;\n  alt: string;\n  category: string;\n  spritePath: string;\n  index: number;\n  onClick: (index: number) => void;\n}\n\nexport function displayCategoryString(category: string): string {\n  switch (category) {\n    case 'architectural-coatings':\n      return 'Architectural Coatings';\n    case 'financial':\n      return 'Financial';\n    case 'innovation':\n      return 'Innovation';\n    case 'industrial':\n      return 'Industrial';\n    case 'sustainability':\n      return 'Sustainability';\n    case 'employee':\n      return 'Employee';\n    case 'culture':\n      return 'Culture';\n    case 'manufacturing-&-distribution':\n      return 'Manufacturing & Distribution';\n    case 'industrial-coatings':\n      return 'Industrial Coatings';\n    case 'leadership':\n      return 'Leadership';\n    case 'stores':\n      return 'Stores';\n    case 'inclusion,-diversity-&-equity':\n      return 'Inclusion, Diversity & Equity';\n    case 'community-engagement':\n      return 'Community Engagement';\n    case 'building-our-future':\n      return 'Building Our Future';\n    default:\n      return 'Corporate';\n  }\n}\n\nfunction MediaComponent({\n  src,\n  alt,\n  category,\n  spritePath,\n  index,\n  onClick,\n}: PhotoProps) {\n  const onClickCallback = useCallback(() => onClick(index), [index]);\n\n  return (\n    <div className=\"cmp-photogrid__photo-container\">\n      <div className=\"cmp-photogrid__photo\">\n        <MediaElement\n          src={src}\n          alt={alt}\n          index={index}\n          onClick={onClickCallback}\n          className={'cmp-photogrid__photo-media'}\n        />\n      </div>\n      <div className=\"cmp-photogrid__photo-card\">\n        <div className=\"cmp-photogrid__photo-card-category\">\n          {displayCategoryString(category)}\n        </div>\n        <div className=\"cmp-photogrid__photo-card-view-download\">\n          <button className=\"cmp-photogrid__photo-card-view-btn\" type=\"button\" onClick={onClickCallback}>\n            View{' '}\n            <Icon\n              spritePath={spritePath}\n              iconName={'filter-arrow-right'}\n              iconClassName={'cmp-photogrid__photo-card-icon'}\n            />\n          </button>\n          <a\n            className=\"cmp-photogrid__photo-card-download-btn\"\n            href={src}\n            download\n          >\n            Download{' '}\n            <Icon\n              iconName={'download-circle'}\n              spritePath={spritePath}\n              iconClassName={'cmp-photogrid__photo-card-icon'}\n            />\n          </a>\n        </div>\n      </div>\n    </div>\n  );\n}\n\nexport const Media = React.memo(MediaComponent);\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport {PhotoGrid} from './PhotoGrid';\n\nexport interface PhotoData {\n  src: string;\n  alt: string;\n  category: string;\n}\n\nconst photoGridJsonElem = document.getElementById('photoGridJsonOutput');\nconst photoGridReactElem = document.getElementById('photoGridReact');\n\nif (photoGridJsonElem === null || photoGridReactElem === null) {\n  throw new Error('No Photo Grid JSON element or React element not found.');\n}\n\nlet photoGridJson: PhotoData[] = JSON.parse(photoGridJsonElem.innerHTML);\n\nconst spritePath = photoGridReactElem.dataset.spriteSheetPath;\n\nReactDOM.render(\n  <React.StrictMode>\n    <PhotoGrid photoGridPhotos={photoGridJson} spritePath={spritePath} />\n  </React.StrictMode>,\n  photoGridReactElem\n);\n","import React, {useEffect, useMemo, useRef, useState} from 'react';\nimport Lightbox from 'lightbox-react';\n\nimport {useFilter} from '../pressreleaselisting/useFilter';\nimport {Icon} from '../pressreleaselisting/Icon';\nimport {displayCategoryString, Media} from './Media';\nimport {PhotoData} from './photogrid.site';\nimport {MediaElement} from './MediaElement';\n\ninterface FilterInternationalization {\n  showingOfString: string;\n  clearLabel: string;\n  categoryLabel: string;\n  categoryArchitecturalCoatingsLabel: string;\n  categoryCorporateLabel: string;\n  categoryFinancialLabel: string;\n  categoryInnovationLabel: string;\n  categoryIndustrialLabel: string;\n  categorySustainabilityLabel: string;\n  categoryEmployeeLabel: string;\n  categoryCultureLabel: string;\n  categoryManufacturingAndDistributionLabel: string;\n  categoryIndustrialCoatingsLabel: string;\n  categoryLeadershipLabel: string;\n  categoryStoresLabel: string;\n  categoryInclusionDiversityEquityLabel: string;\n  categoryCommunityEngagementLabel: string;\n  categoryBuildingOurFutureLabel: string;\n}\n\ninterface PhotoGridProps {\n  photoGridPhotos: PhotoData[];\n  spritePath: string;\n  filterInternationalization?: FilterInternationalization;\n}\n\nfunction shouldShowPhoto(category: string, photo: PhotoData): boolean {\n  return category === null || category === photo.category;\n}\n\nfunction createLightboxContent(\n  spritePath: string,\n  {src, alt, category}: PhotoData\n): string | React.ReactElement {\n  return (\n    <div className=\"cmp-photogrid__lightbox-container\">\n      <MediaElement\n        src={src}\n        alt={alt}\n        className=\"cmp-photogrid__lightbox-media\"\n      />\n      <div className=\"cmp-photogrid__lightbox-metadata\">\n        <div className=\"cmp-photogrid__lightbox-category\">\n          {displayCategoryString(category)}\n        </div>\n        {alt && (\n          <div className=\"cmp-photogrid__lightbox-description\">{alt}</div>\n        )}\n        <div className=\"cmp-photogrid__lightbox-download\">\n          <a\n            className=\"cmp-photogrid__photo-card-download-btn\"\n            href={src}\n            download\n          >\n            Download{' '}\n            <Icon\n              iconName={'download-circle'}\n              spritePath={spritePath}\n              iconClassName={'cmp-photogrid__photo-card-icon'}\n            />\n          </a>\n        </div>\n      </div>\n    </div>\n  );\n}\n\nexport function PhotoGrid({\n  photoGridPhotos,\n  spritePath,\n  filterInternationalization = {\n    showingOfString: 'Showing {current} of {total}',\n    clearLabel: 'Clear',\n    categoryLabel: 'Category',\n    categoryCorporateLabel: 'Corporate',\n    categoryArchitecturalCoatingsLabel: 'Architectural Coatings',\n    categoryFinancialLabel: 'Financial',\n    categoryInnovationLabel: 'Innovation',\n    categoryIndustrialLabel: 'Industrial',\n    categorySustainabilityLabel: 'Sustainability',\n    categoryEmployeeLabel: 'Employee',\n    categoryCultureLabel: 'Culture',\n    categoryManufacturingAndDistributionLabel: 'Manufacturing & Distribution',\n    categoryIndustrialCoatingsLabel: 'Industrial Coatings',\n    categoryLeadershipLabel: 'Leadership',\n    categoryStoresLabel: 'Stores',\n    categoryInclusionDiversityEquityLabel: 'Inclusion, Diversity & Equity',\n    categoryCommunityEngagementLabel: 'Community & Engagement',\n    categoryBuildingOurFutureLabel: 'Building Our Future',\n  },\n}: PhotoGridProps) {\n  const [_searchText, _setSearchText, category, setCategory, _year, _setYear] =\n    useFilter();\n  const [filteredPhotoGridPhotos, setFilteredPhotoGridPhotos] = useState<\n    PhotoData[]\n  >([]);\n  const [mediaIndex, setMediaIndex] = useState(0);\n  const [isLightboxOpen, setIsLightboxOpen] = useState(false);\n  const [filteredLightboxPhotos, setFilteredLightboxPhotos] = useState([]);\n\n  function filterPhotoGrid(): PhotoData[] {\n    return photoGridPhotos.filter((photo) => shouldShowPhoto(category, photo));\n  }\n\n  useEffect(() => {\n    setFilteredPhotoGridPhotos(filterPhotoGrid());\n  }, []);\n\n  useEffect(() => {\n    const filteredMediaData = filterPhotoGrid();\n\n    setFilteredPhotoGridPhotos(filteredMediaData);\n    setFilteredLightboxPhotos(\n      filteredMediaData.map((photoData) =>\n        createLightboxContent(spritePath, photoData)\n      )\n    );\n  }, [photoGridPhotos, category]);\n\n  function updateCategory(event): void {\n    const eventValue = event.target.value;\n\n    setCategory(eventValue === 'none' ? null : eventValue);\n  }\n\n  function resetFilter(): void {\n    setCategory(null);\n  }\n\n  function onMediaClick(index: number): void {\n    setMediaIndex(index);\n    setIsLightboxOpen(true);\n  }\n\n  const photoGridHtml = useMemo(() => {\n    return filteredPhotoGridPhotos.map((photo, i) => (\n      <Media\n        key={i}\n        src={photo.src}\n        alt={photo.alt}\n        category={photo.category}\n        spritePath={spritePath}\n        index={i}\n        onClick={onMediaClick}\n      />\n    ));\n  }, [filteredPhotoGridPhotos, spritePath, category]);\n\n  return (\n    <div className=\"cmp-photogrid__container\">\n      <div className=\"cmp-photogrid__number-shown\">\n        {filterInternationalization.showingOfString\n          .replace('{current}', filteredPhotoGridPhotos.length.toString())\n          .replace('{total}', photoGridPhotos.length.toString())}\n      </div>\n      <div className=\"cmp-photogrid__content\">\n        <div className=\"cmp-photogrid__filter\">\n          <div className=\"cmp-photogrid__filter-category-container\">\n            <select\n              className=\"cmp-photogrid__filter-category\"\n              onChange={updateCategory}\n              value={category === null ? 'none' : category}\n              aria-label={filterInternationalization.categoryLabel}\n            >\n              <option value=\"none\">\n                {filterInternationalization.categoryLabel}\n              </option>\n              <option value=\"corporate\">\n                {filterInternationalization.categoryCorporateLabel}\n              </option>\n              <option value=\"architectural-coatings\">\n                {filterInternationalization.categoryArchitecturalCoatingsLabel}\n              </option>\n              <option value=\"financial\">\n                {filterInternationalization.categoryFinancialLabel}\n              </option>\n              <option value=\"innovation\">\n                {filterInternationalization.categoryInnovationLabel}\n              </option>\n              <option value=\"industrial\">\n                {filterInternationalization.categoryIndustrialLabel}\n              </option>\n              <option value=\"sustainability\">\n                {filterInternationalization.categorySustainabilityLabel}\n              </option>\n              <option value=\"employee\">\n                {filterInternationalization.categoryEmployeeLabel}\n              </option>\n              <option value=\"culture\">\n                {filterInternationalization.categoryCultureLabel}\n              </option>\n              <option value=\"manufacturing-&-distribution\">\n                {\n                  filterInternationalization.categoryManufacturingAndDistributionLabel\n                }\n              </option>\n              <option value=\"industrial-coatings\">\n                {filterInternationalization.categoryIndustrialCoatingsLabel}\n              </option>\n              <option value=\"leadership\">\n                {filterInternationalization.categoryLeadershipLabel}\n              </option>\n              <option value=\"stores\">\n                {filterInternationalization.categoryStoresLabel}\n              </option>\n              <option value=\"inclusion,-diversity-&-equity\">\n                {\n                  filterInternationalization.categoryInclusionDiversityEquityLabel\n                }\n              </option>\n              <option value=\"community-engagement\">\n                {filterInternationalization.categoryCommunityEngagementLabel}\n              </option>\n              <option value=\"building-our-future\">\n                {filterInternationalization.categoryBuildingOurFutureLabel}\n              </option>\n            </select>\n            <Icon\n              spritePath={spritePath}\n              iconName={'filter-dropdown-arrow'}\n              iconClassName={'cmp-photogrid__filter-form-arrow'}\n            />\n          </div>\n          <button className=\"cmp-photogrid__filter-clear\" onClick={resetFilter}>\n            {filterInternationalization.clearLabel}\n          </button>\n        </div>\n        <div className=\"cmp-photogrid__photos\">{photoGridHtml}</div>\n      </div>\n      {isLightboxOpen && (\n        <Lightbox\n          mainSrc={filteredLightboxPhotos[mediaIndex]}\n          nextSrc={\n            filteredLightboxPhotos[\n              (mediaIndex + 1) % filteredLightboxPhotos.length\n            ]\n          }\n          prevSrc={\n            filteredLightboxPhotos[\n              (mediaIndex + filteredLightboxPhotos.length - 1) %\n                filteredLightboxPhotos.length\n            ]\n          }\n          onMovePrevRequest={() =>\n            setMediaIndex(\n              (mediaIndex + filteredLightboxPhotos.length - 1) %\n                filteredLightboxPhotos.length\n            )\n          }\n          onMoveNextRequest={() =>\n            setMediaIndex((mediaIndex + 1) % filteredLightboxPhotos.length)\n          }\n          onCloseRequest={() => setIsLightboxOpen(false)}\n          enableZoom={false}\n        />\n      )}\n    </div>\n  );\n}\n","import React from 'react';\n\ninterface IconProps {\n  spritePath: string;\n  iconName: string;\n  iconClassName?: string | null;\n}\n\nexport function Icon({spritePath, iconName, iconClassName = null}: IconProps) {\n  return (\n    <svg className={iconClassName}>\n      <use xlinkHref={`${spritePath}#${iconName}`} />\n    </svg>\n  );\n}\n","import {useState} from 'react';\n\nexport interface FilterStartingValues {\n  searchText?: string;\n  category?: string;\n  year?: number;\n}\n\nexport function useFilter(startingValues?: FilterStartingValues) {\n  const [searchText, setSearchText] = useState<string>(\n    startingValues?.searchText !== undefined ? startingValues.searchText : ''\n  );\n  const [category, setCategory] = useState<string | null>(\n    startingValues?.category !== undefined ? startingValues.category : null\n  );\n  const [year, setYear] = useState<number | null>(\n    startingValues?.year !== undefined ? startingValues.year : null\n  );\n\n  return [searchText, setSearchText, category, setCategory, year, setYear];\n}\n"],"names":["MediaElement","src","alt","className","index","onClick","test","isVideoSrc","videoType","endsWith","controls","type","displayCategoryString","category","Media","spritePath","onClickCallback","useCallback","Icon","I","iconName","iconClassName","href","download","photoGridJsonElem","document","getElementById","photoGridReactElem","Error","photoGridJson","JSON","parse","innerHTML","dataset","spriteSheetPath","photoGridPhotos","filterInternationalization","showingOfString","clearLabel","categoryLabel","categoryCorporateLabel","categoryArchitecturalCoatingsLabel","categoryFinancialLabel","categoryInnovationLabel","categoryIndustrialLabel","categorySustainabilityLabel","categoryEmployeeLabel","categoryCultureLabel","categoryManufacturingAndDistributionLabel","categoryIndustrialCoatingsLabel","categoryLeadershipLabel","categoryStoresLabel","categoryInclusionDiversityEquityLabel","categoryCommunityEngagementLabel","categoryBuildingOurFutureLabel","_searchText","_setSearchText","setCategory","_year","_setYear","useFilter","filteredPhotoGridPhotos","setFilteredPhotoGridPhotos","useState","mediaIndex","setMediaIndex","isLightboxOpen","setIsLightboxOpen","filteredLightboxPhotos","setFilteredLightboxPhotos","filterPhotoGrid","filter","photo","shouldShowPhoto","onMediaClick","useEffect","filteredMediaData","map","photoData","createLightboxContent","photoGridHtml","useMemo","i","key","replace","length","toString","onChange","event","eventValue","target","value","mainSrc","nextSrc","prevSrc","onMovePrevRequest","onMoveNextRequest","onCloseRequest","enableZoom","xlinkHref","startingValues","searchText","setSearchText","undefined","year","setYear"],"sourceRoot":""}