@searchcraft/javascript-sdk 0.15.0 → 0.16.0

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 (75) hide show
  1. package/dist/components/defineCustomElements.js +24 -24
  2. package/dist/components/index.d.ts +130 -47
  3. package/dist/components/index.js +29 -29
  4. package/dist/components/safeUrl.js +378 -0
  5. package/dist/components/safeUrl.js.map +1 -0
  6. package/dist/components/searchcraft-ad.js +1 -1
  7. package/dist/components/searchcraft-ad2.js +6 -5
  8. package/dist/components/searchcraft-ad2.js.map +1 -1
  9. package/dist/components/searchcraft-button.js +1 -1
  10. package/dist/components/searchcraft-button2.js +2 -2
  11. package/dist/components/searchcraft-error-message.js +1 -1
  12. package/dist/components/searchcraft-error-message2.js +1 -1
  13. package/dist/components/searchcraft-facet-list.js +1 -1
  14. package/dist/components/searchcraft-facet-list2.js +2 -2
  15. package/dist/components/searchcraft-filter-panel.js +5 -5
  16. package/dist/components/searchcraft-input-form.js +1 -1
  17. package/dist/components/searchcraft-input-form2.js +23 -9
  18. package/dist/components/searchcraft-input-form2.js.map +1 -1
  19. package/dist/components/searchcraft-input-label.js +1 -1
  20. package/dist/components/searchcraft-input-label2.js +2 -2
  21. package/dist/components/searchcraft-loading.js +1 -1
  22. package/dist/components/searchcraft-loading2.js +1 -1
  23. package/dist/components/searchcraft-pagination.js +4 -4
  24. package/dist/components/searchcraft-popover-button.js +17 -6
  25. package/dist/components/searchcraft-popover-button.js.map +1 -1
  26. package/dist/components/searchcraft-popover-footer.js +1 -1
  27. package/dist/components/searchcraft-popover-footer2.js +5 -5
  28. package/dist/components/searchcraft-popover-footer2.js.map +1 -1
  29. package/dist/components/searchcraft-popover-form.js +106 -21
  30. package/dist/components/searchcraft-popover-form.js.map +1 -1
  31. package/dist/components/searchcraft-popover-list-item.js +1 -1
  32. package/dist/components/searchcraft-popover-list-item2.js +71 -10
  33. package/dist/components/searchcraft-popover-list-item2.js.map +1 -1
  34. package/dist/components/searchcraft-popover-list-view.js +1 -1
  35. package/dist/components/searchcraft-popover-list-view2.js +13 -8
  36. package/dist/components/searchcraft-popover-list-view2.js.map +1 -1
  37. package/dist/components/searchcraft-results-info.js +5 -5
  38. package/dist/components/searchcraft-results-info.js.map +1 -1
  39. package/dist/components/searchcraft-results-summary.js +1 -1
  40. package/dist/components/searchcraft-results-summary2.js +10 -9
  41. package/dist/components/searchcraft-results-summary2.js.map +1 -1
  42. package/dist/components/searchcraft-search-result.js +1 -1
  43. package/dist/components/searchcraft-search-result2.js +4 -3
  44. package/dist/components/searchcraft-search-result2.js.map +1 -1
  45. package/dist/components/searchcraft-search-results-per-page.js +3 -3
  46. package/dist/components/searchcraft-search-results.js +35 -18
  47. package/dist/components/searchcraft-search-results.js.map +1 -1
  48. package/dist/components/searchcraft-select.js +1 -1
  49. package/dist/components/searchcraft-select2.js +1 -1
  50. package/dist/components/searchcraft-slider.js +1 -1
  51. package/dist/components/searchcraft-slider2.js +5 -5
  52. package/dist/components/searchcraft-summary-box.js +6 -6
  53. package/dist/components/searchcraft-theme.js +3 -3
  54. package/dist/components/searchcraft-theme.js.map +1 -1
  55. package/dist/components/searchcraft-toggle-button.js +1 -1
  56. package/dist/components/searchcraft-toggle-button2.js +5 -5
  57. package/dist/hydrate/index.js +611 -57
  58. package/dist/hydrate/index.mjs +611 -57
  59. package/dist/themes/hologram.css +1 -1
  60. package/dist/themes/hologram.css.map +1 -1
  61. package/dist/types/components/searchcraft-input-form/searchcraft-input-form.d.ts +7 -0
  62. package/dist/types/components/searchcraft-popover-button/searchcraft-popover-button.d.ts +8 -0
  63. package/dist/types/components/searchcraft-popover-form/searchcraft-popover-form.d.ts +39 -1
  64. package/dist/types/components/searchcraft-popover-list-item/searchcraft-popover-list-item.d.ts +22 -1
  65. package/dist/types/components/searchcraft-popover-list-view/searchcraft-popover-list-view.d.ts +5 -1
  66. package/dist/types/components/searchcraft-results-summary/searchcraft-results-summary.d.ts +2 -2
  67. package/dist/types/components/searchcraft-search-results/searchcraft-search-results.d.ts +14 -8
  68. package/dist/types/components.d.ts +92 -36
  69. package/dist/types/types/sdk-types/templates.types.d.ts +40 -13
  70. package/dist/types/utils/html.d.ts +22 -0
  71. package/dist/types/utils/index.d.ts +1 -0
  72. package/dist/types/utils/safeUrl.d.ts +17 -0
  73. package/package.json +7 -5
  74. package/dist/components/html.js +0 -18
  75. package/dist/components/html.js.map +0 -1
@@ -1,7 +1,7 @@
1
- import { p as proxyCustomElement, H, h, t as transformTag } from './index2.js?scv=0.15.0';
2
- import { r as registry } from './CoreInstanceRegistry.js?scv=0.15.0';
3
- import { d as defineCustomElement$2 } from './searchcraft-ad2.js?scv=0.15.0';
4
- import { d as defineCustomElement$1 } from './searchcraft-popover-list-item2.js?scv=0.15.0';
1
+ import { p as proxyCustomElement, H, h, t as transformTag } from './index2.js?scv=0.16.0';
2
+ import { r as registry } from './CoreInstanceRegistry.js?scv=0.16.0';
3
+ import { d as defineCustomElement$2 } from './searchcraft-ad2.js?scv=0.16.0';
4
+ import { d as defineCustomElement$1 } from './searchcraft-popover-list-item2.js?scv=0.16.0';
5
5
 
6
6
  const SearchcraftPopoverListView = /*@__PURE__*/ proxyCustomElement(class SearchcraftPopoverListView extends H {
7
7
  constructor(registerHost) {
@@ -19,6 +19,10 @@ const SearchcraftPopoverListView = /*@__PURE__*/ proxyCustomElement(class Search
19
19
  * list-view-item elements.
20
20
  */
21
21
  popoverResultMappings;
22
+ /**
23
+ * A callback function responsible for rendering a result. Passed to `searchcraft-popover-list-item`.
24
+ */
25
+ template;
22
26
  /**
23
27
  * The items to render in the list view.
24
28
  */
@@ -38,7 +42,7 @@ const SearchcraftPopoverListView = /*@__PURE__*/ proxyCustomElement(class Search
38
42
  this.cleanupCore?.();
39
43
  }
40
44
  renderWithADMAds() {
41
- return (h("div", { class: 'searchcraft-popover-list-view' }, this.adClientResponseItems?.map((item) => (h("searchcraft-ad", { "searchcraft-id": this.searchcraftId, adClientResponseItem: item, adSource: 'adMarketplace', key: item.id, renderPosition: 'top' }))), this.searchClientResponseItems?.map((item, index) => (h("searchcraft-popover-list-item", { "searchcraft-id": this.searchcraftId, item: item, key: item.id, popoverResultMappings: this.popoverResultMappings, documentPosition: this.searchResultsPerPage * (this.searchResultsPage - 1) + index })))));
45
+ return (h("div", { class: 'searchcraft-popover-list-view' }, this.adClientResponseItems?.map((item) => (h("searchcraft-ad", { "searchcraft-id": this.searchcraftId, adClientResponseItem: item, adSource: 'adMarketplace', key: item.id, renderPosition: 'top' }))), this.searchClientResponseItems?.map((item, index) => (h("searchcraft-popover-list-item", { "searchcraft-id": this.searchcraftId, item: item, key: item.id, popoverResultMappings: this.popoverResultMappings, template: this.template, index: index, documentPosition: this.searchResultsPerPage * (this.searchResultsPage - 1) + index })))));
42
46
  }
43
47
  renderWithCustomAds() {
44
48
  const itemsToRender = [];
@@ -61,7 +65,7 @@ const SearchcraftPopoverListView = /*@__PURE__*/ proxyCustomElement(class Search
61
65
  itemsToRender.push(h("searchcraft-ad", { "searchcraft-id": this.searchcraftId, adSource: 'Custom', key: `${item.id}-ad-${n}`, renderPosition: 'interstitial' }));
62
66
  }
63
67
  }
64
- itemsToRender.push(h("searchcraft-popover-list-item", { "searchcraft-id": this.searchcraftId, item: item, key: item.id, popoverResultMappings: this.popoverResultMappings, documentPosition: this.searchResultsPerPage * (this.searchResultsPage - 1) + index }));
68
+ itemsToRender.push(h("searchcraft-popover-list-item", { "searchcraft-id": this.searchcraftId, item: item, key: item.id, popoverResultMappings: this.popoverResultMappings, template: this.template, index: index, documentPosition: this.searchResultsPerPage * (this.searchResultsPage - 1) + index }));
65
69
  });
66
70
  // Renders ads at end
67
71
  for (let n = 0; n < adEndQuantity; n++) {
@@ -91,7 +95,7 @@ const SearchcraftPopoverListView = /*@__PURE__*/ proxyCustomElement(class Search
91
95
  itemsToRender.push(h("searchcraft-ad", { "searchcraft-id": this.searchcraftId, adSource: 'Nativo', key: `${item.id}-ad-${n}`, renderPosition: 'interstitial' }));
92
96
  }
93
97
  }
94
- itemsToRender.push(h("searchcraft-popover-list-item", { "searchcraft-id": this.searchcraftId, item: item, key: item.id, popoverResultMappings: this.popoverResultMappings, documentPosition: this.searchResultsPerPage * (this.searchResultsPage - 1) + index }));
98
+ itemsToRender.push(h("searchcraft-popover-list-item", { "searchcraft-id": this.searchcraftId, item: item, key: item.id, popoverResultMappings: this.popoverResultMappings, template: this.template, index: index, documentPosition: this.searchResultsPerPage * (this.searchResultsPage - 1) + index }));
95
99
  });
