@algolia/autocomplete-js 1.6.0 → 1.6.3

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.
@@ -1,3 +1,9 @@
1
+ var _excluded = ["components"];
2
+
3
+ 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; }
4
+
5
+ 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; }
6
+
1
7
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
8
 
3
9
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
@@ -14,7 +20,7 @@ import { getDefaultOptions } from './getDefaultOptions';
14
20
  import { getPanelPlacementStyle } from './getPanelPlacementStyle';
15
21
  import { renderPanel, renderSearchBox } from './render';
16
22
  import { userAgents } from './userAgents';
17
- import { mergeDeep, setProperties } from './utils';
23
+ import { mergeDeep, pickBy, setProperties } from './utils';
18
24
  export function autocomplete(options) {
19
25
  var _createEffectWrapper = createEffectWrapper(),
20
26
  runEffect = _createEffectWrapper.runEffect,
@@ -273,7 +279,21 @@ export function autocomplete(options) {
273
279
  function update() {
274
280
  var updatedOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
275
281
  cleanupEffects();
276
- optionsRef.current = mergeDeep(props.value.renderer, props.value.core, {
282
+
283
+ var _props$value$renderer = props.value.renderer,
284
+ components = _props$value$renderer.components,
285
+ rendererProps = _objectWithoutProperties(_props$value$renderer, _excluded);
286
+
287
+ optionsRef.current = mergeDeep(rendererProps, props.value.core, {
288
+ // We need to filter out default components so they can be replaced with
289
+ // a new `renderer`, without getting rid of user components.
290
+ // @MAJOR Deal with registering components with the same name as the
291
+ // default ones. If we disallow overriding default components, we'd just
292
+ // need to pass all `components` here.
293
+ components: pickBy(components, function (_ref4) {
294
+ var value = _ref4.value;
295
+ return !value.hasOwnProperty('__autocomplete_componentName');
296
+ }),
277
297
  initialState: lastStateRef.current
278
298
  }, updatedOptions);
279
299
  runReactives();
@@ -1,3 +1,6 @@
1
1
  /// <reference types="react" />
2
2
  import { AutocompleteRenderer, HighlightHitParams } from '../types';
3
- export declare function createHighlightComponent({ createElement, Fragment, }: AutocompleteRenderer): <THit>({ hit, attribute, tagName, }: HighlightHitParams<THit>) => JSX.Element;
3
+ export declare function createHighlightComponent({ createElement, Fragment, }: AutocompleteRenderer): {
4
+ <THit>({ hit, attribute, tagName, }: HighlightHitParams<THit>): JSX.Element;
5
+ __autocomplete_componentName: string;
6
+ };
@@ -2,7 +2,8 @@ import { parseAlgoliaHitHighlight } from '@algolia/autocomplete-preset-algolia';
2
2
  export function createHighlightComponent(_ref) {
3
3
  var createElement = _ref.createElement,
4
4
  Fragment = _ref.Fragment;
5
- return function Highlight(_ref2) {
5
+
6
+ function Highlight(_ref2) {
6
7
  var hit = _ref2.hit,
7
8
  attribute = _ref2.attribute,
8
9
  _ref2$tagName = _ref2.tagName,
@@ -15,5 +16,8 @@ export function createHighlightComponent(_ref) {
15
16
  key: index
16
17
  }, x.value) : x.value;
17
18
  }));
18
- };
19
+ }
20
+
21
+ Highlight.__autocomplete_componentName = 'Highlight';
22
+ return Highlight;
19
23
  }
@@ -1,3 +1,6 @@
1
1
  /// <reference types="react" />
2
2
  import { AutocompleteRenderer, HighlightHitParams } from '../types';
3
- export declare function createReverseHighlightComponent({ createElement, Fragment, }: AutocompleteRenderer): <THit>({ hit, attribute, tagName, }: HighlightHitParams<THit>) => JSX.Element;
3
+ export declare function createReverseHighlightComponent({ createElement, Fragment, }: AutocompleteRenderer): {
4
+ <THit>({ hit, attribute, tagName, }: HighlightHitParams<THit>): JSX.Element;
5
+ __autocomplete_componentName: string;
6
+ };
@@ -2,7 +2,8 @@ import { parseAlgoliaHitReverseHighlight } from '@algolia/autocomplete-preset-al
2
2
  export function createReverseHighlightComponent(_ref) {
3
3
  var createElement = _ref.createElement,
4
4
  Fragment = _ref.Fragment;
5
- return function ReverseHighlight(_ref2) {
5
+
6
+ function ReverseHighlight(_ref2) {
6
7
  var hit = _ref2.hit,
7
8
  attribute = _ref2.attribute,
8
9
  _ref2$tagName = _ref2.tagName,
@@ -15,5 +16,8 @@ export function createReverseHighlightComponent(_ref) {
15
16
  key: index
16
17
  }, x.value) : x.value;
17
18
  }));
