instantsearch.js 4.59.0 → 4.61.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/cjs/components/SearchBox/SearchBox.js +2 -2
- package/cjs/connectors/breadcrumb/connectBreadcrumb.js +18 -5
- package/cjs/connectors/dynamic-widgets/connectDynamicWidgets.js +2 -3
- package/cjs/connectors/hierarchical-menu/connectHierarchicalMenu.js +17 -6
- package/cjs/connectors/menu/connectMenu.js +18 -6
- package/cjs/connectors/numeric-menu/connectNumericMenu.js +18 -5
- package/cjs/connectors/rating-menu/connectRatingMenu.js +19 -6
- package/cjs/connectors/refinement-list/connectRefinementList.js +17 -6
- package/cjs/lib/InstantSearch.js +1 -0
- package/cjs/lib/utils/hydrateSearchClient.js +126 -0
- package/cjs/lib/utils/index.js +11 -0
- package/cjs/lib/version.js +1 -1
- package/cjs/widgets/search-box/defaultTemplates.js +9 -3
- package/dist/instantsearch.development.d.ts +13 -3
- package/dist/instantsearch.development.js +277 -95
- package/dist/instantsearch.development.js.map +1 -1
- package/dist/instantsearch.production.d.ts +13 -3
- package/dist/instantsearch.production.min.d.ts +13 -3
- package/dist/instantsearch.production.min.js +2 -2
- package/dist/instantsearch.production.min.js.map +1 -1
- package/es/components/SearchBox/SearchBox.js +2 -2
- package/es/connectors/breadcrumb/connectBreadcrumb.js +18 -5
- package/es/connectors/dynamic-widgets/connectDynamicWidgets.d.ts +12 -2
- package/es/connectors/dynamic-widgets/connectDynamicWidgets.js +2 -3
- package/es/connectors/hierarchical-menu/connectHierarchicalMenu.js +17 -6
- package/es/connectors/menu/connectMenu.js +18 -6
- package/es/connectors/numeric-menu/connectNumericMenu.js +18 -5
- package/es/connectors/rating-menu/connectRatingMenu.d.ts +1 -1
- package/es/connectors/rating-menu/connectRatingMenu.js +19 -6
- package/es/connectors/refinement-list/connectRefinementList.js +17 -6
- package/es/lib/InstantSearch.js +2 -1
- package/es/lib/utils/hydrateSearchClient.d.ts +5 -0
- package/es/lib/utils/hydrateSearchClient.js +120 -0
- package/es/lib/utils/index.d.ts +1 -0
- package/es/lib/utils/index.js +1 -0
- package/es/lib/utils/render-args.d.ts +4 -4
- package/es/lib/version.d.ts +1 -1
- package/es/lib/version.js +1 -1
- package/es/widgets/search-box/defaultTemplates.js +10 -3
- package/package.json +5 -5
|
@@ -184,7 +184,7 @@ var SearchBox = /*#__PURE__*/function (_Component) {
|
|
|
184
184
|
rootProps: {
|
|
185
185
|
className: cssClasses.submit,
|
|
186
186
|
type: 'submit',
|
|
187
|
-
title: 'Submit the search query
|
|
187
|
+
title: 'Submit the search query',
|
|
188
188
|
hidden: !showSubmit
|
|
189
189
|
},
|
|
190
190
|
templates: templates,
|
|
@@ -197,7 +197,7 @@ var SearchBox = /*#__PURE__*/function (_Component) {
|
|
|
197
197
|
rootProps: {
|
|
198
198
|
className: cssClasses.reset,
|
|
199
199
|
type: 'reset',
|
|
200
|
-
title: 'Clear the search query
|
|
200
|
+
title: 'Clear the search query',
|
|
201
201
|
hidden: !(showReset && this.state.query.trim() && !isSearchStalled)
|
|
202
202
|
},
|
|
203
203
|
templates: templates,
|
|
@@ -6,6 +6,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.default = void 0;
|
|
8
8
|
var _utils = require("../../lib/utils");
|
|
9
|
+
var _excluded = ["hierarchicalMenu"];
|
|
10
|
+
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
11
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
9
12
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
10
13
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
11
14
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
@@ -121,12 +124,9 @@ var connectBreadcrumb = function connectBreadcrumb(renderFn) {
|
|
|
121
124
|
getWidgetUiState: function getWidgetUiState(uiState, _ref3) {
|
|
122
125
|
var searchParameters = _ref3.searchParameters;
|
|
123
126
|
var path = searchParameters.getHierarchicalFacetBreadcrumb(hierarchicalFacetName);
|
|
124
|
-
|
|
125
|
-
return uiState;
|
|
126
|
-
}
|
|
127
|
-
return _objectSpread(_objectSpread({}, uiState), {}, {
|
|
127
|
+
return removeEmptyRefinementsFromUiState(_objectSpread(_objectSpread({}, uiState), {}, {
|
|
128
128
|
hierarchicalMenu: _objectSpread(_objectSpread({}, uiState.hierarchicalMenu), {}, _defineProperty({}, hierarchicalFacetName, path))
|
|
129
|
-
});
|
|
129
|
+
}));
|
|
130
130
|
},
|
|
131
131
|
getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref4) {
|
|
132
132
|
var uiState = _ref4.uiState;
|
|
@@ -177,5 +177,18 @@ function shiftItemsValues(array) {
|
|
|
177
177
|
};
|
|
178
178
|
});
|
|
179
179
|
}
|
|
180
|
+
function removeEmptyRefinementsFromUiState(indexUiState) {
|
|
181
|
+
var hierarchicalMenu = indexUiState.hierarchicalMenu,
|
|
182
|
+
indexUiStateBase = _objectWithoutProperties(indexUiState, _excluded);
|
|
183
|
+
if (!hierarchicalMenu) {
|
|
184
|
+
return indexUiState;
|
|
185
|
+
}
|
|
186
|
+
var connectorUiState = Object.keys(hierarchicalMenu).reduce(function (acc, key) {
|
|
187
|
+
return _objectSpread(_objectSpread({}, acc), hierarchicalMenu[key].length > 0 ? _defineProperty({}, key, hierarchicalMenu[key]) : {});
|
|
188
|
+
}, {});
|
|
189
|
+
return _objectSpread(_objectSpread({}, indexUiStateBase), Object.keys(connectorUiState).length > 0 ? {
|
|
190
|
+
hierarchicalMenu: connectorUiState
|
|
191
|
+
} : {});
|
|
192
|
+
}
|
|
180
193
|
var _default = connectBreadcrumb;
|
|
181
194
|
exports.default = _default;
|
|
@@ -35,8 +35,8 @@ var connectDynamicWidgets = function connectDynamicWidgets(renderFn) {
|
|
|
35
35
|
}))) {
|
|
36
36
|
throw new Error(withUsage('The `widgets` option expects an array of widgets.'));
|
|
37
37
|
}
|
|
38
|
-
if (!
|
|
39
|
-
throw new Error(withUsage("The `facets` option only accepts
|
|
38
|
+
if (!Array.isArray(facets)) {
|
|
39
|
+
throw new Error(withUsage("The `facets` option only accepts an array of facets, you passed ".concat(JSON.stringify(facets))));
|
|
40
40
|
}
|
|
41
41
|
var localWidgets = new Map();
|
|
42
42
|
return {
|
|
@@ -114,7 +114,6 @@ var connectDynamicWidgets = function connectDynamicWidgets(renderFn) {
|
|
|
114
114
|
unmountFn();
|
|
115
115
|
},
|
|
116
116
|
getWidgetSearchParameters: function getWidgetSearchParameters(state) {
|
|
117
|
-
// broadening the scope of facets to avoid conflict between never and *
|
|
118
117
|
return facets.reduce(function (acc, curr) {
|
|
119
118
|
return acc.addFacet(curr);
|
|
120
119
|
}, state.setQueryParameters({
|
|
@@ -6,7 +6,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.default = void 0;
|
|
8
8
|
var _utils = require("../../lib/utils");
|
|
9
|
-
var _excluded = ["name", "escapedValue", "data", "path"]
|
|
9
|
+
var _excluded = ["name", "escapedValue", "data", "path"],
|
|
10
|
+
_excluded2 = ["hierarchicalMenu"];
|
|
10
11
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
11
12
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
12
13
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
@@ -205,12 +206,9 @@ var connectHierarchicalMenu = function connectHierarchicalMenu(renderFn) {
|
|
|
205
206
|
getWidgetUiState: function getWidgetUiState(uiState, _ref5) {
|
|
206
207
|
var searchParameters = _ref5.searchParameters;
|
|
207
208
|
var path = searchParameters.getHierarchicalFacetBreadcrumb(hierarchicalFacetName);
|
|
208
|
-
|
|
209
|
-
return uiState;
|
|
210
|
-
}
|
|
211
|
-
return _objectSpread(_objectSpread({}, uiState), {}, {
|
|
209
|
+
return removeEmptyRefinementsFromUiState(_objectSpread(_objectSpread({}, uiState), {}, {
|
|
212
210
|
hierarchicalMenu: _objectSpread(_objectSpread({}, uiState.hierarchicalMenu), {}, _defineProperty({}, hierarchicalFacetName, path))
|
|
213
|
-
});
|
|
211
|
+
}));
|
|
214
212
|
},
|
|
215
213
|
getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref6) {
|
|
216
214
|
var uiState = _ref6.uiState;
|
|
@@ -243,5 +241,18 @@ var connectHierarchicalMenu = function connectHierarchicalMenu(renderFn) {
|
|
|
243
241
|
};
|
|
244
242
|
};
|
|
245
243
|
};
|
|
244
|
+
function removeEmptyRefinementsFromUiState(indexUiState) {
|
|
245
|
+
var hierarchicalMenu = indexUiState.hierarchicalMenu,
|
|
246
|
+
indexUiStateBase = _objectWithoutProperties(indexUiState, _excluded2);
|
|
247
|
+
if (!hierarchicalMenu) {
|
|
248
|
+
return indexUiState;
|
|
249
|
+
}
|
|
250
|
+
var connectorUiState = Object.keys(hierarchicalMenu).reduce(function (acc, key) {
|
|
251
|
+
return _objectSpread(_objectSpread({}, acc), hierarchicalMenu[key].length > 0 ? _defineProperty({}, key, hierarchicalMenu[key]) : {});
|
|
252
|
+
}, {});
|
|
253
|
+
return _objectSpread(_objectSpread({}, indexUiStateBase), Object.keys(connectorUiState).length > 0 ? {
|
|
254
|
+
hierarchicalMenu: connectorUiState
|
|
255
|
+
} : {});
|
|
256
|
+
}
|
|
246
257
|
var _default = connectHierarchicalMenu;
|
|
247
258
|
exports.default = _default;
|
|
@@ -5,7 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _utils = require("../../lib/utils");
|
|
8
|
-
var _excluded = ["name", "escapedValue", "path"]
|
|
8
|
+
var _excluded = ["name", "escapedValue", "path"],
|
|
9
|
+
_excluded2 = ["menu"];
|
|
9
10
|
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
10
11
|
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
11
12
|
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
@@ -177,12 +178,9 @@ var connectMenu = function connectMenu(renderFn) {
|
|
|
177
178
|
var _searchParameters$get = searchParameters.getHierarchicalFacetBreadcrumb(attribute),
|
|
178
179
|
_searchParameters$get2 = _slicedToArray(_searchParameters$get, 1),
|
|
179
180
|
value = _searchParameters$get2[0];
|
|
180
|
-
|
|
181
|
-
return uiState;
|
|
182
|
-
}
|
|
183
|
-
return _objectSpread(_objectSpread({}, uiState), {}, {
|
|
181
|
+
return removeEmptyRefinementsFromUiState(_objectSpread(_objectSpread({}, uiState), {}, {
|
|
184
182
|
menu: _objectSpread(_objectSpread({}, uiState.menu), {}, _defineProperty({}, attribute, value))
|
|
185
|
-
});
|
|
183
|
+
}));
|
|
186
184
|
},
|
|
187
185
|
getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref5) {
|
|
188
186
|
var uiState = _ref5.uiState;
|
|
@@ -208,5 +206,19 @@ var connectMenu = function connectMenu(renderFn) {
|
|
|
208
206
|
};
|
|
209
207
|
};
|
|
210
208
|
};
|
|
209
|
+
function removeEmptyRefinementsFromUiState(indexUiState) {
|
|
210
|
+
var menu = indexUiState.menu,
|
|
211
|
+
indexUiStateBase = _objectWithoutProperties(indexUiState, _excluded2);
|
|
212
|
+
if (!menu) {
|
|
213
|
+
return indexUiState;
|
|
214
|
+
}
|
|
215
|
+
var connectorUiState = Object.keys(menu).reduce(function (acc, key) {
|
|
216
|
+
var _menu$key;
|
|
217
|
+
return _objectSpread(_objectSpread({}, acc), ((_menu$key = menu[key]) === null || _menu$key === void 0 ? void 0 : _menu$key.length) > 0 ? _defineProperty({}, key, menu[key]) : {});
|
|
218
|
+
}, {});
|
|
219
|
+
return _objectSpread(_objectSpread({}, indexUiStateBase), Object.keys(connectorUiState).length > 0 ? {
|
|
220
|
+
menu: connectorUiState
|
|
221
|
+
} : {});
|
|
222
|
+
}
|
|
211
223
|
var _default = connectMenu;
|
|
212
224
|
exports.default = _default;
|
|
@@ -5,7 +5,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _utils = require("../../lib/utils");
|
|
8
|
+
var _excluded = ["numericMenu"];
|
|
8
9
|
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
10
|
+
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
11
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
9
12
|
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
10
13
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
11
14
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
@@ -101,12 +104,9 @@ var connectNumericMenu = function connectNumericMenu(renderFn) {
|
|
|
101
104
|
}
|
|
102
105
|
var min = values['>='] && values['>='][0] || '';
|
|
103
106
|
var max = values['<='] && values['<='][0] || '';
|
|
104
|
-
|
|
105
|
-
return uiState;
|
|
106
|
-
}
|
|
107
|
-
return _objectSpread(_objectSpread({}, uiState), {}, {
|
|
107
|
+
return removeEmptyRefinementsFromUiState(_objectSpread(_objectSpread({}, uiState), {}, {
|
|
108
108
|
numericMenu: _objectSpread(_objectSpread({}, uiState.numericMenu), {}, _defineProperty({}, attribute, "".concat(min, ":").concat(max)))
|
|
109
|
-
});
|
|
109
|
+
}));
|
|
110
110
|
},
|
|
111
111
|
getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref6) {
|
|
112
112
|
var uiState = _ref6.uiState;
|
|
@@ -268,5 +268,18 @@ function getRefinedState(state, attribute, facetValue) {
|
|
|
268
268
|
function hasNumericRefinement(currentRefinements, operator, value) {
|
|
269
269
|
return currentRefinements[operator] !== undefined && currentRefinements[operator].includes(value);
|
|
270
270
|
}
|
|
271
|
+
function removeEmptyRefinementsFromUiState(indexUiState) {
|
|
272
|
+
var numericMenu = indexUiState.numericMenu,
|
|
273
|
+
indexUiStateBase = _objectWithoutProperties(indexUiState, _excluded);
|
|
274
|
+
if (!numericMenu) {
|
|
275
|
+
return indexUiState;
|
|
276
|
+
}
|
|
277
|
+
var connectorUiState = Object.keys(numericMenu).reduce(function (acc, key) {
|
|
278
|
+
return _objectSpread(_objectSpread({}, acc), numericMenu[key] !== ':' ? _defineProperty({}, key, numericMenu[key]) : {});
|
|
279
|
+
}, {});
|
|
280
|
+
return _objectSpread(_objectSpread({}, indexUiStateBase), Object.keys(connectorUiState).length > 0 ? {
|
|
281
|
+
numericMenu: connectorUiState
|
|
282
|
+
} : {});
|
|
283
|
+
}
|
|
271
284
|
var _default = connectNumericMenu;
|
|
272
285
|
exports.default = _default;
|
|
@@ -6,6 +6,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.default = void 0;
|
|
8
8
|
var _utils = require("../../lib/utils");
|
|
9
|
+
var _excluded = ["ratingMenu"];
|
|
10
|
+
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
11
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
9
12
|
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
10
13
|
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
11
14
|
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
@@ -262,12 +265,9 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
|
|
|
262
265
|
getWidgetUiState: function getWidgetUiState(uiState, _ref7) {
|
|
263
266
|
var searchParameters = _ref7.searchParameters;
|
|
264
267
|
var value = _getRefinedStar(searchParameters);
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
}
|
|
268
|
-
return _objectSpread(_objectSpread({}, uiState), {}, {
|
|
269
|
-
ratingMenu: _objectSpread(_objectSpread({}, uiState.ratingMenu), {}, _defineProperty({}, attribute, value))
|
|
270
|
-
});
|
|
268
|
+
return removeEmptyRefinementsFromUiState(_objectSpread(_objectSpread({}, uiState), {}, {
|
|
269
|
+
ratingMenu: _objectSpread(_objectSpread({}, uiState.ratingMenu), {}, _defineProperty({}, attribute, typeof value === 'number' ? value : undefined))
|
|
270
|
+
}));
|
|
271
271
|
},
|
|
272
272
|
getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref8) {
|
|
273
273
|
var uiState = _ref8.uiState;
|
|
@@ -284,5 +284,18 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
|
|
|
284
284
|
};
|
|
285
285
|
};
|
|
286
286
|
};
|
|
287
|
+
function removeEmptyRefinementsFromUiState(indexUiState) {
|
|
288
|
+
var ratingMenu = indexUiState.ratingMenu,
|
|
289
|
+
indexUiStateBase = _objectWithoutProperties(indexUiState, _excluded);
|
|
290
|
+
if (!ratingMenu) {
|
|
291
|
+
return indexUiState;
|
|
292
|
+
}
|
|
293
|
+
var connectorUiState = Object.keys(ratingMenu).reduce(function (acc, key) {
|
|
294
|
+
return _objectSpread(_objectSpread({}, acc), typeof ratingMenu[key] === 'number' ? _defineProperty({}, key, ratingMenu[key]) : {});
|
|
295
|
+
}, {});
|
|
296
|
+
return _objectSpread(_objectSpread({}, indexUiStateBase), Object.keys(connectorUiState).length > 0 ? {
|
|
297
|
+
ratingMenu: connectorUiState
|
|
298
|
+
} : {});
|
|
299
|
+
}
|
|
287
300
|
var _default = connectRatingMenu;
|
|
288
301
|
exports.default = _default;
|
|
@@ -7,7 +7,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.default = void 0;
|
|
8
8
|
var _utils = require("../../lib/utils");
|
|
9
9
|
var _excluded = ["name", "escapedValue"],
|
|
10
|
-
_excluded2 = ["escapedValue", "value"]
|
|
10
|
+
_excluded2 = ["escapedValue", "value"],
|
|
11
|
+
_excluded3 = ["refinementList"];
|
|
11
12
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
12
13
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
13
14
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
@@ -249,12 +250,9 @@ var connectRefinementList = function connectRefinementList(renderFn) {
|
|
|
249
250
|
getWidgetUiState: function getWidgetUiState(uiState, _ref5) {
|
|
250
251
|
var searchParameters = _ref5.searchParameters;
|
|
251
252
|
var values = operator === 'or' ? searchParameters.getDisjunctiveRefinements(attribute) : searchParameters.getConjunctiveRefinements(attribute);
|
|
252
|
-
|
|
253
|
-
return uiState;
|
|
254
|
-
}
|
|
255
|
-
return _objectSpread(_objectSpread({}, uiState), {}, {
|
|
253
|
+
return removeEmptyRefinementsFromUiState(_objectSpread(_objectSpread({}, uiState), {}, {
|
|
256
254
|
refinementList: _objectSpread(_objectSpread({}, uiState.refinementList), {}, _defineProperty({}, attribute, values))
|
|
257
|
-
});
|
|
255
|
+
}));
|
|
258
256
|
},
|
|
259
257
|
getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref6) {
|
|
260
258
|
var uiState = _ref6.uiState;
|
|
@@ -284,5 +282,18 @@ var connectRefinementList = function connectRefinementList(renderFn) {
|
|
|
284
282
|
};
|
|
285
283
|
};
|
|
286
284
|
};
|
|
285
|
+
function removeEmptyRefinementsFromUiState(indexUiState) {
|
|
286
|
+
var refinementList = indexUiState.refinementList,
|
|
287
|
+
indexUiStateBase = _objectWithoutProperties(indexUiState, _excluded3);
|
|
288
|
+
if (!refinementList) {
|
|
289
|
+
return indexUiState;
|
|
290
|
+
}
|
|
291
|
+
var connectorUiState = Object.keys(refinementList).reduce(function (acc, key) {
|
|
292
|
+
return _objectSpread(_objectSpread({}, acc), refinementList[key].length > 0 ? _defineProperty({}, key, refinementList[key]) : {});
|
|
293
|
+
}, {});
|
|
294
|
+
return _objectSpread(_objectSpread({}, indexUiStateBase), Object.keys(connectorUiState).length > 0 ? {
|
|
295
|
+
refinementList: connectorUiState
|
|
296
|
+
} : {});
|
|
297
|
+
}
|
|
287
298
|
var _default = connectRefinementList;
|
|
288
299
|
exports.default = _default;
|
package/cjs/lib/InstantSearch.js
CHANGED
|
@@ -457,6 +457,7 @@ var InstantSearch = /*#__PURE__*/function (_EventEmitter) {
|
|
|
457
457
|
uiState: this._initialUiState
|
|
458
458
|
});
|
|
459
459
|
if (this._initialResults) {
|
|
460
|
+
(0, _utils.hydrateSearchClient)(this.client, this._initialResults);
|
|
460
461
|
var originalScheduleSearch = this.scheduleSearch;
|
|
461
462
|
// We don't schedule a first search when initial results are provided
|
|
462
463
|
// because we already have the results to render. This skips the initial
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.hydrateSearchClient = hydrateSearchClient;
|
|
7
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
8
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
9
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
10
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
11
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
12
|
+
function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
|
|
13
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
14
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
15
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
16
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
17
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
18
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
19
|
+
function hydrateSearchClient(client, results) {
|
|
20
|
+
if (!results) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// Disable cache hydration on:
|
|
25
|
+
// - Algoliasearch API Client < v4 with cache disabled
|
|
26
|
+
// - Third party clients (detected by the `addAlgoliaAgent` function missing)
|
|
27
|
+
|
|
28
|
+
if ((!('transporter' in client) || client._cacheHydrated) && (!client._useCache || typeof client.addAlgoliaAgent !== 'function')) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
var cachedRequest = Object.keys(results).map(function (key) {
|
|
32
|
+
return results[key].results.map(function (result) {
|
|
33
|
+
return {
|
|
34
|
+
indexName: result.index,
|
|
35
|
+
// We normalize the params received from the server as they can
|
|
36
|
+
// be serialized differently depending on the engine.
|
|
37
|
+
params: serializeQueryParameters(deserializeQueryParameters(result.params))
|
|
38
|
+
};
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
var cachedResults = Object.keys(results).reduce(function (acc, key) {
|
|
42
|
+
return acc.concat(results[key].results);
|
|
43
|
+
}, []);
|
|
44
|
+
|
|
45
|
+
// Algoliasearch API Client >= v4
|
|
46
|
+
// To hydrate the client we need to populate the cache with the data from
|
|
47
|
+
// the server (done in `hydrateSearchClientWithMultiIndexRequest` or
|
|
48
|
+
// `hydrateSearchClientWithSingleIndexRequest`). But since there is no way
|
|
49
|
+
// for us to compute the key the same way as `algoliasearch-client` we need
|
|
50
|
+
// to populate it on a custom key and override the `search` method to
|
|
51
|
+
// search on it first.
|
|
52
|
+
if ('transporter' in client && !client._cacheHydrated) {
|
|
53
|
+
client._cacheHydrated = true;
|
|
54
|
+
var baseMethod = client.search;
|
|
55
|
+
// @ts-ignore wanting type checks for v3 on this would make this too complex
|
|
56
|
+
client.search = function (requests) {
|
|
57
|
+
for (var _len = arguments.length, methodArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
58
|
+
methodArgs[_key - 1] = arguments[_key];
|
|
59
|
+
}
|
|
60
|
+
var requestsWithSerializedParams = requests.map(function (request) {
|
|
61
|
+
return _objectSpread(_objectSpread({}, request), {}, {
|
|
62
|
+
params: serializeQueryParameters(request.params)
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
return client.transporter.responsesCache.get({
|
|
66
|
+
method: 'search',
|
|
67
|
+
args: [requestsWithSerializedParams].concat(methodArgs)
|
|
68
|
+
}, function () {
|
|
69
|
+
return baseMethod.apply(void 0, [requests].concat(methodArgs));
|
|
70
|
+
});
|
|
71
|
+
};
|
|
72
|
+
client.transporter.responsesCache.set({
|
|
73
|
+
method: 'search',
|
|
74
|
+
args: cachedRequest
|
|
75
|
+
}, {
|
|
76
|
+
results: cachedResults
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// Algoliasearch API Client < v4
|
|
81
|
+
// Prior to client v4 we didn't have a proper API to hydrate the client
|
|
82
|
+
// cache from the outside. The following code populates the cache with
|
|
83
|
+
// a single-index result. You can find more information about the
|
|
84
|
+
// computation of the key inside the client (see link below).
|
|
85
|
+
// https://github.com/algolia/algoliasearch-client-javascript/blob/c27e89ff92b2a854ae6f40dc524bffe0f0cbc169/src/AlgoliaSearchCore.js#L232-L240
|
|
86
|
+
if (!('transporter' in client)) {
|
|
87
|
+
var cacheKey = "/1/indexes/*/queries_body_".concat(JSON.stringify({
|
|
88
|
+
requests: cachedRequest
|
|
89
|
+
}));
|
|
90
|
+
client.cache = _objectSpread(_objectSpread({}, client.cache), {}, _defineProperty({}, cacheKey, JSON.stringify({
|
|
91
|
+
results: Object.keys(results).map(function (key) {
|
|
92
|
+
return results[key].results;
|
|
93
|
+
})
|
|
94
|
+
})));
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
function deserializeQueryParameters(parameters) {
|
|
98
|
+
return parameters.split('&').reduce(function (acc, parameter) {
|
|
99
|
+
var _parameter$split = parameter.split('='),
|
|
100
|
+
_parameter$split2 = _slicedToArray(_parameter$split, 2),
|
|
101
|
+
key = _parameter$split2[0],
|
|
102
|
+
value = _parameter$split2[1];
|
|
103
|
+
acc[key] = value ? decodeURIComponent(value) : '';
|
|
104
|
+
return acc;
|
|
105
|
+
}, {});
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
// This function is copied from the algoliasearch v4 API Client. If modified,
|
|
109
|
+
// consider updating it also in `serializeQueryParameters` from `@algolia/transporter`.
|
|
110
|
+
function serializeQueryParameters(parameters) {
|
|
111
|
+
var isObjectOrArray = function isObjectOrArray(value) {
|
|
112
|
+
return Object.prototype.toString.call(value) === '[object Object]' || Object.prototype.toString.call(value) === '[object Array]';
|
|
113
|
+
};
|
|
114
|
+
var encode = function encode(format) {
|
|
115
|
+
for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
|
|
116
|
+
args[_key2 - 1] = arguments[_key2];
|
|
117
|
+
}
|
|
118
|
+
var i = 0;
|
|
119
|
+
return format.replace(/%s/g, function () {
|
|
120
|
+
return encodeURIComponent(args[i++]);
|
|
121
|
+
});
|
|
122
|
+
};
|
|
123
|
+
return Object.keys(parameters).map(function (key) {
|
|
124
|
+
return encode('%s=%s', key, isObjectOrArray(parameters[key]) ? JSON.stringify(parameters[key]) : parameters[key]);
|
|
125
|
+
}).join('&');
|
|
126
|
+
}
|
package/cjs/lib/utils/index.js
CHANGED
|
@@ -322,6 +322,17 @@ Object.keys(_hitsQueryId).forEach(function (key) {
|
|
|
322
322
|
}
|
|
323
323
|
});
|
|
324
324
|
});
|
|
325
|
+
var _hydrateSearchClient = require("./hydrateSearchClient");
|
|
326
|
+
Object.keys(_hydrateSearchClient).forEach(function (key) {
|
|
327
|
+
if (key === "default" || key === "__esModule") return;
|
|
328
|
+
if (key in exports && exports[key] === _hydrateSearchClient[key]) return;
|
|
329
|
+
Object.defineProperty(exports, key, {
|
|
330
|
+
enumerable: true,
|
|
331
|
+
get: function get() {
|
|
332
|
+
return _hydrateSearchClient[key];
|
|
333
|
+
}
|
|
334
|
+
});
|
|
335
|
+
});
|
|
325
336
|
var _isDomElement = require("./isDomElement");
|
|
326
337
|
Object.keys(_isDomElement).forEach(function (key) {
|
|
327
338
|
if (key === "default" || key === "__esModule") return;
|
package/cjs/lib/version.js
CHANGED
|
@@ -13,12 +13,12 @@ var _ref4 = (0, _preact.h)("path", {
|
|
|
13
13
|
});
|
|
14
14
|
var _ref6 = (0, _preact.h)("g", {
|
|
15
15
|
fill: "none",
|
|
16
|
-
|
|
16
|
+
"fill-rule": "evenodd"
|
|
17
17
|
}, (0, _preact.h)("g", {
|
|
18
18
|
transform: "translate(1 1)",
|
|
19
|
-
|
|
19
|
+
"stroke-width": "2"
|
|
20
20
|
}, (0, _preact.h)("circle", {
|
|
21
|
-
|
|
21
|
+
"stroke-opacity": ".5",
|
|
22
22
|
cx: "18",
|
|
23
23
|
cy: "18",
|
|
24
24
|
r: "18"
|
|
@@ -55,7 +55,12 @@ var defaultTemplate = {
|
|
|
55
55
|
},
|
|
56
56
|
loadingIndicator: function loadingIndicator(_ref5) {
|
|
57
57
|
var cssClasses = _ref5.cssClasses;
|
|
58
|
+
/* eslint-disable react/no-unknown-property */
|
|
59
|
+
// Preact supports kebab case attributes, and using camel case would
|
|
60
|
+
// require using `preact/compat`.
|
|
61
|
+
// @TODO: reconsider using the `react` ESLint preset
|
|
58
62
|
return (0, _preact.h)("svg", {
|
|
63
|
+
"aria-label": "Results are loading",
|
|
59
64
|
className: cssClasses.loadingIcon,
|
|
60
65
|
width: "16",
|
|
61
66
|
height: "16",
|
|
@@ -63,6 +68,7 @@ var defaultTemplate = {
|
|
|
63
68
|
stroke: "#444",
|
|
64
69
|
"aria-hidden": "true"
|
|
65
70
|
}, _ref6);
|
|
71
|
+
/* eslint-enable react/no-unknown-property */
|
|
66
72
|
}
|
|
67
73
|
};
|
|
68
74
|
var _default = defaultTemplate;
|
|
@@ -1130,11 +1130,21 @@ declare type DynamicWidgetsConnectorParams = {
|
|
|
1130
1130
|
}>;
|
|
1131
1131
|
/**
|
|
1132
1132
|
* To prevent unneeded extra network requests when widgets mount or unmount,
|
|
1133
|
-
* we request all facet values.
|
|
1133
|
+
* we request all facet values by default. If you want to only request the
|
|
1134
|
+
* facet values that are needed, you can set this option to the list of
|
|
1135
|
+
* attributes you want to display.
|
|
1136
|
+
*
|
|
1137
|
+
* If `facets` is set to `['*']`, we request all facet values.
|
|
1138
|
+
*
|
|
1139
|
+
* Any facets that are requested due to the `facetOrdering` result are always
|
|
1140
|
+
* requested by the widget that mounted itself.
|
|
1141
|
+
*
|
|
1142
|
+
* Setting `facets` to a value other than `['*']` will only prevent extra
|
|
1143
|
+
* requests if all potential facets are listed.
|
|
1134
1144
|
*
|
|
1135
1145
|
* @default ['*']
|
|
1136
1146
|
*/
|
|
1137
|
-
facets?: ['*'] |
|
|
1147
|
+
facets?: ['*'] | string[];
|
|
1138
1148
|
/**
|
|
1139
1149
|
* If you have more than 20 facet values pinned, you need to increase the
|
|
1140
1150
|
* maxValuesPerFacet to at least that value.
|
|
@@ -3965,7 +3975,7 @@ declare type RatingMenuWidgetDescription = {
|
|
|
3965
3975
|
};
|
|
3966
3976
|
indexUiState: {
|
|
3967
3977
|
ratingMenu: {
|
|
3968
|
-
[attribute: string]: number;
|
|
3978
|
+
[attribute: string]: number | undefined;
|
|
3969
3979
|
};
|
|
3970
3980
|
};
|
|
3971
3981
|
};
|