@algolia/autocomplete-plugin-algolia-insights 1.2.2 → 1.5.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.
@@ -34,4 +34,4 @@ export declare type CreateAlgoliaInsightsPluginParams = {
34
34
  */
35
35
  onActive?(params: OnActiveParams): void;
36
36
  };
37
- export declare function createAlgoliaInsightsPlugin({ insightsClient, onItemsChange, onSelect: onSelectEvent, onActive: onActiveEvent, }: CreateAlgoliaInsightsPluginParams): AutocompletePlugin<any, undefined>;
37
+ export declare function createAlgoliaInsightsPlugin(options: CreateAlgoliaInsightsPluginParams): AutocompletePlugin<any, undefined>;
@@ -4,19 +4,19 @@ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread n
4
4
 
5
5
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
6
6
 
7
- function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
7
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
8
8
 
9
9
  function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
10
10
 
11
11
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
12
12
 
13
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
13
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
14
14
 
15
15
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
16
16
 
17
17
  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; }
18
18
 
19
- import { createRef, debounce, isEqual } from '@algolia/autocomplete-shared';
19
+ import { createRef, debounce, isEqual, noop } from '@algolia/autocomplete-shared';
20
20
  import { createClickedEvent } from './createClickedEvent';
21
21
  import { createSearchInsightsApi } from './createSearchInsightsApi';
22
22
  import { createViewedEvents } from './createViewedEvents';
@@ -39,26 +39,17 @@ var sendViewedObjectIDs = debounce(function (_ref) {
39
39
  state: state
40
40
  });
41
41
  }, VIEW_EVENT_DELAY);
