instantsearch.js 4.68.0 → 4.69.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.
Files changed (56) hide show
  1. package/cjs/connectors/frequently-bought-together/connectFrequentlyBoughtTogether.js +93 -0
  2. package/cjs/connectors/index.js +28 -0
  3. package/cjs/connectors/looking-similar/connectLookingSimilar.js +94 -0
  4. package/cjs/connectors/related-products/connectRelatedProducts.js +94 -0
  5. package/cjs/connectors/trending-items/connectTrendingItems.js +90 -0
  6. package/cjs/lib/InstantSearch.js +9 -1
  7. package/cjs/lib/utils/addWidgetId.js +13 -0
  8. package/cjs/lib/utils/render-args.js +3 -3
  9. package/cjs/lib/version.js +1 -1
  10. package/cjs/widgets/frequently-bought-together/frequently-bought-together.js +120 -0
  11. package/cjs/widgets/index/index.js +82 -20
  12. package/cjs/widgets/index.js +28 -0
  13. package/cjs/widgets/looking-similar/looking-similar.js +122 -0
  14. package/cjs/widgets/related-products/related-products.js +122 -0
  15. package/cjs/widgets/trending-items/trending-items.js +126 -0
  16. package/dist/instantsearch.development.d.ts +403 -10
  17. package/dist/instantsearch.development.js +1679 -274
  18. package/dist/instantsearch.development.js.map +1 -1
  19. package/dist/instantsearch.production.d.ts +403 -10
  20. package/dist/instantsearch.production.min.d.ts +403 -10
  21. package/dist/instantsearch.production.min.js +2 -2
  22. package/dist/instantsearch.production.min.js.map +1 -1
  23. package/es/connectors/frequently-bought-together/connectFrequentlyBoughtTogether.d.ts +45 -0
  24. package/es/connectors/frequently-bought-together/connectFrequentlyBoughtTogether.js +86 -0
  25. package/es/connectors/index.d.ts +4 -0
  26. package/es/connectors/index.js +5 -1
  27. package/es/connectors/looking-similar/connectLookingSimilar.d.ts +49 -0
  28. package/es/connectors/looking-similar/connectLookingSimilar.js +87 -0
  29. package/es/connectors/related-products/connectRelatedProducts.d.ts +49 -0
  30. package/es/connectors/related-products/connectRelatedProducts.js +87 -0
  31. package/es/connectors/trending-items/connectTrendingItems.d.ts +57 -0
  32. package/es/connectors/trending-items/connectTrendingItems.js +83 -0
  33. package/es/lib/InstantSearch.d.ts +2 -0
  34. package/es/lib/InstantSearch.js +9 -1
  35. package/es/lib/templating/renderTemplate.d.ts +1 -1
  36. package/es/lib/utils/addWidgetId.d.ts +2 -0
  37. package/es/lib/utils/addWidgetId.js +7 -0
  38. package/es/lib/utils/render-args.d.ts +3 -3
  39. package/es/lib/utils/render-args.js +3 -3
  40. package/es/lib/version.d.ts +1 -1
  41. package/es/lib/version.js +1 -1
  42. package/es/types/templates.d.ts +1 -1
  43. package/es/types/widget.d.ts +16 -9
  44. package/es/widgets/frequently-bought-together/frequently-bought-together.d.ts +41 -0
  45. package/es/widgets/frequently-bought-together/frequently-bought-together.js +112 -0
  46. package/es/widgets/index/index.d.ts +2 -1
  47. package/es/widgets/index/index.js +82 -20
  48. package/es/widgets/index.d.ts +4 -0
  49. package/es/widgets/index.js +5 -1
  50. package/es/widgets/looking-similar/looking-similar.d.ts +41 -0
  51. package/es/widgets/looking-similar/looking-similar.js +114 -0
  52. package/es/widgets/related-products/related-products.d.ts +41 -0
  53. package/es/widgets/related-products/related-products.js +114 -0
  54. package/es/widgets/trending-items/trending-items.d.ts +41 -0
  55. package/es/widgets/trending-items/trending-items.js +118 -0
  56. package/package.json +7 -7
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _utils = require("../../lib/utils");
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); }
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; }
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; }
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; }
12
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
13
+ 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); }
14
+ var withUsage = (0, _utils.createDocumentationMessageGenerator)({
15
+ name: 'frequently-bought-together',
16
+ connector: true
17
+ });
18
+ var connectFrequentlyBoughtTogether = function connectFrequentlyBoughtTogether(renderFn) {
19
+ var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _utils.noop;
20
+ (0, _utils.checkRendering)(renderFn, withUsage());
21
+ return function (widgetParams) {
22
+ var _ref = widgetParams || {},
23
+ _ref$escapeHTML = _ref.escapeHTML,
24
+ escapeHTML = _ref$escapeHTML === void 0 ? true : _ref$escapeHTML,
25
+ _ref$transformItems = _ref.transformItems,
26
+ transformItems = _ref$transformItems === void 0 ? function (items) {
27
+ return items;
28
+ } : _ref$transformItems,
29
+ objectIDs = _ref.objectIDs,
30
+ limit = _ref.limit,
31
+ threshold = _ref.threshold,
32
+ queryParameters = _ref.queryParameters;
33
+ if (!objectIDs || objectIDs.length === 0) {
34
+ throw new Error(withUsage('The `objectIDs` option is required.'));
35
+ }
36
+ return {
37
+ dependsOn: 'recommend',
38
+ $$type: 'ais.frequentlyBoughtTogether',
39
+ init: function init(initOptions) {
40
+ renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(initOptions)), {}, {
41
+ instantSearchInstance: initOptions.instantSearchInstance
42
+ }), true);
43
+ },
44
+ render: function render(renderOptions) {
45
+ var renderState = this.getWidgetRenderState(renderOptions);
46
+ renderFn(_objectSpread(_objectSpread({}, renderState), {}, {
47
+ instantSearchInstance: renderOptions.instantSearchInstance
48
+ }), false);
49
+ },
50
+ getRenderState: function getRenderState(renderState) {
51
+ return renderState;
52
+ },
53
+ getWidgetRenderState: function getWidgetRenderState(_ref2) {
54
+ var results = _ref2.results;
55
+ if (results === null || results === undefined) {
56
+ return {
57
+ items: [],
58
+ widgetParams: widgetParams
59
+ };
60
+ }
61
+ if (escapeHTML && results.hits.length > 0) {
62
+ results.hits = (0, _utils.escapeHits)(results.hits);
63
+ }
64
+ var transformedItems = transformItems(results.hits, {
65
+ results: results
66
+ });
67
+ return {
68
+ items: transformedItems,
69
+ widgetParams: widgetParams
70
+ };
71
+ },
72
+ dispose: function dispose(_ref3) {
73
+ var recommendState = _ref3.recommendState;
74
+ unmountFn();
75
+ return recommendState.removeParams(this.$$id);
76
+ },
77
+ getWidgetParameters: function getWidgetParameters(state) {
78
+ var _this = this;
79
+ return objectIDs.reduce(function (acc, objectID) {
80
+ return acc.addFrequentlyBoughtTogether({
81
+ objectID: objectID,
82
+ threshold: threshold,
83
+ maxRecommendations: limit,
84
+ queryParameters: _objectSpread(_objectSpread({}, queryParameters), escapeHTML ? _utils.TAG_PLACEHOLDER : {}),
85
+ $$id: _this.$$id
86
+ });
87
+ }, state.removeParams(this.$$id));
88
+ }
89
+ };
90
+ };
91
+ };
92
+ var _default = connectFrequentlyBoughtTogether;
93
+ exports.default = _default;
@@ -47,6 +47,12 @@ Object.defineProperty(exports, "connectDynamicWidgets", {
47
47
  return _connectDynamicWidgets.default;
48
48
  }
49
49
  });
