@searchcraft/javascript-sdk 0.12.2 → 0.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/dist/components/index.d.ts +91 -1
  2. package/dist/components/index.js +62 -634
  3. package/dist/components/index.js.map +1 -1
  4. package/dist/components/{p-e8d97093.js → p-BV4HUriZ.js} +15 -10
  5. package/dist/components/p-BV4HUriZ.js.map +1 -0
  6. package/dist/components/p-B_415D4A.js +34 -0
  7. package/dist/components/p-B_415D4A.js.map +1 -0
  8. package/dist/components/{p-c9b65e8f.js → p-BbSxfaD7.js} +14 -11
  9. package/dist/components/p-BbSxfaD7.js.map +1 -0
  10. package/dist/components/p-BfTCfPZ1.js +95 -0
  11. package/dist/components/p-BfTCfPZ1.js.map +1 -0
  12. package/dist/components/p-BlYgaV0q.js +1373 -0
  13. package/dist/components/p-BlYgaV0q.js.map +1 -0
  14. package/dist/components/{p-870f81fd.js → p-C-wcIch1.js} +18 -15
  15. package/dist/components/p-C-wcIch1.js.map +1 -0
  16. package/dist/components/{p-87435aac.js → p-C1S92_N8.js} +12 -8
  17. package/dist/components/p-C1S92_N8.js.map +1 -0
  18. package/dist/components/{p-acf23bab.js → p-C681KruS.js} +10 -7
  19. package/dist/components/p-C681KruS.js.map +1 -0
  20. package/dist/components/{p-1d5c5536.js → p-C7ZK8CYu.js} +13 -10
  21. package/dist/components/p-C7ZK8CYu.js.map +1 -0
  22. package/dist/components/{p-fc8ccffa.js → p-Cju73I1E.js} +12 -9
  23. package/dist/components/p-Cju73I1E.js.map +1 -0
  24. package/dist/components/{p-e30203b1.js → p-D0j0UFpV.js} +2 -1
  25. package/dist/components/p-D0j0UFpV.js.map +1 -0
  26. package/dist/components/{p-02ad136b.js → p-D5p2scT9.js} +13 -10
  27. package/dist/components/p-D5p2scT9.js.map +1 -0
  28. package/dist/components/{p-5365011f.js → p-DO5g2x-l.js} +861 -186
  29. package/dist/components/p-DO5g2x-l.js.map +1 -0
  30. package/dist/components/{p-73db9122.js → p-Dc7S4y3b.js} +9 -6
  31. package/dist/components/p-Dc7S4y3b.js.map +1 -0
  32. package/dist/components/{p-f2585cdf.js → p-DjPZkCLP.js} +8 -5
  33. package/dist/components/p-DjPZkCLP.js.map +1 -0
  34. package/dist/components/{p-3286bbb3.js → p-DotXR-Gz.js} +10 -7
  35. package/dist/components/p-DotXR-Gz.js.map +1 -0
  36. package/dist/components/{p-b13c7fbb.js → p-Dr9rPC9v.js} +11 -8
  37. package/dist/components/p-Dr9rPC9v.js.map +1 -0
  38. package/dist/components/{p-1adf78b9.js → p-L4PwHqQC.js} +10 -7
  39. package/dist/components/p-L4PwHqQC.js.map +1 -0
  40. package/dist/components/{p-b4b67072.js → p-_aHgRsRD.js} +4 -3
  41. package/dist/components/p-_aHgRsRD.js.map +1 -0
  42. package/dist/components/{p-d54771ef.js → p-i8oXh7db.js} +2 -1
  43. package/dist/components/p-i8oXh7db.js.map +1 -0
  44. package/dist/components/searchcraft-ad.js +2 -1
  45. package/dist/components/searchcraft-button.js +2 -1
  46. package/dist/components/searchcraft-error-message.js +2 -1
  47. package/dist/components/searchcraft-facet-list.js +2 -1
  48. package/dist/components/searchcraft-filter-panel.js +169 -11
  49. package/dist/components/searchcraft-filter-panel.js.map +1 -1
  50. package/dist/components/searchcraft-input-form.js +2 -1
  51. package/dist/components/searchcraft-input-label.js +2 -1
  52. package/dist/components/searchcraft-loading.js +2 -1
  53. package/dist/components/searchcraft-pagination.js +12 -8
  54. package/dist/components/searchcraft-pagination.js.map +1 -1
  55. package/dist/components/searchcraft-popover-button.js +10 -7
  56. package/dist/components/searchcraft-popover-button.js.map +1 -1
  57. package/dist/components/searchcraft-popover-footer.js +2 -1
  58. package/dist/components/searchcraft-popover-form.js +17 -14
  59. package/dist/components/searchcraft-popover-form.js.map +1 -1
  60. package/dist/components/searchcraft-popover-list-item.js +2 -1
  61. package/dist/components/searchcraft-popover-list-view.js +2 -1
  62. package/dist/components/searchcraft-results-info.js +10 -7
  63. package/dist/components/searchcraft-results-info.js.map +1 -1
  64. package/dist/components/searchcraft-search-result.js +2 -1
  65. package/dist/components/searchcraft-search-results-per-page.js +11 -7
  66. package/dist/components/searchcraft-search-results-per-page.js.map +1 -1
  67. package/dist/components/searchcraft-search-results.js +11 -8
  68. package/dist/components/searchcraft-search-results.js.map +1 -1
  69. package/dist/components/searchcraft-select.js +2 -1
  70. package/dist/components/searchcraft-slider.js +2 -1
  71. package/dist/components/searchcraft-summary-box.js +13 -68
  72. package/dist/components/searchcraft-summary-box.js.map +1 -1
  73. package/dist/components/searchcraft-theme.js +9 -6
  74. package/dist/components/searchcraft-theme.js.map +1 -1
  75. package/dist/components/searchcraft-toggle-button.js +2 -1
  76. package/dist/hydrate/index.d.ts +40 -7
  77. package/dist/hydrate/index.js +3285 -2405
  78. package/dist/hydrate/index.mjs +3284 -2404
  79. package/dist/themes/hologram.css +1 -1
  80. package/dist/themes/hologram.css.map +1 -1
  81. package/dist/types/classes/SearchcraftCore.d.ts +1 -0
  82. package/dist/types/clients/MeasureClient.d.ts +2 -1
  83. package/dist/types/clients/SearchClient.d.ts +1 -1
  84. package/dist/types/clients/ad-clients/AdClient.d.ts +1 -1
  85. package/dist/types/clients/ad-clients/NativoClient.d.ts +1 -1
  86. package/dist/types/components/searchcraft-filter-panel/searchcraft-filter-panel.d.ts +40 -0
  87. package/dist/types/components/searchcraft-popover-form/searchcraft-popover-form.d.ts +1 -1
  88. package/dist/types/components/searchcraft-popover-list-item/searchcraft-popover-list-item.d.ts +1 -1
  89. package/dist/types/components/searchcraft-popover-list-view/searchcraft-popover-list-view.d.ts +1 -1
  90. package/dist/types/components/searchcraft-search-results/searchcraft-search-results.d.ts +2 -2
  91. package/dist/types/components.d.ts +86 -0
  92. package/dist/types/stencil-public-runtime.d.ts +84 -8
  93. package/dist/types/store/SearchcraftStore.types.d.ts +2 -0
  94. package/package.json +2 -2
  95. package/dist/components/p-02ad136b.js.map +0 -1
  96. package/dist/components/p-1adf78b9.js.map +0 -1
  97. package/dist/components/p-1d5c5536.js.map +0 -1
  98. package/dist/components/p-3286bbb3.js.map +0 -1
  99. package/dist/components/p-5365011f.js.map +0 -1
  100. package/dist/components/p-5cdc6210.js +0 -82
  101. package/dist/components/p-5cdc6210.js.map +0 -1
  102. package/dist/components/p-73db9122.js.map +0 -1
  103. package/dist/components/p-870f81fd.js.map +0 -1
  104. package/dist/components/p-87435aac.js.map +0 -1
  105. package/dist/components/p-919734fe.js +0 -31
  106. package/dist/components/p-919734fe.js.map +0 -1
  107. package/dist/components/p-acf23bab.js.map +0 -1
  108. package/dist/components/p-b13c7fbb.js.map +0 -1
  109. package/dist/components/p-b4b67072.js.map +0 -1
  110. package/dist/components/p-c9b65e8f.js.map +0 -1
  111. package/dist/components/p-d54771ef.js.map +0 -1
  112. package/dist/components/p-e2a10337.js +0 -1355
  113. package/dist/components/p-e2a10337.js.map +0 -1
  114. package/dist/components/p-e30203b1.js.map +0 -1
  115. package/dist/components/p-e8d97093.js.map +0 -1
  116. package/dist/components/p-f2585cdf.js.map +0 -1
  117. package/dist/components/p-fc8ccffa.js.map +0 -1
