instantsearch.js 4.61.0 → 4.63.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 +13 -7
- package/cjs/connectors/breadcrumb/connectBreadcrumb.js +10 -14
- package/cjs/connectors/hierarchical-menu/connectHierarchicalMenu.js +11 -13
- package/cjs/connectors/menu/connectMenu.js +11 -14
- package/cjs/connectors/numeric-menu/connectNumericMenu.js +10 -14
- package/cjs/connectors/rating-menu/connectRatingMenu.js +10 -14
- package/cjs/connectors/refinement-list/connectRefinementList.js +11 -13
- package/cjs/lib/InstantSearch.js +5 -2
- package/cjs/lib/routers/history.js +17 -4
- package/cjs/lib/version.js +1 -1
- package/cjs/middlewares/createInsightsMiddleware.js +16 -4
- package/dist/instantsearch.development.d.ts +20 -2
- package/dist/instantsearch.development.js +196 -155
- package/dist/instantsearch.development.js.map +1 -1
- package/dist/instantsearch.production.d.ts +20 -2
- package/dist/instantsearch.production.min.d.ts +20 -2
- package/dist/instantsearch.production.min.js +2 -2
- package/dist/instantsearch.production.min.js.map +1 -1
- package/es/components/SearchBox/SearchBox.js +13 -7
- package/es/connectors/breadcrumb/connectBreadcrumb.js +10 -14
- package/es/connectors/hierarchical-menu/connectHierarchicalMenu.js +11 -13
- package/es/connectors/menu/connectMenu.js +11 -14
- package/es/connectors/numeric-menu/connectNumericMenu.js +10 -14
- package/es/connectors/rating-menu/connectRatingMenu.js +10 -14
- package/es/connectors/refinement-list/connectRefinementList.js +11 -13
- package/es/lib/InstantSearch.d.ts +10 -0
- package/es/lib/InstantSearch.js +5 -2
- package/es/lib/routers/history.d.ts +10 -2
- package/es/lib/routers/history.js +18 -5
- package/es/lib/version.d.ts +1 -1
- package/es/lib/version.js +1 -1
- package/es/middlewares/createInsightsMiddleware.js +16 -4
- package/package.json +10 -10
|
@@ -58,13 +58,15 @@ var SearchBox = /*#__PURE__*/function (_Component) {
|
|
|
58
58
|
refine = _this$props.refine,
|
|
59
59
|
onChange = _this$props.onChange;
|
|
60
60
|
var query = event.target.value;
|
|
61
|
-
if (
|
|
62
|
-
|
|
61
|
+
if (event.type === 'compositionend' || !event.isComposing) {
|
|
62
|
+
if (searchAsYouType) {
|
|
63
|
+
refine(query);
|
|
64
|
+
}
|
|
65
|
+
_this.setState({
|
|
66
|
+
query: query
|
|
67
|
+
});
|
|
68
|
+
onChange(event);
|
|
63
69
|
}
|
|
64
|
-
_this.setState({
|
|
65
|
-
query: query
|
|
66
|
-
});
|
|
67
|
-
onChange(event);
|
|
68
70
|
});
|
|
69
71
|
_defineProperty(_assertThisInitialized(_this), "onSubmit", function (event) {
|
|
70
72
|
var _this$props2 = _this.props,
|
|
@@ -174,7 +176,11 @@ var SearchBox = /*#__PURE__*/function (_Component) {
|
|
|
174
176
|
,
|
|
175
177
|
spellCheck: "false",
|
|
176
178
|
maxLength: 512,
|
|
177
|
-
onInput: this.onInput
|
|
179
|
+
onInput: this.onInput
|
|
180
|
+
// see: https://github.com/preactjs/preact/issues/1978
|
|
181
|
+
// eslint-disable-next-line react/no-unknown-property
|
|
182
|
+
,
|
|
183
|
+
oncompositionend: this.onInput,
|
|
178
184
|
onBlur: this.onBlur,
|
|
179
185
|
onFocus: this.onFocus,
|
|
180
186
|
"aria-label": ariaLabel
|
|
@@ -6,9 +6,6 @@ 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; }
|
|
12
9
|
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; }
|
|
13
10
|
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; }
|
|
14
11
|
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; }
|
|
@@ -126,7 +123,7 @@ var connectBreadcrumb = function connectBreadcrumb(renderFn) {
|
|
|
126
123
|
var path = searchParameters.getHierarchicalFacetBreadcrumb(hierarchicalFacetName);
|
|
127
124
|
return removeEmptyRefinementsFromUiState(_objectSpread(_objectSpread({}, uiState), {}, {
|
|
128
125
|
hierarchicalMenu: _objectSpread(_objectSpread({}, uiState.hierarchicalMenu), {}, _defineProperty({}, hierarchicalFacetName, path))
|
|
129
|
-
}));
|
|
126
|
+
}), hierarchicalFacetName);
|
|
130
127
|
},
|
|
131
128
|
getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref4) {
|
|
132
129
|
var uiState = _ref4.uiState;
|
|
@@ -177,18 +174,17 @@ function shiftItemsValues(array) {
|
|
|
177
174
|
};
|
|
178
175
|
});
|
|
179
176
|
}
|
|
180
|
-
function removeEmptyRefinementsFromUiState(indexUiState) {
|
|
181
|
-
|
|
182
|
-
indexUiStateBase = _objectWithoutProperties(indexUiState, _excluded);
|
|
183
|
-
if (!hierarchicalMenu) {
|
|
177
|
+
function removeEmptyRefinementsFromUiState(indexUiState, attribute) {
|
|
178
|
+
if (!indexUiState.hierarchicalMenu) {
|
|
184
179
|
return indexUiState;
|
|
185
180
|
}
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
hierarchicalMenu
|
|
191
|
-
}
|
|
181
|
+
if (!indexUiState.hierarchicalMenu[attribute] || !indexUiState.hierarchicalMenu[attribute].length) {
|
|
182
|
+
delete indexUiState.hierarchicalMenu[attribute];
|
|
183
|
+
}
|
|
184
|
+
if (Object.keys(indexUiState.hierarchicalMenu).length === 0) {
|
|
185
|
+
delete indexUiState.hierarchicalMenu;
|
|
186
|
+
}
|
|
187
|
+
return indexUiState;
|
|
192
188
|
}
|
|
193
189
|
var _default = connectBreadcrumb;
|
|
194
190
|
exports.default = _default;
|
|
@@ -6,8 +6,7 @@ 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"]
|
|
10
|
-
_excluded2 = ["hierarchicalMenu"];
|
|
9
|
+
var _excluded = ["name", "escapedValue", "data", "path"];
|
|
11
10
|
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
11
|
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
12
|
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; }
|
|
@@ -208,7 +207,7 @@ var connectHierarchicalMenu = function connectHierarchicalMenu(renderFn) {
|
|
|
208
207
|
var path = searchParameters.getHierarchicalFacetBreadcrumb(hierarchicalFacetName);
|
|
209
208
|
return removeEmptyRefinementsFromUiState(_objectSpread(_objectSpread({}, uiState), {}, {
|
|
210
209
|
hierarchicalMenu: _objectSpread(_objectSpread({}, uiState.hierarchicalMenu), {}, _defineProperty({}, hierarchicalFacetName, path))
|
|
211
|
-
}));
|
|
210
|
+
}), hierarchicalFacetName);
|
|
212
211
|
},
|
|
213
212
|
getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref6) {
|
|
214
213
|
var uiState = _ref6.uiState;
|
|
@@ -241,18 +240,17 @@ var connectHierarchicalMenu = function connectHierarchicalMenu(renderFn) {
|
|
|
241
240
|
};
|
|
242
241
|
};
|
|
243
242
|
};
|
|
244
|
-
function removeEmptyRefinementsFromUiState(indexUiState) {
|
|
245
|
-
|
|
246
|
-
indexUiStateBase = _objectWithoutProperties(indexUiState, _excluded2);
|
|
247
|
-
if (!hierarchicalMenu) {
|
|
243
|
+
function removeEmptyRefinementsFromUiState(indexUiState, attribute) {
|
|
244
|
+
if (!indexUiState.hierarchicalMenu) {
|
|
248
245
|
return indexUiState;
|
|
249
246
|
}
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
hierarchicalMenu
|
|
255
|
-
}
|
|
247
|
+
if (!indexUiState.hierarchicalMenu[attribute] || indexUiState.hierarchicalMenu[attribute].length === 0) {
|
|
248
|
+
delete indexUiState.hierarchicalMenu[attribute];
|
|
249
|
+
}
|
|
250
|
+
if (Object.keys(indexUiState.hierarchicalMenu).length === 0) {
|
|
251
|
+
delete indexUiState.hierarchicalMenu;
|
|
252
|
+
}
|
|
253
|
+
return indexUiState;
|
|
256
254
|
}
|
|
257
255
|
var _default = connectHierarchicalMenu;
|
|
258
256
|
exports.default = _default;
|
|
@@ -5,8 +5,7 @@ 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"]
|
|
9
|
-
_excluded2 = ["menu"];
|
|
8
|
+
var _excluded = ["name", "escapedValue", "path"];
|
|
10
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); }
|
|
11
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; }
|
|
12
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; }
|
|
@@ -180,7 +179,7 @@ var connectMenu = function connectMenu(renderFn) {
|
|
|
180
179
|
value = _searchParameters$get2[0];
|
|
181
180
|
return removeEmptyRefinementsFromUiState(_objectSpread(_objectSpread({}, uiState), {}, {
|
|
182
181
|
menu: _objectSpread(_objectSpread({}, uiState.menu), {}, _defineProperty({}, attribute, value))
|
|
183
|
-
}));
|
|
182
|
+
}), attribute);
|
|
184
183
|
},
|
|
185
184
|
getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref5) {
|
|
186
185
|
var uiState = _ref5.uiState;
|
|
@@ -206,19 +205,17 @@ var connectMenu = function connectMenu(renderFn) {
|
|
|
206
205
|
};
|
|
207
206
|
};
|
|
208
207
|
};
|
|
209
|
-
function removeEmptyRefinementsFromUiState(indexUiState) {
|
|
210
|
-
|
|
211
|
-
indexUiStateBase = _objectWithoutProperties(indexUiState, _excluded2);
|
|
212
|
-
if (!menu) {
|
|
208
|
+
function removeEmptyRefinementsFromUiState(indexUiState, attribute) {
|
|
209
|
+
if (!indexUiState.menu) {
|
|
213
210
|
return indexUiState;
|
|
214
211
|
}
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
212
|
+
if (indexUiState.menu[attribute] === undefined) {
|
|
213
|
+
delete indexUiState.menu[attribute];
|
|
214
|
+
}
|
|
215
|
+
if (Object.keys(indexUiState.menu).length === 0) {
|
|
216
|
+
delete indexUiState.menu;
|
|
217
|
+
}
|
|
218
|
+
return indexUiState;
|
|
222
219
|
}
|
|
223
220
|
var _default = connectMenu;
|
|
224
221
|
exports.default = _default;
|
|
@@ -5,10 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _utils = require("../../lib/utils");
|
|
8
|
-
var _excluded = ["numericMenu"];
|
|
9
8
|
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; }
|
|
12
9
|
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; } } }; }
|
|
13
10
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
14
11
|
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."); }
|
|
@@ -106,7 +103,7 @@ var connectNumericMenu = function connectNumericMenu(renderFn) {
|
|
|
106
103
|
var max = values['<='] && values['<='][0] || '';
|
|
107
104
|
return removeEmptyRefinementsFromUiState(_objectSpread(_objectSpread({}, uiState), {}, {
|
|
108
105
|
numericMenu: _objectSpread(_objectSpread({}, uiState.numericMenu), {}, _defineProperty({}, attribute, "".concat(min, ":").concat(max)))
|
|
109
|
-
}));
|
|
106
|
+
}), attribute);
|
|
110
107
|
},
|
|
111
108
|
getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref6) {
|
|
112
109
|
var uiState = _ref6.uiState;
|
|
@@ -268,18 +265,17 @@ function getRefinedState(state, attribute, facetValue) {
|
|
|
268
265
|
function hasNumericRefinement(currentRefinements, operator, value) {
|
|
269
266
|
return currentRefinements[operator] !== undefined && currentRefinements[operator].includes(value);
|
|
270
267
|
}
|
|
271
|
-
function removeEmptyRefinementsFromUiState(indexUiState) {
|
|
272
|
-
|
|
273
|
-
indexUiStateBase = _objectWithoutProperties(indexUiState, _excluded);
|
|
274
|
-
if (!numericMenu) {
|
|
268
|
+
function removeEmptyRefinementsFromUiState(indexUiState, attribute) {
|
|
269
|
+
if (!indexUiState.numericMenu) {
|
|
275
270
|
return indexUiState;
|
|
276
271
|
}
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
numericMenu
|
|
282
|
-
}
|
|
272
|
+
if (indexUiState.numericMenu[attribute] === ':') {
|
|
273
|
+
delete indexUiState.numericMenu[attribute];
|
|
274
|
+
}
|
|
275
|
+
if (Object.keys(indexUiState.numericMenu).length === 0) {
|
|
276
|
+
delete indexUiState.numericMenu;
|
|
277
|
+
}
|
|
278
|
+
return indexUiState;
|
|
283
279
|
}
|
|
284
280
|
var _default = connectNumericMenu;
|
|
285
281
|
exports.default = _default;
|
|
@@ -6,9 +6,6 @@ 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; }
|
|
12
9
|
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
13
10
|
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."); }
|
|
14
11
|
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
@@ -267,7 +264,7 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
|
|
|
267
264
|
var value = _getRefinedStar(searchParameters);
|
|
268
265
|
return removeEmptyRefinementsFromUiState(_objectSpread(_objectSpread({}, uiState), {}, {
|
|
269
266
|
ratingMenu: _objectSpread(_objectSpread({}, uiState.ratingMenu), {}, _defineProperty({}, attribute, typeof value === 'number' ? value : undefined))
|
|
270
|
-
}));
|
|
267
|
+
}), attribute);
|
|
271
268
|
},
|
|
272
269
|
getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref8) {
|
|
273
270
|
var uiState = _ref8.uiState;
|
|
@@ -284,18 +281,17 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
|
|
|
284
281
|
};
|
|
285
282
|
};
|
|
286
283
|
};
|
|
287
|
-
function removeEmptyRefinementsFromUiState(indexUiState) {
|
|
288
|
-
|
|
289
|
-
indexUiStateBase = _objectWithoutProperties(indexUiState, _excluded);
|
|
290
|
-
if (!ratingMenu) {
|
|
284
|
+
function removeEmptyRefinementsFromUiState(indexUiState, attribute) {
|
|
285
|
+
if (!indexUiState.ratingMenu) {
|
|
291
286
|
return indexUiState;
|
|
292
287
|
}
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
ratingMenu
|
|
298
|
-
}
|
|
288
|
+
if (typeof indexUiState.ratingMenu[attribute] !== 'number') {
|
|
289
|
+
delete indexUiState.ratingMenu[attribute];
|
|
290
|
+
}
|
|
291
|
+
if (Object.keys(indexUiState.ratingMenu).length === 0) {
|
|
292
|
+
delete indexUiState.ratingMenu;
|
|
293
|
+
}
|
|
294
|
+
return indexUiState;
|
|
299
295
|
}
|
|
300
296
|
var _default = connectRatingMenu;
|
|
301
297
|
exports.default = _default;
|
|
@@ -7,8 +7,7 @@ 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"]
|
|
11
|
-
_excluded3 = ["refinementList"];
|
|
10
|
+
_excluded2 = ["escapedValue", "value"];
|
|
12
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; }
|
|
13
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; }
|
|
14
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; }
|
|
@@ -252,7 +251,7 @@ var connectRefinementList = function connectRefinementList(renderFn) {
|
|
|
252
251
|
var values = operator === 'or' ? searchParameters.getDisjunctiveRefinements(attribute) : searchParameters.getConjunctiveRefinements(attribute);
|
|
253
252
|
return removeEmptyRefinementsFromUiState(_objectSpread(_objectSpread({}, uiState), {}, {
|
|
254
253
|
refinementList: _objectSpread(_objectSpread({}, uiState.refinementList), {}, _defineProperty({}, attribute, values))
|
|
255
|
-
}));
|
|
254
|
+
}), attribute);
|
|
256
255
|
},
|
|
257
256
|
getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref6) {
|
|
258
257
|
var uiState = _ref6.uiState;
|
|
@@ -282,18 +281,17 @@ var connectRefinementList = function connectRefinementList(renderFn) {
|
|
|
282
281
|
};
|
|
283
282
|
};
|
|
284
283
|
};
|
|
285
|
-
function removeEmptyRefinementsFromUiState(indexUiState) {
|
|
286
|
-
|
|
287
|
-
indexUiStateBase = _objectWithoutProperties(indexUiState, _excluded3);
|
|
288
|
-
if (!refinementList) {
|
|
284
|
+
function removeEmptyRefinementsFromUiState(indexUiState, attribute) {
|
|
285
|
+
if (!indexUiState.refinementList) {
|
|
289
286
|
return indexUiState;
|
|
290
287
|
}
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
refinementList
|
|
296
|
-
}
|
|
288
|
+
if (!indexUiState.refinementList[attribute] || indexUiState.refinementList[attribute].length === 0) {
|
|
289
|
+
delete indexUiState.refinementList[attribute];
|
|
290
|
+
}
|
|
291
|
+
if (Object.keys(indexUiState.refinementList).length === 0) {
|
|
292
|
+
delete indexUiState.refinementList;
|
|
293
|
+
}
|
|
294
|
+
return indexUiState;
|
|
297
295
|
}
|
|
298
296
|
var _default = connectRefinementList;
|
|
299
297
|
exports.default = _default;
|
package/cjs/lib/InstantSearch.js
CHANGED
|
@@ -44,7 +44,8 @@ function defaultCreateURL() {
|
|
|
44
44
|
* Global options for an InstantSearch instance.
|
|
45
45
|
*/
|
|
46
46
|
var INSTANTSEARCH_FUTURE_DEFAULTS = {
|
|
47
|
-
preserveSharedStateOnUnmount: false
|
|
47
|
+
preserveSharedStateOnUnmount: false,
|
|
48
|
+
persistHierarchicalRootCount: false
|
|
48
49
|
};
|
|
49
50
|
|
|
50
51
|
/**
|
|
@@ -381,7 +382,9 @@ var InstantSearch = /*#__PURE__*/function (_EventEmitter) {
|
|
|
381
382
|
// DerivedHelper scoped into the `index` widgets.
|
|
382
383
|
// In Vue InstantSearch' hydrate, a main helper gets set before start, so
|
|
383
384
|
// we need to respect this helper as a way to keep all listeners correct.
|
|
384
|
-
var mainHelper = this.mainHelper || (0, _algoliasearchHelper.default)(this.client, this.indexName
|
|
385
|
+
var mainHelper = this.mainHelper || (0, _algoliasearchHelper.default)(this.client, this.indexName, undefined, {
|
|
386
|
+
persistHierarchicalRootCount: this.future.persistHierarchicalRootCount
|
|
387
|
+
});
|
|
385
388
|
mainHelper.search = function () {
|
|
386
389
|
_this3.status = 'loading';
|
|
387
390
|
_this3.scheduleRender(false);
|
|
@@ -36,7 +36,8 @@ var BrowserHistory = /*#__PURE__*/function () {
|
|
|
36
36
|
getLocation = _ref.getLocation,
|
|
37
37
|
start = _ref.start,
|
|
38
38
|
dispose = _ref.dispose,
|
|
39
|
-
push = _ref.push
|
|
39
|
+
push = _ref.push,
|
|
40
|
+
cleanUrlOnDispose = _ref.cleanUrlOnDispose;
|
|
40
41
|
_classCallCheck(this, BrowserHistory);
|
|
41
42
|
_defineProperty(this, "$$type", 'ais.browser');
|
|
42
43
|
/**
|
|
@@ -86,6 +87,7 @@ var BrowserHistory = /*#__PURE__*/function () {
|
|
|
86
87
|
_defineProperty(this, "_start", void 0);
|
|
87
88
|
_defineProperty(this, "_dispose", void 0);
|
|
88
89
|
_defineProperty(this, "_push", void 0);
|
|
90
|
+
_defineProperty(this, "_cleanUrlOnDispose", void 0);
|
|
89
91
|
this.windowTitle = windowTitle;
|
|
90
92
|
this.writeTimer = undefined;
|
|
91
93
|
this.writeDelay = writeDelay;
|
|
@@ -95,6 +97,13 @@ var BrowserHistory = /*#__PURE__*/function () {
|
|
|
95
97
|
this._start = start;
|
|
96
98
|
this._dispose = dispose;
|
|
97
99
|
this._push = push;
|
|
100
|
+
this._cleanUrlOnDispose = typeof cleanUrlOnDispose === 'undefined' ? true : cleanUrlOnDispose;
|
|
101
|
+
if (process.env.NODE_ENV === 'development' && typeof cleanUrlOnDispose === 'undefined') {
|
|
102
|
+
// eslint-disable-next-line no-console
|
|
103
|
+
console.info("Starting from the next major version, InstantSearch will not clean up the URL from active refinements when it is disposed.\n\nWe recommend setting `cleanUrlOnDispose` to false to adopt this change today.\nTo stay with the current behaviour and remove this warning, set the option to true.\n\nSee documentation: ".concat((0, _utils.createDocumentationLink)({
|
|
104
|
+
name: 'history-router'
|
|
105
|
+
}), "#widget-param-cleanurlondispose"));
|
|
106
|
+
}
|
|
98
107
|
(0, _utils.safelyRunOnBrowser)(function (_ref2) {
|
|
99
108
|
var window = _ref2.window;
|
|
100
109
|
var title = _this.windowTitle && _this.windowTitle(_this.read());
|
|
@@ -222,7 +231,9 @@ var BrowserHistory = /*#__PURE__*/function () {
|
|
|
222
231
|
if (this.writeTimer) {
|
|
223
232
|
clearTimeout(this.writeTimer);
|
|
224
233
|
}
|
|
225
|
-
this.
|
|
234
|
+
if (this._cleanUrlOnDispose) {
|
|
235
|
+
this.write({});
|
|
236
|
+
}
|
|
226
237
|
}
|
|
227
238
|
}, {
|
|
228
239
|
key: "start",
|
|
@@ -311,7 +322,8 @@ function historyRouter() {
|
|
|
311
322
|
} : _ref7$getLocation,
|
|
312
323
|
start = _ref7.start,
|
|
313
324
|
dispose = _ref7.dispose,
|
|
314
|
-
push = _ref7.push
|
|
325
|
+
push = _ref7.push,
|
|
326
|
+
cleanUrlOnDispose = _ref7.cleanUrlOnDispose;
|
|
315
327
|
return new BrowserHistory({
|
|
316
328
|
createURL: createURL,
|
|
317
329
|
parseURL: parseURL,
|
|
@@ -320,6 +332,7 @@ function historyRouter() {
|
|
|
320
332
|
getLocation: getLocation,
|
|
321
333
|
start: start,
|
|
322
334
|
dispose: dispose,
|
|
323
|
-
push: push
|
|
335
|
+
push: push,
|
|
336
|
+
cleanUrlOnDispose: cleanUrlOnDispose
|
|
324
337
|
});
|
|
325
338
|
}
|
package/cjs/lib/version.js
CHANGED
|
@@ -22,7 +22,7 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
|
|
|
22
22
|
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
23
23
|
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
24
24
|
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; }
|
|
25
|
-
var ALGOLIA_INSIGHTS_VERSION = '2.
|
|
25
|
+
var ALGOLIA_INSIGHTS_VERSION = '2.13.0';
|
|
26
26
|
var ALGOLIA_INSIGHTS_SRC = "https://cdn.jsdelivr.net/npm/search-insights@".concat(ALGOLIA_INSIGHTS_VERSION, "/dist/search-insights.min.js");
|
|
27
27
|
function createInsightsMiddleware() {
|
|
28
28
|
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
@@ -106,7 +106,7 @@ function createInsightsMiddleware() {
|
|
|
106
106
|
// set it later on.
|
|
107
107
|
//
|
|
108
108
|
// Otherwise, the `init` call might override it with anonymous user token.
|
|
109
|
-
userTokenBeforeInit = userToken;
|
|
109
|
+
userTokenBeforeInit = normalizeUserToken(userToken);
|
|
110
110
|
});
|
|
111
111
|
|
|
112
112
|
// Only `init` if the `insightsInitParams` option is passed or
|
|
@@ -162,13 +162,14 @@ function createInsightsMiddleware() {
|
|
|
162
162
|
}
|
|
163
163
|
var setUserTokenToSearch = function setUserTokenToSearch(userToken) {
|
|
164
164
|
var immediate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
165
|
-
|
|
165
|
+
var normalizedUserToken = normalizeUserToken(userToken);
|
|
166
|
+
if (!normalizedUserToken) {
|
|
166
167
|
return;
|
|
167
168
|
}
|
|
168
169
|
var existingToken = helper.state.userToken;
|
|
169
170
|
function applyToken() {
|
|
170
171
|
helper.overrideStateWithoutTriggeringChangeEvent(_objectSpread(_objectSpread({}, helper.state), {}, {
|
|
171
|
-
userToken:
|
|
172
|
+
userToken: normalizedUserToken
|
|
172
173
|
}));
|
|
173
174
|
if (existingToken && existingToken !== userToken) {
|
|
174
175
|
instantSearchInstance.scheduleSearch();
|
|
@@ -265,4 +266,15 @@ function isModernInsightsClient(client) {
|
|
|
265
266
|
/* eslint-enable @typescript-eslint/naming-convention */
|
|
266
267
|
|
|
267
268
|
return v3 || v2_6 || v1_10;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
* While `search-insights` supports both string and number user tokens,
|
|
273
|
+
* the Search API only accepts strings. This function normalizes the user token.
|
|
274
|
+
*/
|
|
275
|
+
function normalizeUserToken(userToken) {
|
|
276
|
+
if (!userToken) {
|
|
277
|
+
return undefined;
|
|
278
|
+
}
|
|
279
|
+
return typeof userToken === 'number' ? userToken.toString() : userToken;
|
|
268
280
|
}
|
|
@@ -486,11 +486,12 @@ declare class BrowserHistory<TRouteState> implements Router<TRouteState> {
|
|
|
486
486
|
private _start?;
|
|
487
487
|
private _dispose?;
|
|
488
488
|
private _push?;
|
|
489
|
+
private _cleanUrlOnDispose;
|
|
489
490
|
/**
|
|
490
491
|
* Initializes a new storage provider that syncs the search state to the URL
|
|
491
492
|
* using web APIs (`window.location.pushState` and `onpopstate` event).
|
|
492
493
|
*/
|
|
493
|
-
constructor({ windowTitle, writeDelay, createURL, parseURL, getLocation, start, dispose, push, }: BrowserHistoryArgs<TRouteState>);
|
|
494
|
+
constructor({ windowTitle, writeDelay, createURL, parseURL, getLocation, start, dispose, push, cleanUrlOnDispose, }: BrowserHistoryArgs<TRouteState>);
|
|
494
495
|
/**
|
|
495
496
|
* Reads the URL and returns a syncable UI search state.
|
|
496
497
|
*/
|
|
@@ -529,6 +530,13 @@ declare type BrowserHistoryArgs<TRouteState> = {
|
|
|
529
530
|
start?: (onUpdate: () => void) => void;
|
|
530
531
|
dispose?: () => void;
|
|
531
532
|
push?: (url: string) => void;
|
|
533
|
+
/**
|
|
534
|
+
* Whether the URL should be cleaned up when the router is disposed.
|
|
535
|
+
* This can be useful when closing a modal containing InstantSearch, to
|
|
536
|
+
* remove active refinements from the URL.
|
|
537
|
+
* @default true
|
|
538
|
+
*/
|
|
539
|
+
cleanUrlOnDispose?: boolean;
|
|
532
540
|
};
|
|
533
541
|
|
|
534
542
|
declare type BuiltInBindEventForHits = (eventType: string, hits: Hit | Hit[], eventName?: string, additionalData?: Record<string, any>) => string;
|
|
@@ -1813,7 +1821,7 @@ declare type HighlightProps_2 = Omit<HighlightProps_3, 'classNames'> & {
|
|
|
1813
1821
|
classNames?: Partial<HighlightClassNames>;
|
|
1814
1822
|
};
|
|
1815
1823
|
|
|
1816
|
-
declare function historyRouter<TRouteState = UiState>({ createURL, parseURL, writeDelay, windowTitle, getLocation, start, dispose, push, }?: Partial<BrowserHistoryArgs<TRouteState>>): BrowserHistory<TRouteState>;
|
|
1824
|
+
declare function historyRouter<TRouteState = UiState>({ createURL, parseURL, writeDelay, windowTitle, getLocation, start, dispose, push, cleanUrlOnDispose, }?: Partial<BrowserHistoryArgs<TRouteState>>): BrowserHistory<TRouteState>;
|
|
1817
1825
|
|
|
1818
1826
|
declare type Hit<THit extends BaseHit = Record<string, any>> = {
|
|
1819
1827
|
__position: number;
|
|
@@ -2627,6 +2635,16 @@ declare type InstantSearchOptions<TUiState extends UiState = UiState, TRouteStat
|
|
|
2627
2635
|
* @default false
|
|
2628
2636
|
*/
|
|
2629
2637
|
preserveSharedStateOnUnmount?: boolean;
|
|
2638
|
+
/**
|
|
2639
|
+
* Changes the way root levels of hierarchical facets have their count displayed.
|
|
2640
|
+
*
|
|
2641
|
+
* If `false` (by default), the count of the refined root level is updated to match the count of the actively refined parent level.
|
|
2642
|
+
*
|
|
2643
|
+
* If `true`, the count of the root level stays the same as the count of all children levels.
|
|
2644
|
+
*
|
|
2645
|
+
* @default false
|
|
2646
|
+
*/
|
|
2647
|
+
persistHierarchicalRootCount?: boolean;
|
|
2630
2648
|
};
|
|
2631
2649
|
};
|
|
2632
2650
|
|