@searchcraft/javascript-sdk 0.1.2 → 0.1.4

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 (115) hide show
  1. package/dist/cjs/{index-e7e9ab69.js → index-e7bd239c.js} +3 -4
  2. package/dist/cjs/index-e7bd239c.js.map +1 -0
  3. package/dist/cjs/index.cjs.js +2 -1
  4. package/dist/cjs/index.cjs.js.map +1 -1
  5. package/dist/cjs/loader.cjs.js +2 -2
  6. package/dist/cjs/searchcraft-auto-search-form_13.cjs.entry.js +25 -27
  7. package/dist/cjs/searchcraft-auto-search-form_13.cjs.entry.js.map +1 -1
  8. package/dist/cjs/searchcraft-base-search-form.cjs.entry.js +1 -1
  9. package/dist/cjs/searchcraft-button-icon.cjs.entry.js +1 -1
  10. package/dist/cjs/searchcraft-button.cjs.entry.js +2 -2
  11. package/dist/cjs/searchcraft-javascript-sdk.cjs.js +2 -2
  12. package/dist/cjs/{utils-57b6c18f.js → utils-39791159.js} +11 -6
  13. package/dist/cjs/utils-39791159.js.map +1 -0
  14. package/dist/collection/components/searchcraft-base-search-result/searchcraft-base-search-result.js +21 -14
  15. package/dist/collection/components/searchcraft-base-search-result/searchcraft-base-search-result.js.map +1 -1
  16. package/dist/collection/components/searchcraft-base-search-results/searchcraft-base-search-results.js +9 -21
  17. package/dist/collection/components/searchcraft-base-search-results/searchcraft-base-search-results.js.map +1 -1
  18. package/dist/collection/components/searchcraft-button/searchcraft-button.js +1 -1
  19. package/dist/collection/components/searchcraft-error-message/searchcraft-error-message.js +1 -1
  20. package/dist/collection/components/searchcraft-spinner-dark/searchcraft-spinner-dark.js +1 -1
  21. package/dist/collection/components/searchcraft-spinner-light/searchcraft-spinner-light.js +1 -1
  22. package/dist/collection/index.js +1 -1
  23. package/dist/collection/index.js.map +1 -1
  24. package/dist/collection/utils/utils.js +9 -5
  25. package/dist/collection/utils/utils.js.map +1 -1
  26. package/dist/components/index.js +2 -2
  27. package/dist/components/{p-d0edf961.js → p-04e7305e.js} +2 -2
  28. package/dist/components/{p-d0edf961.js.map → p-04e7305e.js.map} +1 -1
  29. package/dist/components/{p-6f2a72d3.js → p-0c25e95d.js} +3 -3
  30. package/dist/components/{p-6f2a72d3.js.map → p-0c25e95d.js.map} +1 -1
  31. package/dist/components/{p-d446eda4.js → p-155f7a59.js} +2 -2
  32. package/dist/components/{p-d446eda4.js.map → p-155f7a59.js.map} +1 -1
  33. package/dist/components/{p-d6616aa5.js → p-16a533e3.js} +3 -3
  34. package/dist/components/{p-d6616aa5.js.map → p-16a533e3.js.map} +1 -1
  35. package/dist/components/{p-5e3152c4.js → p-17c94ac1.js} +11 -7
  36. package/dist/components/p-17c94ac1.js.map +1 -0
  37. package/dist/components/{p-cb75ba7a.js → p-199065b5.js} +2 -2
  38. package/dist/components/{p-cb75ba7a.js.map → p-199065b5.js.map} +1 -1
  39. package/dist/components/{p-b1ff2296.js → p-2cc8c074.js} +5 -5
  40. package/dist/components/{p-b1ff2296.js.map → p-2cc8c074.js.map} +1 -1
  41. package/dist/components/{p-1bd04bac.js → p-4244171c.js} +10 -10
  42. package/dist/components/{p-1bd04bac.js.map → p-4244171c.js.map} +1 -1
  43. package/dist/components/{p-1912bbbd.js → p-4f201f41.js} +18 -14
  44. package/dist/components/p-4f201f41.js.map +1 -0
  45. package/dist/components/{p-d54bca75.js → p-9283a3c2.js} +2 -2
  46. package/dist/components/{p-d54bca75.js.map → p-9283a3c2.js.map} +1 -1
  47. package/dist/components/{p-63035c6a.js → p-a7ab9d65.js} +3 -3
  48. package/dist/components/{p-63035c6a.js.map → p-a7ab9d65.js.map} +1 -1
  49. package/dist/components/{p-066c8210.js → p-c69651f6.js} +3 -3
  50. package/dist/components/p-c69651f6.js.map +1 -0
  51. package/dist/components/{p-8d9551ce.js → p-e8e40447.js} +3 -3
  52. package/dist/components/{p-8d9551ce.js.map → p-e8e40447.js.map} +1 -1
  53. package/dist/components/{p-c3838435.js → p-f83f2b59.js} +4 -4
  54. package/dist/components/{p-c3838435.js.map → p-f83f2b59.js.map} +1 -1
  55. package/dist/components/searchcraft-auto-search-form.js +12 -12
  56. package/dist/components/searchcraft-base-search-form.js +12 -12
  57. package/dist/components/searchcraft-base-search-result.js +1 -1
  58. package/dist/components/searchcraft-base-search-results.js +11 -29
  59. package/dist/components/searchcraft-base-search-results.js.map +1 -1
  60. package/dist/components/searchcraft-button-icon.js +1 -1
  61. package/dist/components/searchcraft-button.js +1 -1
  62. package/dist/components/searchcraft-clear-icon-set.js +1 -1
  63. package/dist/components/searchcraft-clear-input-button.js +1 -1
  64. package/dist/components/searchcraft-error-message.js +1 -1
  65. package/dist/components/searchcraft-input-caption.js +1 -1
  66. package/dist/components/searchcraft-input-icon.js +1 -1
  67. package/dist/components/searchcraft-input-label.js +1 -1
  68. package/dist/components/searchcraft-input.js +1 -1
  69. package/dist/components/searchcraft-search-icon-set.js +1 -1
  70. package/dist/components/searchcraft-spinner-dark.js +1 -1
  71. package/dist/components/searchcraft-spinner-light.js +1 -1
  72. package/dist/esm/{index-eace3343.js → index-0d9f850d.js} +4 -4
  73. package/dist/esm/index-0d9f850d.js.map +1 -0
  74. package/dist/esm/index.js +1 -1
  75. package/dist/esm/loader.js +3 -3
  76. package/dist/esm/searchcraft-auto-search-form_13.entry.js +25 -27
  77. package/dist/esm/searchcraft-auto-search-form_13.entry.js.map +1 -1
  78. package/dist/esm/searchcraft-base-search-form.entry.js +1 -1
  79. package/dist/esm/searchcraft-button-icon.entry.js +1 -1
  80. package/dist/esm/searchcraft-button.entry.js +2 -2
  81. package/dist/esm/searchcraft-javascript-sdk.js +3 -3
  82. package/dist/esm/{utils-02b18bb5.js → utils-7bff0c78.js} +11 -7
  83. package/dist/esm/utils-7bff0c78.js.map +1 -0
  84. package/dist/searchcraft-javascript-sdk/index.esm.js +1 -1
  85. package/dist/searchcraft-javascript-sdk/p-04e2f067.entry.js +2 -0
  86. package/dist/searchcraft-javascript-sdk/{p-562e923d.entry.js.map → p-04e2f067.entry.js.map} +1 -1
  87. package/dist/searchcraft-javascript-sdk/p-09af71e8.entry.js +2 -0
  88. package/dist/searchcraft-javascript-sdk/{p-437c6ef9.entry.js.map → p-09af71e8.entry.js.map} +1 -1
  89. package/dist/searchcraft-javascript-sdk/{p-5e3152c4.js → p-17c94ac1.js} +2 -2
  90. package/dist/searchcraft-javascript-sdk/p-17c94ac1.js.map +1 -0
  91. package/dist/searchcraft-javascript-sdk/{p-0ba9029b.js → p-329c3f66.js} +3 -3
  92. package/dist/searchcraft-javascript-sdk/p-329c3f66.js.map +1 -0
  93. package/dist/searchcraft-javascript-sdk/{p-5959cd6a.entry.js → p-40791ead.entry.js} +2 -2
  94. package/dist/searchcraft-javascript-sdk/{p-eb632a89.entry.js → p-4d18a44a.entry.js} +2 -2
  95. package/dist/searchcraft-javascript-sdk/searchcraft-javascript-sdk.esm.js +1 -1
  96. package/dist/searchcraft-javascript-sdk/searchcraft-javascript-sdk.esm.js.map +1 -1
  97. package/dist/types/components/searchcraft-base-search-result/searchcraft-base-search-result.d.ts +2 -1
  98. package/dist/types/components/searchcraft-base-search-results/searchcraft-base-search-results.d.ts +1 -2
  99. package/dist/types/components.d.ts +6 -4
  100. package/dist/types/index.d.ts +1 -1
  101. package/dist/types/utils/utils.d.ts +1 -5
  102. package/package.json +1 -1
  103. package/dist/cjs/index-e7e9ab69.js.map +0 -1
  104. package/dist/cjs/utils-57b6c18f.js.map +0 -1
  105. package/dist/components/p-066c8210.js.map +0 -1
  106. package/dist/components/p-1912bbbd.js.map +0 -1
  107. package/dist/components/p-5e3152c4.js.map +0 -1
  108. package/dist/esm/index-eace3343.js.map +0 -1
  109. package/dist/esm/utils-02b18bb5.js.map +0 -1
  110. package/dist/searchcraft-javascript-sdk/p-0ba9029b.js.map +0 -1
  111. package/dist/searchcraft-javascript-sdk/p-437c6ef9.entry.js +0 -2
  112. package/dist/searchcraft-javascript-sdk/p-562e923d.entry.js +0 -2
  113. package/dist/searchcraft-javascript-sdk/p-5e3152c4.js.map +0 -1
  114. /package/dist/searchcraft-javascript-sdk/{p-5959cd6a.entry.js.map → p-40791ead.entry.js.map} +0 -0
  115. /package/dist/searchcraft-javascript-sdk/{p-eb632a89.entry.js.map → p-4d18a44a.entry.js.map} +0 -0