@@ -1,10 +1,12 @@
1
- import { p as proxyCustomElement, H, c as createEvent, h } from './p-5365011f.js';
1
+ import { p as proxyCustomElement, H, c as createEvent, h } from './p-DO5g2x-l.js';
2
2
 
3
3
  const SearchcraftSelect = /*@__PURE__*/ proxyCustomElement(class SearchcraftSelect extends H {
4
- constructor() {
4
+ constructor(registerHost) {
5
5
  super();
6
- this.__registerHost();
7
- this.selectChange = createEvent(this, "selectChange", 7);
6
+ if (registerHost !== false) {
7
+ this.__registerHost();
8
+ }
9
+ this.selectChange = createEvent(this, "selectChange");
8
10
  }
9
11
  /**
10
12
  * The caption displayed below the select input.
@@ -54,7 +56,7 @@ const SearchcraftSelect = /*@__PURE__*/ proxyCustomElement(class SearchcraftSele
54
56
  return (h("option", { key: value, value: value, selected: selected }, label));
55
57
  })), h("svg", { key: '0ec6892b529f2e70027aadea47208582a65a97b7', class: 'searchcraft-select-input-icon', width: '20', height: '20', viewBox: '0 0 20 20', fill: 'none', xmlns: 'http://www.w3.org/2000/svg' }, h("title", { key: 'bced6b62378491d1d1c629b602d7d033d912c761' }, "Select dropdown icon"), h("path", { key: '659f8ebf9129e2e7941da949d29688c41c1472bb', d: 'M5 7.5L10 12.5L15 7.5', stroke: 'currentColor', "stroke-width": '1.5', "stroke-linecap": 'round', "stroke-linejoin": 'round' }))), this.caption && (h("p", { key: '51217d926f68f79b6c3514f5fd769b56549fdce9', class: 'searchcraft-select-caption' }, this.caption))));
56
58
  }
