@algolia/autocomplete-core
Advanced tools
Comparing version 1.0.0-alpha.37 to 1.0.0-alpha.38
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
257963
2860
+ Added@algolia/autocomplete-shared@1.0.0-alpha.38(transitive)
- Removed@algolia/autocomplete-shared@1.0.0-alpha.37(transitive)