@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
@@ -2,61 +2,48 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateSortQuery = exports.generateSortSort = exports.getSortOption = exports.getSortOptions = void 0;
4
4
  const getSortOptions = (options) => {
5
+ const { provider } = options;
6
+ const visibilityMode = provider.mode;
5
7
  return options.config.sort
6
8
  .sort((a, b) => {
7
- const aInt = typeof a.position === "string"
8
- ? parseInt(a.position, 10)
9
- : a.position;
10
- const bInt = typeof b.position === "string"
11
- ? parseInt(b.position, 10)
12
- : b.position;
9
+ const aInt = typeof a.position === "string" ? parseInt(a.position, 10) : a.position;
10
+ const bInt = typeof b.position === "string" ? parseInt(b.position, 10) : b.position;
13
11
  return aInt - bInt;
14
12
  })
15
- .filter(({ visibility }) => ["all", options.provider.mode].includes(visibility));
13
+ .filter(({ visibility }) => ["all", visibilityMode].includes(visibility));
16
14
  };
17
15
  exports.getSortOptions = getSortOptions;
18
16
  const getSortOption = (options) => {
19
17
  var _a;
20
18
  const sortOptions = (0, exports.getSortOptions)(options);
21
- return (_a = sortOptions.find(({ handle }) => { var _a; return handle === options.sortOption || handle === ((_a = options.query) === null || _a === void 0 ? void 0 : _a.sort); })) !== null && _a !== void 0 ? _a : sortOptions[0];
19
+ return ((_a = sortOptions.find(({ handle }) => { var _a; return handle === options.sortOption || handle === ((_a = options.query) === null || _a === void 0 ? void 0 : _a.sort); })) !== null && _a !== void 0 ? _a : sortOptions[0]);
22
20
  };
23
21
  exports.getSortOption = getSortOption;
