Socket
Socket
Sign inDemoInstall

@algolia/autocomplete-core

Package Overview
Dependencies
1
Maintainers
62
Versions
70
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.0.0-alpha.37 to 1.0.0-alpha.38

2

dist/esm/checkOptions.d.ts
import { AutocompleteOptions, BaseItem } from './types';
export declare function checkOptions<TItem extends BaseItem>(option: AutocompleteOptions<TItem>): void;
export declare function checkOptions<TItem extends BaseItem>(options: AutocompleteOptions<TItem>): void;
import { warn } from '@algolia/autocomplete-shared';
export function checkOptions(option) {
process.env.NODE_ENV !== 'production' ? warn(!option.debug, 'The `debug` option is meant for development debugging and should not be used in production.') : void 0;
export function checkOptions(options) {
process.env.NODE_ENV !== 'production' ? warn(!options.debug, 'The `debug` option is meant for development debugging and should not be used in production.') : void 0;
}

@@ -0,1 +1,7 @@

function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
import { checkOptions } from './checkOptions';

@@ -13,50 +19,22 @@ import { createStore } from './createStore';

var store = createStore(stateReducer, props);
var _getAutocompleteSette = getAutocompleteSetters({
var setters = getAutocompleteSetters({
store: store
}),
setSelectedItemId = _getAutocompleteSette.setSelectedItemId,
setQuery = _getAutocompleteSette.setQuery,
setCollections = _getAutocompleteSette.setCollections,
setIsOpen = _getAutocompleteSette.setIsOpen,
setStatus = _getAutocompleteSette.setStatus,
setContext = _getAutocompleteSette.setContext;
var _getPropGetters = getPropGetters({
store: store,
});
var propGetters = getPropGetters(_objectSpread({
props: props,
setSelectedItemId: setSelectedItemId,
setQuery: setQuery,
setCollections: setCollections,
setIsOpen: setIsOpen,
setStatus: setStatus,
setContext: setContext,
refresh: refresh
}),
getEnvironmentProps = _getPropGetters.getEnvironmentProps,
getRootProps = _getPropGetters.getRootProps,
getFormProps = _getPropGetters.getFormProps,
getLabelProps = _getPropGetters.getLabelProps,
getInputProps = _getPropGetters.getInputProps,
getPanelProps = _getPropGetters.getPanelProps,
getListProps = _getPropGetters.getListProps,
getItemProps = _getPropGetters.getItemProps;
refresh: refresh,
store: store
}, setters));
function refresh() {
return onInput({
query: store.getState().query,
return onInput(_objectSpread({
event: new Event('input'),
store: store,
props: props,
setSelectedItemId: setSelectedItemId,
setQuery: setQuery,
setCollections: setCollections,
setIsOpen: setIsOpen,
setStatus: setStatus,
setContext: setContext,
nextState: {
isOpen: store.getState().isOpen
},
refresh: refresh
});
props: props,
query: store.getState().query,
refresh: refresh,
store: store
}, setters));
}

@@ -67,9 +45,3 @@

return (_plugin$subscribe = plugin.subscribe) === null || _plugin$subscribe === void 0 ? void 0 : _plugin$subscribe.call(plugin, {
setSelectedItemId: setSelectedItemId,
setQuery: setQuery,
setCollections: setCollections,
setIsOpen: setIsOpen,
setStatus: setStatus,
setContext: setContext,
return (_plugin$subscribe = plugin.subscribe) === null || _plugin$subscribe === void 0 ? void 0 : _plugin$subscribe.call(plugin, _objectSpread(_objectSpread({}, setters), {}, {
onSelect: function onSelect(fn) {

@@ -85,21 +57,7 @@ subscribers.push({

}
});
}));
});
return {
setSelectedItemId: setSelectedItemId,
setQuery: setQuery,
setCollections: setCollections,
setIsOpen: setIsOpen,
setStatus: setStatus,
setContext: setContext,
getEnvironmentProps: getEnvironmentProps,
getRootProps: getRootProps,
getFormProps: getFormProps,
getInputProps: getInputProps,
getLabelProps: getLabelProps,
getPanelProps: getPanelProps,
getListProps: getListProps,
getItemProps: getItemProps,
return _objectSpread(_objectSpread({
refresh: refresh
};
}, propGetters), setters);
}

@@ -9,5 +9,3 @@ import { getSelectedItem } from './utils';

var _ref2 = getSelectedItem({
state: state
}),
var _ref2 = getSelectedItem(state),
itemInputValue = _ref2.itemInputValue;

@@ -14,0 +12,0 @@

import { AutocompleteOptions, BaseItem, InternalAutocompleteOptions, AutocompleteSubscribers } from './types';
export declare function getDefaultProps<TItem extends BaseItem>(props: AutocompleteOptions<TItem>, subscribers: AutocompleteSubscribers<TItem>): InternalAutocompleteOptions<TItem>;
export declare function getDefaultProps<TItem extends BaseItem>(props: AutocompleteOptions<TItem>, pluginSubscribers: AutocompleteSubscribers<TItem>): InternalAutocompleteOptions<TItem>;

@@ -20,3 +20,3 @@ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }

import { generateAutocompleteId, getItemsCount, getNormalizedSources, flatten } from './utils';
export function getDefaultProps(props, subscribers) {
export function getDefaultProps(props, pluginSubscribers) {
var _props$id;

@@ -42,2 +42,3 @@

id: (_props$id = props.id) !== null && _props$id !== void 0 ? _props$id : generateAutocompleteId(),
plugins: plugins,
// The following props need to be deeply defaulted.

@@ -53,3 +54,2 @@ initialState: _objectSpread({

}, props.initialState),
plugins: plugins,
onStateChange: function onStateChange(params) {

@@ -59,6 +59,6 @@ var _props$onStateChange;

(_props$onStateChange = props.onStateChange) === null || _props$onStateChange === void 0 ? void 0 : _props$onStateChange.call(props, params);
plugins.forEach(function (plugin) {
var _plugin$onStateChange;
plugins.forEach(function (x) {
var _x$onStateChange;
(_plugin$onStateChange = plugin.onStateChange) === null || _plugin$onStateChange === void 0 ? void 0 : _plugin$onStateChange.call(plugin, params);
return (_x$onStateChange = x.onStateChange) === null || _x$onStateChange === void 0 ? void 0 : _x$onStateChange.call(x, params);
});

@@ -70,6 +70,6 @@ },

(_props$onSubmit = props.onSubmit) === null || _props$onSubmit === void 0 ? void 0 : _props$onSubmit.call(props, params);
plugins.forEach(function (plugin) {
var _plugin$onSubmit;
plugins.forEach(function (x) {
var _x$onSubmit;
(_plugin$onSubmit = plugin.onSubmit) === null || _plugin$onSubmit === void 0 ? void 0 : _plugin$onSubmit.call(plugin, params);
return (_x$onSubmit = x.onSubmit) === null || _x$onSubmit === void 0 ? void 0 : _x$onSubmit.call(x, params);
});

@@ -81,13 +81,13 @@ },

(_props$onReset = props.onReset) === null || _props$onReset === void 0 ? void 0 : _props$onReset.call(props, params);
plugins.forEach(function (plugin) {
var _plugin$onReset;
plugins.forEach(function (x) {
var _x$onReset;
(_plugin$onReset = plugin.onReset) === null || _plugin$onReset === void 0 ? void 0 : _plugin$onReset.call(plugin, params);
return (_x$onReset = x.onReset) === null || _x$onReset === void 0 ? void 0 : _x$onReset.call(x, params);
});
},
getSources: function getSources(options) {
getSources: function getSources(params) {
return Promise.all([].concat(_toConsumableArray(plugins.map(function (plugin) {
return plugin.getSources;
})), [props.getSources]).filter(Boolean).map(function (getSources) {
return getNormalizedSources(getSources, options);
return getNormalizedSources(getSources, params);
})).then(function (nested) {

@@ -100,6 +100,6 @@ return flatten(nested);

source.onSelect(params);
subscribers.forEach(function (subscriber) {
var _subscriber$onSelect;
pluginSubscribers.forEach(function (x) {
var _x$onSelect;
(_subscriber$onSelect = subscriber.onSelect) === null || _subscriber$onSelect === void 0 ? void 0 : _subscriber$onSelect.call(subscriber, params);
return (_x$onSelect = x.onSelect) === null || _x$onSelect === void 0 ? void 0 : _x$onSelect.call(x, params);
});

@@ -109,6 +109,6 @@ },

source.onHighlight(params);
subscribers.forEach(function (subscriber) {
var _subscriber$onHighlig;
pluginSubscribers.forEach(function (x) {
var _x$onHighlight;
(_subscriber$onHighlig = subscriber.onHighlight) === null || _subscriber$onHighlig === void 0 ? void 0 : _subscriber$onHighlig.call(subscriber, params);
return (_x$onHighlight = x.onHighlight) === null || _x$onHighlight === void 0 ? void 0 : _x$onHighlight.call(x, params);
});

@@ -128,6 +128,3 @@ }

var windowReference = environment.open(itemUrl, '_blank', 'noopener');
if (windowReference) {
windowReference.focus();
}
windowReference === null || windowReference === void 0 ? void 0 : windowReference.focus();
},

@@ -134,0 +131,0 @@ navigateNewWindow: function navigateNewWindow(_ref4) {

@@ -6,3 +6,3 @@ import { AutocompleteScopeApi, AutocompleteStore, BaseItem, GetEnvironmentProps, GetFormProps, GetInputProps, GetItemProps, GetLabelProps, GetListProps, GetPanelProps, GetRootProps, InternalAutocompleteOptions } from './types';

}
export declare function getPropGetters<TItem extends BaseItem, TEvent, TMouseEvent, TKeyboardEvent>({ store, props, setSelectedItemId, setQuery, setCollections, setIsOpen, setStatus, setContext, refresh, }: GetPropGettersOptions<TItem>): {
export declare function getPropGetters<TItem extends BaseItem, TEvent, TMouseEvent, TKeyboardEvent>({ props, refresh, store, ...setters }: GetPropGettersOptions<TItem>): {
getEnvironmentProps: GetEnvironmentProps;

@@ -9,0 +9,0 @@ getRootProps: GetRootProps;

@@ -1,5 +0,1 @@

function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }

@@ -11,2 +7,6 @@

function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
import { onInput } from './onInput';

@@ -16,11 +16,6 @@ import { onKeyDown as _onKeyDown } from './onKeyDown';

export function getPropGetters(_ref) {
var store = _ref.store,
props = _ref.props,
setSelectedItemId = _ref.setSelectedItemId,
setQuery = _ref.setQuery,
setCollections = _ref.setCollections,
setIsOpen = _ref.setIsOpen,
setStatus = _ref.setStatus,
setContext = _ref.setContext,
refresh = _ref.refresh;
var props = _ref.props,
refresh = _ref.refresh,
store = _ref.store,
setters = _objectWithoutProperties(_ref, ["props", "refresh", "store"]);

@@ -37,6 +32,8 @@ var getEnvironmentProps = function getEnvironmentProps(getterProps) {

return;
}
} // @TODO: support cases where there are multiple Autocomplete instances.
// Right now, a second instance makes this computation return false.
var isTargetWithinAutocomplete = [getterProps.formElement, getterProps.panelElement].some(function (contextNode) {
return contextNode && (isOrContainsNode(contextNode, event.target) || isOrContainsNode(contextNode, props.environment.document.activeElement));
return isOrContainsNode(contextNode, event.target) || isOrContainsNode(contextNode, props.environment.document.activeElement);
});

@@ -81,38 +78,24 @@

onSubmit: function onSubmit(event) {
var _providedProps$inputE;
event.preventDefault();
props.onSubmit({
state: store.getState(),
setSelectedItemId: setSelectedItemId,
setQuery: setQuery,
setCollections: setCollections,
setIsOpen: setIsOpen,
setStatus: setStatus,
setContext: setContext,
props.onSubmit(_objectSpread({
event: event,
refresh: refresh,
event: event
});
state: store.getState()
}, setters));
store.dispatch('submit', null);
if (providedProps.inputElement) {
providedProps.inputElement.blur();
}
(_providedProps$inputE = providedProps.inputElement) === null || _providedProps$inputE === void 0 ? void 0 : _providedProps$inputE.blur();
},
onReset: function onReset(event) {
var _providedProps$inputE2;
event.preventDefault();
props.onReset({
state: store.getState(),
setSelectedItemId: setSelectedItemId,
setQuery: setQuery,
setCollections: setCollections,
setIsOpen: setIsOpen,
setStatus: setStatus,
setContext: setContext,
props.onReset(_objectSpread({
event: event,
refresh: refresh,
event: event
});
state: store.getState()
}, setters));
store.dispatch('reset', null);
if (providedProps.inputElement) {
providedProps.inputElement.focus();
}
(_providedProps$inputE2 = providedProps.inputElement) === null || _providedProps$inputE2 === void 0 ? void 0 : _providedProps$inputE2.focus();
}

@@ -127,15 +110,9 @@ }, rest);

if (props.openOnFocus || store.getState().query.length > 0) {
onInput({
query: store.getState().completion || store.getState().query,
onInput(_objectSpread({
event: event,
store: store,
props: props,
setSelectedItemId: setSelectedItemId,
setQuery: setQuery,
setCollections: setCollections,
setIsOpen: setIsOpen,
setStatus: setStatus,
setContext: setContext,
refresh: refresh
});
query: store.getState().completion || store.getState().query,
refresh: refresh,
store: store
}, setters));
}

@@ -154,2 +131,3 @@

var selectedItem = getSelectedItem(store.getState());
return _objectSpread({

@@ -165,2 +143,3 @@ 'aria-autocomplete': 'both',

autoCapitalize: 'off',
enterKeyHint: selectedItem !== null && selectedItem !== void 0 && selectedItem.itemUrl ? 'go' : 'search',
spellCheck: 'false',

@@ -172,29 +151,17 @@ autoFocus: props.autoFocus,

onChange: function onChange(event) {
onInput({
query: event.currentTarget.value.slice(0, maxLength),
onInput(_objectSpread({
event: event,
store: store,
props: props,
setSelectedItemId: setSelectedItemId,
setQuery: setQuery,
setCollections: setCollections,
setIsOpen: setIsOpen,
setStatus: setStatus,
setContext: setContext,
refresh: refresh
});
query: event.currentTarget.value.slice(0, maxLength),
refresh: refresh,
store: store
}, setters));
},
onKeyDown: function onKeyDown(event) {
_onKeyDown({
_onKeyDown(_objectSpread({
event: event,
store: store,
props: props,
setSelectedItemId: setSelectedItemId,
setQuery: setQuery,
setCollections: setCollections,
setIsOpen: setIsOpen,
setStatus: setStatus,
setContext: setContext,
refresh: refresh
});
refresh: refresh,
store: store
}, setters));
},

@@ -268,5 +235,3 @@ onFocus: onFocus,

store.dispatch('mousemove', item.__autocomplete_id);
var highlightedItem = getSelectedItem({
state: store.getState()
});
var highlightedItem = getSelectedItem(store.getState());

@@ -279,17 +244,11 @@ if (store.getState().selectedItemId !== null && highlightedItem) {

_source.onHighlight({
_source.onHighlight(_objectSpread({
event: event,
item: _item,
itemInputValue: itemInputValue,
itemUrl: itemUrl,
refresh: refresh,
source: _source,
state: store.getState(),
setSelectedItemId: setSelectedItemId,
setQuery: setQuery,
setCollections: setCollections,
setIsOpen: setIsOpen,
setStatus: setStatus,
setContext: setContext,
refresh: refresh,
event: event
});
state: store.getState()
}, setters));
}

@@ -316,34 +275,22 @@ },

var runPreCommand = itemUrl ? Promise.resolve() : onInput({
query: itemInputValue,
var runPreCommand = itemUrl ? Promise.resolve() : onInput(_objectSpread({
event: event,
store: store,
nextState: {
isOpen: false
},
props: props,
setSelectedItemId: setSelectedItemId,
setQuery: setQuery,
setCollections: setCollections,
setIsOpen: setIsOpen,
setStatus: setStatus,
setContext: setContext,
query: itemInputValue,
refresh: refresh,
nextState: {
isOpen: false
}
});
store: store
}, setters));
runPreCommand.then(function () {
source.onSelect({
source.onSelect(_objectSpread({
event: event,
item: item,
itemInputValue: itemInputValue,
itemUrl: itemUrl,
refresh: refresh,
source: source,
state: store.getState(),
setSelectedItemId: setSelectedItemId,
setQuery: setQuery,
setCollections: setCollections,
setIsOpen: setIsOpen,
setStatus: setStatus,
setContext: setContext,
refresh: refresh,
event: event
});
state: store.getState()
}, setters));
});

@@ -350,0 +297,0 @@ }

import { AutocompleteScopeApi, AutocompleteState, AutocompleteStore, BaseItem, InternalAutocompleteOptions } from './types';
interface OnInputParams<TItem extends BaseItem> extends AutocompleteScopeApi<TItem> {
query: string;
event: any;
store: AutocompleteStore<TItem>;
props: InternalAutocompleteOptions<TItem>;
/**

@@ -15,4 +12,7 @@ * The next partial state to apply after the function is called.

nextState?: Partial<AutocompleteState<TItem>>;
props: InternalAutocompleteOptions<TItem>;
query: string;
store: AutocompleteStore<TItem>;
}
export declare function onInput<TItem extends BaseItem>({ query, event, store, props, setSelectedItemId, setQuery, setCollections, setIsOpen, setStatus, setContext, nextState, refresh, }: OnInputParams<TItem>): Promise<void>;
export declare function onInput<TItem extends BaseItem>({ event, nextState, props, query, refresh, store, ...setters }: OnInputParams<TItem>): Promise<void>;
export {};

@@ -0,1 +1,3 @@

function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }

@@ -7,31 +9,25 @@

function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
import { invariant } from '@algolia/autocomplete-shared';
import { getSelectedItem } from './utils';
var lastStalledId = null;
export function onInput(_ref) {
var query = _ref.query,
event = _ref.event,
store = _ref.store,
props = _ref.props,
setSelectedItemId = _ref.setSelectedItemId,
setQuery = _ref.setQuery,
setCollections = _ref.setCollections,
setIsOpen = _ref.setIsOpen,
setStatus = _ref.setStatus,
setContext = _ref.setContext,
var event = _ref.event,
_ref$nextState = _ref.nextState,
nextState = _ref$nextState === void 0 ? {} : _ref$nextState,
refresh = _ref.refresh;
props = _ref.props,
query = _ref.query,
refresh = _ref.refresh,
store = _ref.store,
setters = _objectWithoutProperties(_ref, ["event", "nextState", "props", "query", "refresh", "store"]);
if (props.onInput) {
return Promise.resolve(props.onInput({
return Promise.resolve(props.onInput(_objectSpread({
query: query,
state: store.getState(),
setSelectedItemId: setSelectedItemId,
setQuery: setQuery,
setCollections: setCollections,
setIsOpen: setIsOpen,
setStatus: setStatus,
setContext: setContext,
refresh: refresh
}));
refresh: refresh,
state: store.getState()
}, setters)));
}

@@ -43,2 +39,7 @@

var setCollections = setters.setCollections,
setIsOpen = setters.setIsOpen,
setQuery = setters.setQuery,
setSelectedItemId = setters.setSelectedItemId,
setStatus = setters.setStatus;
setQuery(query);

@@ -66,27 +67,16 @@ setSelectedItemId(props.defaultSelectedItemId);

}, props.stallThreshold);
return props.getSources({
return props.getSources(_objectSpread({
query: query,
state: store.getState(),
setSelectedItemId: setSelectedItemId,
setQuery: setQuery,
setCollections: setCollections,
setIsOpen: setIsOpen,
setStatus: setStatus,
setContext: setContext,
refresh: refresh
}).then(function (sources) {
refresh: refresh,
state: store.getState()
}, setters)).then(function (sources) {
setStatus('loading'); // @TODO: convert `Promise.all` to fetching strategy.
return Promise.all(sources.map(function (source) {
return Promise.resolve(source.getItems({
return Promise.resolve(source.getItems(_objectSpread({
query: query,
state: store.getState(),
setSelectedItemId: setSelectedItemId,
setQuery: setQuery,
setCollections: setCollections,
setIsOpen: setIsOpen,
setStatus: setStatus,
setContext: setContext,
refresh: refresh
})).then(function (items) {
refresh: refresh,
state: store.getState()
}, setters))).then(function (items) {
invariant(Array.isArray(items), "The `getItems` function must return an array of items but returned type ".concat(JSON.stringify(_typeof(items)), ":\n\n").concat(JSON.stringify(items, null, 2)));
return {

@@ -105,5 +95,3 @@ source: source,

}));
var highlightedItem = getSelectedItem({
state: store.getState()
});
var highlightedItem = getSelectedItem(store.getState());

@@ -115,17 +103,11 @@ if (store.getState().selectedItemId !== null && highlightedItem) {

source = highlightedItem.source;
source.onHighlight({
source.onHighlight(_objectSpread({
event: event,
item: item,
itemInputValue: itemInputValue,
itemUrl: itemUrl,
refresh: refresh,
source: source,
state: store.getState(),
setSelectedItemId: setSelectedItemId,
setQuery: setQuery,
setCollections: setCollections,
setIsOpen: setIsOpen,
setStatus: setStatus,
setContext: setContext,
refresh: refresh,
event: event
});
state: store.getState()
}, setters));
}

@@ -132,0 +114,0 @@ }).catch(function (error) {

import { AutocompleteScopeApi, AutocompleteStore, BaseItem, InternalAutocompleteOptions } from './types';
interface OnKeyDownOptions<TItem extends BaseItem> extends AutocompleteScopeApi<TItem> {
event: KeyboardEvent;
props: InternalAutocompleteOptions<TItem>;
store: AutocompleteStore<TItem>;
props: InternalAutocompleteOptions<TItem>;
}
export declare function onKeyDown<TItem extends BaseItem>({ event, store, props, setSelectedItemId, setQuery, setCollections, setIsOpen, setStatus, setContext, refresh, }: OnKeyDownOptions<TItem>): void;
export declare function onKeyDown<TItem extends BaseItem>({ event, props, refresh, store, ...setters }: OnKeyDownOptions<TItem>): void;
export {};

@@ -0,1 +1,11 @@

function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
import { onInput } from './onInput';

@@ -5,11 +15,6 @@ import { getSelectedItem } from './utils';

var event = _ref.event,
props = _ref.props,
refresh = _ref.refresh,
store = _ref.store,
props = _ref.props,
setSelectedItemId = _ref.setSelectedItemId,
setQuery = _ref.setQuery,
setCollections = _ref.setCollections,
setIsOpen = _ref.setIsOpen,
setStatus = _ref.setStatus,
setContext = _ref.setContext,
refresh = _ref.refresh;
setters = _objectWithoutProperties(_ref, ["event", "props", "refresh", "store"]);

@@ -31,5 +36,3 @@ if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {

var highlightedItem = getSelectedItem({
state: store.getState()
});
var highlightedItem = getSelectedItem(store.getState());

@@ -41,21 +44,15 @@ if (store.getState().selectedItemId !== null && highlightedItem) {

source = highlightedItem.source;
source.onHighlight({
source.onHighlight(_objectSpread({
event: event,
item: item,
itemInputValue: itemInputValue,
itemUrl: itemUrl,
refresh: refresh,
source: source,
state: store.getState(),
setSelectedItemId: setSelectedItemId,
setQuery: setQuery,
setCollections: setCollections,
setIsOpen: setIsOpen,
setStatus: setStatus,
setContext: setContext,
refresh: refresh,
event: event
});
state: store.getState()
}, setters));
}
} else if (event.key === 'Escape') {
// This prevents the default browser behavior on `input[type="search"]`
// to remove the query right away because we first want to close the
// from removing the query right away because we first want to close the
// panel.

@@ -77,5 +74,3 @@ event.preventDefault();

var _ref2 = getSelectedItem({
state: store.getState()
}),
var _ref2 = getSelectedItem(store.getState()),
_item = _ref2.item,

@@ -88,17 +83,11 @@ _itemInputValue = _ref2.itemInputValue,

if (_itemUrl !== undefined) {
_source.onSelect({
_source.onSelect(_objectSpread({
event: event,
item: _item,
itemInputValue: _itemInputValue,
itemUrl: _itemUrl,
refresh: refresh,
source: _source,
state: store.getState(),
setSelectedItemId: setSelectedItemId,
setQuery: setQuery,
setCollections: setCollections,
setIsOpen: setIsOpen,
setStatus: setStatus,
setContext: setContext,
refresh: refresh,
event: event
});
state: store.getState()
}, setters));

@@ -113,17 +102,11 @@ props.navigator.navigateNewTab({

if (_itemUrl !== undefined) {
_source.onSelect({
_source.onSelect(_objectSpread({
event: event,
item: _item,
itemInputValue: _itemInputValue,
itemUrl: _itemUrl,
refresh: refresh,
source: _source,
state: store.getState(),
setSelectedItemId: setSelectedItemId,
setQuery: setQuery,
setCollections: setCollections,
setIsOpen: setIsOpen,
setStatus: setStatus,
setContext: setContext,
refresh: refresh,
event: event
});
state: store.getState()
}, setters));

@@ -139,17 +122,11 @@ props.navigator.navigateNewWindow({

if (_itemUrl !== undefined) {
_source.onSelect({
_source.onSelect(_objectSpread({
event: event,
item: _item,
itemInputValue: _itemInputValue,
itemUrl: _itemUrl,
refresh: refresh,
source: _source,
state: store.getState(),
setSelectedItemId: setSelectedItemId,
setQuery: setQuery,
setCollections: setCollections,
setIsOpen: setIsOpen,
setStatus: setStatus,
setContext: setContext,
refresh: refresh,
event: event
});
state: store.getState()
}, setters));

@@ -164,33 +141,21 @@ props.navigator.navigate({

onInput({
query: _itemInputValue,
onInput(_objectSpread({
event: event,
store: store,
props: props,
setSelectedItemId: setSelectedItemId,
setQuery: setQuery,
setCollections: setCollections,
setIsOpen: setIsOpen,
setStatus: setStatus,
setContext: setContext,
nextState: {
isOpen: false
},
refresh: refresh
}).then(function () {
_source.onSelect({
props: props,
query: _itemInputValue,
refresh: refresh,
store: store
}, setters)).then(function () {
_source.onSelect(_objectSpread({
event: event,
item: _item,
itemInputValue: _itemInputValue,
itemUrl: _itemUrl,
refresh: refresh,
source: _source,
state: store.getState(),
setSelectedItemId: setSelectedItemId,
setQuery: setQuery,
setCollections: setCollections,
setIsOpen: setIsOpen,
setStatus: setStatus,
setContext: setContext,
refresh: refresh,
event: event
});
state: store.getState()
}, setters));
});

@@ -197,0 +162,0 @@ }

@@ -7,2 +7,3 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }

import { invariant } from '@algolia/autocomplete-shared';
import { getCompletion } from './getCompletion';

@@ -154,4 +155,5 @@ import { getItemsCount, getNextSelectedItemId } from './utils';

default:
invariant(false, "The reducer action ".concat(JSON.stringify(action.type), " is not supported."));
return state;
}
};

@@ -1,3 +0,3 @@

export declare type AutocompleteContext = {
export interface AutocompleteContext {
[key: string]: unknown;
};
}

@@ -8,8 +8,8 @@ import { MaybePromise } from '@algolia/autocomplete-shared';

import { AutocompleteState } from './AutocompleteState';
interface OnSubmitParams<TItem extends BaseItem> extends AutocompleteScopeApi<TItem> {
export interface OnSubmitParams<TItem extends BaseItem> extends AutocompleteScopeApi<TItem> {
state: AutocompleteState<TItem>;
event: any;
}
declare type OnResetParams<TItem extends BaseItem> = OnSubmitParams<TItem>;
interface OnInputParams<TItem extends BaseItem> extends AutocompleteScopeApi<TItem> {
export declare type OnResetParams<TItem extends BaseItem> = OnSubmitParams<TItem>;
export interface OnInputParams<TItem extends BaseItem> extends AutocompleteScopeApi<TItem> {
query: string;

@@ -19,3 +19,4 @@ state: AutocompleteState<TItem>;

export declare type GetSourcesParams<TItem extends BaseItem> = OnInputParams<TItem>;
export declare type GetSources<TItem extends BaseItem> = (params: GetSourcesParams<TItem>) => Promise<Array<InternalAutocompleteSource<TItem>>>;
export declare type GetSources<TItem extends BaseItem> = (params: GetSourcesParams<TItem>) => MaybePromise<Array<AutocompleteSource<TItem> | boolean | undefined>>;
export declare type InternalGetSources<TItem extends BaseItem> = (params: GetSourcesParams<TItem>) => Promise<Array<InternalAutocompleteSource<TItem>>>;
export interface AutocompleteOptions<TItem extends BaseItem> {

@@ -82,3 +83,3 @@ /**

*/
getSources?(params: GetSourcesParams<TItem>): MaybePromise<Array<AutocompleteSource<TItem>>>;
getSources?: GetSources<TItem>;
/**

@@ -135,3 +136,3 @@ * The environment from where your JavaScript is running.

initialState: AutocompleteState<TItem>;
getSources: GetSources<TItem>;
getSources: InternalGetSources<TItem>;
environment: AutocompleteEnvironment;

@@ -147,2 +148,1 @@ navigator: AutocompleteNavigator<TItem>;

}
export {};

@@ -59,2 +59,3 @@ import { BaseItem } from './AutocompleteApi';

autoCapitalize: 'on' | 'off';
enterKeyHint: 'go' | 'search';
spellCheck: 'false';

@@ -61,0 +62,0 @@ maxLength: number;

@@ -1,2 +0,17 @@

import { BaseItem, InternalAutocompleteOptions } from '../types';
export declare function getNextSelectedItemId<TItem extends BaseItem>(moveAmount: number, baseIndex: number | null, itemCount: number, defaultSelectedItemId: InternalAutocompleteOptions<TItem>['defaultSelectedItemId']): number | null;
/**
* Returns the next selected item ID from the current state.
*
* We allow circular keyboard navigation from the base index.
* The base index can either be `null` (nothing is highlighted) or `0`
* (the first item is highlighted).
* The base index is allowed to get assigned `null` only if
* `props.defaultSelectedItemId` is `null`. This pattern allows to "stop"
* by the actual query before navigating to other suggestions as seen on
* Google or Amazon.
*
* @param moveAmount The offset to increment (or decrement) the last index
* @param baseIndex The current index to compute the next index from
* @param itemCount The number of items
* @param defaultSelectedItemId The default selected index to fallback to
*/
export declare function getNextSelectedItemId(moveAmount: number, baseIndex: number | null, itemCount: number, defaultSelectedItemId: number | null): number | null;

@@ -0,17 +1,22 @@

/**
* Returns the next selected item ID from the current state.
*
* We allow circular keyboard navigation from the base index.
* The base index can either be `null` (nothing is highlighted) or `0`
* (the first item is highlighted).
* The base index is allowed to get assigned `null` only if
* `props.defaultSelectedItemId` is `null`. This pattern allows to "stop"
* by the actual query before navigating to other suggestions as seen on
* Google or Amazon.
*
* @param moveAmount The offset to increment (or decrement) the last index
* @param baseIndex The current index to compute the next index from
* @param itemCount The number of items
* @param defaultSelectedItemId The default selected index to fallback to
*/
export function getNextSelectedItemId(moveAmount, baseIndex, itemCount, defaultSelectedItemId) {
// We allow circular keyboard navigation from the base index.
// The base index can either be `null` (nothing is highlighted) or `0`
// (the first item is highlighted).
// The base index is allowed to get assigned `null` only if
// `props.defaultSelectedItemId` is `null`. This pattern allows to "stop"
// by the actual query before navigating to other suggestions as seen on
// Google or Amazon.
if (baseIndex === null && moveAmount < 0) {
return itemCount - 1;
if (moveAmount < 0 && (baseIndex === null || defaultSelectedItemId !== null && baseIndex === 0)) {
return itemCount + moveAmount;
}
if (defaultSelectedItemId !== null && baseIndex === 0 && moveAmount < 0) {
return itemCount - 1;
}
var numericIndex = (baseIndex === null ? -1 : baseIndex) + moveAmount;

@@ -18,0 +23,0 @@

@@ -1,3 +0,2 @@

import { MaybePromise } from '@algolia/autocomplete-shared';
import { AutocompleteSource, BaseItem, GetSourcesParams, InternalAutocompleteSource } from '../types';
export declare function getNormalizedSources<TItem extends BaseItem>(getSources: (params: GetSourcesParams<TItem>) => MaybePromise<Array<AutocompleteSource<TItem>>>, options: GetSourcesParams<TItem>): Promise<Array<InternalAutocompleteSource<TItem>>>;
import { BaseItem, GetSources, GetSourcesParams, InternalGetSources } from '../types';
export declare function getNormalizedSources<TItem extends BaseItem>(getSources: GetSources<TItem>, params: GetSourcesParams<TItem>): ReturnType<InternalGetSources<TItem>>;

@@ -7,6 +7,15 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }

function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
import { invariant } from '@algolia/autocomplete-shared';
import { noop } from './noop';
export function getNormalizedSources(getSources, options) {
return Promise.resolve(getSources(options)).then(function (sources) {
return Promise.all(sources.filter(Boolean).map(function (source) {
export function getNormalizedSources(getSources, params) {
return Promise.resolve(getSources(params)).then(function (sources) {
invariant(Array.isArray(sources), "The `getSources` function must return an array of sources but returned type ".concat(JSON.stringify(_typeof(sources)), ":\n\n").concat(JSON.stringify(sources, null, 2)));
return Promise.all(sources // We allow `undefined` and `false` sources to allow users to use
// `Boolean(query) && source` (=> `false`).
// We need to remove these values at this point.
.filter(function (maybeSource) {
return Boolean(maybeSource);
}).map(function (source) {
var normalizedSource = _objectSpread({

@@ -13,0 +22,0 @@ getItemInputValue: function getItemInputValue(_ref) {

import { AutocompleteState, BaseItem } from '../types';
export declare function getSelectedItem<TItem extends BaseItem>({ state, }: {
state: AutocompleteState<TItem>;
}): {
export declare function getSelectedItem<TItem extends BaseItem>(state: AutocompleteState<TItem>): {
item: TItem;

@@ -6,0 +4,0 @@ itemInputValue: string;

// We don't have access to the autocomplete source when we call `onKeyDown`
// or `onClick` because those are native browser events.
// However, we can get the source from the suggestion index.
function getCollectionFromSelectedItemId(_ref) {
var state = _ref.state;
function getCollectionFromSelectedItemId(state) {
// Given 3 sources with respectively 1, 2 and 3 suggestions: [1, 2, 3]

@@ -38,5 +37,5 @@ // We want to get the accumulated counts:

function getRelativeSelectedItemId(_ref2) {
var state = _ref2.state,
collection = _ref2.collection;
function getRelativeSelectedItemId(_ref) {
var state = _ref.state,
collection = _ref.collection;
var isOffsetFound = false;

@@ -61,7 +60,4 @@ var counter = 0;

export function getSelectedItem(_ref3) {
var state = _ref3.state;
var collection = getCollectionFromSelectedItemId({
state: state
});
export function getSelectedItem(state) {
var collection = getCollectionFromSelectedItemId(state);

@@ -68,0 +64,0 @@ if (!collection) {

export function isOrContainsNode(parent, child) {
return parent === child || parent.contains && parent.contains(child);
return parent === child || parent.contains(child);
}

@@ -1,1 +0,1 @@

export declare const version = "1.0.0-alpha.37";
export declare const version = "1.0.0-alpha.38";

@@ -1,1 +0,1 @@

export var version = '1.0.0-alpha.37';
export var version = '1.0.0-alpha.38';

@@ -1,2 +0,2 @@

/*! @algolia/autocomplete-core 1.0.0-alpha.37 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete.js */
/*! @algolia/autocomplete-core 1.0.0-alpha.38 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete.js */
(function (global, factory) {

@@ -8,30 +8,18 @@ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :

var warnCache = {
current: {}
};
/**
* Logs a warning if the condition is not met.
* This is used to log issues in development environment only.
*/
function _typeof(obj) {
"@babel/helpers - typeof";
function warn(condition, message) {
if (condition) {
return;
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function (obj) {
return typeof obj;
};
} else {
_typeof = function (obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
}
var sanitizedMessage = message.trim();
var hasAlreadyPrinted = warnCache.current[sanitizedMessage];
if (!hasAlreadyPrinted) {
warnCache.current[sanitizedMessage] = true; // eslint-disable-next-line no-console
console.warn("[Autocomplete] ".concat(sanitizedMessage));
}
return _typeof(obj);
}
function checkOptions(option) {
"development" !== 'production' ? warn(!option.debug, 'The `debug` option is meant for development debugging and should not be used in production.') : void 0;
}
function _defineProperty(obj, key, value) {

@@ -155,2 +143,42 @@ if (key in obj) {

/**
* Throws an error if the condition is not met in development mode.
* This is used to make development a better experience to provide guidance as
* to where the error comes from.
*/
function invariant(condition, message) {
if (!condition) {
throw new Error("[Autocomplete] ".concat(message));
}
}
var warnCache = {
current: {}
};
/**
* Logs a warning if the condition is not met.
* This is used to log issues in development environment only.
*/
function warn(condition, message) {
if (condition) {
return;
}
var sanitizedMessage = message.trim();
var hasAlreadyPrinted = warnCache.current[sanitizedMessage];
if (!hasAlreadyPrinted) {
warnCache.current[sanitizedMessage] = true; // eslint-disable-next-line no-console
console.warn("[Autocomplete] ".concat(sanitizedMessage));
}
}
function checkOptions(options) {
"development" !== 'production' ? warn(!options.debug, 'The `debug` option is meant for development debugging and should not be used in production.') : void 0;
}
function createStore(reducer, props) {

@@ -199,18 +227,23 @@ var state = props.initialState;

/**
* Returns the next selected item ID from the current state.
*
* We allow circular keyboard navigation from the base index.
* The base index can either be `null` (nothing is highlighted) or `0`
* (the first item is highlighted).
* The base index is allowed to get assigned `null` only if
* `props.defaultSelectedItemId` is `null`. This pattern allows to "stop"
* by the actual query before navigating to other suggestions as seen on
* Google or Amazon.
*
* @param moveAmount The offset to increment (or decrement) the last index
* @param baseIndex The current index to compute the next index from
* @param itemCount The number of items
* @param defaultSelectedItemId The default selected index to fallback to
*/
function getNextSelectedItemId(moveAmount, baseIndex, itemCount, defaultSelectedItemId) {
// We allow circular keyboard navigation from the base index.
// The base index can either be `null` (nothing is highlighted) or `0`
// (the first item is highlighted).
// The base index is allowed to get assigned `null` only if
// `props.defaultSelectedItemId` is `null`. This pattern allows to "stop"
// by the actual query before navigating to other suggestions as seen on
// Google or Amazon.
if (baseIndex === null && moveAmount < 0) {
return itemCount - 1;
if (moveAmount < 0 && (baseIndex === null || defaultSelectedItemId !== null && baseIndex === 0)) {
return itemCount + moveAmount;
}
if (defaultSelectedItemId !== null && baseIndex === 0 && moveAmount < 0) {
return itemCount - 1;
}
var numericIndex = (baseIndex === null ? -1 : baseIndex) + moveAmount;

@@ -227,5 +260,11 @@

function getNormalizedSources(getSources, options) {
return Promise.resolve(getSources(options)).then(function (sources) {
return Promise.all(sources.filter(Boolean).map(function (source) {
function getNormalizedSources(getSources, params) {
return Promise.resolve(getSources(params)).then(function (sources) {
invariant(Array.isArray(sources), "The `getSources` function must return an array of sources but returned type ".concat(JSON.stringify(_typeof(sources)), ":\n\n").concat(JSON.stringify(sources, null, 2)));
return Promise.all(sources // We allow `undefined` and `false` sources to allow users to use
// `Boolean(query) && source` (=> `false`).
// We need to remove these values at this point.
.filter(function (maybeSource) {
return Boolean(maybeSource);
}).map(function (source) {
var normalizedSource = _objectSpread2({

@@ -254,4 +293,3 @@ getItemInputValue: function getItemInputValue(_ref) {

// However, we can get the source from the suggestion index.
function getCollectionFromSelectedItemId(_ref) {
var state = _ref.state;
function getCollectionFromSelectedItemId(state) {
// Given 3 sources with respectively 1, 2 and 3 suggestions: [1, 2, 3]

@@ -289,5 +327,5 @@ // We want to get the accumulated counts:

function getRelativeSelectedItemId(_ref2) {
var state = _ref2.state,
collection = _ref2.collection;
function getRelativeSelectedItemId(_ref) {
var state = _ref.state,
collection = _ref.collection;
var isOffsetFound = false;

@@ -312,7 +350,4 @@ var counter = 0;

function getSelectedItem(_ref3) {
var state = _ref3.state;
var collection = getCollectionFromSelectedItemId({
state: state
});
function getSelectedItem(state) {
var collection = getCollectionFromSelectedItemId(state);

@@ -345,3 +380,3 @@ if (!collection) {

function isOrContainsNode(parent, child) {
return parent === child || parent.contains && parent.contains(child);
return parent === child || parent.contains(child);
}

@@ -398,3 +433,3 @@

function getDefaultProps(props, subscribers) {
function getDefaultProps(props, pluginSubscribers) {
var _props$id;

@@ -420,2 +455,3 @@

id: (_props$id = props.id) !== null && _props$id !== void 0 ? _props$id : generateAutocompleteId(),
plugins: plugins,
// The following props need to be deeply defaulted.

@@ -431,3 +467,2 @@ initialState: _objectSpread2({

}, props.initialState),
plugins: plugins,
onStateChange: function onStateChange(params) {

@@ -437,6 +472,6 @@ var _props$onStateChange;

(_props$onStateChange = props.onStateChange) === null || _props$onStateChange === void 0 ? void 0 : _props$onStateChange.call(props, params);
plugins.forEach(function (plugin) {
var _plugin$onStateChange;
plugins.forEach(function (x) {
var _x$onStateChange;
(_plugin$onStateChange = plugin.onStateChange) === null || _plugin$onStateChange === void 0 ? void 0 : _plugin$onStateChange.call(plugin, params);
return (_x$onStateChange = x.onStateChange) === null || _x$onStateChange === void 0 ? void 0 : _x$onStateChange.call(x, params);
});

@@ -448,6 +483,6 @@ },

(_props$onSubmit = props.onSubmit) === null || _props$onSubmit === void 0 ? void 0 : _props$onSubmit.call(props, params);
plugins.forEach(function (plugin) {
var _plugin$onSubmit;
plugins.forEach(function (x) {
var _x$onSubmit;
(_plugin$onSubmit = plugin.onSubmit) === null || _plugin$onSubmit === void 0 ? void 0 : _plugin$onSubmit.call(plugin, params);
return (_x$onSubmit = x.onSubmit) === null || _x$onSubmit === void 0 ? void 0 : _x$onSubmit.call(x, params);
});

@@ -459,13 +494,13 @@ },

(_props$onReset = props.onReset) === null || _props$onReset === void 0 ? void 0 : _props$onReset.call(props, params);
plugins.forEach(function (plugin) {
var _plugin$onReset;
plugins.forEach(function (x) {
var _x$onReset;
(_plugin$onReset = plugin.onReset) === null || _plugin$onReset === void 0 ? void 0 : _plugin$onReset.call(plugin, params);
return (_x$onReset = x.onReset) === null || _x$onReset === void 0 ? void 0 : _x$onReset.call(x, params);
});
},
getSources: function getSources(options) {
getSources: function getSources(params) {
return Promise.all([].concat(_toConsumableArray(plugins.map(function (plugin) {
return plugin.getSources;
})), [props.getSources]).filter(Boolean).map(function (getSources) {
return getNormalizedSources(getSources, options);
return getNormalizedSources(getSources, params);
})).then(function (nested) {

@@ -478,6 +513,6 @@ return flatten(nested);

source.onSelect(params);
subscribers.forEach(function (subscriber) {
var _subscriber$onSelect;
pluginSubscribers.forEach(function (x) {
var _x$onSelect;
(_subscriber$onSelect = subscriber.onSelect) === null || _subscriber$onSelect === void 0 ? void 0 : _subscriber$onSelect.call(subscriber, params);
return (_x$onSelect = x.onSelect) === null || _x$onSelect === void 0 ? void 0 : _x$onSelect.call(x, params);
});

@@ -487,6 +522,6 @@ },

source.onHighlight(params);
subscribers.forEach(function (subscriber) {
var _subscriber$onHighlig;
pluginSubscribers.forEach(function (x) {
var _x$onHighlight;
(_subscriber$onHighlig = subscriber.onHighlight) === null || _subscriber$onHighlig === void 0 ? void 0 : _subscriber$onHighlig.call(subscriber, params);
return (_x$onHighlight = x.onHighlight) === null || _x$onHighlight === void 0 ? void 0 : _x$onHighlight.call(x, params);
});

@@ -506,6 +541,3 @@ }

var windowReference = environment.open(itemUrl, '_blank', 'noopener');
if (windowReference) {
windowReference.focus();
}
windowReference === null || windowReference === void 0 ? void 0 : windowReference.focus();
},

@@ -522,28 +554,17 @@ navigateNewWindow: function navigateNewWindow(_ref4) {

function onInput(_ref) {
var query = _ref.query,
event = _ref.event,
store = _ref.store,
props = _ref.props,
setSelectedItemId = _ref.setSelectedItemId,
setQuery = _ref.setQuery,
setCollections = _ref.setCollections,
setIsOpen = _ref.setIsOpen,
setStatus = _ref.setStatus,
setContext = _ref.setContext,
var event = _ref.event,
_ref$nextState = _ref.nextState,
nextState = _ref$nextState === void 0 ? {} : _ref$nextState,
refresh = _ref.refresh;
props = _ref.props,
query = _ref.query,
refresh = _ref.refresh,
store = _ref.store,
setters = _objectWithoutProperties(_ref, ["event", "nextState", "props", "query", "refresh", "store"]);
if (props.onInput) {
return Promise.resolve(props.onInput({
return Promise.resolve(props.onInput(_objectSpread2({
query: query,
state: store.getState(),
setSelectedItemId: setSelectedItemId,
setQuery: setQuery,
setCollections: setCollections,
setIsOpen: setIsOpen,
setStatus: setStatus,
setContext: setContext,
refresh: refresh
}));
refresh: refresh,
state: store.getState()
}, setters)));
}

@@ -555,2 +576,7 @@

var setCollections = setters.setCollections,
setIsOpen = setters.setIsOpen,
setQuery = setters.setQuery,
setSelectedItemId = setters.setSelectedItemId,
setStatus = setters.setStatus;
setQuery(query);

@@ -578,27 +604,16 @@ setSelectedItemId(props.defaultSelectedItemId);

}, props.stallThreshold);
return props.getSources({
return props.getSources(_objectSpread2({
query: query,
state: store.getState(),
setSelectedItemId: setSelectedItemId,
setQuery: setQuery,
setCollections: setCollections,
setIsOpen: setIsOpen,
setStatus: setStatus,
setContext: setContext,
refresh: refresh
}).then(function (sources) {
refresh: refresh,
state: store.getState()
}, setters)).then(function (sources) {
setStatus('loading'); // @TODO: convert `Promise.all` to fetching strategy.
return Promise.all(sources.map(function (source) {
return Promise.resolve(source.getItems({
return Promise.resolve(source.getItems(_objectSpread2({
query: query,
state: store.getState(),
setSelectedItemId: setSelectedItemId,
setQuery: setQuery,
setCollections: setCollections,
setIsOpen: setIsOpen,
setStatus: setStatus,
setContext: setContext,
refresh: refresh
})).then(function (items) {
refresh: refresh,
state: store.getState()
}, setters))).then(function (items) {
invariant(Array.isArray(items), "The `getItems` function must return an array of items but returned type ".concat(JSON.stringify(_typeof(items)), ":\n\n").concat(JSON.stringify(items, null, 2)));
return {

@@ -617,5 +632,3 @@ source: source,

}));
var highlightedItem = getSelectedItem({
state: store.getState()
});
var highlightedItem = getSelectedItem(store.getState());

@@ -627,17 +640,11 @@ if (store.getState().selectedItemId !== null && highlightedItem) {

source = highlightedItem.source;
source.onHighlight({
source.onHighlight(_objectSpread2({
event: event,
item: item,
itemInputValue: itemInputValue,
itemUrl: itemUrl,
refresh: refresh,
source: source,
state: store.getState(),
setSelectedItemId: setSelectedItemId,
setQuery: setQuery,
setCollections: setCollections,
setIsOpen: setIsOpen,
setStatus: setStatus,
setContext: setContext,
refresh: refresh,
event: event
});
state: store.getState()
}, setters));
}

@@ -657,11 +664,6 @@ }).catch(function (error) {

var event = _ref.event,
props = _ref.props,
refresh = _ref.refresh,
store = _ref.store,
props = _ref.props,
setSelectedItemId = _ref.setSelectedItemId,
setQuery = _ref.setQuery,
setCollections = _ref.setCollections,
setIsOpen = _ref.setIsOpen,
setStatus = _ref.setStatus,
setContext = _ref.setContext,
refresh = _ref.refresh;
setters = _objectWithoutProperties(_ref, ["event", "props", "refresh", "store"]);

@@ -683,5 +685,3 @@ if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {

var highlightedItem = getSelectedItem({
state: store.getState()
});
var highlightedItem = getSelectedItem(store.getState());

@@ -693,21 +693,15 @@ if (store.getState().selectedItemId !== null && highlightedItem) {

source = highlightedItem.source;
source.onHighlight({
source.onHighlight(_objectSpread2({
event: event,
item: item,
itemInputValue: itemInputValue,
itemUrl: itemUrl,
refresh: refresh,
source: source,
state: store.getState(),
setSelectedItemId: setSelectedItemId,
setQuery: setQuery,
setCollections: setCollections,
setIsOpen: setIsOpen,
setStatus: setStatus,
setContext: setContext,
refresh: refresh,
event: event
});
state: store.getState()
}, setters));
}
} else if (event.key === 'Escape') {
// This prevents the default browser behavior on `input[type="search"]`
// to remove the query right away because we first want to close the
// from removing the query right away because we first want to close the
// panel.

@@ -729,5 +723,3 @@ event.preventDefault();

var _ref2 = getSelectedItem({
state: store.getState()
}),
var _ref2 = getSelectedItem(store.getState()),
_item = _ref2.item,

@@ -740,17 +732,11 @@ _itemInputValue = _ref2.itemInputValue,

if (_itemUrl !== undefined) {
_source.onSelect({
_source.onSelect(_objectSpread2({
event: event,
item: _item,
itemInputValue: _itemInputValue,
itemUrl: _itemUrl,
refresh: refresh,
source: _source,
state: store.getState(),
setSelectedItemId: setSelectedItemId,
setQuery: setQuery,
setCollections: setCollections,
setIsOpen: setIsOpen,
setStatus: setStatus,
setContext: setContext,
refresh: refresh,
event: event
});
state: store.getState()
}, setters));

@@ -765,17 +751,11 @@ props.navigator.navigateNewTab({

if (_itemUrl !== undefined) {
_source.onSelect({
_source.onSelect(_objectSpread2({
event: event,
item: _item,
itemInputValue: _itemInputValue,
itemUrl: _itemUrl,
refresh: refresh,
source: _source,
state: store.getState(),
setSelectedItemId: setSelectedItemId,
setQuery: setQuery,
setCollections: setCollections,
setIsOpen: setIsOpen,
setStatus: setStatus,
setContext: setContext,
refresh: refresh,
event: event
});
state: store.getState()
}, setters));

@@ -790,17 +770,11 @@ props.navigator.navigateNewWindow({

if (_itemUrl !== undefined) {
_source.onSelect({
_source.onSelect(_objectSpread2({
event: event,
item: _item,
itemInputValue: _itemInputValue,
itemUrl: _itemUrl,
refresh: refresh,
source: _source,
state: store.getState(),
setSelectedItemId: setSelectedItemId,
setQuery: setQuery,
setCollections: setCollections,
setIsOpen: setIsOpen,
setStatus: setStatus,
setContext: setContext,
refresh: refresh,
event: event
});
state: store.getState()
}, setters));

@@ -815,33 +789,21 @@ props.navigator.navigate({

onInput({
query: _itemInputValue,
onInput(_objectSpread2({
event: event,
store: store,
props: props,
setSelectedItemId: setSelectedItemId,
setQuery: setQuery,
setCollections: setCollections,
setIsOpen: setIsOpen,
setStatus: setStatus,
setContext: setContext,
nextState: {
isOpen: false
},
refresh: refresh
}).then(function () {
_source.onSelect({
props: props,
query: _itemInputValue,
refresh: refresh,
store: store
}, setters)).then(function () {
_source.onSelect(_objectSpread2({
event: event,
item: _item,
itemInputValue: _itemInputValue,
itemUrl: _itemUrl,
refresh: refresh,
source: _source,
state: store.getState(),
setSelectedItemId: setSelectedItemId,
setQuery: setQuery,
setCollections: setCollections,
setIsOpen: setIsOpen,
setStatus: setStatus,
setContext: setContext,
refresh: refresh,
event: event
});
state: store.getState()
}, setters));
});

@@ -853,11 +815,6 @@ }

function getPropGetters(_ref) {
var store = _ref.store,
props = _ref.props,
setSelectedItemId = _ref.setSelectedItemId,
setQuery = _ref.setQuery,
setCollections = _ref.setCollections,
setIsOpen = _ref.setIsOpen,
setStatus = _ref.setStatus,
setContext = _ref.setContext,
refresh = _ref.refresh;
var props = _ref.props,
refresh = _ref.refresh,
store = _ref.store,
setters = _objectWithoutProperties(_ref, ["props", "refresh", "store"]);

@@ -874,6 +831,8 @@ var getEnvironmentProps = function getEnvironmentProps(getterProps) {

return;
}
} // @TODO: support cases where there are multiple Autocomplete instances.
// Right now, a second instance makes this computation return false.
var isTargetWithinAutocomplete = [getterProps.formElement, getterProps.panelElement].some(function (contextNode) {
return contextNode && (isOrContainsNode(contextNode, event.target) || isOrContainsNode(contextNode, props.environment.document.activeElement));
return isOrContainsNode(contextNode, event.target) || isOrContainsNode(contextNode, props.environment.document.activeElement);
});

@@ -918,38 +877,24 @@

onSubmit: function onSubmit(event) {
var _providedProps$inputE;
event.preventDefault();
props.onSubmit({
state: store.getState(),
setSelectedItemId: setSelectedItemId,
setQuery: setQuery,
setCollections: setCollections,
setIsOpen: setIsOpen,
setStatus: setStatus,
setContext: setContext,
props.onSubmit(_objectSpread2({
event: event,
refresh: refresh,
event: event
});
state: store.getState()
}, setters));
store.dispatch('submit', null);
if (providedProps.inputElement) {
providedProps.inputElement.blur();
}
(_providedProps$inputE = providedProps.inputElement) === null || _providedProps$inputE === void 0 ? void 0 : _providedProps$inputE.blur();
},
onReset: function onReset(event) {
var _providedProps$inputE2;
event.preventDefault();
props.onReset({
state: store.getState(),
setSelectedItemId: setSelectedItemId,
setQuery: setQuery,
setCollections: setCollections,
setIsOpen: setIsOpen,
setStatus: setStatus,
setContext: setContext,
props.onReset(_objectSpread2({
event: event,
refresh: refresh,
event: event
});
state: store.getState()
}, setters));
store.dispatch('reset', null);
if (providedProps.inputElement) {
providedProps.inputElement.focus();
}
(_providedProps$inputE2 = providedProps.inputElement) === null || _providedProps$inputE2 === void 0 ? void 0 : _providedProps$inputE2.focus();
}

@@ -964,15 +909,9 @@ }, rest);

if (props.openOnFocus || store.getState().query.length > 0) {
onInput({
query: store.getState().completion || store.getState().query,
onInput(_objectSpread2({
event: event,
store: store,
props: props,
setSelectedItemId: setSelectedItemId,
setQuery: setQuery,
setCollections: setCollections,
setIsOpen: setIsOpen,
setStatus: setStatus,
setContext: setContext,
refresh: refresh
});
query: store.getState().completion || store.getState().query,
refresh: refresh,
store: store
}, setters));
}

@@ -991,2 +930,3 @@

var selectedItem = getSelectedItem(store.getState());
return _objectSpread2({

@@ -1002,2 +942,3 @@ 'aria-autocomplete': 'both',

autoCapitalize: 'off',
enterKeyHint: selectedItem !== null && selectedItem !== void 0 && selectedItem.itemUrl ? 'go' : 'search',
spellCheck: 'false',

@@ -1009,29 +950,17 @@ autoFocus: props.autoFocus,

onChange: function onChange(event) {
onInput({
query: event.currentTarget.value.slice(0, maxLength),
onInput(_objectSpread2({
event: event,
store: store,
props: props,
setSelectedItemId: setSelectedItemId,
setQuery: setQuery,
setCollections: setCollections,
setIsOpen: setIsOpen,
setStatus: setStatus,
setContext: setContext,
refresh: refresh
});
query: event.currentTarget.value.slice(0, maxLength),
refresh: refresh,
store: store
}, setters));
},
onKeyDown: function onKeyDown$1(event) {
onKeyDown({
onKeyDown(_objectSpread2({
event: event,
store: store,
props: props,
setSelectedItemId: setSelectedItemId,
setQuery: setQuery,
setCollections: setCollections,
setIsOpen: setIsOpen,
setStatus: setStatus,
setContext: setContext,
refresh: refresh
});
refresh: refresh,
store: store
}, setters));
},

@@ -1105,5 +1034,3 @@ onFocus: onFocus,

store.dispatch('mousemove', item.__autocomplete_id);
var highlightedItem = getSelectedItem({
state: store.getState()
});
var highlightedItem = getSelectedItem(store.getState());

@@ -1116,17 +1043,11 @@ if (store.getState().selectedItemId !== null && highlightedItem) {

_source.onHighlight({
_source.onHighlight(_objectSpread2({
event: event,
item: _item,
itemInputValue: itemInputValue,
itemUrl: itemUrl,
refresh: refresh,
source: _source,
state: store.getState(),
setSelectedItemId: setSelectedItemId,
setQuery: setQuery,
setCollections: setCollections,
setIsOpen: setIsOpen,
setStatus: setStatus,
setContext: setContext,
refresh: refresh,
event: event
});
state: store.getState()
}, setters));
}

@@ -1153,34 +1074,22 @@ },

var runPreCommand = itemUrl ? Promise.resolve() : onInput({
query: itemInputValue,
var runPreCommand = itemUrl ? Promise.resolve() : onInput(_objectSpread2({
event: event,
store: store,
nextState: {
isOpen: false
},
props: props,
setSelectedItemId: setSelectedItemId,
setQuery: setQuery,
setCollections: setCollections,
setIsOpen: setIsOpen,
setStatus: setStatus,
setContext: setContext,
query: itemInputValue,
refresh: refresh,
nextState: {
isOpen: false
}
});
store: store
}, setters));
runPreCommand.then(function () {
source.onSelect({
source.onSelect(_objectSpread2({
event: event,
item: item,
itemInputValue: itemInputValue,
itemUrl: itemUrl,
refresh: refresh,
source: source,
state: store.getState(),
setSelectedItemId: setSelectedItemId,
setQuery: setQuery,
setCollections: setCollections,
setIsOpen: setIsOpen,
setStatus: setStatus,
setContext: setContext,
refresh: refresh,
event: event
});
state: store.getState()
}, setters));
});

@@ -1210,5 +1119,3 @@ }

var _ref2 = getSelectedItem({
state: state
}),
var _ref2 = getSelectedItem(state),
itemInputValue = _ref2.itemInputValue;

@@ -1363,2 +1270,3 @@

default:
invariant(false, "The reducer action ".concat(JSON.stringify(action.type), " is not supported."));
return state;

@@ -1373,50 +1281,22 @@ }

var store = createStore(stateReducer, props);
var _getAutocompleteSette = getAutocompleteSetters({
var setters = getAutocompleteSetters({
store: store
}),
setSelectedItemId = _getAutocompleteSette.setSelectedItemId,
setQuery = _getAutocompleteSette.setQuery,
setCollections = _getAutocompleteSette.setCollections,
setIsOpen = _getAutocompleteSette.setIsOpen,
setStatus = _getAutocompleteSette.setStatus,
setContext = _getAutocompleteSette.setContext;
var _getPropGetters = getPropGetters({
store: store,
});
var propGetters = getPropGetters(_objectSpread2({
props: props,
setSelectedItemId: setSelectedItemId,
setQuery: setQuery,
setCollections: setCollections,
setIsOpen: setIsOpen,
setStatus: setStatus,
setContext: setContext,
refresh: refresh
}),
getEnvironmentProps = _getPropGetters.getEnvironmentProps,
getRootProps = _getPropGetters.getRootProps,
getFormProps = _getPropGetters.getFormProps,
getLabelProps = _getPropGetters.getLabelProps,
getInputProps = _getPropGetters.getInputProps,
getPanelProps = _getPropGetters.getPanelProps,
getListProps = _getPropGetters.getListProps,
getItemProps = _getPropGetters.getItemProps;
refresh: refresh,
store: store
}, setters));
function refresh() {
return onInput({
query: store.getState().query,
return onInput(_objectSpread2({
event: new Event('input'),
store: store,
props: props,
setSelectedItemId: setSelectedItemId,
setQuery: setQuery,
setCollections: setCollections,
setIsOpen: setIsOpen,
setStatus: setStatus,
setContext: setContext,
nextState: {
isOpen: store.getState().isOpen
},
refresh: refresh
});
props: props,
query: store.getState().query,
refresh: refresh,
store: store
}, setters));
}

@@ -1427,9 +1307,3 @@

return (_plugin$subscribe = plugin.subscribe) === null || _plugin$subscribe === void 0 ? void 0 : _plugin$subscribe.call(plugin, {
setSelectedItemId: setSelectedItemId,
setQuery: setQuery,
setCollections: setCollections,
setIsOpen: setIsOpen,
setStatus: setStatus,
setContext: setContext,
return (_plugin$subscribe = plugin.subscribe) === null || _plugin$subscribe === void 0 ? void 0 : _plugin$subscribe.call(plugin, _objectSpread2(_objectSpread2({}, setters), {}, {
onSelect: function onSelect(fn) {

@@ -1445,24 +1319,10 @@ subscribers.push({

}
});
}));
});
return {
setSelectedItemId: setSelectedItemId,
setQuery: setQuery,
setCollections: setCollections,
setIsOpen: setIsOpen,
setStatus: setStatus,
setContext: setContext,
getEnvironmentProps: getEnvironmentProps,
getRootProps: getRootProps,
getFormProps: getFormProps,
getInputProps: getInputProps,
getLabelProps: getLabelProps,
getPanelProps: getPanelProps,
getListProps: getListProps,
getItemProps: getItemProps,
return _objectSpread2(_objectSpread2({
refresh: refresh
};
}, propGetters), setters);
}
var version = '1.0.0-alpha.37';
var version = '1.0.0-alpha.38';

@@ -1469,0 +1329,0 @@ exports.createAutocomplete = createAutocomplete;

@@ -1,3 +0,3 @@

/*! @algolia/autocomplete-core 1.0.0-alpha.37 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete.js */
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@algolia/autocomplete-core"]={})}(this,(function(e){"use strict";function t(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function n(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function o(e){for(var o=1;o<arguments.length;o++){var s=null!=arguments[o]?arguments[o]:{};o%2?n(Object(s),!0).forEach((function(n){t(e,n,s[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(s)):n(Object(s)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(s,t))}))}return e}function s(e,t){if(null==e)return{};var n,o,s=function(e,t){if(null==e)return{};var n,o,s={},r=Object.keys(e);for(o=0;o<r.length;o++)n=r[o],t.indexOf(n)>=0||(s[n]=e[n]);return s}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(o=0;o<r.length;o++)n=r[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(s[n]=e[n])}return s}function r(e){return function(e){if(Array.isArray(e))return l(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 l(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 l(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 l(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}function i(e){return e.reduce((function(e,t){return e.concat(t)}),[])}var u=0;function a(e){return 0===e.collections.length?0:e.collections.reduce((function(e,t){return e+t.items.length}),0)}function c(e,t,n,o){if(null===t&&e<0)return n-1;if(null!==o&&0===t&&e<0)return n-1;var s=(null===t?-1:t)+e;return s<=-1||s>=n?null===o?null:0:s}var p=function(){};function d(e){var t=e.state,n=function(e){var t=e.state,n=t.collections.map((function(e){return e.items.length})).reduce((function(e,t,n){var o=(e[n-1]||0)+t;return e.push(o),e}),[]).reduce((function(e,n){return n<=t.selectedItemId?e+1:e}),0);return t.collections[n]}({state:t});if(!n)return null;var o=n.items[function(e){for(var t=e.state,n=e.collection,o=!1,s=0,r=0;!1===o;){var l=t.collections[s];if(l===n){o=!0;break}r+=l.items.length,s++}return t.selectedItemId-r}({state:t,collection:n})],s=n.source;return{item:o,itemInputValue:s.getItemInputValue({item:o,state:t}),itemUrl:s.getItemUrl({item:o,state:t}),source:s}}function m(e,t){return e===t||e.contains&&e.contains(t)}function f(e,t){var n,s="undefined"!=typeof window?window:{},l=e.plugins||[];return o(o({debug:!1,openOnFocus:!1,placeholder:"",autoFocus:!1,defaultSelectedItemId:null,stallThreshold:300,environment:s,shouldPanelShow:function(e){return a(e.state)>0}},e),{},{id:null!==(n=e.id)&&void 0!==n?n:"autocomplete-".concat(u++),initialState:o({selectedItemId:null,query:"",completion:null,collections:[],isOpen:!1,status:"idle",context:{}},e.initialState),plugins:l,onStateChange:function(t){var n;null===(n=e.onStateChange)||void 0===n||n.call(e,t),l.forEach((function(e){var n;null===(n=e.onStateChange)||void 0===n||n.call(e,t)}))},onSubmit:function(t){var n;null===(n=e.onSubmit)||void 0===n||n.call(e,t),l.forEach((function(e){var n;null===(n=e.onSubmit)||void 0===n||n.call(e,t)}))},onReset:function(t){var n;null===(n=e.onReset)||void 0===n||n.call(e,t),l.forEach((function(e){var n;null===(n=e.onReset)||void 0===n||n.call(e,t)}))},getSources:function(n){return Promise.all([].concat(r(l.map((function(e){return e.getSources}))),[e.getSources]).filter(Boolean).map((function(e){return function(e,t){return Promise.resolve(e(t)).then((function(e){return Promise.all(e.filter(Boolean).map((function(e){var t=o({getItemInputValue:function(e){return e.state.query},getItemUrl:function(){},onSelect:function(e){(0,e.setIsOpen)(!1)},onHighlight:p},e);return Promise.resolve(t)})))}))}(e,n)}))).then((function(e){return i(e)})).then((function(e){return e.map((function(e){return o(o({},e),{},{onSelect:function(n){e.onSelect(n),t.forEach((function(e){var t;null===(t=e.onSelect)||void 0===t||t.call(e,n)}))},onHighlight:function(n){e.onHighlight(n),t.forEach((function(e){var t;null===(t=e.onHighlight)||void 0===t||t.call(e,n)}))}})}))}))},navigator:o({navigate:function(e){var t=e.itemUrl;s.location.assign(t)},navigateNewTab:function(e){var t=e.itemUrl,n=s.open(t,"_blank","noopener");n&&n.focus()},navigateNewWindow:function(e){var t=e.itemUrl;s.open(t,"_blank","noopener")}},e.navigator)})}var I=null;function g(e){var t,n=e.query,s=e.event,r=e.store,l=e.props,i=e.setSelectedItemId,u=e.setQuery,a=e.setCollections,c=e.setIsOpen,p=e.setStatus,m=e.setContext,f=e.nextState,g=void 0===f?{}:f,S=e.refresh;return l.onInput?Promise.resolve(l.onInput({query:n,state:r.getState(),setSelectedItemId:i,setQuery:u,setCollections:a,setIsOpen:c,setStatus:p,setContext:m,refresh:S})):(I&&l.environment.clearTimeout(I),u(n),i(l.defaultSelectedItemId),0===n.length&&!1===l.openOnFocus?(p("idle"),a(r.getState().collections.map((function(e){return o(o({},e),{},{items:[]})}))),c(null!==(t=g.isOpen)&&void 0!==t?t:l.shouldPanelShow({state:r.getState()})),Promise.resolve()):(p("loading"),I=l.environment.setTimeout((function(){p("stalled")}),l.stallThreshold),l.getSources({query:n,state:r.getState(),setSelectedItemId:i,setQuery:u,setCollections:a,setIsOpen:c,setStatus:p,setContext:m,refresh:S}).then((function(e){return p("loading"),Promise.all(e.map((function(e){return Promise.resolve(e.getItems({query:n,state:r.getState(),setSelectedItemId:i,setQuery:u,setCollections:a,setIsOpen:c,setStatus:p,setContext:m,refresh:S})).then((function(t){return{source:e,items:t}}))}))).then((function(e){var t;p("idle"),a(e),c(null!==(t=g.isOpen)&&void 0!==t?t:0===n.length&&l.openOnFocus||l.shouldPanelShow({state:r.getState()}));var o=d({state:r.getState()});if(null!==r.getState().selectedItemId&&o){var f=o.item,I=o.itemInputValue,v=o.itemUrl,h=o.source;h.onHighlight({item:f,itemInputValue:I,itemUrl:v,source:h,state:r.getState(),setSelectedItemId:i,setQuery:u,setCollections:a,setIsOpen:c,setStatus:p,setContext:m,refresh:S,event:s})}})).catch((function(e){throw p("error"),e})).finally((function(){I&&l.environment.clearTimeout(I)}))}))))}function S(e){var t=e.store,n=e.props,r=e.setSelectedItemId,l=e.setQuery,i=e.setCollections,u=e.setIsOpen,a=e.setStatus,c=e.setContext,p=e.refresh;return{getEnvironmentProps:function(e){return{onTouchStart:function(o){!1!==t.getState().isOpen&&o.target!==e.inputElement&&(!1===[e.formElement,e.panelElement].some((function(e){return e&&(m(e,o.target)||m(e,n.environment.document.activeElement))}))&&t.dispatch("blur",null))},onTouchMove:function(o){!1!==t.getState().isOpen&&e.inputElement===n.environment.document.activeElement&&o.target!==e.inputElement&&e.inputElement.blur()}}},getRootProps:function(e){return o({role:"combobox","aria-expanded":t.getState().isOpen,"aria-haspopup":"listbox","aria-owns":t.getState().isOpen?"".concat(n.id,"-list"):void 0,"aria-labelledby":"".concat(n.id,"-label")},e)},getFormProps:function(e){e.inputElement;return o({action:"",noValidate:!0,role:"search",onSubmit:function(o){o.preventDefault(),n.onSubmit({state:t.getState(),setSelectedItemId:r,setQuery:l,setCollections:i,setIsOpen:u,setStatus:a,setContext:c,refresh:p,event:o}),t.dispatch("submit",null),e.inputElement&&e.inputElement.blur()},onReset:function(o){o.preventDefault(),n.onReset({state:t.getState(),setSelectedItemId:r,setQuery:l,setCollections:i,setIsOpen:u,setStatus:a,setContext:c,refresh:p,event:o}),t.dispatch("reset",null),e.inputElement&&e.inputElement.focus()}},s(e,["inputElement"]))},getLabelProps:function(e){return o({htmlFor:"".concat(n.id,"-input"),id:"".concat(n.id,"-label")},e)},getInputProps:function(e){function m(e){(n.openOnFocus||t.getState().query.length>0)&&g({query:t.getState().completion||t.getState().query,event:e,store:t,props:n,setSelectedItemId:r,setQuery:l,setCollections:i,setIsOpen:u,setStatus:a,setContext:c,refresh:p}),t.dispatch("focus",null)}var f="ontouchstart"in n.environment,I=e||{},S=(I.inputElement,I.maxLength),v=void 0===S?512:S,h=s(I,["inputElement","maxLength"]);return o({"aria-autocomplete":"both","aria-activedescendant":t.getState().isOpen&&null!==t.getState().selectedItemId?"".concat(n.id,"-item-").concat(t.getState().selectedItemId):void 0,"aria-controls":t.getState().isOpen?"".concat(n.id,"-list"):void 0,"aria-labelledby":"".concat(n.id,"-label"),value:t.getState().completion||t.getState().query,id:"".concat(n.id,"-input"),autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",spellCheck:"false",autoFocus:n.autoFocus,placeholder:n.placeholder,maxLength:v,type:"search",onChange:function(e){g({query:e.currentTarget.value.slice(0,v),event:e,store:t,props:n,setSelectedItemId:r,setQuery:l,setCollections:i,setIsOpen:u,setStatus:a,setContext:c,refresh:p})},onKeyDown:function(e){!function(e){var t=e.event,n=e.store,o=e.props,s=e.setSelectedItemId,r=e.setQuery,l=e.setCollections,i=e.setIsOpen,u=e.setStatus,a=e.setContext,c=e.refresh;if("ArrowUp"===t.key||"ArrowDown"===t.key){t.preventDefault(),n.dispatch(t.key,null);var p=o.environment.document.getElementById("".concat(o.id,"-item-").concat(n.getState().selectedItemId));p&&(p.scrollIntoViewIfNeeded?p.scrollIntoViewIfNeeded(!1):p.scrollIntoView(!1));var m=d({state:n.getState()});if(null!==n.getState().selectedItemId&&m){var f=m.item,I=m.itemInputValue,S=m.itemUrl,v=m.source;v.onHighlight({item:f,itemInputValue:I,itemUrl:S,source:v,state:n.getState(),setSelectedItemId:s,setQuery:r,setCollections:l,setIsOpen:i,setStatus:u,setContext:a,refresh:c,event:t})}}else if("Escape"===t.key)t.preventDefault(),n.dispatch(t.key,null);else if("Enter"===t.key){if(null===n.getState().selectedItemId||n.getState().collections.every((function(e){return 0===e.items.length})))return;t.preventDefault();var h=d({state:n.getState()}),y=h.item,O=h.itemInputValue,b=h.itemUrl,C=h.source;if(t.metaKey||t.ctrlKey)void 0!==b&&(C.onSelect({item:y,itemInputValue:O,itemUrl:b,source:C,state:n.getState(),setSelectedItemId:s,setQuery:r,setCollections:l,setIsOpen:i,setStatus:u,setContext:a,refresh:c,event:t}),o.navigator.navigateNewTab({itemUrl:b,item:y,state:n.getState()}));else if(t.shiftKey)void 0!==b&&(C.onSelect({item:y,itemInputValue:O,itemUrl:b,source:C,state:n.getState(),setSelectedItemId:s,setQuery:r,setCollections:l,setIsOpen:i,setStatus:u,setContext:a,refresh:c,event:t}),o.navigator.navigateNewWindow({itemUrl:b,item:y,state:n.getState()}));else if(t.altKey);else{if(void 0!==b)return C.onSelect({item:y,itemInputValue:O,itemUrl:b,source:C,state:n.getState(),setSelectedItemId:s,setQuery:r,setCollections:l,setIsOpen:i,setStatus:u,setContext:a,refresh:c,event:t}),void o.navigator.navigate({itemUrl:b,item:y,state:n.getState()});g({query:O,event:t,store:n,props:o,setSelectedItemId:s,setQuery:r,setCollections:l,setIsOpen:i,setStatus:u,setContext:a,nextState:{isOpen:!1},refresh:c}).then((function(){C.onSelect({item:y,itemInputValue:O,itemUrl:b,source:C,state:n.getState(),setSelectedItemId:s,setQuery:r,setCollections:l,setIsOpen:i,setStatus:u,setContext:a,refresh:c,event:t})}))}}}({event:e,store:t,props:n,setSelectedItemId:r,setQuery:l,setCollections:i,setIsOpen:u,setStatus:a,setContext:c,refresh:p})},onFocus:m,onBlur:function(){f||t.dispatch("blur",null)},onClick:function(o){e.inputElement!==n.environment.document.activeElement||t.getState().isOpen||m(o)}},h)},getPanelProps:function(e){return o({onMouseDown:function(e){e.preventDefault()},onMouseLeave:function(){t.dispatch("mouseleave",null)}},e)},getListProps:function(e){return o({role:"listbox","aria-labelledby":"".concat(n.id,"-label"),id:"".concat(n.id,"-list")},e)},getItemProps:function(e){var m=e.item,f=e.source,I=s(e,["item","source"]);return o({id:"".concat(n.id,"-item-").concat(m.__autocomplete_id),role:"option","aria-selected":t.getState().selectedItemId===m.__autocomplete_id,onMouseMove:function(e){if(m.__autocomplete_id!==t.getState().selectedItemId){t.dispatch("mousemove",m.__autocomplete_id);var n=d({state:t.getState()});if(null!==t.getState().selectedItemId&&n){var o=n.item,s=n.itemInputValue,f=n.itemUrl,I=n.source;I.onHighlight({item:o,itemInputValue:s,itemUrl:f,source:I,state:t.getState(),setSelectedItemId:r,setQuery:l,setCollections:i,setIsOpen:u,setStatus:a,setContext:c,refresh:p,event:e})}}},onMouseDown:function(e){e.preventDefault()},onClick:function(e){var o=f.getItemInputValue({item:m,state:t.getState()}),s=f.getItemUrl({item:m,state:t.getState()});(s?Promise.resolve():g({query:o,event:e,store:t,props:n,setSelectedItemId:r,setQuery:l,setCollections:i,setIsOpen:u,setStatus:a,setContext:c,refresh:p,nextState:{isOpen:!1}})).then((function(){f.onSelect({item:m,itemInputValue:o,itemUrl:s,source:f,state:t.getState(),setSelectedItemId:r,setQuery:l,setCollections:i,setIsOpen:u,setStatus:a,setContext:c,refresh:p,event:e})}))}},I)}}}function v(e){var t=e.state;return!1===t.isOpen||null===t.selectedItemId?null:d({state:t}).itemInputValue||null}var h=function(e,t){switch(t.type){case"setSelectedItemId":return o(o({},e),{},{selectedItemId: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),{},{selectedItemId:c(1,e.selectedItemId,a(e),t.props.defaultSelectedItemId)});return o(o({},n),{},{completion:v({state:n})});case"ArrowUp":var s=o(o({},e),{},{selectedItemId:c(-1,e.selectedItemId,a(e),t.props.defaultSelectedItemId)});return o(o({},s),{},{completion:v({state:s})});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),{},{selectedItemId:null,isOpen:!1,status:"idle"});case"reset":return o(o({},e),{},{selectedItemId:!0===t.props.openOnFocus?t.props.defaultSelectedItemId:null,status:"idle",query:""});case"focus":return o(o({},e),{},{selectedItemId:t.props.defaultSelectedItemId,isOpen:t.props.openOnFocus||e.query.length>0});case"blur":return t.props.debug?e:o(o({},e),{},{isOpen:!1,selectedItemId:null});case"mousemove":return o(o({},e),{},{selectedItemId:t.payload});case"mouseleave":return o(o({},e),{},{selectedItemId:t.props.defaultSelectedItemId});default:return e}};e.createAutocomplete=function(e){var t=[],n=f(e,t),s=function(e,t){var n=t.initialState;return{getState:function(){return n},dispatch:function(s,r){var l=o({},n);n=e(n,{type:s,props:t,payload:r}),t.onStateChange({state:n,prevState:l})}}}(h,n),r=function(e){var t=e.store;return{setSelectedItemId:function(e){t.dispatch("setSelectedItemId",e)},setQuery:function(e){t.dispatch("setQuery",e)},setCollections:function(e){var n=0,s=e.map((function(e){return o(o({},e),{},{items:i(e.items).map((function(e){return o(o({},e),{},{__autocomplete_id:n++})}))})}));t.dispatch("setCollections",s)},setIsOpen:function(e){t.dispatch("setIsOpen",e)},setStatus:function(e){t.dispatch("setStatus",e)},setContext:function(e){t.dispatch("setContext",e)}}}({store:s}),l=r.setSelectedItemId,u=r.setQuery,a=r.setCollections,c=r.setIsOpen,p=r.setStatus,d=r.setContext,m=S({store:s,props:n,setSelectedItemId:l,setQuery:u,setCollections:a,setIsOpen:c,setStatus:p,setContext:d,refresh:w}),I=m.getEnvironmentProps,v=m.getRootProps,y=m.getFormProps,O=m.getLabelProps,b=m.getInputProps,C=m.getPanelProps,P=m.getListProps,x=m.getItemProps;function w(){return g({query:s.getState().query,event:new Event("input"),store:s,props:n,setSelectedItemId:l,setQuery:u,setCollections:a,setIsOpen:c,setStatus:p,setContext:d,nextState:{isOpen:s.getState().isOpen},refresh:w})}return n.plugins.forEach((function(e){var n;return null===(n=e.subscribe)||void 0===n?void 0:n.call(e,{setSelectedItemId:l,setQuery:u,setCollections:a,setIsOpen:c,setStatus:p,setContext:d,onSelect:function(e){t.push({onSelect:e})},onHighlight:function(e){t.push({onHighlight:e})}})})),{setSelectedItemId:l,setQuery:u,setCollections:a,setIsOpen:c,setStatus:p,setContext:d,getEnvironmentProps:I,getRootProps:v,getFormProps:y,getInputProps:b,getLabelProps:O,getPanelProps:C,getListProps:P,getItemProps:x,refresh:w}},e.getDefaultProps=f,e.version="1.0.0-alpha.37",Object.defineProperty(e,"__esModule",{value:!0})}));
/*! @algolia/autocomplete-core 1.0.0-alpha.38 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete.js */
!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 u(e){return function(e){if(Array.isArray(e))return l(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 l(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 l(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 l(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function a(e){return e.reduce((function(e,t){return e.concat(t)}),[])}var c=0;function s(e){return 0===e.collections.length?0:e.collections.reduce((function(e,t){return e+t.items.length}),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.selectedItemId?t+1:t}),0);return e.collections[t]}(e);if(!t)return null;var n=t.items[function(e){for(var t=e.state,n=e.collection,r=!1,o=0,i=0;!1===r;){var u=t.collections[o];if(u===n){r=!0;break}i+=u.items.length,o++}return t.selectedItemId-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 d(e,t){return e===t||e.contains(t)}function v(e,n){var r,i="undefined"!=typeof window?window:{},l=e.plugins||[];return o(o({debug:!1,openOnFocus:!1,placeholder:"",autoFocus:!1,defaultSelectedItemId:null,stallThreshold:300,environment:i,shouldPanelShow:function(e){return s(e.state)>0}},e),{},{id:null!==(r=e.id)&&void 0!==r?r:"autocomplete-".concat(c++),plugins:l,initialState:o({selectedItemId: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),l.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),l.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),l.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(u(l.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)},onHighlight:p},e);return Promise.resolve(t)})))}))}(e,r)}))).then((function(e){return a(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)}))},onHighlight:function(t){e.onHighlight(t),n.forEach((function(e){var n;return null===(n=e.onHighlight)||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 h(e){var n=e.event,r=e.nextState,u=void 0===r?{}:r,l=e.props,a=e.query,c=e.refresh,s=e.store,f=i(e,["event","nextState","props","query","refresh","store"]);if(l.onInput)return Promise.resolve(l.onInput(o({query:a,refresh:c,state:s.getState()},f)));g&&l.environment.clearTimeout(g);var p,d=f.setCollections,v=f.setIsOpen,h=f.setQuery,S=f.setSelectedItemId,y=f.setStatus;return h(a),S(l.defaultSelectedItemId),0===a.length&&!1===l.openOnFocus?(y("idle"),d(s.getState().collections.map((function(e){return o(o({},e),{},{items:[]})}))),v(null!==(p=u.isOpen)&&void 0!==p?p:l.shouldPanelShow({state:s.getState()})),Promise.resolve()):(y("loading"),g=l.environment.setTimeout((function(){y("stalled")}),l.stallThreshold),l.getSources(o({query:a,refresh:c,state:s.getState()},f)).then((function(e){return y("loading"),Promise.all(e.map((function(e){return Promise.resolve(e.getItems(o({query:a,refresh:c,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;y("idle"),d(e),v(null!==(t=u.isOpen)&&void 0!==t?t:0===a.length&&l.openOnFocus||l.shouldPanelShow({state:s.getState()}));var r=m(s.getState());if(null!==s.getState().selectedItemId&&r){var i=r.item,p=r.itemInputValue,g=r.itemUrl,h=r.source;h.onHighlight(o({event:n,item:i,itemInputValue:p,itemUrl:g,refresh:c,source:h,state:s.getState()},f))}})).catch((function(e){throw y("error"),e})).finally((function(){g&&l.environment.clearTimeout(g)}))})))}function S(e){var t=e.props,n=e.refresh,r=e.store,u=i(e,["props","refresh","store"]);return{getEnvironmentProps:function(e){return{onTouchStart:function(n){!1!==r.getState().isOpen&&n.target!==e.inputElement&&(!1===[e.formElement,e.panelElement].some((function(e){return d(e,n.target)||d(e,t.environment.document.activeElement)}))&&r.dispatch("blur",null))},onTouchMove:function(n){!1!==r.getState().isOpen&&e.inputElement===t.environment.document.activeElement&&n.target!==e.inputElement&&e.inputElement.blur()}}},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 l;i.preventDefault(),t.onSubmit(o({event:i,refresh:n,state:r.getState()},u)),r.dispatch("submit",null),null===(l=e.inputElement)||void 0===l||l.blur()},onReset:function(i){var l;i.preventDefault(),t.onReset(o({event:i,refresh:n,state:r.getState()},u)),r.dispatch("reset",null),null===(l=e.inputElement)||void 0===l||l.focus()}},i(e,["inputElement"]))},getLabelProps:function(e){return o({htmlFor:"".concat(t.id,"-input"),id:"".concat(t.id,"-label")},e)},getInputProps:function(e){function l(e){(t.openOnFocus||r.getState().query.length>0)&&h(o({event:e,props:t,query:r.getState().completion||r.getState().query,refresh:n,store:r},u)),r.dispatch("focus",null)}var a="ontouchstart"in t.environment,c=e||{},s=(c.inputElement,c.maxLength),f=void 0===s?512:s,p=i(c,["inputElement","maxLength"]),d=m(r.getState());return o({"aria-autocomplete":"both","aria-activedescendant":r.getState().isOpen&&null!==r.getState().selectedItemId?"".concat(t.id,"-item-").concat(r.getState().selectedItemId):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!=d&&d.itemUrl?"go":"search",spellCheck:"false",autoFocus:t.autoFocus,placeholder:t.placeholder,maxLength:f,type:"search",onChange:function(e){h(o({event:e,props:t,query:e.currentTarget.value.slice(0,f),refresh:n,store:r},u))},onKeyDown:function(e){!function(e){var t=e.event,n=e.props,r=e.refresh,u=e.store,l=i(e,["event","props","refresh","store"]);if("ArrowUp"===t.key||"ArrowDown"===t.key){t.preventDefault(),u.dispatch(t.key,null);var a=n.environment.document.getElementById("".concat(n.id,"-item-").concat(u.getState().selectedItemId));a&&(a.scrollIntoViewIfNeeded?a.scrollIntoViewIfNeeded(!1):a.scrollIntoView(!1));var c=m(u.getState());if(null!==u.getState().selectedItemId&&c){var s=c.item,f=c.itemInputValue,p=c.itemUrl,d=c.source;d.onHighlight(o({event:t,item:s,itemInputValue:f,itemUrl:p,refresh:r,source:d,state:u.getState()},l))}}else if("Escape"===t.key)t.preventDefault(),u.dispatch(t.key,null);else if("Enter"===t.key){if(null===u.getState().selectedItemId||u.getState().collections.every((function(e){return 0===e.items.length})))return;t.preventDefault();var v=m(u.getState()),g=v.item,S=v.itemInputValue,y=v.itemUrl,I=v.source;if(t.metaKey||t.ctrlKey)void 0!==y&&(I.onSelect(o({event:t,item:g,itemInputValue:S,itemUrl:y,refresh:r,source:I,state:u.getState()},l)),n.navigator.navigateNewTab({itemUrl:y,item:g,state:u.getState()}));else if(t.shiftKey)void 0!==y&&(I.onSelect(o({event:t,item:g,itemInputValue:S,itemUrl:y,refresh:r,source:I,state:u.getState()},l)),n.navigator.navigateNewWindow({itemUrl:y,item:g,state:u.getState()}));else if(t.altKey);else{if(void 0!==y)return I.onSelect(o({event:t,item:g,itemInputValue:S,itemUrl:y,refresh:r,source:I,state:u.getState()},l)),void n.navigator.navigate({itemUrl:y,item:g,state:u.getState()});h(o({event:t,nextState:{isOpen:!1},props:n,query:S,refresh:r,store:u},l)).then((function(){I.onSelect(o({event:t,item:g,itemInputValue:S,itemUrl:y,refresh:r,source:I,state:u.getState()},l))}))}}}(o({event:e,props:t,refresh:n,store:r},u))},onFocus:l,onBlur:function(){a||r.dispatch("blur",null)},onClick:function(n){e.inputElement!==t.environment.document.activeElement||r.getState().isOpen||l(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 l=e.item,a=e.source,c=i(e,["item","source"]);return o({id:"".concat(t.id,"-item-").concat(l.__autocomplete_id),role:"option","aria-selected":r.getState().selectedItemId===l.__autocomplete_id,onMouseMove:function(e){if(l.__autocomplete_id!==r.getState().selectedItemId){r.dispatch("mousemove",l.__autocomplete_id);var t=m(r.getState());if(null!==r.getState().selectedItemId&&t){var i=t.item,a=t.itemInputValue,c=t.itemUrl,s=t.source;s.onHighlight(o({event:e,item:i,itemInputValue:a,itemUrl:c,refresh:n,source:s,state:r.getState()},u))}}},onMouseDown:function(e){e.preventDefault()},onClick:function(e){var i=a.getItemInputValue({item:l,state:r.getState()}),c=a.getItemUrl({item:l,state:r.getState()});(c?Promise.resolve():h(o({event:e,nextState:{isOpen:!1},props:t,query:i,refresh:n,store:r},u))).then((function(){a.onSelect(o({event:e,item:l,itemInputValue:i,itemUrl:c,refresh:n,source:a,state:r.getState()},u))}))}},c)}}}function y(e){var t=e.state;return!1===t.isOpen||null===t.selectedItemId?null:m(t).itemInputValue||null}var I=function(e,t){switch(t.type){case"setSelectedItemId":return o(o({},e),{},{selectedItemId: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),{},{selectedItemId:f(1,e.selectedItemId,s(e),t.props.defaultSelectedItemId)});return o(o({},n),{},{completion:y({state:n})});case"ArrowUp":var r=o(o({},e),{},{selectedItemId:f(-1,e.selectedItemId,s(e),t.props.defaultSelectedItemId)});return o(o({},r),{},{completion:y({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),{},{selectedItemId:null,isOpen:!1,status:"idle"});case"reset":return o(o({},e),{},{selectedItemId:!0===t.props.openOnFocus?t.props.defaultSelectedItemId:null,status:"idle",query:""});case"focus":return o(o({},e),{},{selectedItemId:t.props.defaultSelectedItemId,isOpen:t.props.openOnFocus||e.query.length>0});case"blur":return t.props.debug?e:o(o({},e),{},{isOpen:!1,selectedItemId:null});case"mousemove":return o(o({},e),{},{selectedItemId:t.payload});case"mouseleave":return o(o({},e),{},{selectedItemId:t.props.defaultSelectedItemId});default:return"The reducer action ".concat(JSON.stringify(t.type)," is not supported."),e}};e.createAutocomplete=function(e){var t=[],n=v(e,t),r=function(e,t){var n=t.initialState;return{getState:function(){return n},dispatch:function(r,i){var u=o({},n);n=e(n,{type:r,props:t,payload:i}),t.onStateChange({state:n,prevState:u})}}}(I,n),i=function(e){var t=e.store;return{setSelectedItemId:function(e){t.dispatch("setSelectedItemId",e)},setQuery:function(e){t.dispatch("setQuery",e)},setCollections:function(e){var n=0,r=e.map((function(e){return o(o({},e),{},{items:a(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}),u=S(o({props:n,refresh:l,store:r},i));function l(){return h(o({event:new Event("input"),nextState:{isOpen:r.getState().isOpen},props:n,query:r.getState().query,refresh:l,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),{},{onSelect:function(e){t.push({onSelect:e})},onHighlight:function(e){t.push({onHighlight:e})}}))})),o(o({refresh:l},u),i)},e.getDefaultProps=v,e.version="1.0.0-alpha.38",Object.defineProperty(e,"__esModule",{value:!0})}));
//# sourceMappingURL=index.production.js.map
{
"name": "@algolia/autocomplete-core",
"description": "Core primitives for building autocomplete experiences.",
"version": "1.0.0-alpha.37",
"version": "1.0.0-alpha.38",
"license": "MIT",

@@ -34,4 +34,4 @@ "homepage": "https://github.com/algolia/autocomplete.js",

"dependencies": {
"@algolia/autocomplete-shared": "1.0.0-alpha.37"
"@algolia/autocomplete-shared": "1.0.0-alpha.38"
}
}

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc