instantsearch.js 4.76.0 → 4.77.1

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 (42) hide show
  1. package/cjs/components/RefinementList/RefinementList.js +2 -2
  2. package/cjs/connectors/frequently-bought-together/connectFrequentlyBoughtTogether.js +20 -4
  3. package/cjs/connectors/looking-similar/connectLookingSimilar.js +23 -6
  4. package/cjs/connectors/related-products/connectRelatedProducts.js +23 -6
  5. package/cjs/connectors/trending-items/connectTrendingItems.js +23 -6
  6. package/cjs/lib/utils/getAppIdAndApiKey.js +3 -3
  7. package/cjs/lib/version.js +1 -1
  8. package/cjs/templates/carousel/carousel.js +4 -1
  9. package/cjs/widgets/frequently-bought-together/frequently-bought-together.js +17 -6
  10. package/cjs/widgets/looking-similar/looking-similar.js +16 -5
  11. package/cjs/widgets/related-products/related-products.js +17 -6
  12. package/cjs/widgets/trending-items/trending-items.js +17 -6
  13. package/dist/instantsearch.development.d.ts +39 -13
  14. package/dist/instantsearch.development.js +211 -64
  15. package/dist/instantsearch.development.js.map +1 -1
  16. package/dist/instantsearch.production.d.ts +39 -13
  17. package/dist/instantsearch.production.min.d.ts +39 -13
  18. package/dist/instantsearch.production.min.js +2 -2
  19. package/dist/instantsearch.production.min.js.map +1 -1
  20. package/es/components/RefinementList/RefinementList.js +2 -2
  21. package/es/connectors/frequently-bought-together/connectFrequentlyBoughtTogether.d.ts +7 -1
  22. package/es/connectors/frequently-bought-together/connectFrequentlyBoughtTogether.js +21 -5
  23. package/es/connectors/looking-similar/connectLookingSimilar.d.ts +7 -1
  24. package/es/connectors/looking-similar/connectLookingSimilar.js +24 -7
  25. package/es/connectors/related-products/connectRelatedProducts.d.ts +7 -1
  26. package/es/connectors/related-products/connectRelatedProducts.js +24 -7
  27. package/es/connectors/trending-items/connectTrendingItems.d.ts +7 -1
  28. package/es/connectors/trending-items/connectTrendingItems.js +24 -7
  29. package/es/lib/utils/getAppIdAndApiKey.js +3 -3
  30. package/es/lib/version.d.ts +1 -1
  31. package/es/lib/version.js +1 -1
  32. package/es/templates/carousel/carousel.d.ts +3 -1
  33. package/es/templates/carousel/carousel.js +4 -1
  34. package/es/widgets/frequently-bought-together/frequently-bought-together.d.ts +4 -3
  35. package/es/widgets/frequently-bought-together/frequently-bought-together.js +17 -6
  36. package/es/widgets/looking-similar/looking-similar.d.ts +4 -3
  37. package/es/widgets/looking-similar/looking-similar.js +16 -5
  38. package/es/widgets/related-products/related-products.d.ts +4 -3
  39. package/es/widgets/related-products/related-products.js +17 -6
  40. package/es/widgets/trending-items/trending-items.d.ts +4 -3
  41. package/es/widgets/trending-items/trending-items.js +17 -6
  42. package/package.json +7 -7