50
+ Object.defineProperty(exports, "connectFrequentlyBoughtTogether", {
51
+ enumerable: true,
52
+ get: function get() {
53
+ return _connectFrequentlyBoughtTogether.default;
54
+ }
55
+ });
50
56
  Object.defineProperty(exports, "connectGeoSearch", {
51
57
  enumerable: true,
52
58
  get: function get() {
@@ -89,6 +95,12 @@ Object.defineProperty(exports, "connectInfiniteHitsWithInsights", {
89
95
  return _connectInfiniteHitsWithInsights.default;
90
96
  }
91
97
  });
98
+ Object.defineProperty(exports, "connectLookingSimilar", {
99
+ enumerable: true,
100
+ get: function get() {
101
+ return _connectLookingSimilar.default;
102
+ }
103
+ });
92
104
  Object.defineProperty(exports, "connectMenu", {
93
105
  enumerable: true,
94
106
  get: function get() {
@@ -137,6 +149,12 @@ Object.defineProperty(exports, "connectRefinementList", {
137
149
  return _connectRefinementList.default;
138
150
  }
139
151
  });
152
+ Object.defineProperty(exports, "connectRelatedProducts", {
153
+ enumerable: true,
154
+ get: function get() {
155
+ return _connectRelatedProducts.default;
156
+ }
157
+ });
140
158
  Object.defineProperty(exports, "connectRelevantSort", {
141
159
  enumerable: true,
142
160
  get: function get() {
@@ -167,6 +185,12 @@ Object.defineProperty(exports, "connectToggleRefinement", {
167
185
  return _connectToggleRefinement.default;
168
186
  }
169
187
  });
188
+ Object.defineProperty(exports, "connectTrendingItems", {
189
+ enumerable: true,
190
+ get: function get() {
191
+ return _connectTrendingItems.default;
192
+ }
193
+ });
170
194
  Object.defineProperty(exports, "connectVoiceSearch", {
171
195
  enumerable: true,
172
196
  get: function get() {
@@ -189,11 +213,13 @@ var _connectNumericMenu = _interopRequireDefault(require("./numeric-menu/connect
189
213
  var _connectPagination = _interopRequireDefault(require("./pagination/connectPagination"));
190
214
  var _connectRange = _interopRequireDefault(require("./range/connectRange"));
191
215
  var _connectRefinementList = _interopRequireDefault(require("./refinement-list/connectRefinementList"));
216
+ var _connectRelatedProducts = _interopRequireDefault(require("./related-products/connectRelatedProducts"));
192
217
  var _connectSearchBox = _interopRequireDefault(require("./search-box/connectSearchBox"));
193
218
  var _connectSortBy = _interopRequireDefault(require("./sort-by/connectSortBy"));
194
219
  var _connectRatingMenu = _interopRequireDefault(require("./rating-menu/connectRatingMenu"));
195
220
  var _connectStats = _interopRequireDefault(require("./stats/connectStats"));
196
221
  var _connectToggleRefinement = _interopRequireDefault(require("./toggle-refinement/connectToggleRefinement"));
222
+ var _connectTrendingItems = _interopRequireDefault(require("./trending-items/connectTrendingItems"));
197
223
  var _connectBreadcrumb = _interopRequireDefault(require("./breadcrumb/connectBreadcrumb"));
198
224
  var _connectGeoSearch = _interopRequireDefault(require("./geo-search/connectGeoSearch"));
199
225
  var _connectPoweredBy = _interopRequireDefault(require("./powered-by/connectPoweredBy"));
@@ -203,6 +229,8 @@ var _connectAutocomplete = _interopRequireDefault(require("./autocomplete/connec
203
229
  var _connectQueryRules = _interopRequireDefault(require("./query-rules/connectQueryRules"));
204
230
  var _connectVoiceSearch = _interopRequireDefault(require("./voice-search/connectVoiceSearch"));
205
231
  var _connectRelevantSort = _interopRequireDefault(require("./relevant-sort/connectRelevantSort"));
232
+ var _connectFrequentlyBoughtTogether = _interopRequireDefault(require("./frequently-bought-together/connectFrequentlyBoughtTogether"));
233
+ var _connectLookingSimilar = _interopRequireDefault(require("./looking-similar/connectLookingSimilar"));
206
234
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
207
235
  /** @deprecated answers is no longer supported */
208
236
  var EXPERIMENTAL_connectAnswers = (0, _utils.deprecate)(_connectAnswers.default, 'answers is no longer supported');
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _utils = require("../../lib/utils");
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); }
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; }
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; }
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; }
12
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
13
+ 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); }
14
+ var withUsage = (0, _utils.createDocumentationMessageGenerator)({
15
+ name: 'looking-similar',
16
+ connector: true
17
+ });
18
+ var connectLookingSimilar = function connectLookingSimilar(renderFn) {
19
+ var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _utils.noop;
20
+ (0, _utils.checkRendering)(renderFn, withUsage());
21
+ return function LookingSimilar(widgetParams) {
22
+ var _ref = widgetParams || {},
23
+ _ref$escapeHTML = _ref.escapeHTML,
24
+ escapeHTML = _ref$escapeHTML === void 0 ? true : _ref$escapeHTML,
25
+ objectIDs = _ref.objectIDs,
26
+ limit = _ref.limit,
27
+ threshold = _ref.threshold,
28
+ fallbackParameters = _ref.fallbackParameters,
29
+ queryParameters = _ref.queryParameters,
30
+ _ref$transformItems = _ref.transformItems,
31
+ transformItems = _ref$transformItems === void 0 ? function (items) {
32
+ return items;
33
+ } : _ref$transformItems;
34
+ if (!objectIDs || objectIDs.length === 0) {
35
+ throw new Error(withUsage('The `objectIDs` option is required.'));
36
+ }
37
+ return {
38
+ dependsOn: 'recommend',
39
+ $$type: 'ais.lookingSimilar',
40
+ init: function init(initOptions) {
41
+ renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(initOptions)), {}, {
42
+ instantSearchInstance: initOptions.instantSearchInstance
43
+ }), true);
44
+ },
45
+ render: function render(renderOptions) {
46
+ var renderState = this.getWidgetRenderState(renderOptions);
47
+ renderFn(_objectSpread(_objectSpread({}, renderState), {}, {
48
+ instantSearchInstance: renderOptions.instantSearchInstance
49
+ }), false);
50
+ },
51
+ getRenderState: function getRenderState(renderState) {
52
+ return renderState;
53
+ },
54
+ getWidgetRenderState: function getWidgetRenderState(_ref2) {
55
+ var results = _ref2.results;
56
+ if (results === null || results === undefined) {
57
+ return {
58
+ items: [],
59
+ widgetParams: widgetParams
60
+ };
61
+ }
62
+ if (escapeHTML && results.hits.length > 0) {
63
+ results.hits = (0, _utils.escapeHits)(results.hits);
64
+ }
65
+ return {
66
+ items: transformItems(results.hits, {
67
+ results: results
68
+ }),
69
+ widgetParams: widgetParams
70
+ };
71
+ },
72
+ dispose: function dispose(_ref3) {
73
+ var recommendState = _ref3.recommendState;
74
+ unmountFn();
75
+ return recommendState.removeParams(this.$$id);
76
+ },
77
+ getWidgetParameters: function getWidgetParameters(state) {
78
+ var _this = this;
79
+ return objectIDs.reduce(function (acc, objectID) {
80
+ return acc.addLookingSimilar({
81
+ objectID: objectID,
82
+ maxRecommendations: limit,
83
+ threshold: threshold,
84
+ fallbackParameters: _objectSpread(_objectSpread({}, fallbackParameters), escapeHTML ? _utils.TAG_PLACEHOLDER : {}),
85
+ queryParameters: _objectSpread(_objectSpread({}, queryParameters), escapeHTML ? _utils.TAG_PLACEHOLDER : {}),
86
+ $$id: _this.$$id
87
+ });
88
+ }, state.removeParams(this.$$id));
89
+ }
90
+ };
91
+ };
92
+ };
93
+ var _default = connectLookingSimilar;
94
+ exports.default = _default;
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _utils = require("../../lib/utils");
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); }
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; }
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; }
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; }
12
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
13
+ 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); }
14
+ var withUsage = (0, _utils.createDocumentationMessageGenerator)({
15
+ name: 'related-products',
16
+ connector: true
17
+ });
18
+ var connectRelatedProducts = function connectRelatedProducts(renderFn) {
19
+ var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _utils.noop;
20
+ (0, _utils.checkRendering)(renderFn, withUsage());
21
+ return function relatedProducts(widgetParams) {
22
+ var _ref = widgetParams || {},
23
+ _ref$escapeHTML = _ref.escapeHTML,
24
+ escapeHTML = _ref$escapeHTML === void 0 ? true : _ref$escapeHTML,
25
+ objectIDs = _ref.objectIDs,
26
+ limit = _ref.limit,
27
+ threshold = _ref.threshold,
28
+ fallbackParameters = _ref.fallbackParameters,
29
+ queryParameters = _ref.queryParameters,
30
+ _ref$transformItems = _ref.transformItems,
31
+ transformItems = _ref$transformItems === void 0 ? function (items) {
32
+ return items;
33
+ } : _ref$transformItems;
34
+ if (!objectIDs || objectIDs.length === 0) {
35
+ throw new Error(withUsage('The `objectIDs` option is required.'));
36
+ }
37
+ return {
38
+ dependsOn: 'recommend',
39
+ $$type: 'ais.relatedProducts',
40
+ init: function init(initOptions) {
41
+ renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(initOptions)), {}, {
42
+ instantSearchInstance: initOptions.instantSearchInstance
43
+ }), true);
44
+ },
45
+ render: function render(renderOptions) {
46
+ var renderState = this.getWidgetRenderState(renderOptions);
47
+ renderFn(_objectSpread(_objectSpread({}, renderState), {}, {
48
+ instantSearchInstance: renderOptions.instantSearchInstance
49
+ }), false);
50
+ },
51
+ getRenderState: function getRenderState(renderState) {
52
+ return renderState;
53
+ },
54
+ getWidgetRenderState: function getWidgetRenderState(_ref2) {
55
+ var results = _ref2.results;
56
+ if (results === null || results === undefined) {
57
+ return {
58
+ items: [],
59
+ widgetParams: widgetParams
60
+ };
61
+ }
62
+ if (escapeHTML && results.hits.length > 0) {
63
+ results.hits = (0, _utils.escapeHits)(results.hits);
64
+ }
65
+ return {
66
+ items: transformItems(results.hits, {
67
+ results: results
68
+ }),
69
+ widgetParams: widgetParams
70
+ };
71
+ },
72
+ dispose: function dispose(_ref3) {
73
+ var recommendState = _ref3.recommendState;
74
+ unmountFn();
75
+ return recommendState.removeParams(this.$$id);
76
+ },
77
+ getWidgetParameters: function getWidgetParameters(state) {
78
+ var _this = this;
79
+ return objectIDs.reduce(function (acc, objectID) {
80
+ return acc.addRelatedProducts({
81
+ objectID: objectID,
82
+ maxRecommendations: limit,
83
+ threshold: threshold,
84
+ fallbackParameters: _objectSpread(_objectSpread({}, fallbackParameters), escapeHTML ? _utils.TAG_PLACEHOLDER : {}),
85
+ queryParameters: _objectSpread(_objectSpread({}, queryParameters), escapeHTML ? _utils.TAG_PLACEHOLDER : {}),
86
+ $$id: _this.$$id
87
+ });
88
+ }, state.removeParams(this.$$id));
89
+ }
90
+ };
91
+ };
92
+ };
93
+ var _default = connectRelatedProducts;
94
+ exports.default = _default;
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _utils = require("../../lib/utils");
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); }
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; }
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; }
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; }
12
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
13
+ 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); }
14
+ var withUsage = (0, _utils.createDocumentationMessageGenerator)({
15
+ name: 'trending-items',
16
+ connector: true
17
+ });
18
+ var connectTrendingItems = function connectTrendingItems(renderFn) {
19
+ var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _utils.noop;
20
+ (0, _utils.checkRendering)(renderFn, withUsage());
21
+ return function trendingItems(widgetParams) {
22
+ var _ref = widgetParams || {},
23
+ facetName = _ref.facetName,
24
+ facetValue = _ref.facetValue,
25
+ limit = _ref.limit,
26
+ threshold = _ref.threshold,
27
+ fallbackParameters = _ref.fallbackParameters,
28
+ queryParameters = _ref.queryParameters,
29
+ _ref$escapeHTML = _ref.escapeHTML,
30
+ escapeHTML = _ref$escapeHTML === void 0 ? true : _ref$escapeHTML,
31
+ _ref$transformItems = _ref.transformItems,
32
+ transformItems = _ref$transformItems === void 0 ? function (items) {
33
+ return items;
34
+ } : _ref$transformItems;
35
+ return {
36
+ dependsOn: 'recommend',
37
+ $$type: 'ais.trendingItems',
38
+ init: function init(initOptions) {
39
+ renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(initOptions)), {}, {
40
+ instantSearchInstance: initOptions.instantSearchInstance
41
+ }), true);
42
+ },
43
+ render: function render(renderOptions) {
44
+ var renderState = this.getWidgetRenderState(renderOptions);
45
+ renderFn(_objectSpread(_objectSpread({}, renderState), {}, {
46
+ instantSearchInstance: renderOptions.instantSearchInstance
47
+ }), false);
48
+ },
49
+ getRenderState: function getRenderState(renderState) {
50
+ return renderState;
51
+ },
52
+ getWidgetRenderState: function getWidgetRenderState(_ref2) {
53
+ var results = _ref2.results;
54
+ if (results === null || results === undefined) {
55
+ return {
56
+ items: [],
57
+ widgetParams: widgetParams
58
+ };
59
+ }
60
+ if (escapeHTML && results.hits.length > 0) {
61
+ results.hits = (0, _utils.escapeHits)(results.hits);
62
+ }
63
+ return {
64
+ items: transformItems(results.hits, {
65
+ results: results
66
+ }),
67
+ widgetParams: widgetParams
68
+ };
69
+ },
70
+ dispose: function dispose(_ref3) {
71
+ var recommendState = _ref3.recommendState;
72
+ unmountFn();
73
+ return recommendState.removeParams(this.$$id);
74
+ },
75
+ getWidgetParameters: function getWidgetParameters(state) {
76
+ return state.removeParams(this.$$id).addTrendingItems({
77
+ facetName: facetName,
78
+ facetValue: facetValue,
79
+ maxRecommendations: limit,
80
+ threshold: threshold,
81
+ fallbackParameters: _objectSpread(_objectSpread({}, fallbackParameters), escapeHTML ? _utils.TAG_PLACEHOLDER : {}),
82
+ queryParameters: _objectSpread(_objectSpread({}, queryParameters), escapeHTML ? _utils.TAG_PLACEHOLDER : {}),
83
+ $$id: this.$$id
84
+ });
85
+ }
86
+ };
87
+ };
88
+ };
89
+ var _default = connectTrendingItems;
90
+ exports.default = _default;
@@ -82,6 +82,8 @@ var InstantSearch = /*#__PURE__*/function (_EventEmitter) {
82
82
  _defineProperty(_assertThisInitialized(_this), "_createURL", void 0);
83
83
  _defineProperty(_assertThisInitialized(_this), "_searchFunction", void 0);
84
84
  _defineProperty(_assertThisInitialized(_this), "_mainHelperSearch", void 0);
85
+ _defineProperty(_assertThisInitialized(_this), "_hasSearchWidget", false);
86
+ _defineProperty(_assertThisInitialized(_this), "_hasRecommendWidget", false);
85
87
  _defineProperty(_assertThisInitialized(_this), "_insights", void 0);
86
88
  _defineProperty(_assertThisInitialized(_this), "middleware", []);
87
89
  _defineProperty(_assertThisInitialized(_this), "sendEventToInsights", void 0);
@@ -392,7 +394,13 @@ var InstantSearch = /*#__PURE__*/function (_EventEmitter) {
392
394
  // under the hood, we have a different implementation. It should be
393
395
  // completely transparent for the rest of the codebase. Only this module
394
396
  // is impacted.
395
- return mainHelper.searchOnlyWithDerivedHelpers() && mainHelper.recommend();
397
+ if (_this3._hasSearchWidget) {
398
+ mainHelper.searchOnlyWithDerivedHelpers();
399
+ }
400
+ if (_this3._hasRecommendWidget) {
401
+ mainHelper.recommend();
402
+ }
403
+ return mainHelper;
396
404
  };
397
405
  if (this._searchFunction) {
398
406
  // this client isn't used to actually search, but required for the helper
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.addWidgetId = addWidgetId;
7
+ var id = 0;
8
+ function addWidgetId(widget) {
9
+ if (widget.dependsOn !== 'recommend') {
10
+ return;
11
+ }
12
+ widget.$$id = id++;
13
+ }
@@ -24,8 +24,8 @@ function createInitArgs(instantSearchInstance, parent, uiState) {
24
24
  error: instantSearchInstance.error
25
25
  };
26
26
  }
27
- function createRenderArgs(instantSearchInstance, parent) {
28
- var results = parent.getResults();
27
+ function createRenderArgs(instantSearchInstance, parent, widget) {
28
+ var results = parent.getResultsForWidget(widget);
29
29
  var helper = parent.getHelper();
30
30
  return {
31
31
  helper: helper,
@@ -33,7 +33,7 @@ function createRenderArgs(instantSearchInstance, parent) {
33
33
  instantSearchInstance: instantSearchInstance,
34
34
  results: results,
35
35
  scopedResults: parent.getScopedResults(),
36
- state: results ? results._state : helper.state,
36
+ state: results && '_state' in results ? results._state : helper.state,
37
37
  renderState: instantSearchInstance.renderState,
38
38
  templatesConfig: instantSearchInstance.templatesConfig,
39
39
  createURL: parent.createURL,
@@ -4,5 +4,5 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
- var _default = '4.68.0';
7
+ var _default = '4.69.0';
8
8
  exports.default = _default;
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+
3
+ 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); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _instantsearchUiComponents = require("instantsearch-ui-components");
9
+ var _preact = require("preact");
10
+ var _Template = _interopRequireDefault(require("../../components/Template/Template"));
11
+ var _connectFrequentlyBoughtTogether = _interopRequireDefault(require("../../connectors/frequently-bought-together/connectFrequentlyBoughtTogether"));
12
+ var _templating = require("../../lib/templating");
13
+ var _utils = require("../../lib/utils");
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+ 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; }
16
+ 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; }
17
+ 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; }
18
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
19
+ 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); }
20
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
21
+ var withUsage = (0, _utils.createDocumentationMessageGenerator)({
22
+ name: 'frequently-bought-together'
23
+ });
24
+ var FrequentlyBoughtTogether = (0, _instantsearchUiComponents.createFrequentlyBoughtTogetherComponent)({
25
+ createElement: _preact.h,
26
+ Fragment: _preact.Fragment
27
+ });
28
+ var renderer = function renderer(_ref) {
29
+ var renderState = _ref.renderState,
30
+ cssClasses = _ref.cssClasses,
31
+ containerNode = _ref.containerNode,
32
+ templates = _ref.templates;
33
+ return function (_ref2, isFirstRendering) {
34
+ var items = _ref2.items,
35
+ results = _ref2.results,
36
+ instantSearchInstance = _ref2.instantSearchInstance;
37
+ if (isFirstRendering) {
38
+ renderState.templateProps = (0, _templating.prepareTemplateProps)({
39
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
40
+ defaultTemplates: {},
41
+ templatesConfig: instantSearchInstance.templatesConfig,
42
+ templates: templates
43
+ });
44
+ return;
45
+ }
46
+ var headerComponent = templates.header ? function (data) {
47
+ return (0, _preact.h)(_Template.default, _extends({}, renderState.templateProps, {
48
+ templateKey: "header",
49
+ rootTagName: "fragment",
50
+ data: {
51
+ cssClasses: data.classNames,
52
+ items: data.items
53
+ }
54
+ }));
55
+ } : undefined;
56
+ var itemComponent = templates.item ? function (_ref3) {
57
+ var item = _ref3.item;
58
+ return (0, _preact.h)(_Template.default, _extends({}, renderState.templateProps, {
59
+ templateKey: "item",
60
+ rootTagName: "fragment",
61
+ data: item
62
+ }));
63
+ } : undefined;
64
+ var emptyComponent = templates.empty ? function () {
65
+ return (0, _preact.h)(_Template.default, _extends({}, renderState.templateProps, {
66
+ templateKey: "empty",
67
+ rootTagName: "fragment",
68
+ data: results
69
+ }));
70
+ } : undefined;
71
+ (0, _preact.render)((0, _preact.h)(FrequentlyBoughtTogether, {
72
+ items: items,
73
+ headerComponent: headerComponent,
74
+ itemComponent: itemComponent,
75
+ sendEvent: function sendEvent() {},
76
+ classNames: cssClasses,
77
+ emptyComponent: emptyComponent,
78
+ status: instantSearchInstance.status
79
+ }), containerNode);
80
+ };
81
+ };
82
+ var frequentlyBoughtTogether = function frequentlyBoughtTogether(widgetParams) {
83
+ var _ref4 = widgetParams || {},
84
+ container = _ref4.container,
85
+ objectIDs = _ref4.objectIDs,
86
+ limit = _ref4.limit,
87
+ queryParameters = _ref4.queryParameters,
88
+ threshold = _ref4.threshold,
89
+ escapeHTML = _ref4.escapeHTML,
90
+ transformItems = _ref4.transformItems,
91
+ _ref4$templates = _ref4.templates,
92
+ templates = _ref4$templates === void 0 ? {} : _ref4$templates,
93
+ _ref4$cssClasses = _ref4.cssClasses,
94
+ cssClasses = _ref4$cssClasses === void 0 ? {} : _ref4$cssClasses;
95
+ if (!container) {
96
+ throw new Error(withUsage('The `container` option is required.'));
97
+ }
98
+ var containerNode = (0, _utils.getContainerNode)(container);
99
+ var specializedRenderer = renderer({
100
+ containerNode: containerNode,
101
+ cssClasses: cssClasses,
102
+ renderState: {},
103
+ templates: templates
104
+ });
105
+ var makeWidget = (0, _connectFrequentlyBoughtTogether.default)(specializedRenderer, function () {
106
+ return (0, _preact.render)(null, containerNode);
107
+ });
108
+ return _objectSpread(_objectSpread({}, makeWidget({
109
+ objectIDs: objectIDs,
110
+ limit: limit,
111
+ queryParameters: queryParameters,
112
+ threshold: threshold,
113
+ escapeHTML: escapeHTML,
114
+ transformItems: transformItems
115
+ })), {}, {
116
+ $$widgetType: 'ais.frequentlyBoughtTogether'
117
+ });
118
+ };
119
+ var _default = frequentlyBoughtTogether;
120
+ exports.default = _default;