@usereactify/search 5.59.0-beta.3 → 5.59.0-beta.5

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 (49) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/package.json +5 -4
  3. package/dist/src/components/ReactifySearchProvider/ReactifySearchProvider.d.ts +5 -13
  4. package/dist/src/components/ReactifySearchProvider/ReactifySearchProvider.js +24 -53
  5. package/dist/src/components/ReactifySearchProvider/ReactifySearchProvider.js.map +1 -1
  6. package/dist/src/components/Result/Results.js +4 -7
  7. package/dist/src/components/Result/Results.js.map +1 -1
  8. package/dist/src/components/Sensor/SensorCollection.js +0 -1
  9. package/dist/src/components/Sensor/SensorCollection.js.map +1 -1
  10. package/dist/src/components/Sensor/SensorCollectionWeighted.d.ts +1 -0
  11. package/dist/src/components/Sensor/{SensorCuratedPageSearch.js → SensorCollectionWeighted.js} +4 -4
  12. package/dist/src/components/Sensor/SensorCollectionWeighted.js.map +1 -0
  13. package/dist/src/components/Sensor/SensorSearchTerm.js +6 -18
  14. package/dist/src/components/Sensor/SensorSearchTerm.js.map +1 -1
  15. package/dist/src/components/Sensor/SensorSearchWeighted.d.ts +1 -0
  16. package/dist/src/components/Sensor/{SensorCuratedPageCollection.js → SensorSearchWeighted.js} +5 -5
  17. package/dist/src/components/Sensor/SensorSearchWeighted.js.map +1 -0
  18. package/dist/src/components/Sensor/Sensors.js +21 -19
  19. package/dist/src/components/Sensor/Sensors.js.map +1 -1
  20. package/dist/src/components/Sensor/index.d.ts +3 -3
  21. package/dist/src/components/Sensor/index.js +7 -6
  22. package/dist/src/components/Sensor/index.js.map +1 -1
  23. package/dist/src/hooks/useConfig.d.ts +1 -1
  24. package/dist/src/hooks/useConfig.js +7 -7
  25. package/dist/src/hooks/useConfig.js.map +1 -1
  26. package/dist/src/hooks/useReactifySearchContext.d.ts +3 -17
  27. package/dist/src/hooks/useReactifySearchContext.js.map +1 -1
  28. package/dist/src/types/config.d.ts +1 -0
  29. package/dist/src/types/config.js.map +1 -1
  30. package/dist/src/utility/curation.js +17 -43
  31. package/dist/src/utility/curation.js.map +1 -1
  32. package/dist/src/utility/filters.js +4 -2
  33. package/dist/src/utility/filters.js.map +1 -1
  34. package/dist/src/utility/liquid.d.ts +0 -6
  35. package/dist/src/utility/liquid.js +0 -15
  36. package/dist/src/utility/liquid.js.map +1 -1
  37. package/dist/src/utility/props.d.ts +7 -4
  38. package/dist/src/utility/props.js +21 -36
  39. package/dist/src/utility/props.js.map +1 -1
  40. package/dist/src/utility/queries.d.ts +4 -2
  41. package/dist/src/utility/queries.js +24 -52
  42. package/dist/src/utility/queries.js.map +1 -1
  43. package/dist/src/utility/sortOption.js +61 -129
  44. package/dist/src/utility/sortOption.js.map +1 -1
  45. package/package.json +6 -5
  46. package/dist/src/components/Sensor/SensorCuratedPageCollection.d.ts +0 -1
  47. package/dist/src/components/Sensor/SensorCuratedPageCollection.js.map +0 -1
  48. package/dist/src/components/Sensor/SensorCuratedPageSearch.d.ts +0 -1
  49. 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.5](https://bitbucket.org/usereactify/reactify-search-ui/compare/beta-v5.59.0-beta.4...beta-v5.59.0-beta.5) (2025-07-16)
6
+
7
+
8
+ ### Bug Fixes
9
+
10
+ * add configBaseUrl prop for local testing override ([8280e8b](https://bitbucket.org/usereactify/reactify-search-ui/commit/8280e8b573530a035dace2be62eda581e742c844))
11
+ * remove curated-page mode and use feature flag ([b387a2b](https://bitbucket.org/usereactify/reactify-search-ui/commit/b387a2b2e2aabd58fef3de42cea27b8340c2a475))
12
+
13
+ ## [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)
14
+
15
+
16
+ ### Bug Fixes
17
+
18
+ * update filters, sort and others components for new modes ([db29026](https://bitbucket.org/usereactify/reactify-search-ui/commit/db29026ced05522e5d67aaf55d2414b383cd9615))
19
+
5
20
  ## [5.59.0-beta.3](https://bitbucket.org/usereactify/reactify-search-ui/compare/beta-v5.59.0-beta.2...beta-v5.59.0-beta.3) (2025-07-09)
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.3",
4
+ "version": "5.59.0-beta.5",
5
5
  "license": "MIT",
6
6
  "main": "dist/src/index.js",
7
7
  "types": "dist/src/index.d.ts",
@@ -29,10 +29,10 @@
29
29
  ]
30
30
  },
31
31
  "dependencies": {
32
- "@appbaseio/reactivecore": "9.8.0",
33
32
  "@usereactify/search-internals": "1.0.0",
33
+ "@appbaseio/reactivecore": "9.15.2",
34
34
  "ahooks": "2.10.11",
35
- "axios": "0.26.1",
35
+ "axios": "1.10.0",
36
36
  "currency.js": "2.0.4",
37
37
  "debug": "4.3.2",
38
38
  "ga-gtag": "1.1.5",
@@ -40,7 +40,8 @@
40
40
  "react-slider": "2.0.4"
41
41
  },
42
42
  "peerDependencies": {
43
- "react": "17 - 18"
43
+ "react": "^18.2.0",
44
+ "react-dom": "^18.2.0"
44
45
  },
45
46
  "devDependencies": {
46
47
  "@babel/plugin-transform-typescript": "7.18.12",
@@ -1,10 +1,10 @@
1
- import React, { PropsWithChildren } from "react";
1
+ import { PropsWithChildren, ReactNode } from "react";
2
2
  import { Config } from "../../types";
3
3
  export type ReactifySearchProviderProps = {
4
4
  /** Standard react children */
5
- children?: React.ReactNode | undefined;
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;
@@ -27,7 +27,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
29
  exports.ReactifySearchProvider = ReactifySearchProvider;
30
- const react_1 = __importDefault(require("react"));
30
+ const react_1 = __importStar(require("react"));
31
31
  // @ts-expect-error missing types
32
32
  const GaGtag = __importStar(require("ga-gtag"));
33
33
  const package_json_1 = __importDefault(require("../../../package.json"));
@@ -36,7 +36,7 @@ const components_1 = require("../../components");
36
36
  const utility_1 = require("../../utility");
37
37
  const curation_1 = require("../../utility/curation");
38
38
  function ReactifySearchProvider(props) {
39
- react_1.default.useEffect(() => {
39
+ (0, react_1.useEffect)(() => {
40
40
  utility_1.debug.log("ReactifySearchProvider", "props", props);
41
41
  GaGtag.install("G-DV00Z0X5VP", {
42
42
  cookie_prefix: "_rs",
@@ -50,66 +50,48 @@ 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);
54
- const theme = (_b = props.theme) !== null && _b !== void 0 ? _b : {
55
- typography: {
56
- fontFamily: "inherit",
57
- fontSize: "inherit",
58
- },
59
- };
53
+ const { config } = (0, hooks_1.useConfig)(props.shopifyPermanentDomain, (_a = props.preload) === null || _a === void 0 ? void 0 : _a.config, props.configBaseUrl);
54
+ const theme = (_b = props.theme) !== null && _b !== void 0 ? _b : { typography: { fontFamily: "inherit", fontSize: "inherit" } };
60
55
  // search term
61
- const [searchTerm, setSearchTerm] = react_1.default.useState("");
62
- // search term redirect
63
- const searchRedirect = react_1.default.useMemo(() => {
56
+ const [searchTerm, setSearchTerm] = (0, react_1.useState)("");
57
+ const [showInstantSearchResults, setShowInstantSearchResults] = (0, react_1.useState)(false);
58
+ const [sortOption, setSortOption] = (0, react_1.useState)("");
59
+ const [indexFromURL, setIndexFromURL] = (0, react_1.useState)(null);
60
+ const searchRedirect = (0, react_1.useMemo)(() => {
64
61
  return config === null || config === void 0 ? void 0 : config.redirects.find((redirect) => redirect.query.trim().toLowerCase() === searchTerm.trim().toLowerCase());
65
62
  }, [config === null || config === void 0 ? void 0 : config.redirects, searchTerm]);
66
- // show instant-search
67
- const [showInstantSearchResults, setShowInstantSearchResults] = react_1.default.useState(false);
68
- // sort option
69
- const [sortOption, setSortOption] = react_1.default.useState("");
70
- // index from URL
71
- const [indexFromURL, setIndexFromURL] = react_1.default.useState(null);
72
63
  // hydration-safe URL param initialization
73
- react_1.default.useEffect(() => {
64
+ (0, react_1.useEffect)(() => {
74
65
  if (typeof window !== "undefined") {
75
66
  const urlParams = new URLSearchParams(window.location.search);
76
67
  const searchTermFromURL = urlParams.get("q");
77
68
  const searchSortFromURL = urlParams.get("sort");
78
69
  const indexFromURLParam = urlParams.get("index");
79
- if (searchTermFromURL && searchTermFromURL !== searchTerm) {
70
+ if (searchTermFromURL && searchTermFromURL !== searchTerm)
80
71
  setSearchTerm(searchTermFromURL);
81
- }
82
- if (searchSortFromURL && searchSortFromURL !== sortOption) {
72
+ if (searchSortFromURL && searchSortFromURL !== sortOption)
83
73
  setSortOption(searchSortFromURL);
84
- }
85
- if (indexFromURLParam) {
74
+ if (indexFromURLParam)
86
75
  setIndexFromURL(indexFromURLParam);
87
- }
88
76
  }
89
77
  }, []);
90
78
  // results
91
- const [results, setResults] = react_1.default.useState([]);
79
+ const [results, setResults] = (0, react_1.useState)([]);
92
80
  // curation
93
- const curation = react_1.default.useMemo(() => {
94
- if (!config) {
81
+ const curation = (0, react_1.useMemo)(() => {
82
+ if (!config)
95
83
  return undefined;
96
- }
97
- return (0, curation_1.getCuration)({
98
- provider: props,
99
- config: config,
100
- searchTerm: searchTerm,
101
- });
84
+ return (0, curation_1.getCuration)({ provider: props, config: config, searchTerm: searchTerm });
102
85
  }, [props, config, searchTerm]);
103
86
  // result stats
104
- const [resultStats, setResultStats] = react_1.default.useState();
105
- const contextValue = react_1.default.useMemo(() => {
87
+ const [resultStats, setResultStats] = (0, react_1.useState)();
88
+ const contextValue = (0, react_1.useMemo)(() => {
106
89
  var _a, _b, _c;
107
- if (!config) {
90
+ if (!config)
108
91
  return;
109
- }
110
92
  return {
111
93
  config: config,
112
- 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 }),
113
95
  search: {
114
96
  searchTerm: searchTerm,
115
97
  setSearchTerm: setSearchTerm,
@@ -129,25 +111,14 @@ function ReactifySearchInner(props) {
129
111
  },
130
112
  curation: curation,
131
113
  };
132
- }, [
133
- config,
134
- props,
135
- searchTerm,
136
- showInstantSearchResults,
137
- searchRedirect,
138
- sortOption,
139
- results,
140
- resultStats,
141
- curation,
142
- ]);
143
- react_1.default.useEffect(() => {
114
+ }, [config, props, searchTerm, showInstantSearchResults, searchRedirect, sortOption, results, resultStats, curation]);
115
+ (0, react_1.useEffect)(() => {
144
116
  utility_1.debug.log("curation", "content", curation);
145
117
  }, [curation === null || curation === void 0 ? void 0 : curation.id]);
146
118
  utility_1.debug.hook("ReactifySearchProvider", "context", contextValue);
147
119
  if (!contextValue) {
148
- if (props.renderBooting) {
120
+ if (props.renderBooting)
149
121
  return props.renderBooting();
150
- }
151
122
  return null;
152
123
  }
153
124
  return (react_1.default.createElement(hooks_1.ReactifySearchContext.Provider, { value: contextValue },
@@ -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 } 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?: React.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 React.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\n const theme = props.theme ?? {\n typography: {\n fontFamily: \"inherit\",\n fontSize: \"inherit\",\n },\n };\n\n // search term\n const [searchTerm, setSearchTerm] = React.useState<string>(\"\");\n // search term redirect\n const searchRedirect = React.useMemo<ConfigRedirect | undefined>(() => {\n return config?.redirects.find(\n (redirect) => redirect.query.trim().toLowerCase() === searchTerm.trim().toLowerCase()\n );\n }, [config?.redirects, searchTerm]);\n // show instant-search\n const [showInstantSearchResults, setShowInstantSearchResults] = React.useState<boolean>(false);\n // sort option\n const [sortOption, setSortOption] = React.useState<string>(\"\");\n // index from URL\n const [indexFromURL, setIndexFromURL] = React.useState<string | null>(null);\n\n // hydration-safe URL param initialization\n React.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 \n if (searchTermFromURL && searchTermFromURL !== searchTerm) {\n setSearchTerm(searchTermFromURL);\n }\n if (searchSortFromURL && searchSortFromURL !== sortOption) {\n setSortOption(searchSortFromURL);\n }\n if (indexFromURLParam) {\n setIndexFromURL(indexFromURLParam);\n }\n }\n }, []);\n // results\n const [results, setResults] = React.useState<ReactivesearchResultProps[\"data\"]>([]);\n // curation\n const curation = React.useMemo<ConfigCuration | undefined>(() => {\n if (!config) {\n return undefined;\n }\n\n return getCuration({\n provider: props,\n config: config,\n searchTerm: searchTerm,\n });\n }, [props, config, searchTerm]);\n // result stats\n const [resultStats, setResultStats] = React.useState<ReactivesearchResultProps[\"resultStats\"]>();\n\n\n const contextValue = React.useMemo(() => {\n if (!config) {\n return;\n }\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 React.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) {\n return props.renderBooting();\n }\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"]}
@@ -58,7 +58,7 @@ const ResultsInner = (props) => {
58
58
  const context = (0, hooks_1.useReactifySearchContext)();
59
59
  const filtersHook = (0, hooks_1.useFilters)();
60
60
  const resultsHook = (0, hooks_1.useResults)();
61
- const initialSearchHasRun = react_1.default.useMemo(() => "undefined" !== typeof props.reactivesearchResultProps.resultStats.numberOfResults, [props.reactivesearchResultProps]);
61
+ const initialSearchHasRun = react_1.default.useMemo(() => props.reactivesearchResultProps.resultStats.numberOfResults !== undefined, [props.reactivesearchResultProps]);
62
62
  const listStyle = react_1.default.useMemo(() => {
63
63
  var _a;
64
64
  return (_a = props.listStyle) !== null && _a !== void 0 ? _a : {
@@ -80,6 +80,7 @@ const ResultsInner = (props) => {
80
80
  props.reactivesearchResultProps.resultStats.displayedResults,
81
81
  props.infiniteScrollPosition,
82
82
  ]);
83
+ // This dependency is inverted. The `useResults` hook depends on the `Results` component.
83
84
  react_1.default.useEffect(() => {
84
85
  resultsHook.setResults(props.reactivesearchResultProps.data);
85
86
  resultsHook.setResultStats(props.reactivesearchResultProps.resultStats);
@@ -163,16 +164,12 @@ const ResultsInner = (props) => {
163
164
  react_1.default.createElement("section", { style: listStyle, className: props.listClassName }, results.map((item, key) => {
164
165
  if (types_1.ElasticDocumentType.Product === item.type) {
165
166
  return (react_1.default.createElement(ResultCardProduct_1.ResultCardProduct, Object.assign({ key: item._id, product: item, document: item, pagePosition: key + 1, render: props.renderResultCardProduct }, (infiniteScrollPosition === key + 1
166
- ? {
167
- onView: () => props.reactivesearchResultProps.loadMore(),
168
- }
167
+ ? { onView: () => props.reactivesearchResultProps.loadMore() }
169
168
  : {}))));
170
169
  }
171
170
  if (types_1.ElasticDocumentType.Callout === item.type) {
172
171
  return (react_1.default.createElement(ResultCardCallout_1.ResultCardCallout, Object.assign({ key: item._id, document: item, pagePosition: key + 1, callout: item.callout, render: props.renderResultCardCallout }, (infiniteScrollPosition === key + 1
173
- ? {
174
- onView: () => props.reactivesearchResultProps.loadMore(),
175
- }
172
+ ? { onView: () => props.reactivesearchResultProps.loadMore() }
176
173
  : {}))));
177
174
  }
178
175
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"Results.js","sourceRoot":"","sources":["../../../../src/components/Result/Results.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport ReactiveList from \"@usereactify/search-internals/lib/components/result/ReactiveList\";\n\nimport { ResultCardCallout } from \"./ResultCardCallout\";\nimport { ResultCardProduct } from \"./ResultCardProduct\";\nimport { ResultPaginationNumbered } from \"./ResultPaginationNumbered\";\nimport { ResultPaginationLoadMore } from \"./ResultPaginationLoadMore\";\nimport { ResultPaginationNextPrev } from \"./ResultPaginationNextPrev\";\nimport { ResultPaginationInfiniteScroll } from \"./ResultPaginationInfiniteScroll\";\n\nimport {\n ElasticCallout,\n ElasticProduct,\n ElasticDocumentType,\n ReactivesearchError,\n ReactivesearchResultProps,\n ReactivesearchPaginationProps,\n ElasticHit,\n ElasticDocument,\n ResultsDataListener,\n} from \"../../types\";\nimport {\n useReactifySearchContext,\n useAnalytics,\n useSearch,\n useFilters,\n useProductPrice,\n usePagination,\n usePaginationLoadable,\n useResults,\n} from \"../../hooks\";\nimport { getPropsResults } from \"../../utility/props\";\nimport { MerchandisingCalloutAutofillBehaviour } from \"../../types/firestore\";\n\nexport type ResultProps = ReactivesearchResultProps & {\n callouts: ElasticCallout[];\n products: ElasticProduct[];\n};\n\nexport type ResultsProps = {\n /** Style prop for the list wrapper */\n listStyle?: React.HTMLAttributes<HTMLElement>[\"style\"];\n /** Classname prop for the list wrapper */\n listClassName?: string;\n /** Render method called when an error occurs */\n renderError?: React.FC<{ error: ReactivesearchError }>;\n /** Render method called while loading for the first time */\n renderLoading?: React.FC;\n /** Render method called when no results are found */\n renderNoResults?: React.FC;\n /** Render method called once for each product result */\n renderResultCardProduct?: React.FC<\n ReturnType<typeof useProductPrice> & {\n pagePosition: number;\n product: ElasticProduct;\n document: ElasticProduct;\n itemRef: (node?: Element | null) => void;\n handleClick: () => void;\n }\n >;\n /** Render method called once for each callout result */\n renderResultCardCallout?: React.FC<{\n pagePosition: number;\n document: ElasticCallout;\n callout: ElasticCallout[\"callout\"];\n itemRef: (node?: Element | null) => void;\n handleClick: () => void;\n }>;\n /** Render method called for pagination type \"pagination\" */\n renderPaginationNumbered?: React.FC<ReturnType<typeof usePagination>>;\n /** Render method called for pagination type \"next_prev\" */\n renderPaginationNextPrev?: React.FC<ReturnType<typeof usePagination>>;\n /** Render method called for pagination type \"load_more\" */\n renderPaginationLoadMore?: React.FC<ReturnType<typeof usePaginationLoadable>>;\n /** Render method called for pagination type \"infinite_scroll\" */\n renderPaginationInfiniteScroll?: React.FC<ReturnType<typeof usePaginationLoadable>>;\n /** Used to determine which filler callouts to use when there is an uneven grid */\n gridColumns?: number;\n /** Advanced Usage: Override the default amount of results per page */\n pageSize?: number;\n /** Advanced Usage: Override the default scrollTarget used to determine when infinite load should be triggered (infinite scroll) */\n infiniteScrollContainer?: React.ComponentProps<typeof ReactiveList>[\"scrollTarget\"];\n /** Advanced Usage: Provide a specific result position to trigger loading more results (infinite scroll) */\n infiniteScrollPosition?: number;\n /** Advanced Usage: Shows subsequent loading states after initial results are loaded */\n showSubsequentLoadingStates?: boolean;\n /** Advanced Usage: Provide a function to listen to when a search request is made and new results are returned. */\n onData?: ResultsDataListener;\n};\n\nexport const Results: React.FC<ResultsProps> = (props) => {\n const reactifySearchContext = useReactifySearchContext();\n const filtersHook = useFilters();\n const reactiveProps = getPropsResults({\n provider: reactifySearchContext.options,\n config: reactifySearchContext.config,\n filterGroup: filtersHook.filterStack,\n scrollTarget: props.infiniteScrollContainer,\n pageSize: props.pageSize,\n onData: props.onData,\n });\n\n const { track } = useAnalytics();\n const { searchTerm } = useSearch();\n\n const handleData: ResultsDataListener = (renderProps) => {\n if (renderProps.resultStats.numberOfResults === 0) {\n let trimmedSearchTerm = searchTerm.trim();\n if (!trimmedSearchTerm || (trimmedSearchTerm && trimmedSearchTerm.length < 3)) return;\n track({ eventName: \"zeroResults\", payload: { searchTerm: trimmedSearchTerm } });\n props.onData?.(renderProps);\n }\n };\n\n return (\n <ReactiveList\n {...reactiveProps}\n render={(reactivesearchResultProps: ReactivesearchResultProps) => (\n <ResultsInner {...props} reactivesearchResultProps={reactivesearchResultProps} />\n )}\n onData={handleData}\n renderPagination={(reactivesearchPaginationProps: ReactivesearchPaginationProps) => (\n <ResultsPaginationStack {...props} {...reactivesearchPaginationProps} />\n )}\n />\n );\n};\n\nconst ResultsRenderErrorComponent: ResultsProps[\"renderError\"] = (props) => {\n return (\n <div>\n {\"Error: \"}\n {props.error.statusText}\n </div>\n );\n};\n\nconst ResultsRenderLoadingComponent: ResultsProps[\"renderLoading\"] = () => {\n return <div>{\"Loading\"}</div>;\n};\n\nconst ResultsRenderNoResultsComponent: ResultsProps[\"renderNoResults\"] = () => {\n return <div>{\"No results\"}</div>;\n};\n\nconst ResultsInner: React.FC<\n ResultsProps & { reactivesearchResultProps: ReactivesearchResultProps }\n> = (props) => {\n const context = useReactifySearchContext();\n const filtersHook = useFilters();\n const resultsHook = useResults();\n const initialSearchHasRun = React.useMemo(\n () => \"undefined\" !== typeof props.reactivesearchResultProps.resultStats.numberOfResults,\n [props.reactivesearchResultProps]\n );\n\n const listStyle = React.useMemo<React.HTMLAttributes<HTMLElement>[\"style\"]>(\n () =>\n props.listStyle ?? {\n display: \"grid\",\n gap: \"8px\",\n gridTemplateColumns: \"repeat(4, minmax(0, 1fr))\",\n },\n [props.listStyle]\n );\n\n const infiniteScrollPosition = React.useMemo<number>(() => {\n if (!props.infiniteScrollPosition) {\n return NaN;\n }\n\n const scrollPositionOffset =\n props.reactivesearchResultProps.resultStats.displayedResults -\n (props.pageSize ?? filtersHook.filterStack?.pageSize ?? 0);\n\n return scrollPositionOffset + (props.infiniteScrollPosition ?? 0);\n }, [\n props.pageSize ?? filtersHook.filterStack?.pageSize,\n props.reactivesearchResultProps.resultStats.displayedResults,\n props.infiniteScrollPosition,\n ]);\n\n React.useEffect(() => {\n resultsHook.setResults(props.reactivesearchResultProps.data);\n resultsHook.setResultStats(props.reactivesearchResultProps.resultStats);\n }, [\n props.reactivesearchResultProps.resultStats.numberOfResults,\n props.reactivesearchResultProps.data.map((item) => item._id).join(\"\"),\n ]);\n\n const calculateGridOverflow = React.useCallback(\n (results: ReactivesearchResultProps[\"data\"]) => {\n if (!props.gridColumns) return;\n let total = results.length;\n for (const result of results) {\n if (result.type === ElasticDocumentType.Product) continue;\n total += parseInt(result.callout.displayColumns) * parseInt(result.callout.displayRows) - 1;\n }\n const overflow = props.gridColumns - (total % props.gridColumns);\n if (overflow === props.gridColumns) return;\n return overflow === props.gridColumns ? undefined : overflow;\n },\n [props.gridColumns]\n );\n\n const gridOverflowCallout = React.useMemo(():\n | (Omit<ElasticHit, \"_source\"> & ElasticCallout)\n | undefined => {\n // check if there are more results\n if (\n props.reactivesearchResultProps.resultStats.displayedResults ===\n props.reactivesearchResultProps.resultStats.numberOfResults\n ) {\n // check if we should only autofill when there are more results\n if (\n context.config.merchandising.calloutAutofillBehaviour ===\n MerchandisingCalloutAutofillBehaviour.MoreResults\n ) {\n return;\n }\n }\n\n const overflow = calculateGridOverflow(props.reactivesearchResultProps.data);\n\n const callout = context.config.callouts.find((item) => item.displayColumns === `${overflow}`);\n if (!callout) {\n return;\n }\n\n return {\n _id: callout.id,\n _score: 0,\n type: ElasticDocumentType.Callout,\n key: callout.id,\n callout: {\n ...callout,\n enabled: true,\n },\n published: true,\n curations: [],\n };\n }, [\n props.reactivesearchResultProps.resultStats,\n props.reactivesearchResultProps.data,\n context.config.callouts,\n ]);\n\n const results = React.useMemo(\n () => [\n ...props.reactivesearchResultProps.data,\n ...(gridOverflowCallout ? [gridOverflowCallout] : []),\n ],\n [props.reactivesearchResultProps.data, gridOverflowCallout]\n );\n\n if (props.reactivesearchResultProps.error) {\n const RenderErrorComponent = props.renderError ?? ResultsRenderErrorComponent;\n\n return <RenderErrorComponent error={props.reactivesearchResultProps.error} />;\n }\n\n if (!initialSearchHasRun) {\n const RenderLoadingComponent = props.renderLoading ?? ResultsRenderLoadingComponent;\n return <RenderLoadingComponent />;\n }\n\n if (props.showSubsequentLoadingStates === true) {\n if (props.reactivesearchResultProps.loading) {\n const RenderLoadingComponent = props.renderLoading ?? ResultsRenderLoadingComponent;\n return <RenderLoadingComponent />;\n }\n }\n\n if (\n !props.reactivesearchResultProps.loading &&\n !props.reactivesearchResultProps.resultStats.numberOfResults\n ) {\n const RenderNoResultsComponent = props.renderNoResults ?? ResultsRenderNoResultsComponent;\n\n return <RenderNoResultsComponent />;\n }\n\n if ([\"search\", \"instant-search\"].includes(context.options.mode)) {\n if (!context.search.searchTerm) {\n const RenderNoResultsComponent = props.renderNoResults ?? ResultsRenderNoResultsComponent;\n\n return <RenderNoResultsComponent />;\n }\n }\n\n return (\n <>\n <section style={listStyle} className={props.listClassName}>\n {results.map((item, key) => {\n if (ElasticDocumentType.Product === item.type) {\n return (\n <ResultCardProduct\n key={item._id}\n product={item}\n document={item}\n pagePosition={key + 1}\n render={props.renderResultCardProduct}\n {...(infiniteScrollPosition === key + 1\n ? {\n onView: () => props.reactivesearchResultProps.loadMore(),\n }\n : {})}\n />\n );\n }\n\n if (ElasticDocumentType.Callout === item.type) {\n return (\n <ResultCardCallout\n key={item._id}\n document={item}\n pagePosition={key + 1}\n callout={item.callout}\n render={props.renderResultCardCallout}\n {...(infiniteScrollPosition === key + 1\n ? {\n onView: () => props.reactivesearchResultProps.loadMore(),\n }\n : {})}\n />\n );\n }\n\n return null;\n })}\n </section>\n <ResultsPaginationStackLoadable {...props} {...props.reactivesearchResultProps} />\n </>\n );\n};\n\n/** Handles rendering pagination for types that use \"pagination props\" */\nconst ResultsPaginationStack: React.FC<ResultsProps & ReactivesearchPaginationProps> = (props) => {\n const { options } = useReactifySearchContext();\n const { filterStack } = useFilters();\n\n if (options.mode === \"instant-search\") {\n return null;\n }\n\n if (\"pagination\" === filterStack?.paginationType) {\n return <ResultPaginationNumbered {...props} render={props.renderPaginationNumbered} />;\n }\n\n if (\"next_prev\" === filterStack?.paginationType) {\n return <ResultPaginationNextPrev {...props} render={props.renderPaginationNextPrev} />;\n }\n\n return null;\n};\n\n/** Handles rendering pagination for types that use \"result props\" */\nconst ResultsPaginationStackLoadable: React.FC<\n ResultsProps & { reactivesearchResultProps: ReactivesearchResultProps }\n> = (props) => {\n const { options } = useReactifySearchContext();\n const { filterStack } = useFilters();\n\n if (options.mode === \"instant-search\") {\n return null;\n }\n\n if (\"load_more\" === filterStack?.paginationType) {\n return (\n <ResultPaginationLoadMore\n {...props.reactivesearchResultProps}\n render={props.renderPaginationLoadMore}\n />\n );\n }\n\n if (\"infinite_scroll\" === filterStack?.paginationType) {\n return (\n <ResultPaginationInfiniteScroll\n {...props.reactivesearchResultProps}\n render={props.renderPaginationInfiniteScroll}\n />\n );\n }\n\n return null;\n};\n"]}
1
+ {"version":3,"file":"Results.js","sourceRoot":"","sources":["../../../../src/components/Result/Results.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport ReactiveList from \"@usereactify/search-internals/lib/components/result/ReactiveList\";\n\nimport { ResultCardCallout } from \"./ResultCardCallout\";\nimport { ResultCardProduct } from \"./ResultCardProduct\";\nimport { ResultPaginationNumbered } from \"./ResultPaginationNumbered\";\nimport { ResultPaginationLoadMore } from \"./ResultPaginationLoadMore\";\nimport { ResultPaginationNextPrev } from \"./ResultPaginationNextPrev\";\nimport { ResultPaginationInfiniteScroll } from \"./ResultPaginationInfiniteScroll\";\n\nimport {\n ElasticCallout,\n ElasticProduct,\n ElasticDocumentType,\n ReactivesearchError,\n ReactivesearchResultProps,\n ReactivesearchPaginationProps,\n ElasticHit,\n ElasticDocument,\n ResultsDataListener,\n} from \"../../types\";\nimport {\n useReactifySearchContext,\n useAnalytics,\n useSearch,\n useFilters,\n useProductPrice,\n usePagination,\n usePaginationLoadable,\n useResults,\n} from \"../../hooks\";\nimport { getPropsResults } from \"../../utility/props\";\nimport { MerchandisingCalloutAutofillBehaviour } from \"../../types/firestore\";\n\nexport type ResultProps = ReactivesearchResultProps & {\n callouts: ElasticCallout[];\n products: ElasticProduct[];\n};\n\nexport type ResultsProps = {\n /** Style prop for the list wrapper */\n listStyle?: React.HTMLAttributes<HTMLElement>[\"style\"];\n /** Classname prop for the list wrapper */\n listClassName?: string;\n /** Render method called when an error occurs */\n renderError?: React.FC<{ error: ReactivesearchError }>;\n /** Render method called while loading for the first time */\n renderLoading?: React.FC;\n /** Render method called when no results are found */\n renderNoResults?: React.FC;\n /** Render method called once for each product result */\n renderResultCardProduct?: React.FC<\n ReturnType<typeof useProductPrice> & {\n pagePosition: number;\n product: ElasticProduct;\n document: ElasticProduct;\n itemRef: (node?: Element | null) => void;\n handleClick: () => void;\n }\n >;\n /** Render method called once for each callout result */\n renderResultCardCallout?: React.FC<{\n pagePosition: number;\n document: ElasticCallout;\n callout: ElasticCallout[\"callout\"];\n itemRef: (node?: Element | null) => void;\n handleClick: () => void;\n }>;\n /** Render method called for pagination type \"pagination\" */\n renderPaginationNumbered?: React.FC<ReturnType<typeof usePagination>>;\n /** Render method called for pagination type \"next_prev\" */\n renderPaginationNextPrev?: React.FC<ReturnType<typeof usePagination>>;\n /** Render method called for pagination type \"load_more\" */\n renderPaginationLoadMore?: React.FC<ReturnType<typeof usePaginationLoadable>>;\n /** Render method called for pagination type \"infinite_scroll\" */\n renderPaginationInfiniteScroll?: React.FC<ReturnType<typeof usePaginationLoadable>>;\n /** Used to determine which filler callouts to use when there is an uneven grid */\n gridColumns?: number;\n /** Advanced Usage: Override the default amount of results per page */\n pageSize?: number;\n /** Advanced Usage: Override the default scrollTarget used to determine when infinite load should be triggered (infinite scroll) */\n infiniteScrollContainer?: React.ComponentProps<typeof ReactiveList>[\"scrollTarget\"];\n /** Advanced Usage: Provide a specific result position to trigger loading more results (infinite scroll) */\n infiniteScrollPosition?: number;\n /** Advanced Usage: Shows subsequent loading states after initial results are loaded */\n showSubsequentLoadingStates?: boolean;\n /** Advanced Usage: Provide a function to listen to when a search request is made and new results are returned. */\n onData?: ResultsDataListener;\n};\n\nexport const Results: React.FC<ResultsProps> = (props) => {\n const reactifySearchContext = useReactifySearchContext();\n const filtersHook = useFilters();\n const reactiveProps = getPropsResults({\n provider: reactifySearchContext.options,\n config: reactifySearchContext.config,\n filterGroup: filtersHook.filterStack,\n scrollTarget: props.infiniteScrollContainer,\n pageSize: props.pageSize,\n onData: props.onData,\n });\n\n const { track } = useAnalytics();\n const { searchTerm } = useSearch();\n\n const handleData: ResultsDataListener = (renderProps) => {\n if (renderProps.resultStats.numberOfResults === 0) {\n let trimmedSearchTerm = searchTerm.trim();\n if (!trimmedSearchTerm || (trimmedSearchTerm && trimmedSearchTerm.length < 3)) return;\n track({ eventName: \"zeroResults\", payload: { searchTerm: trimmedSearchTerm } });\n props.onData?.(renderProps);\n }\n };\n\n return (\n <ReactiveList\n {...reactiveProps}\n render={(reactivesearchResultProps: ReactivesearchResultProps) => (\n <ResultsInner {...props} reactivesearchResultProps={reactivesearchResultProps} />\n )}\n onData={handleData}\n renderPagination={(reactivesearchPaginationProps: ReactivesearchPaginationProps) => (\n <ResultsPaginationStack {...props} {...reactivesearchPaginationProps} />\n )}\n />\n );\n};\n\nconst ResultsRenderErrorComponent: ResultsProps[\"renderError\"] = (props) => {\n return (\n <div>\n {\"Error: \"}\n {props.error.statusText}\n </div>\n );\n};\n\nconst ResultsRenderLoadingComponent: ResultsProps[\"renderLoading\"] = () => {\n return <div>{\"Loading\"}</div>;\n};\n\nconst ResultsRenderNoResultsComponent: ResultsProps[\"renderNoResults\"] = () => {\n return <div>{\"No results\"}</div>;\n};\n\nconst ResultsInner: React.FC<\n ResultsProps & { reactivesearchResultProps: ReactivesearchResultProps }\n> = (props) => {\n const context = useReactifySearchContext();\n const filtersHook = useFilters();\n const resultsHook = useResults();\n const initialSearchHasRun = React.useMemo(\n () => props.reactivesearchResultProps.resultStats.numberOfResults !== undefined,\n [props.reactivesearchResultProps]\n );\n\n const listStyle = React.useMemo<React.HTMLAttributes<HTMLElement>[\"style\"]>(\n () =>\n props.listStyle ?? {\n display: \"grid\",\n gap: \"8px\",\n gridTemplateColumns: \"repeat(4, minmax(0, 1fr))\",\n },\n [props.listStyle]\n );\n\n const infiniteScrollPosition = React.useMemo<number>(() => {\n if (!props.infiniteScrollPosition) {\n return NaN;\n }\n\n const scrollPositionOffset =\n props.reactivesearchResultProps.resultStats.displayedResults -\n (props.pageSize ?? filtersHook.filterStack?.pageSize ?? 0);\n\n return scrollPositionOffset + (props.infiniteScrollPosition ?? 0);\n }, [\n props.pageSize ?? filtersHook.filterStack?.pageSize,\n props.reactivesearchResultProps.resultStats.displayedResults,\n props.infiniteScrollPosition,\n ]);\n\n // This dependency is inverted. The `useResults` hook depends on the `Results` component.\n React.useEffect(() => {\n resultsHook.setResults(props.reactivesearchResultProps.data);\n resultsHook.setResultStats(props.reactivesearchResultProps.resultStats);\n }, [\n props.reactivesearchResultProps.resultStats.numberOfResults,\n props.reactivesearchResultProps.data.map((item) => item._id).join(\"\"),\n ]);\n\n const calculateGridOverflow = React.useCallback(\n (results: ReactivesearchResultProps[\"data\"]) => {\n if (!props.gridColumns) return;\n let total = results.length;\n for (const result of results) {\n if (result.type === ElasticDocumentType.Product) continue;\n total += parseInt(result.callout.displayColumns) * parseInt(result.callout.displayRows) - 1;\n }\n const overflow = props.gridColumns - (total % props.gridColumns);\n if (overflow === props.gridColumns) return;\n return overflow === props.gridColumns ? undefined : overflow;\n },\n [props.gridColumns]\n );\n\n const gridOverflowCallout = React.useMemo(():\n | (Omit<ElasticHit, \"_source\"> & ElasticCallout)\n | undefined => {\n // check if there are more results\n if (\n props.reactivesearchResultProps.resultStats.displayedResults ===\n props.reactivesearchResultProps.resultStats.numberOfResults\n ) {\n // check if we should only autofill when there are more results\n if (\n context.config.merchandising.calloutAutofillBehaviour ===\n MerchandisingCalloutAutofillBehaviour.MoreResults\n ) {\n return;\n }\n }\n\n const overflow = calculateGridOverflow(props.reactivesearchResultProps.data);\n\n const callout = context.config.callouts.find((item) => item.displayColumns === `${overflow}`);\n if (!callout) {\n return;\n }\n\n return {\n _id: callout.id,\n _score: 0,\n type: ElasticDocumentType.Callout,\n key: callout.id,\n callout: {\n ...callout,\n enabled: true,\n },\n published: true,\n curations: [],\n };\n }, [\n props.reactivesearchResultProps.resultStats,\n props.reactivesearchResultProps.data,\n context.config.callouts,\n ]);\n\n const results = React.useMemo(\n () => [\n ...props.reactivesearchResultProps.data,\n ...(gridOverflowCallout ? [gridOverflowCallout] : []),\n ],\n [props.reactivesearchResultProps.data, gridOverflowCallout]\n );\n\n if (props.reactivesearchResultProps.error) {\n const RenderErrorComponent = props.renderError ?? ResultsRenderErrorComponent;\n\n return <RenderErrorComponent error={props.reactivesearchResultProps.error} />;\n }\n\n if (!initialSearchHasRun) {\n const RenderLoadingComponent = props.renderLoading ?? ResultsRenderLoadingComponent;\n return <RenderLoadingComponent />;\n }\n\n if (props.showSubsequentLoadingStates === true) {\n if (props.reactivesearchResultProps.loading) {\n const RenderLoadingComponent = props.renderLoading ?? ResultsRenderLoadingComponent;\n return <RenderLoadingComponent />;\n }\n }\n\n if (\n !props.reactivesearchResultProps.loading &&\n !props.reactivesearchResultProps.resultStats.numberOfResults\n ) {\n const RenderNoResultsComponent = props.renderNoResults ?? ResultsRenderNoResultsComponent;\n\n return <RenderNoResultsComponent />;\n }\n\n if ([\"search\", \"instant-search\"].includes(context.options.mode)) {\n if (!context.search.searchTerm) {\n const RenderNoResultsComponent = props.renderNoResults ?? ResultsRenderNoResultsComponent;\n\n return <RenderNoResultsComponent />;\n }\n }\n\n return (\n <>\n <section style={listStyle} className={props.listClassName}>\n {results.map((item, key) => {\n if (ElasticDocumentType.Product === item.type) {\n return (\n <ResultCardProduct\n key={item._id}\n product={item}\n document={item}\n pagePosition={key + 1}\n render={props.renderResultCardProduct}\n {...(infiniteScrollPosition === key + 1\n ? { onView: () => props.reactivesearchResultProps.loadMore() }\n : {})}\n />\n );\n }\n\n if (ElasticDocumentType.Callout === item.type) {\n return (\n <ResultCardCallout\n key={item._id}\n document={item}\n pagePosition={key + 1}\n callout={item.callout}\n render={props.renderResultCardCallout}\n {...(infiniteScrollPosition === key + 1\n ? { onView: () => props.reactivesearchResultProps.loadMore() }\n : {})}\n />\n );\n }\n\n return null;\n })}\n </section>\n <ResultsPaginationStackLoadable {...props} {...props.reactivesearchResultProps} />\n </>\n );\n};\n\n/** Handles rendering pagination for types that use \"pagination props\" */\nconst ResultsPaginationStack: React.FC<ResultsProps & ReactivesearchPaginationProps> = (props) => {\n const { options } = useReactifySearchContext();\n const { filterStack } = useFilters();\n\n if (options.mode === \"instant-search\") {\n return null;\n }\n\n if (\"pagination\" === filterStack?.paginationType) {\n return <ResultPaginationNumbered {...props} render={props.renderPaginationNumbered} />;\n }\n\n if (\"next_prev\" === filterStack?.paginationType) {\n return <ResultPaginationNextPrev {...props} render={props.renderPaginationNextPrev} />;\n }\n\n return null;\n};\n\n/** Handles rendering pagination for types that use \"result props\" */\nconst ResultsPaginationStackLoadable: React.FC<\n ResultsProps & { reactivesearchResultProps: ReactivesearchResultProps }\n> = (props) => {\n const { options } = useReactifySearchContext();\n const { filterStack } = useFilters();\n\n if (options.mode === \"instant-search\") {\n return null;\n }\n\n if (\"load_more\" === filterStack?.paginationType) {\n return (\n <ResultPaginationLoadMore\n {...props.reactivesearchResultProps}\n render={props.renderPaginationLoadMore}\n />\n );\n }\n\n if (\"infinite_scroll\" === filterStack?.paginationType) {\n return (\n <ResultPaginationInfiniteScroll\n {...props.reactivesearchResultProps}\n render={props.renderPaginationInfiniteScroll}\n />\n );\n }\n\n return null;\n};\n"]}
@@ -14,7 +14,6 @@ const SensorCollection = () => {
14
14
  config: reactifySearchContext.config,
15
15
  provider: reactifySearchContext.options,
16
16
  });
17
- console.log("reactiveProps:", reactiveProps);
18
17
  if (!reactiveProps) {
19
18
  return null;
20
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SensorCollection.js","sourceRoot":"","sources":["../../../../src/components/Sensor/SensorCollection.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,6HAAqG;AAErG,uCAAuD;AACvD,+CAA+D;AAExD,MAAM,gBAAgB,GAAa,GAAG,EAAE;IAC7C,MAAM,qBAAqB,GAAG,IAAA,gCAAwB,GAAE,CAAC;IACzD,MAAM,aAAa,GAAG,IAAA,gCAAwB,EAAC;QAC7C,MAAM,EAAE,qBAAqB,CAAC,MAAM;QACpC,QAAQ,EAAE,qBAAqB,CAAC,OAAO;KACxC,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;IAE7C,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,8BAAC,2BAAiB,oBAAK,aAAa,EAAI,CAAC;AAClD,CAAC,CAAC;AAbW,QAAA,gBAAgB,oBAa3B","sourcesContent":["import React from \"react\";\nimport ReactiveComponent from \"@usereactify/search-internals/lib/components/basic/ReactiveComponent\";\n\nimport { useReactifySearchContext } from \"../../hooks\";\nimport { getPropsSensorCollection } from \"../../utility/props\";\n\nexport const SensorCollection: React.FC = () => {\n const reactifySearchContext = useReactifySearchContext();\n const reactiveProps = getPropsSensorCollection({\n config: reactifySearchContext.config,\n provider: reactifySearchContext.options,\n });\n console.log(\"reactiveProps:\", reactiveProps);\n\n if (!reactiveProps) {\n return null;\n }\n\n return <ReactiveComponent {...reactiveProps} />;\n};\n"]}
1
+ {"version":3,"file":"SensorCollection.js","sourceRoot":"","sources":["../../../../src/components/Sensor/SensorCollection.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,6HAAqG;AAErG,uCAAuD;AACvD,+CAA+D;AAExD,MAAM,gBAAgB,GAAa,GAAG,EAAE;IAC7C,MAAM,qBAAqB,GAAG,IAAA,gCAAwB,GAAE,CAAC;IACzD,MAAM,aAAa,GAAG,IAAA,gCAAwB,EAAC;QAC7C,MAAM,EAAE,qBAAqB,CAAC,MAAM;QACpC,QAAQ,EAAE,qBAAqB,CAAC,OAAO;KACxC,CAAC,CAAC;IAEH,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,8BAAC,2BAAiB,oBAAK,aAAa,EAAI,CAAC;AAClD,CAAC,CAAC;AAZW,QAAA,gBAAgB,oBAY3B","sourcesContent":["import React from \"react\";\nimport ReactiveComponent from \"@usereactify/search-internals/lib/components/basic/ReactiveComponent\";\n\nimport { useReactifySearchContext } from \"../../hooks\";\nimport { getPropsSensorCollection } from \"../../utility/props\";\n\nexport const SensorCollection: React.FC = () => {\n const reactifySearchContext = useReactifySearchContext();\n const reactiveProps = getPropsSensorCollection({\n config: reactifySearchContext.config,\n provider: reactifySearchContext.options,\n });\n\n if (!reactiveProps) {\n return null;\n }\n\n return <ReactiveComponent {...reactiveProps} />;\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,20 +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
- console.log("SensorCuratedPageCollection > reactiveProps:", reactiveProps);
18
18
  if (!reactiveProps)
19
19
  return null;
20
20
  return react_1.default.createElement(ReactiveComponent_1.default, Object.assign({}, reactiveProps));
21
21
  }
22
- //# sourceMappingURL=SensorCuratedPageCollection.js.map
22
+ //# sourceMappingURL=SensorSearchWeighted.js.map