@usereactify/search 5.47.1 → 5.48.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/dist/package.json +1 -1
- package/dist/src/components/Filter/Filter.js +45 -10
- package/dist/src/components/Filter/Filter.js.map +1 -1
- package/dist/src/components/Result/Results.d.ts +0 -2
- package/dist/src/components/Result/Results.js +9 -21
- package/dist/src/components/Result/Results.js.map +1 -1
- package/dist/src/components/Sensor/SensorCollection.js +8 -80
- package/dist/src/components/Sensor/SensorCollection.js.map +1 -1
- package/dist/src/components/Sensor/SensorCustom.js +6 -2
- package/dist/src/components/Sensor/SensorCustom.js.map +1 -1
- package/dist/src/components/Sensor/SensorInventoryAvailable.js +8 -44
- package/dist/src/components/Sensor/SensorInventoryAvailable.js.map +1 -1
- package/dist/src/components/Sensor/SensorPublished.js +7 -27
- package/dist/src/components/Sensor/SensorPublished.js.map +1 -1
- package/dist/src/components/Sensor/SensorSort.js +10 -203
- package/dist/src/components/Sensor/SensorSort.js.map +1 -1
- package/dist/src/hooks/reactivesearch/index.d.ts +0 -6
- package/dist/src/hooks/reactivesearch/index.js +0 -6
- package/dist/src/hooks/reactivesearch/index.js.map +1 -1
- package/dist/src/hooks/usePagination.js +1 -1
- package/dist/src/hooks/usePagination.js.map +1 -1
- package/dist/src/hooks/useSortBy.js +14 -17
- package/dist/src/hooks/useSortBy.js.map +1 -1
- package/dist/src/utility/curation.d.ts +7 -0
- package/dist/src/utility/curation.js +85 -0
- package/dist/src/utility/curation.js.map +1 -0
- package/dist/src/utility/filters.d.ts +6 -0
- package/dist/src/utility/filters.js +36 -0
- package/dist/src/utility/filters.js.map +1 -0
- package/dist/src/utility/props.d.ts +143 -10
- package/dist/src/utility/props.js +241 -25
- package/dist/src/utility/props.js.map +1 -1
- package/dist/src/utility/server.js +1 -1
- package/dist/src/utility/server.js.map +1 -1
- package/dist/src/utility/sortOption.d.ts +22 -0
- package/dist/src/utility/sortOption.js +198 -0
- package/dist/src/utility/sortOption.js.map +1 -0
- package/package.json +1 -1
- package/dist/src/hooks/reactivesearch/useReactiveFilterListProps.d.ts +0 -84
- package/dist/src/hooks/reactivesearch/useReactiveFilterListProps.js +0 -21
- package/dist/src/hooks/reactivesearch/useReactiveFilterListProps.js.map +0 -1
- package/dist/src/hooks/reactivesearch/useReactiveFilterRangeProps.d.ts +0 -86
- package/dist/src/hooks/reactivesearch/useReactiveFilterRangeProps.js +0 -32
- package/dist/src/hooks/reactivesearch/useReactiveFilterRangeProps.js.map +0 -1
- package/dist/src/hooks/reactivesearch/useReactiveFilterSharedProps.d.ts +0 -77
- package/dist/src/hooks/reactivesearch/useReactiveFilterSharedProps.js +0 -124
- package/dist/src/hooks/reactivesearch/useReactiveFilterSharedProps.js.map +0 -1
- package/dist/src/hooks/reactivesearch/useReactiveFilterSliderProps.d.ts +0 -83
- package/dist/src/hooks/reactivesearch/useReactiveFilterSliderProps.js +0 -28
- package/dist/src/hooks/reactivesearch/useReactiveFilterSliderProps.js.map +0 -1
- package/dist/src/hooks/reactivesearch/useReactiveReactProp.d.ts +0 -4
- package/dist/src/hooks/reactivesearch/useReactiveReactProp.js +0 -32
- package/dist/src/hooks/reactivesearch/useReactiveReactProp.js.map +0 -1
- package/dist/src/hooks/reactivesearch/useReactiveReactiveListProps.d.ts +0 -6
- package/dist/src/hooks/reactivesearch/useReactiveReactiveListProps.js +0 -38
- package/dist/src/hooks/reactivesearch/useReactiveReactiveListProps.js.map +0 -1
|
@@ -7,38 +7,18 @@ exports.SensorPublished = void 0;
|
|
|
7
7
|
const react_1 = __importDefault(require("react"));
|
|
8
8
|
const ReactiveComponent_1 = __importDefault(require("@appbaseio/reactivesearch/lib/components/basic/ReactiveComponent"));
|
|
9
9
|
const hooks_1 = require("../../hooks");
|
|
10
|
+
const props_1 = require("../../utility/props");
|
|
10
11
|
const SensorPublished = () => {
|
|
11
12
|
const flagsHook = (0, hooks_1.useFlags)();
|
|
12
|
-
const
|
|
13
|
+
const reactifySearchContext = (0, hooks_1.useReactifySearchContext)();
|
|
14
|
+
const reactiveProps = (0, props_1.getPropsSensorPublished)({
|
|
15
|
+
config: reactifySearchContext.config,
|
|
16
|
+
provider: reactifySearchContext.options,
|
|
17
|
+
});
|
|
13
18
|
if (!flagsHook.flags["reactify-search:flag_sensor_published"]) {
|
|
14
19
|
return null;
|
|
15
20
|
}
|
|
16
|
-
return (react_1.default.createElement(ReactiveComponent_1.default, {
|
|
17
|
-
if (options.market) {
|
|
18
|
-
return {
|
|
19
|
-
query: {
|
|
20
|
-
bool: {
|
|
21
|
-
must: [{
|
|
22
|
-
match: {
|
|
23
|
-
markets: options.market,
|
|
24
|
-
},
|
|
25
|
-
}, {
|
|
26
|
-
match: {
|
|
27
|
-
published: true,
|
|
28
|
-
},
|
|
29
|
-
}]
|
|
30
|
-
},
|
|
31
|
-
},
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
return {
|
|
35
|
-
query: {
|
|
36
|
-
match: {
|
|
37
|
-
published: true,
|
|
38
|
-
},
|
|
39
|
-
},
|
|
40
|
-
};
|
|
41
|
-
} }));
|
|
21
|
+
return (react_1.default.createElement(ReactiveComponent_1.default, Object.assign({}, reactiveProps)));
|
|
42
22
|
};
|
|
43
23
|
exports.SensorPublished = SensorPublished;
|
|
44
24
|
//# sourceMappingURL=SensorPublished.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SensorPublished.js","sourceRoot":"","sources":["../../../../src/components/Sensor/SensorPublished.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,yHAAiG;AAEjG,uCAAiE;
|
|
1
|
+
{"version":3,"file":"SensorPublished.js","sourceRoot":"","sources":["../../../../src/components/Sensor/SensorPublished.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,yHAAiG;AAEjG,uCAAiE;AACjE,+CAA8D;AAEvD,MAAM,eAAe,GAAa,GAAG,EAAE;IAC5C,MAAM,SAAS,GAAG,IAAA,gBAAQ,GAAE,CAAC;IAC7B,MAAM,qBAAqB,GAAG,IAAA,gCAAwB,GAAE,CAAC;IACzD,MAAM,aAAa,GAAG,IAAA,+BAAuB,EAAC;QAC5C,MAAM,EAAE,qBAAqB,CAAC,MAAM;QACpC,QAAQ,EAAE,qBAAqB,CAAC,OAAO;KACxC,CAAC,CAAC;IAEH,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,uCAAuC,CAAC,EAAE;QAC7D,OAAO,IAAI,CAAC;KACb;IAED,OAAO,CACL,8BAAC,2BAAiB,oBACZ,aAAa,EACjB,CACH,CAAC;AACJ,CAAC,CAAC;AAjBW,QAAA,eAAe,mBAiB1B","sourcesContent":["import React from \"react\";\nimport ReactiveComponent from \"@appbaseio/reactivesearch/lib/components/basic/ReactiveComponent\";\n\nimport { useFlags, useReactifySearchContext } from \"../../hooks\";\nimport { getPropsSensorPublished } from \"../../utility/props\";\n\nexport const SensorPublished: React.FC = () => {\n const flagsHook = useFlags();\n const reactifySearchContext = useReactifySearchContext();\n const reactiveProps = getPropsSensorPublished({\n config: reactifySearchContext.config,\n provider: reactifySearchContext.options,\n });\n\n if (!flagsHook.flags[\"reactify-search:flag_sensor_published\"]) {\n return null;\n }\n\n return (\n <ReactiveComponent\n {...reactiveProps}\n />\n );\n};\n"]}
|
|
@@ -7,215 +7,22 @@ exports.SensorSort = void 0;
|
|
|
7
7
|
const react_1 = __importDefault(require("react"));
|
|
8
8
|
const ReactiveComponent_1 = __importDefault(require("@appbaseio/reactivesearch/lib/components/basic/ReactiveComponent"));
|
|
9
9
|
const hooks_1 = require("../../hooks");
|
|
10
|
+
const props_1 = require("../../utility/props");
|
|
10
11
|
const SensorSort = () => {
|
|
11
12
|
const flagsHook = (0, hooks_1.useFlags)();
|
|
12
|
-
const
|
|
13
|
-
const { curation } = (0, hooks_1.useCuration)();
|
|
13
|
+
const reactifySearchContext = (0, hooks_1.useReactifySearchContext)();
|
|
14
14
|
const { sortOption } = (0, hooks_1.useSortBy)();
|
|
15
|
-
const {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
collectionHandle: options.mode === "collection" ? options.collectionHandle : undefined,
|
|
23
|
-
}),
|
|
24
|
-
query: buildQuery({
|
|
25
|
-
sortOption,
|
|
26
|
-
curation,
|
|
27
|
-
}),
|
|
28
|
-
};
|
|
29
|
-
}, [options, config, sortOption, curation]);
|
|
15
|
+
const { searchTerm } = (0, hooks_1.useSearch)();
|
|
16
|
+
const reactiveProps = (0, props_1.getPropsSensorSort)({
|
|
17
|
+
config: reactifySearchContext.config,
|
|
18
|
+
provider: reactifySearchContext.options,
|
|
19
|
+
sortOption: sortOption === null || sortOption === void 0 ? void 0 : sortOption.handle,
|
|
20
|
+
searchTerm: searchTerm,
|
|
21
|
+
});
|
|
30
22
|
if (!flagsHook.flags["reactify-search:flag_sensor_sort"]) {
|
|
31
23
|
return null;
|
|
32
24
|
}
|
|
33
|
-
return (react_1.default.createElement(ReactiveComponent_1.default, {
|
|
34
|
-
sort,
|
|
35
|
-
query,
|
|
36
|
-
}) }));
|
|
25
|
+
return (react_1.default.createElement(ReactiveComponent_1.default, Object.assign({}, reactiveProps)));
|
|
37
26
|
};
|
|
38
27
|
exports.SensorSort = SensorSort;
|
|
39
|
-
const buildSort = (args) => {
|
|
40
|
-
const { mode, curation, sortOption, collectionHandle } = args;
|
|
41
|
-
// curation positions are only applied for the default `collections.position` or `_score` sort
|
|
42
|
-
// if the sort is something else, apply a normal sort which applies what the user has requested
|
|
43
|
-
if (mode !== "instant-search") {
|
|
44
|
-
if (sortOption &&
|
|
45
|
-
!["_score", "collections.position"].includes(sortOption.field)) {
|
|
46
|
-
return [{ [sortOption.field]: sortOption.direction }];
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
const sorts = [];
|
|
50
|
-
// collection curation pin sorting
|
|
51
|
-
if (mode === "collection" && collectionHandle) {
|
|
52
|
-
if (curation === null || curation === void 0 ? void 0 : curation.collectionHandle) {
|
|
53
|
-
const queries = [{
|
|
54
|
-
term: {
|
|
55
|
-
"curations.collectionHandle.keyword": curation.collectionHandle,
|
|
56
|
-
},
|
|
57
|
-
}];
|
|
58
|
-
if (args.market) {
|
|
59
|
-
queries.push({
|
|
60
|
-
term: {
|
|
61
|
-
"curations.markets.keyword": args.market,
|
|
62
|
-
},
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
sorts.push({
|
|
66
|
-
"curations.position": {
|
|
67
|
-
unmapped_type: "long",
|
|
68
|
-
order: "asc",
|
|
69
|
-
nested: {
|
|
70
|
-
path: "curations",
|
|
71
|
-
filter: {
|
|
72
|
-
bool: {
|
|
73
|
-
must: queries
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
},
|
|
77
|
-
},
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
// search curation pin sorting
|
|
82
|
-
if (mode === "search" || mode === "instant-search") {
|
|
83
|
-
if (curation === null || curation === void 0 ? void 0 : curation.searchTerm) {
|
|
84
|
-
const queries = [{
|
|
85
|
-
term: {
|
|
86
|
-
"curations.searchTerm.keyword": curation.searchTerm.toLowerCase(),
|
|
87
|
-
},
|
|
88
|
-
}];
|
|
89
|
-
if (args.market) {
|
|
90
|
-
queries.push({
|
|
91
|
-
term: {
|
|
92
|
-
"curations.markets.keyword": args.market,
|
|
93
|
-
},
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
sorts.push({
|
|
97
|
-
"curations.position": {
|
|
98
|
-
unmapped_type: "long",
|
|
99
|
-
order: "asc",
|
|
100
|
-
nested: {
|
|
101
|
-
path: "curations",
|
|
102
|
-
filter: {
|
|
103
|
-
bool: {
|
|
104
|
-
must: queries
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
},
|
|
108
|
-
},
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
// curation boost sorting
|
|
113
|
-
if (curation) {
|
|
114
|
-
if (0 < curation.boosting.groupings.length) {
|
|
115
|
-
const groupings = curation.boosting.groupings.sort((a, b) => a.position > b.position ? 1 : -1);
|
|
116
|
-
for (const grouping of groupings) {
|
|
117
|
-
try {
|
|
118
|
-
const query = JSON.parse(grouping.query);
|
|
119
|
-
if (query)
|
|
120
|
-
sorts.push(query);
|
|
121
|
-
}
|
|
122
|
-
catch (_a) {
|
|
123
|
-
console.error(`query could not be parsed for boost grouping`, grouping);
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
if (0 < curation.boosting.sortings.length) {
|
|
128
|
-
const sortings = curation.boosting.sortings.sort((a, b) => a.position > b.position ? 1 : -1);
|
|
129
|
-
for (const sorting of sortings) {
|
|
130
|
-
try {
|
|
131
|
-
const query = JSON.parse(sorting.query);
|
|
132
|
-
if (query)
|
|
133
|
-
sorts.push(query);
|
|
134
|
-
}
|
|
135
|
-
catch (_b) {
|
|
136
|
-
console.error(`query could not be parsed for boost sorting`, sorting);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
// default collection sorting
|
|
142
|
-
if (mode === "collection" && collectionHandle) {
|
|
143
|
-
sorts.push(...mapCollectionPositionSortClause(collectionHandle));
|
|
144
|
-
}
|
|
145
|
-
// default search sorting
|
|
146
|
-
if (mode === "search" || mode === "instant-search") {
|
|
147
|
-
sorts.push("_score");
|
|
148
|
-
}
|
|
149
|
-
return sorts;
|
|
150
|
-
};
|
|
151
|
-
/**
|
|
152
|
-
* Return a sort clause which sorts by position within the given collection.
|
|
153
|
-
*/
|
|
154
|
-
function mapCollectionPositionSortClause(collectionHandle) {
|
|
155
|
-
return [
|
|
156
|
-
{
|
|
157
|
-
"collections.position": {
|
|
158
|
-
order: "asc",
|
|
159
|
-
nested: {
|
|
160
|
-
path: "collections",
|
|
161
|
-
filter: {
|
|
162
|
-
term: {
|
|
163
|
-
"collections.handle.keyword": collectionHandle,
|
|
164
|
-
},
|
|
165
|
-
},
|
|
166
|
-
},
|
|
167
|
-
},
|
|
168
|
-
},
|
|
169
|
-
];
|
|
170
|
-
}
|
|
171
|
-
const buildQuery = (args) => {
|
|
172
|
-
var _a;
|
|
173
|
-
const { curation, sortOption } = args;
|
|
174
|
-
if (!curation ||
|
|
175
|
-
curation.id.includes("global")) {
|
|
176
|
-
return undefined;
|
|
177
|
-
}
|
|
178
|
-
return {
|
|
179
|
-
bool: {
|
|
180
|
-
must_not: [
|
|
181
|
-
{
|
|
182
|
-
nested: {
|
|
183
|
-
path: "curations",
|
|
184
|
-
query: {
|
|
185
|
-
bool: {
|
|
186
|
-
must: [
|
|
187
|
-
{
|
|
188
|
-
term: {
|
|
189
|
-
[`curations.${"collection" === curation.type
|
|
190
|
-
? "collectionHandle"
|
|
191
|
-
: "searchTerm"}.keyword`]: "collection" === curation.type
|
|
192
|
-
? curation.collectionHandle
|
|
193
|
-
: (_a = curation.searchTerm) === null || _a === void 0 ? void 0 : _a.toLowerCase(),
|
|
194
|
-
},
|
|
195
|
-
},
|
|
196
|
-
{
|
|
197
|
-
term: {
|
|
198
|
-
"curations.hidden": true,
|
|
199
|
-
},
|
|
200
|
-
},
|
|
201
|
-
],
|
|
202
|
-
},
|
|
203
|
-
},
|
|
204
|
-
},
|
|
205
|
-
},
|
|
206
|
-
// hide callout when not sorting by _score or collections.position
|
|
207
|
-
...(sortOption &&
|
|
208
|
-
!["_score", "collections.position"].includes(sortOption.field)
|
|
209
|
-
? [
|
|
210
|
-
{
|
|
211
|
-
term: {
|
|
212
|
-
type: "callout",
|
|
213
|
-
},
|
|
214
|
-
},
|
|
215
|
-
]
|
|
216
|
-
: []),
|
|
217
|
-
],
|
|
218
|
-
},
|
|
219
|
-
};
|
|
220
|
-
};
|
|
221
28
|
//# sourceMappingURL=SensorSort.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SensorSort.js","sourceRoot":"","sources":["../../../../src/components/Sensor/SensorSort.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport ReactiveComponent from \"@appbaseio/reactivesearch/lib/components/basic/ReactiveComponent\";\n\nimport { ConfigCuration, ConfigSort } from \"../../types\";\nimport {\n useReactifySearchContext,\n useSortBy,\n useCuration,\n ReactifySearchMode,\n useFlags,\n} from \"../../hooks\";\n\nexport const SensorSort: React.FC = () => {\n const flagsHook = useFlags();\n const { options, config } = useReactifySearchContext();\n const { curation } = useCuration();\n const { sortOption } = useSortBy();\n\n const { sort, query } = React.useMemo(() => {\n return {\n sort: buildSort({\n mode: options.mode,\n market: options.market,\n curation,\n sortOption,\n collectionHandle:\n options.mode === \"collection\" ? options.collectionHandle : undefined,\n }),\n query: buildQuery({\n sortOption,\n curation,\n }),\n };\n }, [options, config, sortOption, curation]);\n\n if (!flagsHook.flags[\"reactify-search:flag_sensor_sort\"]) {\n return null;\n }\n\n return (\n <ReactiveComponent\n componentId=\"SensorSort\"\n customQuery={() => ({\n sort,\n query,\n })}\n />\n );\n};\n\nconst buildSort = (args: {\n mode: ReactifySearchMode;\n market?: string;\n curation?: ConfigCuration;\n sortOption?: ConfigSort;\n collectionHandle?: string;\n}): any[] => {\n const { mode, curation, sortOption, collectionHandle } = args;\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 (mode !== \"instant-search\") {\n if (\n sortOption &&\n ![\"_score\", \"collections.position\"].includes(sortOption.field)\n ) {\n return [{ [sortOption.field]: sortOption.direction }];\n }\n }\n\n const sorts = [];\n\n // collection curation pin sorting\n if (mode === \"collection\" && collectionHandle) {\n if (curation?.collectionHandle) {\n const queries: Array<unknown> = [{\n term: {\n \"curations.collectionHandle.keyword\": curation.collectionHandle,\n },\n }];\n if (args.market) {\n queries.push({\n term: {\n \"curations.markets.keyword\": args.market,\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: queries\n }\n }\n },\n },\n });\n }\n }\n\n // search curation pin sorting\n if (mode === \"search\" || mode === \"instant-search\") {\n if (curation?.searchTerm) {\n const queries: Array<unknown> = [{\n term: {\n \"curations.searchTerm.keyword\": curation.searchTerm.toLowerCase(),\n },\n }];\n if (args.market) {\n queries.push({\n term: {\n \"curations.markets.keyword\": args.market,\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: queries\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) =>\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 < curation.boosting.sortings.length) {\n const sortings = curation.boosting.sortings.sort((a, b) =>\n a.position > b.position ? 1 : -1\n );\n\n for (const sorting of sortings) {\n try {\n const query = JSON.parse(sorting.query);\n if (query) sorts.push(query);\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 (mode === \"collection\" && collectionHandle) {\n sorts.push(...mapCollectionPositionSortClause(collectionHandle));\n }\n\n // default search sorting\n if (mode === \"search\" || mode === \"instant-search\") {\n sorts.push(\"_score\");\n }\n\n return sorts;\n};\n\n/**\n * Return a sort clause which sorts by position within the given collection.\n */\nfunction mapCollectionPositionSortClause(collectionHandle: string) {\n return [\n {\n \"collections.position\": {\n order: \"asc\",\n nested: {\n path: \"collections\",\n filter: {\n term: {\n \"collections.handle.keyword\": collectionHandle,\n },\n },\n },\n },\n },\n ];\n}\n\nconst buildQuery = (args: {\n sortOption?: ConfigSort;\n curation?: ConfigCuration;\n}): Record<string, any> | undefined => {\n const { curation, sortOption } = args;\n\n if (\n !curation ||\n curation.id.includes(\"global\")\n ) {\n return undefined;\n }\n\n return {\n bool: {\n must_not: [\n {\n nested: {\n path: \"curations\",\n query: {\n bool: {\n must: [\n {\n term: {\n [`curations.${\n \"collection\" === curation.type\n ? \"collectionHandle\"\n : \"searchTerm\"\n }.keyword`]:\n \"collection\" === curation.type\n ? curation.collectionHandle\n : curation.searchTerm?.toLowerCase(),\n },\n },\n {\n term: {\n \"curations.hidden\": true,\n },\n },\n ],\n },\n },\n },\n },\n // hide callout when not sorting by _score or collections.position\n ...(sortOption &&\n ![\"_score\", \"collections.position\"].includes(sortOption.field)\n ? [\n {\n term: {\n type: \"callout\",\n },\n },\n ]\n : []),\n ],\n },\n };\n};\n"]}
|
|
1
|
+
{"version":3,"file":"SensorSort.js","sourceRoot":"","sources":["../../../../src/components/Sensor/SensorSort.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,yHAAiG;AAEjG,uCAKqB;AACrB,+CAAyD;AAElD,MAAM,UAAU,GAAa,GAAG,EAAE;IACvC,MAAM,SAAS,GAAG,IAAA,gBAAQ,GAAE,CAAC;IAC7B,MAAM,qBAAqB,GAAG,IAAA,gCAAwB,GAAE,CAAC;IACzD,MAAM,EAAE,UAAU,EAAE,GAAG,IAAA,iBAAS,GAAE,CAAC;IACnC,MAAM,EAAE,UAAU,EAAE,GAAG,IAAA,iBAAS,GAAE,CAAC;IAEnC,MAAM,aAAa,GAAG,IAAA,0BAAkB,EAAC;QACvC,MAAM,EAAE,qBAAqB,CAAC,MAAM;QACpC,QAAQ,EAAE,qBAAqB,CAAC,OAAO;QACvC,UAAU,EAAE,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM;QAC9B,UAAU,EAAE,UAAU;KACvB,CAAC,CAAC;IAEH,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,kCAAkC,CAAC,EAAE;QACxD,OAAO,IAAI,CAAC;KACb;IAED,OAAO,CACL,8BAAC,2BAAiB,oBACZ,aAAa,EACjB,CACH,CAAC;AACJ,CAAC,CAAC;AAtBW,QAAA,UAAU,cAsBrB","sourcesContent":["import React from \"react\";\nimport ReactiveComponent from \"@appbaseio/reactivesearch/lib/components/basic/ReactiveComponent\";\n\nimport {\n useReactifySearchContext,\n useSortBy,\n useFlags,\n useSearch,\n} from \"../../hooks\";\nimport { getPropsSensorSort } from \"../../utility/props\";\n\nexport const SensorSort: React.FC = () => {\n const flagsHook = useFlags();\n const reactifySearchContext = useReactifySearchContext();\n const { sortOption } = useSortBy();\n const { searchTerm } = useSearch();\n\n const reactiveProps = getPropsSensorSort({\n config: reactifySearchContext.config,\n provider: reactifySearchContext.options,\n sortOption: sortOption?.handle,\n searchTerm: searchTerm,\n });\n\n if (!flagsHook.flags[\"reactify-search:flag_sensor_sort\"]) {\n return null;\n }\n\n return (\n <ReactiveComponent\n {...reactiveProps}\n />\n );\n};\n"]}
|
|
@@ -1,7 +1 @@
|
|
|
1
1
|
export * from "./useReactiveBaseProps";
|
|
2
|
-
export * from "./useReactiveFilterListProps";
|
|
3
|
-
export * from "./useReactiveFilterRangeProps";
|
|
4
|
-
export * from "./useReactiveFilterSliderProps";
|
|
5
|
-
export * from "./useReactiveFilterSharedProps";
|
|
6
|
-
export * from "./useReactiveReactProp";
|
|
7
|
-
export * from "./useReactiveReactiveListProps";
|
|
@@ -11,10 +11,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
11
11
|
};
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
13
|
__exportStar(require("./useReactiveBaseProps"), exports);
|
|
14
|
-
__exportStar(require("./useReactiveFilterListProps"), exports);
|
|
15
|
-
__exportStar(require("./useReactiveFilterRangeProps"), exports);
|
|
16
|
-
__exportStar(require("./useReactiveFilterSliderProps"), exports);
|
|
17
|
-
__exportStar(require("./useReactiveFilterSharedProps"), exports);
|
|
18
|
-
__exportStar(require("./useReactiveReactProp"), exports);
|
|
19
|
-
__exportStar(require("./useReactiveReactiveListProps"), exports);
|
|
20
14
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/hooks/reactivesearch/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yDAAuC
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/hooks/reactivesearch/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yDAAuC","sourcesContent":["export * from \"./useReactiveBaseProps\";\n"]}
|
|
@@ -10,7 +10,7 @@ const utility_1 = require("../utility");
|
|
|
10
10
|
const usePagination = (input) => {
|
|
11
11
|
const { track } = (0, hooks_1.useAnalytics)();
|
|
12
12
|
const buildPagePath = react_1.default.useCallback((page) => {
|
|
13
|
-
const currentPath = window.location.pathname;
|
|
13
|
+
const currentPath = typeof window !== "undefined" ? window.location.pathname : "";
|
|
14
14
|
return currentPath.includes("page=")
|
|
15
15
|
? currentPath.replace(/page=\d+/g, `page=${page}`)
|
|
16
16
|
: `${currentPath}${currentPath.includes("?") ? "&" : "?"}page=${page}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePagination.js","sourceRoot":"","sources":["../../../src/hooks/usePagination.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAG1B,oCAAwC;AACxC,wCAAmC;AAE5B,MAAM,aAAa,GAAG,CAC3B,KAAoC,EAsBpC,EAAE;IACF,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,oBAAY,GAAE,CAAC;IAEjC,MAAM,aAAa,GAAG,eAAK,CAAC,WAAW,CAAC,CAAC,IAAY,EAAE,EAAE;QACvD,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"usePagination.js","sourceRoot":"","sources":["../../../src/hooks/usePagination.ts"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\n\nimport { ReactivesearchPaginationProps } from \"../types\";\nimport { useAnalytics } from \"../hooks\";\nimport { debug } from \"../utility\";\n\nexport const usePagination = (\n input: ReactivesearchPaginationProps\n): {\n /** The current page number, indexed from 0 */\n currentPage: number;\n /** The total amount of pages */\n totalPages: number;\n /** The total amount of pages to show within pagination components */\n pagesToShow: Array<number>;\n /** If there is a next page */\n hasNextPage: boolean;\n /** If there is a previous page */\n hasPreviousPage: boolean;\n /** The _actual_ current page number, indexed from 1 */\n actualCurrentPage: number;\n /** Function to build a URL for a specific page number, useful for Href links */\n buildPagePath: (page: number) => string;\n /** Function to change to the next page, if an event is provided the preventDefault() method will be called */\n handleNextPage: (event?: React.SyntheticEvent) => void;\n /** Function to change to the previous page, if an event is provided the preventDefault() method will be called */\n handlePreviousPage: (event?: React.SyntheticEvent) => void;\n /** Function to change to any page, if an event is provided the preventDefault() method will be called */\n handlePageChange: (pageNumber: number, event?: React.SyntheticEvent) => void;\n} => {\n const { track } = useAnalytics();\n\n const buildPagePath = React.useCallback((page: number) => {\n const currentPath = typeof window !== \"undefined\" ? window.location.pathname : \"\";\n\n return currentPath.includes(\"page=\")\n ? currentPath.replace(/page=\\d+/g, `page=${page}`)\n : `${currentPath}${currentPath.includes(\"?\") ? \"&\" : \"?\"}page=${page}`;\n }, []);\n\n const pagesToShow = React.useMemo(\n () => getPages(input.pages, input.totalPages, input.currentPage),\n [input.pages, input.totalPages, input.currentPage]\n );\n\n // default input.currentPage is zero-indexed, actualCurrentPage is one-indexed\n const actualCurrentPage = React.useMemo(\n () => input.currentPage + 1,\n [input.currentPage]\n );\n\n const hasNextPage = React.useMemo(\n () => actualCurrentPage < input.totalPages,\n [actualCurrentPage, input.totalPages]\n );\n\n const hasPreviousPage = React.useMemo(\n () => actualCurrentPage > 1,\n [actualCurrentPage]\n );\n\n const hasPage = React.useCallback(\n (pageNumber: number) => {\n return pageNumber >= 0 && pageNumber < input.totalPages;\n },\n [input.totalPages]\n );\n\n const handlePageChange = React.useCallback<\n ReturnType<typeof usePagination>[\"handlePageChange\"]\n >(\n (pageNumber, event) => {\n debug.log(\"usePagination\", \"handlePageChange[pageNumber]\", pageNumber);\n event?.preventDefault();\n if (!hasPage(pageNumber)) {\n return;\n }\n input.setPage(pageNumber);\n track({\n eventName: \"paginationChange\",\n payload: {\n page: pageNumber,\n source: window.location.pathname.includes(\"/search\")\n ? \"search\"\n : \"collection\",\n },\n });\n },\n [input.setPage, track]\n );\n\n const handleNextPage = React.useCallback<\n ReturnType<typeof usePagination>[\"handleNextPage\"]\n >(\n (event) => {\n debug.log(\"usePagination\", \"handleNextPage\", input.currentPage + 1);\n handlePageChange(input.currentPage + 1, event);\n },\n [hasNextPage, input.currentPage, handlePageChange]\n );\n\n const handlePreviousPage = React.useCallback<\n ReturnType<typeof usePagination>[\"handlePreviousPage\"]\n >(\n (event) => {\n debug.log(\"usePagination\", \"handlePreviousPage\", input.currentPage - 1);\n handlePageChange(input.currentPage - 1, event);\n },\n [hasPreviousPage, input.currentPage, handlePageChange]\n );\n\n return React.useMemo(\n () => ({\n currentPage: input.currentPage,\n totalPages: input.totalPages,\n pagesToShow,\n hasNextPage,\n buildPagePath,\n hasPreviousPage,\n actualCurrentPage,\n handleNextPage,\n handlePreviousPage,\n handlePageChange,\n }),\n [\n input.currentPage,\n input.totalPages,\n pagesToShow,\n hasNextPage,\n buildPagePath,\n hasPreviousPage,\n actualCurrentPage,\n handleNextPage,\n handlePreviousPage,\n handlePageChange,\n ]\n );\n};\n\n// get a list of pages to display buttons for\n// @todo this is super hacky and needs to be cleaned up\nconst getPages = (pages: number, totalPages: number, currentPage: number) => {\n const pagesToShow = pages > totalPages ? totalPages : pages;\n const buffer = Math.floor(pagesToShow / 2);\n let list: number[] = [];\n let start = 0;\n if (totalPages <= 5 || currentPage < buffer + 1) {\n start = 0;\n } else {\n if (totalPages - buffer <= currentPage) {\n start =\n currentPage + 1 === totalPages\n ? currentPage - (pagesToShow - 1)\n : currentPage - (buffer + buffer / 2);\n } else {\n start = currentPage - buffer;\n }\n }\n Array.apply(null, Array(pagesToShow)).map((item, index) => {\n list.push(start + index);\n });\n return list;\n};\n"]}
|
|
@@ -7,32 +7,29 @@ exports.useSortBy = void 0;
|
|
|
7
7
|
const react_1 = __importDefault(require("react"));
|
|
8
8
|
const hooks_1 = require("../hooks");
|
|
9
9
|
const utility_1 = require("../utility");
|
|
10
|
+
const sortOption_1 = require("../utility/sortOption");
|
|
10
11
|
const useSortBy = () => {
|
|
11
|
-
const
|
|
12
|
+
const reactifySearchContext = (0, hooks_1.useReactifySearchContext)();
|
|
12
13
|
const { track } = (0, hooks_1.useAnalytics)();
|
|
13
14
|
const sortOptions = react_1.default.useMemo(() => {
|
|
14
|
-
return
|
|
15
|
-
.
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
const bInt = typeof b.position === "string"
|
|
20
|
-
? parseInt(b.position, 10)
|
|
21
|
-
: b.position;
|
|
22
|
-
return aInt - bInt;
|
|
23
|
-
})
|
|
24
|
-
.filter(({ visibility }) => ["all", options.mode].includes(visibility));
|
|
25
|
-
}, [options.mode, config]);
|
|
15
|
+
return (0, sortOption_1.getSortOptions)({
|
|
16
|
+
provider: reactifySearchContext.options,
|
|
17
|
+
config: reactifySearchContext.config,
|
|
18
|
+
});
|
|
19
|
+
}, [reactifySearchContext.options, reactifySearchContext.config]);
|
|
26
20
|
const sortOption = react_1.default.useMemo(() => {
|
|
27
|
-
return (
|
|
28
|
-
|
|
29
|
-
|
|
21
|
+
return (0, sortOption_1.getSortOption)({
|
|
22
|
+
provider: reactifySearchContext.options,
|
|
23
|
+
config: reactifySearchContext.config,
|
|
24
|
+
sortOption: reactifySearchContext.sortby.sortOption,
|
|
25
|
+
});
|
|
26
|
+
}, [reactifySearchContext.options, reactifySearchContext.config, reactifySearchContext.sortby.sortOption]);
|
|
30
27
|
const setSortOption = react_1.default.useCallback((sortOptionHandle, ignoreHistoryState = false) => {
|
|
31
28
|
if (typeof window === "undefined") {
|
|
32
29
|
return;
|
|
33
30
|
}
|
|
34
31
|
utility_1.debug.log("useSortBy", "setSortOption[sortOptionHandle]", sortOptionHandle);
|
|
35
|
-
sortby.setSortOption(sortOptionHandle);
|
|
32
|
+
reactifySearchContext.sortby.setSortOption(sortOptionHandle);
|
|
36
33
|
if (!ignoreHistoryState) {
|
|
37
34
|
const url = new URL(window.location.href);
|
|
38
35
|
if (url.searchParams.has("sort")) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSortBy.js","sourceRoot":"","sources":["../../../src/hooks/useSortBy.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAG1B,oCAAkE;AAClE,wCAAmC;
|
|
1
|
+
{"version":3,"file":"useSortBy.js","sourceRoot":"","sources":["../../../src/hooks/useSortBy.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAG1B,oCAAkE;AAClE,wCAAmC;AACnC,sDAAsE;AAE/D,MAAM,SAAS,GAAG,GAUvB,EAAE;IACF,MAAM,qBAAqB,GAAG,IAAA,gCAAwB,GAAE,CAAC;IACzD,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,oBAAY,GAAE,CAAC;IAEjC,MAAM,WAAW,GAAG,eAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACrC,OAAO,IAAA,2BAAc,EAAC;YACpB,QAAQ,EAAE,qBAAqB,CAAC,OAAO;YACvC,MAAM,EAAE,qBAAqB,CAAC,MAAM;SACrC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,qBAAqB,CAAC,OAAO,EAAE,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC;IAElE,MAAM,UAAU,GAAG,eAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACpC,OAAO,IAAA,0BAAa,EAAC;YACnB,QAAQ,EAAE,qBAAqB,CAAC,OAAO;YACvC,MAAM,EAAE,qBAAqB,CAAC,MAAM;YACpC,UAAU,EAAE,qBAAqB,CAAC,MAAM,CAAC,UAAU;SACpD,CAAC,CAAA;IACJ,CAAC,EAAE,CAAC,qBAAqB,CAAC,OAAO,EAAE,qBAAqB,CAAC,MAAM,EAAE,qBAAqB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IAE3G,MAAM,aAAa,GAAG,eAAK,CAAC,WAAW,CACrC,CAAC,gBAAwB,EAAE,kBAAkB,GAAG,KAAK,EAAE,EAAE;QACvD,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;YACjC,OAAO;SACR;QAED,eAAK,CAAC,GAAG,CACP,WAAW,EACX,iCAAiC,EACjC,gBAAgB,CACjB,CAAC;QAEF,qBAAqB,CAAC,MAAM,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;QAE7D,IAAI,CAAC,kBAAkB,EAAE;YACvB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;gBAChC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;aAChD;iBAAM;gBACL,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;aACnD;YACD,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;SAClD;QAED,KAAK,CAAC;YACJ,SAAS,EAAE,YAAY;YACvB,OAAO,EAAE;gBACP,IAAI,EAAE,gBAAgB;aACvB;SACF,CAAC,CAAC;IACL,CAAC,EACD,CAAC,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAC5D,CAAC;IAEF,eAAK,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;IAClD,eAAK,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;IAEpD,OAAO;QACL,WAAW;QACX,UAAU;QACV,aAAa;KACd,CAAC;AACJ,CAAC,CAAC;AAvEW,QAAA,SAAS,aAuEpB","sourcesContent":["import React from \"react\";\n\nimport { ConfigSort } from \"../types\";\nimport { useAnalytics, useReactifySearchContext } from \"../hooks\";\nimport { debug } from \"../utility\";\nimport { getSortOption, getSortOptions } from \"../utility/sortOption\";\n\nexport const useSortBy = (): {\n /** The currently selected sort option */\n sortOption?: ConfigSort;\n /** All of the available sort options */\n sortOptions: Array<ConfigSort>;\n /** Function for changing the current sort option */\n setSortOption: (\n sortOptionHandle: string,\n ignoreHistoryState?: boolean\n ) => void;\n} => {\n const reactifySearchContext = useReactifySearchContext();\n const { track } = useAnalytics();\n\n const sortOptions = React.useMemo(() => {\n return getSortOptions({\n provider: reactifySearchContext.options,\n config: reactifySearchContext.config,\n });\n }, [reactifySearchContext.options, reactifySearchContext.config]);\n\n const sortOption = React.useMemo(() => {\n return getSortOption({\n provider: reactifySearchContext.options,\n config: reactifySearchContext.config,\n sortOption: reactifySearchContext.sortby.sortOption,\n })\n }, [reactifySearchContext.options, reactifySearchContext.config, reactifySearchContext.sortby.sortOption]);\n\n const setSortOption = React.useCallback(\n (sortOptionHandle: string, ignoreHistoryState = false) => {\n if (typeof window === \"undefined\") {\n return;\n }\n\n debug.log(\n \"useSortBy\",\n \"setSortOption[sortOptionHandle]\",\n sortOptionHandle\n );\n\n reactifySearchContext.sortby.setSortOption(sortOptionHandle);\n\n if (!ignoreHistoryState) {\n const url = new URL(window.location.href);\n if (url.searchParams.has(\"sort\")) {\n url.searchParams.set(\"sort\", sortOptionHandle);\n } else {\n url.searchParams.append(\"sort\", sortOptionHandle);\n }\n window.history.pushState({}, \"\", url.toString());\n }\n\n track({\n eventName: \"sortChange\",\n payload: {\n type: sortOptionHandle,\n },\n });\n },\n [typeof window === \"undefined\" ? \"\" : window.location.href]\n );\n\n debug.hook(\"useSortBy\", \"sortOption\", sortOption);\n debug.hook(\"useSortBy\", \"sortOptions\", sortOptions);\n\n return {\n sortOptions,\n sortOption,\n setSortOption,\n };\n};\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ReactifySearchProviderProps } from "../components";
|
|
2
|
+
import { Config, ConfigCuration } from "../types";
|
|
3
|
+
export declare const getCuration: (options: {
|
|
4
|
+
provider: ReactifySearchProviderProps;
|
|
5
|
+
config: Config;
|
|
6
|
+
searchTerm?: string;
|
|
7
|
+
}) => ConfigCuration | undefined;
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getCuration = void 0;
|
|
4
|
+
const getCuration = (options) => {
|
|
5
|
+
var _a;
|
|
6
|
+
const handleOrSearchTerm = options.provider.mode === "collection" ? options.provider.collectionHandle : (_a = options.searchTerm) !== null && _a !== void 0 ? _a : "";
|
|
7
|
+
const normalisedHandleOrSearchTerm = handleOrSearchTerm
|
|
8
|
+
.toLowerCase()
|
|
9
|
+
.trim();
|
|
10
|
+
const globalCuration = options.config.curations.find((curation) => {
|
|
11
|
+
if (options.provider.mode === "search") {
|
|
12
|
+
if (options.provider.market) {
|
|
13
|
+
return curation.id === `global_${options.provider.market}_search`;
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
return curation.id === "global_search";
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
if (options.provider.mode === "instant-search") {
|
|
20
|
+
if (options.provider.market) {
|
|
21
|
+
return curation.id === `global_${options.provider.market}_search`;
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
return curation.id === "global_search";
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
if (options.provider.mode === "collection") {
|
|
28
|
+
if (options.provider.market) {
|
|
29
|
+
return curation.id === `global_${options.provider.market}_collection`;
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
return curation.id === "global_collection";
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return false;
|
|
36
|
+
});
|
|
37
|
+
const curation = options.config.curations.find((curation) => {
|
|
38
|
+
var _a, _b;
|
|
39
|
+
if (options.provider.market) {
|
|
40
|
+
if (curation.markets && !curation.markets.includes(options.provider.market)) {
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
const normalisedSearchTerm = (_a = curation.searchTerm) === null || _a === void 0 ? void 0 : _a.toLowerCase().trim();
|
|
45
|
+
const normalisedCollectionHandle = (_b = curation.collectionHandle) === null || _b === void 0 ? void 0 : _b.toLowerCase().trim();
|
|
46
|
+
if ("instant-search" === options.provider.mode) {
|
|
47
|
+
return ("search" === curation.type &&
|
|
48
|
+
normalisedHandleOrSearchTerm === normalisedSearchTerm);
|
|
49
|
+
}
|
|
50
|
+
if ("search" === options.provider.mode) {
|
|
51
|
+
return ("search" === curation.type &&
|
|
52
|
+
normalisedHandleOrSearchTerm === normalisedSearchTerm);
|
|
53
|
+
}
|
|
54
|
+
if ("collection" === options.provider.mode) {
|
|
55
|
+
return ("collection" === curation.type &&
|
|
56
|
+
normalisedHandleOrSearchTerm === normalisedCollectionHandle);
|
|
57
|
+
}
|
|
58
|
+
return false;
|
|
59
|
+
});
|
|
60
|
+
const addGlobalBoosting = (curation) => {
|
|
61
|
+
if (!globalCuration) {
|
|
62
|
+
return curation;
|
|
63
|
+
}
|
|
64
|
+
const curationIsCollection = curation.type === "collection";
|
|
65
|
+
if (!curationIsCollection) {
|
|
66
|
+
return curation;
|
|
67
|
+
}
|
|
68
|
+
const curationHasRules = !!curation.boosting.groupings.length ||
|
|
69
|
+
!!curation.boosting.sortings.length;
|
|
70
|
+
if (curationHasRules) {
|
|
71
|
+
return curation;
|
|
72
|
+
}
|
|
73
|
+
const curationWithGlobalBoosting = Object.assign(Object.assign({}, curation), { boosting: globalCuration.boosting });
|
|
74
|
+
return curationWithGlobalBoosting;
|
|
75
|
+
};
|
|
76
|
+
if (curation) {
|
|
77
|
+
return addGlobalBoosting(curation);
|
|
78
|
+
}
|
|
79
|
+
if (globalCuration) {
|
|
80
|
+
return globalCuration;
|
|
81
|
+
}
|
|
82
|
+
return undefined;
|
|
83
|
+
};
|
|
84
|
+
exports.getCuration = getCuration;
|
|
85
|
+
//# sourceMappingURL=curation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"curation.js","sourceRoot":"","sources":["../../../src/utility/curation.ts"],"names":[],"mappings":"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","sourcesContent":["import { ReactifySearchProviderProps } from \"../components\";\nimport { Config, ConfigCuration } from \"../types\";\n\nexport const getCuration = (options: {\n provider: ReactifySearchProviderProps;\n config: Config;\n searchTerm?: string;\n}) => {\n const handleOrSearchTerm = options.provider.mode === \"collection\" ? options.provider.collectionHandle : options.searchTerm ?? \"\";\n\n const normalisedHandleOrSearchTerm = handleOrSearchTerm\n .toLowerCase()\n .trim();\n\n const globalCuration = options.config.curations.find((curation) => {\n if (options.provider.mode === \"search\") {\n if (options.provider.market) {\n return curation.id === `global_${options.provider.market}_search`;\n } else {\n return curation.id === \"global_search\";\n }\n }\n if (options.provider.mode === \"instant-search\") {\n if (options.provider.market) {\n return curation.id === `global_${options.provider.market}_search`;\n } else {\n return curation.id === \"global_search\";\n }\n }\n if (options.provider.mode === \"collection\") {\n if (options.provider.market) {\n return curation.id === `global_${options.provider.market}_collection`;\n } else {\n return curation.id === \"global_collection\";\n }\n }\n return false;\n });\n\n const curation = options.config.curations.find((curation) => {\n if (options.provider.market) {\n if (curation.markets && !curation.markets.includes(options.provider.market)) {\n return false;\n }\n }\n\n const normalisedSearchTerm = curation.searchTerm?.toLowerCase().trim();\n const normalisedCollectionHandle = curation.collectionHandle\n ?.toLowerCase()\n .trim();\n\n if (\"instant-search\" === options.provider.mode) {\n return (\n \"search\" === curation.type &&\n normalisedHandleOrSearchTerm === normalisedSearchTerm\n );\n }\n\n if (\"search\" === options.provider.mode) {\n return (\n \"search\" === curation.type &&\n normalisedHandleOrSearchTerm === normalisedSearchTerm\n );\n }\n\n if (\"collection\" === options.provider.mode) {\n return (\n \"collection\" === curation.type &&\n normalisedHandleOrSearchTerm === normalisedCollectionHandle\n );\n }\n\n return false;\n });\n\n const addGlobalBoosting = (curation: ConfigCuration) => {\n if (!globalCuration) {\n return curation;\n }\n\n const curationIsCollection = curation.type === \"collection\";\n if (!curationIsCollection) {\n return curation;\n }\n\n const curationHasRules =\n !!curation.boosting.groupings.length ||\n !!curation.boosting.sortings.length;\n\n if (curationHasRules) {\n return curation;\n }\n\n const curationWithGlobalBoosting = {\n ...curation,\n boosting: globalCuration.boosting,\n } as ConfigCuration;\n\n return curationWithGlobalBoosting;\n };\n\n if (curation) {\n return addGlobalBoosting(curation);\n }\n\n if (globalCuration) {\n return globalCuration;\n }\n\n return undefined;\n}"]}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getFilterStack = void 0;
|
|
4
|
+
const getFilterStack = (options) => {
|
|
5
|
+
// select filters by type
|
|
6
|
+
const matchingFilterss = options.config.filters.filter((filter) => filter.type === options.provider.mode);
|
|
7
|
+
// select filter stack by handle if provided
|
|
8
|
+
if (options.provider.filtersHandle) {
|
|
9
|
+
const matchingFilters = matchingFilterss.find((filterStack) => options.provider.filtersHandle === filterStack.handle);
|
|
10
|
+
if (matchingFilters) {
|
|
11
|
+
return matchingFilters;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
// select filter stack by collection if provided
|
|
15
|
+
if (options.provider.mode === "collection" && options.provider.collectionHandle) {
|
|
16
|
+
const matchingFilters = matchingFilterss.find((filterStack) => { var _a; return (_a = filterStack.collections) === null || _a === void 0 ? void 0 : _a.includes(options.provider.mode === "collection" ? options.provider.collectionHandle : ""); });
|
|
17
|
+
if (matchingFilters) {
|
|
18
|
+
return matchingFilters;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
// select filter with "default" handle
|
|
22
|
+
let matchingFilters = matchingFilterss.find((filterStack) => filterStack.handle === "default");
|
|
23
|
+
if (matchingFilters) {
|
|
24
|
+
return matchingFilters;
|
|
25
|
+
}
|
|
26
|
+
// select any filter with "default" handle
|
|
27
|
+
matchingFilters = options.config.filters.find((filterStack) => filterStack.handle === "default");
|
|
28
|
+
if (matchingFilters) {
|
|
29
|
+
return matchingFilters;
|
|
30
|
+
}
|
|
31
|
+
// select any available filter as a last resort
|
|
32
|
+
matchingFilters = options.config.filters[0];
|
|
33
|
+
return matchingFilters;
|
|
34
|
+
};
|
|
35
|
+
exports.getFilterStack = getFilterStack;
|
|
36
|
+
//# sourceMappingURL=filters.js.map
|