@@ -1,9 +1,8 @@
1
- import { p as proxyCustomElement, H, h } from './p-066c8210.js';
1
+ import { p as proxyCustomElement, H, h } from './p-c69651f6.js';
2
2
  import { u as useSearchcraftStore } from './p-36c95064.js';
3
- import { a as parseSearchKeys, p as parseCustomStyles, e as extractDynamicProperties } from './p-5e3152c4.js';
4
- import { d as defineCustomElement$4 } from './p-1912bbbd.js';
5
- import { d as defineCustomElement$3 } from './p-d446eda4.js';
6
- import { d as defineCustomElement$2 } from './p-6f2a72d3.js';
3
+ import { a as parseSearchKeys, s as serializeStyles, e as extractDynamicProperties } from './p-17c94ac1.js';
4
+ import { d as defineCustomElement$3 } from './p-4f201f41.js';
5
+ import { d as defineCustomElement$2 } from './p-0c25e95d.js';
7
6
 
8
7
  const searchcraftBaseSearchResultsModuleCss = ":root{--font-stack:Helvetica, Arial, sans-serif}.resultsContainer{display:flex;flex-direction:column;justify-content:center;margin:100px 20px}.resultsContainer>p{align-self:center}.resultsContainer>div{margin-bottom:20px}.resultsContainer>div img{height:300px;width:200px}";
