{"version":3,"file":"static/js/193.428b7652.chunk.js","mappings":"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","sources":["assets/fontawesome/solid/plus.svg","assets/plus.svg","assets/minus.svg","components/common/FaqsList/FaqsList.js","components/common/InputPagination/InputPagination.js","components/common/Resource/ResourceJumbo.js","components/common/Resource/ResourceSmall.js","components/icons/DataTableSortIcon.js","utilities/dataTableUtilities.js","hooks/useContentOverflowDetection.js","components/dataset/DataTable/DataTableCellContent.js","components/dataset/DataTable/DataTable.js","components/dataset/DataTable/DataTableDropdownMenu.js","components/dataset/DataTable/DataTableStatusBar.js","components/dataset/DatasetResources/DatasetResources.js"],"sourcesContent":["var _path;\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgPlus(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    viewBox: \"0 0 448 512\",\n    fill: \"currentColor\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M240 80c0-17.7-14.3-32-32-32s-32 14.3-32 32V224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H176V432c0 17.7 14.3 32 32 32s32-14.3 32-32V288H384c17.7 0 32-14.3 32-32s-14.3-32-32-32H240V80z\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgPlus);\nexport default __webpack_public_path__ + \"static/media/plus.b83d134ba483bc667459224f4e44117c.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgPlus(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    width: \"20px\",\n    height: \"21px\",\n    viewBox: \"0 0 20 21\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, \"2. Atom/Icon/Plus\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n    id: \"Symbols\",\n    stroke: \"none\",\n    strokeWidth: 1,\n    fill: \"none\",\n    fillRule: \"evenodd\"\n  }, /*#__PURE__*/React.createElement(\"g\", {\n    id: \"3.-Molecule/FAQ/Accordion_Closed\",\n    transform: \"translate(-691.000000, -7.000000)\",\n    fill: \"#0071BC\"\n  }, /*#__PURE__*/React.createElement(\"g\", {\n    id: \"FAQ/Accordion_Closed\"\n  }, /*#__PURE__*/React.createElement(\"g\", {\n    id: \"2.-Atom/Icon/Plus\",\n    transform: \"translate(691.000000, 7.500000)\"\n  }, /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M11.4285714,0 L11.428,8.571 L20,8.57142857 L20,11.4285714 L11.428,11.428 L11.4285714,20 L8.57142857,20 L8.571,11.428 L0,11.4285714 L0,8.57142857 L8.571,8.571 L8.57142857,0 L11.4285714,0 Z\"\n  })))))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgPlus);\nexport default __webpack_public_path__ + \"static/media/plus.bae004e4429382141801d443f21b34b8.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgMinus(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    width: \"20px\",\n    height: \"3px\",\n    viewBox: \"0 0 20 3\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, \"minus icon\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n    id: \"Active\",\n    stroke: \"none\",\n    strokeWidth: 1,\n    fill: \"none\",\n    fillRule: \"evenodd\"\n  }, /*#__PURE__*/React.createElement(\"g\", {\n    id: \"XL-Tool_Landing_InHospital-Results_Hover\",\n    transform: \"translate(-1067.000000, -4687.000000)\",\n    fill: \"#0071BC\"\n  }, /*#__PURE__*/React.createElement(\"g\", {\n    id: \"FAQs\",\n    transform: \"translate(102.000000, 4585.000000)\"\n  }, /*#__PURE__*/React.createElement(\"g\", {\n    id: \"Expanded-FAQ\",\n    transform: \"translate(273.000000, 86.000000)\"\n  }, /*#__PURE__*/React.createElement(\"g\", {\n    id: \"2.-Atom/Icon/Minus\",\n    transform: \"translate(692.000000, 7.500000)\"\n  }, /*#__PURE__*/React.createElement(\"rect\", {\n    id: \"2.-Atom/Icon/Plus\",\n    x: 0,\n    y: 8.57142857,\n    width: 20,\n    height: 2.85714286\n  }))))))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgMinus);\nexport default __webpack_public_path__ + \"static/media/minus.1b78eaf6e8614a8257a72a8cfdd32bd8.svg\";\nexport { ForwardRef as ReactComponent };","import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport cx from 'classnames'\nimport Container from 'react-bootstrap/Container'\nimport Row from 'react-bootstrap/Row'\nimport Col from 'react-bootstrap/Col'\nimport Button from 'react-bootstrap/Button'\nimport Accordion from 'react-bootstrap/Accordion'\nimport Card from 'react-bootstrap/Card'\nimport take from 'lodash/take'\nimport configData from '../../../config'\nimport RichTextField from '../../common/RichTextField/RichTextField'\nimport { Helmet, HelmetProvider } from 'react-helmet-async'\nimport { stripHTML } from '../../../services/formatters/global'\n\nimport plusIcon from '../../../assets/plus.svg'\nimport minusIcon from '../../../assets/minus.svg'\n\nimport './FaqsList.scss'\n\n// pull max FAQs to display on screen from config\nconst { faqDisplayLimit } = configData\n\nclass FaqsList extends Component {\n  constructor (props) {\n    super(props)\n\n    const { faqs } = props\n\n    this.state = {\n      faqs: faqs.map(({\n        fieldFaqQuestion: question,\n        fieldFaqAnswer: { value: answer }\n      }) => {\n        return {\n          question,\n          answer,\n          collapsed: true\n        }\n      }),\n      allFaqsShown: faqs.length <= faqDisplayLimit\n    }\n  }\n\n  handleDisplayAllFaqs = () => {\n    this.setState({\n      allFaqsShown: true\n    })\n  }\n\n  toggleFaq (i) {\n    const { faqs } = this.state\n    faqs[i].collapsed = !faqs[i].collapsed\n    this.setState({ faqs })\n  }\n\n  render () {\n    const {\n      faqs,\n      allFaqsShown\n    } = this.state\n\n    const {\n      className,\n      header,\n      leftColOffset\n    } = this.props\n\n    const faqsToDisplay = allFaqsShown ? faqs : take(faqs, faqDisplayLimit)\n\n    const faqSchema = {\n      '@context': 'https://schema.org',\n      '@type': 'FAQPage',\n      mainEntity: faqsToDisplay.map(faq => ({\n        '@type': 'Question',\n        name: stripHTML(faq?.question),\n        acceptedAnswer: {\n          '@type': 'Answer',\n          text: stripHTML(faq?.answer)\n        }\n      }))\n    }\n\n    return (\n      <div className={cx('FaqsList', className)}>\n        <HelmetProvider>\n          <Helmet>\n            <script type='application/ld+json'>\n              {JSON.stringify(faqSchema)}\n            </script>\n          </Helmet>\n        </HelmetProvider>\n\n        <Container>\n          <Row>\n            <Col lg={{ offset: leftColOffset }}>\n              <div className='FaqsList__inner'>\n                <h2>{header}</h2>\n                <Accordion>\n                  {faqsToDisplay.map(({\n                    question,\n                    collapsed,\n                    answer\n                  }, index) => (\n                    <Card key={index}>\n                      <div\n                        role='button'\n                        eventkey={index}\n                        // aria-expanded={!collapsed}\n                        aria-controls={`QuestionAccordionElement__${index}`}\n                        className='QuestionWrapper accordion-button collapsed card-header'\n                        onClick={() => this.toggleFaq(index)}\n                      >\n                        <div className='Question'>\n                          <div className='Question__prefix'>\n                            Q:\n                          </div>\n                          <div className='Question__content'>\n                            <h3>{question}</h3>\n                          </div>\n                          <div className='Question__suffix'>\n                            <img alt='' src={collapsed ? plusIcon : minusIcon} />\n                          </div>\n                        </div>\n                      </div>\n                      {/* <Accordion.Button\n                        as={Card.Header}\n                        className='QuestionWrapper'\n                        eventkey={index}\n                        onClick={() => this.toggleFaq(index)}\n                      >\n                        <div className='Question'>\n                          <div className='Question__prefix'>\n                            Q:\n                          </div>\n                          <div className='Question__content'>\n                            <h4>{question}</h4>\n                          </div>\n                          <div aria-expanded={collapsed ? 'false' : 'true'} className='Question__suffix'>\n                            <img alt='' src={collapsed ? plusIcon : minusIcon} />\n                          </div>\n                        </div>\n                      </Accordion.Button> */}\n                      <Accordion.Collapse eventKey={index} in={!collapsed} id={`QuestionAccordionElement__${index}`}>\n                        <Card.Body>\n                          <RichTextField\n                            className='Answer'\n                            content={answer}\n                          />\n                        </Card.Body>\n                      </Accordion.Collapse>\n                    </Card>\n                  ))}\n                </Accordion>\n                {\n                  !allFaqsShown &&\n                    <div className='ShowMoreContainer'>\n                      <Button onClick={this.handleDisplayAllFaqs}>\n                        {`Show more (${faqs.length - faqDisplayLimit})`}\n                      </Button>\n                    </div>\n                }\n              </div>\n            </Col>\n          </Row>\n        </Container>\n\n      </div>\n    )\n  }\n}\n\nFaqsList.propTypes = {\n  className: PropTypes.string,\n  header: PropTypes.string,\n  faqs: PropTypes.arrayOf(PropTypes.shape({\n    fieldFaqAnswer: PropTypes.shape({\n      value: PropTypes.string.isRequired\n    }),\n    fieldFaqQuestion: PropTypes.string.isRequired\n  })),\n  leftColOffset: PropTypes.number\n}\n\nFaqsList.defaultProps = {\n  header: 'Frequently Asked Questions',\n  leftColOffset: 0\n}\n\nexport default FaqsList\n","import React, { useEffect, useMemo, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport cx from 'classnames'\nimport CaretLeftRightIcon from '../../icons/CaretLeftRightIcon'\nimport Button from 'react-bootstrap/Button'\nimport Text from '../../common/Text/Text'\nimport { numberWithCommas } from '../../../utilities/searchPageHelpers'\nimport {\n  getCurrentPage,\n  getMaxPageNumber,\n  getNewOffset\n} from '../../../utilities/paginationHelpers'\nimport useDisplayContext from '../../../hooks/useDisplayContext'\n\nimport './InputPagination.scss'\n\n// the window width below which to compare total param's length for style changes\nconst CONTENT_WIDTH_THRESHOLD = 400\n\nconst InputPagination = (props) => {\n  const {\n    isLoading,\n    limit,\n    onUpdateOffset,\n    offset,\n    total\n  } = props\n  const { isMobile, windowWidth } = useDisplayContext()\n  const [pageNumberInput, setPageNumberInput] = useState(1)\n\n  // dynamically resize input based on total length\n  const inputWidth = useMemo(() => {\n    const widthBasis = isMobile ? 15 : 16\n    const minWidth = 76\n    const dynamicWidth = total.toString().length * widthBasis\n\n    return Math.max(minWidth, dynamicWidth)\n  }, [total, isMobile])\n\n  // generate page number based on prop changes\n  useEffect(() => {\n    setPageNumberInput(getCurrentPage(offset, limit))\n  }, [offset, limit])\n\n  // helpers\n  const maxPage = getMaxPageNumber(total, limit)\n  // flags to disable buttons based on current page\n  const isNoPreviousPage = offset === 0\n  const isNoNextPage = pageNumberInput === maxPage\n  // when the total is huge, remove padding from buttons so content stays inline\n  const totalExceedsThreshold = isMobile && windowWidth <= CONTENT_WIDTH_THRESHOLD && total.toString().length > 8\n\n  // encapsulates the offset calculation for easier execution\n  const handleGoToPage = (pageNumber) => {\n    onUpdateOffset(getNewOffset(pageNumber, limit))\n  }\n\n  const handleInputChange = ({ target }) => {\n    setPageNumberInput(target.value)\n  }\n\n  // go to first page\n  const handleFirstClick = () => {\n    handleGoToPage(1)\n  }\n\n  // go to last page\n  const handleLastClick = () => {\n    handleGoToPage(maxPage)\n  }\n\n  const handlePrevOnClick = () => {\n    handleGoToPage(pageNumberInput - 1)\n  }\n\n  const handleNextOnClick = () => {\n    handleGoToPage(pageNumberInput + 1)\n  }\n\n  /*\n    when user presses enter\n    sanitize user input then call parent function to update page\n  */\n  const handleEnterKeyPress = (e) => {\n    if (e.key === 'Enter') {\n      // sanitize user input by removing letters\n      let safeValue = parseInt(pageNumberInput.toString().replace(/[^\\d]+/g, ''))\n\n      // ensure at least 1 number exists\n      if (!safeValue) safeValue = 1\n      // floor check\n      if (safeValue < 1) safeValue = 1\n      // ceiling check\n      if (safeValue > maxPage) safeValue = maxPage\n\n      // stash any changes we made to user input\n      if (safeValue !== pageNumberInput) {\n        setPageNumberInput(safeValue)\n      }\n      handleGoToPage(safeValue)\n    }\n  }\n\n  const isEmptyDisplay = maxPage <= 1\n\n  function renderContent () {\n    return (\n      <>\n        {!isMobile &&\n          <Button\n            variant='link'\n            disabled={isNoPreviousPage}\n            onClick={handleFirstClick}\n          >\n            <CaretLeftRightIcon direction='left' isDisabled={isNoPreviousPage} />\n            First\n          </Button>}\n        <Button\n          className={cx(\n            'InputPagination__previous',\n            { isTrimmed: totalExceedsThreshold }\n          )}\n          variant='link'\n          disabled={isNoPreviousPage}\n          onClick={handlePrevOnClick}\n        >\n          <CaretLeftRightIcon direction='left' isDisabled={isNoPreviousPage} />\n          {!isMobile && 'Previous'}\n        </Button>\n        <div className='InputPagination__input-box'>\n          <input\n            aria-label='Current Page'\n            className='InputPagination__input'\n            style={{ width: inputWidth }}\n            type='text'\n            onChange={handleInputChange}\n            onKeyPress={handleEnterKeyPress}\n            value={pageNumberInput}\n          />\n          <Text typeFace={isMobile ? 'Body/16pt/Black/L' : 'Rubik-Regular'} className='InputPagination__text-label'>\n            {`of ${numberWithCommas(maxPage)}`}\n          </Text>\n        </div>\n        <Button\n          className={cx(\n            'InputPagination__next',\n            { isTrimmed: totalExceedsThreshold }\n          )}\n          variant='link'\n          disabled={isNoNextPage}\n          onClick={handleNextOnClick}\n        >\n          {!isMobile && 'Next'}\n          <CaretLeftRightIcon direction='right' isDisabled={isNoNextPage} />\n        </Button>\n        {!isMobile &&\n          <Button\n            variant='link'\n            disabled={isNoNextPage}\n            onClick={handleLastClick}\n          >\n            Last\n            <CaretLeftRightIcon direction='right' isDisabled={isNoNextPage} />\n          </Button>}\n      </>\n    )\n  }\n\n  return (\n    <div className={cx('InputPagination', { empty: isEmptyDisplay })}>\n      <div className='InputPagination__inner'>\n        {!isLoading && renderContent()}\n      </div>\n    </div>\n  )\n}\n\nInputPagination.propTypes = {\n  isLoading: PropTypes.bool,\n  limit: PropTypes.number.isRequired,\n  total: PropTypes.number.isRequired,\n  offset: PropTypes.number.isRequired,\n  onUpdateOffset: PropTypes.func.isRequired\n}\n\nexport default InputPagination\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport LinkHandler from '../../common/LinkHandler/LinkHandler'\nimport { getBorderColor } from './ResourceSmall'\nimport ExternalLinkIcon from '../../../components/icons/ExternalLinkIcon'\nimport { retainAccessToken } from '../../../utilities/linkHelpers'\nimport { isPreviewUrl } from '../../../utilities/routeHelpers'\n\nimport './ResourceJumbo.scss'\n\nconst ResourceJumbo = ({ type, text, linkText, linkHref, index, isExternal }) => {\n  const isPreview = isPreviewUrl(linkHref)\n  const isRelativePath = linkHref?.startsWith('/')\n  let newUrl = linkHref\n\n  if (isRelativePath && isPreview) {\n    newUrl = '/preview' + linkHref\n    newUrl = retainAccessToken(newUrl)\n  }\n\n  return (\n    <LinkHandler\n      className='ResourceJumbo__container'\n      href={newUrl}\n      noBs\n    >\n      <div className='ResourceJumbo jumbotron jumbotron-fluid' fluid='true' style={{ borderLeftColor: getBorderColor(index) }}>\n        <h3 className='ResourceJumbo__type'>{type}</h3>\n        <h4 className='ResourceJumbo__text'>{text}</h4>\n        <p className='ResourceJumbo__pseudo-link'>{linkText} {isExternal && <ExternalLinkIcon />} </p>\n      </div>\n    </LinkHandler>\n  )\n}\n\nResourceJumbo.propTypes = {\n  index: PropTypes.number,\n  type: PropTypes.string,\n  text: PropTypes.string.isRequired,\n  linkText: PropTypes.string,\n  linkHref: PropTypes.string,\n  isExternal: PropTypes.bool\n}\n\nResourceJumbo.defaultProps = {\n  type: 'Resources',\n  linkText: 'View Resource',\n  linkHref: '/'\n}\n\nexport default ResourceJumbo\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport Text from '../Text/Text'\nimport cx from 'classnames'\nimport LinkHandler from '../LinkHandler/LinkHandler'\nimport config from '../../../config'\nimport { combineClassObjects } from '../../../utilities/displayUtilities'\nimport ResourceCardHeading from './ResourceCardHeading'\n\nimport './ResourceSmall.scss'\n\n// top border cards have top color accent\nconst { wddseAccentColorPalette } = config\n// which only consists of first 6 colors in palette\nexport const resourceBorderAccents = wddseAccentColorPalette.slice(0, 7)\n\n/**\n * Determine accented border color to use based on position\n * @param {number} index\n */\nexport const getBorderColor = (index) => {\n  if (typeof index !== 'number') return null\n\n  const safeIndex = index % resourceBorderAccents.length\n  return resourceBorderAccents[safeIndex]\n}\n\nconst baseClasses = {\n  anchorContainer: 'ResourceSmall__container',\n  container: 'ResourceSmall',\n  containerInner: 'ResourceSmall__inner',\n  type: 'ResourceSmall__small-text type',\n  heading: 'ResourceSmall__heading',\n  footerLabel: 'ResourceSmall__footer-label',\n  footer: 'ResourceSmall__small-text footer'\n}\n\nconst ResourceSmall = (props) => {\n  const {\n    type,\n    heading,\n    index,\n    slug,\n    footer,\n    classes\n  } = props\n\n  const style = { borderTopColor: getBorderColor(index) }\n  const combinedClasses = combineClassObjects(baseClasses, classes)\n\n  return (\n    <LinkHandler className={combinedClasses.anchorContainer} href={slug} noBs>\n      <div\n        className={cx(combinedClasses.container, {\n          isLight: true,\n          isTopBorder: true\n        })}\n        style={style}\n      >\n        <div className={combinedClasses.containerInner}>\n          {/* type added to resemble other card eyebrow structure */}\n          {type &&\n            <Text\n              className={combinedClasses.type}\n              typeFace='Small Text/MedGray'\n            >\n              {type}\n            </Text>}\n          {/* main card text */}\n          <Text\n            typeFace='Body/18pt/Black/L'\n            className={combinedClasses.heading}\n          >\n            <ResourceCardHeading heading={heading} />\n          </Text>\n          {/* small footer text (date, View xxx) */}\n          <Text\n            className={combinedClasses.footer}\n            typeFace='Body/16pt/MedGray'\n          >\n            {footer}\n          </Text>\n        </div>\n      </div>\n    </LinkHandler>\n  )\n}\n\nResourceSmall.propTypes = {\n  type: PropTypes.string,\n  heading: PropTypes.string,\n  slug: PropTypes.string,\n  footer: PropTypes.oneOfType([\n    PropTypes.string,\n    PropTypes.object\n  ]),\n  // appends custom classes to the component's elements\n  classes: PropTypes.shape({\n    anchorContainer: PropTypes.string,\n    container: PropTypes.string,\n    containerInner: PropTypes.string,\n    type: PropTypes.string,\n    heading: PropTypes.string,\n    footerLabel: PropTypes.string,\n    footer: PropTypes.string\n  }),\n  index: PropTypes.number\n}\n\nResourceSmall.defaultProps = {\n  index: null,\n  classes: {}\n}\n\nexport default ResourceSmall\n","import React from 'react'\nimport cx from 'classnames'\nimport PropTypes from 'prop-types'\n\nimport './DataTableSortIcon.scss'\n\n// based on the faSort font awesome icon modified to have two path elements to allow painting multiple colors\nconst DataTableSortIcon = ({ direction, className }) => {\n  return (\n    <div className={cx('DataTableSortIcon__container')}>\n      <svg\n        aria-hidden='true'\n        focusable='false'\n        data-prefix='fas'\n        data-icon='sort'\n        className={cx('Arrow', 'SvgIcon', 'svg-inline--fa', 'fa-sort ', direction, className)}\n        role='img'\n        xmlns='http://www.w3.org/2000/svg'\n        viewBox='0 0 320 512'\n      >\n        <path\n          fill='currentColor'\n          d='M137.4 41.4c12.5-12.5 32.8-12.5 45.3 0l128 128c9.2 9.2 11.9 22.9 6.9 34.9s-16.6 19.8-29.6 19.8H32c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9l128-128zm0 429.3l-128-128c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8H288c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-128 128c-12.5 12.5-32.8 12.5-45.3 0z'\n        />\n        <path\n          fill='currentColor'\n          d='M137.4 41.4c12.5-12.5 32.8-12.5 45.3 0l128 128c9.2 9.2 11.9 22.9 6.9 34.9s-16.6 19.8-29.6 19.8H32c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9l128-128zm0 429.3l-128-128c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8H288c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-128 128c-12.5 12.5-32.8 12.5-45.3 0z'\n        />\n      </svg>\n    </div>\n  )\n}\n\nDataTableSortIcon.propTypes = {\n  className: PropTypes.string,\n  direction: PropTypes.oneOf(['up', 'down'])\n}\n\nDataTableSortIcon.defaultProps = {\n  direction: 'down'\n}\n\nexport default DataTableSortIcon\n","import isEmpty from 'lodash/isEmpty'\nimport { numberWithCommas } from './searchPageHelpers'\n\nexport const ASC = 'ASC'\nexport const DESC = 'DESC'\nexport const TYPE_NUMERIC = 'NUMERIC'\nexport const TYPE_TEXT = 'TEXT'\nexport const TYPE_DATE = 'DATE'\nexport const ALIGN_LEFT = 'left'\nexport const ALIGN_CENTER = 'center'\nexport const ALIGN_RIGHT = 'right'\nexport const NO_SEPARATOR = '_none'\nexport const COMMA_SEPARATOR = 'comma'\nexport const STANDARD_FORMAT = 'standard'\nexport const PERCENT_FORMAT_DIVIDE = 'percentage_divide'\nexport const PERCENT_FORMAT_MULTIPLY = 'percentage_multiply'\nexport const PERCENT_FORMAT_NO_CHANGE = 'percentage'\nexport const CURRENCY_FORMAT = 'currency'\n\n/**\n * Format value for table display\n * @param {object} payload\n * @param {string} payload.value\n * @param {string} payload.type\n * @param {string} payload.format\n * @param {number} payload.numOfDecimalPlaces\n * @param {string} payload.thousandSeparator\n * @returns {string}\n */\nexport function getFormattedCellValue (payload = {}) {\n  const {\n    value,\n    type\n  } = payload\n\n  if (isEmpty(value)) {\n    return ''\n  }\n\n  switch (type) {\n    case TYPE_NUMERIC:\n      // ensure that value can be converted to number; if not, formatting method will break\n      return isNaN(Number(value))\n        ? value\n        : formatNumberValue(payload)\n    case TYPE_TEXT:\n    default:\n      // no formatting necessary for text\n      return value\n  }\n}\n\n/**\n * Format number value for table display\n * @param {object} payload\n * @param {string} payload.value\n * @param {string} payload.format\n * @param {number} payload.numOfDecimalPlaces\n * @param {string} payload.thousandSeparator\n * @returns {string}\n */\nfunction formatNumberValue (payload) {\n  const {\n    value = '',\n    format = STANDARD_FORMAT,\n    numOfDecimalPlaces: specifiedNumOfDecimalPlaces,\n    thousandSeparator = NO_SEPARATOR\n  } = payload\n\n  const originalDecimal = value.split('.')[1]\n  const originalDecimalLength = originalDecimal ? originalDecimal.length : 0\n  let defaultNumOfDecimalPlaces\n\n  const formattedValue = transformValue(\n    value,\n    // convert string value to number\n    updatedValue => Number(updatedValue),\n    // convert percentage if necessary (e.g., .1 -> 10) and adjust decimal precision\n    updatedValue => {\n      let newVal\n\n      switch (format) {\n        case PERCENT_FORMAT_MULTIPLY:\n          // if decimal not specified, multiplying will move decimal 2 places to\n          // right, thereby removing 2 places to the right of decimal\n          newVal = updatedValue * 100\n          defaultNumOfDecimalPlaces = Math.max(originalDecimalLength - 2, 0)\n          break\n        case PERCENT_FORMAT_DIVIDE:\n          newVal = updatedValue / 100\n          // if decimal not specified, dividing will move decimal 2 places to\n          // left, thereby adding a 2 places to the right of decimal\n          defaultNumOfDecimalPlaces = originalDecimalLength + 2\n          break\n        case PERCENT_FORMAT_NO_CHANGE:\n        default:\n          // non-percentages formats will land here as well\n          newVal = updatedValue\n          defaultNumOfDecimalPlaces = originalDecimalLength\n          break\n      }\n      const finalDecimalNum = typeof specifiedNumOfDecimalPlaces === 'number'\n        ? specifiedNumOfDecimalPlaces\n        : defaultNumOfDecimalPlaces\n\n      // ensure final decimal length is greater than or equal to 0\n      return newVal.toFixed(Math.max(0, finalDecimalNum))\n    },\n    // finally, apply commas\n    updatedValue => thousandSeparator === COMMA_SEPARATOR ? numberWithCommas(updatedValue) : updatedValue\n  )\n\n  switch (format) {\n    case PERCENT_FORMAT_MULTIPLY:\n    case PERCENT_FORMAT_DIVIDE:\n    case PERCENT_FORMAT_NO_CHANGE:\n      return `${formattedValue}%`\n    case CURRENCY_FORMAT:\n      return `$${formattedValue}`\n    case STANDARD_FORMAT:\n    default:\n      return formattedValue\n  }\n}\n\n/**\n * Helper for transforming initial value with a series of functions that are run\n * through a .reduce\n * @param {any} initialValue\n * @param  {function[]} transformFns\n * @returns {any}\n */\nexport function transformValue (initialValue, ...transformFns) {\n  return transformFns.reduce((updatedValue, transformFn) => {\n    return transformFn(updatedValue)\n  }, initialValue)\n}\n","import { useRef, useState, useLayoutEffect } from 'react'\n\n// It seems like when the content width is very close to the container width (e.g., 70px content width, 71px container width),\n// the CSS ellipsis gets toggled despite the measurements; therefore, when comparing the content width to the container width we need\n// to account for this behavior.  Through trial and error, I found that a margin of 13 works; so now, for example,\n// if the content width is 60px and the container width is 70px, this hook would calculate that the content is overflowing.\nconst ellipsisTriggerMargin = 13\n\n/**\n * Hook used by both HeaderCellContent and BodyCellContent to determine whether to show\n * tooltip or dropdown menu\n * @param {number} cellWidth\n */\nexport default function useContentOverflowDetection (cellWidth, sortOrder) {\n  const contentRef = useRef()\n  const containerRef = useRef()\n  const [isContentOverflowing, setIsContentOverflowing] = useState(false)\n\n  useLayoutEffect(() => {\n    const contentWidth = contentRef.current.clientWidth\n    const containerWidth = containerRef.current.clientWidth\n    setIsContentOverflowing(contentWidth + ellipsisTriggerMargin > containerWidth)\n    // the cellWidth prop only changes when the user drags the column resize, so we also want to watch for\n    // sortOrder change to trigger re-measurement, which reduces the width of the cell\n  }, [cellWidth, sortOrder])\n\n  return {\n    isContentOverflowing,\n    contentRef,\n    containerRef\n  }\n}\n","import React, { useCallback } from 'react'\nimport PropTypes from 'prop-types'\nimport cx from 'classnames'\nimport OverlayTrigger from 'react-bootstrap/OverlayTrigger'\nimport Tooltip from 'react-bootstrap/Tooltip'\nimport DataTableSortIcon from '../../icons/DataTableSortIcon'\nimport {\n  getFormattedCellValue,\n  ASC,\n  DESC,\n  TYPE_NUMERIC,\n  TYPE_TEXT,\n  TYPE_DATE,\n  ALIGN_LEFT,\n  ALIGN_CENTER,\n  ALIGN_RIGHT,\n  NO_SEPARATOR,\n  COMMA_SEPARATOR,\n  STANDARD_FORMAT,\n  PERCENT_FORMAT_DIVIDE,\n  PERCENT_FORMAT_MULTIPLY,\n  PERCENT_FORMAT_NO_CHANGE,\n  CURRENCY_FORMAT\n} from '../../../utilities/dataTableUtilities'\nimport useContentOverflowDetection from '../../../hooks/useContentOverflowDetection'\n\nimport './DataTableCellContent.scss'\n\nconst CellContent = (props) => {\n  const {\n    className,\n    content,\n    tooltip,\n    alignment,\n    onClick,\n    id,\n    containerRef,\n    contentRef\n  } = props\n\n  function renderTooltip (tooltipProps) {\n    return (\n      <Tooltip\n        {...tooltipProps}\n        bsPrefix='CellContent__tooltip'\n        arrowProps={{ style: { display: 'none' } }}\n      >\n        {tooltip}\n      </Tooltip>\n    )\n  }\n\n  function renderContentWithTooltip () {\n    return (\n      <OverlayTrigger\n        flip\n        placement='bottom'\n        delay={{ show: 250, hide: 400 }}\n        overlay={e => renderTooltip(e)}\n        trigger={['hover', 'focus']}\n      >\n        {renderContent()}\n      </OverlayTrigger>\n    )\n  }\n\n  function renderContent () {\n    return (\n      <div ref={containerRef} id={id} className={cx('CellContent', className)} onClick={onClick}>\n        <div className={cx('CellContent__content', alignment)}>{content}</div>\n        <div ref={contentRef} className='CellContent__measure'>{content}</div>\n      </div>\n    )\n  }\n\n  return tooltip\n    ? renderContentWithTooltip()\n    : renderContent()\n}\n\nCellContent.propTypes = {\n  id: PropTypes.string,\n  className: PropTypes.string,\n  content: PropTypes.string,\n  tooltip: PropTypes.string,\n  alignment: PropTypes.string,\n  onClick: PropTypes.func,\n  containerRef: PropTypes.object,\n  contentRef: PropTypes.object\n}\n\nexport const HeaderCellContent = React.memo((props) => {\n  const {\n    schemaLookUp,\n    width,\n    header,\n    isHeaderMenuOpen,\n    sortOrder,\n    onUpdateSortOrder,\n    onRequestCloseHeaderMenu,\n    onRequestOpenHeaderMenu,\n    isMobile,\n    direction,\n    isSortActive,\n    isLoading\n  } = props\n\n  const {\n    contentRef,\n    containerRef\n  } = useContentOverflowDetection(width, sortOrder)\n\n  function handleDropdownClick () {\n    return isHeaderMenuOpen\n      ? handleCloseDropdown\n      : onRequestOpenHeaderMenu(header)\n  }\n\n  const handleCloseDropdown = useCallback(() => {\n    onRequestCloseHeaderMenu()\n  }, [onRequestCloseHeaderMenu])\n\n  function handleToggleSortClick () {\n    if (isLoading) {\n      return\n    }\n    if (sortOrder === DESC) {\n      onUpdateSortOrder(null, null)\n    } else {\n      const updatedSortOrder = sortOrder === ASC ? DESC : ASC\n      onUpdateSortOrder(header, updatedSortOrder)\n    }\n  }\n\n  const withDropdown = isMobile\n\n  function insertLineBreaks (text, breakpoints) {\n    if (!breakpoints || breakpoints?.length === 0) {\n      return text\n    }\n    let foundBreakpoint = false\n    let elementsAsStrings = text\n    for (let i = 0; i < breakpoints.length; i++) {\n      if (text.includes(breakpoints[i])) {\n        foundBreakpoint = true\n      }\n      const regex = new RegExp(breakpoints[i], 'g')\n      const characterWithBreaks = `zpqInsertBreakpointHerezpq${breakpoints[i]}zpqInsertBreakpointHerezpq`\n      elementsAsStrings = elementsAsStrings.replace(regex, characterWithBreaks)\n    }\n    const chunks = elementsAsStrings.split('zpqInsertBreakpointHerezpq')\n    const last = chunks.pop()\n    return foundBreakpoint ? (\n      <>\n        {chunks.map(chunk => <>{chunk}<wbr /></>)}{last}\n      </>\n    ) : text\n  }\n\n  const headerWithBreaks = insertLineBreaks((schemaLookUp && schemaLookUp[header]?.title) ? schemaLookUp[header].title : header, ['_'])\n\n  return (\n    <div className='DataTable__header' onClick={withDropdown ? handleDropdownClick : handleToggleSortClick}>\n      <div className='DataTable__headerText'>\n        <CellContent\n          id={header}\n          className={cx({\n            menuOpen: withDropdown && isHeaderMenuOpen,\n            header: true\n          })}\n          tooltip={isMobile ? false : headerWithBreaks}\n          content={headerWithBreaks}\n          containerRef={containerRef}\n          contentRef={contentRef}\n        />\n      </div>\n      <div className={cx('DataTable__sort', { isActive: isSortActive })}>\n        <DataTableSortIcon\n          direction={direction}\n          className='DataTable__sortOption'\n        />\n      </div>\n    </div>\n  )\n})\n\nHeaderCellContent.propTypes = {\n  header: PropTypes.string,\n  schemaLookUp: PropTypes.object,\n  sortOrder: PropTypes.oneOf([ASC, DESC]),\n  onUpdateSortOrder: PropTypes.func,\n  isMobile: PropTypes.bool,\n  width: PropTypes.number,\n  isHeaderMenuOpen: PropTypes.bool,\n  onRequestCloseHeaderMenu: PropTypes.func,\n  onRequestOpenHeaderMenu: PropTypes.func,\n  direction: PropTypes.string,\n  isSortActive: PropTypes.bool,\n  isLoading: PropTypes.bool\n}\n\nexport const BodyCellContent = (props) => {\n  const {\n    value,\n    type,\n    width,\n    alignment,\n    format,\n    numOfDecimalPlaces,\n    thousandSeparator\n  } = props\n\n  const {\n    isContentOverflowing,\n    contentRef,\n    containerRef\n  } = useContentOverflowDetection(width)\n\n  const formattedValue = getFormattedCellValue({ value, type, format, numOfDecimalPlaces, thousandSeparator })\n\n  return (\n    <CellContent\n      content={formattedValue}\n      alignment={alignment}\n      tooltip={isContentOverflowing ? formattedValue : null}\n      containerRef={containerRef}\n      contentRef={contentRef}\n    />\n  )\n}\n\nBodyCellContent.propTypes = {\n  value: PropTypes.string,\n  type: PropTypes.oneOf([TYPE_NUMERIC, TYPE_TEXT, TYPE_DATE]),\n  alignment: PropTypes.oneOf([\n    ALIGN_LEFT,\n    ALIGN_RIGHT,\n    ALIGN_CENTER\n  ]),\n  format: PropTypes.oneOf([\n    STANDARD_FORMAT,\n    PERCENT_FORMAT_DIVIDE,\n    PERCENT_FORMAT_MULTIPLY,\n    PERCENT_FORMAT_NO_CHANGE,\n    CURRENCY_FORMAT\n  ]),\n  numOfDecimalPlaces: PropTypes.number,\n  thousandSeparator: PropTypes.oneOf([\n    NO_SEPARATOR,\n    COMMA_SEPARATOR\n  ]),\n  width: PropTypes.number\n}\n\nBodyCellContent.defaultProps = {\n  type: 'TEXT',\n  alignment: 'left',\n  format: STANDARD_FORMAT,\n  numOfDecimalPlaces: 0,\n  thousandSeparator: NO_SEPARATOR\n}\n","import React, { useMemo, useRef, useState, useEffect, useLayoutEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport { ScrollSync, ScrollSyncPane } from 'react-scroll-sync'\nimport cx from 'classnames'\nimport isEmpty from 'lodash/isEmpty'\nimport Container from 'react-bootstrap/Container'\nimport Overlay from 'react-bootstrap/Overlay'\nimport Text from '../../common/Text/Text'\nimport { LoadingSpinner } from '../../common/LoadingCover/LoadingCover'\nimport { BodyCellContent, HeaderCellContent } from './DataTableCellContent'\nimport useDisplayContext from '../../../hooks/useDisplayContext'\nimport {\n  useTable,\n  useFlexLayout,\n  useResizeColumns,\n  useColumnOrder,\n  usePagination\n} from 'react-table'\nimport {\n  ASC,\n  DESC\n} from '../../../utilities/dataTableUtilities'\n\nimport './DataTable.scss'\n\nconst DataTable = (props) => {\n  const {\n    headerGroups,\n    columns,\n    getTableBodyProps,\n    rows,\n    prepareRow,\n    sort,\n    onSetSort,\n    isFullScreen,\n    isLoading,\n    windowHeight,\n    columnTypes = {},\n    columnFormatting = {},\n    isMobile,\n    schemaLookUp\n  } = props\n  const [openColumnMenu, setOpenColumnMenu] = useState(null)\n  const [isSorting, setIsSorting] = useState(false)\n  const tableRef = useRef()\n  const tableBodyRef = useRef()\n  const resizingColumnIndex = columns.findIndex(column => column.isResizing)\n\n  function handleUpdateColumnSort (columnHeader, updatedSortOrder) {\n    onSetSort({\n      sortBy: columnHeader,\n      sortOrder: updatedSortOrder\n    })\n    setIsSorting(true)\n  }\n\n  function handleSortAscClick (e) {\n    handleUpdateColumnSort(openColumnMenu, ASC)\n    handleRequestCloseHeaderMenu()\n  }\n\n  function handleSortDescClick (e) {\n    handleUpdateColumnSort(openColumnMenu, DESC)\n    handleRequestCloseHeaderMenu()\n  }\n\n  function handleSortDefaultClick (e) {\n    handleUpdateColumnSort(null, null)\n    handleRequestCloseHeaderMenu()\n  }\n\n  function handleRequestOpenHeaderMenu (columnHeader) {\n    setOpenColumnMenu(columnHeader)\n  }\n\n  function handleRequestCloseHeaderMenu () {\n    setOpenColumnMenu(null)\n  }\n\n  function ensureColumnMenuClosed () {\n    if (openColumnMenu) {\n      handleRequestCloseHeaderMenu()\n    }\n  }\n\n  useEffect(() => {\n    if (!isSorting) {\n      tableBodyRef.current.scrollTop = 0\n      tableBodyRef.current.scrollLeft = 0\n    } else {\n      setIsSorting(false)\n    }\n  }, [rows])\n\n  useEffect(() => {\n    // close any open mobile column menu if desktop\n    if (!isMobile) {\n      setOpenColumnMenu(null)\n    }\n  }, [isMobile])\n\n  function renderTableHeader () {\n    return (headerGroups && (\n      <div className='thead' style={{ minWidth: headerGroups[0]?.getHeaderGroupProps()?.style?.minWidth }}>\n        {headerGroups.map((headerGroup, groupIndex) => (\n          <div key={groupIndex} className='tr' {...headerGroup?.getHeaderGroupProps()}>\n            {headerGroup?.headers?.map((column, colIndex) => {\n              return (\n                <div\n                  key={colIndex}\n                  className='th'\n                  {...column?.getHeaderProps()}\n                >\n                  <HeaderCellContent\n                    schemaLookUp={schemaLookUp}\n                    header={column.Header}\n                    isHeaderMenuOpen={openColumnMenu === column.Header}\n                    onRequestOpenHeaderMenu={e => handleRequestOpenHeaderMenu(e)}\n                    onRequestCloseHeaderMenu={e => handleRequestCloseHeaderMenu(e)}\n                    sortOrder={sort.sortBy === column.Header ? sort.sortOrder : null}\n                    onUpdateSortOrder={(columnHeader, updatedSortOrder) => handleUpdateColumnSort(columnHeader, updatedSortOrder)}\n                    value={column.Header}\n                    width={column.width}\n                    isMobile={isMobile}\n                    direction={sort.sortOrder === ASC ? 'up' : 'down'}\n                    isSortActive={sort.sortBy === column.Header}\n                    isLoading={isLoading}\n                  />\n                  <div\n                    {...column.getResizerProps()}\n                    className={cx('resizer', { isResizing: column.isResizing })}\n                  />\n                </div>\n              )\n            }\n            )}\n          </div>\n        ))}\n        <Overlay\n          target={tableRef}\n          show={!!(openColumnMenu)}\n          onHide={e => handleRequestCloseHeaderMenu(e)}\n          placement='top-start'\n          rootClose\n          rootCloseEvent='click'\n        >\n          {({ show: _show, ...overlayProps }) => {\n            const divProps = { ...overlayProps }\n            // prevents react warning for invalid dom element props\n            delete divProps.arrowProps\n\n            return (\n              <div\n                className='CellContent__dropdownContainer'\n                {...divProps}\n              >\n                <div className='dropdown CellContent__dropdown'>\n                  <div className='dropdown-menu show' aria-labelledby={openColumnMenu}>\n                    <div className='dropdown-item header'>{openColumnMenu}</div>\n                    <div className={cx('dropdown-item', sort.sortOrder === null ? 'selected' : '')} onClick={e => handleSortDefaultClick(e)}>Sort Default</div>\n                    <div className={cx('dropdown-item', sort.sortOrder === ASC && sort.sortBy === openColumnMenu ? 'selected' : '')} onClick={e => handleSortAscClick(e)}>Sort Ascending</div>\n                    <div className={cx('dropdown-item', sort.sortOrder === DESC && sort.sortBy === openColumnMenu ? 'selected' : '')} onClick={e => handleSortDescClick(e)}>Sort Descending</div>\n                  </div>\n                </div>\n              </div>\n\n            )\n          }}\n        </Overlay>\n      </div>)\n    )\n  }\n\n  function renderTableBody () {\n    return (\n      <div {...getTableBodyProps()} className='tbody'>\n        {rows.map((row, rowIndex) => {\n          prepareRow(row)\n          return (\n            <div key={rowIndex} {...row.getRowProps()} className='tr'>\n              {row.cells.map((cell, cellIndex) => {\n                const formatting = columnFormatting[cell.column.Header] || {}\n                const numOfDecimalPlaces = isEmpty(formatting.decimal_places)\n                  ? null\n                  : Number(formatting.decimal_places)\n                return (\n                  <div\n                    key={cellIndex}\n                    {...cell.getCellProps()}\n                    className={cx('td', { isResizing: resizingColumnIndex === cellIndex })}\n                  >\n                    <BodyCellContent\n                      type={columnTypes[cell.column.Header]}\n                      alignment={formatting.alignment}\n                      format={formatting.formatting}\n                      value={cell.value}\n                      numOfDecimalPlaces={numOfDecimalPlaces}\n                      thousandSeparator={formatting.thousand_separator}\n                      width={cell.column.width}\n                    />\n                  </div>\n                )\n              })}\n            </div>\n          )\n        })}\n      </div>\n    )\n  }\n\n  function renderEmptyResults () {\n    return (\n      <div className='DataTable__emptyDisplay'>\n        <Text className='results' typeFace='Body/16pt/Black/L'>Showing 0 results</Text>\n        <Text className='heading' typeFace='03 H3/Black/L'>Sorry, no matches found.</Text>\n        <Text className='description' typeFace='05 H5/Black/Regular/L'>Here are some search tips:</Text>\n        <ul>\n          <Text domElement='li' typeFace='Body/18pt/Black/L'>Make sure all words are spelled correctly.</Text>\n          <Text domElement='li' typeFace='Body/18pt/Black/L'>Try one or two fewer criteria.</Text>\n        </ul>\n      </div>\n    )\n  }\n\n  const [availableHeight, setAvailableHeight] = useState(1)\n  const containerRef = useRef(null)\n  const isEmptyResults = rows.length === 0\n  const showEmptyResults = isEmptyResults && !isLoading\n\n  useLayoutEffect(() => {\n    if (isFullScreen) {\n      const height = containerRef.current ? containerRef.current.parentElement.getBoundingClientRect().height : 1\n      setAvailableHeight(height)\n    }\n    // trigger setting available height when isEmptyResultsChanges\n  }, [isFullScreen, windowHeight, isEmptyResults])\n\n  return (\n    <ScrollSync vertical={false}>\n      <div\n        ref={containerRef}\n        className={cx({\n          DataTable: true,\n          loading: isLoading,\n          isResizing: resizingColumnIndex > -1,\n          fullscreen: isFullScreen\n        })}\n        style={isFullScreen ? { height: `${availableHeight}px` } : {}}\n      >\n        <Container className='DataTable__container' fluid={isFullScreen || isMobile}>\n          <div className='DataTable__loadingIndicator'>\n            <LoadingSpinner className='DataTable__spinner' />\n          </div>\n          <div\n            ref={tableRef}\n            className='table'\n            onScroll={e => ensureColumnMenuClosed(e)}\n          >\n            {/** table header */}\n            <ScrollSyncPane>\n              <div className={isFullScreen ? 'thead-scroll-container' : 'thead-container'}>\n                {renderTableHeader()}\n              </div>\n            </ScrollSyncPane>\n            {/** table body */}\n            <ScrollSyncPane>\n              <div\n                className={isFullScreen ? 'tbody-scroll-container' : 'tbody-container'}\n                onScroll={e => ensureColumnMenuClosed(e)}\n                ref={tableBodyRef}\n              >\n                {!isEmptyResults && renderTableBody()}\n                {showEmptyResults && isFullScreen && renderEmptyResults()}\n              </div>\n            </ScrollSyncPane>\n          </div>\n          {showEmptyResults && !isFullScreen && renderEmptyResults()}\n        </Container>\n      </div>\n    </ScrollSync>\n  )\n}\n\n// these props are essentially what is returned from react-table's useTable()\nDataTable.propTypes = {\n  headerGroups: PropTypes.arrayOf(PropTypes.object),\n  columns: PropTypes.arrayOf(PropTypes.shape({ isResizing: PropTypes.bool })),\n  getTableBodyProps: PropTypes.func,\n  rows: PropTypes.arrayOf(PropTypes.object),\n  prepareRow: PropTypes.func,\n  sort: PropTypes.shape({\n    sortBy: PropTypes.string,\n    sortOrder: PropTypes.oneOf([ASC, DESC])\n  }),\n  onSetSort: PropTypes.func,\n  isFullScreen: PropTypes.bool,\n  isLoading: PropTypes.bool,\n  windowHeight: PropTypes.number,\n  columnTypes: PropTypes.object,\n  columnFormatting: PropTypes.object,\n  isMobile: PropTypes.bool,\n  schemaLookUp: PropTypes.object\n}\n\nconst defaultHeaders = []\n\n/**\n * Hook used for derriving react-table props, which is consumed by DataTable;\n * these params originate from the response for interactive data table\n * @param {object} data\n * @param {string[]} data.dataHeaders -  array of strings\n * @param {object[]} data.dataRows - array of key/value objects where key is column name\n */\nexport const useReactTableProps = ({ dataHeaders = defaultHeaders, dataRows, isMobile }) => {\n  const columns = useMemo(() => {\n    return dataHeaders.map((header) => {\n      if (isMobile) {\n        return {\n          Header: header,\n          id: header,\n          accessor: header,\n          width: 148,\n          minWidth: 148\n        }\n      }\n      // 48px is the space allocated to the sort icon and resizer\n      // 8 is the aproximate ratio between string length and rendered size in pixels with the current styling\n      let width = header.length * 8 + 48\n      if (width > 256) {\n        width = 256\n      } else if (width < 148) {\n        width = 148\n      }\n      return {\n        Header: header,\n        id: header,\n        accessor: header,\n        width: width,\n        minWidth: 148\n      }\n    })\n  }, [dataHeaders, isMobile])\n  const defaultColumn = React.useMemo(\n    () => ({\n      minWidth: 30,\n      width: 500,\n      maxWidth: 1000\n    }), [])\n\n  const reactTableProps = useTable(\n    {\n      columns,\n      data: dataRows,\n      defaultColumn,\n      initialState: {\n        columnOrder: columns.map(column => column.id)\n      },\n      manualPagination: true\n    },\n    useFlexLayout,\n    useResizeColumns,\n    useColumnOrder,\n    usePagination\n  )\n  return reactTableProps\n}\n\nexport default function (props) {\n  const { windowHeight, isMobile } = useDisplayContext()\n\n  return (\n    <DataTable\n      {...props}\n      isMobile={isMobile}\n      windowHeight={windowHeight}\n    />\n  )\n}\n\nexport { DataTable }\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport cx from 'classnames'\nimport Dropdown from 'react-bootstrap/Dropdown'\n\nimport './DataTableDropdownMenu.scss'\n\nconst DataTableDropdownMenu = ({ children, className, alignRight }) => {\n  return (\n    <Dropdown.Menu align={alignRight} className={cx('DataTableDropdownMenu', className)}>\n      {children}\n    </Dropdown.Menu>\n  )\n}\n\nDataTableDropdownMenu.propTypes = {\n  children: PropTypes.oneOfType([\n    PropTypes.array,\n    PropTypes.object,\n    PropTypes.element\n  ]),\n  className: PropTypes.string,\n  alignRight: PropTypes.bool\n}\n\nexport default DataTableDropdownMenu\n","import React, { useMemo, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport cx from 'classnames'\nimport Text from '../../common/Text/Text'\nimport Container from 'react-bootstrap/Container'\nimport Dropdown from 'react-bootstrap/Dropdown'\nimport OverlayTrigger from 'react-bootstrap/OverlayTrigger'\nimport Tooltip from 'react-bootstrap/Tooltip'\nimport { ReactComponent as CompressIcon } from '../../../assets/fontawesome/regular/compress.svg'\nimport { ReactComponent as ExpandIcon } from '../../../assets/fontawesome/regular/expand.svg'\nimport DataTableDropdownMenu from './DataTableDropdownMenu'\nimport { numberWithCommas } from '../../../utilities/searchPageHelpers'\n\nimport './DataTableStatusBar.scss'\n\nconst limitOptions = [10, 50, 100]\n\nconst DataTableStatusBar = (props) => {\n  const {\n    offset,\n    limit,\n    onSetLimit,\n    numOfTotalResults,\n    numOfFoundResults,\n    filters = [],\n    keywords = '',\n    isFullScreen,\n    isLoading,\n    onSetFullScreen\n  } = props\n\n  const viewStart = offset\n  const viewEnd = Math.min(offset + limit, numOfFoundResults)\n  const startCount = numberWithCommas(numOfFoundResults === 0 ? 0 : viewStart + 1)\n  const endCount = numberWithCommas(viewEnd)\n  const totalCount = numberWithCommas(numOfTotalResults)\n  const foundCount = numberWithCommas(numOfFoundResults)\n\n  function handleToggleFullScreen () {\n    onSetFullScreen(!isFullScreen)\n  }\n\n  useEffect(() => {\n    function handleKeyPress (e) {\n      if (e.key === 'Escape') {\n        onSetFullScreen(false)\n      }\n    }\n\n    document.addEventListener('keydown', handleKeyPress)\n\n    return () => {\n      document.removeEventListener('keydown', handleKeyPress)\n    }\n  }, [onSetFullScreen])\n\n  const isOriginalCountShowing = useMemo(() => {\n    return !!(\n      keywords.length > 0 ||\n      filters.length > 0\n    )\n  }, [filters, keywords])\n\n  return (\n    <Container fluid={isFullScreen} className={cx('DataTableStatusBar', { loading: isLoading })}>\n      <div className='DataTableStatusBar__stats found'>\n        <Text typeFace='Body/16pt/Black/L'>Displaying</Text>\n        <span className='DataTableStatusBar__stat'>{` ${startCount} - ${endCount} `}</span>\n        <Text typeFace='Body/16pt/Black/L'>of</Text>\n        <span className='DataTableStatusBar__stat'> {` ${foundCount} `} </span>\n        <Text typeFace='Body/16pt/Black/L'>rows</Text>\n        {isOriginalCountShowing && (\n          <span className='DataTableStatusBar__stats original'>\n            <span className='divider'>|</span>\n            <Text domElement='span' typeFace='Body/16pt/Black/L'>Originally</Text>\n            <span className='DataTableStatusBar__stat'> {` ${totalCount} `} </span>\n            <Text domElement='span' typeFace='Body/16pt/Black/L'>rows</Text>\n          </span>\n        )}\n      </div>\n      <div className='DataTableStatusBar__selectLimit'>\n        <Text domElement='span' typeFace='Body/16pt/Black/L'>Rows per page:</Text>\n        <Dropdown>\n          <Dropdown.Toggle className='DataTableStatusBar__selectLimitButton' variant='default'>{limit}</Dropdown.Toggle>\n          <DataTableDropdownMenu alignRight className='DataTableStatusBar__selectLimitMenu'>\n            {limitOptions.map(limit => {\n              return (\n                <Dropdown.Item\n                  as='div'\n                  key={limit}\n                  onClick={() => onSetLimit(limit)}\n                >\n                  {limit}\n                </Dropdown.Item>\n              )\n            })}\n          </DataTableDropdownMenu>\n        </Dropdown>\n      </div>\n      <button\n        aria-label={isFullScreen ? 'Exit fullscreen' : 'Fullscreen'}\n        className='DataTableStatusBar__fullScreenBtn'\n        onClick={e => handleToggleFullScreen(e)}\n      >\n        <OverlayTrigger\n          flip\n          disabled\n          placement='top-start'\n          delay={{ show: 250, hide: 250 }}\n          overlay={(tooltipProps) => (\n            <Tooltip\n              {...tooltipProps}\n              bsPrefix='CellContent__tooltip'\n              arrowProps={{ style: { display: 'none' } }}\n            >\n              {isFullScreen ? 'Exit fullscreen' : 'Fullscreen'}\n            </Tooltip>\n          )}\n          trigger={['hover', 'focus']}\n        >\n          <>\n            {isFullScreen ? <CompressIcon /> : <ExpandIcon />}\n          </>\n        </OverlayTrigger>\n      </button>\n    </Container>\n  )\n}\n\nDataTableStatusBar.propTypes = {\n  offset: PropTypes.number,\n  limit: PropTypes.number,\n  keywords: PropTypes.string,\n  filters: PropTypes.array,\n  numOfTotalResults: PropTypes.number,\n  numOfFoundResults: PropTypes.number,\n  onSetLimit: PropTypes.func,\n  isFullScreen: PropTypes.bool,\n  isLoading: PropTypes.bool,\n  onSetFullScreen: PropTypes.func\n}\n\nexport default DataTableStatusBar\n","import React, { useState, useMemo } from 'react'\nimport PropTypes from 'prop-types'\nimport { useHistory } from 'react-router-dom'\nimport isEmpty from 'lodash/isEmpty'\nimport take from 'lodash/take'\nimport ListGroup from 'react-bootstrap/ListGroup'\nimport ListGroupItem from 'react-bootstrap/ListGroupItem'\nimport Button from 'react-bootstrap/Button'\nimport config from '../../../config'\nimport ResourceJumbo from '../../common/Resource/ResourceJumbo'\nimport ExternalLinkIcon from '../../../components/icons/ExternalLinkIcon'\nimport RichTextField from '../../common/RichTextField/RichTextField'\nimport LinkHandler from '../../common/LinkHandler/LinkHandler'\n\nimport './DatasetResources.scss'\n\nconst {\n  datasetResourcesFeaturedTitle\n} = config\n\nexport const FEATURED_RESOURCE_TYPES = {\n  methodology: 'Methodology',\n  dataDictionary: 'Data Dictionary',\n  glossary: 'Glossary'\n}\nconst FEATURED_RESOURCE_DISPLAY_LIMIT = 5\nconst FEATURED_RESOURCE_SORT_PREFERENCE = 'Methodology'\n\nconst featuredResourceTypes = Object.values(FEATURED_RESOURCE_TYPES)\n\nfunction getResourceHref (resource) {\n  const {\n    internalPageSlug,\n    fileUrl,\n    externalLinkUrl\n  } = resource\n\n  if (internalPageSlug) {\n    return internalPageSlug\n  } else if (fileUrl) {\n    return fileUrl\n  } else if (externalLinkUrl) {\n    return externalLinkUrl\n  } else {\n    return '/'\n  }\n}\n\nfunction containsInternalLink (resource) {\n  return !!(resource.internalPageSlug)\n}\n\nfunction isExternalLink (resource) {\n  return resource.type === 'External Link'\n}\n\nfunction displayResourceType (resource) {\n  if (isExternalLink(resource)) {\n    return 'Resource'\n  } else {\n    return resource.type\n  }\n}\n\nconst DatasetResources = ({\n  header,\n  description,\n  featuredTitle,\n  resources: unfilteredResources,\n  showAdditionalResources,\n  isTools\n}) => {\n  // split raw data into data structures\n  const resources = unfilteredResources.filter(resource => resource.showOnResourcesSection)\n  // filter for featured, sort by the config preferred sort order\n  const featuredResources = resources\n    .filter(resource => isTools ? resource.isFeatured : featuredResourceTypes.includes(resource.type))\n    .sort((a) => a.type === FEATURED_RESOURCE_SORT_PREFERENCE ? -1 : 1)\n  const additionalResources = resources.filter(resource => isTools ? !resource.isFeatured : !featuredResourceTypes.includes(resource.type))\n\n  const [isResourceListExpanded, setIsResourceListOpen] = useState(false)\n\n  // determine what to show based on data\n  const allResourcesCount = showAdditionalResources\n    ? featuredResources.length + additionalResources.length\n    : featuredResources.length\n\n  const hiddenResourcesCount = allResourcesCount - FEATURED_RESOURCE_DISPLAY_LIMIT\n  return (\n    <div className='DatasetResources'>\n      {header && (\n        <h2>{header}</h2>\n      )}\n\n      {description && (\n        <div className='DatasetResources__text-section'>\n          {description && (\n            <RichTextField className='DatasetResources__text' content={description} />\n          )}\n        </div>\n      )}\n\n      {!isEmpty(featuredResources) &&\n        <div className='DatasetResources__featured-section'>\n          {/* When no header is present the featuredTitle becomes the SEO header */}\n          {!header && <h2>{featuredTitle} ({allResourcesCount})</h2>}\n          {header && <p>{featuredTitle} ({allResourcesCount})</p>}\n          {take(featuredResources, hiddenResourcesCount > 0\n            ? (isResourceListExpanded ? featuredResources.length : FEATURED_RESOURCE_DISPLAY_LIMIT)\n            : featuredResources.length\n          ).map((resource, index) => {\n            let actionLabel\n            const isExternal = isExternalLink(resource)\n\n            if (isExternal) {\n              actionLabel = 'View'\n            } else {\n              actionLabel = containsInternalLink(resource) ? 'View' : 'Download'\n            }\n            return (\n              <ResourceJumbo\n                key={index}\n                index={index}\n                text={resource.title || resource.externalLinkLabel}\n                type='Featured Resource'\n                linkText={`${actionLabel} ${displayResourceType(resource)}`}\n                linkHref={getResourceHref(resource)}\n                isExternal={isExternal}\n              />\n            )\n          })}\n        </div>}\n\n      {showAdditionalResources && !isEmpty(additionalResources) && (featuredResources.length >= 5 ? isResourceListExpanded : true) &&\n        <>\n          <div className='DatasetResources__related-section'>\n            <ListGroup variant='flush'>\n              {take(additionalResources,\n                hiddenResourcesCount > 0\n                  ? (isResourceListExpanded ? additionalResources.length : FEATURED_RESOURCE_DISPLAY_LIMIT - featuredResources.length)\n                  : additionalResources.length\n              ).map((resource, index) => {\n                let actionLabel\n                const isExternal = isExternalLink(resource)\n\n                if (isExternal) {\n                  actionLabel = 'View'\n                } else {\n                  actionLabel = containsInternalLink(resource) ? 'View' : 'Download'\n                }\n\n                return (\n                  <ListGroupItem key={index} className='DatasetResources__related-item'>\n                    <div>\n                      <h4 className='DatasetResources__related-item-title'>\n                        {isExternal ? 'Related Link' : resource.type}\n                      </h4>\n                      <h5 className='DatasetResources__related-item-text'>{isExternal ? resource.externalLinkLabel : resource.title}</h5>\n                    </div>\n                    <LinkHandler href={getResourceHref(resource)}>\n                      <>\n                        {`${actionLabel} ${displayResourceType(resource)}`} {isExternal && <ExternalLinkIcon />}\n                      </>\n                    </LinkHandler>\n                  </ListGroupItem>\n                )\n              })}\n            </ListGroup>\n          </div>\n        </>}\n      {hiddenResourcesCount > 0 &&\n        <div className='DatasetResources__related-section__show-more'>\n          <Button onClick={() => setIsResourceListOpen(!isResourceListExpanded)}>\n            {isResourceListExpanded ? 'Show Less' : `Show More (${hiddenResourcesCount})`}\n          </Button>\n        </div>}\n    </div>\n  )\n}\n\nDatasetResources.propTypes = {\n  header: PropTypes.string,\n  featuredTitle: PropTypes.string,\n  description: PropTypes.string,\n  resources: PropTypes.array,\n  showAdditionalResources: PropTypes.bool,\n  isTools: PropTypes.bool\n}\n\nDatasetResources.defaultProps = {\n  featuredTitle: datasetResourcesFeaturedTitle\n}\n\nexport default (props) => {\n  const history = useHistory()\n\n  const memoProps = useMemo(() => {\n    return {\n      history,\n      ...props\n    }\n  }, [history, props])\n\n  return (\n    <DatasetResources\n      {...memoProps}\n    />\n  )\n}\n\nexport { DatasetResources }\n"],"names":["_path","_extends","Object","assign","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","SvgPlus","_ref","svgRef","title","titleId","props","xmlns","viewBox","fill","ref","id","d","ForwardRef","faqDisplayLimit","configData","FaqsList","Component","constructor","super","handleDisplayAllFaqs","setState","allFaqsShown","faqs","state","map","fieldFaqQuestion","question","fieldFaqAnswer","value","answer","collapsed","toggleFaq","render","className","header","leftColOffset","faqsToDisplay","take","faqSchema","mainEntity","faq","name","stripHTML","acceptedAnswer","text","_jsxs","cx","children","_jsx","HelmetProvider","Helmet","type","JSON","stringify","Container","Row","Col","lg","offset","Accordion","_ref2","index","Card","role","eventkey","onClick","alt","src","plusIcon","minusIcon","Collapse","eventKey","in","Body","RichTextField","content","Button","defaultProps","isLoading","limit","onUpdateOffset","total","isMobile","windowWidth","useDisplayContext","pageNumberInput","setPageNumberInput","useState","inputWidth","useMemo","widthBasis","dynamicWidth","toString","Math","max","useEffect","getCurrentPage","maxPage","getMaxPageNumber","isNoPreviousPage","isNoNextPage","totalExceedsThreshold","handleGoToPage","pageNumber","getNewOffset","handleInputChange","handleFirstClick","handleLastClick","handlePrevOnClick","handleNextOnClick","handleEnterKeyPress","e","safeValue","parseInt","replace","isEmptyDisplay","empty","_Fragment","variant","disabled","CaretLeftRightIcon","direction","isDisabled","isTrimmed","style","width","onChange","onKeyPress","Text","typeFace","numberWithCommas","ResourceJumbo","linkText","linkHref","isExternal","isPreview","isPreviewUrl","isRelativePath","startsWith","newUrl","retainAccessToken","LinkHandler","href","noBs","fluid","borderLeftColor","getBorderColor","ExternalLinkIcon","wddseAccentColorPalette","config","resourceBorderAccents","slice","safeIndex","baseClasses","anchorContainer","container","containerInner","heading","footerLabel","footer","ResourceSmall","slug","classes","borderTopColor","combinedClasses","combineClassObjects","isLight","isTopBorder","ResourceCardHeading","DataTableSortIcon","focusable","ASC","DESC","NO_SEPARATOR","COMMA_SEPARATOR","STANDARD_FORMAT","PERCENT_FORMAT_DIVIDE","PERCENT_FORMAT_MULTIPLY","PERCENT_FORMAT_NO_CHANGE","CURRENCY_FORMAT","getFormattedCellValue","payload","undefined","isEmpty","isNaN","Number","format","numOfDecimalPlaces","specifiedNumOfDecimalPlaces","thousandSeparator","originalDecimal","split","originalDecimalLength","defaultNumOfDecimalPlaces","formattedValue","initialValue","_len","transformFns","Array","_key","reduce","updatedValue","transformFn","transformValue","newVal","finalDecimalNum","toFixed","formatNumberValue","useContentOverflowDetection","cellWidth","sortOrder","contentRef","useRef","containerRef","isContentOverflowing","setIsContentOverflowing","useLayoutEffect","contentWidth","current","clientWidth","containerWidth","CellContent","tooltip","alignment","renderContent","OverlayTrigger","flip","placement","delay","show","hide","overlay","renderTooltip","tooltipProps","Tooltip","bsPrefix","arrowProps","display","trigger","HeaderCellContent","React","_schemaLookUp$header","schemaLookUp","isHeaderMenuOpen","onUpdateSortOrder","onRequestCloseHeaderMenu","onRequestOpenHeaderMenu","isSortActive","handleCloseDropdown","useCallback","withDropdown","headerWithBreaks","breakpoints","foundBreakpoint","elementsAsStrings","includes","regex","RegExp","characterWithBreaks","chunks","last","pop","chunk","insertLineBreaks","menuOpen","isActive","BodyCellContent","DataTable","headerGroups","columns","getTableBodyProps","rows","prepareRow","sort","onSetSort","isFullScreen","windowHeight","columnTypes","columnFormatting","openColumnMenu","setOpenColumnMenu","isSorting","setIsSorting","tableRef","tableBodyRef","resizingColumnIndex","findIndex","column","isResizing","handleUpdateColumnSort","columnHeader","updatedSortOrder","sortBy","handleRequestCloseHeaderMenu","ensureColumnMenuClosed","renderEmptyResults","domElement","scrollTop","scrollLeft","availableHeight","setAvailableHeight","isEmptyResults","showEmptyResults","height","parentElement","getBoundingClientRect","ScrollSync","vertical","loading","fullscreen","LoadingSpinner","onScroll","ScrollSyncPane","_headerGroups$","_headerGroups$$getHea","_headerGroups$$getHea2","minWidth","getHeaderGroupProps","headerGroup","groupIndex","_headerGroup$headers","headers","colIndex","getHeaderProps","Header","getResizerProps","Overlay","onHide","rootClose","rootCloseEvent","_show","overlayProps","divProps","renderTableHeader","row","rowIndex","getRowProps","cells","cell","cellIndex","formatting","decimal_places","getCellProps","thousand_separator","defaultHeaders","useReactTableProps","dataHeaders","dataRows","accessor","defaultColumn","maxWidth","useTable","data","initialState","columnOrder","manualPagination","useFlexLayout","useResizeColumns","useColumnOrder","usePagination","alignRight","Dropdown","Menu","align","limitOptions","onSetLimit","numOfTotalResults","numOfFoundResults","filters","keywords","onSetFullScreen","viewStart","viewEnd","min","startCount","endCount","totalCount","foundCount","handleKeyPress","document","addEventListener","removeEventListener","isOriginalCountShowing","Toggle","DataTableDropdownMenu","Item","as","CompressIcon","ExpandIcon","datasetResourcesFeaturedTitle","FEATURED_RESOURCE_TYPES","methodology","dataDictionary","glossary","featuredResourceTypes","values","getResourceHref","resource","internalPageSlug","fileUrl","externalLinkUrl","containsInternalLink","isExternalLink","displayResourceType","DatasetResources","description","featuredTitle","resources","unfilteredResources","showAdditionalResources","isTools","filter","showOnResourcesSection","featuredResources","isFeatured","a","additionalResources","isResourceListExpanded","setIsResourceListOpen","allResourcesCount","hiddenResourcesCount","actionLabel","externalLinkLabel","ListGroup","ListGroupItem","history","useHistory","memoProps"],"sourceRoot":""}