@algolia/autocomplete-core 1.0.0-alpha.43 → 1.0.0-alpha.44

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.
@@ -120,7 +120,9 @@ export var stateReducer = function stateReducer(state, action) {
120
120
  {
121
121
  return _objectSpread(_objectSpread({}, state), {}, {
122
122
  activeItemId: action.props.defaultActiveItemId,
123
- isOpen: action.props.openOnFocus || Boolean(state.query)
123
+ isOpen: (action.props.openOnFocus || Boolean(state.query)) && action.props.shouldPanelOpen({
124
+ state: state
125
+ })
124
126
  });
125
127
  }
126
128
 
@@ -1 +1 @@
1
- export declare const version = "1.0.0-alpha.43";
1
+ export declare const version = "1.0.0-alpha.44";
@@ -1 +1 @@
1
- export var version = '1.0.0-alpha.43';
1
+ export var version = '1.0.0-alpha.44';
@@ -1,4 +1,4 @@
1
- /*! @algolia/autocomplete-core 1.0.0-alpha.43 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete */
1
+ /*! @algolia/autocomplete-core 1.0.0-alpha.44 | 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) :
@@ -1192,7 +1192,9 @@
1192
1192
  {
1193
1193
  return _objectSpread2(_objectSpread2({}, state), {}, {
1194
1194
  activeItemId: action.props.defaultActiveItemId,
1195
- isOpen: action.props.openOnFocus || Boolean(state.query)
1195
+ isOpen: (action.props.openOnFocus || Boolean(state.query)) && action.props.shouldPanelOpen({
1196
+ state: state
1197
+ })
1196
1198
  });
1197
1199
  }
1198
1200
 
@@ -1287,7 +1289,7 @@
1287
1289
  }, propGetters), setters);
1288
1290
  }
1289
1291
 
1290
- var version = '1.0.0-alpha.43';
1292
+ var version = '1.0.0-alpha.44';
1291
1293
 
1292
1294
  exports.createAutocomplete = createAutocomplete;
1293
1295
  exports.getDefaultProps = getDefaultProps;
@@ -1 +1 @@
1
- {"version":3,"file":"index.development.js","sources":["../../../autocomplete-shared/dist/esm/getItemsCount.js","../../../autocomplete-shared/dist/esm/invariant.js","../../../autocomplete-shared/dist/esm/warn.js","../../src/checkOptions.ts","../../src/createStore.ts","../../src/utils/flatten.ts","../../src/utils/generateAutocompleteId.ts","../../src/utils/getNextActiveItemId.ts","../../src/utils/noop.ts","../../src/utils/getNormalizedSources.ts","../../src/utils/getActiveItem.ts","../../src/utils/isOrContainsNode.ts","../../src/getAutocompleteSetters.ts","../../src/getDefaultProps.ts","../../src/onInput.ts","../../src/onKeyDown.ts","../../src/getPropGetters.ts","../../src/getCompletion.ts","../../src/stateReducer.ts","../../src/createAutocomplete.ts","../../src/version.ts"],"sourcesContent":["export function getItemsCount(state) {\n if (state.collections.length === 0) {\n return 0;\n }\n\n return state.collections.reduce(function (sum, collection) {\n return sum + collection.items.length;\n }, 0);\n}","/**\n * Throws an error if the condition is not met in development mode.\n * This is used to make development a better experience to provide guidance as\n * to where the error comes from.\n */\nexport function invariant(condition, message) {\n if (!(process.env.NODE_ENV !== 'production')) {\n return;\n }\n\n if (!condition) {\n throw new Error(\"[Autocomplete] \".concat(message));\n }\n}","export var warnCache = {\n current: {}\n};\n/**\n * Logs a warning if the condition is not met.\n * This is used to log issues in development environment only.\n */\n\nexport function warn(condition, message) {\n if (!(process.env.NODE_ENV !== 'production')) {\n return;\n }\n\n if (condition) {\n return;\n }\n\n var sanitizedMessage = message.trim();\n var hasAlreadyPrinted = warnCache.current[sanitizedMessage];\n\n if (!hasAlreadyPrinted) {\n warnCache.current[sanitizedMessage] = true; // eslint-disable-next-line no-console\n\n console.warn(\"[Autocomplete] \".concat(sanitizedMessage));\n }\n}","import { warn } from '@algolia/autocomplete-shared';\n\nimport { AutocompleteOptions, BaseItem } from './types';\n\nexport function checkOptions<TItem extends BaseItem>(\n options: AutocompleteOptions<TItem>\n) {\n warn(\n !options.debug,\n 'The `debug` option is meant for development debugging and should not be used in production.'\n );\n}\n","import {\n AutocompleteState,\n AutocompleteStore,\n BaseItem,\n InternalAutocompleteOptions,\n Reducer,\n} from './types';\n\ntype OnStoreStateChange<TItem extends BaseItem> = ({\n prevState,\n state,\n}: {\n prevState: AutocompleteState<TItem>;\n state: AutocompleteState<TItem>;\n}) => void;\n\nexport function createStore<TItem extends BaseItem>(\n reducer: Reducer,\n props: InternalAutocompleteOptions<TItem>,\n onStoreStateChange: OnStoreStateChange<TItem>\n): AutocompleteStore<TItem> {\n let state = props.initialState;\n\n return {\n getState() {\n return state;\n },\n dispatch(action, payload) {\n const prevState = { ...state };\n state = reducer(state, {\n type: action,\n props,\n payload,\n });\n\n onStoreStateChange({ state, prevState });\n },\n };\n}\n","export function flatten<TType>(values: Array<TType | TType[]>): TType[] {\n return values.reduce<TType[]>((a, b) => {\n return a.concat(b);\n }, []);\n}\n","let autocompleteId = 0;\n\nexport function generateAutocompleteId() {\n return `autocomplete-${autocompleteId++}`;\n}\n","/**\n * Returns the next active item ID from the current state.\n *\n * We allow circular keyboard navigation from the base index.\n * The base index can either be `null` (nothing is highlighted) or `0`\n * (the first item is highlighted).\n * The base index is allowed to get assigned `null` only if\n * `props.defaultActiveItemId` is `null`. This pattern allows to \"stop\"\n * by the actual query before navigating to other suggestions as seen on\n * Google or Amazon.\n *\n * @param moveAmount The offset to increment (or decrement) the last index\n * @param baseIndex The current index to compute the next index from\n * @param itemCount The number of items\n * @param defaultActiveItemId The default active index to fallback to\n */\nexport function getNextActiveItemId(\n moveAmount: number,\n baseIndex: number | null,\n itemCount: number,\n defaultActiveItemId: number | null\n): number | null {\n if (\n moveAmount < 0 &&\n (baseIndex === null || (defaultActiveItemId !== null && baseIndex === 0))\n ) {\n return itemCount + moveAmount;\n }\n\n const numericIndex = (baseIndex === null ? -1 : baseIndex) + moveAmount;\n\n if (numericIndex <= -1 || numericIndex >= itemCount) {\n return defaultActiveItemId === null ? null : 0;\n }\n\n return numericIndex;\n}\n","export const noop = () => {};\n","import { invariant } from '@algolia/autocomplete-shared';\n\nimport {\n AutocompleteSource,\n BaseItem,\n GetSources,\n GetSourcesParams,\n InternalAutocompleteSource,\n InternalGetSources,\n} from '../types';\n\nimport { noop } from './noop';\n\nexport function getNormalizedSources<TItem extends BaseItem>(\n getSources: GetSources<TItem>,\n params: GetSourcesParams<TItem>\n): ReturnType<InternalGetSources<TItem>> {\n return Promise.resolve(getSources(params)).then((sources) => {\n invariant(\n Array.isArray(sources),\n `The \\`getSources\\` function must return an array of sources but returned type ${JSON.stringify(\n typeof sources\n )}:\\n\\n${JSON.stringify(sources, null, 2)}`\n );\n\n return Promise.all(\n sources\n // We allow `undefined` and `false` sources to allow users to use\n // `Boolean(query) && source` (=> `false`).\n // We need to remove these values at this point.\n .filter((maybeSource: any): maybeSource is AutocompleteSource<TItem> =>\n Boolean(maybeSource)\n )\n .map((source) => {\n invariant(\n typeof source.sourceId === 'string',\n 'A source must provide a `sourceId` string.'\n );\n\n const normalizedSource: InternalAutocompleteSource<TItem> = {\n getItemInputValue({ state }) {\n return state.query;\n },\n getItemUrl() {\n return undefined;\n },\n onSelect({ setIsOpen }) {\n setIsOpen(false);\n },\n onActive: noop,\n ...source,\n };\n\n return Promise.resolve(normalizedSource);\n })\n );\n });\n}\n","import { AutocompleteCollection, AutocompleteState, BaseItem } from '../types';\n\n// We don't have access to the autocomplete source when we call `onKeyDown`\n// or `onClick` because those are native browser events.\n// However, we can get the source from the suggestion index.\nfunction getCollectionFromActiveItemId<TItem extends BaseItem>(\n state: AutocompleteState<TItem>\n): AutocompleteCollection<TItem> | undefined {\n // Given 3 sources with respectively 1, 2 and 3 suggestions: [1, 2, 3]\n // We want to get the accumulated counts:\n // [1, 1 + 2, 1 + 2 + 3] = [1, 3, 3 + 3] = [1, 3, 6]\n const accumulatedCollectionsCount = state.collections\n .map((collections) => collections.items.length)\n .reduce<number[]>((acc, collectionsCount, index) => {\n const previousValue = acc[index - 1] || 0;\n const nextValue = previousValue + collectionsCount;\n\n acc.push(nextValue);\n\n return acc;\n }, []);\n\n // Based on the accumulated counts, we can infer the index of the suggestion.\n const collectionIndex = accumulatedCollectionsCount.reduce((acc, current) => {\n if (current <= state.activeItemId!) {\n return acc + 1;\n }\n\n return acc;\n }, 0);\n\n return state.collections[collectionIndex];\n}\n\n/**\n * Gets the highlighted index relative to a suggestion object (not the absolute\n * highlighted index).\n *\n * Example:\n * [['a', 'b'], ['c', 'd', 'e'], ['f']]\n * ↑\n * (absolute: 3, relative: 1)\n */\nfunction getRelativeActiveItemId<TItem extends BaseItem>({\n state,\n collection,\n}: {\n state: AutocompleteState<TItem>;\n collection: AutocompleteCollection<TItem>;\n}): number {\n let isOffsetFound = false;\n let counter = 0;\n let previousItemsOffset = 0;\n\n while (isOffsetFound === false) {\n const currentCollection = state.collections[counter];\n\n if (currentCollection === collection) {\n isOffsetFound = true;\n break;\n }\n\n previousItemsOffset += currentCollection.items.length;\n\n counter++;\n }\n\n return state.activeItemId! - previousItemsOffset;\n}\n\nexport function getActiveItem<TItem extends BaseItem>(\n state: AutocompleteState<TItem>\n) {\n const collection = getCollectionFromActiveItemId(state);\n\n if (!collection) {\n return null;\n }\n\n const item = collection.items[getRelativeActiveItemId({ state, collection })];\n const source = collection.source;\n const itemInputValue = source.getItemInputValue({ item, state });\n const itemUrl = source.getItemUrl({ item, state });\n\n return {\n item,\n itemInputValue,\n itemUrl,\n source,\n };\n}\n","export function isOrContainsNode(parent: Node, child: Node) {\n return parent === child || parent.contains(child);\n}\n","import {\n AutocompleteApi,\n AutocompleteCollection,\n AutocompleteStore,\n BaseItem,\n} from './types';\nimport { flatten } from './utils';\n\ninterface GetAutocompleteSettersOptions<TItem extends BaseItem> {\n store: AutocompleteStore<TItem>;\n}\n\nexport function getAutocompleteSetters<TItem extends BaseItem>({\n store,\n}: GetAutocompleteSettersOptions<TItem>) {\n const setActiveItemId: AutocompleteApi<TItem>['setActiveItemId'] = (\n value\n ) => {\n store.dispatch('setActiveItemId', value);\n };\n\n const setQuery: AutocompleteApi<TItem>['setQuery'] = (value) => {\n store.dispatch('setQuery', value);\n };\n\n const setCollections: AutocompleteApi<TItem>['setCollections'] = (\n rawValue\n ) => {\n let baseItemId = 0;\n const value = rawValue.map<AutocompleteCollection<TItem>>((collection) => ({\n ...collection,\n // We flatten the stored items to support calling `getAlgoliaHits`\n // from the source itself.\n items: flatten(collection.items as any).map((item: any) => ({\n ...item,\n __autocomplete_id: baseItemId++,\n })),\n }));\n\n store.dispatch('setCollections', value);\n };\n\n const setIsOpen: AutocompleteApi<TItem>['setIsOpen'] = (value) => {\n store.dispatch('setIsOpen', value);\n };\n\n const setStatus: AutocompleteApi<TItem>['setStatus'] = (value) => {\n store.dispatch('setStatus', value);\n };\n\n const setContext: AutocompleteApi<TItem>['setContext'] = (value) => {\n store.dispatch('setContext', value);\n };\n\n return {\n setActiveItemId,\n setQuery,\n setCollections,\n setIsOpen,\n setStatus,\n setContext,\n };\n}\n","import { getItemsCount } from '@algolia/autocomplete-shared';\n\nimport {\n AutocompleteEnvironment,\n AutocompleteOptions,\n AutocompleteSubscribers,\n BaseItem,\n InternalAutocompleteOptions,\n} from './types';\nimport { generateAutocompleteId, getNormalizedSources, flatten } from './utils';\n\nexport function getDefaultProps<TItem extends BaseItem>(\n props: AutocompleteOptions<TItem>,\n pluginSubscribers: AutocompleteSubscribers<TItem>\n): InternalAutocompleteOptions<TItem> {\n const environment: AutocompleteEnvironment = (typeof window !== 'undefined'\n ? window\n : {}) as typeof window;\n const plugins = props.plugins || [];\n\n return {\n debug: false,\n openOnFocus: false,\n placeholder: '',\n autoFocus: false,\n defaultActiveItemId: null,\n stallThreshold: 300,\n environment,\n shouldPanelOpen: ({ state }) => getItemsCount(state) > 0,\n ...props,\n // Since `generateAutocompleteId` triggers a side effect (it increments\n // and internal counter), we don't want to execute it if unnecessary.\n id: props.id ?? generateAutocompleteId(),\n plugins,\n // The following props need to be deeply defaulted.\n initialState: {\n activeItemId: null,\n query: '',\n completion: null,\n collections: [],\n isOpen: false,\n status: 'idle',\n context: {},\n ...props.initialState,\n },\n onStateChange(params) {\n props.onStateChange?.(params);\n plugins.forEach((x) => x.onStateChange?.(params));\n },\n onSubmit(params) {\n props.onSubmit?.(params);\n plugins.forEach((x) => x.onSubmit?.(params));\n },\n onReset(params) {\n props.onReset?.(params);\n plugins.forEach((x) => x.onReset?.(params));\n },\n getSources(params) {\n return Promise.all(\n [...plugins.map((plugin) => plugin.getSources), props.getSources]\n .filter(Boolean)\n .map((getSources) => getNormalizedSources(getSources!, params))\n )\n .then((nested) => flatten(nested))\n .then((sources) =>\n sources.map((source) => ({\n ...source,\n onSelect(params) {\n source.onSelect(params);\n pluginSubscribers.forEach((x) => x.onSelect?.(params));\n },\n onActive(params) {\n source.onActive(params);\n pluginSubscribers.forEach((x) => x.onActive?.(params));\n },\n }))\n );\n },\n navigator: {\n navigate({ itemUrl }) {\n environment.location.assign(itemUrl);\n },\n navigateNewTab({ itemUrl }) {\n const windowReference = environment.open(itemUrl, '_blank', 'noopener');\n windowReference?.focus();\n },\n navigateNewWindow({ itemUrl }) {\n environment.open(itemUrl, '_blank', 'noopener');\n },\n ...props.navigator,\n },\n };\n}\n","import { invariant } from '@algolia/autocomplete-shared';\n\nimport {\n AutocompleteScopeApi,\n AutocompleteState,\n AutocompleteStore,\n BaseItem,\n InternalAutocompleteOptions,\n} from './types';\nimport { getActiveItem } from './utils';\n\nlet lastStalledId: number | null = null;\n\ninterface OnInputParams<TItem extends BaseItem>\n extends AutocompleteScopeApi<TItem> {\n event: any;\n /**\n * The next partial state to apply after the function is called.\n *\n * This is useful when we call `onInput` in a different scenario than an\n * actual input. For example, we use `onInput` when we click on an item,\n * but we want to close the panel in that case.\n */\n nextState?: Partial<AutocompleteState<TItem>>;\n props: InternalAutocompleteOptions<TItem>;\n query: string;\n store: AutocompleteStore<TItem>;\n}\n\nexport function onInput<TItem extends BaseItem>({\n event,\n nextState = {},\n props,\n query,\n refresh,\n store,\n ...setters\n}: OnInputParams<TItem>): Promise<void> {\n if (lastStalledId) {\n props.environment.clearTimeout(lastStalledId);\n }\n\n const {\n setCollections,\n setIsOpen,\n setQuery,\n setActiveItemId,\n setStatus,\n } = setters;\n\n setQuery(query);\n setActiveItemId(props.defaultActiveItemId);\n\n if (!query && props.openOnFocus === false) {\n setStatus('idle');\n setCollections(\n store.getState().collections.map((collection) => ({\n ...collection,\n items: [],\n }))\n );\n setIsOpen(\n nextState.isOpen ?? props.shouldPanelOpen({ state: store.getState() })\n );\n\n return Promise.resolve();\n }\n\n setStatus('loading');\n\n lastStalledId = props.environment.setTimeout(() => {\n setStatus('stalled');\n }, props.stallThreshold);\n\n return props\n .getSources({\n query,\n refresh,\n state: store.getState(),\n ...setters,\n })\n .then((sources) => {\n setStatus('loading');\n\n // @TODO: convert `Promise.all` to fetching strategy.\n return Promise.all(\n sources.map((source) => {\n return Promise.resolve(\n source.getItems({\n query,\n refresh,\n state: store.getState(),\n ...setters,\n })\n ).then((items) => {\n invariant(\n Array.isArray(items),\n `The \\`getItems\\` function must return an array of items but returned type ${JSON.stringify(\n typeof items\n )}:\\n\\n${JSON.stringify(items, null, 2)}`\n );\n\n return { source, items };\n });\n })\n )\n .then((collections) => {\n setStatus('idle');\n setCollections(collections as any);\n const isPanelOpen = props.shouldPanelOpen({\n state: store.getState(),\n });\n setIsOpen(\n nextState.isOpen ??\n ((props.openOnFocus && !query && isPanelOpen) || isPanelOpen)\n );\n\n const highlightedItem = getActiveItem(store.getState());\n\n if (store.getState().activeItemId !== null && highlightedItem) {\n const { item, itemInputValue, itemUrl, source } = highlightedItem;\n\n source.onActive({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n }\n })\n .finally(() => {\n if (lastStalledId) {\n props.environment.clearTimeout(lastStalledId);\n }\n });\n });\n}\n","import { onInput } from './onInput';\nimport {\n AutocompleteScopeApi,\n AutocompleteStore,\n BaseItem,\n InternalAutocompleteOptions,\n} from './types';\nimport { getActiveItem } from './utils';\n\ninterface OnKeyDownOptions<TItem extends BaseItem>\n extends AutocompleteScopeApi<TItem> {\n event: KeyboardEvent;\n props: InternalAutocompleteOptions<TItem>;\n store: AutocompleteStore<TItem>;\n}\n\nexport function onKeyDown<TItem extends BaseItem>({\n event,\n props,\n refresh,\n store,\n ...setters\n}: OnKeyDownOptions<TItem>): void {\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\n // Default browser behavior changes the caret placement on ArrowUp and\n // Arrow down.\n event.preventDefault();\n\n store.dispatch(event.key, null);\n\n const nodeItem = props.environment.document.getElementById(\n `${props.id}-item-${store.getState().activeItemId}`\n );\n\n if (nodeItem) {\n if ((nodeItem as any).scrollIntoViewIfNeeded) {\n (nodeItem as any).scrollIntoViewIfNeeded(false);\n } else {\n nodeItem.scrollIntoView(false);\n }\n }\n\n const highlightedItem = getActiveItem(store.getState());\n\n if (store.getState().activeItemId !== null && highlightedItem) {\n const { item, itemInputValue, itemUrl, source } = highlightedItem;\n\n source.onActive({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n }\n } else if (event.key === 'Escape') {\n // This prevents the default browser behavior on `input[type=\"search\"]`\n // from removing the query right away because we first want to close the\n // panel.\n event.preventDefault();\n\n store.dispatch(event.key, null);\n } else if (event.key === 'Enter') {\n // No active item, so we let the browser handle the native `onSubmit` form\n // event.\n if (\n store.getState().activeItemId === null ||\n store\n .getState()\n .collections.every((collection) => collection.items.length === 0)\n ) {\n return;\n }\n\n // This prevents the `onSubmit` event to be sent because an item is\n // highlighted.\n event.preventDefault();\n\n const { item, itemInputValue, itemUrl, source } = getActiveItem(\n store.getState()\n )!;\n\n if (event.metaKey || event.ctrlKey) {\n if (itemUrl !== undefined) {\n source.onSelect({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n props.navigator.navigateNewTab({\n itemUrl,\n item,\n state: store.getState(),\n });\n }\n } else if (event.shiftKey) {\n if (itemUrl !== undefined) {\n source.onSelect({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n props.navigator.navigateNewWindow({\n itemUrl,\n item,\n state: store.getState(),\n });\n }\n } else if (event.altKey) {\n // Keep native browser behavior\n } else {\n if (itemUrl !== undefined) {\n source.onSelect({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n props.navigator.navigate({\n itemUrl,\n item,\n state: store.getState(),\n });\n\n return;\n }\n\n onInput({\n event,\n nextState: { isOpen: false },\n props,\n query: itemInputValue,\n refresh,\n store,\n ...setters,\n }).then(() => {\n source.onSelect({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n });\n }\n }\n}\n","import { onInput } from './onInput';\nimport { onKeyDown } from './onKeyDown';\nimport {\n AutocompleteScopeApi,\n AutocompleteStore,\n BaseItem,\n GetEnvironmentProps,\n GetFormProps,\n GetInputProps,\n GetItemProps,\n GetLabelProps,\n GetListProps,\n GetPanelProps,\n GetRootProps,\n InternalAutocompleteOptions,\n} from './types';\nimport { getActiveItem, isOrContainsNode } from './utils';\n\ninterface GetPropGettersOptions<TItem extends BaseItem>\n extends AutocompleteScopeApi<TItem> {\n store: AutocompleteStore<TItem>;\n props: InternalAutocompleteOptions<TItem>;\n}\n\nexport function getPropGetters<\n TItem extends BaseItem,\n TEvent,\n TMouseEvent,\n TKeyboardEvent\n>({ props, refresh, store, ...setters }: GetPropGettersOptions<TItem>) {\n const getEnvironmentProps: GetEnvironmentProps = (providedProps) => {\n const { inputElement, formElement, panelElement, ...rest } = providedProps;\n\n return {\n // On touch devices, we do not rely on the native `blur` event of the\n // input to close the panel, but rather on a custom `touchstart` event\n // outside of the autocomplete elements.\n // This ensures a working experience on mobile because we blur the input\n // on touch devices when the user starts scrolling (`touchmove`).\n onTouchStart(event) {\n if (\n store.getState().isOpen === false ||\n event.target === inputElement\n ) {\n return;\n }\n\n // @TODO: support cases where there are multiple Autocomplete instances.\n // Right now, a second instance makes this computation return false.\n const isTargetWithinAutocomplete = [formElement, panelElement].some(\n (contextNode) => {\n return (\n isOrContainsNode(contextNode, event.target as Node) ||\n isOrContainsNode(\n contextNode,\n props.environment.document.activeElement!\n )\n );\n }\n );\n\n if (isTargetWithinAutocomplete === false) {\n store.dispatch('blur', null);\n }\n },\n // When scrolling on touch devices (mobiles, tablets, etc.), we want to\n // mimic the native platform behavior where the input is blurred to\n // hide the virtual keyboard. This gives more vertical space to\n // discover all the suggestions showing up in the panel.\n onTouchMove(event: TouchEvent) {\n if (\n store.getState().isOpen === false ||\n inputElement !== props.environment.document.activeElement ||\n event.target === inputElement\n ) {\n return;\n }\n\n inputElement.blur();\n },\n ...rest,\n };\n };\n\n const getRootProps: GetRootProps = (rest) => {\n return {\n role: 'combobox',\n 'aria-expanded': store.getState().isOpen,\n 'aria-haspopup': 'listbox',\n 'aria-owns': store.getState().isOpen ? `${props.id}-list` : undefined,\n 'aria-labelledby': `${props.id}-label`,\n ...rest,\n };\n };\n\n const getFormProps: GetFormProps<TEvent> = (providedProps) => {\n const { inputElement, ...rest } = providedProps;\n\n return {\n action: '',\n noValidate: true,\n role: 'search',\n onSubmit: (event) => {\n ((event as unknown) as Event).preventDefault();\n\n props.onSubmit({\n event,\n refresh,\n state: store.getState(),\n ...setters,\n });\n\n store.dispatch('submit', null);\n providedProps.inputElement?.blur();\n },\n onReset: (event) => {\n ((event as unknown) as Event).preventDefault();\n\n props.onReset({\n event,\n refresh,\n state: store.getState(),\n ...setters,\n });\n\n store.dispatch('reset', null);\n providedProps.inputElement?.focus();\n },\n ...rest,\n };\n };\n\n const getInputProps: GetInputProps<TEvent, TMouseEvent, TKeyboardEvent> = (\n providedProps\n ) => {\n function onFocus(event: TEvent) {\n // We want to trigger a query when `openOnFocus` is true\n // because the panel should open with the current query.\n if (props.openOnFocus || Boolean(store.getState().query)) {\n onInput({\n event,\n props,\n query: store.getState().completion || store.getState().query,\n refresh,\n store,\n ...setters,\n });\n }\n\n store.dispatch('focus', null);\n }\n\n const isTouchDevice = 'ontouchstart' in props.environment;\n const { inputElement, maxLength = 512, ...rest } = providedProps || {};\n const activeItem = getActiveItem(store.getState());\n\n return {\n 'aria-autocomplete': 'both',\n 'aria-activedescendant':\n store.getState().isOpen && store.getState().activeItemId !== null\n ? `${props.id}-item-${store.getState().activeItemId}`\n : undefined,\n 'aria-controls': store.getState().isOpen ? `${props.id}-list` : undefined,\n 'aria-labelledby': `${props.id}-label`,\n value: store.getState().completion || store.getState().query,\n id: `${props.id}-input`,\n autoComplete: 'off',\n autoCorrect: 'off',\n autoCapitalize: 'off',\n enterKeyHint: activeItem?.itemUrl ? 'go' : 'search',\n spellCheck: 'false',\n autoFocus: props.autoFocus,\n placeholder: props.placeholder,\n maxLength,\n type: 'search',\n onChange: (event) => {\n onInput({\n event,\n props,\n query: (((event as unknown) as Event)\n .currentTarget as HTMLInputElement).value.slice(0, maxLength),\n refresh,\n store,\n ...setters,\n });\n },\n onKeyDown: (event) => {\n onKeyDown({\n event: (event as unknown) as KeyboardEvent,\n props,\n refresh,\n store,\n ...setters,\n });\n },\n onFocus,\n onBlur: () => {\n // We do rely on the `blur` event on touch devices.\n // See explanation in `onTouchStart`.\n if (!isTouchDevice) {\n store.dispatch('blur', null);\n }\n },\n onClick: (event) => {\n // When the panel is closed and you click on the input while\n // the input is focused, the `onFocus` event is not triggered\n // (default browser behavior).\n // In an autocomplete context, it makes sense to open the panel in this\n // case.\n // We mimic this event by catching the `onClick` event which\n // triggers the `onFocus` for the panel to open.\n if (\n providedProps.inputElement ===\n props.environment.document.activeElement &&\n !store.getState().isOpen\n ) {\n onFocus((event as unknown) as TEvent);\n }\n },\n ...rest,\n };\n };\n\n const getLabelProps: GetLabelProps = (rest) => {\n return {\n htmlFor: `${props.id}-input`,\n id: `${props.id}-label`,\n ...rest,\n };\n };\n\n const getListProps: GetListProps = (rest) => {\n return {\n role: 'listbox',\n 'aria-labelledby': `${props.id}-label`,\n id: `${props.id}-list`,\n ...rest,\n };\n };\n\n const getPanelProps: GetPanelProps<TMouseEvent> = (rest) => {\n return {\n onMouseDown(event) {\n // Prevents the `activeElement` from being changed to the panel so\n // that the blur event is not triggered, otherwise it closes the\n // panel.\n ((event as unknown) as MouseEvent).preventDefault();\n },\n onMouseLeave() {\n store.dispatch('mouseleave', null);\n },\n ...rest,\n };\n };\n\n const getItemProps: GetItemProps<any, TMouseEvent> = (providedProps) => {\n const { item, source, ...rest } = providedProps;\n\n return {\n id: `${props.id}-item-${item.__autocomplete_id}`,\n role: 'option',\n 'aria-selected': store.getState().activeItemId === item.__autocomplete_id,\n onMouseMove(event) {\n if (item.__autocomplete_id === store.getState().activeItemId) {\n return;\n }\n\n store.dispatch('mousemove', item.__autocomplete_id);\n\n const activeItem = getActiveItem(store.getState());\n\n if (store.getState().activeItemId !== null && activeItem) {\n const { item, itemInputValue, itemUrl, source } = activeItem;\n\n source.onActive({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n }\n },\n onMouseDown(event) {\n // Prevents the `activeElement` from being changed to the item so it\n // can remain with the current `activeElement`.\n ((event as unknown) as MouseEvent).preventDefault();\n },\n onClick(event) {\n const itemInputValue = source.getItemInputValue({\n item,\n state: store.getState(),\n });\n const itemUrl = source.getItemUrl({\n item,\n state: store.getState(),\n });\n\n // If `getItemUrl` is provided, it means that the suggestion\n // is a link, not plain text that aims at updating the query.\n // We can therefore skip the state change because it will update\n // the `activeItemId`, resulting in a UI flash, especially\n // noticeable on mobile.\n const runPreCommand = itemUrl\n ? Promise.resolve()\n : onInput({\n event,\n nextState: { isOpen: false },\n props,\n query: itemInputValue,\n refresh,\n store,\n ...setters,\n });\n\n runPreCommand.then(() => {\n source.onSelect({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n });\n },\n ...rest,\n };\n };\n\n return {\n getEnvironmentProps,\n getRootProps,\n getFormProps,\n getLabelProps,\n getInputProps,\n getPanelProps,\n getListProps,\n getItemProps,\n };\n}\n","import { AutocompleteState, BaseItem } from './types';\nimport { getActiveItem } from './utils';\n\ninterface GetCompletionProps<TItem extends BaseItem> {\n state: AutocompleteState<TItem>;\n}\n\nexport function getCompletion<TItem extends BaseItem>({\n state,\n}: GetCompletionProps<TItem>): string | null {\n if (state.isOpen === false || state.activeItemId === null) {\n return null;\n }\n\n const { itemInputValue } = getActiveItem(state)!;\n\n return itemInputValue || null;\n}\n","import { getItemsCount, invariant } from '@algolia/autocomplete-shared';\n\nimport { getCompletion } from './getCompletion';\nimport { Reducer } from './types';\nimport { getNextActiveItemId } from './utils';\n\nexport const stateReducer: Reducer = (state, action) => {\n switch (action.type) {\n case 'setActiveItemId': {\n return {\n ...state,\n activeItemId: action.payload,\n };\n }\n\n case 'setQuery': {\n return {\n ...state,\n query: action.payload,\n completion: null,\n };\n }\n\n case 'setCollections': {\n return {\n ...state,\n collections: action.payload,\n };\n }\n\n case 'setIsOpen': {\n return {\n ...state,\n isOpen: action.payload,\n };\n }\n\n case 'setStatus': {\n return {\n ...state,\n status: action.payload,\n };\n }\n\n case 'setContext': {\n return {\n ...state,\n context: {\n ...state.context,\n ...action.payload,\n },\n };\n }\n\n case 'ArrowDown': {\n const nextState = {\n ...state,\n activeItemId: getNextActiveItemId(\n 1,\n state.activeItemId,\n getItemsCount(state),\n action.props.defaultActiveItemId\n ),\n };\n\n return {\n ...nextState,\n completion: getCompletion({ state: nextState }),\n };\n }\n\n case 'ArrowUp': {\n const nextState = {\n ...state,\n activeItemId: getNextActiveItemId(\n -1,\n state.activeItemId,\n getItemsCount(state),\n action.props.defaultActiveItemId\n ),\n };\n\n return {\n ...nextState,\n completion: getCompletion({ state: nextState }),\n };\n }\n\n case 'Escape': {\n if (state.isOpen) {\n return {\n ...state,\n isOpen: false,\n completion: null,\n };\n }\n\n return {\n ...state,\n query: '',\n status: 'idle',\n collections: [],\n };\n }\n\n case 'submit': {\n return {\n ...state,\n activeItemId: null,\n isOpen: false,\n status: 'idle',\n };\n }\n\n case 'reset': {\n return {\n ...state,\n activeItemId:\n // Since we open the panel on reset when openOnFocus=true\n // we need to restore the highlighted index to the defaultActiveItemId. (DocSearch use-case)\n\n // Since we close the panel when openOnFocus=false\n // we lose track of the highlighted index. (Query-suggestions use-case)\n action.props.openOnFocus === true\n ? action.props.defaultActiveItemId\n : null,\n status: 'idle',\n query: '',\n };\n }\n\n case 'focus': {\n return {\n ...state,\n activeItemId: action.props.defaultActiveItemId,\n isOpen: action.props.openOnFocus || Boolean(state.query),\n };\n }\n\n case 'blur': {\n if (action.props.debug) {\n return state;\n }\n\n return {\n ...state,\n isOpen: false,\n activeItemId: null,\n };\n }\n\n case 'mousemove': {\n return {\n ...state,\n activeItemId: action.payload,\n };\n }\n\n case 'mouseleave': {\n return {\n ...state,\n activeItemId: action.props.defaultActiveItemId,\n };\n }\n\n default:\n invariant(\n false,\n `The reducer action ${JSON.stringify(action.type)} is not supported.`\n );\n\n return state;\n }\n};\n","import { checkOptions } from './checkOptions';\nimport { createStore } from './createStore';\nimport { getAutocompleteSetters } from './getAutocompleteSetters';\nimport { getDefaultProps } from './getDefaultProps';\nimport { getPropGetters } from './getPropGetters';\nimport { onInput } from './onInput';\nimport { stateReducer } from './stateReducer';\nimport {\n AutocompleteApi,\n AutocompleteOptions,\n BaseItem,\n AutocompleteSubscribers,\n} from './types';\n\nexport function createAutocomplete<\n TItem extends BaseItem,\n TEvent = Event,\n TMouseEvent = MouseEvent,\n TKeyboardEvent = KeyboardEvent\n>(\n options: AutocompleteOptions<TItem>\n): AutocompleteApi<TItem, TEvent, TMouseEvent, TKeyboardEvent> {\n checkOptions(options);\n\n const subscribers: AutocompleteSubscribers<TItem> = [];\n const props = getDefaultProps(options, subscribers);\n const store = createStore(stateReducer, props, onStoreStateChange);\n\n const setters = getAutocompleteSetters({ store });\n const propGetters = getPropGetters<\n TItem,\n TEvent,\n TMouseEvent,\n TKeyboardEvent\n >({ props, refresh, store, ...setters });\n\n function onStoreStateChange({ prevState, state }) {\n props.onStateChange({ prevState, state, refresh, ...setters });\n }\n\n function refresh() {\n return onInput({\n event: new Event('input'),\n nextState: { isOpen: store.getState().isOpen },\n props,\n query: store.getState().query,\n refresh,\n store,\n ...setters,\n });\n }\n\n props.plugins.forEach((plugin) =>\n plugin.subscribe?.({\n ...setters,\n refresh,\n onSelect(fn) {\n subscribers.push({ onSelect: fn });\n },\n onActive(fn) {\n subscribers.push({ onActive: fn });\n },\n })\n );\n\n return {\n refresh,\n ...propGetters,\n ...setters,\n };\n}\n","export const version = '1.0.0-alpha.43';\n"],"names":["getItemsCount","state","collections","length","reduce","sum","collection","items","invariant","condition","message","Error","concat","warnCache","current","warn","sanitizedMessage","trim","hasAlreadyPrinted","console","checkOptions","options","process","debug","createStore","reducer","props","onStoreStateChange","initialState","getState","dispatch","action","payload","prevState","type","flatten","values","a","b","autocompleteId","generateAutocompleteId","getNextActiveItemId","moveAmount","baseIndex","itemCount","defaultActiveItemId","numericIndex","noop","getNormalizedSources","getSources","params","Promise","resolve","then","sources","Array","isArray","JSON","stringify","all","filter","maybeSource","Boolean","map","source","sourceId","normalizedSource","getItemInputValue","query","getItemUrl","undefined","onSelect","setIsOpen","onActive","getCollectionFromActiveItemId","accumulatedCollectionsCount","acc","collectionsCount","index","previousValue","nextValue","push","collectionIndex","activeItemId","getRelativeActiveItemId","isOffsetFound","counter","previousItemsOffset","currentCollection","getActiveItem","item","itemInputValue","itemUrl","isOrContainsNode","parent","child","contains","getAutocompleteSetters","store","setActiveItemId","value","setQuery","setCollections","rawValue","baseItemId","__autocomplete_id","setStatus","setContext","getDefaultProps","pluginSubscribers","environment","window","plugins","openOnFocus","placeholder","autoFocus","stallThreshold","shouldPanelOpen","id","completion","isOpen","status","context","onStateChange","forEach","x","onSubmit","onReset","plugin","nested","navigator","navigate","location","assign","navigateNewTab","windowReference","open","focus","navigateNewWindow","lastStalledId","onInput","event","nextState","refresh","setters","clearTimeout","setTimeout","getItems","isPanelOpen","highlightedItem","finally","onKeyDown","key","preventDefault","nodeItem","document","getElementById","scrollIntoViewIfNeeded","scrollIntoView","every","metaKey","ctrlKey","shiftKey","altKey","getPropGetters","getEnvironmentProps","providedProps","inputElement","formElement","panelElement","rest","onTouchStart","target","isTargetWithinAutocomplete","some","contextNode","activeElement","onTouchMove","blur","getRootProps","role","getFormProps","noValidate","getInputProps","onFocus","isTouchDevice","maxLength","activeItem","autoComplete","autoCorrect","autoCapitalize","enterKeyHint","spellCheck","onChange","currentTarget","slice","onBlur","onClick","getLabelProps","htmlFor","getListProps","getPanelProps","onMouseDown","onMouseLeave","getItemProps","onMouseMove","runPreCommand","getCompletion","stateReducer","createAutocomplete","subscribers","propGetters","Event","subscribe","fn","version"],"mappings":"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"}
1
+ {"version":3,"file":"index.development.js","sources":["../../../autocomplete-shared/dist/esm/getItemsCount.js","../../../autocomplete-shared/dist/esm/invariant.js","../../../autocomplete-shared/dist/esm/warn.js","../../src/checkOptions.ts","../../src/createStore.ts","../../src/utils/flatten.ts","../../src/utils/generateAutocompleteId.ts","../../src/utils/getNextActiveItemId.ts","../../src/utils/noop.ts","../../src/utils/getNormalizedSources.ts","../../src/utils/getActiveItem.ts","../../src/utils/isOrContainsNode.ts","../../src/getAutocompleteSetters.ts","../../src/getDefaultProps.ts","../../src/onInput.ts","../../src/onKeyDown.ts","../../src/getPropGetters.ts","../../src/getCompletion.ts","../../src/stateReducer.ts","../../src/createAutocomplete.ts","../../src/version.ts"],"sourcesContent":["export function getItemsCount(state) {\n if (state.collections.length === 0) {\n return 0;\n }\n\n return state.collections.reduce(function (sum, collection) {\n return sum + collection.items.length;\n }, 0);\n}","/**\n * Throws an error if the condition is not met in development mode.\n * This is used to make development a better experience to provide guidance as\n * to where the error comes from.\n */\nexport function invariant(condition, message) {\n if (!(process.env.NODE_ENV !== 'production')) {\n return;\n }\n\n if (!condition) {\n throw new Error(\"[Autocomplete] \".concat(message));\n }\n}","export var warnCache = {\n current: {}\n};\n/**\n * Logs a warning if the condition is not met.\n * This is used to log issues in development environment only.\n */\n\nexport function warn(condition, message) {\n if (!(process.env.NODE_ENV !== 'production')) {\n return;\n }\n\n if (condition) {\n return;\n }\n\n var sanitizedMessage = message.trim();\n var hasAlreadyPrinted = warnCache.current[sanitizedMessage];\n\n if (!hasAlreadyPrinted) {\n warnCache.current[sanitizedMessage] = true; // eslint-disable-next-line no-console\n\n console.warn(\"[Autocomplete] \".concat(sanitizedMessage));\n }\n}","import { warn } from '@algolia/autocomplete-shared';\n\nimport { AutocompleteOptions, BaseItem } from './types';\n\nexport function checkOptions<TItem extends BaseItem>(\n options: AutocompleteOptions<TItem>\n) {\n warn(\n !options.debug,\n 'The `debug` option is meant for development debugging and should not be used in production.'\n );\n}\n","import {\n AutocompleteState,\n AutocompleteStore,\n BaseItem,\n InternalAutocompleteOptions,\n Reducer,\n} from './types';\n\ntype OnStoreStateChange<TItem extends BaseItem> = ({\n prevState,\n state,\n}: {\n prevState: AutocompleteState<TItem>;\n state: AutocompleteState<TItem>;\n}) => void;\n\nexport function createStore<TItem extends BaseItem>(\n reducer: Reducer,\n props: InternalAutocompleteOptions<TItem>,\n onStoreStateChange: OnStoreStateChange<TItem>\n): AutocompleteStore<TItem> {\n let state = props.initialState;\n\n return {\n getState() {\n return state;\n },\n dispatch(action, payload) {\n const prevState = { ...state };\n state = reducer(state, {\n type: action,\n props,\n payload,\n });\n\n onStoreStateChange({ state, prevState });\n },\n };\n}\n","export function flatten<TType>(values: Array<TType | TType[]>): TType[] {\n return values.reduce<TType[]>((a, b) => {\n return a.concat(b);\n }, []);\n}\n","let autocompleteId = 0;\n\nexport function generateAutocompleteId() {\n return `autocomplete-${autocompleteId++}`;\n}\n","/**\n * Returns the next active item ID from the current state.\n *\n * We allow circular keyboard navigation from the base index.\n * The base index can either be `null` (nothing is highlighted) or `0`\n * (the first item is highlighted).\n * The base index is allowed to get assigned `null` only if\n * `props.defaultActiveItemId` is `null`. This pattern allows to \"stop\"\n * by the actual query before navigating to other suggestions as seen on\n * Google or Amazon.\n *\n * @param moveAmount The offset to increment (or decrement) the last index\n * @param baseIndex The current index to compute the next index from\n * @param itemCount The number of items\n * @param defaultActiveItemId The default active index to fallback to\n */\nexport function getNextActiveItemId(\n moveAmount: number,\n baseIndex: number | null,\n itemCount: number,\n defaultActiveItemId: number | null\n): number | null {\n if (\n moveAmount < 0 &&\n (baseIndex === null || (defaultActiveItemId !== null && baseIndex === 0))\n ) {\n return itemCount + moveAmount;\n }\n\n const numericIndex = (baseIndex === null ? -1 : baseIndex) + moveAmount;\n\n if (numericIndex <= -1 || numericIndex >= itemCount) {\n return defaultActiveItemId === null ? null : 0;\n }\n\n return numericIndex;\n}\n","export const noop = () => {};\n","import { invariant } from '@algolia/autocomplete-shared';\n\nimport {\n AutocompleteSource,\n BaseItem,\n GetSources,\n GetSourcesParams,\n InternalAutocompleteSource,\n InternalGetSources,\n} from '../types';\n\nimport { noop } from './noop';\n\nexport function getNormalizedSources<TItem extends BaseItem>(\n getSources: GetSources<TItem>,\n params: GetSourcesParams<TItem>\n): ReturnType<InternalGetSources<TItem>> {\n return Promise.resolve(getSources(params)).then((sources) => {\n invariant(\n Array.isArray(sources),\n `The \\`getSources\\` function must return an array of sources but returned type ${JSON.stringify(\n typeof sources\n )}:\\n\\n${JSON.stringify(sources, null, 2)}`\n );\n\n return Promise.all(\n sources\n // We allow `undefined` and `false` sources to allow users to use\n // `Boolean(query) && source` (=> `false`).\n // We need to remove these values at this point.\n .filter((maybeSource: any): maybeSource is AutocompleteSource<TItem> =>\n Boolean(maybeSource)\n )\n .map((source) => {\n invariant(\n typeof source.sourceId === 'string',\n 'A source must provide a `sourceId` string.'\n );\n\n const normalizedSource: InternalAutocompleteSource<TItem> = {\n getItemInputValue({ state }) {\n return state.query;\n },\n getItemUrl() {\n return undefined;\n },\n onSelect({ setIsOpen }) {\n setIsOpen(false);\n },\n onActive: noop,\n ...source,\n };\n\n return Promise.resolve(normalizedSource);\n })\n );\n });\n}\n","import { AutocompleteCollection, AutocompleteState, BaseItem } from '../types';\n\n// We don't have access to the autocomplete source when we call `onKeyDown`\n// or `onClick` because those are native browser events.\n// However, we can get the source from the suggestion index.\nfunction getCollectionFromActiveItemId<TItem extends BaseItem>(\n state: AutocompleteState<TItem>\n): AutocompleteCollection<TItem> | undefined {\n // Given 3 sources with respectively 1, 2 and 3 suggestions: [1, 2, 3]\n // We want to get the accumulated counts:\n // [1, 1 + 2, 1 + 2 + 3] = [1, 3, 3 + 3] = [1, 3, 6]\n const accumulatedCollectionsCount = state.collections\n .map((collections) => collections.items.length)\n .reduce<number[]>((acc, collectionsCount, index) => {\n const previousValue = acc[index - 1] || 0;\n const nextValue = previousValue + collectionsCount;\n\n acc.push(nextValue);\n\n return acc;\n }, []);\n\n // Based on the accumulated counts, we can infer the index of the suggestion.\n const collectionIndex = accumulatedCollectionsCount.reduce((acc, current) => {\n if (current <= state.activeItemId!) {\n return acc + 1;\n }\n\n return acc;\n }, 0);\n\n return state.collections[collectionIndex];\n}\n\n/**\n * Gets the highlighted index relative to a suggestion object (not the absolute\n * highlighted index).\n *\n * Example:\n * [['a', 'b'], ['c', 'd', 'e'], ['f']]\n * ↑\n * (absolute: 3, relative: 1)\n */\nfunction getRelativeActiveItemId<TItem extends BaseItem>({\n state,\n collection,\n}: {\n state: AutocompleteState<TItem>;\n collection: AutocompleteCollection<TItem>;\n}): number {\n let isOffsetFound = false;\n let counter = 0;\n let previousItemsOffset = 0;\n\n while (isOffsetFound === false) {\n const currentCollection = state.collections[counter];\n\n if (currentCollection === collection) {\n isOffsetFound = true;\n break;\n }\n\n previousItemsOffset += currentCollection.items.length;\n\n counter++;\n }\n\n return state.activeItemId! - previousItemsOffset;\n}\n\nexport function getActiveItem<TItem extends BaseItem>(\n state: AutocompleteState<TItem>\n) {\n const collection = getCollectionFromActiveItemId(state);\n\n if (!collection) {\n return null;\n }\n\n const item = collection.items[getRelativeActiveItemId({ state, collection })];\n const source = collection.source;\n const itemInputValue = source.getItemInputValue({ item, state });\n const itemUrl = source.getItemUrl({ item, state });\n\n return {\n item,\n itemInputValue,\n itemUrl,\n source,\n };\n}\n","export function isOrContainsNode(parent: Node, child: Node) {\n return parent === child || parent.contains(child);\n}\n","import {\n AutocompleteApi,\n AutocompleteCollection,\n AutocompleteStore,\n BaseItem,\n} from './types';\nimport { flatten } from './utils';\n\ninterface GetAutocompleteSettersOptions<TItem extends BaseItem> {\n store: AutocompleteStore<TItem>;\n}\n\nexport function getAutocompleteSetters<TItem extends BaseItem>({\n store,\n}: GetAutocompleteSettersOptions<TItem>) {\n const setActiveItemId: AutocompleteApi<TItem>['setActiveItemId'] = (\n value\n ) => {\n store.dispatch('setActiveItemId', value);\n };\n\n const setQuery: AutocompleteApi<TItem>['setQuery'] = (value) => {\n store.dispatch('setQuery', value);\n };\n\n const setCollections: AutocompleteApi<TItem>['setCollections'] = (\n rawValue\n ) => {\n let baseItemId = 0;\n const value = rawValue.map<AutocompleteCollection<TItem>>((collection) => ({\n ...collection,\n // We flatten the stored items to support calling `getAlgoliaHits`\n // from the source itself.\n items: flatten(collection.items as any).map((item: any) => ({\n ...item,\n __autocomplete_id: baseItemId++,\n })),\n }));\n\n store.dispatch('setCollections', value);\n };\n\n const setIsOpen: AutocompleteApi<TItem>['setIsOpen'] = (value) => {\n store.dispatch('setIsOpen', value);\n };\n\n const setStatus: AutocompleteApi<TItem>['setStatus'] = (value) => {\n store.dispatch('setStatus', value);\n };\n\n const setContext: AutocompleteApi<TItem>['setContext'] = (value) => {\n store.dispatch('setContext', value);\n };\n\n return {\n setActiveItemId,\n setQuery,\n setCollections,\n setIsOpen,\n setStatus,\n setContext,\n };\n}\n","import { getItemsCount } from '@algolia/autocomplete-shared';\n\nimport {\n AutocompleteEnvironment,\n AutocompleteOptions,\n AutocompleteSubscribers,\n BaseItem,\n InternalAutocompleteOptions,\n} from './types';\nimport { generateAutocompleteId, getNormalizedSources, flatten } from './utils';\n\nexport function getDefaultProps<TItem extends BaseItem>(\n props: AutocompleteOptions<TItem>,\n pluginSubscribers: AutocompleteSubscribers<TItem>\n): InternalAutocompleteOptions<TItem> {\n const environment: AutocompleteEnvironment = (typeof window !== 'undefined'\n ? window\n : {}) as typeof window;\n const plugins = props.plugins || [];\n\n return {\n debug: false,\n openOnFocus: false,\n placeholder: '',\n autoFocus: false,\n defaultActiveItemId: null,\n stallThreshold: 300,\n environment,\n shouldPanelOpen: ({ state }) => getItemsCount(state) > 0,\n ...props,\n // Since `generateAutocompleteId` triggers a side effect (it increments\n // and internal counter), we don't want to execute it if unnecessary.\n id: props.id ?? generateAutocompleteId(),\n plugins,\n // The following props need to be deeply defaulted.\n initialState: {\n activeItemId: null,\n query: '',\n completion: null,\n collections: [],\n isOpen: false,\n status: 'idle',\n context: {},\n ...props.initialState,\n },\n onStateChange(params) {\n props.onStateChange?.(params);\n plugins.forEach((x) => x.onStateChange?.(params));\n },\n onSubmit(params) {\n props.onSubmit?.(params);\n plugins.forEach((x) => x.onSubmit?.(params));\n },\n onReset(params) {\n props.onReset?.(params);\n plugins.forEach((x) => x.onReset?.(params));\n },\n getSources(params) {\n return Promise.all(\n [...plugins.map((plugin) => plugin.getSources), props.getSources]\n .filter(Boolean)\n .map((getSources) => getNormalizedSources(getSources!, params))\n )\n .then((nested) => flatten(nested))\n .then((sources) =>\n sources.map((source) => ({\n ...source,\n onSelect(params) {\n source.onSelect(params);\n pluginSubscribers.forEach((x) => x.onSelect?.(params));\n },\n onActive(params) {\n source.onActive(params);\n pluginSubscribers.forEach((x) => x.onActive?.(params));\n },\n }))\n );\n },\n navigator: {\n navigate({ itemUrl }) {\n environment.location.assign(itemUrl);\n },\n navigateNewTab({ itemUrl }) {\n const windowReference = environment.open(itemUrl, '_blank', 'noopener');\n windowReference?.focus();\n },\n navigateNewWindow({ itemUrl }) {\n environment.open(itemUrl, '_blank', 'noopener');\n },\n ...props.navigator,\n },\n };\n}\n","import { invariant } from '@algolia/autocomplete-shared';\n\nimport {\n AutocompleteScopeApi,\n AutocompleteState,\n AutocompleteStore,\n BaseItem,\n InternalAutocompleteOptions,\n} from './types';\nimport { getActiveItem } from './utils';\n\nlet lastStalledId: number | null = null;\n\ninterface OnInputParams<TItem extends BaseItem>\n extends AutocompleteScopeApi<TItem> {\n event: any;\n /**\n * The next partial state to apply after the function is called.\n *\n * This is useful when we call `onInput` in a different scenario than an\n * actual input. For example, we use `onInput` when we click on an item,\n * but we want to close the panel in that case.\n */\n nextState?: Partial<AutocompleteState<TItem>>;\n props: InternalAutocompleteOptions<TItem>;\n query: string;\n store: AutocompleteStore<TItem>;\n}\n\nexport function onInput<TItem extends BaseItem>({\n event,\n nextState = {},\n props,\n query,\n refresh,\n store,\n ...setters\n}: OnInputParams<TItem>): Promise<void> {\n if (lastStalledId) {\n props.environment.clearTimeout(lastStalledId);\n }\n\n const {\n setCollections,\n setIsOpen,\n setQuery,\n setActiveItemId,\n setStatus,\n } = setters;\n\n setQuery(query);\n setActiveItemId(props.defaultActiveItemId);\n\n if (!query && props.openOnFocus === false) {\n setStatus('idle');\n setCollections(\n store.getState().collections.map((collection) => ({\n ...collection,\n items: [],\n }))\n );\n setIsOpen(\n nextState.isOpen ?? props.shouldPanelOpen({ state: store.getState() })\n );\n\n return Promise.resolve();\n }\n\n setStatus('loading');\n\n lastStalledId = props.environment.setTimeout(() => {\n setStatus('stalled');\n }, props.stallThreshold);\n\n return props\n .getSources({\n query,\n refresh,\n state: store.getState(),\n ...setters,\n })\n .then((sources) => {\n setStatus('loading');\n\n // @TODO: convert `Promise.all` to fetching strategy.\n return Promise.all(\n sources.map((source) => {\n return Promise.resolve(\n source.getItems({\n query,\n refresh,\n state: store.getState(),\n ...setters,\n })\n ).then((items) => {\n invariant(\n Array.isArray(items),\n `The \\`getItems\\` function must return an array of items but returned type ${JSON.stringify(\n typeof items\n )}:\\n\\n${JSON.stringify(items, null, 2)}`\n );\n\n return { source, items };\n });\n })\n )\n .then((collections) => {\n setStatus('idle');\n setCollections(collections as any);\n const isPanelOpen = props.shouldPanelOpen({\n state: store.getState(),\n });\n setIsOpen(\n nextState.isOpen ??\n ((props.openOnFocus && !query && isPanelOpen) || isPanelOpen)\n );\n\n const highlightedItem = getActiveItem(store.getState());\n\n if (store.getState().activeItemId !== null && highlightedItem) {\n const { item, itemInputValue, itemUrl, source } = highlightedItem;\n\n source.onActive({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n }\n })\n .finally(() => {\n if (lastStalledId) {\n props.environment.clearTimeout(lastStalledId);\n }\n });\n });\n}\n","import { onInput } from './onInput';\nimport {\n AutocompleteScopeApi,\n AutocompleteStore,\n BaseItem,\n InternalAutocompleteOptions,\n} from './types';\nimport { getActiveItem } from './utils';\n\ninterface OnKeyDownOptions<TItem extends BaseItem>\n extends AutocompleteScopeApi<TItem> {\n event: KeyboardEvent;\n props: InternalAutocompleteOptions<TItem>;\n store: AutocompleteStore<TItem>;\n}\n\nexport function onKeyDown<TItem extends BaseItem>({\n event,\n props,\n refresh,\n store,\n ...setters\n}: OnKeyDownOptions<TItem>): void {\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\n // Default browser behavior changes the caret placement on ArrowUp and\n // Arrow down.\n event.preventDefault();\n\n store.dispatch(event.key, null);\n\n const nodeItem = props.environment.document.getElementById(\n `${props.id}-item-${store.getState().activeItemId}`\n );\n\n if (nodeItem) {\n if ((nodeItem as any).scrollIntoViewIfNeeded) {\n (nodeItem as any).scrollIntoViewIfNeeded(false);\n } else {\n nodeItem.scrollIntoView(false);\n }\n }\n\n const highlightedItem = getActiveItem(store.getState());\n\n if (store.getState().activeItemId !== null && highlightedItem) {\n const { item, itemInputValue, itemUrl, source } = highlightedItem;\n\n source.onActive({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n }\n } else if (event.key === 'Escape') {\n // This prevents the default browser behavior on `input[type=\"search\"]`\n // from removing the query right away because we first want to close the\n // panel.\n event.preventDefault();\n\n store.dispatch(event.key, null);\n } else if (event.key === 'Enter') {\n // No active item, so we let the browser handle the native `onSubmit` form\n // event.\n if (\n store.getState().activeItemId === null ||\n store\n .getState()\n .collections.every((collection) => collection.items.length === 0)\n ) {\n return;\n }\n\n // This prevents the `onSubmit` event to be sent because an item is\n // highlighted.\n event.preventDefault();\n\n const { item, itemInputValue, itemUrl, source } = getActiveItem(\n store.getState()\n )!;\n\n if (event.metaKey || event.ctrlKey) {\n if (itemUrl !== undefined) {\n source.onSelect({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n props.navigator.navigateNewTab({\n itemUrl,\n item,\n state: store.getState(),\n });\n }\n } else if (event.shiftKey) {\n if (itemUrl !== undefined) {\n source.onSelect({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n props.navigator.navigateNewWindow({\n itemUrl,\n item,\n state: store.getState(),\n });\n }\n } else if (event.altKey) {\n // Keep native browser behavior\n } else {\n if (itemUrl !== undefined) {\n source.onSelect({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n props.navigator.navigate({\n itemUrl,\n item,\n state: store.getState(),\n });\n\n return;\n }\n\n onInput({\n event,\n nextState: { isOpen: false },\n props,\n query: itemInputValue,\n refresh,\n store,\n ...setters,\n }).then(() => {\n source.onSelect({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n });\n }\n }\n}\n","import { onInput } from './onInput';\nimport { onKeyDown } from './onKeyDown';\nimport {\n AutocompleteScopeApi,\n AutocompleteStore,\n BaseItem,\n GetEnvironmentProps,\n GetFormProps,\n GetInputProps,\n GetItemProps,\n GetLabelProps,\n GetListProps,\n GetPanelProps,\n GetRootProps,\n InternalAutocompleteOptions,\n} from './types';\nimport { getActiveItem, isOrContainsNode } from './utils';\n\ninterface GetPropGettersOptions<TItem extends BaseItem>\n extends AutocompleteScopeApi<TItem> {\n store: AutocompleteStore<TItem>;\n props: InternalAutocompleteOptions<TItem>;\n}\n\nexport function getPropGetters<\n TItem extends BaseItem,\n TEvent,\n TMouseEvent,\n TKeyboardEvent\n>({ props, refresh, store, ...setters }: GetPropGettersOptions<TItem>) {\n const getEnvironmentProps: GetEnvironmentProps = (providedProps) => {\n const { inputElement, formElement, panelElement, ...rest } = providedProps;\n\n return {\n // On touch devices, we do not rely on the native `blur` event of the\n // input to close the panel, but rather on a custom `touchstart` event\n // outside of the autocomplete elements.\n // This ensures a working experience on mobile because we blur the input\n // on touch devices when the user starts scrolling (`touchmove`).\n onTouchStart(event) {\n if (\n store.getState().isOpen === false ||\n event.target === inputElement\n ) {\n return;\n }\n\n // @TODO: support cases where there are multiple Autocomplete instances.\n // Right now, a second instance makes this computation return false.\n const isTargetWithinAutocomplete = [formElement, panelElement].some(\n (contextNode) => {\n return (\n isOrContainsNode(contextNode, event.target as Node) ||\n isOrContainsNode(\n contextNode,\n props.environment.document.activeElement!\n )\n );\n }\n );\n\n if (isTargetWithinAutocomplete === false) {\n store.dispatch('blur', null);\n }\n },\n // When scrolling on touch devices (mobiles, tablets, etc.), we want to\n // mimic the native platform behavior where the input is blurred to\n // hide the virtual keyboard. This gives more vertical space to\n // discover all the suggestions showing up in the panel.\n onTouchMove(event: TouchEvent) {\n if (\n store.getState().isOpen === false ||\n inputElement !== props.environment.document.activeElement ||\n event.target === inputElement\n ) {\n return;\n }\n\n inputElement.blur();\n },\n ...rest,\n };\n };\n\n const getRootProps: GetRootProps = (rest) => {\n return {\n role: 'combobox',\n 'aria-expanded': store.getState().isOpen,\n 'aria-haspopup': 'listbox',\n 'aria-owns': store.getState().isOpen ? `${props.id}-list` : undefined,\n 'aria-labelledby': `${props.id}-label`,\n ...rest,\n };\n };\n\n const getFormProps: GetFormProps<TEvent> = (providedProps) => {\n const { inputElement, ...rest } = providedProps;\n\n return {\n action: '',\n noValidate: true,\n role: 'search',\n onSubmit: (event) => {\n ((event as unknown) as Event).preventDefault();\n\n props.onSubmit({\n event,\n refresh,\n state: store.getState(),\n ...setters,\n });\n\n store.dispatch('submit', null);\n providedProps.inputElement?.blur();\n },\n onReset: (event) => {\n ((event as unknown) as Event).preventDefault();\n\n props.onReset({\n event,\n refresh,\n state: store.getState(),\n ...setters,\n });\n\n store.dispatch('reset', null);\n providedProps.inputElement?.focus();\n },\n ...rest,\n };\n };\n\n const getInputProps: GetInputProps<TEvent, TMouseEvent, TKeyboardEvent> = (\n providedProps\n ) => {\n function onFocus(event: TEvent) {\n // We want to trigger a query when `openOnFocus` is true\n // because the panel should open with the current query.\n if (props.openOnFocus || Boolean(store.getState().query)) {\n onInput({\n event,\n props,\n query: store.getState().completion || store.getState().query,\n refresh,\n store,\n ...setters,\n });\n }\n\n store.dispatch('focus', null);\n }\n\n const isTouchDevice = 'ontouchstart' in props.environment;\n const { inputElement, maxLength = 512, ...rest } = providedProps || {};\n const activeItem = getActiveItem(store.getState());\n\n return {\n 'aria-autocomplete': 'both',\n 'aria-activedescendant':\n store.getState().isOpen && store.getState().activeItemId !== null\n ? `${props.id}-item-${store.getState().activeItemId}`\n : undefined,\n 'aria-controls': store.getState().isOpen ? `${props.id}-list` : undefined,\n 'aria-labelledby': `${props.id}-label`,\n value: store.getState().completion || store.getState().query,\n id: `${props.id}-input`,\n autoComplete: 'off',\n autoCorrect: 'off',\n autoCapitalize: 'off',\n enterKeyHint: activeItem?.itemUrl ? 'go' : 'search',\n spellCheck: 'false',\n autoFocus: props.autoFocus,\n placeholder: props.placeholder,\n maxLength,\n type: 'search',\n onChange: (event) => {\n onInput({\n event,\n props,\n query: (((event as unknown) as Event)\n .currentTarget as HTMLInputElement).value.slice(0, maxLength),\n refresh,\n store,\n ...setters,\n });\n },\n onKeyDown: (event) => {\n onKeyDown({\n event: (event as unknown) as KeyboardEvent,\n props,\n refresh,\n store,\n ...setters,\n });\n },\n onFocus,\n onBlur: () => {\n // We do rely on the `blur` event on touch devices.\n // See explanation in `onTouchStart`.\n if (!isTouchDevice) {\n store.dispatch('blur', null);\n }\n },\n onClick: (event) => {\n // When the panel is closed and you click on the input while\n // the input is focused, the `onFocus` event is not triggered\n // (default browser behavior).\n // In an autocomplete context, it makes sense to open the panel in this\n // case.\n // We mimic this event by catching the `onClick` event which\n // triggers the `onFocus` for the panel to open.\n if (\n providedProps.inputElement ===\n props.environment.document.activeElement &&\n !store.getState().isOpen\n ) {\n onFocus((event as unknown) as TEvent);\n }\n },\n ...rest,\n };\n };\n\n const getLabelProps: GetLabelProps = (rest) => {\n return {\n htmlFor: `${props.id}-input`,\n id: `${props.id}-label`,\n ...rest,\n };\n };\n\n const getListProps: GetListProps = (rest) => {\n return {\n role: 'listbox',\n 'aria-labelledby': `${props.id}-label`,\n id: `${props.id}-list`,\n ...rest,\n };\n };\n\n const getPanelProps: GetPanelProps<TMouseEvent> = (rest) => {\n return {\n onMouseDown(event) {\n // Prevents the `activeElement` from being changed to the panel so\n // that the blur event is not triggered, otherwise it closes the\n // panel.\n ((event as unknown) as MouseEvent).preventDefault();\n },\n onMouseLeave() {\n store.dispatch('mouseleave', null);\n },\n ...rest,\n };\n };\n\n const getItemProps: GetItemProps<any, TMouseEvent> = (providedProps) => {\n const { item, source, ...rest } = providedProps;\n\n return {\n id: `${props.id}-item-${item.__autocomplete_id}`,\n role: 'option',\n 'aria-selected': store.getState().activeItemId === item.__autocomplete_id,\n onMouseMove(event) {\n if (item.__autocomplete_id === store.getState().activeItemId) {\n return;\n }\n\n store.dispatch('mousemove', item.__autocomplete_id);\n\n const activeItem = getActiveItem(store.getState());\n\n if (store.getState().activeItemId !== null && activeItem) {\n const { item, itemInputValue, itemUrl, source } = activeItem;\n\n source.onActive({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n }\n },\n onMouseDown(event) {\n // Prevents the `activeElement` from being changed to the item so it\n // can remain with the current `activeElement`.\n ((event as unknown) as MouseEvent).preventDefault();\n },\n onClick(event) {\n const itemInputValue = source.getItemInputValue({\n item,\n state: store.getState(),\n });\n const itemUrl = source.getItemUrl({\n item,\n state: store.getState(),\n });\n\n // If `getItemUrl` is provided, it means that the suggestion\n // is a link, not plain text that aims at updating the query.\n // We can therefore skip the state change because it will update\n // the `activeItemId`, resulting in a UI flash, especially\n // noticeable on mobile.\n const runPreCommand = itemUrl\n ? Promise.resolve()\n : onInput({\n event,\n nextState: { isOpen: false },\n props,\n query: itemInputValue,\n refresh,\n store,\n ...setters,\n });\n\n runPreCommand.then(() => {\n source.onSelect({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n });\n },\n ...rest,\n };\n };\n\n return {\n getEnvironmentProps,\n getRootProps,\n getFormProps,\n getLabelProps,\n getInputProps,\n getPanelProps,\n getListProps,\n getItemProps,\n };\n}\n","import { AutocompleteState, BaseItem } from './types';\nimport { getActiveItem } from './utils';\n\ninterface GetCompletionProps<TItem extends BaseItem> {\n state: AutocompleteState<TItem>;\n}\n\nexport function getCompletion<TItem extends BaseItem>({\n state,\n}: GetCompletionProps<TItem>): string | null {\n if (state.isOpen === false || state.activeItemId === null) {\n return null;\n }\n\n const { itemInputValue } = getActiveItem(state)!;\n\n return itemInputValue || null;\n}\n","import { getItemsCount, invariant } from '@algolia/autocomplete-shared';\n\nimport { getCompletion } from './getCompletion';\nimport { Reducer } from './types';\nimport { getNextActiveItemId } from './utils';\n\nexport const stateReducer: Reducer = (state, action) => {\n switch (action.type) {\n case 'setActiveItemId': {\n return {\n ...state,\n activeItemId: action.payload,\n };\n }\n\n case 'setQuery': {\n return {\n ...state,\n query: action.payload,\n completion: null,\n };\n }\n\n case 'setCollections': {\n return {\n ...state,\n collections: action.payload,\n };\n }\n\n case 'setIsOpen': {\n return {\n ...state,\n isOpen: action.payload,\n };\n }\n\n case 'setStatus': {\n return {\n ...state,\n status: action.payload,\n };\n }\n\n case 'setContext': {\n return {\n ...state,\n context: {\n ...state.context,\n ...action.payload,\n },\n };\n }\n\n case 'ArrowDown': {\n const nextState = {\n ...state,\n activeItemId: getNextActiveItemId(\n 1,\n state.activeItemId,\n getItemsCount(state),\n action.props.defaultActiveItemId\n ),\n };\n\n return {\n ...nextState,\n completion: getCompletion({ state: nextState }),\n };\n }\n\n case 'ArrowUp': {\n const nextState = {\n ...state,\n activeItemId: getNextActiveItemId(\n -1,\n state.activeItemId,\n getItemsCount(state),\n action.props.defaultActiveItemId\n ),\n };\n\n return {\n ...nextState,\n completion: getCompletion({ state: nextState }),\n };\n }\n\n case 'Escape': {\n if (state.isOpen) {\n return {\n ...state,\n isOpen: false,\n completion: null,\n };\n }\n\n return {\n ...state,\n query: '',\n status: 'idle',\n collections: [],\n };\n }\n\n case 'submit': {\n return {\n ...state,\n activeItemId: null,\n isOpen: false,\n status: 'idle',\n };\n }\n\n case 'reset': {\n return {\n ...state,\n activeItemId:\n // Since we open the panel on reset when openOnFocus=true\n // we need to restore the highlighted index to the defaultActiveItemId. (DocSearch use-case)\n\n // Since we close the panel when openOnFocus=false\n // we lose track of the highlighted index. (Query-suggestions use-case)\n action.props.openOnFocus === true\n ? action.props.defaultActiveItemId\n : null,\n status: 'idle',\n query: '',\n };\n }\n\n case 'focus': {\n return {\n ...state,\n activeItemId: action.props.defaultActiveItemId,\n isOpen:\n (action.props.openOnFocus || Boolean(state.query)) &&\n action.props.shouldPanelOpen({ state }),\n };\n }\n\n case 'blur': {\n if (action.props.debug) {\n return state;\n }\n\n return {\n ...state,\n isOpen: false,\n activeItemId: null,\n };\n }\n\n case 'mousemove': {\n return {\n ...state,\n activeItemId: action.payload,\n };\n }\n\n case 'mouseleave': {\n return {\n ...state,\n activeItemId: action.props.defaultActiveItemId,\n };\n }\n\n default:\n invariant(\n false,\n `The reducer action ${JSON.stringify(action.type)} is not supported.`\n );\n\n return state;\n }\n};\n","import { checkOptions } from './checkOptions';\nimport { createStore } from './createStore';\nimport { getAutocompleteSetters } from './getAutocompleteSetters';\nimport { getDefaultProps } from './getDefaultProps';\nimport { getPropGetters } from './getPropGetters';\nimport { onInput } from './onInput';\nimport { stateReducer } from './stateReducer';\nimport {\n AutocompleteApi,\n AutocompleteOptions,\n BaseItem,\n AutocompleteSubscribers,\n} from './types';\n\nexport function createAutocomplete<\n TItem extends BaseItem,\n TEvent = Event,\n TMouseEvent = MouseEvent,\n TKeyboardEvent = KeyboardEvent\n>(\n options: AutocompleteOptions<TItem>\n): AutocompleteApi<TItem, TEvent, TMouseEvent, TKeyboardEvent> {\n checkOptions(options);\n\n const subscribers: AutocompleteSubscribers<TItem> = [];\n const props = getDefaultProps(options, subscribers);\n const store = createStore(stateReducer, props, onStoreStateChange);\n\n const setters = getAutocompleteSetters({ store });\n const propGetters = getPropGetters<\n TItem,\n TEvent,\n TMouseEvent,\n TKeyboardEvent\n >({ props, refresh, store, ...setters });\n\n function onStoreStateChange({ prevState, state }) {\n props.onStateChange({ prevState, state, refresh, ...setters });\n }\n\n function refresh() {\n return onInput({\n event: new Event('input'),\n nextState: { isOpen: store.getState().isOpen },\n props,\n query: store.getState().query,\n refresh,\n store,\n ...setters,\n });\n }\n\n props.plugins.forEach((plugin) =>\n plugin.subscribe?.({\n ...setters,\n refresh,\n onSelect(fn) {\n subscribers.push({ onSelect: fn });\n },\n onActive(fn) {\n subscribers.push({ onActive: fn });\n },\n })\n );\n\n return {\n refresh,\n ...propGetters,\n ...setters,\n };\n}\n","export const version = '1.0.0-alpha.44';\n"],"names":["getItemsCount","state","collections","length","reduce","sum","collection","items","invariant","condition","message","Error","concat","warnCache","current","warn","sanitizedMessage","trim","hasAlreadyPrinted","console","checkOptions","options","process","debug","createStore","reducer","props","onStoreStateChange","initialState","getState","dispatch","action","payload","prevState","type","flatten","values","a","b","autocompleteId","generateAutocompleteId","getNextActiveItemId","moveAmount","baseIndex","itemCount","defaultActiveItemId","numericIndex","noop","getNormalizedSources","getSources","params","Promise","resolve","then","sources","Array","isArray","JSON","stringify","all","filter","maybeSource","Boolean","map","source","sourceId","normalizedSource","getItemInputValue","query","getItemUrl","undefined","onSelect","setIsOpen","onActive","getCollectionFromActiveItemId","accumulatedCollectionsCount","acc","collectionsCount","index","previousValue","nextValue","push","collectionIndex","activeItemId","getRelativeActiveItemId","isOffsetFound","counter","previousItemsOffset","currentCollection","getActiveItem","item","itemInputValue","itemUrl","isOrContainsNode","parent","child","contains","getAutocompleteSetters","store","setActiveItemId","value","setQuery","setCollections","rawValue","baseItemId","__autocomplete_id","setStatus","setContext","getDefaultProps","pluginSubscribers","environment","window","plugins","openOnFocus","placeholder","autoFocus","stallThreshold","shouldPanelOpen","id","completion","isOpen","status","context","onStateChange","forEach","x","onSubmit","onReset","plugin","nested","navigator","navigate","location","assign","navigateNewTab","windowReference","open","focus","navigateNewWindow","lastStalledId","onInput","event","nextState","refresh","setters","clearTimeout","setTimeout","getItems","isPanelOpen","highlightedItem","finally","onKeyDown","key","preventDefault","nodeItem","document","getElementById","scrollIntoViewIfNeeded","scrollIntoView","every","metaKey","ctrlKey","shiftKey","altKey","getPropGetters","getEnvironmentProps","providedProps","inputElement","formElement","panelElement","rest","onTouchStart","target","isTargetWithinAutocomplete","some","contextNode","activeElement","onTouchMove","blur","getRootProps","role","getFormProps","noValidate","getInputProps","onFocus","isTouchDevice","maxLength","activeItem","autoComplete","autoCorrect","autoCapitalize","enterKeyHint","spellCheck","onChange","currentTarget","slice","onBlur","onClick","getLabelProps","htmlFor","getListProps","getPanelProps","onMouseDown","onMouseLeave","getItemProps","onMouseMove","runPreCommand","getCompletion","stateReducer","createAutocomplete","subscribers","propGetters","Event","subscribe","fn","version"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- /*! @algolia/autocomplete-core 1.0.0-alpha.43 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete */
2
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@algolia/autocomplete-core"]={})}(this,(function(e){"use strict";function t(e){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function n(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?r(Object(o),!0).forEach((function(t){n(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):r(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function i(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function a(e){return function(e){if(Array.isArray(e))return u(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return u(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return u(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function c(e){return 0===e.collections.length?0:e.collections.reduce((function(e,t){return e+t.items.length}),0)}function l(e){return e.reduce((function(e,t){return e.concat(t)}),[])}var s=0;function p(e,t,n,r){if(e<0&&(null===t||null!==r&&0===t))return n+e;var o=(null===t?-1:t)+e;return o<=-1||o>=n?null===r?null:0:o}var f=function(){};function m(e){var t=function(e){var t=e.collections.map((function(e){return e.items.length})).reduce((function(e,t,n){var r=(e[n-1]||0)+t;return e.push(r),e}),[]).reduce((function(t,n){return n<=e.activeItemId?t+1:t}),0);return e.collections[t]}(e);if(!t)return null;var n=t.items[function(e){for(var t=e.state,n=e.collection,r=!1,o=0,i=0;!1===r;){var a=t.collections[o];if(a===n){r=!0;break}i+=a.items.length,o++}return t.activeItemId-i}({state:e,collection:t})],r=t.source;return{item:n,itemInputValue:r.getItemInputValue({item:n,state:e}),itemUrl:r.getItemUrl({item:n,state:e}),source:r}}function v(e,t){return e===t||e.contains(t)}function d(e,n){var r,i="undefined"!=typeof window?window:{},u=e.plugins||[];return o(o({debug:!1,openOnFocus:!1,placeholder:"",autoFocus:!1,defaultActiveItemId:null,stallThreshold:300,environment:i,shouldPanelOpen:function(e){return c(e.state)>0}},e),{},{id:null!==(r=e.id)&&void 0!==r?r:"autocomplete-".concat(s++),plugins:u,initialState:o({activeItemId:null,query:"",completion:null,collections:[],isOpen:!1,status:"idle",context:{}},e.initialState),onStateChange:function(t){var n;null===(n=e.onStateChange)||void 0===n||n.call(e,t),u.forEach((function(e){var n;return null===(n=e.onStateChange)||void 0===n?void 0:n.call(e,t)}))},onSubmit:function(t){var n;null===(n=e.onSubmit)||void 0===n||n.call(e,t),u.forEach((function(e){var n;return null===(n=e.onSubmit)||void 0===n?void 0:n.call(e,t)}))},onReset:function(t){var n;null===(n=e.onReset)||void 0===n||n.call(e,t),u.forEach((function(e){var n;return null===(n=e.onReset)||void 0===n?void 0:n.call(e,t)}))},getSources:function(r){return Promise.all([].concat(a(u.map((function(e){return e.getSources}))),[e.getSources]).filter(Boolean).map((function(e){return function(e,n){return Promise.resolve(e(n)).then((function(e){return Array.isArray(e),"The `getSources` function must return an array of sources but returned type ".concat(JSON.stringify(t(e)),":\n\n").concat(JSON.stringify(e,null,2)),Promise.all(e.filter((function(e){return Boolean(e)})).map((function(e){e.sourceId;var t=o({getItemInputValue:function(e){return e.state.query},getItemUrl:function(){},onSelect:function(e){(0,e.setIsOpen)(!1)},onActive:f},e);return Promise.resolve(t)})))}))}(e,r)}))).then((function(e){return l(e)})).then((function(e){return e.map((function(e){return o(o({},e),{},{onSelect:function(t){e.onSelect(t),n.forEach((function(e){var n;return null===(n=e.onSelect)||void 0===n?void 0:n.call(e,t)}))},onActive:function(t){e.onActive(t),n.forEach((function(e){var n;return null===(n=e.onActive)||void 0===n?void 0:n.call(e,t)}))}})}))}))},navigator:o({navigate:function(e){var t=e.itemUrl;i.location.assign(t)},navigateNewTab:function(e){var t=e.itemUrl,n=i.open(t,"_blank","noopener");null==n||n.focus()},navigateNewWindow:function(e){var t=e.itemUrl;i.open(t,"_blank","noopener")}},e.navigator)})}var g=null;function y(e){var n=e.event,r=e.nextState,a=void 0===r?{}:r,u=e.props,c=e.query,l=e.refresh,s=e.store,p=i(e,["event","nextState","props","query","refresh","store"]);g&&u.environment.clearTimeout(g);var f,v=p.setCollections,d=p.setIsOpen,y=p.setQuery,h=p.setActiveItemId,I=p.setStatus;return y(c),h(u.defaultActiveItemId),c||!1!==u.openOnFocus?(I("loading"),g=u.environment.setTimeout((function(){I("stalled")}),u.stallThreshold),u.getSources(o({query:c,refresh:l,state:s.getState()},p)).then((function(e){return I("loading"),Promise.all(e.map((function(e){return Promise.resolve(e.getItems(o({query:c,refresh:l,state:s.getState()},p))).then((function(n){return Array.isArray(n),"The `getItems` function must return an array of items but returned type ".concat(JSON.stringify(t(n)),":\n\n").concat(JSON.stringify(n,null,2)),{source:e,items:n}}))}))).then((function(e){var t;I("idle"),v(e);var r=u.shouldPanelOpen({state:s.getState()});d(null!==(t=a.isOpen)&&void 0!==t?t:u.openOnFocus&&!c&&r||r);var i=m(s.getState());if(null!==s.getState().activeItemId&&i){var f=i.item,g=i.itemInputValue,y=i.itemUrl,h=i.source;h.onActive(o({event:n,item:f,itemInputValue:g,itemUrl:y,refresh:l,source:h,state:s.getState()},p))}})).finally((function(){g&&u.environment.clearTimeout(g)}))}))):(I("idle"),v(s.getState().collections.map((function(e){return o(o({},e),{},{items:[]})}))),d(null!==(f=a.isOpen)&&void 0!==f?f:u.shouldPanelOpen({state:s.getState()})),Promise.resolve())}function h(e){var t=e.props,n=e.refresh,r=e.store,a=i(e,["props","refresh","store"]);return{getEnvironmentProps:function(e){var n=e.inputElement,a=e.formElement,u=e.panelElement;return o({onTouchStart:function(e){!1!==r.getState().isOpen&&e.target!==n&&(!1===[a,u].some((function(n){return v(n,e.target)||v(n,t.environment.document.activeElement)}))&&r.dispatch("blur",null))},onTouchMove:function(e){!1!==r.getState().isOpen&&n===t.environment.document.activeElement&&e.target!==n&&n.blur()}},i(e,["inputElement","formElement","panelElement"]))},getRootProps:function(e){return o({role:"combobox","aria-expanded":r.getState().isOpen,"aria-haspopup":"listbox","aria-owns":r.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label")},e)},getFormProps:function(e){e.inputElement;return o({action:"",noValidate:!0,role:"search",onSubmit:function(i){var u;i.preventDefault(),t.onSubmit(o({event:i,refresh:n,state:r.getState()},a)),r.dispatch("submit",null),null===(u=e.inputElement)||void 0===u||u.blur()},onReset:function(i){var u;i.preventDefault(),t.onReset(o({event:i,refresh:n,state:r.getState()},a)),r.dispatch("reset",null),null===(u=e.inputElement)||void 0===u||u.focus()}},i(e,["inputElement"]))},getLabelProps:function(e){return o({htmlFor:"".concat(t.id,"-input"),id:"".concat(t.id,"-label")},e)},getInputProps:function(e){function u(e){(t.openOnFocus||Boolean(r.getState().query))&&y(o({event:e,props:t,query:r.getState().completion||r.getState().query,refresh:n,store:r},a)),r.dispatch("focus",null)}var c="ontouchstart"in t.environment,l=e||{},s=(l.inputElement,l.maxLength),p=void 0===s?512:s,f=i(l,["inputElement","maxLength"]),v=m(r.getState());return o({"aria-autocomplete":"both","aria-activedescendant":r.getState().isOpen&&null!==r.getState().activeItemId?"".concat(t.id,"-item-").concat(r.getState().activeItemId):void 0,"aria-controls":r.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label"),value:r.getState().completion||r.getState().query,id:"".concat(t.id,"-input"),autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",enterKeyHint:null!=v&&v.itemUrl?"go":"search",spellCheck:"false",autoFocus:t.autoFocus,placeholder:t.placeholder,maxLength:p,type:"search",onChange:function(e){y(o({event:e,props:t,query:e.currentTarget.value.slice(0,p),refresh:n,store:r},a))},onKeyDown:function(e){!function(e){var t=e.event,n=e.props,r=e.refresh,a=e.store,u=i(e,["event","props","refresh","store"]);if("ArrowUp"===t.key||"ArrowDown"===t.key){t.preventDefault(),a.dispatch(t.key,null);var c=n.environment.document.getElementById("".concat(n.id,"-item-").concat(a.getState().activeItemId));c&&(c.scrollIntoViewIfNeeded?c.scrollIntoViewIfNeeded(!1):c.scrollIntoView(!1));var l=m(a.getState());if(null!==a.getState().activeItemId&&l){var s=l.item,p=l.itemInputValue,f=l.itemUrl,v=l.source;v.onActive(o({event:t,item:s,itemInputValue:p,itemUrl:f,refresh:r,source:v,state:a.getState()},u))}}else if("Escape"===t.key)t.preventDefault(),a.dispatch(t.key,null);else if("Enter"===t.key){if(null===a.getState().activeItemId||a.getState().collections.every((function(e){return 0===e.items.length})))return;t.preventDefault();var d=m(a.getState()),g=d.item,h=d.itemInputValue,I=d.itemUrl,S=d.source;if(t.metaKey||t.ctrlKey)void 0!==I&&(S.onSelect(o({event:t,item:g,itemInputValue:h,itemUrl:I,refresh:r,source:S,state:a.getState()},u)),n.navigator.navigateNewTab({itemUrl:I,item:g,state:a.getState()}));else if(t.shiftKey)void 0!==I&&(S.onSelect(o({event:t,item:g,itemInputValue:h,itemUrl:I,refresh:r,source:S,state:a.getState()},u)),n.navigator.navigateNewWindow({itemUrl:I,item:g,state:a.getState()}));else if(t.altKey);else{if(void 0!==I)return S.onSelect(o({event:t,item:g,itemInputValue:h,itemUrl:I,refresh:r,source:S,state:a.getState()},u)),void n.navigator.navigate({itemUrl:I,item:g,state:a.getState()});y(o({event:t,nextState:{isOpen:!1},props:n,query:h,refresh:r,store:a},u)).then((function(){S.onSelect(o({event:t,item:g,itemInputValue:h,itemUrl:I,refresh:r,source:S,state:a.getState()},u))}))}}}(o({event:e,props:t,refresh:n,store:r},a))},onFocus:u,onBlur:function(){c||r.dispatch("blur",null)},onClick:function(n){e.inputElement!==t.environment.document.activeElement||r.getState().isOpen||u(n)}},f)},getPanelProps:function(e){return o({onMouseDown:function(e){e.preventDefault()},onMouseLeave:function(){r.dispatch("mouseleave",null)}},e)},getListProps:function(e){return o({role:"listbox","aria-labelledby":"".concat(t.id,"-label"),id:"".concat(t.id,"-list")},e)},getItemProps:function(e){var u=e.item,c=e.source,l=i(e,["item","source"]);return o({id:"".concat(t.id,"-item-").concat(u.__autocomplete_id),role:"option","aria-selected":r.getState().activeItemId===u.__autocomplete_id,onMouseMove:function(e){if(u.__autocomplete_id!==r.getState().activeItemId){r.dispatch("mousemove",u.__autocomplete_id);var t=m(r.getState());if(null!==r.getState().activeItemId&&t){var i=t.item,c=t.itemInputValue,l=t.itemUrl,s=t.source;s.onActive(o({event:e,item:i,itemInputValue:c,itemUrl:l,refresh:n,source:s,state:r.getState()},a))}}},onMouseDown:function(e){e.preventDefault()},onClick:function(e){var i=c.getItemInputValue({item:u,state:r.getState()}),l=c.getItemUrl({item:u,state:r.getState()});(l?Promise.resolve():y(o({event:e,nextState:{isOpen:!1},props:t,query:i,refresh:n,store:r},a))).then((function(){c.onSelect(o({event:e,item:u,itemInputValue:i,itemUrl:l,refresh:n,source:c,state:r.getState()},a))}))}},l)}}}function I(e){var t=e.state;return!1===t.isOpen||null===t.activeItemId?null:m(t).itemInputValue||null}var S=function(e,t){switch(t.type){case"setActiveItemId":return o(o({},e),{},{activeItemId:t.payload});case"setQuery":return o(o({},e),{},{query:t.payload,completion:null});case"setCollections":return o(o({},e),{},{collections:t.payload});case"setIsOpen":return o(o({},e),{},{isOpen:t.payload});case"setStatus":return o(o({},e),{},{status:t.payload});case"setContext":return o(o({},e),{},{context:o(o({},e.context),t.payload)});case"ArrowDown":var n=o(o({},e),{},{activeItemId:p(1,e.activeItemId,c(e),t.props.defaultActiveItemId)});return o(o({},n),{},{completion:I({state:n})});case"ArrowUp":var r=o(o({},e),{},{activeItemId:p(-1,e.activeItemId,c(e),t.props.defaultActiveItemId)});return o(o({},r),{},{completion:I({state:r})});case"Escape":return e.isOpen?o(o({},e),{},{isOpen:!1,completion:null}):o(o({},e),{},{query:"",status:"idle",collections:[]});case"submit":return o(o({},e),{},{activeItemId:null,isOpen:!1,status:"idle"});case"reset":return o(o({},e),{},{activeItemId:!0===t.props.openOnFocus?t.props.defaultActiveItemId:null,status:"idle",query:""});case"focus":return o(o({},e),{},{activeItemId:t.props.defaultActiveItemId,isOpen:t.props.openOnFocus||Boolean(e.query)});case"blur":return t.props.debug?e:o(o({},e),{},{isOpen:!1,activeItemId:null});case"mousemove":return o(o({},e),{},{activeItemId:t.payload});case"mouseleave":return o(o({},e),{},{activeItemId:t.props.defaultActiveItemId});default:return"The reducer action ".concat(JSON.stringify(t.type)," is not supported."),e}};e.createAutocomplete=function(e){var t=[],n=d(e,t),r=function(e,t,n){var r=t.initialState;return{getState:function(){return r},dispatch:function(i,a){var u=o({},r);r=e(r,{type:i,props:t,payload:a}),n({state:r,prevState:u})}}}(S,n,(function(e){var t=e.prevState,r=e.state;n.onStateChange(o({prevState:t,state:r,refresh:u},i))})),i=function(e){var t=e.store;return{setActiveItemId:function(e){t.dispatch("setActiveItemId",e)},setQuery:function(e){t.dispatch("setQuery",e)},setCollections:function(e){var n=0,r=e.map((function(e){return o(o({},e),{},{items:l(e.items).map((function(e){return o(o({},e),{},{__autocomplete_id:n++})}))})}));t.dispatch("setCollections",r)},setIsOpen:function(e){t.dispatch("setIsOpen",e)},setStatus:function(e){t.dispatch("setStatus",e)},setContext:function(e){t.dispatch("setContext",e)}}}({store:r}),a=h(o({props:n,refresh:u,store:r},i));function u(){return y(o({event:new Event("input"),nextState:{isOpen:r.getState().isOpen},props:n,query:r.getState().query,refresh:u,store:r},i))}return n.plugins.forEach((function(e){var n;return null===(n=e.subscribe)||void 0===n?void 0:n.call(e,o(o({},i),{},{refresh:u,onSelect:function(e){t.push({onSelect:e})},onActive:function(e){t.push({onActive:e})}}))})),o(o({refresh:u},a),i)},e.getDefaultProps=d,e.version="1.0.0-alpha.43",Object.defineProperty(e,"__esModule",{value:!0})}));
1
+ /*! @algolia/autocomplete-core 1.0.0-alpha.44 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete */
2
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@algolia/autocomplete-core"]={})}(this,(function(e){"use strict";function t(e){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function n(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?r(Object(o),!0).forEach((function(t){n(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):r(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function i(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function a(e){return function(e){if(Array.isArray(e))return u(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return u(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return u(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function c(e){return 0===e.collections.length?0:e.collections.reduce((function(e,t){return e+t.items.length}),0)}function l(e){return e.reduce((function(e,t){return e.concat(t)}),[])}var s=0;function p(e,t,n,r){if(e<0&&(null===t||null!==r&&0===t))return n+e;var o=(null===t?-1:t)+e;return o<=-1||o>=n?null===r?null:0:o}var f=function(){};function m(e){var t=function(e){var t=e.collections.map((function(e){return e.items.length})).reduce((function(e,t,n){var r=(e[n-1]||0)+t;return e.push(r),e}),[]).reduce((function(t,n){return n<=e.activeItemId?t+1:t}),0);return e.collections[t]}(e);if(!t)return null;var n=t.items[function(e){for(var t=e.state,n=e.collection,r=!1,o=0,i=0;!1===r;){var a=t.collections[o];if(a===n){r=!0;break}i+=a.items.length,o++}return t.activeItemId-i}({state:e,collection:t})],r=t.source;return{item:n,itemInputValue:r.getItemInputValue({item:n,state:e}),itemUrl:r.getItemUrl({item:n,state:e}),source:r}}function v(e,t){return e===t||e.contains(t)}function d(e,n){var r,i="undefined"!=typeof window?window:{},u=e.plugins||[];return o(o({debug:!1,openOnFocus:!1,placeholder:"",autoFocus:!1,defaultActiveItemId:null,stallThreshold:300,environment:i,shouldPanelOpen:function(e){return c(e.state)>0}},e),{},{id:null!==(r=e.id)&&void 0!==r?r:"autocomplete-".concat(s++),plugins:u,initialState:o({activeItemId:null,query:"",completion:null,collections:[],isOpen:!1,status:"idle",context:{}},e.initialState),onStateChange:function(t){var n;null===(n=e.onStateChange)||void 0===n||n.call(e,t),u.forEach((function(e){var n;return null===(n=e.onStateChange)||void 0===n?void 0:n.call(e,t)}))},onSubmit:function(t){var n;null===(n=e.onSubmit)||void 0===n||n.call(e,t),u.forEach((function(e){var n;return null===(n=e.onSubmit)||void 0===n?void 0:n.call(e,t)}))},onReset:function(t){var n;null===(n=e.onReset)||void 0===n||n.call(e,t),u.forEach((function(e){var n;return null===(n=e.onReset)||void 0===n?void 0:n.call(e,t)}))},getSources:function(r){return Promise.all([].concat(a(u.map((function(e){return e.getSources}))),[e.getSources]).filter(Boolean).map((function(e){return function(e,n){return Promise.resolve(e(n)).then((function(e){return Array.isArray(e),"The `getSources` function must return an array of sources but returned type ".concat(JSON.stringify(t(e)),":\n\n").concat(JSON.stringify(e,null,2)),Promise.all(e.filter((function(e){return Boolean(e)})).map((function(e){e.sourceId;var t=o({getItemInputValue:function(e){return e.state.query},getItemUrl:function(){},onSelect:function(e){(0,e.setIsOpen)(!1)},onActive:f},e);return Promise.resolve(t)})))}))}(e,r)}))).then((function(e){return l(e)})).then((function(e){return e.map((function(e){return o(o({},e),{},{onSelect:function(t){e.onSelect(t),n.forEach((function(e){var n;return null===(n=e.onSelect)||void 0===n?void 0:n.call(e,t)}))},onActive:function(t){e.onActive(t),n.forEach((function(e){var n;return null===(n=e.onActive)||void 0===n?void 0:n.call(e,t)}))}})}))}))},navigator:o({navigate:function(e){var t=e.itemUrl;i.location.assign(t)},navigateNewTab:function(e){var t=e.itemUrl,n=i.open(t,"_blank","noopener");null==n||n.focus()},navigateNewWindow:function(e){var t=e.itemUrl;i.open(t,"_blank","noopener")}},e.navigator)})}var g=null;function y(e){var n=e.event,r=e.nextState,a=void 0===r?{}:r,u=e.props,c=e.query,l=e.refresh,s=e.store,p=i(e,["event","nextState","props","query","refresh","store"]);g&&u.environment.clearTimeout(g);var f,v=p.setCollections,d=p.setIsOpen,y=p.setQuery,h=p.setActiveItemId,I=p.setStatus;return y(c),h(u.defaultActiveItemId),c||!1!==u.openOnFocus?(I("loading"),g=u.environment.setTimeout((function(){I("stalled")}),u.stallThreshold),u.getSources(o({query:c,refresh:l,state:s.getState()},p)).then((function(e){return I("loading"),Promise.all(e.map((function(e){return Promise.resolve(e.getItems(o({query:c,refresh:l,state:s.getState()},p))).then((function(n){return Array.isArray(n),"The `getItems` function must return an array of items but returned type ".concat(JSON.stringify(t(n)),":\n\n").concat(JSON.stringify(n,null,2)),{source:e,items:n}}))}))).then((function(e){var t;I("idle"),v(e);var r=u.shouldPanelOpen({state:s.getState()});d(null!==(t=a.isOpen)&&void 0!==t?t:u.openOnFocus&&!c&&r||r);var i=m(s.getState());if(null!==s.getState().activeItemId&&i){var f=i.item,g=i.itemInputValue,y=i.itemUrl,h=i.source;h.onActive(o({event:n,item:f,itemInputValue:g,itemUrl:y,refresh:l,source:h,state:s.getState()},p))}})).finally((function(){g&&u.environment.clearTimeout(g)}))}))):(I("idle"),v(s.getState().collections.map((function(e){return o(o({},e),{},{items:[]})}))),d(null!==(f=a.isOpen)&&void 0!==f?f:u.shouldPanelOpen({state:s.getState()})),Promise.resolve())}function h(e){var t=e.props,n=e.refresh,r=e.store,a=i(e,["props","refresh","store"]);return{getEnvironmentProps:function(e){var n=e.inputElement,a=e.formElement,u=e.panelElement;return o({onTouchStart:function(e){!1!==r.getState().isOpen&&e.target!==n&&(!1===[a,u].some((function(n){return v(n,e.target)||v(n,t.environment.document.activeElement)}))&&r.dispatch("blur",null))},onTouchMove:function(e){!1!==r.getState().isOpen&&n===t.environment.document.activeElement&&e.target!==n&&n.blur()}},i(e,["inputElement","formElement","panelElement"]))},getRootProps:function(e){return o({role:"combobox","aria-expanded":r.getState().isOpen,"aria-haspopup":"listbox","aria-owns":r.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label")},e)},getFormProps:function(e){e.inputElement;return o({action:"",noValidate:!0,role:"search",onSubmit:function(i){var u;i.preventDefault(),t.onSubmit(o({event:i,refresh:n,state:r.getState()},a)),r.dispatch("submit",null),null===(u=e.inputElement)||void 0===u||u.blur()},onReset:function(i){var u;i.preventDefault(),t.onReset(o({event:i,refresh:n,state:r.getState()},a)),r.dispatch("reset",null),null===(u=e.inputElement)||void 0===u||u.focus()}},i(e,["inputElement"]))},getLabelProps:function(e){return o({htmlFor:"".concat(t.id,"-input"),id:"".concat(t.id,"-label")},e)},getInputProps:function(e){function u(e){(t.openOnFocus||Boolean(r.getState().query))&&y(o({event:e,props:t,query:r.getState().completion||r.getState().query,refresh:n,store:r},a)),r.dispatch("focus",null)}var c="ontouchstart"in t.environment,l=e||{},s=(l.inputElement,l.maxLength),p=void 0===s?512:s,f=i(l,["inputElement","maxLength"]),v=m(r.getState());return o({"aria-autocomplete":"both","aria-activedescendant":r.getState().isOpen&&null!==r.getState().activeItemId?"".concat(t.id,"-item-").concat(r.getState().activeItemId):void 0,"aria-controls":r.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label"),value:r.getState().completion||r.getState().query,id:"".concat(t.id,"-input"),autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",enterKeyHint:null!=v&&v.itemUrl?"go":"search",spellCheck:"false",autoFocus:t.autoFocus,placeholder:t.placeholder,maxLength:p,type:"search",onChange:function(e){y(o({event:e,props:t,query:e.currentTarget.value.slice(0,p),refresh:n,store:r},a))},onKeyDown:function(e){!function(e){var t=e.event,n=e.props,r=e.refresh,a=e.store,u=i(e,["event","props","refresh","store"]);if("ArrowUp"===t.key||"ArrowDown"===t.key){t.preventDefault(),a.dispatch(t.key,null);var c=n.environment.document.getElementById("".concat(n.id,"-item-").concat(a.getState().activeItemId));c&&(c.scrollIntoViewIfNeeded?c.scrollIntoViewIfNeeded(!1):c.scrollIntoView(!1));var l=m(a.getState());if(null!==a.getState().activeItemId&&l){var s=l.item,p=l.itemInputValue,f=l.itemUrl,v=l.source;v.onActive(o({event:t,item:s,itemInputValue:p,itemUrl:f,refresh:r,source:v,state:a.getState()},u))}}else if("Escape"===t.key)t.preventDefault(),a.dispatch(t.key,null);else if("Enter"===t.key){if(null===a.getState().activeItemId||a.getState().collections.every((function(e){return 0===e.items.length})))return;t.preventDefault();var d=m(a.getState()),g=d.item,h=d.itemInputValue,I=d.itemUrl,S=d.source;if(t.metaKey||t.ctrlKey)void 0!==I&&(S.onSelect(o({event:t,item:g,itemInputValue:h,itemUrl:I,refresh:r,source:S,state:a.getState()},u)),n.navigator.navigateNewTab({itemUrl:I,item:g,state:a.getState()}));else if(t.shiftKey)void 0!==I&&(S.onSelect(o({event:t,item:g,itemInputValue:h,itemUrl:I,refresh:r,source:S,state:a.getState()},u)),n.navigator.navigateNewWindow({itemUrl:I,item:g,state:a.getState()}));else if(t.altKey);else{if(void 0!==I)return S.onSelect(o({event:t,item:g,itemInputValue:h,itemUrl:I,refresh:r,source:S,state:a.getState()},u)),void n.navigator.navigate({itemUrl:I,item:g,state:a.getState()});y(o({event:t,nextState:{isOpen:!1},props:n,query:h,refresh:r,store:a},u)).then((function(){S.onSelect(o({event:t,item:g,itemInputValue:h,itemUrl:I,refresh:r,source:S,state:a.getState()},u))}))}}}(o({event:e,props:t,refresh:n,store:r},a))},onFocus:u,onBlur:function(){c||r.dispatch("blur",null)},onClick:function(n){e.inputElement!==t.environment.document.activeElement||r.getState().isOpen||u(n)}},f)},getPanelProps:function(e){return o({onMouseDown:function(e){e.preventDefault()},onMouseLeave:function(){r.dispatch("mouseleave",null)}},e)},getListProps:function(e){return o({role:"listbox","aria-labelledby":"".concat(t.id,"-label"),id:"".concat(t.id,"-list")},e)},getItemProps:function(e){var u=e.item,c=e.source,l=i(e,["item","source"]);return o({id:"".concat(t.id,"-item-").concat(u.__autocomplete_id),role:"option","aria-selected":r.getState().activeItemId===u.__autocomplete_id,onMouseMove:function(e){if(u.__autocomplete_id!==r.getState().activeItemId){r.dispatch("mousemove",u.__autocomplete_id);var t=m(r.getState());if(null!==r.getState().activeItemId&&t){var i=t.item,c=t.itemInputValue,l=t.itemUrl,s=t.source;s.onActive(o({event:e,item:i,itemInputValue:c,itemUrl:l,refresh:n,source:s,state:r.getState()},a))}}},onMouseDown:function(e){e.preventDefault()},onClick:function(e){var i=c.getItemInputValue({item:u,state:r.getState()}),l=c.getItemUrl({item:u,state:r.getState()});(l?Promise.resolve():y(o({event:e,nextState:{isOpen:!1},props:t,query:i,refresh:n,store:r},a))).then((function(){c.onSelect(o({event:e,item:u,itemInputValue:i,itemUrl:l,refresh:n,source:c,state:r.getState()},a))}))}},l)}}}function I(e){var t=e.state;return!1===t.isOpen||null===t.activeItemId?null:m(t).itemInputValue||null}var S=function(e,t){switch(t.type){case"setActiveItemId":return o(o({},e),{},{activeItemId:t.payload});case"setQuery":return o(o({},e),{},{query:t.payload,completion:null});case"setCollections":return o(o({},e),{},{collections:t.payload});case"setIsOpen":return o(o({},e),{},{isOpen:t.payload});case"setStatus":return o(o({},e),{},{status:t.payload});case"setContext":return o(o({},e),{},{context:o(o({},e.context),t.payload)});case"ArrowDown":var n=o(o({},e),{},{activeItemId:p(1,e.activeItemId,c(e),t.props.defaultActiveItemId)});return o(o({},n),{},{completion:I({state:n})});case"ArrowUp":var r=o(o({},e),{},{activeItemId:p(-1,e.activeItemId,c(e),t.props.defaultActiveItemId)});return o(o({},r),{},{completion:I({state:r})});case"Escape":return e.isOpen?o(o({},e),{},{isOpen:!1,completion:null}):o(o({},e),{},{query:"",status:"idle",collections:[]});case"submit":return o(o({},e),{},{activeItemId:null,isOpen:!1,status:"idle"});case"reset":return o(o({},e),{},{activeItemId:!0===t.props.openOnFocus?t.props.defaultActiveItemId:null,status:"idle",query:""});case"focus":return o(o({},e),{},{activeItemId:t.props.defaultActiveItemId,isOpen:(t.props.openOnFocus||Boolean(e.query))&&t.props.shouldPanelOpen({state:e})});case"blur":return t.props.debug?e:o(o({},e),{},{isOpen:!1,activeItemId:null});case"mousemove":return o(o({},e),{},{activeItemId:t.payload});case"mouseleave":return o(o({},e),{},{activeItemId:t.props.defaultActiveItemId});default:return"The reducer action ".concat(JSON.stringify(t.type)," is not supported."),e}};e.createAutocomplete=function(e){var t=[],n=d(e,t),r=function(e,t,n){var r=t.initialState;return{getState:function(){return r},dispatch:function(i,a){var u=o({},r);r=e(r,{type:i,props:t,payload:a}),n({state:r,prevState:u})}}}(S,n,(function(e){var t=e.prevState,r=e.state;n.onStateChange(o({prevState:t,state:r,refresh:u},i))})),i=function(e){var t=e.store;return{setActiveItemId:function(e){t.dispatch("setActiveItemId",e)},setQuery:function(e){t.dispatch("setQuery",e)},setCollections:function(e){var n=0,r=e.map((function(e){return o(o({},e),{},{items:l(e.items).map((function(e){return o(o({},e),{},{__autocomplete_id:n++})}))})}));t.dispatch("setCollections",r)},setIsOpen:function(e){t.dispatch("setIsOpen",e)},setStatus:function(e){t.dispatch("setStatus",e)},setContext:function(e){t.dispatch("setContext",e)}}}({store:r}),a=h(o({props:n,refresh:u,store:r},i));function u(){return y(o({event:new Event("input"),nextState:{isOpen:r.getState().isOpen},props:n,query:r.getState().query,refresh:u,store:r},i))}return n.plugins.forEach((function(e){var n;return null===(n=e.subscribe)||void 0===n?void 0:n.call(e,o(o({},i),{},{refresh:u,onSelect:function(e){t.push({onSelect:e})},onActive:function(e){t.push({onActive:e})}}))})),o(o({refresh:u},a),i)},e.getDefaultProps=d,e.version="1.0.0-alpha.44",Object.defineProperty(e,"__esModule",{value:!0})}));
3
3
  //# sourceMappingURL=index.production.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.production.js","sources":["../../../autocomplete-shared/dist/esm/getItemsCount.js","../../src/utils/flatten.ts","../../src/utils/generateAutocompleteId.ts","../../src/utils/getNextActiveItemId.ts","../../src/utils/noop.ts","../../src/utils/getActiveItem.ts","../../src/utils/isOrContainsNode.ts","../../src/getDefaultProps.ts","../../src/utils/getNormalizedSources.ts","../../src/onInput.ts","../../src/getPropGetters.ts","../../src/onKeyDown.ts","../../src/getCompletion.ts","../../src/stateReducer.ts","../../src/createAutocomplete.ts","../../src/createStore.ts","../../src/getAutocompleteSetters.ts","../../src/version.ts"],"sourcesContent":["export function getItemsCount(state) {\n if (state.collections.length === 0) {\n return 0;\n }\n\n return state.collections.reduce(function (sum, collection) {\n return sum + collection.items.length;\n }, 0);\n}","export function flatten<TType>(values: Array<TType | TType[]>): TType[] {\n return values.reduce<TType[]>((a, b) => {\n return a.concat(b);\n }, []);\n}\n","let autocompleteId = 0;\n\nexport function generateAutocompleteId() {\n return `autocomplete-${autocompleteId++}`;\n}\n","/**\n * Returns the next active item ID from the current state.\n *\n * We allow circular keyboard navigation from the base index.\n * The base index can either be `null` (nothing is highlighted) or `0`\n * (the first item is highlighted).\n * The base index is allowed to get assigned `null` only if\n * `props.defaultActiveItemId` is `null`. This pattern allows to \"stop\"\n * by the actual query before navigating to other suggestions as seen on\n * Google or Amazon.\n *\n * @param moveAmount The offset to increment (or decrement) the last index\n * @param baseIndex The current index to compute the next index from\n * @param itemCount The number of items\n * @param defaultActiveItemId The default active index to fallback to\n */\nexport function getNextActiveItemId(\n moveAmount: number,\n baseIndex: number | null,\n itemCount: number,\n defaultActiveItemId: number | null\n): number | null {\n if (\n moveAmount < 0 &&\n (baseIndex === null || (defaultActiveItemId !== null && baseIndex === 0))\n ) {\n return itemCount + moveAmount;\n }\n\n const numericIndex = (baseIndex === null ? -1 : baseIndex) + moveAmount;\n\n if (numericIndex <= -1 || numericIndex >= itemCount) {\n return defaultActiveItemId === null ? null : 0;\n }\n\n return numericIndex;\n}\n","export const noop = () => {};\n","import { AutocompleteCollection, AutocompleteState, BaseItem } from '../types';\n\n// We don't have access to the autocomplete source when we call `onKeyDown`\n// or `onClick` because those are native browser events.\n// However, we can get the source from the suggestion index.\nfunction getCollectionFromActiveItemId<TItem extends BaseItem>(\n state: AutocompleteState<TItem>\n): AutocompleteCollection<TItem> | undefined {\n // Given 3 sources with respectively 1, 2 and 3 suggestions: [1, 2, 3]\n // We want to get the accumulated counts:\n // [1, 1 + 2, 1 + 2 + 3] = [1, 3, 3 + 3] = [1, 3, 6]\n const accumulatedCollectionsCount = state.collections\n .map((collections) => collections.items.length)\n .reduce<number[]>((acc, collectionsCount, index) => {\n const previousValue = acc[index - 1] || 0;\n const nextValue = previousValue + collectionsCount;\n\n acc.push(nextValue);\n\n return acc;\n }, []);\n\n // Based on the accumulated counts, we can infer the index of the suggestion.\n const collectionIndex = accumulatedCollectionsCount.reduce((acc, current) => {\n if (current <= state.activeItemId!) {\n return acc + 1;\n }\n\n return acc;\n }, 0);\n\n return state.collections[collectionIndex];\n}\n\n/**\n * Gets the highlighted index relative to a suggestion object (not the absolute\n * highlighted index).\n *\n * Example:\n * [['a', 'b'], ['c', 'd', 'e'], ['f']]\n * ↑\n * (absolute: 3, relative: 1)\n */\nfunction getRelativeActiveItemId<TItem extends BaseItem>({\n state,\n collection,\n}: {\n state: AutocompleteState<TItem>;\n collection: AutocompleteCollection<TItem>;\n}): number {\n let isOffsetFound = false;\n let counter = 0;\n let previousItemsOffset = 0;\n\n while (isOffsetFound === false) {\n const currentCollection = state.collections[counter];\n\n if (currentCollection === collection) {\n isOffsetFound = true;\n break;\n }\n\n previousItemsOffset += currentCollection.items.length;\n\n counter++;\n }\n\n return state.activeItemId! - previousItemsOffset;\n}\n\nexport function getActiveItem<TItem extends BaseItem>(\n state: AutocompleteState<TItem>\n) {\n const collection = getCollectionFromActiveItemId(state);\n\n if (!collection) {\n return null;\n }\n\n const item = collection.items[getRelativeActiveItemId({ state, collection })];\n const source = collection.source;\n const itemInputValue = source.getItemInputValue({ item, state });\n const itemUrl = source.getItemUrl({ item, state });\n\n return {\n item,\n itemInputValue,\n itemUrl,\n source,\n };\n}\n","export function isOrContainsNode(parent: Node, child: Node) {\n return parent === child || parent.contains(child);\n}\n","import { getItemsCount } from '@algolia/autocomplete-shared';\n\nimport {\n AutocompleteEnvironment,\n AutocompleteOptions,\n AutocompleteSubscribers,\n BaseItem,\n InternalAutocompleteOptions,\n} from './types';\nimport { generateAutocompleteId, getNormalizedSources, flatten } from './utils';\n\nexport function getDefaultProps<TItem extends BaseItem>(\n props: AutocompleteOptions<TItem>,\n pluginSubscribers: AutocompleteSubscribers<TItem>\n): InternalAutocompleteOptions<TItem> {\n const environment: AutocompleteEnvironment = (typeof window !== 'undefined'\n ? window\n : {}) as typeof window;\n const plugins = props.plugins || [];\n\n return {\n debug: false,\n openOnFocus: false,\n placeholder: '',\n autoFocus: false,\n defaultActiveItemId: null,\n stallThreshold: 300,\n environment,\n shouldPanelOpen: ({ state }) => getItemsCount(state) > 0,\n ...props,\n // Since `generateAutocompleteId` triggers a side effect (it increments\n // and internal counter), we don't want to execute it if unnecessary.\n id: props.id ?? generateAutocompleteId(),\n plugins,\n // The following props need to be deeply defaulted.\n initialState: {\n activeItemId: null,\n query: '',\n completion: null,\n collections: [],\n isOpen: false,\n status: 'idle',\n context: {},\n ...props.initialState,\n },\n onStateChange(params) {\n props.onStateChange?.(params);\n plugins.forEach((x) => x.onStateChange?.(params));\n },\n onSubmit(params) {\n props.onSubmit?.(params);\n plugins.forEach((x) => x.onSubmit?.(params));\n },\n onReset(params) {\n props.onReset?.(params);\n plugins.forEach((x) => x.onReset?.(params));\n },\n getSources(params) {\n return Promise.all(\n [...plugins.map((plugin) => plugin.getSources), props.getSources]\n .filter(Boolean)\n .map((getSources) => getNormalizedSources(getSources!, params))\n )\n .then((nested) => flatten(nested))\n .then((sources) =>\n sources.map((source) => ({\n ...source,\n onSelect(params) {\n source.onSelect(params);\n pluginSubscribers.forEach((x) => x.onSelect?.(params));\n },\n onActive(params) {\n source.onActive(params);\n pluginSubscribers.forEach((x) => x.onActive?.(params));\n },\n }))\n );\n },\n navigator: {\n navigate({ itemUrl }) {\n environment.location.assign(itemUrl);\n },\n navigateNewTab({ itemUrl }) {\n const windowReference = environment.open(itemUrl, '_blank', 'noopener');\n windowReference?.focus();\n },\n navigateNewWindow({ itemUrl }) {\n environment.open(itemUrl, '_blank', 'noopener');\n },\n ...props.navigator,\n },\n };\n}\n","import { invariant } from '@algolia/autocomplete-shared';\n\nimport {\n AutocompleteSource,\n BaseItem,\n GetSources,\n GetSourcesParams,\n InternalAutocompleteSource,\n InternalGetSources,\n} from '../types';\n\nimport { noop } from './noop';\n\nexport function getNormalizedSources<TItem extends BaseItem>(\n getSources: GetSources<TItem>,\n params: GetSourcesParams<TItem>\n): ReturnType<InternalGetSources<TItem>> {\n return Promise.resolve(getSources(params)).then((sources) => {\n invariant(\n Array.isArray(sources),\n `The \\`getSources\\` function must return an array of sources but returned type ${JSON.stringify(\n typeof sources\n )}:\\n\\n${JSON.stringify(sources, null, 2)}`\n );\n\n return Promise.all(\n sources\n // We allow `undefined` and `false` sources to allow users to use\n // `Boolean(query) && source` (=> `false`).\n // We need to remove these values at this point.\n .filter((maybeSource: any): maybeSource is AutocompleteSource<TItem> =>\n Boolean(maybeSource)\n )\n .map((source) => {\n invariant(\n typeof source.sourceId === 'string',\n 'A source must provide a `sourceId` string.'\n );\n\n const normalizedSource: InternalAutocompleteSource<TItem> = {\n getItemInputValue({ state }) {\n return state.query;\n },\n getItemUrl() {\n return undefined;\n },\n onSelect({ setIsOpen }) {\n setIsOpen(false);\n },\n onActive: noop,\n ...source,\n };\n\n return Promise.resolve(normalizedSource);\n })\n );\n });\n}\n","import { invariant } from '@algolia/autocomplete-shared';\n\nimport {\n AutocompleteScopeApi,\n AutocompleteState,\n AutocompleteStore,\n BaseItem,\n InternalAutocompleteOptions,\n} from './types';\nimport { getActiveItem } from './utils';\n\nlet lastStalledId: number | null = null;\n\ninterface OnInputParams<TItem extends BaseItem>\n extends AutocompleteScopeApi<TItem> {\n event: any;\n /**\n * The next partial state to apply after the function is called.\n *\n * This is useful when we call `onInput` in a different scenario than an\n * actual input. For example, we use `onInput` when we click on an item,\n * but we want to close the panel in that case.\n */\n nextState?: Partial<AutocompleteState<TItem>>;\n props: InternalAutocompleteOptions<TItem>;\n query: string;\n store: AutocompleteStore<TItem>;\n}\n\nexport function onInput<TItem extends BaseItem>({\n event,\n nextState = {},\n props,\n query,\n refresh,\n store,\n ...setters\n}: OnInputParams<TItem>): Promise<void> {\n if (lastStalledId) {\n props.environment.clearTimeout(lastStalledId);\n }\n\n const {\n setCollections,\n setIsOpen,\n setQuery,\n setActiveItemId,\n setStatus,\n } = setters;\n\n setQuery(query);\n setActiveItemId(props.defaultActiveItemId);\n\n if (!query && props.openOnFocus === false) {\n setStatus('idle');\n setCollections(\n store.getState().collections.map((collection) => ({\n ...collection,\n items: [],\n }))\n );\n setIsOpen(\n nextState.isOpen ?? props.shouldPanelOpen({ state: store.getState() })\n );\n\n return Promise.resolve();\n }\n\n setStatus('loading');\n\n lastStalledId = props.environment.setTimeout(() => {\n setStatus('stalled');\n }, props.stallThreshold);\n\n return props\n .getSources({\n query,\n refresh,\n state: store.getState(),\n ...setters,\n })\n .then((sources) => {\n setStatus('loading');\n\n // @TODO: convert `Promise.all` to fetching strategy.\n return Promise.all(\n sources.map((source) => {\n return Promise.resolve(\n source.getItems({\n query,\n refresh,\n state: store.getState(),\n ...setters,\n })\n ).then((items) => {\n invariant(\n Array.isArray(items),\n `The \\`getItems\\` function must return an array of items but returned type ${JSON.stringify(\n typeof items\n )}:\\n\\n${JSON.stringify(items, null, 2)}`\n );\n\n return { source, items };\n });\n })\n )\n .then((collections) => {\n setStatus('idle');\n setCollections(collections as any);\n const isPanelOpen = props.shouldPanelOpen({\n state: store.getState(),\n });\n setIsOpen(\n nextState.isOpen ??\n ((props.openOnFocus && !query && isPanelOpen) || isPanelOpen)\n );\n\n const highlightedItem = getActiveItem(store.getState());\n\n if (store.getState().activeItemId !== null && highlightedItem) {\n const { item, itemInputValue, itemUrl, source } = highlightedItem;\n\n source.onActive({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n }\n })\n .finally(() => {\n if (lastStalledId) {\n props.environment.clearTimeout(lastStalledId);\n }\n });\n });\n}\n","import { onInput } from './onInput';\nimport { onKeyDown } from './onKeyDown';\nimport {\n AutocompleteScopeApi,\n AutocompleteStore,\n BaseItem,\n GetEnvironmentProps,\n GetFormProps,\n GetInputProps,\n GetItemProps,\n GetLabelProps,\n GetListProps,\n GetPanelProps,\n GetRootProps,\n InternalAutocompleteOptions,\n} from './types';\nimport { getActiveItem, isOrContainsNode } from './utils';\n\ninterface GetPropGettersOptions<TItem extends BaseItem>\n extends AutocompleteScopeApi<TItem> {\n store: AutocompleteStore<TItem>;\n props: InternalAutocompleteOptions<TItem>;\n}\n\nexport function getPropGetters<\n TItem extends BaseItem,\n TEvent,\n TMouseEvent,\n TKeyboardEvent\n>({ props, refresh, store, ...setters }: GetPropGettersOptions<TItem>) {\n const getEnvironmentProps: GetEnvironmentProps = (providedProps) => {\n const { inputElement, formElement, panelElement, ...rest } = providedProps;\n\n return {\n // On touch devices, we do not rely on the native `blur` event of the\n // input to close the panel, but rather on a custom `touchstart` event\n // outside of the autocomplete elements.\n // This ensures a working experience on mobile because we blur the input\n // on touch devices when the user starts scrolling (`touchmove`).\n onTouchStart(event) {\n if (\n store.getState().isOpen === false ||\n event.target === inputElement\n ) {\n return;\n }\n\n // @TODO: support cases where there are multiple Autocomplete instances.\n // Right now, a second instance makes this computation return false.\n const isTargetWithinAutocomplete = [formElement, panelElement].some(\n (contextNode) => {\n return (\n isOrContainsNode(contextNode, event.target as Node) ||\n isOrContainsNode(\n contextNode,\n props.environment.document.activeElement!\n )\n );\n }\n );\n\n if (isTargetWithinAutocomplete === false) {\n store.dispatch('blur', null);\n }\n },\n // When scrolling on touch devices (mobiles, tablets, etc.), we want to\n // mimic the native platform behavior where the input is blurred to\n // hide the virtual keyboard. This gives more vertical space to\n // discover all the suggestions showing up in the panel.\n onTouchMove(event: TouchEvent) {\n if (\n store.getState().isOpen === false ||\n inputElement !== props.environment.document.activeElement ||\n event.target === inputElement\n ) {\n return;\n }\n\n inputElement.blur();\n },\n ...rest,\n };\n };\n\n const getRootProps: GetRootProps = (rest) => {\n return {\n role: 'combobox',\n 'aria-expanded': store.getState().isOpen,\n 'aria-haspopup': 'listbox',\n 'aria-owns': store.getState().isOpen ? `${props.id}-list` : undefined,\n 'aria-labelledby': `${props.id}-label`,\n ...rest,\n };\n };\n\n const getFormProps: GetFormProps<TEvent> = (providedProps) => {\n const { inputElement, ...rest } = providedProps;\n\n return {\n action: '',\n noValidate: true,\n role: 'search',\n onSubmit: (event) => {\n ((event as unknown) as Event).preventDefault();\n\n props.onSubmit({\n event,\n refresh,\n state: store.getState(),\n ...setters,\n });\n\n store.dispatch('submit', null);\n providedProps.inputElement?.blur();\n },\n onReset: (event) => {\n ((event as unknown) as Event).preventDefault();\n\n props.onReset({\n event,\n refresh,\n state: store.getState(),\n ...setters,\n });\n\n store.dispatch('reset', null);\n providedProps.inputElement?.focus();\n },\n ...rest,\n };\n };\n\n const getInputProps: GetInputProps<TEvent, TMouseEvent, TKeyboardEvent> = (\n providedProps\n ) => {\n function onFocus(event: TEvent) {\n // We want to trigger a query when `openOnFocus` is true\n // because the panel should open with the current query.\n if (props.openOnFocus || Boolean(store.getState().query)) {\n onInput({\n event,\n props,\n query: store.getState().completion || store.getState().query,\n refresh,\n store,\n ...setters,\n });\n }\n\n store.dispatch('focus', null);\n }\n\n const isTouchDevice = 'ontouchstart' in props.environment;\n const { inputElement, maxLength = 512, ...rest } = providedProps || {};\n const activeItem = getActiveItem(store.getState());\n\n return {\n 'aria-autocomplete': 'both',\n 'aria-activedescendant':\n store.getState().isOpen && store.getState().activeItemId !== null\n ? `${props.id}-item-${store.getState().activeItemId}`\n : undefined,\n 'aria-controls': store.getState().isOpen ? `${props.id}-list` : undefined,\n 'aria-labelledby': `${props.id}-label`,\n value: store.getState().completion || store.getState().query,\n id: `${props.id}-input`,\n autoComplete: 'off',\n autoCorrect: 'off',\n autoCapitalize: 'off',\n enterKeyHint: activeItem?.itemUrl ? 'go' : 'search',\n spellCheck: 'false',\n autoFocus: props.autoFocus,\n placeholder: props.placeholder,\n maxLength,\n type: 'search',\n onChange: (event) => {\n onInput({\n event,\n props,\n query: (((event as unknown) as Event)\n .currentTarget as HTMLInputElement).value.slice(0, maxLength),\n refresh,\n store,\n ...setters,\n });\n },\n onKeyDown: (event) => {\n onKeyDown({\n event: (event as unknown) as KeyboardEvent,\n props,\n refresh,\n store,\n ...setters,\n });\n },\n onFocus,\n onBlur: () => {\n // We do rely on the `blur` event on touch devices.\n // See explanation in `onTouchStart`.\n if (!isTouchDevice) {\n store.dispatch('blur', null);\n }\n },\n onClick: (event) => {\n // When the panel is closed and you click on the input while\n // the input is focused, the `onFocus` event is not triggered\n // (default browser behavior).\n // In an autocomplete context, it makes sense to open the panel in this\n // case.\n // We mimic this event by catching the `onClick` event which\n // triggers the `onFocus` for the panel to open.\n if (\n providedProps.inputElement ===\n props.environment.document.activeElement &&\n !store.getState().isOpen\n ) {\n onFocus((event as unknown) as TEvent);\n }\n },\n ...rest,\n };\n };\n\n const getLabelProps: GetLabelProps = (rest) => {\n return {\n htmlFor: `${props.id}-input`,\n id: `${props.id}-label`,\n ...rest,\n };\n };\n\n const getListProps: GetListProps = (rest) => {\n return {\n role: 'listbox',\n 'aria-labelledby': `${props.id}-label`,\n id: `${props.id}-list`,\n ...rest,\n };\n };\n\n const getPanelProps: GetPanelProps<TMouseEvent> = (rest) => {\n return {\n onMouseDown(event) {\n // Prevents the `activeElement` from being changed to the panel so\n // that the blur event is not triggered, otherwise it closes the\n // panel.\n ((event as unknown) as MouseEvent).preventDefault();\n },\n onMouseLeave() {\n store.dispatch('mouseleave', null);\n },\n ...rest,\n };\n };\n\n const getItemProps: GetItemProps<any, TMouseEvent> = (providedProps) => {\n const { item, source, ...rest } = providedProps;\n\n return {\n id: `${props.id}-item-${item.__autocomplete_id}`,\n role: 'option',\n 'aria-selected': store.getState().activeItemId === item.__autocomplete_id,\n onMouseMove(event) {\n if (item.__autocomplete_id === store.getState().activeItemId) {\n return;\n }\n\n store.dispatch('mousemove', item.__autocomplete_id);\n\n const activeItem = getActiveItem(store.getState());\n\n if (store.getState().activeItemId !== null && activeItem) {\n const { item, itemInputValue, itemUrl, source } = activeItem;\n\n source.onActive({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n }\n },\n onMouseDown(event) {\n // Prevents the `activeElement` from being changed to the item so it\n // can remain with the current `activeElement`.\n ((event as unknown) as MouseEvent).preventDefault();\n },\n onClick(event) {\n const itemInputValue = source.getItemInputValue({\n item,\n state: store.getState(),\n });\n const itemUrl = source.getItemUrl({\n item,\n state: store.getState(),\n });\n\n // If `getItemUrl` is provided, it means that the suggestion\n // is a link, not plain text that aims at updating the query.\n // We can therefore skip the state change because it will update\n // the `activeItemId`, resulting in a UI flash, especially\n // noticeable on mobile.\n const runPreCommand = itemUrl\n ? Promise.resolve()\n : onInput({\n event,\n nextState: { isOpen: false },\n props,\n query: itemInputValue,\n refresh,\n store,\n ...setters,\n });\n\n runPreCommand.then(() => {\n source.onSelect({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n });\n },\n ...rest,\n };\n };\n\n return {\n getEnvironmentProps,\n getRootProps,\n getFormProps,\n getLabelProps,\n getInputProps,\n getPanelProps,\n getListProps,\n getItemProps,\n };\n}\n","import { onInput } from './onInput';\nimport {\n AutocompleteScopeApi,\n AutocompleteStore,\n BaseItem,\n InternalAutocompleteOptions,\n} from './types';\nimport { getActiveItem } from './utils';\n\ninterface OnKeyDownOptions<TItem extends BaseItem>\n extends AutocompleteScopeApi<TItem> {\n event: KeyboardEvent;\n props: InternalAutocompleteOptions<TItem>;\n store: AutocompleteStore<TItem>;\n}\n\nexport function onKeyDown<TItem extends BaseItem>({\n event,\n props,\n refresh,\n store,\n ...setters\n}: OnKeyDownOptions<TItem>): void {\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\n // Default browser behavior changes the caret placement on ArrowUp and\n // Arrow down.\n event.preventDefault();\n\n store.dispatch(event.key, null);\n\n const nodeItem = props.environment.document.getElementById(\n `${props.id}-item-${store.getState().activeItemId}`\n );\n\n if (nodeItem) {\n if ((nodeItem as any).scrollIntoViewIfNeeded) {\n (nodeItem as any).scrollIntoViewIfNeeded(false);\n } else {\n nodeItem.scrollIntoView(false);\n }\n }\n\n const highlightedItem = getActiveItem(store.getState());\n\n if (store.getState().activeItemId !== null && highlightedItem) {\n const { item, itemInputValue, itemUrl, source } = highlightedItem;\n\n source.onActive({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n }\n } else if (event.key === 'Escape') {\n // This prevents the default browser behavior on `input[type=\"search\"]`\n // from removing the query right away because we first want to close the\n // panel.\n event.preventDefault();\n\n store.dispatch(event.key, null);\n } else if (event.key === 'Enter') {\n // No active item, so we let the browser handle the native `onSubmit` form\n // event.\n if (\n store.getState().activeItemId === null ||\n store\n .getState()\n .collections.every((collection) => collection.items.length === 0)\n ) {\n return;\n }\n\n // This prevents the `onSubmit` event to be sent because an item is\n // highlighted.\n event.preventDefault();\n\n const { item, itemInputValue, itemUrl, source } = getActiveItem(\n store.getState()\n )!;\n\n if (event.metaKey || event.ctrlKey) {\n if (itemUrl !== undefined) {\n source.onSelect({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n props.navigator.navigateNewTab({\n itemUrl,\n item,\n state: store.getState(),\n });\n }\n } else if (event.shiftKey) {\n if (itemUrl !== undefined) {\n source.onSelect({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n props.navigator.navigateNewWindow({\n itemUrl,\n item,\n state: store.getState(),\n });\n }\n } else if (event.altKey) {\n // Keep native browser behavior\n } else {\n if (itemUrl !== undefined) {\n source.onSelect({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n props.navigator.navigate({\n itemUrl,\n item,\n state: store.getState(),\n });\n\n return;\n }\n\n onInput({\n event,\n nextState: { isOpen: false },\n props,\n query: itemInputValue,\n refresh,\n store,\n ...setters,\n }).then(() => {\n source.onSelect({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n });\n }\n }\n}\n","import { AutocompleteState, BaseItem } from './types';\nimport { getActiveItem } from './utils';\n\ninterface GetCompletionProps<TItem extends BaseItem> {\n state: AutocompleteState<TItem>;\n}\n\nexport function getCompletion<TItem extends BaseItem>({\n state,\n}: GetCompletionProps<TItem>): string | null {\n if (state.isOpen === false || state.activeItemId === null) {\n return null;\n }\n\n const { itemInputValue } = getActiveItem(state)!;\n\n return itemInputValue || null;\n}\n","import { getItemsCount, invariant } from '@algolia/autocomplete-shared';\n\nimport { getCompletion } from './getCompletion';\nimport { Reducer } from './types';\nimport { getNextActiveItemId } from './utils';\n\nexport const stateReducer: Reducer = (state, action) => {\n switch (action.type) {\n case 'setActiveItemId': {\n return {\n ...state,\n activeItemId: action.payload,\n };\n }\n\n case 'setQuery': {\n return {\n ...state,\n query: action.payload,\n completion: null,\n };\n }\n\n case 'setCollections': {\n return {\n ...state,\n collections: action.payload,\n };\n }\n\n case 'setIsOpen': {\n return {\n ...state,\n isOpen: action.payload,\n };\n }\n\n case 'setStatus': {\n return {\n ...state,\n status: action.payload,\n };\n }\n\n case 'setContext': {\n return {\n ...state,\n context: {\n ...state.context,\n ...action.payload,\n },\n };\n }\n\n case 'ArrowDown': {\n const nextState = {\n ...state,\n activeItemId: getNextActiveItemId(\n 1,\n state.activeItemId,\n getItemsCount(state),\n action.props.defaultActiveItemId\n ),\n };\n\n return {\n ...nextState,\n completion: getCompletion({ state: nextState }),\n };\n }\n\n case 'ArrowUp': {\n const nextState = {\n ...state,\n activeItemId: getNextActiveItemId(\n -1,\n state.activeItemId,\n getItemsCount(state),\n action.props.defaultActiveItemId\n ),\n };\n\n return {\n ...nextState,\n completion: getCompletion({ state: nextState }),\n };\n }\n\n case 'Escape': {\n if (state.isOpen) {\n return {\n ...state,\n isOpen: false,\n completion: null,\n };\n }\n\n return {\n ...state,\n query: '',\n status: 'idle',\n collections: [],\n };\n }\n\n case 'submit': {\n return {\n ...state,\n activeItemId: null,\n isOpen: false,\n status: 'idle',\n };\n }\n\n case 'reset': {\n return {\n ...state,\n activeItemId:\n // Since we open the panel on reset when openOnFocus=true\n // we need to restore the highlighted index to the defaultActiveItemId. (DocSearch use-case)\n\n // Since we close the panel when openOnFocus=false\n // we lose track of the highlighted index. (Query-suggestions use-case)\n action.props.openOnFocus === true\n ? action.props.defaultActiveItemId\n : null,\n status: 'idle',\n query: '',\n };\n }\n\n case 'focus': {\n return {\n ...state,\n activeItemId: action.props.defaultActiveItemId,\n isOpen: action.props.openOnFocus || Boolean(state.query),\n };\n }\n\n case 'blur': {\n if (action.props.debug) {\n return state;\n }\n\n return {\n ...state,\n isOpen: false,\n activeItemId: null,\n };\n }\n\n case 'mousemove': {\n return {\n ...state,\n activeItemId: action.payload,\n };\n }\n\n case 'mouseleave': {\n return {\n ...state,\n activeItemId: action.props.defaultActiveItemId,\n };\n }\n\n default:\n invariant(\n false,\n `The reducer action ${JSON.stringify(action.type)} is not supported.`\n );\n\n return state;\n }\n};\n","import { checkOptions } from './checkOptions';\nimport { createStore } from './createStore';\nimport { getAutocompleteSetters } from './getAutocompleteSetters';\nimport { getDefaultProps } from './getDefaultProps';\nimport { getPropGetters } from './getPropGetters';\nimport { onInput } from './onInput';\nimport { stateReducer } from './stateReducer';\nimport {\n AutocompleteApi,\n AutocompleteOptions,\n BaseItem,\n AutocompleteSubscribers,\n} from './types';\n\nexport function createAutocomplete<\n TItem extends BaseItem,\n TEvent = Event,\n TMouseEvent = MouseEvent,\n TKeyboardEvent = KeyboardEvent\n>(\n options: AutocompleteOptions<TItem>\n): AutocompleteApi<TItem, TEvent, TMouseEvent, TKeyboardEvent> {\n checkOptions(options);\n\n const subscribers: AutocompleteSubscribers<TItem> = [];\n const props = getDefaultProps(options, subscribers);\n const store = createStore(stateReducer, props, onStoreStateChange);\n\n const setters = getAutocompleteSetters({ store });\n const propGetters = getPropGetters<\n TItem,\n TEvent,\n TMouseEvent,\n TKeyboardEvent\n >({ props, refresh, store, ...setters });\n\n function onStoreStateChange({ prevState, state }) {\n props.onStateChange({ prevState, state, refresh, ...setters });\n }\n\n function refresh() {\n return onInput({\n event: new Event('input'),\n nextState: { isOpen: store.getState().isOpen },\n props,\n query: store.getState().query,\n refresh,\n store,\n ...setters,\n });\n }\n\n props.plugins.forEach((plugin) =>\n plugin.subscribe?.({\n ...setters,\n refresh,\n onSelect(fn) {\n subscribers.push({ onSelect: fn });\n },\n onActive(fn) {\n subscribers.push({ onActive: fn });\n },\n })\n );\n\n return {\n refresh,\n ...propGetters,\n ...setters,\n };\n}\n","import {\n AutocompleteState,\n AutocompleteStore,\n BaseItem,\n InternalAutocompleteOptions,\n Reducer,\n} from './types';\n\ntype OnStoreStateChange<TItem extends BaseItem> = ({\n prevState,\n state,\n}: {\n prevState: AutocompleteState<TItem>;\n state: AutocompleteState<TItem>;\n}) => void;\n\nexport function createStore<TItem extends BaseItem>(\n reducer: Reducer,\n props: InternalAutocompleteOptions<TItem>,\n onStoreStateChange: OnStoreStateChange<TItem>\n): AutocompleteStore<TItem> {\n let state = props.initialState;\n\n return {\n getState() {\n return state;\n },\n dispatch(action, payload) {\n const prevState = { ...state };\n state = reducer(state, {\n type: action,\n props,\n payload,\n });\n\n onStoreStateChange({ state, prevState });\n },\n };\n}\n","import {\n AutocompleteApi,\n AutocompleteCollection,\n AutocompleteStore,\n BaseItem,\n} from './types';\nimport { flatten } from './utils';\n\ninterface GetAutocompleteSettersOptions<TItem extends BaseItem> {\n store: AutocompleteStore<TItem>;\n}\n\nexport function getAutocompleteSetters<TItem extends BaseItem>({\n store,\n}: GetAutocompleteSettersOptions<TItem>) {\n const setActiveItemId: AutocompleteApi<TItem>['setActiveItemId'] = (\n value\n ) => {\n store.dispatch('setActiveItemId', value);\n };\n\n const setQuery: AutocompleteApi<TItem>['setQuery'] = (value) => {\n store.dispatch('setQuery', value);\n };\n\n const setCollections: AutocompleteApi<TItem>['setCollections'] = (\n rawValue\n ) => {\n let baseItemId = 0;\n const value = rawValue.map<AutocompleteCollection<TItem>>((collection) => ({\n ...collection,\n // We flatten the stored items to support calling `getAlgoliaHits`\n // from the source itself.\n items: flatten(collection.items as any).map((item: any) => ({\n ...item,\n __autocomplete_id: baseItemId++,\n })),\n }));\n\n store.dispatch('setCollections', value);\n };\n\n const setIsOpen: AutocompleteApi<TItem>['setIsOpen'] = (value) => {\n store.dispatch('setIsOpen', value);\n };\n\n const setStatus: AutocompleteApi<TItem>['setStatus'] = (value) => {\n store.dispatch('setStatus', value);\n };\n\n const setContext: AutocompleteApi<TItem>['setContext'] = (value) => {\n store.dispatch('setContext', value);\n };\n\n return {\n setActiveItemId,\n setQuery,\n setCollections,\n setIsOpen,\n setStatus,\n setContext,\n };\n}\n","export const version = '1.0.0-alpha.43';\n"],"names":["getItemsCount","state","collections","length","reduce","sum","collection","items","flatten","values","a","b","concat","autocompleteId","getNextActiveItemId","moveAmount","baseIndex","itemCount","defaultActiveItemId","numericIndex","noop","getActiveItem","collectionIndex","map","acc","collectionsCount","index","nextValue","push","current","activeItemId","getCollectionFromActiveItemId","item","isOffsetFound","counter","previousItemsOffset","currentCollection","getRelativeActiveItemId","source","itemInputValue","getItemInputValue","itemUrl","getItemUrl","isOrContainsNode","parent","child","contains","getDefaultProps","props","pluginSubscribers","environment","window","plugins","debug","openOnFocus","placeholder","autoFocus","stallThreshold","shouldPanelOpen","id","initialState","query","completion","isOpen","status","context","onStateChange","params","forEach","x","_x$onStateChange","onSubmit","_x$onSubmit","onReset","_x$onReset","getSources","Promise","all","plugin","filter","Boolean","resolve","then","sources","Array","isArray","JSON","stringify","maybeSource","sourceId","normalizedSource","onSelect","setIsOpen","onActive","getNormalizedSources","nested","_x$onSelect","_x$onActive","navigator","navigate","location","assign","navigateNewTab","windowReference","open","focus","navigateNewWindow","lastStalledId","onInput","event","nextState","refresh","store","setters","clearTimeout","setCollections","setQuery","setActiveItemId","setStatus","setTimeout","getState","getItems","isPanelOpen","highlightedItem","finally","getPropGetters","getEnvironmentProps","providedProps","inputElement","formElement","panelElement","onTouchStart","target","some","contextNode","document","activeElement","dispatch","onTouchMove","blur","getRootProps","rest","role","undefined","getFormProps","action","noValidate","preventDefault","getLabelProps","htmlFor","getInputProps","onFocus","isTouchDevice","maxLength","activeItem","value","autoComplete","autoCorrect","autoCapitalize","enterKeyHint","spellCheck","type","onChange","currentTarget","slice","onKeyDown","key","nodeItem","getElementById","scrollIntoViewIfNeeded","scrollIntoView","every","metaKey","ctrlKey","shiftKey","altKey","onBlur","onClick","getPanelProps","onMouseDown","onMouseLeave","getListProps","getItemProps","__autocomplete_id","onMouseMove","getCompletion","stateReducer","payload","options","subscribers","reducer","onStoreStateChange","prevState","createStore","rawValue","baseItemId","setContext","getAutocompleteSetters","propGetters","Event","subscribe","_plugin$subscribe","fn"],"mappings":"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"}