@@ -168,8 +168,8 @@ var RefinementList = /*#__PURE__*/function (_Component) {
168
168
  }, {
169
169
  key: "componentDidUpdate",
170
170
  value: function componentDidUpdate() {
171
- var _this$listRef$current, _this$listRef$current2;
172
- (_this$listRef$current = this.listRef.current) === null || _this$listRef$current === void 0 ? void 0 : (_this$listRef$current2 = _this$listRef$current.querySelector("input[value=\"".concat(this.lastRefinedValue, "\"]"))) === null || _this$listRef$current2 === void 0 ? void 0 : _this$listRef$current2.focus();
171
+ var _this$listRef$current, _this$listRef$current2, _this$lastRefinedValu;
172
+ (_this$listRef$current = this.listRef.current) === null || _this$listRef$current === void 0 ? void 0 : (_this$listRef$current2 = _this$listRef$current.querySelector("input[value=\"".concat((_this$lastRefinedValu = this.lastRefinedValue) === null || _this$lastRefinedValu === void 0 ? void 0 : _this$lastRefinedValu.replace('"', '\\"'), "\"]"))) === null || _this$listRef$current2 === void 0 ? void 0 : _this$listRef$current2.focus();
173
173
  this.lastRefinedValue = undefined;
174
174
  }
175
175
  }, {
@@ -1,3 +1,4 @@
1
+ import type { SendEventForHits } from '../../lib/utils';
1
2
  import type { Connector, TransformItems, BaseHit, Renderer, Unmounter, UnknownWidgetParams, RecommendResponse, AlgoliaHit } from '../../types';
2
3
  import type { PlainSearchParameters } from 'algoliasearch-helper';
3
4
  export type FrequentlyBoughtTogetherRenderState<THit extends NonNullable<object> = BaseHit> = {
@@ -5,6 +6,10 @@ export type FrequentlyBoughtTogetherRenderState<THit extends NonNullable<object>
5
6
  * The matched recommendations from Algolia API.
6
7
  */
7
8
  items: Array<AlgoliaHit<THit>>;
9
+ /**
10
+ * Sends an event to the Insights middleware.
11
+ */
12
+ sendEvent: SendEventForHits;
8
13
  };
9
14
  export type FrequentlyBoughtTogetherConnectorParams<THit extends NonNullable<object> = BaseHit> = {
10
15
  /**
@@ -135,7 +140,7 @@ declare const _default: <TWidgetParams extends UnknownWidgetParams>(renderFn: Re
135
140
  analytics?: import("../../types").WidgetRenderState<Record<string, unknown>, import("../../widgets/analytics/analytics").AnalyticsWidgetParams> | undefined;
136
141
  places?: import("../../types").WidgetRenderState<Record<string, unknown>, import("../../widgets/places/places").PlacesWidgetParams> | undefined;
137
142
  };
138
- getWidgetRenderState({ results }: import("../../types").InitOptions | import("../../types").RenderOptions | ({
143
+ getWidgetRenderState({ results, helper, instantSearchInstance }: import("../../types").InitOptions | import("../../types").RenderOptions | ({
139
144
  instantSearchInstance: import("../../types").InstantSearch;
140
145
  parent: import("../../types").IndexWidget;
141
146
  templatesConfig: Record<string, unknown>;
@@ -154,6 +159,7 @@ declare const _default: <TWidgetParams extends UnknownWidgetParams>(renderFn: Re
154
159
  })): {
155
160
  items: AlgoliaHit<THit>[];
156
161
  widgetParams: TWidgetParams & FrequentlyBoughtTogetherConnectorParams<THit>;
162
+ sendEvent: SendEventForHits;
157
163
  };
158
164
  dispose({ recommendState }: import("../../types").DisposeOptions): import("algoliasearch-helper").RecommendParameters;
159
165
  getWidgetParameters(state: import("algoliasearch-helper").RecommendParameters): import("algoliasearch-helper").RecommendParameters;
@@ -4,7 +4,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
4
4
  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; }
5
5
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
6
6
  function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
7
- import { createDocumentationMessageGenerator, checkRendering, noop, escapeHits, TAG_PLACEHOLDER } from "../../lib/utils/index.js";
7
+ import { createDocumentationMessageGenerator, checkRendering, noop, escapeHits, TAG_PLACEHOLDER, createSendEventForHits, addAbsolutePosition, addQueryID } from "../../lib/utils/index.js";
8
8
  var withUsage = createDocumentationMessageGenerator({
9
9
  name: 'frequently-bought-together',
10
10
  connector: true
@@ -27,6 +27,7 @@ export default (function connectFrequentlyBoughtTogether(renderFn) {
27
27
  if (!objectIDs || objectIDs.length === 0) {
28
28
  throw new Error(withUsage('The `objectIDs` option is required.'));
29
29
  }
30
+ var sendEvent;
30
31
  return {
31
32
  dependsOn: 'recommend',
32
33
  $$type: 'ais.frequentlyBoughtTogether',
@@ -45,22 +46,37 @@ export default (function connectFrequentlyBoughtTogether(renderFn) {
45
46
  return renderState;
46
47
  },
47
48
  getWidgetRenderState: function getWidgetRenderState(_ref2) {
48
- var results = _ref2.results;
49
+ var results = _ref2.results,
50
+ helper = _ref2.helper,
51
+ instantSearchInstance = _ref2.instantSearchInstance;
52
+ if (!sendEvent) {
53
+ sendEvent = createSendEventForHits({
54
+ instantSearchInstance: instantSearchInstance,
55
+ getIndex: function getIndex() {
56
+ return helper.getIndex();
57
+ },
58
+ widgetType: this.$$type
59
+ });
60
+ }
49
61
  if (results === null || results === undefined) {
50
62
  return {
51
63
  items: [],
52
- widgetParams: widgetParams
64
+ widgetParams: widgetParams,
65
+ sendEvent: sendEvent
53
66
  };
54
67
  }
55
68
  if (escapeHTML && results.hits.length > 0) {
56
69
  results.hits = escapeHits(results.hits);
57
70
  }
58
- var transformedItems = transformItems(results.hits, {
71
+ var itemsWithAbsolutePosition = addAbsolutePosition(results.hits, 0, 1);
72
+ var itemsWithAbsolutePositionAndQueryID = addQueryID(itemsWithAbsolutePosition, results.queryID);
73
+ var transformedItems = transformItems(itemsWithAbsolutePositionAndQueryID, {
59
74
  results: results
60
75
  });
61
76
  return {
62
77
  items: transformedItems,
63
- widgetParams: widgetParams
78
+ widgetParams: widgetParams,
79
+ sendEvent: sendEvent
64
80
  };
65
81
  },
66
82
  dispose: function dispose(_ref3) {
@@ -1,3 +1,4 @@
1
+ import type { SendEventForHits } from '../../lib/utils';
1
2
  import type { Connector, TransformItems, BaseHit, Renderer, Unmounter, UnknownWidgetParams, RecommendResponse, AlgoliaHit } from '../../types';
2
3
  import type { PlainSearchParameters } from 'algoliasearch-helper';
3
4
  export type LookingSimilarRenderState<THit extends NonNullable<object> = BaseHit> = {
@@ -5,6 +6,10 @@ export type LookingSimilarRenderState<THit extends NonNullable<object> = BaseHit
5
6
  * The matched recommendations from the Algolia API.
6
7
  */
7
8
  items: Array<AlgoliaHit<THit>>;
9
+ /**
10
+ * Sends an event to the Insights middleware.
11
+ */
12
+ sendEvent: SendEventForHits;
8
13
  };
9
14
  export type LookingSimilarConnectorParams<THit extends NonNullable<object> = BaseHit> = {
10
15
  /**
@@ -139,7 +144,7 @@ declare const _default: <TWidgetParams extends UnknownWidgetParams>(renderFn: Re
139
144
  analytics?: import("../../types").WidgetRenderState<Record<string, unknown>, import("../../widgets/analytics/analytics").AnalyticsWidgetParams> | undefined;
140
145
  places?: import("../../types").WidgetRenderState<Record<string, unknown>, import("../../widgets/places/places").PlacesWidgetParams> | undefined;
141
146
  };
142
- getWidgetRenderState({ results }: import("../../types").InitOptions | import("../../types").RenderOptions | ({
147
+ getWidgetRenderState({ results, helper, instantSearchInstance }: import("../../types").InitOptions | import("../../types").RenderOptions | ({
143
148
  instantSearchInstance: import("../../types").InstantSearch;
144
149
  parent: import("../../types").IndexWidget;
145
150
  templatesConfig: Record<string, unknown>;
@@ -158,6 +163,7 @@ declare const _default: <TWidgetParams extends UnknownWidgetParams>(renderFn: Re
158
163
  })): {
159
164
  items: AlgoliaHit<THit>[];
160
165
  widgetParams: TWidgetParams & LookingSimilarConnectorParams<THit>;
166
+ sendEvent: SendEventForHits;
161
167
  };
162
168
  dispose({ recommendState }: import("../../types").DisposeOptions): import("algoliasearch-helper").RecommendParameters;
163
169
  getWidgetParameters(state: import("algoliasearch-helper").RecommendParameters): import("algoliasearch-helper").RecommendParameters;
@@ -4,7 +4,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
4
4
  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; }
5
5
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
6
6
  function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
7
- import { createDocumentationMessageGenerator, checkRendering, noop, escapeHits, TAG_PLACEHOLDER } from "../../lib/utils/index.js";
7
+ import { createDocumentationMessageGenerator, checkRendering, noop, escapeHits, TAG_PLACEHOLDER, createSendEventForHits, addAbsolutePosition, addQueryID } from "../../lib/utils/index.js";
8
8
  var withUsage = createDocumentationMessageGenerator({
9
9
  name: 'looking-similar',
10
10
  connector: true
@@ -28,6 +28,7 @@ export default (function connectLookingSimilar(renderFn) {
28
28
  if (!objectIDs || objectIDs.length === 0) {
29
29
  throw new Error(withUsage('The `objectIDs` option is required.'));
30
30
  }
31
+ var sendEvent;
31
32
  return {
32
33
  dependsOn: 'recommend',
33
34
  $$type: 'ais.lookingSimilar',
@@ -46,21 +47,37 @@ export default (function connectLookingSimilar(renderFn) {
46
47
  return renderState;
47
48
  },
48
49
  getWidgetRenderState: function getWidgetRenderState(_ref2) {
49
- var results = _ref2.results;
50
+ var results = _ref2.results,
51
+ helper = _ref2.helper,
52
+ instantSearchInstance = _ref2.instantSearchInstance;
53
+ if (!sendEvent) {
54
+ sendEvent = createSendEventForHits({
55
+ instantSearchInstance: instantSearchInstance,
56
+ getIndex: function getIndex() {
57
+ return helper.getIndex();
58
+ },
59
+ widgetType: this.$$type
60
+ });
61
+ }
50
62
  if (results === null || results === undefined) {
51
63
  return {
52
64
  items: [],
53
- widgetParams: widgetParams
65
+ widgetParams: widgetParams,
66
+ sendEvent: sendEvent
54
67
  };
55
68
  }
56
69
  if (escapeHTML && results.hits.length > 0) {
57
70
  results.hits = escapeHits(results.hits);
58
71
  }
72
+ var itemsWithAbsolutePosition = addAbsolutePosition(results.hits, 0, 1);
73
+ var itemsWithAbsolutePositionAndQueryID = addQueryID(itemsWithAbsolutePosition, results.queryID);
74
+ var transformedItems = transformItems(itemsWithAbsolutePositionAndQueryID, {
75
+ results: results
76
+ });
59
77
  return {
60
- items: transformItems(results.hits, {
61
- results: results
62
- }),
63
- widgetParams: widgetParams
78
+ items: transformedItems,
79
+ widgetParams: widgetParams,
80
+ sendEvent: sendEvent
64
81
  };
65
82
  },
66
83
  dispose: function dispose(_ref3) {
@@ -1,3 +1,4 @@
1
+ import type { SendEventForHits } from '../../lib/utils';
1
2
  import type { Connector, TransformItems, BaseHit, Renderer, Unmounter, UnknownWidgetParams, RecommendResponse, AlgoliaHit } from '../../types';
2
3
  import type { PlainSearchParameters } from 'algoliasearch-helper';
3
4
  export type RelatedProductsRenderState<THit extends NonNullable<object> = BaseHit> = {
@@ -5,6 +6,10 @@ export type RelatedProductsRenderState<THit extends NonNullable<object> = BaseHi
5
6
  * The matched recommendations from the Algolia API.
6
7
  */
7
8
  items: Array<AlgoliaHit<THit>>;
9
+ /**
10
+ * Sends an event to the Insights middleware.
11
+ */
12
+ sendEvent: SendEventForHits;
8
13
  };
9
14
  export type RelatedProductsConnectorParams<THit extends NonNullable<object> = BaseHit> = {
10
15
  /**
@@ -139,7 +144,7 @@ declare const _default: <TWidgetParams extends UnknownWidgetParams>(renderFn: Re
139
144
  analytics?: import("../../types").WidgetRenderState<Record<string, unknown>, import("../../widgets/analytics/analytics").AnalyticsWidgetParams> | undefined;
140
145
  places?: import("../../types").WidgetRenderState<Record<string, unknown>, import("../../widgets/places/places").PlacesWidgetParams> | undefined;
141
146
  };
142
- getWidgetRenderState({ results }: import("../../types").InitOptions | import("../../types").RenderOptions | ({
147
+ getWidgetRenderState({ results, helper, instantSearchInstance }: import("../../types").InitOptions | import("../../types").RenderOptions | ({
143
148
  instantSearchInstance: import("../../types").InstantSearch;
144
149
  parent: import("../../types").IndexWidget;
145
150
  templatesConfig: Record<string, unknown>;
@@ -158,6 +163,7 @@ declare const _default: <TWidgetParams extends UnknownWidgetParams>(renderFn: Re
158
163
  })): {
159
164
  items: AlgoliaHit<BaseHit>[] | AlgoliaHit<THit>[];
160
165
  widgetParams: TWidgetParams & RelatedProductsConnectorParams<THit>;
166
+ sendEvent: SendEventForHits;
161
167
  };
162
168
  dispose({ recommendState }: import("../../types").DisposeOptions): import("algoliasearch-helper").RecommendParameters;
163
169
  getWidgetParameters(state: import("algoliasearch-helper").RecommendParameters): import("algoliasearch-helper").RecommendParameters;
@@ -4,7 +4,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
4
4
  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; }
5
5
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
6
6
  function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
7
- import { createDocumentationMessageGenerator, checkRendering, noop, escapeHits, TAG_PLACEHOLDER } from "../../lib/utils/index.js";
7
+ import { createDocumentationMessageGenerator, checkRendering, noop, escapeHits, TAG_PLACEHOLDER, createSendEventForHits, addAbsolutePosition, addQueryID } from "../../lib/utils/index.js";
8
8
  var withUsage = createDocumentationMessageGenerator({
9
9
  name: 'related-products',
10
10
  connector: true
@@ -28,6 +28,7 @@ export default (function connectRelatedProducts(renderFn) {
28
28
  if (!objectIDs || objectIDs.length === 0) {
29
29
  throw new Error(withUsage('The `objectIDs` option is required.'));
30
30
  }
31
+ var sendEvent;
31
32
  return {
32
33
  dependsOn: 'recommend',
33
34
  $$type: 'ais.relatedProducts',
@@ -46,21 +47,37 @@ export default (function connectRelatedProducts(renderFn) {
46
47
  return renderState;
47
48
  },
48
49
  getWidgetRenderState: function getWidgetRenderState(_ref2) {
49
- var results = _ref2.results;
50
+ var results = _ref2.results,
51
+ helper = _ref2.helper,
52
+ instantSearchInstance = _ref2.instantSearchInstance;
53
+ if (!sendEvent) {
54
+ sendEvent = createSendEventForHits({
55
+ instantSearchInstance: instantSearchInstance,
56
+ getIndex: function getIndex() {
57
+ return helper.getIndex();
58
+ },
59
+ widgetType: this.$$type
60
+ });
61
+ }
50
62
  if (results === null || results === undefined) {
51
63
  return {
52
64
  items: [],
53
- widgetParams: widgetParams
65
+ widgetParams: widgetParams,
66
+ sendEvent: sendEvent
54
67
  };
55
68
  }
56
69
  if (escapeHTML && results.hits.length > 0) {
57
70
  results.hits = escapeHits(results.hits);
58
71
  }
72
+ var itemsWithAbsolutePosition = addAbsolutePosition(results.hits, 0, 1);
73
+ var itemsWithAbsolutePositionAndQueryID = addQueryID(itemsWithAbsolutePosition, results.queryID);
74
+ var transformedItems = transformItems(itemsWithAbsolutePositionAndQueryID, {
75
+ results: results
76
+ });
59
77
  return {
60
- items: transformItems(results.hits, {
61
- results: results
62
- }),
63
- widgetParams: widgetParams
78
+ items: transformedItems,
79
+ widgetParams: widgetParams,
80
+ sendEvent: sendEvent
64
81
  };
65
82
  },
66
83
  dispose: function dispose(_ref3) {
@@ -1,3 +1,4 @@
1
+ import type { SendEventForHits } from '../../lib/utils';
1
2
  import type { Connector, TransformItems, BaseHit, Renderer, Unmounter, UnknownWidgetParams, RecommendResponse, AlgoliaHit } from '../../types';
2
3
  import type { PlainSearchParameters } from 'algoliasearch-helper';
3
4
  export type TrendingItemsRenderState<THit extends NonNullable<object> = BaseHit> = {
@@ -5,6 +6,10 @@ export type TrendingItemsRenderState<THit extends NonNullable<object> = BaseHit>
5
6
  * The matched recommendations from the Algolia API.
6
7
  */
7
8
  items: Array<AlgoliaHit<THit>>;
9
+ /**
10
+ * Sends an event to the Insights middleware.
11
+ */
12
+ sendEvent: SendEventForHits;
8
13
  };
9
14
  export type TrendingItemsConnectorParams<THit extends NonNullable<object> = BaseHit> = ({
10
15
  /**
@@ -147,7 +152,7 @@ declare const _default: <TWidgetParams extends UnknownWidgetParams>(renderFn: Re
147
152
  analytics?: import("../../types").WidgetRenderState<Record<string, unknown>, import("../../widgets/analytics/analytics").AnalyticsWidgetParams> | undefined;
148
153
  places?: import("../../types").WidgetRenderState<Record<string, unknown>, import("../../widgets/places/places").PlacesWidgetParams> | undefined;
149
154
  };
150
- getWidgetRenderState({ results }: import("../../types").InitOptions | import("../../types").RenderOptions | ({
155
+ getWidgetRenderState({ results, helper, instantSearchInstance }: import("../../types").InitOptions | import("../../types").RenderOptions | ({
151
156
  instantSearchInstance: import("../../types").InstantSearch;
152
157
  parent: import("../../types").IndexWidget;
153
158
  templatesConfig: Record<string, unknown>;
@@ -166,6 +171,7 @@ declare const _default: <TWidgetParams extends UnknownWidgetParams>(renderFn: Re
166
171
  })): {
167
172
  items: AlgoliaHit<THit>[];
168
173
  widgetParams: TWidgetParams & TrendingItemsConnectorParams<THit>;
174
+ sendEvent: SendEventForHits;
169
175
  };
170
176
  dispose({ recommendState }: import("../../types").DisposeOptions): import("algoliasearch-helper").RecommendParameters;
171
177
  getWidgetParameters(state: import("algoliasearch-helper").RecommendParameters): import("algoliasearch-helper").RecommendParameters;
@@ -4,7 +4,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
4
4
  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; }
5
5
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
6
6
  function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
7
- import { createDocumentationMessageGenerator, checkRendering, noop, escapeHits, TAG_PLACEHOLDER, getObjectType } from "../../lib/utils/index.js";
7
+ import { createDocumentationMessageGenerator, checkRendering, noop, escapeHits, TAG_PLACEHOLDER, getObjectType, createSendEventForHits, addAbsolutePosition, addQueryID } from "../../lib/utils/index.js";
8
8
  var withUsage = createDocumentationMessageGenerator({
9
9
  name: 'trending-items',
10
10
  connector: true
@@ -29,6 +29,7 @@ export default (function connectTrendingItems(renderFn) {
29
29
  if (facetName && !facetValue || !facetName && facetValue) {
30
30
  throw new Error(withUsage("When you provide facetName (received type ".concat(getObjectType(facetName), "), you must also provide facetValue (received type ").concat(getObjectType(facetValue), ").")));
31
31
  }
32
+ var sendEvent;
32
33
  return {
33
34
  dependsOn: 'recommend',
34
35
  $$type: 'ais.trendingItems',
@@ -47,21 +48,37 @@ export default (function connectTrendingItems(renderFn) {
47
48
  return renderState;
48
49
  },
49
50
  getWidgetRenderState: function getWidgetRenderState(_ref2) {
50
- var results = _ref2.results;
51
+ var results = _ref2.results,
52
+ helper = _ref2.helper,
53
+ instantSearchInstance = _ref2.instantSearchInstance;
54
+ if (!sendEvent) {
55
+ sendEvent = createSendEventForHits({
56
+ instantSearchInstance: instantSearchInstance,
57
+ getIndex: function getIndex() {
58
+ return helper.getIndex();
59
+ },
60
+ widgetType: this.$$type
61
+ });
62
+ }
51
63
  if (results === null || results === undefined) {
52
64
  return {
53
65
  items: [],
54
- widgetParams: widgetParams
66
+ widgetParams: widgetParams,
67
+ sendEvent: sendEvent
55
68
  };
56
69
  }
57
70
  if (escapeHTML && results.hits.length > 0) {
58
71
  results.hits = escapeHits(results.hits);
59
72
  }
73
+ var itemsWithAbsolutePosition = addAbsolutePosition(results.hits, 0, 1);
74
+ var itemsWithAbsolutePositionAndQueryID = addQueryID(itemsWithAbsolutePosition, results.queryID);
75
+ var transformedItems = transformItems(itemsWithAbsolutePositionAndQueryID, {
76
+ results: results
77
+ });
60
78
  return {
61
- items: transformItems(results.hits, {
62
- results: results
63
- }),
64
- widgetParams: widgetParams
79
+ items: transformedItems,
80
+ widgetParams: widgetParams,
81
+ sendEvent: sendEvent
65
82
  };
66
83
  },
67
84
  dispose: function dispose(_ref3) {
@@ -10,9 +10,9 @@ export function getAppIdAndApiKey(searchClient) {
10
10
  var queryParameters = transporter.queryParameters || transporter.baseQueryParameters;
11
11
  var APP_ID = 'x-algolia-application-id';
12
12
  var API_KEY = 'x-algolia-api-key';
13
- var _appId = headers[APP_ID] || queryParameters[APP_ID];
14
- var _apiKey = headers[API_KEY] || queryParameters[API_KEY];
15
- return [_appId, _apiKey];
13
+ var appId = headers[APP_ID] || queryParameters[APP_ID];
14
+ var apiKey = headers[API_KEY] || queryParameters[API_KEY];
15
+ return [appId, apiKey];
16
16
  } else {
17
17
  // searchClient v3
18
18
  return [searchClient.applicationID, searchClient.apiKey];
@@ -1,2 +1,2 @@
1
- declare const _default: "4.76.0";
1
+ declare const _default: "4.77.1";
2
2
  export default _default;
package/es/lib/version.js CHANGED
@@ -1 +1 @@
1
- export default '4.76.0';
1
+ export default '4.77.1';
@@ -17,6 +17,8 @@ type CarouselTemplateProps<TObject extends Record<string, unknown>> = Pick<Carou
17
17
  item?: CarouselUiProps<TObject>['itemComponent'];
18
18
  };
19
19
  cssClasses?: Partial<CarouselUiProps<TObject>['classNames']>;
20
+ } & {
21
+ sendEvent?: CarouselUiProps<TObject>['sendEvent'];
20
22
  };
21
- export declare function carousel<TObject extends Record<string, unknown>>({ cssClasses, templates, }?: CreateCarouselTemplateProps<TObject>): ({ items, templates: widgetTemplates, cssClasses: widgetCssClasses, }: CarouselTemplateProps<TObject>) => h.JSX.Element;
23
+ export declare function carousel<TObject extends Record<string, unknown>>({ cssClasses, templates, }?: CreateCarouselTemplateProps<TObject>): ({ items, templates: widgetTemplates, cssClasses: widgetCssClasses, sendEvent, }: CarouselTemplateProps<TObject>) => h.JSX.Element;
22
24
  export {};
@@ -31,11 +31,14 @@ export function carousel() {
31
31
  var items = _ref2.items,
32
32
  widgetTemplates = _ref2.templates,
33
33
  _ref2$cssClasses = _ref2.cssClasses,
34
- widgetCssClasses = _ref2$cssClasses === void 0 ? {} : _ref2$cssClasses;
34
+ widgetCssClasses = _ref2$cssClasses === void 0 ? {} : _ref2$cssClasses,
35
+ _ref2$sendEvent = _ref2.sendEvent,
36
+ sendEvent = _ref2$sendEvent === void 0 ? function () {} : _ref2$sendEvent;
35
37
  var previous = templates.previous,
36
38
  next = templates.next;
37
39
  return h(CarouselWithRefs, {
38
40
  items: items,
41
+ sendEvent: sendEvent,
39
42
  itemComponent: widgetTemplates.item,
40
43
  previousIconComponent: previous ? function () {
41
44
  return previous({
@@ -1,6 +1,6 @@
1
1
 
2
2
  import type { FrequentlyBoughtTogetherWidgetDescription, FrequentlyBoughtTogetherConnectorParams } from '../../connectors/frequently-bought-together/connectFrequentlyBoughtTogether';
3
- import type { Template, WidgetFactory, AlgoliaHit, BaseHit, RecommendResponse } from '../../types';
3
+ import type { Template, WidgetFactory, AlgoliaHit, BaseHit, RecommendResponse, TemplateWithBindEvent } from '../../types';
4
4
  import type { RecommendClassNames, FrequentlyBoughtTogetherProps as FrequentlyBoughtTogetherUiProps } from 'instantsearch-ui-components';
5
5
  export type FrequentlyBoughtTogetherCSSClasses = Partial<RecommendClassNames>;
6
6
  export type FrequentlyBoughtTogetherTemplates<THit extends NonNullable<object> = BaseHit> = Partial<{
@@ -17,7 +17,7 @@ export type FrequentlyBoughtTogetherTemplates<THit extends NonNullable<object> =
17
17
  /**
18
18
  * Template to use for each result. This template will receive an object containing a single record.
19
19
  */
20
- item: Template<AlgoliaHit<THit>>;
20
+ item: TemplateWithBindEvent<AlgoliaHit<THit>>;
21
21
  /**
22
22
  * Template to use to wrap all items.
23
23
  */
@@ -140,7 +140,7 @@ declare const _default: <THit extends NonNullable<object> = BaseHit>(widgetParam
140
140
  analytics?: import("../../types").WidgetRenderState<Record<string, unknown>, import("../analytics/analytics").AnalyticsWidgetParams> | undefined;
141
141
  places?: import("../../types").WidgetRenderState<Record<string, unknown>, import("../places/places").PlacesWidgetParams> | undefined;
142
142
  };
143
- getWidgetRenderState({ results }: import("../../types").InitOptions | import("../../types").RenderOptions | ({
143
+ getWidgetRenderState({ results, helper, instantSearchInstance }: import("../../types").InitOptions | import("../../types").RenderOptions | ({
144
144
  instantSearchInstance: import("../../types").InstantSearch;
145
145
  parent: import("../index").IndexWidget;
146
146
  templatesConfig: Record<string, unknown>;
@@ -229,6 +229,7 @@ declare const _default: <THit extends NonNullable<object> = BaseHit>(widgetParam
229
229
  })): {
230
230
  items: AlgoliaHit<THit>[];
231
231
  widgetParams: Partial<FrequentlyBoughtTogetherWidgetParams<BaseHit>> & FrequentlyBoughtTogetherConnectorParams<THit>;
232
+ sendEvent: import("../../lib/utils").SendEventForHits;
232
233
  };
233
234
  dispose({ recommendState }: import("../../types").DisposeOptions): import("algoliasearch-helper").RecommendParameters;
234
235
  getWidgetParameters(state: import("algoliasearch-helper").RecommendParameters): import("algoliasearch-helper").RecommendParameters;
@@ -1,9 +1,12 @@
1
1
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ var _excluded = ["item", "sendEvent"];
2
3
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
4
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
5
  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; }
5
6
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
6
7
  function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
8
+ 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; }
9
+ 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; }
7
10
  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); }
8
11
  import { createFrequentlyBoughtTogetherComponent } from 'instantsearch-ui-components';
9
12
  import { Fragment, h, render } from 'preact';
@@ -26,7 +29,8 @@ var renderer = function renderer(_ref) {
26
29
  return function (_ref2, isFirstRendering) {
27
30
  var items = _ref2.items,
28
31
  results = _ref2.results,
29
- instantSearchInstance = _ref2.instantSearchInstance;
32
+ instantSearchInstance = _ref2.instantSearchInstance,
33
+ sendEvent = _ref2.sendEvent;
30
34
  if (isFirstRendering) {
31
35
  renderState.templateProps = prepareTemplateProps({
32
36
  defaultTemplates: {},
@@ -46,11 +50,15 @@ var renderer = function renderer(_ref) {
46
50
  }));
47
51
  } : undefined;
48
52
  var itemComponent = templates.item ? function (_ref3) {
49
- var item = _ref3.item;
53
+ var item = _ref3.item,
54
+ _sendEvent = _ref3.sendEvent,
55
+ rootProps = _objectWithoutProperties(_ref3, _excluded);
50
56
  return h(TemplateComponent, _extends({}, renderState.templateProps, {
51
57
  templateKey: "item",
52
58
  rootTagName: "fragment",
53
- data: item
59
+ data: item,
60
+ sendEvent: _sendEvent,
61
+ rootProps: _objectSpread({}, rootProps)
54
62
  }));
55
63
  } : undefined;
56
64
  var emptyComponent = templates.empty ? function () {
@@ -65,6 +73,7 @@ var renderer = function renderer(_ref) {
65
73
  templateKey: "layout",
66
74
  rootTagName: "fragment",
67
75
  data: {
76
+ sendEvent: sendEvent,
68
77
  items: data.items,
69
78
  templates: {
70
79
  item: templates.item ? function (_ref4) {
@@ -72,7 +81,8 @@ var renderer = function renderer(_ref) {
72
81
  return h(TemplateComponent, _extends({}, renderState.templateProps, {
73
82
  templateKey: "item",
74
83
  rootTagName: "fragment",
75
- data: item
84
+ data: item,
85
+ sendEvent: sendEvent
76
86
  }));
77
87
  } : undefined
78
88
  },
@@ -80,14 +90,15 @@ var renderer = function renderer(_ref) {
80
90
  list: data.classNames.list,
81
91
  item: data.classNames.item
82
92
  }
83
- }
93
+ },
94
+ sendEvent: sendEvent
84
95
  }));
85
96
  } : undefined;
86
97
  render(h(FrequentlyBoughtTogether, {
87
98
  items: items,
88
99
  headerComponent: headerComponent,
89
100
  itemComponent: itemComponent,
90
- sendEvent: function sendEvent() {},
101
+ sendEvent: sendEvent,
91
102
  classNames: cssClasses,
92
103
  emptyComponent: emptyComponent,
93
104
  layout: layoutComponent,
@@ -1,6 +1,6 @@
1
1
 
2
2
  import type { LookingSimilarWidgetDescription, LookingSimilarConnectorParams } from '../../connectors/looking-similar/connectLookingSimilar';
3
- import type { Template, WidgetFactory, AlgoliaHit, BaseHit, RecommendResponse } from '../../types';
3
+ import type { Template, WidgetFactory, AlgoliaHit, BaseHit, RecommendResponse, TemplateWithBindEvent } from '../../types';
4
4
  import type { RecommendClassNames, LookingSimilarProps as LookingSimilarUiProps } from 'instantsearch-ui-components';
5
5
  export type LookingSimilarCSSClasses = Partial<RecommendClassNames>;
6
6
  export type LookingSimilarTemplates<THit extends NonNullable<object> = BaseHit> = Partial<{
@@ -17,7 +17,7 @@ export type LookingSimilarTemplates<THit extends NonNullable<object> = BaseHit>
17
17
  /**
18
18
  * Template to use for each result. This template will receive an object containing a single record.
19
19
  */
20
- item: Template<AlgoliaHit<THit>>;
20
+ item: TemplateWithBindEvent<AlgoliaHit<THit>>;
21
21
  /**
22
22
  * Template to use to wrap all items.
23
23
  */
@@ -140,7 +140,7 @@ declare const _default: <THit extends NonNullable<object> = BaseHit>(widgetParam
140
140
  analytics?: import("../../types").WidgetRenderState<Record<string, unknown>, import("../analytics/analytics").AnalyticsWidgetParams> | undefined;
141
141
  places?: import("../../types").WidgetRenderState<Record<string, unknown>, import("../places/places").PlacesWidgetParams> | undefined;
142
142
  };
143
- getWidgetRenderState({ results }: import("../../types").InitOptions | import("../../types").RenderOptions | ({
143
+ getWidgetRenderState({ results, helper, instantSearchInstance }: import("../../types").InitOptions | import("../../types").RenderOptions | ({
144
144
  instantSearchInstance: import("../../types").InstantSearch;
145
145
  parent: import("../index").IndexWidget;
146
146
  templatesConfig: Record<string, unknown>;
@@ -229,6 +229,7 @@ declare const _default: <THit extends NonNullable<object> = BaseHit>(widgetParam
229
229
  })): {
230
230
  items: AlgoliaHit<THit>[];
231
231
  widgetParams: Partial<LookingSimilarWidgetParams<BaseHit>> & LookingSimilarConnectorParams<THit>;
232
+ sendEvent: import("../../lib/utils").SendEventForHits;
232
233
  };
233
234
  dispose({ recommendState }: import("../../types").DisposeOptions): import("algoliasearch-helper").RecommendParameters;
234
235
  getWidgetParameters(state: import("algoliasearch-helper").RecommendParameters): import("algoliasearch-helper").RecommendParameters;