@searchcraft/javascript-sdk 0.10.5 → 0.10.7
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.
- package/dist/components/index.d.ts +16 -7
- package/dist/components/index.js +4 -4
- package/dist/components/{p-7c10ca44.js → p-062d6b80.js} +388 -365
- package/dist/components/p-062d6b80.js.map +1 -0
- package/dist/components/{p-b72015a6.js → p-274c5cc8.js} +2 -2
- package/dist/components/{p-b72015a6.js.map → p-274c5cc8.js.map} +1 -1
- package/dist/components/{p-6c471ee0.js → p-320e3895.js} +2 -2
- package/dist/components/{p-6c471ee0.js.map → p-320e3895.js.map} +1 -1
- package/dist/components/{p-bfad84c6.js → p-acab4d41.js} +8 -12
- package/dist/components/p-acab4d41.js.map +1 -0
- package/dist/components/{p-f1afb299.js → p-adc6236e.js} +80 -35
- package/dist/components/p-adc6236e.js.map +1 -0
- package/dist/components/{p-d9222264.js → p-b01f8216.js} +11 -11
- package/dist/components/p-b01f8216.js.map +1 -0
- package/dist/components/{p-f4b0ff45.js → p-b4cac872.js} +2 -2
- package/dist/components/{p-f4b0ff45.js.map → p-b4cac872.js.map} +1 -1
- package/dist/components/{p-bb700499.js → p-e99cd628.js} +104 -36
- package/dist/components/p-e99cd628.js.map +1 -0
- package/dist/components/{p-8a4cfe99.js → p-ea48ccae.js} +2 -2
- package/dist/components/{p-8a4cfe99.js.map → p-ea48ccae.js.map} +1 -1
- package/dist/components/searchcraft-ad.js +1 -1
- package/dist/components/searchcraft-facet-list.js +1 -1
- package/dist/components/searchcraft-filter-panel.js +3 -3
- package/dist/components/searchcraft-input-form.js +1 -1
- package/dist/components/searchcraft-pagination.js +1 -1
- package/dist/components/searchcraft-popover-button.js +1 -1
- package/dist/components/searchcraft-popover-footer.js +1 -1
- package/dist/components/searchcraft-popover-form.js +6 -6
- package/dist/components/searchcraft-popover-list-item.js +1 -1
- package/dist/components/searchcraft-popover-list-view.js +1 -1
- package/dist/components/searchcraft-results-info.js +1 -1
- package/dist/components/searchcraft-search-result.js +1 -1
- package/dist/components/searchcraft-search-results-per-page.js +1 -1
- package/dist/components/searchcraft-search-results.js +10 -10
- package/dist/components/searchcraft-search-results.js.map +1 -1
- package/dist/components/searchcraft-toggle-button.js +1 -1
- package/dist/hydrate/index.js +402 -296
- package/dist/hydrate/index.mjs +402 -296
- package/dist/types/components/searchcraft-ad/searchcraft-ad.d.ts +22 -2
- package/dist/types/components/searchcraft-facet-list/searchcraft-facet-list.d.ts +17 -6
- package/dist/types/components.d.ts +8 -2
- package/dist/types/store/SearchcraftStore.types.d.ts +4 -3
- package/dist/types/utils/facets.d.ts +11 -1
- package/package.json +3 -3
- package/dist/components/p-7c10ca44.js.map +0 -1
- package/dist/components/p-bb700499.js.map +0 -1
- package/dist/components/p-bfad84c6.js.map +0 -1
- package/dist/components/p-d9222264.js.map +0 -1
- package/dist/components/p-f1afb299.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"p-e99cd628.js","mappings":"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","names":[],"sources":["src/utils/facets.ts","src/components/searchcraft-facet-list/searchcraft-facet-list.tsx"],"sourcesContent":["import type {\n Facet,\n FacetTree,\n FacetWithChildrenArray,\n FacetWithChildrenObject,\n} from '@searchcraft/core';\n\n/**\n * Helper function for getting a Node (FacetWithChildrenObject)\n * at a given path. Traverses the node tree to get the node.\n */\nexport const getFacetTreeNodeAtPath = (\n tree: FacetTree,\n nodePaths: string[],\n): FacetWithChildrenObject | undefined => {\n let cursor: FacetWithChildrenObject | undefined = tree;\n for (const nodePath of nodePaths) {\n cursor = cursor?.children[nodePath];\n }\n\n return cursor;\n};\n\n/**\n * Helper function to perform a deep merge.\n * Used for merging two branches of a facet tree together.\n */\nexport const deepMergeWithSpread = (obj1, obj2) => {\n const result = { ...obj1 };\n\n for (const key in obj2) {\n // biome-ignore lint/suspicious/noPrototypeBuiltins: <explanation>\n if (obj2.hasOwnProperty(key)) {\n if (obj2[key] instanceof Object && obj1[key] instanceof Object) {\n result[key] = deepMergeWithSpread(obj1[key], obj2[key]);\n } else {\n result[key] = obj2[key];\n }\n }\n }\n\n return result;\n};\n\n/**\n * Given an array of facet paths, removes parent facet paths so that only the\n * Leaf facets are sent with the search request.\n */\nexport function removeSubstringMatches(arr: string[]): string[] {\n return arr.filter(\n (entry, index, array) =>\n !array.some(\n (otherEntry, otherIndex) =>\n otherIndex !== index && otherEntry.includes(entry),\n ),\n );\n}\n\n/**\n * Merges a current facet tree with an incoming facet tree.\n *\n * At each branch, the incoming facet tree's facets override current facet tree\n *\n * @param currentTree\n * @param incomingTree\n */\nexport const mergeFacetTrees = (\n currentTree: FacetTree,\n incomingTree: FacetTree,\n): FacetTree => {\n const mergedTree: FacetTree = structuredClone(currentTree);\n\n const merge = (\n currentBranch: FacetWithChildrenObject,\n nodePath: string[],\n ): FacetWithChildrenObject => {\n const mergedBranch = structuredClone(currentBranch);\n const incomingBranch = getFacetTreeNodeAtPath(incomingTree, nodePath);\n\n if (!incomingBranch) {\n return mergedBranch;\n }\n\n for (const nodeName of Object.keys(currentBranch.children)) {\n if (incomingBranch.children[nodeName]) {\n mergedBranch.children[nodeName] = {\n ...deepMergeWithSpread(\n currentBranch.children[nodeName],\n incomingBranch.children[nodeName],\n ),\n count: mergedBranch.children[nodeName]?.count || 0,\n };\n } else if (mergedBranch.children[nodeName]) {\n mergedBranch.children[nodeName] = merge(\n mergedBranch.children[nodeName],\n [...nodePath, nodeName],\n );\n }\n }\n\n return mergedBranch;\n };\n\n return merge(mergedTree, []);\n};\n\n/**\n * A function that converts a FacetWithChidrenArray to a complete FacetTree object.\n *\n * It uses the `path` of each Facet to build the tree.\n *\n * @param facetWithChildArray\n */\nexport const facetWithChildrenArrayToCompleteFacetTree = (\n rootArray: FacetWithChildrenArray,\n): FacetTree => {\n // 1) Start with an empty tree at root \"/\"\n const tree: FacetTree = {\n path: '/',\n count: 0,\n children: {},\n };\n\n // 2) Recursively collect all nodes except the implicit \"/\" itself\n const allFacets: Facet[] = [];\n const collect = (node: FacetWithChildrenArray) => {\n if (node.path !== '/') {\n allFacets.push({ path: node.path, count: node.count });\n }\n if (node.children) {\n for (const child of node.children) {\n collect(child);\n }\n }\n };\n collect(rootArray);\n\n // 3) Insert each flat node into our tree, creating missing ancestors\n for (const { path, count } of allFacets) {\n const segments = path.split('/').filter(Boolean); // \"/sports/outdoors\" -> [\"sports\",\"outdoors\"]\n let cursor: FacetWithChildrenObject = tree; // start at the root\n for (const segment of segments) {\n // Build the full path of this level\n const prefixPath =\n cursor.path === '/' ? `/${segment}` : `${cursor.path}/${segment}`;\n\n // If this segment doesn't exist yet, create it\n if (!cursor.children[segment]) {\n cursor.children[segment] = {\n path: prefixPath,\n count: count,\n children: {},\n };\n }\n\n // Descend to the next level deeper\n cursor = cursor.children[segment];\n }\n\n // 4) now `cursor` is the node matching `path` — assign its real count\n cursor.count = count;\n }\n\n return tree;\n};\n","import {\n Component,\n h,\n State,\n Prop,\n Event,\n type EventEmitter,\n} from '@stencil/core';\n\nimport type {\n FacetRoot,\n FacetWithChildrenArray,\n FacetWithChildrenObject,\n} from '@searchcraft/core';\n\nimport { searchcraftStore, type SearchcraftState } from '@store';\nimport {\n deepMergeWithSpread,\n facetWithChildrenArrayToCompleteFacetTree,\n getFacetTreeNodeAtPath,\n mergeFacetTrees,\n removeSubstringMatches,\n} from '@utils';\n\ntype HandlerActionType =\n | 'SEARCH_TERM_EMPTY'\n | 'NEW_SEARCH_TERM'\n | 'NEW_SEARCH_TERM_WHILE_FACETS_ACTIVE'\n | 'RANGE_VALUE_UPDATE'\n | 'EXACT_MATCH_UPDATE'\n | 'SORT_ORDER_UPDATE'\n | 'FACET_UPDATE'\n | 'UNKNOWN';\n\n/**\n * This web component is designed to display facets in a search interface, allowing users to refine their search results by applying filters based on various attributes.\n * It is consumed within the `searchcraft-filter-panel`.\n *\n * @js-example\n * ```html\n * <!-- index.html -->\n * <searchcraft-facet-list field-name=\"title\" />\n * ```\n *\n * ```js\n * // index.js\n * const facetList = document.querySelector('searchcraft-facet-list');\n *\n * facetList.addEventListener('facetSelectionUpdated', () => {\n * console.log('Facet selection updated');\n * });\n * ```\n *\n * @internal\n */\n@Component({\n tag: 'searchcraft-facet-list',\n shadow: false,\n})\nexport class SearchcraftFacetList {\n /**\n * The name of the field where facets are applied.\n */\n @Prop() fieldName = '';\n\n /**\n * Emitted when the facets are updated.\n */\n @Event() facetSelectionUpdated?: EventEmitter<{ paths: string[] }>;\n\n /**\n * The currently selected facet paths.\n */\n @State() selectedPaths: Record<string, boolean> = {};\n\n /**\n * A Tree representing all of the facets collected from search responses.\n */\n @State() facetTreeCollectedFromSearchResponse: FacetWithChildrenObject = {\n path: '/',\n count: 0,\n children: {},\n };\n\n /**\n * A Tree representing the facet paths that are selected, but were not included\n * in any search response.\n */\n facetTreeFromFacetPathsNotInSearchResponse: FacetWithChildrenObject = {\n path: '/',\n count: 0,\n children: {},\n };\n\n /**\n * The facet tree that ultimately gets rendered.\n * This is a mergin of the facetTreeCollectedFromSearchResponse and the facetTreeFromFacetPathsNotInSearchResponse tree\n */\n @State() renderedFacetTree: FacetWithChildrenObject = {\n path: '/',\n count: 0,\n children: {},\n };\n\n // Internal vars used to track when to perform various facet actions.\n private lastTimeTaken?: number;\n private lastSearchTerm?: string;\n private lastSearchMode?: string;\n private lastSortType?: string | null;\n private lastRangeValues?: string;\n private lastFacetValues?: string;\n\n private unsubscribe?: () => void;\n\n get areAnyFacetPathsSelected(): boolean {\n return Object.keys(this.selectedPaths).some(\n (key) => this.selectedPaths[key],\n );\n }\n\n handleIncomingSearchResponse(\n state: SearchcraftState,\n actionType: HandlerActionType,\n ) {\n // Look at the incoming facet root from the search response, and convert it to a FacetTree\n const incomingFacetRoot: FacetRoot | undefined =\n state.searchResponseFacetPrime?.find(\n (facet) => this.fieldName === Object.keys(facet)[0],\n );\n const incomingFacetsWithChildrenArray = incomingFacetRoot?.[this.fieldName];\n const incomingFacetTree = facetWithChildrenArrayToCompleteFacetTree({\n path: '/',\n count: 0,\n children: incomingFacetsWithChildrenArray || [],\n });\n\n // Determine what action to take to accumulate items into the `facetTreeCollectedFromSearchResponse`.\n // This facet tree gets accumulated in different ways depending on what action type occured.\n switch (actionType) {\n case 'SEARCH_TERM_EMPTY':\n this.facetTreeCollectedFromSearchResponse = {\n path: '/',\n count: 0,\n children: {},\n };\n break;\n case 'NEW_SEARCH_TERM':\n this.facetTreeCollectedFromSearchResponse = incomingFacetTree;\n break;\n case 'NEW_SEARCH_TERM_WHILE_FACETS_ACTIVE':\n case 'EXACT_MATCH_UPDATE':\n case 'RANGE_VALUE_UPDATE': {\n if (state.supplementalFacetPrime) {\n const supplementalFacetRoot: FacetRoot | undefined =\n state.supplementalFacetPrime?.find(\n (facet) => this.fieldName === Object.keys(facet)[0],\n );\n const supplementalFacetsWithChildrenArray =\n supplementalFacetRoot?.[this.fieldName];\n const supplementalFacetTree =\n facetWithChildrenArrayToCompleteFacetTree({\n path: '/',\n count: 0,\n children: supplementalFacetsWithChildrenArray || [],\n });\n\n this.facetTreeCollectedFromSearchResponse = mergeFacetTrees(\n supplementalFacetTree,\n incomingFacetTree,\n );\n } else {\n this.facetTreeCollectedFromSearchResponse = incomingFacetTree;\n }\n break;\n }\n case 'FACET_UPDATE':\n case 'SORT_ORDER_UPDATE':\n this.facetTreeCollectedFromSearchResponse = mergeFacetTrees(\n this.facetTreeCollectedFromSearchResponse,\n incomingFacetTree,\n );\n break;\n default:\n return;\n }\n\n // Determine if there are any selected facet paths not in the current tree.\n // If there are, we add them to \"facetTreeFromFacetPathsNotInSearchResponse\"\n this.facetTreeFromFacetPathsNotInSearchResponse = {\n path: '/',\n count: 0,\n children: {},\n };\n const collectedFacetArray: FacetWithChildrenArray = {\n path: '/',\n count: 0,\n children: [],\n };\n for (const pathName of Object.keys(this.selectedPaths).filter(\n (path) => this.selectedPaths[path],\n )) {\n const nodePaths = pathName.startsWith('/')\n ? pathName.substring(1).split('/')\n : pathName.split('/');\n\n const wasFoundInFacetTree = !!getFacetTreeNodeAtPath(\n this.facetTreeCollectedFromSearchResponse,\n nodePaths,\n );\n\n const pathKeyName = nodePaths.at(-1);\n if (!wasFoundInFacetTree && pathKeyName) {\n collectedFacetArray.children?.push({\n children: [],\n count: 0,\n path: pathName,\n });\n }\n }\n this.facetTreeFromFacetPathsNotInSearchResponse =\n facetWithChildrenArrayToCompleteFacetTree(collectedFacetArray);\n\n // Merges facetTreeCollectedFromSearchResponse with selectedFacetPathsNotInCurrentFacetTree.\n // This results in a single, final facet tree that gets rendered in as Checkboxes\n this.renderedFacetTree = deepMergeWithSpread(\n this.facetTreeFromFacetPathsNotInSearchResponse,\n this.facetTreeCollectedFromSearchResponse,\n );\n }\n\n handleStateUpdate(_state: SearchcraftState) {\n const state = { ..._state };\n // Determine what action to take based on the current State\n if (state.searchTerm.trim() === '') {\n this.handleIncomingSearchResponse(state, 'SEARCH_TERM_EMPTY');\n this.lastSearchTerm = '';\n } else if (\n this.lastTimeTaken !== state.searchResponseTimeTaken &&\n state.searchClientRequest &&\n typeof state.searchClientRequest === 'object'\n ) {\n const request = state.searchClientRequest;\n let actionType: HandlerActionType = 'UNKNOWN';\n\n if (this.lastSearchTerm !== request.searchTerm) {\n if (this.areAnyFacetPathsSelected) {\n actionType = 'NEW_SEARCH_TERM_WHILE_FACETS_ACTIVE';\n } else {\n actionType = 'NEW_SEARCH_TERM';\n }\n } else if (\n this.lastRangeValues !==\n JSON.stringify(request.rangeValueForIndexFields)\n ) {\n actionType = 'RANGE_VALUE_UPDATE';\n } else if (\n this.lastFacetValues !==\n JSON.stringify(request.facetPathsForIndexFields)\n ) {\n actionType = 'FACET_UPDATE';\n } else if (this.lastSortType !== request.order_by) {\n actionType = 'SORT_ORDER_UPDATE';\n } else if (this.lastSearchMode !== request.mode) {\n actionType = 'EXACT_MATCH_UPDATE';\n }\n\n this.lastRangeValues = JSON.stringify(request.rangeValueForIndexFields);\n this.lastFacetValues = JSON.stringify(request.facetPathsForIndexFields);\n this.lastSortType = request.order_by;\n this.lastSearchMode = request.mode;\n this.lastSearchTerm = request.searchTerm;\n this.lastTimeTaken = state.searchResponseTimeTaken;\n // Handle the incoming response, using the action we have determined.\n this.handleIncomingSearchResponse(state, actionType);\n }\n }\n\n connectedCallback() {\n this.handleStateUpdate(searchcraftStore.getState());\n\n this.unsubscribe = searchcraftStore.subscribe((state) => {\n this.handleStateUpdate(state);\n });\n }\n\n disconnectedCallback() {\n this.unsubscribe?.();\n }\n\n handleCheckboxChange(path: string) {\n const isCheckboxChecked = !this.selectedPaths[path];\n\n if (isCheckboxChecked) {\n /**\n * Checkbox Checked: Add to the selectedPaths record\n * Uses spread operator here so UI updates.\n */\n this.selectedPaths = {\n ...this.selectedPaths,\n [path]: true,\n };\n } else {\n /**\n * Checkbox Uncheck: Remove any paths and sub-paths\n */\n const updatedPaths = Object.keys(this.selectedPaths).filter(\n (testPath) => !testPath.includes(path),\n );\n\n this.selectedPaths = updatedPaths.reduce(\n (acc, str) => {\n acc[str] = true;\n return acc;\n },\n {} as Record<string, boolean>,\n );\n }\n\n /**\n * Emit the paths array, with parent paths removed.\n */\n const paths = Object.keys(this.selectedPaths).filter(\n (path) => this.selectedPaths[path],\n );\n const pathsWithParentPathsRemoved = removeSubstringMatches(paths);\n\n this.facetSelectionUpdated?.emit({ paths: pathsWithParentPathsRemoved });\n }\n\n formatFacetName = (name: string): string => {\n const label = name.replace(/^\\//, '');\n return `${label.replace(/-/g, ' ').replace(/\\b\\w/g, (char) => char.toUpperCase())}`;\n };\n\n renderFacet(keyName: string, facet: FacetWithChildrenObject) {\n let isChildSelected = false;\n for (const path of Object.keys(this.selectedPaths)) {\n if (\n this.selectedPaths[path] &&\n path.startsWith(facet.path) &&\n path.length > facet.path.length\n ) {\n isChildSelected = true;\n }\n }\n\n const isSelected = Object.keys(this.selectedPaths).includes(facet.path);\n\n const shouldRenderChildren =\n (Object.keys(facet.children).length > 0 &&\n (isSelected || isChildSelected)) ||\n keyName === '@@root';\n\n return (\n <div class='searchcraft-facet-list-item'>\n {keyName !== '@@root' && (\n <label class='searchcraft-facet-list-checkbox-label'>\n <div class='searchcraft-facet-list-checkbox-input-wrapper'>\n <input\n class='searchcraft-facet-list-checkbox-input'\n checked={this.selectedPaths[facet.path]}\n onChange={(_event: Event) => {\n this.handleCheckboxChange(facet.path);\n }}\n type='checkbox'\n />\n {isChildSelected ? (\n <div class='searchcraft-facet-list-checkbox-input-dash-icon'>\n <svg viewBox='0 0 14 3' fill='none'>\n <title>Checkbox dash</title>\n <line\n x1='1.5'\n y1='1.5'\n x2='12.5'\n y2='1.5'\n stroke='white'\n stroke-width='3'\n stroke-linecap='round'\n />\n </svg>\n </div>\n ) : (\n <div class='searchcraft-facet-list-checkbox-input-check-icon'>\n <svg width='16' height='16' viewBox='0 0 16 16' fill='none'>\n <title>Checkbox check</title>\n <path\n d='M13.9999 2L5.74988 10L1.99988 6.36364'\n stroke='white'\n stroke-width='3'\n stroke-linecap='round'\n stroke-linejoin='round'\n />\n </svg>\n </div>\n )}\n </div>\n <span>\n {this.formatFacetName(keyName)} ({facet.count})\n </span>\n </label>\n )}\n {shouldRenderChildren && (\n <div\n class='searchcraft-facet-list'\n style={{\n paddingLeft: keyName !== '@@root' ? '24px' : '0px',\n paddingTop: keyName !== '@@root' ? '6px' : '0px',\n }}\n >\n {Object.keys(facet.children).map((key) => {\n if (facet.children[key]) {\n return this.renderFacet(key, facet.children[key]);\n }\n })}\n </div>\n )}\n </div>\n );\n }\n\n render() {\n if (!this.fieldName) {\n return;\n }\n\n if (\n Object.keys(this.facetTreeCollectedFromSearchResponse.children).length ===\n 0 &&\n (this.lastSearchTerm || '').trim().length === 0\n ) {\n return;\n }\n\n if (\n Object.keys(this.facetTreeCollectedFromSearchResponse.children).length ===\n 0 &&\n (this.lastSearchTerm || '').trim().length > 0\n ) {\n return (\n <p class='searchcraft-facet-list-message'>\n No facets are available for this search query.\n </p>\n );\n }\n\n return (\n <div class='searchcraft-facet-list'>\n {this.renderFacet('@@root', this.renderedFacetTree)}\n </div>\n );\n }\n}\n"],"version":3}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { p as proxyCustomElement, H, c as createEvent, h } from './p-5365011f.js';
|
|
2
|
-
import { s as searchcraftStore } from './p-
|
|
2
|
+
import { s as searchcraftStore } from './p-062d6b80.js';
|
|
3
3
|
import { c as classNames } from './p-5cdc6210.js';
|
|
4
4
|
|
|
5
5
|
const SearchcraftToggleButton = /*@__PURE__*/ proxyCustomElement(class SearchcraftToggleButton extends H {
|
|
@@ -68,4 +68,4 @@ function defineCustomElement() {
|
|
|
68
68
|
|
|
69
69
|
export { SearchcraftToggleButton as S, defineCustomElement as d };
|
|
70
70
|
|
|
71
|
-
//# sourceMappingURL=p-
|
|
71
|
+
//# sourceMappingURL=p-ea48ccae.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"p-
|
|
1
|
+
{"file":"p-ea48ccae.js","mappings":";;;;MAoBa,uBAAuB;;;;;;;;;IAI1B,KAAK,GAAG,QAAQ,CAAC;;;;IAIjB,QAAQ,CAAqB;;;;IAK5B,aAAa,CAAyB;IAEtC,QAAQ,GAAG,KAAK,CAAC;IACjB,WAAW,CAA2B;IACtC,cAAc,CAAqB;IAEpC,YAAY,GAAG;QACrB,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACzC,CAAC;IAEF,iBAAiB;;QAEf,IAAI,CAAC,WAAW,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC,KAAK;YAClD,IACE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC,cAAc;gBACxC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EACpC;gBACA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;aACvB;YACD,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,UAAU,CAAC;SACxC,CAAC,CAAC;KACJ;IAED,oBAAoB;QAClB,IAAI,CAAC,WAAW,IAAI,CAAC;KACtB;IAED,MAAM;QACJ,QACE,4DACE,KAAK,EAAE,UAAU,CAAC,2BAA2B,EAAE;gBAC7C,kCAAkC,EAAE,IAAI,CAAC,QAAQ;aAClD,CAAC,IAEF,8DACE,0DAAG,KAAK,EAAC,iCAAiC,IAAE,IAAI,CAAC,KAAK,CAAK,EAC1D,IAAI,CAAC,QAAQ,KACZ,0DAAG,KAAK,EAAC,qCAAqC,IAAE,IAAI,CAAC,QAAQ,CAAK,CACnE,CACG,EACN,+DACE,KAAK,EAAC,sCAAsC,EAC5C,OAAO,EAAE,IAAI,CAAC,YAAY,EAC1B,IAAI,EAAC,QAAQ,IAEb,4DAAK,KAAK,EAAC,kCAAkC,GAAG,CACzC,CACL,EACN;KACH;;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":["src/components/searchcraft-toggle-button/searchcraft-toggle-button.tsx"],"sourcesContent":["import { searchcraftStore } from '@store';\nimport {\n Component,\n Event,\n h,\n Prop,\n State,\n type EventEmitter,\n} from '@stencil/core';\nimport classNames from 'classnames';\n\n/**\n * This web component simulates a light switch functionality, providing a simple and intuitive toggle between two states—on and off.\n *\n * @internal\n */\n@Component({\n tag: 'searchcraft-toggle-button',\n shadow: false,\n})\nexport class SearchcraftToggleButton {\n /**\n * The label.\n */\n @Prop() label = 'Toggle';\n /**\n * The secondary label displayed below the main label.\n */\n @Prop() subLabel: string | undefined;\n\n /**\n * When the toggle element is changed.\n */\n @Event() toggleUpdated?: EventEmitter<boolean>;\n\n @State() isActive = false;\n @State() unsubscribe: (() => void) | undefined;\n @State() lastSearchTerm: string | undefined;\n\n private handleToggle = async () => {\n this.isActive = !this.isActive;\n this.toggleUpdated?.emit(this.isActive);\n };\n\n connectedCallback() {\n /** When the query changes, sets toggle button state back to inactive. */\n this.unsubscribe = searchcraftStore.subscribe((state) => {\n if (\n state.searchTerm !== this.lastSearchTerm &&\n state.searchTerm.trim().length === 0\n ) {\n this.isActive = false;\n }\n this.lastSearchTerm = state.searchTerm;\n });\n }\n\n disconnectedCallback() {\n this.unsubscribe?.();\n }\n\n render() {\n return (\n <div\n class={classNames('searchcraft-toggle-button', {\n 'searchcraft-toggle-button-active': this.isActive,\n })}\n >\n <div>\n <p class='searchcraft-toggle-button-label'>{this.label}</p>\n {this.subLabel && (\n <p class='searchcraft-toggle-button-sub-label'>{this.subLabel}</p>\n )}\n </div>\n <button\n class='searchcraft-toggle-button-background'\n onClick={this.handleToggle}\n type='button'\n >\n <div class='searchcraft-toggle-button-handle' />\n </button>\n </div>\n );\n }\n}\n"],"version":3}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { S as SearchcraftPopoverListItemAd, d as defineCustomElement$1 } from './p-
|
|
1
|
+
import { S as SearchcraftPopoverListItemAd, d as defineCustomElement$1 } from './p-adc6236e.js';
|
|
2
2
|
|
|
3
3
|
const SearchcraftAd = SearchcraftPopoverListItemAd;
|
|
4
4
|
const defineCustomElement = defineCustomElement$1;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { S as SearchcraftFacetList$1, d as defineCustomElement$1 } from './p-
|
|
1
|
+
import { S as SearchcraftFacetList$1, d as defineCustomElement$1 } from './p-e99cd628.js';
|
|
2
2
|
|
|
3
3
|
const SearchcraftFacetList = SearchcraftFacetList$1;
|
|
4
4
|
const defineCustomElement = defineCustomElement$1;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { p as proxyCustomElement, H, h } from './p-5365011f.js';
|
|
2
|
-
import { s as searchcraftStore } from './p-
|
|
3
|
-
import { d as defineCustomElement$4 } from './p-
|
|
2
|
+
import { s as searchcraftStore } from './p-062d6b80.js';
|
|
3
|
+
import { d as defineCustomElement$4 } from './p-e99cd628.js';
|
|
4
4
|
import { d as defineCustomElement$3 } from './p-4dd1995c.js';
|
|
5
|
-
import { d as defineCustomElement$2 } from './p-
|
|
5
|
+
import { d as defineCustomElement$2 } from './p-ea48ccae.js';
|
|
6
6
|
|
|
7
7
|
const SearchcraftFilterPanel$1 = /*@__PURE__*/ proxyCustomElement(class SearchcraftFilterPanel extends H {
|
|
8
8
|
constructor() {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { S as SearchcraftInputForm$1, d as defineCustomElement$1 } from './p-
|
|
1
|
+
import { S as SearchcraftInputForm$1, d as defineCustomElement$1 } from './p-acab4d41.js';
|
|
2
2
|
|
|
3
3
|
const SearchcraftInputForm = SearchcraftInputForm$1;
|
|
4
4
|
const defineCustomElement = defineCustomElement$1;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { p as proxyCustomElement, H, h } from './p-5365011f.js';
|
|
2
|
-
import { s as searchcraftStore } from './p-
|
|
2
|
+
import { s as searchcraftStore } from './p-062d6b80.js';
|
|
3
3
|
import { c as classNames } from './p-5cdc6210.js';
|
|
4
4
|
import { d as defineCustomElement$2 } from './p-acf23bab.js';
|
|
5
5
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { p as proxyCustomElement, H, h } from './p-5365011f.js';
|
|
2
|
-
import { s as searchcraftStore } from './p-
|
|
2
|
+
import { s as searchcraftStore } from './p-062d6b80.js';
|
|
3
3
|
import { h as html } from './p-810a7850.js';
|
|
4
4
|
|
|
5
5
|
const SearchcraftPopoverButton$1 = /*@__PURE__*/ proxyCustomElement(class SearchcraftPopoverButton extends H {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { S as SearchcraftPopoverFooter$1, d as defineCustomElement$1 } from './p-
|
|
1
|
+
import { S as SearchcraftPopoverFooter$1, d as defineCustomElement$1 } from './p-b4cac872.js';
|
|
2
2
|
|
|
3
3
|
const SearchcraftPopoverFooter = SearchcraftPopoverFooter$1;
|
|
4
4
|
const defineCustomElement = defineCustomElement$1;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { p as proxyCustomElement, H, h } from './p-5365011f.js';
|
|
2
2
|
import { c as classNames } from './p-5cdc6210.js';
|
|
3
|
-
import { s as searchcraftStore } from './p-
|
|
4
|
-
import { d as defineCustomElement$9 } from './p-
|
|
3
|
+
import { s as searchcraftStore } from './p-062d6b80.js';
|
|
4
|
+
import { d as defineCustomElement$9 } from './p-adc6236e.js';
|
|
5
5
|
import { d as defineCustomElement$8 } from './p-acf23bab.js';
|
|
6
6
|
import { d as defineCustomElement$7 } from './p-f2585cdf.js';
|
|
7
|
-
import { d as defineCustomElement$6 } from './p-
|
|
7
|
+
import { d as defineCustomElement$6 } from './p-acab4d41.js';
|
|
8
8
|
import { d as defineCustomElement$5 } from './p-1adf78b9.js';
|
|
9
|
-
import { d as defineCustomElement$4 } from './p-
|
|
10
|
-
import { d as defineCustomElement$3 } from './p-
|
|
11
|
-
import { d as defineCustomElement$2 } from './p-
|
|
9
|
+
import { d as defineCustomElement$4 } from './p-b4cac872.js';
|
|
10
|
+
import { d as defineCustomElement$3 } from './p-320e3895.js';
|
|
11
|
+
import { d as defineCustomElement$2 } from './p-b01f8216.js';
|
|
12
12
|
|
|
13
13
|
const SearchcraftPopoverForm$1 = /*@__PURE__*/ proxyCustomElement(class SearchcraftPopoverForm extends H {
|
|
14
14
|
constructor() {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { S as SearchcraftPopoverListItem$1, d as defineCustomElement$1 } from './p-
|
|
1
|
+
import { S as SearchcraftPopoverListItem$1, d as defineCustomElement$1 } from './p-320e3895.js';
|
|
2
2
|
|
|
3
3
|
const SearchcraftPopoverListItem = SearchcraftPopoverListItem$1;
|
|
4
4
|
const defineCustomElement = defineCustomElement$1;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { S as SearchcraftPopoverListView$1, d as defineCustomElement$1 } from './p-
|
|
1
|
+
import { S as SearchcraftPopoverListView$1, d as defineCustomElement$1 } from './p-b01f8216.js';
|
|
2
2
|
|
|
3
3
|
const SearchcraftPopoverListView = SearchcraftPopoverListView$1;
|
|
4
4
|
const defineCustomElement = defineCustomElement$1;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { p as proxyCustomElement, H, h } from './p-5365011f.js';
|
|
2
|
-
import { s as searchcraftStore } from './p-
|
|
2
|
+
import { s as searchcraftStore } from './p-062d6b80.js';
|
|
3
3
|
import { f as formatNumberWithCommas } from './p-d54771ef.js';
|
|
4
4
|
import { h as html } from './p-810a7850.js';
|
|
5
5
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { S as SearchcraftSearchResult$1, d as defineCustomElement$1 } from './p-
|
|
1
|
+
import { S as SearchcraftSearchResult$1, d as defineCustomElement$1 } from './p-274c5cc8.js';
|
|
2
2
|
|
|
3
3
|
const SearchcraftSearchResult = SearchcraftSearchResult$1;
|
|
4
4
|
const defineCustomElement = defineCustomElement$1;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { p as proxyCustomElement, H, h } from './p-5365011f.js';
|
|
2
|
-
import { s as searchcraftStore } from './p-
|
|
2
|
+
import { s as searchcraftStore } from './p-062d6b80.js';
|
|
3
3
|
import { d as defineCustomElement$2 } from './p-73db9122.js';
|
|
4
4
|
|
|
5
5
|
const SearchcraftSearchResultsPerPage$1 = /*@__PURE__*/ proxyCustomElement(class SearchcraftSearchResultsPerPage extends H {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { p as proxyCustomElement, H, h } from './p-5365011f.js';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { s as searchcraftStore } from './p-062d6b80.js';
|
|
3
|
+
import { d as defineCustomElement$4 } from './p-adc6236e.js';
|
|
4
4
|
import { d as defineCustomElement$3 } from './p-f2585cdf.js';
|
|
5
|
-
import { d as defineCustomElement$2 } from './p-
|
|
5
|
+
import { d as defineCustomElement$2 } from './p-274c5cc8.js';
|
|
6
6
|
|
|
7
7
|
const SearchcraftSearchResults$1 = /*@__PURE__*/ proxyCustomElement(class SearchcraftSearchResults extends H {
|
|
8
8
|
constructor() {
|
|
@@ -66,7 +66,7 @@ const SearchcraftSearchResults$1 = /*@__PURE__*/ proxyCustomElement(class Search
|
|
|
66
66
|
: this.initialSearchClientResponseItems?.length
|
|
67
67
|
? this.initialSearchClientResponseItems
|
|
68
68
|
: [];
|
|
69
|
-
return (h("div", { class: 'searchcraft-search-results' }, this.adClientResponseItems?.map((item) => (h("searchcraft-ad", { adSource: 'adMarketplace', adClientResponseItem: item,
|
|
69
|
+
return (h("div", { class: 'searchcraft-search-results' }, this.adClientResponseItems?.map((item) => (h("searchcraft-ad", { adSource: 'adMarketplace', adClientResponseItem: item, key: item.id, renderPosition: 'top' }))), items.map((item, index) => (h("searchcraft-search-result", { key: item.id, "document-position": this.searchResultsPerPage * (this.searchResultsPage - 1) + index, index: index, item: item, template: this.template })))));
|
|
70
70
|
}
|
|
71
71
|
renderWithCustomAds() {
|
|
72
72
|
const itemsToRender = [];
|
|
@@ -81,7 +81,7 @@ const SearchcraftSearchResults$1 = /*@__PURE__*/ proxyCustomElement(class Search
|
|
|
81
81
|
: [];
|
|
82
82
|
// Renders ads at beginning
|
|
83
83
|
for (let n = 0; n < adStartQuantity; n++) {
|
|
84
|
-
itemsToRender.push(h("searchcraft-ad", { adSource: 'Custom',
|
|
84
|
+
itemsToRender.push(h("searchcraft-ad", { adSource: 'Custom', key: `${n}-ad`, renderPosition: 'top' }));
|
|
85
85
|
}
|
|
86
86
|
// Renders search results + interstitial ads
|
|
87
87
|
items.forEach((item, index) => {
|
|
@@ -90,14 +90,14 @@ const SearchcraftSearchResults$1 = /*@__PURE__*/ proxyCustomElement(class Search
|
|
|
90
90
|
index + interstitialInterval < items.length &&
|
|
91
91
|
index >= interstitialInterval) {
|
|
92
92
|
for (let n = 0; n < interstitialQuantity; n++) {
|
|
93
|
-
itemsToRender.push(h("searchcraft-ad", { adSource: 'Custom',
|
|
93
|
+
itemsToRender.push(h("searchcraft-ad", { adSource: 'Custom', key: `${item.id}-ad-${n}`, renderPosition: 'interstitial' }));
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
96
|
itemsToRender.push(h("searchcraft-search-result", { key: item.id, "document-position": this.searchResultsPerPage * (this.searchResultsPage - 1) + index, index: index, item: item, template: this.template }));
|
|
97
97
|
});
|
|
98
98
|
// Renders ads at end
|
|
99
99
|
for (let n = 0; n < adEndQuantity; n++) {
|
|
100
|
-
itemsToRender.push(h("searchcraft-ad", { adSource: 'Custom',
|
|
100
|
+
itemsToRender.push(h("searchcraft-ad", { adSource: 'Custom', key: `${n}-ad`, renderPosition: 'bottom' }));
|
|
101
101
|
}
|
|
102
102
|
return h("div", { class: 'searchcraft-search-results' }, itemsToRender);
|
|
103
103
|
}
|
|
@@ -115,7 +115,7 @@ const SearchcraftSearchResults$1 = /*@__PURE__*/ proxyCustomElement(class Search
|
|
|
115
115
|
: [];
|
|
116
116
|
// Renders ads at beginning
|
|
117
117
|
for (let n = 0; n < adStartQuantity; n++) {
|
|
118
|
-
itemsToRender.push(h("searchcraft-ad", { adSource: 'Nativo',
|
|
118
|
+
itemsToRender.push(h("searchcraft-ad", { adSource: 'Nativo', key: `${n}-ad`, renderPosition: 'top' }));
|
|
119
119
|
}
|
|
120
120
|
// Renders search results + interstitial ads
|
|
121
121
|
items.forEach((item, index) => {
|
|
@@ -124,14 +124,14 @@ const SearchcraftSearchResults$1 = /*@__PURE__*/ proxyCustomElement(class Search
|
|
|
124
124
|
index + interstitialInterval < items.length &&
|
|
125
125
|
index >= interstitialInterval) {
|
|
126
126
|
for (let n = 0; n < interstitialQuantity; n++) {
|
|
127
|
-
itemsToRender.push(h("searchcraft-ad", { adSource: 'Nativo',
|
|
127
|
+
itemsToRender.push(h("searchcraft-ad", { adSource: 'Nativo', key: `${item.id}-ad-${n}`, renderPosition: 'interstitial' }));
|
|
128
128
|
}
|
|
129
129
|
}
|
|
130
130
|
itemsToRender.push(h("searchcraft-search-result", { key: item.id, "document-position": this.searchResultsPerPage * (this.searchResultsPage - 1) + index, index: index, item: item, template: this.template }));
|
|
131
131
|
});
|
|
132
132
|
// Renders ads at end
|
|
133
133
|
for (let n = 0; n < adEndQuantity; n++) {
|
|
134
|
-
itemsToRender.push(h("searchcraft-ad", { adSource: 'Nativo',
|
|
134
|
+
itemsToRender.push(h("searchcraft-ad", { adSource: 'Nativo', key: `${n}-ad`, renderPosition: 'bottom' }));
|
|
135
135
|
}
|
|
136
136
|
return h("div", { class: 'searchcraft-search-results' }, itemsToRender);
|
|
137
137
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"searchcraft-search-results.js","mappings":"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","names":["SearchcraftSearchResults"],"sources":["src/components/searchcraft-search-results/searchcraft-search-results.tsx"],"sourcesContent":["import { Component, h, Prop, State, type JSX } from '@stencil/core';\nimport { nanoid } from 'nanoid';\n\nimport type {\n AdClientResponseItem,\n SearchClientResponseItem,\n SearchcraftConfig,\n SearchResultTemplate,\n SearchResultTemplateData,\n} from '@searchcraft/core';\n\nimport { type SearchcraftState, searchcraftStore } 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 * 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() initialSearchClientResponseItems?: SearchClientResponseItem[];\n @State() isSearchInProgress = true;\n @State() searchClientResponseItems?: SearchClientResponseItem[];\n @State() searchResultsPage;\n @State() searchResultsPerPage;\n @State() searchTerm = '';\n\n private unsubscribe: () => void = () => {};\n\n componentDidLoad() {\n const state = searchcraftStore.getState();\n this.handleStateChange(state);\n this.searchClientResponseItems = state.searchClientResponseItems;\n this.searchTerm = state.searchTerm;\n this.config = state.core?.config;\n\n state.afterInit = (state) => {\n if (this.initialQuery) {\n state.setInitialQuery(this.initialQuery);\n }\n };\n\n this.unsubscribe = searchcraftStore.subscribe((state) =>\n this.handleStateChange(state),\n );\n }\n\n disconnectedCallback() {\n this.unsubscribe?.();\n }\n\n handleStateChange(state: SearchcraftState) {\n this.adClientResponseItems = [...state.adClientResponseItems];\n this.config = state.core?.config;\n this.initialSearchClientResponseItems = [\n ...state.initialSearchClientResponseItems,\n ];\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?.length\n ? this.searchClientResponseItems\n : this.initialSearchClientResponseItems?.length\n ? this.initialSearchClientResponseItems\n : [];\n\n return (\n <div class='searchcraft-search-results'>\n {this.adClientResponseItems?.map((item) => (\n <searchcraft-ad\n adSource='adMarketplace'\n adClientResponseItem={item}\n adContainerId={nanoid()}\n key={item.id}\n />\n ))}\n {items.map((item, index) => (\n <searchcraft-search-result\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 = this.config?.customAdInterstitialInterval || 0;\n const interstitialQuantity = this.config?.customAdInterstitialQuantity || 1;\n const adStartQuantity = this.config?.customAdStartQuantity || 0;\n const adEndQuantity = this.config?.customAdEndQuantity || 0;\n const items = this.searchClientResponseItems?.length\n ? this.searchClientResponseItems\n : this.initialSearchClientResponseItems?.length\n ? this.initialSearchClientResponseItems\n : [];\n\n // Renders ads at beginning\n for (let n = 0; n < adStartQuantity; n++) {\n itemsToRender.push(\n <searchcraft-ad\n adSource='Custom'\n adContainerId={nanoid()}\n key={`${n}-ad`}\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 adSource='Custom'\n adContainerId={nanoid()}\n key={`${item.id}-ad-${n}`}\n />,\n );\n }\n }\n itemsToRender.push(\n <searchcraft-search-result\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 adSource='Custom'\n adContainerId={nanoid()}\n key={`${n}-ad`}\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?.nativoAdInterstialStartIndex || 0;\n const interstitialInterval = this.config?.nativoAdInterstitialInterval || 0;\n const interstitialQuantity = this.config?.nativoAdInterstitialQuantity || 1;\n const adStartQuantity = this.config?.nativoAdStartQuantity || 0;\n const adEndQuantity = this.config?.nativoAdEndQuantity || 0;\n const items = this.searchClientResponseItems?.length\n ? this.searchClientResponseItems\n : this.initialSearchClientResponseItems?.length\n ? this.initialSearchClientResponseItems\n : [];\n\n // Renders ads at beginning\n for (let n = 0; n < adStartQuantity; n++) {\n itemsToRender.push(\n <searchcraft-ad\n adSource='Nativo'\n adContainerId={nanoid()}\n key={`${n}-ad`}\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 adSource='Nativo'\n adContainerId={nanoid()}\n key={`${item.id}-ad-${n}`}\n />,\n );\n }\n }\n itemsToRender.push(\n <searchcraft-search-result\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 adSource='Nativo'\n adContainerId={nanoid()}\n key={`${n}-ad`}\n />,\n );\n }\n\n return <div class='searchcraft-search-results'>{itemsToRender}</div>;\n }\n\n renderWithNoAds() {\n const items = this.searchClientResponseItems?.length\n ? this.searchClientResponseItems\n : this.initialSearchClientResponseItems?.length\n ? this.initialSearchClientResponseItems\n : [];\n\n return (\n <div class='searchcraft-search-results'>\n {items.map((item, index) => (\n <searchcraft-search-result\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 const initialSearchClientResponseItems =\n this.initialSearchClientResponseItems || [];\n\n if (\n this.searchTerm === '' &&\n initialSearchClientResponseItems.length === 0 &&\n !this.isSearchInProgress\n ) {\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 switch (this.config?.adSource || 'None') {\n case 'adMarketplace':\n return this.renderWithADMAds();\n case 'Custom':\n return this.renderWithCustomAds();\n case 'Nativo':\n return this.renderWithNativoAds();\n default:\n return this.renderWithNoAds();\n }\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"searchcraft-search-results.js","mappings":"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","names":["SearchcraftSearchResults"],"sources":["src/components/searchcraft-search-results/searchcraft-search-results.tsx"],"sourcesContent":["import { Component, h, Prop, State, type JSX } from '@stencil/core';\n\nimport type {\n AdClientResponseItem,\n SearchClientResponseItem,\n SearchcraftConfig,\n SearchResultTemplate,\n SearchResultTemplateData,\n} from '@searchcraft/core';\n\nimport { type SearchcraftState, searchcraftStore } 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 * 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() initialSearchClientResponseItems?: SearchClientResponseItem[];\n @State() isSearchInProgress = true;\n @State() searchClientResponseItems?: SearchClientResponseItem[];\n @State() searchResultsPage;\n @State() searchResultsPerPage;\n @State() searchTerm = '';\n\n private unsubscribe: () => void = () => {};\n\n componentDidLoad() {\n const state = searchcraftStore.getState();\n this.handleStateChange(state);\n this.searchClientResponseItems = state.searchClientResponseItems;\n this.searchTerm = state.searchTerm;\n this.config = state.core?.config;\n\n state.afterInit = (state) => {\n if (this.initialQuery) {\n state.setInitialQuery(this.initialQuery);\n }\n };\n\n this.unsubscribe = searchcraftStore.subscribe((state) =>\n this.handleStateChange(state),\n );\n }\n\n disconnectedCallback() {\n this.unsubscribe?.();\n }\n\n handleStateChange(state: SearchcraftState) {\n this.adClientResponseItems = [...state.adClientResponseItems];\n this.config = state.core?.config;\n this.initialSearchClientResponseItems = [\n ...state.initialSearchClientResponseItems,\n ];\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?.length\n ? this.searchClientResponseItems\n : this.initialSearchClientResponseItems?.length\n ? this.initialSearchClientResponseItems\n : [];\n\n return (\n <div class='searchcraft-search-results'>\n {this.adClientResponseItems?.map((item) => (\n <searchcraft-ad\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 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 = this.config?.customAdInterstitialInterval || 0;\n const interstitialQuantity = this.config?.customAdInterstitialQuantity || 1;\n const adStartQuantity = this.config?.customAdStartQuantity || 0;\n const adEndQuantity = this.config?.customAdEndQuantity || 0;\n const items = this.searchClientResponseItems?.length\n ? this.searchClientResponseItems\n : this.initialSearchClientResponseItems?.length\n ? this.initialSearchClientResponseItems\n : [];\n\n // Renders ads at beginning\n for (let n = 0; n < adStartQuantity; n++) {\n itemsToRender.push(\n <searchcraft-ad\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 adSource='Custom'\n key={`${item.id}-ad-${n}`}\n renderPosition='interstitial'\n />,\n );\n }\n }\n itemsToRender.push(\n <searchcraft-search-result\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 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?.nativoAdInterstialStartIndex || 0;\n const interstitialInterval = this.config?.nativoAdInterstitialInterval || 0;\n const interstitialQuantity = this.config?.nativoAdInterstitialQuantity || 1;\n const adStartQuantity = this.config?.nativoAdStartQuantity || 0;\n const adEndQuantity = this.config?.nativoAdEndQuantity || 0;\n const items = this.searchClientResponseItems?.length\n ? this.searchClientResponseItems\n : this.initialSearchClientResponseItems?.length\n ? this.initialSearchClientResponseItems\n : [];\n\n // Renders ads at beginning\n for (let n = 0; n < adStartQuantity; n++) {\n itemsToRender.push(\n <searchcraft-ad\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 adSource='Nativo'\n key={`${item.id}-ad-${n}`}\n renderPosition='interstitial'\n />,\n );\n }\n }\n itemsToRender.push(\n <searchcraft-search-result\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 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?.length\n ? this.searchClientResponseItems\n : this.initialSearchClientResponseItems?.length\n ? this.initialSearchClientResponseItems\n : [];\n\n return (\n <div class='searchcraft-search-results'>\n {items.map((item, index) => (\n <searchcraft-search-result\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 const initialSearchClientResponseItems =\n this.initialSearchClientResponseItems || [];\n\n if (\n this.searchTerm === '' &&\n initialSearchClientResponseItems.length === 0 &&\n !this.isSearchInProgress\n ) {\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 switch (this.config?.adSource || 'None') {\n case 'adMarketplace':\n return this.renderWithADMAds();\n case 'Custom':\n return this.renderWithCustomAds();\n case 'Nativo':\n return this.renderWithNativoAds();\n default:\n return this.renderWithNoAds();\n }\n }\n}\n"],"version":3}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { S as SearchcraftToggleButton$1, d as defineCustomElement$1 } from './p-
|
|
1
|
+
import { S as SearchcraftToggleButton$1, d as defineCustomElement$1 } from './p-ea48ccae.js';
|
|
2
2
|
|
|
3
3
|
const SearchcraftToggleButton = SearchcraftToggleButton$1;
|
|
4
4
|
const defineCustomElement = defineCustomElement$1;
|