42
- export function createAlgoliaInsightsPlugin(_ref2) {
43
- var insightsClient = _ref2.insightsClient,
44
- _ref2$onItemsChange = _ref2.onItemsChange,
45
- onItemsChange = _ref2$onItemsChange === void 0 ? function (_ref3) {
46
- var insights = _ref3.insights,
47
- insightsEvents = _ref3.insightsEvents;
48
- insights.viewedObjectIDs.apply(insights, _toConsumableArray(insightsEvents));
49
- } : _ref2$onItemsChange,
50
- _ref2$onSelect = _ref2.onSelect,
51
- onSelectEvent = _ref2$onSelect === void 0 ? function (_ref4) {
52
- var insights = _ref4.insights,
53
- insightsEvents = _ref4.insightsEvents;
54
- insights.clickedObjectIDsAfterSearch.apply(insights, _toConsumableArray(insightsEvents));
55
- } : _ref2$onSelect,
56
- _ref2$onActive = _ref2.onActive,
57
- onActiveEvent = _ref2$onActive === void 0 ? function () {} : _ref2$onActive;
42
+ export function createAlgoliaInsightsPlugin(options) {
43
+ var _getOptions = getOptions(options),
44
+ insightsClient = _getOptions.insightsClient,
45
+ onItemsChange = _getOptions.onItemsChange,
46
+ onSelectEvent = _getOptions.onSelect,
47
+ onActiveEvent = _getOptions.onActive;
48
+
58
49
  var insights = createSearchInsightsApi(insightsClient);
59
50
  var previousItems = createRef([]);
60
- var debouncedOnStateChange = debounce(function (_ref5) {
61
- var state = _ref5.state;
51
+ var debouncedOnStateChange = debounce(function (_ref2) {
52
+ var state = _ref2.state;
62
53
 
63
54
  if (!state.isOpen) {
64
55
  return;
@@ -86,19 +77,20 @@ export function createAlgoliaInsightsPlugin(_ref2) {
86
77
  }
87
78
  }, 0);
88
79
  return {
89
- subscribe: function subscribe(_ref6) {
90
- var setContext = _ref6.setContext,
91
- onSelect = _ref6.onSelect,
92
- onActive = _ref6.onActive;
80
+ name: 'aa.algoliaInsightsPlugin',
81
+ subscribe: function subscribe(_ref3) {
82
+ var setContext = _ref3.setContext,
83
+ onSelect = _ref3.onSelect,
84
+ onActive = _ref3.onActive;
93
85
  setContext({
94
86
  algoliaInsightsPlugin: {
95
87
  insights: insights
96
88
  }
97
89
  });
98
- onSelect(function (_ref7) {
99
- var item = _ref7.item,
100
- state = _ref7.state,
101
- event = _ref7.event;
90
+ onSelect(function (_ref4) {
91
+ var item = _ref4.item,
92
+ state = _ref4.state,
93
+ event = _ref4.event;
102
94
 
103
95
  if (!isAlgoliaInsightsHit(item)) {
104
96
  return;
@@ -117,10 +109,10 @@ export function createAlgoliaInsightsPlugin(_ref2) {
117
109
  }))]
118
110
  });
119
111
  });
120
- onActive(function (_ref8) {
121
- var item = _ref8.item,
122
- state = _ref8.state,
123
- event = _ref8.event;
112
+ onActive(function (_ref5) {
113
+ var item = _ref5.item,
114
+ state = _ref5.state,
115
+ event = _ref5.event;
124
116
 
125
117
  if (!isAlgoliaInsightsHit(item)) {
126
118
  return;
@@ -140,11 +132,28 @@ export function createAlgoliaInsightsPlugin(_ref2) {
140
132
  });
141
133
  });
142
134
  },
143
- onStateChange: function onStateChange(_ref9) {
144
- var state = _ref9.state;
135
+ onStateChange: function onStateChange(_ref6) {
136
+ var state = _ref6.state;
145
137
  debouncedOnStateChange({
146
138
  state: state
147
139
  });
148
- }
140
+ },
141
+ __autocomplete_pluginOptions: options
149
142
  };
143
+ }
144
+
145
+ function getOptions(options) {
146
+ return _objectSpread({
147
+ onItemsChange: function onItemsChange(_ref7) {
148
+ var insights = _ref7.insights,
149
+ insightsEvents = _ref7.insightsEvents;
150
+ insights.viewedObjectIDs.apply(insights, _toConsumableArray(insightsEvents));
151
+ },
152
+ onSelect: function onSelect(_ref8) {
153
+ var insights = _ref8.insights,
154
+ insightsEvents = _ref8.insightsEvents;
155
+ insights.clickedObjectIDsAfterSearch.apply(insights, _toConsumableArray(insightsEvents));
156
+ },
157
+ onActive: noop
158
+ }, options);
150
159
  }
@@ -0,0 +1 @@
1
+ export {};
package/dist/esm/index.js CHANGED
@@ -1 +1,2 @@
1
- export * from './createAlgoliaInsightsPlugin';
1
+ export * from './createAlgoliaInsightsPlugin';
2
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -1,33 +1,22 @@
1
- /*! @algolia/autocomplete-plugin-algolia-insights 1.2.2 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete */
1
+ /*! @algolia/autocomplete-plugin-algolia-insights 1.5.0 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete */
2
2
  (function (global, factory) {
3
3
  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
4
4
  typeof define === 'function' && define.amd ? define(['exports'], factory) :
5
5
  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global['@algolia/autocomplete-plugin-algolia-insights'] = {}));
6
6
  }(this, (function (exports) { 'use strict';
7
7
 
8
- function _defineProperty(obj, key, value) {
9
- if (key in obj) {
10
- Object.defineProperty(obj, key, {
11
- value: value,
12
- enumerable: true,
13
- configurable: true,
14
- writable: true
15
- });
16
- } else {
17
- obj[key] = value;
18
- }
19
-
20
- return obj;
21
- }
22
-
23
8
  function ownKeys(object, enumerableOnly) {
24
9
  var keys = Object.keys(object);
25
10
 
26
11
  if (Object.getOwnPropertySymbols) {
27
12
  var symbols = Object.getOwnPropertySymbols(object);
28
- if (enumerableOnly) symbols = symbols.filter(function (sym) {
29
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
30
- });
13
+
14
+ if (enumerableOnly) {
15
+ symbols = symbols.filter(function (sym) {
16
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
17
+ });
18
+ }
19
+
31
20
  keys.push.apply(keys, symbols);
32
21
  }
33
22
 
@@ -54,6 +43,21 @@
54
43
  return target;
55
44
  }
56
45
 
46
+ function _defineProperty(obj, key, value) {
47
+ if (key in obj) {
48
+ Object.defineProperty(obj, key, {
49
+ value: value,
50
+ enumerable: true,
51
+ configurable: true,
52
+ writable: true
53
+ });
54
+ } else {
55
+ obj[key] = value;
56
+ }
57
+
58
+ return obj;
59
+ }
60
+
57
61
  function _toConsumableArray(arr) {
58
62
  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
59
63
  }
@@ -63,7 +67,7 @@
63
67
  }
64
68
 
65
69
  function _iterableToArray(iter) {
66
- if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter);
70
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
67
71
  }
68
72
 
69
73
  function _unsupportedIterableToArray(o, minLen) {
@@ -142,6 +146,8 @@
142
146
  return true;
143
147
  }
144
148
 
149
+ var noop = function noop() {};
150
+
145
151
  function createClickedEvent(_ref) {
146
152
  var item = _ref.item,
147
153
  items = _ref.items;
@@ -335,26 +341,17 @@
335
341
  state: state
336
342
  });
337
343
  }, VIEW_EVENT_DELAY);
338
- function createAlgoliaInsightsPlugin(_ref2) {
339
- var insightsClient = _ref2.insightsClient,
340
- _ref2$onItemsChange = _ref2.onItemsChange,
341
- onItemsChange = _ref2$onItemsChange === void 0 ? function (_ref3) {
342
- var insights = _ref3.insights,
343
- insightsEvents = _ref3.insightsEvents;
344
- insights.viewedObjectIDs.apply(insights, _toConsumableArray(insightsEvents));
345
- } : _ref2$onItemsChange,
346
- _ref2$onSelect = _ref2.onSelect,
347
- onSelectEvent = _ref2$onSelect === void 0 ? function (_ref4) {
348
- var insights = _ref4.insights,
349
- insightsEvents = _ref4.insightsEvents;
350
- insights.clickedObjectIDsAfterSearch.apply(insights, _toConsumableArray(insightsEvents));
351
- } : _ref2$onSelect,
352
- _ref2$onActive = _ref2.onActive,
353
- onActiveEvent = _ref2$onActive === void 0 ? function () {} : _ref2$onActive;
344
+ function createAlgoliaInsightsPlugin(options) {
345
+ var _getOptions = getOptions(options),
346
+ insightsClient = _getOptions.insightsClient,
347
+ onItemsChange = _getOptions.onItemsChange,
348
+ onSelectEvent = _getOptions.onSelect,
349
+ onActiveEvent = _getOptions.onActive;
350
+
354
351
  var insights = createSearchInsightsApi(insightsClient);
355
352
  var previousItems = createRef([]);
356
- var debouncedOnStateChange = debounce(function (_ref5) {
357
- var state = _ref5.state;
353
+ var debouncedOnStateChange = debounce(function (_ref2) {
354
+ var state = _ref2.state;
358
355
 
359
356
  if (!state.isOpen) {
360
357
  return;
@@ -382,19 +379,20 @@
382
379
  }
383
380
  }, 0);
384
381
  return {
385
- subscribe: function subscribe(_ref6) {
386
- var setContext = _ref6.setContext,
387
- onSelect = _ref6.onSelect,
388
- onActive = _ref6.onActive;
382
+ name: 'aa.algoliaInsightsPlugin',
383
+ subscribe: function subscribe(_ref3) {
384
+ var setContext = _ref3.setContext,
385
+ onSelect = _ref3.onSelect,
386
+ onActive = _ref3.onActive;
389
387
  setContext({
390
388
  algoliaInsightsPlugin: {
391
389
  insights: insights
392
390
  }
393
391
  });
394
- onSelect(function (_ref7) {
395
- var item = _ref7.item,
396
- state = _ref7.state,
397
- event = _ref7.event;
392
+ onSelect(function (_ref4) {
393
+ var item = _ref4.item,
394
+ state = _ref4.state,
395
+ event = _ref4.event;
398
396
 
399
397
  if (!isAlgoliaInsightsHit(item)) {
400
398
  return;
@@ -413,10 +411,10 @@
413
411
  }))]
414
412
  });
415
413
  });
416
- onActive(function (_ref8) {
417
- var item = _ref8.item,
418
- state = _ref8.state,
419
- event = _ref8.event;
414
+ onActive(function (_ref5) {
415
+ var item = _ref5.item,
416
+ state = _ref5.state,
417
+ event = _ref5.event;
420
418
 
421
419
  if (!isAlgoliaInsightsHit(item)) {
422
420
  return;
@@ -436,15 +434,32 @@
436
434
  });
437
435
  });
438
436
  },
439
- onStateChange: function onStateChange(_ref9) {
440
- var state = _ref9.state;
437
+ onStateChange: function onStateChange(_ref6) {
438
+ var state = _ref6.state;
441
439
  debouncedOnStateChange({
442
440
  state: state
443
441
  });
444
- }
442
+ },
443
+ __autocomplete_pluginOptions: options
445
444
  };
446
445
  }
447
446
 
447
+ function getOptions(options) {
448
+ return _objectSpread2({
449
+ onItemsChange: function onItemsChange(_ref7) {
450
+ var insights = _ref7.insights,
451
+ insightsEvents = _ref7.insightsEvents;
452
+ insights.viewedObjectIDs.apply(insights, _toConsumableArray(insightsEvents));
453
+ },
454
+ onSelect: function onSelect(_ref8) {
455
+ var insights = _ref8.insights,
456
+ insightsEvents = _ref8.insightsEvents;
457
+ insights.clickedObjectIDsAfterSearch.apply(insights, _toConsumableArray(insightsEvents));
458
+ },
459
+ onActive: noop
460
+ }, options);
461
+ }
462
+
448
463
  exports.createAlgoliaInsightsPlugin = createAlgoliaInsightsPlugin;
449
464
 
450
465
  Object.defineProperty(exports, '__esModule', { value: true });
@@ -1 +1 @@
1
- {"version":3,"file":"index.development.js","sources":["../../../autocomplete-shared/dist/esm/createRef.js","../../../autocomplete-shared/dist/esm/debounce.js","../../../autocomplete-shared/dist/esm/isEqual.js","../../src/createClickedEvent.ts","../../src/createSearchInsightsApi.ts","../../src/createViewedEvents.ts","../../src/isAlgoliaInsightsHit.ts","../../src/createAlgoliaInsightsPlugin.ts"],"sourcesContent":["export function createRef(initialValue) {\n return {\n current: initialValue\n };\n}","export function debounce(fn, time) {\n var timerId = undefined;\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (timerId) {\n clearTimeout(timerId);\n }\n\n timerId = setTimeout(function () {\n return fn.apply(void 0, args);\n }, time);\n };\n}","function isPrimitive(obj) {\n return obj !== Object(obj);\n}\n\nexport function isEqual(first, second) {\n if (first === second) {\n return true;\n }\n\n if (isPrimitive(first) || isPrimitive(second) || typeof first === 'function' || typeof second === 'function') {\n return first === second;\n }\n\n if (Object.keys(first).length !== Object.keys(second).length) {\n return false;\n }\n\n for (var _i = 0, _Object$keys = Object.keys(first); _i < _Object$keys.length; _i++) {\n var key = _Object$keys[_i];\n\n if (!(key in second)) {\n return false;\n }\n\n if (!isEqual(first[key], second[key])) {\n return false;\n }\n }\n\n return true;\n}","import { AlgoliaInsightsHit, ClickedObjectIDsAfterSearchParams } from './types';\n\ntype CreateClickedEventParams = {\n item: AlgoliaInsightsHit;\n items: AlgoliaInsightsHit[];\n};\n\nexport function createClickedEvent({\n item,\n items,\n}: CreateClickedEventParams): Omit<\n ClickedObjectIDsAfterSearchParams,\n 'eventName'\n> {\n return {\n index: item.__autocomplete_indexName,\n objectIDs: [item.objectID],\n positions: [1 + items.findIndex((x) => x.objectID === item.objectID)],\n queryID: item.__autocomplete_queryID,\n };\n}\n","import {\n ClickedFiltersParams,\n ClickedObjectIDsAfterSearchParams,\n ClickedObjectIDsParams,\n ConvertedFiltersParams,\n ConvertedObjectIDsAfterSearchParams,\n ConvertedObjectIDsParams,\n InsightsClient,\n ViewedFiltersParams,\n ViewedObjectIDsParams,\n} from './types';\n\nexport function createSearchInsightsApi(searchInsights: InsightsClient) {\n return {\n /**\n * Initializes Insights with Algolia credentials.\n */\n init(appId: string, apiKey: string) {\n searchInsights('init', { appId, apiKey });\n },\n /**\n * Sets the user token to attach to events.\n */\n setUserToken(userToken: string) {\n searchInsights('setUserToken', userToken);\n },\n /**\n * Sends click events to capture a query and its clicked items and positions.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/clicked-object-ids-after-search/\n */\n clickedObjectIDsAfterSearch(\n ...params: ClickedObjectIDsAfterSearchParams[]\n ) {\n if (params.length > 0) {\n searchInsights('clickedObjectIDsAfterSearch', ...params);\n }\n },\n /**\n * Sends click events to capture clicked items.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/clicked-object-ids/\n */\n clickedObjectIDs(...params: ClickedObjectIDsParams[]) {\n if (params.length > 0) {\n searchInsights('clickedObjectIDs', ...params);\n }\n },\n /**\n * Sends click events to capture the filters a user clicks on.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/clicked-filters/\n */\n clickedFilters(...params: ClickedFiltersParams[]) {\n if (params.length > 0) {\n searchInsights('clickedFilters', ...params);\n }\n },\n /**\n * Sends conversion events to capture a query and its clicked items.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/converted-object-ids-after-search/\n */\n convertedObjectIDsAfterSearch(\n ...params: ConvertedObjectIDsAfterSearchParams[]\n ) {\n if (params.length > 0) {\n searchInsights('convertedObjectIDsAfterSearch', ...params);\n }\n },\n /**\n * Sends conversion events to capture clicked items.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/converted-object-ids/\n */\n convertedObjectIDs(...params: ConvertedObjectIDsParams[]) {\n if (params.length > 0) {\n searchInsights('convertedObjectIDs', ...params);\n }\n },\n /**\n * Sends conversion events to capture the filters a user uses when converting.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/converted-filters/\n */\n convertedFilters(...params: ConvertedFiltersParams[]) {\n if (params.length > 0) {\n searchInsights('convertedFilters', ...params);\n }\n },\n /**\n * Sends view events to capture clicked items.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/viewed-object-ids/\n */\n viewedObjectIDs(...params: ViewedObjectIDsParams[]) {\n if (params.length > 0) {\n searchInsights('viewedObjectIDs', ...params);\n }\n },\n /**\n * Sends view events to capture the filters a user uses when viewing.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/viewed-filters/\n */\n viewedFilters(...params: ViewedFiltersParams[]) {\n if (params.length > 0) {\n searchInsights('viewedFilters', ...params);\n }\n },\n };\n}\n","import { AlgoliaInsightsHit, ViewedObjectIDsParams } from './types';\n\ntype CreateViewedEventsParams = {\n items: AlgoliaInsightsHit[];\n};\n\nexport function createViewedEvents({\n items,\n}: CreateViewedEventsParams): Array<Omit<ViewedObjectIDsParams, 'eventName'>> {\n const objectIDsByIndexName = items.reduce<Record<string, string[]>>(\n (acc, current) => {\n acc[current.__autocomplete_indexName] = (\n acc[current.__autocomplete_indexName] ?? []\n ).concat(current.objectID);\n\n return acc;\n },\n {}\n );\n\n return Object.keys(objectIDsByIndexName).map((indexName) => {\n const objectIDs = objectIDsByIndexName[indexName];\n\n return {\n index: indexName,\n objectIDs,\n };\n });\n}\n","import { AlgoliaInsightsHit } from './types';\n\nexport function isAlgoliaInsightsHit(hit: any): hit is AlgoliaInsightsHit {\n return (\n hit.objectID && hit.__autocomplete_indexName && hit.__autocomplete_queryID\n );\n}\n","import {\n AutocompleteState,\n AutocompletePlugin,\n} from '@algolia/autocomplete-js';\nimport { createRef, debounce, isEqual } from '@algolia/autocomplete-shared';\n\nimport { createClickedEvent } from './createClickedEvent';\nimport { createSearchInsightsApi } from './createSearchInsightsApi';\nimport { createViewedEvents } from './createViewedEvents';\nimport { isAlgoliaInsightsHit } from './isAlgoliaInsightsHit';\nimport {\n AlgoliaInsightsHit,\n AutocompleteInsightsApi,\n InsightsClient,\n OnActiveParams,\n OnItemsChangeParams,\n OnSelectParams,\n} from './types';\n\nconst VIEW_EVENT_DELAY = 400;\n\ntype SendViewedObjectIDsParams = {\n onItemsChange(params: OnItemsChangeParams): void;\n items: AlgoliaInsightsHit[];\n insights: AutocompleteInsightsApi;\n state: AutocompleteState<any>;\n};\n\nconst sendViewedObjectIDs = debounce<SendViewedObjectIDsParams>(\n ({ onItemsChange, items, insights, state }) => {\n onItemsChange({\n insights,\n insightsEvents: createViewedEvents({ items }).map((event) => ({\n eventName: 'Items Viewed',\n ...event,\n })),\n state,\n });\n },\n VIEW_EVENT_DELAY\n);\n\nexport type CreateAlgoliaInsightsPluginParams = {\n /**\n * The initialized Search Insights client.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-algolia-insights/createAlgoliaInsightsPlugin/#param-insightsclient\n */\n insightsClient: InsightsClient;\n /**\n * Hook to send an Insights event when the items change.\n *\n * By default, it sends a `viewedObjectIDs` event.\n *\n * In as-you-type experiences, items change as the user types. This hook is debounced every 400ms to reflect actual items that users notice and avoid generating too many events for items matching \"in progress\" queries.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-algolia-insights/createAlgoliaInsightsPlugin/#param-onitemschange\n */\n onItemsChange?(params: OnItemsChangeParams): void;\n /**\n * Hook to send an Insights event when an item is selected.\n *\n * By default, it sends a clickedObjectIDsAfterSearch event.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-algolia-insights/createAlgoliaInsightsPlugin/#param-onselect\n */\n onSelect?(params: OnSelectParams): void;\n /**\n * Hook to send an Insights event when an item is active.\n *\n * By default, it doesn't send any events.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-algolia-insights/createAlgoliaInsightsPlugin/#param-onactive\n */\n onActive?(params: OnActiveParams): void;\n};\n\nexport function createAlgoliaInsightsPlugin({\n insightsClient,\n onItemsChange = ({ insights, insightsEvents }) => {\n insights.viewedObjectIDs(...insightsEvents);\n },\n onSelect: onSelectEvent = ({ insights, insightsEvents }) => {\n insights.clickedObjectIDsAfterSearch(...insightsEvents);\n },\n onActive: onActiveEvent = () => {},\n}: CreateAlgoliaInsightsPluginParams): AutocompletePlugin<any, undefined> {\n const insights = createSearchInsightsApi(insightsClient);\n const previousItems = createRef<AlgoliaInsightsHit[]>([]);\n\n const debouncedOnStateChange = debounce<{\n state: AutocompleteState<any>;\n }>(({ state }) => {\n if (!state.isOpen) {\n return;\n }\n\n const items = state.collections\n .reduce<unknown[]>((acc, current) => {\n return [...acc, ...current.items];\n }, [])\n .filter(isAlgoliaInsightsHit);\n\n if (\n !isEqual(\n previousItems.current.map((x) => x.objectID),\n items.map((x) => x.objectID)\n )\n ) {\n previousItems.current = items;\n\n if (items.length > 0) {\n sendViewedObjectIDs({ onItemsChange, items, insights, state });\n }\n }\n }, 0);\n\n return {\n subscribe({ setContext, onSelect, onActive }) {\n setContext({ algoliaInsightsPlugin: { insights } });\n\n onSelect(({ item, state, event }) => {\n if (!isAlgoliaInsightsHit(item)) {\n return;\n }\n\n onSelectEvent({\n state: state as AutocompleteState<any>,\n event,\n insights,\n item,\n insightsEvents: [\n {\n eventName: 'Item Selected',\n ...createClickedEvent({ item, items: previousItems.current }),\n },\n ],\n });\n });\n\n onActive(({ item, state, event }) => {\n if (!isAlgoliaInsightsHit(item)) {\n return;\n }\n\n onActiveEvent({\n state: state as AutocompleteState<any>,\n event,\n insights,\n item,\n insightsEvents: [\n {\n eventName: 'Item Active',\n ...createClickedEvent({ item, items: previousItems.current }),\n },\n ],\n });\n });\n },\n onStateChange({ state }) {\n debouncedOnStateChange({ state: state as AutocompleteState<any> });\n },\n };\n}\n"],"names":["createRef","initialValue","current","debounce","fn","time","timerId","undefined","_len","arguments","length","args","Array","_key","clearTimeout","setTimeout","apply","isPrimitive","obj","Object","isEqual","first","second","keys","_i","_Object$keys","key","createClickedEvent","item","items","index","__autocomplete_indexName","objectIDs","objectID","positions","findIndex","x","queryID","__autocomplete_queryID","createSearchInsightsApi","searchInsights","init","appId","apiKey","setUserToken","userToken","clickedObjectIDsAfterSearch","params","clickedObjectIDs","clickedFilters","convertedObjectIDsAfterSearch","convertedObjectIDs","convertedFilters","viewedObjectIDs","viewedFilters","createViewedEvents","objectIDsByIndexName","reduce","acc","concat","map","indexName","isAlgoliaInsightsHit","hit","VIEW_EVENT_DELAY","sendViewedObjectIDs","onItemsChange","insights","state","insightsEvents","event","eventName","createAlgoliaInsightsPlugin","insightsClient","onSelect","onSelectEvent","onActive","onActiveEvent","previousItems","debouncedOnStateChange","isOpen","collections","filter","subscribe","setContext","algoliaInsightsPlugin","onStateChange"],"mappings":"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"}
1
+ {"version":3,"file":"index.development.js","sources":["../../../autocomplete-shared/dist/esm/createRef.js","../../../autocomplete-shared/dist/esm/debounce.js","../../../autocomplete-shared/dist/esm/isEqual.js","../../../autocomplete-shared/dist/esm/noop.js","../../src/createClickedEvent.ts","../../src/createSearchInsightsApi.ts","../../src/createViewedEvents.ts","../../src/isAlgoliaInsightsHit.ts","../../src/createAlgoliaInsightsPlugin.ts"],"sourcesContent":["export function createRef(initialValue) {\n return {\n current: initialValue\n };\n}","export function debounce(fn, time) {\n var timerId = undefined;\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (timerId) {\n clearTimeout(timerId);\n }\n\n timerId = setTimeout(function () {\n return fn.apply(void 0, args);\n }, time);\n };\n}","function isPrimitive(obj) {\n return obj !== Object(obj);\n}\n\nexport function isEqual(first, second) {\n if (first === second) {\n return true;\n }\n\n if (isPrimitive(first) || isPrimitive(second) || typeof first === 'function' || typeof second === 'function') {\n return first === second;\n }\n\n if (Object.keys(first).length !== Object.keys(second).length) {\n return false;\n }\n\n for (var _i = 0, _Object$keys = Object.keys(first); _i < _Object$keys.length; _i++) {\n var key = _Object$keys[_i];\n\n if (!(key in second)) {\n return false;\n }\n\n if (!isEqual(first[key], second[key])) {\n return false;\n }\n }\n\n return true;\n}","export var noop = function noop() {};","import { AlgoliaInsightsHit, ClickedObjectIDsAfterSearchParams } from './types';\n\ntype CreateClickedEventParams = {\n item: AlgoliaInsightsHit;\n items: AlgoliaInsightsHit[];\n};\n\nexport function createClickedEvent({\n item,\n items,\n}: CreateClickedEventParams): Omit<\n ClickedObjectIDsAfterSearchParams,\n 'eventName'\n> {\n return {\n index: item.__autocomplete_indexName,\n objectIDs: [item.objectID],\n positions: [1 + items.findIndex((x) => x.objectID === item.objectID)],\n queryID: item.__autocomplete_queryID,\n };\n}\n","import {\n ClickedFiltersParams,\n ClickedObjectIDsAfterSearchParams,\n ClickedObjectIDsParams,\n ConvertedFiltersParams,\n ConvertedObjectIDsAfterSearchParams,\n ConvertedObjectIDsParams,\n InsightsClient,\n ViewedFiltersParams,\n ViewedObjectIDsParams,\n} from './types';\n\nexport function createSearchInsightsApi(searchInsights: InsightsClient) {\n return {\n /**\n * Initializes Insights with Algolia credentials.\n */\n init(appId: string, apiKey: string) {\n searchInsights('init', { appId, apiKey });\n },\n /**\n * Sets the user token to attach to events.\n */\n setUserToken(userToken: string) {\n searchInsights('setUserToken', userToken);\n },\n /**\n * Sends click events to capture a query and its clicked items and positions.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/clicked-object-ids-after-search/\n */\n clickedObjectIDsAfterSearch(\n ...params: ClickedObjectIDsAfterSearchParams[]\n ) {\n if (params.length > 0) {\n searchInsights('clickedObjectIDsAfterSearch', ...params);\n }\n },\n /**\n * Sends click events to capture clicked items.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/clicked-object-ids/\n */\n clickedObjectIDs(...params: ClickedObjectIDsParams[]) {\n if (params.length > 0) {\n searchInsights('clickedObjectIDs', ...params);\n }\n },\n /**\n * Sends click events to capture the filters a user clicks on.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/clicked-filters/\n */\n clickedFilters(...params: ClickedFiltersParams[]) {\n if (params.length > 0) {\n searchInsights('clickedFilters', ...params);\n }\n },\n /**\n * Sends conversion events to capture a query and its clicked items.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/converted-object-ids-after-search/\n */\n convertedObjectIDsAfterSearch(\n ...params: ConvertedObjectIDsAfterSearchParams[]\n ) {\n if (params.length > 0) {\n searchInsights('convertedObjectIDsAfterSearch', ...params);\n }\n },\n /**\n * Sends conversion events to capture clicked items.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/converted-object-ids/\n */\n convertedObjectIDs(...params: ConvertedObjectIDsParams[]) {\n if (params.length > 0) {\n searchInsights('convertedObjectIDs', ...params);\n }\n },\n /**\n * Sends conversion events to capture the filters a user uses when converting.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/converted-filters/\n */\n convertedFilters(...params: ConvertedFiltersParams[]) {\n if (params.length > 0) {\n searchInsights('convertedFilters', ...params);\n }\n },\n /**\n * Sends view events to capture clicked items.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/viewed-object-ids/\n */\n viewedObjectIDs(...params: ViewedObjectIDsParams[]) {\n if (params.length > 0) {\n searchInsights('viewedObjectIDs', ...params);\n }\n },\n /**\n * Sends view events to capture the filters a user uses when viewing.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/viewed-filters/\n */\n viewedFilters(...params: ViewedFiltersParams[]) {\n if (params.length > 0) {\n searchInsights('viewedFilters', ...params);\n }\n },\n };\n}\n","import { AlgoliaInsightsHit, ViewedObjectIDsParams } from './types';\n\ntype CreateViewedEventsParams = {\n items: AlgoliaInsightsHit[];\n};\n\nexport function createViewedEvents({\n items,\n}: CreateViewedEventsParams): Array<Omit<ViewedObjectIDsParams, 'eventName'>> {\n const objectIDsByIndexName = items.reduce<Record<string, string[]>>(\n (acc, current) => {\n acc[current.__autocomplete_indexName] = (\n acc[current.__autocomplete_indexName] ?? []\n ).concat(current.objectID);\n\n return acc;\n },\n {}\n );\n\n return Object.keys(objectIDsByIndexName).map((indexName) => {\n const objectIDs = objectIDsByIndexName[indexName];\n\n return {\n index: indexName,\n objectIDs,\n };\n });\n}\n","import { AlgoliaInsightsHit } from './types';\n\nexport function isAlgoliaInsightsHit(hit: any): hit is AlgoliaInsightsHit {\n return (\n hit.objectID && hit.__autocomplete_indexName && hit.__autocomplete_queryID\n );\n}\n","import {\n AutocompleteState,\n AutocompletePlugin,\n} from '@algolia/autocomplete-js';\nimport {\n createRef,\n debounce,\n isEqual,\n noop,\n} from '@algolia/autocomplete-shared';\n\nimport { createClickedEvent } from './createClickedEvent';\nimport { createSearchInsightsApi } from './createSearchInsightsApi';\nimport { createViewedEvents } from './createViewedEvents';\nimport { isAlgoliaInsightsHit } from './isAlgoliaInsightsHit';\nimport {\n AlgoliaInsightsHit,\n AutocompleteInsightsApi,\n InsightsClient,\n OnActiveParams,\n OnItemsChangeParams,\n OnSelectParams,\n} from './types';\n\nconst VIEW_EVENT_DELAY = 400;\n\ntype SendViewedObjectIDsParams = {\n onItemsChange(params: OnItemsChangeParams): void;\n items: AlgoliaInsightsHit[];\n insights: AutocompleteInsightsApi;\n state: AutocompleteState<any>;\n};\n\nconst sendViewedObjectIDs = debounce<SendViewedObjectIDsParams>(\n ({ onItemsChange, items, insights, state }) => {\n onItemsChange({\n insights,\n insightsEvents: createViewedEvents({ items }).map((event) => ({\n eventName: 'Items Viewed',\n ...event,\n })),\n state,\n });\n },\n VIEW_EVENT_DELAY\n);\n\nexport type CreateAlgoliaInsightsPluginParams = {\n /**\n * The initialized Search Insights client.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-algolia-insights/createAlgoliaInsightsPlugin/#param-insightsclient\n */\n insightsClient: InsightsClient;\n /**\n * Hook to send an Insights event when the items change.\n *\n * By default, it sends a `viewedObjectIDs` event.\n *\n * In as-you-type experiences, items change as the user types. This hook is debounced every 400ms to reflect actual items that users notice and avoid generating too many events for items matching \"in progress\" queries.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-algolia-insights/createAlgoliaInsightsPlugin/#param-onitemschange\n */\n onItemsChange?(params: OnItemsChangeParams): void;\n /**\n * Hook to send an Insights event when an item is selected.\n *\n * By default, it sends a clickedObjectIDsAfterSearch event.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-algolia-insights/createAlgoliaInsightsPlugin/#param-onselect\n */\n onSelect?(params: OnSelectParams): void;\n /**\n * Hook to send an Insights event when an item is active.\n *\n * By default, it doesn't send any events.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-algolia-insights/createAlgoliaInsightsPlugin/#param-onactive\n */\n onActive?(params: OnActiveParams): void;\n};\n\nexport function createAlgoliaInsightsPlugin(\n options: CreateAlgoliaInsightsPluginParams\n): AutocompletePlugin<any, undefined> {\n const {\n insightsClient,\n onItemsChange,\n onSelect: onSelectEvent,\n onActive: onActiveEvent,\n } = getOptions(options);\n\n const insights = createSearchInsightsApi(insightsClient);\n const previousItems = createRef<AlgoliaInsightsHit[]>([]);\n\n const debouncedOnStateChange = debounce<{\n state: AutocompleteState<any>;\n }>(({ state }) => {\n if (!state.isOpen) {\n return;\n }\n\n const items = state.collections\n .reduce<unknown[]>((acc, current) => {\n return [...acc, ...current.items];\n }, [])\n .filter(isAlgoliaInsightsHit);\n\n if (\n !isEqual(\n previousItems.current.map((x) => x.objectID),\n items.map((x) => x.objectID)\n )\n ) {\n previousItems.current = items;\n\n if (items.length > 0) {\n sendViewedObjectIDs({ onItemsChange, items, insights, state });\n }\n }\n }, 0);\n\n return {\n name: 'aa.algoliaInsightsPlugin',\n subscribe({ setContext, onSelect, onActive }) {\n setContext({ algoliaInsightsPlugin: { insights } });\n\n onSelect(({ item, state, event }) => {\n if (!isAlgoliaInsightsHit(item)) {\n return;\n }\n\n onSelectEvent({\n state: state as AutocompleteState<any>,\n event,\n insights,\n item,\n insightsEvents: [\n {\n eventName: 'Item Selected',\n ...createClickedEvent({ item, items: previousItems.current }),\n },\n ],\n });\n });\n\n onActive(({ item, state, event }) => {\n if (!isAlgoliaInsightsHit(item)) {\n return;\n }\n\n onActiveEvent({\n state: state as AutocompleteState<any>,\n event,\n insights,\n item,\n insightsEvents: [\n {\n eventName: 'Item Active',\n ...createClickedEvent({ item, items: previousItems.current }),\n },\n ],\n });\n });\n },\n onStateChange({ state }) {\n debouncedOnStateChange({ state: state as AutocompleteState<any> });\n },\n __autocomplete_pluginOptions: options,\n };\n}\n\nfunction getOptions(options: CreateAlgoliaInsightsPluginParams) {\n return {\n onItemsChange({ insights, insightsEvents }) {\n insights.viewedObjectIDs(...insightsEvents);\n },\n onSelect({ insights, insightsEvents }) {\n insights.clickedObjectIDsAfterSearch(...insightsEvents);\n },\n onActive: noop,\n ...options,\n };\n}\n"],"names":["createRef","initialValue","current","debounce","fn","time","timerId","undefined","_len","arguments","length","args","Array","_key","clearTimeout","setTimeout","apply","isPrimitive","obj","Object","isEqual","first","second","keys","_i","_Object$keys","key","noop","createClickedEvent","item","items","index","__autocomplete_indexName","objectIDs","objectID","positions","findIndex","x","queryID","__autocomplete_queryID","createSearchInsightsApi","searchInsights","init","appId","apiKey","setUserToken","userToken","clickedObjectIDsAfterSearch","params","clickedObjectIDs","clickedFilters","convertedObjectIDsAfterSearch","convertedObjectIDs","convertedFilters","viewedObjectIDs","viewedFilters","createViewedEvents","objectIDsByIndexName","reduce","acc","concat","map","indexName","isAlgoliaInsightsHit","hit","VIEW_EVENT_DELAY","sendViewedObjectIDs","onItemsChange","insights","state","insightsEvents","event","eventName","createAlgoliaInsightsPlugin","options","getOptions","insightsClient","onSelectEvent","onSelect","onActiveEvent","onActive","previousItems","debouncedOnStateChange","isOpen","collections","filter","name","subscribe","setContext","algoliaInsightsPlugin","onStateChange","__autocomplete_pluginOptions"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- /*! @algolia/autocomplete-plugin-algolia-insights 1.2.2 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete */
2
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@algolia/autocomplete-plugin-algolia-insights"]={})}(this,(function(e){"use strict";function t(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function n(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function r(e){for(var r=1;r<arguments.length;r++){var i=null!=arguments[r]?arguments[r]:{};r%2?n(Object(i),!0).forEach((function(n){t(e,n,i[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):n(Object(i)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))}))}return e}function i(e){return function(e){if(Array.isArray(e))return o(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return o(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return o(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function c(e,t){var n=void 0;return function(){for(var r=arguments.length,i=new Array(r),o=0;o<r;o++)i[o]=arguments[o];n&&clearTimeout(n),n=setTimeout((function(){return e.apply(void 0,i)}),t)}}function a(e){return e!==Object(e)}function s(e,t){if(e===t)return!0;if(a(e)||a(t)||"function"==typeof e||"function"==typeof t)return e===t;if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n=0,r=Object.keys(e);n<r.length;n++){var i=r[n];if(!(i in t))return!1;if(!s(e[i],t[i]))return!1}return!0}function u(e){var t=e.item,n=e.items;return{index:t.__autocomplete_indexName,objectIDs:[t.objectID],positions:[1+n.findIndex((function(e){return e.objectID===t.objectID}))],queryID:t.__autocomplete_queryID}}function f(e){var t=e.items.reduce((function(e,t){var n;return e[t.__autocomplete_indexName]=(null!==(n=e[t.__autocomplete_indexName])&&void 0!==n?n:[]).concat(t.objectID),e}),{});return Object.keys(t).map((function(e){return{index:e,objectIDs:t[e]}}))}function l(e){return e.objectID&&e.__autocomplete_indexName&&e.__autocomplete_queryID}var v=c((function(e){var t=e.onItemsChange,n=e.items,i=e.insights,o=e.state;t({insights:i,insightsEvents:f({items:n}).map((function(e){return r({eventName:"Items Viewed"},e)})),state:o})}),400);e.createAlgoliaInsightsPlugin=function(e){var t,n=e.insightsClient,o=e.onItemsChange,a=void 0===o?function(e){var t=e.insights,n=e.insightsEvents;t.viewedObjectIDs.apply(t,i(n))}:o,f=e.onSelect,p=void 0===f?function(e){var t=e.insights,n=e.insightsEvents;t.clickedObjectIDsAfterSearch.apply(t,i(n))}:f,d=e.onActive,g=void 0===d?function(){}:d,y=(t=n,{init:function(e,n){t("init",{appId:e,apiKey:n})},setUserToken:function(e){t("setUserToken",e)},clickedObjectIDsAfterSearch:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];n.length>0&&t.apply(void 0,["clickedObjectIDsAfterSearch"].concat(n))},clickedObjectIDs:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];n.length>0&&t.apply(void 0,["clickedObjectIDs"].concat(n))},clickedFilters:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];n.length>0&&t.apply(void 0,["clickedFilters"].concat(n))},convertedObjectIDsAfterSearch:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];n.length>0&&t.apply(void 0,["convertedObjectIDsAfterSearch"].concat(n))},convertedObjectIDs:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];n.length>0&&t.apply(void 0,["convertedObjectIDs"].concat(n))},convertedFilters:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];n.length>0&&t.apply(void 0,["convertedFilters"].concat(n))},viewedObjectIDs:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];n.length>0&&t.apply(void 0,["viewedObjectIDs"].concat(n))},viewedFilters:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];n.length>0&&t.apply(void 0,["viewedFilters"].concat(n))}}),b={current:[]},h=c((function(e){var t=e.state;if(t.isOpen){var n=t.collections.reduce((function(e,t){return[].concat(i(e),i(t.items))}),[]).filter(l);s(b.current.map((function(e){return e.objectID})),n.map((function(e){return e.objectID})))||(b.current=n,n.length>0&&v({onItemsChange:a,items:n,insights:y,state:t}))}}),0);return{subscribe:function(e){var t=e.setContext,n=e.onSelect,i=e.onActive;t({algoliaInsightsPlugin:{insights:y}}),n((function(e){var t=e.item,n=e.state,i=e.event;l(t)&&p({state:n,event:i,insights:y,item:t,insightsEvents:[r({eventName:"Item Selected"},u({item:t,items:b.current}))]})})),i((function(e){var t=e.item,n=e.state,i=e.event;l(t)&&g({state:n,event:i,insights:y,item:t,insightsEvents:[r({eventName:"Item Active"},u({item:t,items:b.current}))]})}))},onStateChange:function(e){var t=e.state;h({state:t})}}},Object.defineProperty(e,"__esModule",{value:!0})}));
1
+ /*! @algolia/autocomplete-plugin-algolia-insights 1.5.0 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete */
2
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@algolia/autocomplete-plugin-algolia-insights"]={})}(this,(function(e){"use strict";function t(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function n(e){for(var n=1;n<arguments.length;n++){var i=null!=arguments[n]?arguments[n]:{};n%2?t(Object(i),!0).forEach((function(t){r(e,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):t(Object(i)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))}))}return e}function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e){return function(e){if(Array.isArray(e))return o(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return o(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return o(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function c(e,t){var n=void 0;return function(){for(var r=arguments.length,i=new Array(r),o=0;o<r;o++)i[o]=arguments[o];n&&clearTimeout(n),n=setTimeout((function(){return e.apply(void 0,i)}),t)}}function a(e){return e!==Object(e)}function s(e,t){if(e===t)return!0;if(a(e)||a(t)||"function"==typeof e||"function"==typeof t)return e===t;if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n=0,r=Object.keys(e);n<r.length;n++){var i=r[n];if(!(i in t))return!1;if(!s(e[i],t[i]))return!1}return!0}var u=function(){};function l(e){var t=e.item,n=e.items;return{index:t.__autocomplete_indexName,objectIDs:[t.objectID],positions:[1+n.findIndex((function(e){return e.objectID===t.objectID}))],queryID:t.__autocomplete_queryID}}function f(e){var t=e.items.reduce((function(e,t){var n;return e[t.__autocomplete_indexName]=(null!==(n=e[t.__autocomplete_indexName])&&void 0!==n?n:[]).concat(t.objectID),e}),{});return Object.keys(t).map((function(e){return{index:e,objectIDs:t[e]}}))}function p(e){return e.objectID&&e.__autocomplete_indexName&&e.__autocomplete_queryID}var v=c((function(e){var t=e.onItemsChange,r=e.items,i=e.insights,o=e.state;t({insights:i,insightsEvents:f({items:r}).map((function(e){return n({eventName:"Items Viewed"},e)})),state:o})}),400);e.createAlgoliaInsightsPlugin=function(e){var t,r=function(e){return n({onItemsChange:function(e){var t=e.insights,n=e.insightsEvents;t.viewedObjectIDs.apply(t,i(n))},onSelect:function(e){var t=e.insights,n=e.insightsEvents;t.clickedObjectIDsAfterSearch.apply(t,i(n))},onActive:u},e)}(e),o=r.insightsClient,a=r.onItemsChange,f=r.onSelect,g=r.onActive,d=(t=o,{init:function(e,n){t("init",{appId:e,apiKey:n})},setUserToken:function(e){t("setUserToken",e)},clickedObjectIDsAfterSearch:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];n.length>0&&t.apply(void 0,["clickedObjectIDsAfterSearch"].concat(n))},clickedObjectIDs:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];n.length>0&&t.apply(void 0,["clickedObjectIDs"].concat(n))},clickedFilters:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];n.length>0&&t.apply(void 0,["clickedFilters"].concat(n))},convertedObjectIDsAfterSearch:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];n.length>0&&t.apply(void 0,["convertedObjectIDsAfterSearch"].concat(n))},convertedObjectIDs:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];n.length>0&&t.apply(void 0,["convertedObjectIDs"].concat(n))},convertedFilters:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];n.length>0&&t.apply(void 0,["convertedFilters"].concat(n))},viewedObjectIDs:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];n.length>0&&t.apply(void 0,["viewedObjectIDs"].concat(n))},viewedFilters:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];n.length>0&&t.apply(void 0,["viewedFilters"].concat(n))}}),h={current:[]},m=c((function(e){var t=e.state;if(t.isOpen){var n=t.collections.reduce((function(e,t){return[].concat(i(e),i(t.items))}),[]).filter(p);s(h.current.map((function(e){return e.objectID})),n.map((function(e){return e.objectID})))||(h.current=n,n.length>0&&v({onItemsChange:a,items:n,insights:d,state:t}))}}),0);return{name:"aa.algoliaInsightsPlugin",subscribe:function(e){var t=e.setContext,r=e.onSelect,i=e.onActive;t({algoliaInsightsPlugin:{insights:d}}),r((function(e){var t=e.item,r=e.state,i=e.event;p(t)&&f({state:r,event:i,insights:d,item:t,insightsEvents:[n({eventName:"Item Selected"},l({item:t,items:h.current}))]})})),i((function(e){var t=e.item,r=e.state,i=e.event;p(t)&&g({state:r,event:i,insights:d,item:t,insightsEvents:[n({eventName:"Item Active"},l({item:t,items:h.current}))]})}))},onStateChange:function(e){var t=e.state;m({state:t})},__autocomplete_pluginOptions:e}},Object.defineProperty(e,"__esModule",{value:!0})}));
3
3
  //# sourceMappingURL=index.production.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.production.js","sources":["../../../autocomplete-shared/dist/esm/debounce.js","../../../autocomplete-shared/dist/esm/isEqual.js","../../src/createClickedEvent.ts","../../src/createViewedEvents.ts","../../src/isAlgoliaInsightsHit.ts","../../src/createAlgoliaInsightsPlugin.ts","../../src/createSearchInsightsApi.ts","../../../autocomplete-shared/dist/esm/createRef.js"],"sourcesContent":["export function debounce(fn, time) {\n var timerId = undefined;\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (timerId) {\n clearTimeout(timerId);\n }\n\n timerId = setTimeout(function () {\n return fn.apply(void 0, args);\n }, time);\n };\n}","function isPrimitive(obj) {\n return obj !== Object(obj);\n}\n\nexport function isEqual(first, second) {\n if (first === second) {\n return true;\n }\n\n if (isPrimitive(first) || isPrimitive(second) || typeof first === 'function' || typeof second === 'function') {\n return first === second;\n }\n\n if (Object.keys(first).length !== Object.keys(second).length) {\n return false;\n }\n\n for (var _i = 0, _Object$keys = Object.keys(first); _i < _Object$keys.length; _i++) {\n var key = _Object$keys[_i];\n\n if (!(key in second)) {\n return false;\n }\n\n if (!isEqual(first[key], second[key])) {\n return false;\n }\n }\n\n return true;\n}","import { AlgoliaInsightsHit, ClickedObjectIDsAfterSearchParams } from './types';\n\ntype CreateClickedEventParams = {\n item: AlgoliaInsightsHit;\n items: AlgoliaInsightsHit[];\n};\n\nexport function createClickedEvent({\n item,\n items,\n}: CreateClickedEventParams): Omit<\n ClickedObjectIDsAfterSearchParams,\n 'eventName'\n> {\n return {\n index: item.__autocomplete_indexName,\n objectIDs: [item.objectID],\n positions: [1 + items.findIndex((x) => x.objectID === item.objectID)],\n queryID: item.__autocomplete_queryID,\n };\n}\n","import { AlgoliaInsightsHit, ViewedObjectIDsParams } from './types';\n\ntype CreateViewedEventsParams = {\n items: AlgoliaInsightsHit[];\n};\n\nexport function createViewedEvents({\n items,\n}: CreateViewedEventsParams): Array<Omit<ViewedObjectIDsParams, 'eventName'>> {\n const objectIDsByIndexName = items.reduce<Record<string, string[]>>(\n (acc, current) => {\n acc[current.__autocomplete_indexName] = (\n acc[current.__autocomplete_indexName] ?? []\n ).concat(current.objectID);\n\n return acc;\n },\n {}\n );\n\n return Object.keys(objectIDsByIndexName).map((indexName) => {\n const objectIDs = objectIDsByIndexName[indexName];\n\n return {\n index: indexName,\n objectIDs,\n };\n });\n}\n","import { AlgoliaInsightsHit } from './types';\n\nexport function isAlgoliaInsightsHit(hit: any): hit is AlgoliaInsightsHit {\n return (\n hit.objectID && hit.__autocomplete_indexName && hit.__autocomplete_queryID\n );\n}\n","import {\n AutocompleteState,\n AutocompletePlugin,\n} from '@algolia/autocomplete-js';\nimport { createRef, debounce, isEqual } from '@algolia/autocomplete-shared';\n\nimport { createClickedEvent } from './createClickedEvent';\nimport { createSearchInsightsApi } from './createSearchInsightsApi';\nimport { createViewedEvents } from './createViewedEvents';\nimport { isAlgoliaInsightsHit } from './isAlgoliaInsightsHit';\nimport {\n AlgoliaInsightsHit,\n AutocompleteInsightsApi,\n InsightsClient,\n OnActiveParams,\n OnItemsChangeParams,\n OnSelectParams,\n} from './types';\n\nconst VIEW_EVENT_DELAY = 400;\n\ntype SendViewedObjectIDsParams = {\n onItemsChange(params: OnItemsChangeParams): void;\n items: AlgoliaInsightsHit[];\n insights: AutocompleteInsightsApi;\n state: AutocompleteState<any>;\n};\n\nconst sendViewedObjectIDs = debounce<SendViewedObjectIDsParams>(\n ({ onItemsChange, items, insights, state }) => {\n onItemsChange({\n insights,\n insightsEvents: createViewedEvents({ items }).map((event) => ({\n eventName: 'Items Viewed',\n ...event,\n })),\n state,\n });\n },\n VIEW_EVENT_DELAY\n);\n\nexport type CreateAlgoliaInsightsPluginParams = {\n /**\n * The initialized Search Insights client.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-algolia-insights/createAlgoliaInsightsPlugin/#param-insightsclient\n */\n insightsClient: InsightsClient;\n /**\n * Hook to send an Insights event when the items change.\n *\n * By default, it sends a `viewedObjectIDs` event.\n *\n * In as-you-type experiences, items change as the user types. This hook is debounced every 400ms to reflect actual items that users notice and avoid generating too many events for items matching \"in progress\" queries.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-algolia-insights/createAlgoliaInsightsPlugin/#param-onitemschange\n */\n onItemsChange?(params: OnItemsChangeParams): void;\n /**\n * Hook to send an Insights event when an item is selected.\n *\n * By default, it sends a clickedObjectIDsAfterSearch event.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-algolia-insights/createAlgoliaInsightsPlugin/#param-onselect\n */\n onSelect?(params: OnSelectParams): void;\n /**\n * Hook to send an Insights event when an item is active.\n *\n * By default, it doesn't send any events.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-algolia-insights/createAlgoliaInsightsPlugin/#param-onactive\n */\n onActive?(params: OnActiveParams): void;\n};\n\nexport function createAlgoliaInsightsPlugin({\n insightsClient,\n onItemsChange = ({ insights, insightsEvents }) => {\n insights.viewedObjectIDs(...insightsEvents);\n },\n onSelect: onSelectEvent = ({ insights, insightsEvents }) => {\n insights.clickedObjectIDsAfterSearch(...insightsEvents);\n },\n onActive: onActiveEvent = () => {},\n}: CreateAlgoliaInsightsPluginParams): AutocompletePlugin<any, undefined> {\n const insights = createSearchInsightsApi(insightsClient);\n const previousItems = createRef<AlgoliaInsightsHit[]>([]);\n\n const debouncedOnStateChange = debounce<{\n state: AutocompleteState<any>;\n }>(({ state }) => {\n if (!state.isOpen) {\n return;\n }\n\n const items = state.collections\n .reduce<unknown[]>((acc, current) => {\n return [...acc, ...current.items];\n }, [])\n .filter(isAlgoliaInsightsHit);\n\n if (\n !isEqual(\n previousItems.current.map((x) => x.objectID),\n items.map((x) => x.objectID)\n )\n ) {\n previousItems.current = items;\n\n if (items.length > 0) {\n sendViewedObjectIDs({ onItemsChange, items, insights, state });\n }\n }\n }, 0);\n\n return {\n subscribe({ setContext, onSelect, onActive }) {\n setContext({ algoliaInsightsPlugin: { insights } });\n\n onSelect(({ item, state, event }) => {\n if (!isAlgoliaInsightsHit(item)) {\n return;\n }\n\n onSelectEvent({\n state: state as AutocompleteState<any>,\n event,\n insights,\n item,\n insightsEvents: [\n {\n eventName: 'Item Selected',\n ...createClickedEvent({ item, items: previousItems.current }),\n },\n ],\n });\n });\n\n onActive(({ item, state, event }) => {\n if (!isAlgoliaInsightsHit(item)) {\n return;\n }\n\n onActiveEvent({\n state: state as AutocompleteState<any>,\n event,\n insights,\n item,\n insightsEvents: [\n {\n eventName: 'Item Active',\n ...createClickedEvent({ item, items: previousItems.current }),\n },\n ],\n });\n });\n },\n onStateChange({ state }) {\n debouncedOnStateChange({ state: state as AutocompleteState<any> });\n },\n };\n}\n","import {\n ClickedFiltersParams,\n ClickedObjectIDsAfterSearchParams,\n ClickedObjectIDsParams,\n ConvertedFiltersParams,\n ConvertedObjectIDsAfterSearchParams,\n ConvertedObjectIDsParams,\n InsightsClient,\n ViewedFiltersParams,\n ViewedObjectIDsParams,\n} from './types';\n\nexport function createSearchInsightsApi(searchInsights: InsightsClient) {\n return {\n /**\n * Initializes Insights with Algolia credentials.\n */\n init(appId: string, apiKey: string) {\n searchInsights('init', { appId, apiKey });\n },\n /**\n * Sets the user token to attach to events.\n */\n setUserToken(userToken: string) {\n searchInsights('setUserToken', userToken);\n },\n /**\n * Sends click events to capture a query and its clicked items and positions.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/clicked-object-ids-after-search/\n */\n clickedObjectIDsAfterSearch(\n ...params: ClickedObjectIDsAfterSearchParams[]\n ) {\n if (params.length > 0) {\n searchInsights('clickedObjectIDsAfterSearch', ...params);\n }\n },\n /**\n * Sends click events to capture clicked items.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/clicked-object-ids/\n */\n clickedObjectIDs(...params: ClickedObjectIDsParams[]) {\n if (params.length > 0) {\n searchInsights('clickedObjectIDs', ...params);\n }\n },\n /**\n * Sends click events to capture the filters a user clicks on.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/clicked-filters/\n */\n clickedFilters(...params: ClickedFiltersParams[]) {\n if (params.length > 0) {\n searchInsights('clickedFilters', ...params);\n }\n },\n /**\n * Sends conversion events to capture a query and its clicked items.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/converted-object-ids-after-search/\n */\n convertedObjectIDsAfterSearch(\n ...params: ConvertedObjectIDsAfterSearchParams[]\n ) {\n if (params.length > 0) {\n searchInsights('convertedObjectIDsAfterSearch', ...params);\n }\n },\n /**\n * Sends conversion events to capture clicked items.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/converted-object-ids/\n */\n convertedObjectIDs(...params: ConvertedObjectIDsParams[]) {\n if (params.length > 0) {\n searchInsights('convertedObjectIDs', ...params);\n }\n },\n /**\n * Sends conversion events to capture the filters a user uses when converting.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/converted-filters/\n */\n convertedFilters(...params: ConvertedFiltersParams[]) {\n if (params.length > 0) {\n searchInsights('convertedFilters', ...params);\n }\n },\n /**\n * Sends view events to capture clicked items.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/viewed-object-ids/\n */\n viewedObjectIDs(...params: ViewedObjectIDsParams[]) {\n if (params.length > 0) {\n searchInsights('viewedObjectIDs', ...params);\n }\n },\n /**\n * Sends view events to capture the filters a user uses when viewing.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/viewed-filters/\n */\n viewedFilters(...params: ViewedFiltersParams[]) {\n if (params.length > 0) {\n searchInsights('viewedFilters', ...params);\n }\n },\n };\n}\n","export function createRef(initialValue) {\n return {\n current: initialValue\n };\n}"],"names":["debounce","fn","time","timerId","undefined","_len","arguments","length","args","Array","_key","clearTimeout","setTimeout","apply","isPrimitive","obj","Object","isEqual","first","second","keys","_i","_Object$keys","key","createClickedEvent","item","items","index","__autocomplete_indexName","objectIDs","objectID","positions","findIndex","x","queryID","__autocomplete_queryID","createViewedEvents","objectIDsByIndexName","reduce","acc","current","concat","map","indexName","isAlgoliaInsightsHit","hit","sendViewedObjectIDs","onItemsChange","insights","state","insightsEvents","event","eventName","searchInsights","insightsClient","viewedObjectIDs","onSelect","onSelectEvent","clickedObjectIDsAfterSearch","onActive","onActiveEvent","init","appId","apiKey","setUserToken","userToken","params","clickedObjectIDs","clickedFilters","convertedObjectIDsAfterSearch","convertedObjectIDs","convertedFilters","viewedFilters","previousItems","debouncedOnStateChange","isOpen","collections","filter","subscribe","setContext","algoliaInsightsPlugin","onStateChange"],"mappings":"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"}
1
+ {"version":3,"file":"index.production.js","sources":["../../../autocomplete-shared/dist/esm/debounce.js","../../../autocomplete-shared/dist/esm/isEqual.js","../../../autocomplete-shared/dist/esm/noop.js","../../src/createClickedEvent.ts","../../src/createViewedEvents.ts","../../src/isAlgoliaInsightsHit.ts","../../src/createAlgoliaInsightsPlugin.ts","../../src/createSearchInsightsApi.ts","../../../autocomplete-shared/dist/esm/createRef.js"],"sourcesContent":["export function debounce(fn, time) {\n var timerId = undefined;\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (timerId) {\n clearTimeout(timerId);\n }\n\n timerId = setTimeout(function () {\n return fn.apply(void 0, args);\n }, time);\n };\n}","function isPrimitive(obj) {\n return obj !== Object(obj);\n}\n\nexport function isEqual(first, second) {\n if (first === second) {\n return true;\n }\n\n if (isPrimitive(first) || isPrimitive(second) || typeof first === 'function' || typeof second === 'function') {\n return first === second;\n }\n\n if (Object.keys(first).length !== Object.keys(second).length) {\n return false;\n }\n\n for (var _i = 0, _Object$keys = Object.keys(first); _i < _Object$keys.length; _i++) {\n var key = _Object$keys[_i];\n\n if (!(key in second)) {\n return false;\n }\n\n if (!isEqual(first[key], second[key])) {\n return false;\n }\n }\n\n return true;\n}","export var noop = function noop() {};","import { AlgoliaInsightsHit, ClickedObjectIDsAfterSearchParams } from './types';\n\ntype CreateClickedEventParams = {\n item: AlgoliaInsightsHit;\n items: AlgoliaInsightsHit[];\n};\n\nexport function createClickedEvent({\n item,\n items,\n}: CreateClickedEventParams): Omit<\n ClickedObjectIDsAfterSearchParams,\n 'eventName'\n> {\n return {\n index: item.__autocomplete_indexName,\n objectIDs: [item.objectID],\n positions: [1 + items.findIndex((x) => x.objectID === item.objectID)],\n queryID: item.__autocomplete_queryID,\n };\n}\n","import { AlgoliaInsightsHit, ViewedObjectIDsParams } from './types';\n\ntype CreateViewedEventsParams = {\n items: AlgoliaInsightsHit[];\n};\n\nexport function createViewedEvents({\n items,\n}: CreateViewedEventsParams): Array<Omit<ViewedObjectIDsParams, 'eventName'>> {\n const objectIDsByIndexName = items.reduce<Record<string, string[]>>(\n (acc, current) => {\n acc[current.__autocomplete_indexName] = (\n acc[current.__autocomplete_indexName] ?? []\n ).concat(current.objectID);\n\n return acc;\n },\n {}\n );\n\n return Object.keys(objectIDsByIndexName).map((indexName) => {\n const objectIDs = objectIDsByIndexName[indexName];\n\n return {\n index: indexName,\n objectIDs,\n };\n });\n}\n","import { AlgoliaInsightsHit } from './types';\n\nexport function isAlgoliaInsightsHit(hit: any): hit is AlgoliaInsightsHit {\n return (\n hit.objectID && hit.__autocomplete_indexName && hit.__autocomplete_queryID\n );\n}\n","import {\n AutocompleteState,\n AutocompletePlugin,\n} from '@algolia/autocomplete-js';\nimport {\n createRef,\n debounce,\n isEqual,\n noop,\n} from '@algolia/autocomplete-shared';\n\nimport { createClickedEvent } from './createClickedEvent';\nimport { createSearchInsightsApi } from './createSearchInsightsApi';\nimport { createViewedEvents } from './createViewedEvents';\nimport { isAlgoliaInsightsHit } from './isAlgoliaInsightsHit';\nimport {\n AlgoliaInsightsHit,\n AutocompleteInsightsApi,\n InsightsClient,\n OnActiveParams,\n OnItemsChangeParams,\n OnSelectParams,\n} from './types';\n\nconst VIEW_EVENT_DELAY = 400;\n\ntype SendViewedObjectIDsParams = {\n onItemsChange(params: OnItemsChangeParams): void;\n items: AlgoliaInsightsHit[];\n insights: AutocompleteInsightsApi;\n state: AutocompleteState<any>;\n};\n\nconst sendViewedObjectIDs = debounce<SendViewedObjectIDsParams>(\n ({ onItemsChange, items, insights, state }) => {\n onItemsChange({\n insights,\n insightsEvents: createViewedEvents({ items }).map((event) => ({\n eventName: 'Items Viewed',\n ...event,\n })),\n state,\n });\n },\n VIEW_EVENT_DELAY\n);\n\nexport type CreateAlgoliaInsightsPluginParams = {\n /**\n * The initialized Search Insights client.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-algolia-insights/createAlgoliaInsightsPlugin/#param-insightsclient\n */\n insightsClient: InsightsClient;\n /**\n * Hook to send an Insights event when the items change.\n *\n * By default, it sends a `viewedObjectIDs` event.\n *\n * In as-you-type experiences, items change as the user types. This hook is debounced every 400ms to reflect actual items that users notice and avoid generating too many events for items matching \"in progress\" queries.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-algolia-insights/createAlgoliaInsightsPlugin/#param-onitemschange\n */\n onItemsChange?(params: OnItemsChangeParams): void;\n /**\n * Hook to send an Insights event when an item is selected.\n *\n * By default, it sends a clickedObjectIDsAfterSearch event.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-algolia-insights/createAlgoliaInsightsPlugin/#param-onselect\n */\n onSelect?(params: OnSelectParams): void;\n /**\n * Hook to send an Insights event when an item is active.\n *\n * By default, it doesn't send any events.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-algolia-insights/createAlgoliaInsightsPlugin/#param-onactive\n */\n onActive?(params: OnActiveParams): void;\n};\n\nexport function createAlgoliaInsightsPlugin(\n options: CreateAlgoliaInsightsPluginParams\n): AutocompletePlugin<any, undefined> {\n const {\n insightsClient,\n onItemsChange,\n onSelect: onSelectEvent,\n onActive: onActiveEvent,\n } = getOptions(options);\n\n const insights = createSearchInsightsApi(insightsClient);\n const previousItems = createRef<AlgoliaInsightsHit[]>([]);\n\n const debouncedOnStateChange = debounce<{\n state: AutocompleteState<any>;\n }>(({ state }) => {\n if (!state.isOpen) {\n return;\n }\n\n const items = state.collections\n .reduce<unknown[]>((acc, current) => {\n return [...acc, ...current.items];\n }, [])\n .filter(isAlgoliaInsightsHit);\n\n if (\n !isEqual(\n previousItems.current.map((x) => x.objectID),\n items.map((x) => x.objectID)\n )\n ) {\n previousItems.current = items;\n\n if (items.length > 0) {\n sendViewedObjectIDs({ onItemsChange, items, insights, state });\n }\n }\n }, 0);\n\n return {\n name: 'aa.algoliaInsightsPlugin',\n subscribe({ setContext, onSelect, onActive }) {\n setContext({ algoliaInsightsPlugin: { insights } });\n\n onSelect(({ item, state, event }) => {\n if (!isAlgoliaInsightsHit(item)) {\n return;\n }\n\n onSelectEvent({\n state: state as AutocompleteState<any>,\n event,\n insights,\n item,\n insightsEvents: [\n {\n eventName: 'Item Selected',\n ...createClickedEvent({ item, items: previousItems.current }),\n },\n ],\n });\n });\n\n onActive(({ item, state, event }) => {\n if (!isAlgoliaInsightsHit(item)) {\n return;\n }\n\n onActiveEvent({\n state: state as AutocompleteState<any>,\n event,\n insights,\n item,\n insightsEvents: [\n {\n eventName: 'Item Active',\n ...createClickedEvent({ item, items: previousItems.current }),\n },\n ],\n });\n });\n },\n onStateChange({ state }) {\n debouncedOnStateChange({ state: state as AutocompleteState<any> });\n },\n __autocomplete_pluginOptions: options,\n };\n}\n\nfunction getOptions(options: CreateAlgoliaInsightsPluginParams) {\n return {\n onItemsChange({ insights, insightsEvents }) {\n insights.viewedObjectIDs(...insightsEvents);\n },\n onSelect({ insights, insightsEvents }) {\n insights.clickedObjectIDsAfterSearch(...insightsEvents);\n },\n onActive: noop,\n ...options,\n };\n}\n","import {\n ClickedFiltersParams,\n ClickedObjectIDsAfterSearchParams,\n ClickedObjectIDsParams,\n ConvertedFiltersParams,\n ConvertedObjectIDsAfterSearchParams,\n ConvertedObjectIDsParams,\n InsightsClient,\n ViewedFiltersParams,\n ViewedObjectIDsParams,\n} from './types';\n\nexport function createSearchInsightsApi(searchInsights: InsightsClient) {\n return {\n /**\n * Initializes Insights with Algolia credentials.\n */\n init(appId: string, apiKey: string) {\n searchInsights('init', { appId, apiKey });\n },\n /**\n * Sets the user token to attach to events.\n */\n setUserToken(userToken: string) {\n searchInsights('setUserToken', userToken);\n },\n /**\n * Sends click events to capture a query and its clicked items and positions.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/clicked-object-ids-after-search/\n */\n clickedObjectIDsAfterSearch(\n ...params: ClickedObjectIDsAfterSearchParams[]\n ) {\n if (params.length > 0) {\n searchInsights('clickedObjectIDsAfterSearch', ...params);\n }\n },\n /**\n * Sends click events to capture clicked items.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/clicked-object-ids/\n */\n clickedObjectIDs(...params: ClickedObjectIDsParams[]) {\n if (params.length > 0) {\n searchInsights('clickedObjectIDs', ...params);\n }\n },\n /**\n * Sends click events to capture the filters a user clicks on.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/clicked-filters/\n */\n clickedFilters(...params: ClickedFiltersParams[]) {\n if (params.length > 0) {\n searchInsights('clickedFilters', ...params);\n }\n },\n /**\n * Sends conversion events to capture a query and its clicked items.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/converted-object-ids-after-search/\n */\n convertedObjectIDsAfterSearch(\n ...params: ConvertedObjectIDsAfterSearchParams[]\n ) {\n if (params.length > 0) {\n searchInsights('convertedObjectIDsAfterSearch', ...params);\n }\n },\n /**\n * Sends conversion events to capture clicked items.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/converted-object-ids/\n */\n convertedObjectIDs(...params: ConvertedObjectIDsParams[]) {\n if (params.length > 0) {\n searchInsights('convertedObjectIDs', ...params);\n }\n },\n /**\n * Sends conversion events to capture the filters a user uses when converting.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/converted-filters/\n */\n convertedFilters(...params: ConvertedFiltersParams[]) {\n if (params.length > 0) {\n searchInsights('convertedFilters', ...params);\n }\n },\n /**\n * Sends view events to capture clicked items.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/viewed-object-ids/\n */\n viewedObjectIDs(...params: ViewedObjectIDsParams[]) {\n if (params.length > 0) {\n searchInsights('viewedObjectIDs', ...params);\n }\n },\n /**\n * Sends view events to capture the filters a user uses when viewing.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/viewed-filters/\n */\n viewedFilters(...params: ViewedFiltersParams[]) {\n if (params.length > 0) {\n searchInsights('viewedFilters', ...params);\n }\n },\n };\n}\n","export function createRef(initialValue) {\n return {\n current: initialValue\n };\n}"],"names":["debounce","fn","time","timerId","undefined","_len","arguments","length","args","Array","_key","clearTimeout","setTimeout","apply","isPrimitive","obj","Object","isEqual","first","second","keys","_i","_Object$keys","key","noop","createClickedEvent","item","items","index","__autocomplete_indexName","objectIDs","objectID","positions","findIndex","x","queryID","__autocomplete_queryID","createViewedEvents","objectIDsByIndexName","reduce","acc","current","concat","map","indexName","isAlgoliaInsightsHit","hit","sendViewedObjectIDs","onItemsChange","insights","state","insightsEvents","event","eventName","options","searchInsights","viewedObjectIDs","onSelect","clickedObjectIDsAfterSearch","onActive","getOptions","insightsClient","onSelectEvent","onActiveEvent","init","appId","apiKey","setUserToken","userToken","params","clickedObjectIDs","clickedFilters","convertedObjectIDsAfterSearch","convertedObjectIDs","convertedFilters","viewedFilters","previousItems","debouncedOnStateChange","isOpen","collections","filter","name","subscribe","setContext","algoliaInsightsPlugin","onStateChange","__autocomplete_pluginOptions"],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@algolia/autocomplete-plugin-algolia-insights",
3
3
  "description": "A plugin to add Algolia Insights to Algolia Autocomplete.",
4
- "version": "1.2.2",
4
+ "version": "1.5.0",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/algolia/autocomplete",
7
7
  "repository": "algolia/autocomplete",
@@ -31,11 +31,11 @@
31
31
  "watch": "watch \"yarn on:change\" --ignoreDirectoryPattern \"/dist/\""
32
32
  },
33
33
  "dependencies": {
34
- "@algolia/autocomplete-js": "1.2.2",
35
- "@algolia/autocomplete-shared": "1.2.2"
34
+ "@algolia/autocomplete-js": "1.5.0",
35
+ "@algolia/autocomplete-shared": "1.5.0"
36
36
  },
37
37
  "devDependencies": {
38
- "@algolia/autocomplete-core": "1.2.2"
38
+ "@algolia/autocomplete-core": "1.5.0"
39
39
  },
40
40
  "peerDependencies": {
41
41
  "search-insights": "^1.0.0"