@usereactify/search 5.59.0-beta.4 → 5.59.0-beta.6

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 (47) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/package.json +1 -1
  3. package/dist/src/components/ReactifySearchProvider/ReactifySearchProvider.d.ts +3 -11
  4. package/dist/src/components/ReactifySearchProvider/ReactifySearchProvider.js +3 -13
  5. package/dist/src/components/ReactifySearchProvider/ReactifySearchProvider.js.map +1 -1
  6. package/dist/src/components/Sensor/SensorCollectionWeighted.d.ts +1 -0
  7. package/dist/src/components/Sensor/{SensorCuratedPageSearch.js → SensorCollectionWeighted.js} +4 -4
  8. package/dist/src/components/Sensor/SensorCollectionWeighted.js.map +1 -0
  9. package/dist/src/components/Sensor/SensorSearchTerm.js +6 -18
  10. package/dist/src/components/Sensor/SensorSearchTerm.js.map +1 -1
  11. package/dist/src/components/Sensor/SensorSearchWeighted.d.ts +1 -0
  12. package/dist/src/components/Sensor/{SensorCuratedPageCollection.js → SensorSearchWeighted.js} +5 -4
  13. package/dist/src/components/Sensor/SensorSearchWeighted.js.map +1 -0
  14. package/dist/src/components/Sensor/Sensors.js +21 -19
  15. package/dist/src/components/Sensor/Sensors.js.map +1 -1
  16. package/dist/src/components/Sensor/index.d.ts +2 -2
  17. package/dist/src/components/Sensor/index.js +5 -7
  18. package/dist/src/components/Sensor/index.js.map +1 -1
  19. package/dist/src/components/Suggestions/Suggestions.js +1 -2
  20. package/dist/src/components/Suggestions/Suggestions.js.map +1 -1
  21. package/dist/src/hooks/useConfig.d.ts +1 -1
  22. package/dist/src/hooks/useConfig.js +7 -7
  23. package/dist/src/hooks/useConfig.js.map +1 -1
  24. package/dist/src/hooks/useReactifySearchContext.d.ts +3 -17
  25. package/dist/src/hooks/useReactifySearchContext.js.map +1 -1
  26. package/dist/src/types/config.d.ts +1 -0
  27. package/dist/src/types/config.js.map +1 -1
  28. package/dist/src/utility/curation.js +4 -33
  29. package/dist/src/utility/curation.js.map +1 -1
  30. package/dist/src/utility/filters.js +3 -4
  31. package/dist/src/utility/filters.js.map +1 -1
  32. package/dist/src/utility/liquid.d.ts +0 -6
  33. package/dist/src/utility/liquid.js +0 -15
  34. package/dist/src/utility/liquid.js.map +1 -1
  35. package/dist/src/utility/props.d.ts +8 -5
  36. package/dist/src/utility/props.js +17 -29
  37. package/dist/src/utility/props.js.map +1 -1
  38. package/dist/src/utility/queries.d.ts +6 -4
  39. package/dist/src/utility/queries.js +26 -57
  40. package/dist/src/utility/queries.js.map +1 -1
  41. package/dist/src/utility/sortOption.js +3 -6
  42. package/dist/src/utility/sortOption.js.map +1 -1
  43. package/package.json +1 -1
  44. package/dist/src/components/Sensor/SensorCuratedPageCollection.d.ts +0 -1
  45. package/dist/src/components/Sensor/SensorCuratedPageCollection.js.map +0 -1
  46. package/dist/src/components/Sensor/SensorCuratedPageSearch.d.ts +0 -1
  47. package/dist/src/components/Sensor/SensorCuratedPageSearch.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,21 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ## [5.59.0-beta.6](https://bitbucket.org/usereactify/reactify-search-ui/compare/beta-v5.59.0-beta.5...beta-v5.59.0-beta.6) (2025-07-16)
