@algolia/autocomplete-core 1.7.1 → 1.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- /*! @algolia/autocomplete-core 1.7.1 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete */
1
+ /*! @algolia/autocomplete-core 1.7.2 | 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) :
@@ -264,7 +264,7 @@
264
264
 
265
265
  var noop = function noop() {};
266
266
 
267
- var version = '1.7.1';
267
+ var version = '1.7.2';
268
268
 
269
269
  var userAgents = [{
270
270
  segment: 'autocomplete-core',
@@ -1 +1 @@
1
- {"version":3,"file":"index.development.js","sources":["../../../autocomplete-shared/dist/esm/decycle.js","../../../autocomplete-shared/dist/esm/flatten.js","../../../autocomplete-shared/dist/esm/generateAutocompleteId.js","../../../autocomplete-shared/dist/esm/getItemsCount.js","../../../autocomplete-shared/dist/esm/invariant.js","../../../autocomplete-shared/dist/esm/noop.js","../../../autocomplete-shared/dist/esm/version.js","../../../autocomplete-shared/dist/esm/userAgents.js","../../../autocomplete-shared/dist/esm/warn.js","../../src/checkOptions.ts","../../src/utils/createCancelablePromise.ts","../../src/utils/createCancelablePromiseList.ts","../../src/utils/createConcurrentSafePromise.ts","../../src/utils/getNextActiveItemId.ts","../../src/utils/getNormalizedSources.ts","../../src/utils/getActiveItem.ts","../../src/utils/isOrContainsNode.ts","../../src/utils/isSamsung.ts","../../src/utils/mapToAlgoliaResponse.ts","../../src/createStore.ts","../../src/getAutocompleteSetters.ts","../../src/getDefaultProps.ts","../../src/reshape.ts","../../src/resolve.ts","../../src/onInput.ts","../../src/onKeyDown.ts","../../src/getPropGetters.ts","../../src/metadata.ts","../../src/getCompletion.ts","../../src/stateReducer.ts","../../src/createAutocomplete.ts"],"sourcesContent":["function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n/**\n * Decycles objects with circular references.\n * This is used to print cyclic structures in development environment only.\n */\nexport function decycle(obj) {\n var seen = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Set();\n\n if (!(process.env.NODE_ENV !== 'production') || !obj || _typeof(obj) !== 'object') {\n return obj;\n }\n\n if (seen.has(obj)) {\n return '[Circular]';\n }\n\n var newSeen = seen.add(obj);\n\n if (Array.isArray(obj)) {\n return obj.map(function (x) {\n return decycle(x, newSeen);\n });\n }\n\n return Object.fromEntries(Object.entries(obj).map(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n key = _ref2[0],\n value = _ref2[1];\n\n return [key, decycle(value, newSeen)];\n }));\n}","export function flatten(values) {\n return values.reduce(function (a, b) {\n return a.concat(b);\n }, []);\n}","var autocompleteId = 0;\nexport function generateAutocompleteId() {\n return \"autocomplete-\".concat(autocompleteId++);\n}","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(typeof message === 'function' ? message() : message));\n }\n}","export var noop = function noop() {};","export var version = '1.7.1';","import { version } from './version';\nexport var userAgents = [{\n segment: 'autocomplete-core',\n version: version\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","type PromiseExecutor<TValue> = (\n resolve: (value: TValue | PromiseLike<TValue>) => void,\n reject: (reason?: any) => void\n) => void;\n\ntype CancelablePromiseState = {\n isCanceled: boolean;\n onCancelList: Array<(...args: any[]) => any>;\n};\n\nfunction createInternalCancelablePromise<TValue>(\n promise: Promise<TValue>,\n initialState: CancelablePromiseState\n): CancelablePromise<TValue> {\n const state = initialState;\n\n return {\n then(onfulfilled, onrejected) {\n return createInternalCancelablePromise(\n promise.then(\n createCallback(onfulfilled, state, promise),\n createCallback(onrejected, state, promise)\n ),\n state\n );\n },\n catch(onrejected) {\n return createInternalCancelablePromise(\n promise.catch(createCallback(onrejected, state, promise)),\n state\n );\n },\n finally(onfinally) {\n if (onfinally) {\n state.onCancelList.push(onfinally);\n }\n\n return createInternalCancelablePromise<TValue>(\n promise.finally(\n createCallback(\n onfinally &&\n (() => {\n state.onCancelList = [];\n\n return onfinally();\n }),\n state,\n promise\n )\n ),\n state\n );\n },\n cancel() {\n state.isCanceled = true;\n const callbacks = state.onCancelList;\n state.onCancelList = [];\n\n callbacks.forEach((callback) => {\n callback();\n });\n },\n isCanceled() {\n return state.isCanceled === true;\n },\n };\n}\n\nexport type CancelablePromise<TValue> = {\n then<TResultFulfilled = TValue, TResultRejected = never>(\n onfulfilled?:\n | ((\n value: TValue\n ) =>\n | TResultFulfilled\n | PromiseLike<TResultFulfilled>\n | CancelablePromise<TResultFulfilled>)\n | undefined\n | null,\n onrejected?:\n | ((\n reason: any\n ) =>\n | TResultRejected\n | PromiseLike<TResultRejected>\n | CancelablePromise<TResultRejected>)\n | undefined\n | null\n ): CancelablePromise<TResultFulfilled | TResultRejected>;\n catch<TResult = never>(\n onrejected?:\n | ((\n reason: any\n ) => TResult | PromiseLike<TResult> | CancelablePromise<TResult>)\n | undefined\n | null\n ): CancelablePromise<TValue | TResult>;\n finally(\n onfinally?: (() => void) | undefined | null\n ): CancelablePromise<TValue>;\n cancel(): void;\n isCanceled(): boolean;\n};\n\nexport function createCancelablePromise<TValue>(\n executor: PromiseExecutor<TValue>\n): CancelablePromise<TValue> {\n return createInternalCancelablePromise(\n new Promise<TValue>((resolve, reject) => {\n return executor(resolve, reject);\n }),\n { isCanceled: false, onCancelList: [] }\n );\n}\n\ncreateCancelablePromise.resolve = <TValue>(\n value?: TValue | PromiseLike<TValue> | CancelablePromise<TValue>\n) => cancelable(Promise.resolve(value));\n\ncreateCancelablePromise.reject = (reason?: any) =>\n cancelable(Promise.reject(reason));\n\nexport function cancelable<TValue>(promise: Promise<TValue>) {\n return createInternalCancelablePromise(promise, {\n isCanceled: false,\n onCancelList: [],\n });\n}\n\nfunction createCallback(\n onResult: ((...args: any[]) => any) | null | undefined,\n state: CancelablePromiseState,\n fallback: any\n) {\n if (!onResult) {\n return fallback;\n }\n\n return function callback(arg?: any) {\n if (state.isCanceled) {\n return arg;\n }\n\n return onResult(arg);\n };\n}\n","import { CancelablePromise } from '.';\n\nexport type CancelablePromiseList<TValue> = {\n /**\n * Add a cancelable promise to the list.\n *\n * @param cancelablePromise The cancelable promise to add.\n */\n add(cancelablePromise: CancelablePromise<TValue>): CancelablePromise<TValue>;\n /**\n * Cancel all pending promises.\n *\n * Requests aren't actually stopped. All pending promises will settle, but\n * attached handlers won't run.\n */\n cancelAll(): void;\n /**\n * Whether there are pending promises in the list.\n */\n isEmpty(): boolean;\n};\n\nexport function createCancelablePromiseList<\n TValue\n>(): CancelablePromiseList<TValue> {\n let list: Array<CancelablePromise<TValue>> = [];\n\n return {\n add(cancelablePromise) {\n list.push(cancelablePromise);\n\n return cancelablePromise.finally(() => {\n list = list.filter((item) => item !== cancelablePromise);\n });\n },\n cancelAll() {\n list.forEach((promise) => promise.cancel());\n },\n isEmpty() {\n return list.length === 0;\n },\n };\n}\n","import { MaybePromise } from '@algolia/autocomplete-shared';\n\n/**\n * Creates a runner that executes promises in a concurrent-safe way.\n *\n * This is useful to prevent older promises to resolve after a newer promise,\n * otherwise resulting in stale resolved values.\n */\nexport function createConcurrentSafePromise() {\n let basePromiseId = -1;\n let latestResolvedId = -1;\n let latestResolvedValue: unknown = undefined;\n\n return function runConcurrentSafePromise<TValue>(\n promise: MaybePromise<TValue>\n ) {\n basePromiseId++;\n const currentPromiseId = basePromiseId;\n\n return Promise.resolve(promise).then((x) => {\n // The promise might take too long to resolve and get outdated. This would\n // result in resolving stale values.\n // When this happens, we ignore the promise value and return the one\n // coming from the latest resolved value.\n //\n // +----------------------------------+\n // | 100ms |\n // | run(1) +---> R1 |\n // | 300ms |\n // | run(2) +-------------> R2 (SKIP) |\n // | 200ms |\n // | run(3) +--------> R3 |\n // +----------------------------------+\n if (latestResolvedValue && currentPromiseId < latestResolvedId) {\n return latestResolvedValue as TValue;\n }\n\n latestResolvedId = currentPromiseId;\n latestResolvedValue = x;\n\n return x;\n });\n };\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 (!itemCount) {\n return null;\n }\n\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","import { invariant, decycle, noop } from '@algolia/autocomplete-shared';\n\nimport {\n AutocompleteSource,\n BaseItem,\n GetSources,\n GetSourcesParams,\n InternalAutocompleteSource,\n InternalGetSources,\n} from '../types';\n\nexport function getNormalizedSources<TItem extends BaseItem>(\n getSources: GetSources<TItem>,\n params: GetSourcesParams<TItem>\n): ReturnType<InternalGetSources<TItem>> {\n const seenSourceIds: string[] = [];\n\n return Promise.resolve(getSources(params)).then((sources) => {\n invariant(\n Array.isArray(sources),\n () =>\n `The \\`getSources\\` function must return an array of sources but returned type ${JSON.stringify(\n typeof sources\n )}:\\n\\n${JSON.stringify(decycle(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 if (seenSourceIds.includes(source.sourceId)) {\n throw new Error(\n `[Autocomplete] The \\`sourceId\\` ${JSON.stringify(\n source.sourceId\n )} is not unique.`\n );\n }\n\n seenSourceIds.push(source.sourceId);\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","const regex = /((gt|sm)-|galaxy nexus)|samsung[- ]/i;\n\nexport function isSamsung(userAgent: string) {\n return Boolean(userAgent && userAgent.match(regex));\n}\n","import type {\n SearchForFacetValuesResponse,\n SearchResponse,\n} from '@algolia/client-search';\n\nexport function mapToAlgoliaResponse<THit>(\n rawResults: Array<SearchResponse<THit> | SearchForFacetValuesResponse>\n) {\n const results: Array<\n SearchResponse<THit> | SearchForFacetValuesResponse\n > = rawResults.map((result) => {\n return {\n ...result,\n hits: (result as SearchResponse<THit>).hits?.map((hit) => {\n // Bring support for the Insights plugin.\n return {\n ...hit,\n __autocomplete_indexName: (result as SearchResponse<THit>).index,\n __autocomplete_queryID: (result as SearchResponse<THit>).queryID,\n };\n }),\n };\n });\n\n return {\n results,\n hits: results\n .map((result) => (result as SearchResponse<THit>).hits)\n .filter(Boolean),\n facetHits: results\n .map((result) =>\n (result as SearchForFacetValuesResponse).facetHits?.map((facetHit) => {\n // Bring support for the highlighting components.\n return {\n label: facetHit.value,\n count: facetHit.count,\n _highlightResult: {\n label: {\n value: facetHit.highlighted,\n },\n },\n };\n })\n )\n .filter(Boolean),\n };\n}\n","import {\n AutocompleteState,\n AutocompleteStore,\n BaseItem,\n InternalAutocompleteOptions,\n Reducer,\n} from './types';\nimport { createCancelablePromiseList } from './utils';\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 pendingRequests: createCancelablePromiseList(),\n };\n}\n","import { flatten } from '@algolia/autocomplete-shared';\n\nimport {\n AutocompleteApi,\n AutocompleteCollection,\n AutocompleteStore,\n BaseItem,\n} from './types';\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 `getAlgoliaResults`\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 {\n getItemsCount,\n generateAutocompleteId,\n flatten,\n} from '@algolia/autocomplete-shared';\n\nimport {\n AutocompleteEnvironment,\n AutocompleteOptions,\n AutocompleteSubscribers,\n BaseItem,\n InternalAutocompleteOptions,\n} from './types';\nimport { getNormalizedSources } from './utils';\n\nexport function getDefaultProps<TItem extends BaseItem>(\n props: AutocompleteOptions<TItem>,\n pluginSubscribers: AutocompleteSubscribers<TItem>\n): InternalAutocompleteOptions<TItem> {\n /* eslint-disable no-restricted-globals */\n const environment: AutocompleteEnvironment = (typeof window !== 'undefined'\n ? window\n : {}) as typeof window;\n /* eslint-enable no-restricted-globals */\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 reshape: ({ sources }) => sources,\n ...props,\n // Since `generateAutocompleteId` triggers a side effect (it increments\n // an 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 { flatten } from '@algolia/autocomplete-shared';\n\nimport {\n AutocompleteCollection,\n AutocompleteReshapeSourcesBySourceId,\n AutocompleteState,\n BaseItem,\n InternalAutocompleteOptions,\n} from './types';\n\ntype ReshapeParams<TItem extends BaseItem> = {\n collections: Array<AutocompleteCollection<any>>;\n props: InternalAutocompleteOptions<TItem>;\n state: AutocompleteState<TItem>;\n};\n\nexport function reshape<TItem extends BaseItem>({\n collections,\n props,\n state,\n}: ReshapeParams<TItem>) {\n // Sources are grouped by `sourceId` to conveniently pick them via destructuring.\n // Example: `const { recentSearchesPlugin } = sourcesBySourceId`\n const sourcesBySourceId = collections.reduce<\n AutocompleteReshapeSourcesBySourceId<TItem>\n >(\n (acc, collection) => ({\n ...acc,\n [collection.source.sourceId]: {\n ...collection.source,\n getItems() {\n // We provide the resolved items from the collection to the `reshape` prop.\n return flatten<any>(collection.items);\n },\n },\n }),\n {}\n );\n\n const reshapeSources = props.reshape({\n sources: Object.values(sourcesBySourceId),\n sourcesBySourceId,\n state,\n });\n\n // We reconstruct the collections with the items modified by the `reshape` prop.\n return flatten(reshapeSources)\n .filter(Boolean)\n .map((source) => {\n return {\n source,\n items: source.getItems(),\n };\n });\n}\n","import type {\n Execute,\n ExecuteResponse,\n RequesterDescription,\n TransformResponse,\n} from '@algolia/autocomplete-preset-algolia';\nimport { decycle, flatten, invariant } from '@algolia/autocomplete-shared';\nimport {\n MultipleQueriesQuery,\n SearchForFacetValuesResponse,\n SearchResponse,\n} from '@algolia/client-search';\nimport type { SearchClient } from 'algoliasearch/lite';\n\nimport { BaseItem, InternalAutocompleteSource } from './types';\nimport { mapToAlgoliaResponse } from './utils';\n\nfunction isDescription<TItem extends BaseItem>(\n item:\n | RequestDescriptionPreResolved<TItem>\n | RequestDescriptionPreResolvedCustom<TItem>\n | PackedDescription<TItem>\n): item is RequestDescriptionPreResolved<TItem> {\n return Boolean((item as RequestDescriptionPreResolved<TItem>).execute);\n}\n\nfunction isRequesterDescription<TItem extends BaseItem>(\n description: TItem[] | TItem[][] | RequesterDescription<TItem>\n): description is RequesterDescription<TItem> {\n return Boolean((description as RequesterDescription<TItem>)?.execute);\n}\n\ntype PackedDescription<TItem extends BaseItem> = {\n searchClient: SearchClient;\n execute: Execute<TItem>;\n requesterId?: string;\n items: RequestDescriptionPreResolved<TItem>['requests'];\n};\n\ntype RequestDescriptionPreResolved<TItem extends BaseItem> = Pick<\n RequesterDescription<TItem>,\n 'execute' | 'requesterId' | 'searchClient' | 'transformResponse'\n> & {\n requests: Array<{\n query: MultipleQueriesQuery;\n sourceId: string;\n transformResponse: TransformResponse<TItem>;\n }>;\n};\n\ntype RequestDescriptionPreResolvedCustom<TItem extends BaseItem> = {\n items: TItem[] | TItem[][];\n sourceId: string;\n transformResponse?: undefined;\n};\n\nexport function preResolve<TItem extends BaseItem>(\n itemsOrDescription: TItem[] | TItem[][] | RequesterDescription<TItem>,\n sourceId: string\n):\n | RequestDescriptionPreResolved<TItem>\n | RequestDescriptionPreResolvedCustom<TItem> {\n if (isRequesterDescription<TItem>(itemsOrDescription)) {\n return {\n ...itemsOrDescription,\n requests: itemsOrDescription.queries.map((query) => ({\n query,\n sourceId,\n transformResponse: itemsOrDescription.transformResponse,\n })),\n };\n }\n\n return {\n items: itemsOrDescription,\n sourceId,\n };\n}\n\nexport function resolve<TItem extends BaseItem>(\n items: Array<\n | RequestDescriptionPreResolved<TItem>\n | RequestDescriptionPreResolvedCustom<TItem>\n >\n) {\n const packed = items.reduce<\n Array<RequestDescriptionPreResolvedCustom<TItem> | PackedDescription<TItem>>\n >((acc, current) => {\n if (!isDescription(current)) {\n acc.push(current);\n return acc;\n }\n\n const { searchClient, execute, requesterId, requests } = current;\n\n const container = acc.find<PackedDescription<TItem>>(\n (item): item is PackedDescription<TItem> => {\n return (\n isDescription(current) &&\n isDescription(item) &&\n item.searchClient === searchClient &&\n Boolean(requesterId) &&\n item.requesterId === requesterId\n );\n }\n );\n\n if (container) {\n container.items.push(...requests);\n } else {\n const request: PackedDescription<TItem> = {\n execute,\n requesterId,\n items: requests,\n searchClient,\n };\n acc.push(request);\n }\n\n return acc;\n }, []);\n\n const values = packed.map<\n | Promise<RequestDescriptionPreResolvedCustom<TItem>>\n | ReturnType<Execute<TItem>>\n >((maybeDescription) => {\n if (!isDescription<TItem>(maybeDescription)) {\n return Promise.resolve(\n maybeDescription as RequestDescriptionPreResolvedCustom<TItem>\n );\n }\n\n const {\n execute,\n items,\n searchClient,\n } = maybeDescription as PackedDescription<TItem>;\n\n return execute({\n searchClient,\n requests: items,\n });\n });\n\n return Promise.all<\n RequestDescriptionPreResolvedCustom<TItem> | ExecuteResponse<TItem>\n >(values).then((responses) =>\n flatten<\n RequestDescriptionPreResolvedCustom<TItem> | ExecuteResponse<TItem>[0]\n >(responses)\n );\n}\n\nexport function postResolve<TItem extends BaseItem>(\n responses: Array<\n RequestDescriptionPreResolvedCustom<TItem> | ExecuteResponse<TItem>[0]\n >,\n sources: Array<InternalAutocompleteSource<TItem>>\n) {\n return sources.map((source) => {\n const matches = responses.filter(\n (response) => response.sourceId === source.sourceId\n );\n const results = matches.map(({ items }) => items);\n const transform = matches[0].transformResponse;\n const items = transform\n ? transform(\n mapToAlgoliaResponse(\n results as Array<\n SearchForFacetValuesResponse | SearchResponse<TItem>\n >\n )\n )\n : results;\n\n invariant(\n Array.isArray(items),\n () => `The \\`getItems\\` function from source \"${\n source.sourceId\n }\" must return an array of items but returned type ${JSON.stringify(\n typeof items\n )}:\\n\\n${JSON.stringify(decycle(items), null, 2)}.\n\nSee: https://www.algolia.com/doc/ui-libraries/autocomplete/core-concepts/sources/#param-getitems`\n );\n\n invariant(\n (items as Array<typeof items>).every(Boolean),\n `The \\`getItems\\` function from source \"${\n source.sourceId\n }\" must return an array of items but returned ${JSON.stringify(\n undefined\n )}.\n\nDid you forget to return items?\n\nSee: https://www.algolia.com/doc/ui-libraries/autocomplete/core-concepts/sources/#param-getitems`\n );\n\n return {\n source,\n items,\n };\n });\n}\n","import { reshape } from './reshape';\nimport { preResolve, resolve, postResolve } from './resolve';\nimport {\n AutocompleteScopeApi,\n AutocompleteState,\n AutocompleteStore,\n BaseItem,\n InternalAutocompleteOptions,\n} from './types';\nimport {\n cancelable,\n CancelablePromise,\n createConcurrentSafePromise,\n getActiveItem,\n} 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\nconst runConcurrentSafePromise = createConcurrentSafePromise();\n\nexport function onInput<TItem extends BaseItem>({\n event,\n nextState = {},\n props,\n query,\n refresh,\n store,\n ...setters\n}: OnInputParams<TItem>): CancelablePromise<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 const collections = store.getState().collections.map((collection) => ({\n ...collection,\n items: [],\n }));\n\n setStatus('idle');\n setCollections(collections);\n setIsOpen(\n nextState.isOpen ?? props.shouldPanelOpen({ state: store.getState() })\n );\n\n // We make sure to update the latest resolved value of the tracked\n // promises to keep late resolving promises from \"cancelling\" the state\n // updates performed in this code path.\n // We chain with a void promise to respect `onInput`'s expected return type.\n const request = cancelable(\n runConcurrentSafePromise(collections).then(() => Promise.resolve())\n );\n\n return store.pendingRequests.add(request);\n }\n\n setStatus('loading');\n\n lastStalledId = props.environment.setTimeout(() => {\n setStatus('stalled');\n }, props.stallThreshold);\n\n // We track the entire promise chain triggered by `onInput` before mutating\n // the Autocomplete state to make sure that any state manipulation is based on\n // fresh data regardless of when promises individually resolve.\n // We don't track nested promises and only rely on the full chain resolution,\n // meaning we should only ever manipulate the state once this concurrent-safe\n // promise is resolved.\n const request = cancelable(\n runConcurrentSafePromise(\n props\n .getSources({\n query,\n refresh,\n state: store.getState(),\n ...setters,\n })\n .then((sources) => {\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((itemsOrDescription) =>\n preResolve<TItem>(itemsOrDescription, source.sourceId)\n );\n })\n )\n .then(resolve)\n .then((responses) => postResolve(responses, sources))\n .then((collections) =>\n reshape({ collections, props, state: store.getState() })\n );\n })\n )\n )\n .then((collections) => {\n // Parameters passed to `onInput` could be stale when the following code\n // executes, because `onInput` calls may not resolve in order.\n // If it becomes a problem we'll need to save the last passed parameters.\n // See: https://codesandbox.io/s/agitated-cookies-y290z\n\n setStatus('idle');\n\n setCollections(collections as any);\n\n const isPanelOpen = props.shouldPanelOpen({ 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 setStatus('idle');\n\n if (lastStalledId) {\n props.environment.clearTimeout(lastStalledId);\n }\n });\n\n return store.pendingRequests.add(request);\n}\n","import { onInput } from './onInput';\nimport {\n ActionType,\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 // eslint-disable-next-line no-inner-declarations\n function triggerScrollIntoView() {\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\n // eslint-disable-next-line no-inner-declarations\n function triggerOnActive() {\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\n // Default browser behavior changes the caret placement on ArrowUp and\n // ArrowDown.\n event.preventDefault();\n\n // When re-opening the panel, we need to split the logic to keep the actions\n // synchronized as `onInput` returns a promise.\n if (\n store.getState().isOpen === false &&\n (props.openOnFocus || Boolean(store.getState().query))\n ) {\n onInput({\n event,\n props,\n query: store.getState().query,\n refresh,\n store,\n ...setters,\n }).then(() => {\n store.dispatch(event.key as ActionType, {\n nextActiveItemId: props.defaultActiveItemId,\n });\n\n triggerOnActive();\n // Since we rely on the DOM, we need to wait for all the micro tasks to\n // finish (which include re-opening the panel) to make sure all the\n // elements are available.\n setTimeout(triggerScrollIntoView, 0);\n });\n } else {\n store.dispatch(event.key, {});\n\n triggerOnActive();\n triggerScrollIntoView();\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\n // Hitting the `Escape` key signals the end of a user interaction with the\n // autocomplete. At this point, we should ignore any requests that are still\n // pending and could reopen the panel once they resolve, because that would\n // result in an unsolicited UI behavior.\n store.pendingRequests.cancelAll();\n } else if (event.key === 'Tab') {\n store.dispatch('blur', null);\n\n // Hitting the `Escape` key signals the end of a user interaction with the\n // autocomplete. At this point, we should ignore any requests that are still\n // pending and could reopen the panel once they resolve, because that would\n // result in an unsolicited UI behavior.\n store.pendingRequests.cancelAll();\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 // If requests are still pending when the panel closes, they could reopen\n // the panel once they resolve.\n // We want to prevent any subsequent query from reopening the panel\n // because it would result in an unsolicited UI behavior.\n if (!props.debug) {\n store.pendingRequests.cancelAll();\n }\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 { noop } from '@algolia/autocomplete-shared';\n\nimport { 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, isSamsung } 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 function onMouseDownOrTouchStart(event: MouseEvent | TouchEvent) {\n // The `onTouchStart`/`onMouseDown` events shouldn't trigger the `blur`\n // handler when it's not an interaction with Autocomplete.\n // We detect it with the following heuristics:\n // - the panel is closed AND there are no pending requests\n // (no interaction with the autocomplete, no future state updates)\n // - OR the touched target is the input element (should open the panel)\n const isAutocompleteInteraction =\n store.getState().isOpen || !store.pendingRequests.isEmpty();\n\n if (!isAutocompleteInteraction || event.target === inputElement) {\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 isOrContainsNode(contextNode, event.target as Node);\n }\n );\n\n if (isTargetWithinAutocomplete === false) {\n store.dispatch('blur', null);\n\n // If requests are still pending when the user closes the panel, they\n // could reopen the panel once they resolve.\n // We want to prevent any subsequent query from reopening the panel\n // because it would result in an unsolicited UI behavior.\n if (!props.debug) {\n store.pendingRequests.cancelAll();\n }\n }\n }\n\n return {\n // We do not rely on the native `blur` event of the input to close the\n // panel, but rather on a custom `touchstart`/`mousedown` event outside\n // of the autocomplete elements.\n // This ensures we don't mistakenly interpret interactions within the\n // autocomplete (but outside of the input) as a signal to close the panel.\n // For example, clicking reset button causes an input blur, but if\n // `openOnFocus=true`, it shouldn't close the panel.\n // On touch devices, scrolling results (`touchmove`) causes an input blur\n // but shouldn't close the panel.\n onTouchStart: onMouseDownOrTouchStart,\n onMouseDown: onMouseDownOrTouchStart,\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 { inputElement, maxLength = 512, ...rest } = providedProps || {};\n const activeItem = getActiveItem(store.getState());\n\n const userAgent = props.environment.navigator?.userAgent || '';\n const shouldFallbackKeyHint = isSamsung(userAgent);\n const enterKeyHint =\n activeItem?.itemUrl && !shouldFallbackKeyHint ? 'go' : 'search';\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,\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 // We don't rely on the `blur` event.\n // See explanation in `onTouchStart`/`onMouseDown`.\n // @MAJOR See if we need to keep this handler.\n onBlur: noop,\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 { UserAgent, userAgents } from '@algolia/autocomplete-shared';\n\nimport {\n AutocompleteEnvironment,\n AutocompleteOptions,\n AutocompleteOptionsWithMetadata,\n AutocompletePlugin,\n BaseItem,\n} from '.';\n\ntype AutocompleteMetadata = {\n plugins: Array<{\n name: string | undefined;\n options: string[];\n }>;\n options: Record<string, string[]>;\n ua: UserAgent[];\n};\n\ntype GetMetadataParams<TItem extends BaseItem, TData = unknown> = {\n plugins: Array<AutocompletePlugin<TItem, TData>>;\n options: AutocompleteOptionsWithMetadata<TItem>;\n};\n\nexport function getMetadata<TItem extends BaseItem, TData = unknown>({\n plugins,\n options,\n}: GetMetadataParams<TItem, TData>) {\n const optionsKey = ((options.__autocomplete_metadata\n ?.userAgents as UserAgent[]) || [])[0]?.segment;\n\n const extraOptions = optionsKey\n ? {\n [optionsKey]: Object.keys(\n (options.__autocomplete_metadata\n ?.options as AutocompleteOptions<TItem>) || {}\n ),\n }\n : {};\n\n return {\n plugins: plugins.map((plugin) => ({\n name: plugin.name,\n options: Object.keys(plugin.__autocomplete_pluginOptions || []),\n })),\n options: {\n 'autocomplete-core': Object.keys(options),\n ...extraOptions,\n },\n ua: userAgents.concat(\n (options.__autocomplete_metadata?.userAgents as any) || []\n ),\n };\n}\n\ntype InlineMetadataParams = {\n metadata: AutocompleteMetadata;\n environment: AutocompleteEnvironment;\n};\n\nexport function injectMetadata({\n metadata,\n environment,\n}: InlineMetadataParams) {\n const isMetadataEnabled = environment.navigator?.userAgent?.includes(\n 'Algolia Crawler'\n );\n\n if (isMetadataEnabled) {\n const metadataContainer = environment.document.createElement('meta');\n const headRef = environment.document.querySelector('head');\n\n metadataContainer.name = 'algolia:metadata';\n\n setTimeout(() => {\n metadataContainer.content = JSON.stringify(metadata);\n headRef!.appendChild(metadataContainer);\n }, 0);\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 return getActiveItem(state)?.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: action.payload.hasOwnProperty('nextActiveItemId')\n ? action.payload.nextActiveItemId\n : 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 activeItemId: null,\n isOpen: false,\n completion: null,\n };\n }\n\n return {\n ...state,\n activeItemId: null,\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 { getMetadata, injectMetadata } from './metadata';\nimport { onInput } from './onInput';\nimport { stateReducer } from './stateReducer';\nimport {\n AutocompleteApi,\n AutocompleteOptions as AutocompleteCoreOptions,\n BaseItem,\n AutocompleteSubscribers,\n} from './types';\n\nexport interface AutocompleteOptionsWithMetadata<TItem extends BaseItem>\n extends AutocompleteCoreOptions<TItem> {\n /**\n * @internal\n */\n __autocomplete_metadata?: Record<string, unknown>;\n}\n\nexport function createAutocomplete<\n TItem extends BaseItem,\n TEvent = Event,\n TMouseEvent = MouseEvent,\n TKeyboardEvent = KeyboardEvent\n>(\n options: AutocompleteOptionsWithMetadata<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 injectMetadata({\n metadata: getMetadata({ plugins: props.plugins, options }),\n environment: props.environment,\n });\n\n return {\n refresh,\n ...propGetters,\n ...setters,\n };\n}\n"],"names":["_slicedToArray","arr","i","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","TypeError","o","minLen","_arrayLikeToArray","n","Object","prototype","toString","call","slice","constructor","name","Array","from","test","len","length","arr2","_i","Symbol","iterator","_arr","_n","_d","_s","_e","next","done","push","value","err","isArray","_typeof","obj","decycle","seen","arguments","undefined","Set","has","newSeen","add","map","x","fromEntries","entries","_ref","_ref2","key","flatten","values","reduce","a","b","concat","autocompleteId","generateAutocompleteId","getItemsCount","state","collections","sum","collection","items","invariant","condition","message","Error","noop","version","userAgents","segment","warnCache","current","warn","sanitizedMessage","trim","hasAlreadyPrinted","console","checkOptions","options","process","debug","createInternalCancelablePromise","promise","initialState","then","onfulfilled","onrejected","createCallback","catch","finally","onfinally","onCancelList","cancel","isCanceled","callbacks","forEach","callback","cancelable","onResult","fallback","arg","createCancelablePromiseList","list","cancelablePromise","filter","item","cancelAll","isEmpty","createConcurrentSafePromise","basePromiseId","latestResolvedId","latestResolvedValue","runConcurrentSafePromise","currentPromiseId","Promise","resolve","getNextActiveItemId","moveAmount","baseIndex","itemCount","defaultActiveItemId","numericIndex","getNormalizedSources","getSources","params","seenSourceIds","sources","JSON","stringify","all","maybeSource","Boolean","source","sourceId","includes","normalizedSource","getItemInputValue","query","getItemUrl","onSelect","setIsOpen","onActive","getCollectionFromActiveItemId","accumulatedCollectionsCount","acc","collectionsCount","index","previousValue","nextValue","collectionIndex","activeItemId","getRelativeActiveItemId","isOffsetFound","counter","previousItemsOffset","currentCollection","getActiveItem","itemInputValue","itemUrl","isOrContainsNode","parent","child","contains","regex","isSamsung","userAgent","match","mapToAlgoliaResponse","rawResults","results","result","hits","hit","__autocomplete_indexName","__autocomplete_queryID","queryID","facetHits","facetHit","label","count","_highlightResult","highlighted","createStore","reducer","props","onStoreStateChange","getState","dispatch","action","payload","prevState","type","pendingRequests","getAutocompleteSetters","store","setActiveItemId","setQuery","setCollections","rawValue","baseItemId","__autocomplete_id","setStatus","setContext","getDefaultProps","pluginSubscribers","environment","window","plugins","openOnFocus","placeholder","autoFocus","stallThreshold","shouldPanelOpen","reshape","id","completion","isOpen","status","context","onStateChange","onSubmit","onReset","plugin","nested","navigator","navigate","location","assign","navigateNewTab","windowReference","open","focus","navigateNewWindow","sourcesBySourceId","getItems","reshapeSources","isDescription","execute","isRequesterDescription","description","preResolve","itemsOrDescription","requests","queries","transformResponse","packed","searchClient","requesterId","container","find","request","maybeDescription","responses","postResolve","matches","response","transform","every","lastStalledId","onInput","event","nextState","refresh","setters","clearTimeout","setTimeout","isPanelOpen","highlightedItem","onKeyDown","triggerScrollIntoView","nodeItem","document","getElementById","scrollIntoViewIfNeeded","scrollIntoView","triggerOnActive","preventDefault","nextActiveItemId","metaKey","ctrlKey","shiftKey","altKey","getPropGetters","getEnvironmentProps","providedProps","inputElement","formElement","panelElement","rest","onMouseDownOrTouchStart","isAutocompleteInteraction","target","isTargetWithinAutocomplete","some","contextNode","onTouchStart","onMouseDown","onTouchMove","activeElement","blur","getRootProps","role","getFormProps","noValidate","getInputProps","onFocus","maxLength","activeItem","shouldFallbackKeyHint","enterKeyHint","autoComplete","autoCorrect","autoCapitalize","spellCheck","onChange","currentTarget","onBlur","onClick","getLabelProps","htmlFor","getListProps","getPanelProps","onMouseLeave","getItemProps","onMouseMove","runPreCommand","getMetadata","optionsKey","__autocomplete_metadata","extraOptions","keys","__autocomplete_pluginOptions","ua","injectMetadata","metadata","isMetadataEnabled","metadataContainer","createElement","headRef","querySelector","content","appendChild","getCompletion","stateReducer","hasOwnProperty","createAutocomplete","subscribers","propGetters","Event","subscribe","fn"],"mappings":"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"}
1
+ {"version":3,"file":"index.development.js","sources":["../../../autocomplete-shared/dist/esm/decycle.js","../../../autocomplete-shared/dist/esm/flatten.js","../../../autocomplete-shared/dist/esm/generateAutocompleteId.js","../../../autocomplete-shared/dist/esm/getItemsCount.js","../../../autocomplete-shared/dist/esm/invariant.js","../../../autocomplete-shared/dist/esm/noop.js","../../../autocomplete-shared/dist/esm/version.js","../../../autocomplete-shared/dist/esm/userAgents.js","../../../autocomplete-shared/dist/esm/warn.js","../../src/checkOptions.ts","../../src/utils/createCancelablePromise.ts","../../src/utils/createCancelablePromiseList.ts","../../src/utils/createConcurrentSafePromise.ts","../../src/utils/getNextActiveItemId.ts","../../src/utils/getNormalizedSources.ts","../../src/utils/getActiveItem.ts","../../src/utils/isOrContainsNode.ts","../../src/utils/isSamsung.ts","../../src/utils/mapToAlgoliaResponse.ts","../../src/createStore.ts","../../src/getAutocompleteSetters.ts","../../src/getDefaultProps.ts","../../src/reshape.ts","../../src/resolve.ts","../../src/onInput.ts","../../src/onKeyDown.ts","../../src/getPropGetters.ts","../../src/metadata.ts","../../src/getCompletion.ts","../../src/stateReducer.ts","../../src/createAutocomplete.ts"],"sourcesContent":["function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n/**\n * Decycles objects with circular references.\n * This is used to print cyclic structures in development environment only.\n */\nexport function decycle(obj) {\n var seen = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Set();\n\n if (!(process.env.NODE_ENV !== 'production') || !obj || _typeof(obj) !== 'object') {\n return obj;\n }\n\n if (seen.has(obj)) {\n return '[Circular]';\n }\n\n var newSeen = seen.add(obj);\n\n if (Array.isArray(obj)) {\n return obj.map(function (x) {\n return decycle(x, newSeen);\n });\n }\n\n return Object.fromEntries(Object.entries(obj).map(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n key = _ref2[0],\n value = _ref2[1];\n\n return [key, decycle(value, newSeen)];\n }));\n}","export function flatten(values) {\n return values.reduce(function (a, b) {\n return a.concat(b);\n }, []);\n}","var autocompleteId = 0;\nexport function generateAutocompleteId() {\n return \"autocomplete-\".concat(autocompleteId++);\n}","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(typeof message === 'function' ? message() : message));\n }\n}","export var noop = function noop() {};","export var version = '1.7.2';","import { version } from './version';\nexport var userAgents = [{\n segment: 'autocomplete-core',\n version: version\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","type PromiseExecutor<TValue> = (\n resolve: (value: TValue | PromiseLike<TValue>) => void,\n reject: (reason?: any) => void\n) => void;\n\ntype CancelablePromiseState = {\n isCanceled: boolean;\n onCancelList: Array<(...args: any[]) => any>;\n};\n\nfunction createInternalCancelablePromise<TValue>(\n promise: Promise<TValue>,\n initialState: CancelablePromiseState\n): CancelablePromise<TValue> {\n const state = initialState;\n\n return {\n then(onfulfilled, onrejected) {\n return createInternalCancelablePromise(\n promise.then(\n createCallback(onfulfilled, state, promise),\n createCallback(onrejected, state, promise)\n ),\n state\n );\n },\n catch(onrejected) {\n return createInternalCancelablePromise(\n promise.catch(createCallback(onrejected, state, promise)),\n state\n );\n },\n finally(onfinally) {\n if (onfinally) {\n state.onCancelList.push(onfinally);\n }\n\n return createInternalCancelablePromise<TValue>(\n promise.finally(\n createCallback(\n onfinally &&\n (() => {\n state.onCancelList = [];\n\n return onfinally();\n }),\n state,\n promise\n )\n ),\n state\n );\n },\n cancel() {\n state.isCanceled = true;\n const callbacks = state.onCancelList;\n state.onCancelList = [];\n\n callbacks.forEach((callback) => {\n callback();\n });\n },\n isCanceled() {\n return state.isCanceled === true;\n },\n };\n}\n\nexport type CancelablePromise<TValue> = {\n then<TResultFulfilled = TValue, TResultRejected = never>(\n onfulfilled?:\n | ((\n value: TValue\n ) =>\n | TResultFulfilled\n | PromiseLike<TResultFulfilled>\n | CancelablePromise<TResultFulfilled>)\n | undefined\n | null,\n onrejected?:\n | ((\n reason: any\n ) =>\n | TResultRejected\n | PromiseLike<TResultRejected>\n | CancelablePromise<TResultRejected>)\n | undefined\n | null\n ): CancelablePromise<TResultFulfilled | TResultRejected>;\n catch<TResult = never>(\n onrejected?:\n | ((\n reason: any\n ) => TResult | PromiseLike<TResult> | CancelablePromise<TResult>)\n | undefined\n | null\n ): CancelablePromise<TValue | TResult>;\n finally(\n onfinally?: (() => void) | undefined | null\n ): CancelablePromise<TValue>;\n cancel(): void;\n isCanceled(): boolean;\n};\n\nexport function createCancelablePromise<TValue>(\n executor: PromiseExecutor<TValue>\n): CancelablePromise<TValue> {\n return createInternalCancelablePromise(\n new Promise<TValue>((resolve, reject) => {\n return executor(resolve, reject);\n }),\n { isCanceled: false, onCancelList: [] }\n );\n}\n\ncreateCancelablePromise.resolve = <TValue>(\n value?: TValue | PromiseLike<TValue> | CancelablePromise<TValue>\n) => cancelable(Promise.resolve(value));\n\ncreateCancelablePromise.reject = (reason?: any) =>\n cancelable(Promise.reject(reason));\n\nexport function cancelable<TValue>(promise: Promise<TValue>) {\n return createInternalCancelablePromise(promise, {\n isCanceled: false,\n onCancelList: [],\n });\n}\n\nfunction createCallback(\n onResult: ((...args: any[]) => any) | null | undefined,\n state: CancelablePromiseState,\n fallback: any\n) {\n if (!onResult) {\n return fallback;\n }\n\n return function callback(arg?: any) {\n if (state.isCanceled) {\n return arg;\n }\n\n return onResult(arg);\n };\n}\n","import { CancelablePromise } from '.';\n\nexport type CancelablePromiseList<TValue> = {\n /**\n * Add a cancelable promise to the list.\n *\n * @param cancelablePromise The cancelable promise to add.\n */\n add(cancelablePromise: CancelablePromise<TValue>): CancelablePromise<TValue>;\n /**\n * Cancel all pending promises.\n *\n * Requests aren't actually stopped. All pending promises will settle, but\n * attached handlers won't run.\n */\n cancelAll(): void;\n /**\n * Whether there are pending promises in the list.\n */\n isEmpty(): boolean;\n};\n\nexport function createCancelablePromiseList<\n TValue\n>(): CancelablePromiseList<TValue> {\n let list: Array<CancelablePromise<TValue>> = [];\n\n return {\n add(cancelablePromise) {\n list.push(cancelablePromise);\n\n return cancelablePromise.finally(() => {\n list = list.filter((item) => item !== cancelablePromise);\n });\n },\n cancelAll() {\n list.forEach((promise) => promise.cancel());\n },\n isEmpty() {\n return list.length === 0;\n },\n };\n}\n","import { MaybePromise } from '@algolia/autocomplete-shared';\n\n/**\n * Creates a runner that executes promises in a concurrent-safe way.\n *\n * This is useful to prevent older promises to resolve after a newer promise,\n * otherwise resulting in stale resolved values.\n */\nexport function createConcurrentSafePromise() {\n let basePromiseId = -1;\n let latestResolvedId = -1;\n let latestResolvedValue: unknown = undefined;\n\n return function runConcurrentSafePromise<TValue>(\n promise: MaybePromise<TValue>\n ) {\n basePromiseId++;\n const currentPromiseId = basePromiseId;\n\n return Promise.resolve(promise).then((x) => {\n // The promise might take too long to resolve and get outdated. This would\n // result in resolving stale values.\n // When this happens, we ignore the promise value and return the one\n // coming from the latest resolved value.\n //\n // +----------------------------------+\n // | 100ms |\n // | run(1) +---> R1 |\n // | 300ms |\n // | run(2) +-------------> R2 (SKIP) |\n // | 200ms |\n // | run(3) +--------> R3 |\n // +----------------------------------+\n if (latestResolvedValue && currentPromiseId < latestResolvedId) {\n return latestResolvedValue as TValue;\n }\n\n latestResolvedId = currentPromiseId;\n latestResolvedValue = x;\n\n return x;\n });\n };\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 (!itemCount) {\n return null;\n }\n\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","import { invariant, decycle, noop } from '@algolia/autocomplete-shared';\n\nimport {\n AutocompleteSource,\n BaseItem,\n GetSources,\n GetSourcesParams,\n InternalAutocompleteSource,\n InternalGetSources,\n} from '../types';\n\nexport function getNormalizedSources<TItem extends BaseItem>(\n getSources: GetSources<TItem>,\n params: GetSourcesParams<TItem>\n): ReturnType<InternalGetSources<TItem>> {\n const seenSourceIds: string[] = [];\n\n return Promise.resolve(getSources(params)).then((sources) => {\n invariant(\n Array.isArray(sources),\n () =>\n `The \\`getSources\\` function must return an array of sources but returned type ${JSON.stringify(\n typeof sources\n )}:\\n\\n${JSON.stringify(decycle(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 if (seenSourceIds.includes(source.sourceId)) {\n throw new Error(\n `[Autocomplete] The \\`sourceId\\` ${JSON.stringify(\n source.sourceId\n )} is not unique.`\n );\n }\n\n seenSourceIds.push(source.sourceId);\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","const regex = /((gt|sm)-|galaxy nexus)|samsung[- ]/i;\n\nexport function isSamsung(userAgent: string) {\n return Boolean(userAgent && userAgent.match(regex));\n}\n","import type {\n SearchForFacetValuesResponse,\n SearchResponse,\n} from '@algolia/client-search';\n\nexport function mapToAlgoliaResponse<THit>(\n rawResults: Array<SearchResponse<THit> | SearchForFacetValuesResponse>\n) {\n const results: Array<\n SearchResponse<THit> | SearchForFacetValuesResponse\n > = rawResults.map((result) => {\n return {\n ...result,\n hits: (result as SearchResponse<THit>).hits?.map((hit) => {\n // Bring support for the Insights plugin.\n return {\n ...hit,\n __autocomplete_indexName: (result as SearchResponse<THit>).index,\n __autocomplete_queryID: (result as SearchResponse<THit>).queryID,\n };\n }),\n };\n });\n\n return {\n results,\n hits: results\n .map((result) => (result as SearchResponse<THit>).hits)\n .filter(Boolean),\n facetHits: results\n .map((result) =>\n (result as SearchForFacetValuesResponse).facetHits?.map((facetHit) => {\n // Bring support for the highlighting components.\n return {\n label: facetHit.value,\n count: facetHit.count,\n _highlightResult: {\n label: {\n value: facetHit.highlighted,\n },\n },\n };\n })\n )\n .filter(Boolean),\n };\n}\n","import {\n AutocompleteState,\n AutocompleteStore,\n BaseItem,\n InternalAutocompleteOptions,\n Reducer,\n} from './types';\nimport { createCancelablePromiseList } from './utils';\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 pendingRequests: createCancelablePromiseList(),\n };\n}\n","import { flatten } from '@algolia/autocomplete-shared';\n\nimport {\n AutocompleteApi,\n AutocompleteCollection,\n AutocompleteStore,\n BaseItem,\n} from './types';\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 `getAlgoliaResults`\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 {\n getItemsCount,\n generateAutocompleteId,\n flatten,\n} from '@algolia/autocomplete-shared';\n\nimport {\n AutocompleteEnvironment,\n AutocompleteOptions,\n AutocompleteSubscribers,\n BaseItem,\n InternalAutocompleteOptions,\n} from './types';\nimport { getNormalizedSources } from './utils';\n\nexport function getDefaultProps<TItem extends BaseItem>(\n props: AutocompleteOptions<TItem>,\n pluginSubscribers: AutocompleteSubscribers<TItem>\n): InternalAutocompleteOptions<TItem> {\n /* eslint-disable no-restricted-globals */\n const environment: AutocompleteEnvironment = (typeof window !== 'undefined'\n ? window\n : {}) as typeof window;\n /* eslint-enable no-restricted-globals */\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 reshape: ({ sources }) => sources,\n ...props,\n // Since `generateAutocompleteId` triggers a side effect (it increments\n // an 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 { flatten } from '@algolia/autocomplete-shared';\n\nimport {\n AutocompleteCollection,\n AutocompleteReshapeSourcesBySourceId,\n AutocompleteState,\n BaseItem,\n InternalAutocompleteOptions,\n} from './types';\n\ntype ReshapeParams<TItem extends BaseItem> = {\n collections: Array<AutocompleteCollection<any>>;\n props: InternalAutocompleteOptions<TItem>;\n state: AutocompleteState<TItem>;\n};\n\nexport function reshape<TItem extends BaseItem>({\n collections,\n props,\n state,\n}: ReshapeParams<TItem>) {\n // Sources are grouped by `sourceId` to conveniently pick them via destructuring.\n // Example: `const { recentSearchesPlugin } = sourcesBySourceId`\n const sourcesBySourceId = collections.reduce<\n AutocompleteReshapeSourcesBySourceId<TItem>\n >(\n (acc, collection) => ({\n ...acc,\n [collection.source.sourceId]: {\n ...collection.source,\n getItems() {\n // We provide the resolved items from the collection to the `reshape` prop.\n return flatten<any>(collection.items);\n },\n },\n }),\n {}\n );\n\n const reshapeSources = props.reshape({\n sources: Object.values(sourcesBySourceId),\n sourcesBySourceId,\n state,\n });\n\n // We reconstruct the collections with the items modified by the `reshape` prop.\n return flatten(reshapeSources)\n .filter(Boolean)\n .map((source) => {\n return {\n source,\n items: source.getItems(),\n };\n });\n}\n","import type {\n Execute,\n ExecuteResponse,\n RequesterDescription,\n TransformResponse,\n} from '@algolia/autocomplete-preset-algolia';\nimport { decycle, flatten, invariant } from '@algolia/autocomplete-shared';\nimport {\n MultipleQueriesQuery,\n SearchForFacetValuesResponse,\n SearchResponse,\n} from '@algolia/client-search';\nimport type { SearchClient } from 'algoliasearch/lite';\n\nimport { BaseItem, InternalAutocompleteSource } from './types';\nimport { mapToAlgoliaResponse } from './utils';\n\nfunction isDescription<TItem extends BaseItem>(\n item:\n | RequestDescriptionPreResolved<TItem>\n | RequestDescriptionPreResolvedCustom<TItem>\n | PackedDescription<TItem>\n): item is RequestDescriptionPreResolved<TItem> {\n return Boolean((item as RequestDescriptionPreResolved<TItem>).execute);\n}\n\nfunction isRequesterDescription<TItem extends BaseItem>(\n description: TItem[] | TItem[][] | RequesterDescription<TItem>\n): description is RequesterDescription<TItem> {\n return Boolean((description as RequesterDescription<TItem>)?.execute);\n}\n\ntype PackedDescription<TItem extends BaseItem> = {\n searchClient: SearchClient;\n execute: Execute<TItem>;\n requesterId?: string;\n items: RequestDescriptionPreResolved<TItem>['requests'];\n};\n\ntype RequestDescriptionPreResolved<TItem extends BaseItem> = Pick<\n RequesterDescription<TItem>,\n 'execute' | 'requesterId' | 'searchClient' | 'transformResponse'\n> & {\n requests: Array<{\n query: MultipleQueriesQuery;\n sourceId: string;\n transformResponse: TransformResponse<TItem>;\n }>;\n};\n\ntype RequestDescriptionPreResolvedCustom<TItem extends BaseItem> = {\n items: TItem[] | TItem[][];\n sourceId: string;\n transformResponse?: undefined;\n};\n\nexport function preResolve<TItem extends BaseItem>(\n itemsOrDescription: TItem[] | TItem[][] | RequesterDescription<TItem>,\n sourceId: string\n):\n | RequestDescriptionPreResolved<TItem>\n | RequestDescriptionPreResolvedCustom<TItem> {\n if (isRequesterDescription<TItem>(itemsOrDescription)) {\n return {\n ...itemsOrDescription,\n requests: itemsOrDescription.queries.map((query) => ({\n query,\n sourceId,\n transformResponse: itemsOrDescription.transformResponse,\n })),\n };\n }\n\n return {\n items: itemsOrDescription,\n sourceId,\n };\n}\n\nexport function resolve<TItem extends BaseItem>(\n items: Array<\n | RequestDescriptionPreResolved<TItem>\n | RequestDescriptionPreResolvedCustom<TItem>\n >\n) {\n const packed = items.reduce<\n Array<RequestDescriptionPreResolvedCustom<TItem> | PackedDescription<TItem>>\n >((acc, current) => {\n if (!isDescription(current)) {\n acc.push(current);\n return acc;\n }\n\n const { searchClient, execute, requesterId, requests } = current;\n\n const container = acc.find<PackedDescription<TItem>>(\n (item): item is PackedDescription<TItem> => {\n return (\n isDescription(current) &&\n isDescription(item) &&\n item.searchClient === searchClient &&\n Boolean(requesterId) &&\n item.requesterId === requesterId\n );\n }\n );\n\n if (container) {\n container.items.push(...requests);\n } else {\n const request: PackedDescription<TItem> = {\n execute,\n requesterId,\n items: requests,\n searchClient,\n };\n acc.push(request);\n }\n\n return acc;\n }, []);\n\n const values = packed.map<\n | Promise<RequestDescriptionPreResolvedCustom<TItem>>\n | ReturnType<Execute<TItem>>\n >((maybeDescription) => {\n if (!isDescription<TItem>(maybeDescription)) {\n return Promise.resolve(\n maybeDescription as RequestDescriptionPreResolvedCustom<TItem>\n );\n }\n\n const {\n execute,\n items,\n searchClient,\n } = maybeDescription as PackedDescription<TItem>;\n\n return execute({\n searchClient,\n requests: items,\n });\n });\n\n return Promise.all<\n RequestDescriptionPreResolvedCustom<TItem> | ExecuteResponse<TItem>\n >(values).then((responses) =>\n flatten<\n RequestDescriptionPreResolvedCustom<TItem> | ExecuteResponse<TItem>[0]\n >(responses)\n );\n}\n\nexport function postResolve<TItem extends BaseItem>(\n responses: Array<\n RequestDescriptionPreResolvedCustom<TItem> | ExecuteResponse<TItem>[0]\n >,\n sources: Array<InternalAutocompleteSource<TItem>>\n) {\n return sources.map((source) => {\n const matches = responses.filter(\n (response) => response.sourceId === source.sourceId\n );\n const results = matches.map(({ items }) => items);\n const transform = matches[0].transformResponse;\n const items = transform\n ? transform(\n mapToAlgoliaResponse(\n results as Array<\n SearchForFacetValuesResponse | SearchResponse<TItem>\n >\n )\n )\n : results;\n\n invariant(\n Array.isArray(items),\n () => `The \\`getItems\\` function from source \"${\n source.sourceId\n }\" must return an array of items but returned type ${JSON.stringify(\n typeof items\n )}:\\n\\n${JSON.stringify(decycle(items), null, 2)}.\n\nSee: https://www.algolia.com/doc/ui-libraries/autocomplete/core-concepts/sources/#param-getitems`\n );\n\n invariant(\n (items as Array<typeof items>).every(Boolean),\n `The \\`getItems\\` function from source \"${\n source.sourceId\n }\" must return an array of items but returned ${JSON.stringify(\n undefined\n )}.\n\nDid you forget to return items?\n\nSee: https://www.algolia.com/doc/ui-libraries/autocomplete/core-concepts/sources/#param-getitems`\n );\n\n return {\n source,\n items,\n };\n });\n}\n","import { reshape } from './reshape';\nimport { preResolve, resolve, postResolve } from './resolve';\nimport {\n AutocompleteScopeApi,\n AutocompleteState,\n AutocompleteStore,\n BaseItem,\n InternalAutocompleteOptions,\n} from './types';\nimport {\n cancelable,\n CancelablePromise,\n createConcurrentSafePromise,\n getActiveItem,\n} 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\nconst runConcurrentSafePromise = createConcurrentSafePromise();\n\nexport function onInput<TItem extends BaseItem>({\n event,\n nextState = {},\n props,\n query,\n refresh,\n store,\n ...setters\n}: OnInputParams<TItem>): CancelablePromise<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 const collections = store.getState().collections.map((collection) => ({\n ...collection,\n items: [],\n }));\n\n setStatus('idle');\n setCollections(collections);\n setIsOpen(\n nextState.isOpen ?? props.shouldPanelOpen({ state: store.getState() })\n );\n\n // We make sure to update the latest resolved value of the tracked\n // promises to keep late resolving promises from \"cancelling\" the state\n // updates performed in this code path.\n // We chain with a void promise to respect `onInput`'s expected return type.\n const request = cancelable(\n runConcurrentSafePromise(collections).then(() => Promise.resolve())\n );\n\n return store.pendingRequests.add(request);\n }\n\n setStatus('loading');\n\n lastStalledId = props.environment.setTimeout(() => {\n setStatus('stalled');\n }, props.stallThreshold);\n\n // We track the entire promise chain triggered by `onInput` before mutating\n // the Autocomplete state to make sure that any state manipulation is based on\n // fresh data regardless of when promises individually resolve.\n // We don't track nested promises and only rely on the full chain resolution,\n // meaning we should only ever manipulate the state once this concurrent-safe\n // promise is resolved.\n const request = cancelable(\n runConcurrentSafePromise(\n props\n .getSources({\n query,\n refresh,\n state: store.getState(),\n ...setters,\n })\n .then((sources) => {\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((itemsOrDescription) =>\n preResolve<TItem>(itemsOrDescription, source.sourceId)\n );\n })\n )\n .then(resolve)\n .then((responses) => postResolve(responses, sources))\n .then((collections) =>\n reshape({ collections, props, state: store.getState() })\n );\n })\n )\n )\n .then((collections) => {\n // Parameters passed to `onInput` could be stale when the following code\n // executes, because `onInput` calls may not resolve in order.\n // If it becomes a problem we'll need to save the last passed parameters.\n // See: https://codesandbox.io/s/agitated-cookies-y290z\n\n setStatus('idle');\n\n setCollections(collections as any);\n\n const isPanelOpen = props.shouldPanelOpen({ 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 setStatus('idle');\n\n if (lastStalledId) {\n props.environment.clearTimeout(lastStalledId);\n }\n });\n\n return store.pendingRequests.add(request);\n}\n","import { onInput } from './onInput';\nimport {\n ActionType,\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 // eslint-disable-next-line no-inner-declarations\n function triggerScrollIntoView() {\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\n // eslint-disable-next-line no-inner-declarations\n function triggerOnActive() {\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\n // Default browser behavior changes the caret placement on ArrowUp and\n // ArrowDown.\n event.preventDefault();\n\n // When re-opening the panel, we need to split the logic to keep the actions\n // synchronized as `onInput` returns a promise.\n if (\n store.getState().isOpen === false &&\n (props.openOnFocus || Boolean(store.getState().query))\n ) {\n onInput({\n event,\n props,\n query: store.getState().query,\n refresh,\n store,\n ...setters,\n }).then(() => {\n store.dispatch(event.key as ActionType, {\n nextActiveItemId: props.defaultActiveItemId,\n });\n\n triggerOnActive();\n // Since we rely on the DOM, we need to wait for all the micro tasks to\n // finish (which include re-opening the panel) to make sure all the\n // elements are available.\n setTimeout(triggerScrollIntoView, 0);\n });\n } else {\n store.dispatch(event.key, {});\n\n triggerOnActive();\n triggerScrollIntoView();\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\n // Hitting the `Escape` key signals the end of a user interaction with the\n // autocomplete. At this point, we should ignore any requests that are still\n // pending and could reopen the panel once they resolve, because that would\n // result in an unsolicited UI behavior.\n store.pendingRequests.cancelAll();\n } else if (event.key === 'Tab') {\n store.dispatch('blur', null);\n\n // Hitting the `Escape` key signals the end of a user interaction with the\n // autocomplete. At this point, we should ignore any requests that are still\n // pending and could reopen the panel once they resolve, because that would\n // result in an unsolicited UI behavior.\n store.pendingRequests.cancelAll();\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 // If requests are still pending when the panel closes, they could reopen\n // the panel once they resolve.\n // We want to prevent any subsequent query from reopening the panel\n // because it would result in an unsolicited UI behavior.\n if (!props.debug) {\n store.pendingRequests.cancelAll();\n }\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 { noop } from '@algolia/autocomplete-shared';\n\nimport { 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, isSamsung } 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 function onMouseDownOrTouchStart(event: MouseEvent | TouchEvent) {\n // The `onTouchStart`/`onMouseDown` events shouldn't trigger the `blur`\n // handler when it's not an interaction with Autocomplete.\n // We detect it with the following heuristics:\n // - the panel is closed AND there are no pending requests\n // (no interaction with the autocomplete, no future state updates)\n // - OR the touched target is the input element (should open the panel)\n const isAutocompleteInteraction =\n store.getState().isOpen || !store.pendingRequests.isEmpty();\n\n if (!isAutocompleteInteraction || event.target === inputElement) {\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 isOrContainsNode(contextNode, event.target as Node);\n }\n );\n\n if (isTargetWithinAutocomplete === false) {\n store.dispatch('blur', null);\n\n // If requests are still pending when the user closes the panel, they\n // could reopen the panel once they resolve.\n // We want to prevent any subsequent query from reopening the panel\n // because it would result in an unsolicited UI behavior.\n if (!props.debug) {\n store.pendingRequests.cancelAll();\n }\n }\n }\n\n return {\n // We do not rely on the native `blur` event of the input to close the\n // panel, but rather on a custom `touchstart`/`mousedown` event outside\n // of the autocomplete elements.\n // This ensures we don't mistakenly interpret interactions within the\n // autocomplete (but outside of the input) as a signal to close the panel.\n // For example, clicking reset button causes an input blur, but if\n // `openOnFocus=true`, it shouldn't close the panel.\n // On touch devices, scrolling results (`touchmove`) causes an input blur\n // but shouldn't close the panel.\n onTouchStart: onMouseDownOrTouchStart,\n onMouseDown: onMouseDownOrTouchStart,\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 { inputElement, maxLength = 512, ...rest } = providedProps || {};\n const activeItem = getActiveItem(store.getState());\n\n const userAgent = props.environment.navigator?.userAgent || '';\n const shouldFallbackKeyHint = isSamsung(userAgent);\n const enterKeyHint =\n activeItem?.itemUrl && !shouldFallbackKeyHint ? 'go' : 'search';\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,\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 // We don't rely on the `blur` event.\n // See explanation in `onTouchStart`/`onMouseDown`.\n // @MAJOR See if we need to keep this handler.\n onBlur: noop,\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 { UserAgent, userAgents } from '@algolia/autocomplete-shared';\n\nimport {\n AutocompleteEnvironment,\n AutocompleteOptions,\n AutocompleteOptionsWithMetadata,\n AutocompletePlugin,\n BaseItem,\n} from '.';\n\ntype AutocompleteMetadata = {\n plugins: Array<{\n name: string | undefined;\n options: string[];\n }>;\n options: Record<string, string[]>;\n ua: UserAgent[];\n};\n\ntype GetMetadataParams<TItem extends BaseItem, TData = unknown> = {\n plugins: Array<AutocompletePlugin<TItem, TData>>;\n options: AutocompleteOptionsWithMetadata<TItem>;\n};\n\nexport function getMetadata<TItem extends BaseItem, TData = unknown>({\n plugins,\n options,\n}: GetMetadataParams<TItem, TData>) {\n const optionsKey = ((options.__autocomplete_metadata\n ?.userAgents as UserAgent[]) || [])[0]?.segment;\n\n const extraOptions = optionsKey\n ? {\n [optionsKey]: Object.keys(\n (options.__autocomplete_metadata\n ?.options as AutocompleteOptions<TItem>) || {}\n ),\n }\n : {};\n\n return {\n plugins: plugins.map((plugin) => ({\n name: plugin.name,\n options: Object.keys(plugin.__autocomplete_pluginOptions || []),\n })),\n options: {\n 'autocomplete-core': Object.keys(options),\n ...extraOptions,\n },\n ua: userAgents.concat(\n (options.__autocomplete_metadata?.userAgents as any) || []\n ),\n };\n}\n\ntype InlineMetadataParams = {\n metadata: AutocompleteMetadata;\n environment: AutocompleteEnvironment;\n};\n\nexport function injectMetadata({\n metadata,\n environment,\n}: InlineMetadataParams) {\n const isMetadataEnabled = environment.navigator?.userAgent?.includes(\n 'Algolia Crawler'\n );\n\n if (isMetadataEnabled) {\n const metadataContainer = environment.document.createElement('meta');\n const headRef = environment.document.querySelector('head');\n\n metadataContainer.name = 'algolia:metadata';\n\n setTimeout(() => {\n metadataContainer.content = JSON.stringify(metadata);\n headRef!.appendChild(metadataContainer);\n }, 0);\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 return getActiveItem(state)?.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: action.payload.hasOwnProperty('nextActiveItemId')\n ? action.payload.nextActiveItemId\n : 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 activeItemId: null,\n isOpen: false,\n completion: null,\n };\n }\n\n return {\n ...state,\n activeItemId: null,\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 { getMetadata, injectMetadata } from './metadata';\nimport { onInput } from './onInput';\nimport { stateReducer } from './stateReducer';\nimport {\n AutocompleteApi,\n AutocompleteOptions as AutocompleteCoreOptions,\n BaseItem,\n AutocompleteSubscribers,\n} from './types';\n\nexport interface AutocompleteOptionsWithMetadata<TItem extends BaseItem>\n extends AutocompleteCoreOptions<TItem> {\n /**\n * @internal\n */\n __autocomplete_metadata?: Record<string, unknown>;\n}\n\nexport function createAutocomplete<\n TItem extends BaseItem,\n TEvent = Event,\n TMouseEvent = MouseEvent,\n TKeyboardEvent = KeyboardEvent\n>(\n options: AutocompleteOptionsWithMetadata<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 injectMetadata({\n metadata: getMetadata({ plugins: props.plugins, options }),\n environment: props.environment,\n });\n\n return {\n refresh,\n ...propGetters,\n ...setters,\n };\n}\n"],"names":["_slicedToArray","arr","i","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","TypeError","o","minLen","_arrayLikeToArray","n","Object","prototype","toString","call","slice","constructor","name","Array","from","test","len","length","arr2","_i","Symbol","iterator","_arr","_n","_d","_s","_e","next","done","push","value","err","isArray","_typeof","obj","decycle","seen","arguments","undefined","Set","has","newSeen","add","map","x","fromEntries","entries","_ref","_ref2","key","flatten","values","reduce","a","b","concat","autocompleteId","generateAutocompleteId","getItemsCount","state","collections","sum","collection","items","invariant","condition","message","Error","noop","version","userAgents","segment","warnCache","current","warn","sanitizedMessage","trim","hasAlreadyPrinted","console","checkOptions","options","process","debug","createInternalCancelablePromise","promise","initialState","then","onfulfilled","onrejected","createCallback","catch","finally","onfinally","onCancelList","cancel","isCanceled","callbacks","forEach","callback","cancelable","onResult","fallback","arg","createCancelablePromiseList","list","cancelablePromise","filter","item","cancelAll","isEmpty","createConcurrentSafePromise","basePromiseId","latestResolvedId","latestResolvedValue","runConcurrentSafePromise","currentPromiseId","Promise","resolve","getNextActiveItemId","moveAmount","baseIndex","itemCount","defaultActiveItemId","numericIndex","getNormalizedSources","getSources","params","seenSourceIds","sources","JSON","stringify","all","maybeSource","Boolean","source","sourceId","includes","normalizedSource","getItemInputValue","query","getItemUrl","onSelect","setIsOpen","onActive","getCollectionFromActiveItemId","accumulatedCollectionsCount","acc","collectionsCount","index","previousValue","nextValue","collectionIndex","activeItemId","getRelativeActiveItemId","isOffsetFound","counter","previousItemsOffset","currentCollection","getActiveItem","itemInputValue","itemUrl","isOrContainsNode","parent","child","contains","regex","isSamsung","userAgent","match","mapToAlgoliaResponse","rawResults","results","result","hits","hit","__autocomplete_indexName","__autocomplete_queryID","queryID","facetHits","facetHit","label","count","_highlightResult","highlighted","createStore","reducer","props","onStoreStateChange","getState","dispatch","action","payload","prevState","type","pendingRequests","getAutocompleteSetters","store","setActiveItemId","setQuery","setCollections","rawValue","baseItemId","__autocomplete_id","setStatus","setContext","getDefaultProps","pluginSubscribers","environment","window","plugins","openOnFocus","placeholder","autoFocus","stallThreshold","shouldPanelOpen","reshape","id","completion","isOpen","status","context","onStateChange","onSubmit","onReset","plugin","nested","navigator","navigate","location","assign","navigateNewTab","windowReference","open","focus","navigateNewWindow","sourcesBySourceId","getItems","reshapeSources","isDescription","execute","isRequesterDescription","description","preResolve","itemsOrDescription","requests","queries","transformResponse","packed","searchClient","requesterId","container","find","request","maybeDescription","responses","postResolve","matches","response","transform","every","lastStalledId","onInput","event","nextState","refresh","setters","clearTimeout","setTimeout","isPanelOpen","highlightedItem","onKeyDown","triggerScrollIntoView","nodeItem","document","getElementById","scrollIntoViewIfNeeded","scrollIntoView","triggerOnActive","preventDefault","nextActiveItemId","metaKey","ctrlKey","shiftKey","altKey","getPropGetters","getEnvironmentProps","providedProps","inputElement","formElement","panelElement","rest","onMouseDownOrTouchStart","isAutocompleteInteraction","target","isTargetWithinAutocomplete","some","contextNode","onTouchStart","onMouseDown","onTouchMove","activeElement","blur","getRootProps","role","getFormProps","noValidate","getInputProps","onFocus","maxLength","activeItem","shouldFallbackKeyHint","enterKeyHint","autoComplete","autoCorrect","autoCapitalize","spellCheck","onChange","currentTarget","onBlur","onClick","getLabelProps","htmlFor","getListProps","getPanelProps","onMouseLeave","getItemProps","onMouseMove","runPreCommand","getMetadata","optionsKey","__autocomplete_metadata","extraOptions","keys","__autocomplete_pluginOptions","ua","injectMetadata","metadata","isMetadataEnabled","metadataContainer","createElement","headRef","querySelector","content","appendChild","getCompletion","stateReducer","hasOwnProperty","createAutocomplete","subscribers","propGetters","Event","subscribe","fn"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- /*! @algolia/autocomplete-core 1.7.1 | 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,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 n(e){for(var n=1;n<arguments.length;n++){var o=null!=arguments[n]?arguments[n]:{};n%2?t(Object(o),!0).forEach((function(t){r(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):t(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(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 i(e){return function(e){if(Array.isArray(e))return u(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])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 a(e){return e.reduce((function(e,t){return e.concat(t)}),[])}var c=0;function l(e){return 0===e.collections.length?0:e.collections.reduce((function(e,t){return e+t.items.length}),0)}var s=function(){},f=[{segment:"autocomplete-core",version:"1.7.1"}];function p(e,t){var n=t;return{then:function(t,r){return p(e.then(d(t,n,e),d(r,n,e)),n)},catch:function(t){return p(e.catch(d(t,n,e)),n)},finally:function(t){return t&&n.onCancelList.push(t),p(e.finally(d(t&&function(){return n.onCancelList=[],t()},n,e)),n)},cancel:function(){n.isCanceled=!0;var e=n.onCancelList;n.onCancelList=[],e.forEach((function(e){e()}))},isCanceled:function(){return!0===n.isCanceled}}}function m(e){return p(e,{isCanceled:!1,onCancelList:[]})}function d(e,t,n){return e?function(n){return t.isCanceled?n:e(n)}:n}function v(e,t,n,r){if(!n)return null;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}function g(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 u=t.collections[o];if(u===n){r=!0;break}i+=u.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}}var h=/((gt|sm)-|galaxy nexus)|samsung[- ]/i;function I(e,t){var r,o="undefined"!=typeof window?window:{},u=e.plugins||[];return n(n({debug:!1,openOnFocus:!1,placeholder:"",autoFocus:!1,defaultActiveItemId:null,stallThreshold:300,environment:o,shouldPanelOpen:function(e){return l(e.state)>0},reshape:function(e){return e.sources}},e),{},{id:null!==(r=e.id)&&void 0!==r?r:"autocomplete-".concat(c++),plugins:u,initialState:n({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(i(u.map((function(e){return e.getSources}))),[e.getSources]).filter(Boolean).map((function(e){return function(e,t){var r=[];return Promise.resolve(e(t)).then((function(e){return Promise.all(e.filter((function(e){return Boolean(e)})).map((function(e){if(e.sourceId,r.includes(e.sourceId))throw new Error("[Autocomplete] The `sourceId` ".concat(JSON.stringify(e.sourceId)," is not unique."));r.push(e.sourceId);var t=n({getItemInputValue:function(e){return e.state.query},getItemUrl:function(){},onSelect:function(e){(0,e.setIsOpen)(!1)},onActive:s},e);return Promise.resolve(t)})))}))}(e,r)}))).then((function(e){return a(e)})).then((function(e){return e.map((function(e){return n(n({},e),{},{onSelect:function(n){e.onSelect(n),t.forEach((function(e){var t;return null===(t=e.onSelect)||void 0===t?void 0:t.call(e,n)}))},onActive:function(n){e.onActive(n),t.forEach((function(e){var t;return null===(t=e.onActive)||void 0===t?void 0:t.call(e,n)}))}})}))}))},navigator:n({navigate:function(e){var t=e.itemUrl;o.location.assign(t)},navigateNewTab:function(e){var t=e.itemUrl,n=o.open(t,"_blank","noopener");null==n||n.focus()},navigateNewWindow:function(e){var t=e.itemUrl;o.open(t,"_blank","noopener")}},e.navigator)})}function y(e){return Boolean(e.execute)}function S(e,t){return r=e,Boolean(null==r?void 0:r.execute)?n(n({},e),{},{requests:e.queries.map((function(n){return{query:n,sourceId:t,transformResponse:e.transformResponse}}))}):{items:e,sourceId:t};var r}function b(e){var t=e.reduce((function(e,t){if(!y(t))return e.push(t),e;var n=t.searchClient,r=t.execute,o=t.requesterId,u=t.requests,a=e.find((function(e){return y(t)&&y(e)&&e.searchClient===n&&Boolean(o)&&e.requesterId===o}));if(a){var c;(c=a.items).push.apply(c,i(u))}else{var l={execute:r,requesterId:o,items:u,searchClient:n};e.push(l)}return e}),[]).map((function(e){if(!y(e))return Promise.resolve(e);var t=e,n=t.execute,r=t.items;return n({searchClient:t.searchClient,requests:r})}));return Promise.all(t).then((function(e){return a(e)}))}function O(e,t){return t.map((function(t){var r=e.filter((function(e){return e.sourceId===t.sourceId})),o=r.map((function(e){return e.items})),i=r[0].transformResponse,u=i?i(function(e){var t=e.map((function(e){var t;return n(n({},e),{},{hits:null===(t=e.hits)||void 0===t?void 0:t.map((function(t){return n(n({},t),{},{__autocomplete_indexName:e.index,__autocomplete_queryID:e.queryID})}))})}));return{results:t,hits:t.map((function(e){return e.hits})).filter(Boolean),facetHits:t.map((function(e){var t;return null===(t=e.facetHits)||void 0===t?void 0:t.map((function(e){return{label:e.value,count:e.count,_highlightResult:{label:{value:e.highlighted}}}}))})).filter(Boolean)}}(o)):o;return u.every(Boolean),'The `getItems` function from source "'.concat(t.sourceId,'" must return an array of items but returned ').concat(JSON.stringify(void 0),".\n\nDid you forget to return items?\n\nSee: https://www.algolia.com/doc/ui-libraries/autocomplete/core-concepts/sources/#param-getitems"),{source:t,items:u}}))}var A,w,q,P=["event","nextState","props","query","refresh","store"],_=null,E=(A=-1,w=-1,q=void 0,function(e){var t=++A;return Promise.resolve(e).then((function(e){return q&&t<w?q:(w=t,q=e,e)}))});function C(e){var t=e.event,i=e.nextState,u=void 0===i?{}:i,c=e.props,l=e.query,s=e.refresh,f=e.store,p=o(e,P);_&&c.environment.clearTimeout(_);var d=p.setCollections,v=p.setIsOpen,h=p.setQuery,I=p.setActiveItemId,y=p.setStatus;if(h(l),I(c.defaultActiveItemId),!l&&!1===c.openOnFocus){var A,w=f.getState().collections.map((function(e){return n(n({},e),{},{items:[]})}));y("idle"),d(w),v(null!==(A=u.isOpen)&&void 0!==A?A:c.shouldPanelOpen({state:f.getState()}));var q=m(E(w).then((function(){return Promise.resolve()})));return f.pendingRequests.add(q)}y("loading"),_=c.environment.setTimeout((function(){y("stalled")}),c.stallThreshold);var C=m(E(c.getSources(n({query:l,refresh:s,state:f.getState()},p)).then((function(e){return Promise.all(e.map((function(e){return Promise.resolve(e.getItems(n({query:l,refresh:s,state:f.getState()},p))).then((function(t){return S(t,e.sourceId)}))}))).then(b).then((function(t){return O(t,e)})).then((function(e){return function(e){var t=e.collections,o=e.props,i=e.state,u=t.reduce((function(e,t){return n(n({},e),{},r({},t.source.sourceId,n(n({},t.source),{},{getItems:function(){return a(t.items)}})))}),{});return a(o.reshape({sources:Object.values(u),sourcesBySourceId:u,state:i})).filter(Boolean).map((function(e){return{source:e,items:e.getItems()}}))}({collections:e,props:c,state:f.getState()})}))})))).then((function(e){var r;y("idle"),d(e);var o=c.shouldPanelOpen({state:f.getState()});v(null!==(r=u.isOpen)&&void 0!==r?r:c.openOnFocus&&!l&&o||o);var i=g(f.getState());if(null!==f.getState().activeItemId&&i){var a=i.item,m=i.itemInputValue,h=i.itemUrl,I=i.source;I.onActive(n({event:t,item:a,itemInputValue:m,itemUrl:h,refresh:s,source:I,state:f.getState()},p))}})).finally((function(){y("idle"),_&&c.environment.clearTimeout(_)}));return f.pendingRequests.add(C)}var x=["event","props","refresh","store"];var U=["props","refresh","store"],j=["inputElement","formElement","panelElement"],D=["inputElement"],V=["inputElement","maxLength"],k=["item","source"];function T(e){var t=e.props,r=e.refresh,i=e.store,u=o(e,U);return{getEnvironmentProps:function(e){var r=e.inputElement,u=e.formElement,a=e.panelElement;function c(e){!i.getState().isOpen&&i.pendingRequests.isEmpty()||e.target===r||!1===[u,a].some((function(t){return n=t,r=e.target,n===r||n.contains(r);var n,r}))&&(i.dispatch("blur",null),t.debug||i.pendingRequests.cancelAll())}return n({onTouchStart:c,onMouseDown:c,onTouchMove:function(e){!1!==i.getState().isOpen&&r===t.environment.document.activeElement&&e.target!==r&&r.blur()}},o(e,j))},getRootProps:function(e){return n({role:"combobox","aria-expanded":i.getState().isOpen,"aria-haspopup":"listbox","aria-owns":i.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label")},e)},getFormProps:function(e){return e.inputElement,n({action:"",noValidate:!0,role:"search",onSubmit:function(o){var a;o.preventDefault(),t.onSubmit(n({event:o,refresh:r,state:i.getState()},u)),i.dispatch("submit",null),null===(a=e.inputElement)||void 0===a||a.blur()},onReset:function(o){var a;o.preventDefault(),t.onReset(n({event:o,refresh:r,state:i.getState()},u)),i.dispatch("reset",null),null===(a=e.inputElement)||void 0===a||a.focus()}},o(e,D))},getLabelProps:function(e){return n({htmlFor:"".concat(t.id,"-input"),id:"".concat(t.id,"-label")},e)},getInputProps:function(e){var a;function c(e){(t.openOnFocus||Boolean(i.getState().query))&&C(n({event:e,props:t,query:i.getState().completion||i.getState().query,refresh:r,store:i},u)),i.dispatch("focus",null)}var l=e||{};l.inputElement;var f=l.maxLength,p=void 0===f?512:f,m=o(l,V),d=g(i.getState()),v=function(e){return Boolean(e&&e.match(h))}((null===(a=t.environment.navigator)||void 0===a?void 0:a.userAgent)||""),I=null!=d&&d.itemUrl&&!v?"go":"search";return n({"aria-autocomplete":"both","aria-activedescendant":i.getState().isOpen&&null!==i.getState().activeItemId?"".concat(t.id,"-item-").concat(i.getState().activeItemId):void 0,"aria-controls":i.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label"),value:i.getState().completion||i.getState().query,id:"".concat(t.id,"-input"),autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",enterKeyHint:I,spellCheck:"false",autoFocus:t.autoFocus,placeholder:t.placeholder,maxLength:p,type:"search",onChange:function(e){C(n({event:e,props:t,query:e.currentTarget.value.slice(0,p),refresh:r,store:i},u))},onKeyDown:function(e){!function(e){var t=e.event,r=e.props,i=e.refresh,u=e.store,a=o(e,x);if("ArrowUp"===t.key||"ArrowDown"===t.key){var c=function(){var e=r.environment.document.getElementById("".concat(r.id,"-item-").concat(u.getState().activeItemId));e&&(e.scrollIntoViewIfNeeded?e.scrollIntoViewIfNeeded(!1):e.scrollIntoView(!1))},l=function(){var e=g(u.getState());if(null!==u.getState().activeItemId&&e){var r=e.item,o=e.itemInputValue,c=e.itemUrl,l=e.source;l.onActive(n({event:t,item:r,itemInputValue:o,itemUrl:c,refresh:i,source:l,state:u.getState()},a))}};t.preventDefault(),!1===u.getState().isOpen&&(r.openOnFocus||Boolean(u.getState().query))?C(n({event:t,props:r,query:u.getState().query,refresh:i,store:u},a)).then((function(){u.dispatch(t.key,{nextActiveItemId:r.defaultActiveItemId}),l(),setTimeout(c,0)})):(u.dispatch(t.key,{}),l(),c())}else if("Escape"===t.key)t.preventDefault(),u.dispatch(t.key,null),u.pendingRequests.cancelAll();else if("Tab"===t.key)u.dispatch("blur",null),u.pendingRequests.cancelAll();else if("Enter"===t.key){if(null===u.getState().activeItemId||u.getState().collections.every((function(e){return 0===e.items.length})))return void(r.debug||u.pendingRequests.cancelAll());t.preventDefault();var s=g(u.getState()),f=s.item,p=s.itemInputValue,m=s.itemUrl,d=s.source;if(t.metaKey||t.ctrlKey)void 0!==m&&(d.onSelect(n({event:t,item:f,itemInputValue:p,itemUrl:m,refresh:i,source:d,state:u.getState()},a)),r.navigator.navigateNewTab({itemUrl:m,item:f,state:u.getState()}));else if(t.shiftKey)void 0!==m&&(d.onSelect(n({event:t,item:f,itemInputValue:p,itemUrl:m,refresh:i,source:d,state:u.getState()},a)),r.navigator.navigateNewWindow({itemUrl:m,item:f,state:u.getState()}));else if(t.altKey);else{if(void 0!==m)return d.onSelect(n({event:t,item:f,itemInputValue:p,itemUrl:m,refresh:i,source:d,state:u.getState()},a)),void r.navigator.navigate({itemUrl:m,item:f,state:u.getState()});C(n({event:t,nextState:{isOpen:!1},props:r,query:p,refresh:i,store:u},a)).then((function(){d.onSelect(n({event:t,item:f,itemInputValue:p,itemUrl:m,refresh:i,source:d,state:u.getState()},a))}))}}}(n({event:e,props:t,refresh:r,store:i},u))},onFocus:c,onBlur:s,onClick:function(n){e.inputElement!==t.environment.document.activeElement||i.getState().isOpen||c(n)}},m)},getPanelProps:function(e){return n({onMouseDown:function(e){e.preventDefault()},onMouseLeave:function(){i.dispatch("mouseleave",null)}},e)},getListProps:function(e){return n({role:"listbox","aria-labelledby":"".concat(t.id,"-label"),id:"".concat(t.id,"-list")},e)},getItemProps:function(e){var a=e.item,c=e.source,l=o(e,k);return n({id:"".concat(t.id,"-item-").concat(a.__autocomplete_id),role:"option","aria-selected":i.getState().activeItemId===a.__autocomplete_id,onMouseMove:function(e){if(a.__autocomplete_id!==i.getState().activeItemId){i.dispatch("mousemove",a.__autocomplete_id);var t=g(i.getState());if(null!==i.getState().activeItemId&&t){var o=t.item,c=t.itemInputValue,l=t.itemUrl,s=t.source;s.onActive(n({event:e,item:o,itemInputValue:c,itemUrl:l,refresh:r,source:s,state:i.getState()},u))}}},onMouseDown:function(e){e.preventDefault()},onClick:function(e){var o=c.getItemInputValue({item:a,state:i.getState()}),l=c.getItemUrl({item:a,state:i.getState()});(l?Promise.resolve():C(n({event:e,nextState:{isOpen:!1},props:t,query:o,refresh:r,store:i},u))).then((function(){c.onSelect(n({event:e,item:a,itemInputValue:o,itemUrl:l,refresh:r,source:c,state:i.getState()},u))}))}},l)}}}function R(e){var t,o,i,u,a=e.plugins,c=e.options,l=null===(t=((null===(o=c.__autocomplete_metadata)||void 0===o?void 0:o.userAgents)||[])[0])||void 0===t?void 0:t.segment,s=l?r({},l,Object.keys((null===(i=c.__autocomplete_metadata)||void 0===i?void 0:i.options)||{})):{};return{plugins:a.map((function(e){return{name:e.name,options:Object.keys(e.__autocomplete_pluginOptions||[])}})),options:n({"autocomplete-core":Object.keys(c)},s),ua:f.concat((null===(u=c.__autocomplete_metadata)||void 0===u?void 0:u.userAgents)||[])}}function B(e){var t,n=e.state;return!1===n.isOpen||null===n.activeItemId?null:(null===(t=g(n))||void 0===t?void 0:t.itemInputValue)||null}var F=function(e,t){switch(t.type){case"setActiveItemId":case"mousemove":return n(n({},e),{},{activeItemId:t.payload});case"setQuery":return n(n({},e),{},{query:t.payload,completion:null});case"setCollections":return n(n({},e),{},{collections:t.payload});case"setIsOpen":return n(n({},e),{},{isOpen:t.payload});case"setStatus":return n(n({},e),{},{status:t.payload});case"setContext":return n(n({},e),{},{context:n(n({},e.context),t.payload)});case"ArrowDown":var r=n(n({},e),{},{activeItemId:t.payload.hasOwnProperty("nextActiveItemId")?t.payload.nextActiveItemId:v(1,e.activeItemId,l(e),t.props.defaultActiveItemId)});return n(n({},r),{},{completion:B({state:r})});case"ArrowUp":var o=n(n({},e),{},{activeItemId:v(-1,e.activeItemId,l(e),t.props.defaultActiveItemId)});return n(n({},o),{},{completion:B({state:o})});case"Escape":return e.isOpen?n(n({},e),{},{activeItemId:null,isOpen:!1,completion:null}):n(n({},e),{},{activeItemId:null,query:"",status:"idle",collections:[]});case"submit":return n(n({},e),{},{activeItemId:null,isOpen:!1,status:"idle"});case"reset":return n(n({},e),{},{activeItemId:!0===t.props.openOnFocus?t.props.defaultActiveItemId:null,status:"idle",query:""});case"focus":return n(n({},e),{},{activeItemId:t.props.defaultActiveItemId,isOpen:(t.props.openOnFocus||Boolean(e.query))&&t.props.shouldPanelOpen({state:e})});case"blur":return t.props.debug?e:n(n({},e),{},{isOpen:!1,activeItemId:null});case"mouseleave":return n(n({},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=[],r=I(e,t),o=function(e,t,r){var o,i=t.initialState;return{getState:function(){return i},dispatch:function(o,u){var a=n({},i);i=e(i,{type:o,props:t,payload:u}),r({state:i,prevState:a})},pendingRequests:(o=[],{add:function(e){return o.push(e),e.finally((function(){o=o.filter((function(t){return t!==e}))}))},cancelAll:function(){o.forEach((function(e){return e.cancel()}))},isEmpty:function(){return 0===o.length}})}}(F,r,(function(e){var t=e.prevState,o=e.state;r.onStateChange(n({prevState:t,state:o,refresh:c},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 r=0,o=e.map((function(e){return n(n({},e),{},{items:a(e.items).map((function(e){return n(n({},e),{},{__autocomplete_id:r++})}))})}));t.dispatch("setCollections",o)},setIsOpen:function(e){t.dispatch("setIsOpen",e)},setStatus:function(e){t.dispatch("setStatus",e)},setContext:function(e){t.dispatch("setContext",e)}}}({store:o}),u=T(n({props:r,refresh:c,store:o},i));function c(){return C(n({event:new Event("input"),nextState:{isOpen:o.getState().isOpen},props:r,query:o.getState().query,refresh:c,store:o},i))}return r.plugins.forEach((function(e){var r;return null===(r=e.subscribe)||void 0===r?void 0:r.call(e,n(n({},i),{},{refresh:c,onSelect:function(e){t.push({onSelect:e})},onActive:function(e){t.push({onActive:e})}}))})),function(e){var t,n,r=e.metadata,o=e.environment;if(null===(t=o.navigator)||void 0===t||null===(n=t.userAgent)||void 0===n?void 0:n.includes("Algolia Crawler")){var i=o.document.createElement("meta"),u=o.document.querySelector("head");i.name="algolia:metadata",setTimeout((function(){i.content=JSON.stringify(r),u.appendChild(i)}),0)}}({metadata:R({plugins:r.plugins,options:e}),environment:r.environment}),n(n({refresh:c},u),i)},e.getDefaultProps=I,Object.defineProperty(e,"__esModule",{value:!0})}));
1
+ /*! @algolia/autocomplete-core 1.7.2 | 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,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 n(e){for(var n=1;n<arguments.length;n++){var o=null!=arguments[n]?arguments[n]:{};n%2?t(Object(o),!0).forEach((function(t){r(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):t(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(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 i(e){return function(e){if(Array.isArray(e))return u(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])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 a(e){return e.reduce((function(e,t){return e.concat(t)}),[])}var c=0;function l(e){return 0===e.collections.length?0:e.collections.reduce((function(e,t){return e+t.items.length}),0)}var s=function(){},f=[{segment:"autocomplete-core",version:"1.7.2"}];function p(e,t){var n=t;return{then:function(t,r){return p(e.then(d(t,n,e),d(r,n,e)),n)},catch:function(t){return p(e.catch(d(t,n,e)),n)},finally:function(t){return t&&n.onCancelList.push(t),p(e.finally(d(t&&function(){return n.onCancelList=[],t()},n,e)),n)},cancel:function(){n.isCanceled=!0;var e=n.onCancelList;n.onCancelList=[],e.forEach((function(e){e()}))},isCanceled:function(){return!0===n.isCanceled}}}function m(e){return p(e,{isCanceled:!1,onCancelList:[]})}function d(e,t,n){return e?function(n){return t.isCanceled?n:e(n)}:n}function v(e,t,n,r){if(!n)return null;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}function g(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 u=t.collections[o];if(u===n){r=!0;break}i+=u.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}}var h=/((gt|sm)-|galaxy nexus)|samsung[- ]/i;function I(e,t){var r,o="undefined"!=typeof window?window:{},u=e.plugins||[];return n(n({debug:!1,openOnFocus:!1,placeholder:"",autoFocus:!1,defaultActiveItemId:null,stallThreshold:300,environment:o,shouldPanelOpen:function(e){return l(e.state)>0},reshape:function(e){return e.sources}},e),{},{id:null!==(r=e.id)&&void 0!==r?r:"autocomplete-".concat(c++),plugins:u,initialState:n({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(i(u.map((function(e){return e.getSources}))),[e.getSources]).filter(Boolean).map((function(e){return function(e,t){var r=[];return Promise.resolve(e(t)).then((function(e){return Promise.all(e.filter((function(e){return Boolean(e)})).map((function(e){if(e.sourceId,r.includes(e.sourceId))throw new Error("[Autocomplete] The `sourceId` ".concat(JSON.stringify(e.sourceId)," is not unique."));r.push(e.sourceId);var t=n({getItemInputValue:function(e){return e.state.query},getItemUrl:function(){},onSelect:function(e){(0,e.setIsOpen)(!1)},onActive:s},e);return Promise.resolve(t)})))}))}(e,r)}))).then((function(e){return a(e)})).then((function(e){return e.map((function(e){return n(n({},e),{},{onSelect:function(n){e.onSelect(n),t.forEach((function(e){var t;return null===(t=e.onSelect)||void 0===t?void 0:t.call(e,n)}))},onActive:function(n){e.onActive(n),t.forEach((function(e){var t;return null===(t=e.onActive)||void 0===t?void 0:t.call(e,n)}))}})}))}))},navigator:n({navigate:function(e){var t=e.itemUrl;o.location.assign(t)},navigateNewTab:function(e){var t=e.itemUrl,n=o.open(t,"_blank","noopener");null==n||n.focus()},navigateNewWindow:function(e){var t=e.itemUrl;o.open(t,"_blank","noopener")}},e.navigator)})}function y(e){return Boolean(e.execute)}function S(e,t){return r=e,Boolean(null==r?void 0:r.execute)?n(n({},e),{},{requests:e.queries.map((function(n){return{query:n,sourceId:t,transformResponse:e.transformResponse}}))}):{items:e,sourceId:t};var r}function b(e){var t=e.reduce((function(e,t){if(!y(t))return e.push(t),e;var n=t.searchClient,r=t.execute,o=t.requesterId,u=t.requests,a=e.find((function(e){return y(t)&&y(e)&&e.searchClient===n&&Boolean(o)&&e.requesterId===o}));if(a){var c;(c=a.items).push.apply(c,i(u))}else{var l={execute:r,requesterId:o,items:u,searchClient:n};e.push(l)}return e}),[]).map((function(e){if(!y(e))return Promise.resolve(e);var t=e,n=t.execute,r=t.items;return n({searchClient:t.searchClient,requests:r})}));return Promise.all(t).then((function(e){return a(e)}))}function O(e,t){return t.map((function(t){var r=e.filter((function(e){return e.sourceId===t.sourceId})),o=r.map((function(e){return e.items})),i=r[0].transformResponse,u=i?i(function(e){var t=e.map((function(e){var t;return n(n({},e),{},{hits:null===(t=e.hits)||void 0===t?void 0:t.map((function(t){return n(n({},t),{},{__autocomplete_indexName:e.index,__autocomplete_queryID:e.queryID})}))})}));return{results:t,hits:t.map((function(e){return e.hits})).filter(Boolean),facetHits:t.map((function(e){var t;return null===(t=e.facetHits)||void 0===t?void 0:t.map((function(e){return{label:e.value,count:e.count,_highlightResult:{label:{value:e.highlighted}}}}))})).filter(Boolean)}}(o)):o;return u.every(Boolean),'The `getItems` function from source "'.concat(t.sourceId,'" must return an array of items but returned ').concat(JSON.stringify(void 0),".\n\nDid you forget to return items?\n\nSee: https://www.algolia.com/doc/ui-libraries/autocomplete/core-concepts/sources/#param-getitems"),{source:t,items:u}}))}var A,w,q,P=["event","nextState","props","query","refresh","store"],_=null,E=(A=-1,w=-1,q=void 0,function(e){var t=++A;return Promise.resolve(e).then((function(e){return q&&t<w?q:(w=t,q=e,e)}))});function C(e){var t=e.event,i=e.nextState,u=void 0===i?{}:i,c=e.props,l=e.query,s=e.refresh,f=e.store,p=o(e,P);_&&c.environment.clearTimeout(_);var d=p.setCollections,v=p.setIsOpen,h=p.setQuery,I=p.setActiveItemId,y=p.setStatus;if(h(l),I(c.defaultActiveItemId),!l&&!1===c.openOnFocus){var A,w=f.getState().collections.map((function(e){return n(n({},e),{},{items:[]})}));y("idle"),d(w),v(null!==(A=u.isOpen)&&void 0!==A?A:c.shouldPanelOpen({state:f.getState()}));var q=m(E(w).then((function(){return Promise.resolve()})));return f.pendingRequests.add(q)}y("loading"),_=c.environment.setTimeout((function(){y("stalled")}),c.stallThreshold);var C=m(E(c.getSources(n({query:l,refresh:s,state:f.getState()},p)).then((function(e){return Promise.all(e.map((function(e){return Promise.resolve(e.getItems(n({query:l,refresh:s,state:f.getState()},p))).then((function(t){return S(t,e.sourceId)}))}))).then(b).then((function(t){return O(t,e)})).then((function(e){return function(e){var t=e.collections,o=e.props,i=e.state,u=t.reduce((function(e,t){return n(n({},e),{},r({},t.source.sourceId,n(n({},t.source),{},{getItems:function(){return a(t.items)}})))}),{});return a(o.reshape({sources:Object.values(u),sourcesBySourceId:u,state:i})).filter(Boolean).map((function(e){return{source:e,items:e.getItems()}}))}({collections:e,props:c,state:f.getState()})}))})))).then((function(e){var r;y("idle"),d(e);var o=c.shouldPanelOpen({state:f.getState()});v(null!==(r=u.isOpen)&&void 0!==r?r:c.openOnFocus&&!l&&o||o);var i=g(f.getState());if(null!==f.getState().activeItemId&&i){var a=i.item,m=i.itemInputValue,h=i.itemUrl,I=i.source;I.onActive(n({event:t,item:a,itemInputValue:m,itemUrl:h,refresh:s,source:I,state:f.getState()},p))}})).finally((function(){y("idle"),_&&c.environment.clearTimeout(_)}));return f.pendingRequests.add(C)}var x=["event","props","refresh","store"];var U=["props","refresh","store"],j=["inputElement","formElement","panelElement"],D=["inputElement"],V=["inputElement","maxLength"],k=["item","source"];function T(e){var t=e.props,r=e.refresh,i=e.store,u=o(e,U);return{getEnvironmentProps:function(e){var r=e.inputElement,u=e.formElement,a=e.panelElement;function c(e){!i.getState().isOpen&&i.pendingRequests.isEmpty()||e.target===r||!1===[u,a].some((function(t){return n=t,r=e.target,n===r||n.contains(r);var n,r}))&&(i.dispatch("blur",null),t.debug||i.pendingRequests.cancelAll())}return n({onTouchStart:c,onMouseDown:c,onTouchMove:function(e){!1!==i.getState().isOpen&&r===t.environment.document.activeElement&&e.target!==r&&r.blur()}},o(e,j))},getRootProps:function(e){return n({role:"combobox","aria-expanded":i.getState().isOpen,"aria-haspopup":"listbox","aria-owns":i.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label")},e)},getFormProps:function(e){return e.inputElement,n({action:"",noValidate:!0,role:"search",onSubmit:function(o){var a;o.preventDefault(),t.onSubmit(n({event:o,refresh:r,state:i.getState()},u)),i.dispatch("submit",null),null===(a=e.inputElement)||void 0===a||a.blur()},onReset:function(o){var a;o.preventDefault(),t.onReset(n({event:o,refresh:r,state:i.getState()},u)),i.dispatch("reset",null),null===(a=e.inputElement)||void 0===a||a.focus()}},o(e,D))},getLabelProps:function(e){return n({htmlFor:"".concat(t.id,"-input"),id:"".concat(t.id,"-label")},e)},getInputProps:function(e){var a;function c(e){(t.openOnFocus||Boolean(i.getState().query))&&C(n({event:e,props:t,query:i.getState().completion||i.getState().query,refresh:r,store:i},u)),i.dispatch("focus",null)}var l=e||{};l.inputElement;var f=l.maxLength,p=void 0===f?512:f,m=o(l,V),d=g(i.getState()),v=function(e){return Boolean(e&&e.match(h))}((null===(a=t.environment.navigator)||void 0===a?void 0:a.userAgent)||""),I=null!=d&&d.itemUrl&&!v?"go":"search";return n({"aria-autocomplete":"both","aria-activedescendant":i.getState().isOpen&&null!==i.getState().activeItemId?"".concat(t.id,"-item-").concat(i.getState().activeItemId):void 0,"aria-controls":i.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label"),value:i.getState().completion||i.getState().query,id:"".concat(t.id,"-input"),autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",enterKeyHint:I,spellCheck:"false",autoFocus:t.autoFocus,placeholder:t.placeholder,maxLength:p,type:"search",onChange:function(e){C(n({event:e,props:t,query:e.currentTarget.value.slice(0,p),refresh:r,store:i},u))},onKeyDown:function(e){!function(e){var t=e.event,r=e.props,i=e.refresh,u=e.store,a=o(e,x);if("ArrowUp"===t.key||"ArrowDown"===t.key){var c=function(){var e=r.environment.document.getElementById("".concat(r.id,"-item-").concat(u.getState().activeItemId));e&&(e.scrollIntoViewIfNeeded?e.scrollIntoViewIfNeeded(!1):e.scrollIntoView(!1))},l=function(){var e=g(u.getState());if(null!==u.getState().activeItemId&&e){var r=e.item,o=e.itemInputValue,c=e.itemUrl,l=e.source;l.onActive(n({event:t,item:r,itemInputValue:o,itemUrl:c,refresh:i,source:l,state:u.getState()},a))}};t.preventDefault(),!1===u.getState().isOpen&&(r.openOnFocus||Boolean(u.getState().query))?C(n({event:t,props:r,query:u.getState().query,refresh:i,store:u},a)).then((function(){u.dispatch(t.key,{nextActiveItemId:r.defaultActiveItemId}),l(),setTimeout(c,0)})):(u.dispatch(t.key,{}),l(),c())}else if("Escape"===t.key)t.preventDefault(),u.dispatch(t.key,null),u.pendingRequests.cancelAll();else if("Tab"===t.key)u.dispatch("blur",null),u.pendingRequests.cancelAll();else if("Enter"===t.key){if(null===u.getState().activeItemId||u.getState().collections.every((function(e){return 0===e.items.length})))return void(r.debug||u.pendingRequests.cancelAll());t.preventDefault();var s=g(u.getState()),f=s.item,p=s.itemInputValue,m=s.itemUrl,d=s.source;if(t.metaKey||t.ctrlKey)void 0!==m&&(d.onSelect(n({event:t,item:f,itemInputValue:p,itemUrl:m,refresh:i,source:d,state:u.getState()},a)),r.navigator.navigateNewTab({itemUrl:m,item:f,state:u.getState()}));else if(t.shiftKey)void 0!==m&&(d.onSelect(n({event:t,item:f,itemInputValue:p,itemUrl:m,refresh:i,source:d,state:u.getState()},a)),r.navigator.navigateNewWindow({itemUrl:m,item:f,state:u.getState()}));else if(t.altKey);else{if(void 0!==m)return d.onSelect(n({event:t,item:f,itemInputValue:p,itemUrl:m,refresh:i,source:d,state:u.getState()},a)),void r.navigator.navigate({itemUrl:m,item:f,state:u.getState()});C(n({event:t,nextState:{isOpen:!1},props:r,query:p,refresh:i,store:u},a)).then((function(){d.onSelect(n({event:t,item:f,itemInputValue:p,itemUrl:m,refresh:i,source:d,state:u.getState()},a))}))}}}(n({event:e,props:t,refresh:r,store:i},u))},onFocus:c,onBlur:s,onClick:function(n){e.inputElement!==t.environment.document.activeElement||i.getState().isOpen||c(n)}},m)},getPanelProps:function(e){return n({onMouseDown:function(e){e.preventDefault()},onMouseLeave:function(){i.dispatch("mouseleave",null)}},e)},getListProps:function(e){return n({role:"listbox","aria-labelledby":"".concat(t.id,"-label"),id:"".concat(t.id,"-list")},e)},getItemProps:function(e){var a=e.item,c=e.source,l=o(e,k);return n({id:"".concat(t.id,"-item-").concat(a.__autocomplete_id),role:"option","aria-selected":i.getState().activeItemId===a.__autocomplete_id,onMouseMove:function(e){if(a.__autocomplete_id!==i.getState().activeItemId){i.dispatch("mousemove",a.__autocomplete_id);var t=g(i.getState());if(null!==i.getState().activeItemId&&t){var o=t.item,c=t.itemInputValue,l=t.itemUrl,s=t.source;s.onActive(n({event:e,item:o,itemInputValue:c,itemUrl:l,refresh:r,source:s,state:i.getState()},u))}}},onMouseDown:function(e){e.preventDefault()},onClick:function(e){var o=c.getItemInputValue({item:a,state:i.getState()}),l=c.getItemUrl({item:a,state:i.getState()});(l?Promise.resolve():C(n({event:e,nextState:{isOpen:!1},props:t,query:o,refresh:r,store:i},u))).then((function(){c.onSelect(n({event:e,item:a,itemInputValue:o,itemUrl:l,refresh:r,source:c,state:i.getState()},u))}))}},l)}}}function R(e){var t,o,i,u,a=e.plugins,c=e.options,l=null===(t=((null===(o=c.__autocomplete_metadata)||void 0===o?void 0:o.userAgents)||[])[0])||void 0===t?void 0:t.segment,s=l?r({},l,Object.keys((null===(i=c.__autocomplete_metadata)||void 0===i?void 0:i.options)||{})):{};return{plugins:a.map((function(e){return{name:e.name,options:Object.keys(e.__autocomplete_pluginOptions||[])}})),options:n({"autocomplete-core":Object.keys(c)},s),ua:f.concat((null===(u=c.__autocomplete_metadata)||void 0===u?void 0:u.userAgents)||[])}}function B(e){var t,n=e.state;return!1===n.isOpen||null===n.activeItemId?null:(null===(t=g(n))||void 0===t?void 0:t.itemInputValue)||null}var F=function(e,t){switch(t.type){case"setActiveItemId":case"mousemove":return n(n({},e),{},{activeItemId:t.payload});case"setQuery":return n(n({},e),{},{query:t.payload,completion:null});case"setCollections":return n(n({},e),{},{collections:t.payload});case"setIsOpen":return n(n({},e),{},{isOpen:t.payload});case"setStatus":return n(n({},e),{},{status:t.payload});case"setContext":return n(n({},e),{},{context:n(n({},e.context),t.payload)});case"ArrowDown":var r=n(n({},e),{},{activeItemId:t.payload.hasOwnProperty("nextActiveItemId")?t.payload.nextActiveItemId:v(1,e.activeItemId,l(e),t.props.defaultActiveItemId)});return n(n({},r),{},{completion:B({state:r})});case"ArrowUp":var o=n(n({},e),{},{activeItemId:v(-1,e.activeItemId,l(e),t.props.defaultActiveItemId)});return n(n({},o),{},{completion:B({state:o})});case"Escape":return e.isOpen?n(n({},e),{},{activeItemId:null,isOpen:!1,completion:null}):n(n({},e),{},{activeItemId:null,query:"",status:"idle",collections:[]});case"submit":return n(n({},e),{},{activeItemId:null,isOpen:!1,status:"idle"});case"reset":return n(n({},e),{},{activeItemId:!0===t.props.openOnFocus?t.props.defaultActiveItemId:null,status:"idle",query:""});case"focus":return n(n({},e),{},{activeItemId:t.props.defaultActiveItemId,isOpen:(t.props.openOnFocus||Boolean(e.query))&&t.props.shouldPanelOpen({state:e})});case"blur":return t.props.debug?e:n(n({},e),{},{isOpen:!1,activeItemId:null});case"mouseleave":return n(n({},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=[],r=I(e,t),o=function(e,t,r){var o,i=t.initialState;return{getState:function(){return i},dispatch:function(o,u){var a=n({},i);i=e(i,{type:o,props:t,payload:u}),r({state:i,prevState:a})},pendingRequests:(o=[],{add:function(e){return o.push(e),e.finally((function(){o=o.filter((function(t){return t!==e}))}))},cancelAll:function(){o.forEach((function(e){return e.cancel()}))},isEmpty:function(){return 0===o.length}})}}(F,r,(function(e){var t=e.prevState,o=e.state;r.onStateChange(n({prevState:t,state:o,refresh:c},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 r=0,o=e.map((function(e){return n(n({},e),{},{items:a(e.items).map((function(e){return n(n({},e),{},{__autocomplete_id:r++})}))})}));t.dispatch("setCollections",o)},setIsOpen:function(e){t.dispatch("setIsOpen",e)},setStatus:function(e){t.dispatch("setStatus",e)},setContext:function(e){t.dispatch("setContext",e)}}}({store:o}),u=T(n({props:r,refresh:c,store:o},i));function c(){return C(n({event:new Event("input"),nextState:{isOpen:o.getState().isOpen},props:r,query:o.getState().query,refresh:c,store:o},i))}return r.plugins.forEach((function(e){var r;return null===(r=e.subscribe)||void 0===r?void 0:r.call(e,n(n({},i),{},{refresh:c,onSelect:function(e){t.push({onSelect:e})},onActive:function(e){t.push({onActive:e})}}))})),function(e){var t,n,r=e.metadata,o=e.environment;if(null===(t=o.navigator)||void 0===t||null===(n=t.userAgent)||void 0===n?void 0:n.includes("Algolia Crawler")){var i=o.document.createElement("meta"),u=o.document.querySelector("head");i.name="algolia:metadata",setTimeout((function(){i.content=JSON.stringify(r),u.appendChild(i)}),0)}}({metadata:R({plugins:r.plugins,options:e}),environment:r.environment}),n(n({refresh:c},u),i)},e.getDefaultProps=I,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/flatten.js","../../../autocomplete-shared/dist/esm/generateAutocompleteId.js","../../../autocomplete-shared/dist/esm/getItemsCount.js","../../../autocomplete-shared/dist/esm/noop.js","../../../autocomplete-shared/dist/esm/userAgents.js","../../../autocomplete-shared/dist/esm/version.js","../../src/utils/createCancelablePromise.ts","../../src/utils/getNextActiveItemId.ts","../../src/utils/getActiveItem.ts","../../src/utils/isSamsung.ts","../../src/getDefaultProps.ts","../../src/utils/getNormalizedSources.ts","../../src/resolve.ts","../../src/utils/mapToAlgoliaResponse.ts","../../src/utils/createConcurrentSafePromise.ts","../../src/onInput.ts","../../src/reshape.ts","../../src/getPropGetters.ts","../../src/utils/isOrContainsNode.ts","../../src/onKeyDown.ts","../../src/metadata.ts","../../src/getCompletion.ts","../../src/stateReducer.ts","../../src/createAutocomplete.ts","../../src/createStore.ts","../../src/utils/createCancelablePromiseList.ts","../../src/getAutocompleteSetters.ts"],"sourcesContent":["export function flatten(values) {\n return values.reduce(function (a, b) {\n return a.concat(b);\n }, []);\n}","var autocompleteId = 0;\nexport function generateAutocompleteId() {\n return \"autocomplete-\".concat(autocompleteId++);\n}","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 var noop = function noop() {};","import { version } from './version';\nexport var userAgents = [{\n segment: 'autocomplete-core',\n version: version\n}];","export var version = '1.7.1';","type PromiseExecutor<TValue> = (\n resolve: (value: TValue | PromiseLike<TValue>) => void,\n reject: (reason?: any) => void\n) => void;\n\ntype CancelablePromiseState = {\n isCanceled: boolean;\n onCancelList: Array<(...args: any[]) => any>;\n};\n\nfunction createInternalCancelablePromise<TValue>(\n promise: Promise<TValue>,\n initialState: CancelablePromiseState\n): CancelablePromise<TValue> {\n const state = initialState;\n\n return {\n then(onfulfilled, onrejected) {\n return createInternalCancelablePromise(\n promise.then(\n createCallback(onfulfilled, state, promise),\n createCallback(onrejected, state, promise)\n ),\n state\n );\n },\n catch(onrejected) {\n return createInternalCancelablePromise(\n promise.catch(createCallback(onrejected, state, promise)),\n state\n );\n },\n finally(onfinally) {\n if (onfinally) {\n state.onCancelList.push(onfinally);\n }\n\n return createInternalCancelablePromise<TValue>(\n promise.finally(\n createCallback(\n onfinally &&\n (() => {\n state.onCancelList = [];\n\n return onfinally();\n }),\n state,\n promise\n )\n ),\n state\n );\n },\n cancel() {\n state.isCanceled = true;\n const callbacks = state.onCancelList;\n state.onCancelList = [];\n\n callbacks.forEach((callback) => {\n callback();\n });\n },\n isCanceled() {\n return state.isCanceled === true;\n },\n };\n}\n\nexport type CancelablePromise<TValue> = {\n then<TResultFulfilled = TValue, TResultRejected = never>(\n onfulfilled?:\n | ((\n value: TValue\n ) =>\n | TResultFulfilled\n | PromiseLike<TResultFulfilled>\n | CancelablePromise<TResultFulfilled>)\n | undefined\n | null,\n onrejected?:\n | ((\n reason: any\n ) =>\n | TResultRejected\n | PromiseLike<TResultRejected>\n | CancelablePromise<TResultRejected>)\n | undefined\n | null\n ): CancelablePromise<TResultFulfilled | TResultRejected>;\n catch<TResult = never>(\n onrejected?:\n | ((\n reason: any\n ) => TResult | PromiseLike<TResult> | CancelablePromise<TResult>)\n | undefined\n | null\n ): CancelablePromise<TValue | TResult>;\n finally(\n onfinally?: (() => void) | undefined | null\n ): CancelablePromise<TValue>;\n cancel(): void;\n isCanceled(): boolean;\n};\n\nexport function createCancelablePromise<TValue>(\n executor: PromiseExecutor<TValue>\n): CancelablePromise<TValue> {\n return createInternalCancelablePromise(\n new Promise<TValue>((resolve, reject) => {\n return executor(resolve, reject);\n }),\n { isCanceled: false, onCancelList: [] }\n );\n}\n\ncreateCancelablePromise.resolve = <TValue>(\n value?: TValue | PromiseLike<TValue> | CancelablePromise<TValue>\n) => cancelable(Promise.resolve(value));\n\ncreateCancelablePromise.reject = (reason?: any) =>\n cancelable(Promise.reject(reason));\n\nexport function cancelable<TValue>(promise: Promise<TValue>) {\n return createInternalCancelablePromise(promise, {\n isCanceled: false,\n onCancelList: [],\n });\n}\n\nfunction createCallback(\n onResult: ((...args: any[]) => any) | null | undefined,\n state: CancelablePromiseState,\n fallback: any\n) {\n if (!onResult) {\n return fallback;\n }\n\n return function callback(arg?: any) {\n if (state.isCanceled) {\n return arg;\n }\n\n return onResult(arg);\n };\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 (!itemCount) {\n return null;\n }\n\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","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","const regex = /((gt|sm)-|galaxy nexus)|samsung[- ]/i;\n\nexport function isSamsung(userAgent: string) {\n return Boolean(userAgent && userAgent.match(regex));\n}\n","import {\n getItemsCount,\n generateAutocompleteId,\n flatten,\n} from '@algolia/autocomplete-shared';\n\nimport {\n AutocompleteEnvironment,\n AutocompleteOptions,\n AutocompleteSubscribers,\n BaseItem,\n InternalAutocompleteOptions,\n} from './types';\nimport { getNormalizedSources } from './utils';\n\nexport function getDefaultProps<TItem extends BaseItem>(\n props: AutocompleteOptions<TItem>,\n pluginSubscribers: AutocompleteSubscribers<TItem>\n): InternalAutocompleteOptions<TItem> {\n /* eslint-disable no-restricted-globals */\n const environment: AutocompleteEnvironment = (typeof window !== 'undefined'\n ? window\n : {}) as typeof window;\n /* eslint-enable no-restricted-globals */\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 reshape: ({ sources }) => sources,\n ...props,\n // Since `generateAutocompleteId` triggers a side effect (it increments\n // an 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, decycle, noop } from '@algolia/autocomplete-shared';\n\nimport {\n AutocompleteSource,\n BaseItem,\n GetSources,\n GetSourcesParams,\n InternalAutocompleteSource,\n InternalGetSources,\n} from '../types';\n\nexport function getNormalizedSources<TItem extends BaseItem>(\n getSources: GetSources<TItem>,\n params: GetSourcesParams<TItem>\n): ReturnType<InternalGetSources<TItem>> {\n const seenSourceIds: string[] = [];\n\n return Promise.resolve(getSources(params)).then((sources) => {\n invariant(\n Array.isArray(sources),\n () =>\n `The \\`getSources\\` function must return an array of sources but returned type ${JSON.stringify(\n typeof sources\n )}:\\n\\n${JSON.stringify(decycle(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 if (seenSourceIds.includes(source.sourceId)) {\n throw new Error(\n `[Autocomplete] The \\`sourceId\\` ${JSON.stringify(\n source.sourceId\n )} is not unique.`\n );\n }\n\n seenSourceIds.push(source.sourceId);\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 type {\n Execute,\n ExecuteResponse,\n RequesterDescription,\n TransformResponse,\n} from '@algolia/autocomplete-preset-algolia';\nimport { decycle, flatten, invariant } from '@algolia/autocomplete-shared';\nimport {\n MultipleQueriesQuery,\n SearchForFacetValuesResponse,\n SearchResponse,\n} from '@algolia/client-search';\nimport type { SearchClient } from 'algoliasearch/lite';\n\nimport { BaseItem, InternalAutocompleteSource } from './types';\nimport { mapToAlgoliaResponse } from './utils';\n\nfunction isDescription<TItem extends BaseItem>(\n item:\n | RequestDescriptionPreResolved<TItem>\n | RequestDescriptionPreResolvedCustom<TItem>\n | PackedDescription<TItem>\n): item is RequestDescriptionPreResolved<TItem> {\n return Boolean((item as RequestDescriptionPreResolved<TItem>).execute);\n}\n\nfunction isRequesterDescription<TItem extends BaseItem>(\n description: TItem[] | TItem[][] | RequesterDescription<TItem>\n): description is RequesterDescription<TItem> {\n return Boolean((description as RequesterDescription<TItem>)?.execute);\n}\n\ntype PackedDescription<TItem extends BaseItem> = {\n searchClient: SearchClient;\n execute: Execute<TItem>;\n requesterId?: string;\n items: RequestDescriptionPreResolved<TItem>['requests'];\n};\n\ntype RequestDescriptionPreResolved<TItem extends BaseItem> = Pick<\n RequesterDescription<TItem>,\n 'execute' | 'requesterId' | 'searchClient' | 'transformResponse'\n> & {\n requests: Array<{\n query: MultipleQueriesQuery;\n sourceId: string;\n transformResponse: TransformResponse<TItem>;\n }>;\n};\n\ntype RequestDescriptionPreResolvedCustom<TItem extends BaseItem> = {\n items: TItem[] | TItem[][];\n sourceId: string;\n transformResponse?: undefined;\n};\n\nexport function preResolve<TItem extends BaseItem>(\n itemsOrDescription: TItem[] | TItem[][] | RequesterDescription<TItem>,\n sourceId: string\n):\n | RequestDescriptionPreResolved<TItem>\n | RequestDescriptionPreResolvedCustom<TItem> {\n if (isRequesterDescription<TItem>(itemsOrDescription)) {\n return {\n ...itemsOrDescription,\n requests: itemsOrDescription.queries.map((query) => ({\n query,\n sourceId,\n transformResponse: itemsOrDescription.transformResponse,\n })),\n };\n }\n\n return {\n items: itemsOrDescription,\n sourceId,\n };\n}\n\nexport function resolve<TItem extends BaseItem>(\n items: Array<\n | RequestDescriptionPreResolved<TItem>\n | RequestDescriptionPreResolvedCustom<TItem>\n >\n) {\n const packed = items.reduce<\n Array<RequestDescriptionPreResolvedCustom<TItem> | PackedDescription<TItem>>\n >((acc, current) => {\n if (!isDescription(current)) {\n acc.push(current);\n return acc;\n }\n\n const { searchClient, execute, requesterId, requests } = current;\n\n const container = acc.find<PackedDescription<TItem>>(\n (item): item is PackedDescription<TItem> => {\n return (\n isDescription(current) &&\n isDescription(item) &&\n item.searchClient === searchClient &&\n Boolean(requesterId) &&\n item.requesterId === requesterId\n );\n }\n );\n\n if (container) {\n container.items.push(...requests);\n } else {\n const request: PackedDescription<TItem> = {\n execute,\n requesterId,\n items: requests,\n searchClient,\n };\n acc.push(request);\n }\n\n return acc;\n }, []);\n\n const values = packed.map<\n | Promise<RequestDescriptionPreResolvedCustom<TItem>>\n | ReturnType<Execute<TItem>>\n >((maybeDescription) => {\n if (!isDescription<TItem>(maybeDescription)) {\n return Promise.resolve(\n maybeDescription as RequestDescriptionPreResolvedCustom<TItem>\n );\n }\n\n const {\n execute,\n items,\n searchClient,\n } = maybeDescription as PackedDescription<TItem>;\n\n return execute({\n searchClient,\n requests: items,\n });\n });\n\n return Promise.all<\n RequestDescriptionPreResolvedCustom<TItem> | ExecuteResponse<TItem>\n >(values).then((responses) =>\n flatten<\n RequestDescriptionPreResolvedCustom<TItem> | ExecuteResponse<TItem>[0]\n >(responses)\n );\n}\n\nexport function postResolve<TItem extends BaseItem>(\n responses: Array<\n RequestDescriptionPreResolvedCustom<TItem> | ExecuteResponse<TItem>[0]\n >,\n sources: Array<InternalAutocompleteSource<TItem>>\n) {\n return sources.map((source) => {\n const matches = responses.filter(\n (response) => response.sourceId === source.sourceId\n );\n const results = matches.map(({ items }) => items);\n const transform = matches[0].transformResponse;\n const items = transform\n ? transform(\n mapToAlgoliaResponse(\n results as Array<\n SearchForFacetValuesResponse | SearchResponse<TItem>\n >\n )\n )\n : results;\n\n invariant(\n Array.isArray(items),\n () => `The \\`getItems\\` function from source \"${\n source.sourceId\n }\" must return an array of items but returned type ${JSON.stringify(\n typeof items\n )}:\\n\\n${JSON.stringify(decycle(items), null, 2)}.\n\nSee: https://www.algolia.com/doc/ui-libraries/autocomplete/core-concepts/sources/#param-getitems`\n );\n\n invariant(\n (items as Array<typeof items>).every(Boolean),\n `The \\`getItems\\` function from source \"${\n source.sourceId\n }\" must return an array of items but returned ${JSON.stringify(\n undefined\n )}.\n\nDid you forget to return items?\n\nSee: https://www.algolia.com/doc/ui-libraries/autocomplete/core-concepts/sources/#param-getitems`\n );\n\n return {\n source,\n items,\n };\n });\n}\n","import type {\n SearchForFacetValuesResponse,\n SearchResponse,\n} from '@algolia/client-search';\n\nexport function mapToAlgoliaResponse<THit>(\n rawResults: Array<SearchResponse<THit> | SearchForFacetValuesResponse>\n) {\n const results: Array<\n SearchResponse<THit> | SearchForFacetValuesResponse\n > = rawResults.map((result) => {\n return {\n ...result,\n hits: (result as SearchResponse<THit>).hits?.map((hit) => {\n // Bring support for the Insights plugin.\n return {\n ...hit,\n __autocomplete_indexName: (result as SearchResponse<THit>).index,\n __autocomplete_queryID: (result as SearchResponse<THit>).queryID,\n };\n }),\n };\n });\n\n return {\n results,\n hits: results\n .map((result) => (result as SearchResponse<THit>).hits)\n .filter(Boolean),\n facetHits: results\n .map((result) =>\n (result as SearchForFacetValuesResponse).facetHits?.map((facetHit) => {\n // Bring support for the highlighting components.\n return {\n label: facetHit.value,\n count: facetHit.count,\n _highlightResult: {\n label: {\n value: facetHit.highlighted,\n },\n },\n };\n })\n )\n .filter(Boolean),\n };\n}\n","import { MaybePromise } from '@algolia/autocomplete-shared';\n\n/**\n * Creates a runner that executes promises in a concurrent-safe way.\n *\n * This is useful to prevent older promises to resolve after a newer promise,\n * otherwise resulting in stale resolved values.\n */\nexport function createConcurrentSafePromise() {\n let basePromiseId = -1;\n let latestResolvedId = -1;\n let latestResolvedValue: unknown = undefined;\n\n return function runConcurrentSafePromise<TValue>(\n promise: MaybePromise<TValue>\n ) {\n basePromiseId++;\n const currentPromiseId = basePromiseId;\n\n return Promise.resolve(promise).then((x) => {\n // The promise might take too long to resolve and get outdated. This would\n // result in resolving stale values.\n // When this happens, we ignore the promise value and return the one\n // coming from the latest resolved value.\n //\n // +----------------------------------+\n // | 100ms |\n // | run(1) +---> R1 |\n // | 300ms |\n // | run(2) +-------------> R2 (SKIP) |\n // | 200ms |\n // | run(3) +--------> R3 |\n // +----------------------------------+\n if (latestResolvedValue && currentPromiseId < latestResolvedId) {\n return latestResolvedValue as TValue;\n }\n\n latestResolvedId = currentPromiseId;\n latestResolvedValue = x;\n\n return x;\n });\n };\n}\n","import { reshape } from './reshape';\nimport { preResolve, resolve, postResolve } from './resolve';\nimport {\n AutocompleteScopeApi,\n AutocompleteState,\n AutocompleteStore,\n BaseItem,\n InternalAutocompleteOptions,\n} from './types';\nimport {\n cancelable,\n CancelablePromise,\n createConcurrentSafePromise,\n getActiveItem,\n} 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\nconst runConcurrentSafePromise = createConcurrentSafePromise();\n\nexport function onInput<TItem extends BaseItem>({\n event,\n nextState = {},\n props,\n query,\n refresh,\n store,\n ...setters\n}: OnInputParams<TItem>): CancelablePromise<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 const collections = store.getState().collections.map((collection) => ({\n ...collection,\n items: [],\n }));\n\n setStatus('idle');\n setCollections(collections);\n setIsOpen(\n nextState.isOpen ?? props.shouldPanelOpen({ state: store.getState() })\n );\n\n // We make sure to update the latest resolved value of the tracked\n // promises to keep late resolving promises from \"cancelling\" the state\n // updates performed in this code path.\n // We chain with a void promise to respect `onInput`'s expected return type.\n const request = cancelable(\n runConcurrentSafePromise(collections).then(() => Promise.resolve())\n );\n\n return store.pendingRequests.add(request);\n }\n\n setStatus('loading');\n\n lastStalledId = props.environment.setTimeout(() => {\n setStatus('stalled');\n }, props.stallThreshold);\n\n // We track the entire promise chain triggered by `onInput` before mutating\n // the Autocomplete state to make sure that any state manipulation is based on\n // fresh data regardless of when promises individually resolve.\n // We don't track nested promises and only rely on the full chain resolution,\n // meaning we should only ever manipulate the state once this concurrent-safe\n // promise is resolved.\n const request = cancelable(\n runConcurrentSafePromise(\n props\n .getSources({\n query,\n refresh,\n state: store.getState(),\n ...setters,\n })\n .then((sources) => {\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((itemsOrDescription) =>\n preResolve<TItem>(itemsOrDescription, source.sourceId)\n );\n })\n )\n .then(resolve)\n .then((responses) => postResolve(responses, sources))\n .then((collections) =>\n reshape({ collections, props, state: store.getState() })\n );\n })\n )\n )\n .then((collections) => {\n // Parameters passed to `onInput` could be stale when the following code\n // executes, because `onInput` calls may not resolve in order.\n // If it becomes a problem we'll need to save the last passed parameters.\n // See: https://codesandbox.io/s/agitated-cookies-y290z\n\n setStatus('idle');\n\n setCollections(collections as any);\n\n const isPanelOpen = props.shouldPanelOpen({ 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 setStatus('idle');\n\n if (lastStalledId) {\n props.environment.clearTimeout(lastStalledId);\n }\n });\n\n return store.pendingRequests.add(request);\n}\n","import { flatten } from '@algolia/autocomplete-shared';\n\nimport {\n AutocompleteCollection,\n AutocompleteReshapeSourcesBySourceId,\n AutocompleteState,\n BaseItem,\n InternalAutocompleteOptions,\n} from './types';\n\ntype ReshapeParams<TItem extends BaseItem> = {\n collections: Array<AutocompleteCollection<any>>;\n props: InternalAutocompleteOptions<TItem>;\n state: AutocompleteState<TItem>;\n};\n\nexport function reshape<TItem extends BaseItem>({\n collections,\n props,\n state,\n}: ReshapeParams<TItem>) {\n // Sources are grouped by `sourceId` to conveniently pick them via destructuring.\n // Example: `const { recentSearchesPlugin } = sourcesBySourceId`\n const sourcesBySourceId = collections.reduce<\n AutocompleteReshapeSourcesBySourceId<TItem>\n >(\n (acc, collection) => ({\n ...acc,\n [collection.source.sourceId]: {\n ...collection.source,\n getItems() {\n // We provide the resolved items from the collection to the `reshape` prop.\n return flatten<any>(collection.items);\n },\n },\n }),\n {}\n );\n\n const reshapeSources = props.reshape({\n sources: Object.values(sourcesBySourceId),\n sourcesBySourceId,\n state,\n });\n\n // We reconstruct the collections with the items modified by the `reshape` prop.\n return flatten(reshapeSources)\n .filter(Boolean)\n .map((source) => {\n return {\n source,\n items: source.getItems(),\n };\n });\n}\n","import { noop } from '@algolia/autocomplete-shared';\n\nimport { 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, isSamsung } 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 function onMouseDownOrTouchStart(event: MouseEvent | TouchEvent) {\n // The `onTouchStart`/`onMouseDown` events shouldn't trigger the `blur`\n // handler when it's not an interaction with Autocomplete.\n // We detect it with the following heuristics:\n // - the panel is closed AND there are no pending requests\n // (no interaction with the autocomplete, no future state updates)\n // - OR the touched target is the input element (should open the panel)\n const isAutocompleteInteraction =\n store.getState().isOpen || !store.pendingRequests.isEmpty();\n\n if (!isAutocompleteInteraction || event.target === inputElement) {\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 isOrContainsNode(contextNode, event.target as Node);\n }\n );\n\n if (isTargetWithinAutocomplete === false) {\n store.dispatch('blur', null);\n\n // If requests are still pending when the user closes the panel, they\n // could reopen the panel once they resolve.\n // We want to prevent any subsequent query from reopening the panel\n // because it would result in an unsolicited UI behavior.\n if (!props.debug) {\n store.pendingRequests.cancelAll();\n }\n }\n }\n\n return {\n // We do not rely on the native `blur` event of the input to close the\n // panel, but rather on a custom `touchstart`/`mousedown` event outside\n // of the autocomplete elements.\n // This ensures we don't mistakenly interpret interactions within the\n // autocomplete (but outside of the input) as a signal to close the panel.\n // For example, clicking reset button causes an input blur, but if\n // `openOnFocus=true`, it shouldn't close the panel.\n // On touch devices, scrolling results (`touchmove`) causes an input blur\n // but shouldn't close the panel.\n onTouchStart: onMouseDownOrTouchStart,\n onMouseDown: onMouseDownOrTouchStart,\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 { inputElement, maxLength = 512, ...rest } = providedProps || {};\n const activeItem = getActiveItem(store.getState());\n\n const userAgent = props.environment.navigator?.userAgent || '';\n const shouldFallbackKeyHint = isSamsung(userAgent);\n const enterKeyHint =\n activeItem?.itemUrl && !shouldFallbackKeyHint ? 'go' : 'search';\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,\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 // We don't rely on the `blur` event.\n // See explanation in `onTouchStart`/`onMouseDown`.\n // @MAJOR See if we need to keep this handler.\n onBlur: noop,\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","export function isOrContainsNode(parent: Node, child: Node) {\n return parent === child || parent.contains(child);\n}\n","import { onInput } from './onInput';\nimport {\n ActionType,\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 // eslint-disable-next-line no-inner-declarations\n function triggerScrollIntoView() {\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\n // eslint-disable-next-line no-inner-declarations\n function triggerOnActive() {\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\n // Default browser behavior changes the caret placement on ArrowUp and\n // ArrowDown.\n event.preventDefault();\n\n // When re-opening the panel, we need to split the logic to keep the actions\n // synchronized as `onInput` returns a promise.\n if (\n store.getState().isOpen === false &&\n (props.openOnFocus || Boolean(store.getState().query))\n ) {\n onInput({\n event,\n props,\n query: store.getState().query,\n refresh,\n store,\n ...setters,\n }).then(() => {\n store.dispatch(event.key as ActionType, {\n nextActiveItemId: props.defaultActiveItemId,\n });\n\n triggerOnActive();\n // Since we rely on the DOM, we need to wait for all the micro tasks to\n // finish (which include re-opening the panel) to make sure all the\n // elements are available.\n setTimeout(triggerScrollIntoView, 0);\n });\n } else {\n store.dispatch(event.key, {});\n\n triggerOnActive();\n triggerScrollIntoView();\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\n // Hitting the `Escape` key signals the end of a user interaction with the\n // autocomplete. At this point, we should ignore any requests that are still\n // pending and could reopen the panel once they resolve, because that would\n // result in an unsolicited UI behavior.\n store.pendingRequests.cancelAll();\n } else if (event.key === 'Tab') {\n store.dispatch('blur', null);\n\n // Hitting the `Escape` key signals the end of a user interaction with the\n // autocomplete. At this point, we should ignore any requests that are still\n // pending and could reopen the panel once they resolve, because that would\n // result in an unsolicited UI behavior.\n store.pendingRequests.cancelAll();\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 // If requests are still pending when the panel closes, they could reopen\n // the panel once they resolve.\n // We want to prevent any subsequent query from reopening the panel\n // because it would result in an unsolicited UI behavior.\n if (!props.debug) {\n store.pendingRequests.cancelAll();\n }\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 { UserAgent, userAgents } from '@algolia/autocomplete-shared';\n\nimport {\n AutocompleteEnvironment,\n AutocompleteOptions,\n AutocompleteOptionsWithMetadata,\n AutocompletePlugin,\n BaseItem,\n} from '.';\n\ntype AutocompleteMetadata = {\n plugins: Array<{\n name: string | undefined;\n options: string[];\n }>;\n options: Record<string, string[]>;\n ua: UserAgent[];\n};\n\ntype GetMetadataParams<TItem extends BaseItem, TData = unknown> = {\n plugins: Array<AutocompletePlugin<TItem, TData>>;\n options: AutocompleteOptionsWithMetadata<TItem>;\n};\n\nexport function getMetadata<TItem extends BaseItem, TData = unknown>({\n plugins,\n options,\n}: GetMetadataParams<TItem, TData>) {\n const optionsKey = ((options.__autocomplete_metadata\n ?.userAgents as UserAgent[]) || [])[0]?.segment;\n\n const extraOptions = optionsKey\n ? {\n [optionsKey]: Object.keys(\n (options.__autocomplete_metadata\n ?.options as AutocompleteOptions<TItem>) || {}\n ),\n }\n : {};\n\n return {\n plugins: plugins.map((plugin) => ({\n name: plugin.name,\n options: Object.keys(plugin.__autocomplete_pluginOptions || []),\n })),\n options: {\n 'autocomplete-core': Object.keys(options),\n ...extraOptions,\n },\n ua: userAgents.concat(\n (options.__autocomplete_metadata?.userAgents as any) || []\n ),\n };\n}\n\ntype InlineMetadataParams = {\n metadata: AutocompleteMetadata;\n environment: AutocompleteEnvironment;\n};\n\nexport function injectMetadata({\n metadata,\n environment,\n}: InlineMetadataParams) {\n const isMetadataEnabled = environment.navigator?.userAgent?.includes(\n 'Algolia Crawler'\n );\n\n if (isMetadataEnabled) {\n const metadataContainer = environment.document.createElement('meta');\n const headRef = environment.document.querySelector('head');\n\n metadataContainer.name = 'algolia:metadata';\n\n setTimeout(() => {\n metadataContainer.content = JSON.stringify(metadata);\n headRef!.appendChild(metadataContainer);\n }, 0);\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 return getActiveItem(state)?.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: action.payload.hasOwnProperty('nextActiveItemId')\n ? action.payload.nextActiveItemId\n : 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 activeItemId: null,\n isOpen: false,\n completion: null,\n };\n }\n\n return {\n ...state,\n activeItemId: null,\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 { getMetadata, injectMetadata } from './metadata';\nimport { onInput } from './onInput';\nimport { stateReducer } from './stateReducer';\nimport {\n AutocompleteApi,\n AutocompleteOptions as AutocompleteCoreOptions,\n BaseItem,\n AutocompleteSubscribers,\n} from './types';\n\nexport interface AutocompleteOptionsWithMetadata<TItem extends BaseItem>\n extends AutocompleteCoreOptions<TItem> {\n /**\n * @internal\n */\n __autocomplete_metadata?: Record<string, unknown>;\n}\n\nexport function createAutocomplete<\n TItem extends BaseItem,\n TEvent = Event,\n TMouseEvent = MouseEvent,\n TKeyboardEvent = KeyboardEvent\n>(\n options: AutocompleteOptionsWithMetadata<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 injectMetadata({\n metadata: getMetadata({ plugins: props.plugins, options }),\n environment: props.environment,\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';\nimport { createCancelablePromiseList } from './utils';\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 pendingRequests: createCancelablePromiseList(),\n };\n}\n","import { CancelablePromise } from '.';\n\nexport type CancelablePromiseList<TValue> = {\n /**\n * Add a cancelable promise to the list.\n *\n * @param cancelablePromise The cancelable promise to add.\n */\n add(cancelablePromise: CancelablePromise<TValue>): CancelablePromise<TValue>;\n /**\n * Cancel all pending promises.\n *\n * Requests aren't actually stopped. All pending promises will settle, but\n * attached handlers won't run.\n */\n cancelAll(): void;\n /**\n * Whether there are pending promises in the list.\n */\n isEmpty(): boolean;\n};\n\nexport function createCancelablePromiseList<\n TValue\n>(): CancelablePromiseList<TValue> {\n let list: Array<CancelablePromise<TValue>> = [];\n\n return {\n add(cancelablePromise) {\n list.push(cancelablePromise);\n\n return cancelablePromise.finally(() => {\n list = list.filter((item) => item !== cancelablePromise);\n });\n },\n cancelAll() {\n list.forEach((promise) => promise.cancel());\n },\n isEmpty() {\n return list.length === 0;\n },\n };\n}\n","import { flatten } from '@algolia/autocomplete-shared';\n\nimport {\n AutocompleteApi,\n AutocompleteCollection,\n AutocompleteStore,\n BaseItem,\n} from './types';\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 `getAlgoliaResults`\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"],"names":["flatten","values","reduce","a","b","concat","autocompleteId","getItemsCount","state","collections","length","sum","collection","items","noop","userAgents","segment","version","createInternalCancelablePromise","promise","initialState","then","onfulfilled","onrejected","createCallback","catch","finally","onfinally","onCancelList","push","cancel","isCanceled","callbacks","forEach","callback","cancelable","onResult","fallback","arg","getNextActiveItemId","moveAmount","baseIndex","itemCount","defaultActiveItemId","numericIndex","getActiveItem","collectionIndex","map","acc","collectionsCount","index","nextValue","current","activeItemId","getCollectionFromActiveItemId","item","isOffsetFound","counter","previousItemsOffset","currentCollection","getRelativeActiveItemId","source","itemInputValue","getItemInputValue","itemUrl","getItemUrl","regex","getDefaultProps","props","pluginSubscribers","environment","window","plugins","debug","openOnFocus","placeholder","autoFocus","stallThreshold","shouldPanelOpen","reshape","sources","id","query","completion","isOpen","status","context","onStateChange","params","x","_x$onStateChange","onSubmit","_x$onSubmit","onReset","_x$onReset","getSources","Promise","all","plugin","filter","Boolean","seenSourceIds","resolve","maybeSource","sourceId","includes","Error","JSON","stringify","normalizedSource","onSelect","setIsOpen","onActive","getNormalizedSources","nested","_x$onSelect","_x$onActive","navigator","navigate","location","assign","navigateNewTab","windowReference","open","focus","navigateNewWindow","isDescription","execute","preResolve","itemsOrDescription","description","requests","queries","transformResponse","searchClient","requesterId","container","find","request","maybeDescription","responses","postResolve","matches","response","results","transform","rawResults","result","hits","_hits","hit","__autocomplete_indexName","__autocomplete_queryID","queryID","facetHits","_facetHits","facetHit","label","value","count","_highlightResult","highlighted","mapToAlgoliaResponse","every","undefined","basePromiseId","latestResolvedId","latestResolvedValue","lastStalledId","runConcurrentSafePromise","currentPromiseId","onInput","event","nextState","refresh","store","setters","clearTimeout","setCollections","setQuery","setActiveItemId","setStatus","getState","pendingRequests","add","setTimeout","getItems","sourcesBySourceId","Object","isPanelOpen","highlightedItem","getPropGetters","getEnvironmentProps","providedProps","inputElement","formElement","panelElement","onMouseDownOrTouchStart","isEmpty","target","some","contextNode","parent","child","contains","dispatch","cancelAll","onTouchStart","onMouseDown","onTouchMove","document","activeElement","blur","getRootProps","rest","role","getFormProps","action","noValidate","preventDefault","getLabelProps","htmlFor","getInputProps","onFocus","maxLength","activeItem","shouldFallbackKeyHint","userAgent","match","isSamsung","enterKeyHint","autoComplete","autoCorrect","autoCapitalize","spellCheck","type","onChange","currentTarget","slice","onKeyDown","key","triggerScrollIntoView","nodeItem","getElementById","scrollIntoViewIfNeeded","scrollIntoView","triggerOnActive","nextActiveItemId","metaKey","ctrlKey","shiftKey","altKey","onBlur","onClick","getPanelProps","onMouseLeave","getListProps","getItemProps","__autocomplete_id","onMouseMove","getMetadata","options","optionsKey","__autocomplete_metadata","_options$__autocomple","_","extraOptions","keys","_options$__autocomple2","name","__autocomplete_pluginOptions","ua","_options$__autocomple3","getCompletion","stateReducer","payload","hasOwnProperty","subscribers","reducer","onStoreStateChange","list","prevState","cancelablePromise","createStore","rawValue","baseItemId","setContext","getAutocompleteSetters","propGetters","Event","subscribe","_plugin$subscribe","fn","metadata","_environment$navigato","_environment$navigato2","metadataContainer","createElement","headRef","querySelector","content","appendChild","injectMetadata"],"mappings":"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"}
1
+ {"version":3,"file":"index.production.js","sources":["../../../autocomplete-shared/dist/esm/flatten.js","../../../autocomplete-shared/dist/esm/generateAutocompleteId.js","../../../autocomplete-shared/dist/esm/getItemsCount.js","../../../autocomplete-shared/dist/esm/noop.js","../../../autocomplete-shared/dist/esm/userAgents.js","../../../autocomplete-shared/dist/esm/version.js","../../src/utils/createCancelablePromise.ts","../../src/utils/getNextActiveItemId.ts","../../src/utils/getActiveItem.ts","../../src/utils/isSamsung.ts","../../src/getDefaultProps.ts","../../src/utils/getNormalizedSources.ts","../../src/resolve.ts","../../src/utils/mapToAlgoliaResponse.ts","../../src/utils/createConcurrentSafePromise.ts","../../src/onInput.ts","../../src/reshape.ts","../../src/getPropGetters.ts","../../src/utils/isOrContainsNode.ts","../../src/onKeyDown.ts","../../src/metadata.ts","../../src/getCompletion.ts","../../src/stateReducer.ts","../../src/createAutocomplete.ts","../../src/createStore.ts","../../src/utils/createCancelablePromiseList.ts","../../src/getAutocompleteSetters.ts"],"sourcesContent":["export function flatten(values) {\n return values.reduce(function (a, b) {\n return a.concat(b);\n }, []);\n}","var autocompleteId = 0;\nexport function generateAutocompleteId() {\n return \"autocomplete-\".concat(autocompleteId++);\n}","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 var noop = function noop() {};","import { version } from './version';\nexport var userAgents = [{\n segment: 'autocomplete-core',\n version: version\n}];","export var version = '1.7.2';","type PromiseExecutor<TValue> = (\n resolve: (value: TValue | PromiseLike<TValue>) => void,\n reject: (reason?: any) => void\n) => void;\n\ntype CancelablePromiseState = {\n isCanceled: boolean;\n onCancelList: Array<(...args: any[]) => any>;\n};\n\nfunction createInternalCancelablePromise<TValue>(\n promise: Promise<TValue>,\n initialState: CancelablePromiseState\n): CancelablePromise<TValue> {\n const state = initialState;\n\n return {\n then(onfulfilled, onrejected) {\n return createInternalCancelablePromise(\n promise.then(\n createCallback(onfulfilled, state, promise),\n createCallback(onrejected, state, promise)\n ),\n state\n );\n },\n catch(onrejected) {\n return createInternalCancelablePromise(\n promise.catch(createCallback(onrejected, state, promise)),\n state\n );\n },\n finally(onfinally) {\n if (onfinally) {\n state.onCancelList.push(onfinally);\n }\n\n return createInternalCancelablePromise<TValue>(\n promise.finally(\n createCallback(\n onfinally &&\n (() => {\n state.onCancelList = [];\n\n return onfinally();\n }),\n state,\n promise\n )\n ),\n state\n );\n },\n cancel() {\n state.isCanceled = true;\n const callbacks = state.onCancelList;\n state.onCancelList = [];\n\n callbacks.forEach((callback) => {\n callback();\n });\n },\n isCanceled() {\n return state.isCanceled === true;\n },\n };\n}\n\nexport type CancelablePromise<TValue> = {\n then<TResultFulfilled = TValue, TResultRejected = never>(\n onfulfilled?:\n | ((\n value: TValue\n ) =>\n | TResultFulfilled\n | PromiseLike<TResultFulfilled>\n | CancelablePromise<TResultFulfilled>)\n | undefined\n | null,\n onrejected?:\n | ((\n reason: any\n ) =>\n | TResultRejected\n | PromiseLike<TResultRejected>\n | CancelablePromise<TResultRejected>)\n | undefined\n | null\n ): CancelablePromise<TResultFulfilled | TResultRejected>;\n catch<TResult = never>(\n onrejected?:\n | ((\n reason: any\n ) => TResult | PromiseLike<TResult> | CancelablePromise<TResult>)\n | undefined\n | null\n ): CancelablePromise<TValue | TResult>;\n finally(\n onfinally?: (() => void) | undefined | null\n ): CancelablePromise<TValue>;\n cancel(): void;\n isCanceled(): boolean;\n};\n\nexport function createCancelablePromise<TValue>(\n executor: PromiseExecutor<TValue>\n): CancelablePromise<TValue> {\n return createInternalCancelablePromise(\n new Promise<TValue>((resolve, reject) => {\n return executor(resolve, reject);\n }),\n { isCanceled: false, onCancelList: [] }\n );\n}\n\ncreateCancelablePromise.resolve = <TValue>(\n value?: TValue | PromiseLike<TValue> | CancelablePromise<TValue>\n) => cancelable(Promise.resolve(value));\n\ncreateCancelablePromise.reject = (reason?: any) =>\n cancelable(Promise.reject(reason));\n\nexport function cancelable<TValue>(promise: Promise<TValue>) {\n return createInternalCancelablePromise(promise, {\n isCanceled: false,\n onCancelList: [],\n });\n}\n\nfunction createCallback(\n onResult: ((...args: any[]) => any) | null | undefined,\n state: CancelablePromiseState,\n fallback: any\n) {\n if (!onResult) {\n return fallback;\n }\n\n return function callback(arg?: any) {\n if (state.isCanceled) {\n return arg;\n }\n\n return onResult(arg);\n };\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 (!itemCount) {\n return null;\n }\n\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","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","const regex = /((gt|sm)-|galaxy nexus)|samsung[- ]/i;\n\nexport function isSamsung(userAgent: string) {\n return Boolean(userAgent && userAgent.match(regex));\n}\n","import {\n getItemsCount,\n generateAutocompleteId,\n flatten,\n} from '@algolia/autocomplete-shared';\n\nimport {\n AutocompleteEnvironment,\n AutocompleteOptions,\n AutocompleteSubscribers,\n BaseItem,\n InternalAutocompleteOptions,\n} from './types';\nimport { getNormalizedSources } from './utils';\n\nexport function getDefaultProps<TItem extends BaseItem>(\n props: AutocompleteOptions<TItem>,\n pluginSubscribers: AutocompleteSubscribers<TItem>\n): InternalAutocompleteOptions<TItem> {\n /* eslint-disable no-restricted-globals */\n const environment: AutocompleteEnvironment = (typeof window !== 'undefined'\n ? window\n : {}) as typeof window;\n /* eslint-enable no-restricted-globals */\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 reshape: ({ sources }) => sources,\n ...props,\n // Since `generateAutocompleteId` triggers a side effect (it increments\n // an 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, decycle, noop } from '@algolia/autocomplete-shared';\n\nimport {\n AutocompleteSource,\n BaseItem,\n GetSources,\n GetSourcesParams,\n InternalAutocompleteSource,\n InternalGetSources,\n} from '../types';\n\nexport function getNormalizedSources<TItem extends BaseItem>(\n getSources: GetSources<TItem>,\n params: GetSourcesParams<TItem>\n): ReturnType<InternalGetSources<TItem>> {\n const seenSourceIds: string[] = [];\n\n return Promise.resolve(getSources(params)).then((sources) => {\n invariant(\n Array.isArray(sources),\n () =>\n `The \\`getSources\\` function must return an array of sources but returned type ${JSON.stringify(\n typeof sources\n )}:\\n\\n${JSON.stringify(decycle(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 if (seenSourceIds.includes(source.sourceId)) {\n throw new Error(\n `[Autocomplete] The \\`sourceId\\` ${JSON.stringify(\n source.sourceId\n )} is not unique.`\n );\n }\n\n seenSourceIds.push(source.sourceId);\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 type {\n Execute,\n ExecuteResponse,\n RequesterDescription,\n TransformResponse,\n} from '@algolia/autocomplete-preset-algolia';\nimport { decycle, flatten, invariant } from '@algolia/autocomplete-shared';\nimport {\n MultipleQueriesQuery,\n SearchForFacetValuesResponse,\n SearchResponse,\n} from '@algolia/client-search';\nimport type { SearchClient } from 'algoliasearch/lite';\n\nimport { BaseItem, InternalAutocompleteSource } from './types';\nimport { mapToAlgoliaResponse } from './utils';\n\nfunction isDescription<TItem extends BaseItem>(\n item:\n | RequestDescriptionPreResolved<TItem>\n | RequestDescriptionPreResolvedCustom<TItem>\n | PackedDescription<TItem>\n): item is RequestDescriptionPreResolved<TItem> {\n return Boolean((item as RequestDescriptionPreResolved<TItem>).execute);\n}\n\nfunction isRequesterDescription<TItem extends BaseItem>(\n description: TItem[] | TItem[][] | RequesterDescription<TItem>\n): description is RequesterDescription<TItem> {\n return Boolean((description as RequesterDescription<TItem>)?.execute);\n}\n\ntype PackedDescription<TItem extends BaseItem> = {\n searchClient: SearchClient;\n execute: Execute<TItem>;\n requesterId?: string;\n items: RequestDescriptionPreResolved<TItem>['requests'];\n};\n\ntype RequestDescriptionPreResolved<TItem extends BaseItem> = Pick<\n RequesterDescription<TItem>,\n 'execute' | 'requesterId' | 'searchClient' | 'transformResponse'\n> & {\n requests: Array<{\n query: MultipleQueriesQuery;\n sourceId: string;\n transformResponse: TransformResponse<TItem>;\n }>;\n};\n\ntype RequestDescriptionPreResolvedCustom<TItem extends BaseItem> = {\n items: TItem[] | TItem[][];\n sourceId: string;\n transformResponse?: undefined;\n};\n\nexport function preResolve<TItem extends BaseItem>(\n itemsOrDescription: TItem[] | TItem[][] | RequesterDescription<TItem>,\n sourceId: string\n):\n | RequestDescriptionPreResolved<TItem>\n | RequestDescriptionPreResolvedCustom<TItem> {\n if (isRequesterDescription<TItem>(itemsOrDescription)) {\n return {\n ...itemsOrDescription,\n requests: itemsOrDescription.queries.map((query) => ({\n query,\n sourceId,\n transformResponse: itemsOrDescription.transformResponse,\n })),\n };\n }\n\n return {\n items: itemsOrDescription,\n sourceId,\n };\n}\n\nexport function resolve<TItem extends BaseItem>(\n items: Array<\n | RequestDescriptionPreResolved<TItem>\n | RequestDescriptionPreResolvedCustom<TItem>\n >\n) {\n const packed = items.reduce<\n Array<RequestDescriptionPreResolvedCustom<TItem> | PackedDescription<TItem>>\n >((acc, current) => {\n if (!isDescription(current)) {\n acc.push(current);\n return acc;\n }\n\n const { searchClient, execute, requesterId, requests } = current;\n\n const container = acc.find<PackedDescription<TItem>>(\n (item): item is PackedDescription<TItem> => {\n return (\n isDescription(current) &&\n isDescription(item) &&\n item.searchClient === searchClient &&\n Boolean(requesterId) &&\n item.requesterId === requesterId\n );\n }\n );\n\n if (container) {\n container.items.push(...requests);\n } else {\n const request: PackedDescription<TItem> = {\n execute,\n requesterId,\n items: requests,\n searchClient,\n };\n acc.push(request);\n }\n\n return acc;\n }, []);\n\n const values = packed.map<\n | Promise<RequestDescriptionPreResolvedCustom<TItem>>\n | ReturnType<Execute<TItem>>\n >((maybeDescription) => {\n if (!isDescription<TItem>(maybeDescription)) {\n return Promise.resolve(\n maybeDescription as RequestDescriptionPreResolvedCustom<TItem>\n );\n }\n\n const {\n execute,\n items,\n searchClient,\n } = maybeDescription as PackedDescription<TItem>;\n\n return execute({\n searchClient,\n requests: items,\n });\n });\n\n return Promise.all<\n RequestDescriptionPreResolvedCustom<TItem> | ExecuteResponse<TItem>\n >(values).then((responses) =>\n flatten<\n RequestDescriptionPreResolvedCustom<TItem> | ExecuteResponse<TItem>[0]\n >(responses)\n );\n}\n\nexport function postResolve<TItem extends BaseItem>(\n responses: Array<\n RequestDescriptionPreResolvedCustom<TItem> | ExecuteResponse<TItem>[0]\n >,\n sources: Array<InternalAutocompleteSource<TItem>>\n) {\n return sources.map((source) => {\n const matches = responses.filter(\n (response) => response.sourceId === source.sourceId\n );\n const results = matches.map(({ items }) => items);\n const transform = matches[0].transformResponse;\n const items = transform\n ? transform(\n mapToAlgoliaResponse(\n results as Array<\n SearchForFacetValuesResponse | SearchResponse<TItem>\n >\n )\n )\n : results;\n\n invariant(\n Array.isArray(items),\n () => `The \\`getItems\\` function from source \"${\n source.sourceId\n }\" must return an array of items but returned type ${JSON.stringify(\n typeof items\n )}:\\n\\n${JSON.stringify(decycle(items), null, 2)}.\n\nSee: https://www.algolia.com/doc/ui-libraries/autocomplete/core-concepts/sources/#param-getitems`\n );\n\n invariant(\n (items as Array<typeof items>).every(Boolean),\n `The \\`getItems\\` function from source \"${\n source.sourceId\n }\" must return an array of items but returned ${JSON.stringify(\n undefined\n )}.\n\nDid you forget to return items?\n\nSee: https://www.algolia.com/doc/ui-libraries/autocomplete/core-concepts/sources/#param-getitems`\n );\n\n return {\n source,\n items,\n };\n });\n}\n","import type {\n SearchForFacetValuesResponse,\n SearchResponse,\n} from '@algolia/client-search';\n\nexport function mapToAlgoliaResponse<THit>(\n rawResults: Array<SearchResponse<THit> | SearchForFacetValuesResponse>\n) {\n const results: Array<\n SearchResponse<THit> | SearchForFacetValuesResponse\n > = rawResults.map((result) => {\n return {\n ...result,\n hits: (result as SearchResponse<THit>).hits?.map((hit) => {\n // Bring support for the Insights plugin.\n return {\n ...hit,\n __autocomplete_indexName: (result as SearchResponse<THit>).index,\n __autocomplete_queryID: (result as SearchResponse<THit>).queryID,\n };\n }),\n };\n });\n\n return {\n results,\n hits: results\n .map((result) => (result as SearchResponse<THit>).hits)\n .filter(Boolean),\n facetHits: results\n .map((result) =>\n (result as SearchForFacetValuesResponse).facetHits?.map((facetHit) => {\n // Bring support for the highlighting components.\n return {\n label: facetHit.value,\n count: facetHit.count,\n _highlightResult: {\n label: {\n value: facetHit.highlighted,\n },\n },\n };\n })\n )\n .filter(Boolean),\n };\n}\n","import { MaybePromise } from '@algolia/autocomplete-shared';\n\n/**\n * Creates a runner that executes promises in a concurrent-safe way.\n *\n * This is useful to prevent older promises to resolve after a newer promise,\n * otherwise resulting in stale resolved values.\n */\nexport function createConcurrentSafePromise() {\n let basePromiseId = -1;\n let latestResolvedId = -1;\n let latestResolvedValue: unknown = undefined;\n\n return function runConcurrentSafePromise<TValue>(\n promise: MaybePromise<TValue>\n ) {\n basePromiseId++;\n const currentPromiseId = basePromiseId;\n\n return Promise.resolve(promise).then((x) => {\n // The promise might take too long to resolve and get outdated. This would\n // result in resolving stale values.\n // When this happens, we ignore the promise value and return the one\n // coming from the latest resolved value.\n //\n // +----------------------------------+\n // | 100ms |\n // | run(1) +---> R1 |\n // | 300ms |\n // | run(2) +-------------> R2 (SKIP) |\n // | 200ms |\n // | run(3) +--------> R3 |\n // +----------------------------------+\n if (latestResolvedValue && currentPromiseId < latestResolvedId) {\n return latestResolvedValue as TValue;\n }\n\n latestResolvedId = currentPromiseId;\n latestResolvedValue = x;\n\n return x;\n });\n };\n}\n","import { reshape } from './reshape';\nimport { preResolve, resolve, postResolve } from './resolve';\nimport {\n AutocompleteScopeApi,\n AutocompleteState,\n AutocompleteStore,\n BaseItem,\n InternalAutocompleteOptions,\n} from './types';\nimport {\n cancelable,\n CancelablePromise,\n createConcurrentSafePromise,\n getActiveItem,\n} 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\nconst runConcurrentSafePromise = createConcurrentSafePromise();\n\nexport function onInput<TItem extends BaseItem>({\n event,\n nextState = {},\n props,\n query,\n refresh,\n store,\n ...setters\n}: OnInputParams<TItem>): CancelablePromise<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 const collections = store.getState().collections.map((collection) => ({\n ...collection,\n items: [],\n }));\n\n setStatus('idle');\n setCollections(collections);\n setIsOpen(\n nextState.isOpen ?? props.shouldPanelOpen({ state: store.getState() })\n );\n\n // We make sure to update the latest resolved value of the tracked\n // promises to keep late resolving promises from \"cancelling\" the state\n // updates performed in this code path.\n // We chain with a void promise to respect `onInput`'s expected return type.\n const request = cancelable(\n runConcurrentSafePromise(collections).then(() => Promise.resolve())\n );\n\n return store.pendingRequests.add(request);\n }\n\n setStatus('loading');\n\n lastStalledId = props.environment.setTimeout(() => {\n setStatus('stalled');\n }, props.stallThreshold);\n\n // We track the entire promise chain triggered by `onInput` before mutating\n // the Autocomplete state to make sure that any state manipulation is based on\n // fresh data regardless of when promises individually resolve.\n // We don't track nested promises and only rely on the full chain resolution,\n // meaning we should only ever manipulate the state once this concurrent-safe\n // promise is resolved.\n const request = cancelable(\n runConcurrentSafePromise(\n props\n .getSources({\n query,\n refresh,\n state: store.getState(),\n ...setters,\n })\n .then((sources) => {\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((itemsOrDescription) =>\n preResolve<TItem>(itemsOrDescription, source.sourceId)\n );\n })\n )\n .then(resolve)\n .then((responses) => postResolve(responses, sources))\n .then((collections) =>\n reshape({ collections, props, state: store.getState() })\n );\n })\n )\n )\n .then((collections) => {\n // Parameters passed to `onInput` could be stale when the following code\n // executes, because `onInput` calls may not resolve in order.\n // If it becomes a problem we'll need to save the last passed parameters.\n // See: https://codesandbox.io/s/agitated-cookies-y290z\n\n setStatus('idle');\n\n setCollections(collections as any);\n\n const isPanelOpen = props.shouldPanelOpen({ 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 setStatus('idle');\n\n if (lastStalledId) {\n props.environment.clearTimeout(lastStalledId);\n }\n });\n\n return store.pendingRequests.add(request);\n}\n","import { flatten } from '@algolia/autocomplete-shared';\n\nimport {\n AutocompleteCollection,\n AutocompleteReshapeSourcesBySourceId,\n AutocompleteState,\n BaseItem,\n InternalAutocompleteOptions,\n} from './types';\n\ntype ReshapeParams<TItem extends BaseItem> = {\n collections: Array<AutocompleteCollection<any>>;\n props: InternalAutocompleteOptions<TItem>;\n state: AutocompleteState<TItem>;\n};\n\nexport function reshape<TItem extends BaseItem>({\n collections,\n props,\n state,\n}: ReshapeParams<TItem>) {\n // Sources are grouped by `sourceId` to conveniently pick them via destructuring.\n // Example: `const { recentSearchesPlugin } = sourcesBySourceId`\n const sourcesBySourceId = collections.reduce<\n AutocompleteReshapeSourcesBySourceId<TItem>\n >(\n (acc, collection) => ({\n ...acc,\n [collection.source.sourceId]: {\n ...collection.source,\n getItems() {\n // We provide the resolved items from the collection to the `reshape` prop.\n return flatten<any>(collection.items);\n },\n },\n }),\n {}\n );\n\n const reshapeSources = props.reshape({\n sources: Object.values(sourcesBySourceId),\n sourcesBySourceId,\n state,\n });\n\n // We reconstruct the collections with the items modified by the `reshape` prop.\n return flatten(reshapeSources)\n .filter(Boolean)\n .map((source) => {\n return {\n source,\n items: source.getItems(),\n };\n });\n}\n","import { noop } from '@algolia/autocomplete-shared';\n\nimport { 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, isSamsung } 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 function onMouseDownOrTouchStart(event: MouseEvent | TouchEvent) {\n // The `onTouchStart`/`onMouseDown` events shouldn't trigger the `blur`\n // handler when it's not an interaction with Autocomplete.\n // We detect it with the following heuristics:\n // - the panel is closed AND there are no pending requests\n // (no interaction with the autocomplete, no future state updates)\n // - OR the touched target is the input element (should open the panel)\n const isAutocompleteInteraction =\n store.getState().isOpen || !store.pendingRequests.isEmpty();\n\n if (!isAutocompleteInteraction || event.target === inputElement) {\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 isOrContainsNode(contextNode, event.target as Node);\n }\n );\n\n if (isTargetWithinAutocomplete === false) {\n store.dispatch('blur', null);\n\n // If requests are still pending when the user closes the panel, they\n // could reopen the panel once they resolve.\n // We want to prevent any subsequent query from reopening the panel\n // because it would result in an unsolicited UI behavior.\n if (!props.debug) {\n store.pendingRequests.cancelAll();\n }\n }\n }\n\n return {\n // We do not rely on the native `blur` event of the input to close the\n // panel, but rather on a custom `touchstart`/`mousedown` event outside\n // of the autocomplete elements.\n // This ensures we don't mistakenly interpret interactions within the\n // autocomplete (but outside of the input) as a signal to close the panel.\n // For example, clicking reset button causes an input blur, but if\n // `openOnFocus=true`, it shouldn't close the panel.\n // On touch devices, scrolling results (`touchmove`) causes an input blur\n // but shouldn't close the panel.\n onTouchStart: onMouseDownOrTouchStart,\n onMouseDown: onMouseDownOrTouchStart,\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 { inputElement, maxLength = 512, ...rest } = providedProps || {};\n const activeItem = getActiveItem(store.getState());\n\n const userAgent = props.environment.navigator?.userAgent || '';\n const shouldFallbackKeyHint = isSamsung(userAgent);\n const enterKeyHint =\n activeItem?.itemUrl && !shouldFallbackKeyHint ? 'go' : 'search';\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,\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 // We don't rely on the `blur` event.\n // See explanation in `onTouchStart`/`onMouseDown`.\n // @MAJOR See if we need to keep this handler.\n onBlur: noop,\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","export function isOrContainsNode(parent: Node, child: Node) {\n return parent === child || parent.contains(child);\n}\n","import { onInput } from './onInput';\nimport {\n ActionType,\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 // eslint-disable-next-line no-inner-declarations\n function triggerScrollIntoView() {\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\n // eslint-disable-next-line no-inner-declarations\n function triggerOnActive() {\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\n // Default browser behavior changes the caret placement on ArrowUp and\n // ArrowDown.\n event.preventDefault();\n\n // When re-opening the panel, we need to split the logic to keep the actions\n // synchronized as `onInput` returns a promise.\n if (\n store.getState().isOpen === false &&\n (props.openOnFocus || Boolean(store.getState().query))\n ) {\n onInput({\n event,\n props,\n query: store.getState().query,\n refresh,\n store,\n ...setters,\n }).then(() => {\n store.dispatch(event.key as ActionType, {\n nextActiveItemId: props.defaultActiveItemId,\n });\n\n triggerOnActive();\n // Since we rely on the DOM, we need to wait for all the micro tasks to\n // finish (which include re-opening the panel) to make sure all the\n // elements are available.\n setTimeout(triggerScrollIntoView, 0);\n });\n } else {\n store.dispatch(event.key, {});\n\n triggerOnActive();\n triggerScrollIntoView();\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\n // Hitting the `Escape` key signals the end of a user interaction with the\n // autocomplete. At this point, we should ignore any requests that are still\n // pending and could reopen the panel once they resolve, because that would\n // result in an unsolicited UI behavior.\n store.pendingRequests.cancelAll();\n } else if (event.key === 'Tab') {\n store.dispatch('blur', null);\n\n // Hitting the `Escape` key signals the end of a user interaction with the\n // autocomplete. At this point, we should ignore any requests that are still\n // pending and could reopen the panel once they resolve, because that would\n // result in an unsolicited UI behavior.\n store.pendingRequests.cancelAll();\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 // If requests are still pending when the panel closes, they could reopen\n // the panel once they resolve.\n // We want to prevent any subsequent query from reopening the panel\n // because it would result in an unsolicited UI behavior.\n if (!props.debug) {\n store.pendingRequests.cancelAll();\n }\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 { UserAgent, userAgents } from '@algolia/autocomplete-shared';\n\nimport {\n AutocompleteEnvironment,\n AutocompleteOptions,\n AutocompleteOptionsWithMetadata,\n AutocompletePlugin,\n BaseItem,\n} from '.';\n\ntype AutocompleteMetadata = {\n plugins: Array<{\n name: string | undefined;\n options: string[];\n }>;\n options: Record<string, string[]>;\n ua: UserAgent[];\n};\n\ntype GetMetadataParams<TItem extends BaseItem, TData = unknown> = {\n plugins: Array<AutocompletePlugin<TItem, TData>>;\n options: AutocompleteOptionsWithMetadata<TItem>;\n};\n\nexport function getMetadata<TItem extends BaseItem, TData = unknown>({\n plugins,\n options,\n}: GetMetadataParams<TItem, TData>) {\n const optionsKey = ((options.__autocomplete_metadata\n ?.userAgents as UserAgent[]) || [])[0]?.segment;\n\n const extraOptions = optionsKey\n ? {\n [optionsKey]: Object.keys(\n (options.__autocomplete_metadata\n ?.options as AutocompleteOptions<TItem>) || {}\n ),\n }\n : {};\n\n return {\n plugins: plugins.map((plugin) => ({\n name: plugin.name,\n options: Object.keys(plugin.__autocomplete_pluginOptions || []),\n })),\n options: {\n 'autocomplete-core': Object.keys(options),\n ...extraOptions,\n },\n ua: userAgents.concat(\n (options.__autocomplete_metadata?.userAgents as any) || []\n ),\n };\n}\n\ntype InlineMetadataParams = {\n metadata: AutocompleteMetadata;\n environment: AutocompleteEnvironment;\n};\n\nexport function injectMetadata({\n metadata,\n environment,\n}: InlineMetadataParams) {\n const isMetadataEnabled = environment.navigator?.userAgent?.includes(\n 'Algolia Crawler'\n );\n\n if (isMetadataEnabled) {\n const metadataContainer = environment.document.createElement('meta');\n const headRef = environment.document.querySelector('head');\n\n metadataContainer.name = 'algolia:metadata';\n\n setTimeout(() => {\n metadataContainer.content = JSON.stringify(metadata);\n headRef!.appendChild(metadataContainer);\n }, 0);\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 return getActiveItem(state)?.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: action.payload.hasOwnProperty('nextActiveItemId')\n ? action.payload.nextActiveItemId\n : 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 activeItemId: null,\n isOpen: false,\n completion: null,\n };\n }\n\n return {\n ...state,\n activeItemId: null,\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 { getMetadata, injectMetadata } from './metadata';\nimport { onInput } from './onInput';\nimport { stateReducer } from './stateReducer';\nimport {\n AutocompleteApi,\n AutocompleteOptions as AutocompleteCoreOptions,\n BaseItem,\n AutocompleteSubscribers,\n} from './types';\n\nexport interface AutocompleteOptionsWithMetadata<TItem extends BaseItem>\n extends AutocompleteCoreOptions<TItem> {\n /**\n * @internal\n */\n __autocomplete_metadata?: Record<string, unknown>;\n}\n\nexport function createAutocomplete<\n TItem extends BaseItem,\n TEvent = Event,\n TMouseEvent = MouseEvent,\n TKeyboardEvent = KeyboardEvent\n>(\n options: AutocompleteOptionsWithMetadata<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 injectMetadata({\n metadata: getMetadata({ plugins: props.plugins, options }),\n environment: props.environment,\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';\nimport { createCancelablePromiseList } from './utils';\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 pendingRequests: createCancelablePromiseList(),\n };\n}\n","import { CancelablePromise } from '.';\n\nexport type CancelablePromiseList<TValue> = {\n /**\n * Add a cancelable promise to the list.\n *\n * @param cancelablePromise The cancelable promise to add.\n */\n add(cancelablePromise: CancelablePromise<TValue>): CancelablePromise<TValue>;\n /**\n * Cancel all pending promises.\n *\n * Requests aren't actually stopped. All pending promises will settle, but\n * attached handlers won't run.\n */\n cancelAll(): void;\n /**\n * Whether there are pending promises in the list.\n */\n isEmpty(): boolean;\n};\n\nexport function createCancelablePromiseList<\n TValue\n>(): CancelablePromiseList<TValue> {\n let list: Array<CancelablePromise<TValue>> = [];\n\n return {\n add(cancelablePromise) {\n list.push(cancelablePromise);\n\n return cancelablePromise.finally(() => {\n list = list.filter((item) => item !== cancelablePromise);\n });\n },\n cancelAll() {\n list.forEach((promise) => promise.cancel());\n },\n isEmpty() {\n return list.length === 0;\n },\n };\n}\n","import { flatten } from '@algolia/autocomplete-shared';\n\nimport {\n AutocompleteApi,\n AutocompleteCollection,\n AutocompleteStore,\n BaseItem,\n} from './types';\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 `getAlgoliaResults`\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"],"names":["flatten","values","reduce","a","b","concat","autocompleteId","getItemsCount","state","collections","length","sum","collection","items","noop","userAgents","segment","version","createInternalCancelablePromise","promise","initialState","then","onfulfilled","onrejected","createCallback","catch","finally","onfinally","onCancelList","push","cancel","isCanceled","callbacks","forEach","callback","cancelable","onResult","fallback","arg","getNextActiveItemId","moveAmount","baseIndex","itemCount","defaultActiveItemId","numericIndex","getActiveItem","collectionIndex","map","acc","collectionsCount","index","nextValue","current","activeItemId","getCollectionFromActiveItemId","item","isOffsetFound","counter","previousItemsOffset","currentCollection","getRelativeActiveItemId","source","itemInputValue","getItemInputValue","itemUrl","getItemUrl","regex","getDefaultProps","props","pluginSubscribers","environment","window","plugins","debug","openOnFocus","placeholder","autoFocus","stallThreshold","shouldPanelOpen","reshape","sources","id","query","completion","isOpen","status","context","onStateChange","params","x","_x$onStateChange","onSubmit","_x$onSubmit","onReset","_x$onReset","getSources","Promise","all","plugin","filter","Boolean","seenSourceIds","resolve","maybeSource","sourceId","includes","Error","JSON","stringify","normalizedSource","onSelect","setIsOpen","onActive","getNormalizedSources","nested","_x$onSelect","_x$onActive","navigator","navigate","location","assign","navigateNewTab","windowReference","open","focus","navigateNewWindow","isDescription","execute","preResolve","itemsOrDescription","description","requests","queries","transformResponse","searchClient","requesterId","container","find","request","maybeDescription","responses","postResolve","matches","response","results","transform","rawResults","result","hits","_hits","hit","__autocomplete_indexName","__autocomplete_queryID","queryID","facetHits","_facetHits","facetHit","label","value","count","_highlightResult","highlighted","mapToAlgoliaResponse","every","undefined","basePromiseId","latestResolvedId","latestResolvedValue","lastStalledId","runConcurrentSafePromise","currentPromiseId","onInput","event","nextState","refresh","store","setters","clearTimeout","setCollections","setQuery","setActiveItemId","setStatus","getState","pendingRequests","add","setTimeout","getItems","sourcesBySourceId","Object","isPanelOpen","highlightedItem","getPropGetters","getEnvironmentProps","providedProps","inputElement","formElement","panelElement","onMouseDownOrTouchStart","isEmpty","target","some","contextNode","parent","child","contains","dispatch","cancelAll","onTouchStart","onMouseDown","onTouchMove","document","activeElement","blur","getRootProps","rest","role","getFormProps","action","noValidate","preventDefault","getLabelProps","htmlFor","getInputProps","onFocus","maxLength","activeItem","shouldFallbackKeyHint","userAgent","match","isSamsung","enterKeyHint","autoComplete","autoCorrect","autoCapitalize","spellCheck","type","onChange","currentTarget","slice","onKeyDown","key","triggerScrollIntoView","nodeItem","getElementById","scrollIntoViewIfNeeded","scrollIntoView","triggerOnActive","nextActiveItemId","metaKey","ctrlKey","shiftKey","altKey","onBlur","onClick","getPanelProps","onMouseLeave","getListProps","getItemProps","__autocomplete_id","onMouseMove","getMetadata","options","optionsKey","__autocomplete_metadata","_options$__autocomple","_","extraOptions","keys","_options$__autocomple2","name","__autocomplete_pluginOptions","ua","_options$__autocomple3","getCompletion","stateReducer","payload","hasOwnProperty","subscribers","reducer","onStoreStateChange","list","prevState","cancelablePromise","createStore","rawValue","baseItemId","setContext","getAutocompleteSetters","propGetters","Event","subscribe","_plugin$subscribe","fn","metadata","_environment$navigato","_environment$navigato2","metadataContainer","createElement","headRef","querySelector","content","appendChild","injectMetadata"],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@algolia/autocomplete-core",
3
3
  "description": "Core primitives for building autocomplete experiences.",
4
- "version": "1.7.1",
4
+ "version": "1.7.2",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/algolia/autocomplete",
7
7
  "repository": "algolia/autocomplete",
@@ -31,10 +31,10 @@
31
31
  "watch": "watch \"yarn on:change\" --ignoreDirectoryPattern \"/dist/\""
32
32
  },
33
33
  "dependencies": {
34
- "@algolia/autocomplete-shared": "1.7.1"
34
+ "@algolia/autocomplete-shared": "1.7.2"
35
35
  },
36
36
  "devDependencies": {
37
- "@algolia/autocomplete-preset-algolia": "1.7.1",
37
+ "@algolia/autocomplete-preset-algolia": "1.7.2",
38
38
  "@algolia/client-search": "4.9.1",
39
39
  "algoliasearch": "4.9.1"
40
40
  }