@algolia/autocomplete-js 1.5.7 → 1.6.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.
@@ -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 | undefined;
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';
@@ -49,7 +49,8 @@ var defaultRender = function defaultRender(_ref, root) {
49
49
 
50
50
  var defaultRenderer = {
51
51
  createElement: preactCreateElement,
52
- Fragment: PreactFragment
52
+ Fragment: PreactFragment,
53
+ render: render
53
54
  };
54
55
  export function getDefaultOptions(options) {
55
56
  var _core$id;
@@ -81,7 +82,11 @@ export function getDefaultOptions(options) {
81
82
 
82
83
  var containerElement = getHTMLElement(environment, container);
83
84
  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;
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(!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
+ var defaultedRenderer = _objectSpread(_objectSpread({}, defaultRenderer), renderer);
89
+
85
90
  var defaultComponents = {
86
91
  Highlight: createHighlightComponent(defaultedRenderer),
87
92
  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: 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.7 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete */
1
+ /*! @algolia/autocomplete-js 1.6.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) :
@@ -311,7 +311,7 @@
311
311
 
312
312
  var noop = function noop() {};
313
313
 
314
- var version = '1.5.7';
314
+ var version = '1.6.0';
315
315
 
316
316
  var userAgents$1 = [{
317
317
  segment: 'autocomplete-core',
@@ -2597,6 +2597,8 @@
2597
2597
  }, propGetters), setters);
2598
2598
  }
2599
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
+
2600
2602
  var ClearIcon = function ClearIcon(_ref) {
2601
2603
  var environment = _ref.environment;
2602
2604
  var element = environment.document.createElementNS('http://www.w3.org/2000/svg', 'svg');
@@ -3662,7 +3664,8 @@
3662
3664
 
3663
3665
  var defaultRenderer = {
3664
3666
  createElement: v,
3665
- Fragment: d
3667
+ Fragment: d,
3668
+ render: S
3666
3669
  };
3667
3670
  function getDefaultOptions(options) {
3668
3671
  var _core$id;
@@ -3694,7 +3697,11 @@
3694
3697
 
3695
3698
  var containerElement = getHTMLElement(environment, container);
3696
3699
  invariant(containerElement.tagName !== 'INPUT', 'The `container` option does not support `input` elements. You need to change the container to a `div`.');
3697
- var defaultedRenderer = renderer !== null && renderer !== void 0 ? renderer : defaultRenderer;
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;
3701
+ "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
+
3703
+ var defaultedRenderer = _objectSpread2(_objectSpread2({}, defaultRenderer), renderer);
3704
+
3698
3705
  var defaultComponents = {
3699
3706
  Highlight: createHighlightComponent(defaultedRenderer),
3700
3707
  ReverseHighlight: createReverseHighlightComponent(defaultedRenderer),
@@ -3847,13 +3854,13 @@
3847
3854
  var autocomplete = _ref2.autocomplete,
3848
3855
  autocompleteScopeApi = _ref2.autocompleteScopeApi,
3849
3856
  classNames = _ref2.classNames,
3850
- createElement = _ref2.createElement,
3857
+ html = _ref2.html,
3851
3858
  dom = _ref2.dom,
3852
- Fragment = _ref2.Fragment,
3853
3859
  panelContainer = _ref2.panelContainer,
3854
3860
  propGetters = _ref2.propGetters,
3855
3861
  state = _ref2.state,
3856
- components = _ref2.components;
3862
+ components = _ref2.components,
3863
+ renderer = _ref2.renderer;
3857
3864
 
3858
3865
  if (!state.isOpen) {
3859
3866
  if (panelContainer.contains(dom.panel)) {
@@ -3877,28 +3884,30 @@
3877
3884
  }).map(function (_ref4, sourceIndex) {
3878
3885
  var source = _ref4.source,
3879
3886
  items = _ref4.items;
3880
- return createElement("section", {
3887
+ return renderer.createElement("section", {
3881
3888
  key: sourceIndex,
3882
3889
  className: classNames.source,
3883
3890
  "data-autocomplete-source-id": source.sourceId
3884
- }, source.templates.header && createElement("div", {
3891
+ }, source.templates.header && renderer.createElement("div", {
3885
3892
  className: classNames.sourceHeader
3886
3893
  }, source.templates.header({
3887
3894
  components: components,
3888
- createElement: createElement,
3889
- Fragment: Fragment,
3895
+ createElement: renderer.createElement,
3896
+ Fragment: renderer.Fragment,
3890
3897
  items: items,
3891
3898
  source: source,
3892
- state: state
3893
- })), source.templates.noResults && items.length === 0 ? createElement("div", {
3899
+ state: state,
3900
+ html: html
3901
+ })), source.templates.noResults && items.length === 0 ? renderer.createElement("div", {
3894
3902
  className: classNames.sourceNoResults
3895
3903
  }, source.templates.noResults({
3896
3904
  components: components,
3897
- createElement: createElement,
3898
- Fragment: Fragment,
3905
+ createElement: renderer.createElement,
3906
+ Fragment: renderer.Fragment,
3899
3907
  source: source,
3900
- state: state
3901
- })) : createElement("ul", _extends({
3908
+ state: state,
3909
+ html: html
3910
+ })) : renderer.createElement("ul", _extends({
3902
3911
  className: classNames.list
3903
3912
  }, propGetters.getListProps(_objectSpread2({
3904
3913
  state: state,
@@ -3908,7 +3917,7 @@
3908
3917
  item: item,
3909
3918
  source: source
3910
3919
  });
3911
- return createElement("li", _extends({
3920
+ return renderer.createElement("li", _extends({
3912
3921
  key: itemProps.id,
3913
3922
  className: classNames.item
3914
3923
  }, propGetters.getItemProps(_objectSpread2({
@@ -3916,39 +3925,41 @@
3916
3925
  props: itemProps
3917
3926
  }, autocompleteScopeApi))), source.templates.item({
3918
3927
  components: components,
3919
- createElement: createElement,
3920
- Fragment: Fragment,
3928
+ createElement: renderer.createElement,
3929
+ Fragment: renderer.Fragment,
3921
3930
  item: item,
3922
- state: state
3931
+ state: state,
3932
+ html: html
3923
3933
  }));
3924
- })), source.templates.footer && createElement("div", {
3934
+ })), source.templates.footer && renderer.createElement("div", {
3925
3935
  className: classNames.sourceFooter
3926
3936
  }, source.templates.footer({
3927
3937
  components: components,
3928
- createElement: createElement,
3929
- Fragment: Fragment,
3938
+ createElement: renderer.createElement,
3939
+ Fragment: renderer.Fragment,
3930
3940
  items: items,
3931
3941
  source: source,
3932
- state: state
3942
+ state: state,
3943
+ html: html
3933
3944
  })));
3934
3945
  });
3935
- var children = createElement(Fragment, null, createElement("div", {
3946
+ var children = renderer.createElement(renderer.Fragment, null, renderer.createElement("div", {
3936
3947
  className: classNames.panelLayout
3937
- }, sections), createElement("div", {
3948
+ }, sections), renderer.createElement("div", {
3938
3949
  className: "aa-GradientBottom"
3939
3950
  }));
3940
3951
  var elements = sections.reduce(function (acc, current) {
3941
3952
  acc[current.props['data-autocomplete-source-id']] = current;
3942
3953
  return acc;
3943
3954
  }, {});
3944
- render(_objectSpread2({
3955
+ render(_objectSpread2(_objectSpread2({
3945
3956
  children: children,
3946
3957
  state: state,
3947
3958
  sections: sections,
3948
- elements: elements,
3949
- createElement: createElement,
3950
- Fragment: Fragment,
3951
- components: components
3959
+ elements: elements
3960
+ }, renderer), {}, {
3961
+ components: components,
3962
+ html: html
3952
3963
  }, autocompleteScopeApi), dom.panel);
3953
3964
  }
3954
3965
 
@@ -4037,6 +4048,9 @@
4037
4048
  setContext: autocomplete.value.setContext,
4038
4049
  refresh: autocomplete.value.refresh
4039
4050
  };
4051
+ var html = reactive(function () {
4052
+ return htm.bind(props.value.renderer.renderer.createElement);
4053
+ });
4040
4054
  var dom = reactive(function () {
4041
4055
  return createAutocompleteDom({
4042
4056
  autocomplete: autocomplete.value,
@@ -4071,12 +4085,12 @@
4071
4085
  classNames: props.value.renderer.classNames,
4072
4086
  components: props.value.renderer.components,
4073
4087
  container: props.value.renderer.container,
4074
- createElement: props.value.renderer.renderer.createElement,
4088
+ html: html.value,
4075
4089
  dom: dom.value,
4076
- Fragment: props.value.renderer.renderer.Fragment,
4077
4090
  panelContainer: isDetached.value ? dom.value.detachedContainer : props.value.renderer.panelContainer,
4078
4091
  propGetters: propGetters,
4079
- state: lastStateRef.current
4092
+ state: lastStateRef.current,
4093
+ renderer: props.value.renderer.renderer
4080
4094
  };
4081
4095
  var render = !getItemsCount(state) && !hasNoResultsSourceTemplateRef.current && props.value.renderer.renderNoResults || props.value.renderer.render;
4082
4096
  renderSearchBox(renderProps);