18
- };
19
+ }
20
+
21
+ ReverseHighlight.__autocomplete_componentName = 'ReverseHighlight';
22
+ return ReverseHighlight;
19
23
  }
@@ -1,3 +1,6 @@
1
1
  /// <reference types="react" />
2
2
  import { AutocompleteRenderer, HighlightHitParams } from '../types';
3
- export declare function createReverseSnippetComponent({ createElement, Fragment, }: AutocompleteRenderer): <THit>({ hit, attribute, tagName, }: HighlightHitParams<THit>) => JSX.Element;
3
+ export declare function createReverseSnippetComponent({ createElement, Fragment, }: AutocompleteRenderer): {
4
+ <THit>({ hit, attribute, tagName, }: HighlightHitParams<THit>): JSX.Element;
5
+ __autocomplete_componentName: string;
6
+ };
@@ -2,7 +2,8 @@ import { parseAlgoliaHitReverseSnippet } from '@algolia/autocomplete-preset-algo
2
2
  export function createReverseSnippetComponent(_ref) {
3
3
  var createElement = _ref.createElement,
4
4
  Fragment = _ref.Fragment;
5
- return function ReverseSnippet(_ref2) {
5
+
6
+ function ReverseSnippet(_ref2) {
6
7
  var hit = _ref2.hit,
7
8
  attribute = _ref2.attribute,
8
9
  _ref2$tagName = _ref2.tagName,
@@ -15,5 +16,8 @@ export function createReverseSnippetComponent(_ref) {
15
16
  key: index
16
17
  }, x.value) : x.value;
17
18
  }));
18
- };
19
+ }
20
+
21
+ ReverseSnippet.__autocomplete_componentName = 'ReverseSnippet';
22
+ return ReverseSnippet;
19
23
  }
@@ -1,3 +1,6 @@
1
1
  /// <reference types="react" />
2
2
  import { AutocompleteRenderer, HighlightHitParams } from '../types';
3
- export declare function createSnippetComponent({ createElement, Fragment, }: AutocompleteRenderer): <THit>({ hit, attribute, tagName, }: HighlightHitParams<THit>) => JSX.Element;
3
+ export declare function createSnippetComponent({ createElement, Fragment, }: AutocompleteRenderer): {
4
+ <THit>({ hit, attribute, tagName, }: HighlightHitParams<THit>): JSX.Element;
5
+ __autocomplete_componentName: string;
6
+ };
@@ -2,7 +2,8 @@ import { parseAlgoliaHitSnippet } from '@algolia/autocomplete-preset-algolia';
2
2
  export function createSnippetComponent(_ref) {
3
3
  var createElement = _ref.createElement,
4
4
  Fragment = _ref.Fragment;
5
- return function Snippet(_ref2) {
5
+
6
+ function Snippet(_ref2) {
6
7
  var hit = _ref2.hit,
7
8
  attribute = _ref2.attribute,
8
9
  _ref2$tagName = _ref2.tagName,
@@ -15,5 +16,8 @@ export function createSnippetComponent(_ref) {
15
16
  key: index
16
17
  }, x.value) : x.value;
17
18
  }));
18
- };
19
+ }
20
+
21
+ Snippet.__autocomplete_componentName = 'Snippet';
22
+ return Snippet;
19
23
  }