6
+
7
+
8
+ ### Bug Fixes
9
+
10
+ * streamline search scoring and improve weight calculation algorithm ([b6d4e5e](https://bitbucket.org/usereactify/reactify-search-ui/commit/b6d4e5e205e6981a1f6149d695f75bfdb38e5186))
11
+
12
+ ## [5.59.0-beta.5](https://bitbucket.org/usereactify/reactify-search-ui/compare/beta-v5.59.0-beta.4...beta-v5.59.0-beta.5) (2025-07-16)
13
+
14
+
15
+ ### Bug Fixes
16
+
17
+ * add configBaseUrl prop for local testing override ([8280e8b](https://bitbucket.org/usereactify/reactify-search-ui/commit/8280e8b573530a035dace2be62eda581e742c844))
18
+ * remove curated-page mode and use feature flag ([b387a2b](https://bitbucket.org/usereactify/reactify-search-ui/commit/b387a2b2e2aabd58fef3de42cea27b8340c2a475))
19
+
5
20
  ## [5.59.0-beta.4](https://bitbucket.org/usereactify/reactify-search-ui/compare/beta-v5.59.0-beta.3...beta-v5.59.0-beta.4) (2025-07-11)
6
21
 
7
22
 
package/dist/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@usereactify/search",
3
3
  "description": "React UI library for Reactify Search",
4
- "version": "5.59.0-beta.4",
4
+ "version": "5.59.0-beta.6",
5
5
  "license": "MIT",
6
6
  "main": "dist/src/index.js",
7
7
  "types": "dist/src/index.d.ts",
@@ -4,7 +4,7 @@ export type ReactifySearchProviderProps = {
4
4
  /** Standard react children */
5
5
  children?: ReactNode | undefined;
6
6
  /** The search area the provider will be used in */
7
- mode: "search" | "collection" | "instant-search" | "curated-page";
7
+ mode: "search" | "collection" | "instant-search";
8
8
  /** The variation of the search area the provider will be used in */
9
9
  /** Shopify store domain used to resolve the site configuration */
10
10
  shopifyPermanentDomain: string;
@@ -34,6 +34,8 @@ export type ReactifySearchProviderProps = {
34
34
  excludeFields?: Array<string>;
35
35
  /** Advanced usage: Server content for SSR */
36
36
  query?: Record<string, string>;
37
+ /** Advanced usage: Override the default config base URL for local testing */
38
+ configBaseUrl?: string;
37
39
  preload?: {
38
40
  config: Config;
39
41
  state: unknown;
@@ -46,15 +48,5 @@ export type ReactifySearchProviderProps = {
46
48
  collectionHandle: string;
47
49
  } | {
48
50
  mode: "instant-search";
49
- } | {
50
- mode: "curated-page";
51
- variation: "collection";
52
- /** Handle of the collection. The same from Shopify. */
53
- handle: string;
54
- } | {
55
- mode: "curated-page";
56
- variation: "search";
57
- /** The merchandising search term from the Shopify App. */
58
- searchTerm: string;
59
51
  });
60
52
  export declare function ReactifySearchProvider(props: PropsWithChildren<ReactifySearchProviderProps>): JSX.Element;
@@ -50,7 +50,7 @@ function ReactifySearchProvider(props) {
50
50
  }
51
51
  function ReactifySearchInner(props) {
52
52
  var _a, _b;
53
- const { config } = (0, hooks_1.useConfig)(props.shopifyPermanentDomain, (_a = props.preload) === null || _a === void 0 ? void 0 : _a.config);
53
+ const { config } = (0, hooks_1.useConfig)(props.shopifyPermanentDomain, (_a = props.preload) === null || _a === void 0 ? void 0 : _a.config, props.configBaseUrl);
54
54
  const theme = (_b = props.theme) !== null && _b !== void 0 ? _b : { typography: { fontFamily: "inherit", fontSize: "inherit" } };
55
55
  // search term
56
56
  const [searchTerm, setSearchTerm] = (0, react_1.useState)("");
@@ -91,7 +91,7 @@ function ReactifySearchInner(props) {
91
91
  return;
92
92
  return {
93
93
  config: config,
94
- options: Object.assign(Object.assign({}, props), { clientId: (_a = props.clientId) !== null && _a !== void 0 ? _a : "theme", index: (_c = (_b = props.index) !== null && _b !== void 0 ? _b : indexFromURL) !== null && _c !== void 0 ? _c : config.index, filtersHandle: props.filtersHandle, credentials: props.credentials, theme: theme }),
94
+ options: Object.assign(Object.assign({}, props), { clientId: (_a = props.clientId) !== null && _a !== void 0 ? _a : "theme", index: (_c = (_b = props.index) !== null && _b !== void 0 ? _b : indexFromURL) !== null && _c !== void 0 ? _c : config.index, filtersHandle: props.filtersHandle, credentials: props.credentials, theme: theme, configBaseUrl: props.configBaseUrl }),
95
95
  search: {
96
96
  searchTerm: searchTerm,
97
97
  setSearchTerm: setSearchTerm,
@@ -111,17 +111,7 @@ function ReactifySearchInner(props) {
111
111
  },
112
112
  curation: curation,
113
113
  };
114
- }, [
115
- config,
116
- props,
117
- searchTerm,
118
- showInstantSearchResults,
119
- searchRedirect,
120
- sortOption,
121
- results,
122
- resultStats,
123
- curation,
124
- ]);
114
+ }, [config, props, searchTerm, showInstantSearchResults, searchRedirect, sortOption, results, resultStats, curation]);
125
115
  (0, react_1.useEffect)(() => {
126
116
  utility_1.debug.log("curation", "content", curation);
127
117
  }, [curation === null || curation === void 0 ? void 0 : curation.id]);
@@ -1 +1 @@
1
- {"version":3,"file":"ReactifySearchProvider.js","sourceRoot":"","sources":["../../../../src/components/ReactifySearchProvider/ReactifySearchProvider.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { PropsWithChildren, ReactNode, useEffect, useMemo, useState } from \"react\";\n// @ts-expect-error missing types\nimport * as GaGtag from \"ga-gtag\";\n\nimport pkg from \"../../../package.json\";\n\nimport { ReactifySearchContext, useConfig } from \"../../hooks\";\nimport { UtilityAuthenticatedReactiveBase } from \"../../components\";\nimport { debug } from \"../../utility\";\nimport { Config, ConfigCuration, ConfigRedirect, ReactivesearchResultProps } from \"../../types\";\nimport { getCuration } from \"../../utility/curation\";\n\nexport type ReactifySearchProviderProps = {\n /** Standard react children */\n children?: ReactNode | undefined;\n /** The search area the provider will be used in */\n mode: \"search\" | \"collection\" | \"instant-search\" | \"curated-page\";\n /** The variation of the search area the provider will be used in */\n /** Shopify store domain used to resolve the site configuration */\n shopifyPermanentDomain: string;\n /** Market ID used to change merchandising based on market e.g. 7494533198 */\n market?: string;\n /** Callback function for redirects, suitable for headless sites to avoid full page refresh */\n onRedirect?: (type: \"redirect\" | \"search\", url: string) => void;\n /** Render method to display a component when the config is loading */\n renderBooting?: () => JSX.Element | null;\n /** Advanced usage: Override the default Reactify Search id (for telemetry) */\n clientId?: string;\n /** Advanced usage: Override the default Filters selection logic */\n filtersHandle?: string;\n /** Advanced usage: Array of additional component IDs managed outside of Reactify Search */\n additionalComponentIds?: Array<string>;\n /** Advanced usage: Override the default Elasticsearch index */\n index?: string;\n /** Advanced usage: Override the default Reactify Search config (for multi-instance stores) */\n configId?: string;\n /** Advanced usage: Override the default Elasticsearch credentials */\n credentials?: string;\n /** Advanced usage: Override the default ReactiveBase theme */\n theme?: Record<string, unknown>;\n /** Advanced usage: Fields to include in the Elasticsearch response e.g. [\"title\"] */\n includeFields?: Array<string>;\n /** Advanced usage: Fields to exclude from the Elasticsearch response e.g. [\"variant_skus\", \"*price*\"] */\n excludeFields?: Array<string>;\n /** Advanced usage: Server content for SSR */\n query?: Record<string, string>;\n preload?: {\n config: Config;\n state: unknown;\n };\n} & (\n | {\n mode: \"search\";\n }\n | {\n mode: \"collection\";\n /** Collection object that includes the handle, used to find curations */\n collectionHandle: string;\n }\n | { mode: \"instant-search\" }\n | {\n mode: \"curated-page\";\n variation: \"collection\";\n /** Handle of the collection. The same from Shopify. */\n handle: string;\n }\n | {\n mode: \"curated-page\";\n variation: \"search\";\n /** The merchandising search term from the Shopify App. */\n searchTerm: string;\n }\n);\n\nexport function ReactifySearchProvider(props: PropsWithChildren<ReactifySearchProviderProps>) {\n useEffect(() => {\n debug.log(\"ReactifySearchProvider\", \"props\", props);\n\n GaGtag.install(\"G-DV00Z0X5VP\", {\n cookie_prefix: \"_rs\",\n user_properties: {\n shop: props.shopifyPermanentDomain,\n version: pkg.version,\n },\n });\n }, [props]);\n\n return <ReactifySearchInner {...props} />;\n}\n\nfunction ReactifySearchInner(props: PropsWithChildren<ReactifySearchProviderProps>) {\n const { config } = useConfig(props.shopifyPermanentDomain, props.preload?.config);\n const theme = props.theme ?? { typography: { fontFamily: \"inherit\", fontSize: \"inherit\" } };\n\n // search term\n const [searchTerm, setSearchTerm] = useState<string>(\"\");\n const [showInstantSearchResults, setShowInstantSearchResults] = useState<boolean>(false);\n const [sortOption, setSortOption] = useState<string>(\"\");\n const [indexFromURL, setIndexFromURL] = useState<string | null>(null);\n const searchRedirect = useMemo<ConfigRedirect | undefined>(() => {\n return config?.redirects.find(\n (redirect) => redirect.query.trim().toLowerCase() === searchTerm.trim().toLowerCase()\n );\n }, [config?.redirects, searchTerm]);\n\n // hydration-safe URL param initialization\n useEffect(() => {\n if (typeof window !== \"undefined\") {\n const urlParams = new URLSearchParams(window.location.search);\n const searchTermFromURL = urlParams.get(\"q\");\n const searchSortFromURL = urlParams.get(\"sort\");\n const indexFromURLParam = urlParams.get(\"index\");\n if (searchTermFromURL && searchTermFromURL !== searchTerm) setSearchTerm(searchTermFromURL);\n if (searchSortFromURL && searchSortFromURL !== sortOption) setSortOption(searchSortFromURL);\n if (indexFromURLParam) setIndexFromURL(indexFromURLParam);\n }\n }, []);\n\n // results\n const [results, setResults] = useState<ReactivesearchResultProps[\"data\"]>([]);\n\n // curation\n const curation = useMemo<ConfigCuration | undefined>(() => {\n if (!config) return undefined;\n return getCuration({ provider: props, config: config, searchTerm: searchTerm });\n }, [props, config, searchTerm]);\n\n // result stats\n const [resultStats, setResultStats] = useState<ReactivesearchResultProps[\"resultStats\"]>();\n\n const contextValue = useMemo(() => {\n if (!config) return;\n\n return {\n config: config,\n options: {\n ...props,\n clientId: props.clientId ?? \"theme\",\n index: props.index ?? indexFromURL ?? config.index,\n filtersHandle: props.filtersHandle,\n credentials: props.credentials,\n theme: theme,\n },\n search: {\n searchTerm: searchTerm,\n setSearchTerm: setSearchTerm,\n showInstantSearchResults: showInstantSearchResults,\n setShowInstantSearchResults: setShowInstantSearchResults,\n searchRedirect: searchRedirect,\n },\n sortby: {\n sortOption: sortOption,\n setSortOption: setSortOption,\n },\n results: {\n results: results,\n setResults: setResults,\n resultStats: resultStats,\n setResultStats: setResultStats,\n },\n curation: curation,\n };\n }, [\n config,\n props,\n searchTerm,\n showInstantSearchResults,\n searchRedirect,\n sortOption,\n results,\n resultStats,\n curation,\n ]);\n\n useEffect(() => {\n debug.log(\"curation\", \"content\", curation);\n }, [curation?.id]);\n\n debug.hook(\"ReactifySearchProvider\", \"context\", contextValue);\n\n if (!contextValue) {\n if (props.renderBooting) return props.renderBooting();\n return null;\n }\n\n return (\n <ReactifySearchContext.Provider value={contextValue}>\n <UtilityAuthenticatedReactiveBase>{props.children}</UtilityAuthenticatedReactiveBase>\n </ReactifySearchContext.Provider>\n );\n}\n"]}
1
+ {"version":3,"file":"ReactifySearchProvider.js","sourceRoot":"","sources":["../../../../src/components/ReactifySearchProvider/ReactifySearchProvider.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { PropsWithChildren, ReactNode, useEffect, useMemo, useState } from \"react\";\n// @ts-expect-error missing types\nimport * as GaGtag from \"ga-gtag\";\n\nimport pkg from \"../../../package.json\";\n\nimport { ReactifySearchContext, useConfig } from \"../../hooks\";\nimport { UtilityAuthenticatedReactiveBase } from \"../../components\";\nimport { debug } from \"../../utility\";\nimport { Config, ConfigCuration, ConfigRedirect, ReactivesearchResultProps } from \"../../types\";\nimport { getCuration } from \"../../utility/curation\";\n\nexport type ReactifySearchProviderProps = {\n /** Standard react children */\n children?: ReactNode | undefined;\n /** The search area the provider will be used in */\n mode: \"search\" | \"collection\" | \"instant-search\";\n /** The variation of the search area the provider will be used in */\n /** Shopify store domain used to resolve the site configuration */\n shopifyPermanentDomain: string;\n /** Market ID used to change merchandising based on market e.g. 7494533198 */\n market?: string;\n /** Callback function for redirects, suitable for headless sites to avoid full page refresh */\n onRedirect?: (type: \"redirect\" | \"search\", url: string) => void;\n /** Render method to display a component when the config is loading */\n renderBooting?: () => JSX.Element | null;\n /** Advanced usage: Override the default Reactify Search id (for telemetry) */\n clientId?: string;\n /** Advanced usage: Override the default Filters selection logic */\n filtersHandle?: string;\n /** Advanced usage: Array of additional component IDs managed outside of Reactify Search */\n additionalComponentIds?: Array<string>;\n /** Advanced usage: Override the default Elasticsearch index */\n index?: string;\n /** Advanced usage: Override the default Reactify Search config (for multi-instance stores) */\n configId?: string;\n /** Advanced usage: Override the default Elasticsearch credentials */\n credentials?: string;\n /** Advanced usage: Override the default ReactiveBase theme */\n theme?: Record<string, unknown>;\n /** Advanced usage: Fields to include in the Elasticsearch response e.g. [\"title\"] */\n includeFields?: Array<string>;\n /** Advanced usage: Fields to exclude from the Elasticsearch response e.g. [\"variant_skus\", \"*price*\"] */\n excludeFields?: Array<string>;\n /** Advanced usage: Server content for SSR */\n query?: Record<string, string>;\n /** Advanced usage: Override the default config base URL for local testing */\n configBaseUrl?: string;\n preload?: {\n config: Config;\n state: unknown;\n };\n} & (\n | {\n mode: \"search\";\n }\n | {\n mode: \"collection\";\n /** Collection object that includes the handle, used to find curations */\n collectionHandle: string;\n }\n | { mode: \"instant-search\" }\n);\n\nexport function ReactifySearchProvider(props: PropsWithChildren<ReactifySearchProviderProps>) {\n useEffect(() => {\n debug.log(\"ReactifySearchProvider\", \"props\", props);\n\n GaGtag.install(\"G-DV00Z0X5VP\", {\n cookie_prefix: \"_rs\",\n user_properties: {\n shop: props.shopifyPermanentDomain,\n version: pkg.version,\n },\n });\n }, [props]);\n\n return <ReactifySearchInner {...props} />;\n}\n\nfunction ReactifySearchInner(props: PropsWithChildren<ReactifySearchProviderProps>) {\n const { config } = useConfig(props.shopifyPermanentDomain, props.preload?.config, props.configBaseUrl);\n const theme = props.theme ?? { typography: { fontFamily: \"inherit\", fontSize: \"inherit\" } };\n\n // search term\n const [searchTerm, setSearchTerm] = useState<string>(\"\");\n const [showInstantSearchResults, setShowInstantSearchResults] = useState<boolean>(false);\n const [sortOption, setSortOption] = useState<string>(\"\");\n const [indexFromURL, setIndexFromURL] = useState<string | null>(null);\n const searchRedirect = useMemo<ConfigRedirect | undefined>(() => {\n return config?.redirects.find(\n (redirect) => redirect.query.trim().toLowerCase() === searchTerm.trim().toLowerCase()\n );\n }, [config?.redirects, searchTerm]);\n\n // hydration-safe URL param initialization\n useEffect(() => {\n if (typeof window !== \"undefined\") {\n const urlParams = new URLSearchParams(window.location.search);\n const searchTermFromURL = urlParams.get(\"q\");\n const searchSortFromURL = urlParams.get(\"sort\");\n const indexFromURLParam = urlParams.get(\"index\");\n if (searchTermFromURL && searchTermFromURL !== searchTerm) setSearchTerm(searchTermFromURL);\n if (searchSortFromURL && searchSortFromURL !== sortOption) setSortOption(searchSortFromURL);\n if (indexFromURLParam) setIndexFromURL(indexFromURLParam);\n }\n }, []);\n\n // results\n const [results, setResults] = useState<ReactivesearchResultProps[\"data\"]>([]);\n\n // curation\n const curation = useMemo<ConfigCuration | undefined>(() => {\n if (!config) return undefined;\n return getCuration({ provider: props, config: config, searchTerm: searchTerm });\n }, [props, config, searchTerm]);\n\n // result stats\n const [resultStats, setResultStats] = useState<ReactivesearchResultProps[\"resultStats\"]>();\n\n const contextValue = useMemo(() => {\n if (!config) return;\n\n return {\n config: config,\n options: {\n ...props,\n clientId: props.clientId ?? \"theme\",\n index: props.index ?? indexFromURL ?? config.index,\n filtersHandle: props.filtersHandle,\n credentials: props.credentials,\n theme: theme,\n configBaseUrl: props.configBaseUrl,\n },\n search: {\n searchTerm: searchTerm,\n setSearchTerm: setSearchTerm,\n showInstantSearchResults: showInstantSearchResults,\n setShowInstantSearchResults: setShowInstantSearchResults,\n searchRedirect: searchRedirect,\n },\n sortby: {\n sortOption: sortOption,\n setSortOption: setSortOption,\n },\n results: {\n results: results,\n setResults: setResults,\n resultStats: resultStats,\n setResultStats: setResultStats,\n },\n curation: curation,\n };\n }, [config, props, searchTerm, showInstantSearchResults, searchRedirect, sortOption, results, resultStats, curation]);\n\n useEffect(() => {\n debug.log(\"curation\", \"content\", curation);\n }, [curation?.id]);\n\n debug.hook(\"ReactifySearchProvider\", \"context\", contextValue);\n\n if (!contextValue) {\n if (props.renderBooting) return props.renderBooting();\n return null;\n }\n\n return (\n <ReactifySearchContext.Provider value={contextValue}>\n <UtilityAuthenticatedReactiveBase>{props.children}</UtilityAuthenticatedReactiveBase>\n </ReactifySearchContext.Provider>\n );\n}\n"]}
@@ -0,0 +1 @@
1
+ export declare function SensorCollectionWeighted(): JSX.Element | null;
@@ -3,14 +3,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.SensorCuratedPageSearch = SensorCuratedPageSearch;
6
+ exports.SensorCollectionWeighted = SensorCollectionWeighted;
7
7
  const react_1 = __importDefault(require("react"));
8
8
  const ReactiveComponent_1 = __importDefault(require("@usereactify/search-internals/lib/components/basic/ReactiveComponent"));
9
9
  const hooks_1 = require("../../hooks");
10
10
  const props_1 = require("../../utility/props");
11
- function SensorCuratedPageSearch() {
11
+ function SensorCollectionWeighted() {
12
12
  const reactifySearchContext = (0, hooks_1.useReactifySearchContext)();
13
- const reactiveProps = (0, props_1.getPropsSensorCuratedPageSearch)({
13
+ const reactiveProps = (0, props_1.getPropsSensorCollectionWeighted)({
14
14
  config: reactifySearchContext.config,
15
15
  provider: reactifySearchContext.options,
16
16
  });
@@ -18,4 +18,4 @@ function SensorCuratedPageSearch() {
18
18
  return null;
19
19
  return react_1.default.createElement(ReactiveComponent_1.default, Object.assign({}, reactiveProps));
20
20
  }
21
- //# sourceMappingURL=SensorCuratedPageSearch.js.map
21
+ //# sourceMappingURL=SensorCollectionWeighted.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SensorCollectionWeighted.js","sourceRoot":"","sources":["../../../../src/components/Sensor/SensorCollectionWeighted.tsx"],"names":[],"mappings":";;;;;AAKA,4DAUC;AAfD,kDAA0B;AAC1B,6HAAqG;AACrG,uCAAuD;AACvD,+CAAuE;AAEvE,SAAgB,wBAAwB;IACtC,MAAM,qBAAqB,GAAG,IAAA,gCAAwB,GAAE,CAAC;IACzD,MAAM,aAAa,GAAG,IAAA,wCAAgC,EAAC;QACrD,MAAM,EAAE,qBAAqB,CAAC,MAAM;QACpC,QAAQ,EAAE,qBAAqB,CAAC,OAAO;KACxC,CAAC,CAAC;IAEH,IAAI,CAAC,aAAa;QAAE,OAAO,IAAI,CAAC;IAEhC,OAAO,8BAAC,2BAAiB,oBAAK,aAAa,EAAI,CAAC;AAClD,CAAC","sourcesContent":["import React from \"react\";\nimport ReactiveComponent from \"@usereactify/search-internals/lib/components/basic/ReactiveComponent\";\nimport { useReactifySearchContext } from \"../../hooks\";\nimport { getPropsSensorCollectionWeighted } from \"../../utility/props\";\n\nexport function SensorCollectionWeighted() {\n const reactifySearchContext = useReactifySearchContext();\n const reactiveProps = getPropsSensorCollectionWeighted({\n config: reactifySearchContext.config,\n provider: reactifySearchContext.options,\n });\n\n if (!reactiveProps) return null;\n\n return <ReactiveComponent {...reactiveProps} />;\n}\n"]}
@@ -26,25 +26,15 @@ const SensorSearchTerm = () => {
26
26
  const { run: runDebouncedTriggerQuery, cancel: cancelDebouncedTriggerQuery } = (0, ahooks_1.useDebounceFn)((value) => {
27
27
  setSearchTermDebounced(value);
28
28
  let trimmedSearchTerm = searchTerm.trim();
29
- if (!trimmedSearchTerm ||
30
- (trimmedSearchTerm && trimmedSearchTerm.length < 3)) {
29
+ if (!trimmedSearchTerm || (trimmedSearchTerm && trimmedSearchTerm.length < 3))
31
30
  return;
32
- }
33
- track({
34
- eventName: "search",
35
- payload: {
36
- searchTerm: trimmedSearchTerm,
37
- },
38
- });
39
- }, {
40
- wait: 300,
41
- });
31
+ track({ eventName: "search", payload: { searchTerm: trimmedSearchTerm } });
32
+ }, { wait: 300 });
42
33
  react_1.default.useEffect(() => {
43
34
  runDebouncedTriggerQuery(searchTerm);
44
35
  }, [searchTerm]);
45
- if (searchFields.length === 0) {
36
+ if (searchFields.length === 0)
46
37
  return null;
47
- }
48
38
  return (react_1.default.createElement(react_1.default.Fragment, null,
49
39
  react_1.default.createElement(DataSearch_1.default, { fuzziness: 1, queryFormat: "and", autosuggest: false, value: searchTermDebounced, componentId: "SensorSearchTerm", style: { display: "none" }, dataField: searchFields.map((field) => field.field), fieldWeights: searchFields.map((field) => field.importance), customQuery: (value, props) => {
50
40
  const valueNormal = value.toLowerCase().trim();
@@ -86,8 +76,7 @@ const SensorSearchTerm = () => {
86
76
  });
87
77
  }
88
78
  }
89
- const fieldsPhrase = props.dataField
90
- .map((field, index) => `${field}^${props.fieldWeights[index]}`);
79
+ const fieldsPhrase = props.dataField.map((field, index) => `${field}^${props.fieldWeights[index]}`);
91
80
  if (fieldsPhrase.length > 0) {
92
81
  conditions.push({
93
82
  multi_match: {
@@ -111,8 +100,7 @@ const SensorSearchTerm = () => {
111
100
  },
112
101
  });
113
102
  }
114
- const fieldsCrossFields = props.dataField
115
- .map((field, index) => `${field}^${props.fieldWeights[index]}`);
103
+ const fieldsCrossFields = props.dataField.map((field, index) => `${field}^${props.fieldWeights[index]}`);
116
104
  if (fieldsCrossFields.length > 0) {
117
105
  conditions.push({
118
106
  multi_match: {
@@ -1 +1 @@
1
- {"version":3,"file":"SensorSearchTerm.js","sourceRoot":"","sources":["../../../../src/components/Sensor/SensorSearchTerm.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport { useDebounceFn } from \"ahooks\";\nimport DataSearch from \"@usereactify/search-internals/lib/components/search/DataSearch\";\n\nimport { useAnalytics, useReactifySearchContext, useSearch } from \"../../hooks\";\n\nexport const SensorSearchTerm: React.FC = () => {\n const { options, config } = useReactifySearchContext();\n const { track } = useAnalytics();\n const { searchTerm } = useSearch();\n\n const [searchTermDebounced, setSearchTermDebounced] =\n React.useState<string>(searchTerm);\n\n // ignore search fields only set for instant search\n const searchFields = React.useMemo(() => {\n if (options.mode === \"search\") {\n return config.fields.filter((field) =>\n [\"always_search\", \"search_page\"].includes(field.searchType)\n );\n }\n\n if (options.mode === \"instant-search\") {\n return config.fields.filter((field) =>\n [\"always_search\", \"instant_search\"].includes(field.searchType)\n );\n }\n\n return [];\n }, [config.fields]);\n\n const { run: runDebouncedTriggerQuery, cancel: cancelDebouncedTriggerQuery } =\n useDebounceFn(\n (value: string) => {\n setSearchTermDebounced(value);\n\n let trimmedSearchTerm = searchTerm.trim();\n\n if (\n !trimmedSearchTerm ||\n (trimmedSearchTerm && trimmedSearchTerm.length < 3)\n ) {\n return;\n }\n\n track({\n eventName: \"search\",\n payload: {\n searchTerm: trimmedSearchTerm,\n },\n });\n },\n {\n wait: 300,\n }\n );\n\n React.useEffect(() => {\n runDebouncedTriggerQuery(searchTerm);\n }, [searchTerm]);\n\n if (searchFields.length === 0) {\n return null;\n }\n\n return (\n <>\n <DataSearch\n fuzziness={1}\n queryFormat=\"and\"\n autosuggest={false}\n value={searchTermDebounced}\n componentId=\"SensorSearchTerm\"\n style={{ display: \"none\" }}\n dataField={searchFields.map((field) => field.field)}\n fieldWeights={searchFields.map((field) => field.importance)}\n customQuery={(value, props) => {\n const valueNormal = value.toLowerCase().trim();\n const conditions: Array<unknown> = [];\n\n if (valueNormal) {\n if (options.market) {\n conditions.push({\n nested: {\n path: \"curations\",\n query: {\n bool: {\n must: [\n {\n term: {\n \"curations.searchTerm.keyword\": valueNormal,\n },\n },\n {\n term: {\n \"curations.markets.keyword\": options.market,\n },\n },\n ],\n },\n },\n },\n });\n } else {\n conditions.push({\n nested: {\n path: \"curations\",\n query: {\n term: {\n \"curations.searchTerm.keyword\": valueNormal,\n },\n },\n },\n });\n }\n }\n\n const fieldsPhrase = props.dataField\n .map(\n (field: string, index: number) =>\n `${field}^${props.fieldWeights[index]}`\n );\n if (fieldsPhrase.length > 0) {\n conditions.push({\n multi_match: {\n query: valueNormal,\n fields: fieldsPhrase,\n type: \"phrase\",\n operator: \"and\",\n },\n });\n }\n\n const fieldsPhrasePrefix = props.dataField\n .map(\n (field: string, index: number) =>\n `${field}^${props.fieldWeights[index]}`\n )\n .filter((field: string) => !field.includes(\".\"));\n\n if (fieldsPhrasePrefix.length > 0) {\n conditions.push({\n multi_match: {\n query: valueNormal,\n fields: fieldsPhrasePrefix,\n type: \"phrase_prefix\",\n operator: \"and\",\n },\n });\n }\n\n const fieldsCrossFields = props.dataField\n .map(\n (field: string, index: number) =>\n `${field}^${props.fieldWeights[index]}`\n );\n if (fieldsCrossFields.length > 0) {\n conditions.push({\n multi_match: {\n query: valueNormal,\n fields: fieldsCrossFields,\n type: \"cross_fields\",\n operator: \"and\",\n },\n });\n }\n\n const fieldsSpanFirst: any = props.dataField\n .filter((field: string) => {\n if (field.endsWith(\".keyword\")) {\n return false;\n }\n\n return true;\n })\n .map((field: string) => ({\n span_first: {\n match: {\n span_term: { [`${field}`]: valueNormal },\n },\n end: 1,\n },\n }));\n if (fieldsSpanFirst.length > 0) {\n conditions.push(...fieldsSpanFirst);\n }\n\n return {\n query: {\n bool: {\n should: conditions,\n minimum_should_match: \"1\",\n },\n },\n };\n }}\n />\n </>\n );\n};\n"]}
1
+ {"version":3,"file":"SensorSearchTerm.js","sourceRoot":"","sources":["../../../../src/components/Sensor/SensorSearchTerm.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport { useDebounceFn } from \"ahooks\";\nimport DataSearch from \"@usereactify/search-internals/lib/components/search/DataSearch\";\n\nimport { useAnalytics, useReactifySearchContext, useSearch } from \"../../hooks\";\n\nexport const SensorSearchTerm: React.FC = () => {\n const { options, config } = useReactifySearchContext();\n const { track } = useAnalytics();\n const { searchTerm } = useSearch();\n\n const [searchTermDebounced, setSearchTermDebounced] = React.useState<string>(searchTerm);\n\n // ignore search fields only set for instant search\n const searchFields = React.useMemo(() => {\n if (options.mode === \"search\") {\n return config.fields.filter((field) => [\"always_search\", \"search_page\"].includes(field.searchType));\n }\n if (options.mode === \"instant-search\") {\n return config.fields.filter((field) => [\"always_search\", \"instant_search\"].includes(field.searchType));\n }\n return [];\n }, [config.fields]);\n\n const { run: runDebouncedTriggerQuery, cancel: cancelDebouncedTriggerQuery } = useDebounceFn(\n (value: string) => {\n setSearchTermDebounced(value);\n let trimmedSearchTerm = searchTerm.trim();\n if (!trimmedSearchTerm || (trimmedSearchTerm && trimmedSearchTerm.length < 3)) return;\n track({ eventName: \"search\", payload: { searchTerm: trimmedSearchTerm } });\n },\n { wait: 300 }\n );\n\n React.useEffect(() => {\n runDebouncedTriggerQuery(searchTerm);\n }, [searchTerm]);\n\n if (searchFields.length === 0) return null;\n\n return (\n <>\n <DataSearch\n fuzziness={1}\n queryFormat=\"and\"\n autosuggest={false}\n value={searchTermDebounced}\n componentId=\"SensorSearchTerm\"\n style={{ display: \"none\" }}\n dataField={searchFields.map((field) => field.field)}\n fieldWeights={searchFields.map((field) => field.importance)}\n customQuery={(value, props) => {\n const valueNormal = value.toLowerCase().trim();\n const conditions: Array<unknown> = [];\n\n if (valueNormal) {\n if (options.market) {\n conditions.push({\n nested: {\n path: \"curations\",\n query: {\n bool: {\n must: [\n {\n term: {\n \"curations.searchTerm.keyword\": valueNormal,\n },\n },\n {\n term: {\n \"curations.markets.keyword\": options.market,\n },\n },\n ],\n },\n },\n },\n });\n } else {\n conditions.push({\n nested: {\n path: \"curations\",\n query: {\n term: {\n \"curations.searchTerm.keyword\": valueNormal,\n },\n },\n },\n });\n }\n }\n\n const fieldsPhrase = props.dataField.map(\n (field: string, index: number) => `${field}^${props.fieldWeights[index]}`\n );\n if (fieldsPhrase.length > 0) {\n conditions.push({\n multi_match: {\n query: valueNormal,\n fields: fieldsPhrase,\n type: \"phrase\",\n operator: \"and\",\n },\n });\n }\n\n const fieldsPhrasePrefix = props.dataField\n .map((field: string, index: number) => `${field}^${props.fieldWeights[index]}`)\n .filter((field: string) => !field.includes(\".\"));\n\n if (fieldsPhrasePrefix.length > 0) {\n conditions.push({\n multi_match: {\n query: valueNormal,\n fields: fieldsPhrasePrefix,\n type: \"phrase_prefix\",\n operator: \"and\",\n },\n });\n }\n\n const fieldsCrossFields = props.dataField.map(\n (field: string, index: number) => `${field}^${props.fieldWeights[index]}`\n );\n if (fieldsCrossFields.length > 0) {\n conditions.push({\n multi_match: {\n query: valueNormal,\n fields: fieldsCrossFields,\n type: \"cross_fields\",\n operator: \"and\",\n },\n });\n }\n\n const fieldsSpanFirst: any = props.dataField\n .filter((field: string) => {\n if (field.endsWith(\".keyword\")) {\n return false;\n }\n\n return true;\n })\n .map((field: string) => ({\n span_first: {\n match: {\n span_term: { [`${field}`]: valueNormal },\n },\n end: 1,\n },\n }));\n if (fieldsSpanFirst.length > 0) {\n conditions.push(...fieldsSpanFirst);\n }\n\n return {\n query: {\n bool: {\n should: conditions,\n minimum_should_match: \"1\",\n },\n },\n };\n }}\n />\n </>\n );\n};\n"]}
@@ -0,0 +1 @@
1
+ export declare function SensorSearchWeighted(): JSX.Element | null;
@@ -3,19 +3,20 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.SensorCuratedPageCollection = SensorCuratedPageCollection;
6
+ exports.SensorSearchWeighted = SensorSearchWeighted;
7
7
  const react_1 = __importDefault(require("react"));
8
8
  const ReactiveComponent_1 = __importDefault(require("@usereactify/search-internals/lib/components/basic/ReactiveComponent"));
9
9
  const hooks_1 = require("../../hooks");
10
10
  const props_1 = require("../../utility/props");
11
- function SensorCuratedPageCollection() {
11
+ function SensorSearchWeighted() {
12
12
  const reactifySearchContext = (0, hooks_1.useReactifySearchContext)();
13
- const reactiveProps = (0, props_1.getPropsSensorCuratedPageCollection)({
13
+ const reactiveProps = (0, props_1.getPropsSensorSearchWeighted)({
14
14
  config: reactifySearchContext.config,
15
15
  provider: reactifySearchContext.options,
16
+ searchTerm: reactifySearchContext.search.searchTerm,
16
17
  });
17
18
  if (!reactiveProps)
18
19
  return null;
19
20
  return react_1.default.createElement(ReactiveComponent_1.default, Object.assign({}, reactiveProps));
20
21
  }
21
- //# sourceMappingURL=SensorCuratedPageCollection.js.map
22
+ //# sourceMappingURL=SensorSearchWeighted.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SensorSearchWeighted.js","sourceRoot":"","sources":["../../../../src/components/Sensor/SensorSearchWeighted.tsx"],"names":[],"mappings":";;;;;AAKA,oDAWC;AAhBD,kDAA0B;AAC1B,6HAAqG;AACrG,uCAAuD;AACvD,+CAAmE;AAEnE,SAAgB,oBAAoB;IAClC,MAAM,qBAAqB,GAAG,IAAA,gCAAwB,GAAE,CAAC;IACzD,MAAM,aAAa,GAAG,IAAA,oCAA4B,EAAC;QACjD,MAAM,EAAE,qBAAqB,CAAC,MAAM;QACpC,QAAQ,EAAE,qBAAqB,CAAC,OAAO;QACvC,UAAU,EAAE,qBAAqB,CAAC,MAAM,CAAC,UAAU;KACpD,CAAC,CAAC;IAEH,IAAI,CAAC,aAAa;QAAE,OAAO,IAAI,CAAC;IAEhC,OAAO,8BAAC,2BAAiB,oBAAK,aAAa,EAAI,CAAC;AAClD,CAAC","sourcesContent":["import React from \"react\";\nimport ReactiveComponent from \"@usereactify/search-internals/lib/components/basic/ReactiveComponent\";\nimport { useReactifySearchContext } from \"../../hooks\";\nimport { getPropsSensorSearchWeighted } from \"../../utility/props\";\n\nexport function SensorSearchWeighted() {\n const reactifySearchContext = useReactifySearchContext();\n const reactiveProps = getPropsSensorSearchWeighted({\n config: reactifySearchContext.config,\n provider: reactifySearchContext.options,\n searchTerm: reactifySearchContext.search.searchTerm,\n });\n\n if (!reactiveProps) return null;\n\n return <ReactiveComponent {...reactiveProps} />;\n}\n"]}
@@ -12,11 +12,21 @@ const SensorCollection_1 = require("./SensorCollection");
12
12
  const SensorSearchTerm_1 = require("./SensorSearchTerm");
13
13
  const SensorInventoryAvailable_1 = require("./SensorInventoryAvailable");
14
14
  const SensorCustom_1 = require("./SensorCustom");
15
- const SensorCuratedPageCollection_1 = require("./SensorCuratedPageCollection");
16
- const SensorCuratedPageSearch_1 = require("./SensorCuratedPageSearch");
15
+ const SensorCollectionWeighted_1 = require("./SensorCollectionWeighted");
16
+ const SensorSearchWeighted_1 = require("./SensorSearchWeighted");
17
17
  const Sensors = () => {
18
- const { options } = (0, hooks_1.useReactifySearchContext)();
18
+ var _a, _b;
19
+ const { config, options } = (0, hooks_1.useReactifySearchContext)();
20
+ const useWeightedSearch = (_b = (_a = config.featureFlags) === null || _a === void 0 ? void 0 : _a.includes("use_weighted_search")) !== null && _b !== void 0 ? _b : false;
19
21
  if (options.mode === "search" || options.mode === "instant-search") {
22
+ if (useWeightedSearch) {
23
+ return (react_1.default.createElement(react_1.default.Fragment, null,
24
+ react_1.default.createElement(SensorSort_1.SensorSort, null),
25
+ react_1.default.createElement(SensorPublished_1.SensorPublished, null),
26
+ react_1.default.createElement(SensorSearchWeighted_1.SensorSearchWeighted, null),
27
+ react_1.default.createElement(SensorInventoryAvailable_1.SensorInventoryAvailable, null),
28
+ react_1.default.createElement(SensorCustom_1.SensorCustom, null)));
29
+ }
20
30
  return (react_1.default.createElement(react_1.default.Fragment, null,
21
31
  react_1.default.createElement(SensorSort_1.SensorSort, null),
22
32
  react_1.default.createElement(SensorPublished_1.SensorPublished, null),
@@ -25,6 +35,14 @@ const Sensors = () => {
25
35
  react_1.default.createElement(SensorCustom_1.SensorCustom, null)));
26
36
  }
27
37
  if (options.mode === "collection") {
38
+ if (useWeightedSearch) {
39
+ return (react_1.default.createElement(react_1.default.Fragment, null,
40
+ react_1.default.createElement(SensorSort_1.SensorSort, null),
41
+ react_1.default.createElement(SensorPublished_1.SensorPublished, null),
42
+ react_1.default.createElement(SensorCollectionWeighted_1.SensorCollectionWeighted, null),
43
+ react_1.default.createElement(SensorInventoryAvailable_1.SensorInventoryAvailable, null),
44
+ react_1.default.createElement(SensorCustom_1.SensorCustom, null)));
45
+ }
28
46
  return (react_1.default.createElement(react_1.default.Fragment, null,
29
47
  react_1.default.createElement(SensorSort_1.SensorSort, null),
30
48
  react_1.default.createElement(SensorPublished_1.SensorPublished, null),
@@ -32,22 +50,6 @@ const Sensors = () => {
32
50
  react_1.default.createElement(SensorInventoryAvailable_1.SensorInventoryAvailable, null),
33
51
  react_1.default.createElement(SensorCustom_1.SensorCustom, null)));
34
52
  }
35
- if (options.mode === "curated-page" && options.variation === "collection") {
36
- return (react_1.default.createElement(react_1.default.Fragment, null,
37
- react_1.default.createElement(SensorSort_1.SensorSort, null),
38
- react_1.default.createElement(SensorPublished_1.SensorPublished, null),
39
- react_1.default.createElement(SensorCuratedPageCollection_1.SensorCuratedPageCollection, null),
40
- react_1.default.createElement(SensorInventoryAvailable_1.SensorInventoryAvailable, null),
41
- react_1.default.createElement(SensorCustom_1.SensorCustom, null)));
42
- }
43
- if (options.mode === "curated-page" && options.variation === "search") {
44
- return (react_1.default.createElement(react_1.default.Fragment, null,
45
- react_1.default.createElement(SensorSort_1.SensorSort, null),
46
- react_1.default.createElement(SensorPublished_1.SensorPublished, null),
47
- react_1.default.createElement(SensorCuratedPageSearch_1.SensorCuratedPageSearch, null),
48
- react_1.default.createElement(SensorInventoryAvailable_1.SensorInventoryAvailable, null),
49
- react_1.default.createElement(SensorCustom_1.SensorCustom, null)));
50
- }
51
53
  return null;
52
54
  };
53
55
  exports.Sensors = Sensors;
@@ -1 +1 @@
1
- {"version":3,"file":"Sensors.js","sourceRoot":"","sources":["../../../../src/components/Sensor/Sensors.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B,uCAAuD;AAEvD,6CAA0C;AAC1C,uDAAoD;AACpD,yDAAsD;AACtD,yDAAsD;AACtD,yEAAsE;AACtE,iDAA8C;AAC9C,+EAA4E;AAC5E,uEAAoE;AAM7D,MAAM,OAAO,GAA2B,GAAG,EAAE;IAClD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAA,gCAAwB,GAAE,CAAC;IAE/C,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACnE,OAAO,CACL;YACE,8BAAC,uBAAU,OAAG;YACd,8BAAC,iCAAe,OAAG;YACnB,8BAAC,mCAAgB,OAAG;YACpB,8BAAC,mDAAwB,OAAG;YAC5B,8BAAC,2BAAY,OAAG,CACf,CACJ,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QAClC,OAAO,CACL;YACE,8BAAC,uBAAU,OAAG;YACd,8BAAC,iCAAe,OAAG;YACnB,8BAAC,mCAAgB,OAAG;YACpB,8BAAC,mDAAwB,OAAG;YAC5B,8BAAC,2BAAY,OAAG,CACf,CACJ,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,cAAc,IAAI,OAAO,CAAC,SAAS,KAAK,YAAY,EAAE,CAAC;QAC1E,OAAO,CACL;YACE,8BAAC,uBAAU,OAAG;YACd,8BAAC,iCAAe,OAAG;YACnB,8BAAC,yDAA2B,OAAG;YAC/B,8BAAC,mDAAwB,OAAG;YAC5B,8BAAC,2BAAY,OAAG,CACf,CACJ,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,cAAc,IAAI,OAAO,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QACtE,OAAO,CACL;YACE,8BAAC,uBAAU,OAAG;YACd,8BAAC,iCAAe,OAAG;YACnB,8BAAC,iDAAuB,OAAG;YAC3B,8BAAC,mDAAwB,OAAG;YAC5B,8BAAC,2BAAY,OAAG,CACf,CACJ,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AApDW,QAAA,OAAO,WAoDlB","sourcesContent":["import React from \"react\";\n\nimport { useReactifySearchContext } from \"../../hooks\";\n\nimport { SensorSort } from \"./SensorSort\";\nimport { SensorPublished } from \"./SensorPublished\";\nimport { SensorCollection } from \"./SensorCollection\";\nimport { SensorSearchTerm } from \"./SensorSearchTerm\";\nimport { SensorInventoryAvailable } from \"./SensorInventoryAvailable\";\nimport { SensorCustom } from \"./SensorCustom\";\nimport { SensorCuratedPageCollection } from \"./SensorCuratedPageCollection\";\nimport { SensorCuratedPageSearch } from \"./SensorCuratedPageSearch\";\n\nexport type SensorsProps = {\n /** This component does not support any props */\n};\n\nexport const Sensors: React.FC<SensorsProps> = () => {\n const { options } = useReactifySearchContext();\n\n if (options.mode === \"search\" || options.mode === \"instant-search\") {\n return (\n <>\n <SensorSort />\n <SensorPublished />\n <SensorSearchTerm />\n <SensorInventoryAvailable />\n <SensorCustom />\n </>\n );\n }\n\n if (options.mode === \"collection\") {\n return (\n <>\n <SensorSort />\n <SensorPublished />\n <SensorCollection />\n <SensorInventoryAvailable />\n <SensorCustom />\n </>\n );\n }\n\n if (options.mode === \"curated-page\" && options.variation === \"collection\") {\n return (\n <>\n <SensorSort />\n <SensorPublished />\n <SensorCuratedPageCollection />\n <SensorInventoryAvailable />\n <SensorCustom />\n </>\n );\n }\n\n if (options.mode === \"curated-page\" && options.variation === \"search\") {\n return (\n <>\n <SensorSort />\n <SensorPublished />\n <SensorCuratedPageSearch />\n <SensorInventoryAvailable />\n <SensorCustom />\n </>\n );\n }\n\n return null;\n};\n"]}
1
+ {"version":3,"file":"Sensors.js","sourceRoot":"","sources":["../../../../src/components/Sensor/Sensors.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B,uCAAuD;AAEvD,6CAA0C;AAC1C,uDAAoD;AACpD,yDAAsD;AACtD,yDAAsD;AACtD,yEAAsE;AACtE,iDAA8C;AAC9C,yEAAsE;AACtE,iEAA8D;AAMvD,MAAM,OAAO,GAA2B,GAAG,EAAE;;IAClD,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAA,gCAAwB,GAAE,CAAC;IAEvD,MAAM,iBAAiB,GAAG,MAAA,MAAA,MAAM,CAAC,YAAY,0CAAE,QAAQ,CAAC,qBAAqB,CAAC,mCAAI,KAAK,CAAC;IAExF,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACnE,IAAI,iBAAiB,EAAE,CAAC;YACtB,OAAO,CACL;gBACE,8BAAC,uBAAU,OAAG;gBACd,8BAAC,iCAAe,OAAG;gBACnB,8BAAC,2CAAoB,OAAG;gBACxB,8BAAC,mDAAwB,OAAG;gBAC5B,8BAAC,2BAAY,OAAG,CACf,CACJ,CAAC;QACJ,CAAC;QACD,OAAO,CACL;YACE,8BAAC,uBAAU,OAAG;YACd,8BAAC,iCAAe,OAAG;YACnB,8BAAC,mCAAgB,OAAG;YACpB,8BAAC,mDAAwB,OAAG;YAC5B,8BAAC,2BAAY,OAAG,CACf,CACJ,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QAClC,IAAI,iBAAiB,EAAE,CAAC;YACtB,OAAO,CACL;gBACE,8BAAC,uBAAU,OAAG;gBACd,8BAAC,iCAAe,OAAG;gBACnB,8BAAC,mDAAwB,OAAG;gBAC5B,8BAAC,mDAAwB,OAAG;gBAC5B,8BAAC,2BAAY,OAAG,CACf,CACJ,CAAC;QACJ,CAAC;QACD,OAAO,CACL;YACE,8BAAC,uBAAU,OAAG;YACd,8BAAC,iCAAe,OAAG;YACnB,8BAAC,mCAAgB,OAAG;YACpB,8BAAC,mDAAwB,OAAG;YAC5B,8BAAC,2BAAY,OAAG,CACf,CACJ,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AApDW,QAAA,OAAO,WAoDlB","sourcesContent":["import React from \"react\";\n\nimport { useReactifySearchContext } from \"../../hooks\";\n\nimport { SensorSort } from \"./SensorSort\";\nimport { SensorPublished } from \"./SensorPublished\";\nimport { SensorCollection } from \"./SensorCollection\";\nimport { SensorSearchTerm } from \"./SensorSearchTerm\";\nimport { SensorInventoryAvailable } from \"./SensorInventoryAvailable\";\nimport { SensorCustom } from \"./SensorCustom\";\nimport { SensorCollectionWeighted } from \"./SensorCollectionWeighted\";\nimport { SensorSearchWeighted } from \"./SensorSearchWeighted\";\n\nexport type SensorsProps = {\n /** This component does not support any props */\n};\n\nexport const Sensors: React.FC<SensorsProps> = () => {\n const { config, options } = useReactifySearchContext();\n\n const useWeightedSearch = config.featureFlags?.includes(\"use_weighted_search\") ?? false;\n\n if (options.mode === \"search\" || options.mode === \"instant-search\") {\n if (useWeightedSearch) {\n return (\n <>\n <SensorSort />\n <SensorPublished />\n <SensorSearchWeighted />\n <SensorInventoryAvailable />\n <SensorCustom />\n </>\n );\n }\n return (\n <>\n <SensorSort />\n <SensorPublished />\n <SensorSearchTerm />\n <SensorInventoryAvailable />\n <SensorCustom />\n </>\n );\n }\n\n if (options.mode === \"collection\") {\n if (useWeightedSearch) {\n return (\n <>\n <SensorSort />\n <SensorPublished />\n <SensorCollectionWeighted />\n <SensorInventoryAvailable />\n <SensorCustom />\n </>\n );\n }\n return (\n <>\n <SensorSort />\n <SensorPublished />\n <SensorCollection />\n <SensorInventoryAvailable />\n <SensorCustom />\n </>\n );\n }\n\n return null;\n};\n"]}
@@ -5,7 +5,7 @@ export * from "./SensorPublished";
5
5
  export * from "./SensorCollection";
6
6
  export * from "./SensorSearchTerm";
7
7
  export * from "./SensorInventoryAvailable";
8
- export * from "./SensorCuratedPageCollection";
9
- export * from "./SensorCuratedPageSearch";
8
+ export * from "./SensorCollectionWeighted";
9
+ export * from "./SensorSearchWeighted";
10
10
  export * from "./Sensors";
11
11
  export declare const SENSOR_IDS: (mode: ReactifySearchMode, config: Config, variation?: string) => string[];
@@ -20,8 +20,8 @@ __exportStar(require("./SensorPublished"), exports);
20
20
  __exportStar(require("./SensorCollection"), exports);
21
21
  __exportStar(require("./SensorSearchTerm"), exports);
22
22
  __exportStar(require("./SensorInventoryAvailable"), exports);
23
- __exportStar(require("./SensorCuratedPageCollection"), exports);
24
- __exportStar(require("./SensorCuratedPageSearch"), exports);
23
+ __exportStar(require("./SensorCollectionWeighted"), exports);
24
+ __exportStar(require("./SensorSearchWeighted"), exports);
25
25
  __exportStar(require("./Sensors"), exports);
26
26
  // This is consumed by the react prop in various components
27
27
  const SENSOR_IDS = (mode, config, variation) => {
@@ -31,12 +31,10 @@ const SENSOR_IDS = (mode, config, variation) => {
31
31
  "SensorCollection",
32
32
  "SensorSearchTerm",
33
33
  "SensorInventoryAvailable",
34
- "SensorCuratedPageCollection",
35
- "SensorCuratedPageSearch",
34
+ "SensorCollectionWeighted",
35
+ "SensorSearchWeighted",
36
36
  ];
37
- const sensorType = mode === "collection" ? "collection" :
38
- mode === "curated-page" && variation === "collection" ? "collection" :
39
- "search";
37
+ const sensorType = mode === "collection" ? "collection" : "search";
40
38
  const customSensors = sensorType === "collection" ? config.sensors.collection : config.sensors.search;
41
39
  if (customSensors.length > 0) {
42
40
  sensorIds.push(...customSensors.map((item, index) => `SensorCustom_${index}`));
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/Sensor/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAGA,+CAA6B;AAC7B,oDAAkC;AAClC,qDAAmC;AACnC,qDAAmC;AACnC,6DAA2C;AAC3C,gEAA8C;AAC9C,4DAA0C;AAE1C,4CAA0B;AAE1B,2DAA2D;AACpD,MAAM,UAAU,GAAG,CAAC,IAAwB,EAAE,MAAc,EAAE,SAAkB,EAAE,EAAE;IACzF,MAAM,SAAS,GAAG;QAChB,YAAY;QACZ,iBAAiB;QACjB,kBAAkB;QAClB,kBAAkB;QAClB,0BAA0B;QAC1B,6BAA6B;QAC7B,yBAAyB;KAC1B,CAAC;IAEF,MAAM,UAAU,GACd,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QACtC,IAAI,KAAK,cAAc,IAAI,SAAS,KAAK,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;YACtE,QAAQ,CAAC;IAEX,MAAM,aAAa,GAAG,UAAU,KAAK,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;IACtG,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,SAAS,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,gBAAgB,KAAK,EAAE,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAtBW,QAAA,UAAU,cAsBrB","sourcesContent":["import { ReactifySearchMode } from \"../../hooks\";\nimport { Config } from \"../../types\";\n\nexport * from \"./SensorSort\";\nexport * from \"./SensorPublished\";\nexport * from \"./SensorCollection\";\nexport * from \"./SensorSearchTerm\";\nexport * from \"./SensorInventoryAvailable\";\nexport * from \"./SensorCuratedPageCollection\";\nexport * from \"./SensorCuratedPageSearch\";\n\nexport * from \"./Sensors\";\n\n// This is consumed by the react prop in various components\nexport const SENSOR_IDS = (mode: ReactifySearchMode, config: Config, variation?: string) => {\n const sensorIds = [\n \"SensorSort\",\n \"SensorPublished\",\n \"SensorCollection\",\n \"SensorSearchTerm\",\n \"SensorInventoryAvailable\",\n \"SensorCuratedPageCollection\",\n \"SensorCuratedPageSearch\",\n ];\n \n const sensorType = \n mode === \"collection\" ? \"collection\" :\n mode === \"curated-page\" && variation === \"collection\" ? \"collection\" :\n \"search\";\n \n const customSensors = sensorType === \"collection\" ? config.sensors.collection : config.sensors.search;\n if (customSensors.length > 0) {\n sensorIds.push(...customSensors.map((item, index) => `SensorCustom_${index}`));\n }\n\n return sensorIds;\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/Sensor/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAGA,+CAA6B;AAC7B,oDAAkC;AAClC,qDAAmC;AACnC,qDAAmC;AACnC,6DAA2C;AAC3C,6DAA2C;AAC3C,yDAAuC;AAEvC,4CAA0B;AAE1B,2DAA2D;AACpD,MAAM,UAAU,GAAG,CAAC,IAAwB,EAAE,MAAc,EAAE,SAAkB,EAAE,EAAE;IACzF,MAAM,SAAS,GAAG;QAChB,YAAY;QACZ,iBAAiB;QACjB,kBAAkB;QAClB,kBAAkB;QAClB,0BAA0B;QAC1B,0BAA0B;QAC1B,sBAAsB;KACvB,CAAC;IAEF,MAAM,UAAU,GACd,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC;IAElD,MAAM,aAAa,GAAG,UAAU,KAAK,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;IACtG,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,SAAS,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,gBAAgB,KAAK,EAAE,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AApBW,QAAA,UAAU,cAoBrB","sourcesContent":["import { ReactifySearchMode } from \"../../hooks\";\nimport { Config } from \"../../types\";\n\nexport * from \"./SensorSort\";\nexport * from \"./SensorPublished\";\nexport * from \"./SensorCollection\";\nexport * from \"./SensorSearchTerm\";\nexport * from \"./SensorInventoryAvailable\";\nexport * from \"./SensorCollectionWeighted\";\nexport * from \"./SensorSearchWeighted\";\n\nexport * from \"./Sensors\";\n\n// This is consumed by the react prop in various components\nexport const SENSOR_IDS = (mode: ReactifySearchMode, config: Config, variation?: string) => {\n const sensorIds = [\n \"SensorSort\",\n \"SensorPublished\",\n \"SensorCollection\",\n \"SensorSearchTerm\",\n \"SensorInventoryAvailable\",\n \"SensorCollectionWeighted\",\n \"SensorSearchWeighted\",\n ];\n \n const sensorType = \n mode === \"collection\" ? \"collection\" : \"search\";\n \n const customSensors = sensorType === \"collection\" ? config.sensors.collection : config.sensors.search;\n if (customSensors.length > 0) {\n sensorIds.push(...customSensors.map((item, index) => `SensorCustom_${index}`));\n }\n\n return sensorIds;\n};\n"]}
@@ -12,8 +12,7 @@ const Suggestions = (props) => {
12
12
  const RenderComponent = (_a = props.render) !== null && _a !== void 0 ? _a : components_1.ExampleSuggestions;
13
13
  const reactifySearchContext = (0, hooks_1.useReactifySearchContext)();
14
14
  const { searchTerm } = (0, hooks_1.useSearch)();
15
- const variation = reactifySearchContext.options.mode === "curated-page" ? reactifySearchContext.options.variation : undefined;
16
- const sensorIds = (0, components_1.SENSOR_IDS)(reactifySearchContext.options.mode, reactifySearchContext.config, variation);
15
+ const sensorIds = (0, components_1.SENSOR_IDS)(reactifySearchContext.options.mode, reactifySearchContext.config);
17
16
  return (react_1.default.createElement(components_1.CustomComponent, { componentId: "SensorSuggestions", defaultQuery: () => {
18
17
  return {
19
18
  suggest: {
@@ -1 +1 @@
1
- {"version":3,"file":"Suggestions.js","sourceRoot":"","sources":["../../../../src/components/Suggestions/Suggestions.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B,iDAI0B;AAC1B,uCAAkE;AAa3D,MAAM,WAAW,GAA+B,CAAC,KAAK,EAAE,EAAE;;IAC/D,MAAM,eAAe,GAAG,MAAA,KAAK,CAAC,MAAM,mCAAI,+BAAkB,CAAC;IAE3D,MAAM,qBAAqB,GAAG,IAAA,gCAAwB,GAAE,CAAC;IAEzD,MAAM,EAAE,UAAU,EAAE,GAAG,IAAA,iBAAS,GAAE,CAAC;IAEnC,MAAM,SAAS,GAAG,qBAAqB,CAAC,OAAO,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC,CAAC,qBAAqB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9H,MAAM,SAAS,GAAG,IAAA,uBAAU,EAAC,qBAAqB,CAAC,OAAO,CAAC,IAAI,EAAE,qBAAqB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAE1G,OAAO,CACL,8BAAC,4BAAe,IACd,WAAW,EAAC,mBAAmB,EAC/B,YAAY,EAAE,GAAG,EAAE;YACjB,OAAO;gBACL,OAAO,EAAE;oBACP,WAAW,EAAE;wBACX,IAAI,EAAE,UAAU;wBAChB,MAAM,EAAE;4BACN,KAAK,EAAE,KAAK,CAAC,KAAK;4BAClB,SAAS,EAAE,CAAC;4BACZ,UAAU,EAAE,CAAC;4BACb,gBAAgB,EAAE,CAAC;oCACjB,KAAK,EAAE,KAAK,CAAC,KAAK;oCAClB,YAAY,EAAE,QAAQ;oCACtB,eAAe,EAAE,CAAC;iCACnB,CAAC;yBACH;qBACF;iBACF;aACF,CAAC;QACJ,CAAC,EACD,KAAK,EAAE;YACL,GAAG,EAAE,SAAS;SACf,EACD,MAAM,EAAE,CAAC,WAAW,EAAE,EAAE;;YACtB,MAAM,KAAK,GAEP;gBACF,WAAW,EAAE,EAAE;aAChB,CAAC;YAEF,IAAI,MAAA,MAAA,WAAW,CAAC,OAAO,0CAAE,OAAO,0CAAE,WAAW,CAAC,MAAM,EAAE,CAAC;gBACrD,MAAM,OAAO,GAAG,MAAA,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,0CAAE,OAAO,CAAC;gBACrH,KAAK,CAAC,WAAW,GAAI,OAAiD;qBACnE,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC;qBAC9C,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,WAAC,OAAA,CAAC,CAAC,MAAA,qBAAqB,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,mCAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA,EAAA,CAAC;qBACnG,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;oBAChB,IAAI,EAAE,MAAM,CAAC,IAAI;iBAClB,CAAC,CAAC,CAAC;YACR,CAAC;YAED,OAAO,8BAAC,eAAe,oBAAK,KAAK,EAAI,CAAC;QACxC,CAAC,GACD,CACH,CAAC;AACJ,CAAC,CAAC;AAxDW,QAAA,WAAW,eAwDtB","sourcesContent":["import React from \"react\";\n\nimport {\n CustomComponent,\n ExampleSuggestions,\n SENSOR_IDS,\n} from \"../../components\";\nimport { useReactifySearchContext, useSearch } from \"../../hooks\";\n\nexport type SuggestionsProps = {\n /** The field which should be used for autocompletion */\n field: \"title\";\n /** Render method */\n render?: React.FC<{\n suggestions: Array<{\n text: string;\n }>;\n }>;\n};\n\nexport const Suggestions: React.FC<SuggestionsProps> = (props) => {\n const RenderComponent = props.render ?? ExampleSuggestions;\n\n const reactifySearchContext = useReactifySearchContext();\n\n const { searchTerm } = useSearch();\n\n const variation = reactifySearchContext.options.mode === \"curated-page\" ? reactifySearchContext.options.variation : undefined;\n const sensorIds = SENSOR_IDS(reactifySearchContext.options.mode, reactifySearchContext.config, variation);\n\n return (\n <CustomComponent\n componentId=\"SensorSuggestions\"\n defaultQuery={() => {\n return {\n suggest: {\n suggestions: {\n text: searchTerm,\n phrase: {\n field: props.field,\n gram_size: 2,\n confidence: 0,\n direct_generator: [{\n field: props.field,\n suggest_mode: \"always\",\n min_word_length: 1,\n }],\n },\n },\n },\n };\n }}\n react={{\n and: sensorIds,\n }}\n render={(renderProps) => {\n const props: React.ComponentProps<\n NonNullable<SuggestionsProps[\"render\"]>\n > = {\n suggestions: [],\n };\n\n if (renderProps.rawData?.suggest?.suggestions.length) {\n const options = renderProps.rawData.suggest.suggestions[renderProps.rawData.suggest.suggestions.length - 1]?.options;\n props.suggestions = (options as Array<{ text: string; freq: number }>)\n .filter((option) => option.text !== searchTerm)\n .filter((option) => !(reactifySearchContext.config.suggestions.exclude ?? []).includes(option.text))\n .map((option) => ({\n text: option.text,\n }));\n }\n\n return <RenderComponent {...props} />;\n }}\n />\n );\n};\n"]}
1
+ {"version":3,"file":"Suggestions.js","sourceRoot":"","sources":["../../../../src/components/Suggestions/Suggestions.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B,iDAI0B;AAC1B,uCAAkE;AAa3D,MAAM,WAAW,GAA+B,CAAC,KAAK,EAAE,EAAE;;IAC/D,MAAM,eAAe,GAAG,MAAA,KAAK,CAAC,MAAM,mCAAI,+BAAkB,CAAC;IAE3D,MAAM,qBAAqB,GAAG,IAAA,gCAAwB,GAAE,CAAC;IAEzD,MAAM,EAAE,UAAU,EAAE,GAAG,IAAA,iBAAS,GAAE,CAAC;IAEnC,MAAM,SAAS,GAAG,IAAA,uBAAU,EAAC,qBAAqB,CAAC,OAAO,CAAC,IAAI,EAAE,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAE/F,OAAO,CACL,8BAAC,4BAAe,IACd,WAAW,EAAC,mBAAmB,EAC/B,YAAY,EAAE,GAAG,EAAE;YACjB,OAAO;gBACL,OAAO,EAAE;oBACP,WAAW,EAAE;wBACX,IAAI,EAAE,UAAU;wBAChB,MAAM,EAAE;4BACN,KAAK,EAAE,KAAK,CAAC,KAAK;4BAClB,SAAS,EAAE,CAAC;4BACZ,UAAU,EAAE,CAAC;4BACb,gBAAgB,EAAE,CAAC;oCACjB,KAAK,EAAE,KAAK,CAAC,KAAK;oCAClB,YAAY,EAAE,QAAQ;oCACtB,eAAe,EAAE,CAAC;iCACnB,CAAC;yBACH;qBACF;iBACF;aACF,CAAC;QACJ,CAAC,EACD,KAAK,EAAE;YACL,GAAG,EAAE,SAAS;SACf,EACD,MAAM,EAAE,CAAC,WAAW,EAAE,EAAE;;YACtB,MAAM,KAAK,GAEP;gBACF,WAAW,EAAE,EAAE;aAChB,CAAC;YAEF,IAAI,MAAA,MAAA,WAAW,CAAC,OAAO,0CAAE,OAAO,0CAAE,WAAW,CAAC,MAAM,EAAE,CAAC;gBACrD,MAAM,OAAO,GAAG,MAAA,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,0CAAE,OAAO,CAAC;gBACrH,KAAK,CAAC,WAAW,GAAI,OAAiD;qBACnE,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC;qBAC9C,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,WAAC,OAAA,CAAC,CAAC,MAAA,qBAAqB,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,mCAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA,EAAA,CAAC;qBACnG,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;oBAChB,IAAI,EAAE,MAAM,CAAC,IAAI;iBAClB,CAAC,CAAC,CAAC;YACR,CAAC;YAED,OAAO,8BAAC,eAAe,oBAAK,KAAK,EAAI,CAAC;QACxC,CAAC,GACD,CACH,CAAC;AACJ,CAAC,CAAC;AAvDW,QAAA,WAAW,eAuDtB","sourcesContent":["import React from \"react\";\n\nimport {\n CustomComponent,\n ExampleSuggestions,\n SENSOR_IDS,\n} from \"../../components\";\nimport { useReactifySearchContext, useSearch } from \"../../hooks\";\n\nexport type SuggestionsProps = {\n /** The field which should be used for autocompletion */\n field: \"title\";\n /** Render method */\n render?: React.FC<{\n suggestions: Array<{\n text: string;\n }>;\n }>;\n};\n\nexport const Suggestions: React.FC<SuggestionsProps> = (props) => {\n const RenderComponent = props.render ?? ExampleSuggestions;\n\n const reactifySearchContext = useReactifySearchContext();\n\n const { searchTerm } = useSearch();\n\n const sensorIds = SENSOR_IDS(reactifySearchContext.options.mode, reactifySearchContext.config);\n\n return (\n <CustomComponent\n componentId=\"SensorSuggestions\"\n defaultQuery={() => {\n return {\n suggest: {\n suggestions: {\n text: searchTerm,\n phrase: {\n field: props.field,\n gram_size: 2,\n confidence: 0,\n direct_generator: [{\n field: props.field,\n suggest_mode: \"always\",\n min_word_length: 1,\n }],\n },\n },\n },\n };\n }}\n react={{\n and: sensorIds,\n }}\n render={(renderProps) => {\n const props: React.ComponentProps<\n NonNullable<SuggestionsProps[\"render\"]>\n > = {\n suggestions: [],\n };\n\n if (renderProps.rawData?.suggest?.suggestions.length) {\n const options = renderProps.rawData.suggest.suggestions[renderProps.rawData.suggest.suggestions.length - 1]?.options;\n props.suggestions = (options as Array<{ text: string; freq: number }>)\n .filter((option) => option.text !== searchTerm)\n .filter((option) => !(reactifySearchContext.config.suggestions.exclude ?? []).includes(option.text))\n .map((option) => ({\n text: option.text,\n }));\n }\n\n return <RenderComponent {...props} />;\n }}\n />\n );\n};\n"]}
@@ -1,4 +1,4 @@
1
1
  import { Config } from "../types/config";
2
- export declare const useConfig: (shopifyPermanentDomain: string, preloadedConfig?: Config) => {
2
+ export declare const useConfig: (shopifyPermanentDomain: string, preloadedConfig?: Config, configBaseUrl?: string) => {
3
3
  config: Config | undefined;
4
4
  };
@@ -15,7 +15,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.useConfig = void 0;
16
16
  const react_1 = __importDefault(require("react"));
17
17
  const utility_1 = require("../utility");
18
- const useConfig = (shopifyPermanentDomain, preloadedConfig) => {
18
+ const useConfig = (shopifyPermanentDomain, preloadedConfig, configBaseUrl) => {
19
19
  // synchronously returns cached and non-expired config from session storage
20
20
  const cachedConfig = react_1.default.useMemo(() => {
21
21
  var _a, _b;
@@ -36,19 +36,19 @@ const useConfig = (shopifyPermanentDomain, preloadedConfig) => {
36
36
  (() => __awaiter(void 0, void 0, void 0, function* () {
37
37
  const searchParams = new URLSearchParams();
38
38
  searchParams.set("shop", shopifyPermanentDomain);
39
+ const url = new URL(configBaseUrl || "https://config.usereactify.com/");
40
+ url.search = searchParams.toString();
39
41
  let json;
40
42
  try {
41
- json = yield fetch(`https://config.usereactify.com/?${searchParams.toString()}`).then((response) => response.json());
43
+ json = yield fetch(url).then((response) => response.json());
42
44
  }
43
45
  catch (error) {
44
- json = yield fetch(`https://config.usereactify.com/?${searchParams.toString()}`).then((response) => response.json());
46
+ json = yield fetch(url).then((response) => response.json());
45
47
  }
46
48
  setConfig(json.body);
47
- window.sessionStorage.setItem("reactify-search:config", JSON.stringify({
48
- config: json.body,
49
- }));
49
+ window.sessionStorage.setItem("reactify-search:config", JSON.stringify({ config: json.body }));
50
50
  }))();
51
- }, [shopifyPermanentDomain]);
51
+ }, [shopifyPermanentDomain, configBaseUrl]);
52
52
  utility_1.debug.hook("useConfig", "config", config);
53
53
  return {
54
54
  config: config !== null && config !== void 0 ? config : preloadedConfig,
@@ -1 +1 @@
1
- {"version":3,"file":"useConfig.js","sourceRoot":"","sources":["../../../src/hooks/useConfig.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,kDAA0B;AAG1B,wCAAmC;AAE5B,MAAM,SAAS,GAAG,CACvB,sBAA8B,EAC9B,eAAwB,EAGxB,EAAE;IACF,2EAA2E;IAC3E,MAAM,YAAY,GAAG,eAAK,CAAC,OAAO,CAAC,GAAG,EAAE;;QACtC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,OAAO;QACT,CAAC;QAED,MAAM,aAAa,GAER,IAAI,CAAC,KAAK,CACnB,MAAA,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,wBAAwB,CAAC,mCAAI,MAAM,CAClE,CAAC;QAEF,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,CAAA,MAAA,aAAa,CAAC,MAAM,CAAC,KAAK,0CAAE,OAAO,MAAK,KAAK,EAAE,CAAC;gBAClD,OAAO;YACT,CAAC;YAED,OAAO,aAAa,CAAC,MAAM,CAAC;QAC9B,CAAC;QAED,OAAO;IACT,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,eAAK,CAAC,QAAQ,CAAqB,YAAY,CAAC,CAAC;IAE7E,eAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,CAAC,GAAS,EAAE;YACV,MAAM,YAAY,GAAG,IAAI,eAAe,EAAE,CAAC;YAC3C,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;YAEjD,IAAI,IAAS,CAAC;YAEd,IAAI,CAAC;gBACH,IAAI,GAAG,MAAM,KAAK,CAChB,mCAAmC,YAAY,CAAC,QAAQ,EAAE,EAAE,CAC7D,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;YAExC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,GAAG,MAAM,KAAK,CAChB,mCAAmC,YAAY,CAAC,QAAQ,EAAE,EAAE,CAC7D,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;YACxC,CAAC;YAED,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAErB,MAAM,CAAC,cAAc,CAAC,OAAO,CAC3B,wBAAwB,EACxB,IAAI,CAAC,SAAS,CAAC;gBACb,MAAM,EAAE,IAAI,CAAC,IAAI;aAClB,CAAC,CACH,CAAC;QACJ,CAAC,CAAA,CAAC,EAAE,CAAC;IACP,CAAC,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAE7B,eAAK,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAE1C,OAAO;QACL,MAAM,EAAE,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,eAAe;KAClC,CAAC;AACJ,CAAC,CAAC;AAjEW,QAAA,SAAS,aAiEpB","sourcesContent":["import React from \"react\";\n\nimport { Config } from \"../types/config\";\nimport { debug } from \"../utility\";\n\nexport const useConfig = (\n shopifyPermanentDomain: string,\n preloadedConfig?: Config\n): {\n config: Config | undefined;\n} => {\n // synchronously returns cached and non-expired config from session storage\n const cachedConfig = React.useMemo(() => {\n if (typeof window === \"undefined\") {\n return;\n }\n\n const sessionConfig: {\n config: Config;\n } | null = JSON.parse(\n window.sessionStorage.getItem(\"reactify-search:config\") ?? \"null\"\n );\n\n if (sessionConfig) {\n if (sessionConfig.config.cache?.enabled === false) {\n return;\n }\n\n return sessionConfig.config;\n }\n\n return;\n }, []);\n\n const [config, setConfig] = React.useState<Config | undefined>(cachedConfig);\n\n React.useEffect(() => {\n (async () => {\n const searchParams = new URLSearchParams();\n searchParams.set(\"shop\", shopifyPermanentDomain);\n\n let json: any;\n\n try {\n json = await fetch(\n `https://config.usereactify.com/?${searchParams.toString()}`\n ).then((response) => response.json());\n \n } catch (error) {\n json = await fetch(\n `https://config.usereactify.com/?${searchParams.toString()}`\n ).then((response) => response.json());\n }\n\n setConfig(json.body);\n\n window.sessionStorage.setItem(\n \"reactify-search:config\",\n JSON.stringify({\n config: json.body,\n })\n );\n })();\n }, [shopifyPermanentDomain]);\n\n debug.hook(\"useConfig\", \"config\", config);\n\n return {\n config: config ?? preloadedConfig,\n };\n};\n"]}
1
+ {"version":3,"file":"useConfig.js","sourceRoot":"","sources":["../../../src/hooks/useConfig.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,kDAA0B;AAG1B,wCAAmC;AAE5B,MAAM,SAAS,GAAG,CACvB,sBAA8B,EAC9B,eAAwB,EACxB,aAAsB,EAGtB,EAAE;IACF,2EAA2E;IAC3E,MAAM,YAAY,GAAG,eAAK,CAAC,OAAO,CAAC,GAAG,EAAE;;QACtC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,OAAO;QACT,CAAC;QAED,MAAM,aAAa,GAER,IAAI,CAAC,KAAK,CAAC,MAAA,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,wBAAwB,CAAC,mCAAI,MAAM,CAAC,CAAC;QAEzF,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,CAAA,MAAA,aAAa,CAAC,MAAM,CAAC,KAAK,0CAAE,OAAO,MAAK,KAAK,EAAE,CAAC;gBAClD,OAAO;YACT,CAAC;YAED,OAAO,aAAa,CAAC,MAAM,CAAC;QAC9B,CAAC;QAED,OAAO;IACT,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,eAAK,CAAC,QAAQ,CAAqB,YAAY,CAAC,CAAC;IAE7E,eAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,CAAC,GAAS,EAAE;YACV,MAAM,YAAY,GAAG,IAAI,eAAe,EAAE,CAAC;YAC3C,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;YAEjD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,aAAa,IAAI,iCAAiC,CAAC,CAAC;YACxE,GAAG,CAAC,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;YAErC,IAAI,IAAS,CAAC;YACd,IAAI,CAAC;gBACH,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9D,CAAC;YAED,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,wBAAwB,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACjG,CAAC,CAAA,CAAC,EAAE,CAAC;IACP,CAAC,EAAE,CAAC,sBAAsB,EAAE,aAAa,CAAC,CAAC,CAAC;IAE5C,eAAK,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAE1C,OAAO;QACL,MAAM,EAAE,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,eAAe;KAClC,CAAC;AACJ,CAAC,CAAC;AAvDW,QAAA,SAAS,aAuDpB","sourcesContent":["import React from \"react\";\n\nimport { Config } from \"../types/config\";\nimport { debug } from \"../utility\";\n\nexport const useConfig = (\n shopifyPermanentDomain: string,\n preloadedConfig?: Config,\n configBaseUrl?: string\n): {\n config: Config | undefined;\n} => {\n // synchronously returns cached and non-expired config from session storage\n const cachedConfig = React.useMemo(() => {\n if (typeof window === \"undefined\") {\n return;\n }\n\n const sessionConfig: {\n config: Config;\n } | null = JSON.parse(window.sessionStorage.getItem(\"reactify-search:config\") ?? \"null\");\n\n if (sessionConfig) {\n if (sessionConfig.config.cache?.enabled === false) {\n return;\n }\n\n return sessionConfig.config;\n }\n\n return;\n }, []);\n\n const [config, setConfig] = React.useState<Config | undefined>(cachedConfig);\n\n React.useEffect(() => {\n (async () => {\n const searchParams = new URLSearchParams();\n searchParams.set(\"shop\", shopifyPermanentDomain);\n\n const url = new URL(configBaseUrl || \"https://config.usereactify.com/\");\n url.search = searchParams.toString();\n\n let json: any;\n try {\n json = await fetch(url).then((response) => response.json());\n } catch (error) {\n json = await fetch(url).then((response) => response.json());\n }\n\n setConfig(json.body);\n window.sessionStorage.setItem(\"reactify-search:config\", JSON.stringify({ config: json.body }));\n })();\n }, [shopifyPermanentDomain, configBaseUrl]);\n\n debug.hook(\"useConfig\", \"config\", config);\n\n return {\n config: config ?? preloadedConfig,\n };\n};\n"]}