{"version":3,"file":"controller-3495b6b4.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  resultsMustMatch?: 'allValues' | 'atLeastOneValue';\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  specialtiesLabel?: 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  resultsMustMatch?: 'allValues' | 'atLeastOneValue';\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: '<strong>',\n          close: '</strong>'\n        },\n        correctionDelimiters: {\n          open: '<i>',\n          close: '</i>'\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 <DateFilter controller={Controllers.dateFilter} />\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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"}