@@ -159,7 +159,7 @@ export declare function getDefaultOptions<TItem extends BaseItem>(options: Autoc
159
159
  renderer: {
160
160
  createElement: import("./types").Pragma;
161
161
  Fragment: any;
162
- render?: import("./types").Render | undefined;
162
+ render: import("./types").Render;
163
163
  };
164
164
  detachedMediaQuery: string;
165
165
  components: {
@@ -43,7 +43,8 @@ var defaultClassNames = {
43
43
  };
44
44
 
45
45
  var defaultRender = function defaultRender(_ref, root) {
46
- var children = _ref.children;
46
+ var children = _ref.children,
47
+ render = _ref.render;
47
48
  render(children, root);
48
49
  };
49
50
 
@@ -82,7 +83,7 @@ export function getDefaultOptions(options) {
82
83
 
83
84
  var containerElement = getHTMLElement(environment, container);
84
85
  invariant(containerElement.tagName !== 'INPUT', 'The `container` option does not support `input` elements. You need to change the container to a `div`.');
85
- process.env.NODE_ENV !== 'production' ? warn(Boolean(!render || (renderer === null || renderer === void 0 ? void 0 : renderer.render)), "You provided the `render` option but did not provide a `renderer.render`. Since v1.6.0, you can provide a `render` function directly in `renderer`." + "\nTo get rid of this warning, do any of the following depending on your use case." + "\n- If you are using the `render` option only to override Autocomplete's default `render` function, pass the `render` function into `renderer` and remove the `render` option." + '\n- If you are using the `render` option to customize the layout, pass your `render` function into `renderer` and use it from the provided parameters of the `render` option.' + '\nSee https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-js/autocomplete/#param-render') : void 0;
86
+ process.env.NODE_ENV !== 'production' ? warn(!(render && renderer && !(renderer !== null && renderer !== void 0 && renderer.render)), "You provided the `render` option but did not provide a `renderer.render`. Since v1.6.0, you can provide a `render` function directly in `renderer`." + "\nTo get rid of this warning, do any of the following depending on your use case." + "\n- If you are using the `render` option only to override Autocomplete's default `render` function, pass the `render` function into `renderer` and remove the `render` option." + '\n- If you are using the `render` option to customize the layout, pass your `render` function into `renderer` and use it from the provided parameters of the `render` option.' + '\n- If you are using the `render` option to work with React 18, pass an empty `render` function into `renderer`.' + '\nSee https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-js/autocomplete/#param-render') : void 0;
86
87
  process.env.NODE_ENV !== 'production' ? warn(!renderer || render || renderer.Fragment && renderer.createElement && renderer.render, "You provided an incomplete `renderer` (missing: ".concat([!(renderer !== null && renderer !== void 0 && renderer.createElement) && '`renderer.createElement`', !(renderer !== null && renderer !== void 0 && renderer.Fragment) && '`renderer.Fragment`', !(renderer !== null && renderer !== void 0 && renderer.render) && '`renderer.render`'].filter(Boolean).join(', '), "). This can cause rendering issues.") + '\nSee https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-js/autocomplete/#param-renderer') : void 0;
87
88
 
88
89
  var defaultedRenderer = _objectSpread(_objectSpread({}, defaultRenderer), renderer);
@@ -11,7 +11,7 @@ declare type RenderProps<TItem extends BaseItem> = {
11
11
  panelContainer: HTMLElement;
12
12
  propGetters: AutocompletePropGetters<TItem>;
13
13
  state: AutocompleteState<TItem>;
14
- renderer: AutocompleteRenderer;
14
+ renderer: Required<AutocompleteRenderer>;
15
15
  };
16
16
  export declare function renderSearchBox<TItem extends BaseItem>({ autocomplete, autocompleteScopeApi, dom, propGetters, state, }: RenderProps<TItem>): void;
17
17
  export declare function renderPanel<TItem extends BaseItem>(render: AutocompleteRender<TItem>, { autocomplete, autocompleteScopeApi, classNames, html, dom, panelContainer, propGetters, state, components, renderer, }: RenderProps<TItem>): void;
@@ -11,5 +11,5 @@ export declare type AutocompleteRender<TItem extends BaseItem> = (params: Autoco
11
11
  createElement: Pragma;
12
12
  Fragment: PragmaFrag;
13
13
  html: HTMLTemplate;
14
- render?: Render;
14
+ render: Render;
15
15
  }, root: HTMLElement) => void;
@@ -1,13 +1,13 @@
1
1
  /// <reference types="react" />
2
2
  export declare type Pragma = (type: any, props: Record<string, any> | null, ...children: ComponentChildren[]) => JSX.Element;
3
3
  export declare type PragmaFrag = any;
4
- declare type ComponentChild = VNode<any> | object | string | number | boolean | null | undefined;
4
+ declare type ComponentChild = VNode<any> | string | number | boolean | null | undefined;
5
5
  declare type ComponentChildren = ComponentChild[] | ComponentChild;
6
- export declare type VNode<TProps = any> = {
6
+ export declare type VNode<TProps = {}> = {
7
7
  type: any;
8
+ key: string | number | any;
8
9
  props: TProps & {
9
10
  children: ComponentChildren;
10
- key?: any;
11
11
  };
12
12
  };
13
13
  export declare type Render = (vnode: ComponentChild, parent: Element | Document | ShadowRoot | DocumentFragment, replaceNode?: Element | Text | undefined) => void;
@@ -1,4 +1,5 @@
1
1
  export * from './getHTMLElement';
2
2
  export * from './mergeClassNames';
3
3
  export * from './mergeDeep';
4
+ export * from './pickBy';
4
5
  export * from './setProperties';
@@ -1,4 +1,5 @@
1
1
  export * from './getHTMLElement';
2
2
  export * from './mergeClassNames';
3
3
  export * from './mergeDeep';
4
+ export * from './pickBy';
4
5
  export * from './setProperties';
@@ -0,0 +1,4 @@
1
+ export declare function pickBy<TValue = unknown>(obj: Record<string, TValue>, predicate: (value: {
2
+ key: string;
3
+ value: TValue;
4
+ }) => boolean): Record<string, TValue>;
@@ -0,0 +1,34 @@
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
+
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
+
5
+ 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; }
6
+
7
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
8
+
9
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
10
+
11
+ 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); }
12
+
13
+ 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; }
14
+
15
+ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
16
+
17
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
18
+
19
+ export function pickBy(obj, predicate) {
20
+ return Object.entries(obj).reduce(function (acc, _ref) {
21
+ var _ref2 = _slicedToArray(_ref, 2),
22
+ key = _ref2[0],
23
+ value = _ref2[1];
24
+
25
+ if (predicate({
26
+ key: key,
27
+ value: value
28
+ })) {
29
+ return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, key, value));
30
+ }
31
+
32
+ return acc;
33
+ }, {});
34
+ }
@@ -1,4 +1,4 @@
1
- /*! @algolia/autocomplete-js 1.6.0 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete */
1
+ /*! @algolia/autocomplete-js 1.6.3 | 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) :
@@ -110,6 +110,10 @@
110
110
  return target;
111
111
  }
112
112
 
113
+ function _slicedToArray$1(arr, i) {
114
+ return _arrayWithHoles$1(arr) || _iterableToArrayLimit$1(arr, i) || _unsupportedIterableToArray$6(arr, i) || _nonIterableRest$1();
115
+ }
116
+
113
117
  function _toConsumableArray$5(arr) {
114
118
  return _arrayWithoutHoles$5(arr) || _iterableToArray$5(arr) || _unsupportedIterableToArray$6(arr) || _nonIterableSpread$5();
115
119
  }
@@ -118,10 +122,44 @@
118
122
  if (Array.isArray(arr)) return _arrayLikeToArray$6(arr);
119
123
  }
120
124
 
125
+ function _arrayWithHoles$1(arr) {
126
+ if (Array.isArray(arr)) return arr;
127
+ }
128
+
121
129
  function _iterableToArray$5(iter) {
122
130
  if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
123
131
  }
124
132
 
133
+ function _iterableToArrayLimit$1(arr, i) {
134
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
135
+
136
+ if (_i == null) return;
137
+ var _arr = [];
138
+ var _n = true;
139
+ var _d = false;
140
+
141
+ var _s, _e;
142
+
143
+ try {
144
+ for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
145
+ _arr.push(_s.value);
146
+
147
+ if (i && _arr.length === i) break;
148
+ }
149
+ } catch (err) {
150
+ _d = true;
151
+ _e = err;
152
+ } finally {
153
+ try {
154
+ if (!_n && _i["return"] != null) _i["return"]();
155
+ } finally {
156
+ if (_d) throw _e;
157
+ }
158
+ }
159
+
160
+ return _arr;
161
+ }
162
+
125
163
  function _unsupportedIterableToArray$6(o, minLen) {
126
164
  if (!o) return;
127
165
  if (typeof o === "string") return _arrayLikeToArray$6(o, minLen);
@@ -143,6 +181,10 @@
143
181
  throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
144
182
  }
145
183
 
184
+ function _nonIterableRest$1() {
185
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
186
+ }
187
+
146
188
  function createRef(initialValue) {
147
189
  return {
148
190
  current: initialValue
@@ -311,7 +353,7 @@
311
353
 
312
354
  var noop = function noop() {};
313
355
 
314
- var version = '1.6.0';
356
+ var version = '1.6.3';
315
357
 
316
358
  var userAgents$1 = [{
317
359
  segment: 'autocomplete-core',
@@ -1354,7 +1396,7 @@
1354
1396
  });
1355
1397
  }
1356
1398
 
1357
- var _excluded$6 = ["event", "nextState", "props", "query", "refresh", "store"];
1399
+ var _excluded$7 = ["event", "nextState", "props", "query", "refresh", "store"];
1358
1400
 
1359
1401
  function ownKeys$8(object, enumerableOnly) {
1360
1402
  var keys = Object.keys(object);
@@ -1442,7 +1484,7 @@
1442
1484
  query = _ref.query,
1443
1485
  refresh = _ref.refresh,
1444
1486
  store = _ref.store,
1445
- setters = _objectWithoutProperties$3(_ref, _excluded$6);
1487
+ setters = _objectWithoutProperties$3(_ref, _excluded$7);
1446
1488
 
1447
1489
  if (lastStalledId) {
1448
1490
  props.environment.clearTimeout(lastStalledId);
@@ -1552,7 +1594,7 @@
1552
1594
  return store.pendingRequests.add(request);
1553
1595
  }
1554
1596
 
1555
- var _excluded$5 = ["event", "props", "refresh", "store"];
1597
+ var _excluded$6 = ["event", "props", "refresh", "store"];
1556
1598
 
1557
1599
  function ownKeys$7(object, enumerableOnly) {
1558
1600
  var keys = Object.keys(object);
@@ -1635,7 +1677,7 @@
1635
1677
  props = _ref.props,
1636
1678
  refresh = _ref.refresh,
1637
1679
  store = _ref.store,
1638
- setters = _objectWithoutProperties$2(_ref, _excluded$5);
1680
+ setters = _objectWithoutProperties$2(_ref, _excluded$6);
1639
1681
 
1640
1682
  if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {
1641
1683
  // eslint-disable-next-line no-inner-declarations
@@ -1806,7 +1848,7 @@
1806
1848
  }
1807
1849
  }
1808
1850
 
1809
- var _excluded$4 = ["props", "refresh", "store"],
1851
+ var _excluded$5 = ["props", "refresh", "store"],
1810
1852
  _excluded2 = ["inputElement", "formElement", "panelElement"],
1811
1853
  _excluded3 = ["inputElement"],
1812
1854
  _excluded4 = ["inputElement", "maxLength"],
@@ -1892,7 +1934,7 @@
1892
1934
  var props = _ref.props,
1893
1935
  refresh = _ref.refresh,
1894
1936
  store = _ref.store,
1895
- setters = _objectWithoutProperties$1(_ref, _excluded$4);
1937
+ setters = _objectWithoutProperties$1(_ref, _excluded$5);
1896
1938
 
1897
1939
  var getEnvironmentProps = function getEnvironmentProps(providedProps) {
1898
1940
  var inputElement = providedProps.inputElement,
@@ -2667,6 +2709,23 @@
2667
2709
  }, {});
2668
2710
  }
2669
2711
 
2712
+ function pickBy(obj, predicate) {
2713
+ return Object.entries(obj).reduce(function (acc, _ref) {
2714
+ var _ref2 = _slicedToArray$1(_ref, 2),
2715
+ key = _ref2[0],
2716
+ value = _ref2[1];
2717
+
2718
+ if (predicate({
2719
+ key: key,
2720
+ value: value
2721
+ })) {
2722
+ return _objectSpread2(_objectSpread2({}, acc), {}, _defineProperty$g({}, key, value));
2723
+ }
2724
+
2725
+ return acc;
2726
+ }, {});
2727
+ }
2728
+
2670
2729
  /* eslint-disable */
