@algolia/autocomplete-js 1.5.6 → 1.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,6 +6,7 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
6
6
 
7
7
  import { createAutocomplete } from '@algolia/autocomplete-core';
8
8
  import { createRef, debounce, getItemsCount } from '@algolia/autocomplete-shared';
9
+ import htm from 'htm';
9
10
  import { createAutocompleteDom } from './createAutocompleteDom';
10
11
  import { createEffectWrapper } from './createEffectWrapper';
11
12
  import { createReactiveWrapper } from './createReactiveWrapper';
@@ -94,6 +95,9 @@ export function autocomplete(options) {
94
95
  setContext: autocomplete.value.setContext,
95
96
  refresh: autocomplete.value.refresh
96
97
  };
98
+ var html = reactive(function () {
99
+ return htm.bind(props.value.renderer.renderer.createElement);
100
+ });
97
101
  var dom = reactive(function () {
98
102
  return createAutocompleteDom({
99
103
  autocomplete: autocomplete.value,
@@ -128,12 +132,12 @@ export function autocomplete(options) {
128
132
  classNames: props.value.renderer.classNames,
129
133
  components: props.value.renderer.components,
130
134
  container: props.value.renderer.container,
131
- createElement: props.value.renderer.renderer.createElement,
135
+ html: html.value,
132
136
  dom: dom.value,
133
- Fragment: props.value.renderer.renderer.Fragment,
134
137
  panelContainer: isDetached.value ? dom.value.detachedContainer : props.value.renderer.panelContainer,
135
138
  propGetters: propGetters,
136
- state: lastStateRef.current
139
+ state: lastStateRef.current,
140
+ renderer: props.value.renderer.renderer
137
141
  };
138
142
  var render = !getItemsCount(state) && !hasNoResultsSourceTemplateRef.current && props.value.renderer.renderNoResults || props.value.renderer.render;
139
143
  renderSearchBox(renderProps);
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
2
  import { BaseItem } from '@algolia/autocomplete-core';
3
- import { AutocompleteClassNames, AutocompleteOptions, AutocompleteRender, AutocompleteRenderer } from './types';
3
+ import { AutocompleteClassNames, AutocompleteOptions, AutocompleteRender } from './types';
4
4
  export declare function getDefaultOptions<TItem extends BaseItem>(options: AutocompleteOptions<TItem>): {
5
5
  renderer: {
6
6
  classNames: AutocompleteClassNames;
@@ -156,7 +156,11 @@ export declare function getDefaultOptions<TItem extends BaseItem>(options: Autoc
156
156
  panelPlacement: "start" | "end" | "full-width" | "input-wrapper-width";
157
157
  render: AutocompleteRender<any> | AutocompleteRender<TItem>;
158
158
  renderNoResults: AutocompleteRender<TItem> | undefined;
159
- renderer: AutocompleteRenderer;
159
+ renderer: {
160
+ createElement: import("./types").Pragma;
161
+ Fragment: any;
162
+ render: import("./types").Render;
163
+ };
160
164
  detachedMediaQuery: string;
161
165
  components: {
162
166
  [x: string]: (props: any) => JSX.Element;
@@ -10,7 +10,7 @@ function _objectWithoutProperties(source, excluded) { if (source == null) return
10
10
 
11
11
  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; }
12
12
 
13
- import { generateAutocompleteId, invariant } from '@algolia/autocomplete-shared';
13
+ import { generateAutocompleteId, invariant, warn } from '@algolia/autocomplete-shared';
14
14
  import { createElement as preactCreateElement, Fragment as PreactFragment, render } from 'preact';
15
15
  import { createHighlightComponent, createReverseHighlightComponent, createReverseSnippetComponent, createSnippetComponent } from './components';
16
16
  import { getHTMLElement, mergeClassNames } from './utils';
@@ -43,13 +43,15 @@ 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
 
50
51
  var defaultRenderer = {
51
52
  createElement: preactCreateElement,
52
- Fragment: PreactFragment
53
+ Fragment: PreactFragment,
54
+ render: render
53
55
  };
54
56
  export function getDefaultOptions(options) {
55
57
  var _core$id;
@@ -81,7 +83,11 @@ export function getDefaultOptions(options) {
81
83
 
82
84
  var containerElement = getHTMLElement(environment, container);
83
85
  invariant(containerElement.tagName !== 'INPUT', 'The `container` option does not support `input` elements. You need to change the container to a `div`.');
84
- var defaultedRenderer = renderer !== null && renderer !== void 0 ? renderer : defaultRenderer;
86
+ 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;
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;
88
+
89
+ var defaultedRenderer = _objectSpread(_objectSpread({}, defaultRenderer), renderer);
90
+
85
91
  var defaultComponents = {
86
92
  Highlight: createHighlightComponent(defaultedRenderer),
87
93
  ReverseHighlight: createReverseHighlightComponent(defaultedRenderer),
@@ -1,19 +1,18 @@
1
- /** @jsx createElement */
2
- import { AutocompleteApi as AutocompleteCoreApi, AutocompleteScopeApi } from '@algolia/autocomplete-core';
3
- import { BaseItem } from '@algolia/autocomplete-core/src';
4
- import { AutocompleteClassNames, AutocompleteComponents, AutocompleteDom, AutocompletePropGetters, AutocompleteRender, AutocompleteState, Pragma, PragmaFrag } from './types';
1
+ /** @jsx renderer.createElement */
2
+ import { AutocompleteApi as AutocompleteCoreApi, AutocompleteScopeApi, BaseItem } from '@algolia/autocomplete-core';
3
+ import { AutocompleteClassNames, AutocompleteComponents, AutocompleteDom, AutocompletePropGetters, AutocompleteRender, AutocompleteRenderer, AutocompleteState, HTMLTemplate } from './types';
5
4
  declare type RenderProps<TItem extends BaseItem> = {
6
5
  autocomplete: AutocompleteCoreApi<TItem>;
7
6
  autocompleteScopeApi: AutocompleteScopeApi<TItem>;
8
7
  classNames: AutocompleteClassNames;
9
8
  components: AutocompleteComponents;
10
- createElement: Pragma;
9
+ html: HTMLTemplate;
11
10
  dom: AutocompleteDom;
12
- Fragment: PragmaFrag;
13
11
  panelContainer: HTMLElement;
14
12
  propGetters: AutocompletePropGetters<TItem>;
15
13
  state: AutocompleteState<TItem>;
14
+ renderer: Required<AutocompleteRenderer>;
16
15
  };
17
16
  export declare function renderSearchBox<TItem extends BaseItem>({ autocomplete, autocompleteScopeApi, dom, propGetters, state, }: RenderProps<TItem>): void;
18
- export declare function renderPanel<TItem extends BaseItem>(render: AutocompleteRender<TItem>, { autocomplete, autocompleteScopeApi, classNames, createElement, dom, Fragment, panelContainer, propGetters, state, components, }: RenderProps<TItem>): void;
17
+ export declare function renderPanel<TItem extends BaseItem>(render: AutocompleteRender<TItem>, { autocomplete, autocompleteScopeApi, classNames, html, dom, panelContainer, propGetters, state, components, renderer, }: RenderProps<TItem>): void;
19
18
  export {};
@@ -6,7 +6,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
6
6
 
7
7
  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; }
8
8
 
9
- /** @jsx createElement */
9
+ /** @jsx renderer.createElement */
10
10
  import { setProperties, setPropertiesWithoutEvents } from './utils';
11
11
  export function renderSearchBox(_ref) {
12
12
  var autocomplete = _ref.autocomplete,
@@ -39,13 +39,13 @@ export function renderPanel(render, _ref2) {
39
39
  var autocomplete = _ref2.autocomplete,
40
40
  autocompleteScopeApi = _ref2.autocompleteScopeApi,
41
41
  classNames = _ref2.classNames,
42
- createElement = _ref2.createElement,
42
+ html = _ref2.html,
43
43
  dom = _ref2.dom,
44
- Fragment = _ref2.Fragment,
45
44
  panelContainer = _ref2.panelContainer,
46
45
  propGetters = _ref2.propGetters,
47
46
  state = _ref2.state,
48
- components = _ref2.components;
47
+ components = _ref2.components,
48
+ renderer = _ref2.renderer;
49
49
 
50
50
  if (!state.isOpen) {
51
51
  if (panelContainer.contains(dom.panel)) {
@@ -69,28 +69,30 @@ export function renderPanel(render, _ref2) {
69
69
  }).map(function (_ref4, sourceIndex) {
70
70
  var source = _ref4.source,
71
71
  items = _ref4.items;
72
- return createElement("section", {
72
+ return renderer.createElement("section", {
73
73
  key: sourceIndex,
74
74
  className: classNames.source,
75
75
  "data-autocomplete-source-id": source.sourceId
76
- }, source.templates.header && createElement("div", {
76
+ }, source.templates.header && renderer.createElement("div", {
77
77
  className: classNames.sourceHeader
78
78
  }, source.templates.header({
79
79
  components: components,
80
- createElement: createElement,
81
- Fragment: Fragment,
80
+ createElement: renderer.createElement,
81
+ Fragment: renderer.Fragment,
82
82
  items: items,
83
83
  source: source,
84
- state: state
85
- })), source.templates.noResults && items.length === 0 ? createElement("div", {
84
+ state: state,
85
+ html: html
86
+ })), source.templates.noResults && items.length === 0 ? renderer.createElement("div", {
86
87
  className: classNames.sourceNoResults
87
88
  }, source.templates.noResults({
88
89
  components: components,
89
- createElement: createElement,
90
- Fragment: Fragment,
90
+ createElement: renderer.createElement,
91
+ Fragment: renderer.Fragment,
91
92
  source: source,
92
- state: state
93
- })) : createElement("ul", _extends({
93
+ state: state,
94
+ html: html
95
+ })) : renderer.createElement("ul", _extends({
94
96
  className: classNames.list
95
97
  }, propGetters.getListProps(_objectSpread({
96
98
  state: state,
@@ -100,7 +102,7 @@ export function renderPanel(render, _ref2) {
100
102
  item: item,
101
103
  source: source
102
104
  });
103
- return createElement("li", _extends({
105
+ return renderer.createElement("li", _extends({
104
106
  key: itemProps.id,
105
107
  className: classNames.item
106
108
  }, propGetters.getItemProps(_objectSpread({
@@ -108,38 +110,40 @@ export function renderPanel(render, _ref2) {
108
110
  props: itemProps
109
111
  }, autocompleteScopeApi))), source.templates.item({
110
112
  components: components,
111
- createElement: createElement,
112
- Fragment: Fragment,
113
+ createElement: renderer.createElement,
114
+ Fragment: renderer.Fragment,
113
115
  item: item,
114
- state: state
116
+ state: state,
117
+ html: html
115
118
  }));
116
- })), source.templates.footer && createElement("div", {
119
+ })), source.templates.footer && renderer.createElement("div", {
117
120
  className: classNames.sourceFooter
118
121
  }, source.templates.footer({
119
122
  components: components,
120
- createElement: createElement,
121
- Fragment: Fragment,
123
+ createElement: renderer.createElement,
124
+ Fragment: renderer.Fragment,
122
125
  items: items,
123
126
  source: source,
124
- state: state
127
+ state: state,
128
+ html: html
125
129
  })));
126
130
  });
127
- var children = createElement(Fragment, null, createElement("div", {
131
+ var children = renderer.createElement(renderer.Fragment, null, renderer.createElement("div", {
128
132
  className: classNames.panelLayout
129
- }, sections), createElement("div", {
133
+ }, sections), renderer.createElement("div", {
130
134
  className: "aa-GradientBottom"
131
135
  }));
132
136
  var elements = sections.reduce(function (acc, current) {
133
137
  acc[current.props['data-autocomplete-source-id']] = current;
134
138
  return acc;
135
139
  }, {});
136
- render(_objectSpread({
140
+ render(_objectSpread(_objectSpread({
137
141
  children: children,
138
142
  state: state,
139
143
  sections: sections,
140
- elements: elements,
141
- createElement: createElement,
142
- Fragment: Fragment,
143
- components: components
144
+ elements: elements
145
+ }, renderer), {}, {
146
+ components: components,
147
+ html: html
144
148
  }, autocompleteScopeApi), dom.panel);
145
149
  }
@@ -1,6 +1,6 @@
1
1
  import { AutocompleteScopeApi, BaseItem } from '@algolia/autocomplete-core';
2
2
  import { AutocompleteComponents } from './AutocompleteComponents';
3
- import { Pragma, PragmaFrag, VNode } from './AutocompleteRenderer';
3
+ import { HTMLTemplate, Pragma, PragmaFrag, Render, VNode } from './AutocompleteRenderer';
4
4
  import { AutocompleteState } from './AutocompleteState';
5
5
  export declare type AutocompleteRender<TItem extends BaseItem> = (params: AutocompleteScopeApi<TItem> & {
6
6
  children: VNode;
@@ -10,4 +10,6 @@ export declare type AutocompleteRender<TItem extends BaseItem> = (params: Autoco
10
10
  components: AutocompleteComponents;
11
11
  createElement: Pragma;
12
12
  Fragment: PragmaFrag;
13
+ html: HTMLTemplate;
14
+ render: Render;
13
15
  }, root: HTMLElement) => void;
@@ -10,6 +10,7 @@ export declare type VNode<TProps = any> = {
10
10
  key?: any;
11
11
  };
12
12
  };
13
+ export declare type Render = (vnode: ComponentChild, parent: Element | Document | ShadowRoot | DocumentFragment, replaceNode?: Element | Text | undefined) => void;
13
14
  export declare type AutocompleteRenderer = {
14
15
  /**
15
16
  * The function to create virtual nodes.
@@ -23,5 +24,10 @@ export declare type AutocompleteRenderer = {
23
24
  * @default preact.Fragment
24
25
  */
25
26
  Fragment: PragmaFrag;
27
+ /**
28
+ * The function to render children to an element.
29
+ */
30
+ render?: Render;
26
31
  };
32
+ export declare type HTMLTemplate = (strings: TemplateStringsArray, ...values: any[]) => VNode | VNode[];
27
33
  export {};
@@ -1,10 +1,11 @@
1
1
  import { AutocompleteSource as AutocompleteCoreSource, InternalAutocompleteSource as InternalAutocompleteCoreSource, BaseItem } from '@algolia/autocomplete-core';
2
2
  import { AutocompleteComponents } from './AutocompleteComponents';
3
- import { AutocompleteRenderer, VNode } from './AutocompleteRenderer';
3
+ import { AutocompleteRenderer, HTMLTemplate, VNode } from './AutocompleteRenderer';
4
4
  import { AutocompleteState } from './AutocompleteState';
5
5
  declare type Template<TParams> = (params: TParams & AutocompleteRenderer & {
6
6
  components: AutocompleteComponents;
7
- }) => VNode | string;
7
+ html: HTMLTemplate;
8
+ }) => VNode | VNode[] | string;
8
9
  /**
9
10
  * Templates to display in the autocomplete panel.
10
11
  *
@@ -1,4 +1,4 @@
1
- /*! @algolia/autocomplete-js 1.5.6 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete */
1
+ /*! @algolia/autocomplete-js 1.6.1 | 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) :
@@ -311,7 +311,7 @@
311
311
 
312
312
  var noop = function noop() {};
313
313
 
314
- var version = '1.5.6';
314
+ var version = '1.6.1';
315
315
 
316
316
  var userAgents$1 = [{
317
317
  segment: 'autocomplete-core',
@@ -584,14 +584,6 @@
584
584
  });
585
585
  }
586
586
 
587
- var chromeRegex = /(crmo|crios|chrome)/i;
588
- var edgeRegex = /edg(e|ios|a)?/i;
589
- var samsungBrowserRegex = /samsungbrowser/i;
590
- var chromiumRegex = /chromium/i;
591
- function isChrome(userAgent) {
592
- return Boolean(userAgent && userAgent.match(chromeRegex) && !userAgent.match(edgeRegex) && !userAgent.match(samsungBrowserRegex) && !userAgent.match(chromiumRegex));
593
- }
594
-
595
587
  // We don't have access to the autocomplete source when we call `onKeyDown`
596
588
  // or `onClick` because those are native browser events.
597
589
  // However, we can get the source from the suggestion index.
@@ -2032,7 +2024,7 @@
2032
2024
 
2033
2025
  var activeItem = getActiveItem(store.getState());
2034
2026
  var userAgent = (_props$environment$na = props.environment.navigator) === null || _props$environment$na === void 0 ? void 0 : _props$environment$na.userAgent;
2035
- var shouldFallbackKeyHint = isSamsung(userAgent) && isChrome(userAgent);
2027
+ var shouldFallbackKeyHint = isSamsung(userAgent);
2036
2028
  var enterKeyHint = activeItem !== null && activeItem !== void 0 && activeItem.itemUrl && !shouldFallbackKeyHint ? 'go' : 'search';
2037
2029
  return _objectSpread$6({
2038
2030
  'aria-autocomplete': 'both',
@@ -2605,6 +2597,8 @@
2605
2597
  }, propGetters), setters);
2606
2598
  }
2607
2599
 
2600
+ var n$1=function(t,s,r,e){var u;s[0]=0;for(var h=1;h<s.length;h++){var p=s[h++],a=s[h]?(s[0]|=p?1:2,r[s[h++]]):s[++h];3===p?e[0]=a:4===p?e[1]=Object.assign(e[1]||{},a):5===p?(e[1]=e[1]||{})[s[++h]]=a:6===p?e[1][s[++h]]+=a+"":p?(u=t.apply(a,n$1(t,a,r,["",null])),e.push(u),a[0]?s[0]|=2:(s[h-2]=0,s[h]=u)):e.push(a);}return e},t$1=new Map;function htm(s){var r=t$1.get(this);return r||(r=new Map,t$1.set(this,r)),(r=n$1(this,r.get(s)||(r.set(s,r=function(n){for(var t,s,r=1,e="",u="",h=[0],p=function(n){1===r&&(n||(e=e.replace(/^\s*\n\s*|\s*\n\s*$/g,"")))?h.push(0,n,e):3===r&&(n||e)?(h.push(3,n,e),r=2):2===r&&"..."===e&&n?h.push(4,n,0):2===r&&e&&!n?h.push(5,0,!0,e):r>=5&&((e||!n&&5===r)&&(h.push(r,0,e,s),r=6),n&&(h.push(r,n,0,s),r=6)),e="";},a=0;a<n.length;a++){a&&(1===r&&p(),p(a));for(var l=0;l<n[a].length;l++)t=n[a][l],1===r?"<"===t?(p(),h=[h],r=3):e+=t:4===r?"--"===e&&">"===t?(r=1,e=""):e=t+e[0]:u?t===u?u="":e+=t:'"'===t||"'"===t?u=t:">"===t?(p(),r=1):r&&("="===t?(r=5,s=e,e=""):"/"===t&&(r<5||">"===n[a][l+1])?(p(),3===r&&(h=h[0]),r=h,(h=h[0]).push(2,0,r),r=0):" "===t||"\t"===t||"\n"===t||"\r"===t?(p(),r=2):e+=t),3===r&&"!--"===e&&(r=4,h=h[0]);}return p(),h}(s)),r),arguments,[])).length>1?r:r[0]}
2601
+
2608
2602
  var ClearIcon = function ClearIcon(_ref) {
2609
2603
  var environment = _ref.environment;
2610
2604
  var element = environment.document.createElementNS('http://www.w3.org/2000/svg', 'svg');
@@ -3664,13 +3658,15 @@
3664
3658
  };
3665
3659
 
3666
3660
  var defaultRender = function defaultRender(_ref, root) {
3667
- var children = _ref.children;
3668
- S(children, root);
3661
+ var children = _ref.children,
3662
+ render = _ref.render;
3663
+ render(children, root);
3669
3664
  };
3670
3665
 
3671
3666
  var defaultRenderer = {
3672
3667
  createElement: v,
3673
- Fragment: d
3668
+ Fragment: d,
3669
+ render: S
3674
3670
  };
3675
3671
  function getDefaultOptions(options) {
3676
3672
  var _core$id;
@@ -3702,7 +3698,11 @@
3702
3698
 
3703
3699
  var containerElement = getHTMLElement(environment, container);
3704
3700
  invariant(containerElement.tagName !== 'INPUT', 'The `container` option does not support `input` elements. You need to change the container to a `div`.');
3705
- var defaultedRenderer = renderer !== null && renderer !== void 0 ? renderer : defaultRenderer;
3701
+ "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;
3702
+ "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;
3703
+
3704
+ var defaultedRenderer = _objectSpread2(_objectSpread2({}, defaultRenderer), renderer);
3705
+
3706
3706
  var defaultComponents = {
3707
3707
  Highlight: createHighlightComponent(defaultedRenderer),
3708
3708
  ReverseHighlight: createReverseHighlightComponent(defaultedRenderer),
@@ -3855,13 +3855,13 @@
3855
3855
  var autocomplete = _ref2.autocomplete,
3856
3856
  autocompleteScopeApi = _ref2.autocompleteScopeApi,
3857
3857
  classNames = _ref2.classNames,
3858
- createElement = _ref2.createElement,
3858
+ html = _ref2.html,
3859
3859
  dom = _ref2.dom,
3860
- Fragment = _ref2.Fragment,
3861
3860
  panelContainer = _ref2.panelContainer,
3862
3861
  propGetters = _ref2.propGetters,
3863
3862
  state = _ref2.state,
3864
- components = _ref2.components;
3863
+ components = _ref2.components,
3864
+ renderer = _ref2.renderer;
3865
3865
 
3866
3866
  if (!state.isOpen) {
3867
3867
  if (panelContainer.contains(dom.panel)) {
@@ -3885,28 +3885,30 @@
3885
3885
  }).map(function (_ref4, sourceIndex) {
3886
3886
  var source = _ref4.source,
3887
3887
  items = _ref4.items;
3888
- return createElement("section", {
3888
+ return renderer.createElement("section", {
3889
3889
  key: sourceIndex,
3890
3890
  className: classNames.source,
3891
3891
  "data-autocomplete-source-id": source.sourceId
3892
- }, source.templates.header && createElement("div", {
3892
+ }, source.templates.header && renderer.createElement("div", {
3893
3893
  className: classNames.sourceHeader
3894
3894
  }, source.templates.header({
3895
3895
  components: components,
3896
- createElement: createElement,
3897
- Fragment: Fragment,
3896
+ createElement: renderer.createElement,
3897
+ Fragment: renderer.Fragment,
3898
3898
  items: items,
3899
3899
  source: source,
3900
- state: state
3901
- })), source.templates.noResults && items.length === 0 ? createElement("div", {
3900
+ state: state,
3901
+ html: html
3902
+ })), source.templates.noResults && items.length === 0 ? renderer.createElement("div", {
3902
3903
  className: classNames.sourceNoResults
3903
3904
  }, source.templates.noResults({
3904
3905
  components: components,
3905
- createElement: createElement,
3906
- Fragment: Fragment,
3906
+ createElement: renderer.createElement,
3907
+ Fragment: renderer.Fragment,
3907
3908
  source: source,
3908
- state: state
3909
- })) : createElement("ul", _extends({
3909
+ state: state,
3910
+ html: html
3911
+ })) : renderer.createElement("ul", _extends({
3910
3912
  className: classNames.list
3911
3913
  }, propGetters.getListProps(_objectSpread2({
3912
3914
  state: state,
@@ -3916,7 +3918,7 @@
3916
3918
  item: item,
3917
3919
  source: source
3918
3920
  });
3919
- return createElement("li", _extends({
3921
+ return renderer.createElement("li", _extends({
3920
3922
  key: itemProps.id,
3921
3923
  className: classNames.item
3922
3924
  }, propGetters.getItemProps(_objectSpread2({
@@ -3924,39 +3926,41 @@
3924
3926
  props: itemProps
3925
3927
  }, autocompleteScopeApi))), source.templates.item({
3926
3928
  components: components,
3927
- createElement: createElement,
3928
- Fragment: Fragment,
3929
+ createElement: renderer.createElement,
3930
+ Fragment: renderer.Fragment,
3929
3931
  item: item,
3930
- state: state
3932
+ state: state,
3933
+ html: html
3931
3934
  }));
3932
- })), source.templates.footer && createElement("div", {
3935
+ })), source.templates.footer && renderer.createElement("div", {
3933
3936
  className: classNames.sourceFooter
3934
3937
  }, source.templates.footer({
3935
3938
  components: components,
3936
- createElement: createElement,
3937
- Fragment: Fragment,
3939
+ createElement: renderer.createElement,
3940
+ Fragment: renderer.Fragment,
3938
3941
  items: items,
3939
3942
  source: source,
3940
- state: state
3943
+ state: state,
3944
+ html: html
3941
3945
  })));
3942
3946
  });
3943
- var children = createElement(Fragment, null, createElement("div", {
3947
+ var children = renderer.createElement(renderer.Fragment, null, renderer.createElement("div", {
3944
3948
  className: classNames.panelLayout
3945
- }, sections), createElement("div", {
3949
+ }, sections), renderer.createElement("div", {
3946
3950
  className: "aa-GradientBottom"
3947
3951
  }));
3948
3952
  var elements = sections.reduce(function (acc, current) {
3949
3953
  acc[current.props['data-autocomplete-source-id']] = current;
3950
3954
  return acc;
3951
3955
  }, {});
3952
- render(_objectSpread2({
3956
+ render(_objectSpread2(_objectSpread2({
3953
3957
  children: children,
3954
3958
  state: state,
3955
3959
  sections: sections,
3956
- elements: elements,
3957
- createElement: createElement,
3958
- Fragment: Fragment,
3959
- components: components
3960
+ elements: elements
3961
+ }, renderer), {}, {
3962
+ components: components,
3963
+ html: html
3960
3964
  }, autocompleteScopeApi), dom.panel);
3961
3965
  }
3962
3966
 
@@ -4045,6 +4049,9 @@
4045
4049
  setContext: autocomplete.value.setContext,
4046
4050
  refresh: autocomplete.value.refresh
4047
4051
  };
4052
+ var html = reactive(function () {
4053
+ return htm.bind(props.value.renderer.renderer.createElement);
4054
+ });
4048
4055
  var dom = reactive(function () {
4049
4056
  return createAutocompleteDom({
4050
4057
  autocomplete: autocomplete.value,
@@ -4079,12 +4086,12 @@
4079
4086
  classNames: props.value.renderer.classNames,
4080
4087
  components: props.value.renderer.components,
4081
4088
  container: props.value.renderer.container,
4082
- createElement: props.value.renderer.renderer.createElement,
4089
+ html: html.value,
4083
4090
  dom: dom.value,
4084
- Fragment: props.value.renderer.renderer.Fragment,
4085
4091
  panelContainer: isDetached.value ? dom.value.detachedContainer : props.value.renderer.panelContainer,
4086
4092
  propGetters: propGetters,
4087
- state: lastStateRef.current
4093
+ state: lastStateRef.current,
4094
+ renderer: props.value.renderer.renderer
4088
4095
  };
4089
4096
  var render = !getItemsCount(state) && !hasNoResultsSourceTemplateRef.current && props.value.renderer.renderNoResults || props.value.renderer.render;
4090
4097
  renderSearchBox(renderProps);