{"version":3,"file":"pagination-62383628.js","sources":["../../../../node_modules/prop-types/lib/ReactPropTypesSecret.js","../../../../node_modules/prop-types/factoryWithThrowingShims.js","../../../../node_modules/prop-types/index.js","../../../../src/scripts/react-components/pagination.tsx"],"sourcesContent":["/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    var err = new Error(\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n    err.name = 'Invariant Violation';\n    throw err;\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bigint: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is');\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n","import React, { useEffect, useRef, useState } from 'react';\nimport PropTypes, { InferProps } from 'prop-types';\nimport { ExtendedWindowType } from '../coveo/engine';\nfunction Pagination({\n  totalPages,\n  pagesToShow,\n  currentPage,\n  onPageChange,\n  nextPageLabel,\n  previousPageLabel,\n  pageLabel\n}: InferProps<typeof Pagination.propTypes>) {\n  const pages =\n    pagesToShow || Object.keys([...Array(totalPages)]).map(i => Number(i) + 1);\n  const paginationRef = useRef<HTMLUListElement>(null);\n  const [parentSection, setParentSection] = useState<HTMLElement | null>();\n\n  const scrollToTop = () => {\n    if (parentSection) {\n      setTimeout(() => {\n        parentSection.scrollIntoView({ behavior: 'smooth' });\n      }, 250);\n    }\n  };\n\n  const handlePageChange = (event: React.MouseEvent<HTMLButtonElement>) => {\n    const page = Number(event.currentTarget.value);\n    event.currentTarget.blur();\n    onPageChange(page);\n    scrollToTop();\n\n    const global = window as ExtendedWindowType;\n\n    global.dataLayer?.push({\n      event: 'pagination_click',\n      event_category: 'pagination',\n      event_action: 'click',\n      event_label: page\n    });\n  };\n\n  const handlePrevPage = () => {\n    if (currentPage > 1) {\n      onPageChange(currentPage - 1);\n      scrollToTop();\n\n      const global = window as ExtendedWindowType;\n\n      global.dataLayer?.push({\n        event: 'pagination_click',\n        event_category: 'pagination',\n        event_action: 'click',\n        event_label: 'previous'\n      });\n    }\n  };\n\n  const handleNextPage = () => {\n    if (currentPage < totalPages) {\n      onPageChange(currentPage + 1);\n      scrollToTop();\n\n      const global = window as ExtendedWindowType;\n\n      global.dataLayer?.push({\n        event: 'pagination_click',\n        event_category: 'pagination',\n        event_action: 'click',\n        event_label: 'next'\n      });\n    }\n  };\n\n  const renderPage = (pageNumber: number, active: boolean) => {\n    return (\n      <li>\n        <button\n          className={`pagination__page ${active ? 'active' : ''}`}\n          value={pageNumber}\n          onClick={handlePageChange}\n          aria-label={pageNumber.toString()}\n        >\n          <span className=\"sr-only\">{pageLabel} </span>\n          {pageNumber}\n        </button>\n      </li>\n    );\n  };\n\n  const renderEllipsis = () => (\n    <li>\n      <span role=\"presentation\" className=\"pagination__ellipsis\">\n        {'...'}\n      </span>\n    </li>\n  );\n\n  useEffect(() => {\n    if (paginationRef.current) {\n      const parentSection = paginationRef.current.closest('section');\n      parentSection?.style.setProperty(\n        'scroll-margin-block-start',\n        'calc(var(--header-block-size) + 100px)'\n      );\n      setParentSection(parentSection);\n    }\n  }, [paginationRef.current]);\n\n  if (totalPages > 1) {\n    return (\n      <ul className=\"pagination\" ref={paginationRef}>\n        <li>\n          <button\n            className=\"pagination__prev\"\n            onClick={handlePrevPage}\n            disabled={currentPage === 1}\n            title={previousPageLabel}\n            aria-label={previousPageLabel}\n          >\n            <svg>\n              <use xlinkHref=\"#chevron-left\" />\n            </svg>\n          </button>\n        </li>\n\n        {renderPage(1, currentPage === 1)}\n\n        {currentPage > 4 && totalPages > 5 && <>{renderEllipsis()}</>}\n\n        {totalPages <= 5 &&\n          pages.map((page, index) => (\n            <React.Fragment key={index}>\n              {page > 1 && page < totalPages && (\n                <>{renderPage(page, currentPage === page)}</>\n              )}\n            </React.Fragment>\n          ))}\n\n        {totalPages > 5 &&\n          pages.map((page, index) => {\n            if (currentPage <= 4 && page <= 4 && page > 1) {\n              return (\n                <React.Fragment key={index}>\n                  {renderPage(page, currentPage === page)}\n                </React.Fragment>\n              );\n            }\n\n            if (\n              currentPage > 4 &&\n              page >= currentPage - 1 &&\n              page <= currentPage + 1 &&\n              page < totalPages\n            ) {\n              return (\n                <React.Fragment key={index}>\n                  {renderPage(page, currentPage === page)}\n                </React.Fragment>\n              );\n            }\n\n            if (\n              currentPage >= totalPages - 1 &&\n              page >= totalPages - 3 &&\n              page < totalPages\n            ) {\n              return (\n                <React.Fragment key={index}>\n                  {renderPage(page, currentPage === page)}\n                </React.Fragment>\n              );\n            }\n            return null;\n          })}\n\n        {totalPages === 6 && currentPage + 2 <= totalPages && (\n          <>{renderEllipsis()}</>\n        )}\n\n        {totalPages > 6 && currentPage + 3 <= totalPages && (\n          <>{renderEllipsis()}</>\n        )}\n\n        {renderPage(totalPages, currentPage === totalPages)}\n        <li>\n          <button\n            onClick={handleNextPage}\n            className=\"pagination__next\"\n            disabled={currentPage === totalPages}\n            title={nextPageLabel}\n            aria-label={nextPageLabel}\n          >\n            <svg>\n              <use xlinkHref=\"#chevron-right\" />\n            </svg>\n          </button>\n        </li>\n      </ul>\n    );\n  } else {\n    return null;\n  }\n}\n\nPagination.propTypes = {\n  totalPages: PropTypes.number.isRequired,\n  pagesToShow: PropTypes.array,\n  currentPage: PropTypes.number.isRequired,\n  onPageChange: PropTypes.func.isRequired,\n  nextPageLabel: PropTypes.string.isRequired,\n  previousPageLabel: PropTypes.string.isRequired,\n  pageLabel: PropTypes.string.isRequired\n};\n\nexport default Pagination;\n"],"names":["ReactPropTypesSecret","ReactPropTypesSecret_1","require$$0","emptyFunction","emptyFunctionWithReset","factoryWithThrowingShims","shim","props","propName","componentName","location","propFullName","secret","err","getShim","ReactPropTypes","propTypesModule","Pagination","totalPages","pagesToShow","currentPage","onPageChange","nextPageLabel","previousPageLabel","pageLabel","pages","i","paginationRef","useRef","parentSection","setParentSection","useState","scrollToTop","handlePageChange","event","page","_a","handlePrevPage","handleNextPage","renderPage","pageNumber","active","React","renderEllipsis","useEffect","index","PropTypes"],"mappings":"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","x_google_ignoreList":[0,1,2]}