@constructor-io/constructorio-ui-autocomplete 1.23.19 → 1.23.20

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.
@@ -12,6 +12,7 @@ const useConsoleErrors_1 = tslib_1.__importDefault(require("./useConsoleErrors")
12
12
  const useSections_1 = tslib_1.__importDefault(require("./useSections"));
13
13
  const useRecommendationsObserver_1 = tslib_1.__importDefault(require("./useRecommendationsObserver"));
14
14
  const typeGuards_1 = require("../typeGuards");
15
+ const useNormalizedProps_1 = tslib_1.__importDefault(require("./useNormalizedProps"));
15
16
  exports.defaultSections = [
16
17
  {
17
18
  indexSectionName: 'Search Suggestions',
@@ -22,39 +23,9 @@ exports.defaultSections = [
22
23
  type: 'autocomplete',
23
24
  },
24
25
  ];
25
- const convertLegacyParametersAndAddDefaults = (sections) => sections.map((config) => {
26
- if ((0, typeGuards_1.isRecommendationsSection)(config)) {
27
- if (config.identifier && !config.podId) {
28
- return Object.assign(Object.assign({}, config), { podId: config.identifier });
29
- }
30
- if (!config.indexSectionName) {
31
- return Object.assign(Object.assign({}, config), { indexSectionName: 'Products' });
32
- }
33
- }
34
- if ((0, typeGuards_1.isAutocompleteSection)(config)) {
35
- if (config.identifier && !config.indexSectionName) {
36
- return Object.assign(Object.assign({}, config), { indexSectionName: config.identifier });
37
- }
38
- }
39
- return config;
40
- });
41
26
  const useCioAutocomplete = (options) => {
42
- // eslint-disable-next-line react-hooks/exhaustive-deps
43
- const memoizedOptions = (0, react_1.useMemo)(() => options, [JSON.stringify(options)]);
44
- const { onSubmit, onChange, openOnFocus, apiKey, cioJsClient, cioJsClientOptions, placeholder = 'What can we help you find today?', autocompleteClassName = 'cio-autocomplete', advancedParameters, defaultInput, getSearchResultsUrl, onIsOpenChange, } = memoizedOptions;
45
- let { sections = exports.defaultSections, zeroStateSections } = memoizedOptions;
46
- sections = (0, react_1.useMemo)(() => {
47
- if (sections) {
48
- return convertLegacyParametersAndAddDefaults(sections);
49
- }
50
- return sections;
51
- }, [sections]);
52
- zeroStateSections = (0, react_1.useMemo)(() => {
53
- if (zeroStateSections) {
54
- return convertLegacyParametersAndAddDefaults(zeroStateSections);
55
- }
56
- return zeroStateSections;
57
- }, [zeroStateSections]);
27
+ const { sections, zeroStateSections, cioJsClientOptions, advancedParameters } = (0, useNormalizedProps_1.default)(options);
28
+ const { onSubmit, onChange, openOnFocus, apiKey, cioJsClient, placeholder = 'What can we help you find today?', autocompleteClassName = 'cio-autocomplete', defaultInput, getSearchResultsUrl } = options, rest = tslib_1.__rest(options, ["onSubmit", "onChange", "openOnFocus", "apiKey", "cioJsClient", "placeholder", "autocompleteClassName", "defaultInput", "getSearchResultsUrl"]);
58
29
  const [query, setQuery] = (0, react_1.useState)(defaultInput || '');
59
30
  const previousQuery = (0, usePrevious_1.default)(query);
60
31
  const cioClient = (0, useCioClient_1.default)({ apiKey, cioJsClient, cioJsClientOptions });
@@ -63,7 +34,11 @@ const useCioAutocomplete = (options) => {
63
34
  const features = (0, react_1.useMemo)(() => (0, utils_1.getFeatures)(request), [request]);
64
35
  // Get dropdown items array from active sections (autocomplete + recommendations + custom)
65
36
  const items = (0, react_1.useMemo)(() => (0, utils_1.getItemsForActiveSections)(activeSectionsWithData), [activeSectionsWithData]);
66
- const { isOpen, getMenuProps, getLabelProps, openMenu, closeMenu, highlightedIndex, getInputProps, getItemProps: getItemPropsDownShift, } = (0, useDownShift_1.default)({ setQuery, items, onSubmit, cioClient, previousQuery, onIsOpenChange });
37
+ const { isOpen, getMenuProps, getLabelProps, openMenu, closeMenu, highlightedIndex, getInputProps, getItemProps: getItemPropsDownShift, } = (0, useDownShift_1.default)(Object.assign({ setQuery,
38
+ items,
39
+ onSubmit,
40
+ cioClient,
41
+ previousQuery }, rest));
67
42
  // Log console errors
68
43
  (0, useConsoleErrors_1.default)(sections, activeSections);
69
44
  // Track recommendation view
@@ -1,55 +1,54 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
3
4
  const downshift_1 = require("downshift");
4
5
  const utils_1 = require("../utils");
5
6
  let idCounter = 0;
6
- const useDownShift = ({ setQuery, items, onSubmit, cioClient, previousQuery = '', onIsOpenChange, }) => (0, downshift_1.useCombobox)({
7
- id: `cio-autocomplete-${idCounter++}`,
8
- items,
9
- itemToString: (item) => (item === null || item === void 0 ? void 0 : item.value) || '',
10
- onSelectedItemChange({ selectedItem }) {
11
- var _a;
12
- if (selectedItem) {
13
- if (selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.value) {
14
- if (onSubmit)
15
- onSubmit({ item: selectedItem, originalQuery: previousQuery });
16
- try {
17
- if ((selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.section) === 'Search Suggestions') {
18
- setQuery(selectedItem.value || '');
19
- (0, utils_1.trackSearchSubmit)(cioClient, selectedItem.value, {
20
- originalQuery: previousQuery,
21
- });
7
+ const useDownShift = (_a) => {
8
+ var { setQuery, items, onSubmit, cioClient, previousQuery = '' } = _a, rest = tslib_1.__rest(_a, ["setQuery", "items", "onSubmit", "cioClient", "previousQuery"]);
9
+ return (0, downshift_1.useCombobox)(Object.assign({ id: `cio-autocomplete-${idCounter++}`, // eslint-disable-line
10
+ items, itemToString: (item) => (item === null || item === void 0 ? void 0 : item.value) || '', onSelectedItemChange({ selectedItem }) {
11
+ var _a;
12
+ if (selectedItem) {
13
+ if (selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.value) {
14
+ if (onSubmit)
15
+ onSubmit({ item: selectedItem, originalQuery: previousQuery });
16
+ try {
17
+ if ((selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.section) === 'Search Suggestions') {
18
+ setQuery(selectedItem.value || '');
19
+ (0, utils_1.trackSearchSubmit)(cioClient, selectedItem.value, {
20
+ originalQuery: previousQuery,
21
+ });
22
+ }
23
+ // Autocomplete Select tracking
24
+ // Recommendation Select tracking
25
+ if (selectedItem.podId && ((_a = selectedItem.data) === null || _a === void 0 ? void 0 : _a.id) && selectedItem.strategy) {
26
+ cioClient === null || cioClient === void 0 ? void 0 : cioClient.tracker.trackRecommendationClick({
27
+ itemName: selectedItem.value,
28
+ itemId: selectedItem.data.id,
29
+ variationId: selectedItem.data.variation_id,
30
+ podId: selectedItem.podId,
31
+ strategyId: selectedItem.strategy.id,
32
+ section: selectedItem.section,
33
+ resultId: selectedItem.result_id,
34
+ });
35
+ // Select tracking for all other Constructor sections:
36
+ // (ie: Search Suggestions, Products, Custom Cio sections, etc)
37
+ // This does not apply to custom user defined sections that aren't part of Constructor index
38
+ }
39
+ else if (selectedItem.result_id) {
40
+ cioClient === null || cioClient === void 0 ? void 0 : cioClient.tracker.trackAutocompleteSelect(selectedItem.value, {
41
+ originalQuery: previousQuery,
42
+ section: selectedItem.section,
43
+ });
44
+ }
22
45
  }
23
- // Autocomplete Select tracking
24
- // Recommendation Select tracking
25
- if (selectedItem.podId && ((_a = selectedItem.data) === null || _a === void 0 ? void 0 : _a.id) && selectedItem.strategy) {
26
- cioClient === null || cioClient === void 0 ? void 0 : cioClient.tracker.trackRecommendationClick({
27
- itemName: selectedItem.value,
28
- itemId: selectedItem.data.id,
29
- variationId: selectedItem.data.variation_id,
30
- podId: selectedItem.podId,
31
- strategyId: selectedItem.strategy.id,
32
- section: selectedItem.section,
33
- resultId: selectedItem.result_id,
34
- });
35
- // Select tracking for all other Constructor sections:
36
- // (ie: Search Suggestions, Products, Custom Cio sections, etc)
37
- // This does not apply to custom user defined sections that aren't part of Constructor index
46
+ catch (error) {
47
+ // eslint-disable-next-line no-console
48
+ console.log(error);
38
49
  }
39
- else if (selectedItem.result_id) {
40
- cioClient === null || cioClient === void 0 ? void 0 : cioClient.tracker.trackAutocompleteSelect(selectedItem.value, {
41
- originalQuery: previousQuery,
42
- section: selectedItem.section,
43
- });
44
- }
45
- }
46
- catch (error) {
47
- // eslint-disable-next-line no-console
48
- console.log(error);
49
50
  }
50
51
  }
51
- }
52
- },
53
- onIsOpenChange,
54
- });
52
+ } }, rest));
53
+ };
55
54
  exports.default = useDownShift;
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defaultSections = void 0;
4
+ /* eslint-disable react-hooks/exhaustive-deps */
5
+ const react_1 = require("react");
6
+ const typeGuards_1 = require("../typeGuards");
7
+ exports.defaultSections = [
8
+ {
9
+ indexSectionName: 'Search Suggestions',
10
+ type: 'autocomplete',
11
+ },
12
+ {
13
+ indexSectionName: 'Products',
14
+ type: 'autocomplete',
15
+ },
16
+ ];
17
+ const convertLegacyParametersAndAddDefaults = (sections) => sections.map((config) => {
18
+ if ((0, typeGuards_1.isRecommendationsSection)(config)) {
19
+ if (config.identifier && !config.podId) {
20
+ return Object.assign(Object.assign({}, config), { podId: config.identifier });
21
+ }
22
+ if (!config.indexSectionName) {
23
+ return Object.assign(Object.assign({}, config), { indexSectionName: 'Products' });
24
+ }
25
+ }
26
+ if ((0, typeGuards_1.isAutocompleteSection)(config)) {
27
+ if (config.identifier && !config.indexSectionName) {
28
+ return Object.assign(Object.assign({}, config), { indexSectionName: config.identifier });
29
+ }
30
+ }
31
+ return config;
32
+ });
33
+ const normalizeSections = (sections) => {
34
+ if (sections) {
35
+ return convertLegacyParametersAndAddDefaults(sections);
36
+ }
37
+ return sections;
38
+ };
39
+ // Normalize and Memoize Objects to prevent infinite rerenders if users pass object literals to useCioAutocomplete
40
+ const useNormalizedProps = (options) => {
41
+ const { sections = exports.defaultSections, zeroStateSections, cioJsClientOptions, advancedParameters, } = options;
42
+ const sectionsMemoized = (0, react_1.useMemo)(() => normalizeSections(sections), [JSON.stringify(sections)]);
43
+ const zeroStateSectionsMemoized = (0, react_1.useMemo)(() => normalizeSections(zeroStateSections), [JSON.stringify(zeroStateSections)]);
44
+ const cioJsClientOptionsMemoized = (0, react_1.useMemo)(() => cioJsClientOptions, [JSON.stringify(cioJsClientOptions)]);
45
+ const advancedParametersMemoized = (0, react_1.useMemo)(() => advancedParameters, [JSON.stringify(advancedParameters)]);
46
+ return {
47
+ sections: sectionsMemoized,
48
+ zeroStateSections: zeroStateSectionsMemoized,
49
+ cioJsClientOptions: cioJsClientOptionsMemoized,
50
+ advancedParameters: advancedParametersMemoized,
51
+ };
52
+ };
53
+ exports.default = useNormalizedProps;
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = '1.23.19';
3
+ exports.default = '1.23.20';
@@ -7,7 +7,8 @@ import { getItemPosition, getItemsForActiveSections, getFeatures, trackRecommend
7
7
  import useConsoleErrors from './useConsoleErrors';
8
8
  import useSections from './useSections';
9
9
  import useRecommendationsObserver from './useRecommendationsObserver';
10
- import { isAutocompleteSection, isCustomSection, isRecommendationsSection } from '../typeGuards';
10
+ import { isCustomSection, isRecommendationsSection } from '../typeGuards';
11
+ import useNormalizedProps from './useNormalizedProps';
11
12
  export const defaultSections = [
12
13
  {
13
14
  indexSectionName: 'Search Suggestions',
@@ -18,39 +19,9 @@ export const defaultSections = [
18
19
  type: 'autocomplete',
19
20
  },
20
21
  ];
21
- const convertLegacyParametersAndAddDefaults = (sections) => sections.map((config) => {
22
- if (isRecommendationsSection(config)) {
23
- if (config.identifier && !config.podId) {
24
- return { ...config, podId: config.identifier };
25
- }
26
- if (!config.indexSectionName) {
27
- return { ...config, indexSectionName: 'Products' };
28
- }
29
- }
30
- if (isAutocompleteSection(config)) {
31
- if (config.identifier && !config.indexSectionName) {
32
- return { ...config, indexSectionName: config.identifier };
33
- }
34
- }
35
- return config;
36
- });
37
22
  const useCioAutocomplete = (options) => {
38
- // eslint-disable-next-line react-hooks/exhaustive-deps
39
- const memoizedOptions = useMemo(() => options, [JSON.stringify(options)]);
40
- const { onSubmit, onChange, openOnFocus, apiKey, cioJsClient, cioJsClientOptions, placeholder = 'What can we help you find today?', autocompleteClassName = 'cio-autocomplete', advancedParameters, defaultInput, getSearchResultsUrl, onIsOpenChange, } = memoizedOptions;
41
- let { sections = defaultSections, zeroStateSections } = memoizedOptions;
42
- sections = useMemo(() => {
43
- if (sections) {
44
- return convertLegacyParametersAndAddDefaults(sections);
45
- }
46
- return sections;
47
- }, [sections]);
48
- zeroStateSections = useMemo(() => {
49
- if (zeroStateSections) {
50
- return convertLegacyParametersAndAddDefaults(zeroStateSections);
51
- }
52
- return zeroStateSections;
53
- }, [zeroStateSections]);
23
+ const { sections, zeroStateSections, cioJsClientOptions, advancedParameters } = useNormalizedProps(options);
24
+ const { onSubmit, onChange, openOnFocus, apiKey, cioJsClient, placeholder = 'What can we help you find today?', autocompleteClassName = 'cio-autocomplete', defaultInput, getSearchResultsUrl, ...rest } = options;
54
25
  const [query, setQuery] = useState(defaultInput || '');
55
26
  const previousQuery = usePrevious(query);
56
27
  const cioClient = useCioClient({ apiKey, cioJsClient, cioJsClientOptions });
@@ -59,7 +30,14 @@ const useCioAutocomplete = (options) => {
59
30
  const features = useMemo(() => getFeatures(request), [request]);
60
31
  // Get dropdown items array from active sections (autocomplete + recommendations + custom)
61
32
  const items = useMemo(() => getItemsForActiveSections(activeSectionsWithData), [activeSectionsWithData]);
62
- const { isOpen, getMenuProps, getLabelProps, openMenu, closeMenu, highlightedIndex, getInputProps, getItemProps: getItemPropsDownShift, } = useDownShift({ setQuery, items, onSubmit, cioClient, previousQuery, onIsOpenChange });
33
+ const { isOpen, getMenuProps, getLabelProps, openMenu, closeMenu, highlightedIndex, getInputProps, getItemProps: getItemPropsDownShift, } = useDownShift({
34
+ setQuery,
35
+ items,
36
+ onSubmit,
37
+ cioClient,
38
+ previousQuery,
39
+ ...rest,
40
+ });
63
41
  // Log console errors
64
42
  useConsoleErrors(sections, activeSections);
65
43
  // Track recommendation view
@@ -1,7 +1,7 @@
1
1
  import { useCombobox } from 'downshift';
2
2
  import { trackSearchSubmit } from '../utils';
3
3
  let idCounter = 0;
4
- const useDownShift = ({ setQuery, items, onSubmit, cioClient, previousQuery = '', onIsOpenChange, }) => useCombobox({
4
+ const useDownShift = ({ setQuery, items, onSubmit, cioClient, previousQuery = '', ...rest }) => useCombobox({
5
5
  id: `cio-autocomplete-${idCounter++}`,
6
6
  items,
7
7
  itemToString: (item) => item?.value || '',
@@ -47,6 +47,6 @@ const useDownShift = ({ setQuery, items, onSubmit, cioClient, previousQuery = ''
47
47
  }
48
48
  }
49
49
  },
50
- onIsOpenChange,
50
+ ...rest,
51
51
  });
52
52
  export default useDownShift;
@@ -0,0 +1,50 @@
1
+ /* eslint-disable react-hooks/exhaustive-deps */
2
+ import { useMemo } from 'react';
3
+ import { isAutocompleteSection, isRecommendationsSection } from '../typeGuards';
4
+ export const defaultSections = [
5
+ {
6
+ indexSectionName: 'Search Suggestions',
7
+ type: 'autocomplete',
8
+ },
9
+ {
10
+ indexSectionName: 'Products',
11
+ type: 'autocomplete',
12
+ },
13
+ ];
14
+ const convertLegacyParametersAndAddDefaults = (sections) => sections.map((config) => {
15
+ if (isRecommendationsSection(config)) {
16
+ if (config.identifier && !config.podId) {
17
+ return { ...config, podId: config.identifier };
18
+ }
19
+ if (!config.indexSectionName) {
20
+ return { ...config, indexSectionName: 'Products' };
21
+ }
22
+ }
23
+ if (isAutocompleteSection(config)) {
24
+ if (config.identifier && !config.indexSectionName) {
25
+ return { ...config, indexSectionName: config.identifier };
26
+ }
27
+ }
28
+ return config;
29
+ });
30
+ const normalizeSections = (sections) => {
31
+ if (sections) {
32
+ return convertLegacyParametersAndAddDefaults(sections);
33
+ }
34
+ return sections;
35
+ };
36
+ // Normalize and Memoize Objects to prevent infinite rerenders if users pass object literals to useCioAutocomplete
37
+ const useNormalizedProps = (options) => {
38
+ const { sections = defaultSections, zeroStateSections, cioJsClientOptions, advancedParameters, } = options;
39
+ const sectionsMemoized = useMemo(() => normalizeSections(sections), [JSON.stringify(sections)]);
40
+ const zeroStateSectionsMemoized = useMemo(() => normalizeSections(zeroStateSections), [JSON.stringify(zeroStateSections)]);
41
+ const cioJsClientOptionsMemoized = useMemo(() => cioJsClientOptions, [JSON.stringify(cioJsClientOptions)]);
42
+ const advancedParametersMemoized = useMemo(() => advancedParameters, [JSON.stringify(advancedParameters)]);
43
+ return {
44
+ sections: sectionsMemoized,
45
+ zeroStateSections: zeroStateSectionsMemoized,
46
+ cioJsClientOptions: cioJsClientOptionsMemoized,
47
+ advancedParameters: advancedParametersMemoized,
48
+ };
49
+ };
50
+ export default useNormalizedProps;
@@ -1 +1 @@
1
- export default '1.23.19';
1
+ export default '1.23.20';
@@ -1,6 +1,5 @@
1
- import { CioAutocompleteProps, Section, UserDefinedSection, HTMLPropsWithCioDataAttributes, Item } from '../types';
1
+ import { Section, UserDefinedSection, HTMLPropsWithCioDataAttributes, Item, UseCioAutocompleteOptions } from '../types';
2
2
  export declare const defaultSections: UserDefinedSection[];
3
- export type UseCioAutocompleteOptions = Omit<CioAutocompleteProps, 'children'>;
4
3
  declare const useCioAutocomplete: (options: UseCioAutocompleteOptions) => {
5
4
  query: string;
6
5
  sections: Section[];
@@ -1,16 +1,14 @@
1
1
  /// <reference types="react" />
2
- import { UseComboboxReturnValue, UseComboboxStateChange } from 'downshift';
2
+ import { UseComboboxProps, UseComboboxReturnValue } from 'downshift';
3
3
  import ConstructorIOClient from '@constructor-io/constructorio-client-javascript';
4
4
  import { Nullable } from '@constructor-io/constructorio-client-javascript/lib/types';
5
5
  import { Item, OnSubmit } from '../types';
6
- type UseDownShiftOptions = {
6
+ interface UseDownShiftOptions extends UseComboboxProps<Item> {
7
7
  setQuery: React.Dispatch<React.SetStateAction<string>>;
8
- items: Item[];
9
8
  onSubmit: OnSubmit;
10
9
  previousQuery?: string;
11
10
  cioClient: Nullable<ConstructorIOClient>;
12
- onIsOpenChange?: (changes: UseComboboxStateChange<Item>) => void;
13
- };
11
+ }
14
12
  export type DownShift = UseComboboxReturnValue<Item>;
15
13
  type UseDownShift = (options: UseDownShiftOptions) => DownShift;
16
14
  declare const useDownShift: UseDownShift;
@@ -0,0 +1,9 @@
1
+ import { UseCioAutocompleteOptions, UserDefinedSection } from '../types';
2
+ export declare const defaultSections: UserDefinedSection[];
3
+ declare const useNormalizedProps: (options: UseCioAutocompleteOptions) => {
4
+ sections: UserDefinedSection[];
5
+ zeroStateSections: UserDefinedSection[] | undefined;
6
+ cioJsClientOptions: import("@constructor-io/constructorio-client-javascript").ConstructorClientOptions | undefined;
7
+ advancedParameters: import("../types").AdvancedParameters | undefined;
8
+ };
9
+ export default useNormalizedProps;
@@ -1,4 +1,4 @@
1
- import { GetItemPropsOptions, UseComboboxStateChange } from 'downshift';
1
+ import { GetItemPropsOptions, UseComboboxProps } from 'downshift';
2
2
  import { ReactNode } from 'react';
3
3
  import ConstructorIOClient from '@constructor-io/constructorio-client-javascript';
4
4
  import { IAutocompleteParameters, SearchSuggestion as SearchSuggestionFromClient, Product as ProductFromClient, Item as ItemBase, AutocompleteRequestType, ConstructorClientOptions, RecommendationsParameters } from '@constructor-io/constructorio-client-javascript/lib/types';
@@ -19,13 +19,16 @@ export interface AdvancedParametersBase {
19
19
  fetchZeroStateOnFocus?: boolean;
20
20
  }
21
21
  export type AdvancedParameters = AdvancedParametersBase & Omit<IAutocompleteParameters, 'resultsPerSection'>;
22
- export type CioAutocompleteProps = CioClientConfig & {
22
+ type OptionalItemsComboboxProps<Item> = Partial<UseComboboxProps<Item>> & {
23
+ items?: Item[];
24
+ };
25
+ export type UseCioAutocompleteOptions = Omit<CioAutocompleteProps, 'children'>;
26
+ export type CioAutocompleteProps = CioClientConfig & OptionalItemsComboboxProps<Item> & {
23
27
  openOnFocus?: boolean;
24
28
  getSearchResultsUrl?: (item: SearchSuggestion) => string;
25
29
  onSubmit: OnSubmit;
26
30
  onFocus?: () => void;
27
31
  onChange?: (input: string) => void;
28
- onIsOpenChange?: (changes: UseComboboxStateChange<Item>) => void;
29
32
  placeholder?: string;
30
33
  children?: ReactNode;
31
34
  sections?: UserDefinedSection[];
@@ -1,2 +1,2 @@
1
- declare const _default: "1.23.19";
1
+ declare const _default: "1.23.20";
2
2
  export default _default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@constructor-io/constructorio-ui-autocomplete",
3
- "version": "1.23.19",
3
+ "version": "1.23.20",
4
4
  "description": "Constructor.io Autocomplete UI library for web applications",
5
5
  "main": "lib/cjs/index.js",
6
6
  "module": "lib/mjs/index.js",