@algolia/autocomplete-core 1.0.0-alpha.40 → 1.0.0-alpha.44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/getDefaultProps.d.ts +1 -1
- package/dist/esm/getDefaultProps.js +1 -1
- package/dist/esm/onInput.js +4 -11
- package/dist/esm/stateReducer.js +3 -1
- package/dist/esm/types/AutocompleteOptions.d.ts +2 -9
- package/dist/esm/types/AutocompletePlugin.d.ts +2 -2
- package/dist/esm/types/AutocompleteSource.d.ts +6 -2
- package/dist/esm/types/AutocompleteSubscribers.d.ts +2 -2
- package/dist/esm/utils/getNormalizedSources.js +2 -0
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/umd/index.development.js +12 -15
- package/dist/umd/index.development.js.map +1 -1
- package/dist/umd/index.production.js +2 -2
- package/dist/umd/index.production.js.map +1 -1
- package/package.json +4 -4
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { AutocompleteOptions, BaseItem, InternalAutocompleteOptions
|
|
1
|
+
import { AutocompleteOptions, AutocompleteSubscribers, BaseItem, InternalAutocompleteOptions } from './types';
|
|
2
2
|
export declare function getDefaultProps<TItem extends BaseItem>(props: AutocompleteOptions<TItem>, pluginSubscribers: AutocompleteSubscribers<TItem>): InternalAutocompleteOptions<TItem>;
|
|
@@ -31,7 +31,7 @@ export function getDefaultProps(props, pluginSubscribers) {
|
|
|
31
31
|
defaultActiveItemId: null,
|
|
32
32
|
stallThreshold: 300,
|
|
33
33
|
environment: environment,
|
|
34
|
-
|
|
34
|
+
shouldPanelOpen: function shouldPanelOpen(_ref) {
|
|
35
35
|
var state = _ref.state;
|
|
36
36
|
return getItemsCount(state) > 0;
|
|
37
37
|
}
|
package/dist/esm/onInput.js
CHANGED
|
@@ -23,14 +23,6 @@ export function onInput(_ref) {
|
|
|
23
23
|
store = _ref.store,
|
|
24
24
|
setters = _objectWithoutProperties(_ref, ["event", "nextState", "props", "query", "refresh", "store"]);
|
|
25
25
|
|
|
26
|
-
if (props.onInput) {
|
|
27
|
-
return Promise.resolve(props.onInput(_objectSpread({
|
|
28
|
-
query: query,
|
|
29
|
-
refresh: refresh,
|
|
30
|
-
state: store.getState()
|
|
31
|
-
}, setters)));
|
|
32
|
-
}
|
|
33
|
-
|
|
34
26
|
if (lastStalledId) {
|
|
35
27
|
props.environment.clearTimeout(lastStalledId);
|
|
36
28
|
}
|
|
@@ -52,7 +44,7 @@ export function onInput(_ref) {
|
|
|
52
44
|
items: []
|
|
53
45
|
});
|
|
54
46
|
}));
|
|
55
|
-
setIsOpen((_nextState$isOpen = nextState.isOpen) !== null && _nextState$isOpen !== void 0 ? _nextState$isOpen : props.
|
|
47
|
+
setIsOpen((_nextState$isOpen = nextState.isOpen) !== null && _nextState$isOpen !== void 0 ? _nextState$isOpen : props.shouldPanelOpen({
|
|
56
48
|
state: store.getState()
|
|
57
49
|
}));
|
|
58
50
|
return Promise.resolve();
|
|
@@ -86,9 +78,10 @@ export function onInput(_ref) {
|
|
|
86
78
|
|
|
87
79
|
setStatus('idle');
|
|
88
80
|
setCollections(collections);
|
|
89
|
-
|
|
81
|
+
var isPanelOpen = props.shouldPanelOpen({
|
|
90
82
|
state: store.getState()
|
|
91
|
-
})
|
|
83
|
+
});
|
|
84
|
+
setIsOpen((_nextState$isOpen2 = nextState.isOpen) !== null && _nextState$isOpen2 !== void 0 ? _nextState$isOpen2 : props.openOnFocus && !query && isPanelOpen || isPanelOpen);
|
|
92
85
|
var highlightedItem = getActiveItem(store.getState());
|
|
93
86
|
|
|
94
87
|
if (store.getState().activeItemId !== null && highlightedItem) {
|
package/dist/esm/stateReducer.js
CHANGED
|
@@ -120,7 +120,9 @@ export var stateReducer = function stateReducer(state, action) {
|
|
|
120
120
|
{
|
|
121
121
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
122
122
|
activeItemId: action.props.defaultActiveItemId,
|
|
123
|
-
isOpen: action.props.openOnFocus || Boolean(state.query)
|
|
123
|
+
isOpen: (action.props.openOnFocus || Boolean(state.query)) && action.props.shouldPanelOpen({
|
|
124
|
+
state: state
|
|
125
|
+
})
|
|
124
126
|
});
|
|
125
127
|
}
|
|
126
128
|
|
|
@@ -95,7 +95,7 @@ export interface AutocompleteOptions<TItem extends BaseItem> {
|
|
|
95
95
|
/**
|
|
96
96
|
* The function called to determine whether the panel should open.
|
|
97
97
|
*/
|
|
98
|
-
|
|
98
|
+
shouldPanelOpen?(params: {
|
|
99
99
|
state: AutocompleteState<TItem>;
|
|
100
100
|
}): boolean;
|
|
101
101
|
/**
|
|
@@ -106,13 +106,6 @@ export interface AutocompleteOptions<TItem extends BaseItem> {
|
|
|
106
106
|
* The function called when the Autocomplete form is reset.
|
|
107
107
|
*/
|
|
108
108
|
onReset?(params: OnResetParams<TItem>): void;
|
|
109
|
-
/**
|
|
110
|
-
* The function called when the input changes.
|
|
111
|
-
*
|
|
112
|
-
* This turns the experience in controlled mode, leaving you in charge of
|
|
113
|
-
* updating the state.
|
|
114
|
-
*/
|
|
115
|
-
onInput?(params: OnInputParams<TItem>): void;
|
|
116
109
|
/**
|
|
117
110
|
* The array of plugins.
|
|
118
111
|
*/
|
|
@@ -132,7 +125,7 @@ export interface InternalAutocompleteOptions<TItem extends BaseItem> extends Aut
|
|
|
132
125
|
environment: AutocompleteEnvironment;
|
|
133
126
|
navigator: AutocompleteNavigator<TItem>;
|
|
134
127
|
plugins: Array<AutocompletePlugin<TItem, unknown>>;
|
|
135
|
-
|
|
128
|
+
shouldPanelOpen(params: {
|
|
136
129
|
state: AutocompleteState<TItem>;
|
|
137
130
|
}): boolean;
|
|
138
131
|
onSubmit(params: OnSubmitParams<TItem>): void;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { AutocompleteScopeApi, BaseItem } from './AutocompleteApi';
|
|
2
2
|
import { AutocompleteOptions } from './AutocompleteOptions';
|
|
3
|
-
import { OnSelectParams,
|
|
3
|
+
import { OnSelectParams, OnActiveParams } from './AutocompleteSource';
|
|
4
4
|
declare type PluginSubscriber<TParams> = (params: TParams) => void;
|
|
5
5
|
interface PluginSubscribeParams<TItem extends BaseItem> extends AutocompleteScopeApi<TItem> {
|
|
6
6
|
onSelect(fn: PluginSubscriber<OnSelectParams<TItem>>): void;
|
|
7
|
-
onActive(fn: PluginSubscriber<
|
|
7
|
+
onActive(fn: PluginSubscriber<OnActiveParams<TItem>>): void;
|
|
8
8
|
}
|
|
9
9
|
export declare type AutocompletePlugin<TItem extends BaseItem, TData = unknown> = Partial<Pick<AutocompleteOptions<TItem>, 'onStateChange' | 'onSubmit' | 'onReset' | 'getSources'>> & {
|
|
10
10
|
/**
|
|
@@ -10,8 +10,12 @@ export interface OnSelectParams<TItem extends BaseItem> extends AutocompleteScop
|
|
|
10
10
|
itemUrl: ReturnType<InternalAutocompleteSource<TItem>['getItemUrl']>;
|
|
11
11
|
source: InternalAutocompleteSource<TItem>;
|
|
12
12
|
}
|
|
13
|
-
export declare type
|
|
13
|
+
export declare type OnActiveParams<TItem extends BaseItem> = OnSelectParams<TItem>;
|
|
14
14
|
export interface AutocompleteSource<TItem extends BaseItem> {
|
|
15
|
+
/**
|
|
16
|
+
* Identifier for the source.
|
|
17
|
+
*/
|
|
18
|
+
sourceId: string;
|
|
15
19
|
/**
|
|
16
20
|
* Get the string value of the item. The value is used to fill the search box.
|
|
17
21
|
*/
|
|
@@ -41,7 +45,7 @@ export interface AutocompleteSource<TItem extends BaseItem> {
|
|
|
41
45
|
* An item is highlighted either via keyboard navigation or via mouse over.
|
|
42
46
|
* You can trigger different behaviors based on the event `type`.
|
|
43
47
|
*/
|
|
44
|
-
onActive?(params:
|
|
48
|
+
onActive?(params: OnActiveParams<TItem>): void;
|
|
45
49
|
}
|
|
46
50
|
export declare type InternalAutocompleteSource<TItem extends BaseItem> = {
|
|
47
51
|
[KParam in keyof AutocompleteSource<TItem>]-?: AutocompleteSource<TItem>[KParam];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BaseItem } from './AutocompleteApi';
|
|
2
|
-
import {
|
|
2
|
+
import { OnActiveParams, OnSelectParams } from './AutocompleteSource';
|
|
3
3
|
export declare type AutocompleteSubscriber<TItem extends BaseItem> = {
|
|
4
4
|
onSelect(params: OnSelectParams<TItem>): void;
|
|
5
|
-
onActive(params:
|
|
5
|
+
onActive(params: OnActiveParams<TItem>): void;
|
|
6
6
|
};
|
|
7
7
|
export declare type AutocompleteSubscribers<TItem extends BaseItem> = Array<Partial<AutocompleteSubscriber<TItem>>>;
|
|
@@ -17,6 +17,8 @@ export function getNormalizedSources(getSources, params) {
|
|
|
17
17
|
.filter(function (maybeSource) {
|
|
18
18
|
return Boolean(maybeSource);
|
|
19
19
|
}).map(function (source) {
|
|
20
|
+
invariant(typeof source.sourceId === 'string', 'A source must provide a `sourceId` string.');
|
|
21
|
+
|
|
20
22
|
var normalizedSource = _objectSpread({
|
|
21
23
|
getItemInputValue: function getItemInputValue(_ref) {
|
|
22
24
|
var state = _ref.state;
|
package/dist/esm/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const version = "1.0.0-alpha.
|
|
1
|
+
export declare const version = "1.0.0-alpha.44";
|
package/dist/esm/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export var version = '1.0.0-alpha.
|
|
1
|
+
export var version = '1.0.0-alpha.44';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @algolia/autocomplete-core 1.0.0-alpha.
|
|
1
|
+
/*! @algolia/autocomplete-core 1.0.0-alpha.44 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete */
|
|
2
2
|
(function (global, factory) {
|
|
3
3
|
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
|
|
4
4
|
typeof define === 'function' && define.amd ? define(['exports'], factory) :
|
|
@@ -263,6 +263,8 @@
|
|
|
263
263
|
.filter(function (maybeSource) {
|
|
264
264
|
return Boolean(maybeSource);
|
|
265
265
|
}).map(function (source) {
|
|
266
|
+
invariant(typeof source.sourceId === 'string', 'A source must provide a `sourceId` string.');
|
|
267
|
+
|
|
266
268
|
var normalizedSource = _objectSpread2({
|
|
267
269
|
getItemInputValue: function getItemInputValue(_ref) {
|
|
268
270
|
var state = _ref.state;
|
|
@@ -435,7 +437,7 @@
|
|
|
435
437
|
defaultActiveItemId: null,
|
|
436
438
|
stallThreshold: 300,
|
|
437
439
|
environment: environment,
|
|
438
|
-
|
|
440
|
+
shouldPanelOpen: function shouldPanelOpen(_ref) {
|
|
439
441
|
var state = _ref.state;
|
|
440
442
|
return getItemsCount(state) > 0;
|
|
441
443
|
}
|
|
@@ -543,14 +545,6 @@
|
|
|
543
545
|
store = _ref.store,
|
|
544
546
|
setters = _objectWithoutProperties(_ref, ["event", "nextState", "props", "query", "refresh", "store"]);
|
|
545
547
|
|
|
546
|
-
if (props.onInput) {
|
|
547
|
-
return Promise.resolve(props.onInput(_objectSpread2({
|
|
548
|
-
query: query,
|
|
549
|
-
refresh: refresh,
|
|
550
|
-
state: store.getState()
|
|
551
|
-
}, setters)));
|
|
552
|
-
}
|
|
553
|
-
|
|
554
548
|
if (lastStalledId) {
|
|
555
549
|
props.environment.clearTimeout(lastStalledId);
|
|
556
550
|
}
|
|
@@ -572,7 +566,7 @@
|
|
|
572
566
|
items: []
|
|
573
567
|
});
|
|
574
568
|
}));
|
|
575
|
-
setIsOpen((_nextState$isOpen = nextState.isOpen) !== null && _nextState$isOpen !== void 0 ? _nextState$isOpen : props.
|
|
569
|
+
setIsOpen((_nextState$isOpen = nextState.isOpen) !== null && _nextState$isOpen !== void 0 ? _nextState$isOpen : props.shouldPanelOpen({
|
|
576
570
|
state: store.getState()
|
|
577
571
|
}));
|
|
578
572
|
return Promise.resolve();
|
|
@@ -606,9 +600,10 @@
|
|
|
606
600
|
|
|
607
601
|
setStatus('idle');
|
|
608
602
|
setCollections(collections);
|
|
609
|
-
|
|
603
|
+
var isPanelOpen = props.shouldPanelOpen({
|
|
610
604
|
state: store.getState()
|
|
611
|
-
})
|
|
605
|
+
});
|
|
606
|
+
setIsOpen((_nextState$isOpen2 = nextState.isOpen) !== null && _nextState$isOpen2 !== void 0 ? _nextState$isOpen2 : props.openOnFocus && !query && isPanelOpen || isPanelOpen);
|
|
612
607
|
var highlightedItem = getActiveItem(store.getState());
|
|
613
608
|
|
|
614
609
|
if (store.getState().activeItemId !== null && highlightedItem) {
|
|
@@ -1197,7 +1192,9 @@
|
|
|
1197
1192
|
{
|
|
1198
1193
|
return _objectSpread2(_objectSpread2({}, state), {}, {
|
|
1199
1194
|
activeItemId: action.props.defaultActiveItemId,
|
|
1200
|
-
isOpen: action.props.openOnFocus || Boolean(state.query)
|
|
1195
|
+
isOpen: (action.props.openOnFocus || Boolean(state.query)) && action.props.shouldPanelOpen({
|
|
1196
|
+
state: state
|
|
1197
|
+
})
|
|
1201
1198
|
});
|
|
1202
1199
|
}
|
|
1203
1200
|
|
|
@@ -1292,7 +1289,7 @@
|
|
|
1292
1289
|
}, propGetters), setters);
|
|
1293
1290
|
}
|
|
1294
1291
|
|
|
1295
|
-
var version = '1.0.0-alpha.
|
|
1292
|
+
var version = '1.0.0-alpha.44';
|
|
1296
1293
|
|
|
1297
1294
|
exports.createAutocomplete = createAutocomplete;
|
|
1298
1295
|
exports.getDefaultProps = getDefaultProps;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.development.js","sources":["../../../autocomplete-shared/dist/esm/getItemsCount.js","../../../autocomplete-shared/dist/esm/invariant.js","../../../autocomplete-shared/dist/esm/warn.js","../../src/checkOptions.ts","../../src/createStore.ts","../../src/utils/flatten.ts","../../src/utils/generateAutocompleteId.ts","../../src/utils/getNextActiveItemId.ts","../../src/utils/noop.ts","../../src/utils/getNormalizedSources.ts","../../src/utils/getActiveItem.ts","../../src/utils/isOrContainsNode.ts","../../src/getAutocompleteSetters.ts","../../src/getDefaultProps.ts","../../src/onInput.ts","../../src/onKeyDown.ts","../../src/getPropGetters.ts","../../src/getCompletion.ts","../../src/stateReducer.ts","../../src/createAutocomplete.ts","../../src/version.ts"],"sourcesContent":["export function getItemsCount(state) {\n if (state.collections.length === 0) {\n return 0;\n }\n\n return state.collections.reduce(function (sum, collection) {\n return sum + collection.items.length;\n }, 0);\n}","/**\n * Throws an error if the condition is not met in development mode.\n * This is used to make development a better experience to provide guidance as\n * to where the error comes from.\n */\nexport function invariant(condition, message) {\n if (!(process.env.NODE_ENV !== 'production')) {\n return;\n }\n\n if (!condition) {\n throw new Error(\"[Autocomplete] \".concat(message));\n }\n}","export var warnCache = {\n current: {}\n};\n/**\n * Logs a warning if the condition is not met.\n * This is used to log issues in development environment only.\n */\n\nexport function warn(condition, message) {\n if (!(process.env.NODE_ENV !== 'production')) {\n return;\n }\n\n if (condition) {\n return;\n }\n\n var sanitizedMessage = message.trim();\n var hasAlreadyPrinted = warnCache.current[sanitizedMessage];\n\n if (!hasAlreadyPrinted) {\n warnCache.current[sanitizedMessage] = true; // eslint-disable-next-line no-console\n\n console.warn(\"[Autocomplete] \".concat(sanitizedMessage));\n }\n}","import { warn } from '@algolia/autocomplete-shared';\n\nimport { AutocompleteOptions, BaseItem } from './types';\n\nexport function checkOptions<TItem extends BaseItem>(\n options: AutocompleteOptions<TItem>\n) {\n warn(\n !options.debug,\n 'The `debug` option is meant for development debugging and should not be used in production.'\n );\n}\n","import {\n AutocompleteState,\n AutocompleteStore,\n BaseItem,\n InternalAutocompleteOptions,\n Reducer,\n} from './types';\n\ntype OnStoreStateChange<TItem extends BaseItem> = ({\n prevState,\n state,\n}: {\n prevState: AutocompleteState<TItem>;\n state: AutocompleteState<TItem>;\n}) => void;\n\nexport function createStore<TItem extends BaseItem>(\n reducer: Reducer,\n props: InternalAutocompleteOptions<TItem>,\n onStoreStateChange: OnStoreStateChange<TItem>\n): AutocompleteStore<TItem> {\n let state = props.initialState;\n\n return {\n getState() {\n return state;\n },\n dispatch(action, payload) {\n const prevState = { ...state };\n state = reducer(state, {\n type: action,\n props,\n payload,\n });\n\n onStoreStateChange({ state, prevState });\n },\n };\n}\n","export function flatten<TType>(values: Array<TType | TType[]>): TType[] {\n return values.reduce<TType[]>((a, b) => {\n return a.concat(b);\n }, []);\n}\n","let autocompleteId = 0;\n\nexport function generateAutocompleteId() {\n return `autocomplete-${autocompleteId++}`;\n}\n","/**\n * Returns the next active item ID from the current state.\n *\n * We allow circular keyboard navigation from the base index.\n * The base index can either be `null` (nothing is highlighted) or `0`\n * (the first item is highlighted).\n * The base index is allowed to get assigned `null` only if\n * `props.defaultActiveItemId` is `null`. This pattern allows to \"stop\"\n * by the actual query before navigating to other suggestions as seen on\n * Google or Amazon.\n *\n * @param moveAmount The offset to increment (or decrement) the last index\n * @param baseIndex The current index to compute the next index from\n * @param itemCount The number of items\n * @param defaultActiveItemId The default active index to fallback to\n */\nexport function getNextActiveItemId(\n moveAmount: number,\n baseIndex: number | null,\n itemCount: number,\n defaultActiveItemId: number | null\n): number | null {\n if (\n moveAmount < 0 &&\n (baseIndex === null || (defaultActiveItemId !== null && baseIndex === 0))\n ) {\n return itemCount + moveAmount;\n }\n\n const numericIndex = (baseIndex === null ? -1 : baseIndex) + moveAmount;\n\n if (numericIndex <= -1 || numericIndex >= itemCount) {\n return defaultActiveItemId === null ? null : 0;\n }\n\n return numericIndex;\n}\n","export const noop = () => {};\n","import { invariant } from '@algolia/autocomplete-shared';\n\nimport {\n AutocompleteSource,\n BaseItem,\n GetSources,\n GetSourcesParams,\n InternalAutocompleteSource,\n InternalGetSources,\n} from '../types';\n\nimport { noop } from './noop';\n\nexport function getNormalizedSources<TItem extends BaseItem>(\n getSources: GetSources<TItem>,\n params: GetSourcesParams<TItem>\n): ReturnType<InternalGetSources<TItem>> {\n return Promise.resolve(getSources(params)).then((sources) => {\n invariant(\n Array.isArray(sources),\n `The \\`getSources\\` function must return an array of sources but returned type ${JSON.stringify(\n typeof sources\n )}:\\n\\n${JSON.stringify(sources, null, 2)}`\n );\n\n return Promise.all(\n sources\n // We allow `undefined` and `false` sources to allow users to use\n // `Boolean(query) && source` (=> `false`).\n // We need to remove these values at this point.\n .filter((maybeSource: any): maybeSource is AutocompleteSource<TItem> =>\n Boolean(maybeSource)\n )\n .map((source) => {\n const normalizedSource: InternalAutocompleteSource<TItem> = {\n getItemInputValue({ state }) {\n return state.query;\n },\n getItemUrl() {\n return undefined;\n },\n onSelect({ setIsOpen }) {\n setIsOpen(false);\n },\n onActive: noop,\n ...source,\n };\n\n return Promise.resolve(normalizedSource);\n })\n );\n });\n}\n","import { AutocompleteCollection, AutocompleteState, BaseItem } from '../types';\n\n// We don't have access to the autocomplete source when we call `onKeyDown`\n// or `onClick` because those are native browser events.\n// However, we can get the source from the suggestion index.\nfunction getCollectionFromActiveItemId<TItem extends BaseItem>(\n state: AutocompleteState<TItem>\n): AutocompleteCollection<TItem> | undefined {\n // Given 3 sources with respectively 1, 2 and 3 suggestions: [1, 2, 3]\n // We want to get the accumulated counts:\n // [1, 1 + 2, 1 + 2 + 3] = [1, 3, 3 + 3] = [1, 3, 6]\n const accumulatedCollectionsCount = state.collections\n .map((collections) => collections.items.length)\n .reduce<number[]>((acc, collectionsCount, index) => {\n const previousValue = acc[index - 1] || 0;\n const nextValue = previousValue + collectionsCount;\n\n acc.push(nextValue);\n\n return acc;\n }, []);\n\n // Based on the accumulated counts, we can infer the index of the suggestion.\n const collectionIndex = accumulatedCollectionsCount.reduce((acc, current) => {\n if (current <= state.activeItemId!) {\n return acc + 1;\n }\n\n return acc;\n }, 0);\n\n return state.collections[collectionIndex];\n}\n\n/**\n * Gets the highlighted index relative to a suggestion object (not the absolute\n * highlighted index).\n *\n * Example:\n * [['a', 'b'], ['c', 'd', 'e'], ['f']]\n * ↑\n * (absolute: 3, relative: 1)\n */\nfunction getRelativeActiveItemId<TItem extends BaseItem>({\n state,\n collection,\n}: {\n state: AutocompleteState<TItem>;\n collection: AutocompleteCollection<TItem>;\n}): number {\n let isOffsetFound = false;\n let counter = 0;\n let previousItemsOffset = 0;\n\n while (isOffsetFound === false) {\n const currentCollection = state.collections[counter];\n\n if (currentCollection === collection) {\n isOffsetFound = true;\n break;\n }\n\n previousItemsOffset += currentCollection.items.length;\n\n counter++;\n }\n\n return state.activeItemId! - previousItemsOffset;\n}\n\nexport function getActiveItem<TItem extends BaseItem>(\n state: AutocompleteState<TItem>\n) {\n const collection = getCollectionFromActiveItemId(state);\n\n if (!collection) {\n return null;\n }\n\n const item = collection.items[getRelativeActiveItemId({ state, collection })];\n const source = collection.source;\n const itemInputValue = source.getItemInputValue({ item, state });\n const itemUrl = source.getItemUrl({ item, state });\n\n return {\n item,\n itemInputValue,\n itemUrl,\n source,\n };\n}\n","export function isOrContainsNode(parent: Node, child: Node) {\n return parent === child || parent.contains(child);\n}\n","import {\n AutocompleteApi,\n AutocompleteCollection,\n AutocompleteStore,\n BaseItem,\n} from './types';\nimport { flatten } from './utils';\n\ninterface GetAutocompleteSettersOptions<TItem extends BaseItem> {\n store: AutocompleteStore<TItem>;\n}\n\nexport function getAutocompleteSetters<TItem extends BaseItem>({\n store,\n}: GetAutocompleteSettersOptions<TItem>) {\n const setActiveItemId: AutocompleteApi<TItem>['setActiveItemId'] = (\n value\n ) => {\n store.dispatch('setActiveItemId', value);\n };\n\n const setQuery: AutocompleteApi<TItem>['setQuery'] = (value) => {\n store.dispatch('setQuery', value);\n };\n\n const setCollections: AutocompleteApi<TItem>['setCollections'] = (\n rawValue\n ) => {\n let baseItemId = 0;\n const value = rawValue.map<AutocompleteCollection<TItem>>((collection) => ({\n ...collection,\n // We flatten the stored items to support calling `getAlgoliaHits`\n // from the source itself.\n items: flatten(collection.items as any).map((item: any) => ({\n ...item,\n __autocomplete_id: baseItemId++,\n })),\n }));\n\n store.dispatch('setCollections', value);\n };\n\n const setIsOpen: AutocompleteApi<TItem>['setIsOpen'] = (value) => {\n store.dispatch('setIsOpen', value);\n };\n\n const setStatus: AutocompleteApi<TItem>['setStatus'] = (value) => {\n store.dispatch('setStatus', value);\n };\n\n const setContext: AutocompleteApi<TItem>['setContext'] = (value) => {\n store.dispatch('setContext', value);\n };\n\n return {\n setActiveItemId,\n setQuery,\n setCollections,\n setIsOpen,\n setStatus,\n setContext,\n };\n}\n","import { getItemsCount } from '@algolia/autocomplete-shared';\n\nimport {\n AutocompleteOptions,\n BaseItem,\n InternalAutocompleteOptions,\n AutocompleteSubscribers,\n} from './types';\nimport { generateAutocompleteId, getNormalizedSources, flatten } from './utils';\n\nexport function getDefaultProps<TItem extends BaseItem>(\n props: AutocompleteOptions<TItem>,\n pluginSubscribers: AutocompleteSubscribers<TItem>\n): InternalAutocompleteOptions<TItem> {\n const environment: InternalAutocompleteOptions<TItem>['environment'] = (typeof window !==\n 'undefined'\n ? window\n : {}) as typeof window;\n const plugins = props.plugins || [];\n\n return {\n debug: false,\n openOnFocus: false,\n placeholder: '',\n autoFocus: false,\n defaultActiveItemId: null,\n stallThreshold: 300,\n environment,\n shouldPanelShow: ({ state }) => getItemsCount(state) > 0,\n ...props,\n // Since `generateAutocompleteId` triggers a side effect (it increments\n // and internal counter), we don't want to execute it if unnecessary.\n id: props.id ?? generateAutocompleteId(),\n plugins,\n // The following props need to be deeply defaulted.\n initialState: {\n activeItemId: null,\n query: '',\n completion: null,\n collections: [],\n isOpen: false,\n status: 'idle',\n context: {},\n ...props.initialState,\n },\n onStateChange(params) {\n props.onStateChange?.(params);\n plugins.forEach((x) => x.onStateChange?.(params));\n },\n onSubmit(params) {\n props.onSubmit?.(params);\n plugins.forEach((x) => x.onSubmit?.(params));\n },\n onReset(params) {\n props.onReset?.(params);\n plugins.forEach((x) => x.onReset?.(params));\n },\n getSources(params) {\n return Promise.all(\n [...plugins.map((plugin) => plugin.getSources), props.getSources]\n .filter(Boolean)\n .map((getSources) => getNormalizedSources(getSources!, params))\n )\n .then((nested) => flatten(nested))\n .then((sources) =>\n sources.map((source) => ({\n ...source,\n onSelect(params) {\n source.onSelect(params);\n pluginSubscribers.forEach((x) => x.onSelect?.(params));\n },\n onActive(params) {\n source.onActive(params);\n pluginSubscribers.forEach((x) => x.onActive?.(params));\n },\n }))\n );\n },\n navigator: {\n navigate({ itemUrl }) {\n environment.location.assign(itemUrl);\n },\n navigateNewTab({ itemUrl }) {\n const windowReference = environment.open(itemUrl, '_blank', 'noopener');\n windowReference?.focus();\n },\n navigateNewWindow({ itemUrl }) {\n environment.open(itemUrl, '_blank', 'noopener');\n },\n ...props.navigator,\n },\n };\n}\n","import { invariant } from '@algolia/autocomplete-shared';\n\nimport {\n AutocompleteScopeApi,\n AutocompleteState,\n AutocompleteStore,\n BaseItem,\n InternalAutocompleteOptions,\n} from './types';\nimport { getActiveItem } from './utils';\n\nlet lastStalledId: number | null = null;\n\ninterface OnInputParams<TItem extends BaseItem>\n extends AutocompleteScopeApi<TItem> {\n event: any;\n /**\n * The next partial state to apply after the function is called.\n *\n * This is useful when we call `onInput` in a different scenario than an\n * actual input. For example, we use `onInput` when we click on an item,\n * but we want to close the panel in that case.\n */\n nextState?: Partial<AutocompleteState<TItem>>;\n props: InternalAutocompleteOptions<TItem>;\n query: string;\n store: AutocompleteStore<TItem>;\n}\n\nexport function onInput<TItem extends BaseItem>({\n event,\n nextState = {},\n props,\n query,\n refresh,\n store,\n ...setters\n}: OnInputParams<TItem>): Promise<void> {\n if (props.onInput) {\n return Promise.resolve(\n props.onInput({\n query,\n refresh,\n state: store.getState(),\n ...setters,\n })\n );\n }\n\n if (lastStalledId) {\n props.environment.clearTimeout(lastStalledId);\n }\n\n const {\n setCollections,\n setIsOpen,\n setQuery,\n setActiveItemId,\n setStatus,\n } = setters;\n\n setQuery(query);\n setActiveItemId(props.defaultActiveItemId);\n\n if (!query && props.openOnFocus === false) {\n setStatus('idle');\n setCollections(\n store.getState().collections.map((collection) => ({\n ...collection,\n items: [],\n }))\n );\n setIsOpen(\n nextState.isOpen ?? props.shouldPanelShow({ state: store.getState() })\n );\n\n return Promise.resolve();\n }\n\n setStatus('loading');\n\n lastStalledId = props.environment.setTimeout(() => {\n setStatus('stalled');\n }, props.stallThreshold);\n\n return props\n .getSources({\n query,\n refresh,\n state: store.getState(),\n ...setters,\n })\n .then((sources) => {\n setStatus('loading');\n\n // @TODO: convert `Promise.all` to fetching strategy.\n return Promise.all(\n sources.map((source) => {\n return Promise.resolve(\n source.getItems({\n query,\n refresh,\n state: store.getState(),\n ...setters,\n })\n ).then((items) => {\n invariant(\n Array.isArray(items),\n `The \\`getItems\\` function must return an array of items but returned type ${JSON.stringify(\n typeof items\n )}:\\n\\n${JSON.stringify(items, null, 2)}`\n );\n\n return { source, items };\n });\n })\n )\n .then((collections) => {\n setStatus('idle');\n setCollections(collections as any);\n setIsOpen(\n nextState.isOpen ??\n ((!query && props.openOnFocus) ||\n props.shouldPanelShow({ state: store.getState() }))\n );\n\n const highlightedItem = getActiveItem(store.getState());\n\n if (store.getState().activeItemId !== null && highlightedItem) {\n const { item, itemInputValue, itemUrl, source } = highlightedItem;\n\n source.onActive({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n }\n })\n .finally(() => {\n if (lastStalledId) {\n props.environment.clearTimeout(lastStalledId);\n }\n });\n });\n}\n","import { onInput } from './onInput';\nimport {\n AutocompleteScopeApi,\n AutocompleteStore,\n BaseItem,\n InternalAutocompleteOptions,\n} from './types';\nimport { getActiveItem } from './utils';\n\ninterface OnKeyDownOptions<TItem extends BaseItem>\n extends AutocompleteScopeApi<TItem> {\n event: KeyboardEvent;\n props: InternalAutocompleteOptions<TItem>;\n store: AutocompleteStore<TItem>;\n}\n\nexport function onKeyDown<TItem extends BaseItem>({\n event,\n props,\n refresh,\n store,\n ...setters\n}: OnKeyDownOptions<TItem>): void {\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\n // Default browser behavior changes the caret placement on ArrowUp and\n // Arrow down.\n event.preventDefault();\n\n store.dispatch(event.key, null);\n\n const nodeItem = props.environment.document.getElementById(\n `${props.id}-item-${store.getState().activeItemId}`\n );\n\n if (nodeItem) {\n if ((nodeItem as any).scrollIntoViewIfNeeded) {\n (nodeItem as any).scrollIntoViewIfNeeded(false);\n } else {\n nodeItem.scrollIntoView(false);\n }\n }\n\n const highlightedItem = getActiveItem(store.getState());\n\n if (store.getState().activeItemId !== null && highlightedItem) {\n const { item, itemInputValue, itemUrl, source } = highlightedItem;\n\n source.onActive({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n }\n } else if (event.key === 'Escape') {\n // This prevents the default browser behavior on `input[type=\"search\"]`\n // from removing the query right away because we first want to close the\n // panel.\n event.preventDefault();\n\n store.dispatch(event.key, null);\n } else if (event.key === 'Enter') {\n // No active item, so we let the browser handle the native `onSubmit` form\n // event.\n if (\n store.getState().activeItemId === null ||\n store\n .getState()\n .collections.every((collection) => collection.items.length === 0)\n ) {\n return;\n }\n\n // This prevents the `onSubmit` event to be sent because an item is\n // highlighted.\n event.preventDefault();\n\n const { item, itemInputValue, itemUrl, source } = getActiveItem(\n store.getState()\n )!;\n\n if (event.metaKey || event.ctrlKey) {\n if (itemUrl !== undefined) {\n source.onSelect({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n props.navigator.navigateNewTab({\n itemUrl,\n item,\n state: store.getState(),\n });\n }\n } else if (event.shiftKey) {\n if (itemUrl !== undefined) {\n source.onSelect({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n props.navigator.navigateNewWindow({\n itemUrl,\n item,\n state: store.getState(),\n });\n }\n } else if (event.altKey) {\n // Keep native browser behavior\n } else {\n if (itemUrl !== undefined) {\n source.onSelect({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n props.navigator.navigate({\n itemUrl,\n item,\n state: store.getState(),\n });\n\n return;\n }\n\n onInput({\n event,\n nextState: { isOpen: false },\n props,\n query: itemInputValue,\n refresh,\n store,\n ...setters,\n }).then(() => {\n source.onSelect({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n });\n }\n }\n}\n","import { onInput } from './onInput';\nimport { onKeyDown } from './onKeyDown';\nimport {\n AutocompleteScopeApi,\n AutocompleteStore,\n BaseItem,\n GetEnvironmentProps,\n GetFormProps,\n GetInputProps,\n GetItemProps,\n GetLabelProps,\n GetListProps,\n GetPanelProps,\n GetRootProps,\n InternalAutocompleteOptions,\n} from './types';\nimport { getActiveItem, isOrContainsNode } from './utils';\n\ninterface GetPropGettersOptions<TItem extends BaseItem>\n extends AutocompleteScopeApi<TItem> {\n store: AutocompleteStore<TItem>;\n props: InternalAutocompleteOptions<TItem>;\n}\n\nexport function getPropGetters<\n TItem extends BaseItem,\n TEvent,\n TMouseEvent,\n TKeyboardEvent\n>({ props, refresh, store, ...setters }: GetPropGettersOptions<TItem>) {\n const getEnvironmentProps: GetEnvironmentProps = (providedProps) => {\n const { inputElement, formElement, panelElement, ...rest } = providedProps;\n\n return {\n // On touch devices, we do not rely on the native `blur` event of the\n // input to close the panel, but rather on a custom `touchstart` event\n // outside of the autocomplete elements.\n // This ensures a working experience on mobile because we blur the input\n // on touch devices when the user starts scrolling (`touchmove`).\n onTouchStart(event) {\n if (\n store.getState().isOpen === false ||\n event.target === inputElement\n ) {\n return;\n }\n\n // @TODO: support cases where there are multiple Autocomplete instances.\n // Right now, a second instance makes this computation return false.\n const isTargetWithinAutocomplete = [formElement, panelElement].some(\n (contextNode) => {\n return (\n isOrContainsNode(contextNode, event.target as Node) ||\n isOrContainsNode(\n contextNode,\n props.environment.document.activeElement!\n )\n );\n }\n );\n\n if (isTargetWithinAutocomplete === false) {\n store.dispatch('blur', null);\n }\n },\n // When scrolling on touch devices (mobiles, tablets, etc.), we want to\n // mimic the native platform behavior where the input is blurred to\n // hide the virtual keyboard. This gives more vertical space to\n // discover all the suggestions showing up in the panel.\n onTouchMove(event: TouchEvent) {\n if (\n store.getState().isOpen === false ||\n inputElement !== props.environment.document.activeElement ||\n event.target === inputElement\n ) {\n return;\n }\n\n inputElement.blur();\n },\n ...rest,\n };\n };\n\n const getRootProps: GetRootProps = (rest) => {\n return {\n role: 'combobox',\n 'aria-expanded': store.getState().isOpen,\n 'aria-haspopup': 'listbox',\n 'aria-owns': store.getState().isOpen ? `${props.id}-list` : undefined,\n 'aria-labelledby': `${props.id}-label`,\n ...rest,\n };\n };\n\n const getFormProps: GetFormProps<TEvent> = (providedProps) => {\n const { inputElement, ...rest } = providedProps;\n\n return {\n action: '',\n noValidate: true,\n role: 'search',\n onSubmit: (event) => {\n ((event as unknown) as Event).preventDefault();\n\n props.onSubmit({\n event,\n refresh,\n state: store.getState(),\n ...setters,\n });\n\n store.dispatch('submit', null);\n providedProps.inputElement?.blur();\n },\n onReset: (event) => {\n ((event as unknown) as Event).preventDefault();\n\n props.onReset({\n event,\n refresh,\n state: store.getState(),\n ...setters,\n });\n\n store.dispatch('reset', null);\n providedProps.inputElement?.focus();\n },\n ...rest,\n };\n };\n\n const getInputProps: GetInputProps<TEvent, TMouseEvent, TKeyboardEvent> = (\n providedProps\n ) => {\n function onFocus(event: TEvent) {\n // We want to trigger a query when `openOnFocus` is true\n // because the panel should open with the current query.\n if (props.openOnFocus || Boolean(store.getState().query)) {\n onInput({\n event,\n props,\n query: store.getState().completion || store.getState().query,\n refresh,\n store,\n ...setters,\n });\n }\n\n store.dispatch('focus', null);\n }\n\n const isTouchDevice = 'ontouchstart' in props.environment;\n const { inputElement, maxLength = 512, ...rest } = providedProps || {};\n const activeItem = getActiveItem(store.getState());\n\n return {\n 'aria-autocomplete': 'both',\n 'aria-activedescendant':\n store.getState().isOpen && store.getState().activeItemId !== null\n ? `${props.id}-item-${store.getState().activeItemId}`\n : undefined,\n 'aria-controls': store.getState().isOpen ? `${props.id}-list` : undefined,\n 'aria-labelledby': `${props.id}-label`,\n value: store.getState().completion || store.getState().query,\n id: `${props.id}-input`,\n autoComplete: 'off',\n autoCorrect: 'off',\n autoCapitalize: 'off',\n enterKeyHint: activeItem?.itemUrl ? 'go' : 'search',\n spellCheck: 'false',\n autoFocus: props.autoFocus,\n placeholder: props.placeholder,\n maxLength,\n type: 'search',\n onChange: (event) => {\n onInput({\n event,\n props,\n query: (((event as unknown) as Event)\n .currentTarget as HTMLInputElement).value.slice(0, maxLength),\n refresh,\n store,\n ...setters,\n });\n },\n onKeyDown: (event) => {\n onKeyDown({\n event: (event as unknown) as KeyboardEvent,\n props,\n refresh,\n store,\n ...setters,\n });\n },\n onFocus,\n onBlur: () => {\n // We do rely on the `blur` event on touch devices.\n // See explanation in `onTouchStart`.\n if (!isTouchDevice) {\n store.dispatch('blur', null);\n }\n },\n onClick: (event) => {\n // When the panel is closed and you click on the input while\n // the input is focused, the `onFocus` event is not triggered\n // (default browser behavior).\n // In an autocomplete context, it makes sense to open the panel in this\n // case.\n // We mimic this event by catching the `onClick` event which\n // triggers the `onFocus` for the panel to open.\n if (\n providedProps.inputElement ===\n props.environment.document.activeElement &&\n !store.getState().isOpen\n ) {\n onFocus((event as unknown) as TEvent);\n }\n },\n ...rest,\n };\n };\n\n const getLabelProps: GetLabelProps = (rest) => {\n return {\n htmlFor: `${props.id}-input`,\n id: `${props.id}-label`,\n ...rest,\n };\n };\n\n const getListProps: GetListProps = (rest) => {\n return {\n role: 'listbox',\n 'aria-labelledby': `${props.id}-label`,\n id: `${props.id}-list`,\n ...rest,\n };\n };\n\n const getPanelProps: GetPanelProps<TMouseEvent> = (rest) => {\n return {\n onMouseDown(event) {\n // Prevents the `activeElement` from being changed to the panel so\n // that the blur event is not triggered, otherwise it closes the\n // panel.\n ((event as unknown) as MouseEvent).preventDefault();\n },\n onMouseLeave() {\n store.dispatch('mouseleave', null);\n },\n ...rest,\n };\n };\n\n const getItemProps: GetItemProps<any, TMouseEvent> = (providedProps) => {\n const { item, source, ...rest } = providedProps;\n\n return {\n id: `${props.id}-item-${item.__autocomplete_id}`,\n role: 'option',\n 'aria-selected': store.getState().activeItemId === item.__autocomplete_id,\n onMouseMove(event) {\n if (item.__autocomplete_id === store.getState().activeItemId) {\n return;\n }\n\n store.dispatch('mousemove', item.__autocomplete_id);\n\n const activeItem = getActiveItem(store.getState());\n\n if (store.getState().activeItemId !== null && activeItem) {\n const { item, itemInputValue, itemUrl, source } = activeItem;\n\n source.onActive({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n }\n },\n onMouseDown(event) {\n // Prevents the `activeElement` from being changed to the item so it\n // can remain with the current `activeElement`.\n ((event as unknown) as MouseEvent).preventDefault();\n },\n onClick(event) {\n const itemInputValue = source.getItemInputValue({\n item,\n state: store.getState(),\n });\n const itemUrl = source.getItemUrl({\n item,\n state: store.getState(),\n });\n\n // If `getItemUrl` is provided, it means that the suggestion\n // is a link, not plain text that aims at updating the query.\n // We can therefore skip the state change because it will update\n // the `activeItemId`, resulting in a UI flash, especially\n // noticeable on mobile.\n const runPreCommand = itemUrl\n ? Promise.resolve()\n : onInput({\n event,\n nextState: { isOpen: false },\n props,\n query: itemInputValue,\n refresh,\n store,\n ...setters,\n });\n\n runPreCommand.then(() => {\n source.onSelect({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n });\n },\n ...rest,\n };\n };\n\n return {\n getEnvironmentProps,\n getRootProps,\n getFormProps,\n getLabelProps,\n getInputProps,\n getPanelProps,\n getListProps,\n getItemProps,\n };\n}\n","import { AutocompleteState, BaseItem } from './types';\nimport { getActiveItem } from './utils';\n\ninterface GetCompletionProps<TItem extends BaseItem> {\n state: AutocompleteState<TItem>;\n}\n\nexport function getCompletion<TItem extends BaseItem>({\n state,\n}: GetCompletionProps<TItem>): string | null {\n if (state.isOpen === false || state.activeItemId === null) {\n return null;\n }\n\n const { itemInputValue } = getActiveItem(state)!;\n\n return itemInputValue || null;\n}\n","import { getItemsCount, invariant } from '@algolia/autocomplete-shared';\n\nimport { getCompletion } from './getCompletion';\nimport { Reducer } from './types';\nimport { getNextActiveItemId } from './utils';\n\nexport const stateReducer: Reducer = (state, action) => {\n switch (action.type) {\n case 'setActiveItemId': {\n return {\n ...state,\n activeItemId: action.payload,\n };\n }\n\n case 'setQuery': {\n return {\n ...state,\n query: action.payload,\n completion: null,\n };\n }\n\n case 'setCollections': {\n return {\n ...state,\n collections: action.payload,\n };\n }\n\n case 'setIsOpen': {\n return {\n ...state,\n isOpen: action.payload,\n };\n }\n\n case 'setStatus': {\n return {\n ...state,\n status: action.payload,\n };\n }\n\n case 'setContext': {\n return {\n ...state,\n context: {\n ...state.context,\n ...action.payload,\n },\n };\n }\n\n case 'ArrowDown': {\n const nextState = {\n ...state,\n activeItemId: getNextActiveItemId(\n 1,\n state.activeItemId,\n getItemsCount(state),\n action.props.defaultActiveItemId\n ),\n };\n\n return {\n ...nextState,\n completion: getCompletion({ state: nextState }),\n };\n }\n\n case 'ArrowUp': {\n const nextState = {\n ...state,\n activeItemId: getNextActiveItemId(\n -1,\n state.activeItemId,\n getItemsCount(state),\n action.props.defaultActiveItemId\n ),\n };\n\n return {\n ...nextState,\n completion: getCompletion({ state: nextState }),\n };\n }\n\n case 'Escape': {\n if (state.isOpen) {\n return {\n ...state,\n isOpen: false,\n completion: null,\n };\n }\n\n return {\n ...state,\n query: '',\n status: 'idle',\n collections: [],\n };\n }\n\n case 'submit': {\n return {\n ...state,\n activeItemId: null,\n isOpen: false,\n status: 'idle',\n };\n }\n\n case 'reset': {\n return {\n ...state,\n activeItemId:\n // Since we open the panel on reset when openOnFocus=true\n // we need to restore the highlighted index to the defaultActiveItemId. (DocSearch use-case)\n\n // Since we close the panel when openOnFocus=false\n // we lose track of the highlighted index. (Query-suggestions use-case)\n action.props.openOnFocus === true\n ? action.props.defaultActiveItemId\n : null,\n status: 'idle',\n query: '',\n };\n }\n\n case 'focus': {\n return {\n ...state,\n activeItemId: action.props.defaultActiveItemId,\n isOpen: action.props.openOnFocus || Boolean(state.query),\n };\n }\n\n case 'blur': {\n if (action.props.debug) {\n return state;\n }\n\n return {\n ...state,\n isOpen: false,\n activeItemId: null,\n };\n }\n\n case 'mousemove': {\n return {\n ...state,\n activeItemId: action.payload,\n };\n }\n\n case 'mouseleave': {\n return {\n ...state,\n activeItemId: action.props.defaultActiveItemId,\n };\n }\n\n default:\n invariant(\n false,\n `The reducer action ${JSON.stringify(action.type)} is not supported.`\n );\n\n return state;\n }\n};\n","import { checkOptions } from './checkOptions';\nimport { createStore } from './createStore';\nimport { getAutocompleteSetters } from './getAutocompleteSetters';\nimport { getDefaultProps } from './getDefaultProps';\nimport { getPropGetters } from './getPropGetters';\nimport { onInput } from './onInput';\nimport { stateReducer } from './stateReducer';\nimport {\n AutocompleteApi,\n AutocompleteOptions,\n BaseItem,\n AutocompleteSubscribers,\n} from './types';\n\nexport function createAutocomplete<\n TItem extends BaseItem,\n TEvent = Event,\n TMouseEvent = MouseEvent,\n TKeyboardEvent = KeyboardEvent\n>(\n options: AutocompleteOptions<TItem>\n): AutocompleteApi<TItem, TEvent, TMouseEvent, TKeyboardEvent> {\n checkOptions(options);\n\n const subscribers: AutocompleteSubscribers<TItem> = [];\n const props = getDefaultProps(options, subscribers);\n const store = createStore(stateReducer, props, onStoreStateChange);\n\n const setters = getAutocompleteSetters({ store });\n const propGetters = getPropGetters<\n TItem,\n TEvent,\n TMouseEvent,\n TKeyboardEvent\n >({ props, refresh, store, ...setters });\n\n function onStoreStateChange({ prevState, state }) {\n props.onStateChange({ prevState, state, refresh, ...setters });\n }\n\n function refresh() {\n return onInput({\n event: new Event('input'),\n nextState: { isOpen: store.getState().isOpen },\n props,\n query: store.getState().query,\n refresh,\n store,\n ...setters,\n });\n }\n\n props.plugins.forEach((plugin) =>\n plugin.subscribe?.({\n ...setters,\n refresh,\n onSelect(fn) {\n subscribers.push({ onSelect: fn });\n },\n onActive(fn) {\n subscribers.push({ onActive: fn });\n },\n })\n );\n\n return {\n refresh,\n ...propGetters,\n ...setters,\n };\n}\n","export const version = '1.0.0-alpha.40';\n"],"names":["getItemsCount","state","collections","length","reduce","sum","collection","items","invariant","condition","message","Error","concat","warnCache","current","warn","sanitizedMessage","trim","hasAlreadyPrinted","console","checkOptions","options","process","debug","createStore","reducer","props","onStoreStateChange","initialState","getState","dispatch","action","payload","prevState","type","flatten","values","a","b","autocompleteId","generateAutocompleteId","getNextActiveItemId","moveAmount","baseIndex","itemCount","defaultActiveItemId","numericIndex","noop","getNormalizedSources","getSources","params","Promise","resolve","then","sources","Array","isArray","JSON","stringify","all","filter","maybeSource","Boolean","map","source","normalizedSource","getItemInputValue","query","getItemUrl","undefined","onSelect","setIsOpen","onActive","getCollectionFromActiveItemId","accumulatedCollectionsCount","acc","collectionsCount","index","previousValue","nextValue","push","collectionIndex","activeItemId","getRelativeActiveItemId","isOffsetFound","counter","previousItemsOffset","currentCollection","getActiveItem","item","itemInputValue","itemUrl","isOrContainsNode","parent","child","contains","getAutocompleteSetters","store","setActiveItemId","value","setQuery","setCollections","rawValue","baseItemId","__autocomplete_id","setStatus","setContext","getDefaultProps","pluginSubscribers","environment","window","plugins","openOnFocus","placeholder","autoFocus","stallThreshold","shouldPanelShow","id","completion","isOpen","status","context","onStateChange","forEach","x","onSubmit","onReset","plugin","nested","navigator","navigate","location","assign","navigateNewTab","windowReference","open","focus","navigateNewWindow","lastStalledId","onInput","event","nextState","refresh","setters","clearTimeout","setTimeout","getItems","highlightedItem","finally","onKeyDown","key","preventDefault","nodeItem","document","getElementById","scrollIntoViewIfNeeded","scrollIntoView","every","metaKey","ctrlKey","shiftKey","altKey","getPropGetters","getEnvironmentProps","providedProps","inputElement","formElement","panelElement","rest","onTouchStart","target","isTargetWithinAutocomplete","some","contextNode","activeElement","onTouchMove","blur","getRootProps","role","getFormProps","noValidate","getInputProps","onFocus","isTouchDevice","maxLength","activeItem","autoComplete","autoCorrect","autoCapitalize","enterKeyHint","spellCheck","onChange","currentTarget","slice","onBlur","onClick","getLabelProps","htmlFor","getListProps","getPanelProps","onMouseDown","onMouseLeave","getItemProps","onMouseMove","runPreCommand","getCompletion","stateReducer","createAutocomplete","subscribers","propGetters","Event","subscribe","fn","version"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.development.js","sources":["../../../autocomplete-shared/dist/esm/getItemsCount.js","../../../autocomplete-shared/dist/esm/invariant.js","../../../autocomplete-shared/dist/esm/warn.js","../../src/checkOptions.ts","../../src/createStore.ts","../../src/utils/flatten.ts","../../src/utils/generateAutocompleteId.ts","../../src/utils/getNextActiveItemId.ts","../../src/utils/noop.ts","../../src/utils/getNormalizedSources.ts","../../src/utils/getActiveItem.ts","../../src/utils/isOrContainsNode.ts","../../src/getAutocompleteSetters.ts","../../src/getDefaultProps.ts","../../src/onInput.ts","../../src/onKeyDown.ts","../../src/getPropGetters.ts","../../src/getCompletion.ts","../../src/stateReducer.ts","../../src/createAutocomplete.ts","../../src/version.ts"],"sourcesContent":["export function getItemsCount(state) {\n if (state.collections.length === 0) {\n return 0;\n }\n\n return state.collections.reduce(function (sum, collection) {\n return sum + collection.items.length;\n }, 0);\n}","/**\n * Throws an error if the condition is not met in development mode.\n * This is used to make development a better experience to provide guidance as\n * to where the error comes from.\n */\nexport function invariant(condition, message) {\n if (!(process.env.NODE_ENV !== 'production')) {\n return;\n }\n\n if (!condition) {\n throw new Error(\"[Autocomplete] \".concat(message));\n }\n}","export var warnCache = {\n current: {}\n};\n/**\n * Logs a warning if the condition is not met.\n * This is used to log issues in development environment only.\n */\n\nexport function warn(condition, message) {\n if (!(process.env.NODE_ENV !== 'production')) {\n return;\n }\n\n if (condition) {\n return;\n }\n\n var sanitizedMessage = message.trim();\n var hasAlreadyPrinted = warnCache.current[sanitizedMessage];\n\n if (!hasAlreadyPrinted) {\n warnCache.current[sanitizedMessage] = true; // eslint-disable-next-line no-console\n\n console.warn(\"[Autocomplete] \".concat(sanitizedMessage));\n }\n}","import { warn } from '@algolia/autocomplete-shared';\n\nimport { AutocompleteOptions, BaseItem } from './types';\n\nexport function checkOptions<TItem extends BaseItem>(\n options: AutocompleteOptions<TItem>\n) {\n warn(\n !options.debug,\n 'The `debug` option is meant for development debugging and should not be used in production.'\n );\n}\n","import {\n AutocompleteState,\n AutocompleteStore,\n BaseItem,\n InternalAutocompleteOptions,\n Reducer,\n} from './types';\n\ntype OnStoreStateChange<TItem extends BaseItem> = ({\n prevState,\n state,\n}: {\n prevState: AutocompleteState<TItem>;\n state: AutocompleteState<TItem>;\n}) => void;\n\nexport function createStore<TItem extends BaseItem>(\n reducer: Reducer,\n props: InternalAutocompleteOptions<TItem>,\n onStoreStateChange: OnStoreStateChange<TItem>\n): AutocompleteStore<TItem> {\n let state = props.initialState;\n\n return {\n getState() {\n return state;\n },\n dispatch(action, payload) {\n const prevState = { ...state };\n state = reducer(state, {\n type: action,\n props,\n payload,\n });\n\n onStoreStateChange({ state, prevState });\n },\n };\n}\n","export function flatten<TType>(values: Array<TType | TType[]>): TType[] {\n return values.reduce<TType[]>((a, b) => {\n return a.concat(b);\n }, []);\n}\n","let autocompleteId = 0;\n\nexport function generateAutocompleteId() {\n return `autocomplete-${autocompleteId++}`;\n}\n","/**\n * Returns the next active item ID from the current state.\n *\n * We allow circular keyboard navigation from the base index.\n * The base index can either be `null` (nothing is highlighted) or `0`\n * (the first item is highlighted).\n * The base index is allowed to get assigned `null` only if\n * `props.defaultActiveItemId` is `null`. This pattern allows to \"stop\"\n * by the actual query before navigating to other suggestions as seen on\n * Google or Amazon.\n *\n * @param moveAmount The offset to increment (or decrement) the last index\n * @param baseIndex The current index to compute the next index from\n * @param itemCount The number of items\n * @param defaultActiveItemId The default active index to fallback to\n */\nexport function getNextActiveItemId(\n moveAmount: number,\n baseIndex: number | null,\n itemCount: number,\n defaultActiveItemId: number | null\n): number | null {\n if (\n moveAmount < 0 &&\n (baseIndex === null || (defaultActiveItemId !== null && baseIndex === 0))\n ) {\n return itemCount + moveAmount;\n }\n\n const numericIndex = (baseIndex === null ? -1 : baseIndex) + moveAmount;\n\n if (numericIndex <= -1 || numericIndex >= itemCount) {\n return defaultActiveItemId === null ? null : 0;\n }\n\n return numericIndex;\n}\n","export const noop = () => {};\n","import { invariant } from '@algolia/autocomplete-shared';\n\nimport {\n AutocompleteSource,\n BaseItem,\n GetSources,\n GetSourcesParams,\n InternalAutocompleteSource,\n InternalGetSources,\n} from '../types';\n\nimport { noop } from './noop';\n\nexport function getNormalizedSources<TItem extends BaseItem>(\n getSources: GetSources<TItem>,\n params: GetSourcesParams<TItem>\n): ReturnType<InternalGetSources<TItem>> {\n return Promise.resolve(getSources(params)).then((sources) => {\n invariant(\n Array.isArray(sources),\n `The \\`getSources\\` function must return an array of sources but returned type ${JSON.stringify(\n typeof sources\n )}:\\n\\n${JSON.stringify(sources, null, 2)}`\n );\n\n return Promise.all(\n sources\n // We allow `undefined` and `false` sources to allow users to use\n // `Boolean(query) && source` (=> `false`).\n // We need to remove these values at this point.\n .filter((maybeSource: any): maybeSource is AutocompleteSource<TItem> =>\n Boolean(maybeSource)\n )\n .map((source) => {\n invariant(\n typeof source.sourceId === 'string',\n 'A source must provide a `sourceId` string.'\n );\n\n const normalizedSource: InternalAutocompleteSource<TItem> = {\n getItemInputValue({ state }) {\n return state.query;\n },\n getItemUrl() {\n return undefined;\n },\n onSelect({ setIsOpen }) {\n setIsOpen(false);\n },\n onActive: noop,\n ...source,\n };\n\n return Promise.resolve(normalizedSource);\n })\n );\n });\n}\n","import { AutocompleteCollection, AutocompleteState, BaseItem } from '../types';\n\n// We don't have access to the autocomplete source when we call `onKeyDown`\n// or `onClick` because those are native browser events.\n// However, we can get the source from the suggestion index.\nfunction getCollectionFromActiveItemId<TItem extends BaseItem>(\n state: AutocompleteState<TItem>\n): AutocompleteCollection<TItem> | undefined {\n // Given 3 sources with respectively 1, 2 and 3 suggestions: [1, 2, 3]\n // We want to get the accumulated counts:\n // [1, 1 + 2, 1 + 2 + 3] = [1, 3, 3 + 3] = [1, 3, 6]\n const accumulatedCollectionsCount = state.collections\n .map((collections) => collections.items.length)\n .reduce<number[]>((acc, collectionsCount, index) => {\n const previousValue = acc[index - 1] || 0;\n const nextValue = previousValue + collectionsCount;\n\n acc.push(nextValue);\n\n return acc;\n }, []);\n\n // Based on the accumulated counts, we can infer the index of the suggestion.\n const collectionIndex = accumulatedCollectionsCount.reduce((acc, current) => {\n if (current <= state.activeItemId!) {\n return acc + 1;\n }\n\n return acc;\n }, 0);\n\n return state.collections[collectionIndex];\n}\n\n/**\n * Gets the highlighted index relative to a suggestion object (not the absolute\n * highlighted index).\n *\n * Example:\n * [['a', 'b'], ['c', 'd', 'e'], ['f']]\n * ↑\n * (absolute: 3, relative: 1)\n */\nfunction getRelativeActiveItemId<TItem extends BaseItem>({\n state,\n collection,\n}: {\n state: AutocompleteState<TItem>;\n collection: AutocompleteCollection<TItem>;\n}): number {\n let isOffsetFound = false;\n let counter = 0;\n let previousItemsOffset = 0;\n\n while (isOffsetFound === false) {\n const currentCollection = state.collections[counter];\n\n if (currentCollection === collection) {\n isOffsetFound = true;\n break;\n }\n\n previousItemsOffset += currentCollection.items.length;\n\n counter++;\n }\n\n return state.activeItemId! - previousItemsOffset;\n}\n\nexport function getActiveItem<TItem extends BaseItem>(\n state: AutocompleteState<TItem>\n) {\n const collection = getCollectionFromActiveItemId(state);\n\n if (!collection) {\n return null;\n }\n\n const item = collection.items[getRelativeActiveItemId({ state, collection })];\n const source = collection.source;\n const itemInputValue = source.getItemInputValue({ item, state });\n const itemUrl = source.getItemUrl({ item, state });\n\n return {\n item,\n itemInputValue,\n itemUrl,\n source,\n };\n}\n","export function isOrContainsNode(parent: Node, child: Node) {\n return parent === child || parent.contains(child);\n}\n","import {\n AutocompleteApi,\n AutocompleteCollection,\n AutocompleteStore,\n BaseItem,\n} from './types';\nimport { flatten } from './utils';\n\ninterface GetAutocompleteSettersOptions<TItem extends BaseItem> {\n store: AutocompleteStore<TItem>;\n}\n\nexport function getAutocompleteSetters<TItem extends BaseItem>({\n store,\n}: GetAutocompleteSettersOptions<TItem>) {\n const setActiveItemId: AutocompleteApi<TItem>['setActiveItemId'] = (\n value\n ) => {\n store.dispatch('setActiveItemId', value);\n };\n\n const setQuery: AutocompleteApi<TItem>['setQuery'] = (value) => {\n store.dispatch('setQuery', value);\n };\n\n const setCollections: AutocompleteApi<TItem>['setCollections'] = (\n rawValue\n ) => {\n let baseItemId = 0;\n const value = rawValue.map<AutocompleteCollection<TItem>>((collection) => ({\n ...collection,\n // We flatten the stored items to support calling `getAlgoliaHits`\n // from the source itself.\n items: flatten(collection.items as any).map((item: any) => ({\n ...item,\n __autocomplete_id: baseItemId++,\n })),\n }));\n\n store.dispatch('setCollections', value);\n };\n\n const setIsOpen: AutocompleteApi<TItem>['setIsOpen'] = (value) => {\n store.dispatch('setIsOpen', value);\n };\n\n const setStatus: AutocompleteApi<TItem>['setStatus'] = (value) => {\n store.dispatch('setStatus', value);\n };\n\n const setContext: AutocompleteApi<TItem>['setContext'] = (value) => {\n store.dispatch('setContext', value);\n };\n\n return {\n setActiveItemId,\n setQuery,\n setCollections,\n setIsOpen,\n setStatus,\n setContext,\n };\n}\n","import { getItemsCount } from '@algolia/autocomplete-shared';\n\nimport {\n AutocompleteEnvironment,\n AutocompleteOptions,\n AutocompleteSubscribers,\n BaseItem,\n InternalAutocompleteOptions,\n} from './types';\nimport { generateAutocompleteId, getNormalizedSources, flatten } from './utils';\n\nexport function getDefaultProps<TItem extends BaseItem>(\n props: AutocompleteOptions<TItem>,\n pluginSubscribers: AutocompleteSubscribers<TItem>\n): InternalAutocompleteOptions<TItem> {\n const environment: AutocompleteEnvironment = (typeof window !== 'undefined'\n ? window\n : {}) as typeof window;\n const plugins = props.plugins || [];\n\n return {\n debug: false,\n openOnFocus: false,\n placeholder: '',\n autoFocus: false,\n defaultActiveItemId: null,\n stallThreshold: 300,\n environment,\n shouldPanelOpen: ({ state }) => getItemsCount(state) > 0,\n ...props,\n // Since `generateAutocompleteId` triggers a side effect (it increments\n // and internal counter), we don't want to execute it if unnecessary.\n id: props.id ?? generateAutocompleteId(),\n plugins,\n // The following props need to be deeply defaulted.\n initialState: {\n activeItemId: null,\n query: '',\n completion: null,\n collections: [],\n isOpen: false,\n status: 'idle',\n context: {},\n ...props.initialState,\n },\n onStateChange(params) {\n props.onStateChange?.(params);\n plugins.forEach((x) => x.onStateChange?.(params));\n },\n onSubmit(params) {\n props.onSubmit?.(params);\n plugins.forEach((x) => x.onSubmit?.(params));\n },\n onReset(params) {\n props.onReset?.(params);\n plugins.forEach((x) => x.onReset?.(params));\n },\n getSources(params) {\n return Promise.all(\n [...plugins.map((plugin) => plugin.getSources), props.getSources]\n .filter(Boolean)\n .map((getSources) => getNormalizedSources(getSources!, params))\n )\n .then((nested) => flatten(nested))\n .then((sources) =>\n sources.map((source) => ({\n ...source,\n onSelect(params) {\n source.onSelect(params);\n pluginSubscribers.forEach((x) => x.onSelect?.(params));\n },\n onActive(params) {\n source.onActive(params);\n pluginSubscribers.forEach((x) => x.onActive?.(params));\n },\n }))\n );\n },\n navigator: {\n navigate({ itemUrl }) {\n environment.location.assign(itemUrl);\n },\n navigateNewTab({ itemUrl }) {\n const windowReference = environment.open(itemUrl, '_blank', 'noopener');\n windowReference?.focus();\n },\n navigateNewWindow({ itemUrl }) {\n environment.open(itemUrl, '_blank', 'noopener');\n },\n ...props.navigator,\n },\n };\n}\n","import { invariant } from '@algolia/autocomplete-shared';\n\nimport {\n AutocompleteScopeApi,\n AutocompleteState,\n AutocompleteStore,\n BaseItem,\n InternalAutocompleteOptions,\n} from './types';\nimport { getActiveItem } from './utils';\n\nlet lastStalledId: number | null = null;\n\ninterface OnInputParams<TItem extends BaseItem>\n extends AutocompleteScopeApi<TItem> {\n event: any;\n /**\n * The next partial state to apply after the function is called.\n *\n * This is useful when we call `onInput` in a different scenario than an\n * actual input. For example, we use `onInput` when we click on an item,\n * but we want to close the panel in that case.\n */\n nextState?: Partial<AutocompleteState<TItem>>;\n props: InternalAutocompleteOptions<TItem>;\n query: string;\n store: AutocompleteStore<TItem>;\n}\n\nexport function onInput<TItem extends BaseItem>({\n event,\n nextState = {},\n props,\n query,\n refresh,\n store,\n ...setters\n}: OnInputParams<TItem>): Promise<void> {\n if (lastStalledId) {\n props.environment.clearTimeout(lastStalledId);\n }\n\n const {\n setCollections,\n setIsOpen,\n setQuery,\n setActiveItemId,\n setStatus,\n } = setters;\n\n setQuery(query);\n setActiveItemId(props.defaultActiveItemId);\n\n if (!query && props.openOnFocus === false) {\n setStatus('idle');\n setCollections(\n store.getState().collections.map((collection) => ({\n ...collection,\n items: [],\n }))\n );\n setIsOpen(\n nextState.isOpen ?? props.shouldPanelOpen({ state: store.getState() })\n );\n\n return Promise.resolve();\n }\n\n setStatus('loading');\n\n lastStalledId = props.environment.setTimeout(() => {\n setStatus('stalled');\n }, props.stallThreshold);\n\n return props\n .getSources({\n query,\n refresh,\n state: store.getState(),\n ...setters,\n })\n .then((sources) => {\n setStatus('loading');\n\n // @TODO: convert `Promise.all` to fetching strategy.\n return Promise.all(\n sources.map((source) => {\n return Promise.resolve(\n source.getItems({\n query,\n refresh,\n state: store.getState(),\n ...setters,\n })\n ).then((items) => {\n invariant(\n Array.isArray(items),\n `The \\`getItems\\` function must return an array of items but returned type ${JSON.stringify(\n typeof items\n )}:\\n\\n${JSON.stringify(items, null, 2)}`\n );\n\n return { source, items };\n });\n })\n )\n .then((collections) => {\n setStatus('idle');\n setCollections(collections as any);\n const isPanelOpen = props.shouldPanelOpen({\n state: store.getState(),\n });\n setIsOpen(\n nextState.isOpen ??\n ((props.openOnFocus && !query && isPanelOpen) || isPanelOpen)\n );\n\n const highlightedItem = getActiveItem(store.getState());\n\n if (store.getState().activeItemId !== null && highlightedItem) {\n const { item, itemInputValue, itemUrl, source } = highlightedItem;\n\n source.onActive({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n }\n })\n .finally(() => {\n if (lastStalledId) {\n props.environment.clearTimeout(lastStalledId);\n }\n });\n });\n}\n","import { onInput } from './onInput';\nimport {\n AutocompleteScopeApi,\n AutocompleteStore,\n BaseItem,\n InternalAutocompleteOptions,\n} from './types';\nimport { getActiveItem } from './utils';\n\ninterface OnKeyDownOptions<TItem extends BaseItem>\n extends AutocompleteScopeApi<TItem> {\n event: KeyboardEvent;\n props: InternalAutocompleteOptions<TItem>;\n store: AutocompleteStore<TItem>;\n}\n\nexport function onKeyDown<TItem extends BaseItem>({\n event,\n props,\n refresh,\n store,\n ...setters\n}: OnKeyDownOptions<TItem>): void {\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\n // Default browser behavior changes the caret placement on ArrowUp and\n // Arrow down.\n event.preventDefault();\n\n store.dispatch(event.key, null);\n\n const nodeItem = props.environment.document.getElementById(\n `${props.id}-item-${store.getState().activeItemId}`\n );\n\n if (nodeItem) {\n if ((nodeItem as any).scrollIntoViewIfNeeded) {\n (nodeItem as any).scrollIntoViewIfNeeded(false);\n } else {\n nodeItem.scrollIntoView(false);\n }\n }\n\n const highlightedItem = getActiveItem(store.getState());\n\n if (store.getState().activeItemId !== null && highlightedItem) {\n const { item, itemInputValue, itemUrl, source } = highlightedItem;\n\n source.onActive({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n }\n } else if (event.key === 'Escape') {\n // This prevents the default browser behavior on `input[type=\"search\"]`\n // from removing the query right away because we first want to close the\n // panel.\n event.preventDefault();\n\n store.dispatch(event.key, null);\n } else if (event.key === 'Enter') {\n // No active item, so we let the browser handle the native `onSubmit` form\n // event.\n if (\n store.getState().activeItemId === null ||\n store\n .getState()\n .collections.every((collection) => collection.items.length === 0)\n ) {\n return;\n }\n\n // This prevents the `onSubmit` event to be sent because an item is\n // highlighted.\n event.preventDefault();\n\n const { item, itemInputValue, itemUrl, source } = getActiveItem(\n store.getState()\n )!;\n\n if (event.metaKey || event.ctrlKey) {\n if (itemUrl !== undefined) {\n source.onSelect({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n props.navigator.navigateNewTab({\n itemUrl,\n item,\n state: store.getState(),\n });\n }\n } else if (event.shiftKey) {\n if (itemUrl !== undefined) {\n source.onSelect({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n props.navigator.navigateNewWindow({\n itemUrl,\n item,\n state: store.getState(),\n });\n }\n } else if (event.altKey) {\n // Keep native browser behavior\n } else {\n if (itemUrl !== undefined) {\n source.onSelect({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n props.navigator.navigate({\n itemUrl,\n item,\n state: store.getState(),\n });\n\n return;\n }\n\n onInput({\n event,\n nextState: { isOpen: false },\n props,\n query: itemInputValue,\n refresh,\n store,\n ...setters,\n }).then(() => {\n source.onSelect({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n });\n }\n }\n}\n","import { onInput } from './onInput';\nimport { onKeyDown } from './onKeyDown';\nimport {\n AutocompleteScopeApi,\n AutocompleteStore,\n BaseItem,\n GetEnvironmentProps,\n GetFormProps,\n GetInputProps,\n GetItemProps,\n GetLabelProps,\n GetListProps,\n GetPanelProps,\n GetRootProps,\n InternalAutocompleteOptions,\n} from './types';\nimport { getActiveItem, isOrContainsNode } from './utils';\n\ninterface GetPropGettersOptions<TItem extends BaseItem>\n extends AutocompleteScopeApi<TItem> {\n store: AutocompleteStore<TItem>;\n props: InternalAutocompleteOptions<TItem>;\n}\n\nexport function getPropGetters<\n TItem extends BaseItem,\n TEvent,\n TMouseEvent,\n TKeyboardEvent\n>({ props, refresh, store, ...setters }: GetPropGettersOptions<TItem>) {\n const getEnvironmentProps: GetEnvironmentProps = (providedProps) => {\n const { inputElement, formElement, panelElement, ...rest } = providedProps;\n\n return {\n // On touch devices, we do not rely on the native `blur` event of the\n // input to close the panel, but rather on a custom `touchstart` event\n // outside of the autocomplete elements.\n // This ensures a working experience on mobile because we blur the input\n // on touch devices when the user starts scrolling (`touchmove`).\n onTouchStart(event) {\n if (\n store.getState().isOpen === false ||\n event.target === inputElement\n ) {\n return;\n }\n\n // @TODO: support cases where there are multiple Autocomplete instances.\n // Right now, a second instance makes this computation return false.\n const isTargetWithinAutocomplete = [formElement, panelElement].some(\n (contextNode) => {\n return (\n isOrContainsNode(contextNode, event.target as Node) ||\n isOrContainsNode(\n contextNode,\n props.environment.document.activeElement!\n )\n );\n }\n );\n\n if (isTargetWithinAutocomplete === false) {\n store.dispatch('blur', null);\n }\n },\n // When scrolling on touch devices (mobiles, tablets, etc.), we want to\n // mimic the native platform behavior where the input is blurred to\n // hide the virtual keyboard. This gives more vertical space to\n // discover all the suggestions showing up in the panel.\n onTouchMove(event: TouchEvent) {\n if (\n store.getState().isOpen === false ||\n inputElement !== props.environment.document.activeElement ||\n event.target === inputElement\n ) {\n return;\n }\n\n inputElement.blur();\n },\n ...rest,\n };\n };\n\n const getRootProps: GetRootProps = (rest) => {\n return {\n role: 'combobox',\n 'aria-expanded': store.getState().isOpen,\n 'aria-haspopup': 'listbox',\n 'aria-owns': store.getState().isOpen ? `${props.id}-list` : undefined,\n 'aria-labelledby': `${props.id}-label`,\n ...rest,\n };\n };\n\n const getFormProps: GetFormProps<TEvent> = (providedProps) => {\n const { inputElement, ...rest } = providedProps;\n\n return {\n action: '',\n noValidate: true,\n role: 'search',\n onSubmit: (event) => {\n ((event as unknown) as Event).preventDefault();\n\n props.onSubmit({\n event,\n refresh,\n state: store.getState(),\n ...setters,\n });\n\n store.dispatch('submit', null);\n providedProps.inputElement?.blur();\n },\n onReset: (event) => {\n ((event as unknown) as Event).preventDefault();\n\n props.onReset({\n event,\n refresh,\n state: store.getState(),\n ...setters,\n });\n\n store.dispatch('reset', null);\n providedProps.inputElement?.focus();\n },\n ...rest,\n };\n };\n\n const getInputProps: GetInputProps<TEvent, TMouseEvent, TKeyboardEvent> = (\n providedProps\n ) => {\n function onFocus(event: TEvent) {\n // We want to trigger a query when `openOnFocus` is true\n // because the panel should open with the current query.\n if (props.openOnFocus || Boolean(store.getState().query)) {\n onInput({\n event,\n props,\n query: store.getState().completion || store.getState().query,\n refresh,\n store,\n ...setters,\n });\n }\n\n store.dispatch('focus', null);\n }\n\n const isTouchDevice = 'ontouchstart' in props.environment;\n const { inputElement, maxLength = 512, ...rest } = providedProps || {};\n const activeItem = getActiveItem(store.getState());\n\n return {\n 'aria-autocomplete': 'both',\n 'aria-activedescendant':\n store.getState().isOpen && store.getState().activeItemId !== null\n ? `${props.id}-item-${store.getState().activeItemId}`\n : undefined,\n 'aria-controls': store.getState().isOpen ? `${props.id}-list` : undefined,\n 'aria-labelledby': `${props.id}-label`,\n value: store.getState().completion || store.getState().query,\n id: `${props.id}-input`,\n autoComplete: 'off',\n autoCorrect: 'off',\n autoCapitalize: 'off',\n enterKeyHint: activeItem?.itemUrl ? 'go' : 'search',\n spellCheck: 'false',\n autoFocus: props.autoFocus,\n placeholder: props.placeholder,\n maxLength,\n type: 'search',\n onChange: (event) => {\n onInput({\n event,\n props,\n query: (((event as unknown) as Event)\n .currentTarget as HTMLInputElement).value.slice(0, maxLength),\n refresh,\n store,\n ...setters,\n });\n },\n onKeyDown: (event) => {\n onKeyDown({\n event: (event as unknown) as KeyboardEvent,\n props,\n refresh,\n store,\n ...setters,\n });\n },\n onFocus,\n onBlur: () => {\n // We do rely on the `blur` event on touch devices.\n // See explanation in `onTouchStart`.\n if (!isTouchDevice) {\n store.dispatch('blur', null);\n }\n },\n onClick: (event) => {\n // When the panel is closed and you click on the input while\n // the input is focused, the `onFocus` event is not triggered\n // (default browser behavior).\n // In an autocomplete context, it makes sense to open the panel in this\n // case.\n // We mimic this event by catching the `onClick` event which\n // triggers the `onFocus` for the panel to open.\n if (\n providedProps.inputElement ===\n props.environment.document.activeElement &&\n !store.getState().isOpen\n ) {\n onFocus((event as unknown) as TEvent);\n }\n },\n ...rest,\n };\n };\n\n const getLabelProps: GetLabelProps = (rest) => {\n return {\n htmlFor: `${props.id}-input`,\n id: `${props.id}-label`,\n ...rest,\n };\n };\n\n const getListProps: GetListProps = (rest) => {\n return {\n role: 'listbox',\n 'aria-labelledby': `${props.id}-label`,\n id: `${props.id}-list`,\n ...rest,\n };\n };\n\n const getPanelProps: GetPanelProps<TMouseEvent> = (rest) => {\n return {\n onMouseDown(event) {\n // Prevents the `activeElement` from being changed to the panel so\n // that the blur event is not triggered, otherwise it closes the\n // panel.\n ((event as unknown) as MouseEvent).preventDefault();\n },\n onMouseLeave() {\n store.dispatch('mouseleave', null);\n },\n ...rest,\n };\n };\n\n const getItemProps: GetItemProps<any, TMouseEvent> = (providedProps) => {\n const { item, source, ...rest } = providedProps;\n\n return {\n id: `${props.id}-item-${item.__autocomplete_id}`,\n role: 'option',\n 'aria-selected': store.getState().activeItemId === item.__autocomplete_id,\n onMouseMove(event) {\n if (item.__autocomplete_id === store.getState().activeItemId) {\n return;\n }\n\n store.dispatch('mousemove', item.__autocomplete_id);\n\n const activeItem = getActiveItem(store.getState());\n\n if (store.getState().activeItemId !== null && activeItem) {\n const { item, itemInputValue, itemUrl, source } = activeItem;\n\n source.onActive({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n }\n },\n onMouseDown(event) {\n // Prevents the `activeElement` from being changed to the item so it\n // can remain with the current `activeElement`.\n ((event as unknown) as MouseEvent).preventDefault();\n },\n onClick(event) {\n const itemInputValue = source.getItemInputValue({\n item,\n state: store.getState(),\n });\n const itemUrl = source.getItemUrl({\n item,\n state: store.getState(),\n });\n\n // If `getItemUrl` is provided, it means that the suggestion\n // is a link, not plain text that aims at updating the query.\n // We can therefore skip the state change because it will update\n // the `activeItemId`, resulting in a UI flash, especially\n // noticeable on mobile.\n const runPreCommand = itemUrl\n ? Promise.resolve()\n : onInput({\n event,\n nextState: { isOpen: false },\n props,\n query: itemInputValue,\n refresh,\n store,\n ...setters,\n });\n\n runPreCommand.then(() => {\n source.onSelect({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n });\n },\n ...rest,\n };\n };\n\n return {\n getEnvironmentProps,\n getRootProps,\n getFormProps,\n getLabelProps,\n getInputProps,\n getPanelProps,\n getListProps,\n getItemProps,\n };\n}\n","import { AutocompleteState, BaseItem } from './types';\nimport { getActiveItem } from './utils';\n\ninterface GetCompletionProps<TItem extends BaseItem> {\n state: AutocompleteState<TItem>;\n}\n\nexport function getCompletion<TItem extends BaseItem>({\n state,\n}: GetCompletionProps<TItem>): string | null {\n if (state.isOpen === false || state.activeItemId === null) {\n return null;\n }\n\n const { itemInputValue } = getActiveItem(state)!;\n\n return itemInputValue || null;\n}\n","import { getItemsCount, invariant } from '@algolia/autocomplete-shared';\n\nimport { getCompletion } from './getCompletion';\nimport { Reducer } from './types';\nimport { getNextActiveItemId } from './utils';\n\nexport const stateReducer: Reducer = (state, action) => {\n switch (action.type) {\n case 'setActiveItemId': {\n return {\n ...state,\n activeItemId: action.payload,\n };\n }\n\n case 'setQuery': {\n return {\n ...state,\n query: action.payload,\n completion: null,\n };\n }\n\n case 'setCollections': {\n return {\n ...state,\n collections: action.payload,\n };\n }\n\n case 'setIsOpen': {\n return {\n ...state,\n isOpen: action.payload,\n };\n }\n\n case 'setStatus': {\n return {\n ...state,\n status: action.payload,\n };\n }\n\n case 'setContext': {\n return {\n ...state,\n context: {\n ...state.context,\n ...action.payload,\n },\n };\n }\n\n case 'ArrowDown': {\n const nextState = {\n ...state,\n activeItemId: getNextActiveItemId(\n 1,\n state.activeItemId,\n getItemsCount(state),\n action.props.defaultActiveItemId\n ),\n };\n\n return {\n ...nextState,\n completion: getCompletion({ state: nextState }),\n };\n }\n\n case 'ArrowUp': {\n const nextState = {\n ...state,\n activeItemId: getNextActiveItemId(\n -1,\n state.activeItemId,\n getItemsCount(state),\n action.props.defaultActiveItemId\n ),\n };\n\n return {\n ...nextState,\n completion: getCompletion({ state: nextState }),\n };\n }\n\n case 'Escape': {\n if (state.isOpen) {\n return {\n ...state,\n isOpen: false,\n completion: null,\n };\n }\n\n return {\n ...state,\n query: '',\n status: 'idle',\n collections: [],\n };\n }\n\n case 'submit': {\n return {\n ...state,\n activeItemId: null,\n isOpen: false,\n status: 'idle',\n };\n }\n\n case 'reset': {\n return {\n ...state,\n activeItemId:\n // Since we open the panel on reset when openOnFocus=true\n // we need to restore the highlighted index to the defaultActiveItemId. (DocSearch use-case)\n\n // Since we close the panel when openOnFocus=false\n // we lose track of the highlighted index. (Query-suggestions use-case)\n action.props.openOnFocus === true\n ? action.props.defaultActiveItemId\n : null,\n status: 'idle',\n query: '',\n };\n }\n\n case 'focus': {\n return {\n ...state,\n activeItemId: action.props.defaultActiveItemId,\n isOpen:\n (action.props.openOnFocus || Boolean(state.query)) &&\n action.props.shouldPanelOpen({ state }),\n };\n }\n\n case 'blur': {\n if (action.props.debug) {\n return state;\n }\n\n return {\n ...state,\n isOpen: false,\n activeItemId: null,\n };\n }\n\n case 'mousemove': {\n return {\n ...state,\n activeItemId: action.payload,\n };\n }\n\n case 'mouseleave': {\n return {\n ...state,\n activeItemId: action.props.defaultActiveItemId,\n };\n }\n\n default:\n invariant(\n false,\n `The reducer action ${JSON.stringify(action.type)} is not supported.`\n );\n\n return state;\n }\n};\n","import { checkOptions } from './checkOptions';\nimport { createStore } from './createStore';\nimport { getAutocompleteSetters } from './getAutocompleteSetters';\nimport { getDefaultProps } from './getDefaultProps';\nimport { getPropGetters } from './getPropGetters';\nimport { onInput } from './onInput';\nimport { stateReducer } from './stateReducer';\nimport {\n AutocompleteApi,\n AutocompleteOptions,\n BaseItem,\n AutocompleteSubscribers,\n} from './types';\n\nexport function createAutocomplete<\n TItem extends BaseItem,\n TEvent = Event,\n TMouseEvent = MouseEvent,\n TKeyboardEvent = KeyboardEvent\n>(\n options: AutocompleteOptions<TItem>\n): AutocompleteApi<TItem, TEvent, TMouseEvent, TKeyboardEvent> {\n checkOptions(options);\n\n const subscribers: AutocompleteSubscribers<TItem> = [];\n const props = getDefaultProps(options, subscribers);\n const store = createStore(stateReducer, props, onStoreStateChange);\n\n const setters = getAutocompleteSetters({ store });\n const propGetters = getPropGetters<\n TItem,\n TEvent,\n TMouseEvent,\n TKeyboardEvent\n >({ props, refresh, store, ...setters });\n\n function onStoreStateChange({ prevState, state }) {\n props.onStateChange({ prevState, state, refresh, ...setters });\n }\n\n function refresh() {\n return onInput({\n event: new Event('input'),\n nextState: { isOpen: store.getState().isOpen },\n props,\n query: store.getState().query,\n refresh,\n store,\n ...setters,\n });\n }\n\n props.plugins.forEach((plugin) =>\n plugin.subscribe?.({\n ...setters,\n refresh,\n onSelect(fn) {\n subscribers.push({ onSelect: fn });\n },\n onActive(fn) {\n subscribers.push({ onActive: fn });\n },\n })\n );\n\n return {\n refresh,\n ...propGetters,\n ...setters,\n };\n}\n","export const version = '1.0.0-alpha.44';\n"],"names":["getItemsCount","state","collections","length","reduce","sum","collection","items","invariant","condition","message","Error","concat","warnCache","current","warn","sanitizedMessage","trim","hasAlreadyPrinted","console","checkOptions","options","process","debug","createStore","reducer","props","onStoreStateChange","initialState","getState","dispatch","action","payload","prevState","type","flatten","values","a","b","autocompleteId","generateAutocompleteId","getNextActiveItemId","moveAmount","baseIndex","itemCount","defaultActiveItemId","numericIndex","noop","getNormalizedSources","getSources","params","Promise","resolve","then","sources","Array","isArray","JSON","stringify","all","filter","maybeSource","Boolean","map","source","sourceId","normalizedSource","getItemInputValue","query","getItemUrl","undefined","onSelect","setIsOpen","onActive","getCollectionFromActiveItemId","accumulatedCollectionsCount","acc","collectionsCount","index","previousValue","nextValue","push","collectionIndex","activeItemId","getRelativeActiveItemId","isOffsetFound","counter","previousItemsOffset","currentCollection","getActiveItem","item","itemInputValue","itemUrl","isOrContainsNode","parent","child","contains","getAutocompleteSetters","store","setActiveItemId","value","setQuery","setCollections","rawValue","baseItemId","__autocomplete_id","setStatus","setContext","getDefaultProps","pluginSubscribers","environment","window","plugins","openOnFocus","placeholder","autoFocus","stallThreshold","shouldPanelOpen","id","completion","isOpen","status","context","onStateChange","forEach","x","onSubmit","onReset","plugin","nested","navigator","navigate","location","assign","navigateNewTab","windowReference","open","focus","navigateNewWindow","lastStalledId","onInput","event","nextState","refresh","setters","clearTimeout","setTimeout","getItems","isPanelOpen","highlightedItem","finally","onKeyDown","key","preventDefault","nodeItem","document","getElementById","scrollIntoViewIfNeeded","scrollIntoView","every","metaKey","ctrlKey","shiftKey","altKey","getPropGetters","getEnvironmentProps","providedProps","inputElement","formElement","panelElement","rest","onTouchStart","target","isTargetWithinAutocomplete","some","contextNode","activeElement","onTouchMove","blur","getRootProps","role","getFormProps","noValidate","getInputProps","onFocus","isTouchDevice","maxLength","activeItem","autoComplete","autoCorrect","autoCapitalize","enterKeyHint","spellCheck","onChange","currentTarget","slice","onBlur","onClick","getLabelProps","htmlFor","getListProps","getPanelProps","onMouseDown","onMouseLeave","getItemProps","onMouseMove","runPreCommand","getCompletion","stateReducer","createAutocomplete","subscribers","propGetters","Event","subscribe","fn","version"],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/*! @algolia/autocomplete-core 1.0.0-alpha.
|
|
2
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@algolia/autocomplete-core"]={})}(this,(function(e){"use strict";function t(e){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function n(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?r(Object(o),!0).forEach((function(t){n(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):r(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function i(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function a(e){return function(e){if(Array.isArray(e))return u(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return u(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return u(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function c(e){return 0===e.collections.length?0:e.collections.reduce((function(e,t){return e+t.items.length}),0)}function l(e){return e.reduce((function(e,t){return e.concat(t)}),[])}var s=0;function f(e,t,n,r){if(e<0&&(null===t||null!==r&&0===t))return n+e;var o=(null===t?-1:t)+e;return o<=-1||o>=n?null===r?null:0:o}var p=function(){};function m(e){var t=function(e){var t=e.collections.map((function(e){return e.items.length})).reduce((function(e,t,n){var r=(e[n-1]||0)+t;return e.push(r),e}),[]).reduce((function(t,n){return n<=e.activeItemId?t+1:t}),0);return e.collections[t]}(e);if(!t)return null;var n=t.items[function(e){for(var t=e.state,n=e.collection,r=!1,o=0,i=0;!1===r;){var a=t.collections[o];if(a===n){r=!0;break}i+=a.items.length,o++}return t.activeItemId-i}({state:e,collection:t})],r=t.source;return{item:n,itemInputValue:r.getItemInputValue({item:n,state:e}),itemUrl:r.getItemUrl({item:n,state:e}),source:r}}function v(e,t){return e===t||e.contains(t)}function d(e,n){var r,i="undefined"!=typeof window?window:{},u=e.plugins||[];return o(o({debug:!1,openOnFocus:!1,placeholder:"",autoFocus:!1,defaultActiveItemId:null,stallThreshold:300,environment:i,shouldPanelShow:function(e){return c(e.state)>0}},e),{},{id:null!==(r=e.id)&&void 0!==r?r:"autocomplete-".concat(s++),plugins:u,initialState:o({activeItemId:null,query:"",completion:null,collections:[],isOpen:!1,status:"idle",context:{}},e.initialState),onStateChange:function(t){var n;null===(n=e.onStateChange)||void 0===n||n.call(e,t),u.forEach((function(e){var n;return null===(n=e.onStateChange)||void 0===n?void 0:n.call(e,t)}))},onSubmit:function(t){var n;null===(n=e.onSubmit)||void 0===n||n.call(e,t),u.forEach((function(e){var n;return null===(n=e.onSubmit)||void 0===n?void 0:n.call(e,t)}))},onReset:function(t){var n;null===(n=e.onReset)||void 0===n||n.call(e,t),u.forEach((function(e){var n;return null===(n=e.onReset)||void 0===n?void 0:n.call(e,t)}))},getSources:function(r){return Promise.all([].concat(a(u.map((function(e){return e.getSources}))),[e.getSources]).filter(Boolean).map((function(e){return function(e,n){return Promise.resolve(e(n)).then((function(e){return Array.isArray(e),"The `getSources` function must return an array of sources but returned type ".concat(JSON.stringify(t(e)),":\n\n").concat(JSON.stringify(e,null,2)),Promise.all(e.filter((function(e){return Boolean(e)})).map((function(e){var t=o({getItemInputValue:function(e){return e.state.query},getItemUrl:function(){},onSelect:function(e){(0,e.setIsOpen)(!1)},onActive:p},e);return Promise.resolve(t)})))}))}(e,r)}))).then((function(e){return l(e)})).then((function(e){return e.map((function(e){return o(o({},e),{},{onSelect:function(t){e.onSelect(t),n.forEach((function(e){var n;return null===(n=e.onSelect)||void 0===n?void 0:n.call(e,t)}))},onActive:function(t){e.onActive(t),n.forEach((function(e){var n;return null===(n=e.onActive)||void 0===n?void 0:n.call(e,t)}))}})}))}))},navigator:o({navigate:function(e){var t=e.itemUrl;i.location.assign(t)},navigateNewTab:function(e){var t=e.itemUrl,n=i.open(t,"_blank","noopener");null==n||n.focus()},navigateNewWindow:function(e){var t=e.itemUrl;i.open(t,"_blank","noopener")}},e.navigator)})}var g=null;function y(e){var n=e.event,r=e.nextState,a=void 0===r?{}:r,u=e.props,c=e.query,l=e.refresh,s=e.store,f=i(e,["event","nextState","props","query","refresh","store"]);if(u.onInput)return Promise.resolve(u.onInput(o({query:c,refresh:l,state:s.getState()},f)));g&&u.environment.clearTimeout(g);var p,v=f.setCollections,d=f.setIsOpen,y=f.setQuery,h=f.setActiveItemId,I=f.setStatus;return y(c),h(u.defaultActiveItemId),c||!1!==u.openOnFocus?(I("loading"),g=u.environment.setTimeout((function(){I("stalled")}),u.stallThreshold),u.getSources(o({query:c,refresh:l,state:s.getState()},f)).then((function(e){return I("loading"),Promise.all(e.map((function(e){return Promise.resolve(e.getItems(o({query:c,refresh:l,state:s.getState()},f))).then((function(n){return Array.isArray(n),"The `getItems` function must return an array of items but returned type ".concat(JSON.stringify(t(n)),":\n\n").concat(JSON.stringify(n,null,2)),{source:e,items:n}}))}))).then((function(e){var t;I("idle"),v(e),d(null!==(t=a.isOpen)&&void 0!==t?t:!c&&u.openOnFocus||u.shouldPanelShow({state:s.getState()}));var r=m(s.getState());if(null!==s.getState().activeItemId&&r){var i=r.item,p=r.itemInputValue,g=r.itemUrl,y=r.source;y.onActive(o({event:n,item:i,itemInputValue:p,itemUrl:g,refresh:l,source:y,state:s.getState()},f))}})).finally((function(){g&&u.environment.clearTimeout(g)}))}))):(I("idle"),v(s.getState().collections.map((function(e){return o(o({},e),{},{items:[]})}))),d(null!==(p=a.isOpen)&&void 0!==p?p:u.shouldPanelShow({state:s.getState()})),Promise.resolve())}function h(e){var t=e.props,n=e.refresh,r=e.store,a=i(e,["props","refresh","store"]);return{getEnvironmentProps:function(e){var n=e.inputElement,a=e.formElement,u=e.panelElement;return o({onTouchStart:function(e){!1!==r.getState().isOpen&&e.target!==n&&(!1===[a,u].some((function(n){return v(n,e.target)||v(n,t.environment.document.activeElement)}))&&r.dispatch("blur",null))},onTouchMove:function(e){!1!==r.getState().isOpen&&n===t.environment.document.activeElement&&e.target!==n&&n.blur()}},i(e,["inputElement","formElement","panelElement"]))},getRootProps:function(e){return o({role:"combobox","aria-expanded":r.getState().isOpen,"aria-haspopup":"listbox","aria-owns":r.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label")},e)},getFormProps:function(e){e.inputElement;return o({action:"",noValidate:!0,role:"search",onSubmit:function(i){var u;i.preventDefault(),t.onSubmit(o({event:i,refresh:n,state:r.getState()},a)),r.dispatch("submit",null),null===(u=e.inputElement)||void 0===u||u.blur()},onReset:function(i){var u;i.preventDefault(),t.onReset(o({event:i,refresh:n,state:r.getState()},a)),r.dispatch("reset",null),null===(u=e.inputElement)||void 0===u||u.focus()}},i(e,["inputElement"]))},getLabelProps:function(e){return o({htmlFor:"".concat(t.id,"-input"),id:"".concat(t.id,"-label")},e)},getInputProps:function(e){function u(e){(t.openOnFocus||Boolean(r.getState().query))&&y(o({event:e,props:t,query:r.getState().completion||r.getState().query,refresh:n,store:r},a)),r.dispatch("focus",null)}var c="ontouchstart"in t.environment,l=e||{},s=(l.inputElement,l.maxLength),f=void 0===s?512:s,p=i(l,["inputElement","maxLength"]),v=m(r.getState());return o({"aria-autocomplete":"both","aria-activedescendant":r.getState().isOpen&&null!==r.getState().activeItemId?"".concat(t.id,"-item-").concat(r.getState().activeItemId):void 0,"aria-controls":r.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label"),value:r.getState().completion||r.getState().query,id:"".concat(t.id,"-input"),autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",enterKeyHint:null!=v&&v.itemUrl?"go":"search",spellCheck:"false",autoFocus:t.autoFocus,placeholder:t.placeholder,maxLength:f,type:"search",onChange:function(e){y(o({event:e,props:t,query:e.currentTarget.value.slice(0,f),refresh:n,store:r},a))},onKeyDown:function(e){!function(e){var t=e.event,n=e.props,r=e.refresh,a=e.store,u=i(e,["event","props","refresh","store"]);if("ArrowUp"===t.key||"ArrowDown"===t.key){t.preventDefault(),a.dispatch(t.key,null);var c=n.environment.document.getElementById("".concat(n.id,"-item-").concat(a.getState().activeItemId));c&&(c.scrollIntoViewIfNeeded?c.scrollIntoViewIfNeeded(!1):c.scrollIntoView(!1));var l=m(a.getState());if(null!==a.getState().activeItemId&&l){var s=l.item,f=l.itemInputValue,p=l.itemUrl,v=l.source;v.onActive(o({event:t,item:s,itemInputValue:f,itemUrl:p,refresh:r,source:v,state:a.getState()},u))}}else if("Escape"===t.key)t.preventDefault(),a.dispatch(t.key,null);else if("Enter"===t.key){if(null===a.getState().activeItemId||a.getState().collections.every((function(e){return 0===e.items.length})))return;t.preventDefault();var d=m(a.getState()),g=d.item,h=d.itemInputValue,I=d.itemUrl,S=d.source;if(t.metaKey||t.ctrlKey)void 0!==I&&(S.onSelect(o({event:t,item:g,itemInputValue:h,itemUrl:I,refresh:r,source:S,state:a.getState()},u)),n.navigator.navigateNewTab({itemUrl:I,item:g,state:a.getState()}));else if(t.shiftKey)void 0!==I&&(S.onSelect(o({event:t,item:g,itemInputValue:h,itemUrl:I,refresh:r,source:S,state:a.getState()},u)),n.navigator.navigateNewWindow({itemUrl:I,item:g,state:a.getState()}));else if(t.altKey);else{if(void 0!==I)return S.onSelect(o({event:t,item:g,itemInputValue:h,itemUrl:I,refresh:r,source:S,state:a.getState()},u)),void n.navigator.navigate({itemUrl:I,item:g,state:a.getState()});y(o({event:t,nextState:{isOpen:!1},props:n,query:h,refresh:r,store:a},u)).then((function(){S.onSelect(o({event:t,item:g,itemInputValue:h,itemUrl:I,refresh:r,source:S,state:a.getState()},u))}))}}}(o({event:e,props:t,refresh:n,store:r},a))},onFocus:u,onBlur:function(){c||r.dispatch("blur",null)},onClick:function(n){e.inputElement!==t.environment.document.activeElement||r.getState().isOpen||u(n)}},p)},getPanelProps:function(e){return o({onMouseDown:function(e){e.preventDefault()},onMouseLeave:function(){r.dispatch("mouseleave",null)}},e)},getListProps:function(e){return o({role:"listbox","aria-labelledby":"".concat(t.id,"-label"),id:"".concat(t.id,"-list")},e)},getItemProps:function(e){var u=e.item,c=e.source,l=i(e,["item","source"]);return o({id:"".concat(t.id,"-item-").concat(u.__autocomplete_id),role:"option","aria-selected":r.getState().activeItemId===u.__autocomplete_id,onMouseMove:function(e){if(u.__autocomplete_id!==r.getState().activeItemId){r.dispatch("mousemove",u.__autocomplete_id);var t=m(r.getState());if(null!==r.getState().activeItemId&&t){var i=t.item,c=t.itemInputValue,l=t.itemUrl,s=t.source;s.onActive(o({event:e,item:i,itemInputValue:c,itemUrl:l,refresh:n,source:s,state:r.getState()},a))}}},onMouseDown:function(e){e.preventDefault()},onClick:function(e){var i=c.getItemInputValue({item:u,state:r.getState()}),l=c.getItemUrl({item:u,state:r.getState()});(l?Promise.resolve():y(o({event:e,nextState:{isOpen:!1},props:t,query:i,refresh:n,store:r},a))).then((function(){c.onSelect(o({event:e,item:u,itemInputValue:i,itemUrl:l,refresh:n,source:c,state:r.getState()},a))}))}},l)}}}function I(e){var t=e.state;return!1===t.isOpen||null===t.activeItemId?null:m(t).itemInputValue||null}var S=function(e,t){switch(t.type){case"setActiveItemId":return o(o({},e),{},{activeItemId:t.payload});case"setQuery":return o(o({},e),{},{query:t.payload,completion:null});case"setCollections":return o(o({},e),{},{collections:t.payload});case"setIsOpen":return o(o({},e),{},{isOpen:t.payload});case"setStatus":return o(o({},e),{},{status:t.payload});case"setContext":return o(o({},e),{},{context:o(o({},e.context),t.payload)});case"ArrowDown":var n=o(o({},e),{},{activeItemId:f(1,e.activeItemId,c(e),t.props.defaultActiveItemId)});return o(o({},n),{},{completion:I({state:n})});case"ArrowUp":var r=o(o({},e),{},{activeItemId:f(-1,e.activeItemId,c(e),t.props.defaultActiveItemId)});return o(o({},r),{},{completion:I({state:r})});case"Escape":return e.isOpen?o(o({},e),{},{isOpen:!1,completion:null}):o(o({},e),{},{query:"",status:"idle",collections:[]});case"submit":return o(o({},e),{},{activeItemId:null,isOpen:!1,status:"idle"});case"reset":return o(o({},e),{},{activeItemId:!0===t.props.openOnFocus?t.props.defaultActiveItemId:null,status:"idle",query:""});case"focus":return o(o({},e),{},{activeItemId:t.props.defaultActiveItemId,isOpen:t.props.openOnFocus||Boolean(e.query)});case"blur":return t.props.debug?e:o(o({},e),{},{isOpen:!1,activeItemId:null});case"mousemove":return o(o({},e),{},{activeItemId:t.payload});case"mouseleave":return o(o({},e),{},{activeItemId:t.props.defaultActiveItemId});default:return"The reducer action ".concat(JSON.stringify(t.type)," is not supported."),e}};e.createAutocomplete=function(e){var t=[],n=d(e,t),r=function(e,t,n){var r=t.initialState;return{getState:function(){return r},dispatch:function(i,a){var u=o({},r);r=e(r,{type:i,props:t,payload:a}),n({state:r,prevState:u})}}}(S,n,(function(e){var t=e.prevState,r=e.state;n.onStateChange(o({prevState:t,state:r,refresh:u},i))})),i=function(e){var t=e.store;return{setActiveItemId:function(e){t.dispatch("setActiveItemId",e)},setQuery:function(e){t.dispatch("setQuery",e)},setCollections:function(e){var n=0,r=e.map((function(e){return o(o({},e),{},{items:l(e.items).map((function(e){return o(o({},e),{},{__autocomplete_id:n++})}))})}));t.dispatch("setCollections",r)},setIsOpen:function(e){t.dispatch("setIsOpen",e)},setStatus:function(e){t.dispatch("setStatus",e)},setContext:function(e){t.dispatch("setContext",e)}}}({store:r}),a=h(o({props:n,refresh:u,store:r},i));function u(){return y(o({event:new Event("input"),nextState:{isOpen:r.getState().isOpen},props:n,query:r.getState().query,refresh:u,store:r},i))}return n.plugins.forEach((function(e){var n;return null===(n=e.subscribe)||void 0===n?void 0:n.call(e,o(o({},i),{},{refresh:u,onSelect:function(e){t.push({onSelect:e})},onActive:function(e){t.push({onActive:e})}}))})),o(o({refresh:u},a),i)},e.getDefaultProps=d,e.version="1.0.0-alpha.40",Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
1
|
+
/*! @algolia/autocomplete-core 1.0.0-alpha.44 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete */
|
|
2
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@algolia/autocomplete-core"]={})}(this,(function(e){"use strict";function t(e){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function n(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?r(Object(o),!0).forEach((function(t){n(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):r(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function i(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function a(e){return function(e){if(Array.isArray(e))return u(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return u(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return u(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function c(e){return 0===e.collections.length?0:e.collections.reduce((function(e,t){return e+t.items.length}),0)}function l(e){return e.reduce((function(e,t){return e.concat(t)}),[])}var s=0;function p(e,t,n,r){if(e<0&&(null===t||null!==r&&0===t))return n+e;var o=(null===t?-1:t)+e;return o<=-1||o>=n?null===r?null:0:o}var f=function(){};function m(e){var t=function(e){var t=e.collections.map((function(e){return e.items.length})).reduce((function(e,t,n){var r=(e[n-1]||0)+t;return e.push(r),e}),[]).reduce((function(t,n){return n<=e.activeItemId?t+1:t}),0);return e.collections[t]}(e);if(!t)return null;var n=t.items[function(e){for(var t=e.state,n=e.collection,r=!1,o=0,i=0;!1===r;){var a=t.collections[o];if(a===n){r=!0;break}i+=a.items.length,o++}return t.activeItemId-i}({state:e,collection:t})],r=t.source;return{item:n,itemInputValue:r.getItemInputValue({item:n,state:e}),itemUrl:r.getItemUrl({item:n,state:e}),source:r}}function v(e,t){return e===t||e.contains(t)}function d(e,n){var r,i="undefined"!=typeof window?window:{},u=e.plugins||[];return o(o({debug:!1,openOnFocus:!1,placeholder:"",autoFocus:!1,defaultActiveItemId:null,stallThreshold:300,environment:i,shouldPanelOpen:function(e){return c(e.state)>0}},e),{},{id:null!==(r=e.id)&&void 0!==r?r:"autocomplete-".concat(s++),plugins:u,initialState:o({activeItemId:null,query:"",completion:null,collections:[],isOpen:!1,status:"idle",context:{}},e.initialState),onStateChange:function(t){var n;null===(n=e.onStateChange)||void 0===n||n.call(e,t),u.forEach((function(e){var n;return null===(n=e.onStateChange)||void 0===n?void 0:n.call(e,t)}))},onSubmit:function(t){var n;null===(n=e.onSubmit)||void 0===n||n.call(e,t),u.forEach((function(e){var n;return null===(n=e.onSubmit)||void 0===n?void 0:n.call(e,t)}))},onReset:function(t){var n;null===(n=e.onReset)||void 0===n||n.call(e,t),u.forEach((function(e){var n;return null===(n=e.onReset)||void 0===n?void 0:n.call(e,t)}))},getSources:function(r){return Promise.all([].concat(a(u.map((function(e){return e.getSources}))),[e.getSources]).filter(Boolean).map((function(e){return function(e,n){return Promise.resolve(e(n)).then((function(e){return Array.isArray(e),"The `getSources` function must return an array of sources but returned type ".concat(JSON.stringify(t(e)),":\n\n").concat(JSON.stringify(e,null,2)),Promise.all(e.filter((function(e){return Boolean(e)})).map((function(e){e.sourceId;var t=o({getItemInputValue:function(e){return e.state.query},getItemUrl:function(){},onSelect:function(e){(0,e.setIsOpen)(!1)},onActive:f},e);return Promise.resolve(t)})))}))}(e,r)}))).then((function(e){return l(e)})).then((function(e){return e.map((function(e){return o(o({},e),{},{onSelect:function(t){e.onSelect(t),n.forEach((function(e){var n;return null===(n=e.onSelect)||void 0===n?void 0:n.call(e,t)}))},onActive:function(t){e.onActive(t),n.forEach((function(e){var n;return null===(n=e.onActive)||void 0===n?void 0:n.call(e,t)}))}})}))}))},navigator:o({navigate:function(e){var t=e.itemUrl;i.location.assign(t)},navigateNewTab:function(e){var t=e.itemUrl,n=i.open(t,"_blank","noopener");null==n||n.focus()},navigateNewWindow:function(e){var t=e.itemUrl;i.open(t,"_blank","noopener")}},e.navigator)})}var g=null;function y(e){var n=e.event,r=e.nextState,a=void 0===r?{}:r,u=e.props,c=e.query,l=e.refresh,s=e.store,p=i(e,["event","nextState","props","query","refresh","store"]);g&&u.environment.clearTimeout(g);var f,v=p.setCollections,d=p.setIsOpen,y=p.setQuery,h=p.setActiveItemId,I=p.setStatus;return y(c),h(u.defaultActiveItemId),c||!1!==u.openOnFocus?(I("loading"),g=u.environment.setTimeout((function(){I("stalled")}),u.stallThreshold),u.getSources(o({query:c,refresh:l,state:s.getState()},p)).then((function(e){return I("loading"),Promise.all(e.map((function(e){return Promise.resolve(e.getItems(o({query:c,refresh:l,state:s.getState()},p))).then((function(n){return Array.isArray(n),"The `getItems` function must return an array of items but returned type ".concat(JSON.stringify(t(n)),":\n\n").concat(JSON.stringify(n,null,2)),{source:e,items:n}}))}))).then((function(e){var t;I("idle"),v(e);var r=u.shouldPanelOpen({state:s.getState()});d(null!==(t=a.isOpen)&&void 0!==t?t:u.openOnFocus&&!c&&r||r);var i=m(s.getState());if(null!==s.getState().activeItemId&&i){var f=i.item,g=i.itemInputValue,y=i.itemUrl,h=i.source;h.onActive(o({event:n,item:f,itemInputValue:g,itemUrl:y,refresh:l,source:h,state:s.getState()},p))}})).finally((function(){g&&u.environment.clearTimeout(g)}))}))):(I("idle"),v(s.getState().collections.map((function(e){return o(o({},e),{},{items:[]})}))),d(null!==(f=a.isOpen)&&void 0!==f?f:u.shouldPanelOpen({state:s.getState()})),Promise.resolve())}function h(e){var t=e.props,n=e.refresh,r=e.store,a=i(e,["props","refresh","store"]);return{getEnvironmentProps:function(e){var n=e.inputElement,a=e.formElement,u=e.panelElement;return o({onTouchStart:function(e){!1!==r.getState().isOpen&&e.target!==n&&(!1===[a,u].some((function(n){return v(n,e.target)||v(n,t.environment.document.activeElement)}))&&r.dispatch("blur",null))},onTouchMove:function(e){!1!==r.getState().isOpen&&n===t.environment.document.activeElement&&e.target!==n&&n.blur()}},i(e,["inputElement","formElement","panelElement"]))},getRootProps:function(e){return o({role:"combobox","aria-expanded":r.getState().isOpen,"aria-haspopup":"listbox","aria-owns":r.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label")},e)},getFormProps:function(e){e.inputElement;return o({action:"",noValidate:!0,role:"search",onSubmit:function(i){var u;i.preventDefault(),t.onSubmit(o({event:i,refresh:n,state:r.getState()},a)),r.dispatch("submit",null),null===(u=e.inputElement)||void 0===u||u.blur()},onReset:function(i){var u;i.preventDefault(),t.onReset(o({event:i,refresh:n,state:r.getState()},a)),r.dispatch("reset",null),null===(u=e.inputElement)||void 0===u||u.focus()}},i(e,["inputElement"]))},getLabelProps:function(e){return o({htmlFor:"".concat(t.id,"-input"),id:"".concat(t.id,"-label")},e)},getInputProps:function(e){function u(e){(t.openOnFocus||Boolean(r.getState().query))&&y(o({event:e,props:t,query:r.getState().completion||r.getState().query,refresh:n,store:r},a)),r.dispatch("focus",null)}var c="ontouchstart"in t.environment,l=e||{},s=(l.inputElement,l.maxLength),p=void 0===s?512:s,f=i(l,["inputElement","maxLength"]),v=m(r.getState());return o({"aria-autocomplete":"both","aria-activedescendant":r.getState().isOpen&&null!==r.getState().activeItemId?"".concat(t.id,"-item-").concat(r.getState().activeItemId):void 0,"aria-controls":r.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label"),value:r.getState().completion||r.getState().query,id:"".concat(t.id,"-input"),autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",enterKeyHint:null!=v&&v.itemUrl?"go":"search",spellCheck:"false",autoFocus:t.autoFocus,placeholder:t.placeholder,maxLength:p,type:"search",onChange:function(e){y(o({event:e,props:t,query:e.currentTarget.value.slice(0,p),refresh:n,store:r},a))},onKeyDown:function(e){!function(e){var t=e.event,n=e.props,r=e.refresh,a=e.store,u=i(e,["event","props","refresh","store"]);if("ArrowUp"===t.key||"ArrowDown"===t.key){t.preventDefault(),a.dispatch(t.key,null);var c=n.environment.document.getElementById("".concat(n.id,"-item-").concat(a.getState().activeItemId));c&&(c.scrollIntoViewIfNeeded?c.scrollIntoViewIfNeeded(!1):c.scrollIntoView(!1));var l=m(a.getState());if(null!==a.getState().activeItemId&&l){var s=l.item,p=l.itemInputValue,f=l.itemUrl,v=l.source;v.onActive(o({event:t,item:s,itemInputValue:p,itemUrl:f,refresh:r,source:v,state:a.getState()},u))}}else if("Escape"===t.key)t.preventDefault(),a.dispatch(t.key,null);else if("Enter"===t.key){if(null===a.getState().activeItemId||a.getState().collections.every((function(e){return 0===e.items.length})))return;t.preventDefault();var d=m(a.getState()),g=d.item,h=d.itemInputValue,I=d.itemUrl,S=d.source;if(t.metaKey||t.ctrlKey)void 0!==I&&(S.onSelect(o({event:t,item:g,itemInputValue:h,itemUrl:I,refresh:r,source:S,state:a.getState()},u)),n.navigator.navigateNewTab({itemUrl:I,item:g,state:a.getState()}));else if(t.shiftKey)void 0!==I&&(S.onSelect(o({event:t,item:g,itemInputValue:h,itemUrl:I,refresh:r,source:S,state:a.getState()},u)),n.navigator.navigateNewWindow({itemUrl:I,item:g,state:a.getState()}));else if(t.altKey);else{if(void 0!==I)return S.onSelect(o({event:t,item:g,itemInputValue:h,itemUrl:I,refresh:r,source:S,state:a.getState()},u)),void n.navigator.navigate({itemUrl:I,item:g,state:a.getState()});y(o({event:t,nextState:{isOpen:!1},props:n,query:h,refresh:r,store:a},u)).then((function(){S.onSelect(o({event:t,item:g,itemInputValue:h,itemUrl:I,refresh:r,source:S,state:a.getState()},u))}))}}}(o({event:e,props:t,refresh:n,store:r},a))},onFocus:u,onBlur:function(){c||r.dispatch("blur",null)},onClick:function(n){e.inputElement!==t.environment.document.activeElement||r.getState().isOpen||u(n)}},f)},getPanelProps:function(e){return o({onMouseDown:function(e){e.preventDefault()},onMouseLeave:function(){r.dispatch("mouseleave",null)}},e)},getListProps:function(e){return o({role:"listbox","aria-labelledby":"".concat(t.id,"-label"),id:"".concat(t.id,"-list")},e)},getItemProps:function(e){var u=e.item,c=e.source,l=i(e,["item","source"]);return o({id:"".concat(t.id,"-item-").concat(u.__autocomplete_id),role:"option","aria-selected":r.getState().activeItemId===u.__autocomplete_id,onMouseMove:function(e){if(u.__autocomplete_id!==r.getState().activeItemId){r.dispatch("mousemove",u.__autocomplete_id);var t=m(r.getState());if(null!==r.getState().activeItemId&&t){var i=t.item,c=t.itemInputValue,l=t.itemUrl,s=t.source;s.onActive(o({event:e,item:i,itemInputValue:c,itemUrl:l,refresh:n,source:s,state:r.getState()},a))}}},onMouseDown:function(e){e.preventDefault()},onClick:function(e){var i=c.getItemInputValue({item:u,state:r.getState()}),l=c.getItemUrl({item:u,state:r.getState()});(l?Promise.resolve():y(o({event:e,nextState:{isOpen:!1},props:t,query:i,refresh:n,store:r},a))).then((function(){c.onSelect(o({event:e,item:u,itemInputValue:i,itemUrl:l,refresh:n,source:c,state:r.getState()},a))}))}},l)}}}function I(e){var t=e.state;return!1===t.isOpen||null===t.activeItemId?null:m(t).itemInputValue||null}var S=function(e,t){switch(t.type){case"setActiveItemId":return o(o({},e),{},{activeItemId:t.payload});case"setQuery":return o(o({},e),{},{query:t.payload,completion:null});case"setCollections":return o(o({},e),{},{collections:t.payload});case"setIsOpen":return o(o({},e),{},{isOpen:t.payload});case"setStatus":return o(o({},e),{},{status:t.payload});case"setContext":return o(o({},e),{},{context:o(o({},e.context),t.payload)});case"ArrowDown":var n=o(o({},e),{},{activeItemId:p(1,e.activeItemId,c(e),t.props.defaultActiveItemId)});return o(o({},n),{},{completion:I({state:n})});case"ArrowUp":var r=o(o({},e),{},{activeItemId:p(-1,e.activeItemId,c(e),t.props.defaultActiveItemId)});return o(o({},r),{},{completion:I({state:r})});case"Escape":return e.isOpen?o(o({},e),{},{isOpen:!1,completion:null}):o(o({},e),{},{query:"",status:"idle",collections:[]});case"submit":return o(o({},e),{},{activeItemId:null,isOpen:!1,status:"idle"});case"reset":return o(o({},e),{},{activeItemId:!0===t.props.openOnFocus?t.props.defaultActiveItemId:null,status:"idle",query:""});case"focus":return o(o({},e),{},{activeItemId:t.props.defaultActiveItemId,isOpen:(t.props.openOnFocus||Boolean(e.query))&&t.props.shouldPanelOpen({state:e})});case"blur":return t.props.debug?e:o(o({},e),{},{isOpen:!1,activeItemId:null});case"mousemove":return o(o({},e),{},{activeItemId:t.payload});case"mouseleave":return o(o({},e),{},{activeItemId:t.props.defaultActiveItemId});default:return"The reducer action ".concat(JSON.stringify(t.type)," is not supported."),e}};e.createAutocomplete=function(e){var t=[],n=d(e,t),r=function(e,t,n){var r=t.initialState;return{getState:function(){return r},dispatch:function(i,a){var u=o({},r);r=e(r,{type:i,props:t,payload:a}),n({state:r,prevState:u})}}}(S,n,(function(e){var t=e.prevState,r=e.state;n.onStateChange(o({prevState:t,state:r,refresh:u},i))})),i=function(e){var t=e.store;return{setActiveItemId:function(e){t.dispatch("setActiveItemId",e)},setQuery:function(e){t.dispatch("setQuery",e)},setCollections:function(e){var n=0,r=e.map((function(e){return o(o({},e),{},{items:l(e.items).map((function(e){return o(o({},e),{},{__autocomplete_id:n++})}))})}));t.dispatch("setCollections",r)},setIsOpen:function(e){t.dispatch("setIsOpen",e)},setStatus:function(e){t.dispatch("setStatus",e)},setContext:function(e){t.dispatch("setContext",e)}}}({store:r}),a=h(o({props:n,refresh:u,store:r},i));function u(){return y(o({event:new Event("input"),nextState:{isOpen:r.getState().isOpen},props:n,query:r.getState().query,refresh:u,store:r},i))}return n.plugins.forEach((function(e){var n;return null===(n=e.subscribe)||void 0===n?void 0:n.call(e,o(o({},i),{},{refresh:u,onSelect:function(e){t.push({onSelect:e})},onActive:function(e){t.push({onActive:e})}}))})),o(o({refresh:u},a),i)},e.getDefaultProps=d,e.version="1.0.0-alpha.44",Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
3
3
|
//# sourceMappingURL=index.production.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.production.js","sources":["../../../autocomplete-shared/dist/esm/getItemsCount.js","../../src/utils/flatten.ts","../../src/utils/generateAutocompleteId.ts","../../src/utils/getNextActiveItemId.ts","../../src/utils/noop.ts","../../src/utils/getActiveItem.ts","../../src/utils/isOrContainsNode.ts","../../src/getDefaultProps.ts","../../src/utils/getNormalizedSources.ts","../../src/onInput.ts","../../src/getPropGetters.ts","../../src/onKeyDown.ts","../../src/getCompletion.ts","../../src/stateReducer.ts","../../src/createAutocomplete.ts","../../src/createStore.ts","../../src/getAutocompleteSetters.ts","../../src/version.ts"],"sourcesContent":["export function getItemsCount(state) {\n if (state.collections.length === 0) {\n return 0;\n }\n\n return state.collections.reduce(function (sum, collection) {\n return sum + collection.items.length;\n }, 0);\n}","export function flatten<TType>(values: Array<TType | TType[]>): TType[] {\n return values.reduce<TType[]>((a, b) => {\n return a.concat(b);\n }, []);\n}\n","let autocompleteId = 0;\n\nexport function generateAutocompleteId() {\n return `autocomplete-${autocompleteId++}`;\n}\n","/**\n * Returns the next active item ID from the current state.\n *\n * We allow circular keyboard navigation from the base index.\n * The base index can either be `null` (nothing is highlighted) or `0`\n * (the first item is highlighted).\n * The base index is allowed to get assigned `null` only if\n * `props.defaultActiveItemId` is `null`. This pattern allows to \"stop\"\n * by the actual query before navigating to other suggestions as seen on\n * Google or Amazon.\n *\n * @param moveAmount The offset to increment (or decrement) the last index\n * @param baseIndex The current index to compute the next index from\n * @param itemCount The number of items\n * @param defaultActiveItemId The default active index to fallback to\n */\nexport function getNextActiveItemId(\n moveAmount: number,\n baseIndex: number | null,\n itemCount: number,\n defaultActiveItemId: number | null\n): number | null {\n if (\n moveAmount < 0 &&\n (baseIndex === null || (defaultActiveItemId !== null && baseIndex === 0))\n ) {\n return itemCount + moveAmount;\n }\n\n const numericIndex = (baseIndex === null ? -1 : baseIndex) + moveAmount;\n\n if (numericIndex <= -1 || numericIndex >= itemCount) {\n return defaultActiveItemId === null ? null : 0;\n }\n\n return numericIndex;\n}\n","export const noop = () => {};\n","import { AutocompleteCollection, AutocompleteState, BaseItem } from '../types';\n\n// We don't have access to the autocomplete source when we call `onKeyDown`\n// or `onClick` because those are native browser events.\n// However, we can get the source from the suggestion index.\nfunction getCollectionFromActiveItemId<TItem extends BaseItem>(\n state: AutocompleteState<TItem>\n): AutocompleteCollection<TItem> | undefined {\n // Given 3 sources with respectively 1, 2 and 3 suggestions: [1, 2, 3]\n // We want to get the accumulated counts:\n // [1, 1 + 2, 1 + 2 + 3] = [1, 3, 3 + 3] = [1, 3, 6]\n const accumulatedCollectionsCount = state.collections\n .map((collections) => collections.items.length)\n .reduce<number[]>((acc, collectionsCount, index) => {\n const previousValue = acc[index - 1] || 0;\n const nextValue = previousValue + collectionsCount;\n\n acc.push(nextValue);\n\n return acc;\n }, []);\n\n // Based on the accumulated counts, we can infer the index of the suggestion.\n const collectionIndex = accumulatedCollectionsCount.reduce((acc, current) => {\n if (current <= state.activeItemId!) {\n return acc + 1;\n }\n\n return acc;\n }, 0);\n\n return state.collections[collectionIndex];\n}\n\n/**\n * Gets the highlighted index relative to a suggestion object (not the absolute\n * highlighted index).\n *\n * Example:\n * [['a', 'b'], ['c', 'd', 'e'], ['f']]\n * ↑\n * (absolute: 3, relative: 1)\n */\nfunction getRelativeActiveItemId<TItem extends BaseItem>({\n state,\n collection,\n}: {\n state: AutocompleteState<TItem>;\n collection: AutocompleteCollection<TItem>;\n}): number {\n let isOffsetFound = false;\n let counter = 0;\n let previousItemsOffset = 0;\n\n while (isOffsetFound === false) {\n const currentCollection = state.collections[counter];\n\n if (currentCollection === collection) {\n isOffsetFound = true;\n break;\n }\n\n previousItemsOffset += currentCollection.items.length;\n\n counter++;\n }\n\n return state.activeItemId! - previousItemsOffset;\n}\n\nexport function getActiveItem<TItem extends BaseItem>(\n state: AutocompleteState<TItem>\n) {\n const collection = getCollectionFromActiveItemId(state);\n\n if (!collection) {\n return null;\n }\n\n const item = collection.items[getRelativeActiveItemId({ state, collection })];\n const source = collection.source;\n const itemInputValue = source.getItemInputValue({ item, state });\n const itemUrl = source.getItemUrl({ item, state });\n\n return {\n item,\n itemInputValue,\n itemUrl,\n source,\n };\n}\n","export function isOrContainsNode(parent: Node, child: Node) {\n return parent === child || parent.contains(child);\n}\n","import { getItemsCount } from '@algolia/autocomplete-shared';\n\nimport {\n AutocompleteOptions,\n BaseItem,\n InternalAutocompleteOptions,\n AutocompleteSubscribers,\n} from './types';\nimport { generateAutocompleteId, getNormalizedSources, flatten } from './utils';\n\nexport function getDefaultProps<TItem extends BaseItem>(\n props: AutocompleteOptions<TItem>,\n pluginSubscribers: AutocompleteSubscribers<TItem>\n): InternalAutocompleteOptions<TItem> {\n const environment: InternalAutocompleteOptions<TItem>['environment'] = (typeof window !==\n 'undefined'\n ? window\n : {}) as typeof window;\n const plugins = props.plugins || [];\n\n return {\n debug: false,\n openOnFocus: false,\n placeholder: '',\n autoFocus: false,\n defaultActiveItemId: null,\n stallThreshold: 300,\n environment,\n shouldPanelShow: ({ state }) => getItemsCount(state) > 0,\n ...props,\n // Since `generateAutocompleteId` triggers a side effect (it increments\n // and internal counter), we don't want to execute it if unnecessary.\n id: props.id ?? generateAutocompleteId(),\n plugins,\n // The following props need to be deeply defaulted.\n initialState: {\n activeItemId: null,\n query: '',\n completion: null,\n collections: [],\n isOpen: false,\n status: 'idle',\n context: {},\n ...props.initialState,\n },\n onStateChange(params) {\n props.onStateChange?.(params);\n plugins.forEach((x) => x.onStateChange?.(params));\n },\n onSubmit(params) {\n props.onSubmit?.(params);\n plugins.forEach((x) => x.onSubmit?.(params));\n },\n onReset(params) {\n props.onReset?.(params);\n plugins.forEach((x) => x.onReset?.(params));\n },\n getSources(params) {\n return Promise.all(\n [...plugins.map((plugin) => plugin.getSources), props.getSources]\n .filter(Boolean)\n .map((getSources) => getNormalizedSources(getSources!, params))\n )\n .then((nested) => flatten(nested))\n .then((sources) =>\n sources.map((source) => ({\n ...source,\n onSelect(params) {\n source.onSelect(params);\n pluginSubscribers.forEach((x) => x.onSelect?.(params));\n },\n onActive(params) {\n source.onActive(params);\n pluginSubscribers.forEach((x) => x.onActive?.(params));\n },\n }))\n );\n },\n navigator: {\n navigate({ itemUrl }) {\n environment.location.assign(itemUrl);\n },\n navigateNewTab({ itemUrl }) {\n const windowReference = environment.open(itemUrl, '_blank', 'noopener');\n windowReference?.focus();\n },\n navigateNewWindow({ itemUrl }) {\n environment.open(itemUrl, '_blank', 'noopener');\n },\n ...props.navigator,\n },\n };\n}\n","import { invariant } from '@algolia/autocomplete-shared';\n\nimport {\n AutocompleteSource,\n BaseItem,\n GetSources,\n GetSourcesParams,\n InternalAutocompleteSource,\n InternalGetSources,\n} from '../types';\n\nimport { noop } from './noop';\n\nexport function getNormalizedSources<TItem extends BaseItem>(\n getSources: GetSources<TItem>,\n params: GetSourcesParams<TItem>\n): ReturnType<InternalGetSources<TItem>> {\n return Promise.resolve(getSources(params)).then((sources) => {\n invariant(\n Array.isArray(sources),\n `The \\`getSources\\` function must return an array of sources but returned type ${JSON.stringify(\n typeof sources\n )}:\\n\\n${JSON.stringify(sources, null, 2)}`\n );\n\n return Promise.all(\n sources\n // We allow `undefined` and `false` sources to allow users to use\n // `Boolean(query) && source` (=> `false`).\n // We need to remove these values at this point.\n .filter((maybeSource: any): maybeSource is AutocompleteSource<TItem> =>\n Boolean(maybeSource)\n )\n .map((source) => {\n const normalizedSource: InternalAutocompleteSource<TItem> = {\n getItemInputValue({ state }) {\n return state.query;\n },\n getItemUrl() {\n return undefined;\n },\n onSelect({ setIsOpen }) {\n setIsOpen(false);\n },\n onActive: noop,\n ...source,\n };\n\n return Promise.resolve(normalizedSource);\n })\n );\n });\n}\n","import { invariant } from '@algolia/autocomplete-shared';\n\nimport {\n AutocompleteScopeApi,\n AutocompleteState,\n AutocompleteStore,\n BaseItem,\n InternalAutocompleteOptions,\n} from './types';\nimport { getActiveItem } from './utils';\n\nlet lastStalledId: number | null = null;\n\ninterface OnInputParams<TItem extends BaseItem>\n extends AutocompleteScopeApi<TItem> {\n event: any;\n /**\n * The next partial state to apply after the function is called.\n *\n * This is useful when we call `onInput` in a different scenario than an\n * actual input. For example, we use `onInput` when we click on an item,\n * but we want to close the panel in that case.\n */\n nextState?: Partial<AutocompleteState<TItem>>;\n props: InternalAutocompleteOptions<TItem>;\n query: string;\n store: AutocompleteStore<TItem>;\n}\n\nexport function onInput<TItem extends BaseItem>({\n event,\n nextState = {},\n props,\n query,\n refresh,\n store,\n ...setters\n}: OnInputParams<TItem>): Promise<void> {\n if (props.onInput) {\n return Promise.resolve(\n props.onInput({\n query,\n refresh,\n state: store.getState(),\n ...setters,\n })\n );\n }\n\n if (lastStalledId) {\n props.environment.clearTimeout(lastStalledId);\n }\n\n const {\n setCollections,\n setIsOpen,\n setQuery,\n setActiveItemId,\n setStatus,\n } = setters;\n\n setQuery(query);\n setActiveItemId(props.defaultActiveItemId);\n\n if (!query && props.openOnFocus === false) {\n setStatus('idle');\n setCollections(\n store.getState().collections.map((collection) => ({\n ...collection,\n items: [],\n }))\n );\n setIsOpen(\n nextState.isOpen ?? props.shouldPanelShow({ state: store.getState() })\n );\n\n return Promise.resolve();\n }\n\n setStatus('loading');\n\n lastStalledId = props.environment.setTimeout(() => {\n setStatus('stalled');\n }, props.stallThreshold);\n\n return props\n .getSources({\n query,\n refresh,\n state: store.getState(),\n ...setters,\n })\n .then((sources) => {\n setStatus('loading');\n\n // @TODO: convert `Promise.all` to fetching strategy.\n return Promise.all(\n sources.map((source) => {\n return Promise.resolve(\n source.getItems({\n query,\n refresh,\n state: store.getState(),\n ...setters,\n })\n ).then((items) => {\n invariant(\n Array.isArray(items),\n `The \\`getItems\\` function must return an array of items but returned type ${JSON.stringify(\n typeof items\n )}:\\n\\n${JSON.stringify(items, null, 2)}`\n );\n\n return { source, items };\n });\n })\n )\n .then((collections) => {\n setStatus('idle');\n setCollections(collections as any);\n setIsOpen(\n nextState.isOpen ??\n ((!query && props.openOnFocus) ||\n props.shouldPanelShow({ state: store.getState() }))\n );\n\n const highlightedItem = getActiveItem(store.getState());\n\n if (store.getState().activeItemId !== null && highlightedItem) {\n const { item, itemInputValue, itemUrl, source } = highlightedItem;\n\n source.onActive({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n }\n })\n .finally(() => {\n if (lastStalledId) {\n props.environment.clearTimeout(lastStalledId);\n }\n });\n });\n}\n","import { onInput } from './onInput';\nimport { onKeyDown } from './onKeyDown';\nimport {\n AutocompleteScopeApi,\n AutocompleteStore,\n BaseItem,\n GetEnvironmentProps,\n GetFormProps,\n GetInputProps,\n GetItemProps,\n GetLabelProps,\n GetListProps,\n GetPanelProps,\n GetRootProps,\n InternalAutocompleteOptions,\n} from './types';\nimport { getActiveItem, isOrContainsNode } from './utils';\n\ninterface GetPropGettersOptions<TItem extends BaseItem>\n extends AutocompleteScopeApi<TItem> {\n store: AutocompleteStore<TItem>;\n props: InternalAutocompleteOptions<TItem>;\n}\n\nexport function getPropGetters<\n TItem extends BaseItem,\n TEvent,\n TMouseEvent,\n TKeyboardEvent\n>({ props, refresh, store, ...setters }: GetPropGettersOptions<TItem>) {\n const getEnvironmentProps: GetEnvironmentProps = (providedProps) => {\n const { inputElement, formElement, panelElement, ...rest } = providedProps;\n\n return {\n // On touch devices, we do not rely on the native `blur` event of the\n // input to close the panel, but rather on a custom `touchstart` event\n // outside of the autocomplete elements.\n // This ensures a working experience on mobile because we blur the input\n // on touch devices when the user starts scrolling (`touchmove`).\n onTouchStart(event) {\n if (\n store.getState().isOpen === false ||\n event.target === inputElement\n ) {\n return;\n }\n\n // @TODO: support cases where there are multiple Autocomplete instances.\n // Right now, a second instance makes this computation return false.\n const isTargetWithinAutocomplete = [formElement, panelElement].some(\n (contextNode) => {\n return (\n isOrContainsNode(contextNode, event.target as Node) ||\n isOrContainsNode(\n contextNode,\n props.environment.document.activeElement!\n )\n );\n }\n );\n\n if (isTargetWithinAutocomplete === false) {\n store.dispatch('blur', null);\n }\n },\n // When scrolling on touch devices (mobiles, tablets, etc.), we want to\n // mimic the native platform behavior where the input is blurred to\n // hide the virtual keyboard. This gives more vertical space to\n // discover all the suggestions showing up in the panel.\n onTouchMove(event: TouchEvent) {\n if (\n store.getState().isOpen === false ||\n inputElement !== props.environment.document.activeElement ||\n event.target === inputElement\n ) {\n return;\n }\n\n inputElement.blur();\n },\n ...rest,\n };\n };\n\n const getRootProps: GetRootProps = (rest) => {\n return {\n role: 'combobox',\n 'aria-expanded': store.getState().isOpen,\n 'aria-haspopup': 'listbox',\n 'aria-owns': store.getState().isOpen ? `${props.id}-list` : undefined,\n 'aria-labelledby': `${props.id}-label`,\n ...rest,\n };\n };\n\n const getFormProps: GetFormProps<TEvent> = (providedProps) => {\n const { inputElement, ...rest } = providedProps;\n\n return {\n action: '',\n noValidate: true,\n role: 'search',\n onSubmit: (event) => {\n ((event as unknown) as Event).preventDefault();\n\n props.onSubmit({\n event,\n refresh,\n state: store.getState(),\n ...setters,\n });\n\n store.dispatch('submit', null);\n providedProps.inputElement?.blur();\n },\n onReset: (event) => {\n ((event as unknown) as Event).preventDefault();\n\n props.onReset({\n event,\n refresh,\n state: store.getState(),\n ...setters,\n });\n\n store.dispatch('reset', null);\n providedProps.inputElement?.focus();\n },\n ...rest,\n };\n };\n\n const getInputProps: GetInputProps<TEvent, TMouseEvent, TKeyboardEvent> = (\n providedProps\n ) => {\n function onFocus(event: TEvent) {\n // We want to trigger a query when `openOnFocus` is true\n // because the panel should open with the current query.\n if (props.openOnFocus || Boolean(store.getState().query)) {\n onInput({\n event,\n props,\n query: store.getState().completion || store.getState().query,\n refresh,\n store,\n ...setters,\n });\n }\n\n store.dispatch('focus', null);\n }\n\n const isTouchDevice = 'ontouchstart' in props.environment;\n const { inputElement, maxLength = 512, ...rest } = providedProps || {};\n const activeItem = getActiveItem(store.getState());\n\n return {\n 'aria-autocomplete': 'both',\n 'aria-activedescendant':\n store.getState().isOpen && store.getState().activeItemId !== null\n ? `${props.id}-item-${store.getState().activeItemId}`\n : undefined,\n 'aria-controls': store.getState().isOpen ? `${props.id}-list` : undefined,\n 'aria-labelledby': `${props.id}-label`,\n value: store.getState().completion || store.getState().query,\n id: `${props.id}-input`,\n autoComplete: 'off',\n autoCorrect: 'off',\n autoCapitalize: 'off',\n enterKeyHint: activeItem?.itemUrl ? 'go' : 'search',\n spellCheck: 'false',\n autoFocus: props.autoFocus,\n placeholder: props.placeholder,\n maxLength,\n type: 'search',\n onChange: (event) => {\n onInput({\n event,\n props,\n query: (((event as unknown) as Event)\n .currentTarget as HTMLInputElement).value.slice(0, maxLength),\n refresh,\n store,\n ...setters,\n });\n },\n onKeyDown: (event) => {\n onKeyDown({\n event: (event as unknown) as KeyboardEvent,\n props,\n refresh,\n store,\n ...setters,\n });\n },\n onFocus,\n onBlur: () => {\n // We do rely on the `blur` event on touch devices.\n // See explanation in `onTouchStart`.\n if (!isTouchDevice) {\n store.dispatch('blur', null);\n }\n },\n onClick: (event) => {\n // When the panel is closed and you click on the input while\n // the input is focused, the `onFocus` event is not triggered\n // (default browser behavior).\n // In an autocomplete context, it makes sense to open the panel in this\n // case.\n // We mimic this event by catching the `onClick` event which\n // triggers the `onFocus` for the panel to open.\n if (\n providedProps.inputElement ===\n props.environment.document.activeElement &&\n !store.getState().isOpen\n ) {\n onFocus((event as unknown) as TEvent);\n }\n },\n ...rest,\n };\n };\n\n const getLabelProps: GetLabelProps = (rest) => {\n return {\n htmlFor: `${props.id}-input`,\n id: `${props.id}-label`,\n ...rest,\n };\n };\n\n const getListProps: GetListProps = (rest) => {\n return {\n role: 'listbox',\n 'aria-labelledby': `${props.id}-label`,\n id: `${props.id}-list`,\n ...rest,\n };\n };\n\n const getPanelProps: GetPanelProps<TMouseEvent> = (rest) => {\n return {\n onMouseDown(event) {\n // Prevents the `activeElement` from being changed to the panel so\n // that the blur event is not triggered, otherwise it closes the\n // panel.\n ((event as unknown) as MouseEvent).preventDefault();\n },\n onMouseLeave() {\n store.dispatch('mouseleave', null);\n },\n ...rest,\n };\n };\n\n const getItemProps: GetItemProps<any, TMouseEvent> = (providedProps) => {\n const { item, source, ...rest } = providedProps;\n\n return {\n id: `${props.id}-item-${item.__autocomplete_id}`,\n role: 'option',\n 'aria-selected': store.getState().activeItemId === item.__autocomplete_id,\n onMouseMove(event) {\n if (item.__autocomplete_id === store.getState().activeItemId) {\n return;\n }\n\n store.dispatch('mousemove', item.__autocomplete_id);\n\n const activeItem = getActiveItem(store.getState());\n\n if (store.getState().activeItemId !== null && activeItem) {\n const { item, itemInputValue, itemUrl, source } = activeItem;\n\n source.onActive({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n }\n },\n onMouseDown(event) {\n // Prevents the `activeElement` from being changed to the item so it\n // can remain with the current `activeElement`.\n ((event as unknown) as MouseEvent).preventDefault();\n },\n onClick(event) {\n const itemInputValue = source.getItemInputValue({\n item,\n state: store.getState(),\n });\n const itemUrl = source.getItemUrl({\n item,\n state: store.getState(),\n });\n\n // If `getItemUrl` is provided, it means that the suggestion\n // is a link, not plain text that aims at updating the query.\n // We can therefore skip the state change because it will update\n // the `activeItemId`, resulting in a UI flash, especially\n // noticeable on mobile.\n const runPreCommand = itemUrl\n ? Promise.resolve()\n : onInput({\n event,\n nextState: { isOpen: false },\n props,\n query: itemInputValue,\n refresh,\n store,\n ...setters,\n });\n\n runPreCommand.then(() => {\n source.onSelect({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n });\n },\n ...rest,\n };\n };\n\n return {\n getEnvironmentProps,\n getRootProps,\n getFormProps,\n getLabelProps,\n getInputProps,\n getPanelProps,\n getListProps,\n getItemProps,\n };\n}\n","import { onInput } from './onInput';\nimport {\n AutocompleteScopeApi,\n AutocompleteStore,\n BaseItem,\n InternalAutocompleteOptions,\n} from './types';\nimport { getActiveItem } from './utils';\n\ninterface OnKeyDownOptions<TItem extends BaseItem>\n extends AutocompleteScopeApi<TItem> {\n event: KeyboardEvent;\n props: InternalAutocompleteOptions<TItem>;\n store: AutocompleteStore<TItem>;\n}\n\nexport function onKeyDown<TItem extends BaseItem>({\n event,\n props,\n refresh,\n store,\n ...setters\n}: OnKeyDownOptions<TItem>): void {\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\n // Default browser behavior changes the caret placement on ArrowUp and\n // Arrow down.\n event.preventDefault();\n\n store.dispatch(event.key, null);\n\n const nodeItem = props.environment.document.getElementById(\n `${props.id}-item-${store.getState().activeItemId}`\n );\n\n if (nodeItem) {\n if ((nodeItem as any).scrollIntoViewIfNeeded) {\n (nodeItem as any).scrollIntoViewIfNeeded(false);\n } else {\n nodeItem.scrollIntoView(false);\n }\n }\n\n const highlightedItem = getActiveItem(store.getState());\n\n if (store.getState().activeItemId !== null && highlightedItem) {\n const { item, itemInputValue, itemUrl, source } = highlightedItem;\n\n source.onActive({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n }\n } else if (event.key === 'Escape') {\n // This prevents the default browser behavior on `input[type=\"search\"]`\n // from removing the query right away because we first want to close the\n // panel.\n event.preventDefault();\n\n store.dispatch(event.key, null);\n } else if (event.key === 'Enter') {\n // No active item, so we let the browser handle the native `onSubmit` form\n // event.\n if (\n store.getState().activeItemId === null ||\n store\n .getState()\n .collections.every((collection) => collection.items.length === 0)\n ) {\n return;\n }\n\n // This prevents the `onSubmit` event to be sent because an item is\n // highlighted.\n event.preventDefault();\n\n const { item, itemInputValue, itemUrl, source } = getActiveItem(\n store.getState()\n )!;\n\n if (event.metaKey || event.ctrlKey) {\n if (itemUrl !== undefined) {\n source.onSelect({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n props.navigator.navigateNewTab({\n itemUrl,\n item,\n state: store.getState(),\n });\n }\n } else if (event.shiftKey) {\n if (itemUrl !== undefined) {\n source.onSelect({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n props.navigator.navigateNewWindow({\n itemUrl,\n item,\n state: store.getState(),\n });\n }\n } else if (event.altKey) {\n // Keep native browser behavior\n } else {\n if (itemUrl !== undefined) {\n source.onSelect({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n props.navigator.navigate({\n itemUrl,\n item,\n state: store.getState(),\n });\n\n return;\n }\n\n onInput({\n event,\n nextState: { isOpen: false },\n props,\n query: itemInputValue,\n refresh,\n store,\n ...setters,\n }).then(() => {\n source.onSelect({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n });\n }\n }\n}\n","import { AutocompleteState, BaseItem } from './types';\nimport { getActiveItem } from './utils';\n\ninterface GetCompletionProps<TItem extends BaseItem> {\n state: AutocompleteState<TItem>;\n}\n\nexport function getCompletion<TItem extends BaseItem>({\n state,\n}: GetCompletionProps<TItem>): string | null {\n if (state.isOpen === false || state.activeItemId === null) {\n return null;\n }\n\n const { itemInputValue } = getActiveItem(state)!;\n\n return itemInputValue || null;\n}\n","import { getItemsCount, invariant } from '@algolia/autocomplete-shared';\n\nimport { getCompletion } from './getCompletion';\nimport { Reducer } from './types';\nimport { getNextActiveItemId } from './utils';\n\nexport const stateReducer: Reducer = (state, action) => {\n switch (action.type) {\n case 'setActiveItemId': {\n return {\n ...state,\n activeItemId: action.payload,\n };\n }\n\n case 'setQuery': {\n return {\n ...state,\n query: action.payload,\n completion: null,\n };\n }\n\n case 'setCollections': {\n return {\n ...state,\n collections: action.payload,\n };\n }\n\n case 'setIsOpen': {\n return {\n ...state,\n isOpen: action.payload,\n };\n }\n\n case 'setStatus': {\n return {\n ...state,\n status: action.payload,\n };\n }\n\n case 'setContext': {\n return {\n ...state,\n context: {\n ...state.context,\n ...action.payload,\n },\n };\n }\n\n case 'ArrowDown': {\n const nextState = {\n ...state,\n activeItemId: getNextActiveItemId(\n 1,\n state.activeItemId,\n getItemsCount(state),\n action.props.defaultActiveItemId\n ),\n };\n\n return {\n ...nextState,\n completion: getCompletion({ state: nextState }),\n };\n }\n\n case 'ArrowUp': {\n const nextState = {\n ...state,\n activeItemId: getNextActiveItemId(\n -1,\n state.activeItemId,\n getItemsCount(state),\n action.props.defaultActiveItemId\n ),\n };\n\n return {\n ...nextState,\n completion: getCompletion({ state: nextState }),\n };\n }\n\n case 'Escape': {\n if (state.isOpen) {\n return {\n ...state,\n isOpen: false,\n completion: null,\n };\n }\n\n return {\n ...state,\n query: '',\n status: 'idle',\n collections: [],\n };\n }\n\n case 'submit': {\n return {\n ...state,\n activeItemId: null,\n isOpen: false,\n status: 'idle',\n };\n }\n\n case 'reset': {\n return {\n ...state,\n activeItemId:\n // Since we open the panel on reset when openOnFocus=true\n // we need to restore the highlighted index to the defaultActiveItemId. (DocSearch use-case)\n\n // Since we close the panel when openOnFocus=false\n // we lose track of the highlighted index. (Query-suggestions use-case)\n action.props.openOnFocus === true\n ? action.props.defaultActiveItemId\n : null,\n status: 'idle',\n query: '',\n };\n }\n\n case 'focus': {\n return {\n ...state,\n activeItemId: action.props.defaultActiveItemId,\n isOpen: action.props.openOnFocus || Boolean(state.query),\n };\n }\n\n case 'blur': {\n if (action.props.debug) {\n return state;\n }\n\n return {\n ...state,\n isOpen: false,\n activeItemId: null,\n };\n }\n\n case 'mousemove': {\n return {\n ...state,\n activeItemId: action.payload,\n };\n }\n\n case 'mouseleave': {\n return {\n ...state,\n activeItemId: action.props.defaultActiveItemId,\n };\n }\n\n default:\n invariant(\n false,\n `The reducer action ${JSON.stringify(action.type)} is not supported.`\n );\n\n return state;\n }\n};\n","import { checkOptions } from './checkOptions';\nimport { createStore } from './createStore';\nimport { getAutocompleteSetters } from './getAutocompleteSetters';\nimport { getDefaultProps } from './getDefaultProps';\nimport { getPropGetters } from './getPropGetters';\nimport { onInput } from './onInput';\nimport { stateReducer } from './stateReducer';\nimport {\n AutocompleteApi,\n AutocompleteOptions,\n BaseItem,\n AutocompleteSubscribers,\n} from './types';\n\nexport function createAutocomplete<\n TItem extends BaseItem,\n TEvent = Event,\n TMouseEvent = MouseEvent,\n TKeyboardEvent = KeyboardEvent\n>(\n options: AutocompleteOptions<TItem>\n): AutocompleteApi<TItem, TEvent, TMouseEvent, TKeyboardEvent> {\n checkOptions(options);\n\n const subscribers: AutocompleteSubscribers<TItem> = [];\n const props = getDefaultProps(options, subscribers);\n const store = createStore(stateReducer, props, onStoreStateChange);\n\n const setters = getAutocompleteSetters({ store });\n const propGetters = getPropGetters<\n TItem,\n TEvent,\n TMouseEvent,\n TKeyboardEvent\n >({ props, refresh, store, ...setters });\n\n function onStoreStateChange({ prevState, state }) {\n props.onStateChange({ prevState, state, refresh, ...setters });\n }\n\n function refresh() {\n return onInput({\n event: new Event('input'),\n nextState: { isOpen: store.getState().isOpen },\n props,\n query: store.getState().query,\n refresh,\n store,\n ...setters,\n });\n }\n\n props.plugins.forEach((plugin) =>\n plugin.subscribe?.({\n ...setters,\n refresh,\n onSelect(fn) {\n subscribers.push({ onSelect: fn });\n },\n onActive(fn) {\n subscribers.push({ onActive: fn });\n },\n })\n );\n\n return {\n refresh,\n ...propGetters,\n ...setters,\n };\n}\n","import {\n AutocompleteState,\n AutocompleteStore,\n BaseItem,\n InternalAutocompleteOptions,\n Reducer,\n} from './types';\n\ntype OnStoreStateChange<TItem extends BaseItem> = ({\n prevState,\n state,\n}: {\n prevState: AutocompleteState<TItem>;\n state: AutocompleteState<TItem>;\n}) => void;\n\nexport function createStore<TItem extends BaseItem>(\n reducer: Reducer,\n props: InternalAutocompleteOptions<TItem>,\n onStoreStateChange: OnStoreStateChange<TItem>\n): AutocompleteStore<TItem> {\n let state = props.initialState;\n\n return {\n getState() {\n return state;\n },\n dispatch(action, payload) {\n const prevState = { ...state };\n state = reducer(state, {\n type: action,\n props,\n payload,\n });\n\n onStoreStateChange({ state, prevState });\n },\n };\n}\n","import {\n AutocompleteApi,\n AutocompleteCollection,\n AutocompleteStore,\n BaseItem,\n} from './types';\nimport { flatten } from './utils';\n\ninterface GetAutocompleteSettersOptions<TItem extends BaseItem> {\n store: AutocompleteStore<TItem>;\n}\n\nexport function getAutocompleteSetters<TItem extends BaseItem>({\n store,\n}: GetAutocompleteSettersOptions<TItem>) {\n const setActiveItemId: AutocompleteApi<TItem>['setActiveItemId'] = (\n value\n ) => {\n store.dispatch('setActiveItemId', value);\n };\n\n const setQuery: AutocompleteApi<TItem>['setQuery'] = (value) => {\n store.dispatch('setQuery', value);\n };\n\n const setCollections: AutocompleteApi<TItem>['setCollections'] = (\n rawValue\n ) => {\n let baseItemId = 0;\n const value = rawValue.map<AutocompleteCollection<TItem>>((collection) => ({\n ...collection,\n // We flatten the stored items to support calling `getAlgoliaHits`\n // from the source itself.\n items: flatten(collection.items as any).map((item: any) => ({\n ...item,\n __autocomplete_id: baseItemId++,\n })),\n }));\n\n store.dispatch('setCollections', value);\n };\n\n const setIsOpen: AutocompleteApi<TItem>['setIsOpen'] = (value) => {\n store.dispatch('setIsOpen', value);\n };\n\n const setStatus: AutocompleteApi<TItem>['setStatus'] = (value) => {\n store.dispatch('setStatus', value);\n };\n\n const setContext: AutocompleteApi<TItem>['setContext'] = (value) => {\n store.dispatch('setContext', value);\n };\n\n return {\n setActiveItemId,\n setQuery,\n setCollections,\n setIsOpen,\n setStatus,\n setContext,\n };\n}\n","export const version = '1.0.0-alpha.40';\n"],"names":["getItemsCount","state","collections","length","reduce","sum","collection","items","flatten","values","a","b","concat","autocompleteId","getNextActiveItemId","moveAmount","baseIndex","itemCount","defaultActiveItemId","numericIndex","noop","getActiveItem","collectionIndex","map","acc","collectionsCount","index","nextValue","push","current","activeItemId","getCollectionFromActiveItemId","item","isOffsetFound","counter","previousItemsOffset","currentCollection","getRelativeActiveItemId","source","itemInputValue","getItemInputValue","itemUrl","getItemUrl","isOrContainsNode","parent","child","contains","getDefaultProps","props","pluginSubscribers","environment","window","plugins","debug","openOnFocus","placeholder","autoFocus","stallThreshold","shouldPanelShow","id","initialState","query","completion","isOpen","status","context","onStateChange","params","forEach","x","_x$onStateChange","onSubmit","_x$onSubmit","onReset","_x$onReset","getSources","Promise","all","plugin","filter","Boolean","resolve","then","sources","Array","isArray","JSON","stringify","maybeSource","normalizedSource","onSelect","setIsOpen","onActive","getNormalizedSources","nested","_x$onSelect","_x$onActive","navigator","navigate","location","assign","navigateNewTab","windowReference","open","focus","navigateNewWindow","lastStalledId","onInput","event","nextState","refresh","store","setters","getState","clearTimeout","setCollections","setQuery","setActiveItemId","setStatus","setTimeout","getItems","highlightedItem","finally","getPropGetters","getEnvironmentProps","providedProps","inputElement","formElement","panelElement","onTouchStart","target","some","contextNode","document","activeElement","dispatch","onTouchMove","blur","getRootProps","rest","role","undefined","getFormProps","action","noValidate","preventDefault","getLabelProps","htmlFor","getInputProps","onFocus","isTouchDevice","maxLength","activeItem","value","autoComplete","autoCorrect","autoCapitalize","enterKeyHint","spellCheck","type","onChange","currentTarget","slice","onKeyDown","key","nodeItem","getElementById","scrollIntoViewIfNeeded","scrollIntoView","every","metaKey","ctrlKey","shiftKey","altKey","onBlur","onClick","getPanelProps","onMouseDown","onMouseLeave","getListProps","getItemProps","__autocomplete_id","onMouseMove","getCompletion","stateReducer","payload","options","subscribers","reducer","onStoreStateChange","prevState","createStore","rawValue","baseItemId","setContext","getAutocompleteSetters","propGetters","Event","subscribe","_plugin$subscribe","fn"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.production.js","sources":["../../../autocomplete-shared/dist/esm/getItemsCount.js","../../src/utils/flatten.ts","../../src/utils/generateAutocompleteId.ts","../../src/utils/getNextActiveItemId.ts","../../src/utils/noop.ts","../../src/utils/getActiveItem.ts","../../src/utils/isOrContainsNode.ts","../../src/getDefaultProps.ts","../../src/utils/getNormalizedSources.ts","../../src/onInput.ts","../../src/getPropGetters.ts","../../src/onKeyDown.ts","../../src/getCompletion.ts","../../src/stateReducer.ts","../../src/createAutocomplete.ts","../../src/createStore.ts","../../src/getAutocompleteSetters.ts","../../src/version.ts"],"sourcesContent":["export function getItemsCount(state) {\n if (state.collections.length === 0) {\n return 0;\n }\n\n return state.collections.reduce(function (sum, collection) {\n return sum + collection.items.length;\n }, 0);\n}","export function flatten<TType>(values: Array<TType | TType[]>): TType[] {\n return values.reduce<TType[]>((a, b) => {\n return a.concat(b);\n }, []);\n}\n","let autocompleteId = 0;\n\nexport function generateAutocompleteId() {\n return `autocomplete-${autocompleteId++}`;\n}\n","/**\n * Returns the next active item ID from the current state.\n *\n * We allow circular keyboard navigation from the base index.\n * The base index can either be `null` (nothing is highlighted) or `0`\n * (the first item is highlighted).\n * The base index is allowed to get assigned `null` only if\n * `props.defaultActiveItemId` is `null`. This pattern allows to \"stop\"\n * by the actual query before navigating to other suggestions as seen on\n * Google or Amazon.\n *\n * @param moveAmount The offset to increment (or decrement) the last index\n * @param baseIndex The current index to compute the next index from\n * @param itemCount The number of items\n * @param defaultActiveItemId The default active index to fallback to\n */\nexport function getNextActiveItemId(\n moveAmount: number,\n baseIndex: number | null,\n itemCount: number,\n defaultActiveItemId: number | null\n): number | null {\n if (\n moveAmount < 0 &&\n (baseIndex === null || (defaultActiveItemId !== null && baseIndex === 0))\n ) {\n return itemCount + moveAmount;\n }\n\n const numericIndex = (baseIndex === null ? -1 : baseIndex) + moveAmount;\n\n if (numericIndex <= -1 || numericIndex >= itemCount) {\n return defaultActiveItemId === null ? null : 0;\n }\n\n return numericIndex;\n}\n","export const noop = () => {};\n","import { AutocompleteCollection, AutocompleteState, BaseItem } from '../types';\n\n// We don't have access to the autocomplete source when we call `onKeyDown`\n// or `onClick` because those are native browser events.\n// However, we can get the source from the suggestion index.\nfunction getCollectionFromActiveItemId<TItem extends BaseItem>(\n state: AutocompleteState<TItem>\n): AutocompleteCollection<TItem> | undefined {\n // Given 3 sources with respectively 1, 2 and 3 suggestions: [1, 2, 3]\n // We want to get the accumulated counts:\n // [1, 1 + 2, 1 + 2 + 3] = [1, 3, 3 + 3] = [1, 3, 6]\n const accumulatedCollectionsCount = state.collections\n .map((collections) => collections.items.length)\n .reduce<number[]>((acc, collectionsCount, index) => {\n const previousValue = acc[index - 1] || 0;\n const nextValue = previousValue + collectionsCount;\n\n acc.push(nextValue);\n\n return acc;\n }, []);\n\n // Based on the accumulated counts, we can infer the index of the suggestion.\n const collectionIndex = accumulatedCollectionsCount.reduce((acc, current) => {\n if (current <= state.activeItemId!) {\n return acc + 1;\n }\n\n return acc;\n }, 0);\n\n return state.collections[collectionIndex];\n}\n\n/**\n * Gets the highlighted index relative to a suggestion object (not the absolute\n * highlighted index).\n *\n * Example:\n * [['a', 'b'], ['c', 'd', 'e'], ['f']]\n * ↑\n * (absolute: 3, relative: 1)\n */\nfunction getRelativeActiveItemId<TItem extends BaseItem>({\n state,\n collection,\n}: {\n state: AutocompleteState<TItem>;\n collection: AutocompleteCollection<TItem>;\n}): number {\n let isOffsetFound = false;\n let counter = 0;\n let previousItemsOffset = 0;\n\n while (isOffsetFound === false) {\n const currentCollection = state.collections[counter];\n\n if (currentCollection === collection) {\n isOffsetFound = true;\n break;\n }\n\n previousItemsOffset += currentCollection.items.length;\n\n counter++;\n }\n\n return state.activeItemId! - previousItemsOffset;\n}\n\nexport function getActiveItem<TItem extends BaseItem>(\n state: AutocompleteState<TItem>\n) {\n const collection = getCollectionFromActiveItemId(state);\n\n if (!collection) {\n return null;\n }\n\n const item = collection.items[getRelativeActiveItemId({ state, collection })];\n const source = collection.source;\n const itemInputValue = source.getItemInputValue({ item, state });\n const itemUrl = source.getItemUrl({ item, state });\n\n return {\n item,\n itemInputValue,\n itemUrl,\n source,\n };\n}\n","export function isOrContainsNode(parent: Node, child: Node) {\n return parent === child || parent.contains(child);\n}\n","import { getItemsCount } from '@algolia/autocomplete-shared';\n\nimport {\n AutocompleteEnvironment,\n AutocompleteOptions,\n AutocompleteSubscribers,\n BaseItem,\n InternalAutocompleteOptions,\n} from './types';\nimport { generateAutocompleteId, getNormalizedSources, flatten } from './utils';\n\nexport function getDefaultProps<TItem extends BaseItem>(\n props: AutocompleteOptions<TItem>,\n pluginSubscribers: AutocompleteSubscribers<TItem>\n): InternalAutocompleteOptions<TItem> {\n const environment: AutocompleteEnvironment = (typeof window !== 'undefined'\n ? window\n : {}) as typeof window;\n const plugins = props.plugins || [];\n\n return {\n debug: false,\n openOnFocus: false,\n placeholder: '',\n autoFocus: false,\n defaultActiveItemId: null,\n stallThreshold: 300,\n environment,\n shouldPanelOpen: ({ state }) => getItemsCount(state) > 0,\n ...props,\n // Since `generateAutocompleteId` triggers a side effect (it increments\n // and internal counter), we don't want to execute it if unnecessary.\n id: props.id ?? generateAutocompleteId(),\n plugins,\n // The following props need to be deeply defaulted.\n initialState: {\n activeItemId: null,\n query: '',\n completion: null,\n collections: [],\n isOpen: false,\n status: 'idle',\n context: {},\n ...props.initialState,\n },\n onStateChange(params) {\n props.onStateChange?.(params);\n plugins.forEach((x) => x.onStateChange?.(params));\n },\n onSubmit(params) {\n props.onSubmit?.(params);\n plugins.forEach((x) => x.onSubmit?.(params));\n },\n onReset(params) {\n props.onReset?.(params);\n plugins.forEach((x) => x.onReset?.(params));\n },\n getSources(params) {\n return Promise.all(\n [...plugins.map((plugin) => plugin.getSources), props.getSources]\n .filter(Boolean)\n .map((getSources) => getNormalizedSources(getSources!, params))\n )\n .then((nested) => flatten(nested))\n .then((sources) =>\n sources.map((source) => ({\n ...source,\n onSelect(params) {\n source.onSelect(params);\n pluginSubscribers.forEach((x) => x.onSelect?.(params));\n },\n onActive(params) {\n source.onActive(params);\n pluginSubscribers.forEach((x) => x.onActive?.(params));\n },\n }))\n );\n },\n navigator: {\n navigate({ itemUrl }) {\n environment.location.assign(itemUrl);\n },\n navigateNewTab({ itemUrl }) {\n const windowReference = environment.open(itemUrl, '_blank', 'noopener');\n windowReference?.focus();\n },\n navigateNewWindow({ itemUrl }) {\n environment.open(itemUrl, '_blank', 'noopener');\n },\n ...props.navigator,\n },\n };\n}\n","import { invariant } from '@algolia/autocomplete-shared';\n\nimport {\n AutocompleteSource,\n BaseItem,\n GetSources,\n GetSourcesParams,\n InternalAutocompleteSource,\n InternalGetSources,\n} from '../types';\n\nimport { noop } from './noop';\n\nexport function getNormalizedSources<TItem extends BaseItem>(\n getSources: GetSources<TItem>,\n params: GetSourcesParams<TItem>\n): ReturnType<InternalGetSources<TItem>> {\n return Promise.resolve(getSources(params)).then((sources) => {\n invariant(\n Array.isArray(sources),\n `The \\`getSources\\` function must return an array of sources but returned type ${JSON.stringify(\n typeof sources\n )}:\\n\\n${JSON.stringify(sources, null, 2)}`\n );\n\n return Promise.all(\n sources\n // We allow `undefined` and `false` sources to allow users to use\n // `Boolean(query) && source` (=> `false`).\n // We need to remove these values at this point.\n .filter((maybeSource: any): maybeSource is AutocompleteSource<TItem> =>\n Boolean(maybeSource)\n )\n .map((source) => {\n invariant(\n typeof source.sourceId === 'string',\n 'A source must provide a `sourceId` string.'\n );\n\n const normalizedSource: InternalAutocompleteSource<TItem> = {\n getItemInputValue({ state }) {\n return state.query;\n },\n getItemUrl() {\n return undefined;\n },\n onSelect({ setIsOpen }) {\n setIsOpen(false);\n },\n onActive: noop,\n ...source,\n };\n\n return Promise.resolve(normalizedSource);\n })\n );\n });\n}\n","import { invariant } from '@algolia/autocomplete-shared';\n\nimport {\n AutocompleteScopeApi,\n AutocompleteState,\n AutocompleteStore,\n BaseItem,\n InternalAutocompleteOptions,\n} from './types';\nimport { getActiveItem } from './utils';\n\nlet lastStalledId: number | null = null;\n\ninterface OnInputParams<TItem extends BaseItem>\n extends AutocompleteScopeApi<TItem> {\n event: any;\n /**\n * The next partial state to apply after the function is called.\n *\n * This is useful when we call `onInput` in a different scenario than an\n * actual input. For example, we use `onInput` when we click on an item,\n * but we want to close the panel in that case.\n */\n nextState?: Partial<AutocompleteState<TItem>>;\n props: InternalAutocompleteOptions<TItem>;\n query: string;\n store: AutocompleteStore<TItem>;\n}\n\nexport function onInput<TItem extends BaseItem>({\n event,\n nextState = {},\n props,\n query,\n refresh,\n store,\n ...setters\n}: OnInputParams<TItem>): Promise<void> {\n if (lastStalledId) {\n props.environment.clearTimeout(lastStalledId);\n }\n\n const {\n setCollections,\n setIsOpen,\n setQuery,\n setActiveItemId,\n setStatus,\n } = setters;\n\n setQuery(query);\n setActiveItemId(props.defaultActiveItemId);\n\n if (!query && props.openOnFocus === false) {\n setStatus('idle');\n setCollections(\n store.getState().collections.map((collection) => ({\n ...collection,\n items: [],\n }))\n );\n setIsOpen(\n nextState.isOpen ?? props.shouldPanelOpen({ state: store.getState() })\n );\n\n return Promise.resolve();\n }\n\n setStatus('loading');\n\n lastStalledId = props.environment.setTimeout(() => {\n setStatus('stalled');\n }, props.stallThreshold);\n\n return props\n .getSources({\n query,\n refresh,\n state: store.getState(),\n ...setters,\n })\n .then((sources) => {\n setStatus('loading');\n\n // @TODO: convert `Promise.all` to fetching strategy.\n return Promise.all(\n sources.map((source) => {\n return Promise.resolve(\n source.getItems({\n query,\n refresh,\n state: store.getState(),\n ...setters,\n })\n ).then((items) => {\n invariant(\n Array.isArray(items),\n `The \\`getItems\\` function must return an array of items but returned type ${JSON.stringify(\n typeof items\n )}:\\n\\n${JSON.stringify(items, null, 2)}`\n );\n\n return { source, items };\n });\n })\n )\n .then((collections) => {\n setStatus('idle');\n setCollections(collections as any);\n const isPanelOpen = props.shouldPanelOpen({\n state: store.getState(),\n });\n setIsOpen(\n nextState.isOpen ??\n ((props.openOnFocus && !query && isPanelOpen) || isPanelOpen)\n );\n\n const highlightedItem = getActiveItem(store.getState());\n\n if (store.getState().activeItemId !== null && highlightedItem) {\n const { item, itemInputValue, itemUrl, source } = highlightedItem;\n\n source.onActive({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n }\n })\n .finally(() => {\n if (lastStalledId) {\n props.environment.clearTimeout(lastStalledId);\n }\n });\n });\n}\n","import { onInput } from './onInput';\nimport { onKeyDown } from './onKeyDown';\nimport {\n AutocompleteScopeApi,\n AutocompleteStore,\n BaseItem,\n GetEnvironmentProps,\n GetFormProps,\n GetInputProps,\n GetItemProps,\n GetLabelProps,\n GetListProps,\n GetPanelProps,\n GetRootProps,\n InternalAutocompleteOptions,\n} from './types';\nimport { getActiveItem, isOrContainsNode } from './utils';\n\ninterface GetPropGettersOptions<TItem extends BaseItem>\n extends AutocompleteScopeApi<TItem> {\n store: AutocompleteStore<TItem>;\n props: InternalAutocompleteOptions<TItem>;\n}\n\nexport function getPropGetters<\n TItem extends BaseItem,\n TEvent,\n TMouseEvent,\n TKeyboardEvent\n>({ props, refresh, store, ...setters }: GetPropGettersOptions<TItem>) {\n const getEnvironmentProps: GetEnvironmentProps = (providedProps) => {\n const { inputElement, formElement, panelElement, ...rest } = providedProps;\n\n return {\n // On touch devices, we do not rely on the native `blur` event of the\n // input to close the panel, but rather on a custom `touchstart` event\n // outside of the autocomplete elements.\n // This ensures a working experience on mobile because we blur the input\n // on touch devices when the user starts scrolling (`touchmove`).\n onTouchStart(event) {\n if (\n store.getState().isOpen === false ||\n event.target === inputElement\n ) {\n return;\n }\n\n // @TODO: support cases where there are multiple Autocomplete instances.\n // Right now, a second instance makes this computation return false.\n const isTargetWithinAutocomplete = [formElement, panelElement].some(\n (contextNode) => {\n return (\n isOrContainsNode(contextNode, event.target as Node) ||\n isOrContainsNode(\n contextNode,\n props.environment.document.activeElement!\n )\n );\n }\n );\n\n if (isTargetWithinAutocomplete === false) {\n store.dispatch('blur', null);\n }\n },\n // When scrolling on touch devices (mobiles, tablets, etc.), we want to\n // mimic the native platform behavior where the input is blurred to\n // hide the virtual keyboard. This gives more vertical space to\n // discover all the suggestions showing up in the panel.\n onTouchMove(event: TouchEvent) {\n if (\n store.getState().isOpen === false ||\n inputElement !== props.environment.document.activeElement ||\n event.target === inputElement\n ) {\n return;\n }\n\n inputElement.blur();\n },\n ...rest,\n };\n };\n\n const getRootProps: GetRootProps = (rest) => {\n return {\n role: 'combobox',\n 'aria-expanded': store.getState().isOpen,\n 'aria-haspopup': 'listbox',\n 'aria-owns': store.getState().isOpen ? `${props.id}-list` : undefined,\n 'aria-labelledby': `${props.id}-label`,\n ...rest,\n };\n };\n\n const getFormProps: GetFormProps<TEvent> = (providedProps) => {\n const { inputElement, ...rest } = providedProps;\n\n return {\n action: '',\n noValidate: true,\n role: 'search',\n onSubmit: (event) => {\n ((event as unknown) as Event).preventDefault();\n\n props.onSubmit({\n event,\n refresh,\n state: store.getState(),\n ...setters,\n });\n\n store.dispatch('submit', null);\n providedProps.inputElement?.blur();\n },\n onReset: (event) => {\n ((event as unknown) as Event).preventDefault();\n\n props.onReset({\n event,\n refresh,\n state: store.getState(),\n ...setters,\n });\n\n store.dispatch('reset', null);\n providedProps.inputElement?.focus();\n },\n ...rest,\n };\n };\n\n const getInputProps: GetInputProps<TEvent, TMouseEvent, TKeyboardEvent> = (\n providedProps\n ) => {\n function onFocus(event: TEvent) {\n // We want to trigger a query when `openOnFocus` is true\n // because the panel should open with the current query.\n if (props.openOnFocus || Boolean(store.getState().query)) {\n onInput({\n event,\n props,\n query: store.getState().completion || store.getState().query,\n refresh,\n store,\n ...setters,\n });\n }\n\n store.dispatch('focus', null);\n }\n\n const isTouchDevice = 'ontouchstart' in props.environment;\n const { inputElement, maxLength = 512, ...rest } = providedProps || {};\n const activeItem = getActiveItem(store.getState());\n\n return {\n 'aria-autocomplete': 'both',\n 'aria-activedescendant':\n store.getState().isOpen && store.getState().activeItemId !== null\n ? `${props.id}-item-${store.getState().activeItemId}`\n : undefined,\n 'aria-controls': store.getState().isOpen ? `${props.id}-list` : undefined,\n 'aria-labelledby': `${props.id}-label`,\n value: store.getState().completion || store.getState().query,\n id: `${props.id}-input`,\n autoComplete: 'off',\n autoCorrect: 'off',\n autoCapitalize: 'off',\n enterKeyHint: activeItem?.itemUrl ? 'go' : 'search',\n spellCheck: 'false',\n autoFocus: props.autoFocus,\n placeholder: props.placeholder,\n maxLength,\n type: 'search',\n onChange: (event) => {\n onInput({\n event,\n props,\n query: (((event as unknown) as Event)\n .currentTarget as HTMLInputElement).value.slice(0, maxLength),\n refresh,\n store,\n ...setters,\n });\n },\n onKeyDown: (event) => {\n onKeyDown({\n event: (event as unknown) as KeyboardEvent,\n props,\n refresh,\n store,\n ...setters,\n });\n },\n onFocus,\n onBlur: () => {\n // We do rely on the `blur` event on touch devices.\n // See explanation in `onTouchStart`.\n if (!isTouchDevice) {\n store.dispatch('blur', null);\n }\n },\n onClick: (event) => {\n // When the panel is closed and you click on the input while\n // the input is focused, the `onFocus` event is not triggered\n // (default browser behavior).\n // In an autocomplete context, it makes sense to open the panel in this\n // case.\n // We mimic this event by catching the `onClick` event which\n // triggers the `onFocus` for the panel to open.\n if (\n providedProps.inputElement ===\n props.environment.document.activeElement &&\n !store.getState().isOpen\n ) {\n onFocus((event as unknown) as TEvent);\n }\n },\n ...rest,\n };\n };\n\n const getLabelProps: GetLabelProps = (rest) => {\n return {\n htmlFor: `${props.id}-input`,\n id: `${props.id}-label`,\n ...rest,\n };\n };\n\n const getListProps: GetListProps = (rest) => {\n return {\n role: 'listbox',\n 'aria-labelledby': `${props.id}-label`,\n id: `${props.id}-list`,\n ...rest,\n };\n };\n\n const getPanelProps: GetPanelProps<TMouseEvent> = (rest) => {\n return {\n onMouseDown(event) {\n // Prevents the `activeElement` from being changed to the panel so\n // that the blur event is not triggered, otherwise it closes the\n // panel.\n ((event as unknown) as MouseEvent).preventDefault();\n },\n onMouseLeave() {\n store.dispatch('mouseleave', null);\n },\n ...rest,\n };\n };\n\n const getItemProps: GetItemProps<any, TMouseEvent> = (providedProps) => {\n const { item, source, ...rest } = providedProps;\n\n return {\n id: `${props.id}-item-${item.__autocomplete_id}`,\n role: 'option',\n 'aria-selected': store.getState().activeItemId === item.__autocomplete_id,\n onMouseMove(event) {\n if (item.__autocomplete_id === store.getState().activeItemId) {\n return;\n }\n\n store.dispatch('mousemove', item.__autocomplete_id);\n\n const activeItem = getActiveItem(store.getState());\n\n if (store.getState().activeItemId !== null && activeItem) {\n const { item, itemInputValue, itemUrl, source } = activeItem;\n\n source.onActive({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n }\n },\n onMouseDown(event) {\n // Prevents the `activeElement` from being changed to the item so it\n // can remain with the current `activeElement`.\n ((event as unknown) as MouseEvent).preventDefault();\n },\n onClick(event) {\n const itemInputValue = source.getItemInputValue({\n item,\n state: store.getState(),\n });\n const itemUrl = source.getItemUrl({\n item,\n state: store.getState(),\n });\n\n // If `getItemUrl` is provided, it means that the suggestion\n // is a link, not plain text that aims at updating the query.\n // We can therefore skip the state change because it will update\n // the `activeItemId`, resulting in a UI flash, especially\n // noticeable on mobile.\n const runPreCommand = itemUrl\n ? Promise.resolve()\n : onInput({\n event,\n nextState: { isOpen: false },\n props,\n query: itemInputValue,\n refresh,\n store,\n ...setters,\n });\n\n runPreCommand.then(() => {\n source.onSelect({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n });\n },\n ...rest,\n };\n };\n\n return {\n getEnvironmentProps,\n getRootProps,\n getFormProps,\n getLabelProps,\n getInputProps,\n getPanelProps,\n getListProps,\n getItemProps,\n };\n}\n","import { onInput } from './onInput';\nimport {\n AutocompleteScopeApi,\n AutocompleteStore,\n BaseItem,\n InternalAutocompleteOptions,\n} from './types';\nimport { getActiveItem } from './utils';\n\ninterface OnKeyDownOptions<TItem extends BaseItem>\n extends AutocompleteScopeApi<TItem> {\n event: KeyboardEvent;\n props: InternalAutocompleteOptions<TItem>;\n store: AutocompleteStore<TItem>;\n}\n\nexport function onKeyDown<TItem extends BaseItem>({\n event,\n props,\n refresh,\n store,\n ...setters\n}: OnKeyDownOptions<TItem>): void {\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\n // Default browser behavior changes the caret placement on ArrowUp and\n // Arrow down.\n event.preventDefault();\n\n store.dispatch(event.key, null);\n\n const nodeItem = props.environment.document.getElementById(\n `${props.id}-item-${store.getState().activeItemId}`\n );\n\n if (nodeItem) {\n if ((nodeItem as any).scrollIntoViewIfNeeded) {\n (nodeItem as any).scrollIntoViewIfNeeded(false);\n } else {\n nodeItem.scrollIntoView(false);\n }\n }\n\n const highlightedItem = getActiveItem(store.getState());\n\n if (store.getState().activeItemId !== null && highlightedItem) {\n const { item, itemInputValue, itemUrl, source } = highlightedItem;\n\n source.onActive({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n }\n } else if (event.key === 'Escape') {\n // This prevents the default browser behavior on `input[type=\"search\"]`\n // from removing the query right away because we first want to close the\n // panel.\n event.preventDefault();\n\n store.dispatch(event.key, null);\n } else if (event.key === 'Enter') {\n // No active item, so we let the browser handle the native `onSubmit` form\n // event.\n if (\n store.getState().activeItemId === null ||\n store\n .getState()\n .collections.every((collection) => collection.items.length === 0)\n ) {\n return;\n }\n\n // This prevents the `onSubmit` event to be sent because an item is\n // highlighted.\n event.preventDefault();\n\n const { item, itemInputValue, itemUrl, source } = getActiveItem(\n store.getState()\n )!;\n\n if (event.metaKey || event.ctrlKey) {\n if (itemUrl !== undefined) {\n source.onSelect({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n props.navigator.navigateNewTab({\n itemUrl,\n item,\n state: store.getState(),\n });\n }\n } else if (event.shiftKey) {\n if (itemUrl !== undefined) {\n source.onSelect({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n props.navigator.navigateNewWindow({\n itemUrl,\n item,\n state: store.getState(),\n });\n }\n } else if (event.altKey) {\n // Keep native browser behavior\n } else {\n if (itemUrl !== undefined) {\n source.onSelect({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n props.navigator.navigate({\n itemUrl,\n item,\n state: store.getState(),\n });\n\n return;\n }\n\n onInput({\n event,\n nextState: { isOpen: false },\n props,\n query: itemInputValue,\n refresh,\n store,\n ...setters,\n }).then(() => {\n source.onSelect({\n event,\n item,\n itemInputValue,\n itemUrl,\n refresh,\n source,\n state: store.getState(),\n ...setters,\n });\n });\n }\n }\n}\n","import { AutocompleteState, BaseItem } from './types';\nimport { getActiveItem } from './utils';\n\ninterface GetCompletionProps<TItem extends BaseItem> {\n state: AutocompleteState<TItem>;\n}\n\nexport function getCompletion<TItem extends BaseItem>({\n state,\n}: GetCompletionProps<TItem>): string | null {\n if (state.isOpen === false || state.activeItemId === null) {\n return null;\n }\n\n const { itemInputValue } = getActiveItem(state)!;\n\n return itemInputValue || null;\n}\n","import { getItemsCount, invariant } from '@algolia/autocomplete-shared';\n\nimport { getCompletion } from './getCompletion';\nimport { Reducer } from './types';\nimport { getNextActiveItemId } from './utils';\n\nexport const stateReducer: Reducer = (state, action) => {\n switch (action.type) {\n case 'setActiveItemId': {\n return {\n ...state,\n activeItemId: action.payload,\n };\n }\n\n case 'setQuery': {\n return {\n ...state,\n query: action.payload,\n completion: null,\n };\n }\n\n case 'setCollections': {\n return {\n ...state,\n collections: action.payload,\n };\n }\n\n case 'setIsOpen': {\n return {\n ...state,\n isOpen: action.payload,\n };\n }\n\n case 'setStatus': {\n return {\n ...state,\n status: action.payload,\n };\n }\n\n case 'setContext': {\n return {\n ...state,\n context: {\n ...state.context,\n ...action.payload,\n },\n };\n }\n\n case 'ArrowDown': {\n const nextState = {\n ...state,\n activeItemId: getNextActiveItemId(\n 1,\n state.activeItemId,\n getItemsCount(state),\n action.props.defaultActiveItemId\n ),\n };\n\n return {\n ...nextState,\n completion: getCompletion({ state: nextState }),\n };\n }\n\n case 'ArrowUp': {\n const nextState = {\n ...state,\n activeItemId: getNextActiveItemId(\n -1,\n state.activeItemId,\n getItemsCount(state),\n action.props.defaultActiveItemId\n ),\n };\n\n return {\n ...nextState,\n completion: getCompletion({ state: nextState }),\n };\n }\n\n case 'Escape': {\n if (state.isOpen) {\n return {\n ...state,\n isOpen: false,\n completion: null,\n };\n }\n\n return {\n ...state,\n query: '',\n status: 'idle',\n collections: [],\n };\n }\n\n case 'submit': {\n return {\n ...state,\n activeItemId: null,\n isOpen: false,\n status: 'idle',\n };\n }\n\n case 'reset': {\n return {\n ...state,\n activeItemId:\n // Since we open the panel on reset when openOnFocus=true\n // we need to restore the highlighted index to the defaultActiveItemId. (DocSearch use-case)\n\n // Since we close the panel when openOnFocus=false\n // we lose track of the highlighted index. (Query-suggestions use-case)\n action.props.openOnFocus === true\n ? action.props.defaultActiveItemId\n : null,\n status: 'idle',\n query: '',\n };\n }\n\n case 'focus': {\n return {\n ...state,\n activeItemId: action.props.defaultActiveItemId,\n isOpen:\n (action.props.openOnFocus || Boolean(state.query)) &&\n action.props.shouldPanelOpen({ state }),\n };\n }\n\n case 'blur': {\n if (action.props.debug) {\n return state;\n }\n\n return {\n ...state,\n isOpen: false,\n activeItemId: null,\n };\n }\n\n case 'mousemove': {\n return {\n ...state,\n activeItemId: action.payload,\n };\n }\n\n case 'mouseleave': {\n return {\n ...state,\n activeItemId: action.props.defaultActiveItemId,\n };\n }\n\n default:\n invariant(\n false,\n `The reducer action ${JSON.stringify(action.type)} is not supported.`\n );\n\n return state;\n }\n};\n","import { checkOptions } from './checkOptions';\nimport { createStore } from './createStore';\nimport { getAutocompleteSetters } from './getAutocompleteSetters';\nimport { getDefaultProps } from './getDefaultProps';\nimport { getPropGetters } from './getPropGetters';\nimport { onInput } from './onInput';\nimport { stateReducer } from './stateReducer';\nimport {\n AutocompleteApi,\n AutocompleteOptions,\n BaseItem,\n AutocompleteSubscribers,\n} from './types';\n\nexport function createAutocomplete<\n TItem extends BaseItem,\n TEvent = Event,\n TMouseEvent = MouseEvent,\n TKeyboardEvent = KeyboardEvent\n>(\n options: AutocompleteOptions<TItem>\n): AutocompleteApi<TItem, TEvent, TMouseEvent, TKeyboardEvent> {\n checkOptions(options);\n\n const subscribers: AutocompleteSubscribers<TItem> = [];\n const props = getDefaultProps(options, subscribers);\n const store = createStore(stateReducer, props, onStoreStateChange);\n\n const setters = getAutocompleteSetters({ store });\n const propGetters = getPropGetters<\n TItem,\n TEvent,\n TMouseEvent,\n TKeyboardEvent\n >({ props, refresh, store, ...setters });\n\n function onStoreStateChange({ prevState, state }) {\n props.onStateChange({ prevState, state, refresh, ...setters });\n }\n\n function refresh() {\n return onInput({\n event: new Event('input'),\n nextState: { isOpen: store.getState().isOpen },\n props,\n query: store.getState().query,\n refresh,\n store,\n ...setters,\n });\n }\n\n props.plugins.forEach((plugin) =>\n plugin.subscribe?.({\n ...setters,\n refresh,\n onSelect(fn) {\n subscribers.push({ onSelect: fn });\n },\n onActive(fn) {\n subscribers.push({ onActive: fn });\n },\n })\n );\n\n return {\n refresh,\n ...propGetters,\n ...setters,\n };\n}\n","import {\n AutocompleteState,\n AutocompleteStore,\n BaseItem,\n InternalAutocompleteOptions,\n Reducer,\n} from './types';\n\ntype OnStoreStateChange<TItem extends BaseItem> = ({\n prevState,\n state,\n}: {\n prevState: AutocompleteState<TItem>;\n state: AutocompleteState<TItem>;\n}) => void;\n\nexport function createStore<TItem extends BaseItem>(\n reducer: Reducer,\n props: InternalAutocompleteOptions<TItem>,\n onStoreStateChange: OnStoreStateChange<TItem>\n): AutocompleteStore<TItem> {\n let state = props.initialState;\n\n return {\n getState() {\n return state;\n },\n dispatch(action, payload) {\n const prevState = { ...state };\n state = reducer(state, {\n type: action,\n props,\n payload,\n });\n\n onStoreStateChange({ state, prevState });\n },\n };\n}\n","import {\n AutocompleteApi,\n AutocompleteCollection,\n AutocompleteStore,\n BaseItem,\n} from './types';\nimport { flatten } from './utils';\n\ninterface GetAutocompleteSettersOptions<TItem extends BaseItem> {\n store: AutocompleteStore<TItem>;\n}\n\nexport function getAutocompleteSetters<TItem extends BaseItem>({\n store,\n}: GetAutocompleteSettersOptions<TItem>) {\n const setActiveItemId: AutocompleteApi<TItem>['setActiveItemId'] = (\n value\n ) => {\n store.dispatch('setActiveItemId', value);\n };\n\n const setQuery: AutocompleteApi<TItem>['setQuery'] = (value) => {\n store.dispatch('setQuery', value);\n };\n\n const setCollections: AutocompleteApi<TItem>['setCollections'] = (\n rawValue\n ) => {\n let baseItemId = 0;\n const value = rawValue.map<AutocompleteCollection<TItem>>((collection) => ({\n ...collection,\n // We flatten the stored items to support calling `getAlgoliaHits`\n // from the source itself.\n items: flatten(collection.items as any).map((item: any) => ({\n ...item,\n __autocomplete_id: baseItemId++,\n })),\n }));\n\n store.dispatch('setCollections', value);\n };\n\n const setIsOpen: AutocompleteApi<TItem>['setIsOpen'] = (value) => {\n store.dispatch('setIsOpen', value);\n };\n\n const setStatus: AutocompleteApi<TItem>['setStatus'] = (value) => {\n store.dispatch('setStatus', value);\n };\n\n const setContext: AutocompleteApi<TItem>['setContext'] = (value) => {\n store.dispatch('setContext', value);\n };\n\n return {\n setActiveItemId,\n setQuery,\n setCollections,\n setIsOpen,\n setStatus,\n setContext,\n };\n}\n","export const version = '1.0.0-alpha.44';\n"],"names":["getItemsCount","state","collections","length","reduce","sum","collection","items","flatten","values","a","b","concat","autocompleteId","getNextActiveItemId","moveAmount","baseIndex","itemCount","defaultActiveItemId","numericIndex","noop","getActiveItem","collectionIndex","map","acc","collectionsCount","index","nextValue","push","current","activeItemId","getCollectionFromActiveItemId","item","isOffsetFound","counter","previousItemsOffset","currentCollection","getRelativeActiveItemId","source","itemInputValue","getItemInputValue","itemUrl","getItemUrl","isOrContainsNode","parent","child","contains","getDefaultProps","props","pluginSubscribers","environment","window","plugins","debug","openOnFocus","placeholder","autoFocus","stallThreshold","shouldPanelOpen","id","initialState","query","completion","isOpen","status","context","onStateChange","params","forEach","x","_x$onStateChange","onSubmit","_x$onSubmit","onReset","_x$onReset","getSources","Promise","all","plugin","filter","Boolean","resolve","then","sources","Array","isArray","JSON","stringify","maybeSource","sourceId","normalizedSource","onSelect","setIsOpen","onActive","getNormalizedSources","nested","_x$onSelect","_x$onActive","navigator","navigate","location","assign","navigateNewTab","windowReference","open","focus","navigateNewWindow","lastStalledId","onInput","event","nextState","refresh","store","setters","clearTimeout","setCollections","setQuery","setActiveItemId","setStatus","setTimeout","getState","getItems","isPanelOpen","highlightedItem","finally","getPropGetters","getEnvironmentProps","providedProps","inputElement","formElement","panelElement","onTouchStart","target","some","contextNode","document","activeElement","dispatch","onTouchMove","blur","getRootProps","rest","role","undefined","getFormProps","action","noValidate","preventDefault","getLabelProps","htmlFor","getInputProps","onFocus","isTouchDevice","maxLength","activeItem","value","autoComplete","autoCorrect","autoCapitalize","enterKeyHint","spellCheck","type","onChange","currentTarget","slice","onKeyDown","key","nodeItem","getElementById","scrollIntoViewIfNeeded","scrollIntoView","every","metaKey","ctrlKey","shiftKey","altKey","onBlur","onClick","getPanelProps","onMouseDown","onMouseLeave","getListProps","getItemProps","__autocomplete_id","onMouseMove","getCompletion","stateReducer","payload","options","subscribers","reducer","onStoreStateChange","prevState","createStore","rawValue","baseItemId","setContext","getAutocompleteSetters","propGetters","Event","subscribe","_plugin$subscribe","fn"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@algolia/autocomplete-core",
|
|
3
3
|
"description": "Core primitives for building autocomplete experiences.",
|
|
4
|
-
"version": "1.0.0-alpha.
|
|
4
|
+
"version": "1.0.0-alpha.44",
|
|
5
5
|
"license": "MIT",
|
|
6
|
-
"homepage": "https://github.com/algolia/autocomplete
|
|
7
|
-
"repository": "algolia/autocomplete
|
|
6
|
+
"homepage": "https://github.com/algolia/autocomplete",
|
|
7
|
+
"repository": "algolia/autocomplete",
|
|
8
8
|
"author": {
|
|
9
9
|
"name": "Algolia, Inc.",
|
|
10
10
|
"url": "https://www.algolia.com"
|
|
@@ -31,6 +31,6 @@
|
|
|
31
31
|
"watch": "watch \"yarn on:change\" --ignoreDirectoryPattern \"/dist/\""
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@algolia/autocomplete-shared": "1.0.0-alpha.
|
|
34
|
+
"@algolia/autocomplete-shared": "1.0.0-alpha.44"
|
|
35
35
|
}
|
|
36
36
|
}
|