{"version":3,"file":"document-card-4bb1063b.js","sources":["../../../../src/scripts/react-components/document-listing/document-card.tsx"],"sourcesContent":["import React, { useId, useRef, useEffect, useState, useMemo } from 'react';\nimport { debounce } from '../../helpers/debounce';\nimport {\n  DOCUMENT_LISTING_EVENTS,\n  DOCUMENT_LINKS_STORAGE_KEY\n} from './constants';\nimport {\n  createDataLayerString,\n  getDocumentPriority,\n  getExtensionPriority\n} from '../../helpers/helpers';\nimport { secureStorage } from '../../helpers/global-storage';\nimport { imagesPlaceholdersObj } from '../../coveo/controllers/controller';\nimport { Result } from '@coveo/headless';\nimport { ResultLink } from '../../coveo/components/interactive-result';\n\ntype DocumentCardProps = {\n  uniqueId?: string;\n  resultType?: string;\n  title: string;\n  type: string;\n  image: string;\n  imageAlt: string;\n  copyText: string;\n  copiedText: string;\n  shareText: string;\n  downloadText: string;\n  addToCartText: string;\n  documents: {\n    extension: string;\n    url: string;\n  }[];\n  hideZoomIcon?: boolean;\n  result?: Result;\n};\n\nfunction DocumentCard({\n  uniqueId,\n  resultType,\n  title,\n  type,\n  image,\n  imageAlt,\n  documents,\n  copyText,\n  copiedText,\n  shareText,\n  downloadText,\n  addToCartText,\n  hideZoomIcon,\n  result\n}: DocumentCardProps) {\n  const id = uniqueId ? uniqueId : useId();\n  const cardRef = useRef<HTMLDivElement>(null);\n  const dialogRef = useRef<HTMLDialogElement>(null);\n  const links = secureStorage.get(DOCUMENT_LINKS_STORAGE_KEY);\n  const linksArray = links ? JSON.parse(links) : [];\n  const [render, setRender] = useState(true);\n\n  const titleUrl = useMemo(() => {\n    return getDocumentPriority(documents);\n  }, []);\n\n  const imageDisplay = useMemo(() => {\n    if (image) {\n      return image;\n    }\n    if (imagesPlaceholdersObj) {\n      const extension = getExtensionPriority(documents);\n      if (extension) {\n        return imagesPlaceholdersObj[(extension as string).toLowerCase()];\n      }\n      return imagesPlaceholdersObj.default;\n    }\n    return '';\n  }, []);\n\n  const activatePopup = (popup: HTMLDivElement) => {\n    popup.classList.add('active');\n  };\n\n  const removePopup = (popup: HTMLDivElement) => {\n    setTimeout(() => popup.classList.remove('active'), 2000);\n  };\n\n  const handleCopy = (event: React.MouseEvent<HTMLButtonElement>) => {\n    event.preventDefault();\n\n    const button = event.currentTarget as HTMLButtonElement;\n    const input = button.parentElement?.querySelector(\n      '.document-card__copy-input'\n    ) as HTMLInputElement;\n    const copyMessage = button.parentElement?.querySelector(\n      '.document-card__copy-message'\n    ) as HTMLDivElement;\n\n    navigator.clipboard.writeText(input.value).then(() => {\n      button.blur();\n      activatePopup(copyMessage);\n      debounce(removePopup(copyMessage), 200);\n    });\n  };\n\n  const handleShare = (event: React.MouseEvent<HTMLButtonElement>) => {\n    event.preventDefault();\n\n    const button = event.currentTarget as HTMLButtonElement;\n    const input = button.parentElement?.querySelector(\n      '.document-card__copy-input'\n    ) as HTMLInputElement;\n\n    const shareData = {\n      url: input.value\n    };\n\n    if (navigator.share && navigator.canShare(shareData)) {\n      navigator.share(shareData);\n    }\n  };\n\n  const handleCheckbox = (event: React.ChangeEvent<HTMLInputElement>) => {\n    const checkbox = event.currentTarget;\n\n    const links = secureStorage.get(DOCUMENT_LINKS_STORAGE_KEY);\n    const linksArray = links ? JSON.parse(links) : [];\n\n    if (checkbox.checked) {\n      const link = {\n        url: checkbox.value,\n        extension: checkbox.dataset.extension,\n        title,\n        type\n      };\n\n      linksArray.push(link);\n    } else {\n      const index = linksArray.findIndex(\n        (item: { url: string }) => item.url === checkbox.value\n      );\n      linksArray.splice(index, 1);\n    }\n\n    secureStorage.set(DOCUMENT_LINKS_STORAGE_KEY, JSON.stringify(linksArray));\n\n    window.dispatchEvent(new Event(DOCUMENT_LISTING_EVENTS.checkSelected));\n    window.dispatchEvent(new Event(DOCUMENT_LISTING_EVENTS.updateCart));\n    handleUpdateItem();\n  };\n\n  const handleAddAllToCart = () => {\n    if (cardRef.current) {\n      const checkboxes = cardRef.current.querySelectorAll<HTMLInputElement>(\n        '.document-card__checkbox'\n      );\n\n      const links = secureStorage.get(DOCUMENT_LINKS_STORAGE_KEY);\n      const linksArray = links ? JSON.parse(links) : [];\n\n      checkboxes.forEach(checkbox => {\n        checkbox.checked = true;\n\n        const index = linksArray.findIndex(\n          (item: { url: string }) => item.url === checkbox.value\n        );\n\n        if (index === -1) {\n          const link = {\n            url: checkbox.value,\n            extension: checkbox.dataset.extension,\n            title,\n            type\n          };\n\n          linksArray.push(link);\n        }\n      });\n\n      secureStorage.set(DOCUMENT_LINKS_STORAGE_KEY, JSON.stringify(linksArray));\n      window.dispatchEvent(new Event(DOCUMENT_LISTING_EVENTS.checkSelected));\n      window.dispatchEvent(new Event(DOCUMENT_LISTING_EVENTS.updateCart));\n    }\n  };\n\n  const handleRemoveSelected = () => {\n    if (cardRef.current) {\n      const checkboxes = cardRef.current.querySelectorAll<HTMLInputElement>(\n        '.document-card__checkbox'\n      );\n\n      const links = secureStorage.get(DOCUMENT_LINKS_STORAGE_KEY);\n      const linksArray = links ? JSON.parse(links) : [];\n\n      checkboxes.forEach(checkbox => {\n        if (checkbox.checked) {\n          checkbox.checked = false;\n\n          const index = linksArray.findIndex(\n            (item: { url: string }) => item.url === checkbox.value\n          );\n          linksArray.splice(index, 1);\n        }\n      });\n\n      secureStorage.set(DOCUMENT_LINKS_STORAGE_KEY, JSON.stringify(linksArray));\n      window.dispatchEvent(new Event(DOCUMENT_LISTING_EVENTS.checkSelected));\n      window.dispatchEvent(new Event(DOCUMENT_LISTING_EVENTS.updateCart));\n    }\n  };\n\n  const handleUpdateItem = () => {\n    setRender(false);\n    setTimeout(() => {\n      setRender(true);\n    });\n\n    setTimeout(() => {\n      window.dispatchEvent(new Event(DOCUMENT_LISTING_EVENTS.checkSelected));\n    }, 10);\n  };\n\n  const handleLayerValue = (\n    document: { extension: string; url: string },\n    title: string,\n    type: string\n  ) => {\n    if (!verifyChecked(document.url, document.extension)) {\n      return createDataLayerString([\n        {\n          event: 'bulk downloads',\n          event_category: 'bulk downloads',\n          event_action: 'add to document cart',\n          event_attributes: {\n            custom_file_name: title,\n            custom_file_extension: document.extension,\n            document_package_name: window.document.querySelector(\n              '[data-package-id]'\n            )\n              ? (\n                  window.document.querySelector(\n                    '[data-package-id]'\n                  ) as HTMLElement\n                )?.dataset?.packageId\n              : null,\n            document_type: type ? type : null\n          }\n        }\n      ]);\n    } else {\n      return createDataLayerString([\n        {\n          event: 'remove_document',\n          event_category: 'bulk downloads',\n          event_action: 'remove document',\n          event_attributes: {\n            custom_file_name: title,\n            custom_file_extension: document.extension,\n            document_package_name: window.document.querySelector(\n              '[data-package-id]'\n            )\n              ? (\n                  window.document.querySelector(\n                    '[data-package-id]'\n                  ) as HTMLElement\n                )?.dataset?.packageId\n              : null,\n            document_type: type ? type : null\n          }\n        }\n      ]);\n    }\n  };\n\n  useEffect(() => {\n    window.addEventListener(\n      DOCUMENT_LISTING_EVENTS.selectAll,\n      handleAddAllToCart\n    );\n    window.addEventListener(\n      DOCUMENT_LISTING_EVENTS.removeSelected,\n      handleRemoveSelected\n    );\n    window.addEventListener(\n      DOCUMENT_LISTING_EVENTS.updateItem,\n      handleUpdateItem\n    );\n\n    window.dispatchEvent(new Event(DOCUMENT_LISTING_EVENTS.checkSelected));\n\n    return () => {\n      window.removeEventListener(\n        DOCUMENT_LISTING_EVENTS.selectAll,\n        handleAddAllToCart\n      );\n      window.removeEventListener(\n        DOCUMENT_LISTING_EVENTS.removeSelected,\n        handleRemoveSelected\n      );\n      window.removeEventListener(\n        DOCUMENT_LISTING_EVENTS.updateItem,\n        handleUpdateItem\n      );\n    };\n  }, []);\n\n  const verifyChecked = (url: string, extension: string) => {\n    return (\n      linksArray.findIndex(\n        (item: { url: string; extension: string }) =>\n          item.url === url && item.extension === extension\n      ) > -1\n    );\n  };\n\n  const handleZoomIn = (event: React.MouseEvent<HTMLButtonElement>) => {\n    event.preventDefault();\n\n    if (dialogRef.current) {\n      dialogRef.current.classList.add('active');\n      dialogRef.current.showModal();\n    }\n  };\n\n  const handleClose = (event: React.MouseEvent<HTMLButtonElement>) => {\n    event.preventDefault();\n\n    if (dialogRef.current) {\n      dialogRef.current.classList.remove('active');\n      dialogRef.current.close();\n    }\n  };\n\n  return (\n    <>\n      {render && (\n        <article\n          ref={cardRef}\n          className={`document-card ${\n            resultType ? 'document-card--result-type' : ''\n          }`}\n        >\n          <dialog className=\"document-card__popup\" ref={dialogRef}>\n            <button\n              className=\"document-card__popup-close\"\n              title=\"Close\"\n              aria-label=\"Close\"\n              onClick={handleClose}\n            >\n              ×\n            </button>\n            <img src={imageDisplay} alt={imageAlt} />\n          </dialog>\n          <div className=\"document-card__wrapper\">\n            {!resultType && (\n              <picture\n                className={`document-card__image document-card__image--desktop ${\n                  hideZoomIcon || !image ? 'document-card__image--no-hover' : ''\n                }`}\n              >\n                <img\n                  src={imageDisplay}\n                  alt={imageAlt}\n                  width={120}\n                  height={155}\n                />\n                {image && !hideZoomIcon ? (\n                  <button\n                    data-layer={createDataLayerString([\n                      {\n                        event_category: 'document interactions',\n                        event_attributes: {\n                          custom_file_name: title,\n                          document_type: type ? type : null,\n                          custom_file_extension: getExtensionPriority(documents)\n                        },\n                        event: 'documents',\n                        event_action: 'preview'\n                      }\n                    ])}\n                    className=\"document-card__zoom-in\"\n                    onClick={handleZoomIn}\n                  >\n                    <span className=\"sr-only\">Zoom In</span>\n                  </button>\n                ) : null}\n              </picture>\n            )}\n            <div className=\"document-card__inner\">\n              <div className=\"document-card__header\">\n                <div className=\"document-card__content\">\n                  {resultType && (\n                    <p className=\"document-card__result-type\">{resultType}</p>\n                  )}\n                  <h2 className=\"document-card__heading\">\n                    {result ? (\n                      <ResultLink\n                        className=\"link--inline\"\n                        link={titleUrl}\n                        target=\"_blank\"\n                        result={result}\n                        dataLayer={createDataLayerString([\n                          {\n                            event_category: 'document interactions',\n                            event_attributes: {\n                              custom_file_name: title\n                            },\n                            event: 'file_download_click',\n                            event_action: 'file download click'\n                          }\n                        ])}\n                        download={true}\n                      >\n                        <span>{title}</span>\n                      </ResultLink>\n                    ) : (\n                      <a\n                        className=\"link--inline\"\n                        href={titleUrl}\n                        target=\"_blank\"\n                        data-layer={createDataLayerString([\n                          {\n                            event_category: 'document interactions',\n                            event_attributes: {\n                              custom_file_name: title\n                            },\n                            event: 'file_download_click',\n                            event_action: 'file download click'\n                          }\n                        ])}\n                        download\n                      >\n                        <span>{title}</span>\n                      </a>\n                    )}\n                  </h2>\n                  <p className=\"document-card__type\">{type}</p>\n                </div>\n                <picture\n                  className={`document-card__image document-card__image--mobile ${\n                    hideZoomIcon || !image\n                      ? 'document-card__image--no-hover'\n                      : ''\n                  }`}\n                >\n                  <img\n                    src={imageDisplay}\n                    alt={imageAlt}\n                    width={80}\n                    height={104}\n                  />\n                  {image && !hideZoomIcon ? (\n                    <button\n                      data-layer={createDataLayerString([\n                        {\n                          event_category: 'document interactions',\n                          event_attributes: {\n                            custom_file_name: title,\n                            document_type: type ? type : null,\n                            custom_file_extension:\n                              getExtensionPriority(documents)\n                          },\n                          event: 'documents',\n                          event_action: 'preview'\n                        }\n                      ])}\n                      className=\"document-card__zoom-in\"\n                      onClick={handleZoomIn}\n                    >\n                      <span className=\"sr-only\">Zoom In</span>\n                    </button>\n                  ) : null}\n                </picture>\n              </div>\n              {documents.length > 0 && (\n                <ul className=\"document-card__extensions\">\n                  {documents.map((document, index) => (\n                    <li key={index} className=\"document-card__option\">\n                      <p className=\"document-card__extension\">\n                        {document.extension}\n                      </p>\n                      <div className=\"document-card__options\">\n                        <input\n                          type=\"hidden\"\n                          value={document.url}\n                          className=\"document-card__copy-input\"\n                        />\n                        {document.extension === 'PDF' && (\n                          <>\n                            <button\n                              type=\"button\"\n                              className=\"document-card__copy link\"\n                              onClick={handleCopy}\n                              data-layer={createDataLayerString([\n                                {\n                                  event_category: 'document interactions',\n                                  event_attributes: {\n                                    custom_file_name: title,\n                                    custom_file_extension: document.extension,\n                                    document_type: type ? type : null\n                                  },\n                                  event: 'documents',\n                                  event_action: 'copy document link click'\n                                }\n                              ])}\n                            >\n                              <span>{copyText}</span>\n                              <div className=\"document-card__icon\">\n                                <svg role=\"presentation\">\n                                  <use xlinkHref=\"#icon-copy\" />\n                                </svg>\n                                <div className=\"document-card__copy-message\">\n                                  <p className=\"document-card__popup-text\">\n                                    {copiedText}\n                                  </p>\n                                </div>\n                              </div>\n                            </button>\n                            <button\n                              type=\"button\"\n                              className=\"document-card__share link\"\n                              onClick={handleShare}\n                              data-layer={createDataLayerString([\n                                {\n                                  event_category: 'document interactions',\n                                  event_attributes: {\n                                    custom_file_name: title,\n                                    document_type: type ? type : null,\n                                    custom_file_extension: document?.extension\n                                      ? document.extension\n                                      : ''\n                                  },\n                                  event: 'documents',\n                                  event_action: 'share document link click'\n                                }\n                              ])}\n                            >\n                              <span>{shareText}</span>\n                              <svg role=\"presentation\">\n                                <use xlinkHref=\"#icon-share\" />\n                              </svg>\n                            </button>\n                          </>\n                        )}\n                        <a\n                          data-layer={createDataLayerString([\n                            {\n                              event_category: 'document interactions',\n                              event_attributes: {\n                                custom_file_name: title\n                              },\n                              event: 'file_download_click',\n                              event_action: 'file download click'\n                            }\n                          ])}\n                          href={document.url}\n                          target=\"_blank\"\n                          className=\"link document-card__download\"\n                          download\n                        >\n                          <span>{downloadText}</span>\n                          <svg role=\"presentation\">\n                            <use xlinkHref=\"#icon-download\" />\n                          </svg>\n                        </a>\n                        <div className=\"field field--checkbox \">\n                          <input\n                            data-layer={handleLayerValue(document, title, type)}\n                            data-extension={document.extension}\n                            value={document.url}\n                            className=\"field__checkbox-input document-card__checkbox\"\n                            type=\"checkbox\"\n                            name={`checkbox-${id}-${index}`}\n                            id={`checkbox-${id}-${index}`}\n                            onChange={handleCheckbox}\n                            defaultChecked={verifyChecked(\n                              document.url,\n                              document.extension\n                            )}\n                          />\n                          <div className=\"field__checkbox-label-wrapper\">\n                            <label\n                              className=\"field__checkbox-label sr-only\"\n                              htmlFor={`checkbox-${id}-${index}`}\n                            >\n                              {addToCartText}\n                            </label>\n                          </div>\n                        </div>\n                      </div>\n                    </li>\n                  ))}\n                </ul>\n              )}\n            </div>\n            {resultType && (\n              <picture className=\"document-card__image document-card__image--desktop\">\n                <img\n                  src={imageDisplay}\n                  alt={imageAlt}\n                  width={120}\n                  height={155}\n                />\n\n                {image && (\n                  <button\n                    data-layer={createDataLayerString([\n                      {\n                        event_category: 'document interactions',\n                        event_attributes: {\n                          custom_file_name: title\n                        },\n                        event: 'file_preview_click',\n                        event_action: 'file preview click'\n                      }\n                    ])}\n                    className=\"document-card__zoom-in\"\n                    onClick={handleZoomIn}\n                  >\n                    <span className=\"sr-only\">Zoom In</span>\n                  </button>\n                )}\n              </picture>\n            )}\n          </div>\n        </article>\n      )}\n    </>\n  );\n}\n\nexport default DocumentCard;\n"],"names":["DocumentCard","uniqueId","resultType","title","type","image","imageAlt","documents","copyText","copiedText","shareText","downloadText","addToCartText","hideZoomIcon","result","id","useId","cardRef","useRef","dialogRef","links","secureStorage","DOCUMENT_LINKS_STORAGE_KEY","linksArray","render","setRender","useState","titleUrl","useMemo","getDocumentPriority","imageDisplay","imagesPlaceholdersObj","extension","getExtensionPriority","activatePopup","popup","removePopup","handleCopy","event","button","input","_a","copyMessage","_b","debounce","handleShare","shareData","handleCheckbox","checkbox","link","index","item","DOCUMENT_LISTING_EVENTS","handleUpdateItem","handleAddAllToCart","checkboxes","handleRemoveSelected","handleLayerValue","document","verifyChecked","createDataLayerString","_d","_c","useEffect","url","handleZoomIn","handleClose","React","ResultLink"],"mappings":"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"}