{"version":3,"file":"react-instantsearch-core-BRBHSKmq.js","sources":["../../../node_modules/react-instantsearch-core/node_modules/@babel/runtime/helpers/esm/extends.js","../../../node_modules/react-instantsearch-core/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../../node_modules/react-instantsearch-core/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../../../node_modules/react-instantsearch-core/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../../../node_modules/react-instantsearch-core/node_modules/@babel/runtime/helpers/esm/createClass.js","../../../node_modules/react-instantsearch-core/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../../../node_modules/react-instantsearch-core/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../../../node_modules/react-instantsearch-core/node_modules/@babel/runtime/helpers/esm/inherits.js","../../../node_modules/react-instantsearch-core/node_modules/@babel/runtime/helpers/esm/typeof.js","../../../node_modules/react-instantsearch-core/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../../../node_modules/react-instantsearch-core/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../../../node_modules/react-instantsearch-core/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../../../node_modules/react-instantsearch-core/dist/es/core/utils.js","../../../node_modules/react-instantsearch-core/dist/es/core/context.js","../../../node_modules/react-instantsearch-core/dist/es/core/createConnector.js","../../../node_modules/react-instantsearch-core/dist/es/core/highlight.js","../../../node_modules/react-instantsearch-core/dist/es/core/version.js","../../../node_modules/react-instantsearch-core/dist/es/core/indexUtils.js","../../../node_modules/react-instantsearch-core/dist/es/connectors/connectConfigure.js","../../../node_modules/react-instantsearch-core/dist/es/widgets/Configure.js","../../../node_modules/react-instantsearch-core/dist/es/core/createWidgetsManager.js","../../../node_modules/react-instantsearch-core/dist/es/core/createStore.js","../../../node_modules/react-instantsearch-core/dist/es/core/createInstantSearchManager.js","../../../node_modules/react-instantsearch-core/dist/es/core/metadata.js","../../../node_modules/react-instantsearch-core/dist/es/widgets/InstantSearch.js","../../../node_modules/react-instantsearch-core/dist/es/connectors/connectHits.js","../../../node_modules/react-instantsearch-core/dist/es/connectors/connectPagination.js","../../../node_modules/react-instantsearch-core/dist/es/connectors/connectPoweredBy.js","../../../node_modules/react-instantsearch-core/dist/es/connectors/connectRefinementList.js","../../../node_modules/react-instantsearch-core/dist/es/connectors/connectScrollTo.js","../../../node_modules/react-instantsearch-core/dist/es/connectors/connectSearchBox.js","../../../node_modules/react-instantsearch-core/dist/es/connectors/connectStateResults.js","../../../node_modules/react-instantsearch-core/dist/es/connectors/connectStats.js"],"sourcesContent":["export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","import _typeof from \"@babel/runtime/helpers/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\n\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; }\n\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; }\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\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n } // Test for A's keys different from B.\n\n\n var hasOwn = Object.prototype.hasOwnProperty;\n\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\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};\n\nvar isPlainObject = function isPlainObject(value) {\n return _typeof(value) === 'object' && value !== null && !Array.isArray(value);\n};\n\nexport var removeEmptyKey = function removeEmptyKey(obj) {\n Object.keys(obj).forEach(function (key) {\n var value = obj[key];\n\n if (!isPlainObject(value)) {\n return;\n }\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\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\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\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}\nexport function objectHasKeys(object) {\n return object && Object.keys(object).length > 0;\n} // https://github.com/babel/babel/blob/3aaafae053fa75febb3aa45d45b6f00646e30ba4/packages/babel-helpers/src/helpers.js#L604-L620\n\nexport function omit(source, excluded) {\n if (source === null || source === undefined) {\n return {};\n }\n\n var target = {};\n var sourceKeys = Object.keys(source);\n\n for (var i = 0; i < sourceKeys.length; i++) {\n var _key = sourceKeys[i];\n\n if (excluded.indexOf(_key) >= 0) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n target[_key] = source[_key];\n }\n\n return target;\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 */\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}","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 };\n\nvar _createContext = /*#__PURE__*/createContext(undefined),\n IndexConsumer = _createContext.Consumer,\n IndexProvider = _createContext.Provider;\n\nexport { IndexConsumer, IndexProvider };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar _excluded = [\"contextValue\"];\n\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; }\n\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; }\n\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); }; }\n\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; } }\n\nimport React, { Component } from 'react';\nimport isEqual from 'react-fast-compare';\nimport { shallowEqual, getDisplayName, removeEmptyKey } from \"./utils.js\";\nimport { InstantSearchConsumer, IndexConsumer } from \"./context.js\";\n\n/**\n * Connectors are the HOC used to transform React components\n * into InstantSearch widgets.\n * In order to simplify the construction of such connectors\n * `createConnector` takes a description and transform it into\n * a connector.\n * @param {ConnectorDescription} connectorDesc the description of the connector\n * @return {Connector} a function that wraps a component into\n * an instantsearch connected one.\n */\nexport function createConnectorWithoutContext(connectorDesc) {\n if (!connectorDesc.displayName) {\n throw new Error('`createConnector` requires you to provide a `displayName` property.');\n }\n\n var isWidget = typeof connectorDesc.getSearchParameters === 'function' || typeof connectorDesc.getMetadata === 'function' || typeof connectorDesc.transitionState === 'function';\n return function (Composed) {\n var Connector = /*#__PURE__*/function (_Component) {\n _inherits(Connector, _Component);\n\n var _super = _createSuper(Connector);\n\n function Connector(props) {\n var _this;\n\n _classCallCheck(this, Connector);\n\n _this = _super.call(this, props);\n\n _defineProperty(_assertThisInitialized(_this), \"unsubscribe\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"unregisterWidget\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"isUnmounting\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n providedProps: _this.getProvidedProps(_this.props)\n });\n\n _defineProperty(_assertThisInitialized(_this), \"refine\", function () {\n var _ref;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this.props.contextValue.onInternalStateUpdate( // refine will always be defined here because the prop is only given conditionally\n (_ref = connectorDesc.refine).call.apply(_ref, [_assertThisInitialized(_this), _this.props, _this.props.contextValue.store.getState().widgets].concat(args)));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"createURL\", function () {\n var _ref2;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return _this.props.contextValue.createHrefForState( // refine will always be defined here because the prop is only given conditionally\n (_ref2 = connectorDesc.refine).call.apply(_ref2, [_assertThisInitialized(_this), _this.props, _this.props.contextValue.store.getState().widgets].concat(args)));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"searchForFacetValues\", function () {\n var _ref3;\n\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n _this.props.contextValue.onSearchForFacetValues( // searchForFacetValues will always be defined here because the prop is only given conditionally\n (_ref3 = connectorDesc.searchForFacetValues).call.apply(_ref3, [_assertThisInitialized(_this), _this.props, _this.props.contextValue.store.getState().widgets].concat(args)));\n });\n\n if (connectorDesc.getSearchParameters) {\n _this.props.contextValue.onSearchParameters(connectorDesc.getSearchParameters.bind(_assertThisInitialized(_this)), {\n ais: _this.props.contextValue,\n multiIndexContext: _this.props.indexContextValue\n }, _this.props, connectorDesc.getMetadata && connectorDesc.getMetadata.bind(_assertThisInitialized(_this)), connectorDesc.displayName);\n }\n\n return _this;\n }\n\n _createClass(Connector, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this;\n\n this.unsubscribe = this.props.contextValue.store.subscribe(function () {\n if (!_this2.isUnmounting) {\n _this2.setState({\n providedProps: _this2.getProvidedProps(_this2.props)\n });\n }\n });\n\n if (isWidget) {\n this.unregisterWidget = this.props.contextValue.widgetsManager.registerWidget(this);\n }\n }\n }, {\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps, nextState) {\n if (typeof connectorDesc.shouldComponentUpdate === 'function') {\n return connectorDesc.shouldComponentUpdate.call(this, this.props, nextProps, this.state, nextState);\n }\n\n var propsEqual = shallowEqual(this.props, nextProps);\n\n if (this.state.providedProps === null || nextState.providedProps === null) {\n if (this.state.providedProps === nextState.providedProps) {\n return !propsEqual;\n }\n\n return true;\n }\n\n return !propsEqual || !shallowEqual(this.state.providedProps, nextState.providedProps);\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n if (!isEqual(prevProps, this.props)) {\n this.setState({\n providedProps: this.getProvidedProps(this.props)\n });\n\n if (isWidget) {\n this.props.contextValue.widgetsManager.update();\n\n if (typeof connectorDesc.transitionState === 'function') {\n this.props.contextValue.onSearchStateChange(connectorDesc.transitionState.call(this, this.props, this.props.contextValue.store.getState().widgets, this.props.contextValue.store.getState().widgets));\n }\n }\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.isUnmounting = true;\n\n if (this.unsubscribe) {\n this.unsubscribe();\n }\n\n if (this.unregisterWidget) {\n this.unregisterWidget();\n\n if (typeof connectorDesc.cleanUp === 'function') {\n var nextState = connectorDesc.cleanUp.call(this, this.props, this.props.contextValue.store.getState().widgets);\n this.props.contextValue.store.setState(_objectSpread(_objectSpread({}, this.props.contextValue.store.getState()), {}, {\n widgets: nextState\n }));\n this.props.contextValue.onSearchStateChange(removeEmptyKey(nextState));\n }\n }\n }\n }, {\n key: \"getProvidedProps\",\n value: function getProvidedProps(props) {\n var _this$props$contextVa = this.props.contextValue.store.getState(),\n widgets = _this$props$contextVa.widgets,\n results = _this$props$contextVa.results,\n resultsFacetValues = _this$props$contextVa.resultsFacetValues,\n searching = _this$props$contextVa.searching,\n searchingForFacetValues = _this$props$contextVa.searchingForFacetValues,\n isSearchStalled = _this$props$contextVa.isSearchStalled,\n metadata = _this$props$contextVa.metadata,\n error = _this$props$contextVa.error;\n\n var searchResults = {\n results: results,\n searching: searching,\n searchingForFacetValues: searchingForFacetValues,\n isSearchStalled: isSearchStalled,\n error: error\n };\n return connectorDesc.getProvidedProps.call(this, props, widgets, searchResults, metadata, // @MAJOR: move this attribute on the `searchResults` it doesn't\n // makes sense to have it into a separate argument. The search\n // flags are on the object why not the results?\n resultsFacetValues);\n }\n }, {\n key: \"getSearchParameters\",\n value: function getSearchParameters(searchParameters) {\n if (typeof connectorDesc.getSearchParameters === 'function') {\n return connectorDesc.getSearchParameters.call(this, searchParameters, this.props, this.props.contextValue.store.getState().widgets);\n }\n\n return null;\n }\n }, {\n key: \"getMetadata\",\n value: function getMetadata(nextWidgetsState) {\n if (typeof connectorDesc.getMetadata === 'function') {\n return connectorDesc.getMetadata.call(this, this.props, nextWidgetsState);\n }\n\n return {};\n }\n }, {\n key: \"transitionState\",\n value: function transitionState(prevWidgetsState, nextWidgetsState) {\n if (typeof connectorDesc.transitionState === 'function') {\n return connectorDesc.transitionState.call(this, this.props, prevWidgetsState, nextWidgetsState);\n }\n\n return nextWidgetsState;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n contextValue = _this$props.contextValue,\n props = _objectWithoutProperties(_this$props, _excluded);\n\n var providedProps = this.state.providedProps;\n\n if (providedProps === null) {\n return null;\n }\n\n var refineProps = typeof connectorDesc.refine === 'function' ? {\n refine: this.refine,\n createURL: this.createURL\n } : {};\n var searchForFacetValuesProps = typeof connectorDesc.searchForFacetValues === 'function' ? {\n searchForItems: this.searchForFacetValues\n } : {};\n return /*#__PURE__*/React.createElement(Composed, _extends({}, props, providedProps, refineProps, searchForFacetValuesProps));\n }\n }]);\n\n return Connector;\n }(Component);\n\n _defineProperty(Connector, \"displayName\", \"\".concat(connectorDesc.displayName, \"(\").concat(getDisplayName(Composed), \")\"));\n\n _defineProperty(Connector, \"propTypes\", connectorDesc.propTypes);\n\n _defineProperty(Connector, \"defaultProps\", connectorDesc.defaultProps);\n\n _defineProperty(Connector, \"_connectorDesc\", connectorDesc);\n\n return Connector;\n };\n}\n\nvar createConnectorWithContext = function createConnectorWithContext(connectorDesc) {\n return function (Composed) {\n var Connector = createConnectorWithoutContext(connectorDesc)(Composed);\n\n var ConnectorWrapper = function ConnectorWrapper(props) {\n return /*#__PURE__*/React.createElement(InstantSearchConsumer, null, function (contextValue) {\n return /*#__PURE__*/React.createElement(IndexConsumer, null, function (indexContextValue) {\n return /*#__PURE__*/React.createElement(Connector, _extends({\n contextValue: contextValue,\n indexContextValue: indexContextValue\n }, props));\n });\n });\n };\n\n return ConnectorWrapper;\n };\n};\n\nexport default createConnectorWithContext;","import { getPropertyByPath } from \"./utils.js\";\nexport var HIGHLIGHT_TAGS = {\n highlightPreTag: \"\",\n highlightPostTag: \"\"\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 */\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\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\n if (splitByPostTag[1] !== '') {\n elements.push({\n value: splitByPostTag[1],\n isHighlighted: false\n });\n }\n });\n }\n\n return elements;\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 */\n\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\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\n return parseHighlightedAttribute({\n preTag: preTag,\n postTag: postTag,\n highlightedValue: highlightObject.value\n });\n}","export default '6.22.0';","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\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; }\n\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; }\n\nimport { omit } from \"./utils.js\";\nexport function getIndexId(context) {\n return hasMultipleIndices(context) ? context.multiIndexContext.targetedIndex : context.ais.mainTargetedIndex;\n}\n/**\n * @returns {import('algoliasearch-helper').SearchResults} results\n */\n\nexport function getResults(searchResults, context) {\n if (searchResults.results) {\n if (searchResults.results.hits) {\n return searchResults.results;\n }\n\n var indexId = getIndexId(context);\n\n if (searchResults.results[indexId]) {\n return searchResults.results[indexId];\n }\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\n return namespace ? refineSingleIndexWithNamespace(searchState, nextRefinement, resetPage, namespace) : refineSingleIndex(searchState, nextRefinement, resetPage);\n }\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}\n\nfunction refineSingleIndex(searchState, nextRefinement, resetPage) {\n var page = resetPage ? {\n page: 1\n } : undefined;\n return _objectSpread(_objectSpread(_objectSpread({}, searchState), nextRefinement), page);\n}\n\nfunction refineMultiIndexWithNamespace(searchState, nextRefinement, indexId, resetPage, namespace) {\n var _objectSpread4;\n\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}\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}\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}\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\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\n if (multiIndex) {\n return searchState.indices && searchState.indices[indexId] && Object.hasOwnProperty.call(searchState.indices[indexId], id);\n }\n\n if (namespace) {\n return searchState[namespace] && Object.hasOwnProperty.call(searchState[namespace], attributeName);\n }\n\n return Object.hasOwnProperty.call(searchState, id);\n}\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\n if (multiIndex && namespace) {\n return searchState.indices[indexId][namespace][attributeName];\n }\n\n if (multiIndex) {\n return searchState.indices[indexId][id];\n }\n\n if (namespace) {\n return searchState[namespace][attributeName];\n }\n\n return searchState[id];\n}\n\nexport function getCurrentRefinementValue(props, searchState, context, id, defaultValue) {\n var indexId = getIndexId(context);\n\n var _getNamespaceAndAttri = getNamespaceAndAttributeName(id),\n namespace = _getNamespaceAndAttri.namespace,\n attributeName = _getNamespaceAndAttri.attributeName;\n\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\n if (hasRefinementsValue) {\n return getRefinements(args);\n }\n\n if (props.defaultRefinement) {\n return props.defaultRefinement;\n }\n\n return defaultValue;\n}\nexport function cleanUpValue(searchState, context, id) {\n var indexId = getIndexId(context);\n\n var _getNamespaceAndAttri2 = getNamespaceAndAttributeName(id),\n namespace = _getNamespaceAndAttri2.namespace,\n attributeName = _getNamespaceAndAttri2.attributeName;\n\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\n return cleanUpValueWithSingleIndex({\n attribute: attributeName,\n searchState: searchState,\n id: id,\n namespace: namespace\n });\n}\n\nfunction cleanUpValueWithSingleIndex(_ref3) {\n var searchState = _ref3.searchState,\n id = _ref3.id,\n namespace = _ref3.namespace,\n attribute = _ref3.attribute;\n\n if (namespace) {\n return _objectSpread(_objectSpread({}, searchState), {}, _defineProperty({}, namespace, omit(searchState[namespace], [attribute])));\n }\n\n return omit(searchState, [id]);\n}\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\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\n if (indexSearchState) {\n return _objectSpread(_objectSpread({}, searchState), {}, {\n indices: _objectSpread(_objectSpread({}, searchState.indices), {}, _defineProperty({}, indexId, omit(indexSearchState, [id])))\n });\n }\n\n return searchState;\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"children\", \"contextValue\", \"indexContextValue\"],\n _excluded2 = [\"children\", \"contextValue\", \"indexContextValue\"];\n\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; }\n\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; }\n\nimport { omit } from \"../core/utils.js\";\nimport createConnector from \"../core/createConnector.js\";\nimport { refineValue, getIndexId, hasMultipleIndices } from \"../core/indexUtils.js\";\n\nfunction getId() {\n return 'configure';\n}\n\nexport default createConnector({\n displayName: 'AlgoliaConfigure',\n getProvidedProps: function getProvidedProps() {\n return {};\n },\n getSearchParameters: function getSearchParameters(searchParameters, props) {\n var children = props.children,\n contextValue = props.contextValue,\n indexContextValue = props.indexContextValue,\n items = _objectWithoutProperties(props, _excluded);\n\n return searchParameters.setQueryParameters(items);\n },\n transitionState: function transitionState(props, prevSearchState, nextSearchState) {\n var id = getId();\n\n var children = props.children,\n contextValue = props.contextValue,\n indexContextValue = props.indexContextValue,\n items = _objectWithoutProperties(props, _excluded2);\n\n var propKeys = Object.keys(props);\n var nonPresentKeys = this._props ? Object.keys(this._props).filter(function (prop) {\n return propKeys.indexOf(prop) === -1;\n }) : [];\n this._props = props;\n\n var nextValue = _defineProperty({}, id, _objectSpread(_objectSpread({}, omit(nextSearchState[id], nonPresentKeys)), items));\n\n return refineValue(nextSearchState, nextValue, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n });\n },\n cleanUp: function cleanUp(props, searchState) {\n var id = getId();\n var indexId = getIndexId({\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n });\n var subState = hasMultipleIndices({\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n }) && searchState.indices ? searchState.indices[indexId] : searchState;\n var configureKeys = subState && subState[id] ? Object.keys(subState[id]) : [];\n var configureState = configureKeys.reduce(function (acc, item) {\n if (!props[item]) {\n acc[item] = subState[id][item];\n }\n\n return acc;\n }, {});\n\n var nextValue = _defineProperty({}, id, configureState);\n\n return refineValue(searchState, nextValue, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n });\n }\n});","import connectConfigure from \"../connectors/connectConfigure.js\";\n/**\n * Configure is a widget that lets you provide raw search parameters\n * to the Algolia API.\n *\n * Any of the props added to this widget will be forwarded to Algolia. For more information\n * on the different parameters that can be set, have a look at the\n * [reference](https://www.algolia.com/doc/api-client/javascript/search#search-parameters).\n *\n * This widget can be used either with react-dom and react-native. It will not render anything\n * on screen, only configure some parameters.\n *\n * Read more in the [Search parameters](guide/Search_parameters.html) guide.\n * @name Configure\n * @kind widget\n * @example\n * import React from 'react';\n * import algoliasearch from 'algoliasearch/lite';\n * import { InstantSearch, Configure, 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 */\n\nexport default connectConfigure(function Configure() {\n return null;\n});","import { defer } from \"./utils.js\";\nexport default function createWidgetsManager(onWidgetsUpdate) {\n var widgets = []; // Is an update scheduled?\n\n var scheduled = false; // 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\n function scheduleUpdate() {\n if (scheduled) {\n return;\n }\n\n scheduled = true;\n defer(function () {\n scheduled = false;\n onWidgetsUpdate();\n });\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 _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar _excluded = [\"resultsFacetValues\"],\n _excluded2 = [\"resultsFacetValues\"],\n _excluded3 = [\"resultsFacetValues\"];\n\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; }\n\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; }\n\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\";\n\nfunction addAlgoliaAgents(searchClient) {\n if (typeof searchClient.addAlgoliaAgent === 'function') {\n searchClient.addAlgoliaAgent(\"react (\".concat(ReactVersion, \")\"));\n searchClient.addAlgoliaAgent(\"react-instantsearch (\".concat(version, \")\"));\n }\n}\n\nvar isMultiIndexContext = function isMultiIndexContext(widget) {\n return hasMultipleIndices({\n ais: widget.props.contextValue,\n multiIndexContext: widget.props.indexContextValue\n });\n};\n\nvar isTargetedIndexEqualIndex = function isTargetedIndexEqualIndex(widget, indexId) {\n return widget.props.indexContextValue.targetedIndex === indexId;\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.\n\n\nvar isIndexWidget = function isIndexWidget(widget) {\n return Boolean(widget.props.indexId);\n};\n\nvar isIndexWidgetEqualIndex = function isIndexWidgetEqualIndex(widget, indexId) {\n return widget.props.indexId === indexId;\n};\n\nvar sortIndexWidgetsFirst = function sortIndexWidgetsFirst(firstWidget, secondWidget) {\n var isFirstWidgetIndex = isIndexWidget(firstWidget);\n var isSecondWidgetIndex = isIndexWidget(secondWidget);\n\n if (isFirstWidgetIndex && !isSecondWidgetIndex) {\n return -1;\n }\n\n if (!isFirstWidgetIndex && isSecondWidgetIndex) {\n return 1;\n }\n\n return 0;\n}; // This function is copied from the algoliasearch v4 API Client. If modified,\n// consider updating it also in `serializeQueryParameters` from `@algolia/transporter`.\n\n\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\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\n var i = 0;\n return format.replace(/%s/g, function () {\n return encodeURIComponent(args[i++]);\n });\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 * 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 */\n\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 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\n function skipSearch() {\n skip = true;\n }\n\n function updateClient(client) {\n addAlgoliaAgents(client);\n helper.setClient(client);\n search();\n }\n\n function clearCache() {\n helper.clearCache();\n search();\n }\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\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 }) // 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 }) // 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\n function search() {\n if (!skip) {\n var _getSearchParameters = getSearchParameters(helper.state),\n mainParameters = _getSearchParameters.mainParameters,\n derivedParameters = _getSearchParameters.derivedParameters; // 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\n\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\n function handleSearchSuccess(_ref3) {\n var indexId = _ref3.indexId;\n return function (event) {\n var state = store.getState();\n var isDerivedHelpersEmpty = !helper.derivedHelpers.length;\n var results = state.results ? state.results : {}; // 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\n results = !isDerivedHelpersEmpty && results.getFacetByName ? {} : results;\n\n if (!isDerivedHelpersEmpty) {\n results = _objectSpread(_objectSpread({}, results), {}, _defineProperty({}, indexId, event.results));\n } else {\n results = event.results;\n }\n\n var currentState = store.getState();\n var nextIsSearchStalled = currentState.isSearchStalled;\n\n if (!helper.hasPendingRequests()) {\n clearTimeout(stalledSearchTimer);\n stalledSearchTimer = null;\n nextIsSearchStalled = false;\n }\n\n var resultsFacetValues = currentState.resultsFacetValues,\n partialState = _objectWithoutProperties(currentState, _excluded);\n\n store.setState(_objectSpread(_objectSpread({}, partialState), {}, {\n results: results,\n isSearchStalled: nextIsSearchStalled,\n searching: false,\n error: null\n }));\n };\n }\n\n function handleSearchError(_ref4) {\n var error = _ref4.error;\n var currentState = store.getState();\n var nextIsSearchStalled = currentState.isSearchStalled;\n\n if (!helper.hasPendingRequests()) {\n clearTimeout(stalledSearchTimer);\n nextIsSearchStalled = false;\n }\n\n var resultsFacetValues = currentState.resultsFacetValues,\n partialState = _objectWithoutProperties(currentState, _excluded2);\n\n store.setState(_objectSpread(_objectSpread({}, partialState), {}, {\n isSearchStalled: nextIsSearchStalled,\n error: error,\n searching: false\n }));\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\n store.setState(_objectSpread(_objectSpread({}, partialState), {}, {\n isSearchStalled: true\n }));\n }, stalledSearchDelay);\n }\n }\n\n function hydrateSearchClient(client, results) {\n if (!results) {\n return;\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\n if ((!client.transporter || client._cacheHydrated) && (!client._useCache || typeof client.addAlgoliaAgent !== 'function')) {\n return;\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\n\n if (client.transporter && !client._cacheHydrated) {\n client._cacheHydrated = true;\n var baseMethod = client.search;\n\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\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\n if (Array.isArray(results.results)) {\n hydrateSearchClientWithMultiIndexRequest(client, results.results);\n return;\n }\n\n hydrateSearchClientWithSingleIndexRequest(client, results);\n }\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 } // 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\n\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\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 } // 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\n\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\n function hydrateResultsState(results) {\n if (!results) {\n return null;\n }\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\n return new algoliasearchHelper.SearchResults(new algoliasearchHelper.SearchParameters(results.state), results.rawResults);\n } // Called whenever a widget has been rendered with new props.\n\n\n function onWidgetsUpdate() {\n var metadata = getMetadata(store.getState().widgets);\n store.setState(_objectSpread(_objectSpread({}, store.getState()), {}, {\n metadata: metadata,\n searching: true\n })); // Since the `getSearchParameters` method of widgets also depends on props,\n // the result search parameters might have changed.\n\n search();\n }\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\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\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\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\n function updateIndex(newIndex) {\n initialSearchParameters = initialSearchParameters.setIndex(newIndex); // 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\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}\n\nfunction hydrateMetadata(resultsState) {\n if (!resultsState) {\n return [];\n } // add a value noop, which gets replaced once the widgets are mounted\n\n\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}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\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\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\n return {\n displayName: displayName,\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}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\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; }\n\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; }\n\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); }; }\n\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; } }\n\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\";\n\nfunction isControlled(props) {\n return Boolean(props.searchState);\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 */\n\n\nvar InstantSearch = /*#__PURE__*/function (_Component) {\n _inherits(InstantSearch, _Component);\n\n var _super = _createSuper(InstantSearch);\n\n function InstantSearch(props) {\n var _this;\n\n _classCallCheck(this, InstantSearch);\n\n _this = _super.call(this, props);\n\n _defineProperty(_assertThisInitialized(_this), \"isUnmounting\", false);\n\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\n _createClass(InstantSearch, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var prevIsControlled = isControlled(prevProps);\n\n if (prevIsControlled && !this.state.isControlled) {\n throw new Error(\"You can't switch from being controlled to uncontrolled\");\n }\n\n if (!prevIsControlled && this.state.isControlled) {\n throw new Error(\"You can't switch from being uncontrolled to controlled\");\n }\n\n if (this.props.refresh !== prevProps.refresh && this.props.refresh) {\n this.state.instantSearchManager.clearCache();\n }\n\n if (prevProps.indexName !== this.props.indexName) {\n this.state.instantSearchManager.updateIndex(this.props.indexName);\n }\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 (isMetadataEnabled()) {\n injectMetadata(this.state.instantSearchManager.widgetsManager.getWidgets(), this.props.searchClient);\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.isUnmounting = true;\n this.state.instantSearchManager.skipSearch();\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\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\n this.props.onSearchParameters(getSearchParameters, context, props, _searchState);\n }\n\n if (this.props.widgetsCollector) {\n var _searchState2 = this.props.searchState ? this.props.searchState : {};\n\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\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\n if (nextIsControlled && !isEqual(previousSearchState, nextSearchState)) {\n prevState.instantSearchManager.onExternalStateUpdate(nextProps.searchState);\n }\n\n return {\n isControlled: nextIsControlled,\n contextValue: _objectSpread(_objectSpread({}, prevState.contextValue), {}, {\n mainTargetedIndex: nextProps.indexName\n })\n };\n }\n }]);\n\n return InstantSearch;\n}(Component);\n\n_defineProperty(InstantSearch, \"defaultProps\", {\n stalledSearchDelay: 200,\n refresh: false\n});\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});\n\nexport default InstantSearch;","import createConnector from \"../core/createConnector.js\";\nimport { getResults } from \"../core/indexUtils.js\";\nimport { addAbsolutePositions, addQueryID } from \"../core/utils.js\";\n/**\n * connectHits connector provides the logic to create connected\n * components that will render the results retrieved from\n * Algolia.\n *\n * To configure the number of hits retrieved, use [HitsPerPage widget](widgets/HitsPerPage.html),\n * [connectHitsPerPage connector](connectors/connectHitsPerPage.html) or pass the hitsPerPage\n * prop to a [Configure](guide/Search_parameters.html) widget.\n *\n * **Warning:** you will need to use the **objectID** property available on every hit as a key\n * when iterating over them. This will ensure you have the best possible UI experience\n * especially on slow networks.\n * @name connectHits\n * @kind connector\n * @providedPropType {array.} hits - the records that matched the search state\n * @example\n * import React from 'react';\n * import algoliasearch from 'algoliasearch/lite';\n * import { InstantSearch, Highlight, connectHits } from 'react-instantsearch-dom';\n *\n * const searchClient = algoliasearch(\n * 'latency',\n * '6be0576ff61c053d5f9a3225e2a90f76'\n * );\n * const CustomHits = connectHits(({ hits }) => (\n * \n * {hits.map(hit =>\n * \n * \n * \n * )}\n * \n * ));\n *\n * const App = () => (\n * \n * \n * \n * );\n */\n\nexport default createConnector({\n displayName: 'AlgoliaHits',\n getProvidedProps: function getProvidedProps(props, searchState, searchResults) {\n var results = getResults(searchResults, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n });\n\n if (!results) {\n return {\n hits: []\n };\n }\n\n var hitsWithPositions = addAbsolutePositions(results.hits, results.hitsPerPage, results.page);\n var hitsWithPositionsAndQueryID = addQueryID(hitsWithPositions, results.queryID);\n return {\n hits: hitsWithPositionsAndQueryID\n };\n },\n\n /**\n * Hits needs to be considered as a widget to trigger a search,\n * even if no other widgets are used.\n *\n * To be considered as a widget you need either:\n * - getSearchParameters\n * - getMetadata\n * - transitionState\n *\n * See: createConnector.tsx\n */\n getSearchParameters: function getSearchParameters(searchParameters) {\n return searchParameters;\n }\n});","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport createConnector from \"../core/createConnector.js\";\nimport { cleanUpValue, refineValue, getCurrentRefinementValue, getResults } from \"../core/indexUtils.js\";\n\nfunction getId() {\n return 'page';\n}\n\nfunction getCurrentRefinement(props, searchState, context) {\n var id = getId();\n var page = 1;\n var currentRefinement = getCurrentRefinementValue(props, searchState, context, id, page);\n\n if (typeof currentRefinement === 'string') {\n return parseInt(currentRefinement, 10);\n }\n\n return currentRefinement;\n}\n\nfunction _refine(props, searchState, nextPage, context) {\n var id = getId();\n\n var nextValue = _defineProperty({}, id, nextPage);\n\n var resetPage = false;\n return refineValue(searchState, nextValue, context, resetPage);\n}\n/**\n * connectPagination connector provides the logic to build a widget that will\n * let the user displays hits corresponding to a certain page.\n * @name connectPagination\n * @kind connector\n * @propType {boolean} [showFirst=true] - Display the first page link.\n * @propType {boolean} [showLast=false] - Display the last page link.\n * @propType {boolean} [showPrevious=true] - Display the previous page link.\n * @propType {boolean} [showNext=true] - Display the next page link.\n * @propType {number} [padding=3] - How many page links to display around the current page.\n * @propType {number} [totalPages=Infinity] - Maximum number of pages to display.\n * @providedPropType {function} refine - a function to remove a single filter\n * @providedPropType {function} createURL - a function to generate a URL for the corresponding search state\n * @providedPropType {number} nbPages - the total of existing pages\n * @providedPropType {number} currentRefinement - the page refinement currently applied\n */\n\n\nexport default createConnector({\n displayName: 'AlgoliaPagination',\n getProvidedProps: function getProvidedProps(props, searchState, searchResults) {\n var results = getResults(searchResults, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n });\n\n if (!results) {\n return null;\n }\n\n var nbPages = results.nbPages;\n return {\n nbPages: nbPages,\n currentRefinement: getCurrentRefinement(props, searchState, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n }),\n canRefine: nbPages > 1\n };\n },\n refine: function refine(props, searchState, nextPage) {\n return _refine(props, searchState, nextPage, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n });\n },\n cleanUp: function cleanUp(props, searchState) {\n return cleanUpValue(searchState, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n }, getId());\n },\n getSearchParameters: function getSearchParameters(searchParameters, props, searchState) {\n return searchParameters.setPage(getCurrentRefinement(props, searchState, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n }) - 1);\n },\n getMetadata: function getMetadata() {\n return {\n id: getId()\n };\n }\n});","import createConnector from \"../core/createConnector.js\";\n/**\n * connectPoweredBy connector provides the logic to build a widget that\n * will display a link to algolia.\n * @name connectPoweredBy\n * @kind connector\n * @providedPropType {string} url - the url to redirect to algolia\n */\n\nexport default createConnector({\n displayName: 'AlgoliaPoweredBy',\n getProvidedProps: function getProvidedProps() {\n var hostname = typeof window === 'undefined' || typeof window.location === 'undefined' ? '' : window.location.hostname;\n var url = 'https://www.algolia.com/?' + 'utm_source=react-instantsearch&' + 'utm_medium=website&' + \"utm_content=\".concat(hostname, \"&\") + 'utm_campaign=poweredby';\n return {\n url: url\n };\n }\n});","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport PropTypes from 'prop-types';\nimport createConnector from \"../core/createConnector.js\";\nimport { cleanUpValue, getIndexId, refineValue, getCurrentRefinementValue, getResults } from \"../core/indexUtils.js\";\nvar namespace = 'refinementList';\n\nfunction getId(props) {\n return props.attribute;\n}\n\nfunction getCurrentRefinement(props, searchState, context) {\n var currentRefinement = getCurrentRefinementValue(props, searchState, context, \"\".concat(namespace, \".\").concat(getId(props)), []);\n\n if (typeof currentRefinement !== 'string') {\n return currentRefinement;\n }\n\n if (currentRefinement) {\n return [currentRefinement];\n }\n\n return [];\n}\n\nfunction getValue(name, props, searchState, context) {\n var currentRefinement = getCurrentRefinement(props, searchState, context);\n var isAnewValue = currentRefinement.indexOf(name) === -1;\n var nextRefinement = isAnewValue ? currentRefinement.concat([name]) // cannot use .push(), it mutates\n : currentRefinement.filter(function (selectedValue) {\n return selectedValue !== name;\n }); // cannot use .splice(), it mutates\n\n return nextRefinement;\n}\n\nfunction getLimit(_ref) {\n var showMore = _ref.showMore,\n limit = _ref.limit,\n showMoreLimit = _ref.showMoreLimit;\n return showMore ? showMoreLimit : limit;\n}\n\nfunction _refine(props, searchState, nextRefinement, context) {\n var id = getId(props); // Setting the value to an empty string ensures that it is persisted in\n // the URL as an empty value.\n // This is necessary in the case where `defaultRefinement` contains one\n // item and we try to deselect it. `nextSelected` would be an empty array,\n // which would not be persisted to the URL.\n // {foo: ['bar']} => \"foo[0]=bar\"\n // {foo: []} => \"\"\n\n var nextValue = _defineProperty({}, id, nextRefinement.length > 0 ? nextRefinement : '');\n\n var resetPage = true;\n return refineValue(searchState, nextValue, context, resetPage, namespace);\n}\n\nfunction _cleanUp(props, searchState, context) {\n return cleanUpValue(searchState, context, \"\".concat(namespace, \".\").concat(getId(props)));\n}\n/**\n * connectRefinementList connector provides the logic to build a widget that will\n * give the user the ability to choose multiple values for a specific facet.\n * @name connectRefinementList\n * @kind connector\n * @requirements The attribute passed to the `attribute` prop must be present in \"attributes for faceting\"\n * on the Algolia dashboard or configured as `attributesForFaceting` via a set settings call to the Algolia API.\n * @propType {string} attribute - the name of the attribute in the record\n * @propType {boolean} [searchable=false] - allow search inside values\n * @propType {string} [operator=or] - How to apply the refinements. Possible values: 'or' or 'and'.\n * @propType {boolean} [showMore=false] - true if the component should display a button that will expand the number of items\n * @propType {number} [limit=10] - the minimum number of displayed items\n * @propType {number} [showMoreLimit=20] - the maximun number of displayed items. Only used when showMore is set to `true`\n * @propType {string[]} defaultRefinement - the values of the items selected by default. The searchState of this widget takes the form of a list of `string`s, which correspond to the values of all selected refinements. However, when there are no refinements selected, the value of the searchState is an empty string.\n * @propType {function} [transformItems] - Function to modify the items being displayed, e.g. for filtering or sorting them. Takes an items as parameter and expects it back in return.\n * @providedPropType {function} refine - a function to toggle a refinement\n * @providedPropType {function} createURL - a function to generate a URL for the corresponding search state\n * @providedPropType {string[]} currentRefinement - the refinement currently applied\n * @providedPropType {array.<{count: number, isRefined: boolean, label: string, value: string}>} items - the list of items the RefinementList can display.\n * @providedPropType {function} searchForItems - a function to toggle a search inside items values\n * @providedPropType {boolean} isFromSearch - a boolean that says if the `items` props contains facet values from the global search or from the search inside items.\n * @providedPropType {boolean} canRefine - a boolean that says whether you can refine\n */\n\n\nvar sortBy = ['isRefined', 'count:desc', 'name:asc'];\nexport default createConnector({\n displayName: 'AlgoliaRefinementList',\n propTypes: {\n id: PropTypes.string,\n attribute: PropTypes.string.isRequired,\n operator: PropTypes.oneOf(['and', 'or']),\n showMore: PropTypes.bool,\n limit: PropTypes.number,\n showMoreLimit: PropTypes.number,\n defaultRefinement: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])),\n searchable: PropTypes.bool,\n transformItems: PropTypes.func,\n facetOrdering: PropTypes.bool\n },\n defaultProps: {\n operator: 'or',\n showMore: false,\n limit: 10,\n showMoreLimit: 20,\n facetOrdering: true\n },\n getProvidedProps: function getProvidedProps(props, searchState, searchResults, metadata, searchForFacetValuesResults) {\n var attribute = props.attribute,\n searchable = props.searchable,\n indexContextValue = props.indexContextValue,\n facetOrdering = props.facetOrdering;\n var results = getResults(searchResults, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n });\n var canRefine = Boolean(results) && Boolean(results.getFacetByName(attribute));\n var isFromSearch = Boolean(searchForFacetValuesResults && searchForFacetValuesResults[attribute] && searchForFacetValuesResults.query !== ''); // Search For Facet Values is not available with derived helper (used for multi index search)\n\n if (searchable && indexContextValue) {\n throw new Error('react-instantsearch: searching in *List is not available when used inside a' + ' multi index context');\n }\n\n if (!canRefine) {\n return {\n items: [],\n currentRefinement: getCurrentRefinement(props, searchState, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n }),\n canRefine: canRefine,\n isFromSearch: isFromSearch,\n searchable: searchable\n };\n }\n\n var items = isFromSearch ? searchForFacetValuesResults[attribute].map(function (v) {\n return {\n label: v.value,\n value: getValue(v.value, props, searchState, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n }),\n _highlightResult: {\n label: {\n value: v.highlighted\n }\n },\n count: v.count,\n isRefined: v.isRefined\n };\n }) : results.getFacetValues(attribute, {\n sortBy: sortBy,\n facetOrdering: facetOrdering\n }).map(function (v) {\n return {\n label: v.name,\n value: getValue(v.name, props, searchState, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n }),\n count: v.count,\n isRefined: v.isRefined\n };\n });\n var transformedItems = props.transformItems ? props.transformItems(items) : items;\n return {\n items: transformedItems.slice(0, getLimit(props)),\n currentRefinement: getCurrentRefinement(props, searchState, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n }),\n isFromSearch: isFromSearch,\n searchable: searchable,\n canRefine: transformedItems.length > 0\n };\n },\n refine: function refine(props, searchState, nextRefinement) {\n return _refine(props, searchState, nextRefinement, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n });\n },\n searchForFacetValues: function searchForFacetValues(props, searchState, nextRefinement) {\n return {\n facetName: props.attribute,\n query: nextRefinement,\n maxFacetHits: getLimit(props)\n };\n },\n cleanUp: function cleanUp(props, searchState) {\n return _cleanUp(props, searchState, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n });\n },\n getSearchParameters: function getSearchParameters(searchParameters, props, searchState) {\n var attribute = props.attribute,\n operator = props.operator;\n var addKey = operator === 'and' ? 'addFacet' : 'addDisjunctiveFacet';\n var addRefinementKey = \"\".concat(addKey, \"Refinement\");\n searchParameters = searchParameters.setQueryParameters({\n maxValuesPerFacet: Math.max(searchParameters.maxValuesPerFacet || 0, getLimit(props))\n });\n searchParameters = searchParameters[addKey](attribute);\n return getCurrentRefinement(props, searchState, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n }).reduce(function (res, val) {\n return res[addRefinementKey](attribute, val);\n }, searchParameters);\n },\n getMetadata: function getMetadata(props, searchState) {\n var id = getId(props);\n var context = {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n };\n return {\n id: id,\n index: getIndexId(context),\n items: getCurrentRefinement(props, searchState, context).length > 0 ? [{\n attribute: props.attribute,\n label: \"\".concat(props.attribute, \": \"),\n currentRefinement: getCurrentRefinement(props, searchState, context),\n value: function value(nextState) {\n return _refine(props, nextState, [], context);\n },\n items: getCurrentRefinement(props, searchState, context).map(function (item) {\n return {\n label: \"\".concat(item),\n value: function value(nextState) {\n var nextSelectedItems = getCurrentRefinement(props, nextState, context).filter(function (other) {\n return other !== item;\n });\n return _refine(props, searchState, nextSelectedItems, context);\n }\n };\n })\n }] : []\n };\n }\n});","import PropTypes from 'prop-types';\nimport createConnector from \"../core/createConnector.js\";\nimport { getCurrentRefinementValue, hasMultipleIndices, getIndexId } from \"../core/indexUtils.js\";\nimport { shallowEqual, omit } from \"../core/utils.js\";\n/**\n * connectScrollTo connector provides the logic to build a widget that will\n * let the page scroll to a certain point.\n * @name connectScrollTo\n * @kind connector\n * @propType {string} [scrollOn=\"page\"] - Widget searchState key on which to listen for changes, default to the pagination widget.\n * @providedPropType {any} value - the current refinement applied to the widget listened by scrollTo\n * @providedPropType {boolean} hasNotChanged - indicates whether the refinement came from the scrollOn argument (for instance page by default)\n */\n\nexport default createConnector({\n displayName: 'AlgoliaScrollTo',\n propTypes: {\n scrollOn: PropTypes.string\n },\n defaultProps: {\n scrollOn: 'page'\n },\n getProvidedProps: function getProvidedProps(props, searchState) {\n var id = props.scrollOn;\n var value = getCurrentRefinementValue(props, searchState, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n }, id, null);\n\n if (!this._prevSearchState) {\n this._prevSearchState = {};\n } // Get the subpart of the state that interest us\n\n\n if (hasMultipleIndices({\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n })) {\n searchState = searchState.indices ? searchState.indices[getIndexId({\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n })] : {};\n } // if there is a change in the app that has been triggered by another element\n // than \"props.scrollOn (id) or the Configure widget, we need to keep track of\n // the search state to know if there's a change in the app that was not triggered\n // by the props.scrollOn (id) or the Configure widget. This is useful when\n // using ScrollTo in combination of Pagination. As pagination can be change\n // by every widget, we want to scroll only if it cames from the pagination\n // widget itself. We also remove the configure key from the search state to\n // do this comparison because for now configure values are not present in the\n // search state before a first refinement has been made and will false the results.\n // See: https://github.com/algolia/react-instantsearch/issues/164\n\n\n var cleanedSearchState = omit(searchState, ['configure', id]);\n var hasNotChanged = shallowEqual(this._prevSearchState, cleanedSearchState);\n this._prevSearchState = cleanedSearchState;\n return {\n value: value,\n hasNotChanged: hasNotChanged\n };\n }\n});","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport PropTypes from 'prop-types';\nimport createConnector from \"../core/createConnector.js\";\nimport { cleanUpValue, refineValue, getCurrentRefinementValue, getIndexId } from \"../core/indexUtils.js\";\n\nfunction getId() {\n return 'query';\n}\n\nfunction getCurrentRefinement(props, searchState, context) {\n var id = getId(props);\n var currentRefinement = getCurrentRefinementValue(props, searchState, context, id, '');\n\n if (currentRefinement) {\n return currentRefinement;\n }\n\n return '';\n}\n\nfunction _refine(props, searchState, nextRefinement, context) {\n var id = getId();\n\n var nextValue = _defineProperty({}, id, nextRefinement);\n\n var resetPage = true;\n return refineValue(searchState, nextValue, context, resetPage);\n}\n\nfunction _cleanUp(props, searchState, context) {\n return cleanUpValue(searchState, context, getId());\n}\n/**\n * connectSearchBox connector provides the logic to build a widget that will\n * let the user search for a query\n * @name connectSearchBox\n * @kind connector\n * @propType {string} [defaultRefinement] - Provide a default value for the query\n * @providedPropType {function} refine - a function to change the current query\n * @providedPropType {string} currentRefinement - the current query used\n * @providedPropType {boolean} isSearchStalled - a flag that indicates if InstantSearch has detected that searches are stalled\n */\n\n\nexport default createConnector({\n displayName: 'AlgoliaSearchBox',\n propTypes: {\n defaultRefinement: PropTypes.string\n },\n getProvidedProps: function getProvidedProps(props, searchState, searchResults) {\n return {\n currentRefinement: getCurrentRefinement(props, searchState, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n }),\n isSearchStalled: searchResults.isSearchStalled\n };\n },\n refine: function refine(props, searchState, nextRefinement) {\n return _refine(props, searchState, nextRefinement, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n });\n },\n cleanUp: function cleanUp(props, searchState) {\n return _cleanUp(props, searchState, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n });\n },\n getSearchParameters: function getSearchParameters(searchParameters, props, searchState) {\n return searchParameters.setQuery(getCurrentRefinement(props, searchState, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n }));\n },\n getMetadata: function getMetadata(props, searchState) {\n var id = getId(props);\n var currentRefinement = getCurrentRefinement(props, searchState, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n });\n return {\n id: id,\n index: getIndexId({\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n }),\n items: currentRefinement === null ? [] : [{\n label: \"\".concat(id, \": \").concat(currentRefinement),\n value: function value(nextState) {\n return _refine(props, nextState, '', {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n });\n },\n currentRefinement: currentRefinement\n }]\n };\n }\n});","import createConnector from \"../core/createConnector.js\";\nimport { getResults } from \"../core/indexUtils.js\";\n/**\n * The `connectStateResults` connector provides a way to access the `searchState` and the `searchResults`\n * of InstantSearch.\n * For instance this connector allows you to create results/noResults or query/noQuery pages.\n * @name connectStateResults\n * @kind connector\n * @providedPropType {object} searchState - The search state of the instant search component. See: [Search state structure](https://community.algolia.com/react-instantsearch/guide/Search_state.html)\n * @providedPropType {object} searchResults - The search results. In case of multiple indices: if used under ``, results will be those of the corresponding index otherwise it'll be those of the root index See: [Search results structure](https://community.algolia.com/algoliasearch-helper-js/reference.html#searchresults)\n * @providedPropType {object} allSearchResults - In case of multiple indices you can retrieve all the results\n * @providedPropType {string} error - If the search failed, the error will be logged here.\n * @providedPropType {boolean} searching - If there is a search in progress.\n * @providedPropType {boolean} isSearchStalled - Flag that indicates if React InstantSearch has detected that searches are stalled.\n * @providedPropType {boolean} searchingForFacetValues - If there is a search in a list in progress.\n * @providedPropType {object} props - component props.\n * @example\n * import React from 'react';\n * import algoliasearch from 'algoliasearch/lite';\n * import { InstantSearch, SearchBox, Hits, connectStateResults } from 'react-instantsearch-dom';\n *\n * const searchClient = algoliasearch(\n * 'latency',\n * '6be0576ff61c053d5f9a3225e2a90f76'\n * );\n *\n * const Content = connectStateResults(({ searchState, searchResults }) => {\n * const hasResults = searchResults && searchResults.nbHits !== 0;\n *\n * return (\n * \n * \n * \n * \n * \n * No results has been found for {searchState.query}\n * \n * \n * );\n * });\n *\n * const App = () => (\n * \n * \n * \n * \n * );\n */\n\nexport default createConnector({\n displayName: 'AlgoliaStateResults',\n getProvidedProps: function getProvidedProps(props, searchState, searchResults) {\n var results = getResults(searchResults, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n });\n return {\n searchState: searchState,\n searchResults: results,\n allSearchResults: searchResults.results,\n searching: searchResults.searching,\n isSearchStalled: searchResults.isSearchStalled,\n error: searchResults.error,\n searchingForFacetValues: searchResults.searchingForFacetValues,\n props: props\n };\n }\n});","import createConnector from \"../core/createConnector.js\";\nimport { getResults } from \"../core/indexUtils.js\";\n/**\n * connectStats connector provides the logic to build a widget that will\n * displays algolia search statistics (hits number and processing time).\n * @name connectStats\n * @kind connector\n * @providedPropType {number} nbHits - number of hits returned by Algolia.\n * @providedPropType {number} nbSortedHits - number of sorted hits returned by Algolia.\n * @providedPropType {number} processingTimeMS - the time in ms took by Algolia to search for results.\n */\n\nexport default createConnector({\n displayName: 'AlgoliaStats',\n getProvidedProps: function getProvidedProps(props, _searchState, searchResults) {\n var results = getResults(searchResults, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n });\n\n if (!results) {\n return null;\n }\n\n return {\n areHitsSorted: results.appliedRelevancyStrictness !== undefined && results.appliedRelevancyStrictness > 0 && results.nbHits !== results.nbSortedHits,\n nbHits: results.nbHits,\n nbSortedHits: results.nbSortedHits,\n processingTimeMS: results.processingTimeMS\n };\n }\n});"],"names":["_extends","target","i","source","key","_objectWithoutPropertiesLoose","excluded","sourceKeys","_objectWithoutProperties","objectWithoutPropertiesLoose","sourceSymbolKeys","_classCallCheck","instance","Constructor","_defineProperties","props","descriptor","_createClass","protoProps","staticProps","_assertThisInitialized","self","_setPrototypeOf","o","p","_inherits","subClass","superClass","setPrototypeOf","_typeof","obj","_possibleConstructorReturn","call","assertThisInitialized","_getPrototypeOf","_defineProperty","value","ownKeys","object","enumerableOnly","keys","symbols","sym","_objectSpread","shallowEqual","objA","objB","keysA","keysB","hasOwn","getDisplayName","Component","resolved","defer","f","isPlainObject","removeEmptyKey","objectHasKeys","addAbsolutePositions","hits","hitsPerPage","page","hit","index","addQueryID","queryID","omit","_key","instantSearchContext","createContext","InstantSearchConsumer","InstantSearchProvider","_createContext","IndexConsumer","_excluded","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","Super","result","NewTarget","createConnectorWithoutContext","connectorDesc","isWidget","Composed","Connector","_Component","_super","_this","_ref","_len","args","_ref2","_len2","_key2","_ref3","_len3","_key3","_this2","nextProps","nextState","propsEqual","prevProps","isEqual","_this$props$contextVa","widgets","results","resultsFacetValues","searching","searchingForFacetValues","isSearchStalled","metadata","error","searchResults","searchParameters","nextWidgetsState","prevWidgetsState","_this$props","providedProps","refineProps","searchForFacetValuesProps","React","createConnectorWithContext","ConnectorWrapper","contextValue","indexContextValue","HIGHLIGHT_TAGS","version","getIndexId","context","hasMultipleIndices","getResults","indexId","refineValue","searchState","nextRefinement","resetPage","namespace","refineMultiIndexWithNamespace","refineMultiIndex","targetedIndex","refineSingleIndexWithNamespace","refineSingleIndex","state","_objectSpread4","getNamespaceAndAttributeName","id","parts","attributeName","hasRefinements","multiIndex","getRefinements","getCurrentRefinementValue","defaultValue","_getNamespaceAndAttri","hasRefinementsValue","cleanUpValue","_getNamespaceAndAttri2","cleanUpValueWithMultiIndex","cleanUpValueWithSingleIndex","attribute","_ref4","indexSearchState","_excluded2","getId","connectConfigure","createConnector","items","prevSearchState","nextSearchState","propKeys","nonPresentKeys","prop","nextValue","subState","configureKeys","configureState","acc","item","Configure","createWidgetsManager","onWidgetsUpdate","scheduled","scheduleUpdate","widget","createStore","initialState","listeners","listener","_excluded3","addAlgoliaAgents","searchClient","ReactVersion","isMultiIndexContext","isTargetedIndexEqualIndex","isIndexWidget","isIndexWidgetEqualIndex","sortIndexWidgetsFirst","firstWidget","secondWidget","isFirstWidgetIndex","isSecondWidgetIndex","serializeQueryParameters","parameters","isObjectOrArray","encode","format","createInstantSearchManager","indexName","_ref$initialState","resultsState","stalledSearchDelay","helper","algoliasearchHelper","handleNewSearch","handleSearchSuccess","handleSearchError","skip","stalledSearchTimer","initialSearchParameters","widgetsManager","hydrateSearchClient","store","hydrateMetadata","hydrateResultsState","skipSearch","updateClient","client","search","clearCache","getMetadata","getSearchParameters","sharedParameters","res","mainParameters","targetedIndexEqualMainIndex","subIndexEqualMainIndex","derivedIndices","targetedIndexNotEqualMainIndex","subIndexNotEqualMainIndex","indices","derivedParameters","_getSearchParameters","derivedHelper","event","isDerivedHelpersEmpty","currentState","nextIsSearchStalled","partialState","_store$getState","baseMethod","requests","methodArgs","requestsWithSerializedParams","request","hydrateSearchClientWithMultiIndexRequest","hydrateSearchClientWithSingleIndexRequest","transitionState","onExternalStateUpdate","onSearchForFacetValues","_ref5","facetName","query","_ref5$maxFacetHits","maxFacetHits","maxFacetHitsWithinRange","content","_objectSpread7","updateIndex","newIndex","getWidgetsIds","meta","datum","nestedItem","isMetadataEnabled","getMetadataPayload","internalProps","widgetsPayload","constructor","_ref2$defaultProps","defaultProps","_ref2$displayName","displayName","ua","injectMetadata","payloadContainer","refNode","payload","isControlled","InstantSearch","instantSearchManager","prevIsControlled","_searchState","_searchState2","Children","prevState","nextIsControlled","previousSearchState","PropTypes","InstantSearch$1","connectHits","hitsWithPositions","hitsWithPositionsAndQueryID","getCurrentRefinement","currentRefinement","_refine","nextPage","connectPagination","nbPages","connectPoweredBy","hostname","url","getValue","name","isAnewValue","selectedValue","getLimit","showMore","limit","showMoreLimit","_cleanUp","sortBy","connectRefinementList","searchForFacetValuesResults","searchable","facetOrdering","canRefine","isFromSearch","v","transformedItems","operator","addKey","addRefinementKey","val","nextSelectedItems","other","connectScrollTo","cleanedSearchState","hasNotChanged","connectSearchBox","connectStateResults","connectStats"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32]}
\n * \n *