{"version":3,"file":"8325.d79311aad1c677997d19.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/qs/lib/formats.js","webpack://@logos/commerceweb-frontend/../node_modules/qs/lib/index.js","webpack://@logos/commerceweb-frontend/../node_modules/qs/lib/parse.js","webpack://@logos/commerceweb-frontend/../node_modules/qs/lib/stringify.js","webpack://@logos/commerceweb-frontend/../node_modules/qs/lib/utils.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","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n    RFC1738: 'RFC1738',\n    RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n    'default': Format.RFC3986,\n    formatters: {\n        RFC1738: function (value) {\n            return replace.call(value, percentTwenties, '+');\n        },\n        RFC3986: function (value) {\n            return String(value);\n        }\n    },\n    RFC1738: Format.RFC1738,\n    RFC3986: Format.RFC3986\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n    formats: formats,\n    parse: parse,\n    stringify: stringify\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n    allowDots: false,\n    allowEmptyArrays: false,\n    allowPrototypes: false,\n    allowSparse: false,\n    arrayLimit: 20,\n    charset: 'utf-8',\n    charsetSentinel: false,\n    comma: false,\n    decodeDotInKeys: false,\n    decoder: utils.decode,\n    delimiter: '&',\n    depth: 5,\n    duplicates: 'combine',\n    ignoreQueryPrefix: false,\n    interpretNumericEntities: false,\n    parameterLimit: 1000,\n    parseArrays: true,\n    plainObjects: false,\n    strictDepth: false,\n    strictMerge: true,\n    strictNullHandling: false,\n    throwOnLimitExceeded: false\n};\n\nvar interpretNumericEntities = function (str) {\n    return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n        return String.fromCharCode(parseInt(numberStr, 10));\n    });\n};\n\nvar parseArrayValue = function (val, options, currentArrayLength) {\n    if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n        return val.split(',');\n    }\n\n    if (options.throwOnLimitExceeded && currentArrayLength >= options.arrayLimit) {\n        throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.');\n    }\n\n    return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('&#10003;')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n    var obj = { __proto__: null };\n\n    var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n    cleanStr = cleanStr.replace(/%5B/gi, '[').replace(/%5D/gi, ']');\n\n    var limit = options.parameterLimit === Infinity ? void undefined : options.parameterLimit;\n    var parts = cleanStr.split(\n        options.delimiter,\n        options.throwOnLimitExceeded && typeof limit !== 'undefined' ? limit + 1 : limit\n    );\n\n    if (options.throwOnLimitExceeded && typeof limit !== 'undefined' && parts.length > limit) {\n        throw new RangeError('Parameter limit exceeded. Only ' + limit + ' parameter' + (limit === 1 ? '' : 's') + ' allowed.');\n    }\n\n    var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n    var i;\n\n    var charset = options.charset;\n    if (options.charsetSentinel) {\n        for (i = 0; i < parts.length; ++i) {\n            if (parts[i].indexOf('utf8=') === 0) {\n                if (parts[i] === charsetSentinel) {\n                    charset = 'utf-8';\n                } else if (parts[i] === isoSentinel) {\n                    charset = 'iso-8859-1';\n                }\n                skipIndex = i;\n                i = parts.length; // The eslint settings do not allow break;\n            }\n        }\n    }\n\n    for (i = 0; i < parts.length; ++i) {\n        if (i === skipIndex) {\n            continue;\n        }\n        var part = parts[i];\n\n        var bracketEqualsPos = part.indexOf(']=');\n        var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n        var key;\n        var val;\n        if (pos === -1) {\n            key = options.decoder(part, defaults.decoder, charset, 'key');\n            val = options.strictNullHandling ? null : '';\n        } else {\n            key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n\n            if (key !== null) {\n                val = utils.maybeMap(\n                    parseArrayValue(\n                        part.slice(pos + 1),\n                        options,\n                        isArray(obj[key]) ? obj[key].length : 0\n                    ),\n                    function (encodedVal) {\n                        return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n                    }\n                );\n            }\n        }\n\n        if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n            val = interpretNumericEntities(String(val));\n        }\n\n        if (part.indexOf('[]=') > -1) {\n            val = isArray(val) ? [val] : val;\n        }\n\n        if (options.comma && isArray(val) && val.length > options.arrayLimit) {\n            if (options.throwOnLimitExceeded) {\n                throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.');\n            }\n            val = utils.combine([], val, options.arrayLimit, options.plainObjects);\n        }\n\n        if (key !== null) {\n            var existing = has.call(obj, key);\n            if (existing && (options.duplicates === 'combine' || part.indexOf('[]=') > -1)) {\n                obj[key] = utils.combine(\n                    obj[key],\n                    val,\n                    options.arrayLimit,\n                    options.plainObjects\n                );\n            } else if (!existing || options.duplicates === 'last') {\n                obj[key] = val;\n            }\n        }\n    }\n\n    return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n    var currentArrayLength = 0;\n    if (chain.length > 0 && chain[chain.length - 1] === '[]') {\n        var parentKey = chain.slice(0, -1).join('');\n        currentArrayLength = Array.isArray(val) && val[parentKey] ? val[parentKey].length : 0;\n    }\n\n    var leaf = valuesParsed ? val : parseArrayValue(val, options, currentArrayLength);\n\n    for (var i = chain.length - 1; i >= 0; --i) {\n        var obj;\n        var root = chain[i];\n\n        if (root === '[]' && options.parseArrays) {\n            if (utils.isOverflow(leaf)) {\n                // leaf is already an overflow object, preserve it\n                obj = leaf;\n            } else {\n                obj = options.allowEmptyArrays && (leaf === '' || (options.strictNullHandling && leaf === null))\n                    ? []\n                    : utils.combine(\n                        [],\n                        leaf,\n                        options.arrayLimit,\n                        options.plainObjects\n                    );\n            }\n        } else {\n            obj = options.plainObjects ? { __proto__: null } : {};\n            var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n            var decodedRoot = options.decodeDotInKeys ? cleanRoot.replace(/%2E/g, '.') : cleanRoot;\n            var index = parseInt(decodedRoot, 10);\n            var isValidArrayIndex = !isNaN(index)\n                && root !== decodedRoot\n                && String(index) === decodedRoot\n                && index >= 0\n                && options.parseArrays;\n            if (!options.parseArrays && decodedRoot === '') {\n                obj = { 0: leaf };\n            } else if (isValidArrayIndex && index < options.arrayLimit) {\n                obj = [];\n                obj[index] = leaf;\n            } else if (isValidArrayIndex && options.throwOnLimitExceeded) {\n                throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.');\n            } else if (isValidArrayIndex) {\n                obj[index] = leaf;\n                utils.markOverflow(obj, index);\n            } else if (decodedRoot !== '__proto__') {\n                obj[decodedRoot] = leaf;\n            }\n        }\n\n        leaf = obj;\n    }\n\n    return leaf;\n};\n\n// Split a key like \"a[b][c[]]\" into ['a', '[b]', '[c[]]'] while preserving\n// qs parse semantics for depth/prototype guards.\nvar splitKeyIntoSegments = function splitKeyIntoSegments(originalKey, options) {\n    var key = options.allowDots ? originalKey.replace(/\\.([^.[]+)/g, '[$1]') : originalKey;\n\n    // depth <= 0 keeps the whole key as one segment\n    if (options.depth <= 0) {\n        if (!options.plainObjects && has.call(Object.prototype, key)) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n\n        return [key];\n    }\n\n    var segments = [];\n\n    // parent before the first '[' (may be empty if key starts with '[')\n    var first = key.indexOf('[');\n    var parent = first >= 0 ? key.slice(0, first) : key;\n    if (parent) {\n        if (!options.plainObjects && has.call(Object.prototype, parent)) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n\n        segments[segments.length] = parent;\n    }\n\n    var n = key.length;\n    var open = first;\n    var collected = 0;\n\n    while (open >= 0 && collected < options.depth) {\n        var level = 1;\n        var i = open + 1;\n        var close = -1;\n\n        // balance nested '[' and ']' inside this bracket group using a nesting level counter\n        while (i < n && close < 0) {\n            var cu = key.charCodeAt(i);\n            if (cu === 0x5B) { // '['\n                level += 1;\n            } else if (cu === 0x5D) { // ']'\n                level -= 1;\n                if (level === 0) {\n                    close = i; // found matching close; loop will exit by condition\n                }\n            }\n            i += 1;\n        }\n\n        if (close < 0) {\n            // Unterminated group: wrap the raw remainder in one bracket pair so it stays\n            // a single literal segment (e.g. \"[[]b\" -> \"[[]b]\"); we do not infer missing ']'.\n            segments[segments.length] = '[' + key.slice(open) + ']';\n            return segments;\n        }\n\n        var seg = key.slice(open, close + 1);\n        // prototype guard for the content of this group\n        var content = seg.slice(1, -1);\n        if (!options.plainObjects && has.call(Object.prototype, content) && !options.allowPrototypes) {\n            return;\n        }\n\n        segments[segments.length] = seg;\n        collected += 1;\n\n        // find the next '[' after this balanced group\n        open = key.indexOf('[', close + 1);\n    }\n\n    if (open >= 0) {\n        if (options.strictDepth === true) {\n            throw new RangeError('Input depth exceeded depth option of ' + options.depth + ' and strictDepth is true');\n        }\n\n        segments[segments.length] = '[' + key.slice(open) + ']';\n    }\n\n    return segments;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n    if (!givenKey) {\n        return;\n    }\n\n    var keys = splitKeyIntoSegments(givenKey, options);\n\n    if (!keys) {\n        return;\n    }\n\n    return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n    if (!opts) {\n        return defaults;\n    }\n\n    if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n        throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n    }\n\n    if (typeof opts.decodeDotInKeys !== 'undefined' && typeof opts.decodeDotInKeys !== 'boolean') {\n        throw new TypeError('`decodeDotInKeys` option can only be `true` or `false`, when provided');\n    }\n\n    if (opts.decoder !== null && typeof opts.decoder !== 'undefined' && typeof opts.decoder !== 'function') {\n        throw new TypeError('Decoder has to be a function.');\n    }\n\n    if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n        throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n    }\n\n    if (typeof opts.throwOnLimitExceeded !== 'undefined' && typeof opts.throwOnLimitExceeded !== 'boolean') {\n        throw new TypeError('`throwOnLimitExceeded` option must be a boolean');\n    }\n\n    var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n    var duplicates = typeof opts.duplicates === 'undefined' ? defaults.duplicates : opts.duplicates;\n\n    if (duplicates !== 'combine' && duplicates !== 'first' && duplicates !== 'last') {\n        throw new TypeError('The duplicates option must be either combine, first, or last');\n    }\n\n    var allowDots = typeof opts.allowDots === 'undefined' ? opts.decodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;\n\n    return {\n        allowDots: allowDots,\n        allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n        allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n        allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n        arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n        charset: charset,\n        charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n        comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n        decodeDotInKeys: typeof opts.decodeDotInKeys === 'boolean' ? opts.decodeDotInKeys : defaults.decodeDotInKeys,\n        decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n        delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n        // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n        depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n        duplicates: duplicates,\n        ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n        interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n        parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n        parseArrays: opts.parseArrays !== false,\n        plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n        strictDepth: typeof opts.strictDepth === 'boolean' ? !!opts.strictDepth : defaults.strictDepth,\n        strictMerge: typeof opts.strictMerge === 'boolean' ? !!opts.strictMerge : defaults.strictMerge,\n        strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling,\n        throwOnLimitExceeded: typeof opts.throwOnLimitExceeded === 'boolean' ? opts.throwOnLimitExceeded : false\n    };\n};\n\nmodule.exports = function (str, opts) {\n    var options = normalizeParseOptions(opts);\n\n    if (str === '' || str === null || typeof str === 'undefined') {\n        return options.plainObjects ? { __proto__: null } : {};\n    }\n\n    var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n    var obj = options.plainObjects ? { __proto__: null } : {};\n\n    // Iterate over the keys and setup the new object\n\n    var keys = Object.keys(tempObj);\n    for (var i = 0; i < keys.length; ++i) {\n        var key = keys[i];\n        var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n        obj = utils.merge(obj, newObj, options);\n    }\n\n    if (options.allowSparse === true) {\n        return obj;\n    }\n\n    return utils.compact(obj);\n};\n","'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n    brackets: function brackets(prefix) {\n        return prefix + '[]';\n    },\n    comma: 'comma',\n    indices: function indices(prefix, key) {\n        return prefix + '[' + key + ']';\n    },\n    repeat: function repeat(prefix) {\n        return prefix;\n    }\n};\n\nvar isArray = Array.isArray;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n    push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n    addQueryPrefix: false,\n    allowDots: false,\n    allowEmptyArrays: false,\n    arrayFormat: 'indices',\n    charset: 'utf-8',\n    charsetSentinel: false,\n    commaRoundTrip: false,\n    delimiter: '&',\n    encode: true,\n    encodeDotInKeys: false,\n    encoder: utils.encode,\n    encodeValuesOnly: false,\n    filter: void undefined,\n    format: defaultFormat,\n    formatter: formats.formatters[defaultFormat],\n    // deprecated\n    indices: false,\n    serializeDate: function serializeDate(date) {\n        return toISO.call(date);\n    },\n    skipNulls: false,\n    strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n    return typeof v === 'string'\n        || typeof v === 'number'\n        || typeof v === 'boolean'\n        || typeof v === 'symbol'\n        || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n    object,\n    prefix,\n    generateArrayPrefix,\n    commaRoundTrip,\n    allowEmptyArrays,\n    strictNullHandling,\n    skipNulls,\n    encodeDotInKeys,\n    encoder,\n    filter,\n    sort,\n    allowDots,\n    serializeDate,\n    format,\n    formatter,\n    encodeValuesOnly,\n    charset,\n    sideChannel\n) {\n    var obj = object;\n\n    var tmpSc = sideChannel;\n    var step = 0;\n    var findFlag = false;\n    while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n        // Where object last appeared in the ref tree\n        var pos = tmpSc.get(object);\n        step += 1;\n        if (typeof pos !== 'undefined') {\n            if (pos === step) {\n                throw new RangeError('Cyclic object value');\n            } else {\n                findFlag = true; // Break while\n            }\n        }\n        if (typeof tmpSc.get(sentinel) === 'undefined') {\n            step = 0;\n        }\n    }\n\n    if (typeof filter === 'function') {\n        obj = filter(prefix, obj);\n    } else if (obj instanceof Date) {\n        obj = serializeDate(obj);\n    } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n        obj = utils.maybeMap(obj, function (value) {\n            if (value instanceof Date) {\n                return serializeDate(value);\n            }\n            return value;\n        });\n    }\n\n    if (obj === null) {\n        if (strictNullHandling) {\n            return formatter(encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix);\n        }\n\n        obj = '';\n    }\n\n    if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n        if (encoder) {\n            var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n            return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n        }\n        return [formatter(prefix) + '=' + formatter(String(obj))];\n    }\n\n    var values = [];\n\n    if (typeof obj === 'undefined') {\n        return values;\n    }\n\n    var objKeys;\n    if (generateArrayPrefix === 'comma' && isArray(obj)) {\n        // we need to join elements in\n        if (encodeValuesOnly && encoder) {\n            obj = utils.maybeMap(obj, function (v) {\n                return v == null ? v : encoder(v);\n            });\n        }\n        objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n    } else if (isArray(filter)) {\n        objKeys = filter;\n    } else {\n        var keys = Object.keys(obj);\n        objKeys = sort ? keys.sort(sort) : keys;\n    }\n\n    var encodedPrefix = encodeDotInKeys ? String(prefix).replace(/\\./g, '%2E') : String(prefix);\n\n    var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? encodedPrefix + '[]' : encodedPrefix;\n\n    if (allowEmptyArrays && isArray(obj) && obj.length === 0) {\n        return adjustedPrefix + '[]';\n    }\n\n    for (var j = 0; j < objKeys.length; ++j) {\n        var key = objKeys[j];\n        var value = typeof key === 'object' && key && typeof key.value !== 'undefined'\n            ? key.value\n            : obj[key];\n\n        if (skipNulls && value === null) {\n            continue;\n        }\n\n        var encodedKey = allowDots && encodeDotInKeys ? String(key).replace(/\\./g, '%2E') : String(key);\n        var keyPrefix = isArray(obj)\n            ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, encodedKey) : adjustedPrefix\n            : adjustedPrefix + (allowDots ? '.' + encodedKey : '[' + encodedKey + ']');\n\n        sideChannel.set(object, step);\n        var valueSideChannel = getSideChannel();\n        valueSideChannel.set(sentinel, sideChannel);\n        pushToArray(values, stringify(\n            value,\n            keyPrefix,\n            generateArrayPrefix,\n            commaRoundTrip,\n            allowEmptyArrays,\n            strictNullHandling,\n            skipNulls,\n            encodeDotInKeys,\n            generateArrayPrefix === 'comma' && encodeValuesOnly && isArray(obj) ? null : encoder,\n            filter,\n            sort,\n            allowDots,\n            serializeDate,\n            format,\n            formatter,\n            encodeValuesOnly,\n            charset,\n            valueSideChannel\n        ));\n    }\n\n    return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n    if (!opts) {\n        return defaults;\n    }\n\n    if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n        throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n    }\n\n    if (typeof opts.encodeDotInKeys !== 'undefined' && typeof opts.encodeDotInKeys !== 'boolean') {\n        throw new TypeError('`encodeDotInKeys` option can only be `true` or `false`, when provided');\n    }\n\n    if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n        throw new TypeError('Encoder has to be a function.');\n    }\n\n    var charset = opts.charset || defaults.charset;\n    if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n        throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n    }\n\n    var format = formats['default'];\n    if (typeof opts.format !== 'undefined') {\n        if (!has.call(formats.formatters, opts.format)) {\n            throw new TypeError('Unknown format option provided.');\n        }\n        format = opts.format;\n    }\n    var formatter = formats.formatters[format];\n\n    var filter = defaults.filter;\n    if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n        filter = opts.filter;\n    }\n\n    var arrayFormat;\n    if (opts.arrayFormat in arrayPrefixGenerators) {\n        arrayFormat = opts.arrayFormat;\n    } else if ('indices' in opts) {\n        arrayFormat = opts.indices ? 'indices' : 'repeat';\n    } else {\n        arrayFormat = defaults.arrayFormat;\n    }\n\n    if ('commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n        throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n    }\n\n    var allowDots = typeof opts.allowDots === 'undefined' ? opts.encodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;\n\n    return {\n        addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n        allowDots: allowDots,\n        allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n        arrayFormat: arrayFormat,\n        charset: charset,\n        charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n        commaRoundTrip: !!opts.commaRoundTrip,\n        delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n        encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n        encodeDotInKeys: typeof opts.encodeDotInKeys === 'boolean' ? opts.encodeDotInKeys : defaults.encodeDotInKeys,\n        encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n        encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n        filter: filter,\n        format: format,\n        formatter: formatter,\n        serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n        skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n        sort: typeof opts.sort === 'function' ? opts.sort : null,\n        strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n    };\n};\n\nmodule.exports = function (object, opts) {\n    var obj = object;\n    var options = normalizeStringifyOptions(opts);\n\n    var objKeys;\n    var filter;\n\n    if (typeof options.filter === 'function') {\n        filter = options.filter;\n        obj = filter('', obj);\n    } else if (isArray(options.filter)) {\n        filter = options.filter;\n        objKeys = filter;\n    }\n\n    var keys = [];\n\n    if (typeof obj !== 'object' || obj === null) {\n        return '';\n    }\n\n    var generateArrayPrefix = arrayPrefixGenerators[options.arrayFormat];\n    var commaRoundTrip = generateArrayPrefix === 'comma' && options.commaRoundTrip;\n\n    if (!objKeys) {\n        objKeys = Object.keys(obj);\n    }\n\n    if (options.sort) {\n        objKeys.sort(options.sort);\n    }\n\n    var sideChannel = getSideChannel();\n    for (var i = 0; i < objKeys.length; ++i) {\n        var key = objKeys[i];\n\n        if (typeof key === 'undefined' || key === null) {\n            continue;\n        }\n\n        var value = obj[key];\n\n        if (options.skipNulls && value === null) {\n            continue;\n        }\n        pushToArray(keys, stringify(\n            value,\n            key,\n            generateArrayPrefix,\n            commaRoundTrip,\n            options.allowEmptyArrays,\n            options.strictNullHandling,\n            options.skipNulls,\n            options.encodeDotInKeys,\n            options.encode ? options.encoder : null,\n            options.filter,\n            options.sort,\n            options.allowDots,\n            options.serializeDate,\n            options.format,\n            options.formatter,\n            options.encodeValuesOnly,\n            options.charset,\n            sideChannel\n        ));\n    }\n\n    var joined = keys.join(options.delimiter);\n    var prefix = options.addQueryPrefix === true ? '?' : '';\n\n    if (options.charsetSentinel) {\n        if (options.charset === 'iso-8859-1') {\n            // encodeURIComponent('&#10003;'), the \"numeric entity\" representation of a checkmark\n            prefix += 'utf8=%26%2310003%3B' + options.delimiter;\n        } else {\n            // encodeURIComponent('✓')\n            prefix += 'utf8=%E2%9C%93' + options.delimiter;\n        }\n    }\n\n    return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar formats = require('./formats');\nvar getSideChannel = require('side-channel');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\n// Track objects created from arrayLimit overflow using side-channel\n// Stores the current max numeric index for O(1) lookup\nvar overflowChannel = getSideChannel();\n\nvar markOverflow = function markOverflow(obj, maxIndex) {\n    overflowChannel.set(obj, maxIndex);\n    return obj;\n};\n\nvar isOverflow = function isOverflow(obj) {\n    return overflowChannel.has(obj);\n};\n\nvar getMaxIndex = function getMaxIndex(obj) {\n    return overflowChannel.get(obj);\n};\n\nvar setMaxIndex = function setMaxIndex(obj, maxIndex) {\n    overflowChannel.set(obj, maxIndex);\n};\n\nvar hexTable = (function () {\n    var array = [];\n    for (var i = 0; i < 256; ++i) {\n        array[array.length] = '%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase();\n    }\n\n    return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n    while (queue.length > 1) {\n        var item = queue.pop();\n        var obj = item.obj[item.prop];\n\n        if (isArray(obj)) {\n            var compacted = [];\n\n            for (var j = 0; j < obj.length; ++j) {\n                if (typeof obj[j] !== 'undefined') {\n                    compacted[compacted.length] = obj[j];\n                }\n            }\n\n            item.obj[item.prop] = compacted;\n        }\n    }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n    var obj = options && options.plainObjects ? { __proto__: null } : {};\n    for (var i = 0; i < source.length; ++i) {\n        if (typeof source[i] !== 'undefined') {\n            obj[i] = source[i];\n        }\n    }\n\n    return obj;\n};\n\nvar merge = function merge(target, source, options) {\n    /* eslint no-param-reassign: 0 */\n    if (!source) {\n        return target;\n    }\n\n    if (typeof source !== 'object' && typeof source !== 'function') {\n        if (isArray(target)) {\n            var nextIndex = target.length;\n            if (options && typeof options.arrayLimit === 'number' && nextIndex > options.arrayLimit) {\n                return markOverflow(arrayToObject(target.concat(source), options), nextIndex);\n            }\n            target[nextIndex] = source;\n        } else if (target && typeof target === 'object') {\n            if (isOverflow(target)) {\n                // Add at next numeric index for overflow objects\n                var newIndex = getMaxIndex(target) + 1;\n                target[newIndex] = source;\n                setMaxIndex(target, newIndex);\n            } else if (options && options.strictMerge) {\n                return [target, source];\n            } else if (\n                (options && (options.plainObjects || options.allowPrototypes))\n                || !has.call(Object.prototype, source)\n            ) {\n                target[source] = true;\n            }\n        } else {\n            return [target, source];\n        }\n\n        return target;\n    }\n\n    if (!target || typeof target !== 'object') {\n        if (isOverflow(source)) {\n            // Create new object with target at 0, source values shifted by 1\n            var sourceKeys = Object.keys(source);\n            var result = options && options.plainObjects\n                ? { __proto__: null, 0: target }\n                : { 0: target };\n            for (var m = 0; m < sourceKeys.length; m++) {\n                var oldKey = parseInt(sourceKeys[m], 10);\n                result[oldKey + 1] = source[sourceKeys[m]];\n            }\n            return markOverflow(result, getMaxIndex(source) + 1);\n        }\n        var combined = [target].concat(source);\n        if (options && typeof options.arrayLimit === 'number' && combined.length > options.arrayLimit) {\n            return markOverflow(arrayToObject(combined, options), combined.length - 1);\n        }\n        return combined;\n    }\n\n    var mergeTarget = target;\n    if (isArray(target) && !isArray(source)) {\n        mergeTarget = arrayToObject(target, options);\n    }\n\n    if (isArray(target) && isArray(source)) {\n        source.forEach(function (item, i) {\n            if (has.call(target, i)) {\n                var targetItem = target[i];\n                if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n                    target[i] = merge(targetItem, item, options);\n                } else {\n                    target[target.length] = item;\n                }\n            } else {\n                target[i] = item;\n            }\n        });\n        return target;\n    }\n\n    return Object.keys(source).reduce(function (acc, key) {\n        var value = source[key];\n\n        if (has.call(acc, key)) {\n            acc[key] = merge(acc[key], value, options);\n        } else {\n            acc[key] = value;\n        }\n\n        if (isOverflow(source) && !isOverflow(acc)) {\n            markOverflow(acc, getMaxIndex(source));\n        }\n        if (isOverflow(acc)) {\n            var keyNum = parseInt(key, 10);\n            if (String(keyNum) === key && keyNum >= 0 && keyNum > getMaxIndex(acc)) {\n                setMaxIndex(acc, keyNum);\n            }\n        }\n\n        return acc;\n    }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n    return Object.keys(source).reduce(function (acc, key) {\n        acc[key] = source[key];\n        return acc;\n    }, target);\n};\n\nvar decode = function (str, defaultDecoder, charset) {\n    var strWithoutPlus = str.replace(/\\+/g, ' ');\n    if (charset === 'iso-8859-1') {\n        // unescape never throws, no try...catch needed:\n        return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n    }\n    // utf-8\n    try {\n        return decodeURIComponent(strWithoutPlus);\n    } catch (e) {\n        return strWithoutPlus;\n    }\n};\n\nvar limit = 1024;\n\n/* eslint operator-linebreak: [2, \"before\"] */\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n    // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n    // It has been adapted here for stricter adherence to RFC 3986\n    if (str.length === 0) {\n        return str;\n    }\n\n    var string = str;\n    if (typeof str === 'symbol') {\n        string = Symbol.prototype.toString.call(str);\n    } else if (typeof str !== 'string') {\n        string = String(str);\n    }\n\n    if (charset === 'iso-8859-1') {\n        return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n            return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n        });\n    }\n\n    var out = '';\n    for (var j = 0; j < string.length; j += limit) {\n        var segment = string.length >= limit ? string.slice(j, j + limit) : string;\n        var arr = [];\n\n        for (var i = 0; i < segment.length; ++i) {\n            var c = segment.charCodeAt(i);\n            if (\n                c === 0x2D // -\n                || c === 0x2E // .\n                || c === 0x5F // _\n                || c === 0x7E // ~\n                || (c >= 0x30 && c <= 0x39) // 0-9\n                || (c >= 0x41 && c <= 0x5A) // a-z\n                || (c >= 0x61 && c <= 0x7A) // A-Z\n                || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n            ) {\n                arr[arr.length] = segment.charAt(i);\n                continue;\n            }\n\n            if (c < 0x80) {\n                arr[arr.length] = hexTable[c];\n                continue;\n            }\n\n            if (c < 0x800) {\n                arr[arr.length] = hexTable[0xC0 | (c >> 6)]\n                    + hexTable[0x80 | (c & 0x3F)];\n                continue;\n            }\n\n            if (c < 0xD800 || c >= 0xE000) {\n                arr[arr.length] = hexTable[0xE0 | (c >> 12)]\n                    + hexTable[0x80 | ((c >> 6) & 0x3F)]\n                    + hexTable[0x80 | (c & 0x3F)];\n                continue;\n            }\n\n            i += 1;\n            c = 0x10000 + (((c & 0x3FF) << 10) | (segment.charCodeAt(i) & 0x3FF));\n\n            arr[arr.length] = hexTable[0xF0 | (c >> 18)]\n                + hexTable[0x80 | ((c >> 12) & 0x3F)]\n                + hexTable[0x80 | ((c >> 6) & 0x3F)]\n                + hexTable[0x80 | (c & 0x3F)];\n        }\n\n        out += arr.join('');\n    }\n\n    return out;\n};\n\nvar compact = function compact(value) {\n    var queue = [{ obj: { o: value }, prop: 'o' }];\n    var refs = [];\n\n    for (var i = 0; i < queue.length; ++i) {\n        var item = queue[i];\n        var obj = item.obj[item.prop];\n\n        var keys = Object.keys(obj);\n        for (var j = 0; j < keys.length; ++j) {\n            var key = keys[j];\n            var val = obj[key];\n            if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n                queue[queue.length] = { obj: obj, prop: key };\n                refs[refs.length] = val;\n            }\n        }\n    }\n\n    compactQueue(queue);\n\n    return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n    return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n    if (!obj || typeof obj !== 'object') {\n        return false;\n    }\n\n    return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b, arrayLimit, plainObjects) {\n    // If 'a' is already an overflow object, add to it\n    if (isOverflow(a)) {\n        var newIndex = getMaxIndex(a) + 1;\n        a[newIndex] = b;\n        setMaxIndex(a, newIndex);\n        return a;\n    }\n\n    var result = [].concat(a, b);\n    if (result.length > arrayLimit) {\n        return markOverflow(arrayToObject(result, { plainObjects: plainObjects }), result.length - 1);\n    }\n    return result;\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n    if (isArray(val)) {\n        var mapped = [];\n        for (var i = 0; i < val.length; i += 1) {\n            mapped[mapped.length] = fn(val[i]);\n        }\n        return mapped;\n    }\n    return fn(val);\n};\n\nmodule.exports = {\n    arrayToObject: arrayToObject,\n    assign: assign,\n    combine: combine,\n    compact: compact,\n    decode: decode,\n    encode: encode,\n    isBuffer: isBuffer,\n    isOverflow: isOverflow,\n    isRegExp: isRegExp,\n    markOverflow: markOverflow,\n    maybeMap: maybeMap,\n    merge: merge\n};\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","percentTwenties","Format","default","formatters","RFC1738","RFC3986","parse","formats","utils","has","allowDots","allowEmptyArrays","allowPrototypes","allowSparse","arrayLimit","charset","charsetSentinel","comma","decodeDotInKeys","decoder","decode","delimiter","duplicates","ignoreQueryPrefix","interpretNumericEntities","parameterLimit","parseArrays","plainObjects","strictDepth","strictMerge","strictNullHandling","throwOnLimitExceeded","str","$0","numberStr","fromCharCode","parseInt","parseArrayValue","currentArrayLength","RangeError","parseKeys","givenKey","valuesParsed","originalKey","segments","first","open","collected","close","cu","charCodeAt","seg","splitKeyIntoSegments","chain","parentKey","leaf","isOverflow","combine","__proto__","cleanRoot","charAt","decodedRoot","isValidArrayIndex","markOverflow","parseObject","isRegExp","normalizeParseOptions","tempObj","cleanStr","limit","Infinity","skipIndex","bracketEqualsPos","maybeMap","encodedVal","existing","parseValues","newObj","getSideChannel","arrayPrefixGenerators","brackets","prefix","repeat","pushToArray","valueOrArray","toISO","Date","toISOString","defaultFormat","addQueryPrefix","arrayFormat","commaRoundTrip","encode","encodeDotInKeys","encoder","encodeValuesOnly","formatter","serializeDate","date","skipNulls","sentinel","generateArrayPrefix","sideChannel","tmpSc","step","findFlag","get","isBuffer","objKeys","encodedPrefix","adjustedPrefix","j","encodedKey","keyPrefix","set","valueSideChannel","normalizeStringifyOptions","joined","overflowChannel","maxIndex","getMaxIndex","setMaxIndex","hexTable","toUpperCase","arrayToObject","newIndex","queue","o","prop","refs","pop","compacted","compactQueue","defaultDecoder","strWithoutPlus","unescape","decodeURIComponent","defaultEncoder","kind","string","Symbol","escape","c","mapped","nextIndex","combined","mergeTarget","targetItem","keyNum","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","setPrototypeOf","getPrototypeOf","_set_prototype_of","subClass","superClass","left","right","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","getItem","setNamespace","namespace","setItem","defaultValue","events","miss","timeToLive","filteredNamespaceWithoutOldFormattedCacheItems","fromEntries","entries","cacheItem","timestamp","currentTimestamp","getTime","removeOutdatedCacheItems","all","exists","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","Math","floor","random","serializeUrl","queryParametersAsString","encodeURIComponent","url","protocol","port","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","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","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","character","htmlCharacters","regexEscapedHtml","regexHasEscapedHtml","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","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","cookies","getCookie","tokenFromSearchParameters","useCookie","cookieDuration","setTime","MONTH","expires","toUTCString","saveTokenAsCookie","insightsClientWithLocalCredentials","latestAppId","latestApiKey","lastQueryId","viewedObjectIDs","Set","queryID","sendEventToInsights","insightsMethod","difference","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","second","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","return","createRouterMiddleware","_props_router","router","_ref_createURL","hostname","_location_port","pathname","hash","queryString","portWithPrefix","_ref_parseURL","_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","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","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","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":""}