2671
2730
 
2672
2731
  /**
@@ -2778,12 +2837,12 @@
2778
2837
  }
2779
2838
  }
2780
2839
 
2781
- var _excluded$3 = ["children"];
2840
+ var _excluded$4 = ["children"];
2782
2841
  function getCreateDomElement(environment) {
2783
2842
  return function createDomElement(tagName, _ref) {
2784
2843
  var _ref$children = _ref.children,
2785
2844
  children = _ref$children === void 0 ? [] : _ref$children,
2786
- props = _objectWithoutProperties$4(_ref, _excluded$3);
2845
+ props = _objectWithoutProperties$4(_ref, _excluded$4);
2787
2846
 
2788
2847
  var element = environment.document.createElement(tagName);
2789
2848
  setProperties(element, props);
@@ -2792,7 +2851,7 @@
2792
2851
  };
2793
2852
  }
2794
2853
 
2795
- var _excluded$2 = ["autocompleteScopeApi", "environment", "classNames", "getInputProps", "getInputPropsCore", "onDetachedEscape", "state"];
2854
+ var _excluded$3 = ["autocompleteScopeApi", "environment", "classNames", "getInputProps", "getInputPropsCore", "onDetachedEscape", "state"];
2796
2855
  var Input = function Input(_ref) {
2797
2856
  var autocompleteScopeApi = _ref.autocompleteScopeApi,
2798
2857
  environment = _ref.environment;
@@ -2801,7 +2860,7 @@
2801
2860
  getInputPropsCore = _ref.getInputPropsCore,
2802
2861
  onDetachedEscape = _ref.onDetachedEscape,
2803
2862
  state = _ref.state,
2804
- props = _objectWithoutProperties$4(_ref, _excluded$2);
2863
+ props = _objectWithoutProperties$4(_ref, _excluded$3);
2805
2864
 
2806
2865
  var createDomElement = getCreateDomElement(environment);
2807
2866
  var element = createDomElement('input', props);
@@ -3408,7 +3467,7 @@
3408
3467
  };
3409
3468
  }
3410
3469
 
3411
- var _excluded$1 = ["params"];
3470
+ var _excluded$2 = ["params"];
3412
3471
 
3413
3472
  function ownKeys(object, enumerableOnly) {
3414
3473
  var keys = Object.keys(object);
@@ -3538,7 +3597,7 @@
3538
3597
 
3539
3598
  return searchClient.search(queries.map(function (searchParameters) {
3540
3599
  var params = searchParameters.params,
3541
- headers = _objectWithoutProperties(searchParameters, _excluded$1);
3600
+ headers = _objectWithoutProperties(searchParameters, _excluded$2);
3542
3601
 
3543
3602
  return _objectSpread(_objectSpread({}, headers), {}, {
3544
3603
  params: _objectSpread({
@@ -3555,7 +3614,8 @@
3555
3614
  function createHighlightComponent(_ref) {
3556
3615
  var createElement = _ref.createElement,
3557
3616
  Fragment = _ref.Fragment;
3558
- return function Highlight(_ref2) {
3617
+
3618
+ function Highlight(_ref2) {
3559
3619
  var hit = _ref2.hit,
3560
3620
  attribute = _ref2.attribute,
3561
3621
  _ref2$tagName = _ref2.tagName,
@@ -3568,13 +3628,17 @@
3568
3628
  key: index
3569
3629
  }, x.value) : x.value;
3570
3630
  }));
3571
- };
3631
+ }
3632
+
3633
+ Highlight.__autocomplete_componentName = 'Highlight';
3634
+ return Highlight;
3572
3635
  }
3573
3636
 
3574
3637
  function createReverseHighlightComponent(_ref) {
3575
3638
  var createElement = _ref.createElement,
3576
3639
  Fragment = _ref.Fragment;
3577
- return function ReverseHighlight(_ref2) {
3640
+
3641
+ function ReverseHighlight(_ref2) {
3578
3642
  var hit = _ref2.hit,
3579
3643
  attribute = _ref2.attribute,
3580
3644
  _ref2$tagName = _ref2.tagName,
@@ -3587,13 +3651,17 @@
3587
3651
  key: index
3588
3652
  }, x.value) : x.value;
3589
3653
  }));
3590
- };
3654
+ }
3655
+
3656
+ ReverseHighlight.__autocomplete_componentName = 'ReverseHighlight';
3657
+ return ReverseHighlight;
3591
3658
  }
3592
3659
 
3593
3660
  function createReverseSnippetComponent(_ref) {
3594
3661
  var createElement = _ref.createElement,
3595
3662
  Fragment = _ref.Fragment;
3596
- return function ReverseSnippet(_ref2) {
3663
+
3664
+ function ReverseSnippet(_ref2) {
3597
3665
  var hit = _ref2.hit,
3598
3666
  attribute = _ref2.attribute,
3599
3667
  _ref2$tagName = _ref2.tagName,
@@ -3606,13 +3674,17 @@
3606
3674
  key: index
3607
3675
  }, x.value) : x.value;
3608
3676
  }));
3609
- };
3677
+ }
3678
+
3679
+ ReverseSnippet.__autocomplete_componentName = 'ReverseSnippet';
3680
+ return ReverseSnippet;
3610
3681
  }
3611
3682
 
3612
3683
  function createSnippetComponent(_ref) {
3613
3684
  var createElement = _ref.createElement,
3614
3685
  Fragment = _ref.Fragment;
3615
- return function Snippet(_ref2) {
3686
+
3687
+ function Snippet(_ref2) {
3616
3688
  var hit = _ref2.hit,
3617
3689
  attribute = _ref2.attribute,
3618
3690
  _ref2$tagName = _ref2.tagName,
@@ -3625,10 +3697,13 @@
3625
3697
  key: index
3626
3698
  }, x.value) : x.value;
3627
3699
  }));
3628
- };
3700
+ }
3701
+
3702
+ Snippet.__autocomplete_componentName = 'Snippet';
3703
+ return Snippet;
3629
3704
  }
3630
3705
 
3631
- var _excluded = ["classNames", "container", "getEnvironmentProps", "getFormProps", "getInputProps", "getItemProps", "getLabelProps", "getListProps", "getPanelProps", "getRootProps", "panelContainer", "panelPlacement", "render", "renderNoResults", "renderer", "detachedMediaQuery", "components", "translations"];
3706
+ var _excluded$1 = ["classNames", "container", "getEnvironmentProps", "getFormProps", "getInputProps", "getItemProps", "getLabelProps", "getListProps", "getPanelProps", "getRootProps", "panelContainer", "panelPlacement", "render", "renderNoResults", "renderer", "detachedMediaQuery", "components", "translations"];
3632
3707
  var defaultClassNames = {
3633
3708
  clearButton: 'aa-ClearButton',
3634
3709
  detachedCancelButton: 'aa-DetachedCancelButton',
@@ -3658,8 +3733,9 @@
3658
3733
  };
3659
3734
 
3660
3735
  var defaultRender = function defaultRender(_ref, root) {
3661
- var children = _ref.children;
3662
- S(children, root);
3736
+ var children = _ref.children,
3737
+ render = _ref.render;
3738
+ render(children, root);
3663
3739
  };
3664
3740
 
3665
3741
  var defaultRenderer = {
@@ -3688,7 +3764,7 @@
3688
3764
  detachedMediaQuery = options.detachedMediaQuery,
3689
3765
  components = options.components,
3690
3766
  translations = options.translations,
3691
- core = _objectWithoutProperties$4(options, _excluded);
3767
+ core = _objectWithoutProperties$4(options, _excluded$1);
3692
3768
  /* eslint-disable no-restricted-globals */