1
+ {"version":3,"file":"index.production.js","sources":["../../../autocomplete-shared/dist/esm/getItemsCount.js","../../src/utils/flatten.ts","../../src/utils/generateAutocompleteId.ts","../../src/utils/getNextActiveItemId.ts","../../src/utils/noop.ts","../../src/utils/getActiveItem.ts","../../src/utils/isOrContainsNode.ts","../../src/getDefaultProps.ts","../../src/utils/getNormalizedSources.ts","../../src/onInput.ts","../../src/getPropGetters.ts","../../src/onKeyDown.ts","../../src/getCompletion.ts","../../src/stateReducer.ts","../../src/createAutocomplete.ts","../../src/createStore.ts","../../src/getAutocompleteSetters.ts","../../src/version.ts"],"sourcesContent":["export function getItemsCount(state) {\n if (state.collections.length === 0) {\n return 0;\n }\n\n return state.collections.reduce(function (sum, collection) {\n return sum + collection.items.length;\n }, 0);\n}","export function flatten<TType>(values: Array<TType | TType[]>): TType[] {\n return values.reduce<TType[]>((a, b) => {\n return a.concat(b);\n }, []);\n}\n","let autocompleteId = 0;\n\nexport function generateAutocompleteId() {\n return `autocomplete-${autocompleteId++}`;\n}\n","/**\n * Returns the next active item ID from the current state.\n *\n * We allow circular keyboard navigation from the base index.\n * The base index can either be `null` (nothing is highlighted) or `0`\n * (the first item is highlighted).\n * The base index is allowed to get assigned `null` only if\n * `props.defaultActiveItemId` is `null`. This pattern allows to \"stop\"\n * by the actual query before navigating to other suggestions as seen on\n * Google or Amazon.\n *\n * @param moveAmount The offset to increment (or decrement) the last index\n * @param baseIndex The current index to compute the next index from\n * @param itemCount The number of items\n * @param defaultActiveItemId The default active index to fallback to\n */\nexport function getNextActiveItemId(\n moveAmount: number,\n baseIndex: number | null,\n itemCount: number,\n defaultActiveItemId: number | null\n): number | null {\n if (\n moveAmount < 0 &&\n (baseIndex === null || (defaultActiveItemId !== null && baseIndex === 0))\n ) {\n return itemCount + moveAmount;\n }\n\n const numericIndex = (baseIndex === null ? -1 : baseIndex) + moveAmount;\n\n if (numericIndex <= -1 || numericIndex >= itemCount) {\n return defaultActiveItemId === null ? null : 0;\n }\n\n return numericIndex;\n}\n","export const noop = () => {};\n","import { AutocompleteCollection, AutocompleteState, BaseItem } from '../types';\n\n// We don't have access to the autocomplete source when we call `onKeyDown`\n// or `onClick` because those are native browser events.\n// However, we can get the source from the suggestion index.\nfunction getCollectionFromActiveItemId<TItem extends BaseItem>(\n state: AutocompleteState<TItem>\n): AutocompleteCollection<TItem> | undefined {\n // Given 3 sources with respectively 1, 2 and 3 suggestions: [1, 2, 3]\n // We want to get the accumulated counts:\n // [1, 1 + 2, 1 + 2 + 3] = [1, 3, 3 + 3] = [1, 3, 6]\n const accumulatedCollectionsCount = state.collections\n .map((collections) => collections.items.length)\n .reduce<number[]>((acc, collectionsCount, index) => {\n const previousValue = acc[index - 1] || 0;\n const nextValue = previousValue + collectionsCount;\n\n acc.push(nextValue);\n\n return acc;\n }, []);\n\n // Based on the accumulated counts, we can infer the index of the suggestion.\n const collectionIndex = accumulatedCollectionsCount.reduce((acc, current) => {\n if (current <= state.activeItemId!) {\n return acc + 1;\n }\n\n return acc;\n }, 0);\n\n return state.collections[collectionIndex];\n}\n\n/**\n * Gets the highlighted index relative to a suggestion object (not the absolute\n * highlighted index).\n *\n * Example:\n * [['a', 'b'], ['c', 'd', 'e'], ['f']]\n * ↑\n * (absolute: 3, relative: 1)\n */\nfunction getRelativeActiveItemId<TItem extends BaseItem>({\n state,\n collection,\n}: {\n state: AutocompleteState<TItem>;\n collection: AutocompleteCollection<TItem>;\n}): number {\n let isOffsetFound = false;\n let counter = 0;\n let previousItemsOffset = 0;\n\n while (isOffsetFound === false) {\n const currentCollection = state.collections[counter];\n\n if (currentCollection === collection) {\n isOffsetFound = true;\n break;\n }\n\n previousItemsOffset += currentCollection.items.length;\n\n counter++;\n }\n\n return state.activeItemId! - previousItemsOffset;\n}\n\nexport function getActiveItem<TItem extends BaseItem>(\n state: AutocompleteState<TItem>\n) {\n const collection = getCollectionFromActiveItemId(state);\n\n if (!collection) {\n return null;\n }\n\n const item = collection.items[getRelativeActiveItemId({ state, collection })];\n const source = collection.source;\n const itemInputValue = source.getItemInputValue({ item, state });\n const itemUrl = source.getItemUrl({ item, state });\n\n return {\n item,\n itemInputValue,\n itemUrl,\n source,\n };\n}\n","export function isOrContainsNode(parent: Node, child: Node) {\n return parent === child || parent.contains(child);\n}\n","import { getItemsCount } from '@algolia/autocomplete-shared';\n\nimport {\n AutocompleteEnvironment,\n AutocompleteOptions,\n AutocompleteSubscribers,\n BaseItem,\n InternalAutocompleteOptions,\n} from './types';\nimport { generateAutocompleteId, getNormalizedSources, flatten } from './utils';\n\nexport function getDefaultProps<TItem extends BaseItem>(\n props: AutocompleteOptions<TItem>,\n pluginSubscribers: AutocompleteSubscribers<TItem>\n): InternalAutocompleteOptions<TItem> {\n const environment: AutocompleteEnvironment = (typeof window !== 'undefined'\n ? window\n : {}) as typeof window;\n const plugins = props.plugins || [];\n\n return {\n debug: false,\n openOnFocus: false,\n placeholder: '',\n autoFocus: false,\n defaultActiveItemId: null,\n stallThreshold: 300,\n environment,\n shouldPanelOpen: ({ state }) => getItemsCount(state) > 0,\n ...props,\n // Since `generateAutocompleteId` triggers a side effect (it increments\n // and internal counter), we don't want to execute it if unnecessary.\n id: props.id ?? generateAutocompleteId(),\n plugins,\n // The following props need to be deeply defaulted.\n initialState: {\n activeItemId: null,\n query: '',\n completion: null,\n collections: [],\n isOpen: false,\n status: 'idle',\n context: {},\n ...props.initialState,\n },\n onStateChange(params) {\n props.onStateChange?.(params);\n plugins.forEach((x) => x.onStateChange?.(params));\n },\n onSubmit(params) {\n props.onSubmit?.(params);\n plugins.forEach((x) => x.onSubmit?.(params));\n },\n onReset(params) {\n props.onReset?.(params);\n plugins.forEach((x) => x.onReset?.(params));\n },\n getSources(params) {\n return Promise.all(\n [...plugins.map((plugin) => plugin.getSources), props.getSources]\n .filter(Boolean)\n .map((getSources) => getNormalizedSources(getSources!, params))\n )\n .then((nested) => flatten(nested))\n .then((sources) =>\n sources.map((source) => ({\n ...source,\n onSelect(params) {\n source.onSelect(params);\n pluginSubscribers.forEach((x) => x.onSelect?.(params));\n },\n onActive(params) {\n source.onActive(params);\n pluginSubscribers.forEach((x) => x.onActive?.(params));\n },\n }))\n );\n },\n navigator: {\n navigate({ itemUrl }) {\n environment.location.assign(itemUrl);\n },\n navigateNewTab({ itemUrl }) {\n const windowReference = environment.open(itemUrl, '_blank', 'noopener');\n windowReference?.focus();\n },\n navigateNewWindow({ itemUrl }) {\n environment.open(itemUrl, '_blank', 'noopener');\n },\n ...props.navigator,\n },\n };\n}\n","import { invariant } from '@algolia/autocomplete-shared';\n\nimport {\n AutocompleteSource,\n BaseItem,\n GetSources,\n GetSourcesParams,\n InternalAutocompleteSource,\n InternalGetSources,\n} from '../types';\n\nimport { noop } from './noop';\n\nexport function getNormalizedSources<TItem extends BaseItem>(\n getSources: GetSources<TItem>,\n params: GetSourcesParams<TItem>\n): ReturnType<InternalGetSources<TItem>> {\n return Promise.resolve(getSources(params)).then((sources) => {\n invariant(\n Array.isArray(sources),\n `The \\`getSources\\` function must return an array of sources but returned type ${JSON.stringify(\n typeof sources\n )}:\\n\\n${JSON.stringify(sources, null, 2)}`\n );\n\n return Promise.all(\n sources\n // We allow `undefined` and `false` sources to allow users to use\n // `Boolean(query) && source` (=> `false`).\n // We need to remove these values at this point.\n .filter((maybeSource: any): maybeSource is AutocompleteSource<TItem> =>\n Boolean(maybeSource)\n )\n .map((source) => {\n invariant(\n typeof source.sourceId === 'string',\n 'A source must provide a `sourceId` string.'\n );\n\n const normalizedSource: InternalAutocompleteSource<TItem> = {\n getItemInputValue({ state }) {\n return state.query;\n },\n getItemUrl() {\n return undefined;\n },\n onSelect({ setIsOpen }) {\n setIsOpen(false);\n },\n onActive: noop,\n ...source,\n };\n\n return Promise.resolve(normalizedSource);\n })\n );\n });\n}\n","import { invariant } from '@algolia/autocomplete-shared';\n\nimport {\n AutocompleteScopeApi,\n AutocompleteState,\n AutocompleteStore,\n BaseItem,\n InternalAutocompleteOptions,\n} from './types';\nimport { getActiveItem } from './utils';\n\nlet lastStalledId: number | null = null;\n\ninterface OnInputParams<TItem extends BaseItem>\n extends AutocompleteScopeApi<TItem> {\n event: any;\n /**\n * The next partial state to apply after the function is called.\n *\n * This is useful when we call `onInput` in a different scenario than an\n * actual input. For example, we use `onInput` when we click on an item,\n * but we want to close the panel in that case.\n */\n nextState?: Partial<AutocompleteState<TItem>>;\n props: InternalAutocompleteOptions<TItem>;\n query: string;\n store: AutocompleteStore<TItem>;\n}\n\nexport function onInput<TItem extends BaseItem>({\n event,\n nextState = {},\n props,\n query,\n refresh,\n store,\n ...setters\n}: OnInputParams<TItem>): Promise<void> {\n if (lastStalledId) {\n props.environment.clearTimeout(lastStalledId);\n }\n\n const {\n setCollections,\n setIsOpen,\n setQuery,\n setActiveItemId,\n setStatus,\n } = setters;\n\n setQuery(query);\n setActiveItemId(props.defaultActiveItemId);\n\n if (!query && props.openOnFocus === false) {\n setStatus('idle');\n setCollections(\n store.getState().collections.map((collection) => ({\n ...collection,\n items: [],\n }))\n );\n setIsOpen(\n nextState.isOpen ?? props.shouldPanelOpen({ state: store.getState() })\n );\n\n return Promise.resolve();\n }\n\n setStatus('loading');\n\n lastStalledId = props.environment.setTimeout(() => {\n setStatus('stalled');\n }, props.stallThreshold);\n\n return props\n .getSources({\n query,\n refresh,\n state: store.getState(),\n ...setters,\n })\n .then((sources) => {\n setStatus('loading');\n\n // @TODO: convert `Promise.all` to fetching strategy.\n return Promise.all(\n sources.map((source) => {\n return Promise.resolve(\n source.getItems({\n query,\n refresh,\n state: store.getState(),\n ...setters,\n })\n ).then((items) => {\n invariant(\n Array.isArray(items),\n `The \\`getItems\\` function must return an array of items but returned type ${JSON.stringify(\n typeof items\n )}:\\n\\n${JSON.stringify(items, null, 2)}`\n );\n\n return { source, items };\n });\n })\n )\n .then((collections) => {\n setStatus('idle');\n setCollections(collections as any);\n const isPanelOpen = props.shouldPanelOpen({\n state: store.getState(),\n });\n setIsOpen(\n nextState.isOpen ??\n ((props.openOnFocus && !query && isPanelOpen) || isPanelOpen)\n );\n\n const highlightedItem = getActiveItem(store.getState());\n\n if (store.getState().activeItemId !== null && highlightedItem) {\n const { item, itemInputValue, itemUrl, source } = highlightedItem;\n\n source.onActive({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n }\n })\n .finally(() => {\n if (lastStalledId) {\n props.environment.clearTimeout(lastStalledId);\n }\n });\n });\n}\n","import { onInput } from './onInput';\nimport { onKeyDown } from './onKeyDown';\nimport {\n AutocompleteScopeApi,\n AutocompleteStore,\n BaseItem,\n GetEnvironmentProps,\n GetFormProps,\n GetInputProps,\n GetItemProps,\n GetLabelProps,\n GetListProps,\n GetPanelProps,\n GetRootProps,\n InternalAutocompleteOptions,\n} from './types';\nimport { getActiveItem, isOrContainsNode } from './utils';\n\ninterface GetPropGettersOptions<TItem extends BaseItem>\n extends AutocompleteScopeApi<TItem> {\n store: AutocompleteStore<TItem>;\n props: InternalAutocompleteOptions<TItem>;\n}\n\nexport function getPropGetters<\n TItem extends BaseItem,\n TEvent,\n TMouseEvent,\n TKeyboardEvent\n>({ props, refresh, store, ...setters }: GetPropGettersOptions<TItem>) {\n const getEnvironmentProps: GetEnvironmentProps = (providedProps) => {\n const { inputElement, formElement, panelElement, ...rest } = providedProps;\n\n return {\n // On touch devices, we do not rely on the native `blur` event of the\n // input to close the panel, but rather on a custom `touchstart` event\n // outside of the autocomplete elements.\n // This ensures a working experience on mobile because we blur the input\n // on touch devices when the user starts scrolling (`touchmove`).\n onTouchStart(event) {\n if (\n store.getState().isOpen === false ||\n event.target === inputElement\n ) {\n return;\n }\n\n // @TODO: support cases where there are multiple Autocomplete instances.\n // Right now, a second instance makes this computation return false.\n const isTargetWithinAutocomplete = [formElement, panelElement].some(\n (contextNode) => {\n return (\n isOrContainsNode(contextNode, event.target as Node) ||\n isOrContainsNode(\n contextNode,\n props.environment.document.activeElement!\n )\n );\n }\n );\n\n if (isTargetWithinAutocomplete === false) {\n store.dispatch('blur', null);\n }\n },\n // When scrolling on touch devices (mobiles, tablets, etc.), we want to\n // mimic the native platform behavior where the input is blurred to\n // hide the virtual keyboard. This gives more vertical space to\n // discover all the suggestions showing up in the panel.\n onTouchMove(event: TouchEvent) {\n if (\n store.getState().isOpen === false ||\n inputElement !== props.environment.document.activeElement ||\n event.target === inputElement\n ) {\n return;\n }\n\n inputElement.blur();\n },\n ...rest,\n };\n };\n\n const getRootProps: GetRootProps = (rest) => {\n return {\n role: 'combobox',\n 'aria-expanded': store.getState().isOpen,\n 'aria-haspopup': 'listbox',\n 'aria-owns': store.getState().isOpen ? `${props.id}-list` : undefined,\n 'aria-labelledby': `${props.id}-label`,\n ...rest,\n };\n };\n\n const getFormProps: GetFormProps<TEvent> = (providedProps) => {\n const { inputElement, ...rest } = providedProps;\n\n return {\n action: '',\n noValidate: true,\n role: 'search',\n onSubmit: (event) => {\n ((event as unknown) as Event).preventDefault();\n\n props.onSubmit({\n event,\n refresh,\n state: store.getState(),\n ...setters,\n });\n\n store.dispatch('submit', null);\n providedProps.inputElement?.blur();\n },\n onReset: (event) => {\n ((event as unknown) as Event).preventDefault();\n\n props.onReset({\n event,\n refresh,\n state: store.getState(),\n ...setters,\n });\n\n store.dispatch('reset', null);\n providedProps.inputElement?.focus();\n },\n ...rest,\n };\n };\n\n const getInputProps: GetInputProps<TEvent, TMouseEvent, TKeyboardEvent> = (\n providedProps\n ) => {\n function onFocus(event: TEvent) {\n // We want to trigger a query when `openOnFocus` is true\n // because the panel should open with the current query.\n if (props.openOnFocus || Boolean(store.getState().query)) {\n onInput({\n event,\n props,\n query: store.getState().completion || store.getState().query,\n refresh,\n store,\n ...setters,\n });\n }\n\n store.dispatch('focus', null);\n }\n\n const isTouchDevice = 'ontouchstart' in props.environment;\n const { inputElement, maxLength = 512, ...rest } = providedProps || {};\n const activeItem = getActiveItem(store.getState());\n\n return {\n 'aria-autocomplete': 'both',\n 'aria-activedescendant':\n store.getState().isOpen && store.getState().activeItemId !== null\n ? `${props.id}-item-${store.getState().activeItemId}`\n : undefined,\n 'aria-controls': store.getState().isOpen ? `${props.id}-list` : undefined,\n 'aria-labelledby': `${props.id}-label`,\n value: store.getState().completion || store.getState().query,\n id: `${props.id}-input`,\n autoComplete: 'off',\n autoCorrect: 'off',\n autoCapitalize: 'off',\n enterKeyHint: activeItem?.itemUrl ? 'go' : 'search',\n spellCheck: 'false',\n autoFocus: props.autoFocus,\n placeholder: props.placeholder,\n maxLength,\n type: 'search',\n onChange: (event) => {\n onInput({\n event,\n props,\n query: (((event as unknown) as Event)\n .currentTarget as HTMLInputElement).value.slice(0, maxLength),\n refresh,\n store,\n ...setters,\n });\n },\n onKeyDown: (event) => {\n onKeyDown({\n event: (event as unknown) as KeyboardEvent,\n props,\n refresh,\n store,\n ...setters,\n });\n },\n onFocus,\n onBlur: () => {\n // We do rely on the `blur` event on touch devices.\n // See explanation in `onTouchStart`.\n if (!isTouchDevice) {\n store.dispatch('blur', null);\n }\n },\n onClick: (event) => {\n // When the panel is closed and you click on the input while\n // the input is focused, the `onFocus` event is not triggered\n // (default browser behavior).\n // In an autocomplete context, it makes sense to open the panel in this\n // case.\n // We mimic this event by catching the `onClick` event which\n // triggers the `onFocus` for the panel to open.\n if (\n providedProps.inputElement ===\n props.environment.document.activeElement &&\n !store.getState().isOpen\n ) {\n onFocus((event as unknown) as TEvent);\n }\n },\n ...rest,\n };\n };\n\n const getLabelProps: GetLabelProps = (rest) => {\n return {\n htmlFor: `${props.id}-input`,\n id: `${props.id}-label`,\n ...rest,\n };\n };\n\n const getListProps: GetListProps = (rest) => {\n return {\n role: 'listbox',\n 'aria-labelledby': `${props.id}-label`,\n id: `${props.id}-list`,\n ...rest,\n };\n };\n\n const getPanelProps: GetPanelProps<TMouseEvent> = (rest) => {\n return {\n onMouseDown(event) {\n // Prevents the `activeElement` from being changed to the panel so\n // that the blur event is not triggered, otherwise it closes the\n // panel.\n ((event as unknown) as MouseEvent).preventDefault();\n },\n onMouseLeave() {\n store.dispatch('mouseleave', null);\n },\n ...rest,\n };\n };\n\n const getItemProps: GetItemProps<any, TMouseEvent> = (providedProps) => {\n const { item, source, ...rest } = providedProps;\n\n return {\n id: `${props.id}-item-${item.__autocomplete_id}`,\n role: 'option',\n 'aria-selected': store.getState().activeItemId === item.__autocomplete_id,\n onMouseMove(event) {\n if (item.__autocomplete_id === store.getState().activeItemId) {\n return;\n }\n\n store.dispatch('mousemove', item.__autocomplete_id);\n\n const activeItem = getActiveItem(store.getState());\n\n if (store.getState().activeItemId !== null && activeItem) {\n const { item, itemInputValue, itemUrl, source } = activeItem;\n\n source.onActive({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n }\n },\n onMouseDown(event) {\n // Prevents the `activeElement` from being changed to the item so it\n // can remain with the current `activeElement`.\n ((event as unknown) as MouseEvent).preventDefault();\n },\n onClick(event) {\n const itemInputValue = source.getItemInputValue({\n item,\n state: store.getState(),\n });\n const itemUrl = source.getItemUrl({\n item,\n state: store.getState(),\n });\n\n // If `getItemUrl` is provided, it means that the suggestion\n // is a link, not plain text that aims at updating the query.\n // We can therefore skip the state change because it will update\n // the `activeItemId`, resulting in a UI flash, especially\n // noticeable on mobile.\n const runPreCommand = itemUrl\n ? Promise.resolve()\n : onInput({\n event,\n nextState: { isOpen: false },\n props,\n query: itemInputValue,\n refresh,\n store,\n ...setters,\n });\n\n runPreCommand.then(() => {\n source.onSelect({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n });\n },\n ...rest,\n };\n };\n\n return {\n getEnvironmentProps,\n getRootProps,\n getFormProps,\n getLabelProps,\n getInputProps,\n getPanelProps,\n getListProps,\n getItemProps,\n };\n}\n","import { onInput } from './onInput';\nimport {\n AutocompleteScopeApi,\n AutocompleteStore,\n BaseItem,\n InternalAutocompleteOptions,\n} from './types';\nimport { getActiveItem } from './utils';\n\ninterface OnKeyDownOptions<TItem extends BaseItem>\n extends AutocompleteScopeApi<TItem> {\n event: KeyboardEvent;\n props: InternalAutocompleteOptions<TItem>;\n store: AutocompleteStore<TItem>;\n}\n\nexport function onKeyDown<TItem extends BaseItem>({\n event,\n props,\n refresh,\n store,\n ...setters\n}: OnKeyDownOptions<TItem>): void {\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\n // Default browser behavior changes the caret placement on ArrowUp and\n // Arrow down.\n event.preventDefault();\n\n store.dispatch(event.key, null);\n\n const nodeItem = props.environment.document.getElementById(\n `${props.id}-item-${store.getState().activeItemId}`\n );\n\n if (nodeItem) {\n if ((nodeItem as any).scrollIntoViewIfNeeded) {\n (nodeItem as any).scrollIntoViewIfNeeded(false);\n } else {\n nodeItem.scrollIntoView(false);\n }\n }\n\n const highlightedItem = getActiveItem(store.getState());\n\n if (store.getState().activeItemId !== null && highlightedItem) {\n const { item, itemInputValue, itemUrl, source } = highlightedItem;\n\n source.onActive({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n }\n } else if (event.key === 'Escape') {\n // This prevents the default browser behavior on `input[type=\"search\"]`\n // from removing the query right away because we first want to close the\n // panel.\n event.preventDefault();\n\n store.dispatch(event.key, null);\n } else if (event.key === 'Enter') {\n // No active item, so we let the browser handle the native `onSubmit` form\n // event.\n if (\n store.getState().activeItemId === null ||\n store\n .getState()\n .collections.every((collection) => collection.items.length === 0)\n ) {\n return;\n }\n\n // This prevents the `onSubmit` event to be sent because an item is\n // highlighted.\n event.preventDefault();\n\n const { item, itemInputValue, itemUrl, source } = getActiveItem(\n store.getState()\n )!;\n\n if (event.metaKey || event.ctrlKey) {\n if (itemUrl !== undefined) {\n source.onSelect({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n props.navigator.navigateNewTab({\n itemUrl,\n item,\n state: store.getState(),\n });\n }\n } else if (event.shiftKey) {\n if (itemUrl !== undefined) {\n source.onSelect({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n props.navigator.navigateNewWindow({\n itemUrl,\n item,\n state: store.getState(),\n });\n }\n } else if (event.altKey) {\n // Keep native browser behavior\n } else {\n if (itemUrl !== undefined) {\n source.onSelect({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n props.navigator.navigate({\n itemUrl,\n item,\n state: store.getState(),\n });\n\n return;\n }\n\n onInput({\n event,\n nextState: { isOpen: false },\n props,\n query: itemInputValue,\n refresh,\n store,\n ...setters,\n }).then(() => {\n source.onSelect({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n });\n }\n }\n}\n","import { AutocompleteState, BaseItem } from './types';\nimport { getActiveItem } from './utils';\n\ninterface GetCompletionProps<TItem extends BaseItem> {\n state: AutocompleteState<TItem>;\n}\n\nexport function getCompletion<TItem extends BaseItem>({\n state,\n}: GetCompletionProps<TItem>): string | null {\n if (state.isOpen === false || state.activeItemId === null) {\n return null;\n }\n\n const { itemInputValue } = getActiveItem(state)!;\n\n return itemInputValue || null;\n}\n","import { getItemsCount, invariant } from '@algolia/autocomplete-shared';\n\nimport { getCompletion } from './getCompletion';\nimport { Reducer } from './types';\nimport { getNextActiveItemId } from './utils';\n\nexport const stateReducer: Reducer = (state, action) => {\n switch (action.type) {\n case 'setActiveItemId': {\n return {\n ...state,\n activeItemId: action.payload,\n };\n }\n\n case 'setQuery': {\n return {\n ...state,\n query: action.payload,\n completion: null,\n };\n }\n\n case 'setCollections': {\n return {\n ...state,\n collections: action.payload,\n };\n }\n\n case 'setIsOpen': {\n return {\n ...state,\n isOpen: action.payload,\n };\n }\n\n case 'setStatus': {\n return {\n ...state,\n status: action.payload,\n };\n }\n\n case 'setContext': {\n return {\n ...state,\n context: {\n ...state.context,\n ...action.payload,\n },\n };\n }\n\n case 'ArrowDown': {\n const nextState = {\n ...state,\n activeItemId: getNextActiveItemId(\n 1,\n state.activeItemId,\n getItemsCount(state),\n action.props.defaultActiveItemId\n ),\n };\n\n return {\n ...nextState,\n completion: getCompletion({ state: nextState }),\n };\n }\n\n case 'ArrowUp': {\n const nextState = {\n ...state,\n activeItemId: getNextActiveItemId(\n -1,\n state.activeItemId,\n getItemsCount(state),\n action.props.defaultActiveItemId\n ),\n };\n\n return {\n ...nextState,\n completion: getCompletion({ state: nextState }),\n };\n }\n\n case 'Escape': {\n if (state.isOpen) {\n return {\n ...state,\n isOpen: false,\n completion: null,\n };\n }\n\n return {\n ...state,\n query: '',\n status: 'idle',\n collections: [],\n };\n }\n\n case 'submit': {\n return {\n ...state,\n activeItemId: null,\n isOpen: false,\n status: 'idle',\n };\n }\n\n case 'reset': {\n return {\n ...state,\n activeItemId:\n // Since we open the panel on reset when openOnFocus=true\n // we need to restore the highlighted index to the defaultActiveItemId. (DocSearch use-case)\n\n // Since we close the panel when openOnFocus=false\n // we lose track of the highlighted index. (Query-suggestions use-case)\n action.props.openOnFocus === true\n ? action.props.defaultActiveItemId\n : null,\n status: 'idle',\n query: '',\n };\n }\n\n case 'focus': {\n return {\n ...state,\n activeItemId: action.props.defaultActiveItemId,\n isOpen:\n (action.props.openOnFocus || Boolean(state.query)) &&\n action.props.shouldPanelOpen({ state }),\n };\n }\n\n case 'blur': {\n if (action.props.debug) {\n return state;\n }\n\n return {\n ...state,\n isOpen: false,\n activeItemId: null,\n };\n }\n\n case 'mousemove': {\n return {\n ...state,\n activeItemId: action.payload,\n };\n }\n\n case 'mouseleave': {\n return {\n ...state,\n activeItemId: action.props.defaultActiveItemId,\n };\n }\n\n default:\n invariant(\n false,\n `The reducer action ${JSON.stringify(action.type)} is not supported.`\n );\n\n return state;\n }\n};\n","import { checkOptions } from './checkOptions';\nimport { createStore } from './createStore';\nimport { getAutocompleteSetters } from './getAutocompleteSetters';\nimport { getDefaultProps } from './getDefaultProps';\nimport { getPropGetters } from './getPropGetters';\nimport { onInput } from './onInput';\nimport { stateReducer } from './stateReducer';\nimport {\n AutocompleteApi,\n AutocompleteOptions,\n BaseItem,\n AutocompleteSubscribers,\n} from './types';\n\nexport function createAutocomplete<\n TItem extends BaseItem,\n TEvent = Event,\n TMouseEvent = MouseEvent,\n TKeyboardEvent = KeyboardEvent\n>(\n options: AutocompleteOptions<TItem>\n): AutocompleteApi<TItem, TEvent, TMouseEvent, TKeyboardEvent> {\n checkOptions(options);\n\n const subscribers: AutocompleteSubscribers<TItem> = [];\n const props = getDefaultProps(options, subscribers);\n const store = createStore(stateReducer, props, onStoreStateChange);\n\n const setters = getAutocompleteSetters({ store });\n const propGetters = getPropGetters<\n TItem,\n TEvent,\n TMouseEvent,\n TKeyboardEvent\n >({ props, refresh, store, ...setters });\n\n function onStoreStateChange({ prevState, state }) {\n props.onStateChange({ prevState, state, refresh, ...setters });\n }\n\n function refresh() {\n return onInput({\n event: new Event('input'),\n nextState: { isOpen: store.getState().isOpen },\n props,\n query: store.getState().query,\n refresh,\n store,\n ...setters,\n });\n }\n\n props.plugins.forEach((plugin) =>\n plugin.subscribe?.({\n ...setters,\n refresh,\n onSelect(fn) {\n subscribers.push({ onSelect: fn });\n },\n onActive(fn) {\n subscribers.push({ onActive: fn });\n },\n })\n );\n\n return {\n refresh,\n ...propGetters,\n ...setters,\n };\n}\n","import {\n AutocompleteState,\n AutocompleteStore,\n BaseItem,\n InternalAutocompleteOptions,\n Reducer,\n} from './types';\n\ntype OnStoreStateChange<TItem extends BaseItem> = ({\n prevState,\n state,\n}: {\n prevState: AutocompleteState<TItem>;\n state: AutocompleteState<TItem>;\n}) => void;\n\nexport function createStore<TItem extends BaseItem>(\n reducer: Reducer,\n props: InternalAutocompleteOptions<TItem>,\n onStoreStateChange: OnStoreStateChange<TItem>\n): AutocompleteStore<TItem> {\n let state = props.initialState;\n\n return {\n getState() {\n return state;\n },\n dispatch(action, payload) {\n const prevState = { ...state };\n state = reducer(state, {\n type: action,\n props,\n payload,\n });\n\n onStoreStateChange({ state, prevState });\n },\n };\n}\n","import {\n AutocompleteApi,\n AutocompleteCollection,\n AutocompleteStore,\n BaseItem,\n} from './types';\nimport { flatten } from './utils';\n\ninterface GetAutocompleteSettersOptions<TItem extends BaseItem> {\n store: AutocompleteStore<TItem>;\n}\n\nexport function getAutocompleteSetters<TItem extends BaseItem>({\n store,\n}: GetAutocompleteSettersOptions<TItem>) {\n const setActiveItemId: AutocompleteApi<TItem>['setActiveItemId'] = (\n value\n ) => {\n store.dispatch('setActiveItemId', value);\n };\n\n const setQuery: AutocompleteApi<TItem>['setQuery'] = (value) => {\n store.dispatch('setQuery', value);\n };\n\n const setCollections: AutocompleteApi<TItem>['setCollections'] = (\n rawValue\n ) => {\n let baseItemId = 0;\n const value = rawValue.map<AutocompleteCollection<TItem>>((collection) => ({\n ...collection,\n // We flatten the stored items to support calling `getAlgoliaHits`\n // from the source itself.\n items: flatten(collection.items as any).map((item: any) => ({\n ...item,\n __autocomplete_id: baseItemId++,\n })),\n }));\n\n store.dispatch('setCollections', value);\n };\n\n const setIsOpen: AutocompleteApi<TItem>['setIsOpen'] = (value) => {\n store.dispatch('setIsOpen', value);\n };\n\n const setStatus: AutocompleteApi<TItem>['setStatus'] = (value) => {\n store.dispatch('setStatus', value);\n };\n\n const setContext: AutocompleteApi<TItem>['setContext'] = (value) => {\n store.dispatch('setContext', value);\n };\n\n return {\n setActiveItemId,\n setQuery,\n setCollections,\n setIsOpen,\n setStatus,\n setContext,\n };\n}\n","export const version = '1.0.0-alpha.44';\n"],"names":["getItemsCount","state","collections","length","reduce","sum","collection","items","flatten","values","a","b","concat","autocompleteId","getNextActiveItemId","moveAmount","baseIndex","itemCount","defaultActiveItemId","numericIndex","noop","getActiveItem","collectionIndex","map","acc","collectionsCount","index","nextValue","push","current","activeItemId","getCollectionFromActiveItemId","item","isOffsetFound","counter","previousItemsOffset","currentCollection","getRelativeActiveItemId","source","itemInputValue","getItemInputValue","itemUrl","getItemUrl","isOrContainsNode","parent","child","contains","getDefaultProps","props","pluginSubscribers","environment","window","plugins","debug","openOnFocus","placeholder","autoFocus","stallThreshold","shouldPanelOpen","id","initialState","query","completion","isOpen","status","context","onStateChange","params","forEach","x","_x$onStateChange","onSubmit","_x$onSubmit","onReset","_x$onReset","getSources","Promise","all","plugin","filter","Boolean","resolve","then","sources","Array","isArray","JSON","stringify","maybeSource","sourceId","normalizedSource","onSelect","setIsOpen","onActive","getNormalizedSources","nested","_x$onSelect","_x$onActive","navigator","navigate","location","assign","navigateNewTab","windowReference","open","focus","navigateNewWindow","lastStalledId","onInput","event","nextState","refresh","store","setters","clearTimeout","setCollections","setQuery","setActiveItemId","setStatus","setTimeout","getState","getItems","isPanelOpen","highlightedItem","finally","getPropGetters","getEnvironmentProps","providedProps","inputElement","formElement","panelElement","onTouchStart","target","some","contextNode","document","activeElement","dispatch","onTouchMove","blur","getRootProps","rest","role","undefined","getFormProps","action","noValidate","preventDefault","getLabelProps","htmlFor","getInputProps","onFocus","isTouchDevice","maxLength","activeItem","value","autoComplete","autoCorrect","autoCapitalize","enterKeyHint","spellCheck","type","onChange","currentTarget","slice","onKeyDown","key","nodeItem","getElementById","scrollIntoViewIfNeeded","scrollIntoView","every","metaKey","ctrlKey","shiftKey","altKey","onBlur","onClick","getPanelProps","onMouseDown","onMouseLeave","getListProps","getItemProps","__autocomplete_id","onMouseMove","getCompletion","stateReducer","payload","options","subscribers","reducer","onStoreStateChange","prevState","createStore","rawValue","baseItemId","setContext","getAutocompleteSetters","propGetters","Event","subscribe","_plugin$subscribe","fn"],"mappings":"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"}
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@algolia/autocomplete-core",
3
3
  "description": "Core primitives for building autocomplete experiences.",
4
- "version": "1.0.0-alpha.43",
4
+ "version": "1.0.0-alpha.44",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/algolia/autocomplete",
7
- "repository": "algolia/autocomplete.js",
7
+ "repository": "algolia/autocomplete",
8
8
  "author": {
9
9
  "name": "Algolia, Inc.",
10
10
  "url": "https://www.algolia.com"
@@ -31,6 +31,6 @@
31
31
  "watch": "watch \"yarn on:change\" --ignoreDirectoryPattern \"/dist/\""
32
32
  },
33
33
  "dependencies": {
34
- "@algolia/autocomplete-shared": "1.0.0-alpha.43"
34
+ "@algolia/autocomplete-shared": "1.0.0-alpha.44"
35
35
  }
36
36
  }