24
22
  const generateSortSort = (options) => {
25
- var _a, _b;
23
+ const { provider, curation, sortOption } = options;
26
24
  // curation positions are only applied for the default `collections.position` or `_score` sort
27
25
  // if the sort is something else, apply a normal sort which applies what the user has requested
28
- if (options.provider.mode !== "instant-search") {
29
- if (options.sortOption &&
30
- !["_score", "collections.position"].includes(options.sortOption.field)) {
31
- if (["price_min", "price_max"].includes(options.sortOption.field) && options.provider.market) {
32
- return [{ [`${options.sortOption.field}_market_${options.provider.market}`]: options.sortOption.direction }];
26
+ if (provider.mode !== "instant-search") {
27
+ if (sortOption && !["_score", "collections.position"].includes(sortOption.field)) {
28
+ if (["price_min", "price_max"].includes(sortOption.field) && provider.market) {
29
+ return [{ [`${sortOption.field}_market_${provider.market}`]: sortOption.direction }];
33
30
  }
34
- return [{ [options.sortOption.field]: options.sortOption.direction }];
31
+ return [{ [sortOption.field]: sortOption.direction }];
35
32
  }
36
33
  }
37
34
  const sorts = [];
38
35
  // collection curation pin sorting
39
- if (options.provider.mode === "collection" && options.provider.collectionHandle) {
40
- if ((_a = options.curation) === null || _a === void 0 ? void 0 : _a.collectionHandle) {
41
- const queriesMust = [{
42
- term: {
43
- "curations.collectionHandle.keyword": options.curation.collectionHandle,
44
- },
45
- }];
36
+ if (provider.mode === "collection" && provider.collectionHandle) {
37
+ if (curation === null || curation === void 0 ? void 0 : curation.collectionHandle) {
38
+ const queriesMust = [
39
+ { term: { "curations.collectionHandle.keyword": curation.collectionHandle } },
40
+ ];
46
41
  const queriesMustNot = [];
47
- if (options.provider.market) {
48
- queriesMust.push({
49
- term: {
50
- "curations.markets.keyword": options.provider.market,
51
- },
52
- });
42
+ if (provider.market) {
43
+ queriesMust.push({ term: { "curations.markets.keyword": provider.market } });
53
44
  }
54
45
  else {
55
- queriesMustNot.push({
56
- exists: {
57
- field: "curations.markets.keyword"
58
- },
59
- });
46
+ queriesMustNot.push({ exists: { field: "curations.markets.keyword" } });
60
47
  }
61
48
  sorts.push({
62
49
  "curations.position": {
@@ -65,35 +52,25 @@ const generateSortSort = (options) => {
65
52
  nested: {
66
53
  path: "curations",
67
54
  filter: {
68
- bool: Object.assign({ must: queriesMust }, queriesMustNot.length > 0 ? { must_not: queriesMustNot } : {})
69
- }
55
+ bool: Object.assign({ must: queriesMust }, (queriesMustNot.length > 0 ? { must_not: queriesMustNot } : {})),
56
+ },
70
57
  },
71
58
  },
72
59
  });
73
60
  }
74
61
  }
75
- // search options.curation pin sorting
76
- if (options.provider.mode === "search" || options.provider.mode === "instant-search") {
77
- if ((_b = options.curation) === null || _b === void 0 ? void 0 : _b.searchTerm) {
78
- const queriesMust = [{
79
- term: {
80
- "curations.searchTerm.keyword": options.curation.searchTerm.toLowerCase(),
81
- },
82
- }];
62
+ // search curation pin sorting
63
+ if (provider.mode === "search" || provider.mode === "instant-search") {
64
+ if (curation === null || curation === void 0 ? void 0 : curation.searchTerm) {
65
+ const queriesMust = [
66
+ { term: { "curations.searchTerm.keyword": curation.searchTerm.toLowerCase() } },
67
+ ];
83
68
  const queriesMustNot = [];
84
- if (options.provider.market) {
85
- queriesMust.push({
86
- term: {
87
- "curations.markets.keyword": options.provider.market,
88
- },
89
- });
69
+ if (provider.market) {
70
+ queriesMust.push({ term: { "curations.markets.keyword": provider.market } });
90
71
  }
91
72
  else {
92
- queriesMustNot.push({
93
- exists: {
94
- field: "curations.markets.keyword"
95
- },
96
- });
73
+ queriesMustNot.push({ exists: { field: "curations.markets.keyword" } });
97
74
  }
98
75
  sorts.push({
99
76
  "curations.position": {
@@ -102,109 +79,71 @@ const generateSortSort = (options) => {
102
79
  nested: {
103
80
  path: "curations",
104
81
  filter: {
105
- bool: Object.assign({ must: queriesMust }, queriesMustNot.length > 0 ? { must_not: queriesMustNot } : {})
106
- }
82
+ bool: Object.assign({ must: queriesMust }, (queriesMustNot.length > 0 ? { must_not: queriesMustNot } : {})),
83
+ },
107
84
  },
108
85
  },
109
86
  });
110
87
  }
111
88
  }
112
- // options.curation boost sorting
113
- if (options.curation) {
114
- if (0 < options.curation.boosting.groupings.length) {
115
- const groupings = options.curation.boosting.groupings.sort((a, b) => a.position > b.position ? 1 : -1);
89
+ // curation boost sorting
90
+ if (curation) {
91
+ if (0 < curation.boosting.groupings.length) {
92
+ const groupings = curation.boosting.groupings.sort((a, b) => (a.position > b.position ? 1 : -1));
116
93
  for (const grouping of groupings) {
117
94
  try {
118
95
  const query = JSON.parse(grouping.query);
119
96
  if (query)
120
97
  sorts.push(query);
121
98
  }
122
- catch (_c) {
99
+ catch (_a) {
123
100
  console.error(`query could not be parsed for boost grouping`, grouping);
124
101
  }
125
102
  }
126
103
  }
127
- if (0 < options.curation.boosting.sortings.length) {
128
- const sortings = options.curation.boosting.sortings.sort((a, b) => a.position > b.position ? 1 : -1);
104
+ if (0 < curation.boosting.sortings.length) {
105
+ const sortings = curation.boosting.sortings.sort((a, b) => (a.position > b.position ? 1 : -1));
129
106
  for (const sorting of sortings) {
130
107
  try {
131
108
  let query = JSON.parse(sorting.query);
132
- if (options.provider.market && sorting.field === "inventory_total") {
133
- query = {
134
- [`inventory_quantity_market_${options.provider.market}`]: query.inventory_total,
135
- };
109
+ if (provider.market && sorting.field === "inventory_total") {
110
+ query = { [`inventory_quantity_market_${provider.market}`]: query.inventory_total };
136
111
  }
137
- if (options.provider.market && sorting.field === "price") {
138
- query = {
139
- [`price_min_market_${options.provider.market}`]: query.price_min,
140
- };
112
+ if (provider.market && sorting.field === "price") {
113
+ query = { [`price_min_market_${provider.market}`]: query.price_min };
141
114
  }
142
115
  if (query) {
143
116
  sorts.push(query);
144
117
  }
145
118
  }
146
- catch (_d) {
119
+ catch (_b) {
147
120
  console.error(`query could not be parsed for boost sorting`, sorting);
148
121
  }
149
122
  }
150
123
  }
151
124
  }
152
- // default collection sorting
153
- if (options.provider.mode === "collection" && options.provider.collectionHandle) {
154
- sorts.push({
155
- "collections.position": {
156
- order: "asc",
157
- nested: {
158
- path: "collections",
159
- filter: {
160
- term: {
161
- "collections.handle.keyword": options.provider.collectionHandle,
162
- },
163
- },
164
- },
165
- },
166
- });
167
- }
168
- // default search sorting
169
- if (options.provider.mode === "search" || options.provider.mode === "instant-search") {
170
- sorts.push("_score");
171
- }
125
+ // default sorting - use _score for all modes
126
+ sorts.push("_score");
172
127
  return sorts;
173
128
  };
174
129
  exports.generateSortSort = generateSortSort;
175
130
  const generateSortQuery = (options) => {
176
131
  var _a;
177
- if (!options.curation || options.curation.id.includes("global")) {
132
+ const { provider, curation, sortOption } = options;
133
+ if (!curation || curation.id.includes("global"))
178
134
  return { match_all: {} };
179
- }
180
- const queriesMust = [{
181
- term: {
182
- [`curations.${"collection" === options.curation.type
183
- ? "collectionHandle"
184
- : "searchTerm"}.keyword`]: "collection" === options.curation.type
185
- ? options.curation.collectionHandle
186
- : (_a = options.curation.searchTerm) === null || _a === void 0 ? void 0 : _a.toLowerCase(),
187
- },
188
- },
189
- {
190
- term: {
191
- "curations.hidden": true,
192
- },
193
- }];
135
+ const curationField = curation.type === "collection" ? "collectionHandle" : "searchTerm";
136
+ const curationValue = curation.type === "collection" ? curation.collectionHandle : (_a = curation.searchTerm) === null || _a === void 0 ? void 0 : _a.toLowerCase();
137
+ const queriesMust = [
138
+ { term: { [`curations.${curationField}.keyword`]: curationValue } },
139
+ { term: { "curations.hidden": true } },
140
+ ];
194
141
  const queriesMustNot = [];
195
- if (options.provider.market) {
196
- queriesMust.push({
197
- term: {
198
- "curations.markets.keyword": options.provider.market,
199
- },
200
- });
142
+ if (provider.market) {
143
+ queriesMust.push({ term: { "curations.markets.keyword": provider.market } });
201
144
  }
202
145
  else {
203
- queriesMustNot.push({
204
- exists: {
205
- field: "curations.markets.keyword",
206
- },
207
- });
146
+ queriesMustNot.push({ exists: { field: "curations.markets.keyword" } });
208
147
  }
209
148
  return {
210
149
  bool: {
@@ -213,20 +152,13 @@ const generateSortQuery = (options) => {
213
152
  nested: {
214
153
  path: "curations",
215
154
  query: {
216
- bool: Object.assign({ must: queriesMust }, queriesMustNot.length > 0 ? { must_not: queriesMustNot } : {}),
155
+ bool: Object.assign({ must: queriesMust }, (queriesMustNot.length > 0 ? { must_not: queriesMustNot } : {})),
217
156
  },
218
157
  },
219
158
  },
220
159
  // hide callout when not sorting by _score or collections.position
221
- ...(options.sortOption &&
222
- !["_score", "collections.position"].includes(options.sortOption.field)
223
- ? [
224
- {
225
- term: {
226
- type: "callout",
227
- },
228
- },
229
- ]
160
+ ...(sortOption && !["_score", "collections.position"].includes(sortOption.field)
161
+ ? [{ term: { type: "callout" } }]
230
162
  : []),
231
163
  ],
232
164
  },
@@ -1 +1 @@
1
- {"version":3,"file":"sortOption.js","sourceRoot":"","sources":["../../../src/utility/sortOption.ts"],"names":[],"mappings":"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","sourcesContent":["import { ReactifySearchProviderProps } from \"../components\";\nimport { Config, ConfigCuration, ConfigSort } from \"../types\";\n\nexport const getSortOptions = (options: {\n provider: ReactifySearchProviderProps;\n config: Config;\n sortOption?: string;\n}) => {\n return options.config.sort\n .sort((a, b) => {\n const aInt =\n typeof a.position === \"string\"\n ? parseInt(a.position, 10)\n : a.position;\n const bInt =\n typeof b.position === \"string\"\n ? parseInt(b.position, 10)\n : b.position;\n return aInt - bInt;\n })\n .filter(({ visibility }) => [\"all\", options.provider.mode].includes(visibility));\n\n}\n\nexport const getSortOption = (options: {\n provider: ReactifySearchProviderProps;\n config: Config;\n sortOption?: string;\n query?: Record<string, string>;\n}) => {\n const sortOptions = getSortOptions(options);\n\n return sortOptions.find(({ handle }) => handle === options.sortOption || handle === options.query?.sort) ?? sortOptions[0];\n}\n\nexport const generateSortSort = (options: {\n provider: ReactifySearchProviderProps;\n config: Config;\n curation?: ConfigCuration;\n sortOption?: ConfigSort;\n}) => {\n // curation positions are only applied for the default `collections.position` or `_score` sort\n // if the sort is something else, apply a normal sort which applies what the user has requested\n if (options.provider.mode !== \"instant-search\") {\n if (\n options.sortOption &&\n ![\"_score\", \"collections.position\"].includes(options.sortOption.field)\n ) {\n if ([\"price_min\", \"price_max\"].includes(options.sortOption.field) && options.provider.market) {\n return [{ [`${options.sortOption.field}_market_${options.provider.market}`]: options.sortOption.direction }];\n }\n return [{ [options.sortOption.field]: options.sortOption.direction }];\n }\n }\n\n const sorts = [];\n\n // collection curation pin sorting\n if (options.provider.mode === \"collection\" && options.provider.collectionHandle) {\n if (options.curation?.collectionHandle) {\n const queriesMust: Array<unknown> = [{\n term: {\n \"curations.collectionHandle.keyword\": options.curation.collectionHandle,\n },\n }];\n const queriesMustNot: Array<unknown> = [];\n if (options.provider.market) {\n queriesMust.push({\n term: {\n \"curations.markets.keyword\": options.provider.market,\n },\n });\n } else {\n queriesMustNot.push({\n exists: {\n field: \"curations.markets.keyword\"\n },\n })\n }\n sorts.push({\n \"curations.position\": {\n unmapped_type: \"long\",\n order: \"asc\",\n nested: {\n path: \"curations\",\n filter: {\n bool: {\n must: queriesMust,\n ...queriesMustNot.length > 0 ? { must_not: queriesMustNot } : {},\n }\n }\n },\n },\n });\n }\n }\n\n // search options.curation pin sorting\n if (options.provider.mode === \"search\" || options.provider.mode === \"instant-search\") {\n if (options.curation?.searchTerm) {\n const queriesMust: Array<unknown> = [{\n term: {\n \"curations.searchTerm.keyword\": options.curation.searchTerm.toLowerCase(),\n },\n }];\n const queriesMustNot: Array<unknown> = [];\n if (options.provider.market) {\n queriesMust.push({\n term: {\n \"curations.markets.keyword\": options.provider.market,\n },\n });\n } else {\n queriesMustNot.push({\n exists: {\n field: \"curations.markets.keyword\"\n },\n })\n }\n sorts.push({\n \"curations.position\": {\n unmapped_type: \"long\",\n order: \"asc\",\n nested: {\n path: \"curations\",\n filter: {\n bool: {\n must: queriesMust,\n ...queriesMustNot.length > 0 ? { must_not: queriesMustNot } : {},\n }\n }\n },\n },\n });\n }\n }\n\n // options.curation boost sorting\n if (options.curation) {\n if (0 < options.curation.boosting.groupings.length) {\n const groupings = options.curation.boosting.groupings.sort((a, b) =>\n a.position > b.position ? 1 : -1\n );\n\n for (const grouping of groupings) {\n try {\n const query = JSON.parse(grouping.query);\n if (query) sorts.push(query);\n } catch {\n console.error(\n `query could not be parsed for boost grouping`,\n grouping\n );\n }\n }\n }\n\n if (0 < options.curation.boosting.sortings.length) {\n const sortings = options.curation.boosting.sortings.sort((a, b) =>\n a.position > b.position ? 1 : -1\n );\n\n for (const sorting of sortings) {\n try {\n let query = JSON.parse(sorting.query);\n\n if (options.provider.market && sorting.field === \"inventory_total\") {\n query = {\n [`inventory_quantity_market_${options.provider.market}`]: query.inventory_total,\n };\n }\n if (options.provider.market && sorting.field === \"price\") {\n query = {\n [`price_min_market_${options.provider.market}`]: query.price_min,\n };\n }\n if (query) {\n sorts.push(query);\n }\n } catch {\n console.error(`query could not be parsed for boost sorting`, sorting);\n }\n }\n }\n }\n\n // default collection sorting\n if (options.provider.mode === \"collection\" && options.provider.collectionHandle) {\n sorts.push({\n \"collections.position\": {\n order: \"asc\",\n nested: {\n path: \"collections\",\n filter: {\n term: {\n \"collections.handle.keyword\": options.provider.collectionHandle,\n },\n },\n },\n },\n });\n }\n\n // default search sorting\n if (options.provider.mode === \"search\" || options.provider.mode === \"instant-search\") {\n sorts.push(\"_score\");\n }\n\n return sorts;\n}\n\nexport const generateSortQuery = (options: {\n provider: ReactifySearchProviderProps;\n curation?: ConfigCuration;\n sortOption?: ConfigSort;\n}): Record<string, any> | undefined => {\n if (!options.curation || options.curation.id.includes(\"global\")) {\n return { match_all: {} };\n }\n\n const queriesMust: Array<unknown> = [{\n term: {\n [`curations.${\n \"collection\" === options.curation.type\n ? \"collectionHandle\"\n : \"searchTerm\"\n }.keyword`]:\n \"collection\" === options.curation.type\n ? options.curation.collectionHandle\n : options.curation.searchTerm?.toLowerCase(),\n },\n },\n {\n term: {\n \"curations.hidden\": true,\n },\n }];\n const queriesMustNot: Array<unknown> = [];\n\n if (options.provider.market) {\n queriesMust.push({\n term: {\n \"curations.markets.keyword\": options.provider.market,\n },\n })\n } else {\n queriesMustNot.push({\n exists: {\n field: \"curations.markets.keyword\",\n },\n });\n }\n\n return {\n bool: {\n must_not: [\n {\n nested: {\n path: \"curations\",\n query: {\n bool: {\n must: queriesMust,\n ...queriesMustNot.length > 0 ? { must_not: queriesMustNot } : {},\n },\n },\n },\n },\n // hide callout when not sorting by _score or collections.position\n ...(options.sortOption &&\n ![\"_score\", \"collections.position\"].includes(options.sortOption.field)\n ? [\n {\n term: {\n type: \"callout\",\n },\n },\n ]\n : []),\n ],\n },\n };\n};\n"]}
1
+ {"version":3,"file":"sortOption.js","sourceRoot":"","sources":["../../../src/utility/sortOption.ts"],"names":[],"mappings":"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","sourcesContent":["import { ReactifySearchProviderProps } from \"../components\";\nimport { Config, ConfigCuration, ConfigSort } from \"../types\";\n\nexport const getSortOptions = (options: {\n provider: ReactifySearchProviderProps;\n config: Config;\n sortOption?: string;\n}) => {\n const { provider } = options;\n const visibilityMode = provider.mode;\n return options.config.sort\n .sort((a, b) => {\n const aInt = typeof a.position === \"string\" ? parseInt(a.position, 10) : a.position;\n const bInt = typeof b.position === \"string\" ? parseInt(b.position, 10) : b.position;\n return aInt - bInt;\n })\n .filter(({ visibility }) => [\"all\", visibilityMode].includes(visibility));\n};\n\nexport const getSortOption = (options: {\n provider: ReactifySearchProviderProps;\n config: Config;\n sortOption?: string;\n query?: Record<string, string>;\n}) => {\n const sortOptions = getSortOptions(options);\n\n return (\n sortOptions.find(({ handle }) => handle === options.sortOption || handle === options.query?.sort) ?? sortOptions[0]\n );\n};\n\nexport const generateSortSort = (options: {\n provider: ReactifySearchProviderProps;\n config: Config;\n curation?: ConfigCuration;\n sortOption?: ConfigSort;\n}) => {\n const { provider, curation, sortOption } = options;\n // curation positions are only applied for the default `collections.position` or `_score` sort\n // if the sort is something else, apply a normal sort which applies what the user has requested\n if (provider.mode !== \"instant-search\") {\n if (sortOption && ![\"_score\", \"collections.position\"].includes(sortOption.field)) {\n if ([\"price_min\", \"price_max\"].includes(sortOption.field) && provider.market) {\n return [{ [`${sortOption.field}_market_${provider.market}`]: sortOption.direction }];\n }\n return [{ [sortOption.field]: sortOption.direction }];\n }\n }\n\n const sorts = [];\n\n // collection curation pin sorting\n if (provider.mode === \"collection\" && provider.collectionHandle) {\n if (curation?.collectionHandle) {\n const queriesMust: Array<unknown> = [\n { term: { \"curations.collectionHandle.keyword\": curation.collectionHandle } },\n ];\n const queriesMustNot: Array<unknown> = [];\n if (provider.market) {\n queriesMust.push({ term: { \"curations.markets.keyword\": provider.market } });\n } else {\n queriesMustNot.push({ exists: { field: \"curations.markets.keyword\" } });\n }\n sorts.push({\n \"curations.position\": {\n unmapped_type: \"long\",\n order: \"asc\",\n nested: {\n path: \"curations\",\n filter: {\n bool: {\n must: queriesMust,\n ...(queriesMustNot.length > 0 ? { must_not: queriesMustNot } : {}),\n },\n },\n },\n },\n });\n }\n }\n\n // search curation pin sorting\n if (provider.mode === \"search\" || provider.mode === \"instant-search\") {\n if (curation?.searchTerm) {\n const queriesMust: Array<unknown> = [\n { term: { \"curations.searchTerm.keyword\": curation.searchTerm.toLowerCase() } },\n ];\n const queriesMustNot: Array<unknown> = [];\n if (provider.market) {\n queriesMust.push({ term: { \"curations.markets.keyword\": provider.market } });\n } else {\n queriesMustNot.push({ exists: { field: \"curations.markets.keyword\" } });\n }\n sorts.push({\n \"curations.position\": {\n unmapped_type: \"long\",\n order: \"asc\",\n nested: {\n path: \"curations\",\n filter: {\n bool: {\n must: queriesMust,\n ...(queriesMustNot.length > 0 ? { must_not: queriesMustNot } : {}),\n },\n },\n },\n },\n });\n }\n }\n\n // curation boost sorting\n if (curation) {\n if (0 < curation.boosting.groupings.length) {\n const groupings = curation.boosting.groupings.sort((a, b) => (a.position > b.position ? 1 : -1));\n\n for (const grouping of groupings) {\n try {\n const query = JSON.parse(grouping.query);\n if (query) sorts.push(query);\n } catch {\n console.error(`query could not be parsed for boost grouping`, grouping);\n }\n }\n }\n\n if (0 < curation.boosting.sortings.length) {\n const sortings = curation.boosting.sortings.sort((a, b) => (a.position > b.position ? 1 : -1));\n\n for (const sorting of sortings) {\n try {\n let query = JSON.parse(sorting.query);\n\n if (provider.market && sorting.field === \"inventory_total\") {\n query = { [`inventory_quantity_market_${provider.market}`]: query.inventory_total };\n }\n if (provider.market && sorting.field === \"price\") {\n query = { [`price_min_market_${provider.market}`]: query.price_min };\n }\n if (query) {\n sorts.push(query);\n }\n } catch {\n console.error(`query could not be parsed for boost sorting`, sorting);\n }\n }\n }\n }\n\n // default sorting - use _score for all modes\n sorts.push(\"_score\");\n\n return sorts;\n};\n\nexport const generateSortQuery = (options: {\n provider: ReactifySearchProviderProps;\n curation?: ConfigCuration;\n sortOption?: ConfigSort;\n}): Record<string, any> | undefined => {\n const { provider, curation, sortOption } = options;\n if (!curation || curation.id.includes(\"global\")) return { match_all: {} };\n\n const curationField = curation.type === \"collection\" ? \"collectionHandle\" : \"searchTerm\";\n const curationValue = curation.type === \"collection\" ? curation.collectionHandle : curation.searchTerm?.toLowerCase();\n\n const queriesMust: Array<unknown> = [\n { term: { [`curations.${curationField}.keyword`]: curationValue } },\n { term: { \"curations.hidden\": true } },\n ];\n const queriesMustNot: Array<unknown> = [];\n\n if (provider.market) {\n queriesMust.push({ term: { \"curations.markets.keyword\": provider.market } });\n } else {\n queriesMustNot.push({ exists: { field: \"curations.markets.keyword\" } });\n }\n\n return {\n bool: {\n must_not: [\n {\n nested: {\n path: \"curations\",\n query: {\n bool: {\n must: queriesMust,\n ...(queriesMustNot.length > 0 ? { must_not: queriesMustNot } : {}),\n },\n },\n },\n },\n // hide callout when not sorting by _score or collections.position\n ...(sortOption && ![\"_score\", \"collections.position\"].includes(sortOption.field)\n ? [{ term: { type: \"callout\" } }]\n : []),\n ],\n },\n };\n};\n"]}
package/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",
@@ -10,7 +10,7 @@
10
10
  "README.md",
11
11
  "CHANGELOG.md"
12
12
  ],
13
- "packageManager": "pnpm@8.9.2",
13
+ "packageManager": "pnpm@10.13.1",
14
14
  "scripts": {
15
15
  "watch": "tsc --watch",
16
16
  "release": "standard-version --tag-prefix release-v",
@@ -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 +0,0 @@
1
- export declare function SensorCuratedPageCollection(): JSX.Element | null;
@@ -1 +0,0 @@
1
- {"version":3,"file":"SensorCuratedPageCollection.js","sourceRoot":"","sources":["../../../../src/components/Sensor/SensorCuratedPageCollection.tsx"],"names":[],"mappings":";;;;;AAKA,kEAWC;AAhBD,kDAA0B;AAC1B,6HAAqG;AACrG,uCAAuD;AACvD,+CAA0E;AAE1E,SAAgB,2BAA2B;IACzC,MAAM,qBAAqB,GAAG,IAAA,gCAAwB,GAAE,CAAC;IACzD,MAAM,aAAa,GAAG,IAAA,2CAAmC,EAAC;QACxD,MAAM,EAAE,qBAAqB,CAAC,MAAM;QACpC,QAAQ,EAAE,qBAAqB,CAAC,OAAO;KACxC,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,CAAC,8CAA8C,EAAE,aAAa,CAAC,CAAC;IAE3E,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 { getPropsSensorCuratedPageCollection } from \"../../utility/props\";\n\nexport function SensorCuratedPageCollection() {\n const reactifySearchContext = useReactifySearchContext();\n const reactiveProps = getPropsSensorCuratedPageCollection({\n config: reactifySearchContext.config,\n provider: reactifySearchContext.options,\n });\n console.log(\"SensorCuratedPageCollection > reactiveProps:\", reactiveProps);\n\n if (!reactiveProps) return null;\n\n return <ReactiveComponent {...reactiveProps} />;\n}\n"]}
@@ -1 +0,0 @@
1
- export declare function SensorCuratedPageSearch(): JSX.Element | null;
@@ -1 +0,0 @@
1
- {"version":3,"file":"SensorCuratedPageSearch.js","sourceRoot":"","sources":["../../../../src/components/Sensor/SensorCuratedPageSearch.tsx"],"names":[],"mappings":";;;;;AAKA,0DAUC;AAfD,kDAA0B;AAC1B,6HAAqG;AACrG,uCAAuD;AACvD,+CAAsE;AAEtE,SAAgB,uBAAuB;IACrC,MAAM,qBAAqB,GAAG,IAAA,gCAAwB,GAAE,CAAC;IACzD,MAAM,aAAa,GAAG,IAAA,uCAA+B,EAAC;QACpD,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 { getPropsSensorCuratedPageSearch } from \"../../utility/props\";\n\nexport function SensorCuratedPageSearch() {\n const reactifySearchContext = useReactifySearchContext();\n const reactiveProps = getPropsSensorCuratedPageSearch({\n config: reactifySearchContext.config,\n provider: reactifySearchContext.options,\n });\n\n if (!reactiveProps) return null;\n\n return <ReactiveComponent {...reactiveProps} />;\n}\n\n"]}