3693
3769
 
3694
3770
 
@@ -3697,7 +3773,7 @@
3697
3773
 
3698
3774
  var containerElement = getHTMLElement(environment, container);
3699
3775
  invariant(containerElement.tagName !== 'INPUT', 'The `container` option does not support `input` elements. You need to change the container to a `div`.');
3700
- "development" !== 'production' ? warn(Boolean(!render || (renderer === null || renderer === void 0 ? void 0 : renderer.render)), "You provided the `render` option but did not provide a `renderer.render`. Since v1.6.0, you can provide a `render` function directly in `renderer`." + "\nTo get rid of this warning, do any of the following depending on your use case." + "\n- If you are using the `render` option only to override Autocomplete's default `render` function, pass the `render` function into `renderer` and remove the `render` option." + '\n- If you are using the `render` option to customize the layout, pass your `render` function into `renderer` and use it from the provided parameters of the `render` option.' + '\nSee https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-js/autocomplete/#param-render') : void 0;
3776
+ "development" !== 'production' ? warn(!(render && renderer && !(renderer !== null && renderer !== void 0 && renderer.render)), "You provided the `render` option but did not provide a `renderer.render`. Since v1.6.0, you can provide a `render` function directly in `renderer`." + "\nTo get rid of this warning, do any of the following depending on your use case." + "\n- If you are using the `render` option only to override Autocomplete's default `render` function, pass the `render` function into `renderer` and remove the `render` option." + '\n- If you are using the `render` option to customize the layout, pass your `render` function into `renderer` and use it from the provided parameters of the `render` option.' + '\n- If you are using the `render` option to work with React 18, pass an empty `render` function into `renderer`.' + '\nSee https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-js/autocomplete/#param-render') : void 0;
3701
3777
  "development" !== 'production' ? warn(!renderer || render || renderer.Fragment && renderer.createElement && renderer.render, "You provided an incomplete `renderer` (missing: ".concat([!(renderer !== null && renderer !== void 0 && renderer.createElement) && '`renderer.createElement`', !(renderer !== null && renderer !== void 0 && renderer.Fragment) && '`renderer.Fragment`', !(renderer !== null && renderer !== void 0 && renderer.render) && '`renderer.render`'].filter(Boolean).join(', '), "). This can cause rendering issues.") + '\nSee https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-js/autocomplete/#param-renderer') : void 0;
