{"version":3,"file":"controller-d03b6880.js","sources":["../../../../src/scripts/coveo/controllers/controller.ts"],"sourcesContent":["import {\n buildSearchBox,\n buildResultList,\n buildResultsPerPage,\n buildPager,\n buildBreadcrumbManager,\n buildQuerySummary,\n buildDateFilter,\n RangeFacetSortCriterion\n} from '@coveo/headless';\nimport { headlessEngine, headlessEngineModal } from '../engine';\n\nexport type filterFacetsProps = {\n title: string;\n field: string;\n defaultLabel: string;\n}[];\n\nexport type facetLabelsProps = {\n title: string;\n field: string;\n range: boolean;\n rangeLabels: string[];\n rangeStars: string[];\n rangeValues: { start: number; end: number; endInclusive?: boolean }[];\n sortCriteria: string;\n};\n\nexport type facetsProps = {\n title: string;\n field: string;\n isCategory?: boolean;\n certificationsLabel?: string;\n customOrder?: {\n facetName: string;\n iconUrl: string;\n }[];\n colors?: { value: string; color_value: string }[];\n rangeLabels?: string[];\n rangeStars?: string[];\n rangeValues?: { start: number; end: number; endInclusive?: boolean }[];\n isWarrantiesLabel?: string;\n isPrice?: boolean;\n isColor?: boolean;\n range?: boolean;\n sortCriteria?: RangeFacetSortCriterion;\n}[];\n\nexport type rangeFacetProps = {\n field: string;\n title: string;\n rangeLabels: string[];\n rangeStarLabels: string[];\n};\n\nexport type coveoContextProps = {\n [key: string]: string;\n};\n\nconst wrapper = document.getElementsByClassName(\n 'coveo-listing__data-wrapper'\n)?.[0] as HTMLElement;\nconst dataset = wrapper && wrapper.dataset;\n\nconst modalWrapper = document.getElementsByClassName(\n 'coveo-listing__data-wrapper-modal'\n)[0] as HTMLElement;\nconst datasetModal = modalWrapper\n ? (modalWrapper as HTMLElement).dataset\n : null;\n\nexport const maxResultsPerPage = dataset?.resultsPerPage\n ? JSON.parse(dataset.resultsPerPage as string)\n : 10;\n\nexport const filterFacets = dataset?.filterFacets\n ? (JSON.parse(dataset.filterFacets as string) as filterFacetsProps)\n : [];\nexport const facets = dataset?.facets\n ? (JSON.parse(dataset.facets as string) as facetsProps)\n : [];\nexport const facetOptionsNumber = dataset?.facetOptionsNumber\n ? Number(dataset.facetOptionsNumber)\n : 999;\nexport const rangeFacet = dataset?.rangeFacet\n ? JSON.parse(dataset.rangeFacet as string)\n : ({} as rangeFacetProps);\n\nexport const facetsLabels = dataset?.facets\n ? JSON.parse(dataset.facets as string)\n : ({} as facetLabelsProps);\n\nexport const fieldsObject = dataset?.searchFields\n ? JSON.parse(dataset.searchFields as string)\n : {};\nexport const fieldsObjectModal = datasetModal?.searchFields\n ? JSON.parse((datasetModal as DOMStringMap).searchFields as string)\n : {};\n\nexport const fieldsToInclude =\n fieldsObject && (Object.values(fieldsObject) as string[]);\n\nexport const fieldsToIncludeModal =\n fieldsObjectModal && (Object.values(fieldsObjectModal) as string[]);\n\nexport const fieldsKeys = Object.keys(fieldsObject) as string[];\n\nexport const certificationsImagePath =\n dataset?.certificationsImagePath as string;\n\nexport const certificationImages = dataset?.certificationImages\n ? JSON.parse(dataset.certificationImages as string)\n : [];\n\nexport const certificationImagesResidential =\n dataset?.certificationImagesResidential\n ? JSON.parse(dataset.certificationImagesResidential as string)\n : certificationImages;\n\nexport const certificationImagesCommercial =\n dataset?.certificationImagesCommercial\n ? JSON.parse(dataset.certificationImagesCommercial as string)\n : certificationImages;\n\nexport const contractorImages = dataset?.contractorPlaceholderImages\n ? JSON.parse(dataset.contractorPlaceholderImages as string)\n : [];\n\nexport const imagesPlaceholdersObj = dataset?.imagePlaceholders\n ? JSON.parse(dataset.imagePlaceholders as string)\n : '';\n\nexport const labelsObj = dataset?.labels\n ? JSON.parse(dataset?.labels as string)\n : '';\n\nexport const templateTypes = dataset?.templateTypes\n ? JSON.parse(dataset.templateTypes as string)\n : [];\n\nexport const defaultQuery = dataset ? (dataset.defaultQuery as string) : null;\n\nexport const coveoContext = dataset?.coveoContext\n ? (JSON.parse(dataset.coveoContext as string) as coveoContextProps)\n : {};\n\nexport const coveoContextModal = datasetModal?.coveoContext\n ? (JSON.parse(datasetModal.coveoContext as string) as coveoContextProps)\n : {};\n\n/*\n Usage:\n import * as Controllers from '../../coveo/controllers/controllers';\n\n Then, in the component:\n*/\n\nconst numberOfSuggestions = dataset?.numberOfSuggestions\n ? parseInt(dataset.numberOfSuggestions)\n : 5;\n\nexport const searchBox =\n headlessEngine &&\n buildSearchBox(headlessEngine, {\n options: {\n highlightOptions: {\n notMatchDelimiters: {\n open: '',\n close: ''\n },\n correctionDelimiters: {\n open: '',\n close: ''\n }\n },\n numberOfSuggestions: numberOfSuggestions\n }\n });\n\nexport const resultList =\n headlessEngine &&\n buildResultList(headlessEngine, {\n options: {\n fieldsToInclude\n }\n });\n\nexport const resultListModal =\n headlessEngineModal &&\n buildResultList(headlessEngineModal, {\n options: {\n fieldsToInclude: fieldsToIncludeModal\n }\n });\n\nexport const facetBreadcrumb =\n headlessEngine && buildBreadcrumbManager(headlessEngine);\n\nexport const resultsPerPage =\n headlessEngine &&\n buildResultsPerPage(headlessEngine, {\n initialState: { numberOfResults: maxResultsPerPage }\n });\n\n/*\n Usage:\n \n*/\nexport const dateFilter =\n headlessEngine &&\n buildDateFilter(headlessEngine, {\n options: {\n field: 'date'\n }\n });\n\nexport const querySummary = headlessEngine && buildQuerySummary(headlessEngine);\n\nexport const pager =\n headlessEngine &&\n buildPager(headlessEngine, {\n options: { numberOfPages: 5 }\n });\n"],"names":["wrapper","_a","dataset","modalWrapper","datasetModal","maxResultsPerPage","filterFacets","facets","facetOptionsNumber","facetsLabels","fieldsObject","fieldsObjectModal","fieldsToInclude","fieldsToIncludeModal","certificationImages","certificationImagesResidential","certificationImagesCommercial","contractorImages","imagesPlaceholdersObj","labelsObj","templateTypes","defaultQuery","coveoContextModal","numberOfSuggestions","searchBox","headlessEngine","buildSearchBox","resultList","buildResultList","resultListModal","headlessEngineModal","facetBreadcrumb","buildBreadcrumbManager","resultsPerPage","buildResultsPerPage","buildDateFilter","querySummary","buildQuerySummary","pager","buildPager"],"mappings":"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"}