{"version":3,"file":"8325.d503932befe4c6a8185e.js?ssi=0","mappings":"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","sources":["webpack://@logos/commerceweb-frontend/../node_modules/@algolia/events/events.js","webpack://@logos/commerceweb-frontend/../node_modules/algoliasearch-helper/index.js","webpack://@logos/commerceweb-frontend/../node_modules/algoliasearch-helper/src/DerivedHelper/index.js","webpack://@logos/commerceweb-frontend/../node_modules/algoliasearch-helper/src/RecommendParameters/index.js","webpack://@logos/commerceweb-frontend/../node_modules/algoliasearch-helper/src/RecommendResults/index.js","webpack://@logos/commerceweb-frontend/../node_modules/algoliasearch-helper/src/SearchParameters/RefinementList.js","webpack://@logos/commerceweb-frontend/../node_modules/algoliasearch-helper/src/SearchParameters/index.js","webpack://@logos/commerceweb-frontend/../node_modules/algoliasearch-helper/src/SearchResults/generate-hierarchical-tree.js","webpack://@logos/commerceweb-frontend/../node_modules/algoliasearch-helper/src/SearchResults/index.js","webpack://@logos/commerceweb-frontend/../node_modules/algoliasearch-helper/src/algoliasearch.helper.js","webpack://@logos/commerceweb-frontend/../node_modules/algoliasearch-helper/src/functions/compact.js","webpack://@logos/commerceweb-frontend/../node_modules/algoliasearch-helper/src/functions/defaultsPure.js","webpack://@logos/commerceweb-frontend/../node_modules/algoliasearch-helper/src/functions/escapeFacetValue.js","webpack://@logos/commerceweb-frontend/../node_modules/algoliasearch-helper/src/functions/find.js","webpack://@logos/commerceweb-frontend/../node_modules/algoliasearch-helper/src/functions/findIndex.js","webpack://@logos/commerceweb-frontend/../node_modules/algoliasearch-helper/src/functions/flat.js","webpack://@logos/commerceweb-frontend/../node_modules/algoliasearch-helper/src/functions/formatSort.js","webpack://@logos/commerceweb-frontend/../node_modules/algoliasearch-helper/src/functions/inherits.js","webpack://@logos/commerceweb-frontend/../node_modules/algoliasearch-helper/src/functions/intersection.js","webpack://@logos/commerceweb-frontend/../node_modules/algoliasearch-helper/src/functions/merge.js","webpack://@logos/commerceweb-frontend/../node_modules/algoliasearch-helper/src/functions/mergeNumericMax.js","webpack://@logos/commerceweb-frontend/../node_modules/algoliasearch-helper/src/functions/objectHasKeys.js","webpack://@logos/commerceweb-frontend/../node_modules/algoliasearch-helper/src/functions/omit.js","webpack://@logos/commerceweb-frontend/../node_modules/algoliasearch-helper/src/functions/orderBy.js","webpack://@logos/commerceweb-frontend/../node_modules/algoliasearch-helper/src/functions/valToNumber.js","webpack://@logos/commerceweb-frontend/../node_modules/algoliasearch-helper/src/requestBuilder.js","webpack://@logos/commerceweb-frontend/../node_modules/algoliasearch-helper/src/utils/isValidUserToken.js","webpack://@logos/commerceweb-frontend/../node_modules/algoliasearch-helper/src/utils/sortAndMergeRecommendations.js","webpack://@logos/commerceweb-frontend/../node_modules/algoliasearch-helper/src/version.js","webpack://@logos/commerceweb-frontend/../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js","webpack://@logos/commerceweb-frontend/../node_modules/use-sync-external-store/shim/index.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/@swc/helpers/cjs/_array_like_to_array.cjs","webpack://@logos/commerceweb-frontend/javascript/node_modules/@swc/helpers/cjs/_array_with_holes.cjs","webpack://@logos/commerceweb-frontend/javascript/node_modules/@swc/helpers/cjs/_array_without_holes.cjs","webpack://@logos/commerceweb-frontend/javascript/node_modules/@swc/helpers/cjs/_assert_this_initialized.cjs","webpack://@logos/commerceweb-frontend/javascript/node_modules/@swc/helpers/cjs/_call_super.cjs","webpack://@logos/commerceweb-frontend/javascript/node_modules/@swc/helpers/cjs/_class_call_check.cjs","webpack://@logos/commerceweb-frontend/javascript/node_modules/@swc/helpers/cjs/_create_class.cjs","webpack://@logos/commerceweb-frontend/javascript/node_modules/@swc/helpers/cjs/_define_property.cjs","webpack://@logos/commerceweb-frontend/javascript/node_modules/@swc/helpers/cjs/_extends.cjs","webpack://@logos/commerceweb-frontend/javascript/node_modules/@swc/helpers/cjs/_get_prototype_of.cjs","webpack://@logos/commerceweb-frontend/javascript/node_modules/@swc/helpers/cjs/_inherits.cjs","webpack://@logos/commerceweb-frontend/javascript/node_modules/@swc/helpers/cjs/_instanceof.cjs","webpack://@logos/commerceweb-frontend/javascript/node_modules/@swc/helpers/cjs/_is_native_reflect_construct.cjs","webpack://@logos/commerceweb-frontend/javascript/node_modules/@swc/helpers/cjs/_iterable_to_array.cjs","webpack://@logos/commerceweb-frontend/javascript/node_modules/@swc/helpers/cjs/_iterable_to_array_limit.cjs","webpack://@logos/commerceweb-frontend/javascript/node_modules/@swc/helpers/cjs/_non_iterable_rest.cjs","webpack://@logos/commerceweb-frontend/javascript/node_modules/@swc/helpers/cjs/_non_iterable_spread.cjs","webpack://@logos/commerceweb-frontend/javascript/node_modules/@swc/helpers/cjs/_object_destructuring_empty.cjs","webpack://@logos/commerceweb-frontend/javascript/node_modules/@swc/helpers/cjs/_object_spread.cjs","webpack://@logos/commerceweb-frontend/javascript/node_modules/@swc/helpers/cjs/_object_spread_props.cjs","webpack://@logos/commerceweb-frontend/javascript/node_modules/@swc/helpers/cjs/_object_without_properties.cjs","webpack://@logos/commerceweb-frontend/javascript/node_modules/@swc/helpers/cjs/_object_without_properties_loose.cjs","webpack://@logos/commerceweb-frontend/javascript/node_modules/@swc/helpers/cjs/_possible_constructor_return.cjs","webpack://@logos/commerceweb-frontend/javascript/node_modules/@swc/helpers/cjs/_set_prototype_of.cjs","webpack://@logos/commerceweb-frontend/javascript/node_modules/@swc/helpers/cjs/_sliced_to_array.cjs","webpack://@logos/commerceweb-frontend/javascript/node_modules/@swc/helpers/cjs/_to_array.cjs","webpack://@logos/commerceweb-frontend/javascript/node_modules/@swc/helpers/cjs/_to_consumable_array.cjs","webpack://@logos/commerceweb-frontend/javascript/node_modules/@swc/helpers/cjs/_type_of.cjs","webpack://@logos/commerceweb-frontend/javascript/node_modules/@swc/helpers/cjs/_unsupported_iterable_to_array.cjs","webpack://@logos/commerceweb-frontend/javascript/node_modules/@algolia/client-common/dist/common.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/@algolia/requester-browser-xhr/dist/requester.xhr.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/@faithlife/command-sentence-control/dist/command-sentence.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/lib/utils/checkRendering.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/lib/utils/getObjectType.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/lib/utils/documentation.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/lib/utils/escape-highlight.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/lib/utils/escape-html.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/lib/utils/find.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/lib/utils/isIndexWidget.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/lib/utils/isPlainObject.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/lib/utils/mergeSearchParameters.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/lib/utils/findIndex.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/lib/utils/uniq.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/lib/utils/noop.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/lib/utils/serializer.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/connectors/configure/connectConfigure.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/react-instantsearch-core/dist/es/components/Configure.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/react-instantsearch-core/dist/es/connectors/useConfigure.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/lib/utils/safelyRunOnBrowser.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/lib/utils/getAppIdAndApiKey.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/middlewares/createInsightsMiddleware.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/helpers/get-insights-anonymous-user-token.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/lib/utils/uuid.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/lib/utils/render-args.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/middlewares/createMetadataMiddleware.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/lib/utils/getAlgoliaAgent.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/lib/routers/history.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/lib/stateMappings/simple.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/lib/utils/isEqual.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/middlewares/createRouterMiddleware.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/lib/utils/addWidgetId.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/lib/utils/defer.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/lib/utils/resolveSearchParameters.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/widgets/index/index.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/lib/suit.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/lib/utils/getPropertyByPath.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/helpers/highlight.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/lib/utils/concatHighlightedParts.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/lib/utils/getHighlightFromSiblings.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/lib/utils/reverseHighlightedParts.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/lib/utils/getHighlightedParts.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/helpers/reverseHighlight.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/helpers/snippet.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/helpers/reverseSnippet.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/lib/createHelpers.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/lib/formatNumber.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/helpers/insights.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/lib/utils/hydrateSearchClient.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/lib/utils/setIndexHelperState.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/lib/InstantSearch.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/lib/version.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/lib/utils/hydrateRecommendCache.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/react-instantsearch-core/dist/es/version.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/react-instantsearch-core/dist/es/lib/useInstantSearchApi.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/react-instantsearch-core/dist/es/components/InstantSearch.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/react-instantsearch-core/dist/es/lib/useForceUpdate.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/react-instantsearch-core/dist/es/components/InstantSearchSSRProvider.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/lib/utils/createSendEventForHits.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/connectors/hits/connectHits.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/lib/utils/hits-absolute-position.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/lib/utils/hits-query-id.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/react-instantsearch-core/dist/es/connectors/useHits.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/instantsearch.js/es/connectors/search-box/connectSearchBox.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/react-instantsearch-core/dist/es/connectors/useSearchBox.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/react-instantsearch-core/dist/es/lib/useStableValue.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/react-instantsearch-core/dist/es/lib/use.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/react-instantsearch-core/dist/es/hooks/useConnector.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/react-instantsearch-core/dist/es/lib/useWidget.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/react-instantsearch-core/dist/es/hooks/useInstantSearch.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/react-instantsearch-core/dist/es/lib/useSearchState.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/react-instantsearch-core/dist/es/lib/useSearchResults.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/react-instantsearch-core/dist/es/lib/IndexContext.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/react-instantsearch-core/dist/es/lib/InstantSearchContext.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/react-instantsearch-core/dist/es/lib/InstantSearchSSRContext.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/react-instantsearch-core/dist/es/lib/dequal.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/react-instantsearch-core/dist/es/lib/createSearchResults.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/react-instantsearch-core/dist/es/lib/getIndexSearchResults.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/react-instantsearch-core/dist/es/lib/invariant.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/react-instantsearch-core/dist/es/lib/useIndexContext.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/react-instantsearch-core/dist/es/lib/useInstantSearchContext.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/react-instantsearch-core/dist/es/lib/useInstantSearchSSRContext.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/react-instantsearch-core/dist/es/components/InstantSearchServerContext.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/react-instantsearch-core/dist/es/lib/useInstantSearchServerContext.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/react-instantsearch-core/dist/es/lib/useIsomorphicLayoutEffect.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/react-instantsearch-core/dist/es/lib/InstantSearchRSCContext.js","webpack://@logos/commerceweb-frontend/javascript/node_modules/react-instantsearch-core/dist/es/lib/useRSCContext.js"],"sourcesContent":["// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n  this._events = this._events || {};\n  this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\n// EventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n  if (!isNumber(n) || n < 0 || isNaN(n))\n    throw TypeError('n must be a positive number');\n  this._maxListeners = n;\n  return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n  var er, handler, len, args, i, listeners;\n\n  if (!this._events)\n    this._events = {};\n\n  // If there is no 'error' event listener then throw.\n  if (type === 'error') {\n    if (!this._events.error ||\n        (isObject(this._events.error) && !this._events.error.length)) {\n      er = arguments[1];\n      if (er instanceof Error) {\n        throw er; // Unhandled 'error' event\n      } else {\n        // At least give some kind of context to the user\n        var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n        err.context = er;\n        throw err;\n      }\n    }\n  }\n\n  handler = this._events[type];\n\n  if (isUndefined(handler))\n    return false;\n\n  if (isFunction(handler)) {\n    switch (arguments.length) {\n      // fast cases\n      case 1:\n        handler.call(this);\n        break;\n      case 2:\n        handler.call(this, arguments[1]);\n        break;\n      case 3:\n        handler.call(this, arguments[1], arguments[2]);\n        break;\n      // slower\n      default:\n        args = Array.prototype.slice.call(arguments, 1);\n        handler.apply(this, args);\n    }\n  } else if (isObject(handler)) {\n    args = Array.prototype.slice.call(arguments, 1);\n    listeners = handler.slice();\n    len = listeners.length;\n    for (i = 0; i < len; i++)\n      listeners[i].apply(this, args);\n  }\n\n  return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n  var m;\n\n  if (!isFunction(listener))\n    throw TypeError('listener must be a function');\n\n  if (!this._events)\n    this._events = {};\n\n  // To avoid recursion in the case that type === \"newListener\"! Before\n  // adding it to the listeners, first emit \"newListener\".\n  if (this._events.newListener)\n    this.emit('newListener', type,\n              isFunction(listener.listener) ?\n              listener.listener : listener);\n\n  if (!this._events[type])\n    // Optimize the case of one listener. Don't need the extra array object.\n    this._events[type] = listener;\n  else if (isObject(this._events[type]))\n    // If we've already got an array, just append.\n    this._events[type].push(listener);\n  else\n    // Adding the second element, need to change to array.\n    this._events[type] = [this._events[type], listener];\n\n  // Check for listener leak\n  if (isObject(this._events[type]) && !this._events[type].warned) {\n    if (!isUndefined(this._maxListeners)) {\n      m = this._maxListeners;\n    } else {\n      m = EventEmitter.defaultMaxListeners;\n    }\n\n    if (m && m > 0 && this._events[type].length > m) {\n      this._events[type].warned = true;\n      console.error('(node) warning: possible EventEmitter memory ' +\n                    'leak detected. %d listeners added. ' +\n                    'Use emitter.setMaxListeners() to increase limit.',\n                    this._events[type].length);\n      if (typeof console.trace === 'function') {\n        // not supported in IE 10\n        console.trace();\n      }\n    }\n  }\n\n  return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n  if (!isFunction(listener))\n    throw TypeError('listener must be a function');\n\n  var fired = false;\n\n  function g() {\n    this.removeListener(type, g);\n\n    if (!fired) {\n      fired = true;\n      listener.apply(this, arguments);\n    }\n  }\n\n  g.listener = listener;\n  this.on(type, g);\n\n  return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n  var list, position, length, i;\n\n  if (!isFunction(listener))\n    throw TypeError('listener must be a function');\n\n  if (!this._events || !this._events[type])\n    return this;\n\n  list = this._events[type];\n  length = list.length;\n  position = -1;\n\n  if (list === listener ||\n      (isFunction(list.listener) && list.listener === listener)) {\n    delete this._events[type];\n    if (this._events.removeListener)\n      this.emit('removeListener', type, listener);\n\n  } else if (isObject(list)) {\n    for (i = length; i-- > 0;) {\n      if (list[i] === listener ||\n          (list[i].listener && list[i].listener === listener)) {\n        position = i;\n        break;\n      }\n    }\n\n    if (position < 0)\n      return this;\n\n    if (list.length === 1) {\n      list.length = 0;\n      delete this._events[type];\n    } else {\n      list.splice(position, 1);\n    }\n\n    if (this._events.removeListener)\n      this.emit('removeListener', type, listener);\n  }\n\n  return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n  var key, listeners;\n\n  if (!this._events)\n    return this;\n\n  // not listening for removeListener, no need to emit\n  if (!this._events.removeListener) {\n    if (arguments.length === 0)\n      this._events = {};\n    else if (this._events[type])\n      delete this._events[type];\n    return this;\n  }\n\n  // emit removeListener for all listeners on all events\n  if (arguments.length === 0) {\n    for (key in this._events) {\n      if (key === 'removeListener') continue;\n      this.removeAllListeners(key);\n    }\n    this.removeAllListeners('removeListener');\n    this._events = {};\n    return this;\n  }\n\n  listeners = this._events[type];\n\n  if (isFunction(listeners)) {\n    this.removeListener(type, listeners);\n  } else if (listeners) {\n    // LIFO order\n    while (listeners.length)\n      this.removeListener(type, listeners[listeners.length - 1]);\n  }\n  delete this._events[type];\n\n  return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n  var ret;\n  if (!this._events || !this._events[type])\n    ret = [];\n  else if (isFunction(this._events[type]))\n    ret = [this._events[type]];\n  else\n    ret = this._events[type].slice();\n  return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n  if (this._events) {\n    var evlistener = this._events[type];\n\n    if (isFunction(evlistener))\n      return 1;\n    else if (evlistener)\n      return evlistener.length;\n  }\n  return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n  return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n  return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n  return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n  return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n  return arg === void 0;\n}\n","'use strict';\n\nvar AlgoliaSearchHelper = require('./src/algoliasearch.helper');\nvar RecommendParameters = require('./src/RecommendParameters');\nvar RecommendResults = require('./src/RecommendResults');\nvar SearchParameters = require('./src/SearchParameters');\nvar SearchResults = require('./src/SearchResults');\n\n/**\n * The algoliasearchHelper module is the function that will let its\n * contains everything needed to use the Algoliasearch\n * Helper. It is a also a function that instanciate the helper.\n * To use the helper, you also need the Algolia JS client v3.\n * @example\n * //using the UMD build\n * var client = algoliasearch('latency', '6be0576ff61c053d5f9a3225e2a90f76');\n * var helper = algoliasearchHelper(client, 'bestbuy', {\n *   facets: ['shipping'],\n *   disjunctiveFacets: ['category']\n * });\n * helper.on('result', function(event) {\n *   console.log(event.results);\n * });\n * helper\n *   .toggleFacetRefinement('category', 'Movies & TV Shows')\n *   .toggleFacetRefinement('shipping', 'Free shipping')\n *   .search();\n * @example\n * // The helper is an event emitter using the node API\n * helper.on('result', updateTheResults);\n * helper.once('result', updateTheResults);\n * helper.removeListener('result', updateTheResults);\n * helper.removeAllListeners('result');\n * @module algoliasearchHelper\n * @param  {AlgoliaSearch} client an AlgoliaSearch client\n * @param  {string} index the name of the index to query\n * @param  {SearchParameters|object} opts an object defining the initial config of the search. It doesn't have to be a {SearchParameters}, just an object containing the properties you need from it.\n * @param {SearchResultsOptions|object} searchResultsOptions an object defining the options to use when creating the search results.\n * @return {AlgoliaSearchHelper} The helper instance\n */\nfunction algoliasearchHelper(client, index, opts, searchResultsOptions) {\n  return new AlgoliaSearchHelper(client, index, opts, searchResultsOptions);\n}\n\n/**\n * The version currently used\n * @member module:algoliasearchHelper.version\n * @type {number}\n */\nalgoliasearchHelper.version = require('./src/version');\n\n/**\n * Constructor for the Helper.\n * @member module:algoliasearchHelper.AlgoliaSearchHelper\n * @type {AlgoliaSearchHelper}\n */\nalgoliasearchHelper.AlgoliaSearchHelper = AlgoliaSearchHelper;\n\n/**\n * Constructor for the object containing all the parameters of the search.\n * @member module:algoliasearchHelper.SearchParameters\n * @type {SearchParameters}\n */\nalgoliasearchHelper.SearchParameters = SearchParameters;\n\n/**\n * Constructor for the object containing all the parameters for Recommend.\n * @member module:algoliasearchHelper.RecommendParameters\n * @type {RecommendParameters}\n */\nalgoliasearchHelper.RecommendParameters = RecommendParameters;\n\n/**\n * Constructor for the object containing the results of the search.\n * @member module:algoliasearchHelper.SearchResults\n * @type {SearchResults}\n */\nalgoliasearchHelper.SearchResults = SearchResults;\n\n/**\n * Constructor for the object containing the results for Recommend.\n * @member module:algoliasearchHelper.RecommendResults\n * @type {RecommendResults}\n */\nalgoliasearchHelper.RecommendResults = RecommendResults;\n\nmodule.exports = algoliasearchHelper;\n","'use strict';\n\nvar EventEmitter = require('@algolia/events');\n\nvar inherits = require('../functions/inherits');\n\n/**\n * A DerivedHelper is a way to create sub requests to\n * Algolia from a main helper.\n * @class\n * @classdesc The DerivedHelper provides an event based interface for search callbacks:\n *  - search: when a search is triggered using the `search()` method.\n *  - result: when the response is retrieved from Algolia and is processed.\n *    This event contains a {@link SearchResults} object and the\n *    {@link SearchParameters} corresponding to this answer.\n * @param {AlgoliaSearchHelper} mainHelper the main helper\n * @param {function} fn the function to create the derived state for search\n * @param {function} recommendFn the function to create the derived state for recommendations\n */\nfunction DerivedHelper(mainHelper, fn, recommendFn) {\n  this.main = mainHelper;\n  this.fn = fn;\n  this.recommendFn = recommendFn;\n  this.lastResults = null;\n  this.lastRecommendResults = null;\n}\n\ninherits(DerivedHelper, EventEmitter);\n\n/**\n * Detach this helper from the main helper\n * @return {undefined}\n * @throws Error if the derived helper is already detached\n */\nDerivedHelper.prototype.detach = function () {\n  this.removeAllListeners();\n  this.main.detachDerivedHelper(this);\n};\n\nDerivedHelper.prototype.getModifiedState = function (parameters) {\n  return this.fn(parameters);\n};\n\nDerivedHelper.prototype.getModifiedRecommendState = function (parameters) {\n  return this.recommendFn(parameters);\n};\n\nmodule.exports = DerivedHelper;\n","'use strict';\n\n/**\n * RecommendParameters is the data structure that contains all the information\n * usable for getting recommendations from the Algolia API. It doesn't do the\n * search itself, nor does it contains logic about the parameters.\n * It is an immutable object, therefore it has been created in a way that each\n * changes does not change the object itself but returns a copy with the\n * modification.\n * This object should probably not be instantiated outside of the helper. It\n * will be provided when needed.\n * @constructor\n * @classdesc contains all the parameters for recommendations\n * @param {RecommendParametersOptions} opts the options to create the object\n */\nfunction RecommendParameters(opts) {\n  opts = opts || {};\n  this.params = opts.params || [];\n}\n\nRecommendParameters.prototype = {\n  constructor: RecommendParameters,\n\n  addParams: function (params) {\n    var newParams = this.params.slice();\n\n    newParams.push(params);\n\n    return new RecommendParameters({ params: newParams });\n  },\n\n  removeParams: function (id) {\n    return new RecommendParameters({\n      params: this.params.filter(function (param) {\n        return param.$$id !== id;\n      }),\n    });\n  },\n\n  addFrequentlyBoughtTogether: function (params) {\n    return this.addParams(\n      Object.assign({}, params, { model: 'bought-together' })\n    );\n  },\n\n  addRelatedProducts: function (params) {\n    return this.addParams(\n      Object.assign({}, params, { model: 'related-products' })\n    );\n  },\n\n  addTrendingItems: function (params) {\n    return this.addParams(\n      Object.assign({}, params, { model: 'trending-items' })\n    );\n  },\n\n  addTrendingFacets: function (params) {\n    return this.addParams(\n      Object.assign({}, params, { model: 'trending-facets' })\n    );\n  },\n\n  addLookingSimilar: function (params) {\n    return this.addParams(\n      Object.assign({}, params, { model: 'looking-similar' })\n    );\n  },\n\n  _buildQueries: function (indexName, cache) {\n    return this.params\n      .filter(function (params) {\n        return cache[params.$$id] === undefined;\n      })\n      .map(function (params) {\n        var query = Object.assign({}, params, {\n          indexName: indexName,\n          // @TODO: remove this if it ever gets handled by the API\n          threshold: params.threshold || 0,\n        });\n        delete query.$$id;\n\n        return query;\n      });\n  },\n};\n\nmodule.exports = RecommendParameters;\n","'use strict';\n\n/**\n * Constructor for SearchResults\n * @class\n * @classdesc SearchResults contains the results of a query to Algolia using the\n * {@link AlgoliaSearchHelper}.\n * @param {RecommendParameters} state state that led to the response\n * @param {Record<string,RecommendResultItem>} results the results from algolia client\n **/\nfunction RecommendResults(state, results) {\n  this._state = state;\n  this._rawResults = {};\n\n  // eslint-disable-next-line consistent-this\n  var self = this;\n\n  state.params.forEach(function (param) {\n    var id = param.$$id;\n    self[id] = results[id];\n    self._rawResults[id] = results[id];\n  });\n}\n\nRecommendResults.prototype = {\n  constructor: RecommendResults,\n};\n\nmodule.exports = RecommendResults;\n","'use strict';\n\n/**\n * Functions to manipulate refinement lists\n *\n * The RefinementList is not formally defined through a prototype but is based\n * on a specific structure.\n *\n * @module SearchParameters.refinementList\n *\n * @typedef {string[]} SearchParameters.refinementList.Refinements\n * @typedef {Object.<string, SearchParameters.refinementList.Refinements>} SearchParameters.refinementList.RefinementList\n */\n\nvar defaultsPure = require('../functions/defaultsPure');\nvar objectHasKeys = require('../functions/objectHasKeys');\nvar omit = require('../functions/omit');\n\nvar lib = {\n  /**\n   * Adds a refinement to a RefinementList\n   * @param {RefinementList} refinementList the initial list\n   * @param {string} attribute the attribute to refine\n   * @param {string} value the value of the refinement, if the value is not a string it will be converted\n   * @return {RefinementList} a new and updated refinement list\n   */\n  addRefinement: function addRefinement(refinementList, attribute, value) {\n    if (lib.isRefined(refinementList, attribute, value)) {\n      return refinementList;\n    }\n\n    var valueAsString = '' + value;\n\n    var facetRefinement = !refinementList[attribute]\n      ? [valueAsString]\n      : refinementList[attribute].concat(valueAsString);\n\n    var mod = {};\n\n    mod[attribute] = facetRefinement;\n\n    return defaultsPure(mod, refinementList);\n  },\n  /**\n   * Removes refinement(s) for an attribute:\n   *  - if the value is specified removes the refinement for the value on the attribute\n   *  - if no value is specified removes all the refinements for this attribute\n   * @param {RefinementList} refinementList the initial list\n   * @param {string} attribute the attribute to refine\n   * @param {string} [value] the value of the refinement\n   * @return {RefinementList} a new and updated refinement lst\n   */\n  removeRefinement: function removeRefinement(\n    refinementList,\n    attribute,\n    value\n  ) {\n    if (value === undefined) {\n      // we use the \"filter\" form of clearRefinement, since it leaves empty values as-is\n      // the form with a string will remove the attribute completely\n      return lib.clearRefinement(refinementList, function (v, f) {\n        return attribute === f;\n      });\n    }\n\n    var valueAsString = '' + value;\n\n    return lib.clearRefinement(refinementList, function (v, f) {\n      return attribute === f && valueAsString === v;\n    });\n  },\n  /**\n   * Toggles the refinement value for an attribute.\n   * @param {RefinementList} refinementList the initial list\n   * @param {string} attribute the attribute to refine\n   * @param {string} value the value of the refinement\n   * @return {RefinementList} a new and updated list\n   */\n  toggleRefinement: function toggleRefinement(\n    refinementList,\n    attribute,\n    value\n  ) {\n    if (value === undefined)\n      throw new Error('toggleRefinement should be used with a value');\n\n    if (lib.isRefined(refinementList, attribute, value)) {\n      return lib.removeRefinement(refinementList, attribute, value);\n    }\n\n    return lib.addRefinement(refinementList, attribute, value);\n  },\n  /**\n   * Clear all or parts of a RefinementList. Depending on the arguments, three\n   * kinds of behavior can happen:\n   *  - if no attribute is provided: clears the whole list\n   *  - if an attribute is provided as a string: clears the list for the specific attribute\n   *  - if an attribute is provided as a function: discards the elements for which the function returns true\n   * @param {RefinementList} refinementList the initial list\n   * @param {string} [attribute] the attribute or function to discard\n   * @param {string} [refinementType] optional parameter to give more context to the attribute function\n   * @return {RefinementList} a new and updated refinement list\n   */\n  clearRefinement: function clearRefinement(\n    refinementList,\n    attribute,\n    refinementType\n  ) {\n    if (attribute === undefined) {\n      // return the same object if the list is already empty\n      // this is mainly for tests, as it doesn't have much impact on performance\n      if (!objectHasKeys(refinementList)) {\n        return refinementList;\n      }\n      return {};\n    } else if (typeof attribute === 'string') {\n      return omit(refinementList, [attribute]);\n    } else if (typeof attribute === 'function') {\n      var hasChanged = false;\n\n      var newRefinementList = Object.keys(refinementList).reduce(function (\n        memo,\n        key\n      ) {\n        var values = refinementList[key] || [];\n        var facetList = values.filter(function (value) {\n          return !attribute(value, key, refinementType);\n        });\n\n        if (facetList.length !== values.length) {\n          hasChanged = true;\n        }\n\n        memo[key] = facetList;\n\n        return memo;\n      },\n      {});\n\n      if (hasChanged) return newRefinementList;\n      return refinementList;\n    }\n\n    // We return nothing if the attribute is not undefined, a string or a function,\n    // as it is not a valid value for a refinement\n    return undefined;\n  },\n  /**\n   * Test if the refinement value is used for the attribute. If no refinement value\n   * is provided, test if the refinementList contains any refinement for the\n   * given attribute.\n   * @param {RefinementList} refinementList the list of refinement\n   * @param {string} attribute name of the attribute\n   * @param {string} [refinementValue] value of the filter/refinement\n   * @return {boolean} true if the attribute is refined, false otherwise\n   */\n  isRefined: function isRefined(refinementList, attribute, refinementValue) {\n    var containsRefinements =\n      Boolean(refinementList[attribute]) &&\n      refinementList[attribute].length > 0;\n\n    if (refinementValue === undefined || !containsRefinements) {\n      return containsRefinements;\n    }\n\n    var refinementValueAsString = '' + refinementValue;\n\n    return refinementList[attribute].indexOf(refinementValueAsString) !== -1;\n  },\n};\n\nmodule.exports = lib;\n","'use strict';\n\nvar defaultsPure = require('../functions/defaultsPure');\nvar find = require('../functions/find');\nvar intersection = require('../functions/intersection');\nvar merge = require('../functions/merge');\nvar objectHasKeys = require('../functions/objectHasKeys');\nvar omit = require('../functions/omit');\nvar valToNumber = require('../functions/valToNumber');\nvar isValidUserToken = require('../utils/isValidUserToken');\n\nvar RefinementList = require('./RefinementList');\n\n/**\n * isEqual, but only for numeric refinement values, possible values:\n * - 5\n * - [5]\n * - [[5]]\n * - [[5,5],[4]]\n * @param {any} a numeric refinement value\n * @param {any} b numeric refinement value\n * @return {boolean} true if the values are equal\n */\nfunction isEqualNumericRefinement(a, b) {\n  if (Array.isArray(a) && Array.isArray(b)) {\n    return (\n      a.length === b.length &&\n      a.every(function (el, i) {\n        return isEqualNumericRefinement(b[i], el);\n      })\n    );\n  }\n  return a === b;\n}\n\n/**\n * like _.find but using deep equality to be able to use it\n * to find arrays.\n * @private\n * @param {any[]} array array to search into (elements are base or array of base)\n * @param {any} searchedValue the value we're looking for (base or array of base)\n * @return {any} the searched value or undefined\n */\nfunction findArray(array, searchedValue) {\n  return find(array, function (currentValue) {\n    return isEqualNumericRefinement(currentValue, searchedValue);\n  });\n}\n\n/**\n * The facet list is the structure used to store the list of values used to\n * filter a single attribute.\n * @typedef {string[]} SearchParameters.FacetList\n */\n\n/**\n * Structure to store numeric filters with the operator as the key. The supported operators\n * are `=`, `>`, `<`, `>=`, `<=` and `!=`.\n * @typedef {Object.<string, Array.<number|number[]>>} SearchParameters.OperatorList\n */\n\n/**\n * SearchParameters is the data structure that contains all the information\n * usable for making a search to Algolia API. It doesn't do the search itself,\n * nor does it contains logic about the parameters.\n * It is an immutable object, therefore it has been created in a way that each\n * changes does not change the object itself but returns a copy with the\n * modification.\n * This object should probably not be instantiated outside of the helper. It will\n * be provided when needed. This object is documented for reference as you'll\n * get it from events generated by the {@link AlgoliaSearchHelper}.\n * If need be, instantiate the Helper from the factory function {@link SearchParameters.make}\n * @constructor\n * @classdesc contains all the parameters of a search\n * @param {object|SearchParameters} newParameters existing parameters or partial object\n * for the properties of a new SearchParameters\n * @see SearchParameters.make\n * @example <caption>SearchParameters of the first query in\n *   <a href=\"http://demos.algolia.com/instant-search-demo/\">the instant search demo</a></caption>\n{\n   \"query\": \"\",\n   \"disjunctiveFacets\": [\n      \"customerReviewCount\",\n      \"category\",\n      \"salePrice_range\",\n      \"manufacturer\"\n  ],\n   \"maxValuesPerFacet\": 30,\n   \"page\": 0,\n   \"hitsPerPage\": 10,\n   \"facets\": [\n      \"type\",\n      \"shipping\"\n  ]\n}\n */\nfunction SearchParameters(newParameters) {\n  var params = newParameters\n    ? SearchParameters._parseNumbers(newParameters)\n    : {};\n\n  if (params.userToken !== undefined && !isValidUserToken(params.userToken)) {\n    // eslint-disable-next-line no-console\n    console.warn(\n      '[algoliasearch-helper] The `userToken` parameter is invalid. This can lead to wrong analytics.\\n  - Format: [a-zA-Z0-9_-]{1,64}'\n    );\n  }\n  /**\n   * This attribute contains the list of all the conjunctive facets\n   * used. This list will be added to requested facets in the\n   * [facets attribute](https://www.algolia.com/doc/rest-api/search#param-facets) sent to algolia.\n   * @member {string[]}\n   */\n  this.facets = params.facets || [];\n  /**\n   * This attribute contains the list of all the disjunctive facets\n   * used. This list will be added to requested facets in the\n   * [facets attribute](https://www.algolia.com/doc/rest-api/search#param-facets) sent to algolia.\n   * @member {string[]}\n   */\n  this.disjunctiveFacets = params.disjunctiveFacets || [];\n  /**\n   * This attribute contains the list of all the hierarchical facets\n   * used. This list will be added to requested facets in the\n   * [facets attribute](https://www.algolia.com/doc/rest-api/search#param-facets) sent to algolia.\n   * Hierarchical facets are a sub type of disjunctive facets that\n   * let you filter faceted attributes hierarchically.\n   * @member {string[]|object[]}\n   */\n  this.hierarchicalFacets = params.hierarchicalFacets || [];\n\n  // Refinements\n  /**\n   * This attribute contains all the filters that need to be\n   * applied on the conjunctive facets. Each facet must be properly\n   * defined in the `facets` attribute.\n   *\n   * The key is the name of the facet, and the `FacetList` contains all\n   * filters selected for the associated facet name.\n   *\n   * When querying algolia, the values stored in this attribute will\n   * be translated into the `facetFilters` attribute.\n   * @member {Object.<string, SearchParameters.FacetList>}\n   */\n  this.facetsRefinements = params.facetsRefinements || {};\n  /**\n   * This attribute contains all the filters that need to be\n   * excluded from the conjunctive facets. Each facet must be properly\n   * defined in the `facets` attribute.\n   *\n   * The key is the name of the facet, and the `FacetList` contains all\n   * filters excluded for the associated facet name.\n   *\n   * When querying algolia, the values stored in this attribute will\n   * be translated into the `facetFilters` attribute.\n   * @member {Object.<string, SearchParameters.FacetList>}\n   */\n  this.facetsExcludes = params.facetsExcludes || {};\n  /**\n   * This attribute contains all the filters that need to be\n   * applied on the disjunctive facets. Each facet must be properly\n   * defined in the `disjunctiveFacets` attribute.\n   *\n   * The key is the name of the facet, and the `FacetList` contains all\n   * filters selected for the associated facet name.\n   *\n   * When querying algolia, the values stored in this attribute will\n   * be translated into the `facetFilters` attribute.\n   * @member {Object.<string, SearchParameters.FacetList>}\n   */\n  this.disjunctiveFacetsRefinements = params.disjunctiveFacetsRefinements || {};\n  /**\n   * This attribute contains all the filters that need to be\n   * applied on the numeric attributes.\n   *\n   * The key is the name of the attribute, and the value is the\n   * filters to apply to this attribute.\n   *\n   * When querying algolia, the values stored in this attribute will\n   * be translated into the `numericFilters` attribute.\n   * @member {Object.<string, SearchParameters.OperatorList>}\n   */\n  this.numericRefinements = params.numericRefinements || {};\n  /**\n   * This attribute contains all the tags used to refine the query.\n   *\n   * When querying algolia, the values stored in this attribute will\n   * be translated into the `tagFilters` attribute.\n   * @member {string[]}\n   */\n  this.tagRefinements = params.tagRefinements || [];\n  /**\n   * This attribute contains all the filters that need to be\n   * applied on the hierarchical facets. Each facet must be properly\n   * defined in the `hierarchicalFacets` attribute.\n   *\n   * The key is the name of the facet, and the `FacetList` contains all\n   * filters selected for the associated facet name. The FacetList values\n   * are structured as a string that contain the values for each level\n   * separated by the configured separator.\n   *\n   * When querying algolia, the values stored in this attribute will\n   * be translated into the `facetFilters` attribute.\n   * @member {Object.<string, SearchParameters.FacetList>}\n   */\n  this.hierarchicalFacetsRefinements =\n    params.hierarchicalFacetsRefinements || {};\n\n  // eslint-disable-next-line consistent-this\n  var self = this;\n  Object.keys(params).forEach(function (paramName) {\n    var isKeyKnown = SearchParameters.PARAMETERS.indexOf(paramName) !== -1;\n    var isValueDefined = params[paramName] !== undefined;\n\n    if (!isKeyKnown && isValueDefined) {\n      self[paramName] = params[paramName];\n    }\n  });\n}\n\n/**\n * List all the properties in SearchParameters and therefore all the known Algolia properties\n * This doesn't contain any beta/hidden features.\n * @private\n */\nSearchParameters.PARAMETERS = Object.keys(new SearchParameters());\n\n/**\n * @private\n * @param {object} partialState full or part of a state\n * @return {object} a new object with the number keys as number\n */\nSearchParameters._parseNumbers = function (partialState) {\n  // Do not parse numbers again in SearchParameters, they ought to be parsed already\n  if (partialState instanceof SearchParameters) return partialState;\n\n  var numbers = {};\n\n  var numberKeys = [\n    'aroundPrecision',\n    'aroundRadius',\n    'getRankingInfo',\n    'minWordSizefor2Typos',\n    'minWordSizefor1Typo',\n    'page',\n    'maxValuesPerFacet',\n    'distinct',\n    'minimumAroundRadius',\n    'hitsPerPage',\n    'minProximity',\n  ];\n\n  numberKeys.forEach(function (k) {\n    var value = partialState[k];\n    if (typeof value === 'string') {\n      var parsedValue = parseFloat(value);\n      // global isNaN is ok to use here, value is only number or NaN\n      numbers[k] = isNaN(parsedValue) ? value : parsedValue;\n    }\n  });\n\n  // there's two formats of insideBoundingBox, we need to parse\n  // the one which is an array of float geo rectangles\n  if (Array.isArray(partialState.insideBoundingBox)) {\n    numbers.insideBoundingBox = partialState.insideBoundingBox.map(function (\n      geoRect\n    ) {\n      if (Array.isArray(geoRect)) {\n        return geoRect.map(function (value) {\n          return parseFloat(value);\n        });\n      }\n      return geoRect;\n    });\n  }\n\n  if (partialState.numericRefinements) {\n    var numericRefinements = {};\n    Object.keys(partialState.numericRefinements).forEach(function (attribute) {\n      var operators = partialState.numericRefinements[attribute] || {};\n      numericRefinements[attribute] = {};\n      Object.keys(operators).forEach(function (operator) {\n        var values = operators[operator];\n        var parsedValues = values.map(function (v) {\n          if (Array.isArray(v)) {\n            return v.map(function (vPrime) {\n              if (typeof vPrime === 'string') {\n                return parseFloat(vPrime);\n              }\n              return vPrime;\n            });\n          } else if (typeof v === 'string') {\n            return parseFloat(v);\n          }\n          return v;\n        });\n        numericRefinements[attribute][operator] = parsedValues;\n      });\n    });\n    numbers.numericRefinements = numericRefinements;\n  }\n\n  return merge(partialState, numbers);\n};\n\n/**\n * Factory for SearchParameters\n * @param {object|SearchParameters} newParameters existing parameters or partial\n * object for the properties of a new SearchParameters\n * @return {SearchParameters} frozen instance of SearchParameters\n */\nSearchParameters.make = function makeSearchParameters(newParameters) {\n  var instance = new SearchParameters(newParameters);\n\n  var hierarchicalFacets = newParameters.hierarchicalFacets || [];\n  hierarchicalFacets.forEach(function (facet) {\n    if (facet.rootPath) {\n      var currentRefinement = instance.getHierarchicalRefinement(facet.name);\n\n      if (\n        currentRefinement.length > 0 &&\n        currentRefinement[0].indexOf(facet.rootPath) !== 0\n      ) {\n        instance = instance.clearRefinements(facet.name);\n      }\n\n      // get it again in case it has been cleared\n      currentRefinement = instance.getHierarchicalRefinement(facet.name);\n      if (currentRefinement.length === 0) {\n        instance = instance.toggleHierarchicalFacetRefinement(\n          facet.name,\n          facet.rootPath\n        );\n      }\n    }\n  });\n\n  return instance;\n};\n\n/**\n * Validates the new parameters based on the previous state\n * @param {SearchParameters} currentState the current state\n * @param {object|SearchParameters} parameters the new parameters to set\n * @return {Error|null} Error if the modification is invalid, null otherwise\n */\nSearchParameters.validate = function (currentState, parameters) {\n  var params = parameters || {};\n\n  if (\n    currentState.tagFilters &&\n    params.tagRefinements &&\n    params.tagRefinements.length > 0\n  ) {\n    return new Error(\n      '[Tags] Cannot switch from the managed tag API to the advanced API. It is probably ' +\n        'an error, if it is really what you want, you should first clear the tags with clearTags method.'\n    );\n  }\n\n  if (currentState.tagRefinements.length > 0 && params.tagFilters) {\n    return new Error(\n      '[Tags] Cannot switch from the advanced tag API to the managed API. It is probably ' +\n        'an error, if it is not, you should first clear the tags with clearTags method.'\n    );\n  }\n\n  if (\n    currentState.numericFilters &&\n    params.numericRefinements &&\n    objectHasKeys(params.numericRefinements)\n  ) {\n    return new Error(\n      \"[Numeric filters] Can't switch from the advanced to the managed API. It\" +\n        ' is probably an error, if this is really what you want, you have to first' +\n        ' clear the numeric filters.'\n    );\n  }\n\n  if (objectHasKeys(currentState.numericRefinements) && params.numericFilters) {\n    return new Error(\n      \"[Numeric filters] Can't switch from the managed API to the advanced. It\" +\n        ' is probably an error, if this is really what you want, you have to first' +\n        ' clear the numeric filters.'\n    );\n  }\n\n  return null;\n};\n\nSearchParameters.prototype = {\n  constructor: SearchParameters,\n\n  /**\n   * Remove all refinements (disjunctive + conjunctive + excludes + numeric filters)\n   * @method\n   * @param {undefined|string|SearchParameters.clearCallback} [attribute] optional string or function\n   * - If not given, means to clear all the filters.\n   * - If `string`, means to clear all refinements for the `attribute` named filter.\n   * - If `function`, means to clear all the refinements that return truthy values.\n   * @return {SearchParameters} new instance with filters cleared\n   */\n  clearRefinements: function clearRefinements(attribute) {\n    var patch = {\n      numericRefinements: this._clearNumericRefinements(attribute),\n      facetsRefinements: RefinementList.clearRefinement(\n        this.facetsRefinements,\n        attribute,\n        'conjunctiveFacet'\n      ),\n      facetsExcludes: RefinementList.clearRefinement(\n        this.facetsExcludes,\n        attribute,\n        'exclude'\n      ),\n      disjunctiveFacetsRefinements: RefinementList.clearRefinement(\n        this.disjunctiveFacetsRefinements,\n        attribute,\n        'disjunctiveFacet'\n      ),\n      hierarchicalFacetsRefinements: RefinementList.clearRefinement(\n        this.hierarchicalFacetsRefinements,\n        attribute,\n        'hierarchicalFacet'\n      ),\n    };\n    if (\n      patch.numericRefinements === this.numericRefinements &&\n      patch.facetsRefinements === this.facetsRefinements &&\n      patch.facetsExcludes === this.facetsExcludes &&\n      patch.disjunctiveFacetsRefinements ===\n        this.disjunctiveFacetsRefinements &&\n      patch.hierarchicalFacetsRefinements === this.hierarchicalFacetsRefinements\n    ) {\n      return this;\n    }\n    return this.setQueryParameters(patch);\n  },\n  /**\n   * Remove all the refined tags from the SearchParameters\n   * @method\n   * @return {SearchParameters} new instance with tags cleared\n   */\n  clearTags: function clearTags() {\n    if (this.tagFilters === undefined && this.tagRefinements.length === 0)\n      return this;\n\n    return this.setQueryParameters({\n      tagFilters: undefined,\n      tagRefinements: [],\n    });\n  },\n  /**\n   * Set the index.\n   * @method\n   * @param {string} index the index name\n   * @return {SearchParameters} new instance\n   */\n  setIndex: function setIndex(index) {\n    if (index === this.index) return this;\n\n    return this.setQueryParameters({\n      index: index,\n    });\n  },\n  /**\n   * Query setter\n   * @method\n   * @param {string} newQuery value for the new query\n   * @return {SearchParameters} new instance\n   */\n  setQuery: function setQuery(newQuery) {\n    if (newQuery === this.query) return this;\n\n    return this.setQueryParameters({\n      query: newQuery,\n    });\n  },\n  /**\n   * Page setter\n   * @method\n   * @param {number} newPage new page number\n   * @return {SearchParameters} new instance\n   */\n  setPage: function setPage(newPage) {\n    if (newPage === this.page) return this;\n\n    return this.setQueryParameters({\n      page: newPage,\n    });\n  },\n  /**\n   * Facets setter\n   * The facets are the simple facets, used for conjunctive (and) faceting.\n   * @method\n   * @param {string[]} facets all the attributes of the algolia records used for conjunctive faceting\n   * @return {SearchParameters} new instance\n   */\n  setFacets: function setFacets(facets) {\n    return this.setQueryParameters({\n      facets: facets,\n    });\n  },\n  /**\n   * Disjunctive facets setter\n   * Change the list of disjunctive (or) facets the helper chan handle.\n   * @method\n   * @param {string[]} facets all the attributes of the algolia records used for disjunctive faceting\n   * @return {SearchParameters} new instance\n   */\n  setDisjunctiveFacets: function setDisjunctiveFacets(facets) {\n    return this.setQueryParameters({\n      disjunctiveFacets: facets,\n    });\n  },\n  /**\n   * HitsPerPage setter\n   * Hits per page represents the number of hits retrieved for this query\n   * @method\n   * @param {number} n number of hits retrieved per page of results\n   * @return {SearchParameters} new instance\n   */\n  setHitsPerPage: function setHitsPerPage(n) {\n    if (this.hitsPerPage === n) return this;\n\n    return this.setQueryParameters({\n      hitsPerPage: n,\n    });\n  },\n  /**\n   * typoTolerance setter\n   * Set the value of typoTolerance\n   * @method\n   * @param {string} typoTolerance new value of typoTolerance (\"true\", \"false\", \"min\" or \"strict\")\n   * @return {SearchParameters} new instance\n   */\n  setTypoTolerance: function setTypoTolerance(typoTolerance) {\n    if (this.typoTolerance === typoTolerance) return this;\n\n    return this.setQueryParameters({\n      typoTolerance: typoTolerance,\n    });\n  },\n  /**\n   * Add a numeric filter for a given attribute\n   * When value is an array, they are combined with OR\n   * When value is a single value, it will combined with AND\n   * @method\n   * @param {string} attribute attribute to set the filter on\n   * @param {string} operator operator of the filter (possible values: =, >, >=, <, <=, !=)\n   * @param {number | number[]} value value of the filter\n   * @return {SearchParameters} new instance\n   * @example\n   * // for price = 50 or 40\n   * state.addNumericRefinement('price', '=', [50, 40]);\n   * @example\n   * // for size = 38 and 40\n   * state.addNumericRefinement('size', '=', 38);\n   * state.addNumericRefinement('size', '=', 40);\n   */\n  addNumericRefinement: function (attribute, operator, value) {\n    var val = valToNumber(value);\n\n    if (this.isNumericRefined(attribute, operator, val)) return this;\n\n    var mod = merge({}, this.numericRefinements);\n\n    mod[attribute] = merge({}, mod[attribute]);\n\n    if (mod[attribute][operator]) {\n      // Array copy\n      mod[attribute][operator] = mod[attribute][operator].slice();\n      // Add the element. Concat can't be used here because value can be an array.\n      mod[attribute][operator].push(val);\n    } else {\n      mod[attribute][operator] = [val];\n    }\n\n    return this.setQueryParameters({\n      numericRefinements: mod,\n    });\n  },\n  /**\n   * Get the list of conjunctive refinements for a single facet\n   * @param {string} facetName name of the attribute used for faceting\n   * @return {string[]} list of refinements\n   */\n  getConjunctiveRefinements: function (facetName) {\n    if (!this.isConjunctiveFacet(facetName)) {\n      return [];\n    }\n    return this.facetsRefinements[facetName] || [];\n  },\n  /**\n   * Get the list of disjunctive refinements for a single facet\n   * @param {string} facetName name of the attribute used for faceting\n   * @return {string[]} list of refinements\n   */\n  getDisjunctiveRefinements: function (facetName) {\n    if (!this.isDisjunctiveFacet(facetName)) {\n      return [];\n    }\n    return this.disjunctiveFacetsRefinements[facetName] || [];\n  },\n  /**\n   * Get the list of hierarchical refinements for a single facet\n   * @param {string} facetName name of the attribute used for faceting\n   * @return {string[]} list of refinements\n   */\n  getHierarchicalRefinement: function (facetName) {\n    // we send an array but we currently do not support multiple\n    // hierarchicalRefinements for a hierarchicalFacet\n    return this.hierarchicalFacetsRefinements[facetName] || [];\n  },\n  /**\n   * Get the list of exclude refinements for a single facet\n   * @param {string} facetName name of the attribute used for faceting\n   * @return {string[]} list of refinements\n   */\n  getExcludeRefinements: function (facetName) {\n    if (!this.isConjunctiveFacet(facetName)) {\n      return [];\n    }\n    return this.facetsExcludes[facetName] || [];\n  },\n\n  /**\n   * Remove all the numeric filter for a given (attribute, operator)\n   * @method\n   * @param {string} attribute attribute to set the filter on\n   * @param {string} [operator] operator of the filter (possible values: =, >, >=, <, <=, !=)\n   * @param {number} [number] the value to be removed\n   * @return {SearchParameters} new instance\n   */\n  removeNumericRefinement: function (attribute, operator, number) {\n    var paramValue = number;\n    if (paramValue !== undefined) {\n      if (!this.isNumericRefined(attribute, operator, paramValue)) {\n        return this;\n      }\n      return this.setQueryParameters({\n        numericRefinements: this._clearNumericRefinements(function (\n          value,\n          key\n        ) {\n          return (\n            key === attribute &&\n            value.op === operator &&\n            isEqualNumericRefinement(value.val, valToNumber(paramValue))\n          );\n        }),\n      });\n    } else if (operator !== undefined) {\n      if (!this.isNumericRefined(attribute, operator)) return this;\n      return this.setQueryParameters({\n        numericRefinements: this._clearNumericRefinements(function (\n          value,\n          key\n        ) {\n          return key === attribute && value.op === operator;\n        }),\n      });\n    }\n\n    if (!this.isNumericRefined(attribute)) return this;\n    return this.setQueryParameters({\n      numericRefinements: this._clearNumericRefinements(function (value, key) {\n        return key === attribute;\n      }),\n    });\n  },\n  /**\n   * Get the list of numeric refinements for a single facet\n   * @param {string} facetName name of the attribute used for faceting\n   * @return {SearchParameters.OperatorList} list of refinements\n   */\n  getNumericRefinements: function (facetName) {\n    return this.numericRefinements[facetName] || {};\n  },\n  /**\n   * Return the current refinement for the (attribute, operator)\n   * @param {string} attribute attribute in the record\n   * @param {string} operator operator applied on the refined values\n   * @return {Array.<number|number[]>} refined values\n   */\n  getNumericRefinement: function (attribute, operator) {\n    return (\n      this.numericRefinements[attribute] &&\n      this.numericRefinements[attribute][operator]\n    );\n  },\n  /**\n   * Clear numeric filters.\n   * @method\n   * @private\n   * @param {string|SearchParameters.clearCallback} [attribute] optional string or function\n   * - If not given, means to clear all the filters.\n   * - If `string`, means to clear all refinements for the `attribute` named filter.\n   * - If `function`, means to clear all the refinements that return truthy values.\n   * @return {Object.<string, OperatorList>} new numeric refinements\n   */\n  _clearNumericRefinements: function _clearNumericRefinements(attribute) {\n    if (attribute === undefined) {\n      if (!objectHasKeys(this.numericRefinements)) {\n        return this.numericRefinements;\n      }\n      return {};\n    } else if (typeof attribute === 'string') {\n      return omit(this.numericRefinements, [attribute]);\n    } else if (typeof attribute === 'function') {\n      var hasChanged = false;\n      var numericRefinements = this.numericRefinements;\n      var newNumericRefinements = Object.keys(numericRefinements).reduce(\n        function (memo, key) {\n          var operators = numericRefinements[key];\n          var operatorList = {};\n\n          operators = operators || {};\n          Object.keys(operators).forEach(function (operator) {\n            var values = operators[operator] || [];\n            var outValues = [];\n            values.forEach(function (value) {\n              var predicateResult = attribute(\n                { val: value, op: operator },\n                key,\n                'numeric'\n              );\n              if (!predicateResult) outValues.push(value);\n            });\n            if (outValues.length !== values.length) {\n              hasChanged = true;\n            }\n            operatorList[operator] = outValues;\n          });\n\n          memo[key] = operatorList;\n\n          return memo;\n        },\n        {}\n      );\n\n      if (hasChanged) return newNumericRefinements;\n      return this.numericRefinements;\n    }\n\n    // We return nothing if the attribute is not undefined, a string or a function,\n    // as it is not a valid value for a refinement\n    return undefined;\n  },\n  /**\n   * Add a facet to the facets attribute of the helper configuration, if it\n   * isn't already present.\n   * @method\n   * @param {string} facet facet name to add\n   * @return {SearchParameters} new instance\n   */\n  addFacet: function addFacet(facet) {\n    if (this.isConjunctiveFacet(facet)) {\n      return this;\n    }\n\n    return this.setQueryParameters({\n      facets: this.facets.concat([facet]),\n    });\n  },\n  /**\n   * Add a disjunctive facet to the disjunctiveFacets attribute of the helper\n   * configuration, if it isn't already present.\n   * @method\n   * @param {string} facet disjunctive facet name to add\n   * @return {SearchParameters} new instance\n   */\n  addDisjunctiveFacet: function addDisjunctiveFacet(facet) {\n    if (this.isDisjunctiveFacet(facet)) {\n      return this;\n    }\n\n    return this.setQueryParameters({\n      disjunctiveFacets: this.disjunctiveFacets.concat([facet]),\n    });\n  },\n  /**\n   * Add a hierarchical facet to the hierarchicalFacets attribute of the helper\n   * configuration.\n   * @method\n   * @param {object} hierarchicalFacet hierarchical facet to add\n   * @return {SearchParameters} new instance\n   * @throws will throw an error if a hierarchical facet with the same name was already declared\n   */\n  addHierarchicalFacet: function addHierarchicalFacet(hierarchicalFacet) {\n    if (this.isHierarchicalFacet(hierarchicalFacet.name)) {\n      throw new Error(\n        'Cannot declare two hierarchical facets with the same name: `' +\n          hierarchicalFacet.name +\n          '`'\n      );\n    }\n\n    return this.setQueryParameters({\n      hierarchicalFacets: this.hierarchicalFacets.concat([hierarchicalFacet]),\n    });\n  },\n  /**\n   * Add a refinement on a \"normal\" facet\n   * @method\n   * @param {string} facet attribute to apply the faceting on\n   * @param {string} value value of the attribute (will be converted to string)\n   * @return {SearchParameters} new instance\n   */\n  addFacetRefinement: function addFacetRefinement(facet, value) {\n    if (!this.isConjunctiveFacet(facet)) {\n      throw new Error(\n        facet +\n          ' is not defined in the facets attribute of the helper configuration'\n      );\n    }\n    if (RefinementList.isRefined(this.facetsRefinements, facet, value))\n      return this;\n\n    return this.setQueryParameters({\n      facetsRefinements: RefinementList.addRefinement(\n        this.facetsRefinements,\n        facet,\n        value\n      ),\n    });\n  },\n  /**\n   * Exclude a value from a \"normal\" facet\n   * @method\n   * @param {string} facet attribute to apply the exclusion on\n   * @param {string} value value of the attribute (will be converted to string)\n   * @return {SearchParameters} new instance\n   */\n  addExcludeRefinement: function addExcludeRefinement(facet, value) {\n    if (!this.isConjunctiveFacet(facet)) {\n      throw new Error(\n        facet +\n          ' is not defined in the facets attribute of the helper configuration'\n      );\n    }\n    if (RefinementList.isRefined(this.facetsExcludes, facet, value))\n      return this;\n\n    return this.setQueryParameters({\n      facetsExcludes: RefinementList.addRefinement(\n        this.facetsExcludes,\n        facet,\n        value\n      ),\n    });\n  },\n  /**\n   * Adds a refinement on a disjunctive facet.\n   * @method\n   * @param {string} facet attribute to apply the faceting on\n   * @param {string} value value of the attribute (will be converted to string)\n   * @return {SearchParameters} new instance\n   */\n  addDisjunctiveFacetRefinement: function addDisjunctiveFacetRefinement(\n    facet,\n    value\n  ) {\n    if (!this.isDisjunctiveFacet(facet)) {\n      throw new Error(\n        facet +\n          ' is not defined in the disjunctiveFacets attribute of the helper configuration'\n      );\n    }\n\n    if (\n      RefinementList.isRefined(this.disjunctiveFacetsRefinements, facet, value)\n    )\n      return this;\n\n    return this.setQueryParameters({\n      disjunctiveFacetsRefinements: RefinementList.addRefinement(\n        this.disjunctiveFacetsRefinements,\n        facet,\n        value\n      ),\n    });\n  },\n  /**\n   * addTagRefinement adds a tag to the list used to filter the results\n   * @param {string} tag tag to be added\n   * @return {SearchParameters} new instance\n   */\n  addTagRefinement: function addTagRefinement(tag) {\n    if (this.isTagRefined(tag)) return this;\n\n    var modification = {\n      tagRefinements: this.tagRefinements.concat(tag),\n    };\n\n    return this.setQueryParameters(modification);\n  },\n  /**\n   * Remove a facet from the facets attribute of the helper configuration, if it\n   * is present.\n   * @method\n   * @param {string} facet facet name to remove\n   * @return {SearchParameters} new instance\n   */\n  removeFacet: function removeFacet(facet) {\n    if (!this.isConjunctiveFacet(facet)) {\n      return this;\n    }\n\n    return this.clearRefinements(facet).setQueryParameters({\n      facets: this.facets.filter(function (f) {\n        return f !== facet;\n      }),\n    });\n  },\n  /**\n   * Remove a disjunctive facet from the disjunctiveFacets attribute of the\n   * helper configuration, if it is present.\n   * @method\n   * @param {string} facet disjunctive facet name to remove\n   * @return {SearchParameters} new instance\n   */\n  removeDisjunctiveFacet: function removeDisjunctiveFacet(facet) {\n    if (!this.isDisjunctiveFacet(facet)) {\n      return this;\n    }\n\n    return this.clearRefinements(facet).setQueryParameters({\n      disjunctiveFacets: this.disjunctiveFacets.filter(function (f) {\n        return f !== facet;\n      }),\n    });\n  },\n  /**\n   * Remove a hierarchical facet from the hierarchicalFacets attribute of the\n   * helper configuration, if it is present.\n   * @method\n   * @param {string} facet hierarchical facet name to remove\n   * @return {SearchParameters} new instance\n   */\n  removeHierarchicalFacet: function removeHierarchicalFacet(facet) {\n    if (!this.isHierarchicalFacet(facet)) {\n      return this;\n    }\n\n    return this.clearRefinements(facet).setQueryParameters({\n      hierarchicalFacets: this.hierarchicalFacets.filter(function (f) {\n        return f.name !== facet;\n      }),\n    });\n  },\n  /**\n   * Remove a refinement set on facet. If a value is provided, it will clear the\n   * refinement for the given value, otherwise it will clear all the refinement\n   * values for the faceted attribute.\n   * @method\n   * @param {string} facet name of the attribute used for faceting\n   * @param {string} [value] value used to filter\n   * @return {SearchParameters} new instance\n   */\n  removeFacetRefinement: function removeFacetRefinement(facet, value) {\n    if (!this.isConjunctiveFacet(facet)) {\n      throw new Error(\n        facet +\n          ' is not defined in the facets attribute of the helper configuration'\n      );\n    }\n    if (!RefinementList.isRefined(this.facetsRefinements, facet, value))\n      return this;\n\n    return this.setQueryParameters({\n      facetsRefinements: RefinementList.removeRefinement(\n        this.facetsRefinements,\n        facet,\n        value\n      ),\n    });\n  },\n  /**\n   * Remove a negative refinement on a facet\n   * @method\n   * @param {string} facet name of the attribute used for faceting\n   * @param {string} value value used to filter\n   * @return {SearchParameters} new instance\n   */\n  removeExcludeRefinement: function removeExcludeRefinement(facet, value) {\n    if (!this.isConjunctiveFacet(facet)) {\n      throw new Error(\n        facet +\n          ' is not defined in the facets attribute of the helper configuration'\n      );\n    }\n    if (!RefinementList.isRefined(this.facetsExcludes, facet, value))\n      return this;\n\n    return this.setQueryParameters({\n      facetsExcludes: RefinementList.removeRefinement(\n        this.facetsExcludes,\n        facet,\n        value\n      ),\n    });\n  },\n  /**\n   * Remove a refinement on a disjunctive facet\n   * @method\n   * @param {string} facet name of the attribute used for faceting\n   * @param {string} value value used to filter\n   * @return {SearchParameters} new instance\n   */\n  removeDisjunctiveFacetRefinement: function removeDisjunctiveFacetRefinement(\n    facet,\n    value\n  ) {\n    if (!this.isDisjunctiveFacet(facet)) {\n      throw new Error(\n        facet +\n          ' is not defined in the disjunctiveFacets attribute of the helper configuration'\n      );\n    }\n    if (\n      !RefinementList.isRefined(this.disjunctiveFacetsRefinements, facet, value)\n    )\n      return this;\n\n    return this.setQueryParameters({\n      disjunctiveFacetsRefinements: RefinementList.removeRefinement(\n        this.disjunctiveFacetsRefinements,\n        facet,\n        value\n      ),\n    });\n  },\n  /**\n   * Remove a tag from the list of tag refinements\n   * @method\n   * @param {string} tag the tag to remove\n   * @return {SearchParameters} new instance\n   */\n  removeTagRefinement: function removeTagRefinement(tag) {\n    if (!this.isTagRefined(tag)) return this;\n\n    var modification = {\n      tagRefinements: this.tagRefinements.filter(function (t) {\n        return t !== tag;\n      }),\n    };\n\n    return this.setQueryParameters(modification);\n  },\n  /**\n   * Generic toggle refinement method to use with facet, disjunctive facets\n   * and hierarchical facets\n   * @param  {string} facet the facet to refine\n   * @param  {string} value the associated value\n   * @return {SearchParameters} new instance\n   * @throws will throw an error if the facet is not declared in the settings of the helper\n   * @deprecated since version 2.19.0, see {@link SearchParameters#toggleFacetRefinement}\n   */\n  toggleRefinement: function toggleRefinement(facet, value) {\n    return this.toggleFacetRefinement(facet, value);\n  },\n  /**\n   * Generic toggle refinement method to use with facet, disjunctive facets\n   * and hierarchical facets\n   * @param  {string} facet the facet to refine\n   * @param  {string} value the associated value\n   * @return {SearchParameters} new instance\n   * @throws will throw an error if the facet is not declared in the settings of the helper\n   */\n  toggleFacetRefinement: function toggleFacetRefinement(facet, value) {\n    if (this.isHierarchicalFacet(facet)) {\n      return this.toggleHierarchicalFacetRefinement(facet, value);\n    } else if (this.isConjunctiveFacet(facet)) {\n      return this.toggleConjunctiveFacetRefinement(facet, value);\n    } else if (this.isDisjunctiveFacet(facet)) {\n      return this.toggleDisjunctiveFacetRefinement(facet, value);\n    }\n\n    throw new Error(\n      'Cannot refine the undeclared facet ' +\n        facet +\n        '; it should be added to the helper options facets, disjunctiveFacets or hierarchicalFacets'\n    );\n  },\n  /**\n   * Switch the refinement applied over a facet/value\n   * @method\n   * @param {string} facet name of the attribute used for faceting\n   * @param {value} value value used for filtering\n   * @return {SearchParameters} new instance\n   */\n  toggleConjunctiveFacetRefinement: function toggleConjunctiveFacetRefinement(\n    facet,\n    value\n  ) {\n    if (!this.isConjunctiveFacet(facet)) {\n      throw new Error(\n        facet +\n          ' is not defined in the facets attribute of the helper configuration'\n      );\n    }\n\n    return this.setQueryParameters({\n      facetsRefinements: RefinementList.toggleRefinement(\n        this.facetsRefinements,\n        facet,\n        value\n      ),\n    });\n  },\n  /**\n   * Switch the refinement applied over a facet/value\n   * @method\n   * @param {string} facet name of the attribute used for faceting\n   * @param {value} value value used for filtering\n   * @return {SearchParameters} new instance\n   */\n  toggleExcludeFacetRefinement: function toggleExcludeFacetRefinement(\n    facet,\n    value\n  ) {\n    if (!this.isConjunctiveFacet(facet)) {\n      throw new Error(\n        facet +\n          ' is not defined in the facets attribute of the helper configuration'\n      );\n    }\n\n    return this.setQueryParameters({\n      facetsExcludes: RefinementList.toggleRefinement(\n        this.facetsExcludes,\n        facet,\n        value\n      ),\n    });\n  },\n  /**\n   * Switch the refinement applied over a facet/value\n   * @method\n   * @param {string} facet name of the attribute used for faceting\n   * @param {value} value value used for filtering\n   * @return {SearchParameters} new instance\n   */\n  toggleDisjunctiveFacetRefinement: function toggleDisjunctiveFacetRefinement(\n    facet,\n    value\n  ) {\n    if (!this.isDisjunctiveFacet(facet)) {\n      throw new Error(\n        facet +\n          ' is not defined in the disjunctiveFacets attribute of the helper configuration'\n      );\n    }\n\n    return this.setQueryParameters({\n      disjunctiveFacetsRefinements: RefinementList.toggleRefinement(\n        this.disjunctiveFacetsRefinements,\n        facet,\n        value\n      ),\n    });\n  },\n  /**\n   * Switch the refinement applied over a facet/value\n   * @method\n   * @param {string} facet name of the attribute used for faceting\n   * @param {value} value value used for filtering\n   * @return {SearchParameters} new instance\n   */\n  toggleHierarchicalFacetRefinement: function toggleHierarchicalFacetRefinement(\n    facet,\n    value\n  ) {\n    if (!this.isHierarchicalFacet(facet)) {\n      throw new Error(\n        facet +\n          ' is not defined in the hierarchicalFacets attribute of the helper configuration'\n      );\n    }\n\n    var separator = this._getHierarchicalFacetSeparator(\n      this.getHierarchicalFacetByName(facet)\n    );\n\n    var mod = {};\n\n    var upOneOrMultipleLevel =\n      this.hierarchicalFacetsRefinements[facet] !== undefined &&\n      this.hierarchicalFacetsRefinements[facet].length > 0 &&\n      // remove current refinement:\n      // refinement was 'beer > IPA', call is toggleRefine('beer > IPA'), refinement should be `beer`\n      (this.hierarchicalFacetsRefinements[facet][0] === value ||\n        // remove a parent refinement of the current refinement:\n        //  - refinement was 'beer > IPA > Flying dog'\n        //  - call is toggleRefine('beer > IPA')\n        //  - refinement should be `beer`\n        this.hierarchicalFacetsRefinements[facet][0].indexOf(\n          value + separator\n        ) === 0);\n\n    if (upOneOrMultipleLevel) {\n      if (value.indexOf(separator) === -1) {\n        // go back to root level\n        mod[facet] = [];\n      } else {\n        mod[facet] = [value.slice(0, value.lastIndexOf(separator))];\n      }\n    } else {\n      mod[facet] = [value];\n    }\n\n    return this.setQueryParameters({\n      hierarchicalFacetsRefinements: defaultsPure(\n        mod,\n        this.hierarchicalFacetsRefinements\n      ),\n    });\n  },\n\n  /**\n   * Adds a refinement on a hierarchical facet.\n   * @param {string} facet the facet name\n   * @param {string} path the hierarchical facet path\n   * @return {SearchParameter} the new state\n   * @throws Error if the facet is not defined or if the facet is refined\n   */\n  addHierarchicalFacetRefinement: function (facet, path) {\n    if (this.isHierarchicalFacetRefined(facet)) {\n      throw new Error(facet + ' is already refined.');\n    }\n    if (!this.isHierarchicalFacet(facet)) {\n      throw new Error(\n        facet +\n          ' is not defined in the hierarchicalFacets attribute of the helper configuration.'\n      );\n    }\n    var mod = {};\n    mod[facet] = [path];\n    return this.setQueryParameters({\n      hierarchicalFacetsRefinements: defaultsPure(\n        mod,\n        this.hierarchicalFacetsRefinements\n      ),\n    });\n  },\n\n  /**\n   * Removes the refinement set on a hierarchical facet.\n   * @param {string} facet the facet name\n   * @return {SearchParameter} the new state\n   * @throws Error if the facet is not defined or if the facet is not refined\n   */\n  removeHierarchicalFacetRefinement: function (facet) {\n    if (!this.isHierarchicalFacetRefined(facet)) {\n      return this;\n    }\n    var mod = {};\n    mod[facet] = [];\n    return this.setQueryParameters({\n      hierarchicalFacetsRefinements: defaultsPure(\n        mod,\n        this.hierarchicalFacetsRefinements\n      ),\n    });\n  },\n  /**\n   * Switch the tag refinement\n   * @method\n   * @param {string} tag the tag to remove or add\n   * @return {SearchParameters} new instance\n   */\n  toggleTagRefinement: function toggleTagRefinement(tag) {\n    if (this.isTagRefined(tag)) {\n      return this.removeTagRefinement(tag);\n    }\n\n    return this.addTagRefinement(tag);\n  },\n  /**\n   * Test if the facet name is from one of the disjunctive facets\n   * @method\n   * @param {string} facet facet name to test\n   * @return {boolean} true if facet is a disjunctive facet\n   */\n  isDisjunctiveFacet: function (facet) {\n    return this.disjunctiveFacets.indexOf(facet) > -1;\n  },\n  /**\n   * Test if the facet name is from one of the hierarchical facets\n   * @method\n   * @param {string} facetName facet name to test\n   * @return {boolean} true if facetName is a hierarchical facet\n   */\n  isHierarchicalFacet: function (facetName) {\n    return this.getHierarchicalFacetByName(facetName) !== undefined;\n  },\n  /**\n   * Test if the facet name is from one of the conjunctive/normal facets\n   * @method\n   * @param {string} facet facet name to test\n   * @return {boolean} true if facet is a conjunctive facet\n   */\n  isConjunctiveFacet: function (facet) {\n    return this.facets.indexOf(facet) > -1;\n  },\n  /**\n   * Returns true if the facet is refined, either for a specific value or in\n   * general.\n   * @method\n   * @param {string} facet name of the attribute for used for faceting\n   * @param {string} value, optional value. If passed will test that this value\n   * is filtering the given facet.\n   * @return {boolean} returns true if refined\n   */\n  isFacetRefined: function isFacetRefined(facet, value) {\n    if (!this.isConjunctiveFacet(facet)) {\n      return false;\n    }\n    return RefinementList.isRefined(this.facetsRefinements, facet, value);\n  },\n  /**\n   * Returns true if the facet contains exclusions or if a specific value is\n   * excluded.\n   *\n   * @method\n   * @param {string} facet name of the attribute for used for faceting\n   * @param {string} [value] optional value. If passed will test that this value\n   * is filtering the given facet.\n   * @return {boolean} returns true if refined\n   */\n  isExcludeRefined: function isExcludeRefined(facet, value) {\n    if (!this.isConjunctiveFacet(facet)) {\n      return false;\n    }\n    return RefinementList.isRefined(this.facetsExcludes, facet, value);\n  },\n  /**\n   * Returns true if the facet contains a refinement, or if a value passed is a\n   * refinement for the facet.\n   * @method\n   * @param {string} facet name of the attribute for used for faceting\n   * @param {string} value optional, will test if the value is used for refinement\n   * if there is one, otherwise will test if the facet contains any refinement\n   * @return {boolean} true if the facet is refined\n   */\n  isDisjunctiveFacetRefined: function isDisjunctiveFacetRefined(facet, value) {\n    if (!this.isDisjunctiveFacet(facet)) {\n      return false;\n    }\n    return RefinementList.isRefined(\n      this.disjunctiveFacetsRefinements,\n      facet,\n      value\n    );\n  },\n  /**\n   * Returns true if the facet contains a refinement, or if a value passed is a\n   * refinement for the facet.\n   * @method\n   * @param {string} facet name of the attribute for used for faceting\n   * @param {string} value optional, will test if the value is used for refinement\n   * if there is one, otherwise will test if the facet contains any refinement\n   * @return {boolean} true if the facet is refined\n   */\n  isHierarchicalFacetRefined: function isHierarchicalFacetRefined(\n    facet,\n    value\n  ) {\n    if (!this.isHierarchicalFacet(facet)) {\n      return false;\n    }\n\n    var refinements = this.getHierarchicalRefinement(facet);\n\n    if (!value) {\n      return refinements.length > 0;\n    }\n\n    return refinements.indexOf(value) !== -1;\n  },\n  /**\n   * Test if the triple (attribute, operator, value) is already refined.\n   * If only the attribute and the operator are provided, it tests if the\n   * contains any refinement value.\n   * @method\n   * @param {string} attribute attribute for which the refinement is applied\n   * @param {string} [operator] operator of the refinement\n   * @param {string} [value] value of the refinement\n   * @return {boolean} true if it is refined\n   */\n  isNumericRefined: function isNumericRefined(attribute, operator, value) {\n    if (value === undefined && operator === undefined) {\n      return Boolean(this.numericRefinements[attribute]);\n    }\n\n    var isOperatorDefined =\n      this.numericRefinements[attribute] &&\n      this.numericRefinements[attribute][operator] !== undefined;\n\n    if (value === undefined || !isOperatorDefined) {\n      return isOperatorDefined;\n    }\n\n    var parsedValue = valToNumber(value);\n    var isAttributeValueDefined =\n      findArray(this.numericRefinements[attribute][operator], parsedValue) !==\n      undefined;\n\n    return isOperatorDefined && isAttributeValueDefined;\n  },\n  /**\n   * Returns true if the tag refined, false otherwise\n   * @method\n   * @param {string} tag the tag to check\n   * @return {boolean} true if tag is refined\n   */\n  isTagRefined: function isTagRefined(tag) {\n    return this.tagRefinements.indexOf(tag) !== -1;\n  },\n  /**\n   * Returns the list of all disjunctive facets refined\n   * @method\n   * @param {string} facet name of the attribute used for faceting\n   * @param {value} value value used for filtering\n   * @return {string[]} returns the list of refinements\n   */\n  getRefinedDisjunctiveFacets: function getRefinedDisjunctiveFacets() {\n    // eslint-disable-next-line consistent-this\n    var self = this;\n\n    // attributes used for numeric filter can also be disjunctive\n    var disjunctiveNumericRefinedFacets = intersection(\n      Object.keys(this.numericRefinements).filter(function (facet) {\n        return Object.keys(self.numericRefinements[facet]).length > 0;\n      }),\n      this.disjunctiveFacets\n    );\n\n    return Object.keys(this.disjunctiveFacetsRefinements)\n      .filter(function (facet) {\n        return self.disjunctiveFacetsRefinements[facet].length > 0;\n      })\n      .concat(disjunctiveNumericRefinedFacets)\n      .concat(this.getRefinedHierarchicalFacets())\n      .sort();\n  },\n  /**\n   * Returns the list of all disjunctive facets refined\n   * @method\n   * @param {string} facet name of the attribute used for faceting\n   * @param {value} value value used for filtering\n   * @return {string[]} returns the list of refinements\n   */\n  getRefinedHierarchicalFacets: function getRefinedHierarchicalFacets() {\n    // eslint-disable-next-line consistent-this\n    var self = this;\n    return intersection(\n      // enforce the order between the two arrays,\n      // so that refinement name index === hierarchical facet index\n      this.hierarchicalFacets.map(function (facet) {\n        return facet.name;\n      }),\n      Object.keys(this.hierarchicalFacetsRefinements).filter(function (facet) {\n        return self.hierarchicalFacetsRefinements[facet].length > 0;\n      })\n    ).sort();\n  },\n  /**\n   * Returned the list of all disjunctive facets not refined\n   * @method\n   * @return {string[]} returns the list of facets that are not refined\n   */\n  getUnrefinedDisjunctiveFacets: function () {\n    var refinedFacets = this.getRefinedDisjunctiveFacets();\n\n    return this.disjunctiveFacets.filter(function (f) {\n      return refinedFacets.indexOf(f) === -1;\n    });\n  },\n\n  managedParameters: [\n    'index',\n\n    'facets',\n    'disjunctiveFacets',\n    'facetsRefinements',\n    'hierarchicalFacets',\n    'facetsExcludes',\n\n    'disjunctiveFacetsRefinements',\n    'numericRefinements',\n    'tagRefinements',\n    'hierarchicalFacetsRefinements',\n  ],\n\n  getQueryParams: function getQueryParams() {\n    var managedParameters = this.managedParameters;\n\n    var queryParams = {};\n\n    // eslint-disable-next-line consistent-this\n    var self = this;\n    Object.keys(this).forEach(function (paramName) {\n      var paramValue = self[paramName];\n      if (\n        managedParameters.indexOf(paramName) === -1 &&\n        paramValue !== undefined\n      ) {\n        queryParams[paramName] = paramValue;\n      }\n    });\n\n    return queryParams;\n  },\n  /**\n   * Let the user set a specific value for a given parameter. Will return the\n   * same instance if the parameter is invalid or if the value is the same as the\n   * previous one.\n   * @method\n   * @param {string} parameter the parameter name\n   * @param {any} value the value to be set, must be compliant with the definition\n   * of the attribute on the object\n   * @return {SearchParameters} the updated state\n   */\n  setQueryParameter: function setParameter(parameter, value) {\n    if (this[parameter] === value) return this;\n\n    var modification = {};\n\n    modification[parameter] = value;\n\n    return this.setQueryParameters(modification);\n  },\n  /**\n   * Let the user set any of the parameters with a plain object.\n   * @method\n   * @param {object} params all the keys and the values to be updated\n   * @return {SearchParameters} a new updated instance\n   */\n  setQueryParameters: function setQueryParameters(params) {\n    if (!params) return this;\n\n    var error = SearchParameters.validate(this, params);\n\n    if (error) {\n      throw error;\n    }\n\n    // eslint-disable-next-line consistent-this\n    var self = this;\n    var nextWithNumbers = SearchParameters._parseNumbers(params);\n    var previousPlainObject = Object.keys(this).reduce(function (acc, key) {\n      acc[key] = self[key];\n      return acc;\n    }, {});\n\n    var nextPlainObject = Object.keys(nextWithNumbers).reduce(function (\n      previous,\n      key\n    ) {\n      var isPreviousValueDefined = previous[key] !== undefined;\n      var isNextValueDefined = nextWithNumbers[key] !== undefined;\n\n      if (isPreviousValueDefined && !isNextValueDefined) {\n        return omit(previous, [key]);\n      }\n\n      if (isNextValueDefined) {\n        previous[key] = nextWithNumbers[key];\n      }\n\n      return previous;\n    },\n    previousPlainObject);\n\n    return new this.constructor(nextPlainObject);\n  },\n\n  /**\n   * Returns a new instance with the page reset. Two scenarios possible:\n   * the page is omitted -> return the given instance\n   * the page is set -> return a new instance with a page of 0\n   * @return {SearchParameters} a new updated instance\n   */\n  resetPage: function () {\n    if (this.page === undefined) {\n      return this;\n    }\n\n    return this.setPage(0);\n  },\n\n  /**\n   * Helper function to get the hierarchicalFacet separator or the default one (`>`)\n   * @param  {object} hierarchicalFacet the hierarchicalFacet object\n   * @return {string} returns the hierarchicalFacet.separator or `>` as default\n   */\n  _getHierarchicalFacetSortBy: function (hierarchicalFacet) {\n    return hierarchicalFacet.sortBy || ['isRefined:desc', 'name:asc'];\n  },\n\n  /**\n   * Helper function to get the hierarchicalFacet separator or the default one (`>`)\n   * @private\n   * @param  {object} hierarchicalFacet the hierarchicalFacet object\n   * @return {string} returns the hierarchicalFacet.separator or `>` as default\n   */\n  _getHierarchicalFacetSeparator: function (hierarchicalFacet) {\n    return hierarchicalFacet.separator || ' > ';\n  },\n\n  /**\n   * Helper function to get the hierarchicalFacet prefix path or null\n   * @private\n   * @param  {object} hierarchicalFacet the hierarchicalFacet object\n   * @return {string} returns the hierarchicalFacet.rootPath or null as default\n   */\n  _getHierarchicalRootPath: function (hierarchicalFacet) {\n    return hierarchicalFacet.rootPath || null;\n  },\n\n  /**\n   * Helper function to check if we show the parent level of the hierarchicalFacet\n   * @private\n   * @param  {object} hierarchicalFacet the hierarchicalFacet object\n   * @return {string} returns the hierarchicalFacet.showParentLevel or true as default\n   */\n  _getHierarchicalShowParentLevel: function (hierarchicalFacet) {\n    if (typeof hierarchicalFacet.showParentLevel === 'boolean') {\n      return hierarchicalFacet.showParentLevel;\n    }\n    return true;\n  },\n\n  /**\n   * Helper function to get the hierarchicalFacet by it's name\n   * @param  {string} hierarchicalFacetName the hierarchicalFacet name\n   * @return {object} a hierarchicalFacet\n   */\n  getHierarchicalFacetByName: function (hierarchicalFacetName) {\n    return find(this.hierarchicalFacets, function (f) {\n      return f.name === hierarchicalFacetName;\n    });\n  },\n\n  /**\n   * Get the current breadcrumb for a hierarchical facet, as an array\n   * @param  {string} facetName Hierarchical facet name\n   * @return {array.<string>} the path as an array of string\n   */\n  getHierarchicalFacetBreadcrumb: function (facetName) {\n    if (!this.isHierarchicalFacet(facetName)) {\n      return [];\n    }\n\n    var refinement = this.getHierarchicalRefinement(facetName)[0];\n    if (!refinement) return [];\n\n    var separator = this._getHierarchicalFacetSeparator(\n      this.getHierarchicalFacetByName(facetName)\n    );\n    var path = refinement.split(separator);\n    return path.map(function (part) {\n      return part.trim();\n    });\n  },\n\n  toString: function () {\n    return JSON.stringify(this, null, 2);\n  },\n};\n\n/**\n * Callback used for clearRefinement method\n * @callback SearchParameters.clearCallback\n * @param {OperatorList|FacetList} value the value of the filter\n * @param {string} key the current attribute name\n * @param {string} type `numeric`, `disjunctiveFacet`, `conjunctiveFacet`, `hierarchicalFacet` or `exclude`\n * depending on the type of facet\n * @return {boolean} `true` if the element should be removed. `false` otherwise.\n */\nmodule.exports = SearchParameters;\n","'use strict';\n\nmodule.exports = generateTrees;\n\nvar fv = require('../functions/escapeFacetValue');\nvar find = require('../functions/find');\nvar prepareHierarchicalFacetSortBy = require('../functions/formatSort');\nvar orderBy = require('../functions/orderBy');\nvar escapeFacetValue = fv.escapeFacetValue;\nvar unescapeFacetValue = fv.unescapeFacetValue;\n\nfunction generateTrees(state) {\n  return function generate(hierarchicalFacetResult, hierarchicalFacetIndex) {\n    var hierarchicalFacet = state.hierarchicalFacets[hierarchicalFacetIndex];\n    var hierarchicalFacetRefinement =\n      (state.hierarchicalFacetsRefinements[hierarchicalFacet.name] &&\n        state.hierarchicalFacetsRefinements[hierarchicalFacet.name][0]) ||\n      '';\n    var hierarchicalSeparator =\n      state._getHierarchicalFacetSeparator(hierarchicalFacet);\n    var hierarchicalRootPath =\n      state._getHierarchicalRootPath(hierarchicalFacet);\n    var hierarchicalShowParentLevel =\n      state._getHierarchicalShowParentLevel(hierarchicalFacet);\n    var sortBy = prepareHierarchicalFacetSortBy(\n      state._getHierarchicalFacetSortBy(hierarchicalFacet)\n    );\n\n    var rootExhaustive = hierarchicalFacetResult.every(function (facetResult) {\n      return facetResult.exhaustive;\n    });\n\n    var generateTreeFn = generateHierarchicalTree(\n      sortBy,\n      hierarchicalSeparator,\n      hierarchicalRootPath,\n      hierarchicalShowParentLevel,\n      hierarchicalFacetRefinement\n    );\n\n    var results = hierarchicalFacetResult;\n\n    if (hierarchicalRootPath) {\n      results = hierarchicalFacetResult.slice(\n        hierarchicalRootPath.split(hierarchicalSeparator).length\n      );\n    }\n\n    return results.reduce(generateTreeFn, {\n      name: state.hierarchicalFacets[hierarchicalFacetIndex].name,\n      count: null, // root level, no count\n      isRefined: true, // root level, always refined\n      path: null, // root level, no path\n      escapedValue: null,\n      exhaustive: rootExhaustive,\n      data: null,\n    });\n  };\n}\n\nfunction generateHierarchicalTree(\n  sortBy,\n  hierarchicalSeparator,\n  hierarchicalRootPath,\n  hierarchicalShowParentLevel,\n  currentRefinement\n) {\n  return function generateTree(\n    hierarchicalTree,\n    hierarchicalFacetResult,\n    currentHierarchicalLevel\n  ) {\n    var parent = hierarchicalTree;\n\n    if (currentHierarchicalLevel > 0) {\n      var level = 0;\n\n      parent = hierarchicalTree;\n\n      while (level < currentHierarchicalLevel) {\n        /**\n         * @type {object[]]} hierarchical data\n         */\n        var data = parent && Array.isArray(parent.data) ? parent.data : [];\n        parent = find(data, function (subtree) {\n          return subtree.isRefined;\n        });\n        level++;\n      }\n    }\n\n    // we found a refined parent, let's add current level data under it\n    if (parent) {\n      // filter values in case an object has multiple categories:\n      //   {\n      //     categories: {\n      //       level0: ['beers', 'bières'],\n      //       level1: ['beers > IPA', 'bières > Belges']\n      //     }\n      //   }\n      //\n      // If parent refinement is `beers`, then we do not want to have `bières > Belges`\n      // showing up\n\n      var picked = Object.keys(hierarchicalFacetResult.data)\n        .map(function (facetValue) {\n          return [facetValue, hierarchicalFacetResult.data[facetValue]];\n        })\n        .filter(function (tuple) {\n          var facetValue = tuple[0];\n          return onlyMatchingTree(\n            facetValue,\n            parent.path || hierarchicalRootPath,\n            currentRefinement,\n            hierarchicalSeparator,\n            hierarchicalRootPath,\n            hierarchicalShowParentLevel\n          );\n        });\n\n      parent.data = orderBy(\n        picked.map(function (tuple) {\n          var facetValue = tuple[0];\n          var facetCount = tuple[1];\n\n          return format(\n            facetCount,\n            facetValue,\n            hierarchicalSeparator,\n            unescapeFacetValue(currentRefinement),\n            hierarchicalFacetResult.exhaustive\n          );\n        }),\n        sortBy[0],\n        sortBy[1]\n      );\n    }\n\n    return hierarchicalTree;\n  };\n}\n\n// eslint-disable-next-line max-params\nfunction onlyMatchingTree(\n  facetValue,\n  parentPath,\n  currentRefinement,\n  hierarchicalSeparator,\n  hierarchicalRootPath,\n  hierarchicalShowParentLevel\n) {\n  // we want the facetValue is a child of hierarchicalRootPath\n  if (\n    hierarchicalRootPath &&\n    (facetValue.indexOf(hierarchicalRootPath) !== 0 ||\n      hierarchicalRootPath === facetValue)\n  ) {\n    return false;\n  }\n\n  // we always want root levels (only when there is no prefix path)\n  return (\n    (!hierarchicalRootPath &&\n      facetValue.indexOf(hierarchicalSeparator) === -1) ||\n    // if there is a rootPath, being root level mean 1 level under rootPath\n    (hierarchicalRootPath &&\n      facetValue.split(hierarchicalSeparator).length -\n        hierarchicalRootPath.split(hierarchicalSeparator).length ===\n        1) ||\n    // if current refinement is a root level and current facetValue is a root level,\n    // keep the facetValue\n    (facetValue.indexOf(hierarchicalSeparator) === -1 &&\n      currentRefinement.indexOf(hierarchicalSeparator) === -1) ||\n    // currentRefinement is a child of the facet value\n    currentRefinement.indexOf(facetValue) === 0 ||\n    // facetValue is a child of the current parent, add it\n    (facetValue.indexOf(parentPath + hierarchicalSeparator) === 0 &&\n      (hierarchicalShowParentLevel ||\n        facetValue.indexOf(currentRefinement) === 0))\n  );\n}\n\nfunction format(\n  facetCount,\n  facetValue,\n  hierarchicalSeparator,\n  currentRefinement,\n  exhaustive\n) {\n  var parts = facetValue.split(hierarchicalSeparator);\n  return {\n    name: parts[parts.length - 1].trim(),\n    path: facetValue,\n    escapedValue: escapeFacetValue(facetValue),\n    count: facetCount,\n    isRefined:\n      currentRefinement === facetValue ||\n      currentRefinement.indexOf(facetValue + hierarchicalSeparator) === 0,\n    exhaustive: exhaustive,\n    data: null,\n  };\n}\n","'use strict';\n\nvar compact = require('../functions/compact');\nvar defaultsPure = require('../functions/defaultsPure');\nvar fv = require('../functions/escapeFacetValue');\nvar find = require('../functions/find');\nvar findIndex = require('../functions/findIndex');\nvar formatSort = require('../functions/formatSort');\nvar mergeNumericMax = require('../functions/mergeNumericMax');\nvar orderBy = require('../functions/orderBy');\nvar escapeFacetValue = fv.escapeFacetValue;\nvar unescapeFacetValue = fv.unescapeFacetValue;\n\nvar generateHierarchicalTree = require('./generate-hierarchical-tree');\n\n/**\n * @typedef SearchResults.Facet\n * @type {object}\n * @property {string} name name of the attribute in the record\n * @property {object} data the faceting data: value, number of entries\n * @property {object} stats undefined unless facet_stats is retrieved from algolia\n */\n\n/**\n * @typedef SearchResults.HierarchicalFacet\n * @type {object}\n * @property {string} name name of the current value given the hierarchical level, trimmed.\n * If root node, you get the facet name\n * @property {number} count number of objects matching this hierarchical value\n * @property {string} path the current hierarchical value full path\n * @property {boolean} isRefined `true` if the current value was refined, `false` otherwise\n * @property {HierarchicalFacet[]} data sub values for the current level\n */\n\n/**\n * @typedef SearchResults.FacetValue\n * @type {object}\n * @property {string} name the facet value itself\n * @property {number} count times this facet appears in the results\n * @property {boolean} isRefined is the facet currently selected\n * @property {boolean} isExcluded is the facet currently excluded (only for conjunctive facets)\n */\n\n/**\n * @typedef Refinement\n * @type {object}\n * @property {string} type the type of filter used:\n * `numeric`, `facet`, `exclude`, `disjunctive`, `hierarchical`\n * @property {string} attributeName name of the attribute used for filtering\n * @property {string} name the value of the filter\n * @property {number} numericValue the value as a number. Only for numeric filters.\n * @property {string} operator the operator used. Only for numeric filters.\n * @property {number} count the number of computed hits for this filter. Only on facets.\n * @property {boolean} exhaustive if the count is exhaustive\n */\n\n/**\n * Turn an array of attributes in an object of attributes with their position in the array as value\n * @param {string[]} attributes the list of attributes in the record\n * @return {object} the list of attributes indexed by attribute name\n */\nfunction getIndices(attributes) {\n  var indices = {};\n\n  attributes.forEach(function (val, idx) {\n    indices[val] = idx;\n  });\n\n  return indices;\n}\n\nfunction assignFacetStats(dest, facetStats, key) {\n  if (facetStats && facetStats[key]) {\n    dest.stats = facetStats[key];\n  }\n}\n\n/**\n * @typedef {Object} HierarchicalFacet\n * @property {string} name\n * @property {string[]} attributes\n */\n\n/**\n * @param {HierarchicalFacet[]} hierarchicalFacets All hierarchical facets\n * @param {string} hierarchicalAttributeName The name of the hierarchical attribute\n * @return {HierarchicalFacet} The hierarchical facet matching the attribute name\n */\nfunction findMatchingHierarchicalFacetFromAttributeName(\n  hierarchicalFacets,\n  hierarchicalAttributeName\n) {\n  return find(\n    hierarchicalFacets,\n    function facetKeyMatchesAttribute(hierarchicalFacet) {\n      var facetNames = hierarchicalFacet.attributes || [];\n      return facetNames.indexOf(hierarchicalAttributeName) > -1;\n    }\n  );\n}\n\n/**\n * Constructor for SearchResults\n * @class\n * @classdesc SearchResults contains the results of a query to Algolia using the\n * {@link AlgoliaSearchHelper}.\n * @param {SearchParameters} state state that led to the response\n * @param {array.<object>} results the results from algolia client\n * @param {object} options options to control results content\n * @example <caption>SearchResults of the first query in\n * <a href=\"http://demos.algolia.com/instant-search-demo\">the instant search demo</a></caption>\n{\n   \"hitsPerPage\": 10,\n   \"processingTimeMS\": 2,\n   \"facets\": [\n      {\n         \"name\": \"type\",\n         \"data\": {\n            \"HardGood\": 6627,\n            \"BlackTie\": 550,\n            \"Music\": 665,\n            \"Software\": 131,\n            \"Game\": 456,\n            \"Movie\": 1571\n         },\n         \"exhaustive\": false\n      },\n      {\n         \"exhaustive\": false,\n         \"data\": {\n            \"Free shipping\": 5507\n         },\n         \"name\": \"shipping\"\n      }\n  ],\n   \"hits\": [\n      {\n         \"thumbnailImage\": \"http://img.bbystatic.com/BestBuy_US/images/products/1688/1688832_54x108_s.gif\",\n         \"_highlightResult\": {\n            \"shortDescription\": {\n               \"matchLevel\": \"none\",\n               \"value\": \"Safeguard your PC, Mac, Android and iOS devices with comprehensive Internet protection\",\n               \"matchedWords\": []\n            },\n            \"category\": {\n               \"matchLevel\": \"none\",\n               \"value\": \"Computer Security Software\",\n               \"matchedWords\": []\n            },\n            \"manufacturer\": {\n               \"matchedWords\": [],\n               \"value\": \"Webroot\",\n               \"matchLevel\": \"none\"\n            },\n            \"name\": {\n               \"value\": \"Webroot SecureAnywhere Internet Security (3-Device) (1-Year Subscription) - Mac/Windows\",\n               \"matchedWords\": [],\n               \"matchLevel\": \"none\"\n            }\n         },\n         \"image\": \"http://img.bbystatic.com/BestBuy_US/images/products/1688/1688832_105x210_sc.jpg\",\n         \"shipping\": \"Free shipping\",\n         \"bestSellingRank\": 4,\n         \"shortDescription\": \"Safeguard your PC, Mac, Android and iOS devices with comprehensive Internet protection\",\n         \"url\": \"http://www.bestbuy.com/site/webroot-secureanywhere-internet-security-3-devi…d=1219060687969&skuId=1688832&cmp=RMX&ky=2d3GfEmNIzjA0vkzveHdZEBgpPCyMnLTJ\",\n         \"name\": \"Webroot SecureAnywhere Internet Security (3-Device) (1-Year Subscription) - Mac/Windows\",\n         \"category\": \"Computer Security Software\",\n         \"salePrice_range\": \"1 - 50\",\n         \"objectID\": \"1688832\",\n         \"type\": \"Software\",\n         \"customerReviewCount\": 5980,\n         \"salePrice\": 49.99,\n         \"manufacturer\": \"Webroot\"\n      },\n      ....\n  ],\n   \"nbHits\": 10000,\n   \"disjunctiveFacets\": [\n      {\n         \"exhaustive\": false,\n         \"data\": {\n            \"5\": 183,\n            \"12\": 112,\n            \"7\": 149,\n            ...\n         },\n         \"name\": \"customerReviewCount\",\n         \"stats\": {\n            \"max\": 7461,\n            \"avg\": 157.939,\n            \"min\": 1\n         }\n      },\n      {\n         \"data\": {\n            \"Printer Ink\": 142,\n            \"Wireless Speakers\": 60,\n            \"Point & Shoot Cameras\": 48,\n            ...\n         },\n         \"name\": \"category\",\n         \"exhaustive\": false\n      },\n      {\n         \"exhaustive\": false,\n         \"data\": {\n            \"> 5000\": 2,\n            \"1 - 50\": 6524,\n            \"501 - 2000\": 566,\n            \"201 - 500\": 1501,\n            \"101 - 200\": 1360,\n            \"2001 - 5000\": 47\n         },\n         \"name\": \"salePrice_range\"\n      },\n      {\n         \"data\": {\n            \"Dynex™\": 202,\n            \"Insignia™\": 230,\n            \"PNY\": 72,\n            ...\n         },\n         \"name\": \"manufacturer\",\n         \"exhaustive\": false\n      }\n  ],\n   \"query\": \"\",\n   \"nbPages\": 100,\n   \"page\": 0,\n   \"index\": \"bestbuy\"\n}\n **/\nfunction SearchResults(state, results, options) {\n  var mainSubResponse = results[0] || {};\n\n  this._rawResults = results;\n\n  // eslint-disable-next-line consistent-this\n  var self = this;\n\n  // https://www.algolia.com/doc/api-reference/api-methods/search/#response\n  Object.keys(mainSubResponse).forEach(function (key) {\n    self[key] = mainSubResponse[key];\n  });\n\n  // Make every key of the result options reachable from the instance\n  var opts = defaultsPure(options, {\n    persistHierarchicalRootCount: false,\n  });\n  Object.keys(opts).forEach(function (key) {\n    self[key] = opts[key];\n  });\n\n  /**\n   * query used to generate the results\n   * @name query\n   * @member {string}\n   * @memberof SearchResults\n   * @instance\n   */\n  /**\n   * The query as parsed by the engine given all the rules.\n   * @name parsedQuery\n   * @member {string}\n   * @memberof SearchResults\n   * @instance\n   */\n  /**\n   * all the records that match the search parameters. Each record is\n   * augmented with a new attribute `_highlightResult`\n   * which is an object keyed by attribute and with the following properties:\n   * - `value` : the value of the facet highlighted (html)\n   * - `matchLevel`: `full`, `partial` or `none`, depending on how the query terms match\n   * @name hits\n   * @member {object[]}\n   * @memberof SearchResults\n   * @instance\n   */\n  /**\n   * index where the results come from\n   * @name index\n   * @member {string}\n   * @memberof SearchResults\n   * @instance\n   */\n  /**\n   * number of hits per page requested\n   * @name hitsPerPage\n   * @member {number}\n   * @memberof SearchResults\n   * @instance\n   */\n  /**\n   * total number of hits of this query on the index\n   * @name nbHits\n   * @member {number}\n   * @memberof SearchResults\n   * @instance\n   */\n  /**\n   * total number of pages with respect to the number of hits per page and the total number of hits\n   * @name nbPages\n   * @member {number}\n   * @memberof SearchResults\n   * @instance\n   */\n  /**\n   * current page\n   * @name page\n   * @member {number}\n   * @memberof SearchResults\n   * @instance\n   */\n  /**\n   * The position if the position was guessed by IP.\n   * @name aroundLatLng\n   * @member {string}\n   * @memberof SearchResults\n   * @instance\n   * @example \"48.8637,2.3615\",\n   */\n  /**\n   * The radius computed by Algolia.\n   * @name automaticRadius\n   * @member {string}\n   * @memberof SearchResults\n   * @instance\n   * @example \"126792922\",\n   */\n  /**\n   * String identifying the server used to serve this request.\n   *\n   * getRankingInfo needs to be set to `true` for this to be returned\n   *\n   * @name serverUsed\n   * @member {string}\n   * @memberof SearchResults\n   * @instance\n   * @example \"c7-use-2.algolia.net\",\n   */\n  /**\n   * Boolean that indicates if the computation of the counts did time out.\n   * @deprecated\n   * @name timeoutCounts\n   * @member {boolean}\n   * @memberof SearchResults\n   * @instance\n   */\n  /**\n   * Boolean that indicates if the computation of the hits did time out.\n   * @deprecated\n   * @name timeoutHits\n   * @member {boolean}\n   * @memberof SearchResults\n   * @instance\n   */\n  /**\n   * True if the counts of the facets is exhaustive\n   * @name exhaustiveFacetsCount\n   * @member {boolean}\n   * @memberof SearchResults\n   * @instance\n   */\n  /**\n   * True if the number of hits is exhaustive\n   * @name exhaustiveNbHits\n   * @member {boolean}\n   * @memberof SearchResults\n   * @instance\n   */\n  /**\n   * Contains the userData if they are set by a [query rule](https://www.algolia.com/doc/guides/query-rules/query-rules-overview/).\n   * @name userData\n   * @member {object[]}\n   * @memberof SearchResults\n   * @instance\n   */\n  /**\n   * queryID is the unique identifier of the query used to generate the current search results.\n   * This value is only available if the `clickAnalytics` search parameter is set to `true`.\n   * @name queryID\n   * @member {string}\n   * @memberof SearchResults\n   * @instance\n   */\n\n  /**\n   * sum of the processing time of all the queries\n   * @name processingTimeMS\n   * @member {number}\n   * @memberof SearchResults\n   * @instance\n   */\n  this.processingTimeMS = results.reduce(function (sum, result) {\n    return result.processingTimeMS === undefined\n      ? sum\n      : sum + result.processingTimeMS;\n  }, 0);\n\n  /**\n   * disjunctive facets results\n   * @member {SearchResults.Facet[]}\n   */\n  this.disjunctiveFacets = [];\n  /**\n   * disjunctive facets results\n   * @member {SearchResults.HierarchicalFacet[]}\n   */\n  this.hierarchicalFacets = state.hierarchicalFacets.map(\n    function initFutureTree() {\n      return [];\n    }\n  );\n  /**\n   * other facets results\n   * @member {SearchResults.Facet[]}\n   */\n  this.facets = [];\n\n  var disjunctiveFacets = state.getRefinedDisjunctiveFacets();\n\n  var facetsIndices = getIndices(state.facets);\n  var disjunctiveFacetsIndices = getIndices(state.disjunctiveFacets);\n  var nextDisjunctiveResult = 1;\n\n  // Since we send request only for disjunctive facets that have been refined,\n  // we get the facets information from the first, general, response.\n\n  var mainFacets = mainSubResponse.facets || {};\n\n  Object.keys(mainFacets).forEach(function (facetKey) {\n    var facetValueObject = mainFacets[facetKey];\n\n    var hierarchicalFacet = findMatchingHierarchicalFacetFromAttributeName(\n      state.hierarchicalFacets,\n      facetKey\n    );\n\n    if (hierarchicalFacet) {\n      // Place the hierarchicalFacet data at the correct index depending on\n      // the attributes order that was defined at the helper initialization\n      var facetIndex = hierarchicalFacet.attributes.indexOf(facetKey);\n      var idxAttributeName = findIndex(state.hierarchicalFacets, function (f) {\n        return f.name === hierarchicalFacet.name;\n      });\n      self.hierarchicalFacets[idxAttributeName][facetIndex] = {\n        attribute: facetKey,\n        data: facetValueObject,\n        exhaustive: mainSubResponse.exhaustiveFacetsCount,\n      };\n    } else {\n      var isFacetDisjunctive = state.disjunctiveFacets.indexOf(facetKey) !== -1;\n      var isFacetConjunctive = state.facets.indexOf(facetKey) !== -1;\n      var position;\n\n      if (isFacetDisjunctive) {\n        position = disjunctiveFacetsIndices[facetKey];\n        self.disjunctiveFacets[position] = {\n          name: facetKey,\n          data: facetValueObject,\n          exhaustive: mainSubResponse.exhaustiveFacetsCount,\n        };\n        assignFacetStats(\n          self.disjunctiveFacets[position],\n          mainSubResponse.facets_stats,\n          facetKey\n        );\n      }\n      if (isFacetConjunctive) {\n        position = facetsIndices[facetKey];\n        self.facets[position] = {\n          name: facetKey,\n          data: facetValueObject,\n          exhaustive: mainSubResponse.exhaustiveFacetsCount,\n        };\n        assignFacetStats(\n          self.facets[position],\n          mainSubResponse.facets_stats,\n          facetKey\n        );\n      }\n    }\n  });\n\n  // Make sure we do not keep holes within the hierarchical facets\n  this.hierarchicalFacets = compact(this.hierarchicalFacets);\n\n  // aggregate the refined disjunctive facets\n  disjunctiveFacets.forEach(function (disjunctiveFacet) {\n    var result = results[nextDisjunctiveResult];\n    var facets = result && result.facets ? result.facets : {};\n    var hierarchicalFacet = state.getHierarchicalFacetByName(disjunctiveFacet);\n\n    // There should be only item in facets.\n    Object.keys(facets).forEach(function (dfacet) {\n      var facetResults = facets[dfacet];\n\n      var position;\n\n      if (hierarchicalFacet) {\n        position = findIndex(state.hierarchicalFacets, function (f) {\n          return f.name === hierarchicalFacet.name;\n        });\n        var attributeIndex = findIndex(\n          self.hierarchicalFacets[position],\n          function (f) {\n            return f.attribute === dfacet;\n          }\n        );\n\n        // previous refinements and no results so not able to find it\n        if (attributeIndex === -1) {\n          return;\n        }\n\n        self.hierarchicalFacets[position][attributeIndex].data =\n          self.persistHierarchicalRootCount\n            ? mergeNumericMax(\n                self.hierarchicalFacets[position][attributeIndex].data,\n                facetResults\n              )\n            : defaultsPure(\n                facetResults,\n                self.hierarchicalFacets[position][attributeIndex].data\n              );\n      } else {\n        position = disjunctiveFacetsIndices[dfacet];\n\n        var dataFromMainRequest =\n          (mainSubResponse.facets && mainSubResponse.facets[dfacet]) || {};\n\n        self.disjunctiveFacets[position] = {\n          name: dfacet,\n          data: mergeNumericMax(dataFromMainRequest, facetResults),\n          exhaustive: result.exhaustiveFacetsCount,\n        };\n        assignFacetStats(\n          self.disjunctiveFacets[position],\n          result.facets_stats,\n          dfacet\n        );\n\n        if (state.disjunctiveFacetsRefinements[dfacet]) {\n          state.disjunctiveFacetsRefinements[dfacet].forEach(function (\n            refinementValue\n          ) {\n            // add the disjunctive refinements if it is no more retrieved\n            if (\n              !self.disjunctiveFacets[position].data[refinementValue] &&\n              state.disjunctiveFacetsRefinements[dfacet].indexOf(\n                unescapeFacetValue(refinementValue)\n              ) > -1\n            ) {\n              self.disjunctiveFacets[position].data[refinementValue] = 0;\n            }\n          });\n        }\n      }\n    });\n    nextDisjunctiveResult++;\n  });\n\n  // if we have some parent level values for hierarchical facets, merge them\n  state.getRefinedHierarchicalFacets().forEach(function (refinedFacet) {\n    var hierarchicalFacet = state.getHierarchicalFacetByName(refinedFacet);\n    var separator = state._getHierarchicalFacetSeparator(hierarchicalFacet);\n\n    var currentRefinement = state.getHierarchicalRefinement(refinedFacet);\n    // if we are already at a root refinement (or no refinement at all), there is no\n    // root level values request\n    if (\n      currentRefinement.length === 0 ||\n      currentRefinement[0].split(separator).length < 2\n    ) {\n      return;\n    }\n\n    results.slice(nextDisjunctiveResult).forEach(function (result) {\n      var facets = result && result.facets ? result.facets : {};\n\n      Object.keys(facets).forEach(function (dfacet) {\n        var facetResults = facets[dfacet];\n        var position = findIndex(state.hierarchicalFacets, function (f) {\n          return f.name === hierarchicalFacet.name;\n        });\n        var attributeIndex = findIndex(\n          self.hierarchicalFacets[position],\n          function (f) {\n            return f.attribute === dfacet;\n          }\n        );\n\n        // previous refinements and no results so not able to find it\n        if (attributeIndex === -1) {\n          return;\n        }\n\n        // when we always get root levels, if the hits refinement is `beers > IPA` (count: 5),\n        // then the disjunctive values will be `beers` (count: 100),\n        // but we do not want to display\n        //   | beers (100)\n        //     > IPA (5)\n        // We want\n        //   | beers (5)\n        //     > IPA (5)\n        // @MAJOR: remove this legacy behaviour in next major version\n        var defaultData = {};\n\n        if (\n          currentRefinement.length > 0 &&\n          !self.persistHierarchicalRootCount\n        ) {\n          var root = currentRefinement[0].split(separator)[0];\n          defaultData[root] =\n            self.hierarchicalFacets[position][attributeIndex].data[root];\n        }\n\n        self.hierarchicalFacets[position][attributeIndex].data = defaultsPure(\n          defaultData,\n          facetResults,\n          self.hierarchicalFacets[position][attributeIndex].data\n        );\n      });\n\n      nextDisjunctiveResult++;\n    });\n  });\n\n  // add the excludes\n  Object.keys(state.facetsExcludes).forEach(function (facetName) {\n    var excludes = state.facetsExcludes[facetName];\n    var position = facetsIndices[facetName];\n\n    self.facets[position] = {\n      name: facetName,\n      data: mainFacets[facetName],\n      exhaustive: mainSubResponse.exhaustiveFacetsCount,\n    };\n    excludes.forEach(function (facetValue) {\n      self.facets[position] = self.facets[position] || { name: facetName };\n      self.facets[position].data = self.facets[position].data || {};\n      self.facets[position].data[facetValue] = 0;\n    });\n  });\n\n  /**\n   * @type {Array}\n   */\n  this.hierarchicalFacets = this.hierarchicalFacets.map(\n    generateHierarchicalTree(state)\n  );\n\n  /**\n   * @type {Array}\n   */\n  this.facets = compact(this.facets);\n  /**\n   * @type {Array}\n   */\n  this.disjunctiveFacets = compact(this.disjunctiveFacets);\n\n  this._state = state;\n}\n\n/**\n * Get a facet object with its name\n * @deprecated\n * @param {string} name name of the faceted attribute\n * @return {SearchResults.Facet} the facet object\n */\nSearchResults.prototype.getFacetByName = function (name) {\n  function predicate(facet) {\n    return facet.name === name;\n  }\n\n  return (\n    find(this.facets, predicate) ||\n    find(this.disjunctiveFacets, predicate) ||\n    find(this.hierarchicalFacets, predicate)\n  );\n};\n\n/**\n * Get the facet values of a specified attribute from a SearchResults object.\n * @private\n * @param {SearchResults} results the search results to search in\n * @param {string} attribute name of the faceted attribute to search for\n * @return {array|object} facet values. For the hierarchical facets it is an object.\n */\nfunction extractNormalizedFacetValues(results, attribute) {\n  function predicate(facet) {\n    return facet.name === attribute;\n  }\n\n  if (results._state.isConjunctiveFacet(attribute)) {\n    var facet = find(results.facets, predicate);\n    if (!facet) return [];\n\n    return Object.keys(facet.data).map(function (name) {\n      var value = escapeFacetValue(name);\n      return {\n        name: name,\n        escapedValue: value,\n        count: facet.data[name],\n        isRefined: results._state.isFacetRefined(attribute, value),\n        isExcluded: results._state.isExcludeRefined(attribute, name),\n      };\n    });\n  } else if (results._state.isDisjunctiveFacet(attribute)) {\n    var disjunctiveFacet = find(results.disjunctiveFacets, predicate);\n    if (!disjunctiveFacet) return [];\n\n    return Object.keys(disjunctiveFacet.data).map(function (name) {\n      var value = escapeFacetValue(name);\n      return {\n        name: name,\n        escapedValue: value,\n        count: disjunctiveFacet.data[name],\n        isRefined: results._state.isDisjunctiveFacetRefined(attribute, value),\n      };\n    });\n  } else if (results._state.isHierarchicalFacet(attribute)) {\n    var hierarchicalFacetValues = find(results.hierarchicalFacets, predicate);\n    if (!hierarchicalFacetValues) return hierarchicalFacetValues;\n\n    var hierarchicalFacet =\n      results._state.getHierarchicalFacetByName(attribute);\n    var separator =\n      results._state._getHierarchicalFacetSeparator(hierarchicalFacet);\n    var currentRefinement = unescapeFacetValue(\n      results._state.getHierarchicalRefinement(attribute)[0] || ''\n    );\n\n    if (currentRefinement.indexOf(hierarchicalFacet.rootPath) === 0) {\n      currentRefinement = currentRefinement.replace(\n        hierarchicalFacet.rootPath + separator,\n        ''\n      );\n    }\n\n    var currentRefinementSplit = currentRefinement.split(separator);\n    currentRefinementSplit.unshift(attribute);\n\n    setIsRefined(hierarchicalFacetValues, currentRefinementSplit, 0);\n\n    return hierarchicalFacetValues;\n  }\n\n  return undefined;\n}\n\n/**\n * Set the isRefined of a hierarchical facet result based on the current state.\n * @param {SearchResults.HierarchicalFacet} item Hierarchical facet to fix\n * @param {string[]} currentRefinement array of parts of the current hierarchical refinement\n * @param {number} depth recursion depth in the currentRefinement\n * @return {undefined} function mutates the item\n */\nfunction setIsRefined(item, currentRefinement, depth) {\n  item.isRefined =\n    item.name === (currentRefinement[depth] && currentRefinement[depth].trim());\n  if (item.data) {\n    item.data.forEach(function (child) {\n      setIsRefined(child, currentRefinement, depth + 1);\n    });\n  }\n}\n\n/**\n * Sort nodes of a hierarchical or disjunctive facet results\n * @private\n * @param {function} sortFn sort function to apply\n * @param {HierarchicalFacet|Array} node node upon which we want to apply the sort\n * @param {string[]} names attribute names\n * @param {number} [level=0] current index in the names array\n * @return {HierarchicalFacet|Array} sorted node\n */\nfunction recSort(sortFn, node, names, level) {\n  level = level || 0;\n\n  if (Array.isArray(node)) {\n    return sortFn(node, names[level]);\n  }\n\n  if (!node.data || node.data.length === 0) {\n    return node;\n  }\n\n  var children = node.data.map(function (childNode) {\n    return recSort(sortFn, childNode, names, level + 1);\n  });\n  var sortedChildren = sortFn(children, names[level]);\n  var newNode = defaultsPure({ data: sortedChildren }, node);\n  return newNode;\n}\n\nSearchResults.DEFAULT_SORT = ['isRefined:desc', 'count:desc', 'name:asc'];\n\nfunction vanillaSortFn(order, data) {\n  return data.sort(order);\n}\n\n/**\n * @typedef FacetOrdering\n * @type {Object}\n * @property {string[]} [order]\n * @property {'count' | 'alpha' | 'hidden'} [sortRemainingBy]\n */\n\n/**\n * Sorts facet arrays via their facet ordering\n * @param {Array} facetValues the values\n * @param {FacetOrdering} facetOrdering the ordering\n * @returns {Array} the sorted facet values\n */\nfunction sortViaFacetOrdering(facetValues, facetOrdering) {\n  var orderedFacets = [];\n  var remainingFacets = [];\n  var hide = facetOrdering.hide || [];\n  var order = facetOrdering.order || [];\n\n  /**\n   * an object with the keys being the values in order, the values their index:\n   * ['one', 'two'] -> { one: 0, two: 1 }\n   */\n  var reverseOrder = order.reduce(function (acc, name, i) {\n    acc[name] = i;\n    return acc;\n  }, {});\n\n  facetValues.forEach(function (item) {\n    // hierarchical facets get sorted using their raw name\n    var name = item.path || item.name;\n    var hidden = hide.indexOf(name) > -1;\n    if (!hidden && reverseOrder[name] !== undefined) {\n      orderedFacets[reverseOrder[name]] = item;\n    } else if (!hidden) {\n      remainingFacets.push(item);\n    }\n  });\n\n  orderedFacets = orderedFacets.filter(function (facet) {\n    return facet;\n  });\n\n  var sortRemainingBy = facetOrdering.sortRemainingBy;\n  var ordering;\n  if (sortRemainingBy === 'hidden') {\n    return orderedFacets;\n  } else if (sortRemainingBy === 'alpha') {\n    ordering = [\n      ['path', 'name'],\n      ['asc', 'asc'],\n    ];\n  } else {\n    ordering = [['count'], ['desc']];\n  }\n\n  return orderedFacets.concat(\n    orderBy(remainingFacets, ordering[0], ordering[1])\n  );\n}\n\n/**\n * @param {SearchResults} results the search results class\n * @param {string} attribute the attribute to retrieve ordering of\n * @returns {FacetOrdering | undefined} the facet ordering\n */\nfunction getFacetOrdering(results, attribute) {\n  return (\n    results.renderingContent &&\n    results.renderingContent.facetOrdering &&\n    results.renderingContent.facetOrdering.values &&\n    results.renderingContent.facetOrdering.values[attribute]\n  );\n}\n\n/**\n * Get a the list of values for a given facet attribute. Those values are sorted\n * refinement first, descending count (bigger value on top), and name ascending\n * (alphabetical order). The sort formula can overridden using either string based\n * predicates or a function.\n *\n * This method will return all the values returned by the Algolia engine plus all\n * the values already refined. This means that it can happen that the\n * `maxValuesPerFacet` [configuration](https://www.algolia.com/doc/rest-api/search#param-maxValuesPerFacet)\n * might not be respected if you have facet values that are already refined.\n * @param {string} attribute attribute name\n * @param {object} opts configuration options.\n * @param {boolean} [opts.facetOrdering]\n * Force the use of facetOrdering from the result if a sortBy is present. If\n * sortBy isn't present, facetOrdering will be used automatically.\n * @param {Array.<string> | function} opts.sortBy\n * When using strings, it consists of\n * the name of the [FacetValue](#SearchResults.FacetValue) or the\n * [HierarchicalFacet](#SearchResults.HierarchicalFacet) attributes with the\n * order (`asc` or `desc`). For example to order the value by count, the\n * argument would be `['count:asc']`.\n *\n * If only the attribute name is specified, the ordering defaults to the one\n * specified in the default value for this attribute.\n *\n * When not specified, the order is\n * ascending.  This parameter can also be a function which takes two facet\n * values and should return a number, 0 if equal, 1 if the first argument is\n * bigger or -1 otherwise.\n *\n * The default value for this attribute `['isRefined:desc', 'count:desc', 'name:asc']`\n * @return {FacetValue[]|HierarchicalFacet|undefined} depending on the type of facet of\n * the attribute requested (hierarchical, disjunctive or conjunctive)\n * @example\n * helper.on('result', function(event){\n *   //get values ordered only by name ascending using the string predicate\n *   event.results.getFacetValues('city', {sortBy: ['name:asc']});\n *   //get values  ordered only by count ascending using a function\n *   event.results.getFacetValues('city', {\n *     // this is equivalent to ['count:asc']\n *     sortBy: function(a, b) {\n *       if (a.count === b.count) return 0;\n *       if (a.count > b.count)   return 1;\n *       if (b.count > a.count)   return -1;\n *     }\n *   });\n * });\n */\nSearchResults.prototype.getFacetValues = function (attribute, opts) {\n  var facetValues = extractNormalizedFacetValues(this, attribute);\n  if (!facetValues) {\n    return undefined;\n  }\n\n  var options = defaultsPure(opts, {\n    sortBy: SearchResults.DEFAULT_SORT,\n    // if no sortBy is given, attempt to sort based on facetOrdering\n    // if it is given, we still allow to sort via facet ordering first\n    facetOrdering: !(opts && opts.sortBy),\n  });\n\n  // eslint-disable-next-line consistent-this\n  var results = this;\n  var attributes;\n  if (Array.isArray(facetValues)) {\n    attributes = [attribute];\n  } else {\n    var config = results._state.getHierarchicalFacetByName(facetValues.name);\n    attributes = config.attributes;\n  }\n\n  return recSort(\n    function (data, facetName) {\n      var facetOrdering = getFacetOrdering(results, facetName);\n      if (options.facetOrdering) {\n        if (facetOrdering) {\n          return sortViaFacetOrdering(data, facetOrdering);\n        }\n      }\n\n      if (Array.isArray(options.sortBy)) {\n        var order = formatSort(options.sortBy, SearchResults.DEFAULT_SORT);\n        var items = orderBy(data, order[0], order[1]);\n\n        var hide =\n          facetOrdering && facetOrdering.hide ? facetOrdering.hide : [];\n        if (hide.length > 0) {\n          var visible = [];\n          items.forEach(function (item) {\n            // hierarchical facets get sorted using their raw name\n            var name = item.path || item.name;\n            if (hide.indexOf(name) === -1) {\n              visible.push(item);\n            }\n          });\n\n          return visible;\n        }\n\n        return items;\n      } else if (typeof options.sortBy === 'function') {\n        return vanillaSortFn(options.sortBy, data);\n      }\n      throw new Error(\n        'options.sortBy is optional but if defined it must be ' +\n          'either an array of string (predicates) or a sorting function'\n      );\n    },\n    facetValues,\n    attributes\n  );\n};\n\n/**\n * Returns the facet stats if attribute is defined and the facet contains some.\n * Otherwise returns undefined.\n * @param {string} attribute name of the faceted attribute\n * @return {object} The stats of the facet\n */\nSearchResults.prototype.getFacetStats = function (attribute) {\n  if (this._state.isConjunctiveFacet(attribute)) {\n    return getFacetStatsIfAvailable(this.facets, attribute);\n  } else if (this._state.isDisjunctiveFacet(attribute)) {\n    return getFacetStatsIfAvailable(this.disjunctiveFacets, attribute);\n  }\n\n  return undefined;\n};\n\n/**\n * @typedef {Object} FacetListItem\n * @property {string} name\n */\n\n/**\n * @param {FacetListItem[]} facetList (has more items, but enough for here)\n * @param {string} facetName The attribute to look for\n * @return {object|undefined} The stats of the facet\n */\nfunction getFacetStatsIfAvailable(facetList, facetName) {\n  var data = find(facetList, function (facet) {\n    return facet.name === facetName;\n  });\n  return data && data.stats;\n}\n\n/**\n * Returns all refinements for all filters + tags. It also provides\n * additional information: count and exhaustiveness for each filter.\n *\n * See the [refinement type](#Refinement) for an exhaustive view of the available\n * data.\n *\n * Note that for a numeric refinement, results are grouped per operator, this\n * means that it will return responses for operators which are empty.\n *\n * @return {Array.<Refinement>} all the refinements\n */\nSearchResults.prototype.getRefinements = function () {\n  var state = this._state;\n  // eslint-disable-next-line consistent-this\n  var results = this;\n  var res = [];\n\n  Object.keys(state.facetsRefinements).forEach(function (attributeName) {\n    state.facetsRefinements[attributeName].forEach(function (name) {\n      res.push(\n        getRefinement(state, 'facet', attributeName, name, results.facets)\n      );\n    });\n  });\n\n  Object.keys(state.facetsExcludes).forEach(function (attributeName) {\n    state.facetsExcludes[attributeName].forEach(function (name) {\n      res.push(\n        getRefinement(state, 'exclude', attributeName, name, results.facets)\n      );\n    });\n  });\n\n  Object.keys(state.disjunctiveFacetsRefinements).forEach(function (\n    attributeName\n  ) {\n    state.disjunctiveFacetsRefinements[attributeName].forEach(function (name) {\n      res.push(\n        getRefinement(\n          state,\n          'disjunctive',\n          attributeName,\n          name,\n          results.disjunctiveFacets\n        )\n      );\n    });\n  });\n\n  Object.keys(state.hierarchicalFacetsRefinements).forEach(function (\n    attributeName\n  ) {\n    state.hierarchicalFacetsRefinements[attributeName].forEach(function (name) {\n      res.push(\n        getHierarchicalRefinement(\n          state,\n          attributeName,\n          name,\n          results.hierarchicalFacets\n        )\n      );\n    });\n  });\n\n  Object.keys(state.numericRefinements).forEach(function (attributeName) {\n    var operators = state.numericRefinements[attributeName];\n    Object.keys(operators).forEach(function (operator) {\n      operators[operator].forEach(function (value) {\n        res.push({\n          type: 'numeric',\n          attributeName: attributeName,\n          name: value,\n          numericValue: value,\n          operator: operator,\n        });\n      });\n    });\n  });\n\n  state.tagRefinements.forEach(function (name) {\n    res.push({ type: 'tag', attributeName: '_tags', name: name });\n  });\n\n  return res;\n};\n\n/**\n * @typedef {Object} Facet\n * @property {string} name\n * @property {Object} data\n * @property {boolean} exhaustive\n */\n\n/**\n * @param {SearchParameters} state the current state\n * @param {string} type the type of the refinement\n * @param {string} attributeName The attribute of the facet\n * @param {*} name The name of the facet\n * @param {Facet[]} resultsFacets facets from the results\n * @return {Refinement} the refinement\n */\nfunction getRefinement(state, type, attributeName, name, resultsFacets) {\n  var facet = find(resultsFacets, function (f) {\n    return f.name === attributeName;\n  });\n  var count = facet && facet.data && facet.data[name] ? facet.data[name] : 0;\n  var exhaustive = (facet && facet.exhaustive) || false;\n\n  return {\n    type: type,\n    attributeName: attributeName,\n    name: name,\n    count: count,\n    exhaustive: exhaustive,\n  };\n}\n\n/**\n * @param {SearchParameters} state the current state\n * @param {string} attributeName the attribute of the hierarchical facet\n * @param {string} name the name of the facet\n * @param {Facet[]} resultsFacets facets from the results\n * @return {HierarchicalFacet} the hierarchical facet\n */\nfunction getHierarchicalRefinement(state, attributeName, name, resultsFacets) {\n  var facetDeclaration = state.getHierarchicalFacetByName(attributeName);\n  var separator = state._getHierarchicalFacetSeparator(facetDeclaration);\n  var split = name.split(separator);\n  var rootFacet = find(resultsFacets, function (facet) {\n    return facet.name === attributeName;\n  });\n\n  var facet = split.reduce(function (intermediateFacet, part) {\n    var newFacet =\n      intermediateFacet &&\n      find(intermediateFacet.data, function (f) {\n        return f.name === part;\n      });\n    return newFacet !== undefined ? newFacet : intermediateFacet;\n  }, rootFacet);\n\n  var count = (facet && facet.count) || 0;\n  var exhaustive = (facet && facet.exhaustive) || false;\n  var path = (facet && facet.path) || '';\n\n  return {\n    type: 'hierarchical',\n    attributeName: attributeName,\n    name: path,\n    count: count,\n    exhaustive: exhaustive,\n  };\n}\n\nmodule.exports = SearchResults;\n","'use strict';\n\nvar EventEmitter = require('@algolia/events');\n\nvar DerivedHelper = require('./DerivedHelper');\nvar escapeFacetValue = require('./functions/escapeFacetValue').escapeFacetValue;\nvar inherits = require('./functions/inherits');\nvar merge = require('./functions/merge');\nvar objectHasKeys = require('./functions/objectHasKeys');\nvar omit = require('./functions/omit');\nvar RecommendParameters = require('./RecommendParameters');\nvar RecommendResults = require('./RecommendResults');\nvar requestBuilder = require('./requestBuilder');\nvar SearchParameters = require('./SearchParameters');\nvar SearchResults = require('./SearchResults');\nvar sortAndMergeRecommendations = require('./utils/sortAndMergeRecommendations');\nvar version = require('./version');\n\n/**\n * Event triggered when a parameter is set or updated\n * @event AlgoliaSearchHelper#event:change\n * @property {object} event\n * @property {SearchParameters} event.state the current parameters with the latest changes applied\n * @property {SearchResults} event.results the previous results received from Algolia. `null` before the first request\n * @example\n * helper.on('change', function(event) {\n *   console.log('The parameters have changed');\n * });\n */\n\n/**\n * Event triggered when a main search is sent to Algolia\n * @event AlgoliaSearchHelper#event:search\n * @property {object} event\n * @property {SearchParameters} event.state the parameters used for this search\n * @property {SearchResults} event.results the results from the previous search. `null` if it is the first search.\n * @example\n * helper.on('search', function(event) {\n *   console.log('Search sent');\n * });\n */\n\n/**\n * Event triggered when a search using `searchForFacetValues` is sent to Algolia\n * @event AlgoliaSearchHelper#event:searchForFacetValues\n * @property {object} event\n * @property {SearchParameters} event.state the parameters used for this search it is the first search.\n * @property {string} event.facet the facet searched into\n * @property {string} event.query the query used to search in the facets\n * @example\n * helper.on('searchForFacetValues', function(event) {\n *   console.log('searchForFacetValues sent');\n * });\n */\n\n/**\n * Event triggered when a search using `searchOnce` is sent to Algolia\n * @event AlgoliaSearchHelper#event:searchOnce\n * @property {object} event\n * @property {SearchParameters} event.state the parameters used for this search it is the first search.\n * @example\n * helper.on('searchOnce', function(event) {\n *   console.log('searchOnce sent');\n * });\n */\n\n/**\n * Event triggered when the results are retrieved from Algolia\n * @event AlgoliaSearchHelper#event:result\n * @property {object} event\n * @property {SearchResults} event.results the results received from Algolia\n * @property {SearchParameters} event.state the parameters used to query Algolia. Those might be different from the one in the helper instance (for example if the network is unreliable).\n * @example\n * helper.on('result', function(event) {\n *   console.log('Search results received');\n * });\n */\n\n/**\n * Event triggered when Algolia sends back an error. For example, if an unknown parameter is\n * used, the error can be caught using this event.\n * @event AlgoliaSearchHelper#event:error\n * @property {object} event\n * @property {Error} event.error the error returned by the Algolia.\n * @example\n * helper.on('error', function(event) {\n *   console.log('Houston we got a problem.');\n * });\n */\n\n/**\n * Event triggered when the queue of queries have been depleted (with any result or outdated queries)\n * @event AlgoliaSearchHelper#event:searchQueueEmpty\n * @example\n * helper.on('searchQueueEmpty', function() {\n *   console.log('No more search pending');\n *   // This is received before the result event if we're not expecting new results\n * });\n *\n * helper.search();\n */\n\n/**\n * Initialize a new AlgoliaSearchHelper\n * @class\n * @classdesc The AlgoliaSearchHelper is a class that ease the management of the\n * search. It provides an event based interface for search callbacks:\n *  - change: when the internal search state is changed.\n *    This event contains a {@link SearchParameters} object and the\n *    {@link SearchResults} of the last result if any.\n *  - search: when a search is triggered using the `search()` method.\n *  - result: when the response is retrieved from Algolia and is processed.\n *    This event contains a {@link SearchResults} object and the\n *    {@link SearchParameters} corresponding to this answer.\n *  - error: when the response is an error. This event contains the error returned by the server.\n * @param  {AlgoliaSearch} client an AlgoliaSearch client\n * @param  {string} index the index name to query\n * @param  {SearchParameters | object} options an object defining the initial\n * config of the search. It doesn't have to be a {SearchParameters},\n * just an object containing the properties you need from it.\n * @param {SearchResultsOptions|object} searchResultsOptions an object defining the options to use when creating the search results.\n */\nfunction AlgoliaSearchHelper(client, index, options, searchResultsOptions) {\n  if (typeof client.addAlgoliaAgent === 'function') {\n    client.addAlgoliaAgent('JS Helper (' + version + ')');\n  }\n\n  this.setClient(client);\n  var opts = options || {};\n  opts.index = index;\n  this.state = SearchParameters.make(opts);\n  this.recommendState = new RecommendParameters({\n    params: opts.recommendState,\n  });\n  this.lastResults = null;\n  this.lastRecommendResults = null;\n  this._queryId = 0;\n  this._recommendQueryId = 0;\n  this._lastQueryIdReceived = -1;\n  this._lastRecommendQueryIdReceived = -1;\n  this.derivedHelpers = [];\n  this._currentNbQueries = 0;\n  this._currentNbRecommendQueries = 0;\n  this._searchResultsOptions = searchResultsOptions;\n  this._recommendCache = {};\n}\n\ninherits(AlgoliaSearchHelper, EventEmitter);\n\n/**\n * Start the search with the parameters set in the state. When the\n * method is called, it triggers a `search` event. The results will\n * be available through the `result` event. If an error occurs, an\n * `error` will be fired instead.\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires search\n * @fires result\n * @fires error\n * @chainable\n */\nAlgoliaSearchHelper.prototype.search = function () {\n  this._search({ onlyWithDerivedHelpers: false });\n  return this;\n};\n\nAlgoliaSearchHelper.prototype.searchOnlyWithDerivedHelpers = function () {\n  this._search({ onlyWithDerivedHelpers: true });\n  return this;\n};\n\nAlgoliaSearchHelper.prototype.searchWithComposition = function () {\n  this._runComposition({ onlyWithDerivedHelpers: true });\n  return this;\n};\n/**\n * Sends the recommendation queries set in the state. When the method is\n * called, it triggers a `fetch` event. The results will be available through\n * the `result` event. If an error occurs, an `error` will be fired instead.\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires fetch\n * @fires result\n * @fires error\n * @chainable\n */\nAlgoliaSearchHelper.prototype.recommend = function () {\n  this._recommend();\n  return this;\n};\n\n/**\n * Gets the search query parameters that would be sent to the Algolia Client\n * for the hits\n * @return {object} Query Parameters\n */\nAlgoliaSearchHelper.prototype.getQuery = function () {\n  var state = this.state;\n  return requestBuilder._getHitsSearchParams(state);\n};\n\n/**\n * Start a search using a modified version of the current state. This method does\n * not trigger the helper lifecycle and does not modify the state kept internally\n * by the helper. This second aspect means that the next search call will be the\n * same as a search call before calling searchOnce.\n * @param {object} options can contain all the parameters that can be set to SearchParameters\n * plus the index\n * @param {function} [cb] optional callback executed when the response from the\n * server is back.\n * @return {promise|undefined} if a callback is passed the method returns undefined\n * otherwise it returns a promise containing an object with two keys :\n *  - content with a SearchResults\n *  - state with the state used for the query as a SearchParameters\n * @example\n * // Changing the number of records returned per page to 1\n * // This example uses the callback API\n * var state = helper.searchOnce({hitsPerPage: 1},\n *   function(error, content, state) {\n *     // if an error occurred it will be passed in error, otherwise its value is null\n *     // content contains the results formatted as a SearchResults\n *     // state is the instance of SearchParameters used for this search\n *   });\n * @example\n * // Changing the number of records returned per page to 1\n * // This example uses the promise API\n * var state1 = helper.searchOnce({hitsPerPage: 1})\n *                 .then(promiseHandler);\n *\n * function promiseHandler(res) {\n *   // res contains\n *   // {\n *   //   content : SearchResults\n *   //   state   : SearchParameters (the one used for this specific search)\n *   // }\n * }\n */\nAlgoliaSearchHelper.prototype.searchOnce = function (options, cb) {\n  var tempState = !options\n    ? this.state\n    : this.state.setQueryParameters(options);\n  var queries = requestBuilder._getQueries(tempState.index, tempState);\n  // eslint-disable-next-line consistent-this\n  var self = this;\n\n  this._currentNbQueries++;\n\n  this.emit('searchOnce', {\n    state: tempState,\n  });\n\n  if (cb) {\n    this.client\n      .search(queries)\n      .then(function (content) {\n        self._currentNbQueries--;\n        if (self._currentNbQueries === 0) {\n          self.emit('searchQueueEmpty');\n        }\n\n        cb(null, new SearchResults(tempState, content.results), tempState);\n      })\n      .catch(function (err) {\n        self._currentNbQueries--;\n        if (self._currentNbQueries === 0) {\n          self.emit('searchQueueEmpty');\n        }\n\n        cb(err, null, tempState);\n      });\n\n    return undefined;\n  }\n\n  return this.client.search(queries).then(\n    function (content) {\n      self._currentNbQueries--;\n      if (self._currentNbQueries === 0) self.emit('searchQueueEmpty');\n      return {\n        content: new SearchResults(tempState, content.results),\n        state: tempState,\n        _originalResponse: content,\n      };\n    },\n    function (e) {\n      self._currentNbQueries--;\n      if (self._currentNbQueries === 0) self.emit('searchQueueEmpty');\n      throw e;\n    }\n  );\n};\n\n/**\n * Start the search for answers with the parameters set in the state.\n * This method returns a promise.\n * @param {Object} options - the options for answers API call\n * @param {string[]} options.attributesForPrediction - Attributes to use for predictions. If empty, `searchableAttributes` is used instead.\n * @param {string[]} options.queryLanguages - The languages in the query. Currently only supports ['en'].\n * @param {number} options.nbHits - Maximum number of answers to retrieve from the Answers Engine. Cannot be greater than 1000.\n *\n * @return {promise} the answer results\n * @deprecated answers is deprecated and will be replaced with new initiatives\n */\nAlgoliaSearchHelper.prototype.findAnswers = function (options) {\n  // eslint-disable-next-line no-console\n  console.warn('[algoliasearch-helper] answers is no longer supported');\n  var state = this.state;\n  var derivedHelper = this.derivedHelpers[0];\n  if (!derivedHelper) {\n    return Promise.resolve([]);\n  }\n  var derivedState = derivedHelper.getModifiedState(state);\n  var data = merge(\n    {\n      attributesForPrediction: options.attributesForPrediction,\n      nbHits: options.nbHits,\n    },\n    {\n      params: omit(requestBuilder._getHitsSearchParams(derivedState), [\n        'attributesToSnippet',\n        'hitsPerPage',\n        'restrictSearchableAttributes',\n        'snippetEllipsisText',\n      ]),\n    }\n  );\n\n  var errorMessage =\n    'search for answers was called, but this client does not have a function client.initIndex(index).findAnswers';\n  if (typeof this.client.initIndex !== 'function') {\n    throw new Error(errorMessage);\n  }\n  var index = this.client.initIndex(derivedState.index);\n  if (typeof index.findAnswers !== 'function') {\n    throw new Error(errorMessage);\n  }\n  return index.findAnswers(derivedState.query, options.queryLanguages, data);\n};\n\n/**\n * Structure of each result when using\n * [`searchForFacetValues()`](reference.html#AlgoliaSearchHelper#searchForFacetValues)\n * @typedef FacetSearchHit\n * @type {object}\n * @property {string} value the facet value\n * @property {string} highlighted the facet value highlighted with the query string\n * @property {number} count number of occurrence of this facet value\n * @property {boolean} isRefined true if the value is already refined\n */\n\n/**\n * Structure of the data resolved by the\n * [`searchForFacetValues()`](reference.html#AlgoliaSearchHelper#searchForFacetValues)\n * promise.\n * @typedef FacetSearchResult\n * @type {object}\n * @property {FacetSearchHit} facetHits the results for this search for facet values\n * @property {number} processingTimeMS time taken by the query inside the engine\n */\n\n/**\n * Search for facet values based on an query and the name of a faceted attribute. This\n * triggers a search and will return a promise. On top of using the query, it also sends\n * the parameters from the state so that the search is narrowed down to only the possible values.\n *\n * See the description of [FacetSearchResult](reference.html#FacetSearchResult)\n * @param {string} facet the name of the faceted attribute\n * @param {string} query the string query for the search\n * @param {number} [maxFacetHits] the maximum number values returned. Should be > 0 and <= 100\n * @param {object} [userState] the set of custom parameters to use on top of the current state. Setting a property to `undefined` removes\n * it in the generated query.\n * @return {promise.<FacetSearchResult>} the results of the search\n */\nAlgoliaSearchHelper.prototype.searchForFacetValues = function (\n  facet,\n  query,\n  maxFacetHits,\n  userState\n) {\n  var clientHasSFFV =\n    typeof this.client.searchForFacetValues === 'function' &&\n    // v5 has a wrong sffv signature\n    typeof this.client.searchForFacets !== 'function';\n  var clientHasInitIndex = typeof this.client.initIndex === 'function';\n  if (\n    !clientHasSFFV &&\n    !clientHasInitIndex &&\n    typeof this.client.search !== 'function'\n  ) {\n    throw new Error(\n      'search for facet values (searchable) was called, but this client does not have a function client.searchForFacetValues or client.initIndex(index).searchForFacetValues'\n    );\n  }\n\n  var state = this.state.setQueryParameters(userState || {});\n  var isDisjunctive = state.isDisjunctiveFacet(facet);\n  var algoliaQuery = requestBuilder.getSearchForFacetQuery(\n    facet,\n    query,\n    maxFacetHits,\n    state\n  );\n\n  this._currentNbQueries++;\n  // eslint-disable-next-line consistent-this\n  var self = this;\n  var searchForFacetValuesPromise;\n  // newer algoliasearch ^3.27.1 - ~4.0.0\n  if (clientHasSFFV) {\n    searchForFacetValuesPromise = this.client.searchForFacetValues([\n      { indexName: state.index, params: algoliaQuery },\n    ]);\n    // algoliasearch < 3.27.1\n  } else if (clientHasInitIndex) {\n    searchForFacetValuesPromise = this.client\n      .initIndex(state.index)\n      .searchForFacetValues(algoliaQuery);\n    // algoliasearch ~5.0.0\n  } else {\n    // @MAJOR only use client.search\n    delete algoliaQuery.facetName;\n    searchForFacetValuesPromise = this.client\n      .search([\n        {\n          type: 'facet',\n          facet: facet,\n          indexName: state.index,\n          params: algoliaQuery,\n        },\n      ])\n      .then(function processResponse(response) {\n        return response.results[0];\n      });\n  }\n\n  this.emit('searchForFacetValues', {\n    state: state,\n    facet: facet,\n    query: query,\n  });\n\n  var hide =\n    (this.lastResults &&\n      this.lastResults.index === state.index &&\n      this.lastResults.renderingContent &&\n      this.lastResults.renderingContent.facetOrdering &&\n      this.lastResults.renderingContent.facetOrdering.values &&\n      this.lastResults.renderingContent.facetOrdering.values[facet] &&\n      this.lastResults.renderingContent.facetOrdering.values[facet].hide) ||\n    [];\n\n  return searchForFacetValuesPromise.then(\n    function addIsRefined(content) {\n      self._currentNbQueries--;\n      if (self._currentNbQueries === 0) self.emit('searchQueueEmpty');\n\n      content = Array.isArray(content) ? content[0] : content;\n\n      content.facetHits = content.facetHits.reduce(function (acc, f) {\n        if (hide.indexOf(f.value) > -1) {\n          return acc;\n        }\n\n        f.escapedValue = escapeFacetValue(f.value);\n        f.isRefined = isDisjunctive\n          ? state.isDisjunctiveFacetRefined(facet, f.escapedValue)\n          : state.isFacetRefined(facet, f.escapedValue);\n\n        acc.push(f);\n        return acc;\n      }, []);\n\n      return content;\n    },\n    function (e) {\n      self._currentNbQueries--;\n      if (self._currentNbQueries === 0) self.emit('searchQueueEmpty');\n      throw e;\n    }\n  );\n};\n\n/**\n * Search for facet values using the Composition API & based on a query and the name of a faceted attribute.\n * This triggers a search and will return a promise. On top of using the query, it also sends\n * the parameters from the state so that the search is narrowed down to only the possible values.\n *\n * See the description of [FacetSearchResult](reference.html#FacetSearchResult)\n * @param {string} facet the name of the faceted attribute\n * @param {string} query the string query for the search\n * @param {number} [maxFacetHits] the maximum number values returned. Should be > 0 and <= 100\n * @param {object} [userState] the set of custom parameters to use on top of the current state. Setting a property to `undefined` removes\n * it in the generated query.\n * @return {promise.<FacetSearchResult>} the results of the search\n */\nAlgoliaSearchHelper.prototype.searchForCompositionFacetValues = function (\n  facet,\n  query,\n  maxFacetHits,\n  userState\n) {\n  if (typeof this.client.searchForFacetValues !== 'function') {\n    throw new Error(\n      'search for facet values (searchable) was called, but this client does not have a function client.searchForFacetValues'\n    );\n  }\n\n  var state = this.state.setQueryParameters(userState || {});\n  var isDisjunctive = state.isDisjunctiveFacet(facet);\n\n  this._currentNbQueries++;\n  // eslint-disable-next-line consistent-this\n  var self = this;\n  var searchForFacetValuesPromise;\n\n  searchForFacetValuesPromise = this.client.searchForFacetValues({\n    compositionID: state.index,\n    facetName: facet,\n    searchForFacetValuesRequest: {\n      params: {\n        query: query,\n        maxFacetHits: maxFacetHits,\n        searchQuery: requestBuilder._getCompositionHitsSearchParams(state),\n      },\n    },\n  });\n\n  this.emit('searchForFacetValues', {\n    state: state,\n    facet: facet,\n    query: query,\n  });\n\n  return searchForFacetValuesPromise.then(\n    function addIsRefined(content) {\n      self._currentNbQueries--;\n      if (self._currentNbQueries === 0) self.emit('searchQueueEmpty');\n\n      content = content.results[0];\n\n      content.facetHits.forEach(function (f) {\n        f.escapedValue = escapeFacetValue(f.value);\n        f.isRefined = isDisjunctive\n          ? state.isDisjunctiveFacetRefined(facet, f.escapedValue)\n          : state.isFacetRefined(facet, f.escapedValue);\n      });\n\n      return content;\n    },\n    function (e) {\n      self._currentNbQueries--;\n      if (self._currentNbQueries === 0) self.emit('searchQueueEmpty');\n      throw e;\n    }\n  );\n};\n\n/**\n * Sets the text query used for the search.\n *\n * This method resets the current page to 0.\n * @param  {string} q the user query\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.setQuery = function (q) {\n  this._change({\n    state: this.state.resetPage().setQuery(q),\n    isPageReset: true,\n  });\n\n  return this;\n};\n\n/**\n * Remove all the types of refinements except tags. A string can be provided to remove\n * only the refinements of a specific attribute. For more advanced use case, you can\n * provide a function instead. This function should follow the\n * [clearCallback definition](#SearchParameters.clearCallback).\n *\n * This method resets the current page to 0.\n * @param {string} [name] optional name of the facet / attribute on which we want to remove all refinements\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n * @example\n * // Removing all the refinements\n * helper.clearRefinements().search();\n * @example\n * // Removing all the filters on a the category attribute.\n * helper.clearRefinements('category').search();\n * @example\n * // Removing only the exclude filters on the category facet.\n * helper.clearRefinements(function(value, attribute, type) {\n *   return type === 'exclude' && attribute === 'category';\n * }).search();\n */\nAlgoliaSearchHelper.prototype.clearRefinements = function (name) {\n  this._change({\n    state: this.state.resetPage().clearRefinements(name),\n    isPageReset: true,\n  });\n\n  return this;\n};\n\n/**\n * Remove all the tag filters.\n *\n * This method resets the current page to 0.\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.clearTags = function () {\n  this._change({\n    state: this.state.resetPage().clearTags(),\n    isPageReset: true,\n  });\n\n  return this;\n};\n\n/**\n * Adds a disjunctive filter to a faceted attribute with the `value` provided. If the\n * filter is already set, it doesn't change the filters.\n *\n * This method resets the current page to 0.\n * @param  {string} facet the facet to refine\n * @param  {string} value the associated value (will be converted to string)\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.addDisjunctiveFacetRefinement = function (\n  facet,\n  value\n) {\n  this._change({\n    state: this.state.resetPage().addDisjunctiveFacetRefinement(facet, value),\n    isPageReset: true,\n  });\n\n  return this;\n};\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#addDisjunctiveFacetRefinement}\n */\nAlgoliaSearchHelper.prototype.addDisjunctiveRefine = function () {\n  return this.addDisjunctiveFacetRefinement.apply(this, arguments);\n};\n\n/**\n * Adds a refinement on a hierarchical facet. It will throw\n * an exception if the facet is not defined or if the facet\n * is already refined.\n *\n * This method resets the current page to 0.\n * @param {string} facet the facet name\n * @param {string} path the hierarchical facet path\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @throws Error if the facet is not defined or if the facet is refined\n * @chainable\n * @fires change\n */\nAlgoliaSearchHelper.prototype.addHierarchicalFacetRefinement = function (\n  facet,\n  path\n) {\n  this._change({\n    state: this.state.resetPage().addHierarchicalFacetRefinement(facet, path),\n    isPageReset: true,\n  });\n\n  return this;\n};\n\n/**\n * Adds a an numeric filter to an attribute with the `operator` and `value` provided. If the\n * filter is already set, it doesn't change the filters.\n *\n * This method resets the current page to 0.\n * @param  {string} attribute the attribute on which the numeric filter applies\n * @param  {string} operator the operator of the filter\n * @param  {number} value the value of the filter\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.addNumericRefinement = function (\n  attribute,\n  operator,\n  value\n) {\n  this._change({\n    state: this.state\n      .resetPage()\n      .addNumericRefinement(attribute, operator, value),\n    isPageReset: true,\n  });\n\n  return this;\n};\n\n/**\n * Adds a filter to a faceted attribute with the `value` provided. If the\n * filter is already set, it doesn't change the filters.\n *\n * This method resets the current page to 0.\n * @param  {string} facet the facet to refine\n * @param  {string} value the associated value (will be converted to string)\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.addFacetRefinement = function (facet, value) {\n  this._change({\n    state: this.state.resetPage().addFacetRefinement(facet, value),\n    isPageReset: true,\n  });\n\n  return this;\n};\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#addFacetRefinement}\n */\nAlgoliaSearchHelper.prototype.addRefine = function () {\n  return this.addFacetRefinement.apply(this, arguments);\n};\n\n/**\n * Adds a an exclusion filter to a faceted attribute with the `value` provided. If the\n * filter is already set, it doesn't change the filters.\n *\n * This method resets the current page to 0.\n * @param  {string} facet the facet to refine\n * @param  {string} value the associated value (will be converted to string)\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.addFacetExclusion = function (facet, value) {\n  this._change({\n    state: this.state.resetPage().addExcludeRefinement(facet, value),\n    isPageReset: true,\n  });\n\n  return this;\n};\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#addFacetExclusion}\n */\nAlgoliaSearchHelper.prototype.addExclude = function () {\n  return this.addFacetExclusion.apply(this, arguments);\n};\n\n/**\n * Adds a tag filter with the `tag` provided. If the\n * filter is already set, it doesn't change the filters.\n *\n * This method resets the current page to 0.\n * @param {string} tag the tag to add to the filter\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.addTag = function (tag) {\n  this._change({\n    state: this.state.resetPage().addTagRefinement(tag),\n    isPageReset: true,\n  });\n\n  return this;\n};\n\n/**\n * Adds a \"frequently bought together\" recommendation query.\n *\n * @param {FrequentlyBoughtTogetherQuery} params the parameters for the recommendation\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.addFrequentlyBoughtTogether = function (params) {\n  this._recommendChange({\n    state: this.recommendState.addFrequentlyBoughtTogether(params),\n  });\n\n  return this;\n};\n\n/**\n * Adds a \"related products\" recommendation query.\n *\n * @param {RelatedProductsQuery} params the parameters for the recommendation\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.addRelatedProducts = function (params) {\n  this._recommendChange({\n    state: this.recommendState.addRelatedProducts(params),\n  });\n\n  return this;\n};\n\n/**\n * Adds a \"trending items\" recommendation query.\n *\n * @param {TrendingItemsQuery} params the parameters for the recommendation\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.addTrendingItems = function (params) {\n  this._recommendChange({\n    state: this.recommendState.addTrendingItems(params),\n  });\n\n  return this;\n};\n\n/**\n * Adds a \"trending facets\" recommendation query.\n *\n * @param {TrendingFacetsQuery} params the parameters for the recommendation\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.addTrendingFacets = function (params) {\n  this._recommendChange({\n    state: this.recommendState.addTrendingFacets(params),\n  });\n\n  return this;\n};\n\n/**\n * Adds a \"looking similar\" recommendation query.\n *\n * @param {LookingSimilarQuery} params the parameters for the recommendation\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.addLookingSimilar = function (params) {\n  this._recommendChange({\n    state: this.recommendState.addLookingSimilar(params),\n  });\n\n  return this;\n};\n\n/**\n * Removes an numeric filter to an attribute with the `operator` and `value` provided. If the\n * filter is not set, it doesn't change the filters.\n *\n * Some parameters are optional, triggering different behavior:\n *  - if the value is not provided, then all the numeric value will be removed for the\n *  specified attribute/operator couple.\n *  - if the operator is not provided either, then all the numeric filter on this attribute\n *  will be removed.\n *\n * This method resets the current page to 0.\n * @param  {string} attribute the attribute on which the numeric filter applies\n * @param  {string} [operator] the operator of the filter\n * @param  {number} [value] the value of the filter\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.removeNumericRefinement = function (\n  attribute,\n  operator,\n  value\n) {\n  this._change({\n    state: this.state\n      .resetPage()\n      .removeNumericRefinement(attribute, operator, value),\n    isPageReset: true,\n  });\n\n  return this;\n};\n\n/**\n * Removes a disjunctive filter to a faceted attribute with the `value` provided. If the\n * filter is not set, it doesn't change the filters.\n *\n * If the value is omitted, then this method will remove all the filters for the\n * attribute.\n *\n * This method resets the current page to 0.\n * @param  {string} facet the facet to refine\n * @param  {string} [value] the associated value\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.removeDisjunctiveFacetRefinement = function (\n  facet,\n  value\n) {\n  this._change({\n    state: this.state\n      .resetPage()\n      .removeDisjunctiveFacetRefinement(facet, value),\n    isPageReset: true,\n  });\n\n  return this;\n};\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#removeDisjunctiveFacetRefinement}\n */\nAlgoliaSearchHelper.prototype.removeDisjunctiveRefine = function () {\n  return this.removeDisjunctiveFacetRefinement.apply(this, arguments);\n};\n\n/**\n * Removes the refinement set on a hierarchical facet.\n * @param {string} facet the facet name\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @throws Error if the facet is not defined or if the facet is not refined\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.removeHierarchicalFacetRefinement = function (\n  facet\n) {\n  this._change({\n    state: this.state.resetPage().removeHierarchicalFacetRefinement(facet),\n    isPageReset: true,\n  });\n\n  return this;\n};\n\n/**\n * Removes a filter to a faceted attribute with the `value` provided. If the\n * filter is not set, it doesn't change the filters.\n *\n * If the value is omitted, then this method will remove all the filters for the\n * attribute.\n *\n * This method resets the current page to 0.\n * @param  {string} facet the facet to refine\n * @param  {string} [value] the associated value\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.removeFacetRefinement = function (facet, value) {\n  this._change({\n    state: this.state.resetPage().removeFacetRefinement(facet, value),\n    isPageReset: true,\n  });\n\n  return this;\n};\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#removeFacetRefinement}\n */\nAlgoliaSearchHelper.prototype.removeRefine = function () {\n  return this.removeFacetRefinement.apply(this, arguments);\n};\n\n/**\n * Removes an exclusion filter to a faceted attribute with the `value` provided. If the\n * filter is not set, it doesn't change the filters.\n *\n * If the value is omitted, then this method will remove all the filters for the\n * attribute.\n *\n * This method resets the current page to 0.\n * @param  {string} facet the facet to refine\n * @param  {string} [value] the associated value\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.removeFacetExclusion = function (facet, value) {\n  this._change({\n    state: this.state.resetPage().removeExcludeRefinement(facet, value),\n    isPageReset: true,\n  });\n\n  return this;\n};\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#removeFacetExclusion}\n */\nAlgoliaSearchHelper.prototype.removeExclude = function () {\n  return this.removeFacetExclusion.apply(this, arguments);\n};\n\n/**\n * Removes a tag filter with the `tag` provided. If the\n * filter is not set, it doesn't change the filters.\n *\n * This method resets the current page to 0.\n * @param {string} tag tag to remove from the filter\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.removeTag = function (tag) {\n  this._change({\n    state: this.state.resetPage().removeTagRefinement(tag),\n    isPageReset: true,\n  });\n\n  return this;\n};\n\n/**\n * Removes a \"frequently bought together\" recommendation query.\n *\n * @param {number} id identifier of the recommendation widget\n * @returns {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.removeFrequentlyBoughtTogether = function (id) {\n  this._recommendChange({\n    state: this.recommendState.removeParams(id),\n  });\n\n  return this;\n};\n\n/**\n * Removes a \"related products\" recommendation query.\n *\n * @param {number} id identifier of the recommendation widget\n * @returns {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.removeRelatedProducts = function (id) {\n  this._recommendChange({\n    state: this.recommendState.removeParams(id),\n  });\n\n  return this;\n};\n\n/**\n * Removes a \"trending items\" recommendation query.\n *\n * @param {number} id identifier of the recommendation widget\n * @returns {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.removeTrendingItems = function (id) {\n  this._recommendChange({\n    state: this.recommendState.removeParams(id),\n  });\n\n  return this;\n};\n\n/**\n * Removes a \"trending facets\" recommendation query.\n *\n * @param {number} id identifier of the recommendation widget\n * @returns {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.removeTrendingFacets = function (id) {\n  this._recommendChange({\n    state: this.recommendState.removeParams(id),\n  });\n\n  return this;\n};\n\n/**\n * Removes a \"looking similar\" recommendation query.\n *\n * @param {number} id identifier of the recommendation widget\n * @returns {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.removeLookingSimilar = function (id) {\n  this._recommendChange({\n    state: this.recommendState.removeParams(id),\n  });\n\n  return this;\n};\n\n/**\n * Adds or removes an exclusion filter to a faceted attribute with the `value` provided. If\n * the value is set then it removes it, otherwise it adds the filter.\n *\n * This method resets the current page to 0.\n * @param  {string} facet the facet to refine\n * @param  {string} value the associated value\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.toggleFacetExclusion = function (facet, value) {\n  this._change({\n    state: this.state.resetPage().toggleExcludeFacetRefinement(facet, value),\n    isPageReset: true,\n  });\n\n  return this;\n};\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#toggleFacetExclusion}\n */\nAlgoliaSearchHelper.prototype.toggleExclude = function () {\n  return this.toggleFacetExclusion.apply(this, arguments);\n};\n\n/**\n * Adds or removes a filter to a faceted attribute with the `value` provided. If\n * the value is set then it removes it, otherwise it adds the filter.\n *\n * This method can be used for conjunctive, disjunctive and hierarchical filters.\n *\n * This method resets the current page to 0.\n * @param  {string} facet the facet to refine\n * @param  {string} value the associated value\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @throws Error will throw an error if the facet is not declared in the settings of the helper\n * @fires change\n * @chainable\n * @deprecated since version 2.19.0, see {@link AlgoliaSearchHelper#toggleFacetRefinement}\n */\nAlgoliaSearchHelper.prototype.toggleRefinement = function (facet, value) {\n  return this.toggleFacetRefinement(facet, value);\n};\n\n/**\n * Adds or removes a filter to a faceted attribute with the `value` provided. If\n * the value is set then it removes it, otherwise it adds the filter.\n *\n * This method can be used for conjunctive, disjunctive and hierarchical filters.\n *\n * This method resets the current page to 0.\n * @param  {string} facet the facet to refine\n * @param  {string} value the associated value\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @throws Error will throw an error if the facet is not declared in the settings of the helper\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.toggleFacetRefinement = function (facet, value) {\n  this._change({\n    state: this.state.resetPage().toggleFacetRefinement(facet, value),\n    isPageReset: true,\n  });\n\n  return this;\n};\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#toggleFacetRefinement}\n */\nAlgoliaSearchHelper.prototype.toggleRefine = function () {\n  return this.toggleFacetRefinement.apply(this, arguments);\n};\n\n/**\n * Adds or removes a tag filter with the `value` provided. If\n * the value is set then it removes it, otherwise it adds the filter.\n *\n * This method resets the current page to 0.\n * @param {string} tag tag to remove or add\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.toggleTag = function (tag) {\n  this._change({\n    state: this.state.resetPage().toggleTagRefinement(tag),\n    isPageReset: true,\n  });\n\n  return this;\n};\n\n/**\n * Increments the page number by one.\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n * @example\n * helper.setPage(0).nextPage().getPage();\n * // returns 1\n */\nAlgoliaSearchHelper.prototype.nextPage = function () {\n  var page = this.state.page || 0;\n  return this.setPage(page + 1);\n};\n\n/**\n * Decrements the page number by one.\n * @fires change\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @chainable\n * @example\n * helper.setPage(1).previousPage().getPage();\n * // returns 0\n */\nAlgoliaSearchHelper.prototype.previousPage = function () {\n  var page = this.state.page || 0;\n  return this.setPage(page - 1);\n};\n\n/**\n * @private\n * @param {number} page The page number\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @chainable\n * @fires change\n */\nfunction setCurrentPage(page) {\n  if (page < 0) throw new Error('Page requested below 0.');\n\n  this._change({\n    state: this.state.setPage(page),\n    isPageReset: false,\n  });\n\n  return this;\n}\n\n/**\n * Change the current page\n * @deprecated\n * @param  {number} page The page number\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.setCurrentPage = setCurrentPage;\n\n/**\n * Updates the current page.\n * @function\n * @param  {number} page The page number\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.setPage = setCurrentPage;\n\n/**\n * Updates the name of the index that will be targeted by the query.\n *\n * This method resets the current page to 0.\n * @param {string} name the index name\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.setIndex = function (name) {\n  this._change({\n    state: this.state.resetPage().setIndex(name),\n    isPageReset: true,\n  });\n\n  return this;\n};\n\n/**\n * Update a parameter of the search. This method reset the page\n *\n * The complete list of parameters is available on the\n * [Algolia website](https://www.algolia.com/doc/rest#query-an-index).\n * The most commonly used parameters have their own [shortcuts](#query-parameters-shortcuts)\n * or benefit from higher-level APIs (all the kind of filters and facets have their own API)\n *\n * This method resets the current page to 0.\n * @param {string} parameter name of the parameter to update\n * @param {any} value new value of the parameter\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n * @example\n * helper.setQueryParameter('hitsPerPage', 20).search();\n */\nAlgoliaSearchHelper.prototype.setQueryParameter = function (parameter, value) {\n  this._change({\n    state: this.state.resetPage().setQueryParameter(parameter, value),\n    isPageReset: true,\n  });\n\n  return this;\n};\n\n/**\n * Set the whole state (warning: will erase previous state)\n * @param {SearchParameters} newState the whole new state\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.setState = function (newState) {\n  this._change({\n    state: SearchParameters.make(newState),\n    isPageReset: false,\n  });\n\n  return this;\n};\n\n/**\n * Override the current state without triggering a change event.\n * Do not use this method unless you know what you are doing. (see the example\n * for a legit use case)\n * @param {SearchParameters} newState the whole new state\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @example\n *  helper.on('change', function(state){\n *    // In this function you might want to find a way to store the state in the url/history\n *    updateYourURL(state)\n *  })\n *  window.onpopstate = function(event){\n *    // This is naive though as you should check if the state is really defined etc.\n *    helper.overrideStateWithoutTriggeringChangeEvent(event.state).search()\n *  }\n * @chainable\n */\nAlgoliaSearchHelper.prototype.overrideStateWithoutTriggeringChangeEvent =\n  function (newState) {\n    this.state = new SearchParameters(newState);\n    return this;\n  };\n\n/**\n * Check if an attribute has any numeric, conjunctive, disjunctive or hierarchical filters.\n * @param {string} attribute the name of the attribute\n * @return {boolean} true if the attribute is filtered by at least one value\n * @example\n * // hasRefinements works with numeric, conjunctive, disjunctive and hierarchical filters\n * helper.hasRefinements('price'); // false\n * helper.addNumericRefinement('price', '>', 100);\n * helper.hasRefinements('price'); // true\n *\n * helper.hasRefinements('color'); // false\n * helper.addFacetRefinement('color', 'blue');\n * helper.hasRefinements('color'); // true\n *\n * helper.hasRefinements('material'); // false\n * helper.addDisjunctiveFacetRefinement('material', 'plastic');\n * helper.hasRefinements('material'); // true\n *\n * helper.hasRefinements('categories'); // false\n * helper.toggleFacetRefinement('categories', 'kitchen > knife');\n * helper.hasRefinements('categories'); // true\n *\n */\nAlgoliaSearchHelper.prototype.hasRefinements = function (attribute) {\n  if (objectHasKeys(this.state.getNumericRefinements(attribute))) {\n    return true;\n  } else if (this.state.isConjunctiveFacet(attribute)) {\n    return this.state.isFacetRefined(attribute);\n  } else if (this.state.isDisjunctiveFacet(attribute)) {\n    return this.state.isDisjunctiveFacetRefined(attribute);\n  } else if (this.state.isHierarchicalFacet(attribute)) {\n    return this.state.isHierarchicalFacetRefined(attribute);\n  }\n\n  // there's currently no way to know that the user did call `addNumericRefinement` at some point\n  // thus we cannot distinguish if there once was a numeric refinement that was cleared\n  // so we will return false in every other situations to be consistent\n  // while what we should do here is throw because we did not find the attribute in any type\n  // of refinement\n  return false;\n};\n\n/**\n * Check if a value is excluded for a specific faceted attribute. If the value\n * is omitted then the function checks if there is any excluding refinements.\n *\n * @param  {string}  facet name of the attribute for used for faceting\n * @param  {string}  [value] optional value. If passed will test that this value\n * is filtering the given facet.\n * @return {boolean} true if refined\n * @example\n * helper.isExcludeRefined('color'); // false\n * helper.isExcludeRefined('color', 'blue') // false\n * helper.isExcludeRefined('color', 'red') // false\n *\n * helper.addFacetExclusion('color', 'red');\n *\n * helper.isExcludeRefined('color'); // true\n * helper.isExcludeRefined('color', 'blue') // false\n * helper.isExcludeRefined('color', 'red') // true\n */\nAlgoliaSearchHelper.prototype.isExcluded = function (facet, value) {\n  return this.state.isExcludeRefined(facet, value);\n};\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * @deprecated since 2.4.0, see {@link AlgoliaSearchHelper#hasRefinements}\n */\nAlgoliaSearchHelper.prototype.isDisjunctiveRefined = function (facet, value) {\n  return this.state.isDisjunctiveFacetRefined(facet, value);\n};\n\n/**\n * Check if the string is a currently filtering tag.\n * @param {string} tag tag to check\n * @return {boolean} true if the tag is currently refined\n */\nAlgoliaSearchHelper.prototype.hasTag = function (tag) {\n  return this.state.isTagRefined(tag);\n};\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * @deprecated since 2.4.0, see {@link AlgoliaSearchHelper#hasTag}\n */\nAlgoliaSearchHelper.prototype.isTagRefined = function () {\n  return this.hasTagRefinements.apply(this, arguments);\n};\n\n/**\n * Get the name of the currently used index.\n * @return {string} name of the index\n * @example\n * helper.setIndex('highestPrice_products').getIndex();\n * // returns 'highestPrice_products'\n */\nAlgoliaSearchHelper.prototype.getIndex = function () {\n  return this.state.index;\n};\n\nfunction getCurrentPage() {\n  return this.state.page;\n}\n\n/**\n * Get the currently selected page\n * @deprecated\n * @return {number} the current page\n */\nAlgoliaSearchHelper.prototype.getCurrentPage = getCurrentPage;\n/**\n * Get the currently selected page\n * @function\n * @return {number} the current page\n */\nAlgoliaSearchHelper.prototype.getPage = getCurrentPage;\n\n/**\n * Get all the tags currently set to filters the results.\n *\n * @return {string[]} The list of tags currently set.\n */\nAlgoliaSearchHelper.prototype.getTags = function () {\n  return this.state.tagRefinements;\n};\n\n/**\n * Get the list of refinements for a given attribute. This method works with\n * conjunctive, disjunctive, excluding and numerical filters.\n *\n * See also SearchResults#getRefinements\n *\n * @param {string} facetName attribute name used for faceting\n * @return {Array.<FacetRefinement|NumericRefinement>} All Refinement are objects that contain a value, and\n * a type. Numeric also contains an operator.\n * @example\n * helper.addNumericRefinement('price', '>', 100);\n * helper.getRefinements('price');\n * // [\n * //   {\n * //     \"value\": [\n * //       100\n * //     ],\n * //     \"operator\": \">\",\n * //     \"type\": \"numeric\"\n * //   }\n * // ]\n * @example\n * helper.addFacetRefinement('color', 'blue');\n * helper.addFacetExclusion('color', 'red');\n * helper.getRefinements('color');\n * // [\n * //   {\n * //     \"value\": \"blue\",\n * //     \"type\": \"conjunctive\"\n * //   },\n * //   {\n * //     \"value\": \"red\",\n * //     \"type\": \"exclude\"\n * //   }\n * // ]\n * @example\n * helper.addDisjunctiveFacetRefinement('material', 'plastic');\n * // [\n * //   {\n * //     \"value\": \"plastic\",\n * //     \"type\": \"disjunctive\"\n * //   }\n * // ]\n */\nAlgoliaSearchHelper.prototype.getRefinements = function (facetName) {\n  var refinements = [];\n\n  if (this.state.isConjunctiveFacet(facetName)) {\n    var conjRefinements = this.state.getConjunctiveRefinements(facetName);\n\n    conjRefinements.forEach(function (r) {\n      refinements.push({\n        value: r,\n        type: 'conjunctive',\n      });\n    });\n\n    var excludeRefinements = this.state.getExcludeRefinements(facetName);\n\n    excludeRefinements.forEach(function (r) {\n      refinements.push({\n        value: r,\n        type: 'exclude',\n      });\n    });\n  } else if (this.state.isDisjunctiveFacet(facetName)) {\n    var disjunctiveRefinements =\n      this.state.getDisjunctiveRefinements(facetName);\n\n    disjunctiveRefinements.forEach(function (r) {\n      refinements.push({\n        value: r,\n        type: 'disjunctive',\n      });\n    });\n  }\n\n  var numericRefinements = this.state.getNumericRefinements(facetName);\n\n  Object.keys(numericRefinements).forEach(function (operator) {\n    var value = numericRefinements[operator];\n\n    refinements.push({\n      value: value,\n      operator: operator,\n      type: 'numeric',\n    });\n  });\n\n  return refinements;\n};\n\n/**\n * Return the current refinement for the (attribute, operator)\n * @param {string} attribute attribute in the record\n * @param {string} operator operator applied on the refined values\n * @return {Array.<number|number[]>} refined values\n */\nAlgoliaSearchHelper.prototype.getNumericRefinement = function (\n  attribute,\n  operator\n) {\n  return this.state.getNumericRefinement(attribute, operator);\n};\n\n/**\n * Get the current breadcrumb for a hierarchical facet, as an array\n * @param  {string} facetName Hierarchical facet name\n * @return {array.<string>} the path as an array of string\n */\nAlgoliaSearchHelper.prototype.getHierarchicalFacetBreadcrumb = function (\n  facetName\n) {\n  return this.state.getHierarchicalFacetBreadcrumb(facetName);\n};\n\n// /////////// PRIVATE\n\n/**\n * Perform the underlying queries\n * @private\n * @param {object} options options for the query\n * @param {boolean} [options.onlyWithDerivedHelpers=false] if true, only the derived helpers will be queried\n * @return {undefined} does not return anything\n * @fires search\n * @fires result\n * @fires error\n */\nAlgoliaSearchHelper.prototype._search = function (options) {\n  var state = this.state;\n  var states = [];\n  var mainQueries = [];\n\n  if (!options.onlyWithDerivedHelpers) {\n    mainQueries = requestBuilder._getQueries(state.index, state);\n\n    states.push({\n      state: state,\n      queriesCount: mainQueries.length,\n      helper: this,\n    });\n\n    this.emit('search', {\n      state: state,\n      results: this.lastResults,\n    });\n  }\n\n  var derivedQueries = this.derivedHelpers.map(function (derivedHelper) {\n    var derivedState = derivedHelper.getModifiedState(state);\n    var derivedStateQueries = derivedState.index\n      ? requestBuilder._getQueries(derivedState.index, derivedState)\n      : [];\n\n    states.push({\n      state: derivedState,\n      queriesCount: derivedStateQueries.length,\n      helper: derivedHelper,\n    });\n\n    derivedHelper.emit('search', {\n      state: derivedState,\n      results: derivedHelper.lastResults,\n    });\n\n    return derivedStateQueries;\n  });\n\n  var queries = Array.prototype.concat.apply(mainQueries, derivedQueries);\n\n  var queryId = this._queryId++;\n  this._currentNbQueries++;\n\n  if (!queries.length) {\n    return Promise.resolve({ results: [] }).then(\n      this._dispatchAlgoliaResponse.bind(this, states, queryId)\n    );\n  }\n\n  try {\n    this.client\n      .search(queries)\n      .then(this._dispatchAlgoliaResponse.bind(this, states, queryId))\n      .catch(this._dispatchAlgoliaError.bind(this, queryId));\n  } catch (error) {\n    // If we reach this part, we're in an internal error state\n    this.emit('error', {\n      error: error,\n    });\n  }\n\n  return undefined;\n};\n\n/**\n * Perform the underlying queries\n * @private\n * @param {boolean} [options.onlyWithDerivedHelpers=false] if true, only the derived helpers will be queried\n * @return {undefined} does not return anything\n * @fires search\n * @fires result\n * @fires error\n */\nAlgoliaSearchHelper.prototype._runComposition = function () {\n  var state = this.state;\n  var states = [];\n  var mainQueries = [];\n\n  var derivedQueries = this.derivedHelpers.map(function (derivedHelper) {\n    var derivedState = derivedHelper.getModifiedState(state);\n    var derivedStateQueries =\n      requestBuilder._getCompositionQueries(derivedState);\n\n    states.push({\n      state: derivedState,\n      queriesCount: derivedStateQueries.length,\n      helper: derivedHelper,\n    });\n\n    derivedHelper.emit('search', {\n      state: derivedState,\n      results: derivedHelper.lastResults,\n    });\n\n    return derivedStateQueries;\n  });\n\n  var queries = Array.prototype.concat.apply(mainQueries, derivedQueries);\n\n  var queryId = this._queryId++;\n  this._currentNbQueries++;\n\n  if (!queries.length) {\n    return Promise.resolve({ results: [] }).then(\n      this._dispatchAlgoliaResponse.bind(this, states, queryId)\n    );\n  }\n\n  if (queries.length > 1) {\n    throw new Error('Only one query is allowed when using a composition.');\n  }\n\n  var query = queries[0];\n\n  try {\n    this.client\n      .search(query)\n      .then(this._dispatchAlgoliaResponse.bind(this, states, queryId))\n      .catch(this._dispatchAlgoliaError.bind(this, queryId));\n  } catch (error) {\n    // If we reach this part, we're in an internal error state\n    this.emit('error', {\n      error: error,\n    });\n  }\n\n  return undefined;\n};\n\nAlgoliaSearchHelper.prototype._recommend = function () {\n  var searchState = this.state;\n  var recommendState = this.recommendState;\n  var index = this.getIndex();\n  var states = [{ state: recommendState, index: index, helper: this }];\n  var ids = recommendState.params.map(function (param) {\n    return param.$$id;\n  });\n\n  this.emit('fetch', {\n    recommend: {\n      state: recommendState,\n      results: this.lastRecommendResults,\n    },\n  });\n\n  var cache = this._recommendCache;\n\n  var derivedQueries = this.derivedHelpers.map(function (derivedHelper) {\n    var derivedIndex = derivedHelper.getModifiedState(searchState).index;\n    if (!derivedIndex) {\n      return [];\n    }\n\n    // Contrary to what is done when deriving the search state, we don't want to\n    // provide the current recommend state to the derived helper, as it would\n    // inherit unwanted queries. We instead provide an empty recommend state.\n    var derivedState = derivedHelper.getModifiedRecommendState(\n      new RecommendParameters()\n    );\n    states.push({\n      state: derivedState,\n      index: derivedIndex,\n      helper: derivedHelper,\n    });\n\n    ids = Array.prototype.concat.apply(\n      ids,\n      derivedState.params.map(function (param) {\n        return param.$$id;\n      })\n    );\n\n    derivedHelper.emit('fetch', {\n      recommend: {\n        state: derivedState,\n        results: derivedHelper.lastRecommendResults,\n      },\n    });\n\n    return derivedState._buildQueries(derivedIndex, cache);\n  });\n\n  var queries = Array.prototype.concat.apply(\n    this.recommendState._buildQueries(index, cache),\n    derivedQueries\n  );\n\n  if (queries.length === 0) {\n    return;\n  }\n\n  if (\n    queries.length > 0 &&\n    typeof this.client.getRecommendations === 'undefined'\n  ) {\n    // eslint-disable-next-line no-console\n    console.warn(\n      'Please update algoliasearch/lite to the latest version in order to use recommend widgets.'\n    );\n    return;\n  }\n\n  var queryId = this._recommendQueryId++;\n  this._currentNbRecommendQueries++;\n\n  try {\n    this.client\n      .getRecommendations(queries)\n      .then(this._dispatchRecommendResponse.bind(this, queryId, states, ids))\n      .catch(this._dispatchRecommendError.bind(this, queryId));\n  } catch (error) {\n    // If we reach this part, we're in an internal error state\n    this.emit('error', {\n      error: error,\n    });\n  }\n\n  return;\n};\n\n/**\n * Transform the responses as sent by the server and transform them into a user\n * usable object that merge the results of all the batch requests. It will dispatch\n * over the different helper + derived helpers (when there are some).\n * @private\n * @param {array.<{SearchParameters, AlgoliaQueries, AlgoliaSearchHelper}>} states state used to generate the request\n * @param {number} queryId id of the current request\n * @param {object} content content of the response\n * @return {undefined}\n */\nAlgoliaSearchHelper.prototype._dispatchAlgoliaResponse = function (\n  states,\n  queryId,\n  content\n) {\n  // eslint-disable-next-line consistent-this\n  var self = this;\n\n  // @TODO remove the number of outdated queries discarded instead of just one\n\n  if (queryId < this._lastQueryIdReceived) {\n    // Outdated answer\n    return;\n  }\n\n  this._currentNbQueries -= queryId - this._lastQueryIdReceived;\n  this._lastQueryIdReceived = queryId;\n\n  if (this._currentNbQueries === 0) this.emit('searchQueueEmpty');\n\n  var results = content.results.slice();\n  var rawContent = Object.keys(content).reduce(function (value, key) {\n    if (key !== 'results') value[key] = content[key];\n    return value;\n  }, {});\n\n  if (Object.keys(rawContent).length <= 0) {\n    rawContent = undefined;\n  }\n\n  states.forEach(function (s) {\n    var state = s.state;\n    var queriesCount = s.queriesCount;\n    var helper = s.helper;\n    var specificResults = results.splice(0, queriesCount);\n\n    if (!state.index) {\n      helper.emit('result', {\n        results: null,\n        state: state,\n      });\n      return;\n    }\n\n    helper.lastResults = new SearchResults(\n      state,\n      specificResults,\n      self._searchResultsOptions\n    );\n    if (rawContent !== undefined) helper.lastResults._rawContent = rawContent;\n\n    helper.emit('result', {\n      results: helper.lastResults,\n      state: state,\n    });\n  });\n};\n\nAlgoliaSearchHelper.prototype._dispatchRecommendResponse = function (\n  queryId,\n  states,\n  ids,\n  content\n) {\n  // @TODO remove the number of outdated queries discarded instead of just one\n\n  if (queryId < this._lastRecommendQueryIdReceived) {\n    // Outdated answer\n    return;\n  }\n\n  this._currentNbRecommendQueries -=\n    queryId - this._lastRecommendQueryIdReceived;\n  this._lastRecommendQueryIdReceived = queryId;\n\n  if (this._currentNbRecommendQueries === 0) this.emit('recommendQueueEmpty');\n\n  var cache = this._recommendCache;\n\n  var idsMap = {};\n  ids\n    .filter(function (id) {\n      return cache[id] === undefined;\n    })\n    .forEach(function (id, index) {\n      if (!idsMap[id]) idsMap[id] = [];\n\n      idsMap[id].push(index);\n    });\n\n  Object.keys(idsMap).forEach(function (id) {\n    var indices = idsMap[id];\n    var firstResult = content.results[indices[0]];\n    if (indices.length === 1) {\n      cache[id] = firstResult;\n      return;\n    }\n    cache[id] = Object.assign({}, firstResult, {\n      hits: sortAndMergeRecommendations(\n        ids,\n        indices.map(function (idx) {\n          return content.results[idx].hits;\n        })\n      ),\n    });\n  });\n\n  var results = {};\n  ids.forEach(function (id) {\n    results[id] = cache[id];\n  });\n\n  states.forEach(function (s) {\n    var state = s.state;\n    var helper = s.helper;\n\n    if (!s.index) {\n      // eslint-disable-next-line no-warning-comments\n      // TODO: emit \"result\" event when events for Recommend are implemented\n      helper.emit('recommend:result', {\n        results: null,\n        state: state,\n      });\n      return;\n    }\n\n    helper.lastRecommendResults = new RecommendResults(state, results);\n\n    // eslint-disable-next-line no-warning-comments\n    // TODO: emit \"result\" event when events for Recommend are implemented\n    helper.emit('recommend:result', {\n      recommend: {\n        results: helper.lastRecommendResults,\n        state: state,\n      },\n    });\n  });\n};\n\nAlgoliaSearchHelper.prototype._dispatchAlgoliaError = function (\n  queryId,\n  error\n) {\n  if (queryId < this._lastQueryIdReceived) {\n    // Outdated answer\n    return;\n  }\n\n  this._currentNbQueries -= queryId - this._lastQueryIdReceived;\n  this._lastQueryIdReceived = queryId;\n\n  this.emit('error', {\n    error: error,\n  });\n\n  if (this._currentNbQueries === 0) this.emit('searchQueueEmpty');\n};\n\nAlgoliaSearchHelper.prototype._dispatchRecommendError = function (\n  queryId,\n  error\n) {\n  if (queryId < this._lastRecommendQueryIdReceived) {\n    // Outdated answer\n    return;\n  }\n\n  this._currentNbRecommendQueries -=\n    queryId - this._lastRecommendQueryIdReceived;\n  this._lastRecommendQueryIdReceived = queryId;\n\n  this.emit('error', {\n    error: error,\n  });\n\n  if (this._currentNbRecommendQueries === 0) this.emit('recommendQueueEmpty');\n};\n\nAlgoliaSearchHelper.prototype.containsRefinement = function (\n  query,\n  facetFilters,\n  numericFilters,\n  tagFilters\n) {\n  return (\n    query ||\n    facetFilters.length !== 0 ||\n    numericFilters.length !== 0 ||\n    tagFilters.length !== 0\n  );\n};\n\n/**\n * Test if there are some disjunctive refinements on the facet\n * @private\n * @param {string} facet the attribute to test\n * @return {boolean} true if there are refinements on this attribute\n */\nAlgoliaSearchHelper.prototype._hasDisjunctiveRefinements = function (facet) {\n  return (\n    this.state.disjunctiveRefinements[facet] &&\n    this.state.disjunctiveRefinements[facet].length > 0\n  );\n};\n\nAlgoliaSearchHelper.prototype._change = function (event) {\n  var state = event.state;\n  var isPageReset = event.isPageReset;\n\n  if (state !== this.state) {\n    this.state = state;\n\n    this.emit('change', {\n      state: this.state,\n      results: this.lastResults,\n      isPageReset: isPageReset,\n    });\n  }\n};\n\nAlgoliaSearchHelper.prototype._recommendChange = function (event) {\n  var state = event.state;\n\n  if (state !== this.recommendState) {\n    this.recommendState = state;\n\n    // eslint-disable-next-line no-warning-comments\n    // TODO: emit \"change\" event when events for Recommend are implemented\n    this.emit('recommend:change', {\n      search: {\n        results: this.lastResults,\n        state: this.state,\n      },\n      recommend: {\n        results: this.lastRecommendResults,\n        state: this.recommendState,\n      },\n    });\n  }\n};\n\n/**\n * Clears the cache of the underlying Algolia client.\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n */\nAlgoliaSearchHelper.prototype.clearCache = function () {\n  if (this.client.clearCache) this.client.clearCache();\n  return this;\n};\n\n/**\n * Updates the internal client instance. If the reference of the clients\n * are equal then no update is actually done.\n * @param  {AlgoliaSearch} newClient an AlgoliaSearch client\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n */\nAlgoliaSearchHelper.prototype.setClient = function (newClient) {\n  if (this.client === newClient) return this;\n\n  if (typeof newClient.addAlgoliaAgent === 'function') {\n    newClient.addAlgoliaAgent('JS Helper (' + version + ')');\n  }\n  this.client = newClient;\n\n  return this;\n};\n\n/**\n * Gets the instance of the currently used client.\n * @return {AlgoliaSearch} the currently used client\n */\nAlgoliaSearchHelper.prototype.getClient = function () {\n  return this.client;\n};\n\n/**\n * Creates an derived instance of the Helper. A derived helper\n * is a way to request other indices synchronised with the lifecycle\n * of the main Helper. This mechanism uses the multiqueries feature\n * of Algolia to aggregate all the requests in a single network call.\n *\n * This method takes a function that is used to create a new SearchParameter\n * that will be used to create requests to Algolia. Those new requests\n * are created just before the `search` event. The signature of the function\n * is `SearchParameters -> SearchParameters`.\n *\n * This method returns a new DerivedHelper which is an EventEmitter\n * that fires the same `search`, `result` and `error` events. Those\n * events, however, will receive data specific to this DerivedHelper\n * and the SearchParameters that is returned by the call of the\n * parameter function.\n * @param {function} fn SearchParameters -> SearchParameters\n * @param {function} recommendFn RecommendParameters -> RecommendParameters\n * @return {DerivedHelper} a new DerivedHelper\n */\nAlgoliaSearchHelper.prototype.derive = function (fn, recommendFn) {\n  var derivedHelper = new DerivedHelper(this, fn, recommendFn);\n  this.derivedHelpers.push(derivedHelper);\n  return derivedHelper;\n};\n\n/**\n * This method detaches a derived Helper from the main one. Prefer using the one from the\n * derived helper itself, to remove the event listeners too.\n * @private\n * @param  {DerivedHelper} derivedHelper the derived helper to detach\n * @return {undefined} nothing is returned\n * @throws Error\n */\nAlgoliaSearchHelper.prototype.detachDerivedHelper = function (derivedHelper) {\n  var pos = this.derivedHelpers.indexOf(derivedHelper);\n  if (pos === -1) throw new Error('Derived helper already detached');\n  this.derivedHelpers.splice(pos, 1);\n};\n\n/**\n * This method returns true if there is currently at least one on-going search.\n * @return {boolean} true if there is a search pending\n */\nAlgoliaSearchHelper.prototype.hasPendingRequests = function () {\n  return this._currentNbQueries > 0;\n};\n\n/**\n * @typedef AlgoliaSearchHelper.NumericRefinement\n * @type {object}\n * @property {number[]} value the numbers that are used for filtering this attribute with\n * the operator specified.\n * @property {string} operator the faceting data: value, number of entries\n * @property {string} type will be 'numeric'\n */\n\n/**\n * @typedef AlgoliaSearchHelper.FacetRefinement\n * @type {object}\n * @property {string} value the string use to filter the attribute\n * @property {string} type the type of filter: 'conjunctive', 'disjunctive', 'exclude'\n */\n\nmodule.exports = AlgoliaSearchHelper;\n","'use strict';\n\nmodule.exports = function compact(array) {\n  if (!Array.isArray(array)) {\n    return [];\n  }\n\n  return array.filter(Boolean);\n};\n","'use strict';\n\n// NOTE: this behaves like lodash/defaults, but doesn't mutate the target\n// it also preserve keys order\nmodule.exports = function defaultsPure() {\n  var sources = Array.prototype.slice.call(arguments);\n\n  return sources.reduceRight(function (acc, source) {\n    Object.keys(Object(source)).forEach(function (key) {\n      if (source[key] === undefined) {\n        return;\n      }\n      if (acc[key] !== undefined) {\n        // remove if already added, so that we can add it in correct order\n        delete acc[key];\n      }\n      acc[key] = source[key];\n    });\n    return acc;\n  }, {});\n};\n","'use strict';\n\n/**\n * Replaces a leading - with \\-\n * @private\n * @param {any} value the facet value to replace\n * @returns {any} the escaped facet value or the value if it was not a string\n */\nfunction escapeFacetValue(value) {\n  if (typeof value !== 'string') return value;\n\n  return String(value).replace(/^-/, '\\\\-');\n}\n\n/**\n * Replaces a leading \\- with -\n * @private\n * @param {any} value the escaped facet value\n * @returns {any} the unescaped facet value or the value if it was not a string\n */\nfunction unescapeFacetValue(value) {\n  if (typeof value !== 'string') return value;\n\n  return value.replace(/^\\\\-/, '-');\n}\n\nmodule.exports = {\n  escapeFacetValue: escapeFacetValue,\n  unescapeFacetValue: unescapeFacetValue,\n};\n","'use strict';\n\n// @MAJOR can be replaced by native Array#find when we change support\nmodule.exports = function find(array, comparator) {\n  if (!Array.isArray(array)) {\n    return undefined;\n  }\n\n  for (var i = 0; i < array.length; i++) {\n    if (comparator(array[i])) {\n      return array[i];\n    }\n  }\n\n  return undefined;\n};\n","'use strict';\n\n// @MAJOR can be replaced by native Array#findIndex when we change support\nmodule.exports = function find(array, comparator) {\n  if (!Array.isArray(array)) {\n    return -1;\n  }\n\n  for (var i = 0; i < array.length; i++) {\n    if (comparator(array[i])) {\n      return i;\n    }\n  }\n  return -1;\n};\n","// @MAJOR: remove this function and use Array.prototype.flat\nmodule.exports = function flat(arr) {\n  return arr.reduce(function (acc, val) {\n    return acc.concat(val);\n  }, []);\n};\n","'use strict';\n\nvar find = require('./find');\n\n/**\n * Transform sort format from user friendly notation to lodash format\n * @param {string[]} sortBy array of predicate of the form \"attribute:order\"\n * @param {string[]} [defaults] array of predicate of the form \"attribute:order\"\n * @return {array.<string[]>} array containing 2 elements : attributes, orders\n */\nmodule.exports = function formatSort(sortBy, defaults) {\n  var defaultInstructions = (defaults || []).map(function (sort) {\n    return sort.split(':');\n  });\n\n  return sortBy.reduce(\n    function preparePredicate(out, sort) {\n      var sortInstruction = sort.split(':');\n\n      var matchingDefault = find(\n        defaultInstructions,\n        function (defaultInstruction) {\n          return defaultInstruction[0] === sortInstruction[0];\n        }\n      );\n\n      if (sortInstruction.length > 1 || !matchingDefault) {\n        out[0].push(sortInstruction[0]);\n        out[1].push(sortInstruction[1]);\n        return out;\n      }\n\n      out[0].push(matchingDefault[0]);\n      out[1].push(matchingDefault[1]);\n      return out;\n    },\n    [[], []]\n  );\n};\n","'use strict';\n\nfunction inherits(ctor, superCtor) {\n  ctor.prototype = Object.create(superCtor.prototype, {\n    constructor: {\n      value: ctor,\n      enumerable: false,\n      writable: true,\n      configurable: true,\n    },\n  });\n}\n\nmodule.exports = inherits;\n","'use strict';\n\nfunction intersection(arr1, arr2) {\n  return arr1.filter(function (value, index) {\n    return (\n      arr2.indexOf(value) > -1 &&\n      arr1.indexOf(value) === index /* skips duplicates */\n    );\n  });\n}\n\nmodule.exports = intersection;\n","'use strict';\n\nfunction clone(value) {\n  if (typeof value === 'object' && value !== null) {\n    return _merge(Array.isArray(value) ? [] : {}, value);\n  }\n  return value;\n}\n\nfunction isObjectOrArrayOrFunction(value) {\n  return (\n    typeof value === 'function' ||\n    Array.isArray(value) ||\n    Object.prototype.toString.call(value) === '[object Object]'\n  );\n}\n\nfunction _merge(target, source) {\n  if (target === source) {\n    return target;\n  }\n\n  // eslint-disable-next-line no-restricted-syntax\n  for (var key in source) {\n    if (\n      !Object.prototype.hasOwnProperty.call(source, key) ||\n      key === '__proto__' ||\n      key === 'constructor'\n    ) {\n      // eslint-disable-next-line no-continue\n      continue;\n    }\n\n    var sourceVal = source[key];\n    var targetVal = target[key];\n\n    if (typeof targetVal !== 'undefined' && typeof sourceVal === 'undefined') {\n      // eslint-disable-next-line no-continue\n      continue;\n    }\n\n    if (\n      isObjectOrArrayOrFunction(targetVal) &&\n      isObjectOrArrayOrFunction(sourceVal)\n    ) {\n      target[key] = _merge(targetVal, sourceVal);\n    } else {\n      target[key] = clone(sourceVal);\n    }\n  }\n  return target;\n}\n\n/**\n * This method is like Object.assign, but recursively merges own and inherited\n * enumerable keyed properties of source objects into the destination object.\n *\n * NOTE: this behaves like lodash/merge, but:\n * - does mutate functions if they are a source\n * - treats non-plain objects as plain\n * - does not work for circular objects\n * - treats sparse arrays as sparse\n * - does not convert Array-like objects (Arguments, NodeLists, etc.) to arrays\n *\n * @param {Object} target The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n */\nfunction merge(target) {\n  if (!isObjectOrArrayOrFunction(target)) {\n    target = {};\n  }\n\n  for (var i = 1, l = arguments.length; i < l; i++) {\n    var source = arguments[i];\n\n    if (isObjectOrArrayOrFunction(source)) {\n      _merge(target, source);\n    }\n  }\n  return target;\n}\n\nmodule.exports = merge;\n","'use strict';\n\n// NOTE: this behaves like lodash/defaults, but doesn't mutate the target\n// it also preserve keys order and keep the highest numeric value\nfunction mergeNumericMax() {\n  var sources = Array.prototype.slice.call(arguments);\n\n  return sources.reduceRight(function (acc, source) {\n    Object.keys(Object(source)).forEach(function (key) {\n      var accValue = typeof acc[key] === 'number' ? acc[key] : 0;\n      var sourceValue = source[key];\n\n      if (sourceValue === undefined) {\n        return;\n      }\n\n      if (sourceValue >= accValue) {\n        if (acc[key] !== undefined) {\n          // remove if already added, so that we can add it in correct order\n          delete acc[key];\n        }\n        acc[key] = sourceValue;\n      }\n    });\n    return acc;\n  }, {});\n}\n\nmodule.exports = mergeNumericMax;\n","'use strict';\n\nfunction objectHasKeys(obj) {\n  return obj && Object.keys(obj).length > 0;\n}\n\nmodule.exports = objectHasKeys;\n","'use strict';\n\n// https://github.com/babel/babel/blob/3aaafae053fa75febb3aa45d45b6f00646e30ba4/packages/babel-helpers/src/helpers.js#L604-L620\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source === null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key;\n  var i;\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    // eslint-disable-next-line no-continue\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n  return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;\n","'use strict';\n\nfunction compareAscending(value, other) {\n  if (value !== other) {\n    var valIsDefined = value !== undefined;\n    var valIsNull = value === null;\n\n    var othIsDefined = other !== undefined;\n    var othIsNull = other === null;\n\n    if (\n      (!othIsNull && value > other) ||\n      (valIsNull && othIsDefined) ||\n      !valIsDefined\n    ) {\n      return 1;\n    }\n    if (\n      (!valIsNull && value < other) ||\n      (othIsNull && valIsDefined) ||\n      !othIsDefined\n    ) {\n      return -1;\n    }\n  }\n  return 0;\n}\n\n/**\n * @param {Array<object>} collection object with keys in attributes\n * @param {Array<string>} iteratees attributes\n * @param {Array<string>} orders asc | desc\n * @return {Array<object>} sorted collection\n */\nfunction orderBy(collection, iteratees, orders) {\n  if (!Array.isArray(collection)) {\n    return [];\n  }\n\n  if (!Array.isArray(orders)) {\n    orders = [];\n  }\n\n  var result = collection.map(function (value, index) {\n    return {\n      criteria: iteratees.map(function (iteratee) {\n        return value[iteratee];\n      }),\n      index: index,\n      value: value,\n    };\n  });\n\n  result.sort(function comparer(object, other) {\n    var index = -1;\n\n    while (++index < object.criteria.length) {\n      var res = compareAscending(object.criteria[index], other.criteria[index]);\n      if (res) {\n        if (index >= orders.length) {\n          return res;\n        }\n        if (orders[index] === 'desc') {\n          return -res;\n        }\n        return res;\n      }\n    }\n\n    // This ensures a stable sort in V8 and other engines.\n    // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n    return object.index - other.index;\n  });\n\n  return result.map(function (res) {\n    return res.value;\n  });\n}\n\nmodule.exports = orderBy;\n","'use strict';\n\nfunction valToNumber(v) {\n  if (typeof v === 'number') {\n    return v;\n  } else if (typeof v === 'string') {\n    return parseFloat(v);\n  } else if (Array.isArray(v)) {\n    return v.map(valToNumber);\n  }\n\n  throw new Error(\n    'The value should be a number, a parsable string or an array of those.'\n  );\n}\n\nmodule.exports = valToNumber;\n","'use strict';\n\nvar merge = require('./functions/merge');\n\nfunction sortObject(obj) {\n  return Object.keys(obj)\n    .sort()\n    .reduce(function (acc, curr) {\n      acc[curr] = obj[curr];\n      return acc;\n    }, {});\n}\n\nvar requestBuilder = {\n  /**\n   * Get all the queries to send to the client, those queries can used directly\n   * with the Algolia client.\n   * @private\n   * @param  {string} index The name of the index\n   * @param  {SearchParameters} state The state from which to get the queries\n   * @return {object[]} The queries\n   */\n  _getQueries: function getQueries(index, state) {\n    var queries = [];\n\n    // One query for the hits\n    queries.push({\n      indexName: index,\n      params: requestBuilder._getHitsSearchParams(state),\n    });\n\n    // One for each disjunctive facets\n    state.getRefinedDisjunctiveFacets().forEach(function (refinedFacet) {\n      queries.push({\n        indexName: index,\n        params: requestBuilder._getDisjunctiveFacetSearchParams(\n          state,\n          refinedFacet\n        ),\n      });\n    });\n\n    // More to get the parent levels of the hierarchical facets when refined\n    state.getRefinedHierarchicalFacets().forEach(function (refinedFacet) {\n      var hierarchicalFacet = state.getHierarchicalFacetByName(refinedFacet);\n      var currentRefinement = state.getHierarchicalRefinement(refinedFacet);\n      var separator = state._getHierarchicalFacetSeparator(hierarchicalFacet);\n\n      // If we are deeper than level 0 (starting from `beer > IPA`)\n      // we want to get all parent values\n      if (\n        currentRefinement.length > 0 &&\n        currentRefinement[0].split(separator).length > 1\n      ) {\n        // We generate a map of the filters we will use for our facet values queries\n        var filtersMap = currentRefinement[0]\n          .split(separator)\n          .slice(0, -1)\n          .reduce(function createFiltersMap(map, segment, level) {\n            return map.concat({\n              attribute: hierarchicalFacet.attributes[level],\n              value:\n                level === 0\n                  ? segment\n                  : [map[map.length - 1].value, segment].join(separator),\n            });\n          }, []);\n\n        filtersMap.forEach(function (filter, level) {\n          var params = requestBuilder._getDisjunctiveFacetSearchParams(\n            state,\n            filter.attribute,\n            level === 0\n          );\n\n          // Keep facet filters unrelated to current hierarchical attributes\n          function hasHierarchicalFacetFilter(value) {\n            return hierarchicalFacet.attributes.some(function (attribute) {\n              return attribute === value.split(':')[0];\n            });\n          }\n\n          var filteredFacetFilters = (params.facetFilters || []).reduce(\n            function (acc, facetFilter) {\n              if (Array.isArray(facetFilter)) {\n                var filtered = facetFilter.filter(function (filterValue) {\n                  return !hasHierarchicalFacetFilter(filterValue);\n                });\n\n                if (filtered.length > 0) {\n                  acc.push(filtered);\n                }\n              }\n\n              if (\n                typeof facetFilter === 'string' &&\n                !hasHierarchicalFacetFilter(facetFilter)\n              ) {\n                acc.push(facetFilter);\n              }\n\n              return acc;\n            },\n            []\n          );\n\n          var parent = filtersMap[level - 1];\n          if (level > 0) {\n            params.facetFilters = filteredFacetFilters.concat(\n              parent.attribute + ':' + parent.value\n            );\n          } else if (filteredFacetFilters.length > 0) {\n            params.facetFilters = filteredFacetFilters;\n          } else {\n            delete params.facetFilters;\n          }\n\n          queries.push({ indexName: index, params: params });\n        });\n      }\n    });\n\n    return queries;\n  },\n\n  /**\n   * Get all the queries to send to the client, those queries can used directly\n   * with the Algolia client.\n   * @private\n   * @param  {SearchParameters} state The state from which to get the queries\n   * @return {object[]} The queries\n   */\n  _getCompositionQueries: function getQueries(state) {\n    return [\n      {\n        compositionID: state.index,\n        requestBody: {\n          params: requestBuilder._getCompositionHitsSearchParams(state),\n        },\n      },\n    ];\n  },\n\n  /**\n   * Build search parameters used to fetch hits\n   * @private\n   * @param  {SearchParameters} state The state from which to get the queries\n   * @return {object.<string, any>} The search parameters for hits\n   */\n  _getHitsSearchParams: function (state) {\n    var facets = state.facets\n      .concat(state.disjunctiveFacets)\n      .concat(requestBuilder._getHitsHierarchicalFacetsAttributes(state))\n      .sort();\n\n    var facetFilters = requestBuilder._getFacetFilters(state);\n    var numericFilters = requestBuilder._getNumericFilters(state);\n    var tagFilters = requestBuilder._getTagFilters(state);\n    var additionalParams = {};\n\n    if (facets.length > 0) {\n      additionalParams.facets = facets.indexOf('*') > -1 ? ['*'] : facets;\n    }\n\n    if (tagFilters.length > 0) {\n      additionalParams.tagFilters = tagFilters;\n    }\n\n    if (facetFilters.length > 0) {\n      additionalParams.facetFilters = facetFilters;\n    }\n\n    if (numericFilters.length > 0) {\n      additionalParams.numericFilters = numericFilters;\n    }\n\n    return sortObject(merge({}, state.getQueryParams(), additionalParams));\n  },\n\n  /**\n   * Build search parameters used to fetch hits\n   * @private\n   * @param  {SearchParameters} state The state from which to get the queries\n   * @return {object.<string, any>} The search parameters for hits\n   */\n  _getCompositionHitsSearchParams: function (state) {\n    var facets = state.facets\n      .concat(\n        state.disjunctiveFacets.map(function (value) {\n          if (\n            state.disjunctiveFacetsRefinements &&\n            state.disjunctiveFacetsRefinements[value] &&\n            state.disjunctiveFacetsRefinements[value].length > 0\n          ) {\n            // only tag a disjunctiveFacet as disjunctive if it has a value selected\n            // this helps avoid hitting the limit of 20 disjunctive facets in the Composition API\n            return 'disjunctive(' + value + ')';\n          }\n          return value;\n        })\n      )\n      .concat(requestBuilder._getHitsHierarchicalFacetsAttributes(state))\n      .sort();\n\n    var facetFilters = requestBuilder._getFacetFilters(state);\n    var numericFilters = requestBuilder._getNumericFilters(state);\n    var tagFilters = requestBuilder._getTagFilters(state);\n    var additionalParams = {};\n\n    if (facets.length > 0) {\n      additionalParams.facets = facets.indexOf('*') > -1 ? ['*'] : facets;\n    }\n\n    if (tagFilters.length > 0) {\n      additionalParams.tagFilters = tagFilters;\n    }\n\n    if (facetFilters.length > 0) {\n      additionalParams.facetFilters = facetFilters;\n    }\n\n    if (numericFilters.length > 0) {\n      additionalParams.numericFilters = numericFilters;\n    }\n\n    var params = state.getQueryParams();\n\n    delete params.highlightPreTag;\n    delete params.highlightPostTag;\n    // not a valid search parameter, it is handled in _getCompositionQueries\n    delete params.index;\n\n    return sortObject(merge({}, params, additionalParams));\n  },\n\n  /**\n   * Build search parameters used to fetch a disjunctive facet\n   * @private\n   * @param  {SearchParameters} state The state from which to get the queries\n   * @param  {string} facet the associated facet name\n   * @param  {boolean} hierarchicalRootLevel ?? FIXME\n   * @return {object} The search parameters for a disjunctive facet\n   */\n  _getDisjunctiveFacetSearchParams: function (\n    state,\n    facet,\n    hierarchicalRootLevel\n  ) {\n    var facetFilters = requestBuilder._getFacetFilters(\n      state,\n      facet,\n      hierarchicalRootLevel\n    );\n    var numericFilters = requestBuilder._getNumericFilters(state, facet);\n    var tagFilters = requestBuilder._getTagFilters(state);\n    var additionalParams = {\n      hitsPerPage: 0,\n      page: 0,\n      analytics: false,\n      clickAnalytics: false,\n    };\n\n    if (tagFilters.length > 0) {\n      additionalParams.tagFilters = tagFilters;\n    }\n\n    var hierarchicalFacet = state.getHierarchicalFacetByName(facet);\n\n    if (hierarchicalFacet) {\n      additionalParams.facets =\n        requestBuilder._getDisjunctiveHierarchicalFacetAttribute(\n          state,\n          hierarchicalFacet,\n          hierarchicalRootLevel\n        );\n    } else {\n      additionalParams.facets = facet;\n    }\n\n    if (numericFilters.length > 0) {\n      additionalParams.numericFilters = numericFilters;\n    }\n\n    if (facetFilters.length > 0) {\n      additionalParams.facetFilters = facetFilters;\n    }\n\n    return sortObject(merge({}, state.getQueryParams(), additionalParams));\n  },\n\n  /**\n   * Return the numeric filters in an algolia request fashion\n   * @private\n   * @param {SearchParameters} state the state from which to get the filters\n   * @param {string} [facetName] the name of the attribute for which the filters should be excluded\n   * @return {string[]} the numeric filters in the algolia format\n   */\n  _getNumericFilters: function (state, facetName) {\n    if (state.numericFilters) {\n      return state.numericFilters;\n    }\n\n    var numericFilters = [];\n\n    Object.keys(state.numericRefinements).forEach(function (attribute) {\n      var operators = state.numericRefinements[attribute] || {};\n      Object.keys(operators).forEach(function (operator) {\n        var values = operators[operator] || [];\n        if (facetName !== attribute) {\n          values.forEach(function (value) {\n            if (Array.isArray(value)) {\n              var vs = value.map(function (v) {\n                return attribute + operator + v;\n              });\n              numericFilters.push(vs);\n            } else {\n              numericFilters.push(attribute + operator + value);\n            }\n          });\n        }\n      });\n    });\n\n    return numericFilters;\n  },\n\n  /**\n   * Return the tags filters depending on which format is used, either tagFilters or tagRefinements\n   * @private\n   * @param {SearchParameters} state the state from which to get the filters\n   * @return {string} Tag filters in a single string\n   */\n  _getTagFilters: function (state) {\n    if (state.tagFilters) {\n      return state.tagFilters;\n    }\n\n    return state.tagRefinements.join(',');\n  },\n\n  /**\n   * Build facetFilters parameter based on current refinements. The array returned\n   * contains strings representing the facet filters in the algolia format.\n   * @private\n   * @param  {SearchParameters} state The state from which to get the queries\n   * @param  {string} [facet] if set, the current disjunctive facet\n   * @param  {boolean} [hierarchicalRootLevel] ?? FIXME\n   * @return {array.<string>} The facet filters in the algolia format\n   */\n  _getFacetFilters: function (state, facet, hierarchicalRootLevel) {\n    var facetFilters = [];\n\n    var facetsRefinements = state.facetsRefinements || {};\n    Object.keys(facetsRefinements)\n      .sort()\n      .forEach(function (facetName) {\n        var facetValues = facetsRefinements[facetName] || [];\n        facetValues\n          .slice()\n          .sort()\n          .forEach(function (facetValue) {\n            facetFilters.push(facetName + ':' + facetValue);\n          });\n      });\n\n    var facetsExcludes = state.facetsExcludes || {};\n    Object.keys(facetsExcludes)\n      .sort()\n      .forEach(function (facetName) {\n        var facetValues = facetsExcludes[facetName] || [];\n        facetValues.sort().forEach(function (facetValue) {\n          facetFilters.push(facetName + ':-' + facetValue);\n        });\n      });\n\n    var disjunctiveFacetsRefinements = state.disjunctiveFacetsRefinements || {};\n    Object.keys(disjunctiveFacetsRefinements)\n      .sort()\n      .forEach(function (facetName) {\n        var facetValues = disjunctiveFacetsRefinements[facetName] || [];\n        if (facetName === facet || !facetValues || facetValues.length === 0) {\n          return;\n        }\n        var orFilters = [];\n\n        facetValues\n          .slice()\n          .sort()\n          .forEach(function (facetValue) {\n            orFilters.push(facetName + ':' + facetValue);\n          });\n\n        facetFilters.push(orFilters);\n      });\n\n    var hierarchicalFacetsRefinements =\n      state.hierarchicalFacetsRefinements || {};\n    Object.keys(hierarchicalFacetsRefinements)\n      .sort()\n      .forEach(function (facetName) {\n        var facetValues = hierarchicalFacetsRefinements[facetName] || [];\n        var facetValue = facetValues[0];\n\n        if (facetValue === undefined) {\n          return;\n        }\n\n        var hierarchicalFacet = state.getHierarchicalFacetByName(facetName);\n        var separator = state._getHierarchicalFacetSeparator(hierarchicalFacet);\n        var rootPath = state._getHierarchicalRootPath(hierarchicalFacet);\n        var attributeToRefine;\n        var attributesIndex;\n\n        // we ask for parent facet values only when the `facet` is the current hierarchical facet\n        if (facet === facetName) {\n          // if we are at the root level already, no need to ask for facet values, we get them from\n          // the hits query\n          if (\n            facetValue.indexOf(separator) === -1 ||\n            (!rootPath && hierarchicalRootLevel === true) ||\n            (rootPath &&\n              rootPath.split(separator).length ===\n                facetValue.split(separator).length)\n          ) {\n            return;\n          }\n\n          if (!rootPath) {\n            attributesIndex = facetValue.split(separator).length - 2;\n            facetValue = facetValue.slice(0, facetValue.lastIndexOf(separator));\n          } else {\n            attributesIndex = rootPath.split(separator).length - 1;\n            facetValue = rootPath;\n          }\n\n          attributeToRefine = hierarchicalFacet.attributes[attributesIndex];\n        } else {\n          attributesIndex = facetValue.split(separator).length - 1;\n\n          attributeToRefine = hierarchicalFacet.attributes[attributesIndex];\n        }\n\n        if (attributeToRefine) {\n          facetFilters.push([attributeToRefine + ':' + facetValue]);\n        }\n      });\n\n    return facetFilters;\n  },\n\n  _getHitsHierarchicalFacetsAttributes: function (state) {\n    var out = [];\n\n    return state.hierarchicalFacets.reduce(\n      // ask for as much levels as there's hierarchical refinements\n      function getHitsAttributesForHierarchicalFacet(\n        allAttributes,\n        hierarchicalFacet\n      ) {\n        var hierarchicalRefinement = state.getHierarchicalRefinement(\n          hierarchicalFacet.name\n        )[0];\n\n        // if no refinement, ask for root level\n        if (!hierarchicalRefinement) {\n          allAttributes.push(hierarchicalFacet.attributes[0]);\n          return allAttributes;\n        }\n\n        var separator = state._getHierarchicalFacetSeparator(hierarchicalFacet);\n        var level = hierarchicalRefinement.split(separator).length;\n        var newAttributes = hierarchicalFacet.attributes.slice(0, level + 1);\n\n        return allAttributes.concat(newAttributes);\n      },\n      out\n    );\n  },\n\n  _getDisjunctiveHierarchicalFacetAttribute: function (\n    state,\n    hierarchicalFacet,\n    rootLevel\n  ) {\n    var separator = state._getHierarchicalFacetSeparator(hierarchicalFacet);\n    if (rootLevel === true) {\n      var rootPath = state._getHierarchicalRootPath(hierarchicalFacet);\n      var attributeIndex = 0;\n\n      if (rootPath) {\n        attributeIndex = rootPath.split(separator).length;\n      }\n      return [hierarchicalFacet.attributes[attributeIndex]];\n    }\n\n    var hierarchicalRefinement =\n      state.getHierarchicalRefinement(hierarchicalFacet.name)[0] || '';\n    // if refinement is 'beers > IPA > Flying dog',\n    // then we want `facets: ['beers > IPA']` as disjunctive facet (parent level values)\n\n    var parentLevel = hierarchicalRefinement.split(separator).length - 1;\n    return hierarchicalFacet.attributes.slice(0, parentLevel + 1);\n  },\n\n  getSearchForFacetQuery: function (facetName, query, maxFacetHits, state) {\n    var stateForSearchForFacetValues = state.isDisjunctiveFacet(facetName)\n      ? state.clearRefinements(facetName)\n      : state;\n    var searchForFacetSearchParameters = {\n      facetQuery: query,\n      facetName: facetName,\n    };\n    if (typeof maxFacetHits === 'number') {\n      searchForFacetSearchParameters.maxFacetHits = maxFacetHits;\n    }\n    return sortObject(\n      merge(\n        {},\n        requestBuilder._getHitsSearchParams(stateForSearchForFacetValues),\n        searchForFacetSearchParameters\n      )\n    );\n  },\n};\n\nmodule.exports = requestBuilder;\n","'use strict';\n\nmodule.exports = function isValidUserToken(userToken) {\n  if (userToken === null) {\n    return false;\n  }\n  return /^[a-zA-Z0-9_-]{1,64}$/.test(userToken);\n};\n","'use strict';\n\nvar find = require('../functions/find');\nvar flat = require('../functions/flat');\n\nfunction getAverageIndices(indexTracker, nrOfObjs) {\n  var avgIndices = [];\n\n  Object.keys(indexTracker).forEach(function (key) {\n    if (indexTracker[key].count < 2) {\n      indexTracker[key].indexSum += 100;\n    }\n    avgIndices.push({\n      objectID: key,\n      avgOfIndices: indexTracker[key].indexSum / nrOfObjs,\n    });\n  });\n\n  return avgIndices.sort(function (a, b) {\n    return a.avgOfIndices > b.avgOfIndices ? 1 : -1;\n  });\n}\n\nfunction sortAndMergeRecommendations(objectIDs, results) {\n  var indexTracker = {};\n\n  results.forEach(function (hits) {\n    hits.forEach(function (hit, index) {\n      if (objectIDs.includes(hit.objectID)) return;\n\n      if (!indexTracker[hit.objectID]) {\n        indexTracker[hit.objectID] = { indexSum: index, count: 1 };\n      } else {\n        indexTracker[hit.objectID] = {\n          indexSum: indexTracker[hit.objectID].indexSum + index,\n          count: indexTracker[hit.objectID].count + 1,\n        };\n      }\n    });\n  });\n\n  var sortedAverageIndices = getAverageIndices(indexTracker, results.length);\n\n  var finalOrder = sortedAverageIndices.reduce(function (\n    orderedHits,\n    avgIndexRef\n  ) {\n    var result = find(flat(results), function (hit) {\n      return hit.objectID === avgIndexRef.objectID;\n    });\n    return result ? orderedHits.concat(result) : orderedHits;\n  },\n  []);\n\n  return finalOrder;\n}\n\nmodule.exports = sortAndMergeRecommendations;\n","'use strict';\n\nmodule.exports = '3.28.0';\n","/**\n * @license React\n * use-sync-external-store-shim.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction is(x, y) {\n  return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n  useState = React.useState,\n  useEffect = React.useEffect,\n  useLayoutEffect = React.useLayoutEffect,\n  useDebugValue = React.useDebugValue;\nfunction useSyncExternalStore$2(subscribe, getSnapshot) {\n  var value = getSnapshot(),\n    _useState = useState({ inst: { value: value, getSnapshot: getSnapshot } }),\n    inst = _useState[0].inst,\n    forceUpdate = _useState[1];\n  useLayoutEffect(\n    function () {\n      inst.value = value;\n      inst.getSnapshot = getSnapshot;\n      checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n    },\n    [subscribe, value, getSnapshot]\n  );\n  useEffect(\n    function () {\n      checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n      return subscribe(function () {\n        checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n      });\n    },\n    [subscribe]\n  );\n  useDebugValue(value);\n  return value;\n}\nfunction checkIfSnapshotChanged(inst) {\n  var latestGetSnapshot = inst.getSnapshot;\n  inst = inst.value;\n  try {\n    var nextValue = latestGetSnapshot();\n    return !objectIs(inst, nextValue);\n  } catch (error) {\n    return !0;\n  }\n}\nfunction useSyncExternalStore$1(subscribe, getSnapshot) {\n  return getSnapshot();\n}\nvar shim =\n  \"undefined\" === typeof window ||\n  \"undefined\" === typeof window.document ||\n  \"undefined\" === typeof window.document.createElement\n    ? useSyncExternalStore$1\n    : useSyncExternalStore$2;\nexports.useSyncExternalStore =\n  void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('../cjs/use-sync-external-store-shim.production.js');\n} else {\n  module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","\"use strict\";\n\nfunction _array_like_to_array(arr, len) {\n    if (len == null || len > arr.length) len = arr.length;\n\n    for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n    return arr2;\n}\nexports._ = _array_like_to_array;\n","\"use strict\";\n\nfunction _array_with_holes(arr) {\n    if (Array.isArray(arr)) return arr;\n}\nexports._ = _array_with_holes;\n","\"use strict\";\n\nvar _array_like_to_array = require(\"./_array_like_to_array.cjs\");\n\nfunction _array_without_holes(arr) {\n    if (Array.isArray(arr)) return _array_like_to_array._(arr);\n}\nexports._ = _array_without_holes;\n","\"use strict\";\n\nfunction _assert_this_initialized(self) {\n    if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n\n    return self;\n}\nexports._ = _assert_this_initialized;\n","\"use strict\";\n\nvar _get_prototype_of = require(\"./_get_prototype_of.cjs\");\nvar _is_native_reflect_construct = require(\"./_is_native_reflect_construct.cjs\");\nvar _possible_constructor_return = require(\"./_possible_constructor_return.cjs\");\n\nfunction _call_super(_this, derived, args) {\n    // Super\n    derived = _get_prototype_of._(derived);\n    return _possible_constructor_return._(\n        _this,\n        _is_native_reflect_construct._()\n            // NOTE: This doesn't work if this.__proto__.constructor has been modified.\n            ? Reflect.construct(derived, args || [], _get_prototype_of._(_this).constructor)\n            : derived.apply(_this, args)\n    );\n}\n\nexports._ = _call_super;\n","\"use strict\";\n\nfunction _class_call_check(instance, Constructor) {\n    if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nexports._ = _class_call_check;\n","\"use strict\";\n\nfunction _defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n        var descriptor = props[i];\n        descriptor.enumerable = descriptor.enumerable || false;\n        descriptor.configurable = true;\n\n        if (\"value\" in descriptor) descriptor.writable = true;\n\n        Object.defineProperty(target, descriptor.key, descriptor);\n    }\n}\nfunction _create_class(Constructor, protoProps, staticProps) {\n    if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) _defineProperties(Constructor, staticProps);\n\n    return Constructor;\n}\nexports._ = _create_class;\n","\"use strict\";\n\nfunction _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });\n    } else obj[key] = value;\n\n    return obj;\n}\nexports._ = _define_property;\n","\"use strict\";\n\nfunction _extends() {\n    exports._ = _extends = Object.assign || function assign(target) {\n        for (var i = 1; i < arguments.length; i++) {\n            var source = arguments[i];\n            for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n        }\n\n        return target;\n    };\n\n    return _extends.apply(this, arguments);\n}\nexports._ = _extends;\n","\"use strict\";\n\nfunction _get_prototype_of(o) {\n    exports._ = _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {\n        return o.__proto__ || Object.getPrototypeOf(o);\n    };\n\n    return _get_prototype_of(o);\n}\nexports._ = _get_prototype_of;\n","\"use strict\";\n\nvar _set_prototype_of = require(\"./_set_prototype_of.cjs\");\n\nfunction _inherits(subClass, superClass) {\n    if (typeof superClass !== \"function\" && superClass !== null) {\n        throw new TypeError(\"Super expression must either be null or a function\");\n    }\n\n    subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });\n\n    if (superClass) _set_prototype_of._(subClass, superClass);\n}\nexports._ = _inherits;\n","\"use strict\";\n\nfunction _instanceof(left, right) {\n    if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n        return !!right[Symbol.hasInstance](left);\n    } else return left instanceof right;\n}\nexports._ = _instanceof;\n","\"use strict\";\n\nfunction _is_native_reflect_construct() {\n    // Since Reflect.construct can't be properly polyfilled, some\n    // implementations (e.g. core-js@2) don't set the correct internal slots.\n    // Those polyfills don't allow us to subclass built-ins, so we need to\n    // use our fallback implementation.\n    try {\n        // If the internal slots aren't set, this throws an error similar to\n        //   TypeError: this is not a Boolean object.\n        var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n    } catch (_) {}\n    return (exports._ = _is_native_reflect_construct = function() {\n        return !!result;\n    })();\n}\n\nexports._ = _is_native_reflect_construct;\n","\"use strict\";\n\nfunction _iterable_to_array(iter) {\n    if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) {\n        return Array.from(iter);\n    }\n}\nexports._ = _iterable_to_array;\n","\"use strict\";\n\nfunction _iterable_to_array_limit(arr, i) {\n    var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n    if (_i == null) return;\n\n    var _arr = [];\n    var _n = true;\n    var _d = false;\n    var _s, _e;\n\n    try {\n        for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n            _arr.push(_s.value);\n            if (i && _arr.length === i) break;\n        }\n    } catch (err) {\n        _d = true;\n        _e = err;\n    } finally {\n        try {\n            if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n        } finally {\n            if (_d) throw _e;\n        }\n    }\n\n    return _arr;\n}\nexports._ = _iterable_to_array_limit;\n","\"use strict\";\n\nfunction _non_iterable_rest() {\n    throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexports._ = _non_iterable_rest;\n","\"use strict\";\n\nfunction _non_iterable_spread() {\n    throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexports._ = _non_iterable_spread;\n","\"use strict\";\n\nfunction _object_destructuring_empty(o) {\n    if (o === null || o === void 0) throw new TypeError(\"Cannot destructure \" + o);\n\n    return o;\n}\nexports._ = _object_destructuring_empty;\n","\"use strict\";\n\nvar _define_property = require(\"./_define_property.cjs\");\n\nfunction _object_spread(target) {\n    for (var i = 1; i < arguments.length; i++) {\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(\n                Object.getOwnPropertySymbols(source).filter(function(sym) {\n                    return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n                })\n            );\n        }\n\n        ownKeys.forEach(function(key) {\n            _define_property._(target, key, source[key]);\n        });\n    }\n\n    return target;\n}\nexports._ = _object_spread;\n","\"use strict\";\n\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n\n    if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n\n    return target;\n}\nexports._ = _object_spread_props;\n","\"use strict\";\n\nvar _object_without_properties_loose = require(\"./_object_without_properties_loose.cjs\");\n\nfunction _object_without_properties(source, excluded) {\n    if (source == null) return {};\n\n    var target = {}, sourceKeys, key, i;\n    if (typeof Reflect !== \"undefined\" && Reflect.ownKeys) {\n        sourceKeys = Reflect.ownKeys(source);\n        for (i = 0; i < sourceKeys.length; i++) {\n            key = sourceKeys[i];\n            if (excluded.indexOf(key) >= 0) continue;\n            if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n            target[key] = source[key];\n        }\n\n        return target;\n    }\n\n    target = _object_without_properties_loose._(source, excluded);\n    if (Object.getOwnPropertySymbols) {\n        sourceKeys = Object.getOwnPropertySymbols(source);\n        for (i = 0; i < sourceKeys.length; i++) {\n            key = sourceKeys[i];\n            if (excluded.indexOf(key) >= 0) continue;\n            if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n            target[key] = source[key];\n        }\n    }\n\n    return target;\n}\n\nexports._ = _object_without_properties;\n","\"use strict\";\n\nfunction _object_without_properties_loose(source, excluded) {\n    if (source == null) return {};\n\n    var target = {}, sourceKeys = Object.getOwnPropertyNames(source), key, i;\n    for (i = 0; i < sourceKeys.length; i++) {\n        key = sourceKeys[i];\n        if (excluded.indexOf(key) >= 0) continue;\n        if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n        target[key] = source[key];\n    }\n\n    return target;\n}\nexports._ = _object_without_properties_loose;\n","\"use strict\";\n\nvar _assert_this_initialized = require(\"./_assert_this_initialized.cjs\");\nvar _type_of = require(\"./_type_of.cjs\");\n\nfunction _possible_constructor_return(self, call) {\n    if (call && (_type_of._(call) === \"object\" || typeof call === \"function\")) return call;\n\n    return _assert_this_initialized._(self);\n}\nexports._ = _possible_constructor_return;\n","\"use strict\";\n\nfunction _set_prototype_of(o, p) {\n    exports._ = _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {\n        o.__proto__ = p;\n\n        return o;\n    };\n\n    return _set_prototype_of(o, p);\n}\nexports._ = _set_prototype_of;\n","\"use strict\";\n\nvar _array_with_holes = require(\"./_array_with_holes.cjs\");\nvar _iterable_to_array_limit = require(\"./_iterable_to_array_limit.cjs\");\nvar _non_iterable_rest = require(\"./_non_iterable_rest.cjs\");\nvar _unsupported_iterable_to_array = require(\"./_unsupported_iterable_to_array.cjs\");\n\nfunction _sliced_to_array(arr, i) {\n    return _array_with_holes._(arr) || _iterable_to_array_limit._(arr, i) || _unsupported_iterable_to_array._(arr, i) || _non_iterable_rest._();\n}\nexports._ = _sliced_to_array;\n","\"use strict\";\n\nvar _array_with_holes = require(\"./_array_with_holes.cjs\");\nvar _iterable_to_array = require(\"./_iterable_to_array.cjs\");\nvar _non_iterable_rest = require(\"./_non_iterable_rest.cjs\");\nvar _unsupported_iterable_to_array = require(\"./_unsupported_iterable_to_array.cjs\");\n\nfunction _to_array(arr) {\n    return _array_with_holes._(arr) || _iterable_to_array._(arr) || _unsupported_iterable_to_array._(arr) || _non_iterable_rest._();\n}\nexports._ = _to_array;\n","\"use strict\";\n\nvar _array_without_holes = require(\"./_array_without_holes.cjs\");\nvar _iterable_to_array = require(\"./_iterable_to_array.cjs\");\nvar _non_iterable_spread = require(\"./_non_iterable_spread.cjs\");\nvar _unsupported_iterable_to_array = require(\"./_unsupported_iterable_to_array.cjs\");\n\nfunction _to_consumable_array(arr) {\n    return _array_without_holes._(arr) || _iterable_to_array._(arr) || _unsupported_iterable_to_array._(arr) || _non_iterable_spread._();\n}\nexports._ = _to_consumable_array;\n","\"use strict\";\n\nfunction _type_of(obj) {\n    \"@swc/helpers - typeof\";\n\n    return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\nexports._ = _type_of;\n","\"use strict\";\n\nvar _array_like_to_array = require(\"./_array_like_to_array.cjs\");\n\nfunction _unsupported_iterable_to_array(o, minLen) {\n    if (!o) return;\n    if (typeof o === \"string\") return _array_like_to_array._(o, minLen);\n\n    var n = Object.prototype.toString.call(o).slice(8, -1);\n\n    if (n === \"Object\" && o.constructor) n = o.constructor.name;\n    if (n === \"Map\" || n === \"Set\") return Array.from(n);\n    if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array._(o, minLen);\n}\nexports._ = _unsupported_iterable_to_array;\n","// src/cache/createBrowserLocalStorageCache.ts\nfunction createBrowserLocalStorageCache(options) {\n  let storage;\n  const namespaceKey = `algolia-client-js-${options.key}`;\n  function getStorage() {\n    if (storage === void 0) {\n      storage = options.localStorage || window.localStorage;\n    }\n    return storage;\n  }\n  function getNamespace() {\n    return JSON.parse(getStorage().getItem(namespaceKey) || \"{}\");\n  }\n  function setNamespace(namespace) {\n    getStorage().setItem(namespaceKey, JSON.stringify(namespace));\n  }\n  function removeOutdatedCacheItems() {\n    const timeToLive = options.timeToLive ? options.timeToLive * 1e3 : null;\n    const namespace = getNamespace();\n    const filteredNamespaceWithoutOldFormattedCacheItems = Object.fromEntries(\n      Object.entries(namespace).filter(([, cacheItem]) => {\n        return cacheItem.timestamp !== void 0;\n      })\n    );\n    setNamespace(filteredNamespaceWithoutOldFormattedCacheItems);\n    if (!timeToLive) {\n      return;\n    }\n    const filteredNamespaceWithoutExpiredItems = Object.fromEntries(\n      Object.entries(filteredNamespaceWithoutOldFormattedCacheItems).filter(([, cacheItem]) => {\n        const currentTimestamp = (/* @__PURE__ */ new Date()).getTime();\n        const isExpired = cacheItem.timestamp + timeToLive < currentTimestamp;\n        return !isExpired;\n      })\n    );\n    setNamespace(filteredNamespaceWithoutExpiredItems);\n  }\n  return {\n    get(key, defaultValue, events = {\n      miss: () => Promise.resolve()\n    }) {\n      return Promise.resolve().then(() => {\n        removeOutdatedCacheItems();\n        return getNamespace()[JSON.stringify(key)];\n      }).then((value) => {\n        return Promise.all([value ? value.value : defaultValue(), value !== void 0]);\n      }).then(([value, exists]) => {\n        return Promise.all([value, exists || events.miss(value)]);\n      }).then(([value]) => value);\n    },\n    set(key, value) {\n      return Promise.resolve().then(() => {\n        const namespace = getNamespace();\n        namespace[JSON.stringify(key)] = {\n          timestamp: (/* @__PURE__ */ new Date()).getTime(),\n          value\n        };\n        getStorage().setItem(namespaceKey, JSON.stringify(namespace));\n        return value;\n      });\n    },\n    delete(key) {\n      return Promise.resolve().then(() => {\n        const namespace = getNamespace();\n        delete namespace[JSON.stringify(key)];\n        getStorage().setItem(namespaceKey, JSON.stringify(namespace));\n      });\n    },\n    clear() {\n      return Promise.resolve().then(() => {\n        getStorage().removeItem(namespaceKey);\n      });\n    }\n  };\n}\n\n// src/cache/createNullCache.ts\nfunction createNullCache() {\n  return {\n    get(_key, defaultValue, events = {\n      miss: () => Promise.resolve()\n    }) {\n      const value = defaultValue();\n      return value.then((result) => Promise.all([result, events.miss(result)])).then(([result]) => result);\n    },\n    set(_key, value) {\n      return Promise.resolve(value);\n    },\n    delete(_key) {\n      return Promise.resolve();\n    },\n    clear() {\n      return Promise.resolve();\n    }\n  };\n}\n\n// src/cache/createFallbackableCache.ts\nfunction createFallbackableCache(options) {\n  const caches = [...options.caches];\n  const current = caches.shift();\n  if (current === void 0) {\n    return createNullCache();\n  }\n  return {\n    get(key, defaultValue, events = {\n      miss: () => Promise.resolve()\n    }) {\n      return current.get(key, defaultValue, events).catch(() => {\n        return createFallbackableCache({ caches }).get(key, defaultValue, events);\n      });\n    },\n    set(key, value) {\n      return current.set(key, value).catch(() => {\n        return createFallbackableCache({ caches }).set(key, value);\n      });\n    },\n    delete(key) {\n      return current.delete(key).catch(() => {\n        return createFallbackableCache({ caches }).delete(key);\n      });\n    },\n    clear() {\n      return current.clear().catch(() => {\n        return createFallbackableCache({ caches }).clear();\n      });\n    }\n  };\n}\n\n// src/cache/createMemoryCache.ts\nfunction createMemoryCache(options = { serializable: true }) {\n  let cache = {};\n  return {\n    get(key, defaultValue, events = {\n      miss: () => Promise.resolve()\n    }) {\n      const keyAsString = JSON.stringify(key);\n      if (keyAsString in cache) {\n        return Promise.resolve(options.serializable ? JSON.parse(cache[keyAsString]) : cache[keyAsString]);\n      }\n      const promise = defaultValue();\n      return promise.then((value) => events.miss(value)).then(() => promise);\n    },\n    set(key, value) {\n      cache[JSON.stringify(key)] = options.serializable ? JSON.stringify(value) : value;\n      return Promise.resolve(value);\n    },\n    delete(key) {\n      delete cache[JSON.stringify(key)];\n      return Promise.resolve();\n    },\n    clear() {\n      cache = {};\n      return Promise.resolve();\n    }\n  };\n}\n\n// src/constants.ts\nvar DEFAULT_CONNECT_TIMEOUT_BROWSER = 1e3;\nvar DEFAULT_READ_TIMEOUT_BROWSER = 2e3;\nvar DEFAULT_WRITE_TIMEOUT_BROWSER = 3e4;\nvar DEFAULT_CONNECT_TIMEOUT_NODE = 2e3;\nvar DEFAULT_READ_TIMEOUT_NODE = 5e3;\nvar DEFAULT_WRITE_TIMEOUT_NODE = 3e4;\n\n// src/createAlgoliaAgent.ts\nfunction createAlgoliaAgent(version) {\n  const algoliaAgent = {\n    value: `Algolia for JavaScript (${version})`,\n    add(options) {\n      const addedAlgoliaAgent = `; ${options.segment}${options.version !== void 0 ? ` (${options.version})` : \"\"}`;\n      if (algoliaAgent.value.indexOf(addedAlgoliaAgent) === -1) {\n        algoliaAgent.value = `${algoliaAgent.value}${addedAlgoliaAgent}`;\n      }\n      return algoliaAgent;\n    }\n  };\n  return algoliaAgent;\n}\n\n// src/createAuth.ts\nfunction createAuth(appId, apiKey, authMode = \"WithinHeaders\") {\n  const credentials = {\n    \"x-algolia-api-key\": apiKey,\n    \"x-algolia-application-id\": appId\n  };\n  return {\n    headers() {\n      return authMode === \"WithinHeaders\" ? credentials : {};\n    },\n    queryParameters() {\n      return authMode === \"WithinQueryParameters\" ? credentials : {};\n    }\n  };\n}\n\n// src/createIterablePromise.ts\nfunction createIterablePromise({\n  func,\n  validate,\n  aggregator,\n  error,\n  timeout = () => 0\n}) {\n  const retry = (previousResponse) => {\n    return new Promise((resolve, reject) => {\n      func(previousResponse).then(async (response) => {\n        if (aggregator) {\n          await aggregator(response);\n        }\n        if (await validate(response)) {\n          return resolve(response);\n        }\n        if (error && await error.validate(response)) {\n          return reject(new Error(await error.message(response)));\n        }\n        return setTimeout(\n          () => {\n            retry(response).then(resolve).catch(reject);\n          },\n          await timeout()\n        );\n      }).catch((err) => {\n        reject(err);\n      });\n    });\n  };\n  return retry();\n}\n\n// src/getAlgoliaAgent.ts\nfunction getAlgoliaAgent({ algoliaAgents, client, version }) {\n  const defaultAlgoliaAgent = createAlgoliaAgent(version).add({\n    segment: client,\n    version\n  });\n  algoliaAgents.forEach((algoliaAgent) => defaultAlgoliaAgent.add(algoliaAgent));\n  return defaultAlgoliaAgent;\n}\n\n// src/logger/createNullLogger.ts\nfunction createNullLogger() {\n  return {\n    debug(_message, _args) {\n      return Promise.resolve();\n    },\n    info(_message, _args) {\n      return Promise.resolve();\n    },\n    error(_message, _args) {\n      return Promise.resolve();\n    }\n  };\n}\n\n// src/transporter/compress.ts\nvar COMPRESSION_THRESHOLD = 750;\n\n// src/transporter/createStatefulHost.ts\nvar EXPIRATION_DELAY = 2 * 60 * 1e3;\nfunction createStatefulHost(host, status = \"up\") {\n  const lastUpdate = Date.now();\n  function isUp() {\n    return status === \"up\" || Date.now() - lastUpdate > EXPIRATION_DELAY;\n  }\n  function isTimedOut() {\n    return status === \"timed out\" && Date.now() - lastUpdate <= EXPIRATION_DELAY;\n  }\n  return { ...host, status, lastUpdate, isUp, isTimedOut };\n}\n\n// src/transporter/errors.ts\nvar AlgoliaError = class extends Error {\n  name = \"AlgoliaError\";\n  constructor(message, name) {\n    super(message);\n    if (name) {\n      this.name = name;\n    }\n  }\n};\nvar IndexNotFoundError = class extends AlgoliaError {\n  constructor(indexName) {\n    super(`${indexName} does not exist`, \"IndexNotFoundError\");\n  }\n};\nvar IndicesInSameAppError = class extends AlgoliaError {\n  constructor() {\n    super(\"Indices are in the same application. Use operationIndex instead.\", \"IndicesInSameAppError\");\n  }\n};\nvar IndexAlreadyExistsError = class extends AlgoliaError {\n  constructor(indexName) {\n    super(`${indexName} index already exists.`, \"IndexAlreadyExistsError\");\n  }\n};\nvar ErrorWithStackTrace = class extends AlgoliaError {\n  stackTrace;\n  constructor(message, stackTrace, name) {\n    super(message, name);\n    this.stackTrace = stackTrace;\n  }\n};\nvar RetryError = class extends ErrorWithStackTrace {\n  constructor(stackTrace) {\n    super(\n      \"Unreachable hosts - your application id may be incorrect. If the error persists, please visit our help center https://alg.li/support-unreachable-hosts or reach out to the Algolia Support team: https://alg.li/support\",\n      stackTrace,\n      \"RetryError\"\n    );\n  }\n};\nvar ApiError = class extends ErrorWithStackTrace {\n  status;\n  constructor(message, status, stackTrace, name = \"ApiError\") {\n    super(message, stackTrace, name);\n    this.status = status;\n  }\n};\nvar DeserializationError = class extends AlgoliaError {\n  response;\n  constructor(message, response) {\n    super(message, \"DeserializationError\");\n    this.response = response;\n  }\n};\nvar DetailedApiError = class extends ApiError {\n  error;\n  constructor(message, status, error, stackTrace) {\n    super(message, status, stackTrace, \"DetailedApiError\");\n    this.error = error;\n  }\n};\n\n// src/transporter/helpers.ts\nfunction shuffle(array) {\n  const shuffledArray = array;\n  for (let c = array.length - 1; c > 0; c--) {\n    const b = Math.floor(Math.random() * (c + 1));\n    const a = array[c];\n    shuffledArray[c] = array[b];\n    shuffledArray[b] = a;\n  }\n  return shuffledArray;\n}\nfunction serializeUrl(host, path, queryParameters) {\n  const queryParametersAsString = serializeQueryParameters(queryParameters);\n  let url = `${host.protocol}://${host.url}${host.port ? `:${host.port}` : \"\"}/${path.charAt(0) === \"/\" ? path.substring(1) : path}`;\n  if (queryParametersAsString.length) {\n    url += `?${queryParametersAsString}`;\n  }\n  return url;\n}\nfunction serializeQueryParameters(parameters) {\n  return Object.keys(parameters).filter((key) => parameters[key] !== void 0).sort().map(\n    (key) => `${key}=${encodeURIComponent(\n      Object.prototype.toString.call(parameters[key]) === \"[object Array]\" ? parameters[key].join(\",\") : parameters[key]\n    ).replace(/\\+/g, \"%20\")}`\n  ).join(\"&\");\n}\nfunction serializeData(request, requestOptions) {\n  if (request.method === \"GET\" || request.data === void 0 && requestOptions.data === void 0) {\n    return void 0;\n  }\n  const data = Array.isArray(request.data) ? request.data : { ...request.data, ...requestOptions.data };\n  return JSON.stringify(data);\n}\nfunction serializeHeaders(baseHeaders, requestHeaders, requestOptionsHeaders) {\n  const headers = {\n    Accept: \"application/json\",\n    ...baseHeaders,\n    ...requestHeaders,\n    ...requestOptionsHeaders\n  };\n  const serializedHeaders = {};\n  Object.keys(headers).forEach((header) => {\n    const value = headers[header];\n    serializedHeaders[header.toLowerCase()] = value;\n  });\n  return serializedHeaders;\n}\nfunction deserializeSuccess(response) {\n  try {\n    return JSON.parse(response.content);\n  } catch (e) {\n    throw new DeserializationError(e.message, response);\n  }\n}\nfunction deserializeFailure({ content, status }, stackFrame) {\n  try {\n    const parsed = JSON.parse(content);\n    if (\"error\" in parsed) {\n      return new DetailedApiError(parsed.message, status, parsed.error, stackFrame);\n    }\n    return new ApiError(parsed.message, status, stackFrame);\n  } catch {\n  }\n  return new ApiError(content, status, stackFrame);\n}\n\n// src/transporter/responses.ts\nfunction isNetworkError({ isTimedOut, status }) {\n  return !isTimedOut && ~~status === 0;\n}\nfunction isRetryable({ isTimedOut, status }) {\n  return isTimedOut || isNetworkError({ isTimedOut, status }) || ~~(status / 100) !== 2 && ~~(status / 100) !== 4;\n}\nfunction isSuccess({ status }) {\n  return ~~(status / 100) === 2;\n}\n\n// src/transporter/stackTrace.ts\nfunction stackTraceWithoutCredentials(stackTrace) {\n  return stackTrace.map((stackFrame) => stackFrameWithoutCredentials(stackFrame));\n}\nfunction stackFrameWithoutCredentials(stackFrame) {\n  const modifiedHeaders = stackFrame.request.headers[\"x-algolia-api-key\"] ? { \"x-algolia-api-key\": \"*****\" } : {};\n  return {\n    ...stackFrame,\n    request: {\n      ...stackFrame.request,\n      headers: {\n        ...stackFrame.request.headers,\n        ...modifiedHeaders\n      }\n    }\n  };\n}\n\n// src/transporter/createTransporter.ts\nfunction createTransporter({\n  hosts,\n  hostsCache,\n  baseHeaders,\n  logger,\n  baseQueryParameters,\n  algoliaAgent,\n  timeouts,\n  requester,\n  requestsCache,\n  responsesCache,\n  compress,\n  compression\n}) {\n  async function createRetryableOptions(compatibleHosts) {\n    const statefulHosts = await Promise.all(\n      compatibleHosts.map((compatibleHost) => {\n        return hostsCache.get(compatibleHost, () => {\n          return Promise.resolve(createStatefulHost(compatibleHost));\n        });\n      })\n    );\n    const hostsUp = statefulHosts.filter((host) => host.isUp());\n    const hostsTimedOut = statefulHosts.filter((host) => host.isTimedOut());\n    const hostsAvailable = [...hostsUp, ...hostsTimedOut];\n    const compatibleHostsAvailable = hostsAvailable.length > 0 ? hostsAvailable : compatibleHosts;\n    return {\n      hosts: compatibleHostsAvailable,\n      getTimeout(timeoutsCount, baseTimeout) {\n        const timeoutMultiplier = hostsTimedOut.length === 0 && timeoutsCount === 0 ? 1 : hostsTimedOut.length + 3 + timeoutsCount;\n        return timeoutMultiplier * baseTimeout;\n      }\n    };\n  }\n  async function retryableRequest(request, requestOptions, isRead) {\n    const stackTrace = [];\n    const serializedData = serializeData(request, requestOptions);\n    const headers = serializeHeaders(baseHeaders, request.headers, requestOptions.headers);\n    const wantsCompression = compression === \"gzip\" && serializedData !== void 0 && serializedData.length > COMPRESSION_THRESHOLD && (request.method === \"POST\" || request.method === \"PUT\");\n    if (wantsCompression && compress === void 0) {\n      logger.info(\"Compression is disabled because no compress method is available.\");\n    }\n    const shouldCompress = wantsCompression && compress !== void 0;\n    const data = shouldCompress ? await compress(serializedData) : serializedData;\n    if (shouldCompress) {\n      headers[\"content-encoding\"] = \"gzip\";\n    }\n    const dataQueryParameters = request.method === \"GET\" ? {\n      ...request.data,\n      ...requestOptions.data\n    } : {};\n    const queryParameters = {\n      ...baseQueryParameters,\n      ...request.queryParameters,\n      ...dataQueryParameters\n    };\n    if (algoliaAgent.value) {\n      queryParameters[\"x-algolia-agent\"] = algoliaAgent.value;\n    }\n    if (requestOptions && requestOptions.queryParameters) {\n      for (const key of Object.keys(requestOptions.queryParameters)) {\n        if (!requestOptions.queryParameters[key] || Object.prototype.toString.call(requestOptions.queryParameters[key]) === \"[object Object]\") {\n          queryParameters[key] = requestOptions.queryParameters[key];\n        } else {\n          queryParameters[key] = requestOptions.queryParameters[key].toString();\n        }\n      }\n    }\n    let timeoutsCount = 0;\n    const retry = async (retryableHosts, getTimeout) => {\n      const host = retryableHosts.pop();\n      if (host === void 0) {\n        throw new RetryError(stackTraceWithoutCredentials(stackTrace));\n      }\n      const timeout = { ...timeouts, ...requestOptions.timeouts };\n      const payload = {\n        data,\n        headers,\n        method: request.method,\n        url: serializeUrl(host, request.path, queryParameters),\n        connectTimeout: getTimeout(timeoutsCount, timeout.connect),\n        responseTimeout: getTimeout(timeoutsCount, isRead ? timeout.read : timeout.write)\n      };\n      const pushToStackTrace = (response2) => {\n        const stackFrame = {\n          request: payload,\n          response: response2,\n          host,\n          triesLeft: retryableHosts.length\n        };\n        stackTrace.push(stackFrame);\n        return stackFrame;\n      };\n      const response = await requester.send(payload);\n      if (isRetryable(response)) {\n        const stackFrame = pushToStackTrace(response);\n        if (response.isTimedOut) {\n          timeoutsCount++;\n        }\n        logger.info(\"Retryable failure\", stackFrameWithoutCredentials(stackFrame));\n        await hostsCache.set(host, createStatefulHost(host, response.isTimedOut ? \"timed out\" : \"down\"));\n        return retry(retryableHosts, getTimeout);\n      }\n      if (isSuccess(response)) {\n        return deserializeSuccess(response);\n      }\n      pushToStackTrace(response);\n      throw deserializeFailure(response, stackTrace);\n    };\n    const compatibleHosts = hosts.filter(\n      (host) => host.accept === \"readWrite\" || (isRead ? host.accept === \"read\" : host.accept === \"write\")\n    );\n    const options = await createRetryableOptions(compatibleHosts);\n    return retry([...options.hosts].reverse(), options.getTimeout);\n  }\n  function createRequest(request, requestOptions = {}) {\n    const createRetryableRequest = () => {\n      return retryableRequest(request, requestOptions, isRead);\n    };\n    const isRead = request.useReadTransporter || request.method === \"GET\";\n    const cacheable = requestOptions.cacheable || request.cacheable;\n    if (cacheable !== true) {\n      return createRetryableRequest();\n    }\n    const key = {\n      request,\n      requestOptions,\n      transporter: {\n        queryParameters: baseQueryParameters,\n        headers: baseHeaders\n      }\n    };\n    return responsesCache.get(\n      key,\n      () => {\n        return requestsCache.get(\n          key,\n          () => (\n            /**\n             * Finally, if there is no request in progress with the same key,\n             * this `createRetryableRequest()` will actually trigger the\n             * retryable request.\n             */\n            requestsCache.set(key, createRetryableRequest()).then(\n              (response) => Promise.all([requestsCache.delete(key), response]),\n              (err) => Promise.all([requestsCache.delete(key), Promise.reject(err)])\n            ).then(([_, response]) => response)\n          )\n        );\n      },\n      {\n        /**\n         * Of course, once we get this response back from the server, we\n         * tell response cache to actually store the received response\n         * to be used later.\n         */\n        miss: (response) => responsesCache.set(key, response)\n      }\n    );\n  }\n  return {\n    hostsCache,\n    requester,\n    timeouts,\n    logger,\n    algoliaAgent,\n    baseHeaders,\n    baseQueryParameters,\n    hosts,\n    request: createRequest,\n    requestsCache,\n    responsesCache\n  };\n}\n\n// src/types/logger.ts\nvar LogLevelEnum = {\n  Debug: 1,\n  Info: 2,\n  Error: 3\n};\nexport {\n  AlgoliaError,\n  ApiError,\n  COMPRESSION_THRESHOLD,\n  DEFAULT_CONNECT_TIMEOUT_BROWSER,\n  DEFAULT_CONNECT_TIMEOUT_NODE,\n  DEFAULT_READ_TIMEOUT_BROWSER,\n  DEFAULT_READ_TIMEOUT_NODE,\n  DEFAULT_WRITE_TIMEOUT_BROWSER,\n  DEFAULT_WRITE_TIMEOUT_NODE,\n  DeserializationError,\n  DetailedApiError,\n  ErrorWithStackTrace,\n  IndexAlreadyExistsError,\n  IndexNotFoundError,\n  IndicesInSameAppError,\n  LogLevelEnum,\n  RetryError,\n  createAlgoliaAgent,\n  createAuth,\n  createBrowserLocalStorageCache,\n  createFallbackableCache,\n  createIterablePromise,\n  createMemoryCache,\n  createNullCache,\n  createNullLogger,\n  createStatefulHost,\n  createTransporter,\n  deserializeFailure,\n  deserializeSuccess,\n  getAlgoliaAgent,\n  isNetworkError,\n  isRetryable,\n  isSuccess,\n  serializeData,\n  serializeHeaders,\n  serializeQueryParameters,\n  serializeUrl,\n  shuffle,\n  stackFrameWithoutCredentials,\n  stackTraceWithoutCredentials\n};\n//# sourceMappingURL=common.js.map","function m(){function r(t){return new Promise(s=>{let e=new XMLHttpRequest;e.open(t.method,t.url,!0),Object.keys(t.headers).forEach(n=>e.setRequestHeader(n,t.headers[n]));let i=(n,a)=>setTimeout(()=>{e.abort(),s({status:0,content:a,isTimedOut:!0})},n),u=i(t.connectTimeout,\"Connection timeout\"),o;e.onreadystatechange=()=>{e.readyState>e.OPENED&&o===void 0&&(clearTimeout(u),o=i(t.responseTimeout,\"Socket timeout\"))},e.onerror=()=>{e.status===0&&(clearTimeout(u),clearTimeout(o),s({content:e.responseText||\"Network request failed\",status:e.status,isTimedOut:!1}))},e.onload=()=>{clearTimeout(u),clearTimeout(o),s({content:e.responseText,status:e.status,isTimedOut:!1})},e.send(t.data)})}return{send:r}}export{m as createXhrRequester};\n//# sourceMappingURL=requester.xhr.js.map","import { jsx as u } from \"react/jsx-runtime\";\nimport { useMemo as c, Children as x, isValidElement as l } from \"react\";\nfunction m({ template: e, children: s, Container: n = \"div\", className: t }) {\n  const d = c(() => p(e), [e]), i = {};\n  return x.forEach(s || [], (r) => {\n    l(r) && r.type === f && r.props.name && (i[r.props.name] = r.props.children);\n  }), u(n, { className: t, children: d.map((r) => r.text || i[r.field]) });\n}\nm.Field = f;\nfunction f({ children: e }) {\n  return u(\"span\", { children: e });\n}\nconst o = /%([A-Z0-9_]+)%/g;\nfunction p(e) {\n  if (!e)\n    return [];\n  const s = [];\n  let n = 0;\n  for (let t = o.exec(e); t !== null; t = o.exec(e))\n    n !== t.index && s.push({ text: e.substr(n, t.index - n) }), n = o.lastIndex, s.push({ field: t[1] });\n  return n !== e.length && s.push({ text: e.substr(n, e.length - n) }), s;\n}\nexport {\n  m as CommandSentence\n};\n//# sourceMappingURL=command-sentence.js.map\n","import { getObjectType } from './getObjectType.js';\n\nfunction checkRendering(rendering, usage) {\n    if (rendering === undefined || typeof rendering !== 'function') {\n        throw new Error(\"The render function is not valid (received type \".concat(getObjectType(rendering), \").\\n\\n\").concat(usage));\n    }\n}\n\nexport { checkRendering };\n","function getObjectType(object) {\n    return Object.prototype.toString.call(object).slice(8, -1);\n}\n\nexport { getObjectType };\n","function createDocumentationLink(param) {\n    var name = param.name, _param_connector = param.connector, connector = _param_connector === void 0 ? false : _param_connector;\n    return [\n        'https://www.algolia.com/doc/api-reference/widgets/',\n        name,\n        '/js/',\n        connector ? '#connector' : ''\n    ].join('');\n}\nfunction createDocumentationMessageGenerator() {\n    for(var _len = arguments.length, widgets = new Array(_len), _key = 0; _key < _len; _key++){\n        widgets[_key] = arguments[_key];\n    }\n    var links = widgets.map(function(widget) {\n        return createDocumentationLink(widget);\n    }).join(', ');\n    return function(message) {\n        return [\n            message,\n            \"See documentation: \".concat(links)\n        ].filter(Boolean).join('\\n\\n');\n    };\n}\n\nexport { createDocumentationLink, createDocumentationMessageGenerator };\n","import { _ as _$4 } from '@swc/helpers/cjs/_define_property.cjs';\nimport { _ as _$1 } from '@swc/helpers/cjs/_extends.cjs';\nimport { _ } from '@swc/helpers/cjs/_object_destructuring_empty.cjs';\nimport { _ as _$3 } from '@swc/helpers/cjs/_object_spread.cjs';\nimport { _ as _$2 } from '@swc/helpers/cjs/_object_spread_props.cjs';\nimport { escape } from './escape-html.js';\nimport { isPlainObject } from './isPlainObject.js';\n\nvar TAG_PLACEHOLDER = {\n    highlightPreTag: '__ais-highlight__',\n    highlightPostTag: '__/ais-highlight__'\n};\nvar TAG_REPLACEMENT = {\n    highlightPreTag: '<mark>',\n    highlightPostTag: '</mark>'\n};\n// @MAJOR: in the future, this should only escape, not replace\nfunction replaceTagsAndEscape(value) {\n    return escape(value).replace(new RegExp(TAG_PLACEHOLDER.highlightPreTag, 'g'), TAG_REPLACEMENT.highlightPreTag).replace(new RegExp(TAG_PLACEHOLDER.highlightPostTag, 'g'), TAG_REPLACEMENT.highlightPostTag);\n}\nfunction recursiveEscape(input) {\n    if (isPlainObject(input) && typeof input.value !== 'string') {\n        return Object.keys(input).reduce(function(acc, key) {\n            return _$2(_$3({}, acc), _$4({}, key, recursiveEscape(input[key])));\n        }, {});\n    }\n    if (Array.isArray(input)) {\n        return input.map(recursiveEscape);\n    }\n    return _$2(_$3({}, input), {\n        value: replaceTagsAndEscape(input.value)\n    });\n}\nfunction escapeHits(hits) {\n    if (hits.__escaped === undefined) {\n        // We don't override the value on hit because it will mutate the raw results\n        // instead we make a shallow copy and we assign the escaped values on it.\n        hits = hits.map(function(_0) {\n            _(_0); var hit = _$1({}, _0);\n            if (hit._highlightResult) {\n                hit._highlightResult = recursiveEscape(hit._highlightResult);\n            }\n            if (hit._snippetResult) {\n                hit._snippetResult = recursiveEscape(hit._snippetResult);\n            }\n            return hit;\n        });\n        hits.__escaped = true;\n    }\n    return hits;\n}\nfunction escapeFacets(facetHits) {\n    return facetHits.map(function(h) {\n        return _$2(_$3({}, h), {\n            highlighted: replaceTagsAndEscape(h.highlighted)\n        });\n    });\n}\n\nexport { TAG_PLACEHOLDER, TAG_REPLACEMENT, escapeFacets, escapeHits };\n","/**\n * This implementation is taken from Lodash implementation.\n * See: https://github.com/lodash/lodash/blob/4.17.11-npm/escape.js\n */ // Used to map characters to HTML entities.\nvar htmlEntities = {\n    '&': '&amp;',\n    '<': '&lt;',\n    '>': '&gt;',\n    '\"': '&quot;',\n    \"'\": '&#39;'\n};\n// Used to match HTML entities and HTML characters.\nvar regexUnescapedHtml = /[&<>\"']/g;\nvar regexHasUnescapedHtml = RegExp(regexUnescapedHtml.source);\n/**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n */ function escape(value) {\n    return value && regexHasUnescapedHtml.test(value) ? value.replace(regexUnescapedHtml, function(character) {\n        return htmlEntities[character];\n    }) : value;\n}\n/**\n * This implementation is taken from Lodash implementation.\n * See: https://github.com/lodash/lodash/blob/4.17.11-npm/unescape.js\n */ // Used to map HTML entities to characters.\nvar htmlCharacters = {\n    '&amp;': '&',\n    '&lt;': '<',\n    '&gt;': '>',\n    '&quot;': '\"',\n    '&#39;': \"'\"\n};\n// Used to match HTML entities and HTML characters.\nvar regexEscapedHtml = /&(amp|quot|lt|gt|#39);/g;\nvar regexHasEscapedHtml = RegExp(regexEscapedHtml.source);\n/**\n * Converts the HTML entities \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * characters.\n */ function unescape(value) {\n    return value && regexHasEscapedHtml.test(value) ? value.replace(regexEscapedHtml, function(character) {\n        return htmlCharacters[character];\n    }) : value;\n}\n\nexport { escape, unescape };\n","// We aren't using the native `Array.prototype.find` because the refactor away from Lodash is not\n// published as a major version.\n// Relying on the `find` polyfill on user-land, which before was only required for niche use-cases,\n// was decided as too risky.\n// @MAJOR Replace with the native `Array.prototype.find` method\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find\nfunction find(items, predicate) {\n    var value;\n    for(var i = 0; i < items.length; i++){\n        value = items[i];\n        // inlined for performance: if (Call(predicate, thisArg, [value, i, list])) {\n        if (predicate(value, i, items)) {\n            return value;\n        }\n    }\n    return undefined;\n}\n\nexport { find };\n","function isIndexWidget(widget) {\n    return widget.$$type === 'ais.index';\n}\n\nexport { isIndexWidget };\n","import { _ } from '@swc/helpers/cjs/_type_of.cjs';\n\n/**\n * This implementation is taken from Lodash implementation.\n * See: https://github.com/lodash/lodash/blob/master/isPlainObject.js\n */ function getTag(value) {\n    if (value === null) {\n        return value === undefined ? '[object Undefined]' : '[object Null]';\n    }\n    return Object.prototype.toString.call(value);\n}\nfunction isObjectLike(value) {\n    return (typeof value === \"undefined\" ? \"undefined\" : _(value)) === 'object' && value !== null;\n}\n/**\n * Checks if `value` is a plain object.\n *\n * A plain object is an object created by the `Object`\n * constructor or with a `[[Prototype]]` of `null`.\n */ function isPlainObject(value) {\n    if (!isObjectLike(value) || getTag(value) !== '[object Object]') {\n        return false;\n    }\n    if (Object.getPrototypeOf(value) === null) {\n        return true;\n    }\n    var proto = value;\n    while(Object.getPrototypeOf(proto) !== null){\n        proto = Object.getPrototypeOf(proto);\n    }\n    return Object.getPrototypeOf(value) === proto;\n}\n\nexport { isPlainObject };\n","import { _ as _$1 } from '@swc/helpers/cjs/_object_spread.cjs';\nimport { _ } from '@swc/helpers/cjs/_object_without_properties.cjs';\nimport { findIndex } from './findIndex.js';\nimport { uniq } from './uniq.js';\n\nvar mergeWithRest = function mergeWithRest(left, right) {\n    right.facets; right.disjunctiveFacets; right.facetsRefinements; right.facetsExcludes; right.disjunctiveFacetsRefinements; right.numericRefinements; right.tagRefinements; right.hierarchicalFacets; right.hierarchicalFacetsRefinements; right.ruleContexts; var rest = _(right, [\n        \"facets\",\n        \"disjunctiveFacets\",\n        \"facetsRefinements\",\n        \"facetsExcludes\",\n        \"disjunctiveFacetsRefinements\",\n        \"numericRefinements\",\n        \"tagRefinements\",\n        \"hierarchicalFacets\",\n        \"hierarchicalFacetsRefinements\",\n        \"ruleContexts\"\n    ]);\n    return left.setQueryParameters(rest);\n};\n// Merge facets\nvar mergeFacets = function mergeFacets(left, right) {\n    return right.facets.reduce(function(_, name) {\n        return _.addFacet(name);\n    }, left);\n};\nvar mergeDisjunctiveFacets = function mergeDisjunctiveFacets(left, right) {\n    return right.disjunctiveFacets.reduce(function(_, name) {\n        return _.addDisjunctiveFacet(name);\n    }, left);\n};\nvar mergeHierarchicalFacets = function mergeHierarchicalFacets(left, right) {\n    return left.setQueryParameters({\n        hierarchicalFacets: right.hierarchicalFacets.reduce(function(facets, facet) {\n            var index = findIndex(facets, function(_) {\n                return _.name === facet.name;\n            });\n            if (index === -1) {\n                return facets.concat(facet);\n            }\n            var nextFacets = facets.slice();\n            nextFacets.splice(index, 1, facet);\n            return nextFacets;\n        }, left.hierarchicalFacets)\n    });\n};\n// Merge facet refinements\nvar mergeTagRefinements = function mergeTagRefinements(left, right) {\n    return right.tagRefinements.reduce(function(_, value) {\n        return _.addTagRefinement(value);\n    }, left);\n};\nvar mergeFacetRefinements = function mergeFacetRefinements(left, right) {\n    return left.setQueryParameters({\n        facetsRefinements: _$1({}, left.facetsRefinements, right.facetsRefinements)\n    });\n};\nvar mergeFacetsExcludes = function mergeFacetsExcludes(left, right) {\n    return left.setQueryParameters({\n        facetsExcludes: _$1({}, left.facetsExcludes, right.facetsExcludes)\n    });\n};\nvar mergeDisjunctiveFacetsRefinements = function mergeDisjunctiveFacetsRefinements(left, right) {\n    return left.setQueryParameters({\n        disjunctiveFacetsRefinements: _$1({}, left.disjunctiveFacetsRefinements, right.disjunctiveFacetsRefinements)\n    });\n};\nvar mergeNumericRefinements = function mergeNumericRefinements(left, right) {\n    return left.setQueryParameters({\n        numericRefinements: _$1({}, left.numericRefinements, right.numericRefinements)\n    });\n};\nvar mergeHierarchicalFacetsRefinements = function mergeHierarchicalFacetsRefinements(left, right) {\n    return left.setQueryParameters({\n        hierarchicalFacetsRefinements: _$1({}, left.hierarchicalFacetsRefinements, right.hierarchicalFacetsRefinements)\n    });\n};\nvar mergeRuleContexts = function mergeRuleContexts(left, right) {\n    var ruleContexts = uniq([].concat(left.ruleContexts).concat(right.ruleContexts).filter(Boolean));\n    if (ruleContexts.length > 0) {\n        return left.setQueryParameters({\n            ruleContexts: ruleContexts\n        });\n    }\n    return left;\n};\nvar mergeSearchParameters = function mergeSearchParameters() {\n    for(var _len = arguments.length, parameters = new Array(_len), _key = 0; _key < _len; _key++){\n        parameters[_key] = arguments[_key];\n    }\n    return parameters.reduce(function(left, right) {\n        var hierarchicalFacetsRefinementsMerged = mergeHierarchicalFacetsRefinements(left, right);\n        var hierarchicalFacetsMerged = mergeHierarchicalFacets(hierarchicalFacetsRefinementsMerged, right);\n        var tagRefinementsMerged = mergeTagRefinements(hierarchicalFacetsMerged, right);\n        var numericRefinementsMerged = mergeNumericRefinements(tagRefinementsMerged, right);\n        var disjunctiveFacetsRefinementsMerged = mergeDisjunctiveFacetsRefinements(numericRefinementsMerged, right);\n        var facetsExcludesMerged = mergeFacetsExcludes(disjunctiveFacetsRefinementsMerged, right);\n        var facetRefinementsMerged = mergeFacetRefinements(facetsExcludesMerged, right);\n        var disjunctiveFacetsMerged = mergeDisjunctiveFacets(facetRefinementsMerged, right);\n        var ruleContextsMerged = mergeRuleContexts(disjunctiveFacetsMerged, right);\n        var facetsMerged = mergeFacets(ruleContextsMerged, right);\n        return mergeWithRest(facetsMerged, right);\n    });\n};\n\nexport { mergeSearchParameters };\n","// We aren't using the native `Array.prototype.findIndex` because the refactor away from Lodash is not\n// published as a major version.\n// Relying on the `findIndex` polyfill on user-land, which before was only required for niche use-cases,\n// was decided as too risky.\n// @MAJOR Replace with the native `Array.prototype.findIndex` method\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex\nfunction findIndex(array, comparator) {\n    if (!Array.isArray(array)) {\n        return -1;\n    }\n    for(var i = 0; i < array.length; i++){\n        if (comparator(array[i])) {\n            return i;\n        }\n    }\n    return -1;\n}\n\nexport { findIndex };\n","function uniq(array) {\n    return array.filter(function(value, index, self) {\n        return self.indexOf(value) === index;\n    });\n}\n\nexport { uniq };\n","function noop() {\n    for(var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++){\n        _args[_key] = arguments[_key];\n    }\n}\n\nexport { noop };\n","function serializePayload(payload) {\n    return btoa(encodeURIComponent(JSON.stringify(payload)));\n}\nfunction deserializePayload(serialized) {\n    return JSON.parse(decodeURIComponent(atob(serialized)));\n}\n\nexport { deserializePayload, serializePayload };\n","import { _ as _$2 } from '@swc/helpers/cjs/_define_property.cjs';\nimport { _ as _$1 } from '@swc/helpers/cjs/_object_spread.cjs';\nimport { _ } from '@swc/helpers/cjs/_object_spread_props.cjs';\nimport algoliasearchHelper from 'algoliasearch-helper';\nimport { isPlainObject } from '../../lib/utils/isPlainObject.js';\nimport { createDocumentationMessageGenerator } from '../../lib/utils/documentation.js';\nimport { mergeSearchParameters } from '../../lib/utils/mergeSearchParameters.js';\nimport { noop } from '../../lib/utils/noop.js';\n\nvar withUsage = createDocumentationMessageGenerator({\n    name: 'configure',\n    connector: true\n});\nfunction getInitialSearchParameters(state, widgetParams) {\n    // We leverage the helper internals to remove the `widgetParams` from\n    // the state. The function `setQueryParameters` omits the values that\n    // are `undefined` on the next state.\n    return state.setQueryParameters(Object.keys(widgetParams.searchParameters).reduce(function(acc, key) {\n        return _(_$1({}, acc), _$2({}, key, undefined));\n    }, {}));\n}\nvar connectConfigure = function connectConfigure() {\n    var renderFn = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : noop, unmountFn = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : noop;\n    return function(widgetParams) {\n        if (!widgetParams || !isPlainObject(widgetParams.searchParameters)) {\n            throw new Error(withUsage('The `searchParameters` option expects an object.'));\n        }\n        var connectorState = {};\n        function refine(helper) {\n            return function(searchParameters) {\n                // Merge new `searchParameters` with the ones set from other widgets\n                var actualState = getInitialSearchParameters(helper.state, widgetParams);\n                var nextSearchParameters = mergeSearchParameters(actualState, new algoliasearchHelper.SearchParameters(searchParameters));\n                // Update original `widgetParams.searchParameters` to the new refined one\n                widgetParams.searchParameters = searchParameters;\n                // Trigger a search with the resolved search parameters\n                helper.setState(nextSearchParameters).search();\n            };\n        }\n        return {\n            $$type: 'ais.configure',\n            init: function init(initOptions) {\n                var instantSearchInstance = initOptions.instantSearchInstance;\n                renderFn(_(_$1({}, this.getWidgetRenderState(initOptions)), {\n                    instantSearchInstance: instantSearchInstance\n                }), true);\n            },\n            render: function render(renderOptions) {\n                var instantSearchInstance = renderOptions.instantSearchInstance;\n                renderFn(_(_$1({}, this.getWidgetRenderState(renderOptions)), {\n                    instantSearchInstance: instantSearchInstance\n                }), false);\n            },\n            dispose: function dispose(param) {\n                var state = param.state;\n                unmountFn();\n                return getInitialSearchParameters(state, widgetParams);\n            },\n            getRenderState: function getRenderState(renderState, renderOptions) {\n                var _renderState_configure;\n                var widgetRenderState = this.getWidgetRenderState(renderOptions);\n                return _(_$1({}, renderState), {\n                    configure: _(_$1({}, widgetRenderState), {\n                        widgetParams: _(_$1({}, widgetRenderState.widgetParams), {\n                            searchParameters: mergeSearchParameters(new algoliasearchHelper.SearchParameters((_renderState_configure = renderState.configure) === null || _renderState_configure === void 0 ? void 0 : _renderState_configure.widgetParams.searchParameters), new algoliasearchHelper.SearchParameters(widgetRenderState.widgetParams.searchParameters)).getQueryParams()\n                        })\n                    })\n                });\n            },\n            getWidgetRenderState: function getWidgetRenderState(param) {\n                var helper = param.helper;\n                if (!connectorState.refine) {\n                    connectorState.refine = refine(helper);\n                }\n                return {\n                    refine: connectorState.refine,\n                    widgetParams: widgetParams\n                };\n            },\n            getWidgetSearchParameters: function getWidgetSearchParameters(state, param) {\n                var uiState = param.uiState;\n                return mergeSearchParameters(state, new algoliasearchHelper.SearchParameters(_$1({}, uiState.configure, widgetParams.searchParameters)));\n            },\n            getWidgetUiState: function getWidgetUiState(uiState) {\n                return _(_$1({}, uiState), {\n                    configure: _$1({}, uiState.configure, widgetParams.searchParameters)\n                });\n            }\n        };\n    };\n};\n\nexport { connectConfigure as default };\n","import { _ } from '@swc/helpers/cjs/_object_spread.cjs';\nimport { useConfigure } from '../connectors/useConfigure.js';\n\nfunction Configure(props) {\n    useConfigure(_({}, props), {\n        $$widgetType: 'ais.configure'\n    });\n    return null;\n}\n\nexport { Configure };\n","import connectConfigure from 'instantsearch.js/es/connectors/configure/connectConfigure.js';\nimport { useConnector } from '../hooks/useConnector.js';\n\nfunction useConfigure(props, additionalWidgetProperties) {\n    return useConnector(connectConfigure, {\n        searchParameters: props\n    }, additionalWidgetProperties);\n}\n\nexport { useConfigure };\n","// eslint-disable-next-line no-restricted-globals\n/**\n * Runs code on browser environments safely.\n */ function safelyRunOnBrowser(callback) {\n    var fallback = (arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {\n        fallback: function fallback() {\n            return undefined;\n        }\n    }).fallback;\n    // eslint-disable-next-line no-restricted-globals\n    if (typeof window === 'undefined') {\n        return fallback();\n    }\n    // eslint-disable-next-line no-restricted-globals\n    return callback({\n        window: window\n    });\n}\n\nexport { safelyRunOnBrowser };\n","// typed as any, since it accepts the _real_ js clients, not the interface we otherwise expect\nfunction getAppIdAndApiKey(searchClient) {\n    if (searchClient.appId && searchClient.apiKey) {\n        // searchClient v5\n        return [\n            searchClient.appId,\n            searchClient.apiKey\n        ];\n    } else if (searchClient.transporter) {\n        // searchClient v4 or v5\n        var transporter = searchClient.transporter;\n        var headers = transporter.headers || transporter.baseHeaders;\n        var queryParameters = transporter.queryParameters || transporter.baseQueryParameters;\n        var APP_ID = 'x-algolia-application-id';\n        var API_KEY = 'x-algolia-api-key';\n        var appId = headers[APP_ID] || queryParameters[APP_ID];\n        var apiKey = headers[API_KEY] || queryParameters[API_KEY];\n        return [\n            appId,\n            apiKey\n        ];\n    } else {\n        // searchClient v3\n        return [\n            searchClient.applicationID,\n            searchClient.apiKey\n        ];\n    }\n}\n\nexport { getAppIdAndApiKey };\n","import { _ as _$2 } from '@swc/helpers/cjs/_object_spread.cjs';\nimport { _ as _$3 } from '@swc/helpers/cjs/_object_spread_props.cjs';\nimport { _ as _$1 } from '@swc/helpers/cjs/_sliced_to_array.cjs';\nimport { _ } from '@swc/helpers/cjs/_to_consumable_array.cjs';\nimport { createUUID } from '../lib/utils/uuid.js';\nimport { getInsightsAnonymousUserTokenInternal } from '../helpers/get-insights-anonymous-user-token.js';\nimport { safelyRunOnBrowser } from '../lib/utils/safelyRunOnBrowser.js';\nimport { getAppIdAndApiKey } from '../lib/utils/getAppIdAndApiKey.js';\nimport { find } from '../lib/utils/find.js';\nimport { noop } from '../lib/utils/noop.js';\n\nvar ALGOLIA_INSIGHTS_VERSION = '2.17.2';\nvar ALGOLIA_INSIGHTS_SRC = \"https://cdn.jsdelivr.net/npm/search-insights@\".concat(ALGOLIA_INSIGHTS_VERSION, \"/dist/search-insights.min.js\");\nfunction createInsightsMiddleware() {\n    var props = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};\n    var _insightsClient = props.insightsClient, insightsInitParams = props.insightsInitParams, onEvent = props.onEvent, _props_$$internal = props.$$internal, $$internal = _props_$$internal === void 0 ? false : _props_$$internal, _props_$$automatic = props.$$automatic, $$automatic = _props_$$automatic === void 0 ? false : _props_$$automatic;\n    var potentialInsightsClient = _insightsClient;\n    if (!_insightsClient && _insightsClient !== null) {\n        safelyRunOnBrowser(function(param) {\n            var window = param.window;\n            var pointer = window.AlgoliaAnalyticsObject || 'aa';\n            if (typeof pointer === 'string') {\n                potentialInsightsClient = window[pointer];\n            }\n            if (!potentialInsightsClient) {\n                window.AlgoliaAnalyticsObject = pointer;\n                if (!window[pointer]) {\n                    window[pointer] = function() {\n                        for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n                            args[_key] = arguments[_key];\n                        }\n                        if (!window[pointer].queue) {\n                            window[pointer].queue = [];\n                        }\n                        window[pointer].queue.push(args);\n                    };\n                    window[pointer].version = ALGOLIA_INSIGHTS_VERSION;\n                    window[pointer].shouldAddScript = true;\n                }\n                potentialInsightsClient = window[pointer];\n            }\n        });\n    }\n    // if still no insightsClient was found, we use a noop\n    var insightsClient = potentialInsightsClient || noop;\n    return function(param) {\n        var instantSearchInstance = param.instantSearchInstance;\n        var _instantSearchInstance;\n        // remove existing default insights middleware\n        // user-provided insights middleware takes precedence\n        var existingInsightsMiddlewares = instantSearchInstance.middleware.filter(function(m) {\n            return m.instance.$$type === 'ais.insights' && m.instance.$$internal;\n        }).map(function(m) {\n            return m.creator;\n        });\n        (_instantSearchInstance = instantSearchInstance).unuse.apply(_instantSearchInstance, _(existingInsightsMiddlewares));\n        var _getAppIdAndApiKey = _$1(getAppIdAndApiKey(instantSearchInstance.client), 2), appId = _getAppIdAndApiKey[0], apiKey = _getAppIdAndApiKey[1];\n        var queuedInitParams = undefined;\n        var queuedUserToken = undefined;\n        var userTokenBeforeInit = undefined;\n        var queue = insightsClient.queue;\n        if (Array.isArray(queue)) {\n            var ref;\n            // Context: The umd build of search-insights is asynchronously loaded by the snippet.\n            //\n            // When user calls `aa('setUserToken', 'my-user-token')` before `search-insights` is loaded,\n            // ['setUserToken', 'my-user-token'] gets stored in `aa.queue`.\n            // Whenever `search-insights` is finally loaded, it will process the queue.\n            //\n            // But here's the reason why we handle it here:\n            // At this point, even though `search-insights` is not loaded yet,\n            // we still want to read the token from the queue.\n            // Otherwise, the first search call will be fired without the token.\n            ref = _$1([\n                'setUserToken',\n                'init'\n            ].map(function(key) {\n                var _ref = _$1(find(queue.slice().reverse(), function(param) {\n                    var _param = _$1(param, 1), method = _param[0];\n                    return method === key;\n                }) || [], 2), value = _ref[1];\n                return value;\n            }), 2), queuedUserToken = ref[0], queuedInitParams = ref[1];\n        }\n        // If user called `aa('setUserToken')` before creating the Insights middleware,\n        // we temporarily store the token and set it later on.\n        //\n        // Otherwise, the `init` call might override them with anonymous user token.\n        insightsClient('getUserToken', null, function(_error, userToken) {\n            userTokenBeforeInit = normalizeUserToken(userToken);\n        });\n        // Only `init` if the `insightsInitParams` option is passed or\n        // if the `insightsClient` version doesn't supports optional `init` calling.\n        if (insightsInitParams || !isModernInsightsClient(insightsClient)) {\n            insightsClient('init', _$2({\n                appId: appId,\n                apiKey: apiKey,\n                partial: true\n            }, insightsInitParams));\n        }\n        var initialParameters;\n        var helper;\n        return {\n            $$type: 'ais.insights',\n            $$internal: $$internal,\n            $$automatic: $$automatic,\n            onStateChange: function onStateChange() {},\n            subscribe: function subscribe() {\n                if (!insightsClient.shouldAddScript) return;\n                var errorMessage = '[insights middleware]: could not load search-insights.js. Please load it manually following https://alg.li/insights-init';\n                try {\n                    var script = document.createElement('script');\n                    script.async = true;\n                    script.src = ALGOLIA_INSIGHTS_SRC;\n                    script.onerror = function() {\n                        instantSearchInstance.emit('error', new Error(errorMessage));\n                    };\n                    document.body.appendChild(script);\n                    insightsClient.shouldAddScript = false;\n                } catch (cause) {\n                    insightsClient.shouldAddScript = false;\n                    instantSearchInstance.emit('error', new Error(errorMessage));\n                }\n            },\n            started: function started() {\n                insightsClient('addAlgoliaAgent', 'insights-middleware');\n                helper = instantSearchInstance.mainHelper;\n                var queueAtStart = insightsClient.queue;\n                if (Array.isArray(queueAtStart)) {\n                    var ref;\n                    ref = _$1([\n                        'setUserToken',\n                        'init'\n                    ].map(function(key) {\n                        var _ref = _$1(find(queueAtStart.slice().reverse(), function(param) {\n                            var _param = _$1(param, 1), method = _param[0];\n                            return method === key;\n                        }) || [], 2), value = _ref[1];\n                        return value;\n                    }), 2), queuedUserToken = ref[0], queuedInitParams = ref[1];\n                }\n                initialParameters = getInitialParameters(instantSearchInstance);\n                // We don't want to force clickAnalytics when the insights is enabled from the search response.\n                // This means we don't enable insights for indices that don't opt in\n                if (!$$automatic) {\n                    helper.overrideStateWithoutTriggeringChangeEvent(_$3(_$2({}, helper.state), {\n                        clickAnalytics: true\n                    }));\n                }\n                if (!$$internal) {\n                    instantSearchInstance.scheduleSearch();\n                }\n                var setUserTokenToSearch = function setUserTokenToSearch(userToken) {\n                    var immediate = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;\n                    var normalizedUserToken = normalizeUserToken(userToken);\n                    if (!normalizedUserToken) {\n                        return;\n                    }\n                    var existingToken = helper.state.userToken;\n                    function applyToken() {\n                        helper.overrideStateWithoutTriggeringChangeEvent(_$3(_$2({}, helper.state), {\n                            userToken: normalizedUserToken\n                        }));\n                        if (existingToken && existingToken !== userToken) {\n                            instantSearchInstance.scheduleSearch();\n                        }\n                    }\n                    // Delay the token application to the next render cycle\n                    if (!immediate) {\n                        setTimeout(applyToken, 0);\n                    } else {\n                        applyToken();\n                    }\n                };\n                function setUserToken(token) {\n                    setUserTokenToSearch(token, true);\n                    insightsClient('setUserToken', token);\n                }\n                var anonymousUserToken = undefined;\n                var anonymousTokenFromInsights = getInsightsAnonymousUserTokenInternal();\n                if (anonymousTokenFromInsights) {\n                    // When `aa('init', { ... })` is called, it creates an anonymous user token in cookie.\n                    // We can set it as userToken on instantsearch and insights. If it's not set as an insights\n                    // userToken before a sendEvent, insights automatically generates a new anonymous token,\n                    // causing a state change and an unnecessary query on instantsearch.\n                    anonymousUserToken = anonymousTokenFromInsights;\n                } else {\n                    var token = \"anonymous-\".concat(createUUID());\n                    anonymousUserToken = token;\n                }\n                var userTokenFromInit;\n                // With SSR, the token could be be set on the state. We make sure\n                // that insights is in sync with that token since, there is no\n                // insights lib on the server.\n                var tokenFromSearchParameters = initialParameters.userToken;\n                // When the first query is sent, the token is possibly not yet set by\n                // the insights onChange callbacks (if insights isn't yet loaded).\n                // It is explicitly being set here so that the first query has the\n                // initial tokens set and ensure a second query isn't automatically\n                // made when the onChange callback actually changes the state.\n                if (insightsInitParams === null || insightsInitParams === void 0 ? void 0 : insightsInitParams.userToken) {\n                    userTokenFromInit = insightsInitParams.userToken;\n                }\n                if (userTokenFromInit) {\n                    setUserToken(userTokenFromInit);\n                } else if (tokenFromSearchParameters) {\n                    setUserToken(tokenFromSearchParameters);\n                } else if (userTokenBeforeInit) {\n                    setUserToken(userTokenBeforeInit);\n                } else if (queuedUserToken) {\n                    setUserToken(queuedUserToken);\n                } else if (anonymousUserToken) {\n                    setUserToken(anonymousUserToken);\n                    if ((insightsInitParams === null || insightsInitParams === void 0 ? void 0 : insightsInitParams.useCookie) || (queuedInitParams === null || queuedInitParams === void 0 ? void 0 : queuedInitParams.useCookie)) {\n                        saveTokenAsCookie(anonymousUserToken, (insightsInitParams === null || insightsInitParams === void 0 ? void 0 : insightsInitParams.cookieDuration) || (queuedInitParams === null || queuedInitParams === void 0 ? void 0 : queuedInitParams.cookieDuration));\n                    }\n                }\n                // This updates userToken which is set explicitly by `aa('setUserToken', userToken)`\n                insightsClient('onUserTokenChange', function(token) {\n                    return setUserTokenToSearch(token, true);\n                }, {\n                    immediate: true\n                });\n                var insightsClientWithLocalCredentials = insightsClient;\n                if (isModernInsightsClient(insightsClient)) {\n                    insightsClientWithLocalCredentials = function insightsClientWithLocalCredentials(method, payload) {\n                        var _getAppIdAndApiKey = _$1(getAppIdAndApiKey(instantSearchInstance.client), 2), latestAppId = _getAppIdAndApiKey[0], latestApiKey = _getAppIdAndApiKey[1];\n                        var extraParams = {\n                            headers: {\n                                'X-Algolia-Application-Id': latestAppId,\n                                'X-Algolia-API-Key': latestApiKey\n                            }\n                        };\n                        // @ts-ignore we are calling this only when we know that the client actually is correct\n                        return insightsClient(method, payload, extraParams);\n                    };\n                }\n                var viewedObjectIDs = new Set();\n                var lastQueryId;\n                instantSearchInstance.mainHelper.derivedHelpers[0].on('result', function(param) {\n                    var results = param.results;\n                    if (results && (!results.queryID || results.queryID !== lastQueryId)) {\n                        lastQueryId = results.queryID;\n                        viewedObjectIDs.clear();\n                    }\n                });\n                instantSearchInstance.sendEventToInsights = function(event) {\n                    if (onEvent) {\n                        onEvent(event, insightsClientWithLocalCredentials);\n                    } else if (event.insightsMethod) {\n                        if (event.insightsMethod === 'viewedObjectIDs') {\n                            var payload = event.payload;\n                            var difference = payload.objectIDs.filter(function(objectID) {\n                                return !viewedObjectIDs.has(objectID);\n                            });\n                            if (difference.length === 0) {\n                                return;\n                            }\n                            difference.forEach(function(objectID) {\n                                return viewedObjectIDs.add(objectID);\n                            });\n                            payload.objectIDs = difference;\n                        }\n                        // Source is used to differentiate events sent by instantsearch from those sent manually.\n                        event.payload.algoliaSource = [\n                            'instantsearch'\n                        ];\n                        if ($$automatic) {\n                            event.payload.algoliaSource.push('instantsearch-automatic');\n                        }\n                        if (event.eventModifier === 'internal') {\n                            event.payload.algoliaSource.push('instantsearch-internal');\n                        }\n                        insightsClientWithLocalCredentials(event.insightsMethod, event.payload);\n                    } else ;\n                };\n            },\n            unsubscribe: function unsubscribe() {\n                insightsClient('onUserTokenChange', undefined);\n                instantSearchInstance.sendEventToInsights = noop;\n                if (helper && initialParameters) {\n                    helper.overrideStateWithoutTriggeringChangeEvent(_$2({}, helper.state, initialParameters));\n                    instantSearchInstance.scheduleSearch();\n                }\n            }\n        };\n    };\n}\nfunction getInitialParameters(instantSearchInstance) {\n    var _instantSearchInstance__initialResults_instantSearchInstance_indexName, _instantSearchInstance__initialResults;\n    // in SSR, the initial state we use in this domain is set on the main index\n    var stateFromInitialResults = ((_instantSearchInstance__initialResults = instantSearchInstance._initialResults) === null || _instantSearchInstance__initialResults === void 0 ? void 0 : (_instantSearchInstance__initialResults_instantSearchInstance_indexName = _instantSearchInstance__initialResults[instantSearchInstance.indexName]) === null || _instantSearchInstance__initialResults_instantSearchInstance_indexName === void 0 ? void 0 : _instantSearchInstance__initialResults_instantSearchInstance_indexName.state) || {};\n    var stateFromHelper = instantSearchInstance.mainHelper.state;\n    return {\n        userToken: stateFromInitialResults.userToken || stateFromHelper.userToken,\n        clickAnalytics: stateFromInitialResults.clickAnalytics || stateFromHelper.clickAnalytics\n    };\n}\nfunction saveTokenAsCookie(token, cookieDuration) {\n    var MONTH = 30 * 24 * 60 * 60 * 1000;\n    var d = new Date();\n    d.setTime(d.getTime() + (cookieDuration || MONTH * 6));\n    var expires = \"expires=\".concat(d.toUTCString());\n    document.cookie = \"_ALGOLIA=\".concat(token, \";\").concat(expires, \";path=/\");\n}\n/**\n * Determines if a given insights `client` supports the optional call to `init`\n * and the ability to set credentials via extra parameters when sending events.\n */ function isModernInsightsClient(client) {\n    var _split_map = _$1((client.version || '').split('.').map(Number), 2), major = _split_map[0], minor = _split_map[1];\n    /* eslint-disable @typescript-eslint/naming-convention */ var v3 = major >= 3;\n    var v2_6 = major === 2 && minor >= 6;\n    var v1_10 = major === 1 && minor >= 10;\n    /* eslint-enable @typescript-eslint/naming-convention */ return v3 || v2_6 || v1_10;\n}\n/**\n * While `search-insights` supports both string and number user tokens,\n * the Search API only accepts strings. This function normalizes the user token.\n */ function normalizeUserToken(userToken) {\n    if (!userToken) {\n        return undefined;\n    }\n    return typeof userToken === 'number' ? userToken.toString() : userToken;\n}\n\nexport { createInsightsMiddleware };\n","import { _ } from '@swc/helpers/cjs/_type_of.cjs';\n\nvar ANONYMOUS_TOKEN_COOKIE_KEY = '_ALGOLIA';\nfunction getCookie(name) {\n    if ((typeof document === \"undefined\" ? \"undefined\" : _(document)) !== 'object' || typeof document.cookie !== 'string') {\n        return undefined;\n    }\n    var prefix = \"\".concat(name, \"=\");\n    var cookies = document.cookie.split(';');\n    for(var i = 0; i < cookies.length; i++){\n        var cookie = cookies[i];\n        while(cookie.charAt(0) === ' '){\n            cookie = cookie.substring(1);\n        }\n        if (cookie.indexOf(prefix) === 0) {\n            return cookie.substring(prefix.length, cookie.length);\n        }\n    }\n    return undefined;\n}\nfunction getInsightsAnonymousUserTokenInternal() {\n    return getCookie(ANONYMOUS_TOKEN_COOKIE_KEY);\n}\n/**\n * @deprecated This function will be still supported in 4.x releases, but not further. It is replaced by the `insights` middleware. For more information, visit https://www.algolia.com/doc/guides/getting-insights-and-analytics/search-analytics/click-through-and-conversions/how-to/send-click-and-conversion-events-with-instantsearch/js/\n */ function getInsightsAnonymousUserToken() {\n    return getInsightsAnonymousUserTokenInternal();\n}\n\nexport { ANONYMOUS_TOKEN_COOKIE_KEY, getInsightsAnonymousUserToken as default, getInsightsAnonymousUserTokenInternal };\n","/**\n * Create UUID according to\n * https://www.ietf.org/rfc/rfc4122.txt.\n *\n * @returns Generated UUID.\n */ function createUUID() {\n    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n        /* eslint-disable no-bitwise */ var r = Math.random() * 16 | 0;\n        var v = c === 'x' ? r : r & 0x3 | 0x8;\n        /* eslint-enable */ return v.toString(16);\n    });\n}\n\nexport { createUUID };\n","function createInitArgs(instantSearchInstance, parent, uiState) {\n    var helper = parent.getHelper();\n    return {\n        uiState: uiState,\n        helper: helper,\n        parent: parent,\n        instantSearchInstance: instantSearchInstance,\n        state: helper.state,\n        renderState: instantSearchInstance.renderState,\n        templatesConfig: instantSearchInstance.templatesConfig,\n        createURL: parent.createURL,\n        scopedResults: [],\n        searchMetadata: {\n            isSearchStalled: instantSearchInstance.status === 'stalled'\n        },\n        status: instantSearchInstance.status,\n        error: instantSearchInstance.error\n    };\n}\nfunction createRenderArgs(instantSearchInstance, parent, widget) {\n    var results = parent.getResultsForWidget(widget);\n    var helper = parent.getHelper();\n    return {\n        helper: helper,\n        parent: parent,\n        instantSearchInstance: instantSearchInstance,\n        results: results,\n        scopedResults: parent.getScopedResults(),\n        state: results && '_state' in results ? results._state : helper.state,\n        renderState: instantSearchInstance.renderState,\n        templatesConfig: instantSearchInstance.templatesConfig,\n        createURL: parent.createURL,\n        searchMetadata: {\n            isSearchStalled: instantSearchInstance.status === 'stalled'\n        },\n        status: instantSearchInstance.status,\n        error: instantSearchInstance.error\n    };\n}\n\nexport { createInitArgs, createRenderArgs };\n","import { createInitArgs } from '../lib/utils/render-args.js';\nimport { safelyRunOnBrowser } from '../lib/utils/safelyRunOnBrowser.js';\nimport { getAlgoliaAgent } from '../lib/utils/getAlgoliaAgent.js';\n\nfunction extractWidgetPayload(widgets, instantSearchInstance, payload) {\n    var initOptions = createInitArgs(instantSearchInstance, instantSearchInstance.mainIndex, instantSearchInstance._initialUiState);\n    widgets.forEach(function(widget) {\n        var widgetParams = {};\n        if (widget.getWidgetRenderState) {\n            var renderState = widget.getWidgetRenderState(initOptions);\n            if (renderState && renderState.widgetParams) {\n                // casting, as we just earlier checked widgetParams exists, and thus an object\n                widgetParams = renderState.widgetParams;\n            }\n        }\n        // since we destructure in all widgets, the parameters with defaults are set to \"undefined\"\n        var params = Object.keys(widgetParams).filter(function(key) {\n            return widgetParams[key] !== undefined;\n        });\n        payload.widgets.push({\n            type: widget.$$type,\n            widgetType: widget.$$widgetType,\n            params: params\n        });\n        if (widget.$$type === 'ais.index') {\n            extractWidgetPayload(widget.getWidgets(), instantSearchInstance, payload);\n        }\n    });\n}\nfunction isMetadataEnabled() {\n    return safelyRunOnBrowser(function(param) {\n        var window = param.window;\n        var _window_navigator_userAgent, _window_navigator;\n        return ((_window_navigator = window.navigator) === null || _window_navigator === void 0 ? void 0 : (_window_navigator_userAgent = _window_navigator.userAgent) === null || _window_navigator_userAgent === void 0 ? void 0 : _window_navigator_userAgent.indexOf('Algolia Crawler')) > -1;\n    }, {\n        fallback: function fallback() {\n            return false;\n        }\n    });\n}\n/**\n * Exposes the metadata of mounted widgets in a custom\n * `<meta name=\"instantsearch:widgets\" />` tag. The metadata per widget is:\n * - applied parameters\n * - widget name\n * - connector name\n */ function createMetadataMiddleware() {\n    var _ref = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, _ref_$$internal = _ref.$$internal, $$internal = _ref_$$internal === void 0 ? false : _ref_$$internal;\n    return function(param) {\n        var instantSearchInstance = param.instantSearchInstance;\n        var payload = {\n            widgets: []\n        };\n        var payloadContainer = document.createElement('meta');\n        var refNode = document.querySelector('head');\n        payloadContainer.name = 'instantsearch:widgets';\n        return {\n            $$type: 'ais.metadata',\n            $$internal: $$internal,\n            onStateChange: function onStateChange() {},\n            subscribe: function subscribe() {\n                // using setTimeout here to delay extraction until widgets have been added in a tick (e.g. Vue)\n                setTimeout(function() {\n                    payload.ua = getAlgoliaAgent(instantSearchInstance.client);\n                    extractWidgetPayload(instantSearchInstance.mainIndex.getWidgets(), instantSearchInstance, payload);\n                    instantSearchInstance.middleware.forEach(function(middleware) {\n                        return payload.widgets.push({\n                            middleware: true,\n                            type: middleware.instance.$$type,\n                            internal: middleware.instance.$$internal\n                        });\n                    });\n                    payloadContainer.content = JSON.stringify(payload);\n                    refNode.appendChild(payloadContainer);\n                }, 0);\n            },\n            started: function started() {},\n            unsubscribe: function unsubscribe() {\n                payloadContainer.remove();\n            }\n        };\n    };\n}\n\nexport { createMetadataMiddleware, isMetadataEnabled };\n","function getAlgoliaAgent(client) {\n    var clientTyped = client;\n    return clientTyped.transporter && clientTyped.transporter.userAgent ? clientTyped.transporter.userAgent.value : clientTyped._ua;\n}\n\nexport { getAlgoliaAgent };\n","import { _ as _$1 } from '@swc/helpers/cjs/_class_call_check.cjs';\nimport { _ } from '@swc/helpers/cjs/_create_class.cjs';\nimport { _ as _$2 } from '@swc/helpers/cjs/_define_property.cjs';\nimport qs from 'qs';\nimport { safelyRunOnBrowser } from '../utils/safelyRunOnBrowser.js';\n\nvar setWindowTitle = function setWindowTitle(title) {\n    if (title) {\n        // This function is only executed on browsers so we can disable this check.\n        // eslint-disable-next-line no-restricted-globals\n        window.document.title = title;\n    }\n};\nvar BrowserHistory = /*#__PURE__*/ function() {\n    function BrowserHistory(param) {\n        var _this = this;\n        var windowTitle = param.windowTitle, _param_writeDelay = param.writeDelay, writeDelay = _param_writeDelay === void 0 ? 400 : _param_writeDelay, createURL = param.createURL, parseURL = param.parseURL, getLocation = param.getLocation, start = param.start, dispose = param.dispose, push = param.push, cleanUrlOnDispose = param.cleanUrlOnDispose;\n        _$1(this, BrowserHistory);\n        _$2(this, \"$$type\", 'ais.browser');\n        /**\n   * Transforms a UI state into a title for the page.\n   */ _$2(this, \"windowTitle\", void 0);\n        /**\n   * Time in milliseconds before performing a write in the history.\n   * It prevents from adding too many entries in the history and\n   * makes the back button more usable.\n   *\n   * @default 400\n   */ _$2(this, \"writeDelay\", void 0);\n        /**\n   * Creates a full URL based on the route state.\n   * The storage adaptor maps all syncable keys to the query string of the URL.\n   */ _$2(this, \"_createURL\", void 0);\n        /**\n   * Parses the URL into a route state.\n   * It should be symmetrical to `createURL`.\n   */ _$2(this, \"parseURL\", void 0);\n        /**\n   * Returns the location to store in the history.\n   * @default () => window.location\n   */ _$2(this, \"getLocation\", void 0);\n        _$2(this, \"writeTimer\", void 0);\n        _$2(this, \"_onPopState\", void 0);\n        /**\n   * Indicates if last action was back/forward in the browser.\n   */ _$2(this, \"inPopState\", false);\n        /**\n   * Indicates whether the history router is disposed or not.\n   */ _$2(this, \"isDisposed\", false);\n        /**\n   * Indicates the window.history.length before the last call to\n   * window.history.pushState (called in `write`).\n   * It allows to determine if a `pushState` has been triggered elsewhere,\n   * and thus to prevent the `write` method from calling `pushState`.\n   */ _$2(this, \"latestAcknowledgedHistory\", 0);\n        _$2(this, \"_start\", void 0);\n        _$2(this, \"_dispose\", void 0);\n        _$2(this, \"_push\", void 0);\n        _$2(this, \"_cleanUrlOnDispose\", void 0);\n        this.windowTitle = windowTitle;\n        this.writeTimer = undefined;\n        this.writeDelay = writeDelay;\n        this._createURL = createURL;\n        this.parseURL = parseURL;\n        this.getLocation = getLocation;\n        this._start = start;\n        this._dispose = dispose;\n        this._push = push;\n        this._cleanUrlOnDispose = typeof cleanUrlOnDispose === 'undefined' ? true : cleanUrlOnDispose;\n        safelyRunOnBrowser(function(param) {\n            var window1 = param.window;\n            var title = _this.windowTitle && _this.windowTitle(_this.read());\n            setWindowTitle(title);\n            _this.latestAcknowledgedHistory = window1.history.length;\n        });\n    }\n    _(BrowserHistory, [\n        {\n            key: \"read\",\n            value: /**\n   * Reads the URL and returns a syncable UI search state.\n   */ function read() {\n                return this.parseURL({\n                    qsModule: qs,\n                    location: this.getLocation()\n                });\n            }\n        },\n        {\n            key: \"write\",\n            value: /**\n   * Pushes a search state into the URL.\n   */ function write(routeState) {\n                var _this = this;\n                safelyRunOnBrowser(function(param) {\n                    var window1 = param.window;\n                    var url = _this.createURL(routeState);\n                    var title = _this.windowTitle && _this.windowTitle(routeState);\n                    if (_this.writeTimer) {\n                        clearTimeout(_this.writeTimer);\n                    }\n                    _this.writeTimer = setTimeout(function() {\n                        setWindowTitle(title);\n                        if (_this.shouldWrite(url)) {\n                            if (_this._push) {\n                                _this._push(url);\n                            } else {\n                                window1.history.pushState(routeState, title || '', url);\n                            }\n                            _this.latestAcknowledgedHistory = window1.history.length;\n                        }\n                        _this.inPopState = false;\n                        _this.writeTimer = undefined;\n                    }, _this.writeDelay);\n                });\n            }\n        },\n        {\n            key: \"onUpdate\",\n            value: /**\n   * Sets a callback on the `onpopstate` event of the history API of the current page.\n   * It enables the URL sync to keep track of the changes.\n   */ function onUpdate(callback) {\n                var _this = this;\n                if (this._start) {\n                    this._start(function() {\n                        callback(_this.read());\n                    });\n                }\n                this._onPopState = function() {\n                    if (_this.writeTimer) {\n                        clearTimeout(_this.writeTimer);\n                        _this.writeTimer = undefined;\n                    }\n                    _this.inPopState = true;\n                    // We always read the state from the URL because the state of the history\n                    // can be incorect in some cases (e.g. using React Router).\n                    callback(_this.read());\n                };\n                safelyRunOnBrowser(function(param) {\n                    var window1 = param.window;\n                    window1.addEventListener('popstate', _this._onPopState);\n                });\n            }\n        },\n        {\n            key: \"createURL\",\n            value: /**\n   * Creates a complete URL from a given syncable UI state.\n   *\n   * It always generates the full URL, not a relative one.\n   * This allows to handle cases like using a <base href>.\n   * See: https://github.com/algolia/instantsearch/issues/790\n   */ function createURL(routeState) {\n                var url = this._createURL({\n                    qsModule: qs,\n                    routeState: routeState,\n                    location: this.getLocation()\n                });\n                return url;\n            }\n        },\n        {\n            key: \"dispose\",\n            value: /**\n   * Removes the event listener and cleans up the URL.\n   */ function dispose() {\n                var _this = this;\n                if (this._dispose) {\n                    this._dispose();\n                }\n                this.isDisposed = true;\n                safelyRunOnBrowser(function(param) {\n                    var window1 = param.window;\n                    if (_this._onPopState) {\n                        window1.removeEventListener('popstate', _this._onPopState);\n                    }\n                });\n                if (this.writeTimer) {\n                    clearTimeout(this.writeTimer);\n                }\n                if (this._cleanUrlOnDispose) {\n                    this.write({});\n                }\n            }\n        },\n        {\n            key: \"start\",\n            value: function start() {\n                this.isDisposed = false;\n            }\n        },\n        {\n            key: \"shouldWrite\",\n            value: function shouldWrite(url) {\n                var _this = this;\n                return safelyRunOnBrowser(function(param) {\n                    var window1 = param.window;\n                    // When disposed and the cleanUrlOnDispose is set to false, we do not want to write the URL.\n                    if (_this.isDisposed && !_this._cleanUrlOnDispose) {\n                        return false;\n                    }\n                    // We do want to `pushState` if:\n                    // - the router is not disposed, IS.js needs to update the URL\n                    // OR\n                    // - the last write was from InstantSearch.js\n                    // (unlike a SPA, where it would have last written)\n                    var lastPushWasByISAfterDispose = !(_this.isDisposed && _this.latestAcknowledgedHistory !== window1.history.length);\n                    return(// When the last state change was through popstate, the IS.js state changes,\n                    // but that should not write the URL.\n                    !_this.inPopState && // When the previous pushState after dispose was by IS.js, we want to write the URL.\n                    lastPushWasByISAfterDispose && // When the URL is the same as the current one, we do not want to write it.\n                    url !== window1.location.href);\n                });\n            }\n        }\n    ]);\n    return BrowserHistory;\n}();\nfunction historyRouter() {\n    var _ref = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, _ref_createURL = _ref.createURL, createURL = _ref_createURL === void 0 ? function(param) {\n        var qsModule = param.qsModule, routeState = param.routeState, location = param.location;\n        var protocol = location.protocol, hostname = location.hostname, _location_port = location.port, port = _location_port === void 0 ? '' : _location_port, pathname = location.pathname, hash = location.hash;\n        var queryString = qsModule.stringify(routeState);\n        var portWithPrefix = port === '' ? '' : \":\".concat(port);\n        // IE <= 11 has no proper `location.origin` so we cannot rely on it.\n        if (!queryString) {\n            return \"\".concat(protocol, \"//\").concat(hostname).concat(portWithPrefix).concat(pathname).concat(hash);\n        }\n        return \"\".concat(protocol, \"//\").concat(hostname).concat(portWithPrefix).concat(pathname, \"?\").concat(queryString).concat(hash);\n    } : _ref_createURL, _ref_parseURL = _ref.parseURL, parseURL = _ref_parseURL === void 0 ? function(param) {\n        var qsModule = param.qsModule, location = param.location;\n        // `qs` by default converts arrays with more than 20 items to an object.\n        // We want to avoid this because the data structure manipulated can therefore vary.\n        // Setting the limit to `100` seems a good number because the engine's default is 100\n        // (it can go up to 1000 but it is very unlikely to select more than 100 items in the UI).\n        //\n        // Using an `arrayLimit` of `n` allows `n + 1` items.\n        //\n        // See:\n        //   - https://github.com/ljharb/qs#parsing-arrays\n        //   - https://www.algolia.com/doc/api-reference/api-parameters/maxValuesPerFacet/\n        return qsModule.parse(location.search.slice(1), {\n            arrayLimit: 99\n        });\n    } : _ref_parseURL, _ref_writeDelay = _ref.writeDelay, writeDelay = _ref_writeDelay === void 0 ? 400 : _ref_writeDelay, windowTitle = _ref.windowTitle, _ref_getLocation = _ref.getLocation, getLocation = _ref_getLocation === void 0 ? function() {\n        return safelyRunOnBrowser(function(param) {\n            var window1 = param.window;\n            return window1.location;\n        }, {\n            fallback: function fallback() {\n                throw new Error('You need to provide `getLocation` to the `history` router in environments where `window` does not exist.');\n            }\n        });\n    } : _ref_getLocation, start = _ref.start, dispose = _ref.dispose, push = _ref.push, cleanUrlOnDispose = _ref.cleanUrlOnDispose;\n    return new BrowserHistory({\n        createURL: createURL,\n        parseURL: parseURL,\n        writeDelay: writeDelay,\n        windowTitle: windowTitle,\n        getLocation: getLocation,\n        start: start,\n        dispose: dispose,\n        push: push,\n        cleanUrlOnDispose: cleanUrlOnDispose\n    });\n}\n\nexport { historyRouter as default };\n","import { _ as _$2 } from '@swc/helpers/cjs/_define_property.cjs';\nimport { _ as _$1 } from '@swc/helpers/cjs/_object_spread.cjs';\nimport { _ } from '@swc/helpers/cjs/_object_spread_props.cjs';\nimport { _ as _$3 } from '@swc/helpers/cjs/_object_without_properties.cjs';\n\nfunction getIndexStateWithoutConfigure(uiState) {\n    uiState.configure; var trackedUiState = _$3(uiState, [\n        \"configure\"\n    ]);\n    return trackedUiState;\n}\n// technically a URL could contain any key, since users provide it,\n// which is why the input to this function is UiState, not something\n// which excludes \"configure\" as this function does.\nfunction simpleStateMapping() {\n    return {\n        $$type: 'ais.simple',\n        stateToRoute: function stateToRoute(uiState) {\n            return Object.keys(uiState).reduce(function(state, indexId) {\n                return _(_$1({}, state), _$2({}, indexId, getIndexStateWithoutConfigure(uiState[indexId])));\n            }, {});\n        },\n        routeToState: function routeToState() {\n            var routeState = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};\n            return Object.keys(routeState).reduce(function(state, indexId) {\n                return _(_$1({}, state), _$2({}, indexId, getIndexStateWithoutConfigure(routeState[indexId])));\n            }, {});\n        }\n    };\n}\n\nexport { simpleStateMapping as default };\n","function isPrimitive(obj) {\n    return obj !== Object(obj);\n}\nfunction isEqual(first, second) {\n    if (first === second) {\n        return true;\n    }\n    if (isPrimitive(first) || isPrimitive(second) || typeof first === 'function' || typeof second === 'function') {\n        return first === second;\n    }\n    if (Object.keys(first).length !== Object.keys(second).length) {\n        return false;\n    }\n    var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n    try {\n        // @TODO avoid for..of because of the large polyfill\n        // eslint-disable-next-line no-restricted-syntax\n        for(var _iterator = Object.keys(first)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n            var key = _step.value;\n            if (!(key in second)) {\n                return false;\n            }\n            if (!isEqual(first[key], second[key])) {\n                return false;\n            }\n        }\n    } catch (err) {\n        _didIteratorError = true;\n        _iteratorError = err;\n    } finally{\n        try {\n            if (!_iteratorNormalCompletion && _iterator.return != null) {\n                _iterator.return();\n            }\n        } finally{\n            if (_didIteratorError) {\n                throw _iteratorError;\n            }\n        }\n    }\n    return true;\n}\n\nexport { isEqual };\n","import { _ as _$2 } from '@swc/helpers/cjs/_define_property.cjs';\nimport { _ } from '@swc/helpers/cjs/_object_spread.cjs';\nimport { _ as _$1 } from '@swc/helpers/cjs/_object_spread_props.cjs';\nimport historyRouter from '../lib/routers/history.js';\nimport simpleStateMapping from '../lib/stateMappings/simple.js';\nimport { isEqual } from '../lib/utils/isEqual.js';\n\nvar createRouterMiddleware = function createRouterMiddleware() {\n    var props = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};\n    var _props_router = props.router, router = _props_router === void 0 ? historyRouter() : _props_router, _props_stateMapping = props.// We have to cast simpleStateMapping as a StateMapping<TUiState, TRouteState>.\n    // this is needed because simpleStateMapping is StateMapping<TUiState, TUiState>.\n    // While it's only used when UiState and RouteState are the same, unfortunately\n    // TypeScript still considers them separate types.\n    stateMapping, stateMapping = _props_stateMapping === void 0 ? simpleStateMapping() : _props_stateMapping, _props_$$internal = props.$$internal, $$internal = _props_$$internal === void 0 ? false : _props_$$internal;\n    return function(param) {\n        var instantSearchInstance = param.instantSearchInstance;\n        function topLevelCreateURL(nextState) {\n            var previousUiState = // If only the mainIndex is initialized, we don't yet know what other\n            // index widgets are used. Therefore we fall back to the initialUiState.\n            // We can't indiscriminately use the initialUiState because then we\n            // reintroduce state that was changed by the user.\n            // When there are no widgets, we are sure the user can't yet have made\n            // any changes.\n            instantSearchInstance.mainIndex.getWidgets().length === 0 ? instantSearchInstance._initialUiState : instantSearchInstance.mainIndex.getWidgetUiState({});\n            var uiState = Object.keys(nextState).reduce(function(acc, indexId) {\n                return _$1(_({}, acc), _$2({}, indexId, nextState[indexId]));\n            }, previousUiState);\n            var route = stateMapping.stateToRoute(uiState);\n            return router.createURL(route);\n        }\n        // casting to UiState here to keep createURL unaware of custom UiState\n        // (as long as it's an object, it's ok)\n        instantSearchInstance._createURL = topLevelCreateURL;\n        var lastRouteState = undefined;\n        var initialUiState = instantSearchInstance._initialUiState;\n        return {\n            $$type: \"ais.router({router:\".concat(router.$$type || '__unknown__', \", stateMapping:\").concat(stateMapping.$$type || '__unknown__', \"})\"),\n            $$internal: $$internal,\n            onStateChange: function onStateChange(param) {\n                var uiState = param.uiState;\n                var routeState = stateMapping.stateToRoute(uiState);\n                if (lastRouteState === undefined || !isEqual(lastRouteState, routeState)) {\n                    router.write(routeState);\n                    lastRouteState = routeState;\n                }\n            },\n            subscribe: function subscribe() {\n                instantSearchInstance._initialUiState = _({}, initialUiState, stateMapping.routeToState(router.read()));\n                router.onUpdate(function(route) {\n                    if (instantSearchInstance.mainIndex.getWidgets().length > 0) {\n                        instantSearchInstance.setUiState(stateMapping.routeToState(route));\n                    }\n                });\n            },\n            started: function started() {\n                var _router_start;\n                (_router_start = router.start) === null || _router_start === void 0 ? void 0 : _router_start.call(router);\n            },\n            unsubscribe: function unsubscribe() {\n                router.dispose();\n            }\n        };\n    };\n};\n\nexport { createRouterMiddleware };\n","var id = 0;\nfunction addWidgetId(widget) {\n    if (widget.dependsOn !== 'recommend') {\n        return;\n    }\n    widget.$$id = id++;\n}\nfunction resetWidgetId() {\n    id = 0;\n}\n\nexport { addWidgetId, resetWidgetId };\n","import { _ } from '@swc/helpers/cjs/_to_consumable_array.cjs';\n\nvar nextMicroTask = Promise.resolve();\nfunction defer(callback) {\n    var progress = null;\n    var cancelled = false;\n    var fn = function fn() {\n        for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n            args[_key] = arguments[_key];\n        }\n        if (progress !== null) {\n            return;\n        }\n        progress = nextMicroTask.then(function() {\n            progress = null;\n            if (cancelled) {\n                cancelled = false;\n                return;\n            }\n            callback.apply(void 0, _(args));\n        });\n    };\n    fn.wait = function() {\n        if (progress === null) {\n            throw new Error('The deferred function should be called before calling `wait()`');\n        }\n        return progress;\n    };\n    fn.cancel = function() {\n        if (progress === null) {\n            return;\n        }\n        cancelled = true;\n    };\n    return fn;\n}\n\nexport { defer };\n","function resolveSearchParameters(current) {\n    var parent = current.getParent();\n    var states = [\n        current.getHelper().state\n    ];\n    while(parent !== null){\n        states = [\n            parent.getHelper().state\n        ].concat(states);\n        parent = parent.getParent();\n    }\n    return states;\n}\n\nexport { resolveSearchParameters };\n","import { _ } from '@swc/helpers/cjs/_define_property.cjs';\nimport { _ as _$5 } from '@swc/helpers/cjs/_instanceof.cjs';\nimport { _ as _$3 } from '@swc/helpers/cjs/_object_spread.cjs';\nimport { _ as _$2 } from '@swc/helpers/cjs/_object_spread_props.cjs';\nimport { _ as _$4 } from '@swc/helpers/cjs/_object_without_properties.cjs';\nimport { _ as _$1 } from '@swc/helpers/cjs/_to_consumable_array.cjs';\nimport algoliasearchHelper from 'algoliasearch-helper';\nimport { addWidgetId } from '../../lib/utils/addWidgetId.js';\nimport { isIndexWidget } from '../../lib/utils/isIndexWidget.js';\nimport { defer } from '../../lib/utils/defer.js';\nimport { resolveSearchParameters } from '../../lib/utils/resolveSearchParameters.js';\nimport { createInitArgs, createRenderArgs } from '../../lib/utils/render-args.js';\nimport { createDocumentationMessageGenerator } from '../../lib/utils/documentation.js';\nimport { mergeSearchParameters } from '../../lib/utils/mergeSearchParameters.js';\n\nvar withUsage = createDocumentationMessageGenerator({\n    name: 'index-widget'\n});\n/**\n * This is the same content as helper._change / setState, but allowing for extra\n * UiState to be synchronized.\n * see: https://github.com/algolia/algoliasearch-helper-js/blob/6b835ffd07742f2d6b314022cce6848f5cfecd4a/src/algoliasearch.helper.js#L1311-L1324\n */ function privateHelperSetState(helper, param) {\n    var state = param.state, recommendState = param.recommendState, isPageReset = param.isPageReset, _uiState = param._uiState;\n    if (state !== helper.state) {\n        helper.state = state;\n        helper.emit('change', {\n            state: helper.state,\n            results: helper.lastResults,\n            isPageReset: isPageReset,\n            _uiState: _uiState\n        });\n    }\n    if (recommendState !== helper.recommendState) {\n        helper.recommendState = recommendState;\n    // eslint-disable-next-line no-warning-comments\n    // TODO: emit \"change\" event when events for Recommend are implemented\n    }\n}\nfunction getLocalWidgetsUiState(widgets, widgetStateOptions) {\n    var initialUiState = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n    return widgets.reduce(function(uiState, widget) {\n        if (isIndexWidget(widget)) {\n            return uiState;\n        }\n        if (!widget.getWidgetUiState && !widget.getWidgetState) {\n            return uiState;\n        }\n        if (widget.getWidgetUiState) {\n            return widget.getWidgetUiState(uiState, widgetStateOptions);\n        }\n        return widget.getWidgetState(uiState, widgetStateOptions);\n    }, initialUiState);\n}\nfunction getLocalWidgetsSearchParameters(widgets, widgetSearchParametersOptions) {\n    var initialSearchParameters = widgetSearchParametersOptions.initialSearchParameters, rest = _$4(widgetSearchParametersOptions, [\n        \"initialSearchParameters\"\n    ]);\n    return widgets.reduce(function(state, widget) {\n        if (!widget.getWidgetSearchParameters || isIndexWidget(widget)) {\n            return state;\n        }\n        if (widget.dependsOn === 'search' && widget.getWidgetParameters) {\n            return widget.getWidgetParameters(state, rest);\n        }\n        return widget.getWidgetSearchParameters(state, rest);\n    }, initialSearchParameters);\n}\nfunction getLocalWidgetsRecommendParameters(widgets, widgetRecommendParametersOptions) {\n    var initialRecommendParameters = widgetRecommendParametersOptions.initialRecommendParameters, rest = _$4(widgetRecommendParametersOptions, [\n        \"initialRecommendParameters\"\n    ]);\n    return widgets.reduce(function(state, widget) {\n        if (!isIndexWidget(widget) && widget.dependsOn === 'recommend' && widget.getWidgetParameters) {\n            return widget.getWidgetParameters(state, rest);\n        }\n        return state;\n    }, initialRecommendParameters);\n}\nfunction resetPageFromWidgets(widgets) {\n    var indexWidgets = widgets.filter(isIndexWidget);\n    if (indexWidgets.length === 0) {\n        return;\n    }\n    indexWidgets.forEach(function(widget) {\n        var widgetHelper = widget.getHelper();\n        privateHelperSetState(widgetHelper, {\n            state: widgetHelper.state.resetPage(),\n            recommendState: widgetHelper.recommendState,\n            isPageReset: true\n        });\n        resetPageFromWidgets(widget.getWidgets());\n    });\n}\nfunction resolveScopedResultsFromWidgets(widgets) {\n    var indexWidgets = widgets.filter(isIndexWidget);\n    return indexWidgets.reduce(function(scopedResults, current) {\n        var _scopedResults;\n        return (_scopedResults = scopedResults).concat.apply(_scopedResults, [\n            {\n                indexId: current.getIndexId(),\n                results: current.getResults(),\n                helper: current.getHelper()\n            }\n        ].concat(_$1(resolveScopedResultsFromWidgets(current.getWidgets()))));\n    }, []);\n}\nvar index = function index(widgetParams) {\n    if (widgetParams === undefined || widgetParams.indexName === undefined && !widgetParams.EXPERIMENTAL_isolated) {\n        throw new Error(withUsage('The `indexName` option is required.'));\n    }\n    // When isolated=true, we use an empty string as the default indexName.\n    // This is intentional: isolated indices do not require a real index name.\n    var _widgetParams_indexName = widgetParams.indexName, indexName = _widgetParams_indexName === void 0 ? '' : _widgetParams_indexName, _widgetParams_indexId = widgetParams.indexId, indexId = _widgetParams_indexId === void 0 ? indexName : _widgetParams_indexId, tmp = widgetParams.EXPERIMENTAL_isolated, isolated = tmp === void 0 ? false : tmp;\n    var localWidgets = [];\n    var localUiState = {};\n    var localInstantSearchInstance = null;\n    var localParent = null;\n    var helper = null;\n    var derivedHelper = null;\n    var lastValidSearchParameters = null;\n    var hasRecommendWidget = false;\n    var hasSearchWidget = false;\n    return {\n        $$type: 'ais.index',\n        $$widgetType: 'ais.index',\n        _isolated: isolated,\n        getIndexName: function getIndexName() {\n            return indexName;\n        },\n        getIndexId: function getIndexId() {\n            return indexId;\n        },\n        getHelper: function getHelper() {\n            return helper;\n        },\n        getResults: function getResults() {\n            if (!(derivedHelper === null || derivedHelper === void 0 ? void 0 : derivedHelper.lastResults)) return null;\n            // To make the UI optimistic, we patch the state to display to the current\n            // one instead of the one associated with the latest results.\n            // This means user-driven UI changes (e.g., checked checkbox) are reflected\n            // immediately instead of waiting for Algolia to respond, regardless of\n            // the status of the network request.\n            derivedHelper.lastResults._state = helper.state;\n            return derivedHelper.lastResults;\n        },\n        getResultsForWidget: function getResultsForWidget(widget) {\n            if (widget.dependsOn !== 'recommend' || isIndexWidget(widget) || widget.$$id === undefined) {\n                return this.getResults();\n            }\n            if (!(helper === null || helper === void 0 ? void 0 : helper.lastRecommendResults)) {\n                return null;\n            }\n            return helper.lastRecommendResults[widget.$$id];\n        },\n        getPreviousState: function getPreviousState() {\n            return lastValidSearchParameters;\n        },\n        getScopedResults: function getScopedResults() {\n            var widgetParent = this.getParent();\n            var widgetSiblings;\n            if (widgetParent) {\n                widgetSiblings = widgetParent.getWidgets();\n            } else if (indexName.length === 0) {\n                // The widget is the root but has no index name:\n                // we resolve results from its children index widgets\n                widgetSiblings = this.getWidgets();\n            } else {\n                // The widget is the root and has an index name:\n                // we consider itself as the only sibling\n                widgetSiblings = [\n                    this\n                ];\n            }\n            return resolveScopedResultsFromWidgets(widgetSiblings);\n        },\n        getParent: function getParent() {\n            return isolated ? null : localParent;\n        },\n        createURL: function createURL(nextState) {\n            if (typeof nextState === 'function') {\n                return localInstantSearchInstance._createURL(_({}, indexId, nextState(localUiState)));\n            }\n            return localInstantSearchInstance._createURL(_({}, indexId, getLocalWidgetsUiState(localWidgets, {\n                searchParameters: nextState,\n                helper: helper\n            })));\n        },\n        scheduleLocalSearch: defer(function() {\n            if (isolated) {\n                helper === null || helper === void 0 ? void 0 : helper.search();\n            }\n        }),\n        getWidgets: function getWidgets() {\n            return localWidgets;\n        },\n        addWidgets: function addWidgets(widgets) {\n            var _this = this;\n            if (!Array.isArray(widgets)) {\n                throw new Error(withUsage('The `addWidgets` method expects an array of widgets.'));\n            }\n            var flatWidgets = widgets.reduce(function(acc, w) {\n                return acc.concat(Array.isArray(w) ? w : [\n                    w\n                ]);\n            }, []);\n            if (flatWidgets.some(function(widget) {\n                return typeof widget.init !== 'function' && typeof widget.render !== 'function';\n            })) {\n                throw new Error(withUsage('The widget definition expects a `render` and/or an `init` method.'));\n            }\n            flatWidgets.forEach(function(widget) {\n                widget.parent = _this;\n                if (isIndexWidget(widget)) {\n                    return;\n                }\n                if (localInstantSearchInstance && widget.dependsOn === 'recommend') {\n                    localInstantSearchInstance._hasRecommendWidget = true;\n                } else if (localInstantSearchInstance) {\n                    localInstantSearchInstance._hasSearchWidget = true;\n                } else if (widget.dependsOn === 'recommend') {\n                    hasRecommendWidget = true;\n                } else {\n                    hasSearchWidget = true;\n                }\n                addWidgetId(widget);\n            });\n            localWidgets = localWidgets.concat(flatWidgets);\n            if (localInstantSearchInstance && Boolean(flatWidgets.length)) {\n                privateHelperSetState(helper, {\n                    state: getLocalWidgetsSearchParameters(localWidgets, {\n                        uiState: localUiState,\n                        initialSearchParameters: helper.state\n                    }),\n                    recommendState: getLocalWidgetsRecommendParameters(localWidgets, {\n                        uiState: localUiState,\n                        initialRecommendParameters: helper.recommendState\n                    }),\n                    _uiState: localUiState\n                });\n                // We compute the render state before calling `init` in a separate loop\n                // to construct the whole render state object that is then passed to\n                // `init`.\n                flatWidgets.forEach(function(widget) {\n                    if (widget.getRenderState) {\n                        var renderState = widget.getRenderState(localInstantSearchInstance.renderState[_this.getIndexId()] || {}, createInitArgs(localInstantSearchInstance, _this, localInstantSearchInstance._initialUiState));\n                        storeRenderState({\n                            renderState: renderState,\n                            instantSearchInstance: localInstantSearchInstance,\n                            parent: _this\n                        });\n                    }\n                });\n                flatWidgets.forEach(function(widget) {\n                    if (widget.init) {\n                        widget.init(createInitArgs(localInstantSearchInstance, _this, localInstantSearchInstance._initialUiState));\n                    }\n                });\n                if (isolated) {\n                    this.scheduleLocalSearch();\n                } else {\n                    localInstantSearchInstance.scheduleSearch();\n                }\n            }\n            return this;\n        },\n        removeWidgets: function removeWidgets(widgets) {\n            var _this = this;\n            if (!Array.isArray(widgets)) {\n                throw new Error(withUsage('The `removeWidgets` method expects an array of widgets.'));\n            }\n            var flatWidgets = widgets.reduce(function(acc, w) {\n                return acc.concat(Array.isArray(w) ? w : [\n                    w\n                ]);\n            }, []);\n            if (flatWidgets.some(function(widget) {\n                return typeof widget.dispose !== 'function';\n            })) {\n                throw new Error(withUsage('The widget definition expects a `dispose` method.'));\n            }\n            localWidgets = localWidgets.filter(function(widget) {\n                return flatWidgets.indexOf(widget) === -1;\n            });\n            localWidgets.forEach(function(widget) {\n                widget.parent = undefined;\n                if (isIndexWidget(widget)) {\n                    return;\n                }\n                if (localInstantSearchInstance && widget.dependsOn === 'recommend') {\n                    localInstantSearchInstance._hasRecommendWidget = true;\n                } else if (localInstantSearchInstance) {\n                    localInstantSearchInstance._hasSearchWidget = true;\n                } else if (widget.dependsOn === 'recommend') {\n                    hasRecommendWidget = true;\n                } else {\n                    hasSearchWidget = true;\n                }\n            });\n            if (localInstantSearchInstance && Boolean(flatWidgets.length)) {\n                var _flatWidgets_reduce = flatWidgets.reduce(function(states, widget) {\n                    // the `dispose` method exists at this point we already assert it\n                    var next = widget.dispose({\n                        helper: helper,\n                        state: states.cleanedSearchState,\n                        recommendState: states.cleanedRecommendState,\n                        parent: _this\n                    });\n                    if (_$5(next, algoliasearchHelper.RecommendParameters)) {\n                        states.cleanedRecommendState = next;\n                    } else if (next) {\n                        states.cleanedSearchState = next;\n                    }\n                    return states;\n                }, {\n                    cleanedSearchState: helper.state,\n                    cleanedRecommendState: helper.recommendState\n                }), cleanedSearchState = _flatWidgets_reduce.cleanedSearchState, cleanedRecommendState = _flatWidgets_reduce.cleanedRecommendState;\n                var newState = localInstantSearchInstance.future.preserveSharedStateOnUnmount ? getLocalWidgetsSearchParameters(localWidgets, {\n                    uiState: localUiState,\n                    initialSearchParameters: new algoliasearchHelper.SearchParameters({\n                        index: this.getIndexName()\n                    })\n                }) : getLocalWidgetsSearchParameters(localWidgets, {\n                    uiState: getLocalWidgetsUiState(localWidgets, {\n                        searchParameters: cleanedSearchState,\n                        helper: helper\n                    }),\n                    initialSearchParameters: cleanedSearchState\n                });\n                localUiState = getLocalWidgetsUiState(localWidgets, {\n                    searchParameters: newState,\n                    helper: helper\n                });\n                helper.setState(newState);\n                helper.recommendState = cleanedRecommendState;\n                if (localWidgets.length) {\n                    if (isolated) {\n                        this.scheduleLocalSearch();\n                    } else {\n                        localInstantSearchInstance.scheduleSearch();\n                    }\n                }\n            }\n            return this;\n        },\n        init: function init(param) {\n            var _this = this;\n            var instantSearchInstance = param.instantSearchInstance, parent = param.parent, uiState = param.uiState;\n            var _instantSearchInstance__initialResults;\n            if (helper !== null) {\n                // helper is already initialized, therefore we do not need to set up\n                // any listeners\n                return;\n            }\n            localInstantSearchInstance = instantSearchInstance;\n            localParent = parent;\n            localUiState = uiState[indexId] || {};\n            // The `mainHelper` is already defined at this point. The instance is created\n            // inside InstantSearch at the `start` method, which occurs before the `init`\n            // step.\n            var mainHelper = instantSearchInstance.mainHelper;\n            var parameters = getLocalWidgetsSearchParameters(localWidgets, {\n                uiState: localUiState,\n                initialSearchParameters: new algoliasearchHelper.SearchParameters({\n                    index: indexName\n                })\n            });\n            var recommendParameters = getLocalWidgetsRecommendParameters(localWidgets, {\n                uiState: localUiState,\n                initialRecommendParameters: new algoliasearchHelper.RecommendParameters()\n            });\n            // This Helper is only used for state management we do not care about the\n            // `searchClient`. Only the \"main\" Helper created at the `InstantSearch`\n            // level is aware of the client.\n            helper = algoliasearchHelper(mainHelper.getClient(), parameters.index, parameters);\n            helper.recommendState = recommendParameters;\n            // We forward the call to `search` to the \"main\" instance of the Helper\n            // which is responsible for managing the queries (it's the only one that is\n            // aware of the `searchClient`).\n            helper.search = function() {\n                if (isolated) {\n                    instantSearchInstance.status = 'loading';\n                    _this.render({\n                        instantSearchInstance: instantSearchInstance\n                    });\n                    return instantSearchInstance.compositionID ? helper.searchWithComposition() : helper.searchOnlyWithDerivedHelpers();\n                }\n                if (instantSearchInstance.onStateChange) {\n                    instantSearchInstance.onStateChange({\n                        uiState: instantSearchInstance.mainIndex.getWidgetUiState({}),\n                        setUiState: function setUiState(nextState) {\n                            return instantSearchInstance.setUiState(nextState, false);\n                        }\n                    });\n                    // We don't trigger a search when controlled because it becomes the\n                    // responsibility of `setUiState`.\n                    return mainHelper;\n                }\n                return mainHelper.search();\n            };\n            helper.searchWithoutTriggeringOnStateChange = function() {\n                return mainHelper.search();\n            };\n            // We use the same pattern for the `searchForFacetValues`.\n            helper.searchForFacetValues = function(facetName, facetValue, maxFacetHits, userState) {\n                var state = mergeSearchParameters.apply(void 0, [\n                    mainHelper.state\n                ].concat(_$1(resolveSearchParameters(_this)))).setQueryParameters(userState);\n                return mainHelper.searchForFacetValues(facetName, facetValue, maxFacetHits, state);\n            };\n            var isolatedHelper = indexName ? helper : algoliasearchHelper({}, '__empty_index__', {});\n            var derivingHelper = isolated ? isolatedHelper : nearestIsolatedHelper(parent, mainHelper);\n            derivedHelper = derivingHelper.derive(function() {\n                return mergeSearchParameters.apply(void 0, [\n                    mainHelper.state\n                ].concat(_$1(resolveSearchParameters(_this))));\n            }, function() {\n                return _this.getHelper().recommendState;\n            });\n            var indexInitialResults = (_instantSearchInstance__initialResults = instantSearchInstance._initialResults) === null || _instantSearchInstance__initialResults === void 0 ? void 0 : _instantSearchInstance__initialResults[this.getIndexId()];\n            if (indexInitialResults === null || indexInitialResults === void 0 ? void 0 : indexInitialResults.results) {\n                // We restore the shape of the results provided to the instance to respect\n                // the helper's structure.\n                var results = new algoliasearchHelper.SearchResults(new algoliasearchHelper.SearchParameters(indexInitialResults.state), indexInitialResults.results);\n                derivedHelper.lastResults = results;\n                helper.lastResults = results;\n            }\n            if (indexInitialResults === null || indexInitialResults === void 0 ? void 0 : indexInitialResults.recommendResults) {\n                var recommendResults = new algoliasearchHelper.RecommendResults(new algoliasearchHelper.RecommendParameters({\n                    params: indexInitialResults.recommendResults.params\n                }), indexInitialResults.recommendResults.results);\n                derivedHelper.lastRecommendResults = recommendResults;\n                helper.lastRecommendResults = recommendResults;\n            }\n            // Subscribe to the Helper state changes for the page before widgets\n            // are initialized. This behavior mimics the original one of the Helper.\n            // It makes sense to replicate it at the `init` step. We have another\n            // listener on `change` below, once `init` is done.\n            helper.on('change', function(param) {\n                var isPageReset = param.isPageReset;\n                if (isPageReset) {\n                    resetPageFromWidgets(localWidgets);\n                }\n            });\n            derivedHelper.on('search', function() {\n                // The index does not manage the \"staleness\" of the search. This is the\n                // responsibility of the main instance. It does not make sense to manage\n                // it at the index level because it's either: all of them or none of them\n                // that are stalled. The queries are performed into a single network request.\n                instantSearchInstance.scheduleStalledRender();\n            });\n            derivedHelper.on('result', function(param) {\n                var results = param.results;\n                // The index does not render the results it schedules a new render\n                // to let all the other indices emit their own results. It allows us to\n                // run the render process in one pass.\n                instantSearchInstance.scheduleRender();\n                // the derived helper is the one which actually searches, but the helper\n                // which is exposed e.g. via instance.helper, doesn't search, and thus\n                // does not have access to lastResults, which it used to in pre-federated\n                // search behavior.\n                helper.lastResults = results;\n                lastValidSearchParameters = results === null || results === void 0 ? void 0 : results._state;\n            });\n            // eslint-disable-next-line no-warning-comments\n            // TODO: listen to \"result\" event when events for Recommend are implemented\n            derivedHelper.on('recommend:result', function(param) {\n                var recommend = param.recommend;\n                // The index does not render the results it schedules a new render\n                // to let all the other indices emit their own results. It allows us to\n                // run the render process in one pass.\n                instantSearchInstance.scheduleRender();\n                // the derived helper is the one which actually searches, but the helper\n                // which is exposed e.g. via instance.helper, doesn't search, and thus\n                // does not have access to lastRecommendResults.\n                helper.lastRecommendResults = recommend.results;\n            });\n            // We compute the render state before calling `init` in a separate loop\n            // to construct the whole render state object that is then passed to\n            // `init`.\n            localWidgets.forEach(function(widget) {\n                if (widget.getRenderState) {\n                    var renderState = widget.getRenderState(instantSearchInstance.renderState[_this.getIndexId()] || {}, createInitArgs(instantSearchInstance, _this, uiState));\n                    storeRenderState({\n                        renderState: renderState,\n                        instantSearchInstance: instantSearchInstance,\n                        parent: _this\n                    });\n                }\n            });\n            localWidgets.forEach(function(widget) {\n                if (widget.init) {\n                    widget.init(createInitArgs(instantSearchInstance, _this, uiState));\n                }\n            });\n            // Subscribe to the Helper state changes for the `uiState` once widgets\n            // are initialized. Until the first render, state changes are part of the\n            // configuration step. This is mainly for backward compatibility with custom\n            // widgets. When the subscription happens before the `init` step, the (static)\n            // configuration of the widget is pushed in the URL. That's what we want to avoid.\n            // https://github.com/algolia/instantsearch/pull/994/commits/4a672ae3fd78809e213de0368549ef12e9dc9454\n            helper.on('change', function(event) {\n                var state = event.state;\n                var _uiState = event._uiState;\n                localUiState = getLocalWidgetsUiState(localWidgets, {\n                    searchParameters: state,\n                    helper: helper\n                }, _uiState || {});\n                // We don't trigger an internal change when controlled because it\n                // becomes the responsibility of `setUiState`.\n                if (!instantSearchInstance.onStateChange) {\n                    instantSearchInstance.onInternalStateChange();\n                }\n            });\n            if (indexInitialResults) {\n                // If there are initial results, we're not notified of the next results\n                // because we don't trigger an initial search. We therefore need to directly\n                // schedule a render that will render the results injected on the helper.\n                instantSearchInstance.scheduleRender();\n            }\n            if (hasRecommendWidget) {\n                instantSearchInstance._hasRecommendWidget = true;\n            }\n            if (hasSearchWidget) {\n                instantSearchInstance._hasSearchWidget = true;\n            }\n        },\n        render: function render(param) {\n            var _this = this;\n            var instantSearchInstance = param.instantSearchInstance;\n            // we can't attach a listener to the error event of search, as the error\n            // then would no longer be thrown for global handlers.\n            if (instantSearchInstance.status === 'error' && !instantSearchInstance.mainHelper.hasPendingRequests() && lastValidSearchParameters) {\n                helper.setState(lastValidSearchParameters);\n            }\n            // We only render index widgets if there are no results.\n            // This makes sure `render` is never called with `results` being `null`.\n            // If it's an isolated index without an index name, we render all widgets,\n            // as there are no results to display for the isolated index itself.\n            var widgetsToRender = this.getResults() || (derivedHelper === null || derivedHelper === void 0 ? void 0 : derivedHelper.lastRecommendResults) || isolated && !indexName ? localWidgets : localWidgets.filter(function(widget) {\n                return widget.shouldRender;\n            });\n            widgetsToRender = widgetsToRender.filter(function(widget) {\n                if (!widget.shouldRender) {\n                    return true;\n                }\n                return widget.shouldRender({\n                    instantSearchInstance: instantSearchInstance\n                });\n            });\n            widgetsToRender.forEach(function(widget) {\n                if (widget.getRenderState) {\n                    var renderState = widget.getRenderState(instantSearchInstance.renderState[_this.getIndexId()] || {}, createRenderArgs(instantSearchInstance, _this, widget));\n                    storeRenderState({\n                        renderState: renderState,\n                        instantSearchInstance: instantSearchInstance,\n                        parent: _this\n                    });\n                }\n            });\n            widgetsToRender.forEach(function(widget) {\n                // At this point, all the variables used below are set. Both `helper`\n                // and `derivedHelper` have been created at the `init` step. The attribute\n                // `lastResults` might be `null` though. It's possible that a stalled render\n                // happens before the result e.g with a dynamically added index the request might\n                // be delayed. The render is triggered for the complete tree but some parts do\n                // not have results yet.\n                if (widget.render) {\n                    widget.render(createRenderArgs(instantSearchInstance, _this, widget));\n                }\n            });\n        },\n        dispose: function dispose() {\n            var _this = this;\n            localWidgets.forEach(function(widget) {\n                if (widget.dispose && helper) {\n                    // The dispose function is always called once the instance is started\n                    // (it's an effect of `removeWidgets`). The index is initialized and\n                    // the Helper is available. We don't care about the return value of\n                    // `dispose` because the index is removed. We can't call `removeWidgets`\n                    // because we want to keep the widgets on the instance, to allow idempotent\n                    // operations on `add` & `remove`.\n                    widget.dispose({\n                        helper: helper,\n                        state: helper.state,\n                        recommendState: helper.recommendState,\n                        parent: _this\n                    });\n                }\n            });\n            localInstantSearchInstance = null;\n            localParent = null;\n            helper === null || helper === void 0 ? void 0 : helper.removeAllListeners();\n            helper = null;\n            derivedHelper === null || derivedHelper === void 0 ? void 0 : derivedHelper.detach();\n            derivedHelper = null;\n        },\n        getWidgetUiState: function getWidgetUiState(uiState) {\n            return localWidgets.filter(isIndexWidget).filter(function(w) {\n                return !w._isolated;\n            }).reduce(function(previousUiState, innerIndex) {\n                return innerIndex.getWidgetUiState(previousUiState);\n            }, _$2(_$3({}, uiState), _({}, indexId, _$3({}, uiState[indexId], localUiState))));\n        },\n        getWidgetState: function getWidgetState(uiState) {\n            return this.getWidgetUiState(uiState);\n        },\n        getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, param) {\n            var uiState = param.uiState;\n            return getLocalWidgetsSearchParameters(localWidgets, {\n                uiState: uiState,\n                initialSearchParameters: searchParameters\n            });\n        },\n        shouldRender: function shouldRender() {\n            return true;\n        },\n        refreshUiState: function refreshUiState() {\n            localUiState = getLocalWidgetsUiState(localWidgets, {\n                searchParameters: this.getHelper().state,\n                helper: this.getHelper()\n            }, localUiState);\n        },\n        setIndexUiState: function setIndexUiState(indexUiState) {\n            var nextIndexUiState = typeof indexUiState === 'function' ? indexUiState(localUiState) : indexUiState;\n            localInstantSearchInstance.setUiState(function(state) {\n                return _$2(_$3({}, state), _({}, indexId, nextIndexUiState));\n            });\n        }\n    };\n};\nfunction storeRenderState(param) {\n    var renderState = param.renderState, instantSearchInstance = param.instantSearchInstance, parent = param.parent;\n    var parentIndexName = parent ? parent.getIndexId() : instantSearchInstance.mainIndex.getIndexId();\n    instantSearchInstance.renderState = _$2(_$3({}, instantSearchInstance.renderState), _({}, parentIndexName, _$3({}, instantSearchInstance.renderState[parentIndexName], renderState)));\n}\n/**\n * Walk up the parent chain to find the closest isolated index, or fall back to mainHelper\n */ function nearestIsolatedHelper(current, mainHelper) {\n    while(current){\n        if (current._isolated) {\n            return current.getHelper();\n        }\n        current = current.getParent();\n    }\n    return mainHelper;\n}\n\nexport { index as default };\n","var NAMESPACE = 'ais';\nvar component = function component(componentName) {\n    return function() {\n        var _ref = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, descendantName = _ref.descendantName, modifierName = _ref.modifierName;\n        var descendent = descendantName ? \"-\".concat(descendantName) : '';\n        var modifier = modifierName ? \"--\".concat(modifierName) : '';\n        return \"\".concat(NAMESPACE, \"-\").concat(componentName).concat(descendent).concat(modifier);\n    };\n};\n\nexport { component };\n","function getPropertyByPath(object, path) {\n    var parts = Array.isArray(path) ? path : path.split('.');\n    return parts.reduce(function(current, key) {\n        return current && current[key];\n    }, object);\n}\n\nexport { getPropertyByPath };\n","import { component } from '../lib/suit.js';\nimport { getPropertyByPath } from '../lib/utils/getPropertyByPath.js';\nimport { TAG_REPLACEMENT } from '../lib/utils/escape-highlight.js';\n\nvar suit = component('Highlight');\n/**\n * @deprecated use html tagged templates and the Highlight component instead\n */ function highlight(param) {\n    var attribute = param.attribute, _param_highlightedTagName = param.highlightedTagName, highlightedTagName = _param_highlightedTagName === void 0 ? 'mark' : _param_highlightedTagName, hit = param.hit, _param_cssClasses = param.cssClasses, cssClasses = _param_cssClasses === void 0 ? {} : _param_cssClasses;\n    var highlightAttributeResult = getPropertyByPath(hit._highlightResult, attribute);\n    var _ref = highlightAttributeResult || {}, tmp = _ref.value, attributeValue = tmp === void 0 ? '' : tmp;\n    // cx is not used, since it would be bundled as a dependency for Vue\n    var className = suit({\n        descendantName: 'highlighted'\n    }) + (cssClasses.highlighted ? \" \".concat(cssClasses.highlighted) : '');\n    return attributeValue.replace(new RegExp(TAG_REPLACEMENT.highlightPreTag, 'g'), \"<\".concat(highlightedTagName, ' class=\"').concat(className, '\">')).replace(new RegExp(TAG_REPLACEMENT.highlightPostTag, 'g'), \"</\".concat(highlightedTagName, \">\"));\n}\n\nexport { highlight as default };\n","import { TAG_REPLACEMENT } from './escape-highlight.js';\n\nfunction concatHighlightedParts(parts) {\n    var highlightPreTag = TAG_REPLACEMENT.highlightPreTag, highlightPostTag = TAG_REPLACEMENT.highlightPostTag;\n    return parts.map(function(part) {\n        return part.isHighlighted ? highlightPreTag + part.value + highlightPostTag : part.value;\n    }).join('');\n}\n\nexport { concatHighlightedParts };\n","import { unescape } from './escape-html.js';\n\nvar hasAlphanumeric = new RegExp(/\\w/i);\nfunction getHighlightFromSiblings(parts, i) {\n    var _parts_, _parts_1;\n    var current = parts[i];\n    var isNextHighlighted = ((_parts_ = parts[i + 1]) === null || _parts_ === void 0 ? void 0 : _parts_.isHighlighted) || true;\n    var isPreviousHighlighted = ((_parts_1 = parts[i - 1]) === null || _parts_1 === void 0 ? void 0 : _parts_1.isHighlighted) || true;\n    if (!hasAlphanumeric.test(unescape(current.value)) && isPreviousHighlighted === isNextHighlighted) {\n        return isPreviousHighlighted;\n    }\n    return current.isHighlighted;\n}\n\nexport { getHighlightFromSiblings };\n","import { _ as _$1 } from '@swc/helpers/cjs/_object_spread.cjs';\nimport { _ } from '@swc/helpers/cjs/_object_spread_props.cjs';\nimport { getHighlightFromSiblings } from './getHighlightFromSiblings.js';\n\nfunction reverseHighlightedParts(parts) {\n    if (!parts.some(function(part) {\n        return part.isHighlighted;\n    })) {\n        return parts.map(function(part) {\n            return _(_$1({}, part), {\n                isHighlighted: false\n            });\n        });\n    }\n    return parts.map(function(part, i) {\n        return _(_$1({}, part), {\n            isHighlighted: !getHighlightFromSiblings(parts, i)\n        });\n    });\n}\n\nexport { reverseHighlightedParts };\n","import { TAG_REPLACEMENT } from './escape-highlight.js';\n\nfunction getHighlightedParts(highlightedValue) {\n    // @MAJOR: this should use TAG_PLACEHOLDER\n    var highlightPostTag = TAG_REPLACEMENT.highlightPostTag, highlightPreTag = TAG_REPLACEMENT.highlightPreTag;\n    var splitByPreTag = highlightedValue.split(highlightPreTag);\n    var firstValue = splitByPreTag.shift();\n    var elements = !firstValue ? [] : [\n        {\n            value: firstValue,\n            isHighlighted: false\n        }\n    ];\n    splitByPreTag.forEach(function(split) {\n        var splitByPostTag = split.split(highlightPostTag);\n        elements.push({\n            value: splitByPostTag[0],\n            isHighlighted: true\n        });\n        if (splitByPostTag[1] !== '') {\n            elements.push({\n                value: splitByPostTag[1],\n                isHighlighted: false\n            });\n        }\n    });\n    return elements;\n}\n\nexport { getHighlightedParts };\n","import { component } from '../lib/suit.js';\nimport { concatHighlightedParts } from '../lib/utils/concatHighlightedParts.js';\nimport { reverseHighlightedParts } from '../lib/utils/reverseHighlightedParts.js';\nimport { getPropertyByPath } from '../lib/utils/getPropertyByPath.js';\nimport { getHighlightedParts } from '../lib/utils/getHighlightedParts.js';\nimport { TAG_REPLACEMENT } from '../lib/utils/escape-highlight.js';\n\nvar suit = component('ReverseHighlight');\n/**\n * @deprecated use html tagged templates and the ReverseHighlight component instead\n */ function reverseHighlight(param) {\n    var attribute = param.attribute, _param_highlightedTagName = param.highlightedTagName, highlightedTagName = _param_highlightedTagName === void 0 ? 'mark' : _param_highlightedTagName, hit = param.hit, _param_cssClasses = param.cssClasses, cssClasses = _param_cssClasses === void 0 ? {} : _param_cssClasses;\n    var highlightAttributeResult = getPropertyByPath(hit._highlightResult, attribute);\n    var _ref = highlightAttributeResult || {}, tmp = _ref.value, attributeValue = tmp === void 0 ? '' : tmp;\n    // cx is not used, since it would be bundled as a dependency for Vue\n    var className = suit({\n        descendantName: 'highlighted'\n    }) + (cssClasses.highlighted ? \" \".concat(cssClasses.highlighted) : '');\n    var reverseHighlightedValue = concatHighlightedParts(reverseHighlightedParts(getHighlightedParts(attributeValue)));\n    return reverseHighlightedValue.replace(new RegExp(TAG_REPLACEMENT.highlightPreTag, 'g'), \"<\".concat(highlightedTagName, ' class=\"').concat(className, '\">')).replace(new RegExp(TAG_REPLACEMENT.highlightPostTag, 'g'), \"</\".concat(highlightedTagName, \">\"));\n}\n\nexport { reverseHighlight as default };\n","import { component } from '../lib/suit.js';\nimport { getPropertyByPath } from '../lib/utils/getPropertyByPath.js';\nimport { TAG_REPLACEMENT } from '../lib/utils/escape-highlight.js';\n\nvar suit = component('Snippet');\n/**\n * @deprecated use html tagged templates and the Snippet component instead\n */ function snippet(param) {\n    var attribute = param.attribute, _param_highlightedTagName = param.highlightedTagName, highlightedTagName = _param_highlightedTagName === void 0 ? 'mark' : _param_highlightedTagName, hit = param.hit, _param_cssClasses = param.cssClasses, cssClasses = _param_cssClasses === void 0 ? {} : _param_cssClasses;\n    var snippetAttributeResult = getPropertyByPath(hit._snippetResult, attribute);\n    var _ref = snippetAttributeResult || {}, tmp = _ref.value, attributeValue = tmp === void 0 ? '' : tmp;\n    // cx is not used, since it would be bundled as a dependency for Vue\n    var className = suit({\n        descendantName: 'highlighted'\n    }) + (cssClasses.highlighted ? \" \".concat(cssClasses.highlighted) : '');\n    return attributeValue.replace(new RegExp(TAG_REPLACEMENT.highlightPreTag, 'g'), \"<\".concat(highlightedTagName, ' class=\"').concat(className, '\">')).replace(new RegExp(TAG_REPLACEMENT.highlightPostTag, 'g'), \"</\".concat(highlightedTagName, \">\"));\n}\n\nexport { snippet as default };\n","import { component } from '../lib/suit.js';\nimport { getPropertyByPath } from '../lib/utils/getPropertyByPath.js';\nimport { concatHighlightedParts } from '../lib/utils/concatHighlightedParts.js';\nimport { reverseHighlightedParts } from '../lib/utils/reverseHighlightedParts.js';\nimport { getHighlightedParts } from '../lib/utils/getHighlightedParts.js';\nimport { TAG_REPLACEMENT } from '../lib/utils/escape-highlight.js';\n\nvar suit = component('ReverseSnippet');\n/**\n * @deprecated use html tagged templates and the ReverseSnippet component instead\n */ function reverseSnippet(param) {\n    var attribute = param.attribute, _param_highlightedTagName = param.highlightedTagName, highlightedTagName = _param_highlightedTagName === void 0 ? 'mark' : _param_highlightedTagName, hit = param.hit, _param_cssClasses = param.cssClasses, cssClasses = _param_cssClasses === void 0 ? {} : _param_cssClasses;\n    var snippetAttributeResult = getPropertyByPath(hit._snippetResult, attribute);\n    var _ref = snippetAttributeResult || {}, tmp = _ref.value, attributeValue = tmp === void 0 ? '' : tmp;\n    // cx is not used, since it would be bundled as a dependency for Vue\n    var className = suit({\n        descendantName: 'highlighted'\n    }) + (cssClasses.highlighted ? \" \".concat(cssClasses.highlighted) : '');\n    var reverseHighlightedValue = concatHighlightedParts(reverseHighlightedParts(getHighlightedParts(attributeValue)));\n    return reverseHighlightedValue.replace(new RegExp(TAG_REPLACEMENT.highlightPreTag, 'g'), \"<\".concat(highlightedTagName, ' class=\"').concat(className, '\">')).replace(new RegExp(TAG_REPLACEMENT.highlightPostTag, 'g'), \"</\".concat(highlightedTagName, \">\"));\n}\n\nexport { reverseSnippet as default };\n","import { _ as _$1 } from '@swc/helpers/cjs/_object_spread.cjs';\nimport { _ } from '@swc/helpers/cjs/_object_spread_props.cjs';\nimport { formatNumber } from './formatNumber.js';\nimport highlight from '../helpers/highlight.js';\nimport reverseHighlight from '../helpers/reverseHighlight.js';\nimport snippet from '../helpers/snippet.js';\nimport reverseSnippet from '../helpers/reverseSnippet.js';\nimport insights from '../helpers/insights.js';\n\nfunction hoganHelpers(param) {\n    var numberLocale = param.numberLocale;\n    return {\n        formatNumber: function formatNumber1(value, render) {\n            return formatNumber(Number(render(value)), numberLocale);\n        },\n        highlight: function highlight1(options, render) {\n            try {\n                var highlightOptions = JSON.parse(options);\n                return render(highlight(_(_$1({}, highlightOptions), {\n                    hit: this\n                })));\n            } catch (error) {\n                throw new Error('\\nThe highlight helper expects a JSON object of the format:\\n{ \"attribute\": \"name\", \"highlightedTagName\": \"mark\" }');\n            }\n        },\n        reverseHighlight: function reverseHighlight1(options, render) {\n            try {\n                var reverseHighlightOptions = JSON.parse(options);\n                return render(reverseHighlight(_(_$1({}, reverseHighlightOptions), {\n                    hit: this\n                })));\n            } catch (error) {\n                throw new Error('\\n  The reverseHighlight helper expects a JSON object of the format:\\n  { \"attribute\": \"name\", \"highlightedTagName\": \"mark\" }');\n            }\n        },\n        snippet: function snippet1(options, render) {\n            try {\n                var snippetOptions = JSON.parse(options);\n                return render(snippet(_(_$1({}, snippetOptions), {\n                    hit: this\n                })));\n            } catch (error) {\n                throw new Error('\\nThe snippet helper expects a JSON object of the format:\\n{ \"attribute\": \"name\", \"highlightedTagName\": \"mark\" }');\n            }\n        },\n        reverseSnippet: function reverseSnippet1(options, render) {\n            try {\n                var reverseSnippetOptions = JSON.parse(options);\n                return render(reverseSnippet(_(_$1({}, reverseSnippetOptions), {\n                    hit: this\n                })));\n            } catch (error) {\n                throw new Error('\\n  The reverseSnippet helper expects a JSON object of the format:\\n  { \"attribute\": \"name\", \"highlightedTagName\": \"mark\" }');\n            }\n        },\n        insights: function insights1(options, render) {\n            try {\n                var _JSON_parse = JSON.parse(options), method = _JSON_parse.method, payload = _JSON_parse.payload;\n                return render(insights(method, _$1({\n                    objectIDs: [\n                        this.objectID\n                    ]\n                }, payload)));\n            } catch (error) {\n                throw new Error('\\nThe insights helper expects a JSON object of the format:\\n{ \"method\": \"method-name\", \"payload\": { \"eventName\": \"name of the event\" } }');\n            }\n        }\n    };\n}\n\nexport { hoganHelpers as default };\n","function formatNumber(value, numberLocale) {\n    return value.toLocaleString(numberLocale);\n}\n\nexport { formatNumber };\n","import { _ } from '@swc/helpers/cjs/_type_of.cjs';\nimport { deserializePayload, serializePayload } from '../lib/utils/serializer.js';\n\n/** @deprecated use bindEvent instead */ function readDataAttributes(domElement) {\n    var method = domElement.getAttribute('data-insights-method');\n    var serializedPayload = domElement.getAttribute('data-insights-payload');\n    if (typeof serializedPayload !== 'string') {\n        throw new Error('The insights helper expects `data-insights-payload` to be a base64-encoded JSON string.');\n    }\n    try {\n        var payload = deserializePayload(serializedPayload);\n        return {\n            method: method,\n            payload: payload\n        };\n    } catch (error) {\n        throw new Error('The insights helper was unable to parse `data-insights-payload`.');\n    }\n}\n/** @deprecated use bindEvent instead */ function writeDataAttributes(param) {\n    var method = param.method, payload = param.payload;\n    if ((typeof payload === \"undefined\" ? \"undefined\" : _(payload)) !== 'object') {\n        throw new Error(\"The insights helper expects the payload to be an object.\");\n    }\n    var serializedPayload;\n    try {\n        serializedPayload = serializePayload(payload);\n    } catch (error) {\n        throw new Error(\"Could not JSON serialize the payload object.\");\n    }\n    return 'data-insights-method=\"'.concat(method, '\" data-insights-payload=\"').concat(serializedPayload, '\"');\n}\n/**\n * @deprecated This function will be still supported in 4.x releases, but not further. It is replaced by the `insights` middleware. For more information, visit https://www.algolia.com/doc/guides/getting-insights-and-analytics/search-analytics/click-through-and-conversions/how-to/send-click-and-conversion-events-with-instantsearch/js/\n */ function insights(method, payload) {\n    return writeDataAttributes({\n        method: method,\n        payload: payload\n    });\n}\n\nexport { insights as default, readDataAttributes, writeDataAttributes };\n","import { _ as _$3 } from '@swc/helpers/cjs/_define_property.cjs';\nimport { _ } from '@swc/helpers/cjs/_object_spread.cjs';\nimport { _ as _$1 } from '@swc/helpers/cjs/_object_spread_props.cjs';\nimport { _ as _$4 } from '@swc/helpers/cjs/_sliced_to_array.cjs';\nimport { _ as _$2 } from '@swc/helpers/cjs/_to_consumable_array.cjs';\n\nfunction hydrateSearchClient(client, results) {\n    if (!results) {\n        return;\n    }\n    // Disable cache hydration on:\n    // - Algoliasearch API Client < v4 with cache disabled\n    // - Third party clients (detected by the `addAlgoliaAgent` function missing)\n    if ((!('transporter' in client) || client._cacheHydrated) && (!client._useCache || typeof client.addAlgoliaAgent !== 'function')) {\n        return;\n    }\n    var cachedRequest = [\n        Object.keys(results).reduce(function(acc, key) {\n            var _results_key = results[key], state = _results_key.state, requestParams = _results_key.requestParams, serverResults = _results_key.results;\n            var mappedResults = serverResults && state ? serverResults.map(function(result, idx) {\n                return _({\n                    indexName: state.index || result.index\n                }, (requestParams === null || requestParams === void 0 ? void 0 : requestParams[idx]) || result.params ? {\n                    params: serializeQueryParameters((requestParams === null || requestParams === void 0 ? void 0 : requestParams[idx]) || deserializeQueryParameters(result.params))\n                } : {});\n            }) : [];\n            return acc.concat(mappedResults);\n        }, [])\n    ];\n    var cachedResults = Object.keys(results).reduce(function(acc, key) {\n        var res = results[key].results;\n        if (!res) {\n            return acc;\n        }\n        return acc.concat(res);\n    }, []);\n    // Algoliasearch API Client >= v4\n    // To hydrate the client we need to populate the cache with the data from\n    // the server (done in `hydrateSearchClientWithMultiIndexRequest` or\n    // `hydrateSearchClientWithSingleIndexRequest`). But since there is no way\n    // for us to compute the key the same way as `algoliasearch-client` we need\n    // to populate it on a custom key and override the `search` method to\n    // search on it first.\n    if ('transporter' in client && !client._cacheHydrated) {\n        client._cacheHydrated = true;\n        var baseMethod = client.search.bind(client);\n        client.search = function(requests) {\n            for(var _len = arguments.length, methodArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){\n                methodArgs[_key - 1] = arguments[_key];\n            }\n            var requestsWithSerializedParams = Array.isArray(requests) ? requests.map(function(request) {\n                return _$1(_({}, request), {\n                    params: serializeQueryParameters(request.params)\n                });\n            }) : serializeQueryParameters(requests.requestBody.params);\n            return client.transporter.responsesCache.get({\n                method: 'search',\n                args: [\n                    requestsWithSerializedParams\n                ].concat(_$2(methodArgs))\n            }, function() {\n                return baseMethod.apply(void 0, [\n                    requests\n                ].concat(_$2(methodArgs)));\n            });\n        };\n        client.transporter.responsesCache.set({\n            method: 'search',\n            args: cachedRequest\n        }, {\n            results: cachedResults\n        });\n    }\n    // Algoliasearch API Client < v4\n    // Prior to client v4 we didn't have a proper API to hydrate the client\n    // cache from the outside. The following code populates the cache with\n    // a single-index result. You can find more information about the\n    // computation of the key inside the client (see link below).\n    // https://github.com/algolia/algoliasearch-client-javascript/blob/c27e89ff92b2a854ae6f40dc524bffe0f0cbc169/src/AlgoliaSearchCore.js#L232-L240\n    if (!('transporter' in client)) {\n        var cacheKey = \"/1/indexes/*/queries_body_\".concat(JSON.stringify({\n            requests: cachedRequest\n        }));\n        client.cache = _$1(_({}, client.cache), _$3({}, cacheKey, JSON.stringify({\n            results: Object.keys(results).map(function(key) {\n                return results[key].results;\n            })\n        })));\n    }\n}\nfunction deserializeQueryParameters(parameters) {\n    return parameters.split('&').reduce(function(acc, parameter) {\n        var _parameter_split = _$4(parameter.split('='), 2), key = _parameter_split[0], value = _parameter_split[1];\n        acc[key] = value ? decodeURIComponent(value) : '';\n        return acc;\n    }, {});\n}\n// This function is copied from the algoliasearch v4 API Client. If modified,\n// consider updating it also in `serializeQueryParameters` from `@algolia/transporter`.\nfunction serializeQueryParameters(parameters) {\n    var isObjectOrArray = function isObjectOrArray(value) {\n        return Object.prototype.toString.call(value) === '[object Object]' || Object.prototype.toString.call(value) === '[object Array]';\n    };\n    var encode = function encode(format) {\n        for(var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){\n            args[_key - 1] = arguments[_key];\n        }\n        var i = 0;\n        return format.replace(/%s/g, function() {\n            return encodeURIComponent(args[i++]);\n        });\n    };\n    return Object.keys(parameters).map(function(key) {\n        return encode('%s=%s', key, isObjectOrArray(parameters[key]) ? JSON.stringify(parameters[key]) : parameters[key]);\n    }).join('&');\n}\n\nexport { hydrateSearchClient };\n","import { isIndexWidget } from './isIndexWidget.js';\n\nfunction setIndexHelperState(finalUiState, indexWidget) {\n    var nextIndexUiState = finalUiState[indexWidget.getIndexId()] || {};\n    indexWidget.getHelper().setState(indexWidget.getWidgetSearchParameters(indexWidget.getHelper().state, {\n        uiState: nextIndexUiState\n    }));\n    indexWidget.getWidgets().filter(isIndexWidget).forEach(function(widget) {\n        return setIndexHelperState(finalUiState, widget);\n    });\n}\n\nexport { setIndexHelperState };\n","import { _ as _$2 } from '@swc/helpers/cjs/_call_super.cjs';\nimport { _ as _$1 } from '@swc/helpers/cjs/_class_call_check.cjs';\nimport { _ as _$5 } from '@swc/helpers/cjs/_create_class.cjs';\nimport { _ as _$3 } from '@swc/helpers/cjs/_define_property.cjs';\nimport { _ } from '@swc/helpers/cjs/_inherits.cjs';\nimport { _ as _$7 } from '@swc/helpers/cjs/_instanceof.cjs';\nimport { _ as _$4 } from '@swc/helpers/cjs/_object_spread.cjs';\nimport { _ as _$6 } from '@swc/helpers/cjs/_to_consumable_array.cjs';\nimport EventEmitter from '@algolia/events';\nimport algoliasearchHelper from 'algoliasearch-helper';\nimport { createInsightsMiddleware } from '../middlewares/createInsightsMiddleware.js';\nimport { isMetadataEnabled, createMetadataMiddleware } from '../middlewares/createMetadataMiddleware.js';\nimport { createRouterMiddleware } from '../middlewares/createRouterMiddleware.js';\nimport index from '../widgets/index/index.js';\nimport hoganHelpers from './createHelpers.js';\nimport version from './version.js';\nimport { hydrateSearchClient } from './utils/hydrateSearchClient.js';\nimport { hydrateRecommendCache } from './utils/hydrateRecommendCache.js';\nimport { setIndexHelperState } from './utils/setIndexHelperState.js';\nimport { createDocumentationMessageGenerator } from './utils/documentation.js';\nimport { defer } from './utils/defer.js';\nimport { noop } from './utils/noop.js';\nimport { isIndexWidget } from './utils/isIndexWidget.js';\n\nvar withUsage = createDocumentationMessageGenerator({\n    name: 'instantsearch'\n});\nfunction defaultCreateURL() {\n    return '#';\n}\nvar INSTANTSEARCH_FUTURE_DEFAULTS = {\n    preserveSharedStateOnUnmount: false,\n    persistHierarchicalRootCount: false\n};\n/**\n * The actual implementation of the InstantSearch. This is\n * created using the `instantsearch` factory function.\n * It emits the 'render' event every time a search is done\n */ var InstantSearch = /*#__PURE__*/ function(EventEmitter) {\n    _(InstantSearch, EventEmitter);\n    function InstantSearch(options) {\n        _$1(this, InstantSearch);\n        var _this;\n        _this = _$2(this, InstantSearch), _$3(_this, \"client\", void 0), _$3(_this, \"indexName\", void 0), _$3(_this, \"compositionID\", void 0), _$3(_this, \"insightsClient\", void 0), _$3(_this, \"onStateChange\", null), _$3(_this, \"future\", void 0), _$3(_this, \"helper\", void 0), _$3(_this, \"mainHelper\", void 0), _$3(_this, \"mainIndex\", void 0), _$3(_this, \"started\", void 0), _$3(_this, \"templatesConfig\", void 0), _$3(_this, \"renderState\", {}), _$3(_this, \"_stalledSearchDelay\", void 0), _$3(_this, \"_searchStalledTimer\", void 0), _$3(_this, \"_initialUiState\", void 0), _$3(_this, \"_initialResults\", void 0), _$3(_this, \"_manuallyResetScheduleSearch\", false), _$3(_this, \"_resetScheduleSearch\", void 0), _$3(_this, \"_createURL\", void 0), _$3(_this, \"_searchFunction\", void 0), _$3(_this, \"_mainHelperSearch\", void 0), _$3(_this, \"_hasSearchWidget\", false), _$3(_this, \"_hasRecommendWidget\", false), _$3(_this, \"_insights\", void 0), _$3(_this, \"middleware\", []), _$3(_this, \"sendEventToInsights\", void 0), /**\n   * The status of the search. Can be \"idle\", \"loading\", \"stalled\", or \"error\".\n   */ _$3(_this, \"status\", 'idle'), /**\n   * The last returned error from the Search API.\n   * The error gets cleared when the next valid search response is rendered.\n   */ _$3(_this, \"error\", undefined), _$3(_this, \"scheduleSearch\", defer(function() {\n            if (_this.started) {\n                _this.mainHelper.search();\n            }\n        })), _$3(_this, \"scheduleRender\", defer(function() {\n            var shouldResetStatus = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : true;\n            var _this_mainHelper;\n            if (!((_this_mainHelper = _this.mainHelper) === null || _this_mainHelper === void 0 ? void 0 : _this_mainHelper.hasPendingRequests())) {\n                clearTimeout(_this._searchStalledTimer);\n                _this._searchStalledTimer = null;\n                if (shouldResetStatus) {\n                    _this.status = 'idle';\n                    _this.error = undefined;\n                }\n            }\n            _this.mainIndex.render({\n                instantSearchInstance: _this\n            });\n            _this.emit('render');\n        })), _$3(_this, \"onInternalStateChange\", defer(function() {\n            var nextUiState = _this.mainIndex.getWidgetUiState({});\n            _this.middleware.forEach(function(param) {\n                var instance = param.instance;\n                instance.onStateChange({\n                    uiState: nextUiState\n                });\n            });\n        }));\n        // prevent `render` event listening from causing a warning\n        _this.setMaxListeners(100);\n        var _options_indexName = options.indexName, indexName = _options_indexName === void 0 ? '' : _options_indexName, compositionID = options.compositionID, numberLocale = options.numberLocale, _options_initialUiState = options.initialUiState, initialUiState = _options_initialUiState === void 0 ? {} : _options_initialUiState, _options_routing = options.routing, routing = _options_routing === void 0 ? null : _options_routing, _options_insights = options.insights, insights = _options_insights === void 0 ? undefined : _options_insights, searchFunction = options.searchFunction, _options_stalledSearchDelay = options.stalledSearchDelay, stalledSearchDelay = _options_stalledSearchDelay === void 0 ? 200 : _options_stalledSearchDelay, _options_searchClient = options.searchClient, searchClient = _options_searchClient === void 0 ? null : _options_searchClient, _options_insightsClient = options.insightsClient, insightsClient = _options_insightsClient === void 0 ? null : _options_insightsClient, _options_onStateChange = options.onStateChange, onStateChange = _options_onStateChange === void 0 ? null : _options_onStateChange, _options_future1 = options.future, future = _options_future1 === void 0 ? _$4({}, INSTANTSEARCH_FUTURE_DEFAULTS, options.future || {}) : _options_future1;\n        if (searchClient === null) {\n            throw new Error(withUsage('The `searchClient` option is required.'));\n        }\n        if (typeof searchClient.search !== 'function') {\n            throw new Error(\"The `searchClient` must implement a `search` method.\\n\\nSee: https://www.algolia.com/doc/guides/building-search-ui/going-further/backend-search/in-depth/backend-instantsearch/js/\");\n        }\n        if (typeof searchClient.addAlgoliaAgent === 'function') {\n            searchClient.addAlgoliaAgent(\"instantsearch.js (\".concat(version, \")\"));\n        }\n        if (insightsClient && typeof insightsClient !== 'function') {\n            throw new Error(withUsage('The `insightsClient` option should be a function.'));\n        }\n        _this.client = searchClient;\n        _this.future = future;\n        _this.insightsClient = insightsClient;\n        _this.indexName = indexName;\n        _this.compositionID = compositionID;\n        _this.helper = null;\n        _this.mainHelper = null;\n        _this.mainIndex = index({\n            // we use an index widget to render compositions\n            // this only works because there's only one composition index allow for now\n            indexName: _this.compositionID || _this.indexName\n        });\n        _this.onStateChange = onStateChange;\n        _this.started = false;\n        _this.templatesConfig = {\n            helpers: hoganHelpers({\n                numberLocale: numberLocale\n            }),\n            compileOptions: {}\n        };\n        _this._stalledSearchDelay = stalledSearchDelay;\n        _this._searchStalledTimer = null;\n        _this._createURL = defaultCreateURL;\n        _this._initialUiState = initialUiState;\n        _this._initialResults = null;\n        _this._insights = insights;\n        if (searchFunction) {\n            _this._searchFunction = searchFunction;\n        }\n        _this.sendEventToInsights = noop;\n        if (routing) {\n            var routerOptions = typeof routing === 'boolean' ? {} : routing;\n            routerOptions.$$internal = true;\n            _this.use(createRouterMiddleware(routerOptions));\n        }\n        // This is the default Insights middleware,\n        // added when `insights` is set to true by the user.\n        // Any user-provided middleware will be added later and override this one.\n        if (insights) {\n            var insightsOptions = typeof insights === 'boolean' ? {} : insights;\n            insightsOptions.$$internal = true;\n            _this.use(createInsightsMiddleware(insightsOptions));\n        }\n        if (isMetadataEnabled()) {\n            _this.use(createMetadataMiddleware({\n                $$internal: true\n            }));\n        }\n        return _this;\n    }\n    _$5(InstantSearch, [\n        {\n            key: \"_isSearchStalled\",\n            get: /**\n   * @deprecated use `status === 'stalled'` instead\n   */ function get() {\n                return this.status === 'stalled';\n            }\n        },\n        {\n            key: \"use\",\n            value: /**\n   * Hooks a middleware into the InstantSearch lifecycle.\n   */ function use() {\n                var _this = this;\n                for(var _len = arguments.length, middleware = new Array(_len), _key = 0; _key < _len; _key++){\n                    middleware[_key] = arguments[_key];\n                }\n                var newMiddlewareList = middleware.map(function(fn) {\n                    var newMiddleware = _$4({\n                        $$type: '__unknown__',\n                        $$internal: false,\n                        subscribe: noop,\n                        started: noop,\n                        unsubscribe: noop,\n                        onStateChange: noop\n                    }, fn({\n                        instantSearchInstance: _this\n                    }));\n                    _this.middleware.push({\n                        creator: fn,\n                        instance: newMiddleware\n                    });\n                    return newMiddleware;\n                });\n                // If the instance has already started, we directly subscribe the\n                // middleware so they're notified of changes.\n                if (this.started) {\n                    newMiddlewareList.forEach(function(m) {\n                        m.subscribe();\n                        m.started();\n                    });\n                }\n                return this;\n            }\n        },\n        {\n            key: \"unuse\",\n            value: /**\n   * Removes a middleware from the InstantSearch lifecycle.\n   */ function unuse() {\n                for(var _len = arguments.length, middlewareToUnuse = new Array(_len), _key = 0; _key < _len; _key++){\n                    middlewareToUnuse[_key] = arguments[_key];\n                }\n                this.middleware.filter(function(m) {\n                    return middlewareToUnuse.includes(m.creator);\n                }).forEach(function(m) {\n                    return m.instance.unsubscribe();\n                });\n                this.middleware = this.middleware.filter(function(m) {\n                    return !middlewareToUnuse.includes(m.creator);\n                });\n                return this;\n            }\n        },\n        {\n            key: \"EXPERIMENTAL_use\",\n            value: // @major we shipped with EXPERIMENTAL_use, but have changed that to just `use` now\n            function EXPERIMENTAL_use() {\n                for(var _len = arguments.length, middleware = new Array(_len), _key = 0; _key < _len; _key++){\n                    middleware[_key] = arguments[_key];\n                }\n                return this.use.apply(this, _$6(middleware));\n            }\n        },\n        {\n            key: \"addWidget\",\n            value: /**\n   * Adds a widget to the search instance.\n   * A widget can be added either before or after InstantSearch has started.\n   * @param widget The widget to add to InstantSearch.\n   *\n   * @deprecated This method will still be supported in 4.x releases, but not further. It is replaced by `addWidgets([widget])`.\n   */ function addWidget(widget) {\n                return this.addWidgets([\n                    widget\n                ]);\n            }\n        },\n        {\n            key: \"addWidgets\",\n            value: /**\n   * Adds multiple widgets to the search instance.\n   * Widgets can be added either before or after InstantSearch has started.\n   * @param widgets The array of widgets to add to InstantSearch.\n   */ function addWidgets(widgets) {\n                if (!Array.isArray(widgets)) {\n                    throw new Error(withUsage('The `addWidgets` method expects an array of widgets. Please use `addWidget`.'));\n                }\n                if (this.compositionID && widgets.some(function(w) {\n                    return !Array.isArray(w) && isIndexWidget(w) && !w._isolated;\n                })) {\n                    throw new Error(withUsage('The `index` widget cannot be used with a composition-based InstantSearch implementation.'));\n                }\n                this.mainIndex.addWidgets(widgets);\n                return this;\n            }\n        },\n        {\n            key: \"removeWidget\",\n            value: /**\n   * Removes a widget from the search instance.\n   * @deprecated This method will still be supported in 4.x releases, but not further. It is replaced by `removeWidgets([widget])`\n   * @param widget The widget instance to remove from InstantSearch.\n   *\n   * The widget must implement a `dispose()` method to clear its state.\n   */ function removeWidget(widget) {\n                return this.removeWidgets([\n                    widget\n                ]);\n            }\n        },\n        {\n            key: \"removeWidgets\",\n            value: /**\n   * Removes multiple widgets from the search instance.\n   * @param widgets Array of widgets instances to remove from InstantSearch.\n   *\n   * The widgets must implement a `dispose()` method to clear their states.\n   */ function removeWidgets(widgets) {\n                if (!Array.isArray(widgets)) {\n                    throw new Error(withUsage('The `removeWidgets` method expects an array of widgets. Please use `removeWidget`.'));\n                }\n                this.mainIndex.removeWidgets(widgets);\n                return this;\n            }\n        },\n        {\n            key: \"start\",\n            value: /**\n   * Ends the initialization of InstantSearch.js and triggers the\n   * first search.\n   */ function start() {\n                var _this = this;\n                if (this.started) {\n                    throw new Error(withUsage('The `start` method has already been called once.'));\n                }\n                // This Helper is used for the queries, we don't care about its state. The\n                // states are managed at the `index` level. We use this Helper to create\n                // DerivedHelper scoped into the `index` widgets.\n                // In Vue InstantSearch' hydrate, a main helper gets set before start, so\n                // we need to respect this helper as a way to keep all listeners correct.\n                var mainHelper = this.mainHelper || algoliasearchHelper(this.client, this.indexName, undefined, {\n                    persistHierarchicalRootCount: this.future.persistHierarchicalRootCount\n                });\n                if (this.compositionID) {\n                    mainHelper.searchForFacetValues = mainHelper.searchForCompositionFacetValues.bind(mainHelper);\n                }\n                mainHelper.search = function() {\n                    _this.status = 'loading';\n                    _this.scheduleRender(false);\n                    // This solution allows us to keep the exact same API for the users but\n                    // under the hood, we have a different implementation. It should be\n                    // completely transparent for the rest of the codebase. Only this module\n                    // is impacted.\n                    if (_this._hasSearchWidget) {\n                        if (_this.compositionID) {\n                            mainHelper.searchWithComposition();\n                        } else {\n                            mainHelper.searchOnlyWithDerivedHelpers();\n                        }\n                    }\n                    if (_this._hasRecommendWidget) {\n                        mainHelper.recommend();\n                    }\n                    return mainHelper;\n                };\n                if (this._searchFunction) {\n                    // this client isn't used to actually search, but required for the helper\n                    // to not throw errors\n                    var fakeClient = {\n                        search: function search() {\n                            return new Promise(noop);\n                        }\n                    };\n                    this._mainHelperSearch = mainHelper.search.bind(mainHelper);\n                    mainHelper.search = function() {\n                        var mainIndexHelper = _this.mainIndex.getHelper();\n                        var searchFunctionHelper = algoliasearchHelper(fakeClient, mainIndexHelper.state.index, mainIndexHelper.state);\n                        searchFunctionHelper.once('search', function(param) {\n                            var state = param.state;\n                            mainIndexHelper.overrideStateWithoutTriggeringChangeEvent(state);\n                            _this._mainHelperSearch();\n                        });\n                        // Forward state changes from `searchFunctionHelper` to `mainIndexHelper`\n                        searchFunctionHelper.on('change', function(param) {\n                            var state = param.state;\n                            mainIndexHelper.setState(state);\n                        });\n                        _this._searchFunction(searchFunctionHelper);\n                        return mainHelper;\n                    };\n                }\n                // Only the \"main\" Helper emits the `error` event vs the one for `search`\n                // and `results` that are also emitted on the derived one.\n                mainHelper.on('error', function(param) {\n                    var error = param.error;\n                    if (!_$7(error, Error)) {\n                        // typescript lies here, error is in some cases { name: string, message: string }\n                        var err = error;\n                        error = Object.keys(err).reduce(function(acc, key) {\n                            acc[key] = err[key];\n                            return acc;\n                        }, new Error(err.message));\n                    }\n                    // If an error is emitted, it is re-thrown by events. In previous versions\n                    // we emitted {error}, which is thrown as:\n                    // \"Uncaught, unspecified \\\"error\\\" event. ([object Object])\"\n                    // To avoid breaking changes, we make the error available in both\n                    // `error` and `error.error`\n                    // @MAJOR emit only error\n                    error.error = error;\n                    _this.error = error;\n                    _this.status = 'error';\n                    _this.scheduleRender(false);\n                    // This needs to execute last because it throws the error.\n                    _this.emit('error', error);\n                });\n                this.mainHelper = mainHelper;\n                this.middleware.forEach(function(param) {\n                    var instance = param.instance;\n                    instance.subscribe();\n                });\n                this.mainIndex.init({\n                    instantSearchInstance: this,\n                    parent: null,\n                    uiState: this._initialUiState\n                });\n                if (this._initialResults) {\n                    hydrateSearchClient(this.client, this._initialResults);\n                    hydrateRecommendCache(this.mainHelper, this._initialResults);\n                    var originalScheduleSearch = this.scheduleSearch;\n                    // We don't schedule a first search when initial results are provided\n                    // because we already have the results to render. This skips the initial\n                    // network request on the browser on `start`.\n                    this.scheduleSearch = defer(noop);\n                    if (this._manuallyResetScheduleSearch) {\n                        // If `_manuallyResetScheduleSearch` is passed, it means that we don't\n                        // want to rely on a single `defer` to reset the `scheduleSearch`.\n                        // Instead, the consumer will call `_resetScheduleSearch` to restore\n                        // the original `scheduleSearch` function.\n                        // This happens in the React flavour after rendering.\n                        this._resetScheduleSearch = function() {\n                            _this.scheduleSearch = originalScheduleSearch;\n                        };\n                    } else {\n                        // We also skip the initial network request when widgets are dynamically\n                        // added in the first tick (that's the case in all the framework-based flavors).\n                        // When we add a widget to `index`, it calls `scheduleSearch`. We can rely\n                        // on our `defer` util to restore the original `scheduleSearch` value once\n                        // widgets are added to hook back to the regular lifecycle.\n                        defer(function() {\n                            _this.scheduleSearch = originalScheduleSearch;\n                        })();\n                    }\n                } else if (this.mainIndex.getWidgets().length > 0) {\n                    this.scheduleSearch();\n                }\n                // Keep the previous reference for legacy purpose, some pattern use\n                // the direct Helper access `search.helper` (e.g multi-index).\n                this.helper = this.mainIndex.getHelper();\n                // track we started the search if we add more widgets,\n                // to init them directly after add\n                this.started = true;\n                this.middleware.forEach(function(param) {\n                    var instance = param.instance;\n                    instance.started();\n                });\n                // This is the automatic Insights middleware,\n                // added when `insights` is unset and the initial results possess `queryID`.\n                // Any user-provided middleware will be added later and override this one.\n                if (typeof this._insights === 'undefined') {\n                    mainHelper.derivedHelpers[0].once('result', function() {\n                        var hasAutomaticInsights = _this.mainIndex.getScopedResults().some(function(param) {\n                            var results = param.results;\n                            return results === null || results === void 0 ? void 0 : results._automaticInsights;\n                        });\n                        if (hasAutomaticInsights) {\n                            _this.use(createInsightsMiddleware({\n                                $$internal: true,\n                                $$automatic: true\n                            }));\n                        }\n                    });\n                }\n            }\n        },\n        {\n            key: \"dispose\",\n            value: /**\n   * Removes all widgets without triggering a search afterwards.\n   * @return {undefined} This method does not return anything\n   */ function dispose() {\n                var _this_mainHelper;\n                this.scheduleSearch.cancel();\n                this.scheduleRender.cancel();\n                clearTimeout(this._searchStalledTimer);\n                this.removeWidgets(this.mainIndex.getWidgets());\n                this.mainIndex.dispose();\n                // You can not start an instance two times, therefore a disposed instance\n                // needs to set started as false otherwise this can not be restarted at a\n                // later point.\n                this.started = false;\n                // The helper needs to be reset to perform the next search from a fresh state.\n                // If not reset, it would use the state stored before calling `dispose()`.\n                this.removeAllListeners();\n                (_this_mainHelper = this.mainHelper) === null || _this_mainHelper === void 0 ? void 0 : _this_mainHelper.removeAllListeners();\n                this.mainHelper = null;\n                this.helper = null;\n                this.middleware.forEach(function(param) {\n                    var instance = param.instance;\n                    instance.unsubscribe();\n                });\n            }\n        },\n        {\n            key: \"scheduleStalledRender\",\n            value: function scheduleStalledRender() {\n                var _this = this;\n                if (!this._searchStalledTimer) {\n                    this._searchStalledTimer = setTimeout(function() {\n                        _this.status = 'stalled';\n                        _this.scheduleRender();\n                    }, this._stalledSearchDelay);\n                }\n            }\n        },\n        {\n            key: \"setUiState\",\n            value: /**\n   * Set the UI state and trigger a search.\n   * @param uiState The next UI state or a function computing it from the current state\n   * @param callOnStateChange private parameter used to know if the method is called from a state change\n   */ function setUiState(uiState) {\n                var _this = this;\n                var callOnStateChange = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true;\n                if (!this.mainHelper) {\n                    throw new Error(withUsage('The `start` method needs to be called before `setUiState`.'));\n                }\n                // We refresh the index UI state to update the local UI state that the\n                // main index passes to the function form of `setUiState`.\n                this.mainIndex.refreshUiState();\n                var nextUiState = typeof uiState === 'function' ? uiState(this.mainIndex.getWidgetUiState({})) : uiState;\n                if (this.onStateChange && callOnStateChange) {\n                    this.onStateChange({\n                        uiState: nextUiState,\n                        setUiState: function setUiState(finalUiState) {\n                            setIndexHelperState(typeof finalUiState === 'function' ? finalUiState(nextUiState) : finalUiState, _this.mainIndex);\n                            _this.scheduleSearch();\n                            _this.onInternalStateChange();\n                        }\n                    });\n                } else {\n                    setIndexHelperState(nextUiState, this.mainIndex);\n                    this.scheduleSearch();\n                    this.onInternalStateChange();\n                }\n            }\n        },\n        {\n            key: \"getUiState\",\n            value: function getUiState() {\n                if (this.started) {\n                    // We refresh the index UI state to make sure changes from `refine` are taken in account\n                    this.mainIndex.refreshUiState();\n                }\n                return this.mainIndex.getWidgetUiState({});\n            }\n        },\n        {\n            key: \"createURL\",\n            value: function createURL() {\n                var nextState = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};\n                if (!this.started) {\n                    throw new Error(withUsage('The `start` method needs to be called before `createURL`.'));\n                }\n                return this._createURL(nextState);\n            }\n        },\n        {\n            key: \"refresh\",\n            value: function refresh() {\n                if (!this.mainHelper) {\n                    throw new Error(withUsage('The `start` method needs to be called before `refresh`.'));\n                }\n                this.mainHelper.clearCache().search();\n            }\n        }\n    ]);\n    return InstantSearch;\n}(EventEmitter);\n\nexport { INSTANTSEARCH_FUTURE_DEFAULTS, InstantSearch as default };\n","var version = '4.90.0';\n\nexport { version as default };\n","import { _ } from '@swc/helpers/cjs/_object_spread.cjs';\n\nfunction hydrateRecommendCache(helper, initialResults) {\n    var recommendCache = Object.keys(initialResults).reduce(function(acc, indexName) {\n        var initialResult = initialResults[indexName];\n        if (initialResult.recommendResults) {\n            // @MAJOR: Use `Object.assign` instead of spread operator\n            return _({}, acc, initialResult.recommendResults.results);\n        }\n        return acc;\n    }, {});\n    helper._recommendCache = recommendCache;\n}\n\nexport { hydrateRecommendCache };\n","var version = '7.26.1';\n\nexport { version as default };\n","import { _ as _$1 } from '@swc/helpers/cjs/_object_spread.cjs';\nimport { _ } from '@swc/helpers/cjs/_to_consumable_array.cjs';\nimport InstantSearch, { INSTANTSEARCH_FUTURE_DEFAULTS } from 'instantsearch.js/es/lib/InstantSearch.js';\nimport { useRef, useCallback, version } from 'react';\nimport { useSyncExternalStore } from 'use-sync-external-store/shim/index.js';\nimport version$1 from '../version.js';\nimport { dequal } from './dequal.js';\nimport { useForceUpdate } from './useForceUpdate.js';\nimport { useInstantSearchServerContext } from './useInstantSearchServerContext.js';\nimport { useInstantSearchSSRContext } from './useInstantSearchSSRContext.js';\nimport { useRSCContext } from './useRSCContext.js';\n\nvar defaultUserAgents = [\n    \"react (\".concat(version, \")\"),\n    \"react-instantsearch (\".concat(version$1, \")\"),\n    \"react-instantsearch-core (\".concat(version$1, \")\")\n];\nvar serverUserAgent = \"react-instantsearch-server (\".concat(version$1, \")\");\nvar nextUserAgent = function nextUserAgent(nextVersion) {\n    return nextVersion ? \"next.js (\".concat(nextVersion, \")\") : null;\n};\nfunction useInstantSearchApi(props) {\n    var forceUpdate = useForceUpdate();\n    var serverContext = useInstantSearchServerContext();\n    var serverState = useInstantSearchSSRContext();\n    var waitForResultsRef = useRSCContext().waitForResultsRef;\n    var initialResults = serverState === null || serverState === void 0 ? void 0 : serverState.initialResults;\n    var prevPropsRef = useRef(props);\n    var shouldRenderAtOnce = serverContext || initialResults || waitForResultsRef;\n    var searchRef = useRef(null);\n    // As we need to render on mount with SSR, using the local ref above in `StrictMode` will\n    // create and start two instances of InstantSearch. To avoid this, we instead discard it and use\n    // an upward ref from `InstantSearchSSRContext` as it has already been mounted a second time at this point.\n    if (serverState === null || serverState === void 0 ? void 0 : serverState.ssrSearchRef) {\n        searchRef = serverState.ssrSearchRef;\n    }\n    if (searchRef.current === null) {\n        // We don't use the `instantsearch()` function because it comes with other\n        // top-level APIs that we don't need.\n        // See https://github.com/algolia/instantsearch/blob/5b529f43d8acc680f85837eaaa41f7fd03a3f833/src/index.es.ts#L63-L86\n        var search = new InstantSearch(props);\n        search._schedule = function _schedule(cb) {\n            search._schedule.queue.push(cb);\n            clearTimeout(search._schedule.timer);\n            search._schedule.timer = setTimeout(function() {\n                search._schedule.queue.forEach(function(callback) {\n                    callback();\n                });\n                search._schedule.queue = [];\n            }, 0);\n        };\n        search._schedule.queue = [];\n        if (shouldRenderAtOnce) {\n            // InstantSearch.js has a private Initial Results API that lets us inject\n            // results on the search instance.\n            // On the server, we default the initial results to an empty object so that\n            // InstantSearch.js doesn't schedule a search that isn't used, leading to\n            // an additional network request. (This is equivalent to monkey-patching\n            // `scheduleSearch` to a noop.)\n            search._initialResults = initialResults || {};\n            // We don't rely on the `defer` to reset the schedule search, but will call\n            // `search._resetScheduleSearch()` manually in the effect after children\n            // mount in `InstantSearch`.\n            search._manuallyResetScheduleSearch = true;\n        }\n        addAlgoliaAgents(props.searchClient, _(defaultUserAgents).concat([\n            serverContext && serverUserAgent,\n            nextUserAgent(getNextVersion())\n        ]));\n        // On the server, we start the search early to compute the search parameters.\n        // On SSR, we start the search early to directly catch up with the lifecycle\n        // and render.\n        if (shouldRenderAtOnce) {\n            search.start();\n        }\n        if (serverContext) {\n            // We notify `getServerState()` of the InstantSearch internals to retrieve\n            // the server state and pass it to the render on SSR.\n            serverContext.notifyServer({\n                search: search\n            });\n        }\n        warnNextRouter(props.routing);\n        searchRef.current = search;\n    }\n    {\n        var search1 = searchRef.current;\n        var prevProps = prevPropsRef.current;\n        if (prevProps.indexName !== props.indexName) {\n            search1.helper.setIndex(props.indexName || '').search();\n            prevPropsRef.current = props;\n        }\n        if (prevProps.searchClient !== props.searchClient) {\n            addAlgoliaAgents(props.searchClient, _(defaultUserAgents).concat([\n                serverContext && serverUserAgent\n            ]));\n            search1.mainHelper.setClient(props.searchClient).search();\n            prevPropsRef.current = props;\n        }\n        if (prevProps.onStateChange !== props.onStateChange) {\n            search1.onStateChange = props.onStateChange;\n            prevPropsRef.current = props;\n        }\n        if (prevProps.searchFunction !== props.searchFunction) {\n            // Updating the `searchFunction` to `undefined` is not supported by\n            // InstantSearch.js, so it will throw an error.\n            // This is a fair behavior until we add an update API in InstantSearch.js.\n            search1._searchFunction = props.searchFunction;\n            prevPropsRef.current = props;\n        }\n        if (prevProps.stalledSearchDelay !== props.stalledSearchDelay) {\n            var _props_stalledSearchDelay;\n            // The default `stalledSearchDelay` in InstantSearch.js is 200ms.\n            // We need to reset it when it's undefined to get back to the original value.\n            search1._stalledSearchDelay = (_props_stalledSearchDelay = props.stalledSearchDelay) !== null && _props_stalledSearchDelay !== void 0 ? _props_stalledSearchDelay : 200;\n            prevPropsRef.current = props;\n        }\n        if (!dequal(prevProps.future, props.future)) {\n            search1.future = _$1({}, INSTANTSEARCH_FUTURE_DEFAULTS, props.future);\n            prevPropsRef.current = props;\n        }\n    // Updating the `routing` prop is not supported because InstantSearch.js\n    // doesn't let us change it. This might not be a problem though, because `routing`\n    // shouldn't need to be dynamic.\n    // If we find scenarios where `routing` needs to change, we can always expose\n    // it privately on the InstantSearch instance. Another way would be to\n    // manually inject the routing middleware in this library, and not rely\n    // on the provided `routing` prop.\n    }\n    var cleanupTimerRef = useRef(null);\n    var store = useSyncExternalStore(useCallback(function() {\n        var search = searchRef.current;\n        // Scenario 1: the component mounts.\n        if (cleanupTimerRef.current === null) {\n            // On SSR, the instance is already started so we don't start it again.\n            if (!search.started) {\n                search.start();\n                forceUpdate();\n            }\n        } else {\n            // We cancel the previous cleanup function because we don't want to\n            // dispose the search during an update.\n            clearTimeout(cleanupTimerRef.current);\n            search._preventWidgetCleanup = false;\n        }\n        return function() {\n            if (serverState === null || serverState === void 0 ? void 0 : serverState.ssrSearchRef) {\n                return;\n            }\n            function cleanup() {\n                search.dispose();\n            }\n            clearTimeout(search._schedule.timer);\n            // We clean up only when the component that uses this subscription unmounts,\n            // but not when it updates, because it would dispose the instance, which\n            // would remove all the widgets and break routing.\n            // Executing the cleanup function in a `setTimeout()` lets us cancel it\n            // in the next effect.\n            // (There might be better ways to do this.)\n            cleanupTimerRef.current = setTimeout(cleanup);\n            // We need to prevent the `useWidget` cleanup function so that widgets\n            // are not removed before the instance is disposed, triggering\n            // an unwanted search request.\n            search._preventWidgetCleanup = true;\n        };\n    }, [\n        forceUpdate,\n        serverState\n    ]), function() {\n        return searchRef.current;\n    }, function() {\n        return searchRef.current;\n    });\n    return store;\n}\nfunction addAlgoliaAgents(searchClient, userAgents) {\n    if (typeof searchClient.addAlgoliaAgent !== 'function') {\n        return;\n    }\n    userAgents.filter(Boolean).forEach(function(userAgent) {\n        searchClient.addAlgoliaAgent(userAgent);\n    });\n}\nfunction warnNextRouter(routing) {\n}\n/**\n * Gets the version of Next.js if it is available in the `window` object,\n * otherwise it returns the NEXT_RUNTIME environment variable (in SSR),\n * which is either `nodejs` or `edge`.\n */ function getNextVersion() {\n    var _window_next, _process_env;\n    return typeof window !== 'undefined' && ((_window_next = window.next) === null || _window_next === void 0 ? void 0 : _window_next.version) || (typeof process !== 'undefined' ? (_process_env = process.env) === null || _process_env === void 0 ? void 0 : _process_env.NEXT_RUNTIME : undefined);\n}\n\nexport { useInstantSearchApi };\n","import { _ } from '@swc/helpers/cjs/_object_without_properties.cjs';\nimport React__default, { useEffect } from 'react';\nimport { IndexContext } from '../lib/IndexContext.js';\nimport { InstantSearchContext } from '../lib/InstantSearchContext.js';\nimport { useInstantSearchApi } from '../lib/useInstantSearchApi.js';\n\nfunction InstantSearch(_0) {\n    var children = _0.children, props = _(_0, [\n        \"children\"\n    ]);\n    var search = useInstantSearchApi(props);\n    if (!search.started) {\n        return null;\n    }\n    return /*#__PURE__*/ React__default.createElement(InstantSearchContext.Provider, {\n        value: search\n    }, /*#__PURE__*/ React__default.createElement(IndexContext.Provider, {\n        value: search.mainIndex\n    }, children, /*#__PURE__*/ React__default.createElement(ResetScheduleSearch, {\n        search: search\n    })));\n}\nfunction ResetScheduleSearch(param) {\n    var search = param.search;\n    useEffect(function() {\n        if (search._resetScheduleSearch) {\n            search._resetScheduleSearch();\n        }\n    }, [\n        search\n    ]);\n    return null;\n}\n\nexport { InstantSearch };\n","import { _ } from '@swc/helpers/cjs/_sliced_to_array.cjs';\nimport { useReducer } from 'react';\n\n/**\n * Forces a React update that triggers a rerender.\n * @link https://reactjs.org/docs/hooks-faq.html#is-there-something-like-forceupdate\n */ function useForceUpdate() {\n    var _useReducer = _(useReducer(function(x) {\n        return x + 1;\n    }, 0), 2), forceUpdate = _useReducer[1];\n    return forceUpdate;\n}\n\nexport { useForceUpdate };\n","import { _ as _$2 } from '@swc/helpers/cjs/_object_spread.cjs';\nimport { _ as _$1 } from '@swc/helpers/cjs/_object_spread_props.cjs';\nimport { _ } from '@swc/helpers/cjs/_object_without_properties.cjs';\nimport React__default from 'react';\nimport { InstantSearchSSRContext } from '../lib/InstantSearchSSRContext.js';\n\n/**\n * Provider to pass the server state retrieved from `getServerState()` to\n * <InstantSearch>.\n */ function InstantSearchSSRProvider(_0) {\n    var children = _0.children, props = _(_0, [\n        \"children\"\n    ]);\n    // This is used in `useInstantSearchApi()` to avoid creating and starting multiple instances of\n    // `InstantSearch` on mount.\n    var ssrSearchRef = React__default.useRef(null);\n    // This is used to re-map the result index to the requesting widget\n    var recommendIdx = React__default.useRef(0);\n    // When <DynamicWidgets> is mounted, a second provider is used above the user-land\n    // <InstantSearchSSRProvider> in `getServerState()`.\n    // To avoid the user's provider overriding the context value with an empty object,\n    // we skip this provider.\n    if (Object.keys(props).length === 0) {\n        return /*#__PURE__*/ React__default.createElement(React__default.Fragment, null, children);\n    }\n    return /*#__PURE__*/ React__default.createElement(InstantSearchSSRContext.Provider, {\n        value: _$1(_$2({}, props), {\n            ssrSearchRef: ssrSearchRef,\n            recommendIdx: recommendIdx\n        })\n    }, children);\n}\n\nexport { InstantSearchSSRProvider };\n","import { _ as _$2 } from '@swc/helpers/cjs/_object_spread.cjs';\nimport { _ as _$1 } from '@swc/helpers/cjs/_sliced_to_array.cjs';\nimport { _ } from '@swc/helpers/cjs/_type_of.cjs';\nimport { serializePayload } from './serializer.js';\n\nfunction chunk(arr) {\n    var chunkSize = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 20;\n    var chunks = [];\n    for(var i = 0; i < Math.ceil(arr.length / chunkSize); i++){\n        chunks.push(arr.slice(i * chunkSize, (i + 1) * chunkSize));\n    }\n    return chunks;\n}\nfunction _buildEventPayloadsForHits(param) {\n    var helper = param.helper, widgetType = param.widgetType; param.methodName; var args = param.args, instantSearchInstance = param.instantSearchInstance;\n    // when there's only one argument, that means it's custom\n    if (args.length === 1 && _(args[0]) === 'object') {\n        return [\n            args[0]\n        ];\n    }\n    var _args__split = _$1(args[0].split(':'), 2), eventType = _args__split[0], eventModifier = _args__split[1];\n    var hits = args[1];\n    var eventName = args[2];\n    var additionalData = args[3] || {};\n    if (!hits) {\n        {\n            return [];\n        }\n    }\n    if ((eventType === 'click' || eventType === 'conversion') && !eventName) {\n        {\n            return [];\n        }\n    }\n    var hitsArray = Array.isArray(hits) ? hits : [\n        hits\n    ];\n    if (hitsArray.length === 0) {\n        return [];\n    }\n    var queryID = hitsArray[0].__queryID;\n    var hitsChunks = chunk(hitsArray);\n    var objectIDsByChunk = hitsChunks.map(function(batch) {\n        return batch.map(function(hit) {\n            return hit.objectID;\n        });\n    });\n    var positionsByChunk = hitsChunks.map(function(batch) {\n        return batch.map(function(hit) {\n            return hit.__position;\n        });\n    });\n    if (eventType === 'view') {\n        if (instantSearchInstance.status !== 'idle') {\n            return [];\n        }\n        return hitsChunks.map(function(batch, i) {\n            var _helper_lastResults;\n            return {\n                insightsMethod: 'viewedObjectIDs',\n                widgetType: widgetType,\n                eventType: eventType,\n                payload: _$2({\n                    eventName: eventName || 'Hits Viewed',\n                    index: ((_helper_lastResults = helper.lastResults) === null || _helper_lastResults === void 0 ? void 0 : _helper_lastResults.index) || helper.state.index,\n                    objectIDs: objectIDsByChunk[i]\n                }, additionalData),\n                hits: batch,\n                eventModifier: eventModifier\n            };\n        });\n    } else if (eventType === 'click') {\n        return hitsChunks.map(function(batch, i) {\n            var _helper_lastResults;\n            return {\n                insightsMethod: 'clickedObjectIDsAfterSearch',\n                widgetType: widgetType,\n                eventType: eventType,\n                payload: _$2({\n                    eventName: eventName || 'Hit Clicked',\n                    index: ((_helper_lastResults = helper.lastResults) === null || _helper_lastResults === void 0 ? void 0 : _helper_lastResults.index) || helper.state.index,\n                    queryID: queryID,\n                    objectIDs: objectIDsByChunk[i],\n                    positions: positionsByChunk[i]\n                }, additionalData),\n                hits: batch,\n                eventModifier: eventModifier\n            };\n        });\n    } else if (eventType === 'conversion') {\n        return hitsChunks.map(function(batch, i) {\n            var _helper_lastResults;\n            return {\n                insightsMethod: 'convertedObjectIDsAfterSearch',\n                widgetType: widgetType,\n                eventType: eventType,\n                payload: _$2({\n                    eventName: eventName || 'Hit Converted',\n                    index: ((_helper_lastResults = helper.lastResults) === null || _helper_lastResults === void 0 ? void 0 : _helper_lastResults.index) || helper.state.index,\n                    queryID: queryID,\n                    objectIDs: objectIDsByChunk[i]\n                }, additionalData),\n                hits: batch,\n                eventModifier: eventModifier\n            };\n        });\n    } else {\n        return [];\n    }\n}\nfunction createSendEventForHits(param) {\n    var instantSearchInstance = param.instantSearchInstance, helper = param.helper, widgetType = param.widgetType;\n    var sentEvents = {};\n    var timer = undefined;\n    var sendEventForHits = function sendEventForHits() {\n        for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n            args[_key] = arguments[_key];\n        }\n        var payloads = _buildEventPayloadsForHits({\n            widgetType: widgetType,\n            helper: helper,\n            methodName: 'sendEvent',\n            args: args,\n            instantSearchInstance: instantSearchInstance\n        });\n        payloads.forEach(function(payload) {\n            if (payload.eventType === 'click' && payload.eventModifier === 'internal' && sentEvents[payload.eventType]) {\n                return;\n            }\n            sentEvents[payload.eventType] = true;\n            instantSearchInstance.sendEventToInsights(payload);\n        });\n        clearTimeout(timer);\n        timer = setTimeout(function() {\n            sentEvents = {};\n        }, 0);\n    };\n    return sendEventForHits;\n}\nfunction createBindEventForHits(param) {\n    var helper = param.helper, widgetType = param.widgetType, instantSearchInstance = param.instantSearchInstance;\n    var bindEventForHits = function bindEventForHits() {\n        for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n            args[_key] = arguments[_key];\n        }\n        var payloads = _buildEventPayloadsForHits({\n            widgetType: widgetType,\n            helper: helper,\n            methodName: 'bindEvent',\n            args: args,\n            instantSearchInstance: instantSearchInstance\n        });\n        return payloads.length ? \"data-insights-event=\".concat(serializePayload(payloads)) : '';\n    };\n    return bindEventForHits;\n}\n\nexport { _buildEventPayloadsForHits, createBindEventForHits, createSendEventForHits };\n","import { _ as _$2 } from '@swc/helpers/cjs/_define_property.cjs';\nimport { _ as _$1 } from '@swc/helpers/cjs/_object_spread.cjs';\nimport { _ } from '@swc/helpers/cjs/_object_spread_props.cjs';\nimport { createSendEventForHits, createBindEventForHits } from '../../lib/utils/createSendEventForHits.js';\nimport { createDocumentationMessageGenerator } from '../../lib/utils/documentation.js';\nimport { checkRendering } from '../../lib/utils/checkRendering.js';\nimport { escapeHits, TAG_PLACEHOLDER } from '../../lib/utils/escape-highlight.js';\nimport { addAbsolutePosition } from '../../lib/utils/hits-absolute-position.js';\nimport { addQueryID } from '../../lib/utils/hits-query-id.js';\nimport { noop } from '../../lib/utils/noop.js';\n\nvar withUsage = createDocumentationMessageGenerator({\n    name: 'hits',\n    connector: true\n});\nvar connectHits = (function connectHits(renderFn) {\n    var unmountFn = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : noop;\n    checkRendering(renderFn, withUsage());\n    return function(widgetParams) {\n        var _ref = widgetParams || {}, _ref_escapeHTML = _ref.// @MAJOR: this can default to false\n        escapeHTML, escapeHTML = _ref_escapeHTML === void 0 ? true : _ref_escapeHTML, _ref_transformItems = _ref.transformItems, transformItems = _ref_transformItems === void 0 ? function(items) {\n            return items;\n        } : _ref_transformItems;\n        var sendEvent;\n        var bindEvent;\n        return {\n            $$type: 'ais.hits',\n            init: function init(initOptions) {\n                renderFn(_(_$1({}, this.getWidgetRenderState(initOptions)), {\n                    instantSearchInstance: initOptions.instantSearchInstance\n                }), true);\n            },\n            render: function render(renderOptions) {\n                var renderState = this.getWidgetRenderState(renderOptions);\n                renderFn(_(_$1({}, renderState), {\n                    instantSearchInstance: renderOptions.instantSearchInstance\n                }), false);\n                renderState.sendEvent('view:internal', renderState.items);\n            },\n            getRenderState: function getRenderState(renderState, renderOptions) {\n                return _(_$1({}, renderState), {\n                    hits: this.getWidgetRenderState(renderOptions)\n                });\n            },\n            getWidgetRenderState: function getWidgetRenderState(param) {\n                var results = param.results, helper = param.helper, instantSearchInstance = param.instantSearchInstance;\n                var _results_renderingContent_widgets_banners, _results_renderingContent_widgets, _results_renderingContent;\n                if (!sendEvent) {\n                    sendEvent = createSendEventForHits({\n                        instantSearchInstance: instantSearchInstance,\n                        helper: helper,\n                        widgetType: this.$$type\n                    });\n                }\n                if (!bindEvent) {\n                    bindEvent = createBindEventForHits({\n                        helper: helper,\n                        widgetType: this.$$type,\n                        instantSearchInstance: instantSearchInstance\n                    });\n                }\n                if (!results) {\n                    return {\n                        hits: [],\n                        items: [],\n                        results: undefined,\n                        banner: undefined,\n                        sendEvent: sendEvent,\n                        bindEvent: bindEvent,\n                        widgetParams: widgetParams\n                    };\n                }\n                if (escapeHTML && results.hits.length > 0) {\n                    results.hits = escapeHits(results.hits);\n                }\n                var hitsWithAbsolutePosition = addAbsolutePosition(results.hits, results.page, results.hitsPerPage);\n                var hitsWithAbsolutePositionAndQueryID = addQueryID(hitsWithAbsolutePosition, results.queryID);\n                var items = transformItems(hitsWithAbsolutePositionAndQueryID, {\n                    results: results\n                });\n                var banner = (_results_renderingContent = results.renderingContent) === null || _results_renderingContent === void 0 ? void 0 : (_results_renderingContent_widgets = _results_renderingContent.widgets) === null || _results_renderingContent_widgets === void 0 ? void 0 : (_results_renderingContent_widgets_banners = _results_renderingContent_widgets.banners) === null || _results_renderingContent_widgets_banners === void 0 ? void 0 : _results_renderingContent_widgets_banners[0];\n                return {\n                    hits: items,\n                    items: items,\n                    results: results,\n                    banner: banner,\n                    sendEvent: sendEvent,\n                    bindEvent: bindEvent,\n                    widgetParams: widgetParams\n                };\n            },\n            dispose: function dispose(param) {\n                var state = param.state;\n                unmountFn();\n                if (!escapeHTML) {\n                    return state;\n                }\n                return state.setQueryParameters(Object.keys(TAG_PLACEHOLDER).reduce(function(acc, key) {\n                    return _(_$1({}, acc), _$2({}, key, undefined));\n                }, {}));\n            },\n            getWidgetSearchParameters: function getWidgetSearchParameters(state, _uiState) {\n                if (!escapeHTML) {\n                    return state;\n                }\n                // @MAJOR: set this globally, not in the Hits widget to allow Hits to be conditionally used\n                return state.setQueryParameters(TAG_PLACEHOLDER);\n            }\n        };\n    };\n});\n\nexport { connectHits as default };\n","import { _ as _$1 } from '@swc/helpers/cjs/_object_spread.cjs';\nimport { _ } from '@swc/helpers/cjs/_object_spread_props.cjs';\n\nfunction addAbsolutePosition(hits, page, hitsPerPage) {\n    return hits.map(function(hit, idx) {\n        return _(_$1({}, hit), {\n            __position: hitsPerPage * page + idx + 1\n        });\n    });\n}\n\nexport { addAbsolutePosition };\n","import { _ as _$1 } from '@swc/helpers/cjs/_object_spread.cjs';\nimport { _ } from '@swc/helpers/cjs/_object_spread_props.cjs';\n\nfunction addQueryID(hits, queryID) {\n    if (!queryID) {\n        return hits;\n    }\n    return hits.map(function(hit) {\n        return _(_$1({}, hit), {\n            __queryID: queryID\n        });\n    });\n}\n\nexport { addQueryID };\n","import connectHits from 'instantsearch.js/es/connectors/hits/connectHits.js';\nimport { useConnector } from '../hooks/useConnector.js';\n\nfunction useHits(props, additionalWidgetProperties) {\n    return useConnector(connectHits, props, additionalWidgetProperties);\n}\n\nexport { useHits };\n","import { _ as _$1 } from '@swc/helpers/cjs/_object_spread.cjs';\nimport { _ } from '@swc/helpers/cjs/_object_spread_props.cjs';\nimport { createDocumentationMessageGenerator } from '../../lib/utils/documentation.js';\nimport { checkRendering } from '../../lib/utils/checkRendering.js';\nimport { noop } from '../../lib/utils/noop.js';\n\nvar withUsage = createDocumentationMessageGenerator({\n    name: 'search-box',\n    connector: true\n});\nvar defaultQueryHook = function defaultQueryHook(query, hook) {\n    return hook(query);\n};\n/**\n * **SearchBox** connector provides the logic to build a widget that will let the user search for a query.\n *\n * The connector provides to the rendering: `refine()` to set the query. The behaviour of this function\n * may be impacted by the `queryHook` widget parameter.\n */ var connectSearchBox = function connectSearchBox(renderFn) {\n    var unmountFn = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : noop;\n    checkRendering(renderFn, withUsage());\n    return function(widgetParams) {\n        var _ref = widgetParams || {}, _ref_queryHook = _ref.queryHook, queryHook = _ref_queryHook === void 0 ? defaultQueryHook : _ref_queryHook;\n        var _refine;\n        var _clear;\n        return {\n            $$type: 'ais.searchBox',\n            init: function init(initOptions) {\n                var instantSearchInstance = initOptions.instantSearchInstance;\n                renderFn(_(_$1({}, this.getWidgetRenderState(initOptions)), {\n                    instantSearchInstance: instantSearchInstance\n                }), true);\n            },\n            render: function render(renderOptions) {\n                var instantSearchInstance = renderOptions.instantSearchInstance;\n                renderFn(_(_$1({}, this.getWidgetRenderState(renderOptions)), {\n                    instantSearchInstance: instantSearchInstance\n                }), false);\n            },\n            dispose: function dispose(param) {\n                var state = param.state;\n                unmountFn();\n                return state.setQueryParameter('query', undefined);\n            },\n            getRenderState: function getRenderState(renderState, renderOptions) {\n                return _(_$1({}, renderState), {\n                    searchBox: this.getWidgetRenderState(renderOptions)\n                });\n            },\n            getWidgetRenderState: function getWidgetRenderState(param) {\n                var helper = param.helper, instantSearchInstance = param.instantSearchInstance, state = param.state;\n                if (!_refine) {\n                    _refine = function _refine(query) {\n                        queryHook(query, function(q) {\n                            return helper.setQuery(q).search();\n                        });\n                    };\n                    _clear = function _clear() {\n                        helper.setQuery('').search();\n                    };\n                }\n                return {\n                    query: state.query || '',\n                    refine: _refine,\n                    clear: _clear,\n                    widgetParams: widgetParams,\n                    isSearchStalled: instantSearchInstance.status === 'stalled'\n                };\n            },\n            getWidgetUiState: function getWidgetUiState(uiState, param) {\n                var searchParameters = param.searchParameters;\n                var query = searchParameters.query || '';\n                if (query === '' || uiState && uiState.query === query) {\n                    return uiState;\n                }\n                return _(_$1({}, uiState), {\n                    query: query\n                });\n            },\n            getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, param) {\n                var uiState = param.uiState;\n                return searchParameters.setQueryParameter('query', uiState.query || '');\n            }\n        };\n    };\n};\n\nexport { connectSearchBox as default };\n","import connectSearchBox from 'instantsearch.js/es/connectors/search-box/connectSearchBox.js';\nimport { useConnector } from '../hooks/useConnector.js';\n\nfunction useSearchBox(props, additionalWidgetProperties) {\n    return useConnector(connectSearchBox, props, additionalWidgetProperties);\n}\n\nexport { useSearchBox };\n","import { _ } from '@swc/helpers/cjs/_sliced_to_array.cjs';\nimport { useState } from 'react';\nimport { dequal } from './dequal.js';\n\nfunction useStableValue(value) {\n    var _useState = _(useState(function() {\n        return value;\n    }), 2), stableValue = _useState[0], setStableValue = _useState[1];\n    if (!dequal(stableValue, value)) {\n        setStableValue(value);\n    }\n    return stableValue;\n}\n\nexport { useStableValue };\n","import * as React from 'react';\n\nvar useKey = 'use';\n// @TODO: Remove this file and import directly from React when available.\nvar use = React[useKey];\n\nexport { use };\n","import { _ as _$3 } from '@swc/helpers/cjs/_object_spread.cjs';\nimport { _ as _$2 } from '@swc/helpers/cjs/_object_without_properties.cjs';\nimport { _ as _$1 } from '@swc/helpers/cjs/_sliced_to_array.cjs';\nimport { _ } from '@swc/helpers/cjs/_to_array.cjs';\nimport { useRef, useMemo, useState } from 'react';\nimport { dequal } from '../lib/dequal.js';\nimport { getIndexSearchResults } from '../lib/getIndexSearchResults.js';\nimport { useIndexContext } from '../lib/useIndexContext.js';\nimport { useInstantSearchContext } from '../lib/useInstantSearchContext.js';\nimport { useInstantSearchServerContext } from '../lib/useInstantSearchServerContext.js';\nimport { useInstantSearchSSRContext } from '../lib/useInstantSearchSSRContext.js';\nimport { useStableValue } from '../lib/useStableValue.js';\nimport { useWidget } from '../lib/useWidget.js';\n\nfunction useConnector(connector) {\n    var _1 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : void 0, _2 = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : void 0;\n    var _ref = [\n        _1,\n        _2\n    ], _ref1 = _(_ref), tmp = _ref1[0], props = tmp === void 0 ? {} : tmp, _rest = _ref1.slice(1), _rest1 = _$1(_rest, 1), tmp1 = _rest1[0], _ref2 = tmp1 === void 0 ? {} : tmp1, _ref_skipSuspense = _ref2.skipSuspense, skipSuspense = _ref_skipSuspense === void 0 ? false : _ref_skipSuspense, additionalWidgetProperties = _$2(_ref2, [\n        \"skipSuspense\"\n    ]);\n    var serverContext = useInstantSearchServerContext();\n    var ssrContext = useInstantSearchSSRContext();\n    var search = useInstantSearchContext();\n    var parentIndex = useIndexContext();\n    var stableProps = useStableValue(props);\n    var stableAdditionalWidgetProperties = useStableValue(additionalWidgetProperties);\n    var shouldSetStateRef = useRef(true);\n    var previousRenderStateRef = useRef(null);\n    var previousStatusRef = useRef(search.status);\n    var widget = useMemo(function() {\n        var createWidget = connector(function(connectorState, isFirstRender) {\n            // We skip the `init` widget render because:\n            // - We rely on `getWidgetRenderState` to compute the initial state before\n            //   the InstantSearch.js lifecycle starts.\n            // - It prevents UI flashes when updating the widget props.\n            if (isFirstRender) {\n                shouldSetStateRef.current = true;\n                return;\n            }\n            // There are situations where InstantSearch.js may render widgets slightly\n            // after they're removed by React, and thus try to update the React state\n            // on unmounted components. React 16 and 17 consider them as memory leaks\n            // and display a warning.\n            // This happens in <DynamicWidgets> when `attributesToRender` contains a\n            // value without an attribute previously mounted. React will unmount the\n            // component controlled by that attribute, but InstantSearch.js will stay\n            // unaware of this change until the render pass finishes, and therefore\n            // notifies of a state change.\n            // This ref lets us track this situation and ignore these state updates.\n            if (shouldSetStateRef.current) {\n                var instantSearchInstance = connectorState.instantSearchInstance; connectorState.widgetParams; var renderState = _$2(connectorState, [\n                    \"instantSearchInstance\",\n                    \"widgetParams\"\n                ]);\n                // We only update the state when a widget render state param changes,\n                // except for functions. We ignore function reference changes to avoid\n                // infinite loops. It's safe to omit them because they get updated\n                // every time another render param changes.\n                if (!dequal(renderState, previousRenderStateRef.current, function(a, b) {\n                    return (a === null || a === void 0 ? void 0 : a.constructor) === Function && (b === null || b === void 0 ? void 0 : b.constructor) === Function;\n                }) || instantSearchInstance.status !== previousStatusRef.current) {\n                    // eslint-disable-next-line @typescript-eslint/no-use-before-define\n                    setState(renderState);\n                    previousRenderStateRef.current = renderState;\n                    previousStatusRef.current = instantSearchInstance.status;\n                }\n            }\n        }, function() {\n            // We'll ignore the next state update until we know for sure that\n            // InstantSearch.js re-inits the component.\n            shouldSetStateRef.current = false;\n        });\n        return _$3({}, createWidget(stableProps), stableAdditionalWidgetProperties);\n    }, [\n        connector,\n        stableProps,\n        stableAdditionalWidgetProperties\n    ]);\n    var _useState = _$1(useState(function() {\n        if (widget.getWidgetRenderState) {\n            var _widget_getWidgetSearchParameters;\n            // The helper exists because we've started InstantSearch.\n            var helper = parentIndex.getHelper();\n            var uiState = parentIndex.getWidgetUiState({})[parentIndex.getIndexId()];\n            helper.state = ((_widget_getWidgetSearchParameters = widget.getWidgetSearchParameters) === null || _widget_getWidgetSearchParameters === void 0 ? void 0 : _widget_getWidgetSearchParameters.call(widget, helper.state, {\n                uiState: uiState\n            })) || helper.state;\n            var _getIndexSearchResults = getIndexSearchResults(parentIndex), results = _getIndexSearchResults.results, scopedResults = _getIndexSearchResults.scopedResults, recommendResults = _getIndexSearchResults.recommendResults;\n            // We get the widget render state by providing the same parameters as\n            // InstantSearch provides to the widget's `render` method.\n            // See https://github.com/algolia/instantsearch/blob/019cd18d0de6dd320284aa4890541b7fe2198c65/src/widgets/index/index.ts#L604-L617\n            var _widget_getWidgetRenderState = widget.getWidgetRenderState({\n                helper: helper,\n                parent: parentIndex,\n                instantSearchInstance: search,\n                results: widget.dependsOn === 'recommend' && recommendResults && ssrContext ? recommendResults[ssrContext.recommendIdx.current++] : results,\n                scopedResults: scopedResults,\n                state: helper.state,\n                renderState: search.renderState,\n                templatesConfig: search.templatesConfig,\n                createURL: parentIndex.createURL,\n                searchMetadata: {\n                    isSearchStalled: search.status === 'stalled'\n                },\n                status: search.status,\n                error: search.error\n            }); _widget_getWidgetRenderState.widgetParams; var renderState = _$2(_widget_getWidgetRenderState, [\n                \"widgetParams\"\n            ]);\n            return renderState;\n        }\n        return {};\n    }), 2), state = _useState[0], setState = _useState[1];\n    useWidget({\n        widget: widget,\n        parentIndex: parentIndex,\n        props: stableProps,\n        shouldSsr: Boolean(serverContext),\n        skipSuspense: skipSuspense\n    });\n    return state;\n}\n\nexport { useConnector };\n","import { useRef, useEffect } from 'react';\nimport { dequal } from './dequal.js';\nimport { use } from './use.js';\nimport { useInstantSearchContext } from './useInstantSearchContext.js';\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect.js';\nimport { useRSCContext } from './useRSCContext.js';\n\nfunction useWidget(param) {\n    var widget = param.widget, parentIndex = param.parentIndex, props = param.props, shouldSsr = param.shouldSsr, skipSuspense = param.skipSuspense;\n    var _waitForResultsRef_current, _waitForResultsRef_current1;\n    var _useRSCContext = useRSCContext(), waitForResultsRef = _useRSCContext.waitForResultsRef, countRef = _useRSCContext.countRef; _useRSCContext.ignoreMultipleHooksWarning;\n    var prevPropsRef = useRef(props);\n    useEffect(function() {\n        prevPropsRef.current = props;\n    }, [\n        props\n    ]);\n    var prevWidgetRef = useRef(widget);\n    useEffect(function() {\n        prevWidgetRef.current = widget;\n    }, [\n        widget\n    ]);\n    var cleanupTimerRef = useRef(null);\n    var shouldAddWidgetEarly = shouldSsr && !parentIndex.getWidgets().includes(widget);\n    var search = useInstantSearchContext();\n    // This effect is responsible for adding, removing, and updating the widget.\n    // We need to support scenarios where the widget is remounted quickly, like in\n    // Strict Mode, so that we don't lose its state, and therefore that we don't\n    // break routing.\n    useIsomorphicLayoutEffect(function() {\n        var previousWidget = prevWidgetRef.current;\n        // Scenario 1: the widget is added for the first time.\n        if (!cleanupTimerRef.current) {\n            if (!shouldSsr) {\n                parentIndex.addWidgets([\n                    widget\n                ]);\n            }\n        } else {\n            // We cancel the original effect cleanup because it may not be necessary if\n            // props haven't changed. (We manually call it if it is below.)\n            clearTimeout(cleanupTimerRef.current);\n            // Warning: if an unstable function prop is provided, `dequal` is not able\n            // to keep its reference and therefore will consider that props did change.\n            // This could unsollicitely remove/add the widget, therefore forget its state,\n            // and could be a source of confusion.\n            // If users face this issue, we should advise them to provide stable function\n            // references.\n            var arePropsEqual = dequal(props, prevPropsRef.current);\n            // If props did change, then we execute the cleanup function instantly\n            // and then add the widget back. This lets us add the widget without\n            // waiting for the scheduled cleanup function to finish (that we canceled\n            // above).\n            if (!arePropsEqual) {\n                parentIndex.removeWidgets([\n                    previousWidget\n                ]);\n                parentIndex.addWidgets([\n                    widget\n                ]);\n            }\n        }\n        return function() {\n            // We don't remove the widget right away, but rather schedule it so that\n            // we're able to cancel it in the next effect.\n            cleanupTimerRef.current = setTimeout(function() {\n                search._schedule(function() {\n                    if (search._preventWidgetCleanup) return;\n                    parentIndex.removeWidgets([\n                        previousWidget\n                    ]);\n                });\n            });\n        };\n    }, [\n        parentIndex,\n        widget,\n        shouldSsr,\n        search,\n        props\n    ]);\n    if (shouldAddWidgetEarly || (waitForResultsRef === null || waitForResultsRef === void 0 ? void 0 : (_waitForResultsRef_current = waitForResultsRef.current) === null || _waitForResultsRef_current === void 0 ? void 0 : _waitForResultsRef_current.status) === 'pending') {\n        parentIndex.addWidgets([\n            widget\n        ]);\n    }\n    if ((waitForResultsRef === null || waitForResultsRef === void 0 ? void 0 : waitForResultsRef.current) && !skipSuspense) {\n        var _search_helper;\n        use(waitForResultsRef.current);\n        // If we made a second request because of DynamicWidgets, we need to wait for the second result,\n        // except for DynamicWidgets itself which needs to render its children after the first result.\n        if (widget.$$type !== 'ais.dynamicWidgets' && ((_search_helper = search.helper) === null || _search_helper === void 0 ? void 0 : _search_helper.lastResults)) {\n            use(waitForResultsRef.current);\n        }\n    }\n    if ((waitForResultsRef === null || waitForResultsRef === void 0 ? void 0 : (_waitForResultsRef_current1 = waitForResultsRef.current) === null || _waitForResultsRef_current1 === void 0 ? void 0 : _waitForResultsRef_current1.status) === 'fulfilled') {\n        countRef.current += 1;\n    }\n}\n\nexport { useWidget };\n","import { _ } from '@swc/helpers/cjs/_to_consumable_array.cjs';\nimport { useCallback } from 'react';\nimport { useInstantSearchContext } from '../lib/useInstantSearchContext.js';\nimport { useIsomorphicLayoutEffect } from '../lib/useIsomorphicLayoutEffect.js';\nimport { useSearchResults } from '../lib/useSearchResults.js';\nimport { useSearchState } from '../lib/useSearchState.js';\n\nfunction useInstantSearch() {\n    var catchError = (arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}).catchError;\n    var search = useInstantSearchContext();\n    var _useSearchState = useSearchState(), uiState = _useSearchState.uiState, setUiState = _useSearchState.setUiState, indexUiState = _useSearchState.indexUiState, setIndexUiState = _useSearchState.setIndexUiState, renderState = _useSearchState.renderState, indexRenderState = _useSearchState.indexRenderState;\n    var _useSearchResults = useSearchResults(), results = _useSearchResults.results, scopedResults = _useSearchResults.scopedResults;\n    var addMiddlewares = useCallback(function() {\n        for(var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++){\n            middlewares[_key] = arguments[_key];\n        }\n        var _search;\n        (_search = search).use.apply(_search, _(middlewares));\n        return function() {\n            var _search;\n            (_search = search).unuse.apply(_search, _(middlewares));\n        };\n    }, [\n        search\n    ]);\n    var refresh = useCallback(function() {\n        search.refresh();\n    }, [\n        search\n    ]);\n    useIsomorphicLayoutEffect(function() {\n        if (catchError) {\n            var onError = function onError() {};\n            search.addListener('error', onError);\n            return function() {\n                return search.removeListener('error', onError);\n            };\n        }\n        return function() {};\n    }, [\n        search,\n        catchError\n    ]);\n    return {\n        results: results,\n        scopedResults: scopedResults,\n        uiState: uiState,\n        setUiState: setUiState,\n        indexUiState: indexUiState,\n        setIndexUiState: setIndexUiState,\n        renderState: renderState,\n        indexRenderState: indexRenderState,\n        addMiddlewares: addMiddlewares,\n        refresh: refresh,\n        status: search.status,\n        error: search.error\n    };\n}\n\nexport { useInstantSearch };\n","import { _ } from '@swc/helpers/cjs/_sliced_to_array.cjs';\nimport { useState, useCallback, useEffect } from 'react';\nimport { useIndexContext } from './useIndexContext.js';\nimport { useInstantSearchContext } from './useInstantSearchContext.js';\n\nfunction useSearchState() {\n    var search = useInstantSearchContext();\n    var searchIndex = useIndexContext();\n    var indexId = searchIndex.getIndexId();\n    var _useState = _(useState(function() {\n        return search.getUiState();\n    }), 2), uiState = _useState[0], setLocalUiState = _useState[1];\n    var indexUiState = uiState[indexId];\n    var _useState1 = _(useState(function() {\n        return search.renderState;\n    }), 2), renderState = _useState1[0], setRenderState = _useState1[1];\n    var indexRenderState = renderState[indexId] || {};\n    var setUiState = useCallback(function(nextUiState) {\n        search.setUiState(nextUiState);\n    }, [\n        search\n    ]);\n    var setIndexUiState = useCallback(function(nextIndexUiState) {\n        searchIndex.setIndexUiState(nextIndexUiState);\n    }, [\n        searchIndex\n    ]);\n    useEffect(function() {\n        function handleRender() {\n            setLocalUiState(search.getUiState());\n            setRenderState(search.renderState);\n        }\n        search.addListener('render', handleRender);\n        // Force setting state to mitigate potential race conditions where\n        // render listener is added after search results have been returned.\n        // This edge case is currently not covered by the tests.\n        handleRender();\n        return function() {\n            search.removeListener('render', handleRender);\n        };\n    }, [\n        search\n    ]);\n    return {\n        uiState: uiState,\n        setUiState: setUiState,\n        indexUiState: indexUiState,\n        setIndexUiState: setIndexUiState,\n        renderState: renderState,\n        indexRenderState: indexRenderState\n    };\n}\n\nexport { useSearchState };\n","import { _ } from '@swc/helpers/cjs/_sliced_to_array.cjs';\nimport { isIndexWidget } from 'instantsearch.js/es/lib/utils/index.js';\nimport { useState, useEffect } from 'react';\nimport { getIndexSearchResults } from './getIndexSearchResults.js';\nimport { useIndexContext } from './useIndexContext.js';\nimport { useInstantSearchContext } from './useInstantSearchContext.js';\n\nfunction useSearchResults() {\n    var search = useInstantSearchContext();\n    var searchIndex = useIndexContext();\n    var _useState = _(useState(function() {\n        var indexSearchResults = getIndexSearchResults(searchIndex);\n        // We do this not to leak `recommendResults` in the API.\n        return {\n            results: indexSearchResults.results,\n            scopedResults: indexSearchResults.scopedResults\n        };\n    }), 2), searchResults = _useState[0], setSearchResults = _useState[1];\n    useEffect(function() {\n        function handleRender() {\n            var results = searchIndex.getResults();\n            // Results can be `null` when the first search is stalled.\n            // In this case, we skip the update.\n            // See: https://github.com/algolia/instantsearch/blob/20996c7a159988c58e00ff24d2d2dc98af8b980f/src/widgets/index/index.ts#L652-L657\n            if (results !== null) {\n                setSearchResults({\n                    results: results,\n                    scopedResults: searchIndex.getScopedResults()\n                });\n            } else if (search.mainIndex.getIndexName().length === 0) {\n                // If the main index has no name, we get the scoped results from\n                // the first child index instead.\n                var childIndex = search.mainIndex.getWidgets().find(isIndexWidget);\n                childIndex && setSearchResults({\n                    results: getIndexSearchResults(searchIndex).results,\n                    scopedResults: childIndex.getScopedResults()\n                });\n            }\n        }\n        search.addListener('render', handleRender);\n        // Force setting results to mitigate potential race conditions where\n        // render listener is added after search results have been returned.\n        // This edge case is currently not covered by the tests.\n        handleRender();\n        return function() {\n            search.removeListener('render', handleRender);\n        };\n    }, [\n        search,\n        searchIndex\n    ]);\n    return searchResults;\n}\n\nexport { useSearchResults };\n","import { createContext } from 'react';\n\nvar IndexContext = createContext(null);\n\nexport { IndexContext };\n","import { createContext } from 'react';\n\nvar InstantSearchContext = createContext(null);\n\nexport { InstantSearchContext };\n","import { createContext } from 'react';\n\nvar InstantSearchSSRContext = createContext(null);\n\nexport { InstantSearchSSRContext };\n","import { _ } from '@swc/helpers/cjs/_type_of.cjs';\n\n/* eslint-disable complexity */ /*\n * Code taken from dequal/lite v2.0.0\n * https://github.com/lukeed/dequal/blob/9aa73181ac7e081cd330cac67d313632ac04bb02/src/lite.js\n *\n * It adds a 3rd argument `compare(a, b)` that lets execute custom logic to\n * compare values.\n * We use it to skip comparing function references.\n */ // eslint-disable-next-line @typescript-eslint/unbound-method\nvar has = Object.prototype.hasOwnProperty;\nfunction dequal(foo, bar, compare) {\n    // start of custom implementation\n    if (compare === null || compare === void 0 ? void 0 : compare(foo, bar)) {\n        return true;\n    }\n    // end of custom implementation\n    var ctor;\n    var len;\n    if (foo === bar) return true;\n    if (foo && bar && (ctor = foo.constructor) === bar.constructor) {\n        if (ctor === Date) return foo.getTime() === bar.getTime();\n        if (ctor === RegExp) return foo.toString() === bar.toString();\n        if (ctor === Array) {\n            if ((len = foo.length) === bar.length) {\n                while(len-- && dequal(foo[len], bar[len], compare));\n            }\n            return len === -1;\n        }\n        if (!ctor || (typeof foo === \"undefined\" ? \"undefined\" : _(foo)) === 'object') {\n            len = 0;\n            // eslint-disable-next-line guard-for-in, no-restricted-syntax\n            for(ctor in foo){\n                if (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false;\n                if (!(ctor in bar) || !dequal(foo[ctor], bar[ctor], compare)) return false;\n            }\n            return Object.keys(bar).length === len;\n        }\n    }\n    // eslint-disable-next-line no-self-compare\n    return foo !== foo && bar !== bar;\n}\n\nexport { dequal };\n","import algoliasearchHelper from 'algoliasearch-helper';\n\nfunction createSearchResults(state) {\n    var _state_query, _state_page, _state_hitsPerPage;\n    return new algoliasearchHelper.SearchResults(state, [\n        {\n            query: (_state_query = state.query) !== null && _state_query !== void 0 ? _state_query : '',\n            page: (_state_page = state.page) !== null && _state_page !== void 0 ? _state_page : 0,\n            hitsPerPage: (_state_hitsPerPage = state.hitsPerPage) !== null && _state_hitsPerPage !== void 0 ? _state_hitsPerPage : 20,\n            hits: [],\n            nbHits: 0,\n            nbPages: 0,\n            params: '',\n            exhaustiveNbHits: true,\n            exhaustiveFacetsCount: true,\n            processingTimeMS: 0,\n            index: state.index\n        }\n    ], {\n        /** used by connectors to prevent persisting these results */ __isArtificial: true\n    });\n}\n\nexport { createSearchResults };\n","import { _ as _$1 } from '@swc/helpers/cjs/_object_spread.cjs';\nimport { _ } from '@swc/helpers/cjs/_object_spread_props.cjs';\nimport { createSearchResults } from './createSearchResults.js';\n\nfunction getIndexSearchResults(indexWidget) {\n    var helper = indexWidget.getHelper();\n    var results = // On SSR, we get the results injected on the Index.\n    indexWidget.getResults() || // On the browser, we create fallback results based on the helper state.\n    createSearchResults(helper.state);\n    var scopedResults = indexWidget.getScopedResults().map(function(scopedResult) {\n        var fallbackResults = scopedResult.indexId === indexWidget.getIndexId() ? results : createSearchResults(scopedResult.helper.state);\n        return _(_$1({}, scopedResult), {\n            // We keep `results` from being `null`.\n            results: scopedResult.results || fallbackResults\n        });\n    });\n    return {\n        results: results,\n        scopedResults: scopedResults,\n        recommendResults: helper.lastRecommendResults\n    };\n}\n\nexport { getIndexSearchResults };\n","/**\n * Throws an error if the condition is not met.\n *\n * The error is exhaustive in development, and becomes generic in production.\n *\n * This is used to make development a better experience to provide guidance as\n * to where the error comes from.\n */ function invariant(condition, message) {\n    if (condition) {\n        return;\n    }\n    {\n        throw new Error('Invariant failed');\n    }\n}\n\nexport { invariant };\n","import { useContext } from 'react';\nimport { IndexContext } from './IndexContext.js';\nimport { invariant } from './invariant.js';\n\nfunction useIndexContext() {\n    var context = useContext(IndexContext);\n    invariant(context !== null);\n    return context;\n}\n\nexport { useIndexContext };\n","import { useContext } from 'react';\nimport { InstantSearchContext } from './InstantSearchContext.js';\nimport { invariant } from './invariant.js';\n\nfunction useInstantSearchContext() {\n    var search = useContext(InstantSearchContext);\n    invariant(search !== null);\n    return search;\n}\n\nexport { useInstantSearchContext };\n","import { useContext } from 'react';\nimport { InstantSearchSSRContext } from './InstantSearchSSRContext.js';\n\nfunction useInstantSearchSSRContext() {\n    return useContext(InstantSearchSSRContext);\n}\n\nexport { useInstantSearchSSRContext };\n","import { createContext } from 'react';\n\nvar InstantSearchServerContext = createContext(null);\n\nexport { InstantSearchServerContext };\n","import { useContext } from 'react';\nimport { InstantSearchServerContext } from '../components/InstantSearchServerContext.js';\n\nfunction useInstantSearchServerContext() {\n    return useContext(InstantSearchServerContext);\n}\n\nexport { useInstantSearchServerContext };\n","import { useLayoutEffect, useEffect } from 'react';\n\n/**\n * `useLayoutEffect` that doesn't show a warning when server-side rendering.\n *\n * It uses `useEffect` on the server (no-op), and `useLayoutEffect` on the browser.\n */ var useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\n\nexport { useIsomorphicLayoutEffect };\n","import { createContext } from 'react';\n\nvar InstantSearchRSCContext = createContext({\n    countRef: {\n        current: 0\n    },\n    waitForResultsRef: null,\n    ignoreMultipleHooksWarning: false\n});\n\nexport { InstantSearchRSCContext };\n","import { useContext } from 'react';\nimport { InstantSearchRSCContext } from './InstantSearchRSCContext.js';\n\nfunction useRSCContext() {\n    return useContext(InstantSearchRSCContext);\n}\n\nexport { useRSCContext };\n"],"names":["EventEmitter","this","_events","_maxListeners","undefined","isFunction","arg","isObject","isUndefined","module","exports","prototype","defaultMaxListeners","setMaxListeners","n","isNaN","TypeError","emit","type","er","handler","len","args","i","listeners","error","length","arguments","Error","err","context","call","Array","slice","apply","addListener","listener","m","newListener","push","warned","console","trace","on","once","fired","g","removeListener","list","position","splice","removeAllListeners","key","listenerCount","evlistener","emitter","AlgoliaSearchHelper","__webpack_require__","RecommendParameters","RecommendResults","SearchParameters","SearchResults","algoliasearchHelper","client","index","opts","searchResultsOptions","version","DerivedHelper","mainHelper","fn","recommendFn","main","lastResults","lastRecommendResults","inherits","detach","detachDerivedHelper","getModifiedState","parameters","getModifiedRecommendState","params","constructor","addParams","newParams","removeParams","id","filter","param","$$id","addFrequentlyBoughtTogether","Object","assign","model","addRelatedProducts","addTrendingItems","addTrendingFacets","addLookingSimilar","_buildQueries","indexName","cache","map","query","threshold","state","results","_state","_rawResults","self","forEach","defaultsPure","objectHasKeys","omit","lib","addRefinement","refinementList","attribute","value","isRefined","valueAsString","facetRefinement","concat","mod","removeRefinement","clearRefinement","v","f","toggleRefinement","refinementType","hasChanged","newRefinementList","keys","reduce","memo","values","facetList","refinementValue","containsRefinements","Boolean","refinementValueAsString","indexOf","find","intersection","merge","valToNumber","isValidUserToken","RefinementList","isEqualNumericRefinement","a","b","isArray","every","el","newParameters","_parseNumbers","userToken","warn","facets","disjunctiveFacets","hierarchicalFacets","facetsRefinements","facetsExcludes","disjunctiveFacetsRefinements","numericRefinements","tagRefinements","hierarchicalFacetsRefinements","paramName","isKeyKnown","PARAMETERS","isValueDefined","partialState","numbers","k","parsedValue","parseFloat","insideBoundingBox","geoRect","operators","operator","parsedValues","vPrime","make","instance","facet","rootPath","currentRefinement","getHierarchicalRefinement","name","clearRefinements","toggleHierarchicalFacetRefinement","validate","currentState","tagFilters","numericFilters","patch","_clearNumericRefinements","setQueryParameters","clearTags","setIndex","setQuery","newQuery","setPage","newPage","page","setFacets","setDisjunctiveFacets","setHitsPerPage","hitsPerPage","setTypoTolerance","typoTolerance","addNumericRefinement","val","isNumericRefined","getConjunctiveRefinements","facetName","isConjunctiveFacet","getDisjunctiveRefinements","isDisjunctiveFacet","getExcludeRefinements","removeNumericRefinement","number","paramValue","op","getNumericRefinements","getNumericRefinement","newNumericRefinements","operatorList","outValues","addFacet","addDisjunctiveFacet","addHierarchicalFacet","hierarchicalFacet","isHierarchicalFacet","addFacetRefinement","addExcludeRefinement","addDisjunctiveFacetRefinement","addTagRefinement","tag","isTagRefined","modification","removeFacet","removeDisjunctiveFacet","removeHierarchicalFacet","removeFacetRefinement","removeExcludeRefinement","removeDisjunctiveFacetRefinement","removeTagRefinement","t","toggleFacetRefinement","toggleConjunctiveFacetRefinement","toggleDisjunctiveFacetRefinement","toggleExcludeFacetRefinement","separator","_getHierarchicalFacetSeparator","getHierarchicalFacetByName","lastIndexOf","addHierarchicalFacetRefinement","path","isHierarchicalFacetRefined","removeHierarchicalFacetRefinement","toggleTagRefinement","isFacetRefined","isExcludeRefined","isDisjunctiveFacetRefined","refinements","isOperatorDefined","array","searchedValue","isAttributeValueDefined","currentValue","getRefinedDisjunctiveFacets","disjunctiveNumericRefinedFacets","getRefinedHierarchicalFacets","sort","getUnrefinedDisjunctiveFacets","refinedFacets","managedParameters","getQueryParams","queryParams","setQueryParameter","parameter","nextWithNumbers","previousPlainObject","acc","nextPlainObject","previous","isPreviousValueDefined","isNextValueDefined","resetPage","_getHierarchicalFacetSortBy","sortBy","_getHierarchicalRootPath","_getHierarchicalShowParentLevel","showParentLevel","hierarchicalFacetName","getHierarchicalFacetBreadcrumb","refinement","split","part","trim","toString","JSON","stringify","hierarchicalFacetResult","hierarchicalFacetIndex","hierarchicalFacetRefinement","hierarchicalSeparator","hierarchicalRootPath","hierarchicalShowParentLevel","prepareHierarchicalFacetSortBy","rootExhaustive","facetResult","exhaustive","generateTreeFn","hierarchicalTree","currentHierarchicalLevel","parent","level","data","subtree","picked","facetValue","tuple","parentPath","onlyMatchingTree","orderBy","facetCount","parts","escapedValue","escapeFacetValue","count","format","unescapeFacetValue","generateHierarchicalTree","fv","compact","findIndex","formatSort","mergeNumericMax","getIndices","attributes","indices","idx","assignFacetStats","dest","facetStats","stats","options","mainSubResponse","persistHierarchicalRootCount","processingTimeMS","sum","result","facetsIndices","disjunctiveFacetsIndices","nextDisjunctiveResult","mainFacets","facetKey","hierarchicalAttributeName","facetValueObject","facetIndex","idxAttributeName","exhaustiveFacetsCount","isFacetDisjunctive","isFacetConjunctive","facets_stats","disjunctiveFacet","dfacet","facetResults","attributeIndex","dataFromMainRequest","refinedFacet","defaultData","root","excludes","extractNormalizedFacetValues","predicate","isExcluded","hierarchicalFacetValues","replace","currentRefinementSplit","unshift","setIsRefined","item","depth","child","recSort","sortFn","node","names","children","childNode","sortedChildren","getFacetStatsIfAvailable","getRefinement","attributeName","resultsFacets","getFacetByName","DEFAULT_SORT","getFacetValues","facetValues","facetOrdering","renderingContent","getFacetOrdering","orderedFacets","remainingFacets","hide","reverseOrder","order","hidden","ordering","sortRemainingBy","sortViaFacetOrdering","items","visible","vanillaSortFn","getFacetStats","getRefinements","res","facetDeclaration","rootFacet","intermediateFacet","newFacet","numericValue","requestBuilder","sortAndMergeRecommendations","addAlgoliaAgent","setClient","recommendState","_queryId","_recommendQueryId","_lastQueryIdReceived","_lastRecommendQueryIdReceived","derivedHelpers","_currentNbQueries","_currentNbRecommendQueries","_searchResultsOptions","_recommendCache","setCurrentPage","_change","isPageReset","getCurrentPage","search","_search","onlyWithDerivedHelpers","searchOnlyWithDerivedHelpers","searchWithComposition","_runComposition","recommend","_recommend","getQuery","_getHitsSearchParams","searchOnce","cb","tempState","queries","_getQueries","then","content","_originalResponse","e","catch","findAnswers","derivedHelper","Promise","resolve","derivedState","attributesForPrediction","nbHits","errorMessage","initIndex","queryLanguages","searchForFacetValues","maxFacetHits","userState","clientHasSFFV","searchForFacets","clientHasInitIndex","isDisjunctive","algoliaQuery","getSearchForFacetQuery","searchForFacetValuesPromise","response","facetHits","searchForCompositionFacetValues","compositionID","searchForFacetValuesRequest","searchQuery","_getCompositionHitsSearchParams","q","addDisjunctiveRefine","addRefine","addFacetExclusion","addExclude","addTag","_recommendChange","removeDisjunctiveRefine","removeRefine","removeFacetExclusion","removeExclude","removeTag","removeFrequentlyBoughtTogether","removeRelatedProducts","removeTrendingItems","removeTrendingFacets","removeLookingSimilar","toggleFacetExclusion","toggleExclude","toggleRefine","toggleTag","nextPage","previousPage","setState","newState","overrideStateWithoutTriggeringChangeEvent","hasRefinements","isDisjunctiveRefined","hasTag","hasTagRefinements","getIndex","getPage","getTags","r","states","mainQueries","queriesCount","helper","derivedQueries","derivedStateQueries","queryId","_dispatchAlgoliaResponse","bind","_dispatchAlgoliaError","_getCompositionQueries","searchState","ids","derivedIndex","getRecommendations","_dispatchRecommendResponse","_dispatchRecommendError","rawContent","s","specificResults","_rawContent","idsMap","firstResult","hits","containsRefinement","facetFilters","_hasDisjunctiveRefinements","disjunctiveRefinements","event","clearCache","newClient","getClient","derive","pos","hasPendingRequests","reduceRight","source","String","comparator","arr","defaults","defaultInstructions","out","sortInstruction","matchingDefault","defaultInstruction","ctor","superCtor","create","enumerable","writable","configurable","arr1","arr2","clone","_merge","isObjectOrArrayOrFunction","target","hasOwnProperty","sourceVal","targetVal","l","accValue","sourceValue","obj","excluded","sourceKeys","compareAscending","other","valIsDefined","valIsNull","othIsDefined","othIsNull","collection","iteratees","orders","criteria","iteratee","object","sortObject","curr","_getDisjunctiveFacetSearchParams","filtersMap","segment","join","hasHierarchicalFacetFilter","some","filteredFacetFilters","facetFilter","filtered","filterValue","requestBody","_getHitsHierarchicalFacetsAttributes","_getFacetFilters","_getNumericFilters","_getTagFilters","additionalParams","highlightPreTag","highlightPostTag","hierarchicalRootLevel","analytics","clickAnalytics","_getDisjunctiveHierarchicalFacetAttribute","vs","orFilters","attributeToRefine","attributesIndex","allAttributes","hierarchicalRefinement","newAttributes","rootLevel","parentLevel","stateForSearchForFacetValues","searchForFacetSearchParameters","facetQuery","test","flat","objectIDs","indexTracker","hit","includes","objectID","indexSum","nrOfObjs","avgIndices","avgOfIndices","getAverageIndices","orderedHits","avgIndexRef","React","objectIs","is","x","y","useState","useEffect","useLayoutEffect","useDebugValue","checkIfSnapshotChanged","inst","latestGetSnapshot","getSnapshot","nextValue","shim","window","document","createElement","subscribe","_useState","forceUpdate","useSyncExternalStore","_","_array_like_to_array","ReferenceError","_get_prototype_of","_is_native_reflect_construct","_possible_constructor_return","_this","derived","Reflect","construct","Constructor","_defineProperties","props","descriptor","defineProperty","protoProps","staticProps","_extends","o","setPrototypeOf","getPrototypeOf","__proto__","_set_prototype_of","subClass","superClass","left","right","Symbol","hasInstance","valueOf","iter","iterator","from","_i","_s","_e","_arr","_n","_d","next","done","_define_property","ownKeys","getOwnPropertySymbols","sym","getOwnPropertyDescriptor","getOwnPropertyDescriptors","defineProperties","symbols","_object_without_properties_loose","propertyIsEnumerable","getOwnPropertyNames","_assert_this_initialized","_type_of","p","_array_with_holes","_iterable_to_array_limit","_non_iterable_rest","_unsupported_iterable_to_array","_iterable_to_array","_array_without_holes","_non_iterable_spread","minLen","createBrowserLocalStorageCache","storage","namespaceKey","getStorage","localStorage","getNamespace","parse","getItem","setNamespace","namespace","setItem","get","defaultValue","events","miss","timeToLive","filteredNamespaceWithoutOldFormattedCacheItems","fromEntries","entries","cacheItem","timestamp","currentTimestamp","Date","getTime","removeOutdatedCacheItems","all","exists","set","delete","clear","removeItem","createFallbackableCache","caches","current","shift","_key","createMemoryCache","serializable","keyAsString","promise","createAuth","appId","apiKey","authMode","credentials","headers","queryParameters","createIterablePromise","func","aggregator","timeout","retry","previousResponse","reject","async","message","setTimeout","getAlgoliaAgent","algoliaAgents","defaultAlgoliaAgent","algoliaAgent","add","addedAlgoliaAgent","createAlgoliaAgent","createNullLogger","debug","_message","_args","info","EXPIRATION_DELAY","createStatefulHost","host","status","lastUpdate","now","isUp","isTimedOut","AlgoliaError","super","ErrorWithStackTrace","stackTrace","RetryError","ApiError","DeserializationError","DetailedApiError","shuffle","shuffledArray","c","Math","floor","random","serializeUrl","queryParametersAsString","encodeURIComponent","url","protocol","port","charAt","substring","stackFrameWithoutCredentials","stackFrame","modifiedHeaders","request","createTransporter","hosts","hostsCache","baseHeaders","logger","baseQueryParameters","timeouts","requester","requestsCache","responsesCache","compress","compression","requestOptions","createRetryableRequest","isRead","serializedData","method","serializeData","requestHeaders","requestOptionsHeaders","Accept","serializedHeaders","header","toLowerCase","serializeHeaders","wantsCompression","shouldCompress","dataQueryParameters","timeoutsCount","retryableHosts","getTimeout","pop","stackTraceWithoutCredentials","payload","connectTimeout","connect","responseTimeout","read","write","pushToStackTrace","response2","triesLeft","send","isNetworkError","isRetryable","isSuccess","deserializeSuccess","parsed","deserializeFailure","compatibleHosts","accept","statefulHosts","compatibleHost","hostsUp","hostsTimedOut","hostsAvailable","baseTimeout","createRetryableOptions","reverse","retryableRequest","useReadTransporter","cacheable","transporter","XMLHttpRequest","open","setRequestHeader","abort","u","onreadystatechange","readyState","OPENED","clearTimeout","onerror","responseText","onload","template","Container","className","d","react__WEBPACK_IMPORTED_MODULE_1__","useMemo","exec","text","substr","lastIndex","field","Children","isValidElement","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","jsx","Field","checkRendering","rendering","usage","createDocumentationMessageGenerator","_len","widgets","links","widget","_param_connector","connector","TAG_PLACEHOLDER","TAG_REPLACEMENT","replaceTagsAndEscape","_escape_html_js__WEBPACK_IMPORTED_MODULE_5__","RegExp","recursiveEscape","input","_isPlainObject_js__WEBPACK_IMPORTED_MODULE_6__","Q","_swc_helpers_cjs_object_spread_props_cjs__WEBPACK_IMPORTED_MODULE_4__","_swc_helpers_cjs_object_spread_cjs__WEBPACK_IMPORTED_MODULE_3__","_swc_helpers_cjs_define_property_cjs__WEBPACK_IMPORTED_MODULE_0__","escapeHits","__escaped","_0","_swc_helpers_cjs_object_destructuring_empty_cjs__WEBPACK_IMPORTED_MODULE_2__","_swc_helpers_cjs_extends_cjs__WEBPACK_IMPORTED_MODULE_1__","_highlightResult","_snippetResult","escapeFacets","h","highlighted","htmlEntities","regexUnescapedHtml","regexHasUnescapedHtml","escape","character","htmlCharacters","regexEscapedHtml","regexHasEscapedHtml","unescape","isIndexWidget","$$type","isPlainObject","_swc_helpers_cjs_type_of_cjs__WEBPACK_IMPORTED_MODULE_0__","isObjectLike","getTag","proto","mergeSearchParameters","hierarchicalFacetsRefinementsMerged","_object_spread","mergeHierarchicalFacetsRefinements","tagRefinementsMerged","mergeTagRefinements","nextFacets","mergeHierarchicalFacets","numericRefinementsMerged","mergeNumericRefinements","disjunctiveFacetsRefinementsMerged","mergeDisjunctiveFacetsRefinements","facetsExcludesMerged","mergeFacetsExcludes","facetRefinementsMerged","mergeFacetRefinements","disjunctiveFacetsMerged","mergeDisjunctiveFacets","ruleContextsMerged","ruleContexts","mergeRuleContexts","facetsMerged","mergeFacets","rest","_object_without_properties","mergeWithRest","noop","serializePayload","btoa","withUsage","documentation","V","getInitialSearchParameters","widgetParams","searchParameters","_object_spread_props","connectConfigure","renderFn","unmountFn","connectorState","init","initOptions","instantSearchInstance","getWidgetRenderState","render","renderOptions","dispose","getRenderState","renderState","_renderState_configure","widgetRenderState","configure","algoliasearch_helper","refine","actualState","nextSearchParameters","getWidgetSearchParameters","uiState","getWidgetUiState","Configure","useConnector","Z","$$widgetType","useConfigure","safelyRunOnBrowser","callback","fallback","getAppIdAndApiKey","searchClient","APP_ID","API_KEY","applicationID","ALGOLIA_INSIGHTS_VERSION","ALGOLIA_INSIGHTS_SRC","createInsightsMiddleware","_insightsClient","insightsClient","insightsInitParams","onEvent","_props_$$internal","$$internal","_props_$$automatic","$$automatic","potentialInsightsClient","pointer","AlgoliaAnalyticsObject","queue","shouldAddScript","_instantSearchInstance","existingInsightsMiddlewares","middleware","creator","unuse","_to_consumable_array","ref","initialParameters","_getAppIdAndApiKey","_sliced_to_array","queuedInitParams","queuedUserToken","userTokenBeforeInit","_ref","I","_error","normalizeUserToken","isModernInsightsClient","partial","onStateChange","script","src","body","appendChild","cause","started","queueAtStart","_instantSearchInstance__initialResults_instantSearchInstance_indexName","_instantSearchInstance__initialResults","stateFromInitialResults","_initialResults","stateFromHelper","getInitialParameters","scheduleSearch","setUserTokenToSearch","immediate","normalizedUserToken","existingToken","applyToken","setUserToken","token","userTokenFromInit","anonymousUserToken","anonymousTokenFromInsights","cookie","prefix","cookies","getCookie","tokenFromSearchParameters","useCookie","cookieDuration","setTime","MONTH","expires","toUTCString","saveTokenAsCookie","insightsClientWithLocalCredentials","latestAppId","latestApiKey","lastQueryId","viewedObjectIDs","Set","queryID","sendEventToInsights","insightsMethod","difference","has","algoliaSource","eventModifier","unsubscribe","_split_map","Number","major","minor","createInitArgs","getHelper","templatesConfig","createURL","scopedResults","searchMetadata","isSearchStalled","createRenderArgs","getResultsForWidget","getScopedResults","extractWidgetPayload","mainIndex","_initialUiState","widgetType","getWidgets","createMetadataMiddleware","_ref_$$internal","payloadContainer","refNode","querySelector","clientTyped","ua","userAgent","_ua","internal","remove","setWindowTitle","title","BrowserHistory","windowTitle","_param_writeDelay","writeDelay","parseURL","getLocation","start","cleanUrlOnDispose","_class_call_check","writeTimer","_createURL","_start","_dispose","_push","_cleanUrlOnDispose","window1","latestAcknowledgedHistory","history","_create_class","qsModule","location","routeState","shouldWrite","pushState","inPopState","_onPopState","addEventListener","isDisposed","removeEventListener","lastPushWasByISAfterDispose","href","getIndexStateWithoutConfigure","isPrimitive","isEqual","first","second","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","return","createRouterMiddleware","_props_router","router","_ref_createURL","hostname","_location_port","pathname","hash","queryString","portWithPrefix","_ref_parseURL","arrayLimit","_ref_writeDelay","_ref_getLocation","historyRouter","_props_stateMapping","stateMapping","stateToRoute","indexId","routeToState","nextState","previousUiState","route","lastRouteState","initialUiState","onUpdate","setUiState","_router_start","nextMicroTask","defer","progress","cancelled","wait","cancel","resolveSearchParameters","getParent","privateHelperSetState","_uiState","getLocalWidgetsUiState","widgetStateOptions","getWidgetState","getLocalWidgetsSearchParameters","widgetSearchParametersOptions","initialSearchParameters","dependsOn","getWidgetParameters","getLocalWidgetsRecommendParameters","widgetRecommendParametersOptions","initialRecommendParameters","resetPageFromWidgets","indexWidgets","widgetHelper","resolveScopedResultsFromWidgets","_scopedResults","getIndexId","getResults","EXPERIMENTAL_isolated","_widgetParams_indexName","_widgetParams_indexId","tmp","isolated","localWidgets","localUiState","localInstantSearchInstance","localParent","lastValidSearchParameters","hasRecommendWidget","hasSearchWidget","_isolated","getIndexName","getPreviousState","widgetParent","scheduleLocalSearch","addWidgets","flatWidgets","w","_hasRecommendWidget","_hasSearchWidget","addWidgetId","storeRenderState","removeWidgets","_flatWidgets_reduce","cleanedSearchState","cleanedRecommendState","_instanceof","future","preserveSharedStateOnUnmount","recommendParameters","searchWithoutTriggeringOnStateChange","isolatedHelper","derivingHelper","nearestIsolatedHelper","indexInitialResults","recommendResults","scheduleStalledRender","scheduleRender","onInternalStateChange","widgetsToRender","shouldRender","innerIndex","refreshUiState","setIndexUiState","indexUiState","nextIndexUiState","parentIndexName","component","componentName","descendantName","modifierName","descendent","modifier","getPropertyByPath","suit","concatHighlightedParts","escape_highlight","sn","isHighlighted","hasAlphanumeric","getHighlightFromSiblings","_parts_","_parts_1","isNextHighlighted","isPreviousHighlighted","escape_html","reverseHighlightedParts","getHighlightedParts","highlightedValue","splitByPreTag","firstValue","elements","splitByPostTag","reverseHighlight_suit","snippet_suit","reverseSnippet_suit","hoganHelpers","numberLocale","formatNumber","toLocaleString","highlight","highlightOptions","_param_highlightedTagName","highlightedTagName","_param_cssClasses","cssClasses","attributeValue","reverseHighlight","reverseHighlightOptions","snippet","snippetOptions","reverseSnippet","reverseSnippetOptions","insights","_JSON_parse","serializedPayload","serializer","writeDataAttributes","serializeQueryParameters","encode","setIndexHelperState","finalUiState","indexWidget","InstantSearch_withUsage","defaultCreateURL","INSTANTSEARCH_FUTURE_DEFAULTS","InstantSearch","_call_super","_this_mainHelper","shouldResetStatus","_searchStalledTimer","nextUiState","_options_indexName","_options_initialUiState","_options_routing","routing","_options_insights","searchFunction","_options_stalledSearchDelay","stalledSearchDelay","_options_searchClient","_options_insightsClient","_options_onStateChange","_options_future1","helpers","compileOptions","_stalledSearchDelay","_insights","_searchFunction","routerOptions","use","insightsOptions","_window_navigator_userAgent","_window_navigator","navigator","_inherits","newMiddlewareList","newMiddleware","middlewareToUnuse","initialResults","recommendCache","fakeClient","_mainHelperSearch","mainIndexHelper","searchFunctionHelper","_cacheHydrated","_useCache","cachedRequest","_results_key","requestParams","serverResults","mappedResults","_parameter_split","decodeURIComponent","cachedResults","baseMethod","requests","methodArgs","requestsWithSerializedParams","cacheKey","hydrateSearchClient","initialResult","originalScheduleSearch","_manuallyResetScheduleSearch","_resetScheduleSearch","_automaticInsights","callOnStateChange","version_version","defaultUserAgents","react","serverUserAgent","addAlgoliaAgents","userAgents","InstantSearch_InstantSearch","nextVersion","_window_next","_process_env","useReducer","serverContext","useInstantSearchServerContext","serverState","useInstantSearchSSRContext","waitForResultsRef","useRSCContext","prevPropsRef","useRef","shouldRenderAtOnce","searchRef","ssrSearchRef","_schedule","timer","process","env","NEXT_RUNTIME","notifyServer","_props_stalledSearchDelay","search1","prevProps","dequal","j","cleanupTimerRef","store","useCallback","_preventWidgetCleanup","useInstantSearchApi","InstantSearchContext","Provider","IndexContext","ResetScheduleSearch","InstantSearchSSRProvider","_swc_helpers_cjs_object_without_properties_cjs__WEBPACK_IMPORTED_MODULE_2__","react__WEBPACK_IMPORTED_MODULE_3__","recommendIdx","Fragment","_lib_InstantSearchSSRContext_js__WEBPACK_IMPORTED_MODULE_4__","R","_swc_helpers_cjs_object_spread_props_cjs__WEBPACK_IMPORTED_MODULE_1__","_swc_helpers_cjs_object_spread_cjs__WEBPACK_IMPORTED_MODULE_0__","_buildEventPayloadsForHits","methodName","_args__split","eventType","eventName","additionalData","hitsArray","__queryID","hitsChunks","chunkSize","chunks","ceil","chunk","objectIDsByChunk","batch","positionsByChunk","__position","_helper_lastResults","positions","connectHits","sendEvent","bindEvent","_ref_escapeHTML","escapeHTML","_ref_transformItems","transformItems","_results_renderingContent_widgets_banners","_results_renderingContent_widgets","_results_renderingContent","sentEvents","createSendEventForHits","payloads","createBindEventForHits","banner","S8","hitsWithAbsolutePositionAndQueryID","addQueryID","banners","FU","useHits","additionalWidgetProperties","defaultQueryHook","hook","connectSearchBox","_refine","_clear","_ref_queryHook","queryHook","searchBox","useSearchBox","useStableValue","stableValue","setStableValue","react_namespaceObject","_ref1","_to_array","_rest","tmp1","_ref2","_ref_skipSuspense","skipSuspense","ssrContext","useInstantSearchContext","parentIndex","useIndexContext","stableProps","stableAdditionalWidgetProperties","shouldSetStateRef","previousRenderStateRef","previousStatusRef","createWidget","isFirstRender","Function","_widget_getWidgetSearchParameters","_getIndexSearchResults","getIndexSearchResults","J","_widget_getWidgetRenderState","_waitForResultsRef_current","_waitForResultsRef_current1","shouldSsr","_useRSCContext","countRef","ignoreMultipleHooksWarning","prevWidgetRef","_search_helper","shouldAddWidgetEarly","useIsomorphicLayoutEffect","E","previousWidget","useWidget","useInstantSearch","catchError","_useSearchState","searchIndex","getUiState","setLocalUiState","_useState1","setRenderState","indexRenderState","handleRender","useSearchState","_useSearchResults","indexSearchResults","searchResults","setSearchResults","childIndex","useSearchResults","addMiddlewares","middlewares","refresh","onError","createContext","InstantSearchSSRContext","foo","bar","compare","createSearchResults","_state_query","_state_page","_state_hitsPerPage","nbPages","exhaustiveNbHits","__isArtificial","scopedResult","fallbackResults","invariant","condition","react__WEBPACK_IMPORTED_MODULE_0__","useContext","_IndexContext_js__WEBPACK_IMPORTED_MODULE_1__","_invariant_js__WEBPACK_IMPORTED_MODULE_2__","_InstantSearchContext_js__WEBPACK_IMPORTED_MODULE_1__","_InstantSearchSSRContext_js__WEBPACK_IMPORTED_MODULE_1__","InstantSearchServerContext","InstantSearchRSCContext"],"sourceRoot":""}