3702
3778
 
3703
3779
  var defaultedRenderer = _objectSpread2(_objectSpread2({}, defaultRenderer), renderer);
@@ -3968,6 +4044,7 @@
3968
4044
  version: version
3969
4045
  }];
3970
4046
 
4047
+ var _excluded = ["components"];
3971
4048
  function autocomplete(options) {
3972
4049
  var _createEffectWrapper = createEffectWrapper(),
3973
4050
  runEffect = _createEffectWrapper.runEffect,
@@ -4226,7 +4303,21 @@
4226
4303
  function update() {
4227
4304
  var updatedOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
4228
4305
  cleanupEffects();
4229
- optionsRef.current = mergeDeep(props.value.renderer, props.value.core, {
4306
+
4307
+ var _props$value$renderer = props.value.renderer,
4308
+ components = _props$value$renderer.components,
4309
+ rendererProps = _objectWithoutProperties$4(_props$value$renderer, _excluded);
4310
+
4311
+ optionsRef.current = mergeDeep(rendererProps, props.value.core, {
4312
+ // We need to filter out default components so they can be replaced with
4313
+ // a new `renderer`, without getting rid of user components.
4314
+ // @MAJOR Deal with registering components with the same name as the
4315
+ // default ones. If we disallow overriding default components, we'd just
4316
+ // need to pass all `components` here.
4317
+ components: pickBy(components, function (_ref4) {
4318
+ var value = _ref4.value;
4319
+ return !value.hasOwnProperty('__autocomplete_componentName');
4320
+ }),
4230
4321
  initialState: lastStateRef.current
4231
4322
  }, updatedOptions);
4232
4323
  runReactives();