{"version":3,"file":"static/chunks/pages/_app-b877c3bf966cc2da.js","mappings":"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","sources":["webpack://_N_E/./node_modules/@algolia/events/events.js","webpack://_N_E/./node_modules/algoliasearch-helper/index.js","webpack://_N_E/./node_modules/algoliasearch-helper/src/DerivedHelper/index.js","webpack://_N_E/./node_modules/algoliasearch-helper/src/RecommendParameters/index.js","webpack://_N_E/./node_modules/algoliasearch-helper/src/RecommendResults/index.js","webpack://_N_E/./node_modules/algoliasearch-helper/src/SearchParameters/RefinementList.js","webpack://_N_E/./node_modules/algoliasearch-helper/src/SearchParameters/index.js","webpack://_N_E/./node_modules/algoliasearch-helper/src/SearchResults/generate-hierarchical-tree.js","webpack://_N_E/./node_modules/algoliasearch-helper/src/SearchResults/index.js","webpack://_N_E/./node_modules/algoliasearch-helper/src/algoliasearch.helper.js","webpack://_N_E/./node_modules/algoliasearch-helper/src/functions/compact.js","webpack://_N_E/./node_modules/algoliasearch-helper/src/functions/defaultsPure.js","webpack://_N_E/./node_modules/algoliasearch-helper/src/functions/escapeFacetValue.js","webpack://_N_E/./node_modules/algoliasearch-helper/src/functions/find.js","webpack://_N_E/./node_modules/algoliasearch-helper/src/functions/findIndex.js","webpack://_N_E/./node_modules/algoliasearch-helper/src/functions/flat.js","webpack://_N_E/./node_modules/algoliasearch-helper/src/functions/formatSort.js","webpack://_N_E/./node_modules/algoliasearch-helper/src/functions/inherits.js","webpack://_N_E/./node_modules/algoliasearch-helper/src/functions/intersection.js","webpack://_N_E/./node_modules/algoliasearch-helper/src/functions/merge.js","webpack://_N_E/./node_modules/algoliasearch-helper/src/functions/mergeNumericMax.js","webpack://_N_E/./node_modules/algoliasearch-helper/src/functions/objectHasKeys.js","webpack://_N_E/./node_modules/algoliasearch-helper/src/functions/omit.js","webpack://_N_E/./node_modules/algoliasearch-helper/src/functions/orderBy.js","webpack://_N_E/./node_modules/algoliasearch-helper/src/functions/valToNumber.js","webpack://_N_E/./node_modules/algoliasearch-helper/src/requestBuilder.js","webpack://_N_E/./node_modules/algoliasearch-helper/src/utils/isValidUserToken.js","webpack://_N_E/./node_modules/algoliasearch-helper/src/utils/sortAndMergeRecommendations.js","webpack://_N_E/./node_modules/algoliasearch-helper/src/version.js","webpack://_N_E/./node_modules/algoliasearch/dist/algoliasearch.umd.js","webpack://_N_E/./node_modules/next/app.js","webpack://_N_E/./adapters/algolia/client.js","webpack://_N_E/./adapters/helpers/Constants.js","webpack://_N_E/./node_modules/next/dist/pages/_app.js","webpack://_N_E/./pages/_app.js","webpack://_N_E/?ed95","webpack://_N_E/./styles/index.scss","webpack://_N_E/./node_modules/prop-types/factoryWithThrowingShims.js","webpack://_N_E/./node_modules/prop-types/index.js","webpack://_N_E/./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://_N_E/./node_modules/react-fast-compare/index.js","webpack://_N_E/./node_modules/react-instantsearch-core/dist/es/core/context.js","webpack://_N_E/./node_modules/react-instantsearch-core/dist/es/core/indexUtils.js","webpack://_N_E/./node_modules/react-instantsearch-core/dist/es/core/utils.js","webpack://_N_E/./node_modules/react-instantsearch-core/dist/es/core/createWidgetsManager.js","webpack://_N_E/./node_modules/react-instantsearch-core/dist/es/core/createStore.js","webpack://_N_E/./node_modules/react-instantsearch-core/dist/es/core/highlight.js","webpack://_N_E/./node_modules/react-instantsearch-core/dist/es/core/version.js","webpack://_N_E/./node_modules/react-instantsearch-core/dist/es/core/createInstantSearchManager.js","webpack://_N_E/./node_modules/react-instantsearch-core/dist/es/core/metadata.js","webpack://_N_E/./node_modules/react-instantsearch-core/dist/es/widgets/InstantSearch.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} 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.} 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.>} 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 SearchParameters of the first query in\n * the instant search demo\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.}\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.}\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.}\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.}\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.}\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.} 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.} 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.} 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.} results the results from algolia client\n * @param {object} options options to control results content\n * @example SearchResults of the first query in\n * the instant search demo\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. | 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 if (options.facetOrdering) {\n var facetOrdering = getFacetOrdering(results, facetName);\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 return orderBy(data, order[0], order[1]);\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.} 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.} 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 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.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 * 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.} 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.} 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.} 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.} 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 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.} 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} collection object with keys in attributes\n * @param {Array} iteratees attributes\n * @param {Array} orders asc | desc\n * @return {Array} 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.} 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.} The search parameters for hits\n */\n _getCompositionHitsSearchParams: function (state) {\n var facets = state.facets\n .concat(\n state.disjunctiveFacets.map(function (value) {\n return 'disjunctive(' + 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.} 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(results) {\n var indexTracker = {};\n\n results.forEach(function (hits) {\n hits.forEach(function (hit, index) {\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.24.2';\n","/*! algoliasearch.umd.js | 4.24.0 | © Algolia, inc. | https://github.com/algolia/algoliasearch-client-javascript */\n!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=t||self).algoliasearch=e()}(this,(function(){\"use strict\";function t(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function e(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function r(r){for(var n=1;n=0||(a[r]=t[r]);return a}(t,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(a[r]=t[r])}return a}function a(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){if(!(Symbol.iterator in Object(t)||\"[object Arguments]\"===Object.prototype.toString.call(t)))return;var r=[],n=!0,a=!1,o=void 0;try{for(var i,u=t[Symbol.iterator]();!(n=(i=u.next()).done)&&(r.push(i.value),!e||r.length!==e);n=!0);}catch(t){a=!0,o=t}finally{try{n||null==u.return||u.return()}finally{if(a)throw o}}return r}(t,e)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}()}function o(t){return function(t){if(Array.isArray(t)){for(var e=0,r=new Array(t.length);e2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return Promise.resolve().then((function(){u();var e=JSON.stringify(t);return o()[e]})).then((function(t){return Promise.all([t?t.value:e(),void 0!==t])})).then((function(t){var e=a(t,2),n=e[0],o=e[1];return Promise.all([n,o||r.miss(n)])})).then((function(t){return a(t,1)[0]}))},set:function(t,e){return Promise.resolve().then((function(){var a=o();return a[JSON.stringify(t)]={timestamp:(new Date).getTime(),value:e},n().setItem(r,JSON.stringify(a)),e}))},delete:function(t){return Promise.resolve().then((function(){var e=o();delete e[JSON.stringify(t)],n().setItem(r,JSON.stringify(e))}))},clear:function(){return Promise.resolve().then((function(){n().removeItem(r)}))}}}function u(t){var e=o(t.caches),r=e.shift();return void 0===r?{get:function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}},n=e();return n.then((function(t){return Promise.all([t,r.miss(t)])})).then((function(t){return a(t,1)[0]}))},set:function(t,e){return Promise.resolve(e)},delete:function(t){return Promise.resolve()},clear:function(){return Promise.resolve()}}:{get:function(t,n){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return r.get(t,n,a).catch((function(){return u({caches:e}).get(t,n,a)}))},set:function(t,n){return r.set(t,n).catch((function(){return u({caches:e}).set(t,n)}))},delete:function(t){return r.delete(t).catch((function(){return u({caches:e}).delete(t)}))},clear:function(){return r.clear().catch((function(){return u({caches:e}).clear()}))}}}function s(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{serializable:!0},e={};return{get:function(r,n){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}},o=JSON.stringify(r);if(o in e)return Promise.resolve(t.serializable?JSON.parse(e[o]):e[o]);var i=n(),u=a&&a.miss||function(){return Promise.resolve()};return i.then((function(t){return u(t)})).then((function(){return i}))},set:function(r,n){return e[JSON.stringify(r)]=t.serializable?JSON.stringify(n):n,Promise.resolve(n)},delete:function(t){return delete e[JSON.stringify(t)],Promise.resolve()},clear:function(){return e={},Promise.resolve()}}}function c(t,e,r){var n={\"x-algolia-api-key\":r,\"x-algolia-application-id\":e};return{headers:function(){return t===m.WithinHeaders?n:{}},queryParameters:function(){return t===m.WithinQueryParameters?n:{}}}}function f(t){var e=0;return t((function r(){return e++,new Promise((function(n){setTimeout((function(){n(t(r))}),Math.min(100*e,1e3))}))}))}function d(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(t,e){return Promise.resolve()};return Object.assign(t,{wait:function(r){return d(t.then((function(t){return Promise.all([e(t,r),t])})).then((function(t){return t[1]})))}})}function l(t){for(var e=t.length-1;e>0;e--){var r=Math.floor(Math.random()*(e+1)),n=t[e];t[e]=t[r],t[r]=n}return t}function h(t,e){return e?(Object.keys(e).forEach((function(r){t[r]=e[r](t)})),t):t}function p(t){for(var e=arguments.length,r=new Array(e>1?e-1:0),n=1;n0?n:void 0,timeout:r.timeout||e,headers:r.headers||{},queryParameters:r.queryParameters||{},cacheable:r.cacheable}}var g={Read:1,Write:2,Any:3},v=1,b=2,P=3;function O(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:v;return r(r({},t),{},{status:e,lastUpdate:Date.now()})}function w(t){return\"string\"==typeof t?{protocol:\"https\",url:t,accept:g.Any}:{protocol:t.protocol||\"https\",url:t.url,accept:t.accept||g.Any}}var I=\"DELETE\",x=\"GET\",j=\"POST\",D=\"PUT\";function q(t,e){return Promise.all(e.map((function(e){return t.get(e,(function(){return Promise.resolve(O(e))}))}))).then((function(t){var r=t.filter((function(t){return function(t){return t.status===v||Date.now()-t.lastUpdate>12e4}(t)})),n=t.filter((function(t){return function(t){return t.status===P&&Date.now()-t.lastUpdate<=12e4}(t)})),a=[].concat(o(r),o(n));return{getTimeout:function(t,e){return(0===n.length&&0===t?1:n.length+3+t)*e},statelessHosts:a.length>0?a.map((function(t){return w(t)})):e}}))}function S(t,e,n,a){var i=[],u=function(t,e){if(t.method===x||void 0===t.data&&void 0===e.data)return;var n=Array.isArray(t.data)?t.data:r(r({},t.data),e.data);return JSON.stringify(n)}(n,a),s=function(t,e){var n=r(r({},t.headers),e.headers),a={};return Object.keys(n).forEach((function(t){var e=n[t];a[t.toLowerCase()]=e})),a}(t,a),c=n.method,f=n.method!==x?{}:r(r({},n.data),a.data),d=r(r(r({\"x-algolia-agent\":t.userAgent.value},t.queryParameters),f),a.queryParameters),l=0,h=function e(r,o){var f=r.pop();if(void 0===f)throw{name:\"RetryError\",message:\"Unreachable hosts - your application id may be incorrect. If the error persists, please reach out to the Algolia Support team: https://alg.li/support .\",transporterStackTrace:E(i)};var h={data:u,headers:s,method:c,url:N(f,n.path,d),connectTimeout:o(l,t.timeouts.connect),responseTimeout:o(l,a.timeout)},p=function(t){var e={request:h,response:t,host:f,triesLeft:r.length};return i.push(e),e},m={onSuccess:function(t){return function(t){try{return JSON.parse(t.content)}catch(e){throw function(t,e){return{name:\"DeserializationError\",message:t,response:e}}(e.message,t)}}(t)},onRetry:function(n){var a=p(n);return n.isTimedOut&&l++,Promise.all([t.logger.info(\"Retryable failure\",A(a)),t.hostsCache.set(f,O(f,n.isTimedOut?P:b))]).then((function(){return e(r,o)}))},onFail:function(t){throw p(t),function(t,e){var r=t.content,n=t.status,a=r;try{a=JSON.parse(r).message}catch(t){}return function(t,e,r){return{name:\"ApiError\",message:t,status:e,transporterStackTrace:r}}(a,n,e)}(t,E(i))}};return t.requester.send(h).then((function(t){return function(t,e){return function(t){var e=t.status;return t.isTimedOut||function(t){var e=t.isTimedOut,r=t.status;return!e&&0==~~r}(t)||2!=~~(e/100)&&4!=~~(e/100)}(t)?e.onRetry(t):2==~~(t.status/100)?e.onSuccess(t):e.onFail(t)}(t,m)}))};return q(t.hostsCache,e).then((function(t){return h(o(t.statelessHosts).reverse(),t.getTimeout)}))}function k(t){var e=t.hostsCache,r=t.logger,n=t.requester,o=t.requestsCache,i=t.responsesCache,u=t.timeouts,s=t.userAgent,c=t.hosts,f=t.queryParameters,d={hostsCache:e,logger:r,requester:n,requestsCache:o,responsesCache:i,timeouts:u,userAgent:s,headers:t.headers,queryParameters:f,hosts:c.map((function(t){return w(t)})),read:function(t,e){var r=y(e,d.timeouts.read),n=function(){return S(d,d.hosts.filter((function(t){return 0!=(t.accept&g.Read)})),t,r)};if(!0!==(void 0!==r.cacheable?r.cacheable:t.cacheable))return n();var o={request:t,mappedRequestOptions:r,transporter:{queryParameters:d.queryParameters,headers:d.headers}};return d.responsesCache.get(o,(function(){return d.requestsCache.get(o,(function(){return d.requestsCache.set(o,n()).then((function(t){return Promise.all([d.requestsCache.delete(o),t])}),(function(t){return Promise.all([d.requestsCache.delete(o),Promise.reject(t)])})).then((function(t){var e=a(t,2);e[0];return e[1]}))}))}),{miss:function(t){return d.responsesCache.set(o,t)}})},write:function(t,e){return S(d,d.hosts.filter((function(t){return 0!=(t.accept&g.Write)})),t,y(e,d.timeouts.write))}};return d}function T(t){var e={value:\"Algolia for JavaScript (\".concat(t,\")\"),add:function(t){var r=\"; \".concat(t.segment).concat(void 0!==t.version?\" (\".concat(t.version,\")\"):\"\");return-1===e.value.indexOf(r)&&(e.value=\"\".concat(e.value).concat(r)),e}};return e}function N(t,e,r){var n=R(r),a=\"\".concat(t.protocol,\"://\").concat(t.url,\"/\").concat(\"/\"===e.charAt(0)?e.substr(1):e);return n.length&&(a+=\"?\".concat(n)),a}function R(t){return Object.keys(t).map((function(e){return p(\"%s=%s\",e,(r=t[e],\"[object Object]\"===Object.prototype.toString.call(r)||\"[object Array]\"===Object.prototype.toString.call(r)?JSON.stringify(t[e]):t[e]));var r})).join(\"&\")}function E(t){return t.map((function(t){return A(t)}))}function A(t){var e=t.request.headers[\"x-algolia-api-key\"]?{\"x-algolia-api-key\":\"*****\"}:{};return r(r({},t),{},{request:r(r({},t.request),{},{headers:r(r({},t.request.headers),e)})})}var C=function(t){return function(e,r){return t.transporter.write({method:j,path:\"2/abtests\",data:e},r)}},U=function(t){return function(e,r){return t.transporter.write({method:I,path:p(\"2/abtests/%s\",e)},r)}},z=function(t){return function(e,r){return t.transporter.read({method:x,path:p(\"2/abtests/%s\",e)},r)}},J=function(t){return function(e){return t.transporter.read({method:x,path:\"2/abtests\"},e)}},F=function(t){return function(e,r){return t.transporter.write({method:j,path:p(\"2/abtests/%s/stop\",e)},r)}},H=function(t){return function(e){return t.transporter.read({method:x,path:\"1/strategies/personalization\"},e)}},M=function(t){return function(e,r){return t.transporter.write({method:j,path:\"1/strategies/personalization\",data:e},r)}};function B(t){return function e(r){return t.request(r).then((function(n){if(void 0!==t.batch&&t.batch(n.hits),!t.shouldStop(n))return n.cursor?e({cursor:n.cursor}):e({page:(r.page||0)+1})}))}({})}var K=function(t){return function(e,a){var o=a||{},i=o.queryParameters,u=n(o,[\"queryParameters\"]),s=r({acl:e},void 0!==i?{queryParameters:i}:{});return d(t.transporter.write({method:j,path:\"1/keys\",data:s},u),(function(e,r){return f((function(n){return tt(t)(e.key,r).catch((function(t){if(404!==t.status)throw t;return n()}))}))}))}},W=function(t){return function(e,r,n){var a=y(n);return a.queryParameters[\"X-Algolia-User-ID\"]=e,t.transporter.write({method:j,path:\"1/clusters/mapping\",data:{cluster:r}},a)}},L=function(t){return function(e,r,n){return t.transporter.write({method:j,path:\"1/clusters/mapping/batch\",data:{users:e,cluster:r}},n)}},Q=function(t){return function(e,r){return d(t.transporter.write({method:j,path:p(\"/1/dictionaries/%s/batch\",e),data:{clearExistingDictionaryEntries:!0,requests:{action:\"addEntry\",body:[]}}},r),(function(e,r){return jt(t)(e.taskID,r)}))}},G=function(t){return function(e,r,n){return d(t.transporter.write({method:j,path:p(\"1/indexes/%s/operation\",e),data:{operation:\"copy\",destination:r}},n),(function(r,n){return ut(t)(e,{methods:{waitTask:de}}).waitTask(r.taskID,n)}))}},V=function(t){return function(e,n,a){return G(t)(e,n,r(r({},a),{},{scope:[he.Rules]}))}},_=function(t){return function(e,n,a){return G(t)(e,n,r(r({},a),{},{scope:[he.Settings]}))}},X=function(t){return function(e,n,a){return G(t)(e,n,r(r({},a),{},{scope:[he.Synonyms]}))}},Y=function(t){return function(e,r){return e.method===x?t.transporter.read(e,r):t.transporter.write(e,r)}},Z=function(t){return function(e,r){return d(t.transporter.write({method:I,path:p(\"1/keys/%s\",e)},r),(function(r,n){return f((function(r){return tt(t)(e,n).then(r).catch((function(t){if(404!==t.status)throw t}))}))}))}},$=function(t){return function(e,r,n){var a=r.map((function(t){return{action:\"deleteEntry\",body:{objectID:t}}}));return d(t.transporter.write({method:j,path:p(\"/1/dictionaries/%s/batch\",e),data:{clearExistingDictionaryEntries:!1,requests:a}},n),(function(e,r){return jt(t)(e.taskID,r)}))}},tt=function(t){return function(e,r){return t.transporter.read({method:x,path:p(\"1/keys/%s\",e)},r)}},et=function(t){return function(e,r){return t.transporter.read({method:x,path:p(\"1/task/%s\",e.toString())},r)}},rt=function(t){return function(e){return t.transporter.read({method:x,path:\"/1/dictionaries/*/settings\"},e)}},nt=function(t){return function(e){return t.transporter.read({method:x,path:\"1/logs\"},e)}},at=function(t){return function(e){return t.transporter.read({method:x,path:\"1/clusters/mapping/top\"},e)}},ot=function(t){return function(e,r){return t.transporter.read({method:x,path:p(\"1/clusters/mapping/%s\",e)},r)}},it=function(t){return function(e){var r=e||{},a=r.retrieveMappings,o=n(r,[\"retrieveMappings\"]);return!0===a&&(o.getClusters=!0),t.transporter.read({method:x,path:\"1/clusters/mapping/pending\"},o)}},ut=function(t){return function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n={transporter:t.transporter,appId:t.appId,indexName:e};return h(n,r.methods)}},st=function(t){return function(e){return t.transporter.read({method:x,path:\"1/keys\"},e)}},ct=function(t){return function(e){return t.transporter.read({method:x,path:\"1/clusters\"},e)}},ft=function(t){return function(e){return t.transporter.read({method:x,path:\"1/indexes\"},e)}},dt=function(t){return function(e){return t.transporter.read({method:x,path:\"1/clusters/mapping\"},e)}},lt=function(t){return function(e,r,n){return d(t.transporter.write({method:j,path:p(\"1/indexes/%s/operation\",e),data:{operation:\"move\",destination:r}},n),(function(r,n){return ut(t)(e,{methods:{waitTask:de}}).waitTask(r.taskID,n)}))}},ht=function(t){return function(e,r){return d(t.transporter.write({method:j,path:\"1/indexes/*/batch\",data:{requests:e}},r),(function(e,r){return Promise.all(Object.keys(e.taskID).map((function(n){return ut(t)(n,{methods:{waitTask:de}}).waitTask(e.taskID[n],r)})))}))}},pt=function(t){return function(e,r){return t.transporter.read({method:j,path:\"1/indexes/*/objects\",data:{requests:e}},r)}},mt=function(t){return function(e,n){var a=e.map((function(t){return r(r({},t),{},{params:R(t.params||{})})}));return t.transporter.read({method:j,path:\"1/indexes/*/queries\",data:{requests:a},cacheable:!0},n)}},yt=function(t){return function(e,a){return Promise.all(e.map((function(e){var o=e.params,i=o.facetName,u=o.facetQuery,s=n(o,[\"facetName\",\"facetQuery\"]);return ut(t)(e.indexName,{methods:{searchForFacetValues:ue}}).searchForFacetValues(i,u,r(r({},a),s))})))}},gt=function(t){return function(e,r){var n=y(r);return n.queryParameters[\"X-Algolia-User-ID\"]=e,t.transporter.write({method:I,path:\"1/clusters/mapping\"},n)}},vt=function(t){return function(e,r,n){var a=r.map((function(t){return{action:\"addEntry\",body:t}}));return d(t.transporter.write({method:j,path:p(\"/1/dictionaries/%s/batch\",e),data:{clearExistingDictionaryEntries:!0,requests:a}},n),(function(e,r){return jt(t)(e.taskID,r)}))}},bt=function(t){return function(e,r){return d(t.transporter.write({method:j,path:p(\"1/keys/%s/restore\",e)},r),(function(r,n){return f((function(r){return tt(t)(e,n).catch((function(t){if(404!==t.status)throw t;return r()}))}))}))}},Pt=function(t){return function(e,r,n){var a=r.map((function(t){return{action:\"addEntry\",body:t}}));return d(t.transporter.write({method:j,path:p(\"/1/dictionaries/%s/batch\",e),data:{clearExistingDictionaryEntries:!1,requests:a}},n),(function(e,r){return jt(t)(e.taskID,r)}))}},Ot=function(t){return function(e,r,n){return t.transporter.read({method:j,path:p(\"/1/dictionaries/%s/search\",e),data:{query:r},cacheable:!0},n)}},wt=function(t){return function(e,r){return t.transporter.read({method:j,path:\"1/clusters/mapping/search\",data:{query:e}},r)}},It=function(t){return function(e,r){return d(t.transporter.write({method:D,path:\"/1/dictionaries/*/settings\",data:e},r),(function(e,r){return jt(t)(e.taskID,r)}))}},xt=function(t){return function(e,r){var a=Object.assign({},r),o=r||{},i=o.queryParameters,u=n(o,[\"queryParameters\"]),s=i?{queryParameters:i}:{},c=[\"acl\",\"indexes\",\"referers\",\"restrictSources\",\"queryParameters\",\"description\",\"maxQueriesPerIPPerHour\",\"maxHitsPerQuery\"];return d(t.transporter.write({method:D,path:p(\"1/keys/%s\",e),data:s},u),(function(r,n){return f((function(r){return tt(t)(e,n).then((function(t){return function(t){return Object.keys(a).filter((function(t){return-1!==c.indexOf(t)})).every((function(e){if(Array.isArray(t[e])&&Array.isArray(a[e])){var r=t[e];return r.length===a[e].length&&r.every((function(t,r){return t===a[e][r]}))}return t[e]===a[e]}))}(t)?Promise.resolve():r()}))}))}))}},jt=function(t){return function(e,r){return f((function(n){return et(t)(e,r).then((function(t){return\"published\"!==t.status?n():void 0}))}))}},Dt=function(t){return function(e,r){return d(t.transporter.write({method:j,path:p(\"1/indexes/%s/batch\",t.indexName),data:{requests:e}},r),(function(e,r){return de(t)(e.taskID,r)}))}},qt=function(t){return function(e){return B(r(r({shouldStop:function(t){return void 0===t.cursor}},e),{},{request:function(r){return t.transporter.read({method:j,path:p(\"1/indexes/%s/browse\",t.indexName),data:r},e)}}))}},St=function(t){return function(e){var n=r({hitsPerPage:1e3},e);return B(r(r({shouldStop:function(t){return t.hits.length0&&void 0!==arguments[0]?arguments[0]:0,c=[];for(a=o;a=t.nbPages)throw{name:\"ObjectNotFoundError\",message:\"Object not found.\"};return n()}))}()}},Kt=function(t){return function(e,r){return t.transporter.read({method:x,path:p(\"1/indexes/%s/%s\",t.indexName,e)},r)}},Wt=function(){return function(t,e){for(var r=0,n=Object.entries(t.hits);rr.OPENED&&void 0===n&&(clearTimeout(o),n=a(t.responseTimeout,\"Socket timeout\"))},r.onerror=function(){0===r.status&&(clearTimeout(o),clearTimeout(n),e({content:r.responseText||\"Network request failed\",status:r.status,isTimedOut:!1}))},r.onload=function(){clearTimeout(o),clearTimeout(n),e({content:r.responseText,status:r.status,isTimedOut:!1})},r.send(t.data)}))}},logger:(a=ye,{debug:function(t,e){return pe>=a&&console.debug(t,e),Promise.resolve()},info:function(t,e){return me>=a&&console.info(t,e),Promise.resolve()},error:function(t,e){return console.error(t,e),Promise.resolve()}}),responsesCache:s(),requestsCache:s({serializable:!1}),hostsCache:u({caches:[i({key:\"\".concat(\"4.24.0\",\"-\").concat(t)}),s()]}),userAgent:T(\"4.24.0\").add({segment:\"Browser\"})},f=r(r({},o),n),d=function(){return function(t){return function(t){var e=t.region||\"us\",n=c(m.WithinHeaders,t.appId,t.apiKey),a=k(r(r({hosts:[{url:\"personalization.\".concat(e,\".algolia.com\")}]},t),{},{headers:r(r(r({},n.headers()),{\"content-type\":\"application/json\"}),t.headers),queryParameters:r(r({},n.queryParameters()),t.queryParameters)}));return h({appId:t.appId,transporter:a},t.methods)}(r(r(r({},o),t),{},{methods:{getPersonalizationStrategy:H,setPersonalizationStrategy:M}}))}};return function(t){var e=t.appId,n=c(void 0!==t.authMode?t.authMode:m.WithinHeaders,e,t.apiKey),a=k(r(r({hosts:[{url:\"\".concat(e,\"-dsn.algolia.net\"),accept:g.Read},{url:\"\".concat(e,\".algolia.net\"),accept:g.Write}].concat(l([{url:\"\".concat(e,\"-1.algolianet.com\")},{url:\"\".concat(e,\"-2.algolianet.com\")},{url:\"\".concat(e,\"-3.algolianet.com\")}]))},t),{},{headers:r(r(r({},n.headers()),{\"content-type\":\"application/x-www-form-urlencoded\"}),t.headers),queryParameters:r(r({},n.queryParameters()),t.queryParameters)}));return h({transporter:a,appId:e,addAlgoliaAgent:function(t,e){a.userAgent.add({segment:t,version:e})},clearCache:function(){return Promise.all([a.requestsCache.clear(),a.responsesCache.clear()]).then((function(){}))}},t.methods)}(r(r({},f),{},{methods:{search:mt,searchForFacetValues:yt,multipleBatch:ht,multipleGetObjects:pt,multipleQueries:mt,copyIndex:G,copySettings:_,copySynonyms:X,copyRules:V,moveIndex:lt,listIndices:ft,getLogs:nt,listClusters:ct,multipleSearchForFacetValues:yt,getApiKey:tt,addApiKey:K,listApiKeys:st,updateApiKey:xt,deleteApiKey:Z,restoreApiKey:bt,assignUserID:W,assignUserIDs:L,getUserID:ot,searchUserIDs:wt,listUserIDs:dt,getTopUserIDs:at,removeUserID:gt,hasPendingMappings:it,clearDictionaryEntries:Q,deleteDictionaryEntries:$,getDictionarySettings:rt,getAppTask:et,replaceDictionaryEntries:vt,saveDictionaryEntries:Pt,searchDictionaryEntries:Ot,setDictionarySettings:It,waitAppTask:jt,customRequest:Y,initIndex:function(t){return function(e){return ut(t)(e,{methods:{batch:Dt,delete:Ct,findAnswers:Mt,getObject:Kt,getObjects:Lt,saveObject:te,saveObjects:ee,search:ie,searchForFacetValues:ue,waitTask:de,setSettings:fe,getSettings:Gt,partialUpdateObject:_t,partialUpdateObjects:Xt,deleteObject:Ut,deleteObjects:zt,deleteBy:At,clearObjects:Nt,browseObjects:qt,getObjectPosition:Wt,findObject:Bt,exists:Ht,saveSynonym:ae,saveSynonyms:oe,getSynonym:Vt,searchSynonyms:ce,browseSynonyms:kt,deleteSynonym:Ft,clearSynonyms:Et,replaceAllObjects:Yt,replaceAllSynonyms:$t,searchRules:se,getRule:Qt,deleteRule:Jt,saveRule:re,saveRules:ne,replaceAllRules:Zt,browseRules:St,clearRules:Rt}})}},initAnalytics:function(){return function(t){return function(t){var e=t.region||\"us\",n=c(m.WithinHeaders,t.appId,t.apiKey),a=k(r(r({hosts:[{url:\"analytics.\".concat(e,\".algolia.com\")}]},t),{},{headers:r(r(r({},n.headers()),{\"content-type\":\"application/json\"}),t.headers),queryParameters:r(r({},n.queryParameters()),t.queryParameters)}));return h({appId:t.appId,transporter:a},t.methods)}(r(r(r({},o),t),{},{methods:{addABTest:C,getABTest:z,getABTests:J,stopABTest:F,deleteABTest:U}}))}},initPersonalization:d,initRecommendation:function(){return function(t){return f.logger.info(\"The `initRecommendation` method is deprecated. Use `initPersonalization` instead.\"),d()(t)}},getRecommendations:ge,getFrequentlyBoughtTogether:ve,getLookingSimilar:we,getRecommendedForYou:Ie,getRelatedProducts:be,getTrendingFacets:Pe,getTrendingItems:Oe}}))}return xe.version=\"4.24.0\",xe}));\n","module.exports = require('./dist/pages/_app')\n","import algoliasearch from 'algoliasearch'\nimport { AlgoliaConstants } from '../helpers/Constants'\n\nconst clients = {\n search: null,\n write: null\n}\n\nexport const getSearchClient = () => {\n if (!process.env.ALGOLIA_APP_ID || !process.env.ALGOLIA_APP_SEARCH_KEY) {\n throw new Error(AlgoliaConstants.errorMsg)\n }\n\n if (!clients.search) {\n clients.search = algoliasearch(process.env.ALGOLIA_APP_ID, process.env.ALGOLIA_APP_SEARCH_KEY)\n }\n\n return clients.search\n}\n\n","export const Constants = Object.freeze({\n title: 'title',\n titleLevel: 'titleLevel',\n classNames: 'classNames',\n callToActionLink: 'callToActionLink',\n callToActionLabel: 'callToActionLabel',\n description: 'description',\n disclaimer: 'disclaimer',\n disclaimerReference: 'disclaimerReference',\n eyebrow: 'eyebrow',\n backgroundAsset: 'backgroundAsset',\n mobileBackgroundAsset: 'mobileBackgroundAsset',\n anchorId: 'anchorId',\n hashChange: 'hashchange',\n resize: 'resize',\n close: 'close',\n play: 'play',\n mobile: 'mobile',\n desktop: 'desktop',\n chevronRight: 'chevronRight',\n blue: 'blue',\n smooth: 'smooth',\n backgroundImage: 'backgroundImage',\n mainAsset: 'mainAsset',\n name: 'name',\n empty: '',\n blocks: 'blocks',\n body: 'body',\n submit: 'submit',\n json: 'application/json',\n context: 'http://schema.org',\n typeLD: 'application/ld+json',\n product: 'Product',\n whiteText: 'white-text',\n white: 'white',\n content: 'content ',\n top: 'top',\n primaryColor: '#0057B8',\n scroll: 'scroll',\n ratingSummary: 'rating_summary',\n button: 'button',\n chevronDown: 'chevronDown',\n chevronTop: 'chevronTop',\n wideChevronDown: 'wideChevronDown',\n thinChevronDown: 'thinChevronDown',\n itemType: 'https://schema.org/Product',\n text: 'text',\n small: 'small',\n medium: 'medium',\n large: 'large',\n h1: 'h1',\n h2: 'h2',\n keydown: 'keydown',\n Tab: 'Tab',\n Escape: 'Escape',\n touchmove: 'touchmove',\n mediumLong: 'medium-long',\n alreadyInUse: 'already in use',\n brand: 'OralB',\n pathDelimiter: '/',\n blank: '_blank',\n oralCareTopicQuestion: 'oral care goals',\n collectionHeroSection: 'collection-hero-section',\n collectionHeroSectionCta: 'collection-hero-section-cta',\n titleLinkName: 'title-link',\n kidsProductCategory: 'Kids Product Category',\n optinIdx: 0,\n tabWidthStart: 768,\n desktopViewStart: 1022,\n ESCAPE_KEY_CODE: 27,\n optins: 'optIns',\n autoComplete: 'on',\n aboutReviews: 'about reviews',\n Loading: 'Loading',\n breadcrumb: 'BreadcrumbList',\n rolePresentation: 'presentation',\n PrivacyLinkPlaceholder: '{{privacyLink}}',\n AdChoicesLinkPlaceholder: '{{adChoicesPlaceHolder}}',\n breadCrumpLabel: 'Breadcrumb',\n SocialMediaIcons: \"Social Media Icons\"\n});\n\nexport const PrePurchaseConstants = Object.freeze({\n jebbitData: 'jebbitData',\n infoIcon: 'info icon',\n minus6: 'minus6',\n plus: 'plus',\n blue: Constants.blue,\n modes: ' modes',\n accessories: ' accessories',\n button: Constants.button,\n MAX_COL_DESKTOP: 3,\n MAX_COL_MOBILE: 2,\n customerReviwew: 'customer-review',\n buyNowCta: 'buyNowCta',\n master: 'master_',\n ratingSummary: Constants.ratingSummary,\n inlineRating: 'inline_rating',\n row: 'row',\n table: 'table',\n rowheader: 'rowheader',\n columnheader: 'columnheader',\n cell: 'cell',\n itemType: Constants.itemType,\n ProductName: 'ProductName',\n altTextPrefixFeatureImage: 'compare-chart-feature',\n noSlug: '#',\n QUERY_PARAM_PRODUCT1: 'product1',\n QUERY_PARAM_PRODUCT2: 'product2',\n QUERY_PARAM_PRODUCT3: 'product3',\n writeAReviewQueryParam: 'writeReview',\n writeAReviewQueryParamValue: 'true',\n WAR_CTA_ID: 'WAR',\n WAR_CTA_CLICK_TIMEOUT: 1000,\n sectionId: 'pre-purchase-result',\n CENTER_ALGN_TIMEOUT: 800,\n WAR_REVIEW_LALBEL_UPDATE_TIMEOUT: 10000,\n compareResultSectionMobileViewClass: 'pre-purchase-comparison-mobile-view',\n scrollYOffset: 120,\n reviewDetailContainerClass: 'pre-purchase-review-detail',\n dataActionDetail: 'MeetYourBrush_LearnMore_BestMatch',\n typeOnchange: 'typeOnChange',\n typeOnBlur: 'typeOnBlur',\n ariaLabel: 'select your brush to compare'\n});\n\nexport const PostPurchaseConstants = Object.freeze({\n promoCode: '',\n campaignPath: '/campaign',\n registerPath: '/registration',\n voucherCountPath: '/voucherCount',\n voucherIdKey: 'voucherIdKey',\n noSlug: '#',\n dropBtnClass: '.post-purchase-bv-widget__dropbtn',\n dropdownContant: 'post-purchase-bv-widget__dropdown-content',\n dropdownClass: 'post-purchase-bv-widget__display-dropdown',\n close: Constants.close,\n WAR_CTA_ID: PrePurchaseConstants.WAR_CTA_ID,\n WAR_POP_ID: 'bv_war_button',\n});\n\nexport const OrganizationConstants = Object.freeze({\n brand: 'OralB',\n parentOrganization: 'Procter & Gamble'\n});\n\nexport const CampaignIframeOverlayConstants = Object.freeze({\n localStorageIntersistialPopUp: 'localStorageIntersistialPopUp',\n disableIntersistialPopUpCookie: 'disableIntersistialPopUp',\n isEnableCampaignOverlay: 'isEnableCampaignOverlay',\n email: 'Email',\n expiryHours: 'expiryHours',\n TermConditions: 'Term&Conditions',\n startSurveyEvent: 'event_survey_start',\n closeSurveyEvent: 'event_survey_close',\n completeSurveyEvent: 'event_survey_complete',\n customEvent: 'customEvent',\n eventCategory: 'event_survey_action',\n eventLabel: 'interstitial_view',\n eventCloseCategory: 'event_informational_action',\n eventCloseAction: 'event_close_window',\n eventCloseLabelWithoutNoResponse: 'interstitial_close_no_response',\n eventCloseLabelWithSurveyResponse: 'interstitial_close_with_survey_response',\n eventRegisterLabel: 'interstitial_email_response',\n questionSurveyLabel: 'interstitial_question_view',\n questionSurveyAction: 'event_survey_question',\n eventCloseLabelWithEmailResponse: 'interstitial_close_with_email_response'\n});\n\nexport const AdditionalReadingBlockConstants = Object.freeze({\n additionalReadingBlock: 'additionalReadingBlock',\n articleLink: 'article link'\n});\n\nexport const AnnouncementBarConstants = Object.freeze({\n disableDays: 'disableDays',\n AnnouncementBarDisableDate: 'AnnouncementBarDisableDate',\n closeAriaLabel: 'closeAriaLabel',\n close: Constants.close,\n classNames: Constants.classNames,\n callToActionLink: Constants.callToActionLink,\n callToActionLabel: Constants.callToActionLabel,\n description: Constants.description,\n ctaName: 'announcement-bar-cta',\n});\n\nexport const AppDownloadBlockConstants = Object.freeze({\n title: Constants.title,\n classNames: Constants.classNames,\n eyebrow: Constants.eyebrow,\n backgroundAsset: Constants.backgroundAsset,\n mobileBackgroundAsset: Constants.mobileBackgroundAsset,\n downloadLinks: 'downloadLinks',\n mobile: Constants.mobile,\n desktop: Constants.desktop,\n body: Constants.body,\n});\n\nexport const ArticleCategoryHeroBlockConstants = Object.freeze({\n title: Constants.title,\n titleLevel: Constants.titleLevel,\n classNames: Constants.classNames,\n eyebrow: Constants.eyebrow,\n body: Constants.body,\n backgroundAsset: Constants.backgroundAsset,\n mobileBackgroundAsset: Constants.mobileBackgroundAsset,\n ctas: 'ctas',\n chevronRight: Constants.chevronRight,\n disclaimer: Constants.disclaimer,\n blue: Constants.blue,\n mainAsset: 'mainAsset',\n mobileAsset: 'mobileAsset',\n textToTheRight: 'textToTheRight',\n backgroundColor: 'backgroundColor',\n callToActionAriaLabel: 'callToActionAriaLabel'\n});\n\nexport const ArticleHeroBlockConstants = Object.freeze({\n classNames: Constants.classNames,\n readTimeLabel: 'readTimeLabel',\n articleBanner: 'article banner',\n lazyIndexArticle: 4\n});\n\n\nexport const ImageConstants = Object.freeze({\n defaultImageWindWidth: 450,\n defaultWidth: 400,\n defaultDesktopWidth: 768,\n dpr_1440: 'f_auto,q_auto,w_1440',\n product: 'product',\n mobile_max_width: '767px',\n desktop_min_width: '768px'\n});\n\nexport const ArticlePopUpConstants = Object.freeze({\n title: Constants.title,\n body: 'body',\n facebookLabel: 'facebookLabel',\n twitterLabel: 'twitterLabel',\n closeOverlayLabel: 'closeOverlayLabel'\n});\n\nexport const BrushConfiguratorConstants = Object.freeze({\n dataName: 'data-name',\n smooth: Constants.smooth,\n center: 'center',\n switch: 'switch',\n status: 'status',\n features: 'features',\n live: 'live',\n off: 'off'\n});\n\nexport const ButtonTabsNavigationConstant = Object.freeze({\n replacementBrushHead: 'Replacement Brush Head',\n chevronDown: 'chevronDown',\n panel: 'panel',\n tab: 'tab',\n tablist: 'tablist'\n});\n\nexport const FAQConstants = Object.freeze({\n link: 'link'\n});\n\nexport const IconsConstant = Object.freeze({\n role: 'img',\n iconOne: 'icon-1',\n iconTwo: 'icon-2',\n obIconRoundedContainer: 'ob-icon-rounded-container'\n});\n\nexport const labelConstant = Object.freeze({\n reviewLabel: 'Search topics and reviews'\n});\n\nexport const CharacterBlockConstants = Object.freeze({\n title: Constants.title,\n titleLevel: Constants.titleLevel,\n classNames: Constants.classNames,\n eyebrow: Constants.eyebrow,\n description: Constants.description,\n backgroundImage: Constants.backgroundImage,\n mobileBackgroundImage: 'mobileBackgroundImage',\n characterLogo: 'characterLogo',\n mobileCharacterLogo: 'mobileCharacterLogo',\n maxWidth: '(max-width: 667px)',\n anchorId: Constants.anchorId,\n});\n\nexport const CollectionTabsBlockConstants = Object.freeze({\n smooth: Constants.smooth,\n hash: '#',\n});\n\nexport const ComparisonChartBlockConstants = Object.freeze({\n row: 'row',\n table: 'table',\n rowheader: 'rowheader',\n columnheader: 'columnheader',\n cell: 'cell',\n noValueLabel: 'noValueLabel',\n top: Constants.top,\n chevronRight: Constants.chevronRight,\n jumpToConfiguratorLink: 'jumpToConfiguratorLink',\n jumpToConfiguratorTitle: 'jumpToConfiguratorTitle',\n altTextPrefixFeatureImage: 'comparison-chart-feature',\n eventData:'eventData'\n});\n\nexport const ContactUsBlockConstants = Object.freeze({\n classNames: Constants.classNames,\n contactUs: 'contact-us'\n});\n\nexport const ContentConstants = Object.freeze({\n playing: 'playing',\n play: 'play',\n pause: 'pause',\n pauseLabel: 'pauseLabel',\n playLabel: 'playLabel',\n resetLabel: 'resetLabel',\n openTranscriptLabel: 'openTranscriptLabel',\n closeTranscriptLabel: 'closeTranscriptLabel',\n ended: 'ended',\n Src: 'Src',\n Dest: 'Dest',\n x: 'x',\n y: 'y',\n White: 'White',\n white: Constants.white,\n blue: Constants.blue,\n transparentWithBorder: 'Transparent With Border',\n blueBorderBtn: 'ob-blue-border-btn',\n chevronRight: Constants.chevronRight,\n primaryGrey: 'primaryGrey',\n callToActionLink: Constants.callToActionLink,\n callToActionLabel: Constants.callToActionLabel,\n callToActionAriaLabel: 'callToActionAriaLabel',\n callToActionTitle: 'callToActionTitle',\n surtitle: 'surtitle',\n description: Constants.description,\n classNames: Constants.classNames,\n callToActionIsALink: 'callToActionIsALink',\n title: Constants.title,\n titleLevel: Constants.titleLevel,\n backgroundColor: 'backgroundColor',\n textContainerBackgroundColor: 'textContainerBackgroundColor',\n textContainerBackgroundOpacity: 'textContainerBackgroundOpacity',\n textContainerHasPadding: 'textContainerHasPadding',\n blueEyebrow: 'blueEyebrow',\n disclaimer: Constants.disclaimer,\n disclaimerReference: Constants.disclaimerReference,\n textsImage: 'textsImage',\n cloudinaryVideo: 'cloudinaryVideo',\n devicesConfigurations: 'devicesConfigurations',\n deviceConfigurations: 'deviceConfigurations',\n isMedium: 'isMedium',\n blockMinHeight: 'blockMinHeight',\n blockMarginTop: 'blockMarginTop',\n blockMarginBottom: 'blockMarginBottom',\n blockMarginRight: 'blockMarginRight',\n blockMarginLeft: 'blockMarginLeft',\n blockPadding: 'blockPadding',\n textAlign: 'textAlign',\n textContainerWidth: 'textContainerWidth',\n titleWidth: 'titleWidth',\n descriptionWidth: 'descriptionWidth',\n textContainerHorizontalAlignment: 'textContainerHorizontalAlignment',\n textContainerVerticalAlignment: 'textContainerVerticalAlignment',\n textContainerOffset: 'textContainerOffset',\n textContainerMarginRight: 'textContainerMarginRight',\n textContainerMarginLeft: 'textContainerMarginLeft',\n textContainerMarginBottom: 'textContainerMarginBottom',\n mainAsset: 'mainAsset',\n mainAssetBelowOrAboveText: 'mainAssetBelowOrAboveText',\n mainAssetMaxWidth: 'mainAssetMaxWidth',\n mainAssetMaxHeight: 'mainAssetMaxHeight',\n mainAssetHeight: 'mainAssetHeight',\n mainAssetMarginTop: 'mainAssetMarginTop',\n mainAssetMarginRight: 'mainAssetMarginRight',\n mainAssetOffsetBottom: 'mainAssetOffsetBottom',\n mainAssetOffsetLeft: 'mainAssetOffsetLeft',\n mainAssetScale: 'mainAssetScale',\n backgroundAsset: 'backgroundAsset',\n mainAssetHorizontalAlignment: 'mainAssetHorizontalAlignment',\n mainAssetVerticalAlignment: 'mainAssetVerticalAlignment',\n backgroundPosition: 'backgroundPosition',\n sectionOffsetTop: 'sectionOffsetTop',\n mainAssetParallax: 'mainAssetParallax',\n mainAssetParallaxSetting: 'mainAssetParallaxSetting',\n textParallax: 'textParallax',\n textParallaxSetting: 'textParallaxSetting',\n textParallaxConfiguration: 'textParallaxConfiguration',\n assetParallaxConfiguration: 'assetParallaxConfiguration',\n textShowAnimation: 'textShowAnimation',\n textFadeIn: 'textFadeIn',\n textColor: 'textColor',\n respectImageAspectRatio: 'respectImageAspectRatio',\n titleFontSize: 'titleFontSize',\n small: Constants.small,\n medium: Constants.medium,\n large: Constants.large,\n ctaBackgroundColor: 'ctaBackgroundColor',\n aboveText: 'above text',\n belowText: 'below text',\n hasDivider: 'hasDivider',\n isRemoveParallax: 'isRemoveParallax',\n defaultWidth: 350,\n defaultWindWidth: 400,\n ctaName: 'collection-cta',\n contentOptions: 'contentOptions',\n contentOptionClassName: 'contentOptionClassName',\n googlePlayIcon: 'googlePlayIcon',\n appStoreIcon: 'appStoreIcon',\n noteText: 'noteText',\n textAlignBottomMobileView: 'text-align-bottom-mobile-view',\n mobileWidth: 767,\n reviewModule: 'reviewModule',\n reset: 'reset',\n gaEventClass: 'gaEventClass'\n});\n\nexport const ContentVideoConstants = Object.freeze({\n Tab: Constants.Tab,\n keydown: Constants.keydown,\n description: Constants.description,\n disclaimer: Constants.disclaimer,\n mobileLayout: 'mobileLayout',\n desktopLayout: 'desktopLayout',\n whiteText: Constants.whiteText,\n backgroundImage: 'background-image',\n title: Constants.title,\n titleLevel: Constants.titleLevel,\n classNames: Constants.classNames,\n textContainerMarginBottom: 'textContainerMarginBottom',\n textContainerMarginTop: 'textContainerMarginTop',\n playIconColor: 'playIconColor',\n backgroundColor: 'backgroundColor',\n playLabel: 'playLabel',\n closeLabel: 'closeLabel',\n close: Constants.close,\n play: Constants.play,\n pauseLabel: 'pauseLabel',\n resetLabel: 'resetLabel',\n openTranscriptLabel: 'openTranscriptLabel',\n closeTranscriptLabel: 'closeTranscriptLabel',\n white: Constants.white,\n whiteHexThreeChars: '#fff',\n whiteHexFull: '#ffffff',\n surtitle: 'surtitle',\n blueEyebrow: 'blueEyebrow',\n contentOptions: 'contentOptions',\n playIcon: 'playIcon',\n textImage: 'textImage',\n youtubeVideoBlock: 'youtubeVideoBlock'\n});\n\nexport const AwardsBlockConstant = Object.freeze({\n awardItemLogo: 'award-item-logo'\n});\n\nexport const FAQBlockConstants = Object.freeze({\n switch: 'switch',\n button: Constants.button,\n minus6: 'minus6',\n plus: 'plus',\n arrowRight: 'ovalArrowRight',\n popularSentence: 'Popular topics others look for',\n searchResultsTitle: 'We found 6 results for Warranty',\n obSupport: 'Oral-B Support',\n Previous: 'Previous',\n Next: 'Next',\n of: 'of'\n});\n\nexport const FooterConstants = Object.freeze({\n resize: Constants.resize,\n copyright: 'copyright',\n copyrightAt: '©',\n countryCode: 'LA',\n lang: 'es',\n privacyLink: 'privacyLink',\n});\n\nexport const GalleryBlockConstants = Object.freeze({\n cloudinaryImage: 'cloudinaryImage',\n classNames: Constants.classNames,\n title: Constants.title,\n whiteText: Constants.whiteText,\n anchorId: Constants.anchorId,\n seeMoreButtonLabel: 'seeMoreButtonLabel',\n seeLessButtonLabel: 'seeLessButtonLabel',\n minus6: 'minus6',\n blue: Constants.blue,\n plus: 'plus',\n full: 'Full',\n large: 'Large',\n small: 'Small'\n});\n\nexport const InTheBoxBlockConstants = Object.freeze({\n whiteText: Constants.whiteText,\n body: 'body',\n classNames: 'classNames',\n items: 'items',\n anchorId: Constants.anchorId,\n inTheBoxImage: 'inTheBoxImage',\n title: Constants.title,\n titleLevel: Constants.titleLevel,\n});\n\nexport const LanguageSelectionConstants = Object.freeze({\n primaryColor: Constants.primaryColor,\n smooth: Constants.smooth,\n title: Constants.title,\n regions: 'regions',\n currentLanguage: 'currentLanguage',\n jumpToLabel: 'jumpToLabel',\n closeLanguageSelectionLabel: 'closeLanguageSelectionLabel',\n wideChevronDown: 'wideChevronDown',\n close: Constants.close,\n countryLanguageSelection: 'Country and Language selection',\n});\n\nexport const LayoutConstants = Object.freeze({\n classNames: Constants.classNames,\n zoneContestCode: 'zone-contest',\n zoneThankYouCode: 'zone-thankyou',\n paddingValue: '112px',\n paddingValueBreadcrumb: '112px'\n});\n\nexport const LegacyProductHighlightsConstants = Object.freeze({\n isActive: 'is-active',\n empty: Constants.empty,\n minus6: 'minus6',\n blue: Constants.blue,\n button: Constants.button,\n plus: 'plus',\n seeLess: 'SEE LESS',\n seeMore: 'SEE MORE',\n highlights: ' highlights',\n plusSymbol: '+',\n minusSymbol: '-',\n arrowUp: 'ArrowUp',\n arrowDown: 'ArrowDown',\n text: Constants.text,\n prev: 'prev',\n next: 'next',\n smooth: 'smooth',\n nearest: 'nearest',\n center: 'center',\n productRating: 'rating'\n});\n\nexport const MainMenuConstants = Object.freeze({\n primaryColor: Constants.primaryColor,\n mousedown: 'mousedown',\n blur: 'blur',\n resize: Constants.resize,\n scroll: Constants.scroll,\n keydown: Constants.keydown,\n close: Constants.close,\n Open: 'Open',\n Close: 'Close',\n child: 'child',\n productByNeed: 'product-by-need',\n productByType: 'product-by-type',\n whyOralB: 'why-oral-b',\n conditions: 'conditions',\n lifeStages: 'life-stages',\n ourAmbition: 'our-ambition',\n wideChevronDown: 'wideChevronDown',\n chevronDown: Constants.chevronDown,\n plus: 'plus',\n minus6: 'minus6',\n mainMenuLabel: 'mainMenuLabel',\n hierarchy: 'hierarchy',\n classNames: Constants.classNames,\n hamburger: 'hamburger',\n closeMenuLabel: 'closeMenuLabel',\n openMenuLabel: 'openMenuLabel',\n searchLabel: 'searchLabel',\n returnToMainMenuLabel: 'returnToMainMenuLabel',\n arrowLeft: 'arrowLeft',\n searchDataActionDetail: 'Open Search Panel',\n panel: 'panel',\n pullDown: 'desplegable',\n collapsed: 'colapsada',\n downArrow: 'down arrow',\n expanded: 'expandida',\n expanding: 'expanding',\n escape: 'Escape',\n menubar: 'menubar',\n menuitem: 'menuitem',\n menulist: 'menu-list',\n menulistDesktop: 'menu-list-desktop',\n languageLink: 'language link',\n languageTabMobile: 'language tab mobile',\n expandingMenu: 'expanding-menu',\n closeButton: 'close button',\n menu: 'menu',\n chevronTop: 'chevronTop',\n white: 'white',\n capExpanded: 'EXPANDED',\n capExpanding: 'EXPANDING',\n capEscape: 'ESCAPE',\n closeMainMenuAriaLabel: 'Close Main Menu'\n});\n\nexport const MarkdownTextConstants = Object.freeze({\n script: 'script',\n text: 'text'\n})\n\nexport const MetaConstants = Object.freeze({\n https: 'https://'\n});\n\nexport const MiniNavigationConstants = Object.freeze({\n hierarchy: 'hierarchy',\n classNames: Constants.classNames,\n backgroundGrey: 'backgroundGrey',\n href: 'href',\n smooth: Constants.smooth,\n chevronDown: Constants.chevronDown,\n resize: Constants.resize,\n target: 'target'\n});\n\nexport const ComponentFactoryConstants = Object.freeze({\n Zone: 'Zone',\n Layout: 'Layout',\n Content: 'ContentBlock',\n ContentVideo: 'contentVideo',\n RichText: 'richTextBlock',\n RichTextLink: 'link',\n MarkdownText: 'markdownTextBlock',\n MainMenu: 'mainMenuBlock',\n Footer: 'footerBlock',\n LanguageSelection: 'languageSelectionBlock',\n PageNavigation: 'pageNavigationBlock',\n TabbedContent: 'tabbedContentBlock',\n AnnouncementBar: 'announcementBarBlock',\n SideBySideContainer: 'sideBySideContainerBlock',\n SeriesSelector: 'seriesSelectorBlock',\n MiniNavigation: 'miniNavigationBlock',\n PromoBlock: 'promoBlock',\n SpotlightSlider: 'spotlightSlider',\n SpotlightContentVideo: 'spotlightContentVideo',\n SpotlightContentBlock: 'spotlightContentBlock',\n SpotlightStickyBar: 'spotlightStickyBarBlock',\n InTheBoxBlock: 'inTheBoxBlock',\n ProductGridBlock: 'productGridBlock',\n CollectionTabsBlock: 'collectionTabsBlock',\n ProductHighlights: 'productHighlightBlock',\n FeaturesTabBlock: 'featuresTabBlock',\n BrandGuaranteeBlock: 'brandGuaranteeBlock',\n GalleryBlock: 'galleryBlock',\n FAQBlock: 'faqBlock',\n BrushConfigurator: 'brushConfiguratorBlock',\n ComparisonChartBlock: 'comparisonChartBlock',\n UserQuoteBlock: 'userQuoteBlock',\n SpotlightWaitlistBlock: 'spotlightWaitlistBlock',\n SpotlightPreorderBlock: 'spotlightPreOrderBlock',\n CollectionTabsDropdown: 'collectionSegmentTabsDropdownBlock',\n ProductSubNav: 'productSubNav',\n CharacterBlock: 'characterBlock',\n ProductRecommenderBlock: 'productRecommenderBlock',\n ShowcaseBlock: 'showcaseBlock',\n ArticleHeroBlock: 'articleHeroBlock',\n SkipNavigationBlock: 'skipNavigationBlock',\n AppDownloadBlock: 'appDownloadBlock',\n ArticleCategoryHeroBlock: 'articleCategoryHeroBlock',\n RecentlyViewedProductsBlock: 'recentlyViewedProductsBlock',\n AdditionalReadingBlock: 'additionalReadingBlock',\n ProductOverlay: 'productOverlay',\n ErrorBlock: 'errorBlock',\n ArticleBody: 'articleBody',\n CloudinaryImage: 'cloudinaryImage',\n YoutubeVideo: 'youtubeVideoBlock',\n ResponsiveImage: 'responsiveImageBlock',\n ContactUsBlock: 'contacUsBlock',\n LoginBlock: 'loginBlock',\n ForgotPasswordBlock: 'forgotPasswordBlock',\n ResetPasswordBlock: 'resetPasswordBlock',\n CreateAccountBlock: 'createAccountBlock',\n RegisterTypeCodeBlock: 'blockRegisterTypeCode',\n PypestreamChat: 'pypestreamChat',\n SearchBlock: 'search',\n PressQuoteBlock: 'pressQuoteBlock',\n RegisterProductBlock: 'registerProductBlock',\n CongratulationsBlock: 'congratulationBlock',\n ProfileBlock: 'profileBlock',\n ChangePasswordBlock: 'changePasswordBlock',\n Awards: 'awardsBlock',\n LoginNavigationBlock: 'loginNavigationBlock',\n DesignedByDentist: 'designedByDentistBlock',\n LegacyArticleHeroBlock: 'legacyArticleHeroBlock',\n ContentDetailsBlock: 'contentDetailsBlock',\n ConsentBlock: 'ConsentBlock',\n ThreeColumnsUserQuoteBlock: 'threeColumnsQuoteBlock',\n ArticlePopUp: 'articlePopUp',\n ArticleShare: 'articleShareBlock',\n LegacyProductHighlightBlock: 'legacyProductHighlightBlock',\n ArticleListBlock: 'articleListBlock',\n ArticleTableBlock: 'articleTableBlock',\n SpotlightContestBlock: 'spotlightContestBlock',\n SpotlightContestThankYouBlock: 'spotlightContestThankYouBlock',\n ProductLegacyBody: 'productLegacyBody',\n FaqDetailsBlock: 'faqDetailsBlock',\n Disclaimer: 'disclaimer',\n ProductVariantsRecommanderBlock: 'productVariantsRecommanderBlock',\n SitemapBlock: 'sitemapBlock',\n SitemapPage: 'SitemapPage',\n HTMLBlock: 'htmlBlock',\n SpotlightExperienceBlock: 'spotlightExperienceBlock',\n DoubleOptInVerificationBlock: 'doubleOptInVerificationBlock',\n articleLink: 'article link',\n blue: 'blue',\n chevronRight: 'chevronRight',\n PostPurchaseRegisterForm: 'blockPostPurchase',\n PrePurchase: 'qrCodePrePurchase',\n PrePurchaseResult: 'qrCodePrePurchaseResults',\n PostPurchaseWriteReviewSection: 'blockPostPurchaseWriteReviewSection',\n mediaUpper: '(min-width: 1200px)',\n mediaLower: '(min-width: 426px)',\n dprUpper: 'q=100&f=center&fit=fill&w=460&h=260',\n dprMedium: 'q=100&f=center&fit=fill&w=272&h=150',\n dprLower: 'q=100&f=center&fit=fill&w=124&h=150',\n BreadCrumbs: 'breadCrumbs',\n SwitchTab: 'switchTabs',\n ArticleSuggestion: 'articleSuggestionBlock',\n ArticleBlock: 'articleBlock'\n});\n\nexport const ZoneConstants = Object.freeze({\n zone: 'zone ',\n classNames: Constants.classNames,\n role: 'role',\n ariaLabel: 'ariaLabel',\n backgroundImage: Constants.backgroundImage,\n id: 'id',\n zoneSpotlightSliderBodyClassname: 'spotlight-body-zone',\n zoneSpotlightContestClassname: 'spotlight-zone-contest',\n});\n\nexport const YoutubeVideoConstants = Object.freeze({\n percent: '%',\n title: 'Youtube',\n url: 'https://www.youtube-nocookie.com/embed/',\n});\n\nexport const VideoPlayerConstants = Object.freeze({\n id: 'video-player',\n videoRecommendations: 'Video Recommendations overlay item information',\n videoRatioVolume: 0.3,\n descriptionButtonLowOpacity: 0.5,\n descriptionButtonHighOpacity: 1,\n domainHttp: 'https:'\n});\n\nexport const UserQuoteConstants = Object.freeze({\n classNames: Constants.classNames,\n title: Constants.title,\n mainAsset: Constants.mainAsset,\n name: Constants.name,\n disclaimer: Constants.disclaimer,\n authorName: 'authorName',\n quote: 'quote',\n starRating: 'starRating',\n writeAReviewLabel: 'writeAReviewLabel',\n ratingSummary: Constants.ratingSummary,\n reviews: 'reviews',\n questions: 'questions',\n h1: Constants.h1,\n h2: Constants.h2,\n itemType: Constants.itemType,\n itemProp: Constants.name,\n displayUserReviews: 'displayUserReviews',\n reviewSection: 'Write a review ',\n containerElement: 'div'\n});\n\nexport const UnderlineTabsNavigationConstants = Object.freeze({\n resize: Constants.resize,\n childLabel: 'Child Product Category',\n tabList: 'tablist',\n tab: 'tab'\n});\n\nexport const TabbedContentConstants = Object.freeze({\n empty: Constants.empty,\n anchorName: 'anchorName',\n chevronDown: Constants.chevronDown,\n tab: 'tab-',\n blocks: Constants.blocks\n});\n\nexport const StarRatingConstants = Object.freeze({\n star: 'star',\n starEmpty: 'starEmpty',\n starHalf: 'starHalf',\n});\n\nexport const SpotlightWaitlistConstants = Object.freeze({\n error: 'An error occured',\n failedToRegister: ': Registration failed',\n title: Constants.title,\n body: Constants.body,\n callToActionLabel: 'callToActionLabel',\n legalText: 'legalText',\n emailLimitExceedLabel: 'emailLimitExceedLabel',\n invalidLocaleLabel: 'invalidLocaleLabel',\n serviceUnavailableLabel: 'serviceUnavailableLabel',\n formLabels: 'formLabels',\n classNames: Constants.classNames,\n anchorId: Constants.anchorId,\n backgroundAsset: Constants.backgroundAsset,\n mobileBackgroundAsset: Constants.mobileBackgroundAsset,\n thankYouTitleLabel: 'thankYouTitleLabel',\n thankYouBackgroundAsset: 'thankYouBackgroundAsset',\n thankYouDescriptionLabel: 'thankYouDescriptionLabel',\n thankYouCallToAction: 'thankYouCallToAction',\n thankYouCallToActionLink: 'thankYouCallToActionLink',\n thankYouCallToActionIconName: 'thankYouCallToActionIconName',\n closeModalLabel: 'closeModalLabel',\n numberOfErrorsLabel: 'numberOfErrorsLabel',\n submit: Constants.submit,\n close: Constants.close,\n gcsCampaignParam: 'campaignId',\n gcsLocaleParam: 'locale',\n contentType: 'Content-Type',\n json: Constants.json,\n accessToken: 'access_token',\n system: 'GCS',\n chevronDown: Constants.chevronDown,\n countrySelectLabel: 'countrySelectLabel',\n countrySelectList: 'countrySelectList',\n countrySelectListDefaultOption: 'countrySelectListDefaultOption',\n countrySelectErrorMessage: 'countrySelectErrorMessage',\n countrySelectMention: 'countrySelectMention',\n modalLabelFirst: 'modalLabelFirst',\n modalLabelSecond: 'modalLabelSecond',\n addressTypeCode: 'addressTypeCode',\n alternateThankYouTitleLabel: 'alternateThankYouTitleLabel',\n alternateThankYouDescriptionLabel: 'alternateThankYouDescriptionLabel',\n callToPreOrderActionLabel: 'callToPreOrderActionLabel',\n callToPreOrderActionLink: 'callToPreOrderActionLink',\n implicitTCAgree: 'implicitTCAgree',\n isInterstitialPopup: 'isInterstitialPopup',\n topicList: 'topicList',\n given: 'given',\n traitTrafficSourceValue: 'LATAM website interstitial - GCS - Mindtree',\n traiteValue: \"LATAM website interstitial - Mixture - Mindtree\",\n loader: '/static/images/loader.gif',\n interstitalSource: 'LATAM website interstitial - Mixture - Mindtree',\n traitBrushTechnologyIdValue: 'traitBrushTechnologyIdValue',\n transmitterSource: 'transmitter source',\n countryDropdownList: 'countryDropdownList'\n});\n\nexport const SpotlightContestConstants = Object.freeze({\n error: 'An error occured',\n failedToRegister: ': Sign up failed',\n title: Constants.title,\n contestTitle: 'contestTitle',\n signUpCallToActionLabel: 'signUpCallToActionLabel',\n emailLimitExceedLabel: 'emailLimitExceedLabel',\n invalidLocaleLabel: 'invalidLocaleLabel',\n serviceUnavailableLabel: 'serviceUnavailableLabel',\n formFields: 'formFields',\n classNames: Constants.classNames,\n anchorId: Constants.anchorId,\n backgroundAsset: Constants.backgroundAsset,\n mobileBackgroundAsset: Constants.mobileBackgroundAsset,\n oralBLogoAsset: 'oralBLogo',\n backToOralbLink: 'backToOralbLink',\n ioLogoAsset: 'ioLogo',\n formOptinInputText: 'formOptinInputText',\n formOwnETBInputText: 'formOwnETBInputText',\n formLegalText: 'formLegalText',\n socialLinks: 'socialLinks',\n redirectDestination: 'redirectDestination',\n copyrightLabel: 'copyrightLabel',\n thankYouTitleLabel: 'thankYouTitleLabel',\n thankYouBackgroundAsset: 'thankYouBackgroundAsset',\n thankYouDescriptionLabel: 'thankYouDescriptionLabel',\n thankYouCallToAction: 'thankYouCallToAction',\n thankYouCallToActionLink: 'thankYouCallToActionLink',\n thankYouCallToActionIconName: 'thankYouCallToActionIconName',\n numberOfErrorsLabel: 'numberOfErrorsLabel',\n submit: Constants.submit,\n close: Constants.close,\n GcsURL: '/registration?access_token=',\n gcsCampaignParam: 'campaignId',\n gcsLocaleParam: 'locale',\n contentType: 'Content-Type',\n json: Constants.json,\n accessToken: 'access_token',\n system: 'GCS',\n chevronDown: Constants.thinChevronDown,\n modalLabelFirst: 'modalLabelFirst',\n modalLabelSecond: 'modalLabelSecond',\n addressTypeCode: 'addressTypeCode',\n alternateThankYouTitleLabel: 'alternateThankYouTitleLabel',\n alternateThankYouDescriptionLabel: 'alternateThankYouDescriptionLabel',\n continueReading: 'Continue reading'\n});\n\nexport const SpotlightVideoPlayerConstants = Object.freeze({\n pgone: 'pgone',\n cloudinaryVideoPlayer: 'cloudinary-video-player',\n cloudinaryCore: 'cloudinary-core',\n inherit: 'inherit',\n never: 'never',\n sourceTypes: ['hls', 'mp4', 'ogg', 'webm'],\n});\n\nexport const SpotlightStickyBarConstants = Object.freeze({\n stickyBarClassName: 'ob-SpotlightStickyBar',\n scrollTo: 'scrollTo',\n callToActionLink: Constants.callToActionLink,\n logoLink: 'logoLink',\n logo: 'logo',\n name: Constants.name,\n title: Constants.title,\n medium: Constants.medium,\n SignUp: 'Sign up',\n callToActionLabel: Constants.callToActionLabel,\n CallToActionLabel: 'CallToActionLabel',\n});\n\nexport const SpotlightSliderConstants = Object.freeze({\n scrollerContainer: 'scroller-container ',\n classNames: Constants.classNames,\n continueReadingLabel: 'continueReadingLabel',\n main: 'main',\n});\n\nexport const SpotlightPreorderConstants = Object.freeze({\n body: Constants.body,\n title: Constants.title,\n anchorId: Constants.anchorId,\n classNames: Constants.classNames,\n backgroundAsset: Constants.backgroundAsset,\n preOrderButtonLabel: 'preOrderButtonLabel',\n preOrderCallToAction: 'preOrderCallToAction',\n mobileBackgroundAsset: 'mobileBackgroundAsset',\n});\n\nexport const SpotlightExperienceConstants = Object.freeze({\n description: Constants.description,\n title: Constants.title,\n anchorId: Constants.anchorId,\n classNames: Constants.classNames,\n backgroundAsset: Constants.backgroundAsset,\n callToActionLabel: 'callToActionLabel',\n callToActionLink: 'callToActionLink',\n experienceTitle: 'experienceTitle',\n experienceFeatures: 'experienceFeatures',\n closeLabel: 'closeLabel',\n chevronDown: Constants.chevronDown,\n countrySelectLabel: 'countrySelectLabel',\n countrySelectList: 'countrySelectList'\n});\n\nexport const SpotlightExperienceProductConstants = Object.freeze({\n itemType: Constants.itemType,\n ProductName: 'ProductName',\n ratingSummary: 'inline_rating',\n button: Constants.button,\n});\n\n\nexport const SpotlightContentVideoConstants = Object.freeze({\n introText: 'introText',\n introLogo: 'introLogo',\n title: Constants.title,\n titleLevel: Constants.titleLevel,\n defaultRight: \"-720px\",\n defaultBottom: \"-170px\",\n displaynone: \"none\",\n nextFrameOnVideoEnd: 'nextFrameOnVideoEnd',\n introDurationSecond: 'introDurationSecond',\n playButtonColor: 'playButtonColor',\n white: Constants.white,\n mobileFullSize: 'mobileFullSize',\n playLabel: 'playLabel',\n pauseLabel: 'pauseLabel',\n resetLabel: 'resetLabel',\n paused: 'paused',\n played: 'played',\n openTranscriptLabel: 'openTranscriptLabel',\n closeTranscriptLabel: 'closeTranscriptLabel',\n content: Constants.content,\n classNames: Constants.classNames,\n textContainerHasPadding: 'textContainerHasPadding',\n hide: 'hide',\n auto: 'auto',\n none: 'none',\n description: Constants.description,\n VideoId: 'VideoId',\n spotlightPause: 'spotlightPause',\n spotlightPlay: 'spotlightPlay',\n spotlightReplay: 'spotlightReplay',\n spotlightTranscript: 'spotlightTranscript',\n close: Constants.close,\n});\n\nexport const SpotlightContentBlockConstants = Object.freeze({\n devicesConfigurations: 'devicesConfigurations',\n textAlign: 'textAlign',\n empty: Constants.empty,\n textAlignment: 'textAlignment',\n textContainerVerticalAlignment: 'textContainerVerticalAlignment',\n textContainerOffset: 'textContainerOffset',\n textContainerMarginRight: 'textContainerMarginRight',\n textContainerMarginLeft: 'textContainerMarginLeft',\n mainAsset: Constants.mainAsset,\n mainAssetHorizontalAlignment: 'mainAssetHorizontalAlignment',\n mainAssetMaxWidth: 'mainAssetMaxWidth',\n mainAssetMarginTop: 'mainAssetMarginTop',\n mainAssetMarginRight: 'mainAssetMarginRight',\n mainAssetOffsetBottom: 'mainAssetOffsetBottom',\n mainAssetOffsetLeft: 'mainAssetOffsetLeft',\n secondaryAsset: 'secondaryAsset',\n additionalAssetList: 'additionalAssetList',\n backgroundAsset: Constants.backgroundAsset,\n mainAssetScale: 'mainAssetScale',\n textFadeIn: 'textFadeIn',\n refreshImageOnFrameChange: 'refreshImageOnFrameChange',\n content: Constants.content,\n classNames: Constants.classNames,\n whiteText: Constants.whiteText,\n hasLink: 'hasLink',\n title: Constants.title,\n titleLevel: Constants.titleLevel,\n textImage: 'textImage',\n textImageMobile: 'textImageMobile',\n textImagePosition: 'textImagePosition',\n top: Constants.top,\n textContainerBackgroundColor: 'textContainerBackgroundColor',\n textContainerHasPadding: 'textContainerHasPadding',\n surtitle: 'surtitle',\n textContent: 'textContent',\n bottom: 'bottom',\n callToActionLink: Constants.callToActionLink,\n white: Constants.white,\n chevronRight: Constants.chevronRight,\n blue: Constants.blue,\n callToActionLabel: Constants.callToActionLabel,\n});\n\nexport const SkipNavigationBlockConstants = Object.freeze({\n label: 'label',\n targetID: 'targetID',\n roleMain: '[role=\"main\"]',\n});\n\nexport const SideBySideContainerConstants = Object.freeze({\n anchorId: Constants.anchorId,\n name: Constants.name,\n left: 'left',\n right: 'right',\n sideBySide: 'side-by-side-',\n hasDivider: 'hasDivider',\n flipOnMobile: 'flipOnMobile',\n disclaimer: Constants.disclaimer,\n title: Constants.title,\n description: Constants.description,\n blocks: Constants.blocks,\n});\n\nexport const ShowcaseBlockConstants = Object.freeze({\n classNames: Constants.classNames,\n title: Constants.title,\n description: Constants.description,\n sideImage: 'sideImage',\n});\n\nexport const SeriesSelectorConstants = Object.freeze({\n master: 'master_',\n media: '(min-width: 768px)',\n dpr: 'f_auto,q_auto,w_398',\n empty: Constants.empty,\n ratingSummary: 'inline_rating',\n reviews: 'reviews',\n});\n\nexport const ProductOverviewConstant = Object.freeze({\n link: 'Link'\n});\n\nexport const SingleProductRecommenderConstant = Object.freeze({\n title: 'title'\n});\n\nexport const MultipleProductRecommenderConstant = Object.freeze({\n title: 'title'\n});\n\nexport const SeriesTabsConstants = Object.freeze({\n button: Constants.button,\n true: 'true',\n false: 'false',\n chevronDown: Constants.chevronDown,\n buttonRole: 'button',\n page: 'page'\n});\nexport const BuySeriesConstants = Object.freeze({\n chevronRight: Constants.chevronRight,\n});\n\nexport const SeriesComparisonItemConstants = Object.freeze({\n itemType: Constants.itemType,\n ProductName: 'ProductName',\n ratingSummary: 'inline_rating',\n button: Constants.button,\n comingSoonText: 'comingSoonText',\n commingSoonItem: 'coparison-item'\n});\n\nexport const SeeMoreButtonConstants = Object.freeze({\n blue: Constants.blue,\n chevronLeft: 'chevronLeft',\n chevronRight: Constants.chevronRight,\n button: Constants.button,\n});\n\nexport const AlgoliaConstants = Object.freeze({\n errorMsg: 'Cannot create algolia search client: ALGOLIA_APP_ID or ALGOLIA_APP_SEARCH_KEY envs are empty',\n crawlerTriggeredMsg: 'Algolia crawler triggered!!'\n});\n\nexport const algoliaReducerConstants = Object.freeze({\n SearchClicked: 'SearchClicked',\n queryParm: 'queryParm',\n searchStaticContent: 'searchStaticContent',\n hitsResponse: 'hitsResponse',\n filerClicked: 'filerClicked',\n pageNoClicked: 'pageNoClicked',\n showAutocomplete: 'showAutocomplete',\n searchValue: 'searchValue',\n isSpinning: 'isSpinning',\n totalPageNumber: 'totalPageNumber',\n filterItems: 'filterItems',\n nbHits: 'nbHits',\n nbPages: 'nbPages'\n});\n\nexport const SearchBarConstants = Object.freeze({\n text: Constants.text,\n submit: Constants.submit,\n searchText: 'searchText',\n search: 'search',\n list: 'list',\n maximumAutocompleteResults: 10,\n searchTitle: 'searchTitle',\n common_search: 'COMMOM SEARCH',\n SearchClicked: 'SearchClicked',\n queryParm: 'queryParm',\n searchStaticContent: 'searchStaticContent',\n hitsResponse: 'hitsResponse',\n filerClicked: 'filerClicked',\n SearchSuggestions: 'SearchSuggestions',\n pageNoClicked: 'pageNoClicked',\n showAutocomplete: 'showAutocomplete',\n searchValue: 'searchValue',\n isSpinning: 'isSpinning',\n searchBarAriaLabel: 'Search',\n eventCategory: 'event_informational_action',\n eventAction: 'event_search',\n});\n\nexport const RotationConstants = Object.freeze({\n mouseup: 'mouseup',\n grabbing: 'grabbing',\n number: 'number',\n grab: 'grab',\n match: 'TEXTAREA|INPUT|SELECT',\n touch: 'touch',\n});\n\nexport const RichTextConstants = Object.freeze({\n text: Constants.text,\n classNames: Constants.classNames,\n anchorId: Constants.anchorId,\n});\n\nexport const ResponsiveImageConstants = Object.freeze({\n tiny: 'tiny',\n mobile: 'mobile',\n tablet: 'tablet',\n desktop: 'desktop',\n});\n\nexport const RecentlyViewedProductsBlockConstants = Object.freeze({\n show: 'show',\n fetch: '/_next/static/products/',\n json: '.json',\n four: '4',\n});\n\nexport const PromoConstants = Object.freeze({\n promo: 'promo ',\n classNames: Constants.classNames,\n whiteText: Constants.whiteText,\n subtitle: 'subtitle',\n description: Constants.description,\n retailerText: 'retailerText',\n mobileBackgroundAsset: Constants.mobileBackgroundAsset,\n backgroundAsset: Constants.backgroundAsset,\n titleLevel: Constants.titleLevel,\n title: Constants.title,\n retailerLogo: 'retailerLogo',\n callToActionLink: Constants.callToActionLink,\n callToActionLabel: Constants.callToActionLabel,\n horizontalAlignment: 'horizontalAlignment',\n large: Constants.large,\n});\n\nexport const ProductSubNavConstants = Object.freeze({\n classNames: Constants.classNames,\n scroll: Constants.scroll,\n anchorClick: 'anchorClick',\n resize: Constants.resize,\n wheel: 'wheel',\n touchmove: Constants.touchmove,\n top: Constants.top,\n undefined: 'undefined',\n Collapsed: 'COLLAPSED',\n Collapsing: 'COLLAPSING',\n chevronDown: Constants.chevronDown,\n chevronTop: Constants.chevronTop,\n medium: Constants.medium,\n blank: '_blank',\n links: 'links',\n h1: Constants.h1,\n h2: Constants.h2,\n small: Constants.small,\n mediumLong: Constants.mediumLong,\n initialLoad: 'initialLoad',\n prepurchase: 'prepurchase'\n});\n\nexport const ProductOverlayConstants = Object.freeze({\n closeOverlayLabel: 'closeOverlayLabel',\n empty: Constants.empty,\n classNames: Constants.classNames,\n keydown: Constants.keydown,\n noScroll: 'noScroll',\n scroll: Constants.scroll,\n isActive: 'is-active',\n querySelectorAll: 'button:not([disabled]), a[href]:not([disabled])',\n Tab: Constants.Tab,\n Escape: Constants.Escape,\n close: Constants.close,\n priceSpiderSource: '//cdn.pricespider.com/1/lib/ps-widget.js',\n priceSpiderConsoleLogMessageError: 'pricespider script not loaded',\n buyNowLiteErrorLabel: 'buyNowLiteErrorLabel',\n activateBuyNowLite: 'activateBuyNowLite'\n});\n\nexport const ProductHighlightsConstants = Object.freeze({\n isActive: 'is-active',\n empty: Constants.empty,\n minus6: 'minus6',\n blue: Constants.blue,\n button: Constants.button,\n plus: 'plus',\n seeLess: 'SEE LESS',\n seeMore: 'SEE MORE',\n highlights: ' highlights',\n undefinedStr: 'undefined',\n productRating: 'rating'\n});\n\nexport const ProductGridBlockConstants = Object.freeze({\n title: Constants.title,\n titleLevel: Constants.titleLevel,\n one: '1',\n two: '2',\n classNames: Constants.classNames,\n anchorId: Constants.anchorId,\n eyebrow: Constants.eyebrow,\n body: Constants.body,\n disclaimer: Constants.disclaimer,\n seeMoreLabel: 'seeMoreLabel',\n seeLessLabel: 'seeLessLabel',\n maxNumberInlineItems: 'maxNumberInlineItems',\n whiteText: Constants.whiteText,\n radialBackground: 'radialBackground',\n background: 'background',\n removeLazyLoad: 'removeLazyLoad',\n});\n\nexport const PageNavigationConstants = Object.freeze({\n classNames: Constants.classNames,\n pageNavigation: 'page-navigation--underlined',\n placeholderTitleLabel: 'placeholderTitleLabel',\n smooth: Constants.smooth,\n empty: Constants.empty,\n chevronDown: Constants.chevronDown,\n blocks: Constants.blocks,\n});\n\nexport const OnePageScrollConstants = Object.freeze({\n scrollDisabled: 'scroll--disabled',\n onePageScrollWrapper: 'one-page-scroll-wrapper',\n easeInOut: 'ease-in-out',\n resize: Constants.resize,\n hashChange: Constants.hashChange,\n touchmove: Constants.touchmove,\n keydown: Constants.keydown,\n container: 'container_',\n polite: 'polite',\n smooth: Constants.smooth,\n thinChevronDown: 'thinChevronDown',\n querySelector: '[data-isactiveblock=\"true\"]',\n scrollDown: 'Scroll down'\n});\n\nexport const BazaarVoiceConstants = Object.freeze({\n masterProductIdPrefix: 'master_',\n masterProductNamePrefix: 'master_product_'\n});\n\nexport const ArticleShareConstants = Object.freeze({\n facebookAlt: 'Share on Facebook',\n twitterAlt: 'Share on Twitter',\n shareTitle: 'Share',\n button: 'button',\n twitterIcon: '/static/images/twitter.png',\n facebookIcon: '/static/images/facebook.png'\n});\n\nexport const PypestreamChatConstants = Object.freeze({\n persistentChatTriggered: 'persistentChatTriggered_',\n});\n\nexport const PressQuoteBlockConstants = Object.freeze({\n pressQuotes: 'pressQuotes',\n pressLogo: 'pressLogo',\n quote: 'quote',\n starRating: 'reviewStars',\n animationGifAsset: 'animationGifAsset',\n callToActionLabel: 'ctaLabel',\n callToActionLink: 'ctaLink',\n iconArrowLeft: 'chevronLeft',\n iconArrowRight: 'chevronRight',\n previousLabel: 'previousLabel',\n nextLabel: 'nextLabel',\n transparentWithBorders: 'Transparent with Borders',\n ariaLabel: 'ariaLabel'\n});\n\nexport const SearchBlockConstants = Object.freeze({\n queryHashName: 'query',\n queryHashEqual: '=',\n faqStylePageLinks: 'Page Links',\n faqStyleDropdown: 'Dropdown',\n allResultsCategory: 'All',\n pageCategory: 'Page',\n collectionCategory: 'Collection',\n productCategory: 'Product',\n articleCategory: 'Article',\n searchText: 'searchText',\n faqCategory: 'FAQ'\n});\n\nexport const CountryCode = Object.freeze({\n Belgique: 'BEL',\n France: 'FRA',\n Deutschland: 'DEU',\n Schweiz: 'CHE',\n 'Österreich': 'AUT',\n Nederland: 'NLD',\n Belgie: 'BEL',\n 'United Kingdom': 'GBR',\n 'Ireland': 'IRL'\n});\n\nexport const SearchServiceConstants = Object.freeze({\n contentType: 'Content-Type',\n json: Constants.json,\n swiftypeBaseUrl: 'https://api.swiftype.com/api/v1',\n swiftypePath: '/public/engines/search',\n swiftypeAutocompleteUrl: 'https://search-api.swiftype.com/api/v1/public/engines/suggest.json'\n});\n\nexport const JanrainConstants = Object.freeze({\n productListLocalStorageKeyPrefix: 'oralbProductList-',\n benefitListLocalStorageKeyPrefix: 'oralbBenefitPreferenceList-'\n});\n\nexport const SvcApiConstants = Object.freeze({\n contentType: 'Content-Type',\n ciamInstanceId: 'CiamInstanceId',\n resendVerificationForm: 'resendVerificationForm',\n unknownAccessToken: 'unknown access token'\n});\n\nexport const WarrantyExtensionConstants = Object.freeze({\n contentType: 'Content-Type',\n json: Constants.json,\n accessToken: 'access_token',\n oneCPId: 'oneCPId',\n UUID: 'UUID',\n programIdParam: 'programId=',\n categoryIdParam: 'categoryId=',\n localeParam: 'locale=',\n productId: 0, // based on the API team request while doing warenty extension rewamp\n internGroupValue: 'OC',\n addressTypeCode: 'INVOICE_ADDRESS',\n warrantyExtensionPath: 'warrantyextension',\n getConsumerPath: 'consumer/getConsumer',\n getProductsByTypeCodePath: 'products/productByGas',\n getCampaignInfoMaster: 'program',\n getproductListBySeries: 'products/productListBySeries',\n gasPrimaryProductDetailKey: 'gasPrimaryProductDetail',\n gasSecondaryProductDetailKey: 'gasSecondaryProductDetail',\n primaryProductIndex: 0,\n comboProductIndex: 1,\n janrinProductIdDelimiter: '_',\n janrinProfileOldestProductIndex: 0\n});\n\nexport const FaqDetailsBlockConstants = Object.freeze({\n classNames: 'classNames',\n anchorId: 'anchorId',\n baseClass: 'ob-faq-details-block '\n});\n\nexport const IndexationUrlFactoryConstants = Object.freeze({\n swiftypeBaseUrl: 'https://api.swiftype.com/api/v1/engines/',\n swiftypeDocumentTypes: '/document_types/',\n swiftypeAuth: '?auth_token=',\n json: '.json',\n specificSwiftypeDocument: '/documents/',\n generalSwiftypeDocument: '/documents'\n});\n\nexport const RichTextLinkBlockConstants = Object.freeze({\n classNames: 'classNames',\n image: 'image',\n url: 'url',\n linkType: 'type',\n title: 'title',\n className: 'className',\n GAclassName: 'linkClassName',\n dataActionDetail: 'dataActionDetail'\n});\n\nexport const BuyNowLiteConstants = Object.freeze({\n accessControlAllowOrigin: 'Access-Control-Allow-Origin',\n xFunctionKey: 'x-functions-key',\n passKey: 'passkey',\n ocpApimSubscriptionKey: 'Ocp-Apim-Subscription-Key',\n image: 'image',\n url: 'url',\n linkType: 'type',\n title: 'title',\n});\n\nexport const ImageContenfullConstants = Object.freeze({\n defaultImageWindWidth: 450,\n defaultWidth: 400,\n defaultDesktopWidth: 768,\n dpr_1440: 'f=center&q=100&w=1440',\n product: 'product'\n});\n\nexport const ContentSeriesSelectorConstants = Object.freeze({\n master: 'master_',\n media: '(min-width: 768px)',\n dpr: 'f=center&q=100&w=398',\n empty: Constants.empty,\n ratingSummary: 'inline_rating',\n reviews: 'reviews',\n});\n\nexport const SignupFooterBlockConstants = Object.freeze({\n traitTrafficSourceValue: 'LATAM website Footer - Email Capture- Mixture - Mindtree'\n})\n\nexport const ArticlePage = Object.freeze({\n downArrow: 'down arrow',\n})\n\nexport const SuspenseValue = Object.freeze({\n data: 'Loading...'\n})\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return App;\n }\n});\nconst _interop_require_default = require(\"@swc/helpers/_/_interop_require_default\");\nconst _jsxruntime = require(\"react/jsx-runtime\");\nconst _react = /*#__PURE__*/ _interop_require_default._(require(\"react\"));\nconst _utils = require(\"../shared/lib/utils\");\n/**\n * `App` component is used for initialize of pages. It allows for overwriting and full control of the `page` initialization.\n * This allows for keeping state between navigation, custom error handling, injecting additional data.\n */ async function appGetInitialProps(param) {\n let { Component, ctx } = param;\n const pageProps = await (0, _utils.loadGetInitialProps)(Component, ctx);\n return {\n pageProps\n };\n}\nclass App extends _react.default.Component {\n render() {\n const { Component, pageProps } = this.props;\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(Component, {\n ...pageProps\n });\n }\n}\nApp.origGetInitialProps = appGetInitialProps;\nApp.getInitialProps = appGetInitialProps;\n\nif ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', { value: true });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n}\n\n//# sourceMappingURL=_app.js.map","import React from 'react';\nimport { InstantSearch } from 'react-instantsearch-dom';\nimport { getSearchClient } from '../adapters/algolia/client';\n\nimport App from 'next/app';\nimport '../styles/index.scss';\n\n\nclass CustomApp extends App {\n render() {\n const { Component, pageProps } = this.props;\n const searchClient = getSearchClient();\n return (\n \n \n \n )\n }\n}\n\nexport default CustomApp","\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/_app\",\n function () {\n return require(\"private-next-pages/_app.js\");\n }\n ]);\n if(module.hot) {\n module.hot.dispose(function () {\n window.__NEXT_P.push([\"/_app\"])\n });\n }\n ","// extracted by mini-css-extract-plugin","/**\n * Copyright (c) 2013-present, Facebook, Inc.\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';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim\n };\n\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\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\nif (process.env.NODE_ENV !== 'production') {\n var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n Symbol.for &&\n Symbol.for('react.element')) ||\n 0xeac7;\n\n var isValidElement = function(object) {\n return typeof object === 'object' &&\n object !== null &&\n object.$$typeof === REACT_ELEMENT_TYPE;\n };\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(isValidElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\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';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.3\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n // START: Modifications:\n // Apply guards for `Object.create(null)` handling. See:\n // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n // END: Modifications\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","import { createContext } from 'react';\nexport var instantSearchContext = /*#__PURE__*/createContext({\n onInternalStateUpdate: function onInternalStateUpdate() {\n return undefined;\n },\n createHrefForState: function createHrefForState() {\n return '#';\n },\n onSearchForFacetValues: function onSearchForFacetValues() {\n return undefined;\n },\n onSearchStateChange: function onSearchStateChange() {\n return undefined;\n },\n onSearchParameters: function onSearchParameters() {\n return undefined;\n },\n store: {},\n widgetsManager: {},\n mainTargetedIndex: ''\n});\nvar InstantSearchConsumer = instantSearchContext.Consumer,\n InstantSearchProvider = instantSearchContext.Provider;\nexport { InstantSearchConsumer, InstantSearchProvider };\nvar _createContext = /*#__PURE__*/createContext(undefined),\n IndexConsumer = _createContext.Consumer,\n IndexProvider = _createContext.Provider;\nexport { IndexConsumer, IndexProvider };","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { omit } from \"./utils.js\";\nexport function getIndexId(context) {\n return hasMultipleIndices(context) ? context.multiIndexContext.targetedIndex : context.ais.mainTargetedIndex;\n}\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * @returns {import('algoliasearch-helper').SearchResults} results\n */\nexport function getResults(searchResults, context) {\n if (searchResults.results) {\n if (searchResults.results.hits) {\n return searchResults.results;\n }\n var indexId = getIndexId(context);\n if (searchResults.results[indexId]) {\n return searchResults.results[indexId];\n }\n }\n return null;\n}\nexport function hasMultipleIndices(context) {\n return context && context.multiIndexContext;\n}\nexport function refineValue(searchState, nextRefinement, context, resetPage, namespace) {\n if (hasMultipleIndices(context)) {\n var indexId = getIndexId(context);\n return namespace ? refineMultiIndexWithNamespace(searchState, nextRefinement, indexId, resetPage, namespace) : refineMultiIndex(searchState, nextRefinement, indexId, resetPage);\n } else {\n // When we have a multi index page with shared widgets we should also\n // reset their page to 1 if the resetPage is provided. Otherwise the\n // indices will always be reset\n // see: https://github.com/algolia/react-instantsearch/issues/310\n // see: https://github.com/algolia/react-instantsearch/issues/637\n if (searchState.indices && resetPage) {\n Object.keys(searchState.indices).forEach(function (targetedIndex) {\n searchState = refineValue(searchState, {\n page: 1\n }, {\n multiIndexContext: {\n targetedIndex: targetedIndex\n }\n }, true, namespace);\n });\n }\n return namespace ? refineSingleIndexWithNamespace(searchState, nextRefinement, resetPage, namespace) : refineSingleIndex(searchState, nextRefinement, resetPage);\n }\n}\nfunction refineMultiIndex(searchState, nextRefinement, indexId, resetPage) {\n var page = resetPage ? {\n page: 1\n } : undefined;\n var state = searchState.indices && searchState.indices[indexId] ? _objectSpread(_objectSpread({}, searchState.indices), {}, _defineProperty({}, indexId, _objectSpread(_objectSpread(_objectSpread({}, searchState.indices[indexId]), nextRefinement), page))) : _objectSpread(_objectSpread({}, searchState.indices), {}, _defineProperty({}, indexId, _objectSpread(_objectSpread({}, nextRefinement), page)));\n return _objectSpread(_objectSpread({}, searchState), {}, {\n indices: state\n });\n}\nfunction refineSingleIndex(searchState, nextRefinement, resetPage) {\n var page = resetPage ? {\n page: 1\n } : undefined;\n return _objectSpread(_objectSpread(_objectSpread({}, searchState), nextRefinement), page);\n}\nfunction refineMultiIndexWithNamespace(searchState, nextRefinement, indexId, resetPage, namespace) {\n var _objectSpread4;\n var page = resetPage ? {\n page: 1\n } : undefined;\n var state = searchState.indices && searchState.indices[indexId] ? _objectSpread(_objectSpread({}, searchState.indices), {}, _defineProperty({}, indexId, _objectSpread(_objectSpread({}, searchState.indices[indexId]), {}, (_objectSpread4 = {}, _defineProperty(_objectSpread4, namespace, _objectSpread(_objectSpread({}, searchState.indices[indexId][namespace]), nextRefinement)), _defineProperty(_objectSpread4, \"page\", 1), _objectSpread4)))) : _objectSpread(_objectSpread({}, searchState.indices), {}, _defineProperty({}, indexId, _objectSpread(_defineProperty({}, namespace, nextRefinement), page)));\n return _objectSpread(_objectSpread({}, searchState), {}, {\n indices: state\n });\n}\nfunction refineSingleIndexWithNamespace(searchState, nextRefinement, resetPage, namespace) {\n var page = resetPage ? {\n page: 1\n } : undefined;\n return _objectSpread(_objectSpread({}, searchState), {}, _defineProperty({}, namespace, _objectSpread(_objectSpread({}, searchState[namespace]), nextRefinement)), page);\n}\nfunction getNamespaceAndAttributeName(id) {\n var parts = id.match(/^([^.]*)\\.(.*)/);\n var namespace = parts && parts[1];\n var attributeName = parts && parts[2];\n return {\n namespace: namespace,\n attributeName: attributeName\n };\n}\nfunction hasRefinements(_ref) {\n var multiIndex = _ref.multiIndex,\n indexId = _ref.indexId,\n namespace = _ref.namespace,\n attributeName = _ref.attributeName,\n id = _ref.id,\n searchState = _ref.searchState;\n if (multiIndex && namespace) {\n return searchState.indices && searchState.indices[indexId] && searchState.indices[indexId][namespace] && Object.hasOwnProperty.call(searchState.indices[indexId][namespace], attributeName);\n }\n if (multiIndex) {\n return searchState.indices && searchState.indices[indexId] && Object.hasOwnProperty.call(searchState.indices[indexId], id);\n }\n if (namespace) {\n return searchState[namespace] && Object.hasOwnProperty.call(searchState[namespace], attributeName);\n }\n return Object.hasOwnProperty.call(searchState, id);\n}\nfunction getRefinements(_ref2) {\n var multiIndex = _ref2.multiIndex,\n indexId = _ref2.indexId,\n namespace = _ref2.namespace,\n attributeName = _ref2.attributeName,\n id = _ref2.id,\n searchState = _ref2.searchState;\n if (multiIndex && namespace) {\n return searchState.indices[indexId][namespace][attributeName];\n }\n if (multiIndex) {\n return searchState.indices[indexId][id];\n }\n if (namespace) {\n return searchState[namespace][attributeName];\n }\n return searchState[id];\n}\nexport function getCurrentRefinementValue(props, searchState, context, id, defaultValue) {\n var indexId = getIndexId(context);\n var _getNamespaceAndAttri = getNamespaceAndAttributeName(id),\n namespace = _getNamespaceAndAttri.namespace,\n attributeName = _getNamespaceAndAttri.attributeName;\n var multiIndex = hasMultipleIndices(context);\n var args = {\n multiIndex: multiIndex,\n indexId: indexId,\n namespace: namespace,\n attributeName: attributeName,\n id: id,\n searchState: searchState\n };\n var hasRefinementsValue = hasRefinements(args);\n if (hasRefinementsValue) {\n return getRefinements(args);\n }\n if (props.defaultRefinement) {\n return props.defaultRefinement;\n }\n return defaultValue;\n}\nexport function cleanUpValue(searchState, context, id) {\n var indexId = getIndexId(context);\n var _getNamespaceAndAttri2 = getNamespaceAndAttributeName(id),\n namespace = _getNamespaceAndAttri2.namespace,\n attributeName = _getNamespaceAndAttri2.attributeName;\n if (hasMultipleIndices(context) && Boolean(searchState.indices)) {\n return cleanUpValueWithMultiIndex({\n attribute: attributeName,\n searchState: searchState,\n indexId: indexId,\n id: id,\n namespace: namespace\n });\n }\n return cleanUpValueWithSingleIndex({\n attribute: attributeName,\n searchState: searchState,\n id: id,\n namespace: namespace\n });\n}\nfunction cleanUpValueWithSingleIndex(_ref3) {\n var searchState = _ref3.searchState,\n id = _ref3.id,\n namespace = _ref3.namespace,\n attribute = _ref3.attribute;\n if (namespace) {\n return _objectSpread(_objectSpread({}, searchState), {}, _defineProperty({}, namespace, omit(searchState[namespace], [attribute])));\n }\n return omit(searchState, [id]);\n}\nfunction cleanUpValueWithMultiIndex(_ref4) {\n var searchState = _ref4.searchState,\n indexId = _ref4.indexId,\n id = _ref4.id,\n namespace = _ref4.namespace,\n attribute = _ref4.attribute;\n var indexSearchState = searchState.indices[indexId];\n if (namespace && indexSearchState) {\n return _objectSpread(_objectSpread({}, searchState), {}, {\n indices: _objectSpread(_objectSpread({}, searchState.indices), {}, _defineProperty({}, indexId, _objectSpread(_objectSpread({}, indexSearchState), {}, _defineProperty({}, namespace, omit(indexSearchState[namespace], [attribute])))))\n });\n }\n if (indexSearchState) {\n return _objectSpread(_objectSpread({}, searchState), {}, {\n indices: _objectSpread(_objectSpread({}, searchState.indices), {}, _defineProperty({}, indexId, omit(indexSearchState, [id])))\n });\n }\n return searchState;\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n// eslint-disable-next-line @typescript-eslint/unbound-method\nvar hasOwn = Object.prototype.hasOwnProperty;\n\n// From https://github.com/reactjs/react-redux/blob/master/src/utils/shallowEqual.js\nexport var shallowEqual = function shallowEqual(objA, objB) {\n if (objA === objB) {\n return true;\n }\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n // Test for A's keys different from B.\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwn.call(objB, keysA[i]) || objA[keysA[i]] !== objB[keysA[i]]) {\n return false;\n }\n }\n return true;\n};\nexport var getDisplayName = function getDisplayName(Component) {\n return Component.displayName || Component.name || 'UnknownComponent';\n};\nvar resolved = Promise.resolve();\nexport var defer = function defer(f) {\n resolved.then(f);\n};\nvar isPlainObject = function isPlainObject(value) {\n return _typeof(value) === 'object' && value !== null && !Array.isArray(value);\n};\nexport var removeEmptyKey = function removeEmptyKey(obj) {\n Object.keys(obj).forEach(function (key) {\n var value = obj[key];\n if (!isPlainObject(value)) {\n return;\n }\n if (!objectHasKeys(value)) {\n delete obj[key];\n } else {\n removeEmptyKey(value);\n }\n });\n return obj;\n};\nexport var removeEmptyArraysFromObject = function removeEmptyArraysFromObject(obj) {\n Object.keys(obj).forEach(function (key) {\n var value = obj[key];\n if (Array.isArray(value) && value.length === 0) {\n delete obj[key];\n }\n });\n return obj;\n};\nexport function addAbsolutePositions(hits, hitsPerPage, page) {\n return hits.map(function (hit, index) {\n return _objectSpread(_objectSpread({}, hit), {}, {\n __position: hitsPerPage * page + index + 1\n });\n });\n}\nexport function addQueryID(hits, queryID) {\n if (!queryID) {\n return hits;\n }\n return hits.map(function (hit) {\n return _objectSpread(_objectSpread({}, hit), {}, {\n __queryID: queryID\n });\n });\n}\nexport function find(array, comparator) {\n if (!Array.isArray(array)) {\n return undefined;\n }\n for (var i = 0; i < array.length; i++) {\n if (comparator(array[i])) {\n return array[i];\n }\n }\n return undefined;\n}\nexport function objectHasKeys(object) {\n return object && Object.keys(object).length > 0;\n}\n\n// https://github.com/babel/babel/blob/3aaafae053fa75febb3aa45d45b6f00646e30ba4/packages/babel-helpers/src/helpers.js#L604-L620\nexport function omit(source, excluded) {\n if (source === null || source === undefined) {\n return {};\n }\n var target = {};\n var sourceKeys = Object.keys(source);\n for (var i = 0; i < sourceKeys.length; i++) {\n var key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) {\n // eslint-disable-next-line no-continue\n continue;\n }\n target[key] = source[key];\n }\n return target;\n}\n\n/**\n * Retrieve the value at a path of the object:\n *\n * @example\n * getPropertyByPath(\n * { test: { this: { function: [{ now: { everyone: true } }] } } },\n * 'test.this.function[0].now.everyone'\n * ); // true\n *\n * getPropertyByPath(\n * { test: { this: { function: [{ now: { everyone: true } }] } } },\n * ['test', 'this', 'function', 0, 'now', 'everyone']\n * ); // true\n *\n * @param object Source object to query\n * @param path either an array of properties, or a string form of the properties, separated by .\n */\nexport var getPropertyByPath = function getPropertyByPath(object, path) {\n return (Array.isArray(path) ? path : path.replace(/\\[(\\d+)]/g, '.$1').split('.')).reduce(function (current, key) {\n return current ? current[key] : undefined;\n }, object);\n};\nexport function getObjectType(object) {\n return Object.prototype.toString.call(object).slice(8, -1);\n}\nexport function unescapeFacetValue(value) {\n return value.replace(/^\\\\-/, '-');\n}","import { defer } from \"./utils.js\";\nexport default function createWidgetsManager(onWidgetsUpdate) {\n var widgets = [];\n // Is an update scheduled?\n var scheduled = false;\n\n // The state manager's updates need to be batched since more than one\n // component can register or unregister widgets during the same tick.\n function scheduleUpdate() {\n if (scheduled) {\n return;\n }\n scheduled = true;\n defer(function () {\n scheduled = false;\n onWidgetsUpdate();\n });\n }\n return {\n registerWidget: function registerWidget(widget) {\n widgets.push(widget);\n scheduleUpdate();\n return function unregisterWidget() {\n widgets.splice(widgets.indexOf(widget), 1);\n scheduleUpdate();\n };\n },\n update: scheduleUpdate,\n getWidgets: function getWidgets() {\n return widgets;\n }\n };\n}","export default function createStore(initialState) {\n var state = initialState;\n var listeners = [];\n return {\n getState: function getState() {\n return state;\n },\n setState: function setState(nextState) {\n state = nextState;\n listeners.forEach(function (listener) {\n return listener();\n });\n },\n subscribe: function subscribe(listener) {\n listeners.push(listener);\n return function unsubscribe() {\n listeners.splice(listeners.indexOf(listener), 1);\n };\n }\n };\n}","import { getPropertyByPath } from \"./utils.js\";\nexport var HIGHLIGHT_TAGS = {\n highlightPreTag: \"\",\n highlightPostTag: \"\"\n};\n\n/**\n * Parses an highlighted attribute into an array of objects with the string value, and\n * a boolean that indicated if this part is highlighted.\n *\n * @param {string} preTag - string used to identify the start of an highlighted value\n * @param {string} postTag - string used to identify the end of an highlighted value\n * @param {string} highlightedValue - highlighted attribute as returned by Algolia highlight feature\n * @return {object[]} - An array of {value: string, isHighlighted: boolean}.\n */\nfunction parseHighlightedAttribute(_ref) {\n var preTag = _ref.preTag,\n postTag = _ref.postTag,\n _ref$highlightedValue = _ref.highlightedValue,\n highlightedValue = _ref$highlightedValue === void 0 ? '' : _ref$highlightedValue;\n var splitByPreTag = highlightedValue.split(preTag);\n var firstValue = splitByPreTag.shift();\n var elements = firstValue === '' ? [] : [{\n value: firstValue,\n isHighlighted: false\n }];\n if (postTag === preTag) {\n var isHighlighted = true;\n splitByPreTag.forEach(function (split) {\n elements.push({\n value: split,\n isHighlighted: isHighlighted\n });\n isHighlighted = !isHighlighted;\n });\n } else {\n splitByPreTag.forEach(function (split) {\n var splitByPostTag = split.split(postTag);\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 }\n return elements;\n}\n\n/**\n * Find an highlighted attribute given an `attribute` and an `highlightProperty`, parses it,\n * and provided an array of objects with the string value and a boolean if this\n * value is highlighted.\n *\n * In order to use this feature, highlight must be activated in the configuration of\n * the index. The `preTag` and `postTag` attributes are respectively highlightPreTag and\n * highlightPostTag in Algolia configuration.\n *\n * @param {string} preTag - string used to identify the start of an highlighted value\n * @param {string} postTag - string used to identify the end of an highlighted value\n * @param {string} highlightProperty - the property that contains the highlight structure in the results\n * @param {string} attribute - the highlighted attribute to look for\n * @param {object} hit - the actual hit returned by Algolia.\n * @return {object[]} - An array of {value: string, isHighlighted: boolean}.\n */\nexport function parseAlgoliaHit(_ref2) {\n var _ref2$preTag = _ref2.preTag,\n preTag = _ref2$preTag === void 0 ? '' : _ref2$preTag,\n _ref2$postTag = _ref2.postTag,\n postTag = _ref2$postTag === void 0 ? '' : _ref2$postTag,\n highlightProperty = _ref2.highlightProperty,\n attribute = _ref2.attribute,\n hit = _ref2.hit;\n if (!hit) throw new Error('`hit`, the matching record, must be provided');\n var highlightObject = getPropertyByPath(hit[highlightProperty], attribute) || {};\n if (Array.isArray(highlightObject)) {\n return highlightObject.map(function (item) {\n return parseHighlightedAttribute({\n preTag: preTag,\n postTag: postTag,\n highlightedValue: item.value\n });\n });\n }\n return parseHighlightedAttribute({\n preTag: preTag,\n postTag: postTag,\n highlightedValue: highlightObject.value\n });\n}","export default '6.40.1';","var _excluded = [\"resultsFacetValues\"],\n _excluded2 = [\"resultsFacetValues\"],\n _excluded3 = [\"resultsFacetValues\"];\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport algoliasearchHelper from 'algoliasearch-helper';\nimport createWidgetsManager from \"./createWidgetsManager.js\";\nimport createStore from \"./createStore.js\";\nimport { HIGHLIGHT_TAGS } from \"./highlight.js\";\nimport { hasMultipleIndices } from \"./indexUtils.js\";\nimport { version as ReactVersion } from 'react';\nimport version from \"./version.js\";\nfunction addAlgoliaAgents(searchClient) {\n if (typeof searchClient.addAlgoliaAgent === 'function') {\n searchClient.addAlgoliaAgent(\"react (\".concat(ReactVersion, \")\"));\n searchClient.addAlgoliaAgent(\"react-instantsearch (\".concat(version, \")\"));\n }\n}\nvar isMultiIndexContext = function isMultiIndexContext(widget) {\n return hasMultipleIndices({\n ais: widget.props.contextValue,\n multiIndexContext: widget.props.indexContextValue\n });\n};\nvar isTargetedIndexEqualIndex = function isTargetedIndexEqualIndex(widget, indexId) {\n return widget.props.indexContextValue.targetedIndex === indexId;\n};\n\n// Relying on the `indexId` is a bit brittle to detect the `Index` widget.\n// Since it's a class we could rely on `instanceof` or similar. We never\n// had an issue though. Works for now.\nvar isIndexWidget = function isIndexWidget(widget) {\n return Boolean(widget.props.indexId);\n};\nvar isIndexWidgetEqualIndex = function isIndexWidgetEqualIndex(widget, indexId) {\n return widget.props.indexId === indexId;\n};\nvar sortIndexWidgetsFirst = function sortIndexWidgetsFirst(firstWidget, secondWidget) {\n var isFirstWidgetIndex = isIndexWidget(firstWidget);\n var isSecondWidgetIndex = isIndexWidget(secondWidget);\n if (isFirstWidgetIndex && !isSecondWidgetIndex) {\n return -1;\n }\n if (!isFirstWidgetIndex && isSecondWidgetIndex) {\n return 1;\n }\n return 0;\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\n/**\n * Creates a new instance of the InstantSearchManager which controls the widgets and\n * trigger the search when the widgets are updated.\n * @param {string} indexName - the main index name\n * @param {object} initialState - initial widget state\n * @param {object} SearchParameters - optional additional parameters to send to the algolia API\n * @param {number} stalledSearchDelay - time (in ms) after the search is stalled\n * @return {InstantSearchManager} a new instance of InstantSearchManager\n */\nexport default function createInstantSearchManager(_ref) {\n var indexName = _ref.indexName,\n _ref$initialState = _ref.initialState,\n initialState = _ref$initialState === void 0 ? {} : _ref$initialState,\n searchClient = _ref.searchClient,\n resultsState = _ref.resultsState,\n stalledSearchDelay = _ref.stalledSearchDelay;\n var helper = algoliasearchHelper(searchClient, indexName, _objectSpread({}, HIGHLIGHT_TAGS));\n addAlgoliaAgents(searchClient);\n helper.on('search', handleNewSearch).on('result', handleSearchSuccess({\n indexId: indexName\n })).on('error', handleSearchError);\n var skip = false;\n var stalledSearchTimer = null;\n var initialSearchParameters = helper.state;\n var searchCounter;\n var widgetsManager = createWidgetsManager(onWidgetsUpdate);\n hydrateSearchClient(searchClient, resultsState);\n var store = createStore({\n widgets: initialState,\n metadata: hydrateMetadata(resultsState),\n results: hydrateResultsState(resultsState),\n error: null,\n searching: false,\n isSearchStalled: true,\n searchingForFacetValues: false\n });\n function skipSearch() {\n skip = true;\n }\n function updateClient(client) {\n addAlgoliaAgents(client);\n helper.setClient(client);\n search();\n }\n function clearCache() {\n helper.clearCache();\n search();\n }\n function getMetadata(state) {\n return widgetsManager.getWidgets().filter(function (widget) {\n return Boolean(widget.getMetadata);\n }).map(function (widget) {\n return widget.getMetadata(state);\n });\n }\n function getSearchParameters() {\n var sharedParameters = widgetsManager.getWidgets().filter(function (widget) {\n return Boolean(widget.getSearchParameters);\n }).filter(function (widget) {\n return !isMultiIndexContext(widget) && !isIndexWidget(widget);\n }).reduce(function (res, widget) {\n return widget.getSearchParameters(res);\n }, initialSearchParameters);\n var mainParameters = widgetsManager.getWidgets().filter(function (widget) {\n return Boolean(widget.getSearchParameters);\n }).filter(function (widget) {\n var targetedIndexEqualMainIndex = isMultiIndexContext(widget) && isTargetedIndexEqualIndex(widget, indexName);\n var subIndexEqualMainIndex = isIndexWidget(widget) && isIndexWidgetEqualIndex(widget, indexName);\n return targetedIndexEqualMainIndex || subIndexEqualMainIndex;\n })\n // We have to sort the `Index` widgets first so the `index` parameter\n // is correctly set in the `reduce` function for the following widgets\n .sort(sortIndexWidgetsFirst).reduce(function (res, widget) {\n return widget.getSearchParameters(res);\n }, sharedParameters);\n var derivedIndices = widgetsManager.getWidgets().filter(function (widget) {\n return Boolean(widget.getSearchParameters);\n }).filter(function (widget) {\n var targetedIndexNotEqualMainIndex = isMultiIndexContext(widget) && !isTargetedIndexEqualIndex(widget, indexName);\n var subIndexNotEqualMainIndex = isIndexWidget(widget) && !isIndexWidgetEqualIndex(widget, indexName);\n return targetedIndexNotEqualMainIndex || subIndexNotEqualMainIndex;\n })\n // We have to sort the `Index` widgets first so the `index` parameter\n // is correctly set in the `reduce` function for the following widgets\n .sort(sortIndexWidgetsFirst).reduce(function (indices, widget) {\n var indexId = isMultiIndexContext(widget) ? widget.props.indexContextValue.targetedIndex : widget.props.indexId;\n var widgets = indices[indexId] || [];\n return _objectSpread(_objectSpread({}, indices), {}, _defineProperty({}, indexId, widgets.concat(widget)));\n }, {});\n var derivedParameters = Object.keys(derivedIndices).map(function (indexId) {\n return {\n parameters: derivedIndices[indexId].reduce(function (res, widget) {\n return widget.getSearchParameters(res);\n }, sharedParameters),\n indexId: indexId\n };\n });\n return {\n mainParameters: mainParameters,\n derivedParameters: derivedParameters\n };\n }\n function search() {\n if (!skip) {\n var _getSearchParameters = getSearchParameters(helper.state),\n mainParameters = _getSearchParameters.mainParameters,\n derivedParameters = _getSearchParameters.derivedParameters;\n searchCounter = derivedParameters.length + 1;\n\n // We have to call `slice` because the method `detach` on the derived\n // helpers mutates the value `derivedHelpers`. The `forEach` loop does\n // not iterate on each value and we're not able to correctly clear the\n // previous derived helpers (memory leak + useless requests).\n helper.derivedHelpers.slice().forEach(function (derivedHelper) {\n // Since we detach the derived helpers on **every** new search they\n // won't receive intermediate results in case of a stalled search.\n // Only the last result is dispatched by the derived helper because\n // they are not detached yet:\n //\n // - a -> main helper receives results\n // - ap -> main helper receives results\n // - app -> main helper + derived helpers receive results\n //\n // The quick fix is to avoid to detach them on search but only once they\n // received the results. But it means that in case of a stalled search\n // all the derived helpers not detached yet register a new search inside\n // the helper. The number grows fast in case of a bad network and it's\n // not deterministic.\n derivedHelper.detach();\n });\n derivedParameters.forEach(function (_ref2) {\n var indexId = _ref2.indexId,\n parameters = _ref2.parameters;\n var derivedHelper = helper.derive(function () {\n return parameters;\n });\n derivedHelper.on('result', handleSearchSuccess({\n indexId: indexId\n })).on('error', handleSearchError);\n });\n helper.setState(mainParameters);\n helper.search();\n }\n }\n function handleSearchSuccess(_ref3) {\n var indexId = _ref3.indexId;\n return function (event) {\n searchCounter--;\n var state = store.getState();\n var isDerivedHelpersEmpty = !helper.derivedHelpers.length;\n var results = state.results ? state.results : {};\n\n // Switching from mono index to multi index and vice versa must reset the\n // results to an empty object, otherwise we keep reference of stalled and\n // unused results.\n results = !isDerivedHelpersEmpty && results.getFacetByName ? {} : results;\n if (!isDerivedHelpersEmpty) {\n results = _objectSpread(_objectSpread({}, results), {}, _defineProperty({}, indexId, event.results));\n } else {\n results = event.results;\n }\n var currentState = store.getState();\n var nextIsSearchStalled = currentState.isSearchStalled;\n if (!helper.hasPendingRequests()) {\n clearTimeout(stalledSearchTimer);\n stalledSearchTimer = null;\n nextIsSearchStalled = false;\n }\n var resultsFacetValues = currentState.resultsFacetValues,\n partialState = _objectWithoutProperties(currentState, _excluded);\n store.setState(_objectSpread(_objectSpread({}, partialState), {}, {\n results: results,\n isSearchStalled: nextIsSearchStalled,\n searching: searchCounter > 0,\n error: null\n }));\n };\n }\n function handleSearchError(_ref4) {\n var error = _ref4.error;\n var currentState = store.getState();\n var nextIsSearchStalled = currentState.isSearchStalled;\n if (!helper.hasPendingRequests()) {\n clearTimeout(stalledSearchTimer);\n nextIsSearchStalled = false;\n }\n var resultsFacetValues = currentState.resultsFacetValues,\n partialState = _objectWithoutProperties(currentState, _excluded2);\n store.setState(_objectSpread(_objectSpread({}, partialState), {}, {\n isSearchStalled: nextIsSearchStalled,\n error: error,\n searching: false\n }));\n }\n function handleNewSearch() {\n if (!stalledSearchTimer) {\n stalledSearchTimer = setTimeout(function () {\n var _store$getState = store.getState(),\n resultsFacetValues = _store$getState.resultsFacetValues,\n partialState = _objectWithoutProperties(_store$getState, _excluded3);\n store.setState(_objectSpread(_objectSpread({}, partialState), {}, {\n isSearchStalled: true\n }));\n }, stalledSearchDelay);\n }\n }\n function hydrateSearchClient(client, results) {\n if (!results) {\n return;\n }\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\n if ((!client.transporter || client._cacheHydrated) && (!client._useCache || typeof client.addAlgoliaAgent !== 'function')) {\n return;\n }\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 (client.transporter && !client._cacheHydrated) {\n client._cacheHydrated = true;\n var baseMethod = client.search;\n client.search = function (requests) {\n for (var _len2 = arguments.length, methodArgs = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n methodArgs[_key2 - 1] = arguments[_key2];\n }\n var requestsWithSerializedParams = requests.map(function (request) {\n return _objectSpread(_objectSpread({}, request), {}, {\n params: serializeQueryParameters(request.params)\n });\n });\n return client.transporter.responsesCache.get({\n method: 'search',\n args: [requestsWithSerializedParams].concat(methodArgs)\n }, function () {\n return baseMethod.apply(void 0, [requests].concat(methodArgs));\n });\n };\n }\n if (Array.isArray(results.results)) {\n hydrateSearchClientWithMultiIndexRequest(client, results.results);\n return;\n }\n hydrateSearchClientWithSingleIndexRequest(client, results);\n }\n function hydrateSearchClientWithMultiIndexRequest(client, results) {\n // Algoliasearch API Client >= v4\n // Populate the cache with the data from the server\n if (client.transporter) {\n client.transporter.responsesCache.set({\n method: 'search',\n args: [results.reduce(function (acc, result) {\n return acc.concat(result.rawResults.map(function (request) {\n return {\n indexName: request.index,\n params: request.params\n };\n }));\n }, [])]\n }, {\n results: results.reduce(function (acc, result) {\n return acc.concat(result.rawResults);\n }, [])\n });\n return;\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 var key = \"/1/indexes/*/queries_body_\".concat(JSON.stringify({\n requests: results.reduce(function (acc, result) {\n return acc.concat(result.rawResults.map(function (request) {\n return {\n indexName: request.index,\n params: request.params\n };\n }));\n }, [])\n }));\n client.cache = _objectSpread(_objectSpread({}, client.cache), {}, _defineProperty({}, key, JSON.stringify({\n results: results.reduce(function (acc, result) {\n return acc.concat(result.rawResults);\n }, [])\n })));\n }\n function hydrateSearchClientWithSingleIndexRequest(client, results) {\n // Algoliasearch API Client >= v4\n // Populate the cache with the data from the server\n if (client.transporter) {\n client.transporter.responsesCache.set({\n method: 'search',\n args: [results.rawResults.map(function (request) {\n return {\n indexName: request.index,\n params: request.params\n };\n })]\n }, {\n results: results.rawResults\n });\n return;\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 var key = \"/1/indexes/*/queries_body_\".concat(JSON.stringify({\n requests: results.rawResults.map(function (request) {\n return {\n indexName: request.index,\n params: request.params\n };\n })\n }));\n client.cache = _objectSpread(_objectSpread({}, client.cache), {}, _defineProperty({}, key, JSON.stringify({\n results: results.rawResults\n })));\n }\n function hydrateResultsState(results) {\n if (!results) {\n return null;\n }\n if (Array.isArray(results.results)) {\n return results.results.reduce(function (acc, result) {\n return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, result._internalIndexId, new algoliasearchHelper.SearchResults(new algoliasearchHelper.SearchParameters(result.state), result.rawResults)));\n }, {});\n }\n return new algoliasearchHelper.SearchResults(new algoliasearchHelper.SearchParameters(results.state), results.rawResults);\n }\n\n // Called whenever a widget has been rendered with new props.\n function onWidgetsUpdate() {\n var metadata = getMetadata(store.getState().widgets);\n store.setState(_objectSpread(_objectSpread({}, store.getState()), {}, {\n metadata: metadata,\n searching: true\n }));\n\n // Since the `getSearchParameters` method of widgets also depends on props,\n // the result search parameters might have changed.\n search();\n }\n function transitionState(nextSearchState) {\n var searchState = store.getState().widgets;\n return widgetsManager.getWidgets().filter(function (widget) {\n return Boolean(widget.transitionState);\n }).reduce(function (res, widget) {\n return widget.transitionState(searchState, res);\n }, nextSearchState);\n }\n function onExternalStateUpdate(nextSearchState) {\n var metadata = getMetadata(nextSearchState);\n store.setState(_objectSpread(_objectSpread({}, store.getState()), {}, {\n widgets: nextSearchState,\n metadata: metadata,\n searching: true\n }));\n search();\n }\n function onSearchForFacetValues(_ref5) {\n var facetName = _ref5.facetName,\n query = _ref5.query,\n _ref5$maxFacetHits = _ref5.maxFacetHits,\n maxFacetHits = _ref5$maxFacetHits === void 0 ? 10 : _ref5$maxFacetHits;\n // The values 1, 100 are the min / max values that the engine accepts.\n // see: https://www.algolia.com/doc/api-reference/api-parameters/maxFacetHits\n var maxFacetHitsWithinRange = Math.max(1, Math.min(maxFacetHits, 100));\n store.setState(_objectSpread(_objectSpread({}, store.getState()), {}, {\n searchingForFacetValues: true\n }));\n helper.searchForFacetValues(facetName, query, maxFacetHitsWithinRange).then(function (content) {\n var _objectSpread7;\n store.setState(_objectSpread(_objectSpread({}, store.getState()), {}, {\n error: null,\n searchingForFacetValues: false,\n resultsFacetValues: _objectSpread(_objectSpread({}, store.getState().resultsFacetValues), {}, (_objectSpread7 = {}, _defineProperty(_objectSpread7, facetName, content.facetHits), _defineProperty(_objectSpread7, \"query\", query), _objectSpread7))\n }));\n }, function (error) {\n store.setState(_objectSpread(_objectSpread({}, store.getState()), {}, {\n searchingForFacetValues: false,\n error: error\n }));\n }).catch(function (error) {\n // Since setState is synchronous, any error that occurs in the render of a\n // component will be swallowed by this promise.\n // This is a trick to make the error show up correctly in the console.\n // See http://stackoverflow.com/a/30741722/969302\n setTimeout(function () {\n throw error;\n });\n });\n }\n function updateIndex(newIndex) {\n initialSearchParameters = initialSearchParameters.setIndex(newIndex);\n // No need to trigger a new search here as the widgets will also update and trigger it if needed.\n }\n\n function getWidgetsIds() {\n return store.getState().metadata.reduce(function (res, meta) {\n return typeof meta.id !== 'undefined' ? res.concat(meta.id) : res;\n }, []);\n }\n return {\n store: store,\n widgetsManager: widgetsManager,\n getWidgetsIds: getWidgetsIds,\n getSearchParameters: getSearchParameters,\n onSearchForFacetValues: onSearchForFacetValues,\n onExternalStateUpdate: onExternalStateUpdate,\n transitionState: transitionState,\n updateClient: updateClient,\n updateIndex: updateIndex,\n clearCache: clearCache,\n skipSearch: skipSearch\n };\n}\nfunction hydrateMetadata(resultsState) {\n if (!resultsState) {\n return [];\n }\n\n // add a value noop, which gets replaced once the widgets are mounted\n return resultsState.metadata.map(function (datum) {\n return _objectSpread(_objectSpread({\n value: function value() {\n return {};\n }\n }, datum), {}, {\n items: datum.items && datum.items.map(function (item) {\n return _objectSpread(_objectSpread({\n value: function value() {\n return {};\n }\n }, item), {}, {\n items: item.items && item.items.map(function (nestedItem) {\n return _objectSpread({\n value: function value() {\n return {};\n }\n }, nestedItem);\n })\n });\n })\n });\n });\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nexport function isMetadataEnabled() {\n return (typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === 'object' && _typeof(window.navigator) === 'object' && typeof window.navigator.userAgent === 'string' && window.navigator.userAgent.includes('Algolia Crawler') && _typeof(window.document) === 'object';\n}\nexport function getMetadataPayload(widgets, searchClient) {\n var internalProps = ['contextValue', 'indexContextValue'];\n var widgetsPayload = widgets.map(function (_ref) {\n var props = _ref.props,\n constructor = _ref.constructor;\n var _ref2 = constructor._connectorDesc || {},\n _ref2$defaultProps = _ref2.defaultProps,\n defaultProps = _ref2$defaultProps === void 0 ? {} : _ref2$defaultProps,\n _ref2$displayName = _ref2.displayName,\n displayName = _ref2$displayName === void 0 ? constructor.displayName : _ref2$displayName;\n return {\n displayName: displayName,\n $$type: constructor.$$type,\n $$widgetType: constructor.$$widgetType,\n params: Object.keys(props).filter(function (prop) {\n return !internalProps.includes(prop) && defaultProps[prop] !== props[prop] && props[prop] !== undefined;\n })\n };\n });\n var client = searchClient;\n var ua = client.transporter && client.transporter.userAgent ? client.transporter.userAgent.value : client._ua;\n return {\n ua: ua,\n widgets: widgetsPayload\n };\n}\nexport function injectMetadata(widgets, searchClient) {\n var payloadContainer = document.createElement('meta');\n var refNode = document.querySelector('head');\n payloadContainer.name = 'algolia:metadata';\n var payload = getMetadataPayload(widgets, searchClient);\n payloadContainer.content = JSON.stringify(payload);\n refNode.appendChild(payloadContainer);\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { Component, Children } from 'react';\nimport isEqual from 'react-fast-compare';\nimport PropTypes from 'prop-types';\nimport createInstantSearchManager from \"../core/createInstantSearchManager.js\";\nimport { InstantSearchProvider } from \"../core/context.js\";\nimport { isMetadataEnabled, injectMetadata } from \"../core/metadata.js\";\nfunction isControlled(props) {\n return Boolean(props.searchState);\n}\n\n/**\n * @description\n * `` is the root component of all React InstantSearch implementations.\n * It provides all the connected components (aka widgets) a means to interact\n * with the searchState.\n * @kind widget\n * @name \n * @requirements You will need to have an Algolia account to be able to use this widget.\n * [Create one now](https://www.algolia.com/users/sign_up).\n * @propType {string} indexName - Main index in which to search.\n * @propType {boolean} [refresh=false] - Flag to activate when the cache needs to be cleared so that the front-end is updated when a change occurs in the index.\n * @propType {object} [searchClient] - Provide a custom search client.\n * @propType {func} [onSearchStateChange] - Function to be called everytime a new search is done. Useful for [URL Routing](guide/Routing.html).\n * @propType {object} [searchState] - Object to inject some search state. Switches the InstantSearch component in controlled mode. Useful for [URL Routing](guide/Routing.html).\n * @propType {func} [createURL] - Function to call when creating links, useful for [URL Routing](guide/Routing.html).\n * @propType {SearchResults|SearchResults[]} [resultsState] - Use this to inject the results that will be used at first rendering. Those results are found by using the `findResultsState` function. Useful for [Server Side Rendering](guide/Server-side_rendering.html).\n * @propType {number} [stalledSearchDelay=200] - The amount of time before considering that the search takes too much time. The time is expressed in milliseconds.\n * @propType {{ Root: string|function, props: object }} [root] - Use this to customize the root element. Default value: `{ Root: 'div' }`\n * @example\n * import React from 'react';\n * import algoliasearch from 'algoliasearch/lite';\n * import { InstantSearch, SearchBox, Hits } from 'react-instantsearch-dom';\n *\n * const searchClient = algoliasearch(\n * 'latency',\n * '6be0576ff61c053d5f9a3225e2a90f76'\n * );\n *\n * const App = () => (\n * \n * \n * \n * \n * );\n */\nvar InstantSearch = /*#__PURE__*/function (_Component) {\n _inherits(InstantSearch, _Component);\n var _super = _createSuper(InstantSearch);\n function InstantSearch(props) {\n var _this;\n _classCallCheck(this, InstantSearch);\n _this = _super.call(this, props);\n _defineProperty(_assertThisInitialized(_this), \"cleanupTimerRef\", null);\n _defineProperty(_assertThisInitialized(_this), \"isUnmounting\", false);\n var instantSearchManager = createInstantSearchManager({\n indexName: _this.props.indexName,\n searchClient: _this.props.searchClient,\n initialState: _this.props.searchState || {},\n resultsState: _this.props.resultsState,\n stalledSearchDelay: _this.props.stalledSearchDelay\n });\n var contextValue = {\n store: instantSearchManager.store,\n widgetsManager: instantSearchManager.widgetsManager,\n mainTargetedIndex: _this.props.indexName,\n onInternalStateUpdate: _this.onWidgetsInternalStateUpdate.bind(_assertThisInitialized(_this)),\n createHrefForState: _this.createHrefForState.bind(_assertThisInitialized(_this)),\n onSearchForFacetValues: _this.onSearchForFacetValues.bind(_assertThisInitialized(_this)),\n onSearchStateChange: _this.onSearchStateChange.bind(_assertThisInitialized(_this)),\n onSearchParameters: _this.onSearchParameters.bind(_assertThisInitialized(_this))\n };\n _this.state = {\n isControlled: isControlled(_this.props),\n instantSearchManager: instantSearchManager,\n contextValue: contextValue\n };\n return _this;\n }\n _createClass(InstantSearch, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var prevIsControlled = isControlled(prevProps);\n if (prevIsControlled && !this.state.isControlled) {\n throw new Error(\"You can't switch from being controlled to uncontrolled\");\n }\n if (!prevIsControlled && this.state.isControlled) {\n throw new Error(\"You can't switch from being uncontrolled to controlled\");\n }\n if (this.props.refresh !== prevProps.refresh && this.props.refresh) {\n this.state.instantSearchManager.clearCache();\n }\n if (prevProps.indexName !== this.props.indexName) {\n this.state.instantSearchManager.updateIndex(this.props.indexName);\n }\n if (prevProps.searchClient !== this.props.searchClient) {\n this.state.instantSearchManager.updateClient(this.props.searchClient);\n }\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (this.cleanupTimerRef) {\n clearTimeout(this.cleanupTimerRef);\n this.cleanupTimerRef = null;\n }\n if (isMetadataEnabled()) {\n injectMetadata(this.state.instantSearchManager.widgetsManager.getWidgets(), this.props.searchClient);\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n var _this2 = this;\n this.cleanupTimerRef = setTimeout(function () {\n _this2.isUnmounting = true;\n _this2.state.instantSearchManager.skipSearch();\n });\n }\n }, {\n key: \"createHrefForState\",\n value: function createHrefForState(searchState) {\n searchState = this.state.instantSearchManager.transitionState(searchState);\n return this.state.isControlled && this.props.createURL ? this.props.createURL(searchState, this.getKnownKeys()) : '#';\n }\n }, {\n key: \"onWidgetsInternalStateUpdate\",\n value: function onWidgetsInternalStateUpdate(searchState) {\n searchState = this.state.instantSearchManager.transitionState(searchState);\n this.onSearchStateChange(searchState);\n if (!this.state.isControlled) {\n this.state.instantSearchManager.onExternalStateUpdate(searchState);\n }\n }\n }, {\n key: \"onSearchStateChange\",\n value: function onSearchStateChange(searchState) {\n if (this.props.onSearchStateChange && !this.isUnmounting) {\n this.props.onSearchStateChange(searchState);\n }\n }\n }, {\n key: \"onSearchParameters\",\n value: function onSearchParameters(getSearchParameters, context, props, getMetadata, displayName) {\n if (this.props.onSearchParameters) {\n var _searchState = this.props.searchState ? this.props.searchState : {};\n this.props.onSearchParameters(getSearchParameters, context, props, _searchState);\n }\n if (this.props.widgetsCollector) {\n var _searchState2 = this.props.searchState ? this.props.searchState : {};\n this.props.widgetsCollector({\n getSearchParameters: getSearchParameters,\n getMetadata: getMetadata,\n context: context,\n props: props,\n searchState: _searchState2,\n displayName: displayName\n });\n }\n }\n }, {\n key: \"onSearchForFacetValues\",\n value: function onSearchForFacetValues(searchState) {\n this.state.instantSearchManager.onSearchForFacetValues(searchState);\n }\n }, {\n key: \"getKnownKeys\",\n value: function getKnownKeys() {\n return this.state.instantSearchManager.getWidgetsIds();\n }\n }, {\n key: \"render\",\n value: function render() {\n if (Children.count(this.props.children) === 0) {\n return null;\n }\n return /*#__PURE__*/React.createElement(InstantSearchProvider, {\n value: this.state.contextValue\n }, this.props.children);\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n var nextIsControlled = isControlled(nextProps);\n var previousSearchState = prevState.instantSearchManager.store.getState().widgets;\n var nextSearchState = nextProps.searchState;\n if (nextIsControlled && !isEqual(previousSearchState, nextSearchState)) {\n prevState.instantSearchManager.onExternalStateUpdate(nextProps.searchState);\n }\n return {\n isControlled: nextIsControlled,\n contextValue: _objectSpread(_objectSpread({}, prevState.contextValue), {}, {\n mainTargetedIndex: nextProps.indexName\n })\n };\n }\n }]);\n return InstantSearch;\n}(Component);\n_defineProperty(InstantSearch, \"defaultProps\", {\n stalledSearchDelay: 200,\n refresh: false\n});\n_defineProperty(InstantSearch, \"propTypes\", {\n // @TODO: These props are currently constant.\n indexName: PropTypes.string.isRequired,\n searchClient: PropTypes.shape({\n search: PropTypes.func.isRequired,\n searchForFacetValues: PropTypes.func,\n addAlgoliaAgent: PropTypes.func,\n clearCache: PropTypes.func\n }).isRequired,\n createURL: PropTypes.func,\n refresh: PropTypes.bool,\n searchState: PropTypes.object,\n onSearchStateChange: PropTypes.func,\n onSearchParameters: PropTypes.func,\n widgetsCollector: PropTypes.func,\n resultsState: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),\n children: PropTypes.node,\n stalledSearchDelay: PropTypes.number\n});\nexport default InstantSearch;"],"names":["EventEmitter","_events","_maxListeners","undefined","isFunction","arg","isObject","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","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","numberKeys","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","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","isAttributeValueDefined","findArray","currentValue","getRefinedDisjunctiveFacets","disjunctiveNumericRefinedFacets","getRefinedHierarchicalFacets","sort","getUnrefinedDisjunctiveFacets","refinedFacets","managedParameters","getQueryParams","queryParams","paramValue","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","hierarchicalTree","currentHierarchicalLevel","parent","level","data","subtree","picked","facetValue","tuple","parentPath","orderBy","facetCount","parts","unescapeFacetValue","escapedValue","escapeFacetValue","count","fv","compact","findIndex","formatSort","mergeNumericMax","generateHierarchicalTree","getIndices","attributes","indices","idx","assignFacetStats","dest","facetStats","stats","options","mainSubResponse","persistHierarchicalRootCount","processingTimeMS","sum","result","facetsIndices","disjunctiveFacetsIndices","nextDisjunctiveResult","mainFacets","facetKey","facetValueObject","facetNames","facetIndex","idxAttributeName","exhaustiveFacetsCount","isFacetDisjunctive","isFacetConjunctive","facets_stats","disjunctiveFacet","dfacet","facetResults","attributeIndex","dataFromMainRequest","refinedFacet","defaultData","root","excludes","getFacetStatsIfAvailable","getRefinement","attributeName","resultsFacets","getFacetByName","predicate","DEFAULT_SORT","getFacetValues","facetValues","extractNormalizedFacetValues","isExcluded","hierarchicalFacetValues","replace","currentRefinementSplit","unshift","setIsRefined","item","depth","child","facetOrdering","config","recSort","sortFn","node","names","children","childNode","order","ordering","orderedFacets","remainingFacets","hide","reverseOrder","sortRemainingBy","renderingContent","hidden","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","catch","_originalResponse","e","findAnswers","derivedHelper","Promise","resolve","derivedState","attributesForPrediction","nbHits","errorMessage","initIndex","queryLanguages","searchForFacetValues","maxFacetHits","userState","searchForFacetValuesPromise","clientHasSFFV","searchForFacets","clientHasInitIndex","isDisjunctive","algoliaQuery","getSearchForFacetQuery","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","conjRefinements","r","excludeRefinements","disjunctiveRefinements","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","event","clearCache","newClient","getClient","derive","pos","hasPendingRequests","array","sources","reduceRight","source","String","comparator","arr","defaults","defaultInstructions","out","sortInstruction","matchingDefault","defaultInstruction","ctor","superCtor","create","enumerable","writable","configurable","arr1","arr2","isObjectOrArrayOrFunction","target","l","_merge","hasOwnProperty","sourceVal","targetVal","accValue","sourceValue","obj","excluded","sourceKeys","collection","iteratees","orders","criteria","iteratee","object","other","compareAscending","valIsDefined","valIsNull","othIsDefined","othIsNull","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","nrOfObjs","avgIndices","indexTracker","hit","objectID","indexSum","sortedAverageIndices","avgOfIndices","orderedHits","avgIndexRef","getOwnPropertySymbols","getOwnPropertyDescriptor","defineProperty","getOwnPropertyDescriptors","defineProperties","o","propertyIsEnumerable","Symbol","iterator","u","next","done","return","from","serializable","get","miss","parse","set","delete","clear","c","headers","WithinHeaders","queryParameters","WithinQueryParameters","setTimeout","Math","min","d","wait","all","h","p","encodeURIComponent","y","entries","timeout","cacheable","Read","Write","Any","O","status","lastUpdate","Date","now","w","protocol","url","accept","I","j","S","method","toLowerCase","userAgent","pop","message","transporterStackTrace","E","R","charAt","substr","connectTimeout","timeouts","connect","responseTimeout","request","host","triesLeft","onSuccess","onRetry","isTimedOut","logger","info","A","hostsCache","onFail","requester","send","getTimeout","statelessHosts","reverse","requestsCache","responsesCache","hosts","read","mappedRequestOptions","transporter","reject","write","C","U","z","J","F","H","M","B","batch","shouldStop","cursor","K","acl","tt","W","cluster","L","users","Q","clearExistingDictionaryEntries","requests","action","body","jt","taskID","G","operation","destination","ut","methods","waitTask","de","V","scope","he","Rules","_","Settings","X","Synonyms","Y","Z","$","et","rt","nt","at","ot","it","retrieveMappings","getClusters","appId","st","ct","ft","dt","lt","ht","pt","mt","yt","ue","gt","vt","bt","Pt","Ot","wt","It","xt","Dt","qt","St","se","_highlightResult","kt","ce","Tt","batchSize","taskIDs","objectIDs","Nt","Rt","forwardToReplicas","Et","At","Ct","Ut","zt","le","DeleteObject","Jt","Ft","Ht","Gt","Mt","Bt","paginate","ie","parseInt","nbPages","Kt","Wt","Lt","attributesToRetrieve","Qt","getVersion","Vt","_t","Xt","createIfNotExists","PartialUpdateObject","PartialUpdateObjectNoCreate","Yt","safe","autoGenerateObjectIDIfNotExist","random","substring","ee","Zt","ne","clearExistingRules","$t","oe","clearExistingSynonyms","te","AddObject","UpdateObject","re","ae","replaceExistingSynonyms","fe","ge","ve","fallbackParameters","be","Pe","Oe","we","Ie","xe","apiKey","XMLHttpRequest","open","setRequestHeader","abort","onreadystatechange","readyState","OPENED","clearTimeout","onerror","responseText","onload","debug","caches","shift","localStorage","window","getItem","setItem","timeToLive","fromEntries","timestamp","getTime","removeItem","T","add","getPersonalizationStrategy","setPersonalizationStrategy","region","multipleBatch","multipleGetObjects","multipleQueries","copyIndex","copySettings","copySynonyms","copyRules","moveIndex","listIndices","getLogs","listClusters","multipleSearchForFacetValues","getApiKey","addApiKey","listApiKeys","updateApiKey","deleteApiKey","restoreApiKey","assignUserID","assignUserIDs","getUserID","searchUserIDs","listUserIDs","getTopUserIDs","removeUserID","hasPendingMappings","clearDictionaryEntries","deleteDictionaryEntries","getDictionarySettings","getAppTask","replaceDictionaryEntries","saveDictionaryEntries","searchDictionaryEntries","setDictionarySettings","waitAppTask","customRequest","getObject","getObjects","saveObject","saveObjects","setSettings","getSettings","partialUpdateObject","partialUpdateObjects","deleteObject","deleteObjects","deleteBy","clearObjects","browseObjects","getObjectPosition","findObject","exists","saveSynonym","saveSynonyms","getSynonym","searchSynonyms","browseSynonyms","deleteSynonym","clearSynonyms","replaceAllObjects","replaceAllSynonyms","searchRules","getRule","deleteRule","saveRule","saveRules","replaceAllRules","browseRules","clearRules","initAnalytics","addABTest","getABTest","getABTests","stopABTest","deleteABTest","initPersonalization","initRecommendation","getFrequentlyBoughtTogether","getLookingSimilar","getRecommendedForYou","getRelatedProducts","getTrendingFacets","getTrendingItems","authMode","floor","clients","getSearchClient","algoliasearch","process","Constants","freeze","title","titleLevel","classNames","callToActionLink","callToActionLabel","description","disclaimer","disclaimerReference","eyebrow","backgroundAsset","mobileBackgroundAsset","anchorId","hashChange","resize","close","play","mobile","desktop","chevronRight","blue","smooth","backgroundImage","mainAsset","empty","blocks","submit","json","typeLD","product","whiteText","white","top","primaryColor","scroll","ratingSummary","button","chevronDown","chevronTop","wideChevronDown","thinChevronDown","itemType","text","small","medium","large","h1","h2","keydown","Tab","Escape","touchmove","mediumLong","alreadyInUse","brand","pathDelimiter","blank","oralCareTopicQuestion","collectionHeroSection","collectionHeroSectionCta","titleLinkName","kidsProductCategory","optinIdx","tabWidthStart","desktopViewStart","ESCAPE_KEY_CODE","optins","autoComplete","aboutReviews","Loading","breadcrumb","rolePresentation","PrivacyLinkPlaceholder","AdChoicesLinkPlaceholder","breadCrumpLabel","SocialMediaIcons","PrePurchaseConstants","jebbitData","infoIcon","minus6","plus","modes","accessories","MAX_COL_DESKTOP","MAX_COL_MOBILE","customerReviwew","buyNowCta","master","inlineRating","row","table","rowheader","columnheader","cell","ProductName","altTextPrefixFeatureImage","noSlug","QUERY_PARAM_PRODUCT1","QUERY_PARAM_PRODUCT2","QUERY_PARAM_PRODUCT3","writeAReviewQueryParam","writeAReviewQueryParamValue","WAR_CTA_ID","WAR_CTA_CLICK_TIMEOUT","sectionId","CENTER_ALGN_TIMEOUT","WAR_REVIEW_LALBEL_UPDATE_TIMEOUT","compareResultSectionMobileViewClass","scrollYOffset","reviewDetailContainerClass","dataActionDetail","typeOnchange","typeOnBlur","ariaLabel","PostPurchaseConstants","promoCode","campaignPath","registerPath","voucherCountPath","voucherIdKey","dropBtnClass","dropdownContant","dropdownClass","WAR_POP_ID","OrganizationConstants","parentOrganization","CampaignIframeOverlayConstants","localStorageIntersistialPopUp","disableIntersistialPopUpCookie","isEnableCampaignOverlay","email","expiryHours","TermConditions","startSurveyEvent","closeSurveyEvent","completeSurveyEvent","customEvent","eventCategory","eventLabel","eventCloseCategory","eventCloseAction","eventCloseLabelWithoutNoResponse","eventCloseLabelWithSurveyResponse","eventRegisterLabel","questionSurveyLabel","questionSurveyAction","eventCloseLabelWithEmailResponse","AdditionalReadingBlockConstants","additionalReadingBlock","articleLink","AnnouncementBarConstants","disableDays","AnnouncementBarDisableDate","closeAriaLabel","ctaName","AppDownloadBlockConstants","downloadLinks","ArticleCategoryHeroBlockConstants","ctas","mobileAsset","textToTheRight","backgroundColor","callToActionAriaLabel","ArticleHeroBlockConstants","readTimeLabel","articleBanner","lazyIndexArticle","ImageConstants","defaultImageWindWidth","defaultWidth","defaultDesktopWidth","dpr_1440","mobile_max_width","desktop_min_width","facebookLabel","twitterLabel","closeOverlayLabel","BrushConfiguratorConstants","dataName","center","features","live","off","ButtonTabsNavigationConstant","replacementBrushHead","panel","tab","tablist","link","IconsConstant","role","iconOne","iconTwo","obIconRoundedContainer","labelConstant","reviewLabel","CharacterBlockConstants","mobileBackgroundImage","characterLogo","mobileCharacterLogo","maxWidth","CollectionTabsBlockConstants","hash","ComparisonChartBlockConstants","noValueLabel","jumpToConfiguratorLink","jumpToConfiguratorTitle","eventData","ContactUsBlockConstants","contactUs","ContentConstants","playing","pause","pauseLabel","playLabel","resetLabel","openTranscriptLabel","closeTranscriptLabel","ended","Src","Dest","x","White","transparentWithBorder","blueBorderBtn","primaryGrey","callToActionTitle","surtitle","callToActionIsALink","textContainerBackgroundColor","textContainerBackgroundOpacity","textContainerHasPadding","blueEyebrow","textsImage","cloudinaryVideo","devicesConfigurations","deviceConfigurations","isMedium","blockMinHeight","blockMarginTop","blockMarginBottom","blockMarginRight","blockMarginLeft","blockPadding","textAlign","textContainerWidth","titleWidth","descriptionWidth","textContainerHorizontalAlignment","textContainerVerticalAlignment","textContainerOffset","textContainerMarginRight","textContainerMarginLeft","textContainerMarginBottom","mainAssetBelowOrAboveText","mainAssetMaxWidth","mainAssetMaxHeight","mainAssetHeight","mainAssetMarginTop","mainAssetMarginRight","mainAssetOffsetBottom","mainAssetOffsetLeft","mainAssetScale","mainAssetHorizontalAlignment","mainAssetVerticalAlignment","backgroundPosition","sectionOffsetTop","mainAssetParallax","mainAssetParallaxSetting","textParallax","textParallaxSetting","textParallaxConfiguration","assetParallaxConfiguration","textShowAnimation","textFadeIn","textColor","respectImageAspectRatio","titleFontSize","ctaBackgroundColor","aboveText","belowText","hasDivider","isRemoveParallax","defaultWindWidth","contentOptions","contentOptionClassName","googlePlayIcon","appStoreIcon","noteText","textAlignBottomMobileView","mobileWidth","reviewModule","reset","gaEventClass","ContentVideoConstants","mobileLayout","desktopLayout","textContainerMarginTop","playIconColor","closeLabel","whiteHexThreeChars","whiteHexFull","playIcon","textImage","youtubeVideoBlock","awardItemLogo","FAQBlockConstants","arrowRight","popularSentence","searchResultsTitle","obSupport","Previous","Next","of","FooterConstants","copyright","copyrightAt","countryCode","lang","privacyLink","GalleryBlockConstants","cloudinaryImage","seeMoreButtonLabel","seeLessButtonLabel","full","InTheBoxBlockConstants","items","inTheBoxImage","LanguageSelectionConstants","regions","currentLanguage","jumpToLabel","closeLanguageSelectionLabel","countryLanguageSelection","LayoutConstants","zoneContestCode","zoneThankYouCode","paddingValue","paddingValueBreadcrumb","LegacyProductHighlightsConstants","isActive","seeLess","seeMore","highlights","plusSymbol","minusSymbol","arrowUp","arrowDown","prev","nearest","productRating","MainMenuConstants","mousedown","blur","Open","Close","productByNeed","productByType","whyOralB","conditions","lifeStages","ourAmbition","mainMenuLabel","hierarchy","hamburger","closeMenuLabel","openMenuLabel","searchLabel","returnToMainMenuLabel","arrowLeft","searchDataActionDetail","pullDown","collapsed","downArrow","expanded","expanding","escape","menubar","menuitem","menulist","menulistDesktop","languageLink","languageTabMobile","expandingMenu","closeButton","menu","capExpanded","capExpanding","capEscape","closeMainMenuAriaLabel","MarkdownTextConstants","script","MetaConstants","https","MiniNavigationConstants","backgroundGrey","href","ComponentFactoryConstants","Zone","Layout","Content","ContentVideo","RichText","RichTextLink","MarkdownText","MainMenu","Footer","LanguageSelection","PageNavigation","TabbedContent","AnnouncementBar","SideBySideContainer","SeriesSelector","MiniNavigation","PromoBlock","SpotlightSlider","SpotlightContentVideo","SpotlightContentBlock","SpotlightStickyBar","InTheBoxBlock","ProductGridBlock","CollectionTabsBlock","ProductHighlights","FeaturesTabBlock","BrandGuaranteeBlock","GalleryBlock","FAQBlock","BrushConfigurator","ComparisonChartBlock","UserQuoteBlock","SpotlightWaitlistBlock","SpotlightPreorderBlock","CollectionTabsDropdown","ProductSubNav","CharacterBlock","ProductRecommenderBlock","ShowcaseBlock","ArticleHeroBlock","SkipNavigationBlock","AppDownloadBlock","ArticleCategoryHeroBlock","RecentlyViewedProductsBlock","AdditionalReadingBlock","ProductOverlay","ErrorBlock","ArticleBody","CloudinaryImage","YoutubeVideo","ResponsiveImage","ContactUsBlock","LoginBlock","ForgotPasswordBlock","ResetPasswordBlock","CreateAccountBlock","RegisterTypeCodeBlock","PypestreamChat","SearchBlock","PressQuoteBlock","RegisterProductBlock","CongratulationsBlock","ProfileBlock","ChangePasswordBlock","Awards","LoginNavigationBlock","DesignedByDentist","LegacyArticleHeroBlock","ContentDetailsBlock","ConsentBlock","ThreeColumnsUserQuoteBlock","ArticlePopUp","ArticleShare","LegacyProductHighlightBlock","ArticleListBlock","ArticleTableBlock","SpotlightContestBlock","SpotlightContestThankYouBlock","ProductLegacyBody","FaqDetailsBlock","Disclaimer","ProductVariantsRecommanderBlock","SitemapBlock","SitemapPage","HTMLBlock","SpotlightExperienceBlock","DoubleOptInVerificationBlock","PostPurchaseRegisterForm","PrePurchase","PrePurchaseResult","PostPurchaseWriteReviewSection","mediaUpper","mediaLower","dprUpper","dprMedium","dprLower","BreadCrumbs","SwitchTab","ArticleSuggestion","ArticleBlock","ZoneConstants","zone","zoneSpotlightSliderBodyClassname","zoneSpotlightContestClassname","YoutubeVideoConstants","percent","VideoPlayerConstants","videoRecommendations","videoRatioVolume","descriptionButtonLowOpacity","descriptionButtonHighOpacity","domainHttp","UserQuoteConstants","authorName","quote","starRating","writeAReviewLabel","reviews","questions","itemProp","displayUserReviews","reviewSection","containerElement","UnderlineTabsNavigationConstants","childLabel","tabList","TabbedContentConstants","anchorName","StarRatingConstants","star","starEmpty","starHalf","SpotlightWaitlistConstants","failedToRegister","legalText","emailLimitExceedLabel","invalidLocaleLabel","serviceUnavailableLabel","formLabels","thankYouTitleLabel","thankYouBackgroundAsset","thankYouDescriptionLabel","thankYouCallToAction","thankYouCallToActionLink","thankYouCallToActionIconName","closeModalLabel","numberOfErrorsLabel","gcsCampaignParam","gcsLocaleParam","contentType","accessToken","system","countrySelectLabel","countrySelectList","countrySelectListDefaultOption","countrySelectErrorMessage","countrySelectMention","modalLabelFirst","modalLabelSecond","addressTypeCode","alternateThankYouTitleLabel","alternateThankYouDescriptionLabel","callToPreOrderActionLabel","callToPreOrderActionLink","implicitTCAgree","isInterstitialPopup","topicList","given","traitTrafficSourceValue","traiteValue","loader","interstitalSource","traitBrushTechnologyIdValue","transmitterSource","countryDropdownList","SpotlightContestConstants","contestTitle","signUpCallToActionLabel","formFields","oralBLogoAsset","backToOralbLink","ioLogoAsset","formOptinInputText","formOwnETBInputText","formLegalText","socialLinks","redirectDestination","copyrightLabel","GcsURL","continueReading","SpotlightVideoPlayerConstants","pgone","cloudinaryVideoPlayer","cloudinaryCore","inherit","never","sourceTypes","SpotlightStickyBarConstants","stickyBarClassName","scrollTo","logoLink","logo","SignUp","CallToActionLabel","SpotlightSliderConstants","scrollerContainer","continueReadingLabel","SpotlightPreorderConstants","preOrderButtonLabel","preOrderCallToAction","SpotlightExperienceConstants","experienceTitle","experienceFeatures","SpotlightExperienceProductConstants","SpotlightContentVideoConstants","introText","introLogo","defaultRight","defaultBottom","displaynone","nextFrameOnVideoEnd","introDurationSecond","playButtonColor","mobileFullSize","paused","played","auto","none","VideoId","spotlightPause","spotlightPlay","spotlightReplay","spotlightTranscript","SpotlightContentBlockConstants","textAlignment","secondaryAsset","additionalAssetList","refreshImageOnFrameChange","hasLink","textImageMobile","textImagePosition","textContent","bottom","SkipNavigationBlockConstants","label","targetID","roleMain","SideBySideContainerConstants","left","right","sideBySide","flipOnMobile","ShowcaseBlockConstants","sideImage","SeriesSelectorConstants","media","dpr","ProductOverviewConstant","SeriesTabsConstants","buttonRole","BuySeriesConstants","SeriesComparisonItemConstants","comingSoonText","commingSoonItem","SeeMoreButtonConstants","chevronLeft","errorMsg","crawlerTriggeredMsg","algoliaReducerConstants","SearchClicked","queryParm","searchStaticContent","hitsResponse","filerClicked","pageNoClicked","showAutocomplete","searchValue","isSpinning","totalPageNumber","filterItems","SearchBarConstants","searchText","maximumAutocompleteResults","searchTitle","common_search","SearchSuggestions","searchBarAriaLabel","eventAction","RotationConstants","mouseup","grabbing","grab","match","touch","RichTextConstants","ResponsiveImageConstants","tiny","tablet","RecentlyViewedProductsBlockConstants","show","fetch","four","PromoConstants","promo","subtitle","retailerText","retailerLogo","horizontalAlignment","ProductSubNavConstants","anchorClick","wheel","Collapsed","Collapsing","links","initialLoad","prepurchase","ProductOverlayConstants","noScroll","querySelectorAll","priceSpiderSource","priceSpiderConsoleLogMessageError","buyNowLiteErrorLabel","activateBuyNowLite","ProductHighlightsConstants","undefinedStr","ProductGridBlockConstants","one","two","seeMoreLabel","seeLessLabel","maxNumberInlineItems","radialBackground","background","removeLazyLoad","pageNavigation","placeholderTitleLabel","OnePageScrollConstants","scrollDisabled","onePageScrollWrapper","easeInOut","container","polite","querySelector","scrollDown","BazaarVoiceConstants","masterProductIdPrefix","masterProductNamePrefix","ArticleShareConstants","facebookAlt","twitterAlt","shareTitle","twitterIcon","facebookIcon","PypestreamChatConstants","persistentChatTriggered","PressQuoteBlockConstants","pressQuotes","pressLogo","animationGifAsset","iconArrowLeft","iconArrowRight","previousLabel","nextLabel","transparentWithBorders","SearchBlockConstants","queryHashName","queryHashEqual","faqStylePageLinks","faqStyleDropdown","allResultsCategory","pageCategory","collectionCategory","productCategory","articleCategory","faqCategory","CountryCode","Belgique","France","Deutschland","Schweiz","Nederland","Belgie","SearchServiceConstants","swiftypeBaseUrl","swiftypePath","swiftypeAutocompleteUrl","productListLocalStorageKeyPrefix","benefitListLocalStorageKeyPrefix","SvcApiConstants","ciamInstanceId","resendVerificationForm","unknownAccessToken","WarrantyExtensionConstants","oneCPId","UUID","programIdParam","categoryIdParam","localeParam","productId","internGroupValue","warrantyExtensionPath","getConsumerPath","getProductsByTypeCodePath","getCampaignInfoMaster","getproductListBySeries","gasPrimaryProductDetailKey","gasSecondaryProductDetailKey","primaryProductIndex","comboProductIndex","janrinProductIdDelimiter","janrinProfileOldestProductIndex","FaqDetailsBlockConstants","baseClass","swiftypeDocumentTypes","swiftypeAuth","specificSwiftypeDocument","generalSwiftypeDocument","RichTextLinkBlockConstants","image","linkType","className","GAclassName","BuyNowLiteConstants","accessControlAllowOrigin","xFunctionKey","passKey","ocpApimSubscriptionKey","ImageContenfullConstants","SignupFooterBlockConstants","ArticlePage","_regeneratorRuntime","require","_defineProperty","_classCallCheck","_createClass","_inherits","_possibleConstructorReturn","_getPrototypeOf","_asyncToGenerator","ownKeys","App","_interop_require_default","_jsxruntime","_react","_utils","appGetInitialProps","_x","_appGetInitialProps","mark","_callee","Component","ctx","pageProps","wrap","_context","loadGetInitialProps","sent","abrupt","stop","_react$default$Compon","hasNativeReflectConstruct","_super","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","valueOf","Super","_this$props","props","jsx","_objectSpread","origGetInitialProps","getInitialProps","__esModule","CustomApp","_App","searchClient","_jsx","InstantSearch","__webpack_exports__","__NEXT_P","ReactPropTypesSecret","emptyFunction","shim","propName","componentName","location","propFullName","secret","getShim","isRequired","ReactPropTypes","bool","func","string","symbol","any","arrayOf","element","instanceOf","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","hasElementType","Element","hasMap","Map","hasSet","Set","hasArrayBuffer","ArrayBuffer","isView","equal","size","has","RegExp","flags","$$typeof","instantSearchContext","react__WEBPACK_IMPORTED_MODULE_0__","createContext","onInternalStateUpdate","createHrefForState","onSearchForFacetValues","onSearchStateChange","onSearchParameters","store","widgetsManager","mainTargetedIndex","InstantSearchConsumer","Consumer","InstantSearchProvider","Provider","_createContext","IndexConsumer","refineValue","nextRefinement","namespace","hasMultipleIndices","targetedIndex","multiIndexContext","_objectSpread4","indexId","getIndexId","_typeof","enumerableOnly","symbols","sym","_toPrimitive","input","hint","prim","toPrimitive","Number","ais","getResults","searchResults","getNamespaceAndAttributeName","getCurrentRefinementValue","defaultValue","multiIndex","_getNamespaceAndAttri","_ref","_ref2","defaultRefinement","cleanUpValue","_ref4","indexSearchState","_ref3","_getNamespaceAndAttri2","_utils_js__WEBPACK_IMPORTED_MODULE_0__","CE","_toPropertyKey","hasOwn","shallowEqual","objA","objB","keysA","keysB","getDisplayName","displayName","resolved","defer","removeEmptyKey","addAbsolutePositions","__position","addQueryID","queryID","__queryID","HIGHLIGHT_TAGS","_excluded","_excluded2","_excluded3","_objectWithoutProperties","_objectWithoutPropertiesLoose","sourceSymbolKeys","addAlgoliaAgents","react","isMultiIndexContext","widget","indexUtils","Ei","contextValue","indexContextValue","isTargetedIndexEqualIndex","isIndexWidget","isIndexWidgetEqualIndex","sortIndexWidgetsFirst","firstWidget","secondWidget","isFirstWidgetIndex","isSecondWidgetIndex","metadata_typeof","InstantSearch_typeof","InstantSearch_ownKeys","InstantSearch_objectSpread","InstantSearch_defineProperty","_defineProperties","descriptor","InstantSearch_toPropertyKey","_setPrototypeOf","setPrototypeOf","__proto__","_assertThisInitialized","getPrototypeOf","InstantSearch_toPrimitive","isControlled","_Component","subClass","superClass","protoProps","staticProps","Constructor","_this","instantSearchManager","createInstantSearchManager","searchCounter","_ref$initialState","initialState","resultsState","stalledSearchDelay","algoliasearch_helper_default","stalledSearchTimer","_store$getState","getState","resultsFacetValues","isSearchStalled","handleSearchSuccess","handleSearchError","skip","initialSearchParameters","createWidgetsManager","onWidgetsUpdate","widgets","scheduled","scheduleUpdate","utils","PQ","registerWidget","update","getWidgets","metadata","getMetadata","searching","hydrateSearchClient","_cacheHydrated","_useCache","baseMethod","_len2","methodArgs","_key2","requestsWithSerializedParams","encode","format","_len","_key","isObjectOrArray","hydrateSearchClientWithMultiIndexRequest","rawResults","hydrateSearchClientWithSingleIndexRequest","datum","nestedItem","_internalIndexId","searchingForFacetValues","nextState","subscribe","getSearchParameters","sharedParameters","mainParameters","targetedIndexEqualMainIndex","subIndexEqualMainIndex","derivedIndices","targetedIndexNotEqualMainIndex","subIndexNotEqualMainIndex","derivedParameters","_getSearchParameters","isDerivedHelpersEmpty","nextIsSearchStalled","getWidgetsIds","meta","_ref5","_ref5$maxFacetHits","max","_objectSpread7","onExternalStateUpdate","nextSearchState","transitionState","updateClient","updateIndex","newIndex","skipSearch","onWidgetsInternalStateUpdate","prevProps","prevIsControlled","refresh","cleanupTimerRef","navigator","includes","document","payloadContainer","refNode","internalProps","widgetsPayload","payload","createElement","_connectorDesc","_ref2$defaultProps","defaultProps","_ref2$displayName","$$type","$$widgetType","prop","ua","_ua","appendChild","_this2","isUnmounting","createURL","getKnownKeys","_searchState","widgetsCollector","_searchState2","Children","tJ","nextProps","prevState","nextIsControlled","previousSearchState","react_fast_compare_default","prop_types_default","widgets_InstantSearch"],"sourceRoot":""}