57
- }, [0, "searchcraft-select", {
59
+ }, [768, "searchcraft-select", {
58
60
  "caption": [1],
59
61
  "disabled": [4],
60
62
  "inputId": [1, "input-id"],
@@ -81,5 +83,6 @@ function defineCustomElement() {
81
83
  }
82
84
 
83
85
  export { SearchcraftSelect as S, defineCustomElement as d };
86
+ //# sourceMappingURL=p-Dc7S4y3b.js.map
84
87
 
85
- //# sourceMappingURL=p-73db9122.js.map
88
+ //# sourceMappingURL=p-Dc7S4y3b.js.map
@@ -0,0 +1 @@
1
+ {"file":"p-Dc7S4y3b.js","mappings":"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","names":["__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/searchcraft-select/searchcraft-select.tsx"],"sourcesContent":["import {\n Component,\n Event,\n type EventEmitter,\n Prop,\n State,\n h,\n} from '@stencil/core';\n\nexport type SearchcraftSelectOption = {\n label: string;\n value: string | number;\n selected?: boolean;\n};\n\n/**\n * This web component is designed to allow users to select between a group of options.\n *\n * @js-example\n * ```html\n * <!-- index.html -->\n * <searchcraft-select\n * inputId=\"searchcraft-select\"\n * name=\"searchcraft-select\"\n * options=\"[{ label: 'label', value: 'value' }]\"\n * />\n * ```\n *\n * @internal\n */\n@Component({\n tag: 'searchcraft-select',\n shadow: false,\n})\nexport class SearchcraftSelect {\n /**\n * The caption displayed below the select input.\n */\n @Prop() caption?: string;\n /**\n * Whether the select input is disabled.\n */\n @Prop() disabled?: boolean = false;\n /**\n * The ID for the select input.\n */\n @Prop() inputId!: string;\n /**\n * The label of the select input.\n */\n @Prop() label?: string;\n /**\n * The ID for the label of the select input.\n */\n @Prop() labelId?: string;\n /**\n * The name of the select input.\n */\n @Prop() name!: string;\n /**\n * The options for the select input.\n */\n @Prop() options: SearchcraftSelectOption[] | string = [];\n /**\n * The event fired when the select is changed.\n */\n @Event() selectChange!: EventEmitter<string>;\n\n @State() searchResultsPerPage;\n\n @State() setSearchResultsPage: (page: number) => void = () => {};\n @State() setSearchResultsPerPage: (perPage: number) => void = () => {};\n\n private handleSelectChange = (event) => {\n this.selectChange.emit(event.target.value);\n };\n\n handleGoToPage(page: number) {\n this.setSearchResultsPage(page);\n }\n\n render() {\n return (\n <div class='searchcraft-select'>\n {this.label && (\n <label\n class='searchcraft-select-label'\n id={this.labelId || `${this.inputId}-label`}\n htmlFor={this.inputId}\n >\n {this.label}\n </label>\n )}\n <div class='searchcraft-select-input-wrapper'>\n <select\n aria-labelledby={\n this.label ? this.labelId || `${this.inputId}-label` : undefined\n }\n class='searchcraft-select-input'\n disabled={this.disabled}\n id={this.inputId}\n name={this.name}\n onChange={this.handleSelectChange}\n >\n {(typeof this.options === 'string'\n ? JSON.parse(this.options)\n : this.options\n ).map(({ label, value, selected }) => {\n return (\n <option key={value} value={value} selected={selected}>\n {label}\n </option>\n );\n })}\n </select>\n <svg\n class='searchcraft-select-input-icon'\n width='20'\n height='20'\n viewBox='0 0 20 20'\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n >\n <title>Select dropdown icon</title>\n <path\n d='M5 7.5L10 12.5L15 7.5'\n stroke='currentColor'\n stroke-width='1.5'\n stroke-linecap='round'\n stroke-linejoin='round'\n />\n </svg>\n </div>\n {this.caption && (\n <p class='searchcraft-select-caption'>{this.caption}</p>\n )}\n </div>\n );\n }\n}\n"],"version":3}
@@ -1,14 +1,16 @@
1
- import { p as proxyCustomElement, H, h } from './p-5365011f.js';
1
+ import { p as proxyCustomElement, H, h } from './p-DO5g2x-l.js';
2
2
 
3
3
  const SearchcraftErrorMessage = /*@__PURE__*/ proxyCustomElement(class SearchcraftErrorMessage extends H {
4
- constructor() {
4
+ constructor(registerHost) {
5
5
  super();
6
- this.__registerHost();
6
+ if (registerHost !== false) {
7
+ this.__registerHost();
8
+ }
7
9
  }
8
10
  render() {
9
11
  return (h("div", { key: 'd42f7abf8dfb2620622b8012d868d32f04b2f354', class: 'searchcraft-error-message' }, h("slot", { key: '75a7811576ea8afe80a7ae739f5cf2d411f976df' }, "Search term is required.")));
10
12
  }
11
- }, [4, "searchcraft-error-message"]);
13
+ }, [260, "searchcraft-error-message"]);
12
14
  function defineCustomElement() {
13
15
  if (typeof customElements === "undefined") {
14
16
  return;
@@ -24,5 +26,6 @@ function defineCustomElement() {
24
26
  }
25
27
 
26
28
  export { SearchcraftErrorMessage as S, defineCustomElement as d };
29
+ //# sourceMappingURL=p-DjPZkCLP.js.map
27
30
 
28
- //# sourceMappingURL=p-f2585cdf.js.map
31
+ //# sourceMappingURL=p-DjPZkCLP.js.map
@@ -0,0 +1 @@
1
+ {"file":"p-DjPZkCLP.js","mappings":";;MAkBa,uBAAuB,iBAAAA,kBAAA,CAAA,MAAA,uBAAA,SAAAC,CAAA,CAAA;;;;;;;IAClC,MAAM,GAAA;AACJ,QAAA,QACE,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAC,2BAA2B,EAAA,EACpC,CAAqC,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EAAA,0BAAA,CAAA,CACjC;;;;;;;;;;;;;;;;;;;","names":["__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/searchcraft-error-message/searchcraft-error-message.tsx"],"sourcesContent":["import { Component, h } from '@stencil/core';\n\n/**\n * This web component is designed to display a user-friendly error message when a search query fails, providing clear feedback to users and enhancing their experience when an issue arises during the search process.\n *\n * @js-example\n * ```html\n * <searchcraft-error-message>\n * No search results found for query\n * </searchcraft-error-message>\n * ```\n *\n * @internal\n */\n@Component({\n tag: 'searchcraft-error-message',\n shadow: false,\n})\nexport class SearchcraftErrorMessage {\n render() {\n return (\n <div class='searchcraft-error-message'>\n <slot>Search term is required.</slot>\n </div>\n );\n }\n}\n"],"version":3}
@@ -1,11 +1,13 @@
1
- import { p as proxyCustomElement, H, h } from './p-5365011f.js';
2
- import { h as html } from './p-b4b67072.js';
3
- import { r as registry } from './p-e30203b1.js';
1
+ import { p as proxyCustomElement, H, h } from './p-DO5g2x-l.js';
2
+ import { r as registry } from './p-D0j0UFpV.js';
3
+ import { h as html } from './p-_aHgRsRD.js';
4
4
 
5
5
  const SearchcraftSearchResult = /*@__PURE__*/ proxyCustomElement(class SearchcraftSearchResult extends H {
6
- constructor() {
6
+ constructor(registerHost) {
7
7
  super();
8
- this.__registerHost();
8
+ if (registerHost !== false) {
9
+ this.__registerHost();
10
+ }
9
11
  }
10
12
  item;
11
13
  /**
@@ -79,7 +81,7 @@ const SearchcraftSearchResult = /*@__PURE__*/ proxyCustomElement(class Searchcra
79
81
  }
80
82
  return (h("div", { class: 'searchcraft-search-result', innerHTML: this.templateHtml, onClick: this.handleResultContainerClick, onKeyDown: this.handleKeyDown }));
81
83
  }
82
- }, [0, "searchcraft-search-result", {
84
+ }, [768, "searchcraft-search-result", {
83
85
  "item": [16],
84
86
  "index": [2],
85
87
  "documentPosition": [2, "document-position"],
@@ -102,5 +104,6 @@ function defineCustomElement() {
102
104
  }
103
105
 
104
106
  export { SearchcraftSearchResult as S, defineCustomElement as d };
107
+ //# sourceMappingURL=p-DotXR-Gz.js.map
105
108
 
106
- //# sourceMappingURL=p-3286bbb3.js.map
109
+ //# sourceMappingURL=p-DotXR-Gz.js.map
@@ -0,0 +1 @@
1
+ {"file":"p-DotXR-Gz.js","mappings":"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","names":["__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/searchcraft-search-result/searchcraft-search-result.tsx"],"sourcesContent":["import { Component, Element, Prop, State, h } from '@stencil/core';\nimport type {\n SearchClientResponseItem,\n SearchResultTemplate,\n SearchResultTemplateData,\n} from '@types';\n\nimport type { SearchcraftCore } from '@classes';\nimport { registry } from '@classes/CoreInstanceRegistry';\nimport { html } from '@utils';\n\n/**\n * This web component is designed to display detailed information for a single search result. Once a query is submitted, the component formats and presents the result.\n *\n * @internal\n */\n@Component({\n tag: 'searchcraft-search-result',\n shadow: false,\n})\nexport class SearchcraftSearchResult {\n @Prop() item?: SearchClientResponseItem;\n /**\n * The index.\n */\n @Prop() index!: number;\n /**\n * The position in the document. Used with the \"document_clicked\" measure event.\n */\n @Prop() documentPosition = 0;\n /**\n * A callback function responsible for rendering a result.\n */\n @Prop() template?: SearchResultTemplate<SearchResultTemplateData>;\n /**\n * The id of the Searchcraft instance that this component should use.\n */\n @Prop() searchcraftId?: string;\n\n @State() templateHtml: string | undefined;\n @Element() hostElement?: HTMLElement;\n core?: SearchcraftCore;\n private cleanupCore?: () => void;\n\n onCoreAvailable(core: SearchcraftCore) {\n this.core = core;\n }\n\n connectedCallback() {\n this.cleanupCore = registry.useCoreInstance(\n this.searchcraftId,\n this.onCoreAvailable.bind(this),\n );\n\n if (this.item) {\n try {\n this.templateHtml = this.template?.(this.item.document, this.index, {\n html,\n source_index: this.item.source_index,\n });\n } catch (error) {\n console.error('Invalid search result template:', error);\n }\n }\n }\n\n disconnectedCallback() {\n this.cleanupCore?.();\n }\n\n handleResultContainerClick = (event: MouseEvent) => {\n if (!event.target) {\n return;\n }\n\n const target = event.target as HTMLElement;\n const link = target.closest('a');\n\n if (\n !link ||\n !this.hostElement?.contains(link) ||\n !this.core ||\n !this.core.measureClient\n ) {\n return;\n }\n\n const document_position = this.documentPosition;\n const search_term = this.core.store.getState().searchTerm;\n const number_of_documents =\n this.core.store.getState().searchClientResponseItems.length || 0;\n\n this.core.measureClient.sendMeasureEvent('document_clicked', {\n document_position,\n number_of_documents,\n search_term,\n });\n };\n\n handleKeyDown = () => {};\n\n render() {\n if (!this.item) {\n return;\n }\n\n if (typeof this.template === 'undefined') {\n return (\n <div\n class='searchcraft-search-result searchcraft-search-result-no-template'\n onClick={this.handleResultContainerClick}\n onKeyDown={this.handleKeyDown}\n >\n {Object.entries(this.item.document).map(([key, value]) => (\n <p key={key}>\n <strong>{key}</strong>: {value}\n </p>\n ))}\n </div>\n );\n }\n\n return (\n <div\n class='searchcraft-search-result'\n innerHTML={this.templateHtml}\n onClick={this.handleResultContainerClick}\n onKeyDown={this.handleKeyDown}\n />\n );\n }\n}\n"],"version":3}
@@ -1,12 +1,14 @@
1
- import { p as proxyCustomElement, H, h } from './p-5365011f.js';
2
- import { r as registry } from './p-e30203b1.js';
3
- import { d as defineCustomElement$2 } from './p-87435aac.js';
4
- import { d as defineCustomElement$1 } from './p-fc8ccffa.js';
1
+ import { p as proxyCustomElement, H, h } from './p-DO5g2x-l.js';
2
+ import { r as registry } from './p-D0j0UFpV.js';
3
+ import { d as defineCustomElement$2 } from './p-C1S92_N8.js';
4
+ import { d as defineCustomElement$1 } from './p-Cju73I1E.js';
5
5
 
6
6
  const SearchcraftPopoverListView = /*@__PURE__*/ proxyCustomElement(class SearchcraftPopoverListView extends H {
7
- constructor() {
7
+ constructor(registerHost) {
8
8
  super();
9
- this.__registerHost();
9
+ if (registerHost !== false) {
10
+ this.__registerHost();
11
+ }
10
12
  }
11
13
  /**
12
14
  * The id of the Searchcraft instance that this component should use.
@@ -112,7 +114,7 @@ const SearchcraftPopoverListView = /*@__PURE__*/ proxyCustomElement(class Search
112
114
  }
113
115
  return this.renderWithNoAds();
114
116
  }
115
- }, [0, "searchcraft-popover-list-view", {
117
+ }, [768, "searchcraft-popover-list-view", {
116
118
  "searchcraftId": [1, "searchcraft-id"],
117
119
  "popoverResultMappings": [16],
118
120
  "searchClientResponseItems": [16],
@@ -145,5 +147,6 @@ function defineCustomElement() {
145
147
  }
146
148
 
147
149
  export { SearchcraftPopoverListView as S, defineCustomElement as d };
150
+ //# sourceMappingURL=p-Dr9rPC9v.js.map
148
151
 
149
- //# sourceMappingURL=p-b13c7fbb.js.map
152
+ //# sourceMappingURL=p-Dr9rPC9v.js.map
@@ -0,0 +1 @@
1
+ {"file":"p-Dr9rPC9v.js","mappings":"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","names":["__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/searchcraft-popover-list-view/searchcraft-popover-list-view.tsx"],"sourcesContent":["import type { SearchcraftCore } from '@classes';\nimport { registry } from '@classes/CoreInstanceRegistry';\nimport { Component, type JSX, Prop, h } from '@stencil/core';\nimport type {\n AdClientResponseItem,\n PopoverResultMappings,\n SearchClientResponseItem,\n SearchcraftConfig,\n} from '@types';\n\n/**\n * This web component is designed to display a list of results within a popover interface.\n * It is consumed within the `searchcraft-popover-form` component.\n *\n * @js-example\n * ```html\n * <searchcraft-popover-list-view />\n * ```\n *\n * @internal\n */\n@Component({\n tag: 'searchcraft-popover-list-view',\n shadow: false,\n})\nexport class SearchcraftPopoverListView {\n /**\n * The id of the Searchcraft instance that this component should use.\n */\n @Prop() searchcraftId?: string;\n /**\n * The mappings that define how the data in the documents are mapped to the\n * list-view-item elements.\n */\n @Prop() popoverResultMappings: PopoverResultMappings | undefined;\n /**\n * The items to render in the list view.\n */\n @Prop() searchClientResponseItems: SearchClientResponseItem[] | undefined;\n @Prop() adClientResponseItems: AdClientResponseItem[] | undefined;\n @Prop() searchResultsPage!: number;\n @Prop() searchResultsPerPage!: number;\n\n private config?: SearchcraftConfig;\n private cleanupCore?: () => void;\n\n onCoreAvailable(core: SearchcraftCore) {\n this.config = core.config;\n }\n\n connectedCallback() {\n this.cleanupCore = registry.useCoreInstance(\n this.searchcraftId,\n this.onCoreAvailable.bind(this),\n );\n }\n\n disconnectedCallback() {\n this.cleanupCore?.();\n }\n\n renderWithADMAds() {\n return (\n <div class='searchcraft-popover-list-view'>\n {this.adClientResponseItems?.map((item) => (\n <searchcraft-ad\n searchcraft-id={this.searchcraftId}\n adClientResponseItem={item}\n adSource='adMarketplace'\n key={item.id}\n renderPosition='top'\n />\n ))}\n {this.searchClientResponseItems?.map((item, index) => (\n <searchcraft-popover-list-item\n searchcraft-id={this.searchcraftId}\n item={item}\n key={item.id}\n popoverResultMappings={this.popoverResultMappings}\n documentPosition={\n this.searchResultsPerPage * (this.searchResultsPage - 1) + index\n }\n />\n ))}\n </div>\n );\n }\n\n renderWithCustomAds() {\n const itemsToRender: JSX.Element[] = [];\n const interstitialInterval =\n this.config?.customAdConfig?.adInterstitialInterval || 0;\n const interstitialQuantity =\n this.config?.customAdConfig?.adInterstitialQuantity || 1;\n const adStartQuantity = this.config?.customAdConfig?.adStartQuantity || 0;\n const adEndQuantity = this.config?.customAdConfig?.adEndQuantity || 0;\n const searchItems = this.searchClientResponseItems || [];\n\n // Renders ads at beginning\n for (let n = 0; n < adStartQuantity; n++) {\n itemsToRender.push(\n <searchcraft-ad\n searchcraft-id={this.searchcraftId}\n adSource='Custom'\n key={`${n}-ad`}\n renderPosition='top'\n />,\n );\n }\n\n // Renders search results + interstitial ads\n searchItems.forEach((item, index) => {\n if (\n interstitialInterval &&\n index % interstitialInterval === 0 &&\n index + interstitialInterval < searchItems.length &&\n index >= interstitialInterval\n ) {\n for (let n = 0; n < interstitialQuantity; n++) {\n itemsToRender.push(\n <searchcraft-ad\n searchcraft-id={this.searchcraftId}\n adSource='Custom'\n key={`${item.id}-ad-${n}`}\n renderPosition='interstitial'\n />,\n );\n }\n }\n\n itemsToRender.push(\n <searchcraft-popover-list-item\n searchcraft-id={this.searchcraftId}\n item={item}\n key={item.id}\n popoverResultMappings={this.popoverResultMappings}\n documentPosition={\n this.searchResultsPerPage * (this.searchResultsPage - 1) + index\n }\n />,\n );\n });\n\n // Renders ads at end\n for (let n = 0; n < adEndQuantity; n++) {\n itemsToRender.push(\n <searchcraft-ad\n searchcraft-id={this.searchcraftId}\n adSource='Custom'\n key={`${n}-ad`}\n renderPosition='bottom'\n />,\n );\n }\n\n return <div class='searchcraft-popover-list-view'>{itemsToRender}</div>;\n }\n\n renderWithNativoAds() {\n const itemsToRender: JSX.Element[] = [];\n const interstitialStartIndex =\n this.config?.nativoConfig?.adInterstialStartIndex || 0;\n const interstitialInterval =\n this.config?.nativoConfig?.adInterstitialInterval || 0;\n const interstitialQuantity =\n this.config?.nativoConfig?.adInterstitialQuantity || 1;\n const adStartQuantity = this.config?.nativoConfig?.adStartQuantity || 0;\n const adEndQuantity = this.config?.nativoConfig?.adEndQuantity || 0;\n const searchItems = this.searchClientResponseItems || [];\n\n // Renders ads at beginning\n for (let n = 0; n < adStartQuantity; n++) {\n itemsToRender.push(\n <searchcraft-ad\n searchcraft-id={this.searchcraftId}\n adSource='Nativo'\n key={`${n}-ad`}\n renderPosition='top'\n />,\n );\n }\n\n // Renders search results + interstitial ads\n searchItems.forEach((item, index) => {\n if (\n interstitialInterval &&\n (index + interstitialStartIndex) % interstitialInterval === 0 &&\n index + interstitialInterval < searchItems.length &&\n index >= interstitialInterval\n ) {\n for (let n = 0; n < interstitialQuantity; n++) {\n itemsToRender.push(\n <searchcraft-ad\n searchcraft-id={this.searchcraftId}\n adSource='Nativo'\n key={`${item.id}-ad-${n}`}\n renderPosition='interstitial'\n />,\n );\n }\n }\n\n itemsToRender.push(\n <searchcraft-popover-list-item\n searchcraft-id={this.searchcraftId}\n item={item}\n key={item.id}\n popoverResultMappings={this.popoverResultMappings}\n documentPosition={\n this.searchResultsPerPage * (this.searchResultsPage - 1) + index\n }\n />,\n );\n });\n\n // Renders ads at end\n for (let n = 0; n < adEndQuantity; n++) {\n itemsToRender.push(\n <searchcraft-ad\n searchcraft-id={this.searchcraftId}\n adSource='Nativo'\n key={`${n}-ad`}\n renderPosition='bottom'\n />,\n );\n }\n\n return <div class='searchcraft-popover-list-view'>{itemsToRender}</div>;\n }\n\n renderWithNoAds() {\n return (\n <div class='searchcraft-popover-list-view'>\n {this.searchClientResponseItems?.map((item, index) => (\n <searchcraft-popover-list-item\n searchcraft-id={this.searchcraftId}\n item={item}\n key={item.id}\n popoverResultMappings={this.popoverResultMappings}\n documentPosition={\n this.searchResultsPerPage * (this.searchResultsPage - 1) + index\n }\n />\n ))}\n </div>\n );\n }\n\n render() {\n if (this.config?.customAdConfig) {\n return this.renderWithCustomAds();\n }\n if (this.config?.nativoConfig) {\n return this.renderWithNativoAds();\n }\n if (this.config?.admAdConfig) {\n return this.renderWithADMAds();\n }\n return this.renderWithNoAds();\n }\n}\n"],"version":3}
@@ -1,10 +1,12 @@
1
- import { p as proxyCustomElement, H, h } from './p-5365011f.js';
2
- import { c as classNames } from './p-5cdc6210.js';
1
+ import { p as proxyCustomElement, H, h } from './p-DO5g2x-l.js';
2
+ import { c as classNames } from './p-BfTCfPZ1.js';
3
3
 
4
4
  const SearchcraftInputLabel = /*@__PURE__*/ proxyCustomElement(class SearchcraftInputLabel extends H {
5
- constructor() {
5
+ constructor(registerHost) {
6
6
  super();
7
- this.__registerHost();
7
+ if (registerHost !== false) {
8
+ this.__registerHost();
9
+ }
8
10
  }
9
11
  /**
10
12
  * The classname applied to the label element.
@@ -12,9 +14,9 @@ const SearchcraftInputLabel = /*@__PURE__*/ proxyCustomElement(class Searchcraft
12
14
  inputLabelClassName = '';
13
15
  label = '';
14
16
  render() {
15
- return (h("label", { key: '3622c616d480e57b1dfaa2d61637a30b843cb968', class: classNames('searchcraft-input-label', this.inputLabelClassName), htmlFor: 'searchcraft-input-id' }, this.label));
17
+ return (h("label", { key: '1008f9beb320aaa94026604b283eb65a96023265', class: classNames('searchcraft-input-label', this.inputLabelClassName), htmlFor: 'searchcraft-input-id' }, this.label));
16
18
  }
17
- }, [0, "searchcraft-input-label", {
19
+ }, [768, "searchcraft-input-label", {
18
20
  "inputLabelClassName": [1, "input-label-class-name"],
19
21
  "label": [1]
20
22
  }]);
@@ -33,5 +35,6 @@ function defineCustomElement() {
33
35
  }
34
36
 
35
37
  export { SearchcraftInputLabel as S, defineCustomElement as d };
38
+ //# sourceMappingURL=p-L4PwHqQC.js.map
36
39
 
37
- //# sourceMappingURL=p-1adf78b9.js.map
40
+ //# sourceMappingURL=p-L4PwHqQC.js.map
@@ -0,0 +1 @@
1
+ {"file":"p-L4PwHqQC.js","mappings":";;;MAiBa,qBAAqB,iBAAAA,kBAAA,CAAA,MAAA,qBAAA,SAAAC,CAAA,CAAA;;;;;;;AAChC;;AAEG;IACK,mBAAmB,GAAI,EAAE;IACzB,KAAK,GAAG,EAAE;IAElB,MAAM,GAAA;AACJ,QAAA,QACE,8DACE,KAAK,EAAE,UAAU,CAAC,yBAAyB,EAAE,IAAI,CAAC,mBAAmB,CAAC,EACtE,OAAO,EAAC,sBAAsB,EAAA,EAE7B,IAAI,CAAC,KAAK,CACL;;;;;;;;;;;;;;;;;;;;;;","names":["__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/searchcraft-input-label/searchcraft-input-label.tsx"],"sourcesContent":["import { Component, Prop, h } from '@stencil/core';\nimport classNames from 'classnames';\n\n/**\n * This web component serves as the input label for the searchcraft-input-form component.\n *\n * @js-example\n * ```html\n * <searchcraft-input-label label=\"Search\" />\n * ```\n *\n * @internal\n */\n@Component({\n tag: 'searchcraft-input-label',\n shadow: false,\n})\nexport class SearchcraftInputLabel {\n /**\n * The classname applied to the label element.\n */\n @Prop() inputLabelClassName? = '';\n @Prop() label = '';\n\n render() {\n return (\n <label\n class={classNames('searchcraft-input-label', this.inputLabelClassName)}\n htmlFor='searchcraft-input-id'\n >\n {this.label}\n </label>\n );\n }\n}\n"],"version":3}
@@ -1,4 +1,4 @@
1
- import { D as DOMPurify } from './p-e2a10337.js';
1
+ import { p as purify } from './p-BlYgaV0q.js';
2
2
 
3
3
  /**
4
4
  * This allows you to parse a template string with a function.
@@ -7,11 +7,12 @@ const html = (strings, ...values) => {
7
7
  let result = strings[0];
8
8
  for (let i = 0; i < values.length; i++) {
9
9
  result +=
10
- DOMPurify.sanitize(values[i] ? String(values[i]) : '') + strings[i + 1];
10
+ purify.sanitize(values[i] ? String(values[i]) : '') + strings[i + 1];
11
11
  }
12
12
  return result || '';
13
13
  };
14
14
 
15
15
  export { html as h };
16
+ //# sourceMappingURL=p-_aHgRsRD.js.map
16
17
 
17
- //# sourceMappingURL=p-b4b67072.js.map
18
+ //# sourceMappingURL=p-_aHgRsRD.js.map
@@ -0,0 +1 @@
1
+ {"file":"p-_aHgRsRD.js","mappings":";;AAGA;;AAEG;AACU,MAAA,IAAI,GAAiB,CAAC,OAAO,EAAE,GAAG,MAAM,KAAI;AACvD,IAAA,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;AAEvB,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACtC,MAAM;AACJ,YAAAA,MAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;;IAG3E,OAAO,MAAM,IAAI,EAAE;AACrB;;;;","names":["DOMPurify"],"sources":["src/utils/html.ts"],"sourcesContent":["import DOMPurify from 'dompurify';\n\nimport type { TemplateHtml } from '@types';\n/**\n * This allows you to parse a template string with a function.\n */\nexport const html: TemplateHtml = (strings, ...values) => {\n let result = strings[0];\n\n for (let i = 0; i < values.length; i++) {\n result +=\n DOMPurify.sanitize(values[i] ? String(values[i]) : '') + strings[i + 1];\n }\n\n return result || '';\n};\n"],"version":3}
@@ -178,5 +178,6 @@ function getFormattedDateString(granularity, date) {
178
178
  }
179
179
 
180
180
  export { getDifferenceInUnits as a, getStartOf as b, getFormattedDateString as c, formatNumberWithCommas as f, getDocumentValueFromSearchResultMapping as g };
181
+ //# sourceMappingURL=p-i8oXh7db.js.map
181
182
 
182
- //# sourceMappingURL=p-d54771ef.js.map
183
+ //# sourceMappingURL=p-i8oXh7db.js.map
@@ -0,0 +1 @@
1
+ {"file":"p-i8oXh7db.js","mappings":"AAEA;;;;;;;AAOG;AACa,SAAA,uCAAuC,CACrD,QAA6C,EAC7C,OAAwC,EAAA;AAExC,IAAA,IAAI,QAAQ,IAAI,OAAO,EAAE;QACvB,OAAO,OAAO,CAAC;AACZ,aAAA,GAAG,CAAC,CAAC,gBAAgB,KAAI;YACxB,IAAI,UAAU,GAAG,QAAQ,CAAC,gBAAgB,CAAC,SAAS,CAAC;YAErD,IAAI,UAAU,EAAE;AACd,gBAAA,QAAQ,gBAAgB,CAAC,QAAQ;oBAC/B,KAAK,MAAM,EAAE;AACX,wBAAA,UAAU,GAAG,kBAAkB,CAC7B,UAA2B,EAC3B,gBAAgB,CAAC,gBAAgB,EACjC,gBAAgB,CAAC,iBAAiB,CACnC;wBACD;;oBAEF,KAAK,QAAQ,EAAE;wBACb,UAAU,GAAG,IAAI,CAAC,YAAY,CAC5B,gBAAgB,CAAC,kBAAkB,EACnC,gBAAgB,CAAC,mBAAmB,CACrC,CAAC,MAAM,CACL,UAAqB,IAAI,gBAAgB,CAAC,WAAW,IAAI,CAAC,CAAC,CAC7D;wBACD;;;;AAON,YAAA,OAAO,UAAU;AACnB,SAAC;aACA,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK;AACzB,aAAA,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,GAAG,CAAC;;AAErC;AA4BA;;;;;AAKG;AACG,SAAU,sBAAsB,CAAC,MAAM,EAAA;IAC3C,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,uBAAuB,EAAE,GAAG,CAAC;AAChE;AAEA;;;;;;;;AAQG;AACG,SAAU,kBAAkB,CAChC,SAAwB,EACxB,MAAM,GAAG,OAAO,EAChB,OAAsC,GAAA;AACpC,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,KAAK,EAAE,MAAM;AACb,IAAA,IAAI,EAAE,SAAS;AAChB,CAAA,EAAA;AAED,IAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC;AAChC,IAAA,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE;IACtB,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE;AACjD,IAAA,MAAM,gBAAgB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAElD,IAAA,IAAI,UAAU,GAAG,gBAAgB,EAAE;QACjC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;QACjD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC;QAChD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC;QAC3C,MAAM,kBAAkB,GAAG,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC;AAEvE,QAAA,IAAI,QAAQ,IAAI,CAAC,EAAE;YACjB,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC;;AAGpD,QAAA,IAAI,SAAS,IAAI,CAAC,EAAE;YAClB,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC;;AAGtD,QAAA,IAAI,WAAW,IAAI,CAAC,EAAE;YACpB,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,QAAQ,CAAC;;QAG1D,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC;;AAG/C,IAAA,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;AAC9D;AAEA;;;;;;;AAOG;AACG,SAAU,UAAU,CACxB,SAAiB,EACjB,IAAuC,EACvC,MAAM,GAAG,CAAC,EAAA;AAEV,IAAA,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC;IAE7B,QAAQ,IAAI;AACV,QAAA,KAAK,MAAM;YACT,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE;AACvE,QAAA,KAAK,OAAO;AACV,YAAA,OAAO,IAAI,IAAI,CACb,CAAC,CAAC,WAAW,EAAE,EACf,CAAC,CAAC,QAAQ,EAAE,GAAG,MAAM,EACrB,CAAC,EACD,CAAC,EACD,CAAC,EACD,CAAC,EACD,CAAC,CACF,CAAC,OAAO,EAAE;AACb,QAAA,KAAK,KAAK;AACR,YAAA,OAAO,IAAI,IAAI,CACb,CAAC,CAAC,WAAW,EAAE,EACf,CAAC,CAAC,QAAQ,EAAE,EACZ,CAAC,CAAC,OAAO,EAAE,GAAG,MAAM,EACpB,CAAC,EACD,CAAC,EACD,CAAC,EACD,CAAC,CACF,CAAC,OAAO,EAAE;AACb,QAAA,KAAK,MAAM;AACT,YAAA,OAAO,IAAI,IAAI,CACb,CAAC,CAAC,WAAW,EAAE,EACf,CAAC,CAAC,QAAQ,EAAE,EACZ,CAAC,CAAC,OAAO,EAAE,EACX,CAAC,CAAC,QAAQ,EAAE,GAAG,MAAM,EACrB,CAAC,EACD,CAAC,EACD,CAAC,CACF,CAAC,OAAO,EAAE;AACb,QAAA;AACE,YAAA,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,CAAA,CAAE,CAAC;;AAElD;AAEA;;;;;;;AAOG;SACa,oBAAoB,CAClC,IAAuC,EACvC,SAAiB,EACjB,OAAe,EAAA;AAEf,IAAA,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC;AACjC,IAAA,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC;IAE7B,QAAQ,IAAI;AACV,QAAA,KAAK,MAAM;AACT,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;AAE1D,QAAA,KAAK,OAAO;YACV,OAAO,IAAI,CAAC,GAAG,CACb,GAAG,CAAC,WAAW,EAAE,GAAG,EAAE;gBACpB,GAAG,CAAC,QAAQ,EAAE;AACd,iBAAC,KAAK,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,CAChD;AAEH,QAAA,KAAK,KAAK;AACR,YAAA,OAAO,IAAI,CAAC,KAAK,CACf,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,IAAI,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAClE;AAEH,QAAA,KAAK,MAAM;YACT,OAAO,IAAI,CAAC,KAAK,CACf,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,IAAI,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC,CAC7D;AAEH,QAAA;AACE,YAAA,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,CAAA,CAAE,CAAC;;AAElD;AAEA;;AAEG;AACH,MAAM,UAAU,GAAG,CAAC,CAAS,KAAY;AACvC,IAAA,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;QAAE,OAAO,CAAA,EAAG,CAAC,CAAA,EAAA,CAAI;AACvC,IAAA,QAAQ,CAAC,GAAG,EAAE;AACZ,QAAA,KAAK,CAAC;YACJ,OAAO,CAAA,EAAG,CAAC,CAAA,EAAA,CAAI;AACjB,QAAA,KAAK,CAAC;YACJ,OAAO,CAAA,EAAG,CAAC,CAAA,EAAA,CAAI;AACjB,QAAA,KAAK,CAAC;YACJ,OAAO,CAAA,EAAG,CAAC,CAAA,EAAA,CAAI;AACjB,QAAA;YACE,OAAO,CAAA,EAAG,CAAC,CAAA,EAAA,CAAI;;AAErB,CAAC;AAED;;;;;;;;;;;;;AAaG;AACa,SAAA,sBAAsB,CACpC,WAA8C,EAC9C,IAAU,EAAA;AAEV,IAAA,MAAM,cAAc,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAE3E,QAAQ,WAAW;AACjB,QAAA,KAAK,MAAM;AACT,YAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;AAEtC,QAAA,KAAK,OAAO;AACV,YAAA,OAAO,CAAG,EAAA,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AAE/D,QAAA,KAAK,KAAK;YACR,OAAO,CAAA,EAAG,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA,EAAA,EAAK,IAAI,CAAC,WAAW,EAAE,CAAA,CAAE;QAE9F,KAAK,MAAM,EAAE;YACX,MAAM,aAAa,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;AACrD,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,MAAM,EAAE,IAAI;AACb,aAAA,CAAC;YACF,OAAO,CAAA,EAAG,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAI,CAAA,EAAA,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA,EAAA,EAAK,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA,CAAE;;AAEtG,QAAA;AACE,YAAA,MAAM,IAAI,KAAK,CAAC,4BAA4B,WAAW,CAAA,CAAE,CAAC;;AAEhE;;;;","names":[],"sources":["src/utils/units.ts"],"sourcesContent":["import type { SearchResultMapping } from '@types';\n\n/**\n * Given a document and a SearchResultMapping, return a mapped value from the document.\n * Applies formatting based on the values specified in the `SearchResultFieldName` values.\n *\n * @param document\n * @param {SearchResultMapping} mapping\n * @returns {string | undefined}\n */\nexport function getDocumentValueFromSearchResultMapping(\n document: Record<string, unknown> | undefined,\n mapping: SearchResultMapping | undefined,\n): string | undefined {\n if (document && mapping) {\n return mapping.fieldNames\n .map((fieldNameDetails) => {\n let valueFound = document[fieldNameDetails.fieldName];\n\n if (valueFound) {\n switch (fieldNameDetails.dataType) {\n case 'date': {\n valueFound = formatRelativeDate(\n valueFound as string | Date,\n fieldNameDetails.dateFormatLocale,\n fieldNameDetails.dateFormatOptions,\n );\n break;\n }\n case 'number': {\n valueFound = Intl.NumberFormat(\n fieldNameDetails.numberFormatLocale,\n fieldNameDetails.numberFormatOptions,\n ).format(\n (valueFound as number) * (fieldNameDetails.numberScale || 1),\n );\n break;\n }\n default:\n break;\n }\n }\n\n return valueFound;\n })\n .filter((value) => !!value)\n .join(mapping.delimiter || ' ');\n }\n}\n\n/**\n * Convert different units of time to milliseconds.\n *\n * @param unit - The unit of time\n * @returns {number}\n */\nexport function getMillis(unit: 'year' | 'month' | 'day' | 'hour'): number {\n const millisInHour = 60 * 60 * 1000;\n const millisInDay = 24 * millisInHour;\n const millisInMonth = 30 * millisInDay;\n const millisInYear = 365 * millisInDay;\n\n switch (unit) {\n case 'hour':\n return millisInHour;\n case 'day':\n return millisInDay;\n case 'month':\n return millisInMonth;\n case 'year':\n return millisInYear;\n default:\n return 3600000;\n }\n}\n\n/**\n * Format a number with commas as thousands separators.\n *\n * @param number - The number to be formatted.\n * @returns {string} - The formatted number as a string.\n */\nexport function formatNumberWithCommas(number) {\n return number.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n}\n\n/**\n * Format a date or date string. The string is formatted relative to today's date\n * (e.g. 2 days ago) until the date range is greater than a month.\n *\n * @param dateInput - The date to be formatted.\n * @param locale - The language used for formatting the date.\n * @param options - The non-default options used for formatting the date.\n * @returns {string} - The formatted date as a string.\n */\nexport function formatRelativeDate(\n dateInput: string | Date,\n locale = 'en-US',\n options: Intl.DateTimeFormatOptions = {\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n },\n): string {\n const date = new Date(dateInput);\n const now = new Date();\n const diffMillis = now.getTime() - date.getTime();\n const oneMonthInMillis = 30 * 24 * 60 * 60 * 1000; // Approx. 1 month in ms\n\n if (diffMillis < oneMonthInMillis) {\n const diffSeconds = Math.trunc(diffMillis / 1000);\n const diffMinutes = Math.trunc(diffSeconds / 60);\n const diffHours = Math.trunc(diffMinutes / 60);\n const diffDays = Math.trunc(diffHours / 24);\n const relativeTimeFormat = new Intl.RelativeTimeFormat(locale, options);\n\n if (diffDays >= 1) {\n return relativeTimeFormat.format(-diffDays, 'day');\n }\n\n if (diffHours >= 1) {\n return relativeTimeFormat.format(-diffHours, 'hour');\n }\n\n if (diffMinutes >= 1) {\n return relativeTimeFormat.format(-diffMinutes, 'minute');\n }\n\n return relativeTimeFormat.format(0, 'second');\n }\n\n return new Intl.DateTimeFormat(locale, options).format(date);\n}\n\n/**\n * Given a date, returns the timestamp (in ms) for the start of the specified unit.\n *\n * @param unit - The unit to calculate the start of ('year' | 'month' | 'day' | 'hour').\n * @param timestamp - The date to evaluate.\n * @param offset - The number of units to offset by.\n * @returns The timestamp (in ms) for the start of the specified unit.\n */\nexport function getStartOf(\n timestamp: number,\n unit: 'year' | 'month' | 'day' | 'hour',\n offset = 0,\n): number {\n const d = new Date(timestamp);\n\n switch (unit) {\n case 'year':\n return new Date(d.getFullYear() + offset, 0, 1, 0, 0, 0, 0).getTime();\n case 'month':\n return new Date(\n d.getFullYear(),\n d.getMonth() + offset,\n 1,\n 0,\n 0,\n 0,\n 0,\n ).getTime();\n case 'day':\n return new Date(\n d.getFullYear(),\n d.getMonth(),\n d.getDate() + offset,\n 0,\n 0,\n 0,\n 0,\n ).getTime();\n case 'hour':\n return new Date(\n d.getFullYear(),\n d.getMonth(),\n d.getDate(),\n d.getHours() + offset,\n 0,\n 0,\n 0,\n ).getTime();\n default:\n throw new Error(`Unsupported unit: ${unit}`);\n }\n}\n\n/**\n * Given a start and end date, returns the difference in the number of the specified units.\n *\n * @param units - The unit to measure ('year' | 'month' | 'day' | 'hour').\n * @param startDate - The start date.\n * @param endDate - The end date.\n * @returns The difference in the given unit.\n */\nexport function getDifferenceInUnits(\n unit: 'year' | 'month' | 'day' | 'hour',\n startTime: number,\n endTime: number,\n): number {\n const start = new Date(startTime);\n const end = new Date(endTime);\n\n switch (unit) {\n case 'year':\n return Math.abs(end.getFullYear() - start.getFullYear());\n\n case 'month':\n return Math.abs(\n end.getFullYear() * 12 +\n end.getMonth() -\n (start.getFullYear() * 12 + start.getMonth()),\n );\n\n case 'day':\n return Math.floor(\n Math.abs(end.getTime() - start.getTime()) / (1000 * 60 * 60 * 24),\n );\n\n case 'hour':\n return Math.floor(\n Math.abs(end.getTime() - start.getTime()) / (1000 * 60 * 60),\n );\n\n default:\n throw new Error(`Unsupported unit: ${unit}`);\n }\n}\n\n/**\n * Returns the ordinal representation of a day of the month.\n */\nconst getOrdinal = (n: number): string => {\n if (n >= 11 && n <= 13) return `${n}th`;\n switch (n % 10) {\n case 1:\n return `${n}st`;\n case 2:\n return `${n}nd`;\n case 3:\n return `${n}rd`;\n default:\n return `${n}th`;\n }\n};\n\n/**\n * Given a granularity level, returns a formatted, human-readable, date string.\n *\n * @param granularity - The granularity level to display. The granularity level dictates how the date is formatted.\n * @param date - The date to format.\n *\n * @returns A formatted string representing the date at the specified granularity.\n *\n * @example\n * getFormattedDateString('year', new Date('2023-01-01')) // \"2023\"\n * getFormattedDateString('month', new Date('2023-01-01')) // \"Jan 2023\"\n * getFormattedDateString('day', new Date('2023-01-31')) // \"Jan 31st, 2023\"\n * getFormattedDateString('hour', new Date('2023-01-31T12:00:00')) // \"Jan 31st, 12:00 PM\"\n */\nexport function getFormattedDateString(\n granularity: 'year' | 'month' | 'day' | 'hour',\n date: Date,\n): string {\n const monthFormatter = new Intl.DateTimeFormat('en-US', { month: 'short' });\n\n switch (granularity) {\n case 'year':\n return date.getFullYear().toString();\n\n case 'month':\n return `${monthFormatter.format(date)} ${date.getFullYear()}`;\n\n case 'day':\n return `${monthFormatter.format(date)} ${getOrdinal(date.getDate())}, ${date.getFullYear()}`;\n\n case 'hour': {\n const timeFormatter = new Intl.DateTimeFormat('en-US', {\n hour: 'numeric',\n minute: '2-digit',\n hour12: true,\n });\n return `${monthFormatter.format(date)} ${getOrdinal(date.getDate())}, ${timeFormatter.format(date)}`;\n }\n default:\n throw new Error(`Unsupported granularity: ${granularity}`);\n }\n}\n"],"version":3}
@@ -1,8 +1,9 @@
1
- import { S as SearchcraftPopoverListItemAd, d as defineCustomElement$1 } from './p-87435aac.js';
1
+ import { S as SearchcraftPopoverListItemAd, d as defineCustomElement$1 } from './p-C1S92_N8.js';
2
2
 
3
3
  const SearchcraftAd = SearchcraftPopoverListItemAd;
4
4
  const defineCustomElement = defineCustomElement$1;
5
5
 
6
6
  export { SearchcraftAd, defineCustomElement };
7
+ //# sourceMappingURL=searchcraft-ad.js.map
7
8
 
8
9
  //# sourceMappingURL=searchcraft-ad.js.map
@@ -1,8 +1,9 @@
1
- import { S as SearchcraftButton$1, d as defineCustomElement$1 } from './p-acf23bab.js';
1
+ import { S as SearchcraftButton$1, d as defineCustomElement$1 } from './p-C681KruS.js';
2
2
 
3
3
  const SearchcraftButton = SearchcraftButton$1;
4
4
  const defineCustomElement = defineCustomElement$1;
5
5
 
6
6
  export { SearchcraftButton, defineCustomElement };
7
+ //# sourceMappingURL=searchcraft-button.js.map
7
8
 
8
9
  //# sourceMappingURL=searchcraft-button.js.map
@@ -1,8 +1,9 @@
1
- import { S as SearchcraftErrorMessage$1, d as defineCustomElement$1 } from './p-f2585cdf.js';
1
+ import { S as SearchcraftErrorMessage$1, d as defineCustomElement$1 } from './p-DjPZkCLP.js';
2
2
 
3
3
  const SearchcraftErrorMessage = SearchcraftErrorMessage$1;
4
4
  const defineCustomElement = defineCustomElement$1;
5
5
 
6
6
  export { SearchcraftErrorMessage, defineCustomElement };
7
+ //# sourceMappingURL=searchcraft-error-message.js.map
7
8
 
8
9
  //# sourceMappingURL=searchcraft-error-message.js.map
@@ -1,8 +1,9 @@
1
- import { S as SearchcraftFacetList$1, d as defineCustomElement$1 } from './p-e8d97093.js';
1
+ import { S as SearchcraftFacetList$1, d as defineCustomElement$1 } from './p-BV4HUriZ.js';
2
2
 
3
3
  const SearchcraftFacetList = SearchcraftFacetList$1;
4
4
  const defineCustomElement = defineCustomElement$1;
5
5
 
6
6
  export { SearchcraftFacetList, defineCustomElement };
7
+ //# sourceMappingURL=searchcraft-facet-list.js.map
7
8
 
8
9
  //# sourceMappingURL=searchcraft-facet-list.js.map
@@ -1,13 +1,15 @@
1
- import { p as proxyCustomElement, H, h } from './p-5365011f.js';
2
- import { r as registry } from './p-e30203b1.js';
3
- import { d as defineCustomElement$4 } from './p-e8d97093.js';
4
- import { d as defineCustomElement$3 } from './p-c9b65e8f.js';
5
- import { d as defineCustomElement$2 } from './p-02ad136b.js';
1
+ import { p as proxyCustomElement, H, h } from './p-DO5g2x-l.js';
2
+ import { r as registry } from './p-D0j0UFpV.js';
3
+ import { d as defineCustomElement$4 } from './p-BV4HUriZ.js';
4
+ import { d as defineCustomElement$3 } from './p-BbSxfaD7.js';
5
+ import { d as defineCustomElement$2 } from './p-D5p2scT9.js';
6
6
 
7
7
  const SearchcraftFilterPanel$1 = /*@__PURE__*/ proxyCustomElement(class SearchcraftFilterPanel extends H {
8
- constructor() {
8
+ constructor(registerHost) {
9
9
  super();
10
- this.__registerHost();
10
+ if (registerHost !== false) {
11
+ this.__registerHost();
12
+ }
11
13
  }
12
14
  /**
13
15
  * The id of the Searchcraft instance that this component should use.
@@ -17,23 +19,171 @@ const SearchcraftFilterPanel$1 = /*@__PURE__*/ proxyCustomElement(class Searchcr
17
19
  * The items to filter.
18
20
  */
19
21
  items = [];
22
+ /**
23
+ * The breakpoint (in pixels) below which the filter panel will be hidden.
24
+ * Defaults to 768px (--sc-breakpoint-md).
25
+ */
26
+ responsiveBreakpoint = 768;
27
+ /**
28
+ * Controls whether the filter panel automatically hides/shows based on window size.
29
+ * - 'auto': Automatically hide/show based on window width
30
+ * - 'manual': User controls visibility manually
31
+ */
32
+ responsiveBehavior = 'auto';
20
33
  lastSearchTerm;
34
+ isFilterPanelVisible = true;
35
+ get hostElement() { return this; }
21
36
  core;
22
37
  unsubscribe;
23
38
  cleanupCore;
39
+ resizeObserver;
40
+ manuallyToggled = false; // Track if user manually toggled visibility
41
+ toggleClickHandler;
24
42
  onCoreAvailable(core) {
25
43
  this.core = core;
26
44
  this.setInitialDateRanges();
27
- this.unsubscribe = core.store.subscribe((state) => {
45
+ // Initialize visibility based on current window size if in auto mode
46
+ if (this.responsiveBehavior === 'auto') {
47
+ this.updateVisibilityBasedOnWindowSize();
48
+ }
49
+ this.unsubscribe = core.store.subscribe((state, prevState) => {
28
50
  this.lastSearchTerm = state.searchTerm || '';
51
+ // Check if visibility was manually changed (not by auto-resize)
52
+ if (prevState.isFilterPanelVisible !== state.isFilterPanelVisible) {
53
+ const windowWidth = window.innerWidth;
54
+ const autoVisibility = windowWidth >= (this.responsiveBreakpoint || 768);
55
+ // If the new state differs from what auto mode would set, it was manual
56
+ if (state.isFilterPanelVisible !== autoVisibility) {
57
+ this.manuallyToggled = true;
58
+ }
59
+ // Update toggle element attributes when visibility changes
60
+ this.updateToggleElementAttributes(state.isFilterPanelVisible);
61
+ }
62
+ this.isFilterPanelVisible = state.isFilterPanelVisible;
29
63
  });
30
64
  }
31
65
  componentDidLoad() {
32
66
  this.cleanupCore = registry.useCoreInstance(this.searchcraftId, this.onCoreAvailable.bind(this));
67
+ // Set up resize observer if in auto mode
68
+ if (this.responsiveBehavior === 'auto' && typeof window !== 'undefined') {
69
+ this.setupResizeObserver();
70
+ }
71
+ // Set up click handlers for elements with data-toggle-filter-panel attribute
72
+ this.setupToggleClickHandlers();
73
+ // Set initial toggle element state immediately
74
+ // Use setTimeout to ensure this runs after the store is initialized
75
+ setTimeout(() => {
76
+ if (this.core) {
77
+ const currentVisibility = this.core.store.getState().isFilterPanelVisible;
78
+ this.updateToggleElementAttributes(currentVisibility);
79
+ }
80
+ }, 0);
33
81
  }
34
82
  disconnectedCallback() {
35
83
  this.unsubscribe?.();
36
84
  this.cleanupCore?.();
85
+ this.resizeObserver?.disconnect();
86
+ // Clean up window resize listener if it was used as fallback
87
+ if (typeof window !== 'undefined') {
88
+ window.removeEventListener('resize', this.handleWindowResize);
89
+ }
90
+ // Clean up toggle click handlers
91
+ this.cleanupToggleClickHandlers();
92
+ }
93
+ /**
94
+ * Sets up a ResizeObserver to watch for window size changes
95
+ */
96
+ setupResizeObserver() {
97
+ if (typeof ResizeObserver === 'undefined') {
98
+ // Fallback to window resize event if ResizeObserver is not available
99
+ window.addEventListener('resize', this.handleWindowResize);
100
+ return;
101
+ }
102
+ this.resizeObserver = new ResizeObserver(() => {
103
+ this.handleWindowResize();
104
+ });
105
+ // Observe the document body for size changes
106
+ this.resizeObserver.observe(document.body);
107
+ }
108
+ /**
109
+ * Handles window resize events
110
+ */
111
+ handleWindowResize = () => {
112
+ if (this.responsiveBehavior === 'auto') {
113
+ this.updateVisibilityBasedOnWindowSize();
114
+ }
115
+ };
116
+ /**
117
+ * Updates filter panel visibility based on current window width
118
+ */
119
+ updateVisibilityBasedOnWindowSize() {
120
+ if (typeof window === 'undefined')
121
+ return;
122
+ // Don't auto-hide/show if user manually toggled it
123
+ if (this.manuallyToggled)
124
+ return;
125
+ const windowWidth = window.innerWidth;
126
+ const shouldBeVisible = windowWidth >= (this.responsiveBreakpoint || 768);
127
+ if (this.core && this.isFilterPanelVisible !== shouldBeVisible) {
128
+ this.core.store.getState().setFilterPanelVisibility(shouldBeVisible);
129
+ }
130
+ }
131
+ /**
132
+ * Sets up click handlers for elements with data-toggle-filter-panel attribute
133
+ */
134
+ setupToggleClickHandlers() {
135
+ if (typeof document === 'undefined')
136
+ return;
137
+ this.toggleClickHandler = (event) => {
138
+ // Only allow toggle on mobile (below breakpoint)
139
+ const windowWidth = window.innerWidth;
140
+ if (windowWidth >= (this.responsiveBreakpoint || 768)) {
141
+ return; // Don't toggle on desktop
142
+ }
143
+ event.preventDefault();
144
+ if (this.core) {
145
+ const currentVisibility = this.core.store.getState().isFilterPanelVisible;
146
+ this.core.store.getState().setFilterPanelVisibility(!currentVisibility);
147
+ }
148
+ };
149
+ // Find all elements with the data attribute
150
+ const toggleElements = document.querySelectorAll('[data-toggle-filter-panel]');
151
+ toggleElements.forEach((element) => {
152
+ if (this.toggleClickHandler) {
153
+ element.addEventListener('click', this.toggleClickHandler);
154
+ }
155
+ });
156
+ }
157
+ /**
158
+ * Updates data attributes on toggle elements to reflect panel visibility state
159
+ */
160
+ updateToggleElementAttributes(isVisible) {
161
+ if (typeof document === 'undefined')
162
+ return;
163
+ const toggleElements = document.querySelectorAll('[data-toggle-filter-panel]');
164
+ toggleElements.forEach((element) => {
165
+ if (isVisible) {
166
+ element.removeAttribute('data-filter-panel-collapsed');
167
+ element.setAttribute('data-filter-panel-expanded', '');
168
+ }
169
+ else {
170
+ element.removeAttribute('data-filter-panel-expanded');
171
+ element.setAttribute('data-filter-panel-collapsed', '');
172
+ }
173
+ });
174
+ }
175
+ /**
176
+ * Cleans up click handlers for toggle elements
177
+ */
178
+ cleanupToggleClickHandlers() {
179
+ if (typeof document === 'undefined' || !this.toggleClickHandler)
180
+ return;
181
+ const toggleElements = document.querySelectorAll('[data-toggle-filter-panel]');
182
+ toggleElements.forEach((element) => {
183
+ if (this.toggleClickHandler) {
184
+ element.removeEventListener('click', this.toggleClickHandler);
185
+ }
186
+ });
37
187
  }
38
188
  /**
39
189
  * Sets the initial min/max date range values for search queries based on the filter items provided.
@@ -102,7 +252,11 @@ const SearchcraftFilterPanel$1 = /*@__PURE__*/ proxyCustomElement(class Searchcr
102
252
  * Iterate through `items` and render them based on `type`
103
253
  */
104
254
  render() {
105
- return (h("div", { key: 'ee8974e38b296a1ba27111bc2a4244d8915f5839', class: 'searchcraft-filter-panel' }, this.items.map((filterItem) => {
255
+ // Don't render if not visible
256
+ if (!this.isFilterPanelVisible) {
257
+ return null;
258
+ }
259
+ return (h("div", { class: 'searchcraft-filter-panel' }, this.items.map((filterItem) => {
106
260
  switch (filterItem.type) {
107
261
  case 'dateRange': {
108
262
  const item = filterItem;
@@ -141,10 +295,13 @@ const SearchcraftFilterPanel$1 = /*@__PURE__*/ proxyCustomElement(class Searchcr
141
295
  }
142
296
  })));
143
297
  }
144
- }, [0, "searchcraft-filter-panel", {
298
+ }, [768, "searchcraft-filter-panel", {
145
299
  "searchcraftId": [1, "searchcraft-id"],
146
300
  "items": [16],
147
- "lastSearchTerm": [32]
301
+ "responsiveBreakpoint": [2, "responsive-breakpoint"],
302
+ "responsiveBehavior": [1, "responsive-behavior"],
303
+ "lastSearchTerm": [32],
304
+ "isFilterPanelVisible": [32]
148
305
  }]);
149
306
  function defineCustomElement$1() {
150
307
  if (typeof customElements === "undefined") {
@@ -179,5 +336,6 @@ const SearchcraftFilterPanel = SearchcraftFilterPanel$1;
179
336
  const defineCustomElement = defineCustomElement$1;
180
337
 
181
338
  export { SearchcraftFilterPanel, defineCustomElement };
339
+ //# sourceMappingURL=searchcraft-filter-panel.js.map
182
340
 
183
341
  //# sourceMappingURL=searchcraft-filter-panel.js.map