{"version":3,"file":"facet-4b2c2ce0.js","sources":["../../../../src/scripts/coveo/components/facet-breadcrumbs.tsx","../../../../src/scripts/coveo/components/facet.tsx"],"sourcesContent":["import React, { useEffect, useState, useContext } from 'react';\nimport {\n facetBreadcrumb,\n facetLabelsProps,\n facetsLabels\n} from '../controllers/controller';\nimport {\n BreadcrumbManager,\n BreadcrumbValue,\n FacetBreadcrumb,\n FacetValue,\n NumericFacetBreadcrumb,\n NumericFacetValue,\n CategoryFacetBreadcrumb\n} from '@coveo/headless';\nimport Clear from './clear';\nimport SecondCall from './second-call-context';\nimport { createDataLayerString } from '../../helpers/helpers';\ntype FacetBreadcrumbsProps = {\n extraClasses?: string;\n clearLabel: string;\n};\n\nfunction FacetBreadcrumbs({ extraClasses, clearLabel }: FacetBreadcrumbsProps) {\n const [state, setState] = useState(\n (facetBreadcrumb as BreadcrumbManager).state\n );\n const secondCallContext = useContext(SecondCall);\n\n useEffect(() => {\n (facetBreadcrumb as BreadcrumbManager).subscribe(() =>\n setState((facetBreadcrumb as BreadcrumbManager).state)\n );\n }, []);\n\n const handleFacetClick = (breadcrumb: CategoryFacetBreadcrumb) => {\n if (breadcrumb.path.length > 1) {\n window.dispatchEvent(\n new CustomEvent('deselectFacetTree', {\n detail: {\n value: breadcrumb.path[breadcrumb.path.length - 2]\n }\n })\n );\n } else {\n breadcrumb.deselect();\n }\n };\n\n const renderCategoryFacetBreadcrumbs = (\n breadcrumbs: CategoryFacetBreadcrumb[]\n ) => {\n return (\n <>\n {breadcrumbs.map(breadcrumb =>\n breadcrumb.path.map((facet, index) => {\n return (\n
  • \n handleFacetClick(breadcrumb)}\n >\n {facet.value}\n \n
  • \n );\n })\n )}\n \n );\n };\n const getRangeFacetLabel = (obj: { start: number; end: number }) => {\n const rangeFacets = facetsLabels.filter((el: facetLabelsProps) => el.range);\n let parentEl: facetLabelsProps | undefined = undefined,\n el: number | undefined = undefined;\n\n rangeFacets.find((rangeObj: facetLabelsProps) => {\n rangeObj.rangeValues.forEach((range, index) => {\n if (range.start === obj.start && range.end === obj.end) {\n parentEl = rangeObj;\n el = index;\n return;\n }\n });\n });\n\n if (!parentEl || el === undefined) return '';\n const parentLabels = parentEl as facetLabelsProps;\n if (parentLabels?.rangeStars) {\n return `${parentLabels.rangeStars[el]} ${parentLabels.rangeLabels[el]}`;\n } else {\n return parentLabels.rangeLabels[el];\n }\n };\n const renderSecondFacets = (\n value: string | { start: number; end: number },\n index: number\n ) => {\n return (\n
  • \n {\n if (secondCallContext.setSelectedFacets === undefined) return;\n secondCallContext.setSelectedFacets(facets =>\n facets.filter(facet => facet.value !== value)\n );\n }}\n >\n {!(value as { start: number }).start ? (\n <>{value}\n ) : (\n <>{getRangeFacetLabel(value as { start: number; end: number })}\n )}\n \n
  • \n );\n };\n\n const renderFacetBreadcrumbs = (\n breadcrumbs: FacetBreadcrumb[] | NumericFacetBreadcrumb[]\n ) => {\n return (\n <>\n {breadcrumbs.map((breadcrumb, index) => (\n \n {breadcrumb.values.map((val, index) => {\n const value = val as BreadcrumbValue &\n BreadcrumbValue;\n return (\n
  • \n value.deselect()}\n >\n {value.value.value ? (\n <>{value.value.value}\n ) : (\n <>{getRangeFacetLabel(value.value)}\n )}\n \n
  • \n );\n })}\n
    \n ))}\n \n );\n };\n\n if (secondCallContext.secondCall) {\n return (\n <>\n {secondCallContext.selectedFacets.length > 0 ? (\n \n ) : null}\n \n );\n }\n return (\n <>\n {state.hasBreadcrumbs ? (\n \n ) : null}\n \n );\n}\n\nexport default FacetBreadcrumbs;\n","import React, { useId, useState, useEffect, useRef, useContext } from 'react';\nimport {\n FacetState,\n Facet as FacetType,\n FacetValue,\n NumericFacet,\n NumericFacetState,\n NumericFacetValue\n} from '@coveo/headless';\nimport RatingStars from '../../react-components/rating-stars';\nimport { disableBodyScroll, clearAllBodyScrollLocks } from 'body-scroll-lock';\nimport type { BodyScrollOptions } from 'body-scroll-lock';\nimport { createDataLayerString } from '../../helpers/helpers';\nimport SecondCall from './second-call-context';\n\nconst FACET_EVENTS = Object.freeze({\n expand: 'facet:expand',\n collapse: 'facet:collapse'\n});\n\ntype FacetBreadcrumbsProps = {\n title: string;\n controller: FacetType | NumericFacet;\n certificationsLabel?: string;\n rangeLabels?: string[];\n rangeStarLabels?: string[];\n customOrder?: {\n facetName: string;\n iconUrl: string;\n }[];\n colors?: { value: string; color_value: string }[];\n defaultExpanded?: boolean;\n showMoreLabel?: string;\n showLessLabel?: string;\n isPrice?: boolean;\n warranties?: boolean;\n};\n\nfunction Facet({\n title,\n controller,\n certificationsLabel,\n rangeLabels,\n customOrder,\n defaultExpanded,\n showMoreLabel,\n showLessLabel,\n rangeStarLabels,\n warranties,\n isPrice,\n colors\n}: FacetBreadcrumbsProps) {\n const id = useId();\n const [state, setState] = useState(\n controller.state\n );\n const [expanded, setExpanded] = useState(\n defaultExpanded !== undefined ? defaultExpanded : true\n );\n const [panelHeight, setPanelHeight] = useState('100%');\n const [counter, setCounter] = useState(0);\n const panelRef = useRef(null);\n const tooltipButtonRef = useRef(null);\n const facetTitleRef = useRef(null);\n const secondCallContext = useContext(SecondCall);\n\n const calculateStyles = () => {\n if (panelRef.current) {\n setPanelHeight(`${panelRef.current.scrollHeight}px`);\n }\n\n if (tooltipButtonRef.current && facetTitleRef.current) {\n const facetTitleWidth = facetTitleRef.current.clientWidth;\n\n tooltipButtonRef.current.style.setProperty(\n 'inset-inline-start',\n `${facetTitleWidth + 4}px`\n );\n }\n };\n\n const modal = warranties\n ? document.querySelector('.warranty-modal')\n : document.querySelector('.certifications-modal');\n const modalCloseButton = modal?.querySelector(\n '.modal__close-button'\n );\n\n const handleOpenModal = () => {\n const options = {\n reserveScrollBarGap: true,\n allowTouchMove: (el: HTMLElement) => {\n return el.classList.contains('modal');\n }\n } as BodyScrollOptions;\n (modal as HTMLDialogElement)?.showModal();\n disableBodyScroll(modal as HTMLElement, options);\n };\n\n const handleCloseModal = () => {\n (modal as HTMLDialogElement)?.close();\n clearAllBodyScrollLocks();\n };\n\n const expandFacet = () => {\n setExpanded(true);\n };\n\n const collapseFacet = () => {\n setExpanded(false);\n };\n\n useEffect(() => {\n const handleResize = () => {\n calculateStyles();\n };\n\n window.addEventListener('resize', handleResize);\n window.addEventListener(FACET_EVENTS.expand, expandFacet);\n window.addEventListener(FACET_EVENTS.collapse, collapseFacet);\n\n if (modalCloseButton) {\n modalCloseButton.addEventListener('click', handleCloseModal);\n }\n\n return () => {\n window.removeEventListener('resize', handleResize);\n window.removeEventListener(FACET_EVENTS.expand, expandFacet);\n window.removeEventListener(FACET_EVENTS.collapse, collapseFacet);\n\n if (modalCloseButton) {\n modalCloseButton.removeEventListener('click', handleCloseModal);\n }\n };\n }, []);\n\n useEffect(() => {\n calculateStyles();\n }, [state]);\n\n useEffect(() => {\n controller.subscribe(() => setState(controller.state));\n }, [controller]);\n\n const handleTriggerClick = () => {\n setExpanded(!expanded);\n };\n\n const handleShowMoreClick = () => {\n (controller as FacetType).showMoreValues();\n setCounter(counter + 1);\n };\n\n const handleShowLessClick = () => {\n for (let i = 0; i < counter; i++) {\n (controller as FacetType).showLessValues();\n }\n\n setCounter(0);\n };\n\n const secondCallFacetNumber = (\n value: string,\n numbers: { start: number; end: number }\n ) => {\n const results = secondCallContext.filteredResults.filter(result => {\n if (Array.isArray(result.raw[state.facetId])) {\n return (result.raw[state.facetId] as string[]).includes(\n value as string\n );\n } else {\n const number = result.raw[state.facetId] as number;\n return number >= numbers.start && number <= numbers.end;\n }\n });\n\n return results.length;\n };\n\n const renderList = () => {\n let values = [...state.values];\n\n if (customOrder) {\n values = values.sort((a, b) => {\n const aIndex = customOrder.findIndex(\n item => item.facetName === (a as FacetValue & NumericFacetValue).value\n );\n\n const bIndex = customOrder.findIndex(\n item => item.facetName === (b as FacetValue & NumericFacetValue).value\n );\n\n if (aIndex === -1) {\n return 1;\n }\n\n if (bIndex === -1) {\n return -1;\n }\n\n return aIndex - bIndex;\n });\n }\n\n const secondCallFilterResults = (\n value: string,\n facetValue: { start: number; end: number }\n ) => {\n if (\n secondCallContext.setFilteredResults === undefined ||\n secondCallContext.setSelectedPage === undefined ||\n secondCallContext.setSelectedFacets === undefined\n )\n return;\n\n if (\n secondCallContext.selectedFacets.findIndex(\n (facet: {\n facetId: string;\n value: string | { start: number; end: number };\n }) => {\n if ((facet.value as { start: number }).start) {\n return (\n (facet.value as { start: number }).start === facetValue.start &&\n facet.facetId === state.facetId\n );\n } else {\n return facet.value === value && facet.facetId === state.facetId;\n }\n }\n ) > -1\n ) {\n secondCallContext.setSelectedFacets(\n (\n facets: {\n facetId: string;\n value: string | { start: number; end: number };\n }[]\n ) =>\n facets.filter(facet =>\n facet.facetId === state.facetId && facetValue\n ? (facet.value as { start: number }).start !== facetValue.start\n : facet.value !== value\n )\n );\n secondCallContext.setSelectedPage(1);\n } else {\n secondCallContext.setSelectedFacets(facets => [\n ...facets,\n { facetId: state.facetId, value: value ? value : facetValue }\n ]);\n secondCallContext.setSelectedPage(1);\n }\n };\n\n return (\n
      \n {values.map((val, index) => {\n const value = val as FacetValue & NumericFacetValue;\n if (colors) {\n let colorIndex = colors.findIndex(\n item => item.value === value.value\n );\n if (colorIndex === -1) {\n colorIndex = 0;\n }\n\n return (\n
    • \n
      \n {\n if ((facet.value as { start: number }).start) {\n return (\n (facet.value as { start: number }).start ===\n value.start\n );\n } else {\n return facet.value === value.value;\n }\n }) > -1\n : value.state === 'selected'\n }\n onChange={() =>\n secondCallContext.secondCall\n ? secondCallFilterResults(value.value, value)\n : controller.toggleSelect(value)\n }\n disabled={\n state.isLoading ||\n (rangeStarLabels && value.numberOfResults < 1)\n }\n />\n \n\n
      \n \n {value.value}\n \n {secondCallContext.secondCall\n ? secondCallFacetNumber(value.value, value)\n : value.numberOfResults}\n results\n \n \n
      \n
      \n
    • \n );\n }\n return (\n
    • \n
      \n {\n if ((facet.value as { start: number }).start) {\n return (\n (facet.value as { start: number }).start ===\n value.start\n );\n } else {\n return facet.value === value.value;\n }\n }) > -1\n : value.state === 'selected'\n }\n onChange={() =>\n secondCallContext.secondCall\n ? secondCallFilterResults(value.value, value)\n : controller.toggleSelect(value)\n }\n disabled={state.isLoading || value.numberOfResults < 1}\n />\n
      \n \n {isPrice && rangeLabels && (\n {rangeLabels[index]}\n )}\n {rangeStarLabels && rangeLabels ? (\n
      \n \n {rangeStarLabels && (\n \n {rangeStarLabels[index]} {rangeLabels[index]}\n \n )}\n {rangeLabels[index]}\n
      \n ) : (\n \n {value.value}\n {certificationsLabel && !warranties && (\n item.facetName === value.value\n )?.iconUrl\n }\n alt=\"\"\n role=\"presentation\"\n loading=\"lazy\"\n width=\"20\"\n height=\"20\"\n />\n )}\n \n )}\n \n {secondCallContext.secondCall\n ? secondCallFacetNumber(value.value, value)\n : value.numberOfResults}\n results\n \n \n
      \n
      \n
    • \n );\n })}\n
      \n {!rangeStarLabels && (state as FacetState).canShowLessValues && (\n \n {showLessLabel}\n \n )}\n {!rangeStarLabels && (state as FacetState).canShowMoreValues && (\n \n {showMoreLabel}\n \n )}\n
      \n
    \n );\n };\n\n return (\n <>\n {state.values.length > 0 && (\n
    \n \n \n {title}\n \n \n {certificationsLabel && (\n \n {certificationsLabel}\n \n )}\n \n {state.values.length > 0 && renderList()}\n
    \n \n )}\n \n );\n}\n\nexport default Facet;\n"],"names":["FacetBreadcrumbs","extraClasses","clearLabel","state","setState","useState","facetBreadcrumb","secondCallContext","useContext","SecondCall","useEffect","handleFacetClick","breadcrumb","renderCategoryFacetBreadcrumbs","breadcrumbs","facet","index","React","getRangeFacetLabel","obj","rangeFacets","facetsLabels","el","parentEl","rangeObj","range","parentLabels","renderSecondFacets","value","facets","renderFacetBreadcrumbs","val","createDataLayerString","Clear","FACET_EVENTS","Facet","title","controller","certificationsLabel","rangeLabels","customOrder","defaultExpanded","showMoreLabel","showLessLabel","rangeStarLabels","warranties","isPrice","colors","id","useId","expanded","setExpanded","panelHeight","setPanelHeight","counter","setCounter","panelRef","useRef","tooltipButtonRef","facetTitleRef","calculateStyles","facetTitleWidth","modal","modalCloseButton","handleOpenModal","options","disableBodyScroll","handleCloseModal","clearAllBodyScrollLocks","expandFacet","collapseFacet","handleResize","handleTriggerClick","handleShowMoreClick","handleShowLessClick","i","secondCallFacetNumber","numbers","result","number","renderList","values","a","b","aIndex","item","bIndex","secondCallFilterResults","facetValue","colorIndex","RatingStars","_a"],"mappings":"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"}