instantsearch.js 4.35.0 → 4.36.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 +10 -0
- package/cjs/connectors/dynamic-widgets/connectDynamicWidgets.js +30 -5
- package/cjs/lib/version.js +1 -1
- package/cjs/widgets/dynamic-widgets/dynamic-widgets.js +8 -5
- package/dist/instantsearch.development.d.ts +14 -0
- package/dist/instantsearch.development.js +36 -12
- package/dist/instantsearch.development.js.map +1 -1
- package/dist/instantsearch.development.min.d.ts +14 -0
- package/dist/instantsearch.production.d.ts +14 -0
- package/dist/instantsearch.production.min.d.ts +14 -0
- package/dist/instantsearch.production.min.js +2 -2
- package/dist/instantsearch.production.min.js.map +1 -1
- package/es/connectors/dynamic-widgets/connectDynamicWidgets.d.ts +14 -0
- package/es/connectors/dynamic-widgets/connectDynamicWidgets.js +31 -6
- package/es/lib/version.d.ts +1 -1
- package/es/lib/version.js +1 -1
- package/es/widgets/dynamic-widgets/dynamic-widgets.js +8 -5
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
# [4.36.0](https://github.com/algolia/instantsearch.js/compare/v4.35.0...v4.36.0) (2021-12-16)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* **dynamicWidgets:** send facets * and maxValuesPerFacet by default ([#4968](https://github.com/algolia/instantsearch.js/issues/4968)) ([969ae89](https://github.com/algolia/instantsearch.js/commit/969ae8980f7c8a055bb4c6c5967d04744644f555))
|
|
7
|
+
* **DynamicWidgets:** throw when transformItems returns anything that isn't an array ([#4975](https://github.com/algolia/instantsearch.js/issues/4975)) ([5c328c8](https://github.com/algolia/instantsearch.js/commit/5c328c85428eb9a5c1450fd01154751f4e0ea2fa))
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
1
11
|
# [4.35.0](https://github.com/algolia/instantsearch.js/compare/v4.34.0...v4.35.0) (2021-12-13)
|
|
2
12
|
|
|
3
13
|
|
|
@@ -19,12 +19,17 @@ var withUsage = (0, _utils.createDocumentationMessageGenerator)({
|
|
|
19
19
|
name: 'dynamic-widgets',
|
|
20
20
|
connector: true
|
|
21
21
|
});
|
|
22
|
+
var MAX_WILDCARD_FACETS = 20;
|
|
22
23
|
|
|
23
24
|
var connectDynamicWidgets = function connectDynamicWidgets(renderFn) {
|
|
24
25
|
var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _utils.noop;
|
|
25
26
|
(0, _utils.checkRendering)(renderFn, withUsage());
|
|
26
27
|
return function (widgetParams) {
|
|
27
28
|
var widgets = widgetParams.widgets,
|
|
29
|
+
_widgetParams$maxValu = widgetParams.maxValuesPerFacet,
|
|
30
|
+
maxValuesPerFacet = _widgetParams$maxValu === void 0 ? 20 : _widgetParams$maxValu,
|
|
31
|
+
_widgetParams$facets = widgetParams.facets,
|
|
32
|
+
facets = _widgetParams$facets === void 0 ? ['*'] : _widgetParams$facets,
|
|
28
33
|
_widgetParams$transfo = widgetParams.transformItems,
|
|
29
34
|
transformItems = _widgetParams$transfo === void 0 ? function (items) {
|
|
30
35
|
return items;
|
|
@@ -37,6 +42,10 @@ var connectDynamicWidgets = function connectDynamicWidgets(renderFn) {
|
|
|
37
42
|
throw new Error(withUsage('The `widgets` option expects an array of widgets.'));
|
|
38
43
|
}
|
|
39
44
|
|
|
45
|
+
if (!(Array.isArray(facets) && facets.length <= 1 && (facets[0] === '*' || facets[0] === undefined))) {
|
|
46
|
+
throw new Error(withUsage("The `facets` option only accepts [] or [\"*\"], you passed ".concat(JSON.stringify(facets))));
|
|
47
|
+
}
|
|
48
|
+
|
|
40
49
|
var localWidgets = new Map();
|
|
41
50
|
return {
|
|
42
51
|
$$type: 'ais.dynamicWidgets',
|
|
@@ -116,6 +125,14 @@ var connectDynamicWidgets = function connectDynamicWidgets(renderFn) {
|
|
|
116
125
|
parent.removeWidgets(toRemove);
|
|
117
126
|
unmountFn();
|
|
118
127
|
},
|
|
128
|
+
getWidgetSearchParameters: function getWidgetSearchParameters(state) {
|
|
129
|
+
// broadening the scope of facets to avoid conflict between never and *
|
|
130
|
+
return facets.reduce(function (acc, curr) {
|
|
131
|
+
return acc.addFacet(curr);
|
|
132
|
+
}, state.setQueryParameters({
|
|
133
|
+
maxValuesPerFacet: Math.max(maxValuesPerFacet || 0, state.maxValuesPerFacet || 0)
|
|
134
|
+
}));
|
|
135
|
+
},
|
|
119
136
|
getRenderState: function getRenderState(renderState, renderOptions) {
|
|
120
137
|
return _objectSpread(_objectSpread({}, renderState), {}, {
|
|
121
138
|
dynamicWidgets: this.getWidgetRenderState(renderOptions)
|
|
@@ -124,7 +141,8 @@ var connectDynamicWidgets = function connectDynamicWidgets(renderFn) {
|
|
|
124
141
|
getWidgetRenderState: function getWidgetRenderState(_ref4) {
|
|
125
142
|
var _results$renderingCon, _results$renderingCon2, _results$renderingCon3, _results$renderingCon4;
|
|
126
143
|
|
|
127
|
-
var results = _ref4.results
|
|
144
|
+
var results = _ref4.results,
|
|
145
|
+
state = _ref4.state;
|
|
128
146
|
|
|
129
147
|
if (!results) {
|
|
130
148
|
return {
|
|
@@ -133,11 +151,18 @@ var connectDynamicWidgets = function connectDynamicWidgets(renderFn) {
|
|
|
133
151
|
};
|
|
134
152
|
}
|
|
135
153
|
|
|
136
|
-
var attributesToRender = (_results$renderingCon = (_results$renderingCon2 = results.renderingContent) === null || _results$renderingCon2 === void 0 ? void 0 : (_results$renderingCon3 = _results$renderingCon2.facetOrdering) === null || _results$renderingCon3 === void 0 ? void 0 : (_results$renderingCon4 = _results$renderingCon3.facets) === null || _results$renderingCon4 === void 0 ? void 0 : _results$renderingCon4.order) !== null && _results$renderingCon !== void 0 ? _results$renderingCon : []
|
|
154
|
+
var attributesToRender = transformItems((_results$renderingCon = (_results$renderingCon2 = results.renderingContent) === null || _results$renderingCon2 === void 0 ? void 0 : (_results$renderingCon3 = _results$renderingCon2.facetOrdering) === null || _results$renderingCon3 === void 0 ? void 0 : (_results$renderingCon4 = _results$renderingCon3.facets) === null || _results$renderingCon4 === void 0 ? void 0 : _results$renderingCon4.order) !== null && _results$renderingCon !== void 0 ? _results$renderingCon : [], {
|
|
155
|
+
results: results
|
|
156
|
+
});
|
|
157
|
+
|
|
158
|
+
if (!Array.isArray(attributesToRender)) {
|
|
159
|
+
throw new Error(withUsage('The `transformItems` option expects a function that returns an Array.'));
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
process.env.NODE_ENV === 'development' ? (0, _utils.warning)(maxValuesPerFacet >= (state.maxValuesPerFacet || 0), "The maxValuesPerFacet set by dynamic widgets (".concat(maxValuesPerFacet, ") is smaller than one of the limits set by a widget (").concat(state.maxValuesPerFacet, "). This causes a mismatch in query parameters and thus an extra network request when that widget is mounted.")) : void 0;
|
|
163
|
+
process.env.NODE_ENV === 'development' ? (0, _utils.warning)(attributesToRender.length <= MAX_WILDCARD_FACETS || widgetParams.facets !== undefined, "More than ".concat(MAX_WILDCARD_FACETS, " facets are requested to be displayed without explicitly setting which facets to retrieve. This could have a performance impact. Set \"facets\" to [] to do two smaller network requests, or explicitly to ['*'] to avoid this warning.")) : void 0;
|
|
137
164
|
return {
|
|
138
|
-
attributesToRender:
|
|
139
|
-
results: results
|
|
140
|
-
}),
|
|
165
|
+
attributesToRender: attributesToRender,
|
|
141
166
|
widgetParams: widgetParams
|
|
142
167
|
};
|
|
143
168
|
}
|
package/cjs/lib/version.js
CHANGED
|
@@ -19,6 +19,10 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
|
19
19
|
|
|
20
20
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
21
21
|
|
|
22
|
+
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; }
|
|
23
|
+
|
|
24
|
+
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; }
|
|
25
|
+
|
|
22
26
|
var withUsage = (0, _utils.createDocumentationMessageGenerator)({
|
|
23
27
|
name: 'dynamic-widgets'
|
|
24
28
|
});
|
|
@@ -36,9 +40,9 @@ function createContainer(rootContainer) {
|
|
|
36
40
|
var dynamicWidgets = function dynamicWidgets(widgetParams) {
|
|
37
41
|
var _ref = widgetParams || {},
|
|
38
42
|
containerSelector = _ref.container,
|
|
39
|
-
transformItems = _ref.transformItems,
|
|
40
43
|
widgets = _ref.widgets,
|
|
41
|
-
fallbackWidget = _ref.fallbackWidget
|
|
44
|
+
fallbackWidget = _ref.fallbackWidget,
|
|
45
|
+
otherWidgetParams = _objectWithoutProperties(_ref, ["container", "widgets", "fallbackWidget"]);
|
|
42
46
|
|
|
43
47
|
if (!containerSelector) {
|
|
44
48
|
throw new Error(withUsage('The `container` option is required.'));
|
|
@@ -73,8 +77,7 @@ var dynamicWidgets = function dynamicWidgets(widgetParams) {
|
|
|
73
77
|
}, function () {
|
|
74
78
|
userContainer.removeChild(rootContainer);
|
|
75
79
|
});
|
|
76
|
-
var widget = makeWidget({
|
|
77
|
-
transformItems: transformItems,
|
|
80
|
+
var widget = makeWidget(_objectSpread(_objectSpread({}, otherWidgetParams), {}, {
|
|
78
81
|
widgets: connectorWidgets,
|
|
79
82
|
fallbackWidget: typeof fallbackWidget === 'function' ? function (_ref3) {
|
|
80
83
|
var attribute = _ref3.attribute;
|
|
@@ -85,7 +88,7 @@ var dynamicWidgets = function dynamicWidgets(widgetParams) {
|
|
|
85
88
|
container: container
|
|
86
89
|
});
|
|
87
90
|
} : undefined
|
|
88
|
-
});
|
|
91
|
+
}));
|
|
89
92
|
return _objectSpread(_objectSpread({}, widget), {}, {
|
|
90
93
|
init: function init(initOptions) {
|
|
91
94
|
widgets.forEach(function (cb) {
|
|
@@ -1101,6 +1101,20 @@ declare type DynamicWidgetsConnectorParams = {
|
|
|
1101
1101
|
transformItems?(items: string[], metadata: {
|
|
1102
1102
|
results: SearchResults;
|
|
1103
1103
|
}): string[];
|
|
1104
|
+
/**
|
|
1105
|
+
* To prevent unneeded extra network requests when widgets mount or unmount,
|
|
1106
|
+
* we request all facet values.
|
|
1107
|
+
*
|
|
1108
|
+
* @default ['*']
|
|
1109
|
+
*/
|
|
1110
|
+
facets?: ['*'] | never[];
|
|
1111
|
+
/**
|
|
1112
|
+
* If you have more than 20 facet values pinned, you need to increase the
|
|
1113
|
+
* maxValuesPerFacet to at least that value.
|
|
1114
|
+
*
|
|
1115
|
+
* @default 20
|
|
1116
|
+
*/
|
|
1117
|
+
maxValuesPerFacet?: number;
|
|
1104
1118
|
};
|
|
1105
1119
|
|
|
1106
1120
|
declare type DynamicWidgetsRenderState = {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! InstantSearch.js 4.
|
|
1
|
+
/*! InstantSearch.js 4.36.0 | © Algolia, Inc. and contributors; MIT License | https://github.com/algolia/instantsearch.js */
|
|
2
2
|
(function (global, factory) {
|
|
3
3
|
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
|
4
4
|
typeof define === 'function' && define.amd ? define(factory) :
|
|
@@ -8483,7 +8483,7 @@
|
|
|
8483
8483
|
instantSearchInstance.renderState = _objectSpread2(_objectSpread2({}, instantSearchInstance.renderState), {}, _defineProperty({}, parentIndexName, _objectSpread2(_objectSpread2({}, instantSearchInstance.renderState[parentIndexName]), renderState)));
|
|
8484
8484
|
}
|
|
8485
8485
|
|
|
8486
|
-
var version$1 = '4.
|
|
8486
|
+
var version$1 = '4.36.0';
|
|
8487
8487
|
|
|
8488
8488
|
var NAMESPACE = 'ais';
|
|
8489
8489
|
var component = function component(componentName) {
|
|
@@ -15221,12 +15221,17 @@
|
|
|
15221
15221
|
name: 'dynamic-widgets',
|
|
15222
15222
|
connector: true
|
|
15223
15223
|
});
|
|
15224
|
+
var MAX_WILDCARD_FACETS = 20;
|
|
15224
15225
|
|
|
15225
15226
|
var connectDynamicWidgets = function connectDynamicWidgets(renderFn) {
|
|
15226
15227
|
var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;
|
|
15227
15228
|
checkRendering(renderFn, withUsage$r());
|
|
15228
15229
|
return function (widgetParams) {
|
|
15229
15230
|
var widgets = widgetParams.widgets,
|
|
15231
|
+
_widgetParams$maxValu = widgetParams.maxValuesPerFacet,
|
|
15232
|
+
maxValuesPerFacet = _widgetParams$maxValu === void 0 ? 20 : _widgetParams$maxValu,
|
|
15233
|
+
_widgetParams$facets = widgetParams.facets,
|
|
15234
|
+
facets = _widgetParams$facets === void 0 ? ['*'] : _widgetParams$facets,
|
|
15230
15235
|
_widgetParams$transfo = widgetParams.transformItems,
|
|
15231
15236
|
transformItems = _widgetParams$transfo === void 0 ? function (items) {
|
|
15232
15237
|
return items;
|
|
@@ -15239,6 +15244,10 @@
|
|
|
15239
15244
|
throw new Error(withUsage$r('The `widgets` option expects an array of widgets.'));
|
|
15240
15245
|
}
|
|
15241
15246
|
|
|
15247
|
+
if (!(Array.isArray(facets) && facets.length <= 1 && (facets[0] === '*' || facets[0] === undefined))) {
|
|
15248
|
+
throw new Error(withUsage$r("The `facets` option only accepts [] or [\"*\"], you passed ".concat(JSON.stringify(facets))));
|
|
15249
|
+
}
|
|
15250
|
+
|
|
15242
15251
|
var localWidgets = new Map();
|
|
15243
15252
|
return {
|
|
15244
15253
|
$$type: 'ais.dynamicWidgets',
|
|
@@ -15318,6 +15327,14 @@
|
|
|
15318
15327
|
parent.removeWidgets(toRemove);
|
|
15319
15328
|
unmountFn();
|
|
15320
15329
|
},
|
|
15330
|
+
getWidgetSearchParameters: function getWidgetSearchParameters(state) {
|
|
15331
|
+
// broadening the scope of facets to avoid conflict between never and *
|
|
15332
|
+
return facets.reduce(function (acc, curr) {
|
|
15333
|
+
return acc.addFacet(curr);
|
|
15334
|
+
}, state.setQueryParameters({
|
|
15335
|
+
maxValuesPerFacet: Math.max(maxValuesPerFacet || 0, state.maxValuesPerFacet || 0)
|
|
15336
|
+
}));
|
|
15337
|
+
},
|
|
15321
15338
|
getRenderState: function getRenderState(renderState, renderOptions) {
|
|
15322
15339
|
return _objectSpread2(_objectSpread2({}, renderState), {}, {
|
|
15323
15340
|
dynamicWidgets: this.getWidgetRenderState(renderOptions)
|
|
@@ -15326,7 +15343,8 @@
|
|
|
15326
15343
|
getWidgetRenderState: function getWidgetRenderState(_ref4) {
|
|
15327
15344
|
var _results$renderingCon, _results$renderingCon2, _results$renderingCon3, _results$renderingCon4;
|
|
15328
15345
|
|
|
15329
|
-
var results = _ref4.results
|
|
15346
|
+
var results = _ref4.results,
|
|
15347
|
+
state = _ref4.state;
|
|
15330
15348
|
|
|
15331
15349
|
if (!results) {
|
|
15332
15350
|
return {
|
|
@@ -15335,11 +15353,18 @@
|
|
|
15335
15353
|
};
|
|
15336
15354
|
}
|
|
15337
15355
|
|
|
15338
|
-
var attributesToRender = (_results$renderingCon = (_results$renderingCon2 = results.renderingContent) === null || _results$renderingCon2 === void 0 ? void 0 : (_results$renderingCon3 = _results$renderingCon2.facetOrdering) === null || _results$renderingCon3 === void 0 ? void 0 : (_results$renderingCon4 = _results$renderingCon3.facets) === null || _results$renderingCon4 === void 0 ? void 0 : _results$renderingCon4.order) !== null && _results$renderingCon !== void 0 ? _results$renderingCon : []
|
|
15356
|
+
var attributesToRender = transformItems((_results$renderingCon = (_results$renderingCon2 = results.renderingContent) === null || _results$renderingCon2 === void 0 ? void 0 : (_results$renderingCon3 = _results$renderingCon2.facetOrdering) === null || _results$renderingCon3 === void 0 ? void 0 : (_results$renderingCon4 = _results$renderingCon3.facets) === null || _results$renderingCon4 === void 0 ? void 0 : _results$renderingCon4.order) !== null && _results$renderingCon !== void 0 ? _results$renderingCon : [], {
|
|
15357
|
+
results: results
|
|
15358
|
+
});
|
|
15359
|
+
|
|
15360
|
+
if (!Array.isArray(attributesToRender)) {
|
|
15361
|
+
throw new Error(withUsage$r('The `transformItems` option expects a function that returns an Array.'));
|
|
15362
|
+
}
|
|
15363
|
+
|
|
15364
|
+
_warning(maxValuesPerFacet >= (state.maxValuesPerFacet || 0), "The maxValuesPerFacet set by dynamic widgets (".concat(maxValuesPerFacet, ") is smaller than one of the limits set by a widget (").concat(state.maxValuesPerFacet, "). This causes a mismatch in query parameters and thus an extra network request when that widget is mounted.")) ;
|
|
15365
|
+
_warning(attributesToRender.length <= MAX_WILDCARD_FACETS || widgetParams.facets !== undefined, "More than ".concat(MAX_WILDCARD_FACETS, " facets are requested to be displayed without explicitly setting which facets to retrieve. This could have a performance impact. Set \"facets\" to [] to do two smaller network requests, or explicitly to ['*'] to avoid this warning.")) ;
|
|
15339
15366
|
return {
|
|
15340
|
-
attributesToRender:
|
|
15341
|
-
results: results
|
|
15342
|
-
}),
|
|
15367
|
+
attributesToRender: attributesToRender,
|
|
15343
15368
|
widgetParams: widgetParams
|
|
15344
15369
|
};
|
|
15345
15370
|
}
|
|
@@ -16211,9 +16236,9 @@
|
|
|
16211
16236
|
var dynamicWidgets = function dynamicWidgets(widgetParams) {
|
|
16212
16237
|
var _ref = widgetParams || {},
|
|
16213
16238
|
containerSelector = _ref.container,
|
|
16214
|
-
transformItems = _ref.transformItems,
|
|
16215
16239
|
widgets = _ref.widgets,
|
|
16216
|
-
fallbackWidget = _ref.fallbackWidget
|
|
16240
|
+
fallbackWidget = _ref.fallbackWidget,
|
|
16241
|
+
otherWidgetParams = _objectWithoutProperties(_ref, ["container", "widgets", "fallbackWidget"]);
|
|
16217
16242
|
|
|
16218
16243
|
if (!containerSelector) {
|
|
16219
16244
|
throw new Error(withUsage$x('The `container` option is required.'));
|
|
@@ -16248,8 +16273,7 @@
|
|
|
16248
16273
|
}, function () {
|
|
16249
16274
|
userContainer.removeChild(rootContainer);
|
|
16250
16275
|
});
|
|
16251
|
-
var widget = makeWidget({
|
|
16252
|
-
transformItems: transformItems,
|
|
16276
|
+
var widget = makeWidget(_objectSpread2(_objectSpread2({}, otherWidgetParams), {}, {
|
|
16253
16277
|
widgets: connectorWidgets,
|
|
16254
16278
|
fallbackWidget: typeof fallbackWidget === 'function' ? function (_ref3) {
|
|
16255
16279
|
var attribute = _ref3.attribute;
|
|
@@ -16260,7 +16284,7 @@
|
|
|
16260
16284
|
container: container
|
|
16261
16285
|
});
|
|
16262
16286
|
} : undefined
|
|
16263
|
-
});
|
|
16287
|
+
}));
|
|
16264
16288
|
return _objectSpread2(_objectSpread2({}, widget), {}, {
|
|
16265
16289
|
init: function init(initOptions) {
|
|
16266
16290
|
widgets.forEach(function (cb) {
|