96
100
  // Renders ads at end
97
101
  for (let n = 0; n < adEndQuantity; n++) {
@@ -100,7 +104,7 @@ const SearchcraftPopoverListView = /*@__PURE__*/ proxyCustomElement(class Search
100
104
  return h("div", { class: 'searchcraft-popover-list-view' }, itemsToRender);
101
105
  }
102
106
  renderWithNoAds() {
103
- return (h("div", { class: 'searchcraft-popover-list-view' }, this.searchClientResponseItems?.map((item, index) => (h("searchcraft-popover-list-item", { "searchcraft-id": this.searchcraftId, item: item, key: item.id, popoverResultMappings: this.popoverResultMappings, documentPosition: this.searchResultsPerPage * (this.searchResultsPage - 1) + index })))));
107
+ return (h("div", { class: 'searchcraft-popover-list-view' }, this.searchClientResponseItems?.map((item, index) => (h("searchcraft-popover-list-item", { "searchcraft-id": this.searchcraftId, item: item, key: item.id, popoverResultMappings: this.popoverResultMappings, template: this.template, index: index, documentPosition: this.searchResultsPerPage * (this.searchResultsPage - 1) + index })))));
104
108
  }
105
109
  render() {
106
110
  if (this.config?.customAdConfig) {
@@ -117,6 +121,7 @@ const SearchcraftPopoverListView = /*@__PURE__*/ proxyCustomElement(class Search
117
121
  }, [768, "searchcraft-popover-list-view", {
118
122
  "searchcraftId": [1, "searchcraft-id"],
119
123
  "popoverResultMappings": [16],
124
+ "template": [16],
120
125
  "searchClientResponseItems": [16],
121
126
  "adClientResponseItems": [16],
122
127
  "searchResultsPage": [2, "search-results-page"],
@@ -1 +1 @@
1
- {"file":"searchcraft-popover-list-view2.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
+ {"file":"searchcraft-popover-list-view2.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 SearchResultTemplate,\n SearchResultTemplateData,\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 * A callback function responsible for rendering a result. Passed to `searchcraft-popover-list-item`.\n */\n @Prop() template?: SearchResultTemplate<SearchResultTemplateData>;\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 template={this.template}\n index={index}\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 template={this.template}\n index={index}\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 template={this.template}\n index={index}\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 template={this.template}\n index={index}\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,7 +1,7 @@
1
- import { p as proxyCustomElement, H, h, t as transformTag } from './index2.js?scv=0.15.0';
2
- import { r as registry } from './CoreInstanceRegistry.js?scv=0.15.0';
3
- import { f as formatNumberWithCommas } from './units.js?scv=0.15.0';
4
- import { h as html } from './html.js?scv=0.15.0';
1
+ import { p as proxyCustomElement, H, h, t as transformTag } from './index2.js?scv=0.16.0';
2
+ import { r as registry } from './CoreInstanceRegistry.js?scv=0.16.0';
3
+ import { f as formatNumberWithCommas } from './units.js?scv=0.16.0';
4
+ import { s as safeUrl, h as html } from './safeUrl.js?scv=0.16.0';
5
5
 
6
6
  const SearchcraftResultsInfo$1 = /*@__PURE__*/ proxyCustomElement(class SearchcraftResultsInfo extends H {
7
7
  constructor(registerHost) {
@@ -73,7 +73,7 @@ const SearchcraftResultsInfo$1 = /*@__PURE__*/ proxyCustomElement(class Searchcr
73
73
  range: [Number(this.range[0]), Number(this.range[1])],
74
74
  count: this.count,
75
75
  responseTime: this.responseTime,
76
- }, { html })
76
+ }, { html, safeUrl })
77
77
  : `${formatNumberWithCommas(this.count)} results found in ${this.responseTime}ms`));
78
78
  }
79
79
  }, [768, "searchcraft-results-info", {
@@ -1 +1 @@
1
- {"file":"searchcraft-results-info.js","mappings":"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","names":["SearchcraftResultsInfo","__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/searchcraft-results-info/searchcraft-results-info.tsx"],"sourcesContent":["import type { SearchcraftCore } from '@classes';\nimport { registry } from '@classes/CoreInstanceRegistry';\nimport { Component, Prop, State, h } from '@stencil/core';\n\nimport type { ResultsInfoTemplate } from '@types';\n\nimport { formatNumberWithCommas, html } from '@utils';\n\n/**\n * This web component is designed to display the number of results returned from a search query.\n *\n * @react-import\n * ```jsx\n * import { SearchcraftResultsInfo } from \"@searchcraft/react-sdk\";\n * ```\n *\n * @vue-import\n * ```jsx\n * import { SearchcraftResultsInfo } from \"@searchcraft/vue-sdk\";\n * ```\n *\n * @js-example\n * ```html\n * <!-- index.html -->\n * <searchcraft-results-info />\n * ```\n *\n * ```js\n * // index.js\n * const resultsInfo = document.querySelector('searchcraft-results-info');\n *\n * resultsInfo.template = (info, { html }) => html`\n * ${info.range[0]}-${info.range[1]} of ${info.count} results in ${info.responseTime}ms\n * `;\n * ```\n *\n * @react-example\n * ```jsx\n * <SearchcraftResultsInfo\n * template={(info, { html }) => html`\n * ${info.range[0]}-${info.range[1]} of ${info.count} results in ${info.responseTime}ms\n * `}\n * />\n * ```\n *\n * @vue-example\n * ```jsx\n * <SearchcraftResultsInfo\n * :template={(info, { html }) => html`\n * ${info.range[0]}-${info.range[1]} of ${info.count} results in ${info.responseTime}ms\n * `}\n * />\n * ```\n */\n@Component({\n tag: 'searchcraft-results-info',\n shadow: false,\n})\nexport class SearchcraftResultsInfo {\n /**\n * A callback function responsible for rendering the results info.\n */\n @Prop() template?: ResultsInfoTemplate;\n /**\n * The id of the Searchcraft instance that this component should use.\n */\n @Prop() searchcraftId?: string;\n\n // store vars\n @State() searchTerm;\n @State() searchResultsPage;\n @State() searchResultsPerPage;\n @State() searchResultsCount;\n @State() searchClientRequestProperties;\n\n // local vars\n @State() count = 0;\n @State() range: number[] = [0, 0];\n @State() responseTime = '0';\n\n unsubscribe: () => void = () => {};\n private cleanupCore?: () => void;\n\n onCoreAvailable(core: SearchcraftCore) {\n this.unsubscribe = core.store.subscribe((state) => {\n // store vars\n this.searchTerm = state.searchTerm;\n this.searchResultsPage = state.searchResultsPage;\n this.searchResultsPerPage = state.searchResultsPerPage;\n this.searchResultsCount = state.searchResultsCount;\n this.searchClientRequestProperties = state.searchClientRequestProperties;\n\n // local vars\n this.count = this.searchResultsCount;\n this.range[0] =\n this.searchResultsPage <= 1\n ? 1\n : this.searchResultsPerPage * (this.searchResultsPage - 1);\n this.range[1] = this.searchResultsPerPage * this.searchResultsPage;\n this.range[1] =\n this.range[1] > this.searchResultsCount\n ? this.searchResultsCount\n : this.range[1];\n this.responseTime = ((state.searchResponseTimeTaken || 0) * 1000).toFixed(\n 2,\n );\n });\n }\n\n connectedCallback() {\n this.cleanupCore = registry.useCoreInstance(\n this.searchcraftId,\n this.onCoreAvailable.bind(this),\n );\n }\n\n disconnectedCallback() {\n this.unsubscribe?.();\n this.cleanupCore?.();\n }\n\n render() {\n // Check if this is an initialQuery case (string requestProperties with empty searchTerm)\n const isInitialQuery =\n typeof this.searchClientRequestProperties === 'string' &&\n this.searchTerm.trim() === '';\n\n // Only hide if there's no search term AND no initialQuery AND no results\n if (\n (!this.searchTerm && !isInitialQuery) ||\n this.searchResultsCount === 0\n ) {\n return null;\n }\n\n return (\n <p class='searchcraft-results-info'>\n {typeof this.template !== 'undefined'\n ? this.template(\n {\n range: [Number(this.range[0]), Number(this.range[1])],\n count: this.count,\n responseTime: this.responseTime,\n },\n { html },\n )\n : `${formatNumberWithCommas(this.count)} results found in ${this.responseTime}ms`}\n </p>\n );\n }\n}\n"],"version":3}
1
+ {"file":"searchcraft-results-info.js","mappings":"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","names":["SearchcraftResultsInfo","__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/searchcraft-results-info/searchcraft-results-info.tsx"],"sourcesContent":["import type { SearchcraftCore } from '@classes';\nimport { registry } from '@classes/CoreInstanceRegistry';\nimport { Component, Prop, State, h } from '@stencil/core';\n\nimport type { ResultsInfoTemplate } from '@types';\n\nimport { formatNumberWithCommas, html, safeUrl } from '@utils';\n\n/**\n * This web component is designed to display the number of results returned from a search query.\n *\n * @react-import\n * ```jsx\n * import { SearchcraftResultsInfo } from \"@searchcraft/react-sdk\";\n * ```\n *\n * @vue-import\n * ```jsx\n * import { SearchcraftResultsInfo } from \"@searchcraft/vue-sdk\";\n * ```\n *\n * @js-example\n * ```html\n * <!-- index.html -->\n * <searchcraft-results-info />\n * ```\n *\n * ```js\n * // index.js\n * const resultsInfo = document.querySelector('searchcraft-results-info');\n *\n * resultsInfo.template = (info, { html }) => html`\n * ${info.range[0]}-${info.range[1]} of ${info.count} results in ${info.responseTime}ms\n * `;\n * ```\n *\n * @react-example\n * ```jsx\n * <SearchcraftResultsInfo\n * template={(info, { html }) => html`\n * ${info.range[0]}-${info.range[1]} of ${info.count} results in ${info.responseTime}ms\n * `}\n * />\n * ```\n *\n * @vue-example\n * ```jsx\n * <SearchcraftResultsInfo\n * :template={(info, { html }) => html`\n * ${info.range[0]}-${info.range[1]} of ${info.count} results in ${info.responseTime}ms\n * `}\n * />\n * ```\n */\n@Component({\n tag: 'searchcraft-results-info',\n shadow: false,\n})\nexport class SearchcraftResultsInfo {\n /**\n * A callback function responsible for rendering the results info.\n */\n @Prop() template?: ResultsInfoTemplate;\n /**\n * The id of the Searchcraft instance that this component should use.\n */\n @Prop() searchcraftId?: string;\n\n // store vars\n @State() searchTerm;\n @State() searchResultsPage;\n @State() searchResultsPerPage;\n @State() searchResultsCount;\n @State() searchClientRequestProperties;\n\n // local vars\n @State() count = 0;\n @State() range: number[] = [0, 0];\n @State() responseTime = '0';\n\n unsubscribe: () => void = () => {};\n private cleanupCore?: () => void;\n\n onCoreAvailable(core: SearchcraftCore) {\n this.unsubscribe = core.store.subscribe((state) => {\n // store vars\n this.searchTerm = state.searchTerm;\n this.searchResultsPage = state.searchResultsPage;\n this.searchResultsPerPage = state.searchResultsPerPage;\n this.searchResultsCount = state.searchResultsCount;\n this.searchClientRequestProperties = state.searchClientRequestProperties;\n\n // local vars\n this.count = this.searchResultsCount;\n this.range[0] =\n this.searchResultsPage <= 1\n ? 1\n : this.searchResultsPerPage * (this.searchResultsPage - 1);\n this.range[1] = this.searchResultsPerPage * this.searchResultsPage;\n this.range[1] =\n this.range[1] > this.searchResultsCount\n ? this.searchResultsCount\n : this.range[1];\n this.responseTime = ((state.searchResponseTimeTaken || 0) * 1000).toFixed(\n 2,\n );\n });\n }\n\n connectedCallback() {\n this.cleanupCore = registry.useCoreInstance(\n this.searchcraftId,\n this.onCoreAvailable.bind(this),\n );\n }\n\n disconnectedCallback() {\n this.unsubscribe?.();\n this.cleanupCore?.();\n }\n\n render() {\n // Check if this is an initialQuery case (string requestProperties with empty searchTerm)\n const isInitialQuery =\n typeof this.searchClientRequestProperties === 'string' &&\n this.searchTerm.trim() === '';\n\n // Only hide if there's no search term AND no initialQuery AND no results\n if (\n (!this.searchTerm && !isInitialQuery) ||\n this.searchResultsCount === 0\n ) {\n return null;\n }\n\n return (\n <p class='searchcraft-results-info'>\n {typeof this.template !== 'undefined'\n ? this.template(\n {\n range: [Number(this.range[0]), Number(this.range[1])],\n count: this.count,\n responseTime: this.responseTime,\n },\n { html, safeUrl },\n )\n : `${formatNumberWithCommas(this.count)} results found in ${this.responseTime}ms`}\n </p>\n );\n }\n}\n"],"version":3}
@@ -1,4 +1,4 @@
1
- import { S as SearchcraftResultsSummary$1, d as defineCustomElement$1 } from './searchcraft-results-summary2.js?scv=0.15.0';
1
+ import { S as SearchcraftResultsSummary$1, d as defineCustomElement$1 } from './searchcraft-results-summary2.js?scv=0.16.0';
2
2
 
3
3
  const SearchcraftResultsSummary = SearchcraftResultsSummary$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,8 +1,8 @@
1
- import { p as proxyCustomElement, H, h, t as transformTag } from './index2.js?scv=0.15.0';
2
- import { r as registry } from './CoreInstanceRegistry.js?scv=0.15.0';
3
- import { p as purify } from './purify.es.js?scv=0.15.0';
4
- import { m as marked } from './marked.esm.js?scv=0.15.0';
5
- import { d as defineCustomElement$1 } from './searchcraft-loading2.js?scv=0.15.0';
1
+ import { p as proxyCustomElement, H, h, t as transformTag } from './index2.js?scv=0.16.0';
2
+ import { r as registry } from './CoreInstanceRegistry.js?scv=0.16.0';
3
+ import { p as purify } from './purify.es.js?scv=0.16.0';
4
+ import { m as marked } from './marked.esm.js?scv=0.16.0';
5
+ import { d as defineCustomElement$1 } from './searchcraft-loading2.js?scv=0.16.0';
6
6
 
7
7
  const SearchcraftResultsSummary = /*@__PURE__*/ proxyCustomElement(class SearchcraftResultsSummary extends H {
8
8
  constructor(registerHost) {
@@ -22,10 +22,11 @@ const SearchcraftResultsSummary = /*@__PURE__*/ proxyCustomElement(class Searchc
22
22
  unsubscribe;
23
23
  cleanupCore;
24
24
  /**
25
- * Callback invoked when the Searchcraft core instance is available.
26
- */
25
+ * Callback invoked when the Searchcraft core instance is available.
26
+ */
27
27
  onCoreAvailable(core) {
28
28
  core.store.setState({ hasSummaryBox: true });
29
+ this.handleStateChange(core.store.getState());
29
30
  this.unsubscribe = core.store.subscribe(this.handleStateChange.bind(this));
30
31
  }
31
32
  connectedCallback() {
@@ -60,10 +61,10 @@ const SearchcraftResultsSummary = /*@__PURE__*/ proxyCustomElement(class Searchc
60
61
  if (this.isSummaryNotEnabled) {
61
62
  return (h("div", { class: 'searchcraft-results-summary-content' }, this.summaryErrorMessage || 'AI summaries are not enabled'));
62
63
  }
63
- return (h("div", { class: 'searchcraft-results-summary-content', innerHTML: this.summary, "aria-live": "polite" }));
64
+ return (h("div", { class: 'searchcraft-results-summary-content', innerHTML: this.summary, "aria-live": 'polite' }));
64
65
  }
65
66
  render() {
66
- return (h("div", { key: '4fabef16a76b57d737aa47fcf106c7375d19a5bc', class: 'searchcraft-results-summary' }, this.renderContent()));
67
+ return (h("div", { key: '556f53290003e7e6d8bc57c150ff1bf3581ce365', class: 'searchcraft-results-summary' }, this.renderContent()));
67
68
  }
68
69
  }, [768, "searchcraft-results-summary", {
69
70
  "searchcraftId": [1, "searchcraft-id"],
@@ -1 +1 @@
1
- {"file":"searchcraft-results-summary2.js","mappings":";;;;;;MA2Ca,yBAAyB,iBAAAA,kBAAA,CAAA,MAAA,yBAAA,SAAAC,CAAA,CAAA;;;;;;;AACpC;;AAEG;AACK,IAAA,aAAa;IACZ,OAAO,GAAG,EAAE;IACZ,mBAAmB,GAAG,EAAE;IACxB,SAAS,GAAG,KAAK;IACjB,mBAAmB,GAAG,KAAK;AAE5B,IAAA,WAAW;AACX,IAAA,WAAW;AAEnB;;AAEE;AACF,IAAA,eAAe,CAAC,IAAqB,EAAA;QACnC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;AAC5C,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;IAG5E,iBAAiB,GAAA;QACf,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,eAAe,CACzC,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAChC;;IAGH,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,WAAW,IAAI;AACpB,QAAA,IAAI,CAAC,WAAW,IAAI;;AAGtB;;AAEG;AACK,IAAA,iBAAiB,CAAC,KAAuB,EAAA;AAC/C,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,gBAAgB;AACvC,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC,mBAAmB;AACpD,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC,mBAAmB;QACpD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC;;AAGrD;;AAEG;AACK,IAAA,gBAAgB,CAAC,QAAgB,EAAA;QACvC,OAAOC,MAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAW,CAAC;;AAG7D;;AAEG;IACK,aAAa,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,OAAO,CAAqB,CAAA,qBAAA,EAAA,EAAA,KAAK,EAAC,SAAS,GAAG;;AAGhD,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC5B,YAAA,QACE,CAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAC,qCAAqC,EAAA,EAC7C,IAAI,CAAC,mBAAmB,IAAI,8BAA8B,CACvD;;QAIV,QACE,CAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAC,qCAAqC,EAC3C,SAAS,EAAE,IAAI,CAAC,OAAO,EAAA,WAAA,EACb,QAAQ,EAAA,CAClB;;IAIN,MAAM,GAAA;QACJ,QACE,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAC,6BAA6B,EAAA,EAAE,IAAI,CAAC,aAAa,EAAE,CAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["__stencil_proxyCustomElement","HTMLElement","DOMPurify"],"sources":["src/components/searchcraft-results-summary/searchcraft-results-summary.tsx"],"sourcesContent":["import type { SearchcraftCore } from '@classes';\nimport { registry } from '@classes/CoreInstanceRegistry';\nimport { Component, Prop, State, h } from '@stencil/core';\nimport type { SearchcraftState } from '@store';\nimport DOMPurify from 'dompurify';\nimport { marked } from 'marked';\n\n/**\n * This component renders a results summary for RAG search result summaries.\n * When the user makes a search, a network call is made to retrieve the summary content, which is then\n * rendered in this box.\n *\n * NOTE: This component requires the usage of a read key that has \"SUMMARY\" permissions.\n *\n * @react-import\n * ```jsx\n * import { SearchcraftResultsSummary } from \"@searchcraft/react-sdk\";\n * ```\n *\n * @vue-import\n * ```ts\n * import { SearchcraftResultsSummary } from \"@searchcraft/vue-sdk\";\n * ```\n *\n * @js-example\n * ```html\n * <searchcraft-results-summary />\n * ```\n *\n * @react-example\n * ```jsx\n * <SearchcraftResultsSummary />\n * ```\n *\n * @vue-example\n * ```jsx\n * <SearchcraftResultsSummary />\n * ```\n */\n@Component({\n tag: 'searchcraft-results-summary',\n shadow: false,\n})\nexport class SearchcraftResultsSummary {\n /**\n * The id of the Searchcraft instance that this component should use.\n */\n @Prop() searchcraftId?: string;\n @State() summary = '';\n @State() summaryErrorMessage = '';\n @State() isLoading = false;\n @State() isSummaryNotEnabled = false;\n\n private unsubscribe?: () => void;\n private cleanupCore?: () => void;\n\n /**\n * Callback invoked when the Searchcraft core instance is available.\n */\n onCoreAvailable(core: SearchcraftCore) {\n core.store.setState({ hasSummaryBox: true });\n this.unsubscribe = core.store.subscribe(this.handleStateChange.bind(this));\n }\n\n connectedCallback() {\n this.cleanupCore = registry.useCoreInstance(\n this.searchcraftId,\n this.onCoreAvailable.bind(this),\n );\n }\n\n disconnectedCallback() {\n this.unsubscribe?.();\n this.cleanupCore?.();\n }\n\n /**\n * Handles state changes from the store and updates component state.\n */\n private handleStateChange(state: SearchcraftState) {\n this.isLoading = state.isSummaryLoading;\n this.isSummaryNotEnabled = state.isSummaryNotEnabled;\n this.summaryErrorMessage = state.summaryErrorMessage;\n this.summary = this.sanitizeMarkdown(state.summary);\n }\n\n /**\n * Sanitizes and converts markdown to HTML.\n */\n private sanitizeMarkdown(markdown: string): string {\n return DOMPurify.sanitize(marked.parse(markdown) as string);\n }\n\n /**\n * Renders the appropriate content based on current state.\n */\n private renderContent() {\n if (this.isLoading) {\n return <searchcraft-loading label='LOADING' />;\n }\n\n if (this.isSummaryNotEnabled) {\n return (\n <div class='searchcraft-results-summary-content'>\n {this.summaryErrorMessage || 'AI summaries are not enabled'}\n </div>\n );\n }\n\n return (\n <div\n class='searchcraft-results-summary-content'\n innerHTML={this.summary}\n aria-live=\"polite\"\n />\n );\n }\n\n render() {\n return (\n <div class='searchcraft-results-summary'>{this.renderContent()}</div>\n );\n }\n}\n"],"version":3}
1
+ {"file":"searchcraft-results-summary2.js","mappings":";;;;;;MA2Ca,yBAAyB,iBAAAA,kBAAA,CAAA,MAAA,yBAAA,SAAAC,CAAA,CAAA;;;;;;;AACpC;;AAEG;AACK,IAAA,aAAa;IACZ,OAAO,GAAG,EAAE;IACZ,mBAAmB,GAAG,EAAE;IACxB,SAAS,GAAG,KAAK;IACjB,mBAAmB,GAAG,KAAK;AAE5B,IAAA,WAAW;AACX,IAAA,WAAW;AAEnB;;AAEG;AACH,IAAA,eAAe,CAAC,IAAqB,EAAA;QACnC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;QAC5C,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;AAC7C,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;IAG5E,iBAAiB,GAAA;QACf,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,eAAe,CACzC,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAChC;;IAGH,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,WAAW,IAAI;AACpB,QAAA,IAAI,CAAC,WAAW,IAAI;;AAGtB;;AAEG;AACK,IAAA,iBAAiB,CAAC,KAAuB,EAAA;AAC/C,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,gBAAgB;AACvC,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC,mBAAmB;AACpD,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC,mBAAmB;QACpD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC;;AAGrD;;AAEG;AACK,IAAA,gBAAgB,CAAC,QAAgB,EAAA;QACvC,OAAOC,MAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAW,CAAC;;AAG7D;;AAEG;IACK,aAAa,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,OAAO,CAAqB,CAAA,qBAAA,EAAA,EAAA,KAAK,EAAC,SAAS,GAAG;;AAGhD,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC5B,YAAA,QACE,CAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAC,qCAAqC,EAAA,EAC7C,IAAI,CAAC,mBAAmB,IAAI,8BAA8B,CACvD;;QAIV,QACE,CAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAC,qCAAqC,EAC3C,SAAS,EAAE,IAAI,CAAC,OAAO,EAAA,WAAA,EACb,QAAQ,EAAA,CAClB;;IAIN,MAAM,GAAA;QACJ,QACE,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAC,6BAA6B,EAAA,EAAE,IAAI,CAAC,aAAa,EAAE,CAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["__stencil_proxyCustomElement","HTMLElement","DOMPurify"],"sources":["src/components/searchcraft-results-summary/searchcraft-results-summary.tsx"],"sourcesContent":["import type { SearchcraftCore } from '@classes';\nimport { registry } from '@classes/CoreInstanceRegistry';\nimport { Component, Prop, State, h } from '@stencil/core';\nimport type { SearchcraftState } from '@store';\nimport DOMPurify from 'dompurify';\nimport { marked } from 'marked';\n\n/**\n * This component renders a results summary for RAG search result summaries.\n * When the user makes a search, a network call is made to retrieve the summary content, which is then\n * rendered in this box.\n *\n * NOTE: This component requires the usage of a read key that has \"SUMMARY\" permissions.\n *\n * @react-import\n * ```jsx\n * import { SearchcraftResultsSummary } from \"@searchcraft/react-sdk\";\n * ```\n *\n * @vue-import\n * ```ts\n * import { SearchcraftResultsSummary } from \"@searchcraft/vue-sdk\";\n * ```\n *\n * @js-example\n * ```html\n * <searchcraft-results-summary />\n * ```\n *\n * @react-example\n * ```jsx\n * <SearchcraftResultsSummary />\n * ```\n *\n * @vue-example\n * ```jsx\n * <SearchcraftResultsSummary />\n * ```\n */\n@Component({\n tag: 'searchcraft-results-summary',\n shadow: false,\n})\nexport class SearchcraftResultsSummary {\n /**\n * The id of the Searchcraft instance that this component should use.\n */\n @Prop() searchcraftId?: string;\n @State() summary = '';\n @State() summaryErrorMessage = '';\n @State() isLoading = false;\n @State() isSummaryNotEnabled = false;\n\n private unsubscribe?: () => void;\n private cleanupCore?: () => void;\n\n /**\n * Callback invoked when the Searchcraft core instance is available.\n */\n onCoreAvailable(core: SearchcraftCore) {\n core.store.setState({ hasSummaryBox: true });\n this.handleStateChange(core.store.getState());\n this.unsubscribe = core.store.subscribe(this.handleStateChange.bind(this));\n }\n\n connectedCallback() {\n this.cleanupCore = registry.useCoreInstance(\n this.searchcraftId,\n this.onCoreAvailable.bind(this),\n );\n }\n\n disconnectedCallback() {\n this.unsubscribe?.();\n this.cleanupCore?.();\n }\n\n /**\n * Handles state changes from the store and updates component state.\n */\n private handleStateChange(state: SearchcraftState) {\n this.isLoading = state.isSummaryLoading;\n this.isSummaryNotEnabled = state.isSummaryNotEnabled;\n this.summaryErrorMessage = state.summaryErrorMessage;\n this.summary = this.sanitizeMarkdown(state.summary);\n }\n\n /**\n * Sanitizes and converts markdown to HTML.\n */\n private sanitizeMarkdown(markdown: string): string {\n return DOMPurify.sanitize(marked.parse(markdown) as string);\n }\n\n /**\n * Renders the appropriate content based on current state.\n */\n private renderContent() {\n if (this.isLoading) {\n return <searchcraft-loading label='LOADING' />;\n }\n\n if (this.isSummaryNotEnabled) {\n return (\n <div class='searchcraft-results-summary-content'>\n {this.summaryErrorMessage || 'AI summaries are not enabled'}\n </div>\n );\n }\n\n return (\n <div\n class='searchcraft-results-summary-content'\n innerHTML={this.summary}\n aria-live='polite'\n />\n );\n }\n\n render() {\n return (\n <div class='searchcraft-results-summary'>{this.renderContent()}</div>\n );\n }\n}\n"],"version":3}
@@ -1,4 +1,4 @@
1
- import { S as SearchcraftSearchResult$1, d as defineCustomElement$1 } from './searchcraft-search-result2.js?scv=0.15.0';
1
+ import { S as SearchcraftSearchResult$1, d as defineCustomElement$1 } from './searchcraft-search-result2.js?scv=0.16.0';
2
2
 
3
3
  const SearchcraftSearchResult = SearchcraftSearchResult$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,6 +1,6 @@
1
- import { p as proxyCustomElement, H, h, t as transformTag } from './index2.js?scv=0.15.0';
2
- import { r as registry } from './CoreInstanceRegistry.js?scv=0.15.0';
3
- import { h as html } from './html.js?scv=0.15.0';
1
+ import { p as proxyCustomElement, H, h, t as transformTag } from './index2.js?scv=0.16.0';
2
+ import { r as registry } from './CoreInstanceRegistry.js?scv=0.16.0';
3
+ import { s as safeUrl, h as html } from './safeUrl.js?scv=0.16.0';
4
4
 
5
5
  const SearchcraftSearchResult = /*@__PURE__*/ proxyCustomElement(class SearchcraftSearchResult extends H {
6
6
  constructor(registerHost) {
@@ -39,6 +39,7 @@ const SearchcraftSearchResult = /*@__PURE__*/ proxyCustomElement(class Searchcra
39
39
  try {
40
40
  this.templateHtml = this.template?.(this.item.document, this.index, {
41
41
  html,
42
+ safeUrl,
42
43
  source_index: this.item.source_index,
43
44
  });
44
45
  }
@@ -1 +1 @@
1
- {"file":"searchcraft-search-result2.js","mappings":";;;;MAoBa,uBAAuB,iBAAAA,kBAAA,CAAA,MAAA,uBAAA,SAAAC,CAAA,CAAA;;;;;;;AAC1B,IAAA,IAAI;AACZ;;AAEG;AACK,IAAA,KAAK;AACb;;AAEG;IACK,gBAAgB,GAAG,CAAC;AAC5B;;AAEG;AACK,IAAA,QAAQ;AAChB;;AAEG;AACK,IAAA,aAAa;AAEZ,IAAA,YAAY;;AAErB,IAAA,IAAI;AACI,IAAA,WAAW;AAEnB,IAAA,eAAe,CAAC,IAAqB,EAAA;AACnC,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;;IAGlB,iBAAiB,GAAA;QACf,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,eAAe,CACzC,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAChC;AAED,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,IAAI;AACF,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE;oBAClE,IAAI;AACJ,oBAAA,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY;AACrC,iBAAA,CAAC;;YACF,OAAO,KAAK,EAAE;AACd,gBAAA,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC;;;;IAK7D,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,WAAW,IAAI;;AAGtB,IAAA,0BAA0B,GAAG,CAAC,KAAiB,KAAI;AACjD,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YACjB;;AAGF,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;QAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;AAEhC,QAAA,IACE,CAAC,IAAI;AACL,YAAA,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC;YACjC,CAAC,IAAI,CAAC,IAAI;AACV,YAAA,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EACxB;YACA;;AAGF,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,gBAAgB;AAC/C,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU;AACzD,QAAA,MAAM,mBAAmB,GACvB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,yBAAyB,CAAC,MAAM,IAAI,CAAC;QAElE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,kBAAkB,EAAE;YAC3D,iBAAiB;YACjB,mBAAmB;YACnB,WAAW;AACZ,SAAA,CAAC;AACJ,KAAC;AAED,IAAA,aAAa,GAAG,MAAK,GAAG;IAExB,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd;;AAGF,QAAA,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,WAAW,EAAE;AACxC,YAAA,QACE,WACE,KAAK,EAAC,iEAAiE,EACvE,OAAO,EAAE,IAAI,CAAC,0BAA0B,EACxC,SAAS,EAAE,IAAI,CAAC,aAAa,EAE5B,EAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,MACnD,CAAG,CAAA,GAAA,EAAA,EAAA,GAAG,EAAE,GAAG,EAAA,EACT,CAAA,CAAA,QAAA,EAAA,IAAA,EAAS,GAAG,CAAU,QAAG,KAAK,CAC5B,CACL,CAAC,CACE;;AAIV,QAAA,QACE,CACE,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,2BAA2B,EACjC,SAAS,EAAE,IAAI,CAAC,YAAY,EAC5B,OAAO,EAAE,IAAI,CAAC,0BAA0B,EACxC,SAAS,EAAE,IAAI,CAAC,aAAa,EAC7B,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;","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
+ {"file":"searchcraft-search-result2.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, safeUrl } 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 safeUrl,\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,6 +1,6 @@
1
- import { p as proxyCustomElement, H, h, t as transformTag } from './index2.js?scv=0.15.0';
2
- import { r as registry } from './CoreInstanceRegistry.js?scv=0.15.0';
3
- import { d as defineCustomElement$2 } from './searchcraft-select2.js?scv=0.15.0';
1
+ import { p as proxyCustomElement, H, h, t as transformTag } from './index2.js?scv=0.16.0';
2
+ import { r as registry } from './CoreInstanceRegistry.js?scv=0.16.0';
3
+ import { d as defineCustomElement$2 } from './searchcraft-select2.js?scv=0.16.0';
4
4
 
5
5
  const SearchcraftSearchResultsPerPage$1 = /*@__PURE__*/ proxyCustomElement(class SearchcraftSearchResultsPerPage extends H {
6
6
  constructor(registerHost) {
@@ -1,8 +1,7 @@
1
- import { p as proxyCustomElement, H, h, t as transformTag } from './index2.js?scv=0.15.0';
2
- import { r as registry } from './CoreInstanceRegistry.js?scv=0.15.0';
3
- import { d as defineCustomElement$4 } from './searchcraft-ad2.js?scv=0.15.0';
4
- import { d as defineCustomElement$3 } from './searchcraft-error-message2.js?scv=0.15.0';
5
- import { d as defineCustomElement$2 } from './searchcraft-search-result2.js?scv=0.15.0';
1
+ import { p as proxyCustomElement, H, h, t as transformTag } from './index2.js?scv=0.16.0';
2
+ import { r as registry } from './CoreInstanceRegistry.js?scv=0.16.0';
3
+ import { d as defineCustomElement$3 } from './searchcraft-ad2.js?scv=0.16.0';
4
+ import { d as defineCustomElement$2 } from './searchcraft-search-result2.js?scv=0.16.0';
6
5
 
7
6
  const SearchcraftSearchResults$1 = /*@__PURE__*/ proxyCustomElement(class SearchcraftSearchResults extends H {
8
7
  constructor(registerHost) {
@@ -21,6 +20,8 @@ const SearchcraftSearchResults$1 = /*@__PURE__*/ proxyCustomElement(class Search
21
20
  initialQuery;
22
21
  /**
23
22
  * A callback function responsible for rendering a result. Passed to `searchcraft-search-result`.
23
+ * Pass URLs from the result through the `safeUrl` helper before placing them in an `href` or `src`.
24
+ * Never place result values in event handler attributes such as `onclick`, or in `style`.
24
25
  */
25
26
  template;
26
27
  adClientResponseItems = [];
@@ -30,6 +31,11 @@ const SearchcraftSearchResults$1 = /*@__PURE__*/ proxyCustomElement(class Search
30
31
  searchResultsPage;
31
32
  searchResultsPerPage;
32
33
  searchTerm = '';
34
+ /**
35
+ * The search term of the most recent search request, used to tell a
36
+ * completed search apart from a term that has not been searched yet.
37
+ */
38
+ completedSearchTerm;
33
39
  unsubscribe;
34
40
  cleanupCore;
35
41
  onCoreAvailable(core) {
@@ -55,12 +61,29 @@ const SearchcraftSearchResults$1 = /*@__PURE__*/ proxyCustomElement(class Search
55
61
  this.searchResultsPage = state.searchResultsPage;
56
62
  this.searchResultsPerPage = state.searchResultsPerPage;
57
63
  this.searchTerm = state.searchTerm;
64
+ const requestProperties = state.searchClientRequestProperties;
65
+ this.completedSearchTerm =
66
+ requestProperties && typeof requestProperties === 'object'
67
+ ? requestProperties.searchTerm
68
+ : undefined;
69
+ }
70
+ /**
71
+ * Whether the search for the current search term has completed with no
72
+ * results. False while the term is empty, while a search is in progress, and
73
+ * after the term changes until its search completes.
74
+ */
75
+ get hasNoResultsToShow() {
76
+ const searchTerm = this.searchTerm.trim();
77
+ return (!!searchTerm &&
78
+ !this.isSearchInProgress &&
79
+ (this.searchClientResponseItems || []).length === 0 &&
80
+ this.completedSearchTerm?.trim() === searchTerm);
58
81
  }
59
82
  renderEmptyState() {
60
83
  return (h("div", { class: 'searchcraft-search-results-empty-state' }, h("slot", { name: 'empty-search' })));
61
84
  }
62
85
  renderNoResultsFoundState() {
63
- return (h("div", { class: 'searchcraft-search-results' }, h("div", { class: 'searchcraft-search-results-error-message' }, h("searchcraft-error-message", null, "No search results found for \"", this.searchTerm, "\" query."))));
86
+ return (h("div", { class: 'searchcraft-search-results-no-results' }, h("p", { class: 'searchcraft-search-results-no-results-message' }, "No results found for \"", this.searchTerm.trim(), "\".")));
64
87
  }
65
88
  renderWithADMAds() {
66
89
  const items = this.searchClientResponseItems || [];
@@ -131,14 +154,12 @@ const SearchcraftSearchResults$1 = /*@__PURE__*/ proxyCustomElement(class Search
131
154
  }
132
155
  render() {
133
156
  const searchClientResponseItems = this.searchClientResponseItems || [];
157
+ if (this.hasNoResultsToShow) {
158
+ return this.renderNoResultsFoundState();
159
+ }
134
160
  if (searchClientResponseItems.length === 0 && !this.isSearchInProgress) {
135
161
  return this.renderEmptyState();
136
162
  }
137
- if (this.searchTerm.length > 0 &&
138
- searchClientResponseItems.length === 0 &&
139
- !this.isSearchInProgress) {
140
- return this.renderNoResultsFoundState();
141
- }
142
163
  if (this.config?.customAdConfig) {
143
164
  return this.renderWithCustomAds();
144
165
  }
@@ -160,13 +181,14 @@ const SearchcraftSearchResults$1 = /*@__PURE__*/ proxyCustomElement(class Search
160
181
  "searchClientResponseItems": [32],
161
182
  "searchResultsPage": [32],
162
183
  "searchResultsPerPage": [32],
163
- "searchTerm": [32]
184
+ "searchTerm": [32],
185
+ "completedSearchTerm": [32]
164
186
  }]);
165
187
  function defineCustomElement$1() {
166
188
  if (typeof customElements === "undefined") {
167
189
  return;
168
190
  }
169
- const components = ["searchcraft-search-results", "searchcraft-ad", "searchcraft-error-message", "searchcraft-search-result"];
191
+ const components = ["searchcraft-search-results", "searchcraft-ad", "searchcraft-search-result"];
170
192
  components.forEach(tagName => { switch (tagName) {
171
193
  case "searchcraft-search-results":
172
194
  if (!customElements.get(transformTag(tagName))) {
@@ -174,11 +196,6 @@ function defineCustomElement$1() {
174
196
  }
175
197
  break;
176
198
  case "searchcraft-ad":
177
- if (!customElements.get(transformTag(tagName))) {
178
- defineCustomElement$4();
179
- }
180
- break;
181
- case "searchcraft-error-message":
182
199
  if (!customElements.get(transformTag(tagName))) {
183
200
  defineCustomElement$3();
184
201
  }
@@ -1 +1 @@
1
- {"file":"searchcraft-search-results.js","mappings":"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","names":["SearchcraftSearchResults","__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/searchcraft-search-results/searchcraft-search-results.tsx"],"sourcesContent":["import { Component, type JSX, Prop, State, h } from '@stencil/core';\n\nimport type {\n AdClientResponseItem,\n SearchClientResponseItem,\n SearchResultTemplate,\n SearchResultTemplateData,\n SearchcraftConfig,\n} from '@types';\n\nimport type { SearchcraftCore } from '@classes';\nimport { registry } from '@classes/CoreInstanceRegistry';\nimport type { SearchcraftState } from '@store';\n\n/**\n * This web component is responsible for displaying the results of a search query. Once a query is submitted, the component formats and presents an ordered list of the results.\n *\n *\n * @react-import\n * ```jsx\n * import { SearchcraftSearchResults } from \"@searchcraft/react-sdk\";\n * ```\n *\n * @vue-import\n * ```jsx\n * import { SearchcraftSearchResults } from \"@searchcraft/vue-sdk\";\n * ```\n *\n * @js-example\n * ```html\n * <!-- index.html -->\n * <searchcraft-search-results\n * ad-interval=\"4\"\n * place-ad-at-start=\"true\"\n * />\n * ```\n *\n * ```js\n * // index.js\n * const searchResults = document.querySelector('searchcraft-search-results');\n *\n * searchResults.template = (item, index, { html }) => html`\n * <h2>${item.title}</h2>\n * `;\n * ```\n *\n * @react-example\n * ```jsx\n * <SearchcraftSearchResults\n * adInterval={4}\n * placeAdAtState={true}\n * template={(item, index, { html }) => html`\n * <h2>${item.title}</h2>\n * `}\n * />\n * ```\n *\n * @vue-example\n * ```jsx\n * <SearchcraftSearchResults\n * adInterval={4}\n * placeAdAtState={true}\n * :template={(item, index, { html }) => html`\n * <h2>${item.title}</h2>\n * `}\n * />\n * ```\n */\n@Component({\n tag: 'searchcraft-search-results',\n})\nexport class SearchcraftSearchResults {\n /**\n * The id of the Searchcraft instance that this component should use.\n */\n @Prop() searchcraftId?: string;\n /**\n * A query that will appears when the component initializes or the search term is ''..\n */\n @Prop() initialQuery?: string;\n\n /**\n * A callback function responsible for rendering a result. Passed to `searchcraft-search-result`.\n */\n @Prop() template?: SearchResultTemplate<SearchResultTemplateData>;\n\n @State() adClientResponseItems: AdClientResponseItem[] = [];\n @State() config?: SearchcraftConfig;\n @State() isSearchInProgress = true;\n @State() searchClientResponseItems?: SearchClientResponseItem[];\n @State() searchResultsPage;\n @State() searchResultsPerPage;\n @State() searchTerm = '';\n\n private unsubscribe?: () => void;\n private cleanupCore?: () => void;\n\n onCoreAvailable(core: SearchcraftCore) {\n const state = core.store.getState();\n this.handleStateChange(state);\n this.searchClientResponseItems = state.searchClientResponseItems;\n this.searchTerm = state.searchTerm;\n this.config = state.core?.config;\n\n this.unsubscribe = core.store.subscribe((state) =>\n this.handleStateChange(state),\n );\n }\n\n connectedCallback() {\n this.cleanupCore = registry.useCoreInstance(\n this.searchcraftId,\n this.onCoreAvailable.bind(this),\n );\n }\n\n disconnectedCallback() {\n this.unsubscribe?.();\n this.cleanupCore?.();\n }\n\n handleStateChange(state: SearchcraftState) {\n this.adClientResponseItems = [...state.adClientResponseItems];\n this.config = state.core?.config;\n this.isSearchInProgress = state.isSearchInProgress;\n this.searchClientResponseItems = [...state.searchClientResponseItems];\n this.searchResultsPage = state.searchResultsPage;\n this.searchResultsPerPage = state.searchResultsPerPage;\n this.searchTerm = state.searchTerm;\n }\n\n renderEmptyState() {\n return (\n <div class='searchcraft-search-results-empty-state'>\n <slot name='empty-search' />\n </div>\n );\n }\n\n renderNoResultsFoundState() {\n return (\n <div class='searchcraft-search-results'>\n <div class='searchcraft-search-results-error-message'>\n <searchcraft-error-message>\n No search results found for \"{this.searchTerm}\" query.\n </searchcraft-error-message>\n </div>\n </div>\n );\n }\n\n renderWithADMAds() {\n const items = this.searchClientResponseItems || [];\n\n return (\n <div class='searchcraft-search-results'>\n {this.adClientResponseItems?.map((item) => (\n <searchcraft-ad\n searchcraft-id={this.searchcraftId}\n adSource='adMarketplace'\n adClientResponseItem={item}\n key={item.id}\n renderPosition='top'\n />\n ))}\n {items.map((item, index) => (\n <searchcraft-search-result\n searchcraft-id={this.searchcraftId}\n key={item.id}\n document-position={\n this.searchResultsPerPage * (this.searchResultsPage - 1) + index\n }\n index={index}\n item={item}\n template={this.template}\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 items = this.searchClientResponseItems || [];\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 items.forEach((item, index) => {\n if (\n interstitialInterval &&\n index % interstitialInterval === 0 &&\n index + interstitialInterval < items.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 itemsToRender.push(\n <searchcraft-search-result\n searchcraft-id={this.searchcraftId}\n key={item.id}\n document-position={\n this.searchResultsPerPage * (this.searchResultsPage - 1) + index\n }\n index={index}\n item={item}\n template={this.template}\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-search-results'>{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 items = this.searchClientResponseItems || [];\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 items.forEach((item, index) => {\n if (\n interstitialInterval &&\n (index + interstitialStartIndex) % interstitialInterval === 0 &&\n index + interstitialInterval < items.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 itemsToRender.push(\n <searchcraft-search-result\n searchcraft-id={this.searchcraftId}\n key={item.id}\n document-position={\n this.searchResultsPerPage * (this.searchResultsPage - 1) + index\n }\n index={index}\n item={item}\n template={this.template}\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-search-results'>{itemsToRender}</div>;\n }\n\n renderWithNoAds() {\n const items = this.searchClientResponseItems || [];\n\n return (\n <div class='searchcraft-search-results'>\n {items.map((item, index) => (\n <searchcraft-search-result\n searchcraft-id={this.searchcraftId}\n key={item.id}\n document-position={\n this.searchResultsPerPage * (this.searchResultsPage - 1) + index\n }\n index={index}\n item={item}\n template={this.template}\n />\n ))}\n </div>\n );\n }\n\n render() {\n const searchClientResponseItems = this.searchClientResponseItems || [];\n\n if (searchClientResponseItems.length === 0 && !this.isSearchInProgress) {\n return this.renderEmptyState();\n }\n\n if (\n this.searchTerm.length > 0 &&\n searchClientResponseItems.length === 0 &&\n !this.isSearchInProgress\n ) {\n return this.renderNoResultsFoundState();\n }\n\n if (this.config?.customAdConfig) {\n return this.renderWithCustomAds();\n }\n if (this.config?.admAdConfig) {\n return this.renderWithNativoAds();\n }\n if (this.config?.nativoConfig) {\n return this.renderWithNativoAds();\n }\n return this.renderWithNoAds();\n }\n}\n"],"version":3}
1
+ {"file":"searchcraft-search-results.js","mappings":"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","names":["SearchcraftSearchResults","__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/searchcraft-search-results/searchcraft-search-results.tsx"],"sourcesContent":["import { Component, type JSX, Prop, State, h } from '@stencil/core';\n\nimport type {\n AdClientResponseItem,\n SearchClientResponseItem,\n SearchResultTemplate,\n SearchResultTemplateData,\n SearchcraftConfig,\n} from '@types';\n\nimport type { SearchcraftCore } from '@classes';\nimport { registry } from '@classes/CoreInstanceRegistry';\nimport type { SearchcraftState } from '@store';\n\n/**\n * This web component is responsible for displaying the results of a search query. Once a query is submitted, the component formats and presents an ordered list of the results.\n *\n *\n * @react-import\n * ```jsx\n * import { SearchcraftSearchResults } from \"@searchcraft/react-sdk\";\n * ```\n *\n * @vue-import\n * ```jsx\n * import { SearchcraftSearchResults } from \"@searchcraft/vue-sdk\";\n * ```\n *\n * @js-example\n * ```html\n * <!-- index.html -->\n * <searchcraft-search-results></searchcraft-search-results>\n * ```\n *\n * ```js\n * // index.js\n * const searchResults = document.querySelector('searchcraft-search-results');\n *\n * searchResults.template = (item, index, { html }) => html`\n * <h2>${item.title}</h2>\n * `;\n * ```\n *\n * @react-example\n * ```jsx\n * <SearchcraftSearchResults\n * template={(item, index, { html }) => html`\n * <h2>${item.title}</h2>\n * `}\n * />\n * ```\n *\n * @vue-example\n * ```jsx\n * <SearchcraftSearchResults\n * :template={(item, index, { html }) => html`\n * <h2>${item.title}</h2>\n * `}\n * />\n * ```\n */\n@Component({\n tag: 'searchcraft-search-results',\n})\nexport class SearchcraftSearchResults {\n /**\n * The id of the Searchcraft instance that this component should use.\n */\n @Prop() searchcraftId?: string;\n /**\n * A query that will appears when the component initializes or the search term is ''..\n */\n @Prop() initialQuery?: string;\n\n /**\n * A callback function responsible for rendering a result. Passed to `searchcraft-search-result`.\n * Pass URLs from the result through the `safeUrl` helper before placing them in an `href` or `src`.\n * Never place result values in event handler attributes such as `onclick`, or in `style`.\n */\n @Prop() template?: SearchResultTemplate<SearchResultTemplateData>;\n\n @State() adClientResponseItems: AdClientResponseItem[] = [];\n @State() config?: SearchcraftConfig;\n @State() isSearchInProgress = true;\n @State() searchClientResponseItems?: SearchClientResponseItem[];\n @State() searchResultsPage;\n @State() searchResultsPerPage;\n @State() searchTerm = '';\n /**\n * The search term of the most recent search request, used to tell a\n * completed search apart from a term that has not been searched yet.\n */\n @State() completedSearchTerm: string | undefined;\n\n private unsubscribe?: () => void;\n private cleanupCore?: () => void;\n\n onCoreAvailable(core: SearchcraftCore) {\n const state = core.store.getState();\n this.handleStateChange(state);\n this.searchClientResponseItems = state.searchClientResponseItems;\n this.searchTerm = state.searchTerm;\n this.config = state.core?.config;\n\n this.unsubscribe = core.store.subscribe((state) =>\n this.handleStateChange(state),\n );\n }\n\n connectedCallback() {\n this.cleanupCore = registry.useCoreInstance(\n this.searchcraftId,\n this.onCoreAvailable.bind(this),\n );\n }\n\n disconnectedCallback() {\n this.unsubscribe?.();\n this.cleanupCore?.();\n }\n\n handleStateChange(state: SearchcraftState) {\n this.adClientResponseItems = [...state.adClientResponseItems];\n this.config = state.core?.config;\n this.isSearchInProgress = state.isSearchInProgress;\n this.searchClientResponseItems = [...state.searchClientResponseItems];\n this.searchResultsPage = state.searchResultsPage;\n this.searchResultsPerPage = state.searchResultsPerPage;\n this.searchTerm = state.searchTerm;\n const requestProperties = state.searchClientRequestProperties;\n this.completedSearchTerm =\n requestProperties && typeof requestProperties === 'object'\n ? requestProperties.searchTerm\n : undefined;\n }\n\n /**\n * Whether the search for the current search term has completed with no\n * results. False while the term is empty, while a search is in progress, and\n * after the term changes until its search completes.\n */\n get hasNoResultsToShow() {\n const searchTerm = this.searchTerm.trim();\n return (\n !!searchTerm &&\n !this.isSearchInProgress &&\n (this.searchClientResponseItems || []).length === 0 &&\n this.completedSearchTerm?.trim() === searchTerm\n );\n }\n\n renderEmptyState() {\n return (\n <div class='searchcraft-search-results-empty-state'>\n <slot name='empty-search' />\n </div>\n );\n }\n\n renderNoResultsFoundState() {\n return (\n <div class='searchcraft-search-results-no-results'>\n <p class='searchcraft-search-results-no-results-message'>\n No results found for \"{this.searchTerm.trim()}\".\n </p>\n </div>\n );\n }\n\n renderWithADMAds() {\n const items = this.searchClientResponseItems || [];\n\n return (\n <div class='searchcraft-search-results'>\n {this.adClientResponseItems?.map((item) => (\n <searchcraft-ad\n searchcraft-id={this.searchcraftId}\n adSource='adMarketplace'\n adClientResponseItem={item}\n key={item.id}\n renderPosition='top'\n />\n ))}\n {items.map((item, index) => (\n <searchcraft-search-result\n searchcraft-id={this.searchcraftId}\n key={item.id}\n document-position={\n this.searchResultsPerPage * (this.searchResultsPage - 1) + index\n }\n index={index}\n item={item}\n template={this.template}\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 items = this.searchClientResponseItems || [];\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 items.forEach((item, index) => {\n if (\n interstitialInterval &&\n index % interstitialInterval === 0 &&\n index + interstitialInterval < items.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 itemsToRender.push(\n <searchcraft-search-result\n searchcraft-id={this.searchcraftId}\n key={item.id}\n document-position={\n this.searchResultsPerPage * (this.searchResultsPage - 1) + index\n }\n index={index}\n item={item}\n template={this.template}\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-search-results'>{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 items = this.searchClientResponseItems || [];\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 items.forEach((item, index) => {\n if (\n interstitialInterval &&\n (index + interstitialStartIndex) % interstitialInterval === 0 &&\n index + interstitialInterval < items.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 itemsToRender.push(\n <searchcraft-search-result\n searchcraft-id={this.searchcraftId}\n key={item.id}\n document-position={\n this.searchResultsPerPage * (this.searchResultsPage - 1) + index\n }\n index={index}\n item={item}\n template={this.template}\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-search-results'>{itemsToRender}</div>;\n }\n\n renderWithNoAds() {\n const items = this.searchClientResponseItems || [];\n\n return (\n <div class='searchcraft-search-results'>\n {items.map((item, index) => (\n <searchcraft-search-result\n searchcraft-id={this.searchcraftId}\n key={item.id}\n document-position={\n this.searchResultsPerPage * (this.searchResultsPage - 1) + index\n }\n index={index}\n item={item}\n template={this.template}\n />\n ))}\n </div>\n );\n }\n\n render() {\n const searchClientResponseItems = this.searchClientResponseItems || [];\n\n if (this.hasNoResultsToShow) {\n return this.renderNoResultsFoundState();\n }\n\n if (searchClientResponseItems.length === 0 && !this.isSearchInProgress) {\n return this.renderEmptyState();\n }\n\n if (this.config?.customAdConfig) {\n return this.renderWithCustomAds();\n }\n if (this.config?.admAdConfig) {\n return this.renderWithNativoAds();\n }\n if (this.config?.nativoConfig) {\n return this.renderWithNativoAds();\n }\n return this.renderWithNoAds();\n }\n}\n"],"version":3}
@@ -1,4 +1,4 @@
1
- import { S as SearchcraftSelect$1, d as defineCustomElement$1 } from './searchcraft-select2.js?scv=0.15.0';
1
+ import { S as SearchcraftSelect$1, d as defineCustomElement$1 } from './searchcraft-select2.js?scv=0.16.0';
2
2
 
3
3
  const SearchcraftSelect = SearchcraftSelect$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { p as proxyCustomElement, H, c as createEvent, h, t as transformTag } from './index2.js?scv=0.15.0';
1
+ import { p as proxyCustomElement, H, c as createEvent, h, t as transformTag } from './index2.js?scv=0.16.0';
2
2
 
3
3
  const SearchcraftSelect = /*@__PURE__*/ proxyCustomElement(class SearchcraftSelect extends H {
4
4
  constructor(registerHost) {
@@ -1,4 +1,4 @@
1
- import { S as SearchcraftSlider$1, d as defineCustomElement$1 } from './searchcraft-slider2.js?scv=0.15.0';
1
+ import { S as SearchcraftSlider$1, d as defineCustomElement$1 } from './searchcraft-slider2.js?scv=0.16.0';
2
2
 
3
3
  const SearchcraftSlider = SearchcraftSlider$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,7 +1,7 @@
1
- import { p as proxyCustomElement, H, c as createEvent, h, t as transformTag } from './index2.js?scv=0.15.0';
2
- import { a as getDifferenceInUnits, b as getStartOf, c as getFormattedDateString } from './units.js?scv=0.15.0';
1
+ import { p as proxyCustomElement, H, c as createEvent, h, t as transformTag } from './index2.js?scv=0.16.0';
2
+ import { a as getDifferenceInUnits, b as getStartOf, c as getFormattedDateString } from './units.js?scv=0.16.0';
3
3
  import './purify.es.js';
4
- import { c as classNames } from './index3.js?scv=0.15.0';
4
+ import { c as classNames } from './index3.js?scv=0.16.0';
5
5
 
6
6
  /**
7
7
  * Creates a throttled version of the given function that only invokes
@@ -159,10 +159,10 @@ const SearchcraftSlider = /*@__PURE__*/ proxyCustomElement(class SearchcraftSlid
159
159
  100;
160
160
  const startLabel = this.getLabel(this.startValue);
161
161
  const endLabel = this.getLabel(this.endValue);
162
- return (h("div", { key: '2c72254f52151edd2e2fa89c092fc788db0b5562', class: 'searchcraft-slider' }, h("div", { key: '98c25badf2c9386d7173ea552e510dcc168e7fc7', class: 'searchcraft-slider-range' }, h("div", { key: '50774db2253e34b1bce68acc0a40b2706cab542d', class: 'searchcraft-slider-active-range', style: {
162
+ return (h("div", { key: 'eac09a33aca88d3cf9aeed9dd7a669c961f90ca5', class: 'searchcraft-slider' }, h("div", { key: '2ad819cc623be0c08bf4cbe6d505db976eccf0c8', class: 'searchcraft-slider-range' }, h("div", { key: '5e846a9986b61c2cd65450109a051457a1756153', class: 'searchcraft-slider-active-range', style: {
163
163
  left: `${startPercent}%`,
164
164
  width: `${endPercent - startPercent}%`,
165
- } }), h("input", { key: '229afedc1318a63cbd75806805210cf4f5695e6e', class: classNames('searchcraft-slider-input', 'searchcraft-slider-input-min-handle'), max: this.upperBound, min: this.lowerBound, onInput: this.handleStartValueChange.bind(this), step: this.step, style: { zIndex: this.lastFocusedHandle === 'min' ? '2' : '1' }, type: 'range', value: this.startValue }), h("input", { key: '6aa038b01daaba86f501ebbbec30fc6720b549b3', class: classNames('searchcraft-slider-input', 'searchcraft-slider-input-max-handle'), max: this.upperBound, min: this.lowerBound, onInput: this.handleEndValueChange.bind(this), step: this.step, style: { zIndex: this.lastFocusedHandle === 'max' ? '2' : '1' }, type: 'range', value: this.endValue })), h("div", { key: 'f70501538635c3b08ad1e6ac101d0b3192ef8e04', class: 'searchcraft-slider-label' }, h("span", { key: 'ddd539b86774f8900771d77d5ef7eb3a67c98d59', class: 'searchcraft-slider-start-label' }, startLabel), h("span", { key: 'b754a9c8d284e0623032cee6b92f9df88873ec04', class: 'searchcraft-slider-end-label' }, endLabel))));
165
+ } }), h("input", { key: 'b182af7d545693efd71bf6fd85a2ca943f3dd3ff', class: classNames('searchcraft-slider-input', 'searchcraft-slider-input-min-handle'), max: this.upperBound, min: this.lowerBound, onInput: this.handleStartValueChange.bind(this), step: this.step, style: { zIndex: this.lastFocusedHandle === 'min' ? '2' : '1' }, type: 'range', value: this.startValue }), h("input", { key: '7009ababaef448ef30c7e6180642947a2cbe9e0e', class: classNames('searchcraft-slider-input', 'searchcraft-slider-input-max-handle'), max: this.upperBound, min: this.lowerBound, onInput: this.handleEndValueChange.bind(this), step: this.step, style: { zIndex: this.lastFocusedHandle === 'max' ? '2' : '1' }, type: 'range', value: this.endValue })), h("div", { key: '0403cc17695e91ac0e9aa64f8cb04d28915c77c2', class: 'searchcraft-slider-label' }, h("span", { key: '15078ec0da0b588a64114b2e12c34901dd96d50c', class: 'searchcraft-slider-start-label' }, startLabel), h("span", { key: '22911d611b6a3c07ef1b63206a41c512c843d3d1', class: 'searchcraft-slider-end-label' }, endLabel))));
166
166
  }
167
167
  }, [768, "searchcraft-slider", {
168
168
  "max": [2],