@algolia/autocomplete-plugin-recent-searches 1.5.0 → 1.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
/*! @algolia/autocomplete-plugin-recent-searches 1.5.
|
|
1
|
+
/*! @algolia/autocomplete-plugin-recent-searches 1.5.1 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete */
|
|
2
2
|
(function (global, factory) {
|
|
3
3
|
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
|
|
4
4
|
typeof define === 'function' && define.amd ? define(['exports'], factory) :
|
|
5
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global[
|
|
6
|
-
}(this, (function (exports) { 'use strict';
|
|
5
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["@algolia/autocomplete-plugin-recent-searches"] = {}));
|
|
6
|
+
})(this, (function (exports) { 'use strict';
|
|
7
7
|
|
|
8
8
|
function ownKeys(object, enumerableOnly) {
|
|
9
9
|
var keys = Object.keys(object);
|
|
@@ -304,7 +304,7 @@
|
|
|
304
304
|
}
|
|
305
305
|
|
|
306
306
|
function createRecentSearchesPlugin(options) {
|
|
307
|
-
var _getOptions = getOptions(options),
|
|
307
|
+
var _getOptions = getOptions$1(options),
|
|
308
308
|
storage = _getOptions.storage,
|
|
309
309
|
transformSource = _getOptions.transformSource,
|
|
310
310
|
subscribe = _getOptions.subscribe;
|
|
@@ -396,7 +396,7 @@
|
|
|
396
396
|
};
|
|
397
397
|
}
|
|
398
398
|
|
|
399
|
-
function getOptions(options) {
|
|
399
|
+
function getOptions$1(options) {
|
|
400
400
|
return _objectSpread2({
|
|
401
401
|
transformSource: function transformSource(_ref6) {
|
|
402
402
|
var source = _ref6.source;
|
|
@@ -430,7 +430,7 @@
|
|
|
430
430
|
}
|
|
431
431
|
|
|
432
432
|
function createLocalStorageRecentSearchesPlugin(options) {
|
|
433
|
-
var _getOptions = getOptions
|
|
433
|
+
var _getOptions = getOptions(options),
|
|
434
434
|
key = _getOptions.key,
|
|
435
435
|
limit = _getOptions.limit,
|
|
436
436
|
transformSource = _getOptions.transformSource,
|
|
@@ -453,7 +453,7 @@
|
|
|
453
453
|
});
|
|
454
454
|
}
|
|
455
455
|
|
|
456
|
-
function getOptions
|
|
456
|
+
function getOptions(options) {
|
|
457
457
|
return _objectSpread2({
|
|
458
458
|
limit: 5,
|
|
459
459
|
search: search,
|
|
@@ -472,5 +472,5 @@
|
|
|
472
472
|
|
|
473
473
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
474
474
|
|
|
475
|
-
}))
|
|
475
|
+
}));
|
|
476
476
|
//# sourceMappingURL=index.development.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.development.js","sources":["../../src/addHighlightedAttribute.ts","../../src/constants.ts","../../src/getLocalStorage.ts","../../src/createLocalStorage.ts","../../../autocomplete-shared/dist/esm/createRef.js","../../../autocomplete-shared/dist/esm/warn.js","../../src/createStorageApi.ts","../../src/getTemplates.tsx","../../src/createRecentSearchesPlugin.ts","../../src/search.ts","../../src/createLocalStorageRecentSearchesPlugin.ts"],"sourcesContent":["import { Highlighted, HistoryItem } from './types';\n\ntype HighlightParams<TItem> = {\n item: TItem;\n query: string;\n};\n\nexport function addHighlightedAttribute<TItem extends HistoryItem>({\n item,\n query,\n}: HighlightParams<TItem>): Highlighted<TItem> {\n return {\n ...item,\n _highlightResult: {\n label: {\n value: query\n ? item.label.replace(\n new RegExp(query.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'), 'gi'),\n (match) => {\n return `__aa-highlight__${match}__/aa-highlight__`;\n }\n )\n : item.label,\n },\n },\n };\n}\n","export const LOCAL_STORAGE_KEY = 'AUTOCOMPLETE_RECENT_SEARCHES';\nexport const LOCAL_STORAGE_KEY_TEST =\n '__AUTOCOMPLETE_RECENT_SEARCHES_PLUGIN_TEST_KEY__';\n","import { LOCAL_STORAGE_KEY_TEST } from './constants';\n\nfunction isLocalStorageSupported() {\n try {\n localStorage.setItem(LOCAL_STORAGE_KEY_TEST, '');\n localStorage.removeItem(LOCAL_STORAGE_KEY_TEST);\n\n return true;\n } catch (error) {\n return false;\n }\n}\n\ntype LocalStorageProps = {\n key: string;\n};\n\nexport function getLocalStorage<TItem>({ key }: LocalStorageProps) {\n if (!isLocalStorageSupported()) {\n return {\n setItem() {},\n getItem() {\n return [];\n },\n };\n }\n\n return {\n setItem(items: TItem[]) {\n return window.localStorage.setItem(key, JSON.stringify(items));\n },\n getItem(): TItem[] {\n const items = window.localStorage.getItem(key);\n\n return items ? (JSON.parse(items) as TItem[]) : [];\n },\n };\n}\n","import { CreateRecentSearchesLocalStorageOptions } from './createLocalStorageRecentSearchesPlugin';\nimport { getLocalStorage } from './getLocalStorage';\nimport { HistoryItem, Storage } from './types';\n\nexport type CreateLocalStorageProps<TItem extends HistoryItem> = Required<\n CreateRecentSearchesLocalStorageOptions<TItem>\n>;\n\nexport function createLocalStorage<TItem extends HistoryItem>({\n key,\n limit,\n search,\n}: CreateLocalStorageProps<TItem>): Storage<TItem> {\n const storage = getLocalStorage<TItem>({ key });\n\n return {\n onAdd(item) {\n storage.setItem([item, ...storage.getItem()]);\n },\n onRemove(id) {\n storage.setItem(storage.getItem().filter((x) => x.id !== id));\n },\n getAll(query = '') {\n return search({ query, items: storage.getItem(), limit }).slice(0, limit);\n },\n };\n}\n","export function createRef(initialValue) {\n return {\n current: initialValue\n };\n}","export var warnCache = {\n current: {}\n};\n/**\n * Logs a warning if the condition is not met.\n * This is used to log issues in development environment only.\n */\n\nexport function warn(condition, message) {\n if (!(process.env.NODE_ENV !== 'production')) {\n return;\n }\n\n if (condition) {\n return;\n }\n\n var sanitizedMessage = message.trim();\n var hasAlreadyPrinted = warnCache.current[sanitizedMessage];\n\n if (!hasAlreadyPrinted) {\n warnCache.current[sanitizedMessage] = true; // eslint-disable-next-line no-console\n\n console.warn(\"[Autocomplete] \".concat(sanitizedMessage));\n }\n}","import { HistoryItem, Storage, StorageApi } from './types';\n\nexport function createStorageApi<TItem extends HistoryItem>(\n storage: Storage<TItem>\n): StorageApi<TItem> {\n return {\n addItem(item) {\n storage.onRemove(item.id);\n storage.onAdd(item);\n },\n removeItem(id) {\n storage.onRemove(id);\n },\n getAll(query) {\n return storage.getAll(query);\n },\n };\n}\n","/** @jsx createElement */\nimport { SourceTemplates } from '@algolia/autocomplete-js';\n\nimport { RecentSearchesItem } from './types';\n\nexport type GetTemplatesParams<TItem extends RecentSearchesItem> = {\n onRemove(id: string): void;\n onTapAhead(item: TItem): void;\n};\n\nexport function getTemplates<TItem extends RecentSearchesItem>({\n onRemove,\n onTapAhead,\n}: GetTemplatesParams<TItem>): SourceTemplates<TItem> {\n return {\n item({ item, createElement, components }) {\n return (\n <div className=\"aa-ItemWrapper\">\n <div className=\"aa-ItemContent\">\n <div className=\"aa-ItemIcon aa-ItemIcon--noBorder\">\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M12.516 6.984v5.25l4.5 2.672-0.75 1.266-5.25-3.188v-6h1.5zM12 20.016q3.281 0 5.648-2.367t2.367-5.648-2.367-5.648-5.648-2.367-5.648 2.367-2.367 5.648 2.367 5.648 5.648 2.367zM12 2.016q4.125 0 7.055 2.93t2.93 7.055-2.93 7.055-7.055 2.93-7.055-2.93-2.93-7.055 2.93-7.055 7.055-2.93z\" />\n </svg>\n </div>\n <div className=\"aa-ItemContentBody\">\n <div className=\"aa-ItemContentTitle\">\n <components.ReverseHighlight hit={item} attribute=\"label\" />\n {item.category && (\n <span className=\"aa-ItemContentSubtitle aa-ItemContentSubtitle--inline\">\n <span className=\"aa-ItemContentSubtitleIcon\" /> in{' '}\n <span className=\"aa-ItemContentSubtitleCategory\">\n {item.category}\n </span>\n </span>\n )}\n </div>\n </div>\n </div>\n <div className=\"aa-ItemActions\">\n <button\n className=\"aa-ItemActionButton\"\n title=\"Remove this search\"\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n onRemove(item.id);\n }}\n >\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M18 7v13c0 0.276-0.111 0.525-0.293 0.707s-0.431 0.293-0.707 0.293h-10c-0.276 0-0.525-0.111-0.707-0.293s-0.293-0.431-0.293-0.707v-13zM17 5v-1c0-0.828-0.337-1.58-0.879-2.121s-1.293-0.879-2.121-0.879h-4c-0.828 0-1.58 0.337-2.121 0.879s-0.879 1.293-0.879 2.121v1h-4c-0.552 0-1 0.448-1 1s0.448 1 1 1h1v13c0 0.828 0.337 1.58 0.879 2.121s1.293 0.879 2.121 0.879h10c0.828 0 1.58-0.337 2.121-0.879s0.879-1.293 0.879-2.121v-13h1c0.552 0 1-0.448 1-1s-0.448-1-1-1zM9 5v-1c0-0.276 0.111-0.525 0.293-0.707s0.431-0.293 0.707-0.293h4c0.276 0 0.525 0.111 0.707 0.293s0.293 0.431 0.293 0.707v1zM9 11v6c0 0.552 0.448 1 1 1s1-0.448 1-1v-6c0-0.552-0.448-1-1-1s-1 0.448-1 1zM13 11v6c0 0.552 0.448 1 1 1s1-0.448 1-1v-6c0-0.552-0.448-1-1-1s-1 0.448-1 1z\" />\n </svg>\n </button>\n <button\n className=\"aa-ItemActionButton\"\n title={`Fill query with \"${item.label}\"`}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n onTapAhead(item);\n }}\n >\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M8 17v-7.586l8.293 8.293c0.391 0.391 1.024 0.391 1.414 0s0.391-1.024 0-1.414l-8.293-8.293h7.586c0.552 0 1-0.448 1-1s-0.448-1-1-1h-10c-0.552 0-1 0.448-1 1v10c0 0.552 0.448 1 1 1s1-0.448 1-1z\" />\n </svg>\n </button>\n </div>\n </div>\n );\n },\n };\n}\n","import { PluginSubscribeParams } from '@algolia/autocomplete-core';\nimport {\n AutocompleteSource,\n AutocompleteState,\n AutocompletePlugin,\n} from '@algolia/autocomplete-js';\nimport { createRef, MaybePromise, warn } from '@algolia/autocomplete-shared';\nimport { SearchOptions } from '@algolia/client-search';\n\nimport { createStorageApi } from './createStorageApi';\nimport { getTemplates } from './getTemplates';\nimport { RecentSearchesItem, Storage, StorageApi } from './types';\n\nexport interface RecentSearchesPluginData<TItem extends RecentSearchesItem>\n extends StorageApi<TItem> {\n /**\n * Optimized [Algolia search parameters](https://www.algolia.com/doc/api-reference/search-api-parameters/). This is useful when using the plugin along with the [Query Suggestions](createQuerySuggestionsPlugin) plugin.\n *\n * This function enhances the provided search parameters by:\n * - Excluding Query Suggestions that are already displayed in recent searches.\n * - Using a shared `hitsPerPage` value to get a group limit of Query Suggestions and recent searches.\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-recent-searches/createLocalStorageRecentSearchesPlugin/#param-getalgoliasearchparams\n */\n getAlgoliaSearchParams(params?: SearchOptions): SearchOptions;\n}\n\nexport type CreateRecentSearchesPluginParams<\n TItem extends RecentSearchesItem\n> = {\n /**\n * The storage to fetch from and save recent searches into.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-recent-searches/createRecentSearchesPlugin/#param-storage\n */\n storage: Storage<TItem>;\n /**\n * A function to transform the provided source.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-recent-searches/createRecentSearchesPlugin/#param-transformsource\n */\n transformSource?(params: {\n source: AutocompleteSource<TItem>;\n state: AutocompleteState<TItem>;\n onRemove(id: string): void;\n onTapAhead(item: TItem): void;\n }): AutocompleteSource<TItem>;\n subscribe?(params: PluginSubscribeParams<TItem>): void;\n};\n\nfunction getDefaultSubcribe<TItem extends RecentSearchesItem>(\n store: StorageApi<TItem>\n) {\n return function subscribe({ onSelect }: PluginSubscribeParams<TItem>) {\n onSelect(({ item, state, source }) => {\n const inputValue = source.getItemInputValue({ item, state });\n\n if (source.sourceId === 'querySuggestionsPlugin' && inputValue) {\n const recentItem: RecentSearchesItem = {\n id: inputValue,\n label: inputValue,\n category: (item as any).__autocomplete_qsCategory,\n };\n store.addItem(recentItem as TItem);\n }\n });\n };\n}\n\nexport function createRecentSearchesPlugin<TItem extends RecentSearchesItem>(\n options: CreateRecentSearchesPluginParams<TItem>\n): AutocompletePlugin<TItem, RecentSearchesPluginData<TItem>> {\n const { storage, transformSource, subscribe } = getOptions(options);\n const store = createStorageApi<TItem>(storage);\n const lastItemsRef = createRef<MaybePromise<TItem[]>>([]);\n\n return {\n name: 'aa.recentSearchesPlugin',\n subscribe: subscribe ?? getDefaultSubcribe(store),\n onSubmit({ state }) {\n const { query } = state;\n\n if (query) {\n const recentItem: RecentSearchesItem = {\n id: query,\n label: query,\n };\n store.addItem(recentItem as TItem);\n }\n },\n getSources({ query, setQuery, refresh, state }) {\n lastItemsRef.current = store.getAll(query);\n\n function onRemove(id: string) {\n store.removeItem(id);\n refresh();\n }\n\n function onTapAhead(item: TItem) {\n setQuery(item.label);\n refresh();\n }\n\n return Promise.resolve(lastItemsRef.current).then((items) => {\n if (items.length === 0) {\n return [];\n }\n\n return [\n transformSource({\n source: {\n sourceId: 'recentSearchesPlugin',\n getItemInputValue({ item }) {\n return item.label;\n },\n getItems() {\n return items;\n },\n templates: getTemplates({ onRemove, onTapAhead }),\n },\n onRemove,\n onTapAhead,\n state: state as AutocompleteState<TItem>,\n }),\n ];\n });\n },\n data: {\n ...store,\n // @ts-ignore SearchOptions `facetFilters` is ReadonlyArray\n getAlgoliaSearchParams(params = {}) {\n // If the items returned by `store.getAll` are contained in a Promise,\n // we cannot provide the search params in time when this function is called\n // because we need to resolve the promise before getting the value.\n if (!Array.isArray(lastItemsRef.current)) {\n warn(\n false,\n 'The `getAlgoliaSearchParams` function is not supported with storages that return promises in `getAll`.'\n );\n return params;\n }\n\n return {\n ...params,\n facetFilters: [\n ...(params.facetFilters ?? []),\n // @TODO: we need to base the filter on the `query` attribute, not\n // `objectID`, because the Query Suggestions index cannot ensure\n // that the `objectID` will always be equal to the query.\n ...lastItemsRef.current.map((item) => [`objectID:-${item.label}`]),\n ],\n hitsPerPage: Math.max(\n 1,\n (params.hitsPerPage ?? 10) - lastItemsRef.current.length\n ),\n };\n },\n },\n __autocomplete_pluginOptions: options,\n };\n}\n\nfunction getOptions<TItem extends RecentSearchesItem>(\n options: CreateRecentSearchesPluginParams<TItem>\n) {\n return {\n transformSource: ({ source }) => source,\n ...options,\n };\n}\n","import { addHighlightedAttribute } from './addHighlightedAttribute';\nimport { Highlighted, RecentSearchesItem } from './types';\n\nexport type SearchParams<TItem extends RecentSearchesItem> = {\n query: string;\n items: TItem[];\n limit: number;\n};\n\nexport function search<TItem extends RecentSearchesItem>({\n query,\n items,\n limit,\n}: SearchParams<TItem>): Array<Highlighted<TItem>> {\n if (!query) {\n return items\n .slice(0, limit)\n .map((item) => addHighlightedAttribute({ item, query }));\n }\n\n return items\n .filter((item) => item.label.toLowerCase().includes(query.toLowerCase()))\n .slice(0, limit)\n .map((item) => addHighlightedAttribute({ item, query }));\n}\n","import { AutocompletePlugin } from '@algolia/autocomplete-js';\n\nimport { LOCAL_STORAGE_KEY } from './constants';\nimport { createLocalStorage } from './createLocalStorage';\nimport {\n createRecentSearchesPlugin,\n CreateRecentSearchesPluginParams,\n RecentSearchesPluginData,\n} from './createRecentSearchesPlugin';\nimport { search as defaultSearch, SearchParams } from './search';\nimport { Highlighted, RecentSearchesItem } from './types';\n\nexport type CreateRecentSearchesLocalStorageOptions<\n TItem extends RecentSearchesItem\n> = {\n /**\n * A local storage key to identify where to save and retrieve the recent searches.\n *\n * For example:\n * - \"navbar\"\n * - \"search\"\n * - \"main\"\n *\n * The plugin namespaces all keys to avoid collisions.\n *\n * @example \"top_searchbar\"\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-recent-searches/createLocalStorageRecentSearchesPlugin/#param-key\n */\n key: string;\n\n /**\n * The number of recent searches to display.\n *\n * @default 5\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-recent-searches/createLocalStorageRecentSearchesPlugin/#param-limit\n */\n limit?: number;\n\n /**\n * A search function to retrieve recent searches from.\n *\n * This function is called in [`storage.getAll`](https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-recent-searches/createRecentSearchesPlugin/#param-storage) to retrieve recent searches and is useful to filter and highlight recent searches when typing a query.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-recent-searches/createLocalStorageRecentSearchesPlugin/#param-search\n */\n search?(params: SearchParams<TItem>): Array<Highlighted<TItem>>;\n};\n\ntype LocalStorageRecentSearchesPluginOptions<\n TItem extends RecentSearchesItem\n> = Pick<\n CreateRecentSearchesPluginParams<TItem>,\n 'transformSource' | 'subscribe'\n> &\n CreateRecentSearchesLocalStorageOptions<TItem>;\n\nexport function createLocalStorageRecentSearchesPlugin<\n TItem extends RecentSearchesItem\n>(\n options: LocalStorageRecentSearchesPluginOptions<TItem>\n): AutocompletePlugin<TItem, RecentSearchesPluginData<TItem>> {\n const { key, limit, transformSource, search, subscribe } = getOptions(\n options\n );\n const storage = createLocalStorage<TItem>({\n key: [LOCAL_STORAGE_KEY, key].join(':'),\n limit,\n search,\n });\n\n const recentSearchesPlugin = createRecentSearchesPlugin<TItem>({\n transformSource,\n storage,\n subscribe,\n });\n\n return {\n ...recentSearchesPlugin,\n name: 'aa.localStorageRecentSearchesPlugin',\n __autocomplete_pluginOptions: options,\n };\n}\n\nfunction getOptions<TItem extends RecentSearchesItem>(\n options: LocalStorageRecentSearchesPluginOptions<TItem>\n) {\n return {\n limit: 5,\n search: defaultSearch,\n transformSource: ({ source }) => source,\n ...options,\n };\n}\n"],"names":["addHighlightedAttribute","item","query","_highlightResult","label","value","replace","RegExp","match","LOCAL_STORAGE_KEY","LOCAL_STORAGE_KEY_TEST","isLocalStorageSupported","localStorage","setItem","removeItem","error","getLocalStorage","key","getItem","items","window","JSON","stringify","parse","createLocalStorage","limit","search","storage","onAdd","onRemove","id","filter","x","getAll","slice","createRef","initialValue","current","warnCache","warn","condition","message","sanitizedMessage","trim","hasAlreadyPrinted","console","concat","createStorageApi","addItem","getTemplates","onTapAhead","createElement","components","category","event","preventDefault","stopPropagation","getDefaultSubcribe","store","subscribe","onSelect","state","source","inputValue","getItemInputValue","sourceId","recentItem","__autocomplete_qsCategory","createRecentSearchesPlugin","options","getOptions","transformSource","lastItemsRef","name","onSubmit","getSources","setQuery","refresh","Promise","resolve","then","length","getItems","templates","data","getAlgoliaSearchParams","params","Array","isArray","process","facetFilters","map","hitsPerPage","Math","max","__autocomplete_pluginOptions","toLowerCase","includes","createLocalStorageRecentSearchesPlugin","join","recentSearchesPlugin","defaultSearch"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.development.js","sources":["../../src/addHighlightedAttribute.ts","../../src/constants.ts","../../src/getLocalStorage.ts","../../src/createLocalStorage.ts","../../../autocomplete-shared/dist/esm/createRef.js","../../../autocomplete-shared/dist/esm/warn.js","../../src/createStorageApi.ts","../../src/getTemplates.tsx","../../src/createRecentSearchesPlugin.ts","../../src/search.ts","../../src/createLocalStorageRecentSearchesPlugin.ts"],"sourcesContent":["import { Highlighted, HistoryItem } from './types';\n\ntype HighlightParams<TItem> = {\n item: TItem;\n query: string;\n};\n\nexport function addHighlightedAttribute<TItem extends HistoryItem>({\n item,\n query,\n}: HighlightParams<TItem>): Highlighted<TItem> {\n return {\n ...item,\n _highlightResult: {\n label: {\n value: query\n ? item.label.replace(\n new RegExp(query.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'), 'gi'),\n (match) => {\n return `__aa-highlight__${match}__/aa-highlight__`;\n }\n )\n : item.label,\n },\n },\n };\n}\n","export const LOCAL_STORAGE_KEY = 'AUTOCOMPLETE_RECENT_SEARCHES';\nexport const LOCAL_STORAGE_KEY_TEST =\n '__AUTOCOMPLETE_RECENT_SEARCHES_PLUGIN_TEST_KEY__';\n","import { LOCAL_STORAGE_KEY_TEST } from './constants';\n\nfunction isLocalStorageSupported() {\n try {\n localStorage.setItem(LOCAL_STORAGE_KEY_TEST, '');\n localStorage.removeItem(LOCAL_STORAGE_KEY_TEST);\n\n return true;\n } catch (error) {\n return false;\n }\n}\n\ntype LocalStorageProps = {\n key: string;\n};\n\nexport function getLocalStorage<TItem>({ key }: LocalStorageProps) {\n if (!isLocalStorageSupported()) {\n return {\n setItem() {},\n getItem() {\n return [];\n },\n };\n }\n\n return {\n setItem(items: TItem[]) {\n return window.localStorage.setItem(key, JSON.stringify(items));\n },\n getItem(): TItem[] {\n const items = window.localStorage.getItem(key);\n\n return items ? (JSON.parse(items) as TItem[]) : [];\n },\n };\n}\n","import { CreateRecentSearchesLocalStorageOptions } from './createLocalStorageRecentSearchesPlugin';\nimport { getLocalStorage } from './getLocalStorage';\nimport { HistoryItem, Storage } from './types';\n\nexport type CreateLocalStorageProps<TItem extends HistoryItem> = Required<\n CreateRecentSearchesLocalStorageOptions<TItem>\n>;\n\nexport function createLocalStorage<TItem extends HistoryItem>({\n key,\n limit,\n search,\n}: CreateLocalStorageProps<TItem>): Storage<TItem> {\n const storage = getLocalStorage<TItem>({ key });\n\n return {\n onAdd(item) {\n storage.setItem([item, ...storage.getItem()]);\n },\n onRemove(id) {\n storage.setItem(storage.getItem().filter((x) => x.id !== id));\n },\n getAll(query = '') {\n return search({ query, items: storage.getItem(), limit }).slice(0, limit);\n },\n };\n}\n","export function createRef(initialValue) {\n return {\n current: initialValue\n };\n}","export var warnCache = {\n current: {}\n};\n/**\n * Logs a warning if the condition is not met.\n * This is used to log issues in development environment only.\n */\n\nexport function warn(condition, message) {\n if (!(process.env.NODE_ENV !== 'production')) {\n return;\n }\n\n if (condition) {\n return;\n }\n\n var sanitizedMessage = message.trim();\n var hasAlreadyPrinted = warnCache.current[sanitizedMessage];\n\n if (!hasAlreadyPrinted) {\n warnCache.current[sanitizedMessage] = true; // eslint-disable-next-line no-console\n\n console.warn(\"[Autocomplete] \".concat(sanitizedMessage));\n }\n}","import { HistoryItem, Storage, StorageApi } from './types';\n\nexport function createStorageApi<TItem extends HistoryItem>(\n storage: Storage<TItem>\n): StorageApi<TItem> {\n return {\n addItem(item) {\n storage.onRemove(item.id);\n storage.onAdd(item);\n },\n removeItem(id) {\n storage.onRemove(id);\n },\n getAll(query) {\n return storage.getAll(query);\n },\n };\n}\n","/** @jsx createElement */\nimport { SourceTemplates } from '@algolia/autocomplete-js';\n\nimport { RecentSearchesItem } from './types';\n\nexport type GetTemplatesParams<TItem extends RecentSearchesItem> = {\n onRemove(id: string): void;\n onTapAhead(item: TItem): void;\n};\n\nexport function getTemplates<TItem extends RecentSearchesItem>({\n onRemove,\n onTapAhead,\n}: GetTemplatesParams<TItem>): SourceTemplates<TItem> {\n return {\n item({ item, createElement, components }) {\n return (\n <div className=\"aa-ItemWrapper\">\n <div className=\"aa-ItemContent\">\n <div className=\"aa-ItemIcon aa-ItemIcon--noBorder\">\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M12.516 6.984v5.25l4.5 2.672-0.75 1.266-5.25-3.188v-6h1.5zM12 20.016q3.281 0 5.648-2.367t2.367-5.648-2.367-5.648-5.648-2.367-5.648 2.367-2.367 5.648 2.367 5.648 5.648 2.367zM12 2.016q4.125 0 7.055 2.93t2.93 7.055-2.93 7.055-7.055 2.93-7.055-2.93-2.93-7.055 2.93-7.055 7.055-2.93z\" />\n </svg>\n </div>\n <div className=\"aa-ItemContentBody\">\n <div className=\"aa-ItemContentTitle\">\n <components.ReverseHighlight hit={item} attribute=\"label\" />\n {item.category && (\n <span className=\"aa-ItemContentSubtitle aa-ItemContentSubtitle--inline\">\n <span className=\"aa-ItemContentSubtitleIcon\" /> in{' '}\n <span className=\"aa-ItemContentSubtitleCategory\">\n {item.category}\n </span>\n </span>\n )}\n </div>\n </div>\n </div>\n <div className=\"aa-ItemActions\">\n <button\n className=\"aa-ItemActionButton\"\n title=\"Remove this search\"\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n onRemove(item.id);\n }}\n >\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M18 7v13c0 0.276-0.111 0.525-0.293 0.707s-0.431 0.293-0.707 0.293h-10c-0.276 0-0.525-0.111-0.707-0.293s-0.293-0.431-0.293-0.707v-13zM17 5v-1c0-0.828-0.337-1.58-0.879-2.121s-1.293-0.879-2.121-0.879h-4c-0.828 0-1.58 0.337-2.121 0.879s-0.879 1.293-0.879 2.121v1h-4c-0.552 0-1 0.448-1 1s0.448 1 1 1h1v13c0 0.828 0.337 1.58 0.879 2.121s1.293 0.879 2.121 0.879h10c0.828 0 1.58-0.337 2.121-0.879s0.879-1.293 0.879-2.121v-13h1c0.552 0 1-0.448 1-1s-0.448-1-1-1zM9 5v-1c0-0.276 0.111-0.525 0.293-0.707s0.431-0.293 0.707-0.293h4c0.276 0 0.525 0.111 0.707 0.293s0.293 0.431 0.293 0.707v1zM9 11v6c0 0.552 0.448 1 1 1s1-0.448 1-1v-6c0-0.552-0.448-1-1-1s-1 0.448-1 1zM13 11v6c0 0.552 0.448 1 1 1s1-0.448 1-1v-6c0-0.552-0.448-1-1-1s-1 0.448-1 1z\" />\n </svg>\n </button>\n <button\n className=\"aa-ItemActionButton\"\n title={`Fill query with \"${item.label}\"`}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n onTapAhead(item);\n }}\n >\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M8 17v-7.586l8.293 8.293c0.391 0.391 1.024 0.391 1.414 0s0.391-1.024 0-1.414l-8.293-8.293h7.586c0.552 0 1-0.448 1-1s-0.448-1-1-1h-10c-0.552 0-1 0.448-1 1v10c0 0.552 0.448 1 1 1s1-0.448 1-1z\" />\n </svg>\n </button>\n </div>\n </div>\n );\n },\n };\n}\n","import { PluginSubscribeParams } from '@algolia/autocomplete-core';\nimport {\n AutocompleteSource,\n AutocompleteState,\n AutocompletePlugin,\n} from '@algolia/autocomplete-js';\nimport { createRef, MaybePromise, warn } from '@algolia/autocomplete-shared';\nimport { SearchOptions } from '@algolia/client-search';\n\nimport { createStorageApi } from './createStorageApi';\nimport { getTemplates } from './getTemplates';\nimport { RecentSearchesItem, Storage, StorageApi } from './types';\n\nexport interface RecentSearchesPluginData<TItem extends RecentSearchesItem>\n extends StorageApi<TItem> {\n /**\n * Optimized [Algolia search parameters](https://www.algolia.com/doc/api-reference/search-api-parameters/). This is useful when using the plugin along with the [Query Suggestions](createQuerySuggestionsPlugin) plugin.\n *\n * This function enhances the provided search parameters by:\n * - Excluding Query Suggestions that are already displayed in recent searches.\n * - Using a shared `hitsPerPage` value to get a group limit of Query Suggestions and recent searches.\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-recent-searches/createLocalStorageRecentSearchesPlugin/#param-getalgoliasearchparams\n */\n getAlgoliaSearchParams(params?: SearchOptions): SearchOptions;\n}\n\nexport type CreateRecentSearchesPluginParams<\n TItem extends RecentSearchesItem\n> = {\n /**\n * The storage to fetch from and save recent searches into.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-recent-searches/createRecentSearchesPlugin/#param-storage\n */\n storage: Storage<TItem>;\n /**\n * A function to transform the provided source.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-recent-searches/createRecentSearchesPlugin/#param-transformsource\n */\n transformSource?(params: {\n source: AutocompleteSource<TItem>;\n state: AutocompleteState<TItem>;\n onRemove(id: string): void;\n onTapAhead(item: TItem): void;\n }): AutocompleteSource<TItem>;\n subscribe?(params: PluginSubscribeParams<TItem>): void;\n};\n\nfunction getDefaultSubcribe<TItem extends RecentSearchesItem>(\n store: StorageApi<TItem>\n) {\n return function subscribe({ onSelect }: PluginSubscribeParams<TItem>) {\n onSelect(({ item, state, source }) => {\n const inputValue = source.getItemInputValue({ item, state });\n\n if (source.sourceId === 'querySuggestionsPlugin' && inputValue) {\n const recentItem: RecentSearchesItem = {\n id: inputValue,\n label: inputValue,\n category: (item as any).__autocomplete_qsCategory,\n };\n store.addItem(recentItem as TItem);\n }\n });\n };\n}\n\nexport function createRecentSearchesPlugin<TItem extends RecentSearchesItem>(\n options: CreateRecentSearchesPluginParams<TItem>\n): AutocompletePlugin<TItem, RecentSearchesPluginData<TItem>> {\n const { storage, transformSource, subscribe } = getOptions(options);\n const store = createStorageApi<TItem>(storage);\n const lastItemsRef = createRef<MaybePromise<TItem[]>>([]);\n\n return {\n name: 'aa.recentSearchesPlugin',\n subscribe: subscribe ?? getDefaultSubcribe(store),\n onSubmit({ state }) {\n const { query } = state;\n\n if (query) {\n const recentItem: RecentSearchesItem = {\n id: query,\n label: query,\n };\n store.addItem(recentItem as TItem);\n }\n },\n getSources({ query, setQuery, refresh, state }) {\n lastItemsRef.current = store.getAll(query);\n\n function onRemove(id: string) {\n store.removeItem(id);\n refresh();\n }\n\n function onTapAhead(item: TItem) {\n setQuery(item.label);\n refresh();\n }\n\n return Promise.resolve(lastItemsRef.current).then((items) => {\n if (items.length === 0) {\n return [];\n }\n\n return [\n transformSource({\n source: {\n sourceId: 'recentSearchesPlugin',\n getItemInputValue({ item }) {\n return item.label;\n },\n getItems() {\n return items;\n },\n templates: getTemplates({ onRemove, onTapAhead }),\n },\n onRemove,\n onTapAhead,\n state: state as AutocompleteState<TItem>,\n }),\n ];\n });\n },\n data: {\n ...store,\n // @ts-ignore SearchOptions `facetFilters` is ReadonlyArray\n getAlgoliaSearchParams(params = {}) {\n // If the items returned by `store.getAll` are contained in a Promise,\n // we cannot provide the search params in time when this function is called\n // because we need to resolve the promise before getting the value.\n if (!Array.isArray(lastItemsRef.current)) {\n warn(\n false,\n 'The `getAlgoliaSearchParams` function is not supported with storages that return promises in `getAll`.'\n );\n return params;\n }\n\n return {\n ...params,\n facetFilters: [\n ...(params.facetFilters ?? []),\n // @TODO: we need to base the filter on the `query` attribute, not\n // `objectID`, because the Query Suggestions index cannot ensure\n // that the `objectID` will always be equal to the query.\n ...lastItemsRef.current.map((item) => [`objectID:-${item.label}`]),\n ],\n hitsPerPage: Math.max(\n 1,\n (params.hitsPerPage ?? 10) - lastItemsRef.current.length\n ),\n };\n },\n },\n __autocomplete_pluginOptions: options,\n };\n}\n\nfunction getOptions<TItem extends RecentSearchesItem>(\n options: CreateRecentSearchesPluginParams<TItem>\n) {\n return {\n transformSource: ({ source }) => source,\n ...options,\n };\n}\n","import { addHighlightedAttribute } from './addHighlightedAttribute';\nimport { Highlighted, RecentSearchesItem } from './types';\n\nexport type SearchParams<TItem extends RecentSearchesItem> = {\n query: string;\n items: TItem[];\n limit: number;\n};\n\nexport function search<TItem extends RecentSearchesItem>({\n query,\n items,\n limit,\n}: SearchParams<TItem>): Array<Highlighted<TItem>> {\n if (!query) {\n return items\n .slice(0, limit)\n .map((item) => addHighlightedAttribute({ item, query }));\n }\n\n return items\n .filter((item) => item.label.toLowerCase().includes(query.toLowerCase()))\n .slice(0, limit)\n .map((item) => addHighlightedAttribute({ item, query }));\n}\n","import { AutocompletePlugin } from '@algolia/autocomplete-js';\n\nimport { LOCAL_STORAGE_KEY } from './constants';\nimport { createLocalStorage } from './createLocalStorage';\nimport {\n createRecentSearchesPlugin,\n CreateRecentSearchesPluginParams,\n RecentSearchesPluginData,\n} from './createRecentSearchesPlugin';\nimport { search as defaultSearch, SearchParams } from './search';\nimport { Highlighted, RecentSearchesItem } from './types';\n\nexport type CreateRecentSearchesLocalStorageOptions<\n TItem extends RecentSearchesItem\n> = {\n /**\n * A local storage key to identify where to save and retrieve the recent searches.\n *\n * For example:\n * - \"navbar\"\n * - \"search\"\n * - \"main\"\n *\n * The plugin namespaces all keys to avoid collisions.\n *\n * @example \"top_searchbar\"\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-recent-searches/createLocalStorageRecentSearchesPlugin/#param-key\n */\n key: string;\n\n /**\n * The number of recent searches to display.\n *\n * @default 5\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-recent-searches/createLocalStorageRecentSearchesPlugin/#param-limit\n */\n limit?: number;\n\n /**\n * A search function to retrieve recent searches from.\n *\n * This function is called in [`storage.getAll`](https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-recent-searches/createRecentSearchesPlugin/#param-storage) to retrieve recent searches and is useful to filter and highlight recent searches when typing a query.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-recent-searches/createLocalStorageRecentSearchesPlugin/#param-search\n */\n search?(params: SearchParams<TItem>): Array<Highlighted<TItem>>;\n};\n\ntype LocalStorageRecentSearchesPluginOptions<\n TItem extends RecentSearchesItem\n> = Pick<\n CreateRecentSearchesPluginParams<TItem>,\n 'transformSource' | 'subscribe'\n> &\n CreateRecentSearchesLocalStorageOptions<TItem>;\n\nexport function createLocalStorageRecentSearchesPlugin<\n TItem extends RecentSearchesItem\n>(\n options: LocalStorageRecentSearchesPluginOptions<TItem>\n): AutocompletePlugin<TItem, RecentSearchesPluginData<TItem>> {\n const { key, limit, transformSource, search, subscribe } = getOptions(\n options\n );\n const storage = createLocalStorage<TItem>({\n key: [LOCAL_STORAGE_KEY, key].join(':'),\n limit,\n search,\n });\n\n const recentSearchesPlugin = createRecentSearchesPlugin<TItem>({\n transformSource,\n storage,\n subscribe,\n });\n\n return {\n ...recentSearchesPlugin,\n name: 'aa.localStorageRecentSearchesPlugin',\n __autocomplete_pluginOptions: options,\n };\n}\n\nfunction getOptions<TItem extends RecentSearchesItem>(\n options: LocalStorageRecentSearchesPluginOptions<TItem>\n) {\n return {\n limit: 5,\n search: defaultSearch,\n transformSource: ({ source }) => source,\n ...options,\n };\n}\n"],"names":["addHighlightedAttribute","item","query","_highlightResult","label","value","replace","RegExp","match","LOCAL_STORAGE_KEY","LOCAL_STORAGE_KEY_TEST","isLocalStorageSupported","localStorage","setItem","removeItem","error","getLocalStorage","key","getItem","items","window","JSON","stringify","parse","createLocalStorage","limit","search","storage","onAdd","onRemove","id","filter","x","getAll","slice","createRef","initialValue","current","warnCache","warn","condition","message","sanitizedMessage","trim","hasAlreadyPrinted","console","concat","createStorageApi","addItem","getTemplates","onTapAhead","createElement","components","category","event","preventDefault","stopPropagation","getDefaultSubcribe","store","subscribe","onSelect","state","source","inputValue","getItemInputValue","sourceId","recentItem","__autocomplete_qsCategory","createRecentSearchesPlugin","options","getOptions","transformSource","lastItemsRef","name","onSubmit","getSources","setQuery","refresh","Promise","resolve","then","length","getItems","templates","data","getAlgoliaSearchParams","params","Array","isArray","process","facetFilters","map","hitsPerPage","Math","max","__autocomplete_pluginOptions","toLowerCase","includes","createLocalStorageRecentSearchesPlugin","join","recentSearchesPlugin","defaultSearch"],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/*! @algolia/autocomplete-plugin-recent-searches 1.5.
|
|
1
|
+
/*! @algolia/autocomplete-plugin-recent-searches 1.5.1 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete */
|
|
2
2
|
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@algolia/autocomplete-plugin-recent-searches"]={})}(this,(function(e){"use strict";function t(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function n(e){for(var n=1;n<arguments.length;n++){var o=null!=arguments[n]?arguments[n]:{};n%2?t(Object(o),!0).forEach((function(t){r(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):t(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e){return function(e){if(Array.isArray(e))return a(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return a(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 a(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 a(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 i(e){var t=e.item,r=e.query;return n(n({},t),{},{_highlightResult:{label:{value:r?t.label.replace(new RegExp(r.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"gi"),(function(e){return"__aa-highlight__".concat(e,"__/aa-highlight__")})):t.label}}})}var c="AUTOCOMPLETE_RECENT_SEARCHES",u="__AUTOCOMPLETE_RECENT_SEARCHES_PLUGIN_TEST_KEY__";function l(e){var t=e.key;return function(){try{return localStorage.setItem(u,""),localStorage.removeItem(u),!0}catch(e){return!1}}()?{setItem:function(e){return window.localStorage.setItem(t,JSON.stringify(e))},getItem:function(){var e=window.localStorage.getItem(t);return e?JSON.parse(e):[]}}:{setItem:function(){},getItem:function(){return[]}}}function s(e){var t=e.onRemove,n=e.onTapAhead;return{item:function(e){var r=e.item,o=e.createElement,a=e.components;return o("div",{className:"aa-ItemWrapper"},o("div",{className:"aa-ItemContent"},o("div",{className:"aa-ItemIcon aa-ItemIcon--noBorder"},o("svg",{viewBox:"0 0 24 24",fill:"currentColor"},o("path",{d:"M12.516 6.984v5.25l4.5 2.672-0.75 1.266-5.25-3.188v-6h1.5zM12 20.016q3.281 0 5.648-2.367t2.367-5.648-2.367-5.648-5.648-2.367-5.648 2.367-2.367 5.648 2.367 5.648 5.648 2.367zM12 2.016q4.125 0 7.055 2.93t2.93 7.055-2.93 7.055-7.055 2.93-7.055-2.93-2.93-7.055 2.93-7.055 7.055-2.93z"}))),o("div",{className:"aa-ItemContentBody"},o("div",{className:"aa-ItemContentTitle"},o(a.ReverseHighlight,{hit:r,attribute:"label"}),r.category&&o("span",{className:"aa-ItemContentSubtitle aa-ItemContentSubtitle--inline"},o("span",{className:"aa-ItemContentSubtitleIcon"})," in"," ",o("span",{className:"aa-ItemContentSubtitleCategory"},r.category))))),o("div",{className:"aa-ItemActions"},o("button",{className:"aa-ItemActionButton",title:"Remove this search",onClick:function(e){e.preventDefault(),e.stopPropagation(),t(r.id)}},o("svg",{viewBox:"0 0 24 24",fill:"currentColor"},o("path",{d:"M18 7v13c0 0.276-0.111 0.525-0.293 0.707s-0.431 0.293-0.707 0.293h-10c-0.276 0-0.525-0.111-0.707-0.293s-0.293-0.431-0.293-0.707v-13zM17 5v-1c0-0.828-0.337-1.58-0.879-2.121s-1.293-0.879-2.121-0.879h-4c-0.828 0-1.58 0.337-2.121 0.879s-0.879 1.293-0.879 2.121v1h-4c-0.552 0-1 0.448-1 1s0.448 1 1 1h1v13c0 0.828 0.337 1.58 0.879 2.121s1.293 0.879 2.121 0.879h10c0.828 0 1.58-0.337 2.121-0.879s0.879-1.293 0.879-2.121v-13h1c0.552 0 1-0.448 1-1s-0.448-1-1-1zM9 5v-1c0-0.276 0.111-0.525 0.293-0.707s0.431-0.293 0.707-0.293h4c0.276 0 0.525 0.111 0.707 0.293s0.293 0.431 0.293 0.707v1zM9 11v6c0 0.552 0.448 1 1 1s1-0.448 1-1v-6c0-0.552-0.448-1-1-1s-1 0.448-1 1zM13 11v6c0 0.552 0.448 1 1 1s1-0.448 1-1v-6c0-0.552-0.448-1-1-1s-1 0.448-1 1z"}))),o("button",{className:"aa-ItemActionButton",title:'Fill query with "'.concat(r.label,'"'),onClick:function(e){e.preventDefault(),e.stopPropagation(),n(r)}},o("svg",{viewBox:"0 0 24 24",fill:"currentColor"},o("path",{d:"M8 17v-7.586l8.293 8.293c0.391 0.391 1.024 0.391 1.414 0s0.391-1.024 0-1.414l-8.293-8.293h7.586c0.552 0 1-0.448 1-1s-0.448-1-1-1h-10c-0.552 0-1 0.448-1 1v10c0 0.552 0.448 1 1 1s1-0.448 1-1z"})))))}}}function m(e){return function(t){(0,t.onSelect)((function(t){var n=t.item,r=t.state,o=t.source,a=o.getItemInputValue({item:n,state:r});if("querySuggestionsPlugin"===o.sourceId&&a){var i={id:a,label:a,category:n.__autocomplete_qsCategory};e.addItem(i)}}))}}function f(e){var t=function(e){return n({transformSource:function(e){return e.source}},e)}(e),r=t.storage,a=t.transformSource,i=t.subscribe,c=function(e){return{addItem:function(t){e.onRemove(t.id),e.onAdd(t)},removeItem:function(t){e.onRemove(t)},getAll:function(t){return e.getAll(t)}}}(r),u={current:[]};return{name:"aa.recentSearchesPlugin",subscribe:null!=i?i:m(c),onSubmit:function(e){var t=e.state.query;if(t){var n={id:t,label:t};c.addItem(n)}},getSources:function(e){var t=e.query,n=e.setQuery,r=e.refresh,o=e.state;function i(e){c.removeItem(e),r()}function l(e){n(e.label),r()}return u.current=c.getAll(t),Promise.resolve(u.current).then((function(e){return 0===e.length?[]:[a({source:{sourceId:"recentSearchesPlugin",getItemInputValue:function(e){return e.item.label},getItems:function(){return e},templates:s({onRemove:i,onTapAhead:l})},onRemove:i,onTapAhead:l,state:o})]}))},data:n(n({},c),{},{getAlgoliaSearchParams:function(){var e,t,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return Array.isArray(u.current)?n(n({},r),{},{facetFilters:[].concat(o(null!==(e=r.facetFilters)&&void 0!==e?e:[]),o(u.current.map((function(e){return["objectID:-".concat(e.label)]})))),hitsPerPage:Math.max(1,(null!==(t=r.hitsPerPage)&&void 0!==t?t:10)-u.current.length)}):r}}),__autocomplete_pluginOptions:e}}function g(e){var t=e.query,n=e.items,r=e.limit;return t?n.filter((function(e){return e.label.toLowerCase().includes(t.toLowerCase())})).slice(0,r).map((function(e){return i({item:e,query:t})})):n.slice(0,r).map((function(e){return i({item:e,query:t})}))}function v(e){return n({limit:5,search:g,transformSource:function(e){return e.source}},e)}e.addHighlightedAttribute=i,e.createLocalStorageRecentSearchesPlugin=function(e){var t=v(e),r=t.key,a=t.limit,i=t.transformSource,u=t.search,s=t.subscribe,m=function(e){var t=e.key,n=e.limit,r=e.search,a=l({key:t});return{onAdd:function(e){a.setItem([e].concat(o(a.getItem())))},onRemove:function(e){a.setItem(a.getItem().filter((function(t){return t.id!==e})))},getAll:function(){return r({query:arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",items:a.getItem(),limit:n}).slice(0,n)}}}({key:[c,r].join(":"),limit:a,search:u});return n(n({},f({transformSource:i,storage:m,subscribe:s})),{},{name:"aa.localStorageRecentSearchesPlugin",__autocomplete_pluginOptions:e})},e.createRecentSearchesPlugin=f,e.getTemplates=s,e.search=g,Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
3
3
|
//# sourceMappingURL=index.production.js.map
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@algolia/autocomplete-plugin-recent-searches",
|
|
3
3
|
"description": "A plugin to add recent searches to Algolia Autocomplete.",
|
|
4
|
-
"version": "1.5.
|
|
4
|
+
"version": "1.5.1",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://github.com/algolia/autocomplete",
|
|
7
7
|
"repository": "algolia/autocomplete",
|
|
@@ -31,10 +31,10 @@
|
|
|
31
31
|
"watch": "watch \"yarn on:change\" --ignoreDirectoryPattern \"/dist/\""
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@algolia/autocomplete-core": "1.5.
|
|
35
|
-
"@algolia/autocomplete-js": "1.5.
|
|
36
|
-
"@algolia/autocomplete-preset-algolia": "1.5.
|
|
37
|
-
"@algolia/autocomplete-shared": "1.5.
|
|
34
|
+
"@algolia/autocomplete-core": "1.5.1",
|
|
35
|
+
"@algolia/autocomplete-js": "1.5.1",
|
|
36
|
+
"@algolia/autocomplete-preset-algolia": "1.5.1",
|
|
37
|
+
"@algolia/autocomplete-shared": "1.5.1"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@algolia/client-search": "4.9.1"
|