9
8
  const SearchcraftBaseSearchResultsStyle0 = searchcraftBaseSearchResultsModuleCss;
@@ -19,17 +18,14 @@ const SearchcraftBaseSearchResults$1 = /*@__PURE__*/ proxyCustomElement(class Se
19
18
  this.customStylesForResults = {};
20
19
  }
21
20
  componentDidLoad() {
22
- // Initialize searchKeys if not provided
23
21
  if (!this.searchKeys || this.searchKeys.length === 0) {
24
22
  console.warn('No searchKeys provided; using empty keys array.');
25
- this.searchKeys = ''; // Ensure it's explicitly set as an empty array
23
+ this.searchKeys = '';
26
24
  }
27
- // Subscribe to state changes
28
25
  this.unsubscribe = useSearchcraftStore.subscribe((state) => {
29
26
  this.searchResults = Object.assign({}, state.searchResults);
30
27
  this.query = state.query;
31
28
  });
32
- // Fetch initial state
33
29
  const { searchResults, query } = useSearchcraftStore.getState();
34
30
  this.searchResults = searchResults;
35
31
  this.query = query;
@@ -46,26 +42,17 @@ const SearchcraftBaseSearchResults$1 = /*@__PURE__*/ proxyCustomElement(class Se
46
42
  return h("div", null, "No results to display.");
47
43
  }
48
44
  const parsedSearchKeys = parseSearchKeys(this.searchKeys);
49
- const parsedCustomStyles = parseCustomStyles(this.customStylesForResults);
45
+ const serializedStyles = typeof this.customStylesForResults === 'string'
46
+ ? this.customStylesForResults
47
+ : serializeStyles(this.customStylesForResults);
50
48
  return (h("div", { class: 'resultsContainer' }, (_d = (_c = (_b = this.searchResults) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.hits) === null || _d === void 0 ? void 0 :
51
49
  _d.map((document, index) => {
52
50
  const { doc: result } = document;
53
51
  const dynamicProperties = extractDynamicProperties(result, parsedSearchKeys);
54
- // Render the custom element if present, otherwise fallback to default
55
- const customElement = this.hostElement.querySelector('[slot="result-template"]');
56
- if (customElement) {
57
- // Clone the custom element and pass data to it
58
- const customElementClone = customElement.cloneNode(true);
59
- customElementClone.removeAttribute('slot'); // Remove the slot attribute
60
- customElementClone.setAttribute('data-result', JSON.stringify(result));
61
- return (h("div", { key: `${dynamicProperties.id}-${index}` }, customElementClone.outerHTML));
62
- }
63
- // Fallback to the default element
64
- return (h("searchcraft-base-search-result", { key: `${dynamicProperties.id}-${index}`, "button-callback": () => console.log('button callback'), "result-callback": () => console.log('interactive element'), "keydown-callback": () => console.log('keydown'), "is-interactive": true, "heading-text": dynamicProperties[parsedSearchKeys[0]], "subheading-text": dynamicProperties[parsedSearchKeys[1]], "primary-content": dynamicProperties[parsedSearchKeys[2]], "secondary-content": dynamicProperties[parsedSearchKeys[3]], "tertiary-content": dynamicProperties[parsedSearchKeys[4]], "image-source": dynamicProperties[parsedSearchKeys[parsedSearchKeys.length - 1]], customStyles: parsedCustomStyles }));
52
+ return (h("searchcraft-base-search-result", { key: `${dynamicProperties.id}-${index}`, "button-callback": () => console.log('button callback'), "result-callback": () => console.log('interactive element'), "keydown-callback": () => console.log('keydown'), "is-interactive": true, "heading-text": dynamicProperties[parsedSearchKeys[0]], "subheading-text": dynamicProperties[parsedSearchKeys[1]], "primary-content": dynamicProperties[parsedSearchKeys[2]], "secondary-content": dynamicProperties[parsedSearchKeys[3]], "tertiary-content": dynamicProperties[parsedSearchKeys[4]], "image-source": dynamicProperties[parsedSearchKeys[parsedSearchKeys.length - 1]], "custom-styles": serializedStyles }));
65
53
  }), this.query.length > 0 &&
66
- ((_g = (_f = (_e = this.searchResults) === null || _e === void 0 ? void 0 : _e.data) === null || _f === void 0 ? void 0 : _f.hits) === null || _g === void 0 ? void 0 : _g.length) === 0 && (h("searchcraft-error-message", { "error-message": `No search results found for "${this.query}" query` })), h("slot", { name: 'result-template' })));
54
+ ((_g = (_f = (_e = this.searchResults) === null || _e === void 0 ? void 0 : _e.data) === null || _f === void 0 ? void 0 : _f.hits) === null || _g === void 0 ? void 0 : _g.length) === 0 && (h("searchcraft-error-message", { "error-message": `No search results found for "${this.query}" query` }))));
67
55
  }
68
- get hostElement() { return this; }
69
56
  static get style() { return SearchcraftBaseSearchResultsStyle0; }
70
57
  }, [1, "searchcraft-base-search-results", {
71
58
  "searchKeys": [1, "search-keys"],
@@ -77,7 +64,7 @@ function defineCustomElement$1() {
77
64
  if (typeof customElements === "undefined") {
78
65
  return;
79
66
  }
80
- const components = ["searchcraft-base-search-results", "searchcraft-base-search-result", "searchcraft-clear-icon-set", "searchcraft-error-message"];
67
+ const components = ["searchcraft-base-search-results", "searchcraft-base-search-result", "searchcraft-error-message"];
81
68
  components.forEach(tagName => { switch (tagName) {
82
69
  case "searchcraft-base-search-results":
83
70
  if (!customElements.get(tagName)) {
@@ -85,11 +72,6 @@ function defineCustomElement$1() {
85
72
  }
86
73
  break;
87
74
  case "searchcraft-base-search-result":
88
- if (!customElements.get(tagName)) {
89
- defineCustomElement$4();
90
- }
91
- break;
92
- case "searchcraft-clear-icon-set":
93
75
  if (!customElements.get(tagName)) {
94
76
  defineCustomElement$3();
95
77
  }
@@ -1 +1 @@
1
- {"file":"searchcraft-base-search-results.js","mappings":"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","names":["SearchcraftBaseSearchResults"],"sources":["src/components/searchcraft-base-search-results/searchcraft-base-search-results.module.scss?tag=searchcraft-base-search-results&encapsulation=shadow","src/components/searchcraft-base-search-results/searchcraft-base-search-results.tsx"],"sourcesContent":[":root {\n --font-stack: Helvetica, Arial, sans-serif;\n}\n\n.resultsContainer {\n display: flex;\n flex-direction: column;\n justify-content: center;\n margin: 100px 20px;\n\n & > p {\n align-self: center;\n }\n\n & > div {\n margin-bottom: 20px;\n img {\n height: 300px;\n width: 200px;\n }\n }\n}\n","import { Component, h, Prop, State, Element } from '@stencil/core';\nimport type { SearchcraftResponse } from '@searchcraft/core';\n\nimport { useSearchcraftStore } from '@provider/store';\nimport {\n extractDynamicProperties,\n parseCustomStyles,\n parseSearchKeys,\n} from '@utils/utils';\n\n@Component({\n tag: 'searchcraft-base-search-results',\n styleUrl: 'searchcraft-base-search-results.module.scss',\n shadow: true,\n})\nexport class SearchcraftBaseSearchResults {\n @State() query = '';\n @State() searchResults: SearchcraftResponse | null = null;\n\n /**\n * Array of keys to dynamically extract properties from each document.\n * Must be explicitly set by the parent component.\n */\n @Prop() searchKeys = '';\n\n /**\n * Custom styles to apply to search results.\n * Expected format: JSON string, e.g., '{\"borderRadius\": \"10px\", \"padding\": \"16px\"}'\n */\n @Prop() customStylesForResults: string | Record<string, string> = {};\n\n @Element() hostElement: HTMLElement; // Reference to the host element\n\n private unsubscribe: () => void;\n\n componentDidLoad() {\n // Initialize searchKeys if not provided\n if (!this.searchKeys || this.searchKeys.length === 0) {\n console.warn('No searchKeys provided; using empty keys array.');\n this.searchKeys = ''; // Ensure it's explicitly set as an empty array\n }\n\n // Subscribe to state changes\n this.unsubscribe = useSearchcraftStore.subscribe((state) => {\n this.searchResults = { ...state.searchResults };\n this.query = state.query;\n });\n\n // Fetch initial state\n const { searchResults, query } = useSearchcraftStore.getState();\n this.searchResults = searchResults;\n this.query = query;\n }\n\n disconnectedCallback() {\n if (this.unsubscribe) {\n this.unsubscribe();\n }\n }\n\n render() {\n if (!this.searchResults?.data) {\n console.warn('No search results data available');\n return <div>No results to display.</div>;\n }\n\n const parsedSearchKeys = parseSearchKeys(this.searchKeys);\n const parsedCustomStyles = parseCustomStyles(this.customStylesForResults);\n return (\n <div class='resultsContainer'>\n {this.searchResults?.data?.hits?.map((document, index) => {\n const { doc: result } = document;\n const dynamicProperties = extractDynamicProperties(\n result,\n parsedSearchKeys,\n );\n\n // Render the custom element if present, otherwise fallback to default\n const customElement = this.hostElement.querySelector(\n '[slot=\"result-template\"]',\n );\n if (customElement) {\n // Clone the custom element and pass data to it\n const customElementClone = customElement.cloneNode(\n true,\n ) as HTMLElement;\n customElementClone.removeAttribute('slot'); // Remove the slot attribute\n customElementClone.setAttribute(\n 'data-result',\n JSON.stringify(result),\n );\n return (\n <div key={`${dynamicProperties.id}-${index}`}>\n {customElementClone.outerHTML}\n </div>\n );\n }\n // Fallback to the default element\n return (\n <searchcraft-base-search-result\n key={`${dynamicProperties.id}-${index}`}\n button-callback={() => console.log('button callback')}\n result-callback={() => console.log('interactive element')}\n keydown-callback={() => console.log('keydown')}\n is-interactive={true}\n heading-text={dynamicProperties[parsedSearchKeys[0]]}\n subheading-text={dynamicProperties[parsedSearchKeys[1]]}\n primary-content={dynamicProperties[parsedSearchKeys[2]]}\n secondary-content={dynamicProperties[parsedSearchKeys[3]]}\n tertiary-content={dynamicProperties[parsedSearchKeys[4]]}\n image-source={\n dynamicProperties[parsedSearchKeys[parsedSearchKeys.length - 1]]\n }\n customStyles={parsedCustomStyles}\n />\n );\n })}\n\n {this.query.length > 0 &&\n this.searchResults?.data?.hits?.length === 0 && (\n <searchcraft-error-message\n error-message={`No search results found for \"${this.query}\" query`}\n />\n )}\n\n {/* Slot for custom element */}\n <slot name='result-template' />\n </div>\n );\n }\n}\n"],"version":3}
1
+ {"file":"searchcraft-base-search-results.js","mappings":"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","names":["SearchcraftBaseSearchResults"],"sources":["src/components/searchcraft-base-search-results/searchcraft-base-search-results.module.scss?tag=searchcraft-base-search-results&encapsulation=shadow","src/components/searchcraft-base-search-results/searchcraft-base-search-results.tsx"],"sourcesContent":[":root {\n --font-stack: Helvetica, Arial, sans-serif;\n}\n\n.resultsContainer {\n display: flex;\n flex-direction: column;\n justify-content: center;\n margin: 100px 20px;\n\n & > p {\n align-self: center;\n }\n\n & > div {\n margin-bottom: 20px;\n img {\n height: 300px;\n width: 200px;\n }\n }\n}\n","import { Component, h, Prop, State } from '@stencil/core';\nimport type { SearchcraftResponse } from '@searchcraft/core';\n\nimport { useSearchcraftStore } from '@provider/store';\nimport {\n extractDynamicProperties,\n parseSearchKeys,\n serializeStyles,\n} from '@utils/utils';\n\n@Component({\n tag: 'searchcraft-base-search-results',\n styleUrl: 'searchcraft-base-search-results.module.scss',\n shadow: true,\n})\nexport class SearchcraftBaseSearchResults {\n @State() query = '';\n @State() searchResults: SearchcraftResponse | null = null;\n\n /**\n * Array of keys to dynamically extract properties from each document.\n * Must be explicitly set by the parent component.\n */\n @Prop() searchKeys = '';\n /**\n * Custom styles to apply to search results.\n * Expected format: JSON string, e.g., '{\"borderRadius\": \"10px\", \"padding\": \"16px\"}'\n */\n @Prop() customStylesForResults:\n | string\n | Record<string, Record<string, string>> = {};\n\n private unsubscribe: () => void;\n\n componentDidLoad() {\n if (!this.searchKeys || this.searchKeys.length === 0) {\n console.warn('No searchKeys provided; using empty keys array.');\n this.searchKeys = '';\n }\n\n this.unsubscribe = useSearchcraftStore.subscribe((state) => {\n this.searchResults = { ...state.searchResults };\n this.query = state.query;\n });\n\n const { searchResults, query } = useSearchcraftStore.getState();\n this.searchResults = searchResults;\n this.query = query;\n }\n\n disconnectedCallback() {\n if (this.unsubscribe) {\n this.unsubscribe();\n }\n }\n\n render() {\n if (!this.searchResults?.data) {\n console.warn('No search results data available');\n return <div>No results to display.</div>;\n }\n\n const parsedSearchKeys = parseSearchKeys(this.searchKeys);\n const serializedStyles =\n typeof this.customStylesForResults === 'string'\n ? this.customStylesForResults\n : serializeStyles(this.customStylesForResults);\n\n return (\n <div class='resultsContainer'>\n {this.searchResults?.data?.hits?.map((document, index) => {\n const { doc: result } = document;\n const dynamicProperties = extractDynamicProperties(\n result,\n parsedSearchKeys,\n );\n\n return (\n <searchcraft-base-search-result\n key={`${dynamicProperties.id}-${index}`}\n button-callback={() => console.log('button callback')}\n result-callback={() => console.log('interactive element')}\n keydown-callback={() => console.log('keydown')}\n is-interactive={true}\n heading-text={dynamicProperties[parsedSearchKeys[0]]}\n subheading-text={dynamicProperties[parsedSearchKeys[1]]}\n primary-content={dynamicProperties[parsedSearchKeys[2]]}\n secondary-content={dynamicProperties[parsedSearchKeys[3]]}\n tertiary-content={dynamicProperties[parsedSearchKeys[4]]}\n image-source={\n dynamicProperties[parsedSearchKeys[parsedSearchKeys.length - 1]]\n }\n custom-styles={serializedStyles}\n />\n );\n })}\n {this.query.length > 0 &&\n this.searchResults?.data?.hits?.length === 0 && (\n <searchcraft-error-message\n error-message={`No search results found for \"${this.query}\" query`}\n />\n )}\n </div>\n );\n }\n}\n"],"version":3}
@@ -1,4 +1,4 @@
1
- import { p as proxyCustomElement, H, h } from './p-066c8210.js';
1
+ import { p as proxyCustomElement, H, h } from './p-c69651f6.js';
2
2
 
3
3
  const SearchcraftButtonIcon$1 = /*@__PURE__*/ proxyCustomElement(class SearchcraftButtonIcon extends H {
4
4
  constructor() {
@@ -1,4 +1,4 @@
1
- import { S as SearchcraftButton$1, d as defineCustomElement$1 } from './p-c3838435.js';
1
+ import { S as SearchcraftButton$1, d as defineCustomElement$1 } from './p-f83f2b59.js';
2
2
 
3
3
  const SearchcraftButton = SearchcraftButton$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { S as SearchcraftClearIconSet$1, d as defineCustomElement$1 } from './p-d446eda4.js';
1
+ import { S as SearchcraftClearIconSet$1, d as defineCustomElement$1 } from './p-155f7a59.js';
2
2
 
3
3
  const SearchcraftClearIconSet = SearchcraftClearIconSet$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { S as SearchcraftClearInputButton$1, d as defineCustomElement$1 } from './p-b1ff2296.js';
1
+ import { S as SearchcraftClearInputButton$1, d as defineCustomElement$1 } from './p-2cc8c074.js';
2
2
 
3
3
  const SearchcraftClearInputButton = SearchcraftClearInputButton$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { S as SearchcraftErrorMessage$1, d as defineCustomElement$1 } from './p-6f2a72d3.js';
1
+ import { S as SearchcraftErrorMessage$1, d as defineCustomElement$1 } from './p-0c25e95d.js';
2
2
 
3
3
  const SearchcraftErrorMessage = SearchcraftErrorMessage$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { S as SearchcraftInputCaption$1, d as defineCustomElement$1 } from './p-cb75ba7a.js';
1
+ import { S as SearchcraftInputCaption$1, d as defineCustomElement$1 } from './p-199065b5.js';
2
2
 
3
3
  const SearchcraftInputCaption = SearchcraftInputCaption$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { S as SearchcraftInputIcon$1, d as defineCustomElement$1 } from './p-63035c6a.js';
1
+ import { S as SearchcraftInputIcon$1, d as defineCustomElement$1 } from './p-a7ab9d65.js';
2
2
 
3
3
  const SearchcraftInputIcon = SearchcraftInputIcon$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { S as SearchcraftInputLabel$1, d as defineCustomElement$1 } from './p-d54bca75.js';
1
+ import { S as SearchcraftInputLabel$1, d as defineCustomElement$1 } from './p-9283a3c2.js';
2
2
 
3
3
  const SearchcraftInputLabel = SearchcraftInputLabel$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { S as SearchcraftInput$1, d as defineCustomElement$1 } from './p-1bd04bac.js';
1
+ import { S as SearchcraftInput$1, d as defineCustomElement$1 } from './p-4244171c.js';
2
2
 
3
3
  const SearchcraftInput = SearchcraftInput$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { S as SearchcraftSearchIconSet$1, d as defineCustomElement$1 } from './p-d0edf961.js';
1
+ import { S as SearchcraftSearchIconSet$1, d as defineCustomElement$1 } from './p-04e7305e.js';
2
2
 
3
3
  const SearchcraftSearchIconSet = SearchcraftSearchIconSet$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { S as SearchcraftSpinnerDark$1, d as defineCustomElement$1 } from './p-d6616aa5.js';
1
+ import { S as SearchcraftSpinnerDark$1, d as defineCustomElement$1 } from './p-16a533e3.js';
2
2
 
3
3
  const SearchcraftSpinnerDark = SearchcraftSpinnerDark$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { S as SearchcraftSpinnerLight$1, d as defineCustomElement$1 } from './p-8d9551ce.js';
1
+ import { S as SearchcraftSpinnerLight$1, d as defineCustomElement$1 } from './p-e8e40447.js';
2
2
 
3
3
  const SearchcraftSpinnerLight = SearchcraftSpinnerLight$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,5 +1,5 @@
1
1
  const NAMESPACE = 'searchcraft-javascript-sdk';
2
- const BUILD = /* searchcraft-javascript-sdk */ { allRenderFn: true, appendChildSlotFix: false, asyncLoading: true, asyncQueue: false, attachStyles: true, cloneNodeFix: false, cmpDidLoad: true, cmpDidRender: false, cmpDidUnload: false, cmpDidUpdate: false, cmpShouldUpdate: false, cmpWillLoad: false, cmpWillRender: false, cmpWillUpdate: false, connectedCallback: false, constructableCSS: true, cssAnnotations: true, devTools: false, disconnectedCallback: true, element: false, event: true, experimentalScopedSlotChanges: false, experimentalSlotFixes: false, formAssociated: false, hasRenderFn: true, hostListener: false, hostListenerTarget: false, hostListenerTargetBody: false, hostListenerTargetDocument: false, hostListenerTargetParent: false, hostListenerTargetWindow: false, hotModuleReplacement: false, hydrateClientSide: false, hydrateServerSide: false, hydratedAttribute: false, hydratedClass: true, hydratedSelectorName: "hydrated", initializeNextTick: false, invisiblePrehydration: true, isDebug: false, isDev: false, isTesting: false, lazyLoad: true, lifecycle: true, lifecycleDOMEvents: false, member: true, method: false, mode: false, observeAttribute: true, profile: false, prop: true, propBoolean: true, propMutable: false, propNumber: false, propString: true, reflect: false, scoped: false, scopedSlotTextContentFix: false, scriptDataOpts: false, shadowDelegatesFocus: false, shadowDom: true, slot: true, slotChildNodesFix: false, slotRelocation: false, state: true, style: true, svg: true, taskQueue: true, transformTagName: false, updatable: true, vdomAttribute: true, vdomClass: true, vdomFunctional: true, vdomKey: true, vdomListener: true, vdomPropOrAttr: true, vdomRef: false, vdomRender: true, vdomStyle: true, vdomText: true, vdomXlink: false, watchCallback: false };
2
+ const BUILD = /* searchcraft-javascript-sdk */ { allRenderFn: true, appendChildSlotFix: false, asyncLoading: true, asyncQueue: false, attachStyles: true, cloneNodeFix: false, cmpDidLoad: true, cmpDidRender: false, cmpDidUnload: false, cmpDidUpdate: false, cmpShouldUpdate: false, cmpWillLoad: false, cmpWillRender: false, cmpWillUpdate: false, connectedCallback: false, constructableCSS: true, cssAnnotations: true, devTools: false, disconnectedCallback: true, element: false, event: true, experimentalScopedSlotChanges: false, experimentalSlotFixes: false, formAssociated: false, hasRenderFn: true, hostListener: false, hostListenerTarget: false, hostListenerTargetBody: false, hostListenerTargetDocument: false, hostListenerTargetParent: false, hostListenerTargetWindow: false, hotModuleReplacement: false, hydrateClientSide: false, hydrateServerSide: false, hydratedAttribute: false, hydratedClass: true, hydratedSelectorName: "hydrated", initializeNextTick: false, invisiblePrehydration: true, isDebug: false, isDev: false, isTesting: false, lazyLoad: true, lifecycle: true, lifecycleDOMEvents: false, member: true, method: false, mode: false, observeAttribute: true, profile: false, prop: true, propBoolean: true, propMutable: false, propNumber: false, propString: true, reflect: false, scoped: false, scopedSlotTextContentFix: false, scriptDataOpts: false, shadowDelegatesFocus: false, shadowDom: true, slot: false, slotChildNodesFix: false, slotRelocation: false, state: true, style: true, svg: true, taskQueue: true, transformTagName: false, updatable: true, vdomAttribute: true, vdomClass: true, vdomFunctional: true, vdomKey: true, vdomListener: true, vdomPropOrAttr: true, vdomRef: false, vdomRender: true, vdomStyle: true, vdomText: true, vdomXlink: false, watchCallback: false };
3
3
 
4
4
  /*
5
5
  Stencil Client Platform v4.22.3 | MIT Licensed | https://stenciljs.com
@@ -717,7 +717,7 @@ var patch = (oldVNode, newVNode2, isInitialRender = false) => {
717
717
  isSvgMode = tag === "svg" ? true : tag === "foreignObject" ? false : isSvgMode;
718
718
  }
719
719
  {
720
- if (tag === "slot" && !useNativeShadowDom) ; else {
720
+ {
721
721
  updateElement(oldVNode, newVNode2, isSvgMode);
722
722
  }
723
723
  }
@@ -1237,6 +1237,6 @@ var Fragment = (_, children) => children;
1237
1237
  // src/runtime/nonce.ts
1238
1238
  var setNonce = (nonce) => plt.$nonce$ = nonce;
1239
1239
 
1240
- export { Fragment as F, bootstrapLazy as b, createEvent as c, getElement as g, h, promiseResolve as p, registerInstance as r, setNonce as s };
1240
+ export { Fragment as F, bootstrapLazy as b, createEvent as c, h, promiseResolve as p, registerInstance as r, setNonce as s };
1241
1241
 
1242
- //# sourceMappingURL=index-eace3343.js.map
1242
+ //# sourceMappingURL=index-0d9f850d.js.map