@algolia/autocomplete-preset-algolia 1.2.2 → 1.5.0

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.
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -4,7 +4,7 @@ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread n
4
4
 
5
5
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
6
6
 
7
- function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
7
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
8
8
 
9
9
  function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
10
10
 
@@ -4,7 +4,7 @@ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread n
4
4
 
5
5
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
6
6
 
7
- function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
7
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
8
8
 
9
9
  function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
10
10
 
@@ -1,4 +1,4 @@
1
- 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; }
1
+ 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; }
2
2
 
3
3
  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; }
4
4
 
@@ -1,4 +1,4 @@
1
- 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; }
1
+ 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; }
2
2
 
3
3
  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; }
4
4
 
@@ -1,4 +1,4 @@
1
- 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; }
1
+ 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; }
2
2
 
3
3
  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; }
4
4
 
@@ -1,9 +1,6 @@
1
+ import { UserAgent } from '@algolia/autocomplete-shared';
1
2
  import { MultipleQueriesQuery, SearchForFacetValuesResponse, SearchResponse } from '@algolia/client-search';
2
3
  import type { SearchClient } from 'algoliasearch/lite';
3
- declare type UserAgent = {
4
- segment: string;
5
- version?: string;
6
- };
7
4
  export interface SearchParams {
8
5
  /**
9
6
  * The initialized Algolia search client.
@@ -21,4 +18,3 @@ export interface SearchParams {
21
18
  userAgents?: UserAgent[];
22
19
  }
23
20
  export declare function fetchAlgoliaResults<TRecord>({ searchClient, queries, userAgents, }: SearchParams): Promise<Array<SearchResponse<TRecord> | SearchForFacetValuesResponse>>;
24
- export {};
@@ -1,4 +1,6 @@
1
- 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; }
1
+ var _excluded = ["params"];
2
+
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; }
2
4
 
3
5
  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; }
4
6
 
@@ -14,14 +16,14 @@ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread n
14
16
 
15
17
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
16
18
 
17
- function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
19
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
18
20
 
19
21
  function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
20
22
 
21
23
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
22
24
 
25
+ import { userAgents as coreUserAgents } from '@algolia/autocomplete-shared';
23
26
  import { HIGHLIGHT_PRE_TAG, HIGHLIGHT_POST_TAG } from '../constants';
24
- import { version } from '../version';
25
27
  export function fetchAlgoliaResults(_ref) {
26
28
  var searchClient = _ref.searchClient,
27
29
  queries = _ref.queries,
@@ -29,10 +31,7 @@ export function fetchAlgoliaResults(_ref) {
29
31
  userAgents = _ref$userAgents === void 0 ? [] : _ref$userAgents;
30
32
 
31
33
  if (typeof searchClient.addAlgoliaAgent === 'function') {
32
- var algoliaAgents = [{
33
- segment: 'autocomplete-core',
34
- version: version
35
- }].concat(_toConsumableArray(userAgents));
34
+ var algoliaAgents = [].concat(_toConsumableArray(coreUserAgents), _toConsumableArray(userAgents));
36
35
  algoliaAgents.forEach(function (_ref2) {
37
36
  var segment = _ref2.segment,
38
37
  version = _ref2.version;
@@ -42,7 +41,7 @@ export function fetchAlgoliaResults(_ref) {
42
41
 
43
42
  return searchClient.search(queries.map(function (searchParameters) {
44
43
  var params = searchParameters.params,
45
- headers = _objectWithoutProperties(searchParameters, ["params"]);
44
+ headers = _objectWithoutProperties(searchParameters, _excluded);
46
45
 
47
46
  return _objectSpread(_objectSpread({}, headers), {}, {
48
47
  params: _objectSpread({
@@ -1,33 +1,22 @@
1
- /*! @algolia/autocomplete-preset-algolia 1.2.2 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete */
1
+ /*! @algolia/autocomplete-preset-algolia 1.5.0 | 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
5
  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global['@algolia/autocomplete-preset-algolia'] = {}));
6
6
  }(this, (function (exports) { 'use strict';
7
7
 
8
- function _defineProperty(obj, key, value) {
9
- if (key in obj) {
10
- Object.defineProperty(obj, key, {
11
- value: value,
12
- enumerable: true,
13
- configurable: true,
14
- writable: true
15
- });
16
- } else {
17
- obj[key] = value;
18
- }
19
-
20
- return obj;
21
- }
22
-
23
8
  function ownKeys(object, enumerableOnly) {
24
9
  var keys = Object.keys(object);
25
10
 
26
11
  if (Object.getOwnPropertySymbols) {
27
12
  var symbols = Object.getOwnPropertySymbols(object);
28
- if (enumerableOnly) symbols = symbols.filter(function (sym) {
29
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
30
- });
13
+
14
+ if (enumerableOnly) {
15
+ symbols = symbols.filter(function (sym) {
16
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
17
+ });
18
+ }
19
+
31
20
  keys.push.apply(keys, symbols);
32
21
  }
33
22
 
@@ -54,6 +43,21 @@
54
43
  return target;
55
44
  }
56
45
 
46
+ function _defineProperty(obj, key, value) {
47
+ if (key in obj) {
48
+ Object.defineProperty(obj, key, {
49
+ value: value,
50
+ enumerable: true,
51
+ configurable: true,
52
+ writable: true
53
+ });
54
+ } else {
55
+ obj[key] = value;
56
+ }
57
+
58
+ return obj;
59
+ }
60
+
57
61
  function _objectWithoutPropertiesLoose(source, excluded) {
58
62
  if (source == null) return {};
59
63
  var target = {};
@@ -99,7 +103,7 @@
99
103
  }
100
104
 
101
105
  function _iterableToArray(iter) {
102
- if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter);
106
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
103
107
  }
104
108
 
105
109
  function _unsupportedIterableToArray(o, minLen) {
@@ -129,6 +133,13 @@
129
133
  }, record);
130
134
  }
131
135
 
136
+ var version = '1.5.0';
137
+
138
+ var userAgents = [{
139
+ segment: 'autocomplete-core',
140
+ version: version
141
+ }];
142
+
132
143
  var warnCache = {
133
144
  current: {}
134
145
  };
@@ -327,19 +338,15 @@
327
338
  };
328
339
  }
329
340
 
330
- var version = '1.2.2';
331
-
341
+ var _excluded = ["params"];
332
342
  function fetchAlgoliaResults(_ref) {
333
343
  var searchClient = _ref.searchClient,
334
344
  queries = _ref.queries,
335
345
  _ref$userAgents = _ref.userAgents,
336
- userAgents = _ref$userAgents === void 0 ? [] : _ref$userAgents;
346
+ userAgents$1 = _ref$userAgents === void 0 ? [] : _ref$userAgents;
337
347
 
338
348
  if (typeof searchClient.addAlgoliaAgent === 'function') {
339
- var algoliaAgents = [{
340
- segment: 'autocomplete-core',
341
- version: version
342
- }].concat(_toConsumableArray(userAgents));
349
+ var algoliaAgents = [].concat(_toConsumableArray(userAgents), _toConsumableArray(userAgents$1));
343
350
  algoliaAgents.forEach(function (_ref2) {
344
351
  var segment = _ref2.segment,
345
352
  version = _ref2.version;
@@ -349,7 +356,7 @@
349
356
 
350
357
  return searchClient.search(queries.map(function (searchParameters) {
351
358
  var params = searchParameters.params,
352
- headers = _objectWithoutProperties(searchParameters, ["params"]);
359
+ headers = _objectWithoutProperties(searchParameters, _excluded);
353
360
 
354
361
  return _objectSpread2(_objectSpread2({}, headers), {}, {
355
362
  params: _objectSpread2({
@@ -1 +1 @@
1
- {"version":3,"file":"index.development.js","sources":["../../../autocomplete-shared/dist/esm/getAttributeValueByPath.js","../../../autocomplete-shared/dist/esm/warn.js","../../src/constants/index.ts","../../src/highlight/parseAttribute.ts","../../src/highlight/parseAlgoliaHitHighlight.ts","../../src/highlight/isPartHighlighted.ts","../../src/highlight/reverseHighlightedParts.ts","../../src/highlight/parseAlgoliaHitReverseHighlight.ts","../../src/highlight/parseAlgoliaHitSnippet.ts","../../src/highlight/parseAlgoliaHitReverseSnippet.ts","../../src/requester/createRequester.ts","../../src/version.ts","../../src/search/fetchAlgoliaResults.ts","../../src/requester/createAlgoliaRequester.ts","../../src/requester/getAlgoliaFacets.ts","../../src/requester/getAlgoliaResults.ts"],"sourcesContent":["export function getAttributeValueByPath(record, path) {\n return path.reduce(function (current, key) {\n return current && current[key];\n }, record);\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}","export const HIGHLIGHT_PRE_TAG = '__aa-highlight__';\nexport const HIGHLIGHT_POST_TAG = '__/aa-highlight__';\n","import { HIGHLIGHT_PRE_TAG, HIGHLIGHT_POST_TAG } from '../constants';\n\nimport { ParsedAttribute } from './ParsedAttribute';\n\n/**\n * Creates a data structure that allows to concatenate similar highlighting\n * parts in a single value.\n */\nfunction createAttributeSet(initialValue: ParsedAttribute[] = []) {\n const value = initialValue;\n\n return {\n get() {\n return value;\n },\n add(part: ParsedAttribute) {\n const lastPart: ParsedAttribute | undefined = value[value.length - 1];\n\n if (lastPart?.isHighlighted === part.isHighlighted) {\n value[value.length - 1] = {\n value: lastPart.value + part.value,\n isHighlighted: lastPart.isHighlighted,\n };\n } else {\n value.push(part);\n }\n },\n };\n}\n\ntype ParseAttributeParams = {\n highlightedValue: string;\n};\n\nexport function parseAttribute({\n highlightedValue,\n}: ParseAttributeParams): ParsedAttribute[] {\n const preTagParts = highlightedValue.split(HIGHLIGHT_PRE_TAG);\n const firstValue = preTagParts.shift();\n const parts = createAttributeSet(\n firstValue ? [{ value: firstValue, isHighlighted: false }] : []\n );\n\n preTagParts.forEach((part) => {\n const postTagParts = part.split(HIGHLIGHT_POST_TAG);\n\n parts.add({\n value: postTagParts[0],\n isHighlighted: true,\n });\n\n if (postTagParts[1] !== '') {\n parts.add({\n value: postTagParts[1],\n isHighlighted: false,\n });\n }\n });\n\n return parts.get();\n}\n","import { getAttributeValueByPath, warn } from '@algolia/autocomplete-shared';\n\nimport { HighlightedHit } from './HighlightedHit';\nimport { ParseAlgoliaHitParams } from './ParseAlgoliaHitParams';\nimport { parseAttribute } from './parseAttribute';\nimport { ParsedAttribute } from './ParsedAttribute';\n\nexport function parseAlgoliaHitHighlight<THit extends HighlightedHit<unknown>>({\n hit,\n attribute,\n}: ParseAlgoliaHitParams<THit>): ParsedAttribute[] {\n const path = Array.isArray(attribute) ? attribute : ([attribute] as string[]);\n let highlightedValue = getAttributeValueByPath(hit, [\n '_highlightResult',\n ...path,\n 'value',\n ]);\n\n if (typeof highlightedValue !== 'string') {\n warn(\n false,\n `The attribute \"${path.join('.')}\" described by the path ${JSON.stringify(\n path\n )} does not exist on the hit. Did you set it in \\`attributesToHighlight\\`?` +\n '\\nSee https://www.algolia.com/doc/api-reference/api-parameters/attributesToHighlight/'\n );\n\n highlightedValue = getAttributeValueByPath(hit, path) || '';\n }\n\n return parseAttribute({ highlightedValue });\n}\n","import { ParsedAttribute } from './ParsedAttribute';\n\nconst htmlEscapes = {\n '&amp;': '&',\n '&lt;': '<',\n '&gt;': '>',\n '&quot;': '\"',\n '&#39;': \"'\",\n};\nconst hasAlphanumeric = new RegExp(/\\w/i);\nconst regexEscapedHtml = /&(amp|quot|lt|gt|#39);/g;\nconst regexHasEscapedHtml = RegExp(regexEscapedHtml.source);\n\nfunction unescape(value: string): string {\n return value && regexHasEscapedHtml.test(value)\n ? value.replace(regexEscapedHtml, (character) => htmlEscapes[character])\n : value;\n}\n\nexport function isPartHighlighted(parts: ParsedAttribute[], i: number) {\n const current = parts[i];\n const isNextHighlighted = parts[i + 1]?.isHighlighted || true;\n const isPreviousHighlighted = parts[i - 1]?.isHighlighted || true;\n\n if (\n !hasAlphanumeric.test(unescape(current.value)) &&\n isPreviousHighlighted === isNextHighlighted\n ) {\n return isPreviousHighlighted;\n }\n\n return current.isHighlighted;\n}\n","import { isPartHighlighted } from './isPartHighlighted';\nimport { ParsedAttribute } from './ParsedAttribute';\n\nexport function reverseHighlightedParts(parts: ParsedAttribute[]) {\n // We don't want to highlight the whole word when no parts match.\n if (!parts.some((part) => part.isHighlighted)) {\n return parts.map((part) => ({ ...part, isHighlighted: false }));\n }\n\n return parts.map((part, i) => ({\n ...part,\n isHighlighted: !isPartHighlighted(parts, i),\n }));\n}\n","import { HighlightedHit } from './HighlightedHit';\nimport { parseAlgoliaHitHighlight } from './parseAlgoliaHitHighlight';\nimport { ParseAlgoliaHitParams } from './ParseAlgoliaHitParams';\nimport { ParsedAttribute } from './ParsedAttribute';\nimport { reverseHighlightedParts } from './reverseHighlightedParts';\n\nexport function parseAlgoliaHitReverseHighlight<\n THit extends HighlightedHit<unknown>\n>(props: ParseAlgoliaHitParams<THit>): ParsedAttribute[] {\n return reverseHighlightedParts(parseAlgoliaHitHighlight<THit>(props));\n}\n","import { getAttributeValueByPath, warn } from '@algolia/autocomplete-shared';\n\nimport { ParseAlgoliaHitParams } from './ParseAlgoliaHitParams';\nimport { parseAttribute } from './parseAttribute';\nimport { ParsedAttribute } from './ParsedAttribute';\nimport { SnippetedHit } from './SnippetedHit';\n\nexport function parseAlgoliaHitSnippet<THit extends SnippetedHit<unknown>>({\n hit,\n attribute,\n}: ParseAlgoliaHitParams<THit>): ParsedAttribute[] {\n const path = Array.isArray(attribute) ? attribute : ([attribute] as string[]);\n let highlightedValue = getAttributeValueByPath(hit, [\n '_snippetResult',\n ...path,\n 'value',\n ]);\n\n if (typeof highlightedValue !== 'string') {\n warn(\n false,\n `The attribute \"${path.join('.')}\" described by the path ${JSON.stringify(\n path\n )} does not exist on the hit. Did you set it in \\`attributesToSnippet\\`?` +\n '\\nSee https://www.algolia.com/doc/api-reference/api-parameters/attributesToSnippet/'\n );\n\n highlightedValue = getAttributeValueByPath(hit, path) || '';\n }\n\n return parseAttribute({ highlightedValue });\n}\n","import { ParseAlgoliaHitParams } from './ParseAlgoliaHitParams';\nimport { parseAlgoliaHitSnippet } from './parseAlgoliaHitSnippet';\nimport { ParsedAttribute } from './ParsedAttribute';\nimport { reverseHighlightedParts } from './reverseHighlightedParts';\nimport { SnippetedHit } from './SnippetedHit';\n\nexport function parseAlgoliaHitReverseSnippet<\n THit extends SnippetedHit<unknown>\n>(props: ParseAlgoliaHitParams<THit>): ParsedAttribute[] {\n return reverseHighlightedParts(parseAlgoliaHitSnippet<THit>(props));\n}\n","import {\n MultipleQueriesQuery,\n SearchForFacetValuesResponse,\n SearchResponse,\n} from '@algolia/client-search';\nimport { SearchClient } from 'algoliasearch/lite';\n\nimport { fetchAlgoliaResults } from '../search';\n\ntype Fetcher = typeof fetchAlgoliaResults;\n\ntype FacetHit = {\n label: string;\n count: number;\n _highlightResult: {\n label: {\n value: string;\n };\n };\n};\n\nexport type FetcherParams = Pick<\n Parameters<Fetcher>[0],\n 'searchClient' | 'queries'\n>;\n\nexport type RequesterParams<THit> = {\n transformResponse(\n response: TransformResponseParams<THit>\n ): TransformedRequesterResponse<THit>;\n};\n\ntype TransformResponseParams<THit> = {\n results: Array<SearchResponse<THit> | SearchForFacetValuesResponse>;\n hits: Array<SearchResponse<THit>['hits']>;\n facetHits: FacetHit[][];\n};\n\nexport type TransformedRequesterResponse<THit> =\n | Array<SearchResponse<THit>['hits']>\n | SearchResponse<THit>['hits']\n | FacetHit[][]\n | FacetHit[];\n\nexport type TransformResponse<THit> = (\n response: TransformResponseParams<THit>\n) => TransformedRequesterResponse<THit>;\n\ntype FetcherParamsQuery<THit> = {\n query: MultipleQueriesQuery;\n sourceId: string;\n transformResponse: TransformResponse<THit>;\n};\n\ntype ExecuteParams<THit> = {\n searchClient: SearchClient;\n requests: Array<FetcherParamsQuery<THit>>;\n};\n\nexport type Execute<THit> = (\n params: ExecuteParams<THit>\n) => Promise<ExecuteResponse<THit>>;\n\nexport type ExecuteResponse<THit> = Array<{\n items: SearchResponse<THit> | SearchForFacetValuesResponse;\n sourceId: string;\n transformResponse: TransformResponse<THit>;\n}>;\n\nexport type RequestParams<THit> = FetcherParams & {\n /**\n * The function to transform the Algolia response before passing it to the Autocomplete state. You have access to the full Algolia results, as well as the pre-computed hits and facet hits.\n *\n * This is useful to manipulate the hits, or store data from the results in the [context](https://www.algolia.com/doc/ui-libraries/autocomplete/core-concepts/context/).\n */\n transformResponse?: TransformResponse<THit>;\n};\n\nexport type RequesterDescription<THit> = {\n searchClient: SearchClient;\n queries: MultipleQueriesQuery[];\n transformResponse: TransformResponse<THit>;\n execute: Execute<THit>;\n};\n\nexport function createRequester(fetcher: Fetcher) {\n function execute<THit>(fetcherParams: ExecuteParams<THit>) {\n return fetcher<THit>({\n searchClient: fetcherParams.searchClient,\n queries: fetcherParams.requests.map((x) => x.query),\n }).then((responses) =>\n responses.map((response, index) => {\n const { sourceId, transformResponse } = fetcherParams.requests[index];\n\n return {\n items: response,\n sourceId,\n transformResponse,\n };\n })\n );\n }\n\n return function createSpecifiedRequester(\n requesterParams: RequesterParams<any>\n ) {\n return function requester<TTHit>(\n requestParams: RequestParams<TTHit>\n ): RequesterDescription<TTHit> {\n return {\n execute,\n ...requesterParams,\n ...requestParams,\n };\n };\n };\n}\n","export const version = '1.2.2';\n","import {\n MultipleQueriesQuery,\n SearchForFacetValuesResponse,\n SearchResponse,\n} from '@algolia/client-search';\nimport type { SearchClient } from 'algoliasearch/lite';\n\nimport { HIGHLIGHT_PRE_TAG, HIGHLIGHT_POST_TAG } from '../constants';\nimport { version } from '../version';\n\ntype UserAgent = { segment: string; version?: string };\n\nexport interface SearchParams {\n /**\n * The initialized Algolia search client.\n */\n searchClient: SearchClient;\n /**\n * A list of queries to execute.\n */\n queries: MultipleQueriesQuery[];\n /**\n * A list of user agents to add to the search client.\n *\n * This is useful to track usage of an integration.\n */\n userAgents?: UserAgent[];\n}\n\nexport function fetchAlgoliaResults<TRecord>({\n searchClient,\n queries,\n userAgents = [],\n}: SearchParams): Promise<\n Array<SearchResponse<TRecord> | SearchForFacetValuesResponse>\n> {\n if (typeof searchClient.addAlgoliaAgent === 'function') {\n const algoliaAgents: UserAgent[] = [\n { segment: 'autocomplete-core', version },\n ...userAgents,\n ];\n\n algoliaAgents.forEach(({ segment, version }) => {\n searchClient.addAlgoliaAgent(segment, version);\n });\n }\n\n return searchClient\n .search<TRecord>(\n queries.map((searchParameters) => {\n const { params, ...headers } = searchParameters;\n\n return {\n ...headers,\n params: {\n hitsPerPage: 5,\n highlightPreTag: HIGHLIGHT_PRE_TAG,\n highlightPostTag: HIGHLIGHT_POST_TAG,\n ...params,\n },\n };\n })\n )\n .then((response) => {\n return response.results;\n });\n}\n","import { fetchAlgoliaResults } from '../search';\n\nimport { createRequester } from './createRequester';\n\nexport const createAlgoliaRequester = createRequester(fetchAlgoliaResults);\n","import { MultipleQueriesQuery } from '@algolia/client-search';\n\nimport { createAlgoliaRequester } from './createAlgoliaRequester';\nimport { RequestParams } from './createRequester';\n\n/**\n * Retrieves Algolia facet hits from multiple indices.\n */\nexport function getAlgoliaFacets<TTHit>(requestParams: RequestParams<TTHit>) {\n const requester = createAlgoliaRequester({\n transformResponse: (response) => response.facetHits,\n });\n\n const queries = requestParams.queries.map((query) => ({\n ...query,\n type: 'facet',\n })) as MultipleQueriesQuery[];\n\n return requester({\n ...requestParams,\n queries,\n });\n}\n","import { createAlgoliaRequester } from './createAlgoliaRequester';\n\n/**\n * Retrieves Algolia results from multiple indices.\n */\nexport const getAlgoliaResults = createAlgoliaRequester({\n transformResponse: (response) => response.hits,\n});\n"],"names":["getAttributeValueByPath","record","path","reduce","current","key","warnCache","warn","condition","message","sanitizedMessage","trim","hasAlreadyPrinted","console","concat","HIGHLIGHT_PRE_TAG","HIGHLIGHT_POST_TAG","createAttributeSet","initialValue","value","get","add","part","lastPart","length","isHighlighted","push","parseAttribute","highlightedValue","preTagParts","split","firstValue","shift","parts","forEach","postTagParts","parseAlgoliaHitHighlight","hit","attribute","Array","isArray","process","join","JSON","stringify","htmlEscapes","hasAlphanumeric","RegExp","regexEscapedHtml","regexHasEscapedHtml","source","unescape","test","replace","character","isPartHighlighted","i","isNextHighlighted","isPreviousHighlighted","reverseHighlightedParts","some","map","parseAlgoliaHitReverseHighlight","props","parseAlgoliaHitSnippet","parseAlgoliaHitReverseSnippet","createRequester","fetcher","execute","fetcherParams","searchClient","queries","requests","x","query","then","responses","response","index","sourceId","transformResponse","items","createSpecifiedRequester","requesterParams","requester","requestParams","version","fetchAlgoliaResults","userAgents","addAlgoliaAgent","algoliaAgents","segment","search","searchParameters","params","headers","hitsPerPage","highlightPreTag","highlightPostTag","results","createAlgoliaRequester","getAlgoliaFacets","facetHits","type","getAlgoliaResults","hits"],"mappings":"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"}
1
+ {"version":3,"file":"index.development.js","sources":["../../../autocomplete-shared/dist/esm/getAttributeValueByPath.js","../../../autocomplete-shared/dist/esm/version.js","../../../autocomplete-shared/dist/esm/userAgents.js","../../../autocomplete-shared/dist/esm/warn.js","../../src/constants/index.ts","../../src/highlight/parseAttribute.ts","../../src/highlight/parseAlgoliaHitHighlight.ts","../../src/highlight/isPartHighlighted.ts","../../src/highlight/reverseHighlightedParts.ts","../../src/highlight/parseAlgoliaHitReverseHighlight.ts","../../src/highlight/parseAlgoliaHitSnippet.ts","../../src/highlight/parseAlgoliaHitReverseSnippet.ts","../../src/requester/createRequester.ts","../../src/search/fetchAlgoliaResults.ts","../../src/requester/createAlgoliaRequester.ts","../../src/requester/getAlgoliaFacets.ts","../../src/requester/getAlgoliaResults.ts"],"sourcesContent":["export function getAttributeValueByPath(record, path) {\n return path.reduce(function (current, key) {\n return current && current[key];\n }, record);\n}","export var version = '1.5.0';","import { version } from './version';\nexport var userAgents = [{\n segment: 'autocomplete-core',\n version: version\n}];","export var warnCache = {\n current: {}\n};\n/**\n * Logs a warning if the condition is not met.\n * This is used to log issues in development environment only.\n */\n\nexport function warn(condition, message) {\n if (!(process.env.NODE_ENV !== 'production')) {\n return;\n }\n\n if (condition) {\n return;\n }\n\n var sanitizedMessage = message.trim();\n var hasAlreadyPrinted = warnCache.current[sanitizedMessage];\n\n if (!hasAlreadyPrinted) {\n warnCache.current[sanitizedMessage] = true; // eslint-disable-next-line no-console\n\n console.warn(\"[Autocomplete] \".concat(sanitizedMessage));\n }\n}","export const HIGHLIGHT_PRE_TAG = '__aa-highlight__';\nexport const HIGHLIGHT_POST_TAG = '__/aa-highlight__';\n","import { HIGHLIGHT_PRE_TAG, HIGHLIGHT_POST_TAG } from '../constants';\n\nimport { ParsedAttribute } from './ParsedAttribute';\n\n/**\n * Creates a data structure that allows to concatenate similar highlighting\n * parts in a single value.\n */\nfunction createAttributeSet(initialValue: ParsedAttribute[] = []) {\n const value = initialValue;\n\n return {\n get() {\n return value;\n },\n add(part: ParsedAttribute) {\n const lastPart: ParsedAttribute | undefined = value[value.length - 1];\n\n if (lastPart?.isHighlighted === part.isHighlighted) {\n value[value.length - 1] = {\n value: lastPart.value + part.value,\n isHighlighted: lastPart.isHighlighted,\n };\n } else {\n value.push(part);\n }\n },\n };\n}\n\ntype ParseAttributeParams = {\n highlightedValue: string;\n};\n\nexport function parseAttribute({\n highlightedValue,\n}: ParseAttributeParams): ParsedAttribute[] {\n const preTagParts = highlightedValue.split(HIGHLIGHT_PRE_TAG);\n const firstValue = preTagParts.shift();\n const parts = createAttributeSet(\n firstValue ? [{ value: firstValue, isHighlighted: false }] : []\n );\n\n preTagParts.forEach((part) => {\n const postTagParts = part.split(HIGHLIGHT_POST_TAG);\n\n parts.add({\n value: postTagParts[0],\n isHighlighted: true,\n });\n\n if (postTagParts[1] !== '') {\n parts.add({\n value: postTagParts[1],\n isHighlighted: false,\n });\n }\n });\n\n return parts.get();\n}\n","import { getAttributeValueByPath, warn } from '@algolia/autocomplete-shared';\n\nimport { HighlightedHit } from './HighlightedHit';\nimport { ParseAlgoliaHitParams } from './ParseAlgoliaHitParams';\nimport { parseAttribute } from './parseAttribute';\nimport { ParsedAttribute } from './ParsedAttribute';\n\nexport function parseAlgoliaHitHighlight<THit extends HighlightedHit<unknown>>({\n hit,\n attribute,\n}: ParseAlgoliaHitParams<THit>): ParsedAttribute[] {\n const path = Array.isArray(attribute) ? attribute : ([attribute] as string[]);\n let highlightedValue = getAttributeValueByPath(hit, [\n '_highlightResult',\n ...path,\n 'value',\n ]);\n\n if (typeof highlightedValue !== 'string') {\n warn(\n false,\n `The attribute \"${path.join('.')}\" described by the path ${JSON.stringify(\n path\n )} does not exist on the hit. Did you set it in \\`attributesToHighlight\\`?` +\n '\\nSee https://www.algolia.com/doc/api-reference/api-parameters/attributesToHighlight/'\n );\n\n highlightedValue = getAttributeValueByPath(hit, path) || '';\n }\n\n return parseAttribute({ highlightedValue });\n}\n","import { ParsedAttribute } from './ParsedAttribute';\n\nconst htmlEscapes = {\n '&amp;': '&',\n '&lt;': '<',\n '&gt;': '>',\n '&quot;': '\"',\n '&#39;': \"'\",\n};\nconst hasAlphanumeric = new RegExp(/\\w/i);\nconst regexEscapedHtml = /&(amp|quot|lt|gt|#39);/g;\nconst regexHasEscapedHtml = RegExp(regexEscapedHtml.source);\n\nfunction unescape(value: string): string {\n return value && regexHasEscapedHtml.test(value)\n ? value.replace(regexEscapedHtml, (character) => htmlEscapes[character])\n : value;\n}\n\nexport function isPartHighlighted(parts: ParsedAttribute[], i: number) {\n const current = parts[i];\n const isNextHighlighted = parts[i + 1]?.isHighlighted || true;\n const isPreviousHighlighted = parts[i - 1]?.isHighlighted || true;\n\n if (\n !hasAlphanumeric.test(unescape(current.value)) &&\n isPreviousHighlighted === isNextHighlighted\n ) {\n return isPreviousHighlighted;\n }\n\n return current.isHighlighted;\n}\n","import { isPartHighlighted } from './isPartHighlighted';\nimport { ParsedAttribute } from './ParsedAttribute';\n\nexport function reverseHighlightedParts(parts: ParsedAttribute[]) {\n // We don't want to highlight the whole word when no parts match.\n if (!parts.some((part) => part.isHighlighted)) {\n return parts.map((part) => ({ ...part, isHighlighted: false }));\n }\n\n return parts.map((part, i) => ({\n ...part,\n isHighlighted: !isPartHighlighted(parts, i),\n }));\n}\n","import { HighlightedHit } from './HighlightedHit';\nimport { parseAlgoliaHitHighlight } from './parseAlgoliaHitHighlight';\nimport { ParseAlgoliaHitParams } from './ParseAlgoliaHitParams';\nimport { ParsedAttribute } from './ParsedAttribute';\nimport { reverseHighlightedParts } from './reverseHighlightedParts';\n\nexport function parseAlgoliaHitReverseHighlight<\n THit extends HighlightedHit<unknown>\n>(props: ParseAlgoliaHitParams<THit>): ParsedAttribute[] {\n return reverseHighlightedParts(parseAlgoliaHitHighlight<THit>(props));\n}\n","import { getAttributeValueByPath, warn } from '@algolia/autocomplete-shared';\n\nimport { ParseAlgoliaHitParams } from './ParseAlgoliaHitParams';\nimport { parseAttribute } from './parseAttribute';\nimport { ParsedAttribute } from './ParsedAttribute';\nimport { SnippetedHit } from './SnippetedHit';\n\nexport function parseAlgoliaHitSnippet<THit extends SnippetedHit<unknown>>({\n hit,\n attribute,\n}: ParseAlgoliaHitParams<THit>): ParsedAttribute[] {\n const path = Array.isArray(attribute) ? attribute : ([attribute] as string[]);\n let highlightedValue = getAttributeValueByPath(hit, [\n '_snippetResult',\n ...path,\n 'value',\n ]);\n\n if (typeof highlightedValue !== 'string') {\n warn(\n false,\n `The attribute \"${path.join('.')}\" described by the path ${JSON.stringify(\n path\n )} does not exist on the hit. Did you set it in \\`attributesToSnippet\\`?` +\n '\\nSee https://www.algolia.com/doc/api-reference/api-parameters/attributesToSnippet/'\n );\n\n highlightedValue = getAttributeValueByPath(hit, path) || '';\n }\n\n return parseAttribute({ highlightedValue });\n}\n","import { ParseAlgoliaHitParams } from './ParseAlgoliaHitParams';\nimport { parseAlgoliaHitSnippet } from './parseAlgoliaHitSnippet';\nimport { ParsedAttribute } from './ParsedAttribute';\nimport { reverseHighlightedParts } from './reverseHighlightedParts';\nimport { SnippetedHit } from './SnippetedHit';\n\nexport function parseAlgoliaHitReverseSnippet<\n THit extends SnippetedHit<unknown>\n>(props: ParseAlgoliaHitParams<THit>): ParsedAttribute[] {\n return reverseHighlightedParts(parseAlgoliaHitSnippet<THit>(props));\n}\n","import {\n MultipleQueriesQuery,\n SearchForFacetValuesResponse,\n SearchResponse,\n} from '@algolia/client-search';\nimport { SearchClient } from 'algoliasearch/lite';\n\nimport { fetchAlgoliaResults } from '../search';\n\ntype Fetcher = typeof fetchAlgoliaResults;\n\ntype FacetHit = {\n label: string;\n count: number;\n _highlightResult: {\n label: {\n value: string;\n };\n };\n};\n\nexport type FetcherParams = Pick<\n Parameters<Fetcher>[0],\n 'searchClient' | 'queries'\n>;\n\nexport type RequesterParams<THit> = {\n transformResponse(\n response: TransformResponseParams<THit>\n ): TransformedRequesterResponse<THit>;\n};\n\ntype TransformResponseParams<THit> = {\n results: Array<SearchResponse<THit> | SearchForFacetValuesResponse>;\n hits: Array<SearchResponse<THit>['hits']>;\n facetHits: FacetHit[][];\n};\n\nexport type TransformedRequesterResponse<THit> =\n | Array<SearchResponse<THit>['hits']>\n | SearchResponse<THit>['hits']\n | FacetHit[][]\n | FacetHit[];\n\nexport type TransformResponse<THit> = (\n response: TransformResponseParams<THit>\n) => TransformedRequesterResponse<THit>;\n\ntype FetcherParamsQuery<THit> = {\n query: MultipleQueriesQuery;\n sourceId: string;\n transformResponse: TransformResponse<THit>;\n};\n\ntype ExecuteParams<THit> = {\n searchClient: SearchClient;\n requests: Array<FetcherParamsQuery<THit>>;\n};\n\nexport type Execute<THit> = (\n params: ExecuteParams<THit>\n) => Promise<ExecuteResponse<THit>>;\n\nexport type ExecuteResponse<THit> = Array<{\n items: SearchResponse<THit> | SearchForFacetValuesResponse;\n sourceId: string;\n transformResponse: TransformResponse<THit>;\n}>;\n\nexport type RequestParams<THit> = FetcherParams & {\n /**\n * The function to transform the Algolia response before passing it to the Autocomplete state. You have access to the full Algolia results, as well as the pre-computed hits and facet hits.\n *\n * This is useful to manipulate the hits, or store data from the results in the [context](https://www.algolia.com/doc/ui-libraries/autocomplete/core-concepts/context/).\n */\n transformResponse?: TransformResponse<THit>;\n};\n\nexport type RequesterDescription<THit> = {\n searchClient: SearchClient;\n queries: MultipleQueriesQuery[];\n transformResponse: TransformResponse<THit>;\n execute: Execute<THit>;\n};\n\nexport function createRequester(fetcher: Fetcher) {\n function execute<THit>(fetcherParams: ExecuteParams<THit>) {\n return fetcher<THit>({\n searchClient: fetcherParams.searchClient,\n queries: fetcherParams.requests.map((x) => x.query),\n }).then((responses) =>\n responses.map((response, index) => {\n const { sourceId, transformResponse } = fetcherParams.requests[index];\n\n return {\n items: response,\n sourceId,\n transformResponse,\n };\n })\n );\n }\n\n return function createSpecifiedRequester(\n requesterParams: RequesterParams<any>\n ) {\n return function requester<TTHit>(\n requestParams: RequestParams<TTHit>\n ): RequesterDescription<TTHit> {\n return {\n execute,\n ...requesterParams,\n ...requestParams,\n };\n };\n };\n}\n","import {\n userAgents as coreUserAgents,\n UserAgent,\n} from '@algolia/autocomplete-shared';\nimport {\n MultipleQueriesQuery,\n SearchForFacetValuesResponse,\n SearchResponse,\n} from '@algolia/client-search';\nimport type { SearchClient } from 'algoliasearch/lite';\n\nimport { HIGHLIGHT_PRE_TAG, HIGHLIGHT_POST_TAG } from '../constants';\n\nexport interface SearchParams {\n /**\n * The initialized Algolia search client.\n */\n searchClient: SearchClient;\n /**\n * A list of queries to execute.\n */\n queries: MultipleQueriesQuery[];\n /**\n * A list of user agents to add to the search client.\n *\n * This is useful to track usage of an integration.\n */\n userAgents?: UserAgent[];\n}\n\nexport function fetchAlgoliaResults<TRecord>({\n searchClient,\n queries,\n userAgents = [],\n}: SearchParams): Promise<\n Array<SearchResponse<TRecord> | SearchForFacetValuesResponse>\n> {\n if (typeof searchClient.addAlgoliaAgent === 'function') {\n const algoliaAgents: UserAgent[] = [...coreUserAgents, ...userAgents];\n\n algoliaAgents.forEach(({ segment, version }) => {\n searchClient.addAlgoliaAgent(segment, version);\n });\n }\n\n return searchClient\n .search<TRecord>(\n queries.map((searchParameters) => {\n const { params, ...headers } = searchParameters;\n\n return {\n ...headers,\n params: {\n hitsPerPage: 5,\n highlightPreTag: HIGHLIGHT_PRE_TAG,\n highlightPostTag: HIGHLIGHT_POST_TAG,\n ...params,\n },\n };\n })\n )\n .then((response) => {\n return response.results;\n });\n}\n","import { fetchAlgoliaResults } from '../search';\n\nimport { createRequester } from './createRequester';\n\nexport const createAlgoliaRequester = createRequester(fetchAlgoliaResults);\n","import { MultipleQueriesQuery } from '@algolia/client-search';\n\nimport { createAlgoliaRequester } from './createAlgoliaRequester';\nimport { RequestParams } from './createRequester';\n\n/**\n * Retrieves Algolia facet hits from multiple indices.\n */\nexport function getAlgoliaFacets<TTHit>(requestParams: RequestParams<TTHit>) {\n const requester = createAlgoliaRequester({\n transformResponse: (response) => response.facetHits,\n });\n\n const queries = requestParams.queries.map((query) => ({\n ...query,\n type: 'facet',\n })) as MultipleQueriesQuery[];\n\n return requester({\n ...requestParams,\n queries,\n });\n}\n","import { createAlgoliaRequester } from './createAlgoliaRequester';\n\n/**\n * Retrieves Algolia results from multiple indices.\n */\nexport const getAlgoliaResults = createAlgoliaRequester({\n transformResponse: (response) => response.hits,\n});\n"],"names":["getAttributeValueByPath","record","path","reduce","current","key","version","userAgents","segment","warnCache","warn","condition","message","sanitizedMessage","trim","hasAlreadyPrinted","console","concat","HIGHLIGHT_PRE_TAG","HIGHLIGHT_POST_TAG","createAttributeSet","initialValue","value","get","add","part","lastPart","length","isHighlighted","push","parseAttribute","highlightedValue","preTagParts","split","firstValue","shift","parts","forEach","postTagParts","parseAlgoliaHitHighlight","hit","attribute","Array","isArray","process","join","JSON","stringify","htmlEscapes","hasAlphanumeric","RegExp","regexEscapedHtml","regexHasEscapedHtml","source","unescape","test","replace","character","isPartHighlighted","i","isNextHighlighted","isPreviousHighlighted","reverseHighlightedParts","some","map","parseAlgoliaHitReverseHighlight","props","parseAlgoliaHitSnippet","parseAlgoliaHitReverseSnippet","createRequester","fetcher","execute","fetcherParams","searchClient","queries","requests","x","query","then","responses","response","index","sourceId","transformResponse","items","createSpecifiedRequester","requesterParams","requester","requestParams","fetchAlgoliaResults","addAlgoliaAgent","algoliaAgents","coreUserAgents","search","searchParameters","params","headers","hitsPerPage","highlightPreTag","highlightPostTag","results","createAlgoliaRequester","getAlgoliaFacets","facetHits","type","getAlgoliaResults","hits"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- /*! @algolia/autocomplete-preset-algolia 1.2.2 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete */
2
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@algolia/autocomplete-preset-algolia"]={})}(this,(function(e){"use strict";function t(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function r(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function n(e){for(var n=1;n<arguments.length;n++){var i=null!=arguments[n]?arguments[n]:{};n%2?r(Object(i),!0).forEach((function(r){t(e,r,i[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):r(Object(i)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))}))}return e}function i(e,t){if(null==e)return{};var r,n,i=function(e,t){if(null==e)return{};var r,n,i={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}function o(e){return function(e){if(Array.isArray(e))return u(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return u(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return u(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function a(e,t){return t.reduce((function(e,t){return e&&e[t]}),e)}var l="__aa-highlight__",s="__/aa-highlight__";function c(e){var t=e.highlightedValue.split(l),r=t.shift(),n=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return{get:function(){return e},add:function(t){var r=e[e.length-1];(null==r?void 0:r.isHighlighted)===t.isHighlighted?e[e.length-1]={value:r.value+t.value,isHighlighted:r.isHighlighted}:e.push(t)}}}(r?[{value:r,isHighlighted:!1}]:[]);return t.forEach((function(e){var t=e.split(s);n.add({value:t[0],isHighlighted:!0}),""!==t[1]&&n.add({value:t[1],isHighlighted:!1})})),n.get()}function f(e){var t=e.hit,r=e.attribute,n=Array.isArray(r)?r:[r],i=a(t,["_highlightResult"].concat(o(n),["value"]));return"string"!=typeof i&&(i=a(t,n)||""),c({highlightedValue:i})}var g={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'"},h=new RegExp(/\w/i),p=/&(amp|quot|lt|gt|#39);/g,d=RegExp(p.source);function v(e,t){var r,n,i,o=e[t],u=(null===(r=e[t+1])||void 0===r?void 0:r.isHighlighted)||!0,a=(null===(n=e[t-1])||void 0===n?void 0:n.isHighlighted)||!0;return h.test((i=o.value)&&d.test(i)?i.replace(p,(function(e){return g[e]})):i)||a!==u?o.isHighlighted:a}function y(e){return e.some((function(e){return e.isHighlighted}))?e.map((function(t,r){return n(n({},t),{},{isHighlighted:!v(e,r)})})):e.map((function(e){return n(n({},e),{},{isHighlighted:!1})}))}function b(e){var t=e.hit,r=e.attribute,n=Array.isArray(r)?r:[r],i=a(t,["_snippetResult"].concat(o(n),["value"]));return"string"!=typeof i&&(i=a(t,n)||""),c({highlightedValue:i})}function m(e){function t(t){return e({searchClient:t.searchClient,queries:t.requests.map((function(e){return e.query}))}).then((function(e){return e.map((function(e,r){var n=t.requests[r];return{items:e,sourceId:n.sourceId,transformResponse:n.transformResponse}}))}))}return function(e){return function(r){return n(n({execute:t},e),r)}}}var O="1.2.2";function A(e){var t=e.searchClient,r=e.queries,u=e.userAgents,a=void 0===u?[]:u;"function"==typeof t.addAlgoliaAgent&&[{segment:"autocomplete-core",version:O}].concat(o(a)).forEach((function(e){var r=e.segment,n=e.version;t.addAlgoliaAgent(r,n)}));return t.search(r.map((function(e){var t=e.params;return n(n({},i(e,["params"])),{},{params:n({hitsPerPage:5,highlightPreTag:l,highlightPostTag:s},t)})}))).then((function(e){return e.results}))}var j=m(A);var H=j({transformResponse:function(e){return e.hits}});e.createRequester=m,e.fetchAlgoliaResults=A,e.getAlgoliaFacets=function(e){var t=j({transformResponse:function(e){return e.facetHits}}),r=e.queries.map((function(e){return n(n({},e),{},{type:"facet"})}));return t(n(n({},e),{},{queries:r}))},e.getAlgoliaResults=H,e.parseAlgoliaHitHighlight=f,e.parseAlgoliaHitReverseHighlight=function(e){return y(f(e))},e.parseAlgoliaHitReverseSnippet=function(e){return y(b(e))},e.parseAlgoliaHitSnippet=b,Object.defineProperty(e,"__esModule",{value:!0})}));
1
+ /*! @algolia/autocomplete-preset-algolia 1.5.0 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete */
2
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@algolia/autocomplete-preset-algolia"]={})}(this,(function(e){"use strict";function t(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function r(e){for(var r=1;r<arguments.length;r++){var i=null!=arguments[r]?arguments[r]:{};r%2?t(Object(i),!0).forEach((function(t){n(e,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):t(Object(i)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))}))}return e}function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){if(null==e)return{};var r,n,i=function(e,t){if(null==e)return{};var r,n,i={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}function o(e){return function(e){if(Array.isArray(e))return u(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return u(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return u(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function a(e,t){return t.reduce((function(e,t){return e&&e[t]}),e)}var l=[{segment:"autocomplete-core",version:"1.5.0"}];var s="__aa-highlight__",c="__/aa-highlight__";function f(e){var t=e.highlightedValue.split(s),r=t.shift(),n=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return{get:function(){return e},add:function(t){var r=e[e.length-1];(null==r?void 0:r.isHighlighted)===t.isHighlighted?e[e.length-1]={value:r.value+t.value,isHighlighted:r.isHighlighted}:e.push(t)}}}(r?[{value:r,isHighlighted:!1}]:[]);return t.forEach((function(e){var t=e.split(c);n.add({value:t[0],isHighlighted:!0}),""!==t[1]&&n.add({value:t[1],isHighlighted:!1})})),n.get()}function g(e){var t=e.hit,r=e.attribute,n=Array.isArray(r)?r:[r],i=a(t,["_highlightResult"].concat(o(n),["value"]));return"string"!=typeof i&&(i=a(t,n)||""),f({highlightedValue:i})}var h={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'"},p=new RegExp(/\w/i),d=/&(amp|quot|lt|gt|#39);/g,v=RegExp(d.source);function y(e,t){var r,n,i,o=e[t],u=(null===(r=e[t+1])||void 0===r?void 0:r.isHighlighted)||!0,a=(null===(n=e[t-1])||void 0===n?void 0:n.isHighlighted)||!0;return p.test((i=o.value)&&v.test(i)?i.replace(d,(function(e){return h[e]})):i)||a!==u?o.isHighlighted:a}function m(e){return e.some((function(e){return e.isHighlighted}))?e.map((function(t,n){return r(r({},t),{},{isHighlighted:!y(e,n)})})):e.map((function(e){return r(r({},e),{},{isHighlighted:!1})}))}function b(e){var t=e.hit,r=e.attribute,n=Array.isArray(r)?r:[r],i=a(t,["_snippetResult"].concat(o(n),["value"]));return"string"!=typeof i&&(i=a(t,n)||""),f({highlightedValue:i})}function O(e){function t(t){return e({searchClient:t.searchClient,queries:t.requests.map((function(e){return e.query}))}).then((function(e){return e.map((function(e,r){var n=t.requests[r];return{items:e,sourceId:n.sourceId,transformResponse:n.transformResponse}}))}))}return function(e){return function(n){return r(r({execute:t},e),n)}}}var A=["params"];function j(e){var t=e.searchClient,n=e.queries,u=e.userAgents,a=void 0===u?[]:u;"function"==typeof t.addAlgoliaAgent&&[].concat(o(l),o(a)).forEach((function(e){var r=e.segment,n=e.version;t.addAlgoliaAgent(r,n)}));return t.search(n.map((function(e){var t=e.params;return r(r({},i(e,A)),{},{params:r({hitsPerPage:5,highlightPreTag:s,highlightPostTag:c},t)})}))).then((function(e){return e.results}))}var H=O(j);var P=H({transformResponse:function(e){return e.hits}});e.createRequester=O,e.fetchAlgoliaResults=j,e.getAlgoliaFacets=function(e){var t=H({transformResponse:function(e){return e.facetHits}}),n=e.queries.map((function(e){return r(r({},e),{},{type:"facet"})}));return t(r(r({},e),{},{queries:n}))},e.getAlgoliaResults=P,e.parseAlgoliaHitHighlight=g,e.parseAlgoliaHitReverseHighlight=function(e){return m(g(e))},e.parseAlgoliaHitReverseSnippet=function(e){return m(b(e))},e.parseAlgoliaHitSnippet=b,Object.defineProperty(e,"__esModule",{value:!0})}));
3
3
  //# sourceMappingURL=index.production.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.production.js","sources":["../../../autocomplete-shared/dist/esm/getAttributeValueByPath.js","../../src/constants/index.ts","../../src/highlight/parseAttribute.ts","../../src/highlight/parseAlgoliaHitHighlight.ts","../../src/highlight/isPartHighlighted.ts","../../src/highlight/reverseHighlightedParts.ts","../../src/highlight/parseAlgoliaHitSnippet.ts","../../src/requester/createRequester.ts","../../src/version.ts","../../src/search/fetchAlgoliaResults.ts","../../src/requester/createAlgoliaRequester.ts","../../src/requester/getAlgoliaResults.ts","../../src/requester/getAlgoliaFacets.ts","../../src/highlight/parseAlgoliaHitReverseHighlight.ts","../../src/highlight/parseAlgoliaHitReverseSnippet.ts"],"sourcesContent":["export function getAttributeValueByPath(record, path) {\n return path.reduce(function (current, key) {\n return current && current[key];\n }, record);\n}","export const HIGHLIGHT_PRE_TAG = '__aa-highlight__';\nexport const HIGHLIGHT_POST_TAG = '__/aa-highlight__';\n","import { HIGHLIGHT_PRE_TAG, HIGHLIGHT_POST_TAG } from '../constants';\n\nimport { ParsedAttribute } from './ParsedAttribute';\n\n/**\n * Creates a data structure that allows to concatenate similar highlighting\n * parts in a single value.\n */\nfunction createAttributeSet(initialValue: ParsedAttribute[] = []) {\n const value = initialValue;\n\n return {\n get() {\n return value;\n },\n add(part: ParsedAttribute) {\n const lastPart: ParsedAttribute | undefined = value[value.length - 1];\n\n if (lastPart?.isHighlighted === part.isHighlighted) {\n value[value.length - 1] = {\n value: lastPart.value + part.value,\n isHighlighted: lastPart.isHighlighted,\n };\n } else {\n value.push(part);\n }\n },\n };\n}\n\ntype ParseAttributeParams = {\n highlightedValue: string;\n};\n\nexport function parseAttribute({\n highlightedValue,\n}: ParseAttributeParams): ParsedAttribute[] {\n const preTagParts = highlightedValue.split(HIGHLIGHT_PRE_TAG);\n const firstValue = preTagParts.shift();\n const parts = createAttributeSet(\n firstValue ? [{ value: firstValue, isHighlighted: false }] : []\n );\n\n preTagParts.forEach((part) => {\n const postTagParts = part.split(HIGHLIGHT_POST_TAG);\n\n parts.add({\n value: postTagParts[0],\n isHighlighted: true,\n });\n\n if (postTagParts[1] !== '') {\n parts.add({\n value: postTagParts[1],\n isHighlighted: false,\n });\n }\n });\n\n return parts.get();\n}\n","import { getAttributeValueByPath, warn } from '@algolia/autocomplete-shared';\n\nimport { HighlightedHit } from './HighlightedHit';\nimport { ParseAlgoliaHitParams } from './ParseAlgoliaHitParams';\nimport { parseAttribute } from './parseAttribute';\nimport { ParsedAttribute } from './ParsedAttribute';\n\nexport function parseAlgoliaHitHighlight<THit extends HighlightedHit<unknown>>({\n hit,\n attribute,\n}: ParseAlgoliaHitParams<THit>): ParsedAttribute[] {\n const path = Array.isArray(attribute) ? attribute : ([attribute] as string[]);\n let highlightedValue = getAttributeValueByPath(hit, [\n '_highlightResult',\n ...path,\n 'value',\n ]);\n\n if (typeof highlightedValue !== 'string') {\n warn(\n false,\n `The attribute \"${path.join('.')}\" described by the path ${JSON.stringify(\n path\n )} does not exist on the hit. Did you set it in \\`attributesToHighlight\\`?` +\n '\\nSee https://www.algolia.com/doc/api-reference/api-parameters/attributesToHighlight/'\n );\n\n highlightedValue = getAttributeValueByPath(hit, path) || '';\n }\n\n return parseAttribute({ highlightedValue });\n}\n","import { ParsedAttribute } from './ParsedAttribute';\n\nconst htmlEscapes = {\n '&amp;': '&',\n '&lt;': '<',\n '&gt;': '>',\n '&quot;': '\"',\n '&#39;': \"'\",\n};\nconst hasAlphanumeric = new RegExp(/\\w/i);\nconst regexEscapedHtml = /&(amp|quot|lt|gt|#39);/g;\nconst regexHasEscapedHtml = RegExp(regexEscapedHtml.source);\n\nfunction unescape(value: string): string {\n return value && regexHasEscapedHtml.test(value)\n ? value.replace(regexEscapedHtml, (character) => htmlEscapes[character])\n : value;\n}\n\nexport function isPartHighlighted(parts: ParsedAttribute[], i: number) {\n const current = parts[i];\n const isNextHighlighted = parts[i + 1]?.isHighlighted || true;\n const isPreviousHighlighted = parts[i - 1]?.isHighlighted || true;\n\n if (\n !hasAlphanumeric.test(unescape(current.value)) &&\n isPreviousHighlighted === isNextHighlighted\n ) {\n return isPreviousHighlighted;\n }\n\n return current.isHighlighted;\n}\n","import { isPartHighlighted } from './isPartHighlighted';\nimport { ParsedAttribute } from './ParsedAttribute';\n\nexport function reverseHighlightedParts(parts: ParsedAttribute[]) {\n // We don't want to highlight the whole word when no parts match.\n if (!parts.some((part) => part.isHighlighted)) {\n return parts.map((part) => ({ ...part, isHighlighted: false }));\n }\n\n return parts.map((part, i) => ({\n ...part,\n isHighlighted: !isPartHighlighted(parts, i),\n }));\n}\n","import { getAttributeValueByPath, warn } from '@algolia/autocomplete-shared';\n\nimport { ParseAlgoliaHitParams } from './ParseAlgoliaHitParams';\nimport { parseAttribute } from './parseAttribute';\nimport { ParsedAttribute } from './ParsedAttribute';\nimport { SnippetedHit } from './SnippetedHit';\n\nexport function parseAlgoliaHitSnippet<THit extends SnippetedHit<unknown>>({\n hit,\n attribute,\n}: ParseAlgoliaHitParams<THit>): ParsedAttribute[] {\n const path = Array.isArray(attribute) ? attribute : ([attribute] as string[]);\n let highlightedValue = getAttributeValueByPath(hit, [\n '_snippetResult',\n ...path,\n 'value',\n ]);\n\n if (typeof highlightedValue !== 'string') {\n warn(\n false,\n `The attribute \"${path.join('.')}\" described by the path ${JSON.stringify(\n path\n )} does not exist on the hit. Did you set it in \\`attributesToSnippet\\`?` +\n '\\nSee https://www.algolia.com/doc/api-reference/api-parameters/attributesToSnippet/'\n );\n\n highlightedValue = getAttributeValueByPath(hit, path) || '';\n }\n\n return parseAttribute({ highlightedValue });\n}\n","import {\n MultipleQueriesQuery,\n SearchForFacetValuesResponse,\n SearchResponse,\n} from '@algolia/client-search';\nimport { SearchClient } from 'algoliasearch/lite';\n\nimport { fetchAlgoliaResults } from '../search';\n\ntype Fetcher = typeof fetchAlgoliaResults;\n\ntype FacetHit = {\n label: string;\n count: number;\n _highlightResult: {\n label: {\n value: string;\n };\n };\n};\n\nexport type FetcherParams = Pick<\n Parameters<Fetcher>[0],\n 'searchClient' | 'queries'\n>;\n\nexport type RequesterParams<THit> = {\n transformResponse(\n response: TransformResponseParams<THit>\n ): TransformedRequesterResponse<THit>;\n};\n\ntype TransformResponseParams<THit> = {\n results: Array<SearchResponse<THit> | SearchForFacetValuesResponse>;\n hits: Array<SearchResponse<THit>['hits']>;\n facetHits: FacetHit[][];\n};\n\nexport type TransformedRequesterResponse<THit> =\n | Array<SearchResponse<THit>['hits']>\n | SearchResponse<THit>['hits']\n | FacetHit[][]\n | FacetHit[];\n\nexport type TransformResponse<THit> = (\n response: TransformResponseParams<THit>\n) => TransformedRequesterResponse<THit>;\n\ntype FetcherParamsQuery<THit> = {\n query: MultipleQueriesQuery;\n sourceId: string;\n transformResponse: TransformResponse<THit>;\n};\n\ntype ExecuteParams<THit> = {\n searchClient: SearchClient;\n requests: Array<FetcherParamsQuery<THit>>;\n};\n\nexport type Execute<THit> = (\n params: ExecuteParams<THit>\n) => Promise<ExecuteResponse<THit>>;\n\nexport type ExecuteResponse<THit> = Array<{\n items: SearchResponse<THit> | SearchForFacetValuesResponse;\n sourceId: string;\n transformResponse: TransformResponse<THit>;\n}>;\n\nexport type RequestParams<THit> = FetcherParams & {\n /**\n * The function to transform the Algolia response before passing it to the Autocomplete state. You have access to the full Algolia results, as well as the pre-computed hits and facet hits.\n *\n * This is useful to manipulate the hits, or store data from the results in the [context](https://www.algolia.com/doc/ui-libraries/autocomplete/core-concepts/context/).\n */\n transformResponse?: TransformResponse<THit>;\n};\n\nexport type RequesterDescription<THit> = {\n searchClient: SearchClient;\n queries: MultipleQueriesQuery[];\n transformResponse: TransformResponse<THit>;\n execute: Execute<THit>;\n};\n\nexport function createRequester(fetcher: Fetcher) {\n function execute<THit>(fetcherParams: ExecuteParams<THit>) {\n return fetcher<THit>({\n searchClient: fetcherParams.searchClient,\n queries: fetcherParams.requests.map((x) => x.query),\n }).then((responses) =>\n responses.map((response, index) => {\n const { sourceId, transformResponse } = fetcherParams.requests[index];\n\n return {\n items: response,\n sourceId,\n transformResponse,\n };\n })\n );\n }\n\n return function createSpecifiedRequester(\n requesterParams: RequesterParams<any>\n ) {\n return function requester<TTHit>(\n requestParams: RequestParams<TTHit>\n ): RequesterDescription<TTHit> {\n return {\n execute,\n ...requesterParams,\n ...requestParams,\n };\n };\n };\n}\n","export const version = '1.2.2';\n","import {\n MultipleQueriesQuery,\n SearchForFacetValuesResponse,\n SearchResponse,\n} from '@algolia/client-search';\nimport type { SearchClient } from 'algoliasearch/lite';\n\nimport { HIGHLIGHT_PRE_TAG, HIGHLIGHT_POST_TAG } from '../constants';\nimport { version } from '../version';\n\ntype UserAgent = { segment: string; version?: string };\n\nexport interface SearchParams {\n /**\n * The initialized Algolia search client.\n */\n searchClient: SearchClient;\n /**\n * A list of queries to execute.\n */\n queries: MultipleQueriesQuery[];\n /**\n * A list of user agents to add to the search client.\n *\n * This is useful to track usage of an integration.\n */\n userAgents?: UserAgent[];\n}\n\nexport function fetchAlgoliaResults<TRecord>({\n searchClient,\n queries,\n userAgents = [],\n}: SearchParams): Promise<\n Array<SearchResponse<TRecord> | SearchForFacetValuesResponse>\n> {\n if (typeof searchClient.addAlgoliaAgent === 'function') {\n const algoliaAgents: UserAgent[] = [\n { segment: 'autocomplete-core', version },\n ...userAgents,\n ];\n\n algoliaAgents.forEach(({ segment, version }) => {\n searchClient.addAlgoliaAgent(segment, version);\n });\n }\n\n return searchClient\n .search<TRecord>(\n queries.map((searchParameters) => {\n const { params, ...headers } = searchParameters;\n\n return {\n ...headers,\n params: {\n hitsPerPage: 5,\n highlightPreTag: HIGHLIGHT_PRE_TAG,\n highlightPostTag: HIGHLIGHT_POST_TAG,\n ...params,\n },\n };\n })\n )\n .then((response) => {\n return response.results;\n });\n}\n","import { fetchAlgoliaResults } from '../search';\n\nimport { createRequester } from './createRequester';\n\nexport const createAlgoliaRequester = createRequester(fetchAlgoliaResults);\n","import { createAlgoliaRequester } from './createAlgoliaRequester';\n\n/**\n * Retrieves Algolia results from multiple indices.\n */\nexport const getAlgoliaResults = createAlgoliaRequester({\n transformResponse: (response) => response.hits,\n});\n","import { MultipleQueriesQuery } from '@algolia/client-search';\n\nimport { createAlgoliaRequester } from './createAlgoliaRequester';\nimport { RequestParams } from './createRequester';\n\n/**\n * Retrieves Algolia facet hits from multiple indices.\n */\nexport function getAlgoliaFacets<TTHit>(requestParams: RequestParams<TTHit>) {\n const requester = createAlgoliaRequester({\n transformResponse: (response) => response.facetHits,\n });\n\n const queries = requestParams.queries.map((query) => ({\n ...query,\n type: 'facet',\n })) as MultipleQueriesQuery[];\n\n return requester({\n ...requestParams,\n queries,\n });\n}\n","import { HighlightedHit } from './HighlightedHit';\nimport { parseAlgoliaHitHighlight } from './parseAlgoliaHitHighlight';\nimport { ParseAlgoliaHitParams } from './ParseAlgoliaHitParams';\nimport { ParsedAttribute } from './ParsedAttribute';\nimport { reverseHighlightedParts } from './reverseHighlightedParts';\n\nexport function parseAlgoliaHitReverseHighlight<\n THit extends HighlightedHit<unknown>\n>(props: ParseAlgoliaHitParams<THit>): ParsedAttribute[] {\n return reverseHighlightedParts(parseAlgoliaHitHighlight<THit>(props));\n}\n","import { ParseAlgoliaHitParams } from './ParseAlgoliaHitParams';\nimport { parseAlgoliaHitSnippet } from './parseAlgoliaHitSnippet';\nimport { ParsedAttribute } from './ParsedAttribute';\nimport { reverseHighlightedParts } from './reverseHighlightedParts';\nimport { SnippetedHit } from './SnippetedHit';\n\nexport function parseAlgoliaHitReverseSnippet<\n THit extends SnippetedHit<unknown>\n>(props: ParseAlgoliaHitParams<THit>): ParsedAttribute[] {\n return reverseHighlightedParts(parseAlgoliaHitSnippet<THit>(props));\n}\n"],"names":["getAttributeValueByPath","record","path","reduce","current","key","HIGHLIGHT_PRE_TAG","HIGHLIGHT_POST_TAG","parseAttribute","preTagParts","highlightedValue","split","firstValue","shift","parts","value","get","add","part","lastPart","length","isHighlighted","push","createAttributeSet","forEach","postTagParts","parseAlgoliaHitHighlight","hit","attribute","Array","isArray","htmlEscapes","hasAlphanumeric","RegExp","regexEscapedHtml","regexHasEscapedHtml","source","isPartHighlighted","i","isNextHighlighted","isPreviousHighlighted","test","replace","character","reverseHighlightedParts","some","map","parseAlgoliaHitSnippet","createRequester","fetcher","execute","fetcherParams","searchClient","queries","requests","x","query","then","responses","response","index","items","sourceId","transformResponse","requesterParams","requestParams","version","fetchAlgoliaResults","userAgents","addAlgoliaAgent","segment","search","searchParameters","params","hitsPerPage","highlightPreTag","highlightPostTag","results","createAlgoliaRequester","getAlgoliaResults","hits","requester","facetHits","type","props"],"mappings":"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"}
1
+ {"version":3,"file":"index.production.js","sources":["../../../autocomplete-shared/dist/esm/getAttributeValueByPath.js","../../../autocomplete-shared/dist/esm/version.js","../../../autocomplete-shared/dist/esm/userAgents.js","../../src/constants/index.ts","../../src/highlight/parseAttribute.ts","../../src/highlight/parseAlgoliaHitHighlight.ts","../../src/highlight/isPartHighlighted.ts","../../src/highlight/reverseHighlightedParts.ts","../../src/highlight/parseAlgoliaHitSnippet.ts","../../src/requester/createRequester.ts","../../src/search/fetchAlgoliaResults.ts","../../src/requester/createAlgoliaRequester.ts","../../src/requester/getAlgoliaResults.ts","../../src/requester/getAlgoliaFacets.ts","../../src/highlight/parseAlgoliaHitReverseHighlight.ts","../../src/highlight/parseAlgoliaHitReverseSnippet.ts"],"sourcesContent":["export function getAttributeValueByPath(record, path) {\n return path.reduce(function (current, key) {\n return current && current[key];\n }, record);\n}","export var version = '1.5.0';","import { version } from './version';\nexport var userAgents = [{\n segment: 'autocomplete-core',\n version: version\n}];","export const HIGHLIGHT_PRE_TAG = '__aa-highlight__';\nexport const HIGHLIGHT_POST_TAG = '__/aa-highlight__';\n","import { HIGHLIGHT_PRE_TAG, HIGHLIGHT_POST_TAG } from '../constants';\n\nimport { ParsedAttribute } from './ParsedAttribute';\n\n/**\n * Creates a data structure that allows to concatenate similar highlighting\n * parts in a single value.\n */\nfunction createAttributeSet(initialValue: ParsedAttribute[] = []) {\n const value = initialValue;\n\n return {\n get() {\n return value;\n },\n add(part: ParsedAttribute) {\n const lastPart: ParsedAttribute | undefined = value[value.length - 1];\n\n if (lastPart?.isHighlighted === part.isHighlighted) {\n value[value.length - 1] = {\n value: lastPart.value + part.value,\n isHighlighted: lastPart.isHighlighted,\n };\n } else {\n value.push(part);\n }\n },\n };\n}\n\ntype ParseAttributeParams = {\n highlightedValue: string;\n};\n\nexport function parseAttribute({\n highlightedValue,\n}: ParseAttributeParams): ParsedAttribute[] {\n const preTagParts = highlightedValue.split(HIGHLIGHT_PRE_TAG);\n const firstValue = preTagParts.shift();\n const parts = createAttributeSet(\n firstValue ? [{ value: firstValue, isHighlighted: false }] : []\n );\n\n preTagParts.forEach((part) => {\n const postTagParts = part.split(HIGHLIGHT_POST_TAG);\n\n parts.add({\n value: postTagParts[0],\n isHighlighted: true,\n });\n\n if (postTagParts[1] !== '') {\n parts.add({\n value: postTagParts[1],\n isHighlighted: false,\n });\n }\n });\n\n return parts.get();\n}\n","import { getAttributeValueByPath, warn } from '@algolia/autocomplete-shared';\n\nimport { HighlightedHit } from './HighlightedHit';\nimport { ParseAlgoliaHitParams } from './ParseAlgoliaHitParams';\nimport { parseAttribute } from './parseAttribute';\nimport { ParsedAttribute } from './ParsedAttribute';\n\nexport function parseAlgoliaHitHighlight<THit extends HighlightedHit<unknown>>({\n hit,\n attribute,\n}: ParseAlgoliaHitParams<THit>): ParsedAttribute[] {\n const path = Array.isArray(attribute) ? attribute : ([attribute] as string[]);\n let highlightedValue = getAttributeValueByPath(hit, [\n '_highlightResult',\n ...path,\n 'value',\n ]);\n\n if (typeof highlightedValue !== 'string') {\n warn(\n false,\n `The attribute \"${path.join('.')}\" described by the path ${JSON.stringify(\n path\n )} does not exist on the hit. Did you set it in \\`attributesToHighlight\\`?` +\n '\\nSee https://www.algolia.com/doc/api-reference/api-parameters/attributesToHighlight/'\n );\n\n highlightedValue = getAttributeValueByPath(hit, path) || '';\n }\n\n return parseAttribute({ highlightedValue });\n}\n","import { ParsedAttribute } from './ParsedAttribute';\n\nconst htmlEscapes = {\n '&amp;': '&',\n '&lt;': '<',\n '&gt;': '>',\n '&quot;': '\"',\n '&#39;': \"'\",\n};\nconst hasAlphanumeric = new RegExp(/\\w/i);\nconst regexEscapedHtml = /&(amp|quot|lt|gt|#39);/g;\nconst regexHasEscapedHtml = RegExp(regexEscapedHtml.source);\n\nfunction unescape(value: string): string {\n return value && regexHasEscapedHtml.test(value)\n ? value.replace(regexEscapedHtml, (character) => htmlEscapes[character])\n : value;\n}\n\nexport function isPartHighlighted(parts: ParsedAttribute[], i: number) {\n const current = parts[i];\n const isNextHighlighted = parts[i + 1]?.isHighlighted || true;\n const isPreviousHighlighted = parts[i - 1]?.isHighlighted || true;\n\n if (\n !hasAlphanumeric.test(unescape(current.value)) &&\n isPreviousHighlighted === isNextHighlighted\n ) {\n return isPreviousHighlighted;\n }\n\n return current.isHighlighted;\n}\n","import { isPartHighlighted } from './isPartHighlighted';\nimport { ParsedAttribute } from './ParsedAttribute';\n\nexport function reverseHighlightedParts(parts: ParsedAttribute[]) {\n // We don't want to highlight the whole word when no parts match.\n if (!parts.some((part) => part.isHighlighted)) {\n return parts.map((part) => ({ ...part, isHighlighted: false }));\n }\n\n return parts.map((part, i) => ({\n ...part,\n isHighlighted: !isPartHighlighted(parts, i),\n }));\n}\n","import { getAttributeValueByPath, warn } from '@algolia/autocomplete-shared';\n\nimport { ParseAlgoliaHitParams } from './ParseAlgoliaHitParams';\nimport { parseAttribute } from './parseAttribute';\nimport { ParsedAttribute } from './ParsedAttribute';\nimport { SnippetedHit } from './SnippetedHit';\n\nexport function parseAlgoliaHitSnippet<THit extends SnippetedHit<unknown>>({\n hit,\n attribute,\n}: ParseAlgoliaHitParams<THit>): ParsedAttribute[] {\n const path = Array.isArray(attribute) ? attribute : ([attribute] as string[]);\n let highlightedValue = getAttributeValueByPath(hit, [\n '_snippetResult',\n ...path,\n 'value',\n ]);\n\n if (typeof highlightedValue !== 'string') {\n warn(\n false,\n `The attribute \"${path.join('.')}\" described by the path ${JSON.stringify(\n path\n )} does not exist on the hit. Did you set it in \\`attributesToSnippet\\`?` +\n '\\nSee https://www.algolia.com/doc/api-reference/api-parameters/attributesToSnippet/'\n );\n\n highlightedValue = getAttributeValueByPath(hit, path) || '';\n }\n\n return parseAttribute({ highlightedValue });\n}\n","import {\n MultipleQueriesQuery,\n SearchForFacetValuesResponse,\n SearchResponse,\n} from '@algolia/client-search';\nimport { SearchClient } from 'algoliasearch/lite';\n\nimport { fetchAlgoliaResults } from '../search';\n\ntype Fetcher = typeof fetchAlgoliaResults;\n\ntype FacetHit = {\n label: string;\n count: number;\n _highlightResult: {\n label: {\n value: string;\n };\n };\n};\n\nexport type FetcherParams = Pick<\n Parameters<Fetcher>[0],\n 'searchClient' | 'queries'\n>;\n\nexport type RequesterParams<THit> = {\n transformResponse(\n response: TransformResponseParams<THit>\n ): TransformedRequesterResponse<THit>;\n};\n\ntype TransformResponseParams<THit> = {\n results: Array<SearchResponse<THit> | SearchForFacetValuesResponse>;\n hits: Array<SearchResponse<THit>['hits']>;\n facetHits: FacetHit[][];\n};\n\nexport type TransformedRequesterResponse<THit> =\n | Array<SearchResponse<THit>['hits']>\n | SearchResponse<THit>['hits']\n | FacetHit[][]\n | FacetHit[];\n\nexport type TransformResponse<THit> = (\n response: TransformResponseParams<THit>\n) => TransformedRequesterResponse<THit>;\n\ntype FetcherParamsQuery<THit> = {\n query: MultipleQueriesQuery;\n sourceId: string;\n transformResponse: TransformResponse<THit>;\n};\n\ntype ExecuteParams<THit> = {\n searchClient: SearchClient;\n requests: Array<FetcherParamsQuery<THit>>;\n};\n\nexport type Execute<THit> = (\n params: ExecuteParams<THit>\n) => Promise<ExecuteResponse<THit>>;\n\nexport type ExecuteResponse<THit> = Array<{\n items: SearchResponse<THit> | SearchForFacetValuesResponse;\n sourceId: string;\n transformResponse: TransformResponse<THit>;\n}>;\n\nexport type RequestParams<THit> = FetcherParams & {\n /**\n * The function to transform the Algolia response before passing it to the Autocomplete state. You have access to the full Algolia results, as well as the pre-computed hits and facet hits.\n *\n * This is useful to manipulate the hits, or store data from the results in the [context](https://www.algolia.com/doc/ui-libraries/autocomplete/core-concepts/context/).\n */\n transformResponse?: TransformResponse<THit>;\n};\n\nexport type RequesterDescription<THit> = {\n searchClient: SearchClient;\n queries: MultipleQueriesQuery[];\n transformResponse: TransformResponse<THit>;\n execute: Execute<THit>;\n};\n\nexport function createRequester(fetcher: Fetcher) {\n function execute<THit>(fetcherParams: ExecuteParams<THit>) {\n return fetcher<THit>({\n searchClient: fetcherParams.searchClient,\n queries: fetcherParams.requests.map((x) => x.query),\n }).then((responses) =>\n responses.map((response, index) => {\n const { sourceId, transformResponse } = fetcherParams.requests[index];\n\n return {\n items: response,\n sourceId,\n transformResponse,\n };\n })\n );\n }\n\n return function createSpecifiedRequester(\n requesterParams: RequesterParams<any>\n ) {\n return function requester<TTHit>(\n requestParams: RequestParams<TTHit>\n ): RequesterDescription<TTHit> {\n return {\n execute,\n ...requesterParams,\n ...requestParams,\n };\n };\n };\n}\n","import {\n userAgents as coreUserAgents,\n UserAgent,\n} from '@algolia/autocomplete-shared';\nimport {\n MultipleQueriesQuery,\n SearchForFacetValuesResponse,\n SearchResponse,\n} from '@algolia/client-search';\nimport type { SearchClient } from 'algoliasearch/lite';\n\nimport { HIGHLIGHT_PRE_TAG, HIGHLIGHT_POST_TAG } from '../constants';\n\nexport interface SearchParams {\n /**\n * The initialized Algolia search client.\n */\n searchClient: SearchClient;\n /**\n * A list of queries to execute.\n */\n queries: MultipleQueriesQuery[];\n /**\n * A list of user agents to add to the search client.\n *\n * This is useful to track usage of an integration.\n */\n userAgents?: UserAgent[];\n}\n\nexport function fetchAlgoliaResults<TRecord>({\n searchClient,\n queries,\n userAgents = [],\n}: SearchParams): Promise<\n Array<SearchResponse<TRecord> | SearchForFacetValuesResponse>\n> {\n if (typeof searchClient.addAlgoliaAgent === 'function') {\n const algoliaAgents: UserAgent[] = [...coreUserAgents, ...userAgents];\n\n algoliaAgents.forEach(({ segment, version }) => {\n searchClient.addAlgoliaAgent(segment, version);\n });\n }\n\n return searchClient\n .search<TRecord>(\n queries.map((searchParameters) => {\n const { params, ...headers } = searchParameters;\n\n return {\n ...headers,\n params: {\n hitsPerPage: 5,\n highlightPreTag: HIGHLIGHT_PRE_TAG,\n highlightPostTag: HIGHLIGHT_POST_TAG,\n ...params,\n },\n };\n })\n )\n .then((response) => {\n return response.results;\n });\n}\n","import { fetchAlgoliaResults } from '../search';\n\nimport { createRequester } from './createRequester';\n\nexport const createAlgoliaRequester = createRequester(fetchAlgoliaResults);\n","import { createAlgoliaRequester } from './createAlgoliaRequester';\n\n/**\n * Retrieves Algolia results from multiple indices.\n */\nexport const getAlgoliaResults = createAlgoliaRequester({\n transformResponse: (response) => response.hits,\n});\n","import { MultipleQueriesQuery } from '@algolia/client-search';\n\nimport { createAlgoliaRequester } from './createAlgoliaRequester';\nimport { RequestParams } from './createRequester';\n\n/**\n * Retrieves Algolia facet hits from multiple indices.\n */\nexport function getAlgoliaFacets<TTHit>(requestParams: RequestParams<TTHit>) {\n const requester = createAlgoliaRequester({\n transformResponse: (response) => response.facetHits,\n });\n\n const queries = requestParams.queries.map((query) => ({\n ...query,\n type: 'facet',\n })) as MultipleQueriesQuery[];\n\n return requester({\n ...requestParams,\n queries,\n });\n}\n","import { HighlightedHit } from './HighlightedHit';\nimport { parseAlgoliaHitHighlight } from './parseAlgoliaHitHighlight';\nimport { ParseAlgoliaHitParams } from './ParseAlgoliaHitParams';\nimport { ParsedAttribute } from './ParsedAttribute';\nimport { reverseHighlightedParts } from './reverseHighlightedParts';\n\nexport function parseAlgoliaHitReverseHighlight<\n THit extends HighlightedHit<unknown>\n>(props: ParseAlgoliaHitParams<THit>): ParsedAttribute[] {\n return reverseHighlightedParts(parseAlgoliaHitHighlight<THit>(props));\n}\n","import { ParseAlgoliaHitParams } from './ParseAlgoliaHitParams';\nimport { parseAlgoliaHitSnippet } from './parseAlgoliaHitSnippet';\nimport { ParsedAttribute } from './ParsedAttribute';\nimport { reverseHighlightedParts } from './reverseHighlightedParts';\nimport { SnippetedHit } from './SnippetedHit';\n\nexport function parseAlgoliaHitReverseSnippet<\n THit extends SnippetedHit<unknown>\n>(props: ParseAlgoliaHitParams<THit>): ParsedAttribute[] {\n return reverseHighlightedParts(parseAlgoliaHitSnippet<THit>(props));\n}\n"],"names":["getAttributeValueByPath","record","path","reduce","current","key","userAgents","segment","version","HIGHLIGHT_PRE_TAG","HIGHLIGHT_POST_TAG","parseAttribute","preTagParts","highlightedValue","split","firstValue","shift","parts","value","get","add","part","lastPart","length","isHighlighted","push","createAttributeSet","forEach","postTagParts","parseAlgoliaHitHighlight","hit","attribute","Array","isArray","htmlEscapes","hasAlphanumeric","RegExp","regexEscapedHtml","regexHasEscapedHtml","source","isPartHighlighted","i","isNextHighlighted","isPreviousHighlighted","test","replace","character","reverseHighlightedParts","some","map","parseAlgoliaHitSnippet","createRequester","fetcher","execute","fetcherParams","searchClient","queries","requests","x","query","then","responses","response","index","items","sourceId","transformResponse","requesterParams","requestParams","fetchAlgoliaResults","addAlgoliaAgent","coreUserAgents","search","searchParameters","params","hitsPerPage","highlightPreTag","highlightPostTag","results","createAlgoliaRequester","getAlgoliaResults","hits","requester","facetHits","type","props"],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@algolia/autocomplete-preset-algolia",
3
3
  "description": "Presets for building autocomplete experiences with Algolia.",
4
- "version": "1.2.2",
4
+ "version": "1.5.0",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/algolia/autocomplete",
7
7
  "repository": "algolia/autocomplete",
@@ -31,7 +31,7 @@
31
31
  "watch": "watch \"yarn on:change\" --ignoreDirectoryPattern \"/dist/\""
32
32
  },
33
33
  "dependencies": {
34
- "@algolia/autocomplete-shared": "1.2.2"
34
+ "@algolia/autocomplete-shared": "1.5.0"
35
35
  },
36
36
  "devDependencies": {
37
37
  "@algolia/client-search": "4.9.1",
@@ -1 +0,0 @@
1
- export declare const version = "1.2.2";
@@ -1 +0,0 @@
1
- export var version = '1.2.2';