\n\n return h('div', {\n style: this.modalOuterStyle,\n attrs: this.computedAttrs,\n key: \"modal-outer-\".concat(this[COMPONENT_UID_KEY])\n }, [$modal, $backdrop]);\n }\n },\n render: function render(h) {\n if (this.static) {\n return this.lazy && this.isHidden ? h() : this.makeModal(h);\n } else {\n return this.isHidden ? h() : h(BVTransporter, [this.makeModal(h)]);\n }\n }\n});","import { isVue3 } from '../vue';\nexport var getInstanceFromDirective = function getInstanceFromDirective(vnode, bindings) {\n return isVue3 ? bindings.instance : vnode.context;\n};","import { NAME_MODAL } from '../../constants/components';\nimport { EVENT_NAME_SHOW, EVENT_OPTIONS_PASSIVE } from '../../constants/events';\nimport { CODE_ENTER, CODE_SPACE } from '../../constants/key-codes';\nimport { getAttr, hasAttr, isDisabled, matches, select, setAttr } from '../../utils/dom';\nimport { getRootActionEventName, eventOn, eventOff } from '../../utils/events';\nimport { isString } from '../../utils/inspect';\nimport { keys } from '../../utils/object';\nimport { getEventRoot } from '../../utils/get-event-root';\nimport { getInstanceFromDirective } from '../../utils/get-instance-from-directive'; // Emitted show event for modal\n\nvar ROOT_ACTION_EVENT_NAME_SHOW = getRootActionEventName(NAME_MODAL, EVENT_NAME_SHOW); // Prop name we use to store info on root element\n\nvar PROPERTY = '__bv_modal_directive__';\n\nvar getTarget = function getTarget(_ref) {\n var _ref$modifiers = _ref.modifiers,\n modifiers = _ref$modifiers === void 0 ? {} : _ref$modifiers,\n arg = _ref.arg,\n value = _ref.value;\n // Try value, then arg, otherwise pick last modifier\n return isString(value) ? value : isString(arg) ? arg : keys(modifiers).reverse()[0];\n};\n\nvar getTriggerElement = function getTriggerElement(el) {\n // If root element is a dropdown-item or nav-item, we\n // need to target the inner link or button instead\n return el && matches(el, '.dropdown-menu > li, li.nav-item') ? select('a, button', el) || el : el;\n};\n\nvar setRole = function setRole(trigger) {\n // Ensure accessibility on non button elements\n if (trigger && trigger.tagName !== 'BUTTON') {\n // Only set a role if the trigger element doesn't have one\n if (!hasAttr(trigger, 'role')) {\n setAttr(trigger, 'role', 'button');\n } // Add a tabindex is not a button or link, and tabindex is not provided\n\n\n if (trigger.tagName !== 'A' && !hasAttr(trigger, 'tabindex')) {\n setAttr(trigger, 'tabindex', '0');\n }\n }\n};\n\nvar bind = function bind(el, binding, vnode) {\n var target = getTarget(binding);\n var trigger = getTriggerElement(el);\n\n if (target && trigger) {\n var handler = function handler(event) {\n // `currentTarget` is the element with the listener on it\n var currentTarget = event.currentTarget;\n\n if (!isDisabled(currentTarget)) {\n var type = event.type;\n var key = event.keyCode; // Open modal only if trigger is not disabled\n\n if (type === 'click' || type === 'keydown' && (key === CODE_ENTER || key === CODE_SPACE)) {\n getEventRoot(getInstanceFromDirective(vnode, binding)).$emit(ROOT_ACTION_EVENT_NAME_SHOW, target, currentTarget);\n }\n }\n };\n\n el[PROPERTY] = {\n handler: handler,\n target: target,\n trigger: trigger\n }; // If element is not a button, we add `role=\"button\"` for accessibility\n\n setRole(trigger); // Listen for click events\n\n eventOn(trigger, 'click', handler, EVENT_OPTIONS_PASSIVE);\n\n if (trigger.tagName !== 'BUTTON' && getAttr(trigger, 'role') === 'button') {\n // If trigger isn't a button but has role button,\n // we also listen for `keydown.space` && `keydown.enter`\n eventOn(trigger, 'keydown', handler, EVENT_OPTIONS_PASSIVE);\n }\n }\n};\n\nvar unbind = function unbind(el) {\n var oldProp = el[PROPERTY] || {};\n var trigger = oldProp.trigger;\n var handler = oldProp.handler;\n\n if (trigger && handler) {\n eventOff(trigger, 'click', handler, EVENT_OPTIONS_PASSIVE);\n eventOff(trigger, 'keydown', handler, EVENT_OPTIONS_PASSIVE);\n eventOff(el, 'click', handler, EVENT_OPTIONS_PASSIVE);\n eventOff(el, 'keydown', handler, EVENT_OPTIONS_PASSIVE);\n }\n\n delete el[PROPERTY];\n};\n\nvar componentUpdated = function componentUpdated(el, binding, vnode) {\n var oldProp = el[PROPERTY] || {};\n var target = getTarget(binding);\n var trigger = getTriggerElement(el);\n\n if (target !== oldProp.target || trigger !== oldProp.trigger) {\n // We bind and rebind if the target or trigger changes\n unbind(el, binding, vnode);\n bind(el, binding, vnode);\n } // If trigger element is not a button, ensure `role=\"button\"`\n // is still set for accessibility\n\n\n setRole(trigger);\n};\n\nvar updated = function updated() {};\n/*\n * Export our directive\n */\n\n\nexport var VBModal = {\n inserted: componentUpdated,\n updated: updated,\n componentUpdated: componentUpdated,\n unbind: unbind\n};","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\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 _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n// Plugin for adding `$bvModal` property to all Vue instances\nimport { NAME_MODAL, NAME_MSG_BOX } from '../../../constants/components';\nimport { EVENT_NAME_HIDDEN, EVENT_NAME_HIDE, HOOK_EVENT_NAME_BEFORE_DESTROY, HOOK_EVENT_NAME_DESTROYED } from '../../../constants/events';\nimport { useParentMixin } from '../../../mixins/use-parent';\nimport { concat } from '../../../utils/array';\nimport { getComponentConfig } from '../../../utils/config';\nimport { requestAF } from '../../../utils/dom';\nimport { getRootActionEventName } from '../../../utils/events';\nimport { isUndefined, isFunction } from '../../../utils/inspect';\nimport { assign, defineProperties, defineProperty, hasOwnProperty, keys, omit, readonlyDescriptor } from '../../../utils/object';\nimport { pluginFactory } from '../../../utils/plugins';\nimport { warn, warnNotClient, warnNoPromiseSupport } from '../../../utils/warn';\nimport { createNewChildComponent } from '../../../utils/create-new-child-component';\nimport { getEventRoot } from '../../../utils/get-event-root';\nimport { BModal, props as modalProps } from '../modal'; // --- Constants ---\n\nvar PROP_NAME = '$bvModal';\nvar PROP_NAME_PRIV = '_bv__modal'; // Base modal props that are allowed\n// Some may be ignored or overridden on some message boxes\n// Prop ID is allowed, but really only should be used for testing\n// We need to add it in explicitly as it comes from the `idMixin`\n\nvar BASE_PROPS = ['id'].concat(_toConsumableArray(keys(omit(modalProps, ['busy', 'lazy', 'noStacking', 'static', 'visible'])))); // Fallback event resolver (returns undefined)\n\nvar defaultResolver = function defaultResolver() {}; // Map prop names to modal slot names\n\n\nvar propsToSlots = {\n msgBoxContent: 'default',\n title: 'modal-title',\n okTitle: 'modal-ok',\n cancelTitle: 'modal-cancel'\n}; // --- Helper methods ---\n// Method to filter only recognized props that are not undefined\n\nvar filterOptions = function filterOptions(options) {\n return BASE_PROPS.reduce(function (memo, key) {\n if (!isUndefined(options[key])) {\n memo[key] = options[key];\n }\n\n return memo;\n }, {});\n}; // Method to install `$bvModal` VM injection\n\n\nvar plugin = function plugin(Vue) {\n // Create a private sub-component that extends BModal\n // which self-destructs after hidden\n // @vue/component\n var BMsgBox = Vue.extend({\n name: NAME_MSG_BOX,\n extends: BModal,\n mixins: [useParentMixin],\n destroyed: function destroyed() {\n // Make sure we not in document any more\n if (this.$el && this.$el.parentNode) {\n this.$el.parentNode.removeChild(this.$el);\n }\n },\n mounted: function mounted() {\n var _this = this;\n\n // Self destruct handler\n var handleDestroy = function handleDestroy() {\n _this.$nextTick(function () {\n // In a `requestAF()` to release control back to application\n requestAF(function () {\n _this.$destroy();\n });\n });\n }; // Self destruct if parent destroyed\n\n\n this.bvParent.$once(HOOK_EVENT_NAME_DESTROYED, handleDestroy); // Self destruct after hidden\n\n this.$once(EVENT_NAME_HIDDEN, handleDestroy); // Self destruct on route change\n\n /* istanbul ignore if */\n\n if (this.$router && this.$route) {\n // Destroy ourselves if route changes\n\n /* istanbul ignore next */\n this.$once(HOOK_EVENT_NAME_BEFORE_DESTROY, this.$watch('$router', handleDestroy));\n } // Show the `BMsgBox`\n\n\n this.show();\n }\n }); // Method to generate the on-demand modal message box\n // Returns a promise that resolves to a value returned by the resolve\n\n var asyncMsgBox = function asyncMsgBox(parent, props) {\n var resolver = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultResolver;\n\n if (warnNotClient(PROP_NAME) || warnNoPromiseSupport(PROP_NAME)) {\n /* istanbul ignore next */\n return;\n } // Create an instance of `BMsgBox` component\n // We set parent as the local VM so these modals can emit events on\n // the app `$root`, as needed by things like tooltips and popovers\n // And it helps to ensure `BMsgBox` is destroyed when parent is destroyed\n\n\n var msgBox = createNewChildComponent(parent, BMsgBox, {\n // Preset the prop values\n propsData: _objectSpread(_objectSpread(_objectSpread({}, filterOptions(getComponentConfig(NAME_MODAL))), {}, {\n // Defaults that user can override\n hideHeaderClose: true,\n hideHeader: !(props.title || props.titleHtml)\n }, omit(props, keys(propsToSlots))), {}, {\n // Props that can't be overridden\n lazy: false,\n busy: false,\n visible: false,\n noStacking: false,\n noEnforceFocus: false\n })\n }); // Convert certain props to scoped slots\n\n keys(propsToSlots).forEach(function (prop) {\n if (!isUndefined(props[prop])) {\n // Can be a string, or array of VNodes.\n // Alternatively, user can use HTML version of prop to pass an HTML string.\n msgBox.$slots[propsToSlots[prop]] = concat(props[prop]);\n }\n }); // Return a promise that resolves when hidden, or rejects on destroyed\n\n return new Promise(function (resolve, reject) {\n var resolved = false;\n msgBox.$once(HOOK_EVENT_NAME_DESTROYED, function () {\n if (!resolved) {\n /* istanbul ignore next */\n reject(new Error('BootstrapVue MsgBox destroyed before resolve'));\n }\n });\n msgBox.$on(EVENT_NAME_HIDE, function (bvModalEvent) {\n if (!bvModalEvent.defaultPrevented) {\n var result = resolver(bvModalEvent); // If resolver didn't cancel hide, we resolve\n\n if (!bvModalEvent.defaultPrevented) {\n resolved = true;\n resolve(result);\n }\n }\n }); // Create a mount point (a DIV) and mount the msgBo which will trigger it to show\n\n var div = document.createElement('div');\n document.body.appendChild(div);\n msgBox.$mount(div);\n });\n }; // Private utility method to open a user defined message box and returns a promise.\n // Not to be used directly by consumers, as this method may change calling syntax\n\n\n var makeMsgBox = function makeMsgBox(parent, content) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var resolver = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n if (!content || warnNoPromiseSupport(PROP_NAME) || warnNotClient(PROP_NAME) || !isFunction(resolver)) {\n /* istanbul ignore next */\n return;\n }\n\n return asyncMsgBox(parent, _objectSpread(_objectSpread({}, filterOptions(options)), {}, {\n msgBoxContent: content\n }), resolver);\n }; // BvModal instance class\n\n\n var BvModal = /*#__PURE__*/function () {\n function BvModal(vm) {\n _classCallCheck(this, BvModal);\n\n // Assign the new properties to this instance\n assign(this, {\n _vm: vm,\n _root: getEventRoot(vm)\n }); // Set these properties as read-only and non-enumerable\n\n defineProperties(this, {\n _vm: readonlyDescriptor(),\n _root: readonlyDescriptor()\n });\n } // --- Instance methods ---\n // Show modal with the specified ID args are for future use\n\n\n _createClass(BvModal, [{\n key: \"show\",\n value: function show(id) {\n if (id && this._root) {\n var _this$_root;\n\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 (_this$_root = this._root).$emit.apply(_this$_root, [getRootActionEventName(NAME_MODAL, 'show'), id].concat(args));\n }\n } // Hide modal with the specified ID args are for future use\n\n }, {\n key: \"hide\",\n value: function hide(id) {\n if (id && this._root) {\n var _this$_root2;\n\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n (_this$_root2 = this._root).$emit.apply(_this$_root2, [getRootActionEventName(NAME_MODAL, 'hide'), id].concat(args));\n }\n } // The following methods require Promise support!\n // IE 11 and others do not support Promise natively, so users\n // should have a Polyfill loaded (which they need anyways for IE 11 support)\n // Open a message box with OK button only and returns a promise\n\n }, {\n key: \"msgBoxOk\",\n value: function msgBoxOk(message) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // Pick the modal props we support from options\n var props = _objectSpread(_objectSpread({}, options), {}, {\n // Add in overrides and our content prop\n okOnly: true,\n okDisabled: false,\n hideFooter: false,\n msgBoxContent: message\n });\n\n return makeMsgBox(this._vm, message, props, function () {\n // Always resolve to true for OK\n return true;\n });\n } // Open a message box modal with OK and CANCEL buttons\n // and returns a promise\n\n }, {\n key: \"msgBoxConfirm\",\n value: function msgBoxConfirm(message) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // Set the modal props we support from options\n var props = _objectSpread(_objectSpread({}, options), {}, {\n // Add in overrides and our content prop\n okOnly: false,\n okDisabled: false,\n cancelDisabled: false,\n hideFooter: false\n });\n\n return makeMsgBox(this._vm, message, props, function (bvModalEvent) {\n var trigger = bvModalEvent.trigger;\n return trigger === 'ok' ? true : trigger === 'cancel' ? false : null;\n });\n }\n }]);\n\n return BvModal;\n }(); // Add our instance mixin\n\n\n Vue.mixin({\n beforeCreate: function beforeCreate() {\n // Because we need access to `$root` for `$emits`, and VM for parenting,\n // we have to create a fresh instance of `BvModal` for each VM\n this[PROP_NAME_PRIV] = new BvModal(this);\n }\n }); // Define our read-only `$bvModal` instance property\n // Placed in an if just in case in HMR mode\n\n if (!hasOwnProperty(Vue.prototype, PROP_NAME)) {\n defineProperty(Vue.prototype, PROP_NAME, {\n get: function get() {\n /* istanbul ignore next */\n if (!this || !this[PROP_NAME_PRIV]) {\n warn(\"\\\"\".concat(PROP_NAME, \"\\\" must be accessed from a Vue instance \\\"this\\\" context.\"), NAME_MODAL);\n }\n\n return this[PROP_NAME_PRIV];\n }\n });\n }\n};\n\nexport var BVModalPlugin = /*#__PURE__*/pluginFactory({\n plugins: {\n plugin: plugin\n }\n});","import { BModal } from './modal';\nimport { VBModal } from '../../directives/modal/modal';\nimport { BVModalPlugin } from './helpers/bv-modal';\nimport { pluginFactory } from '../../utils/plugins';\nvar ModalPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BModal: BModal\n },\n directives: {\n VBModal: VBModal\n },\n // $bvModal injection\n plugins: {\n BVModalPlugin: BVModalPlugin\n }\n});\nexport { ModalPlugin, BModal };","export default function(r,e,o){if(!r)throw new Error(\"You need to provide `widgetName` in your data\");var t=[\"ais-\"+r];return e&&t.push(\"-\"+e),o&&t.push(\"--\"+o),t.join(\"\")}\n//# sourceMappingURL=suit.js.map\n","import s from\"../util/suit.js\";var t=function(t){var a=t.name;return{props:{classNames:{type:Object,default:void 0}},methods:{suit:function(t,e){var r=s(a,t,e),i=this.classNames&&this.classNames[r];return i?[r,i].join(\" \"):r}}}};export{t as createSuitMixin};\n//# sourceMappingURL=suit.js.map\n","function e(e){for(var r=arguments,n=1;n
\" inside of an \"\" component.')}},getParentIndex:{from:\"$_ais_getParentIndex\",default:function(){var t=this;return function(){return t.instantSearchInstance.mainIndex}}}},data:function(){return{state:null}},created:function(){if(\"function\"==typeof a){if(this.factory=a(this.updateState,function(){}),this.widget=t(this.factory(this.widgetParams),i),this.getParentIndex().addWidgets([this.widget]),this.instantSearchInstance._initialResults&&!this.instantSearchInstance.started){if(\"function\"!=typeof this.instantSearchInstance.__forceRender)throw new Error(\"You are using server side rendering with instead of .\");this.instantSearchInstance.__forceRender(this.widget,this.getParentIndex())}}else!0!==a&&e(\"You are using the InstantSearch widget mixin, but didn't provide a connector.\\nWhile this is technically possible, and will give you access to the Helper,\\nit's not the recommended way of making custom components.\\n\\nIf you want to disable this message, pass { connector: true } to the mixin.\\n\\nRead more on using connectors: https://alg.li/vue-custom\")}}).beforeDestroy=function(){this.widget&&this.getParentIndex().removeWidgets([this.widget])},s.watch={widgetParams:{handler:function(e){this.state=null,this.getParentIndex().removeWidgets([this.widget]),this.widget=t(this.factory(e),i),this.getParentIndex().addWidgets([this.widget])},deep:!0}},s.methods={updateState:function(t,e){void 0===t&&(t={}),e||(this.state=t)}},s};export{n as createWidgetMixin};\n//# sourceMappingURL=widget.js.map\n","export function getObjectType(object) {\n return Object.prototype.toString.call(object).slice(8, -1);\n}","import { getObjectType } from \"./getObjectType.js\";\nexport function checkRendering(rendering, usage) {\n if (rendering === undefined || typeof rendering !== 'function') {\n throw new Error(\"The render function is not valid (received type \".concat(getObjectType(rendering), \").\\n\\n\").concat(usage));\n }\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nimport { serializePayload } from \"./serializer.js\";\nfunction chunk(arr) {\n var chunkSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 20;\n var chunks = [];\n for (var i = 0; i < Math.ceil(arr.length / chunkSize); i++) {\n chunks.push(arr.slice(i * chunkSize, (i + 1) * chunkSize));\n }\n return chunks;\n}\nexport function _buildEventPayloadsForHits(_ref) {\n var getIndex = _ref.getIndex,\n widgetType = _ref.widgetType,\n methodName = _ref.methodName,\n args = _ref.args,\n instantSearchInstance = _ref.instantSearchInstance;\n // when there's only one argument, that means it's custom\n if (args.length === 1 && _typeof(args[0]) === 'object') {\n return [args[0]];\n }\n var _args$0$split = args[0].split(':'),\n _args$0$split2 = _slicedToArray(_args$0$split, 2),\n eventType = _args$0$split2[0],\n eventModifier = _args$0$split2[1];\n var hits = args[1];\n var eventName = args[2];\n var additionalData = args[3] || {};\n if (!hits) {\n if (process.env.NODE_ENV === 'development') {\n throw new Error(\"You need to pass hit or hits as the second argument like:\\n \".concat(methodName, \"(eventType, hit);\\n \"));\n } else {\n return [];\n }\n }\n if ((eventType === 'click' || eventType === 'conversion') && !eventName) {\n if (process.env.NODE_ENV === 'development') {\n throw new Error(\"You need to pass eventName as the third argument for 'click' or 'conversion' events like:\\n \".concat(methodName, \"('click', hit, 'Product Purchased');\\n\\n To learn more about event naming: https://www.algolia.com/doc/guides/getting-insights-and-analytics/search-analytics/click-through-and-conversions/in-depth/clicks-conversions-best-practices/\\n \"));\n } else {\n return [];\n }\n }\n var hitsArray = Array.isArray(hits) ? hits : [hits];\n if (hitsArray.length === 0) {\n return [];\n }\n var queryID = hitsArray[0].__queryID;\n var hitsChunks = chunk(hitsArray);\n var objectIDsByChunk = hitsChunks.map(function (batch) {\n return batch.map(function (hit) {\n return hit.objectID;\n });\n });\n var positionsByChunk = hitsChunks.map(function (batch) {\n return batch.map(function (hit) {\n return hit.__position;\n });\n });\n if (eventType === 'view') {\n if (instantSearchInstance.status !== 'idle') {\n return [];\n }\n return hitsChunks.map(function (batch, i) {\n return {\n insightsMethod: 'viewedObjectIDs',\n widgetType: widgetType,\n eventType: eventType,\n payload: _objectSpread({\n eventName: eventName || 'Hits Viewed',\n index: getIndex(),\n objectIDs: objectIDsByChunk[i]\n }, additionalData),\n hits: batch,\n eventModifier: eventModifier\n };\n });\n } else if (eventType === 'click') {\n return hitsChunks.map(function (batch, i) {\n return {\n insightsMethod: 'clickedObjectIDsAfterSearch',\n widgetType: widgetType,\n eventType: eventType,\n payload: _objectSpread({\n eventName: eventName || 'Hit Clicked',\n index: getIndex(),\n queryID: queryID,\n objectIDs: objectIDsByChunk[i],\n positions: positionsByChunk[i]\n }, additionalData),\n hits: batch,\n eventModifier: eventModifier\n };\n });\n } else if (eventType === 'conversion') {\n return hitsChunks.map(function (batch, i) {\n return {\n insightsMethod: 'convertedObjectIDsAfterSearch',\n widgetType: widgetType,\n eventType: eventType,\n payload: _objectSpread({\n eventName: eventName || 'Hit Converted',\n index: getIndex(),\n queryID: queryID,\n objectIDs: objectIDsByChunk[i]\n }, additionalData),\n hits: batch,\n eventModifier: eventModifier\n };\n });\n } else if (process.env.NODE_ENV === 'development') {\n throw new Error(\"eventType(\\\"\".concat(eventType, \"\\\") is not supported.\\n If you want to send a custom payload, you can pass one object: \").concat(methodName, \"(customPayload);\\n \"));\n } else {\n return [];\n }\n}\nexport function createSendEventForHits(_ref2) {\n var instantSearchInstance = _ref2.instantSearchInstance,\n getIndex = _ref2.getIndex,\n widgetType = _ref2.widgetType;\n var sentEvents = {};\n var timer = undefined;\n var sendEventForHits = function sendEventForHits() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var payloads = _buildEventPayloadsForHits({\n widgetType: widgetType,\n getIndex: getIndex,\n methodName: 'sendEvent',\n args: args,\n instantSearchInstance: instantSearchInstance\n });\n payloads.forEach(function (payload) {\n if (payload.eventType === 'click' && payload.eventModifier === 'internal' && sentEvents[payload.eventType]) {\n return;\n }\n sentEvents[payload.eventType] = true;\n instantSearchInstance.sendEventToInsights(payload);\n });\n clearTimeout(timer);\n timer = setTimeout(function () {\n sentEvents = {};\n }, 0);\n };\n return sendEventForHits;\n}\nexport function createBindEventForHits(_ref3) {\n var getIndex = _ref3.getIndex,\n widgetType = _ref3.widgetType,\n instantSearchInstance = _ref3.instantSearchInstance;\n var bindEventForHits = function bindEventForHits() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n var payloads = _buildEventPayloadsForHits({\n widgetType: widgetType,\n getIndex: getIndex,\n methodName: 'bindEvent',\n args: args,\n instantSearchInstance: instantSearchInstance\n });\n return payloads.length ? \"data-insights-event=\".concat(serializePayload(payloads)) : '';\n };\n return bindEventForHits;\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { escapeHits, TAG_PLACEHOLDER, checkRendering, createDocumentationMessageGenerator, createSendEventForHits, noop, warning } from \"../../lib/utils/index.js\";\nvar withUsage = createDocumentationMessageGenerator({\n name: 'autocomplete',\n connector: true\n});\nvar connectAutocomplete = function connectAutocomplete(renderFn) {\n var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n checkRendering(renderFn, withUsage());\n return function (widgetParams) {\n var _ref = widgetParams || {},\n _ref$escapeHTML = _ref.escapeHTML,\n escapeHTML = _ref$escapeHTML === void 0 ? true : _ref$escapeHTML;\n process.env.NODE_ENV === 'development' ? warning(!widgetParams.indices, \"\\nThe option `indices` has been removed from the Autocomplete connector.\\n\\nThe indices to target are now inferred from the widgets tree.\\n\".concat(Array.isArray(widgetParams.indices) ? \"\\nAn alternative would be:\\n\\nconst autocomplete = connectAutocomplete(renderer);\\n\\nsearch.addWidgets([\\n \".concat(widgetParams.indices.map(function (_ref2) {\n var value = _ref2.value;\n return \"index({ indexName: '\".concat(value, \"' }),\");\n }).join('\\n '), \"\\n autocomplete()\\n]);\\n\") : '', \"\\n \")) : void 0;\n var connectorState = {};\n return {\n $$type: 'ais.autocomplete',\n init: function init(initOptions) {\n var instantSearchInstance = initOptions.instantSearchInstance;\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(initOptions)), {}, {\n instantSearchInstance: instantSearchInstance\n }), true);\n },\n render: function render(renderOptions) {\n var instantSearchInstance = renderOptions.instantSearchInstance;\n var renderState = this.getWidgetRenderState(renderOptions);\n renderState.indices.forEach(function (_ref3) {\n var sendEvent = _ref3.sendEvent,\n hits = _ref3.hits;\n sendEvent('view:internal', hits);\n });\n renderFn(_objectSpread(_objectSpread({}, renderState), {}, {\n instantSearchInstance: instantSearchInstance\n }), false);\n },\n getRenderState: function getRenderState(renderState, renderOptions) {\n return _objectSpread(_objectSpread({}, renderState), {}, {\n autocomplete: this.getWidgetRenderState(renderOptions)\n });\n },\n getWidgetRenderState: function getWidgetRenderState(_ref4) {\n var _this = this;\n var helper = _ref4.helper,\n state = _ref4.state,\n scopedResults = _ref4.scopedResults,\n instantSearchInstance = _ref4.instantSearchInstance;\n if (!connectorState.refine) {\n connectorState.refine = function (query) {\n helper.setQuery(query).search();\n };\n }\n var indices = scopedResults.map(function (scopedResult) {\n // We need to escape the hits because highlighting\n // exposes HTML tags to the end-user.\n scopedResult.results.hits = escapeHTML ? escapeHits(scopedResult.results.hits) : scopedResult.results.hits;\n var sendEvent = createSendEventForHits({\n instantSearchInstance: instantSearchInstance,\n getIndex: function getIndex() {\n return scopedResult.results.index;\n },\n widgetType: _this.$$type\n });\n return {\n indexId: scopedResult.indexId,\n indexName: scopedResult.results.index,\n hits: scopedResult.results.hits,\n results: scopedResult.results,\n sendEvent: sendEvent\n };\n });\n return {\n currentRefinement: state.query || '',\n indices: indices,\n refine: connectorState.refine,\n widgetParams: widgetParams\n };\n },\n getWidgetUiState: function getWidgetUiState(uiState, _ref5) {\n var searchParameters = _ref5.searchParameters;\n var query = searchParameters.query || '';\n if (query === '' || uiState && uiState.query === query) {\n return uiState;\n }\n return _objectSpread(_objectSpread({}, uiState), {}, {\n query: query\n });\n },\n getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref6) {\n var uiState = _ref6.uiState;\n var parameters = {\n query: uiState.query || ''\n };\n if (!escapeHTML) {\n return searchParameters.setQueryParameters(parameters);\n }\n return searchParameters.setQueryParameters(_objectSpread(_objectSpread({}, parameters), TAG_PLACEHOLDER));\n },\n dispose: function dispose(_ref7) {\n var state = _ref7.state;\n unmountFn();\n var stateWithoutQuery = state.setQueryParameter('query', undefined);\n if (!escapeHTML) {\n return stateWithoutQuery;\n }\n return stateWithoutQuery.setQueryParameters(Object.keys(TAG_PLACEHOLDER).reduce(function (acc, key) {\n return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, key, undefined));\n }, {}));\n }\n };\n };\n};\nexport default connectAutocomplete;","import{createSuitMixin as e}from\"../mixins/suit.js\";import{createWidgetMixin as t}from\"../mixins/widget.js\";import{connectAutocomplete as o}from\"instantsearch.js/es/connectors/index.js\";export default{name:\"AisAutocomplete\",mixins:[t({connector:o},{$$widgetType:\"ais.autocomplete\"}),e({name:\"Autocomplete\"})],props:{escapeHTML:{type:Boolean,required:!1,default:!0}},computed:{widgetParams:function(){return{escapeHTML:this.escapeHTML}}}};\n//# sourceMappingURL=Autocomplete.vue_rollup-plugin-vue=script.js.map\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport { checkRendering, warning, createDocumentationMessageGenerator, isEqual, noop } from \"../../lib/utils/index.js\";\nvar withUsage = createDocumentationMessageGenerator({\n name: 'breadcrumb',\n connector: true\n});\nvar connectBreadcrumb = function connectBreadcrumb(renderFn) {\n var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n checkRendering(renderFn, withUsage());\n var connectorState = {};\n return function (widgetParams) {\n var _ref = widgetParams || {},\n attributes = _ref.attributes,\n _ref$separator = _ref.separator,\n separator = _ref$separator === void 0 ? ' > ' : _ref$separator,\n _ref$rootPath = _ref.rootPath,\n rootPath = _ref$rootPath === void 0 ? null : _ref$rootPath,\n _ref$transformItems = _ref.transformItems,\n transformItems = _ref$transformItems === void 0 ? function (items) {\n return items;\n } : _ref$transformItems;\n if (!attributes || !Array.isArray(attributes) || attributes.length === 0) {\n throw new Error(withUsage('The `attributes` option expects an array of strings.'));\n }\n var _attributes = _slicedToArray(attributes, 1),\n hierarchicalFacetName = _attributes[0];\n function getRefinedState(state, facetValue) {\n if (!facetValue) {\n var breadcrumb = state.getHierarchicalFacetBreadcrumb(hierarchicalFacetName);\n if (breadcrumb.length === 0) {\n return state;\n } else {\n return state.resetPage().toggleFacetRefinement(hierarchicalFacetName, breadcrumb[0]);\n }\n }\n return state.resetPage().toggleFacetRefinement(hierarchicalFacetName, facetValue);\n }\n return {\n $$type: 'ais.breadcrumb',\n init: function init(initOptions) {\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(initOptions)), {}, {\n instantSearchInstance: initOptions.instantSearchInstance\n }), true);\n },\n render: function render(renderOptions) {\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(renderOptions)), {}, {\n instantSearchInstance: renderOptions.instantSearchInstance\n }), false);\n },\n dispose: function dispose() {\n unmountFn();\n },\n getRenderState: function getRenderState(renderState, renderOptions) {\n return _objectSpread(_objectSpread({}, renderState), {}, {\n breadcrumb: _objectSpread(_objectSpread({}, renderState.breadcrumb), {}, _defineProperty({}, hierarchicalFacetName, this.getWidgetRenderState(renderOptions)))\n });\n },\n getWidgetRenderState: function getWidgetRenderState(_ref2) {\n var _this = this;\n var helper = _ref2.helper,\n createURL = _ref2.createURL,\n results = _ref2.results,\n state = _ref2.state;\n function getItems() {\n // The hierarchicalFacets condition is required for flavors\n // that render immediately with empty results, without relying\n // on init() (like React InstantSearch).\n if (!results || state.hierarchicalFacets.length === 0) {\n return [];\n }\n var _state$hierarchicalFa = _slicedToArray(state.hierarchicalFacets, 1),\n facetName = _state$hierarchicalFa[0].name;\n var facetValues = results.getFacetValues(facetName, {});\n var facetItems = facetValues && !Array.isArray(facetValues) && facetValues.data ? facetValues.data : [];\n var items = transformItems(shiftItemsValues(prepareItems(facetItems)), {\n results: results\n });\n return items;\n }\n var items = getItems();\n if (!connectorState.createURL) {\n connectorState.createURL = function (facetValue) {\n return createURL(function (uiState) {\n return _this.getWidgetUiState(uiState, {\n searchParameters: getRefinedState(helper.state, facetValue),\n helper: helper\n });\n });\n };\n }\n if (!connectorState.refine) {\n connectorState.refine = function (facetValue) {\n helper.setState(getRefinedState(helper.state, facetValue)).search();\n };\n }\n return {\n canRefine: items.length > 0,\n createURL: connectorState.createURL,\n items: items,\n refine: connectorState.refine,\n widgetParams: widgetParams\n };\n },\n getWidgetUiState: function getWidgetUiState(uiState, _ref3) {\n var searchParameters = _ref3.searchParameters;\n var path = searchParameters.getHierarchicalFacetBreadcrumb(hierarchicalFacetName);\n return removeEmptyRefinementsFromUiState(_objectSpread(_objectSpread({}, uiState), {}, {\n hierarchicalMenu: _objectSpread(_objectSpread({}, uiState.hierarchicalMenu), {}, _defineProperty({}, hierarchicalFacetName, path))\n }), hierarchicalFacetName);\n },\n getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref4) {\n var uiState = _ref4.uiState;\n var values = uiState.hierarchicalMenu && uiState.hierarchicalMenu[hierarchicalFacetName];\n if (searchParameters.isConjunctiveFacet(hierarchicalFacetName) || searchParameters.isDisjunctiveFacet(hierarchicalFacetName)) {\n process.env.NODE_ENV === 'development' ? warning(false, \"HierarchicalMenu: Attribute \\\"\".concat(hierarchicalFacetName, \"\\\" is already used by another widget applying conjunctive or disjunctive faceting.\\nAs this is not supported, please make sure to remove this other widget or this HierarchicalMenu widget will not work at all.\")) : void 0;\n return searchParameters;\n }\n if (searchParameters.isHierarchicalFacet(hierarchicalFacetName)) {\n var facet = searchParameters.getHierarchicalFacetByName(hierarchicalFacetName);\n process.env.NODE_ENV === 'development' ? warning(isEqual(facet.attributes, attributes) && facet.separator === separator && facet.rootPath === rootPath, 'Using Breadcrumb and HierarchicalMenu on the same facet with different options overrides the configuration of the HierarchicalMenu.') : void 0;\n }\n var withFacetConfiguration = searchParameters.removeHierarchicalFacet(hierarchicalFacetName).addHierarchicalFacet({\n name: hierarchicalFacetName,\n attributes: attributes,\n separator: separator,\n rootPath: rootPath\n });\n if (!values) {\n return withFacetConfiguration.setQueryParameters({\n hierarchicalFacetsRefinements: _objectSpread(_objectSpread({}, withFacetConfiguration.hierarchicalFacetsRefinements), {}, _defineProperty({}, hierarchicalFacetName, []))\n });\n }\n return withFacetConfiguration.addHierarchicalFacetRefinement(hierarchicalFacetName, values.join(separator));\n }\n };\n };\n};\nfunction prepareItems(data) {\n return data.reduce(function (result, currentItem) {\n if (currentItem.isRefined) {\n result.push({\n label: currentItem.name,\n value: currentItem.escapedValue\n });\n if (Array.isArray(currentItem.data)) {\n result = result.concat(prepareItems(currentItem.data));\n }\n }\n return result;\n }, []);\n}\nfunction shiftItemsValues(array) {\n return array.map(function (x, idx) {\n return {\n label: x.label,\n value: idx + 1 === array.length ? null : array[idx + 1].value\n };\n });\n}\nfunction removeEmptyRefinementsFromUiState(indexUiState, attribute) {\n if (!indexUiState.hierarchicalMenu) {\n return indexUiState;\n }\n if (!indexUiState.hierarchicalMenu[attribute] || !indexUiState.hierarchicalMenu[attribute].length) {\n delete indexUiState.hierarchicalMenu[attribute];\n }\n if (Object.keys(indexUiState.hierarchicalMenu).length === 0) {\n delete indexUiState.hierarchicalMenu;\n }\n return indexUiState;\n}\nexport default connectBreadcrumb;","export default function(n){return{all:n=n||new Map,on:function(t,e){var i=n.get(t);i&&i.push(e)||n.set(t,[e])},off:function(t,e){var i=n.get(t);i&&i.splice(i.indexOf(e)>>>0,1)},emit:function(t,e){(n.get(t)||[]).slice().map(function(n){n(e)}),(n.get(\"*\")||[]).slice().map(function(n){n(t,e)})}}}\n//# sourceMappingURL=mitt.es.js.map\n","import\"../util/vue-compat/index-vue2.js\";import t from\"mitt\";var e=\"instantSearchPanelEmitter\",n=\"PANEL_CHANGE_EVENT\",i=function(){var e;return(e={props:{emitter:{type:Object,required:!1,default:function(){return t()}}},provide:function(){var t;return(t={}).instantSearchPanelEmitter=this.emitter,t},data:function(){return{canRefine:!0}},created:function(){var t=this;this.emitter.on(\"PANEL_CHANGE_EVENT\",function(e){t.updateCanRefine(e)})}}).beforeDestroy=function(){this.emitter.all.clear()},e.methods={updateCanRefine:function(t){this.canRefine=t}},e},r=function(t){void 0===t&&(t={});var e=t.mapStateToCanRefine;return void 0===e&&(e=function(t){return Boolean(t.canRefine)}),{inject:{emitter:{from:\"instantSearchPanelEmitter\",default:function(){return{emit:function(){}}}}},data:function(){return{state:null,hasAlreadyEmitted:!1}},watch:{state:{immediate:!0,handler:function(t,n){if(t){var i=e(n||{}),r=e(t);this.hasAlreadyEmitted&&i===r||(this.emitter.emit(\"PANEL_CHANGE_EVENT\",r),this.hasAlreadyEmitted=!0)}}}}}};export{n as PANEL_CHANGE_EVENT,e as PANEL_EMITTER_NAMESPACE,r as createPanelConsumerMixin,i as createPanelProviderMixin};\n//# sourceMappingURL=panel.js.map\n","import{createSuitMixin as t}from\"../mixins/suit.js\";import{createWidgetMixin as r}from\"../mixins/widget.js\";import{connectBreadcrumb as e}from\"instantsearch.js/es/connectors/index.js\";import{createPanelConsumerMixin as s}from\"../mixins/panel.js\";export default{name:\"AisBreadcrumb\",mixins:[r({connector:e},{$$widgetType:\"ais.breadcrumb\"}),s(),t({name:\"Breadcrumb\"})],props:{attributes:{type:Array,required:!0},separator:{type:String,default:void 0},rootPath:{type:String,default:void 0},transformItems:{type:Function,default:void 0}},computed:{widgetParams:function(){return{attributes:this.attributes,separator:this.separator,rootPath:this.rootPath,transformItems:this.transformItems}}},methods:{isLastItem:function(t){return this.state.items.length-1===t}}};\n//# sourceMappingURL=Breadcrumb.vue_rollup-plugin-vue=script.js.map\n","/**\n * Clears the refinements of a SearchParameters object based on rules provided.\n * The included attributes list is applied before the excluded attributes list. If the list\n * is not provided, this list of all the currently refined attributes is used as included attributes.\n * @returns search parameters with refinements cleared\n */\nexport function clearRefinements(_ref) {\n var helper = _ref.helper,\n _ref$attributesToClea = _ref.attributesToClear,\n attributesToClear = _ref$attributesToClea === void 0 ? [] : _ref$attributesToClea;\n var finalState = helper.state.setPage(0);\n finalState = attributesToClear.reduce(function (state, attribute) {\n if (finalState.isNumericRefined(attribute)) {\n return state.removeNumericRefinement(attribute);\n }\n if (finalState.isHierarchicalFacet(attribute)) {\n return state.removeHierarchicalFacetRefinement(attribute);\n }\n if (finalState.isDisjunctiveFacet(attribute)) {\n return state.removeDisjunctiveFacetRefinement(attribute);\n }\n if (finalState.isConjunctiveFacet(attribute)) {\n return state.removeFacetRefinement(attribute);\n }\n return state;\n }, finalState);\n if (attributesToClear.indexOf('query') !== -1) {\n finalState = finalState.setQuery('');\n }\n return finalState;\n}","export function unescapeFacetValue(value) {\n if (typeof value === 'string') {\n return value.replace(/^\\\\-/, '-');\n }\n return value;\n}\nexport function escapeFacetValue(value) {\n if (typeof value === 'number' && value < 0 || typeof value === 'string') {\n return String(value).replace(/^-/, '\\\\-');\n }\n return value;\n}","import { unescapeFacetValue, escapeFacetValue } from \"./escapeFacetValue.js\";\nimport { find } from \"./find.js\";\nfunction getRefinement(state, type, attribute, name) {\n var resultsFacets = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];\n var res = {\n type: type,\n attribute: attribute,\n name: name,\n escapedValue: escapeFacetValue(name)\n };\n var facet = find(resultsFacets, function (resultsFacet) {\n return resultsFacet.name === attribute;\n });\n var count;\n if (type === 'hierarchical') {\n var facetDeclaration = state.getHierarchicalFacetByName(attribute);\n var nameParts = name.split(facetDeclaration.separator);\n var getFacetRefinement = function getFacetRefinement(facetData) {\n return function (refinementKey) {\n return facetData[refinementKey];\n };\n };\n var _loop = function _loop(i) {\n facet = facet && facet.data && find(Object.keys(facet.data).map(getFacetRefinement(facet.data)), function (refinement) {\n return refinement.name === nameParts[i];\n });\n };\n for (var i = 0; facet !== undefined && i < nameParts.length; ++i) {\n _loop(i);\n }\n count = facet && facet.count;\n } else {\n count = facet && facet.data && facet.data[res.name];\n }\n if (count !== undefined) {\n res.count = count;\n }\n if (facet && facet.exhaustive !== undefined) {\n res.exhaustive = facet.exhaustive;\n }\n return res;\n}\nexport function getRefinements(results, state) {\n var includesQuery = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var refinements = [];\n var _state$facetsRefineme = state.facetsRefinements,\n facetsRefinements = _state$facetsRefineme === void 0 ? {} : _state$facetsRefineme,\n _state$facetsExcludes = state.facetsExcludes,\n facetsExcludes = _state$facetsExcludes === void 0 ? {} : _state$facetsExcludes,\n _state$disjunctiveFac = state.disjunctiveFacetsRefinements,\n disjunctiveFacetsRefinements = _state$disjunctiveFac === void 0 ? {} : _state$disjunctiveFac,\n _state$hierarchicalFa = state.hierarchicalFacetsRefinements,\n hierarchicalFacetsRefinements = _state$hierarchicalFa === void 0 ? {} : _state$hierarchicalFa,\n _state$numericRefinem = state.numericRefinements,\n numericRefinements = _state$numericRefinem === void 0 ? {} : _state$numericRefinem,\n _state$tagRefinements = state.tagRefinements,\n tagRefinements = _state$tagRefinements === void 0 ? [] : _state$tagRefinements;\n Object.keys(facetsRefinements).forEach(function (attribute) {\n var refinementNames = facetsRefinements[attribute];\n refinementNames.forEach(function (refinementName) {\n refinements.push(getRefinement(state, 'facet', attribute, refinementName, results.facets));\n });\n });\n Object.keys(facetsExcludes).forEach(function (attribute) {\n var refinementNames = facetsExcludes[attribute];\n refinementNames.forEach(function (refinementName) {\n refinements.push({\n type: 'exclude',\n attribute: attribute,\n name: refinementName,\n exclude: true\n });\n });\n });\n Object.keys(disjunctiveFacetsRefinements).forEach(function (attribute) {\n var refinementNames = disjunctiveFacetsRefinements[attribute];\n refinementNames.forEach(function (refinementName) {\n refinements.push(getRefinement(state, 'disjunctive', attribute,\n // We unescape any disjunctive refined values with `unescapeFacetValue` because\n // they can be escaped on negative numeric values with `escapeFacetValue`.\n unescapeFacetValue(refinementName), results.disjunctiveFacets));\n });\n });\n Object.keys(hierarchicalFacetsRefinements).forEach(function (attribute) {\n var refinementNames = hierarchicalFacetsRefinements[attribute];\n refinementNames.forEach(function (refinement) {\n refinements.push(getRefinement(state, 'hierarchical', attribute, refinement, results.hierarchicalFacets));\n });\n });\n Object.keys(numericRefinements).forEach(function (attribute) {\n var operators = numericRefinements[attribute];\n Object.keys(operators).forEach(function (operatorOriginal) {\n var operator = operatorOriginal;\n var valueOrValues = operators[operator];\n var refinementNames = Array.isArray(valueOrValues) ? valueOrValues : [valueOrValues];\n refinementNames.forEach(function (refinementName) {\n refinements.push({\n type: 'numeric',\n attribute: attribute,\n name: \"\".concat(refinementName),\n numericValue: refinementName,\n operator: operator\n });\n });\n });\n });\n tagRefinements.forEach(function (refinementName) {\n refinements.push({\n type: 'tag',\n attribute: '_tags',\n name: refinementName\n });\n });\n if (includesQuery && state.query && state.query.trim()) {\n refinements.push({\n attribute: 'query',\n type: 'query',\n name: state.query,\n query: state.query\n });\n }\n return refinements;\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { checkRendering, clearRefinements, getRefinements, createDocumentationMessageGenerator, noop, uniq, mergeSearchParameters } from \"../../lib/utils/index.js\";\nvar withUsage = createDocumentationMessageGenerator({\n name: 'clear-refinements',\n connector: true\n});\nvar connectClearRefinements = function connectClearRefinements(renderFn) {\n var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n checkRendering(renderFn, withUsage());\n return function (widgetParams) {\n var _ref = widgetParams || {},\n _ref$includedAttribut = _ref.includedAttributes,\n includedAttributes = _ref$includedAttribut === void 0 ? [] : _ref$includedAttribut,\n _ref$excludedAttribut = _ref.excludedAttributes,\n excludedAttributes = _ref$excludedAttribut === void 0 ? ['query'] : _ref$excludedAttribut,\n _ref$transformItems = _ref.transformItems,\n transformItems = _ref$transformItems === void 0 ? function (items) {\n return items;\n } : _ref$transformItems;\n if (widgetParams && widgetParams.includedAttributes && widgetParams.excludedAttributes) {\n throw new Error(withUsage('The options `includedAttributes` and `excludedAttributes` cannot be used together.'));\n }\n var connectorState = {\n refine: noop,\n createURL: function createURL() {\n return '';\n },\n attributesToClear: []\n };\n var cachedRefine = function cachedRefine() {\n return connectorState.refine();\n };\n var cachedCreateURL = function cachedCreateURL() {\n return connectorState.createURL();\n };\n return {\n $$type: 'ais.clearRefinements',\n init: function init(initOptions) {\n var instantSearchInstance = initOptions.instantSearchInstance;\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(initOptions)), {}, {\n instantSearchInstance: instantSearchInstance\n }), true);\n },\n render: function render(renderOptions) {\n var instantSearchInstance = renderOptions.instantSearchInstance;\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(renderOptions)), {}, {\n instantSearchInstance: instantSearchInstance\n }), false);\n },\n dispose: function dispose() {\n unmountFn();\n },\n getRenderState: function getRenderState(renderState, renderOptions) {\n return _objectSpread(_objectSpread({}, renderState), {}, {\n clearRefinements: this.getWidgetRenderState(renderOptions)\n });\n },\n getWidgetRenderState: function getWidgetRenderState(_ref2) {\n var createURL = _ref2.createURL,\n scopedResults = _ref2.scopedResults,\n results = _ref2.results;\n connectorState.attributesToClear = scopedResults.reduce(function (attributesToClear, scopedResult) {\n return attributesToClear.concat(getAttributesToClear({\n scopedResult: scopedResult,\n includedAttributes: includedAttributes,\n excludedAttributes: excludedAttributes,\n transformItems: transformItems,\n results: results\n }));\n }, []);\n connectorState.refine = function () {\n connectorState.attributesToClear.forEach(function (_ref3) {\n var indexHelper = _ref3.helper,\n items = _ref3.items;\n indexHelper.setState(clearRefinements({\n helper: indexHelper,\n attributesToClear: items\n })).search();\n });\n };\n connectorState.createURL = function () {\n return createURL(mergeSearchParameters.apply(void 0, _toConsumableArray(connectorState.attributesToClear.map(function (_ref4) {\n var indexHelper = _ref4.helper,\n items = _ref4.items;\n return clearRefinements({\n helper: indexHelper,\n attributesToClear: items\n });\n }))));\n };\n var canRefine = connectorState.attributesToClear.some(function (attributeToClear) {\n return attributeToClear.items.length > 0;\n });\n return {\n canRefine: canRefine,\n hasRefinements: canRefine,\n refine: cachedRefine,\n createURL: cachedCreateURL,\n widgetParams: widgetParams\n };\n }\n };\n };\n};\nfunction getAttributesToClear(_ref5) {\n var scopedResult = _ref5.scopedResult,\n includedAttributes = _ref5.includedAttributes,\n excludedAttributes = _ref5.excludedAttributes,\n transformItems = _ref5.transformItems,\n results = _ref5.results;\n var includesQuery = includedAttributes.indexOf('query') !== -1 || excludedAttributes.indexOf('query') === -1;\n return {\n helper: scopedResult.helper,\n items: transformItems(uniq(getRefinements(scopedResult.results, scopedResult.helper.state, includesQuery).map(function (refinement) {\n return refinement.attribute;\n }).filter(function (attribute) {\n return (\n // If the array is empty (default case), we keep all the attributes\n includedAttributes.length === 0 ||\n // Otherwise, only add the specified attributes\n includedAttributes.indexOf(attribute) !== -1\n );\n }).filter(function (attribute) {\n return (\n // If the query is included, we ignore the default `excludedAttributes = ['query']`\n attribute === 'query' && includesQuery ||\n // Otherwise, ignore the excluded attributes\n excludedAttributes.indexOf(attribute) === -1\n );\n })), {\n results: results\n })\n };\n}\nexport default connectClearRefinements;","import{createSuitMixin as t}from\"../mixins/suit.js\";import{createWidgetMixin as e}from\"../mixins/widget.js\";import{connectClearRefinements as i}from\"instantsearch.js/es/connectors/index.js\";import{createPanelConsumerMixin as s}from\"../mixins/panel.js\";export default{name:\"AisClearRefinements\",mixins:[e({connector:i},{$$widgetType:\"ais.clearRefinements\"}),s(),t({name:\"ClearRefinements\"})],props:{excludedAttributes:{type:Array,default:void 0},includedAttributes:{type:Array,default:void 0},transformItems:{type:Function,default:void 0}},computed:{widgetParams:function(){return{includedAttributes:this.includedAttributes,excludedAttributes:this.excludedAttributes,transformItems:this.transformItems}},canRefine:function(){return this.state.hasRefinements}}};\n//# sourceMappingURL=ClearRefinements.vue_rollup-plugin-vue=script.js.map\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport algoliasearchHelper from 'algoliasearch-helper';\nimport { createDocumentationMessageGenerator, isPlainObject, mergeSearchParameters, noop } from \"../../lib/utils/index.js\";\n\n/**\n * Refine the given search parameters.\n */\n\nvar withUsage = createDocumentationMessageGenerator({\n name: 'configure',\n connector: true\n});\nfunction getInitialSearchParameters(state, widgetParams) {\n // We leverage the helper internals to remove the `widgetParams` from\n // the state. The function `setQueryParameters` omits the values that\n // are `undefined` on the next state.\n return state.setQueryParameters(Object.keys(widgetParams.searchParameters).reduce(function (acc, key) {\n return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, key, undefined));\n }, {}));\n}\nvar connectConfigure = function connectConfigure() {\n var renderFn = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : noop;\n var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n return function (widgetParams) {\n if (!widgetParams || !isPlainObject(widgetParams.searchParameters)) {\n throw new Error(withUsage('The `searchParameters` option expects an object.'));\n }\n var connectorState = {};\n function refine(helper) {\n return function (searchParameters) {\n // Merge new `searchParameters` with the ones set from other widgets\n var actualState = getInitialSearchParameters(helper.state, widgetParams);\n var nextSearchParameters = mergeSearchParameters(actualState, new algoliasearchHelper.SearchParameters(searchParameters));\n\n // Update original `widgetParams.searchParameters` to the new refined one\n widgetParams.searchParameters = searchParameters;\n\n // Trigger a search with the resolved search parameters\n helper.setState(nextSearchParameters).search();\n };\n }\n return {\n $$type: 'ais.configure',\n init: function init(initOptions) {\n var instantSearchInstance = initOptions.instantSearchInstance;\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(initOptions)), {}, {\n instantSearchInstance: instantSearchInstance\n }), true);\n },\n render: function render(renderOptions) {\n var instantSearchInstance = renderOptions.instantSearchInstance;\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(renderOptions)), {}, {\n instantSearchInstance: instantSearchInstance\n }), false);\n },\n dispose: function dispose(_ref) {\n var state = _ref.state;\n unmountFn();\n return getInitialSearchParameters(state, widgetParams);\n },\n getRenderState: function getRenderState(renderState, renderOptions) {\n var _renderState$configur;\n var widgetRenderState = this.getWidgetRenderState(renderOptions);\n return _objectSpread(_objectSpread({}, renderState), {}, {\n configure: _objectSpread(_objectSpread({}, widgetRenderState), {}, {\n widgetParams: _objectSpread(_objectSpread({}, widgetRenderState.widgetParams), {}, {\n searchParameters: mergeSearchParameters(new algoliasearchHelper.SearchParameters((_renderState$configur = renderState.configure) === null || _renderState$configur === void 0 ? void 0 : _renderState$configur.widgetParams.searchParameters), new algoliasearchHelper.SearchParameters(widgetRenderState.widgetParams.searchParameters)).getQueryParams()\n })\n })\n });\n },\n getWidgetRenderState: function getWidgetRenderState(_ref2) {\n var helper = _ref2.helper;\n if (!connectorState.refine) {\n connectorState.refine = refine(helper);\n }\n return {\n refine: connectorState.refine,\n widgetParams: widgetParams\n };\n },\n getWidgetSearchParameters: function getWidgetSearchParameters(state, _ref3) {\n var uiState = _ref3.uiState;\n return mergeSearchParameters(state, new algoliasearchHelper.SearchParameters(_objectSpread(_objectSpread({}, uiState.configure), widgetParams.searchParameters)));\n },\n getWidgetUiState: function getWidgetUiState(uiState) {\n return _objectSpread(_objectSpread({}, uiState), {}, {\n configure: _objectSpread(_objectSpread({}, uiState.configure), widgetParams.searchParameters)\n });\n }\n };\n };\n};\nexport default connectConfigure;","import{createSuitMixin as t}from\"../mixins/suit.js\";import{renderCompat as e}from\"../util/vue-compat/index-vue2.js\";import{createWidgetMixin as s}from\"../mixins/widget.js\";import{connectConfigure as i}from\"instantsearch.js/es/connectors/index.js\";export default{inheritAttrs:!1,name:\"AisConfigure\",mixins:[t({name:\"Configure\"}),s({connector:i},{$$widgetType:\"ais.configure\"})],computed:{widgetParams:function(){return{searchParameters:this.$attrs}}},render:e(function(t){var e=this.$scopedSlots.default;return this.state&&e?t(\"div\",{class:this.suit()},[e({refine:this.state.refine,searchParameters:this.state.widgetParams.searchParameters})]):null})};\n//# sourceMappingURL=Configure.js.map\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport algoliasearchHelper from 'algoliasearch-helper';\nimport { createDocumentationMessageGenerator, getObjectType, warning, getPropertyByPath } from \"../../lib/utils/index.js\";\nimport connectConfigure from \"../configure/connectConfigure.js\";\nvar withUsage = createDocumentationMessageGenerator({\n name: 'configure-related-items',\n connector: true\n});\nfunction createOptionalFilter(_ref) {\n var attributeName = _ref.attributeName,\n attributeValue = _ref.attributeValue,\n attributeScore = _ref.attributeScore;\n return \"\".concat(attributeName, \":\").concat(attributeValue, \"\");\n}\nvar connectConfigureRelatedItems = function connectConfigureRelatedItems(renderFn, unmountFn) {\n return function (widgetParams) {\n var _ref2 = widgetParams || {},\n hit = _ref2.hit,\n matchingPatterns = _ref2.matchingPatterns,\n _ref2$transformSearch = _ref2.transformSearchParameters,\n transformSearchParameters = _ref2$transformSearch === void 0 ? function (x) {\n return x;\n } : _ref2$transformSearch;\n if (!hit) {\n throw new Error(withUsage('The `hit` option is required.'));\n }\n if (!matchingPatterns) {\n throw new Error(withUsage('The `matchingPatterns` option is required.'));\n }\n var optionalFilters = Object.keys(matchingPatterns).reduce(function (acc, attributeName) {\n var attribute = matchingPatterns[attributeName];\n var attributeValue = getPropertyByPath(hit, attributeName);\n var attributeScore = attribute.score;\n if (Array.isArray(attributeValue)) {\n return [].concat(_toConsumableArray(acc), [attributeValue.map(function (attributeSubValue) {\n return createOptionalFilter({\n attributeName: attributeName,\n attributeValue: attributeSubValue,\n attributeScore: attributeScore\n });\n })]);\n }\n if (typeof attributeValue === 'string') {\n return [].concat(_toConsumableArray(acc), [createOptionalFilter({\n attributeName: attributeName,\n attributeValue: attributeValue,\n attributeScore: attributeScore\n })]);\n }\n process.env.NODE_ENV === 'development' ? warning(false, \"\\nThe `matchingPatterns` option returned a value of type \".concat(getObjectType(attributeValue), \" for the \\\"\").concat(attributeName, \"\\\" key. This value was not sent to Algolia because `optionalFilters` only supports strings and array of strings.\\n\\nYou can remove the \\\"\").concat(attributeName, \"\\\" key from the `matchingPatterns` option.\\n\\nSee https://www.algolia.com/doc/api-reference/api-parameters/optionalFilters/\\n \")) : void 0;\n return acc;\n }, []);\n var searchParameters = _objectSpread({}, transformSearchParameters(new algoliasearchHelper.SearchParameters({\n sumOrFiltersScores: true,\n facetFilters: [\"objectID:-\".concat(hit.objectID)],\n optionalFilters: optionalFilters\n })));\n var makeWidget = connectConfigure(renderFn, unmountFn);\n return _objectSpread(_objectSpread({}, makeWidget({\n searchParameters: searchParameters\n })), {}, {\n $$type: 'ais.configureRelatedItems'\n });\n };\n};\nexport default connectConfigureRelatedItems;","import{createWidgetMixin as e}from\"../mixins/widget.js\";import{EXPERIMENTAL_connectConfigureRelatedItems as t}from\"instantsearch.js/es/connectors/index.js\";export default{inheritAttrs:!1,name:\"AisExperimentalConfigureRelatedItems\",mixins:[e({connector:t},{$$widgetType:\"ais.configureRelatedItems\"})],props:{hit:{type:Object,required:!0},matchingPatterns:{type:Object,required:!0},transformSearchParameters:{type:Function,required:!1}},computed:{widgetParams:function(){return{hit:this.hit,matchingPatterns:this.matchingPatterns,transformSearchParameters:this.transformSearchParameters}}},render:function(){return null}};\n//# sourceMappingURL=ConfigureRelatedItems.js.map\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { getRefinements, checkRendering, createDocumentationMessageGenerator, noop, warning } from \"../../lib/utils/index.js\";\nvar withUsage = createDocumentationMessageGenerator({\n name: 'current-refinements',\n connector: true\n});\nvar connectCurrentRefinements = function connectCurrentRefinements(renderFn) {\n var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n checkRendering(renderFn, withUsage());\n return function (widgetParams) {\n if ((widgetParams || {}).includedAttributes && (widgetParams || {}).excludedAttributes) {\n throw new Error(withUsage('The options `includedAttributes` and `excludedAttributes` cannot be used together.'));\n }\n var _ref = widgetParams || {},\n includedAttributes = _ref.includedAttributes,\n _ref$excludedAttribut = _ref.excludedAttributes,\n excludedAttributes = _ref$excludedAttribut === void 0 ? ['query'] : _ref$excludedAttribut,\n _ref$transformItems = _ref.transformItems,\n transformItems = _ref$transformItems === void 0 ? function (items) {\n return items;\n } : _ref$transformItems;\n return {\n $$type: 'ais.currentRefinements',\n init: function init(initOptions) {\n var instantSearchInstance = initOptions.instantSearchInstance;\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(initOptions)), {}, {\n instantSearchInstance: instantSearchInstance\n }), true);\n },\n render: function render(renderOptions) {\n var instantSearchInstance = renderOptions.instantSearchInstance;\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(renderOptions)), {}, {\n instantSearchInstance: instantSearchInstance\n }), false);\n },\n dispose: function dispose() {\n unmountFn();\n },\n getRenderState: function getRenderState(renderState, renderOptions) {\n return _objectSpread(_objectSpread({}, renderState), {}, {\n currentRefinements: this.getWidgetRenderState(renderOptions)\n });\n },\n getWidgetRenderState: function getWidgetRenderState(_ref2) {\n var results = _ref2.results,\n scopedResults = _ref2.scopedResults,\n _createURL = _ref2.createURL,\n helper = _ref2.helper;\n function getItems() {\n if (!results) {\n return transformItems(getRefinementsItems({\n results: {},\n helper: helper,\n indexId: helper.state.index,\n includedAttributes: includedAttributes,\n excludedAttributes: excludedAttributes\n }), {\n results: results\n });\n }\n return scopedResults.reduce(function (accResults, scopedResult) {\n return accResults.concat(transformItems(getRefinementsItems({\n results: scopedResult.results,\n helper: scopedResult.helper,\n indexId: scopedResult.indexId,\n includedAttributes: includedAttributes,\n excludedAttributes: excludedAttributes\n }), {\n results: results\n }));\n }, []);\n }\n var items = getItems();\n return {\n items: items,\n canRefine: items.length > 0,\n refine: function refine(refinement) {\n return clearRefinement(helper, refinement);\n },\n createURL: function createURL(refinement) {\n return _createURL(clearRefinementFromState(helper.state, refinement));\n },\n widgetParams: widgetParams\n };\n }\n };\n };\n};\nfunction getRefinementsItems(_ref3) {\n var results = _ref3.results,\n helper = _ref3.helper,\n indexId = _ref3.indexId,\n includedAttributes = _ref3.includedAttributes,\n excludedAttributes = _ref3.excludedAttributes;\n var includesQuery = (includedAttributes || []).indexOf('query') !== -1 || (excludedAttributes || []).indexOf('query') === -1;\n var filterFunction = includedAttributes ? function (item) {\n return includedAttributes.indexOf(item.attribute) !== -1;\n } : function (item) {\n return excludedAttributes.indexOf(item.attribute) === -1;\n };\n var items = getRefinements(results, helper.state, includesQuery).map(normalizeRefinement).filter(filterFunction);\n return items.reduce(function (allItems, currentItem) {\n return [].concat(_toConsumableArray(allItems.filter(function (item) {\n return item.attribute !== currentItem.attribute;\n })), [{\n indexName: helper.state.index,\n indexId: indexId,\n attribute: currentItem.attribute,\n label: currentItem.attribute,\n refinements: items.filter(function (result) {\n return result.attribute === currentItem.attribute;\n })\n // We want to keep the order of refinements except the numeric ones.\n .sort(function (a, b) {\n return a.type === 'numeric' ? a.value - b.value : 0;\n }),\n refine: function refine(refinement) {\n return clearRefinement(helper, refinement);\n }\n }]);\n }, []);\n}\nfunction clearRefinementFromState(state, refinement) {\n state = state.resetPage();\n switch (refinement.type) {\n case 'facet':\n return state.removeFacetRefinement(refinement.attribute, String(refinement.value));\n case 'disjunctive':\n return state.removeDisjunctiveFacetRefinement(refinement.attribute, String(refinement.value));\n case 'hierarchical':\n return state.removeHierarchicalFacetRefinement(refinement.attribute);\n case 'exclude':\n return state.removeExcludeRefinement(refinement.attribute, String(refinement.value));\n case 'numeric':\n return state.removeNumericRefinement(refinement.attribute, refinement.operator, String(refinement.value));\n case 'tag':\n return state.removeTagRefinement(String(refinement.value));\n case 'query':\n return state.setQueryParameter('query', '');\n default:\n process.env.NODE_ENV === 'development' ? warning(false, \"The refinement type \\\"\".concat(refinement.type, \"\\\" does not exist and cannot be cleared from the current refinements.\")) : void 0;\n return state;\n }\n}\nfunction clearRefinement(helper, refinement) {\n helper.setState(clearRefinementFromState(helper.state, refinement)).search();\n}\nfunction getOperatorSymbol(operator) {\n switch (operator) {\n case '>=':\n return '≥';\n case '<=':\n return '≤';\n default:\n return operator;\n }\n}\nfunction normalizeRefinement(refinement) {\n var value = getValue(refinement);\n var label = refinement.operator ? \"\".concat(getOperatorSymbol(refinement.operator), \" \").concat(refinement.name) : refinement.name;\n var normalizedRefinement = {\n attribute: refinement.attribute,\n type: refinement.type,\n value: value,\n label: label\n };\n if (refinement.operator !== undefined) {\n normalizedRefinement.operator = refinement.operator;\n }\n if (refinement.count !== undefined) {\n normalizedRefinement.count = refinement.count;\n }\n if (refinement.exhaustive !== undefined) {\n normalizedRefinement.exhaustive = refinement.exhaustive;\n }\n return normalizedRefinement;\n}\nfunction getValue(refinement) {\n if (refinement.type === 'numeric') {\n return Number(refinement.name);\n }\n if ('escapedValue' in refinement) {\n return refinement.escapedValue;\n }\n return refinement.name;\n}\nexport default connectCurrentRefinements;","import{createSuitMixin as t}from\"../mixins/suit.js\";import{createWidgetMixin as e}from\"../mixins/widget.js\";import{connectCurrentRefinements as i}from\"instantsearch.js/es/connectors/index.js\";import{createPanelConsumerMixin as r}from\"../mixins/panel.js\";export default{name:\"AisCurrentRefinements\",mixins:[t({name:\"CurrentRefinements\"}),e({connector:i},{$$widgetType:\"ais.currentRefinements\"}),r()],props:{includedAttributes:{type:Array,default:void 0},excludedAttributes:{type:Array,default:void 0},transformItems:{type:Function,default:void 0}},computed:{noRefinement:function(){return this.state&&0===this.state.items.length},widgetParams:function(){return{includedAttributes:this.includedAttributes,excludedAttributes:this.excludedAttributes,transformItems:this.transformItems}}},methods:{createItemKey:function(t){var e=t.attribute,i=t.value;return[e,t.type,i,t.operator].join(\":\")},capitalize:function(t){return t?t.toString().charAt(0).toLocaleUpperCase()+t.toString().slice(1):\"\"}}};\n//# sourceMappingURL=CurrentRefinements.vue_rollup-plugin-vue=script.js.map\n","export function isFacetRefined(helper, facet, value) {\n if (helper.state.isHierarchicalFacet(facet)) {\n return helper.state.isHierarchicalFacetRefined(facet, value);\n } else if (helper.state.isConjunctiveFacet(facet)) {\n return helper.state.isFacetRefined(facet, value);\n } else {\n return helper.state.isDisjunctiveFacetRefined(facet, value);\n }\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport { isFacetRefined } from \"./isFacetRefined.js\";\nexport function createSendEventForFacet(_ref) {\n var instantSearchInstance = _ref.instantSearchInstance,\n helper = _ref.helper,\n attr = _ref.attribute,\n widgetType = _ref.widgetType;\n var sendEventForFacet = function sendEventForFacet() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var facetValue = args[1],\n _args$ = args[2],\n eventName = _args$ === void 0 ? 'Filter Applied' : _args$,\n _args$2 = args[3],\n additionalData = _args$2 === void 0 ? {} : _args$2;\n var _args$0$split = args[0].split(':'),\n _args$0$split2 = _slicedToArray(_args$0$split, 2),\n eventType = _args$0$split2[0],\n eventModifier = _args$0$split2[1];\n var attribute = typeof attr === 'string' ? attr : attr(facetValue);\n if (args.length === 1 && _typeof(args[0]) === 'object') {\n instantSearchInstance.sendEventToInsights(args[0]);\n } else if (eventType === 'click' && args.length >= 2 && args.length <= 4) {\n if (!isFacetRefined(helper, attribute, facetValue)) {\n // send event only when the facet is being checked \"ON\"\n instantSearchInstance.sendEventToInsights({\n insightsMethod: 'clickedFilters',\n widgetType: widgetType,\n eventType: eventType,\n eventModifier: eventModifier,\n payload: _objectSpread({\n eventName: eventName,\n index: helper.getIndex(),\n filters: [\"\".concat(attribute, \":\").concat(facetValue)]\n }, additionalData),\n attribute: attribute\n });\n }\n } else if (process.env.NODE_ENV === 'development') {\n throw new Error(\"You need to pass between two and four arguments like:\\n sendEvent('click', facetValue, eventName?, additionalData?);\\n\\nIf you want to send a custom payload, you can pass one object: sendEvent(customPayload);\\n\");\n }\n };\n return sendEventForFacet;\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nvar _excluded = [\"name\", \"escapedValue\", \"data\", \"path\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport { checkRendering, warning, createDocumentationMessageGenerator, createSendEventForFacet, isEqual, noop } from \"../../lib/utils/index.js\";\nvar withUsage = createDocumentationMessageGenerator({\n name: 'hierarchical-menu',\n connector: true\n});\nvar DEFAULT_SORT = ['name:asc'];\n/**\n * **HierarchicalMenu** connector provides the logic to build a custom widget\n * that will give the user the ability to explore facets in a tree-like structure.\n *\n * This is commonly used for multi-level categorization of products on e-commerce\n * websites. From a UX point of view, we suggest not displaying more than two\n * levels deep.\n *\n * @type {Connector}\n * @param {function(HierarchicalMenuRenderingOptions, boolean)} renderFn Rendering function for the custom **HierarchicalMenu** widget.\n * @param {function} unmountFn Unmount function called when the widget is disposed.\n * @return {function(CustomHierarchicalMenuWidgetParams)} Re-usable widget factory for a custom **HierarchicalMenu** widget.\n */\nvar connectHierarchicalMenu = function connectHierarchicalMenu(renderFn) {\n var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n checkRendering(renderFn, withUsage());\n return function (widgetParams) {\n var _ref = widgetParams || {},\n attributes = _ref.attributes,\n _ref$separator = _ref.separator,\n separator = _ref$separator === void 0 ? ' > ' : _ref$separator,\n _ref$rootPath = _ref.rootPath,\n rootPath = _ref$rootPath === void 0 ? null : _ref$rootPath,\n _ref$showParentLevel = _ref.showParentLevel,\n showParentLevel = _ref$showParentLevel === void 0 ? true : _ref$showParentLevel,\n _ref$limit = _ref.limit,\n limit = _ref$limit === void 0 ? 10 : _ref$limit,\n _ref$showMore = _ref.showMore,\n showMore = _ref$showMore === void 0 ? false : _ref$showMore,\n _ref$showMoreLimit = _ref.showMoreLimit,\n showMoreLimit = _ref$showMoreLimit === void 0 ? 20 : _ref$showMoreLimit,\n _ref$sortBy = _ref.sortBy,\n sortBy = _ref$sortBy === void 0 ? DEFAULT_SORT : _ref$sortBy,\n _ref$transformItems = _ref.transformItems,\n transformItems = _ref$transformItems === void 0 ? function (items) {\n return items;\n } : _ref$transformItems;\n if (!attributes || !Array.isArray(attributes) || attributes.length === 0) {\n throw new Error(withUsage('The `attributes` option expects an array of strings.'));\n }\n if (showMore === true && showMoreLimit <= limit) {\n throw new Error(withUsage('The `showMoreLimit` option must be greater than `limit`.'));\n }\n // we need to provide a hierarchicalFacet name for the search state\n // so that we can always map $hierarchicalFacetName => real attributes\n // we use the first attribute name\n var _attributes = _slicedToArray(attributes, 1),\n hierarchicalFacetName = _attributes[0];\n var sendEvent;\n\n // Provide the same function to the `renderFn` so that way the user\n // has to only bind it once when `isFirstRendering` for instance\n var toggleShowMore = function toggleShowMore() {};\n function cachedToggleShowMore() {\n toggleShowMore();\n }\n var _refine;\n var isShowingMore = false;\n function createToggleShowMore(renderOptions, widget) {\n return function () {\n isShowingMore = !isShowingMore;\n widget.render(renderOptions);\n };\n }\n function getLimit() {\n return isShowingMore ? showMoreLimit : limit;\n }\n function _prepareFacetValues(facetValues) {\n return facetValues.slice(0, getLimit()).map(function (_ref2) {\n var label = _ref2.name,\n value = _ref2.escapedValue,\n data = _ref2.data,\n path = _ref2.path,\n subValue = _objectWithoutProperties(_ref2, _excluded);\n var item = _objectSpread(_objectSpread({}, subValue), {}, {\n value: value,\n label: label,\n data: null\n });\n if (Array.isArray(data)) {\n item.data = _prepareFacetValues(data);\n }\n return item;\n });\n }\n return {\n $$type: 'ais.hierarchicalMenu',\n init: function init(initOptions) {\n var instantSearchInstance = initOptions.instantSearchInstance;\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(initOptions)), {}, {\n instantSearchInstance: instantSearchInstance\n }), true);\n },\n render: function render(renderOptions) {\n var instantSearchInstance = renderOptions.instantSearchInstance;\n toggleShowMore = createToggleShowMore(renderOptions, this);\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(renderOptions)), {}, {\n instantSearchInstance: instantSearchInstance\n }), false);\n },\n dispose: function dispose(_ref3) {\n var state = _ref3.state;\n unmountFn();\n return state.removeHierarchicalFacet(hierarchicalFacetName).setQueryParameter('maxValuesPerFacet', undefined);\n },\n getRenderState: function getRenderState(renderState, renderOptions) {\n return _objectSpread(_objectSpread({}, renderState), {}, {\n hierarchicalMenu: _objectSpread(_objectSpread({}, renderState.hierarchicalMenu), {}, _defineProperty({}, hierarchicalFacetName, this.getWidgetRenderState(renderOptions)))\n });\n },\n getWidgetRenderState: function getWidgetRenderState(_ref4) {\n var _this = this;\n var results = _ref4.results,\n state = _ref4.state,\n createURL = _ref4.createURL,\n instantSearchInstance = _ref4.instantSearchInstance,\n helper = _ref4.helper;\n var items = [];\n var canToggleShowMore = false;\n\n // Bind createURL to this specific attribute\n var _createURL = function _createURL(facetValue) {\n return createURL(function (uiState) {\n return _this.getWidgetUiState(uiState, {\n searchParameters: state.resetPage().toggleFacetRefinement(hierarchicalFacetName, facetValue),\n helper: helper\n });\n });\n };\n if (!sendEvent) {\n sendEvent = createSendEventForFacet({\n instantSearchInstance: instantSearchInstance,\n helper: helper,\n attribute: function attribute(facetValue) {\n var index = facetValue.split(separator).length - 1;\n return attributes[index];\n },\n widgetType: this.$$type\n });\n }\n if (!_refine) {\n _refine = function _refine(facetValue) {\n sendEvent('click:internal', facetValue);\n helper.toggleFacetRefinement(hierarchicalFacetName, facetValue).search();\n };\n }\n if (results) {\n var facetValues = results.getFacetValues(hierarchicalFacetName, {\n sortBy: sortBy,\n facetOrdering: sortBy === DEFAULT_SORT\n });\n var facetItems = facetValues && !Array.isArray(facetValues) && facetValues.data ? facetValues.data : [];\n\n // If the limit is the max number of facet retrieved it is impossible to know\n // if the facets are exhaustive. The only moment we are sure it is exhaustive\n // is when it is strictly under the number requested unless we know that another\n // widget has requested more values (maxValuesPerFacet > getLimit()).\n // Because this is used for making the search of facets unable or not, it is important\n // to be conservative here.\n var hasExhaustiveItems = (state.maxValuesPerFacet || 0) > getLimit() ? facetItems.length <= getLimit() : facetItems.length < getLimit();\n canToggleShowMore = showMore && (isShowingMore || !hasExhaustiveItems);\n items = transformItems(_prepareFacetValues(facetItems), {\n results: results\n });\n }\n return {\n items: items,\n refine: _refine,\n canRefine: items.length > 0,\n createURL: _createURL,\n sendEvent: sendEvent,\n widgetParams: widgetParams,\n isShowingMore: isShowingMore,\n toggleShowMore: cachedToggleShowMore,\n canToggleShowMore: canToggleShowMore\n };\n },\n getWidgetUiState: function getWidgetUiState(uiState, _ref5) {\n var searchParameters = _ref5.searchParameters;\n var path = searchParameters.getHierarchicalFacetBreadcrumb(hierarchicalFacetName);\n return removeEmptyRefinementsFromUiState(_objectSpread(_objectSpread({}, uiState), {}, {\n hierarchicalMenu: _objectSpread(_objectSpread({}, uiState.hierarchicalMenu), {}, _defineProperty({}, hierarchicalFacetName, path))\n }), hierarchicalFacetName);\n },\n getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref6) {\n var uiState = _ref6.uiState;\n var values = uiState.hierarchicalMenu && uiState.hierarchicalMenu[hierarchicalFacetName];\n if (searchParameters.isConjunctiveFacet(hierarchicalFacetName) || searchParameters.isDisjunctiveFacet(hierarchicalFacetName)) {\n process.env.NODE_ENV === 'development' ? warning(false, \"HierarchicalMenu: Attribute \\\"\".concat(hierarchicalFacetName, \"\\\" is already used by another widget applying conjunctive or disjunctive faceting.\\nAs this is not supported, please make sure to remove this other widget or this HierarchicalMenu widget will not work at all.\")) : void 0;\n return searchParameters;\n }\n if (searchParameters.isHierarchicalFacet(hierarchicalFacetName)) {\n var facet = searchParameters.getHierarchicalFacetByName(hierarchicalFacetName);\n process.env.NODE_ENV === 'development' ? warning(isEqual(facet.attributes, attributes) && facet.separator === separator && facet.rootPath === rootPath, 'Using Breadcrumb and HierarchicalMenu on the same facet with different options overrides the configuration of the HierarchicalMenu.') : void 0;\n }\n var withFacetConfiguration = searchParameters.removeHierarchicalFacet(hierarchicalFacetName).addHierarchicalFacet({\n name: hierarchicalFacetName,\n attributes: attributes,\n separator: separator,\n rootPath: rootPath,\n showParentLevel: showParentLevel\n });\n var currentMaxValuesPerFacet = withFacetConfiguration.maxValuesPerFacet || 0;\n var nextMaxValuesPerFacet = Math.max(currentMaxValuesPerFacet, showMore ? showMoreLimit : limit);\n var withMaxValuesPerFacet = withFacetConfiguration.setQueryParameter('maxValuesPerFacet', nextMaxValuesPerFacet);\n if (!values) {\n return withMaxValuesPerFacet.setQueryParameters({\n hierarchicalFacetsRefinements: _objectSpread(_objectSpread({}, withMaxValuesPerFacet.hierarchicalFacetsRefinements), {}, _defineProperty({}, hierarchicalFacetName, []))\n });\n }\n return withMaxValuesPerFacet.addHierarchicalFacetRefinement(hierarchicalFacetName, values.join(separator));\n }\n };\n };\n};\nfunction removeEmptyRefinementsFromUiState(indexUiState, attribute) {\n if (!indexUiState.hierarchicalMenu) {\n return indexUiState;\n }\n if (!indexUiState.hierarchicalMenu[attribute] || indexUiState.hierarchicalMenu[attribute].length === 0) {\n delete indexUiState.hierarchicalMenu[attribute];\n }\n if (Object.keys(indexUiState.hierarchicalMenu).length === 0) {\n delete indexUiState.hierarchicalMenu;\n }\n return indexUiState;\n}\nexport default connectHierarchicalMenu;","export default{name:\"HierarchicalMenuList\",props:{items:{type:Array,required:!0},level:{type:Number,required:!0},refine:{type:Function,required:!0},createURL:{type:Function,required:!0},suit:{type:Function,required:!0}}};\n//# sourceMappingURL=HierarchicalMenuList.vue_rollup-plugin-vue=script.js.map\n","import{createSuitMixin as t}from\"../mixins/suit.js\";import{createWidgetMixin as e}from\"../mixins/widget.js\";import{connectHierarchicalMenu as i}from\"instantsearch.js/es/connectors/index.js\";import{createPanelConsumerMixin as r}from\"../mixins/panel.js\";import o from\"./HierarchicalMenuList.vue.js\";export default{name:\"AisHierarchicalMenu\",mixins:[t({name:\"HierarchicalMenu\"}),e({connector:i},{$$widgetType:\"ais.hierarchicalMenu\"}),r()],components:{HierarchicalMenuList:o},props:{attributes:{type:Array,required:!0},limit:{type:Number,default:void 0},showMoreLimit:{type:Number,default:void 0},showMore:{type:Boolean,default:!1},sortBy:{type:[Array,Function],default:void 0},separator:{type:String,default:void 0},rootPath:{type:String,default:void 0},showParentLevel:{type:Boolean,default:void 0},transformItems:{type:Function,default:void 0}},computed:{widgetParams:function(){return{attributes:this.attributes,limit:this.limit,showMore:this.showMore,showMoreLimit:this.showMoreLimit,separator:this.separator,rootPath:this.rootPath,showParentLevel:this.showParentLevel,sortBy:this.sortBy,transformItems:this.transformItems}}}};\n//# sourceMappingURL=HierarchicalMenu.vue_rollup-plugin-vue=script.js.map\n","var t={\"&\":\"&\",\"<\":\"<\",\">\":\">\",\""\":'\"',\"'\":\"'\"},e=/&(?:amp|lt|gt|quot|#39);/g,r=RegExp(e.source);function u(u){return u&&r.test(u)?u.replace(e,function(e){return t[e]}):u}export{u as unescape};\n//# sourceMappingURL=unescape.js.map\n","import{getPropertyByPath as i}from\"instantsearch.js/es/lib/utils/index.js\";import{unescape as h}from\"./unescape.js\";var t={highlightPreTag:\"__ais-highlight__\",highlightPostTag:\"__/ais-highlight__\"};function r(i){var h=i.preTag,t=i.postTag,r=i.highlightedValue;void 0===r&&(r=\"\");var a=r.split(h),g=a.shift(),e=\"\"===g?[]:[{value:g,isHighlighted:!1}];if(t===h){var s=!0;a.forEach(function(i){e.push({value:i,isHighlighted:s}),s=!s})}else a.forEach(function(i){var h=i.split(t);e.push({value:h[0],isHighlighted:!0}),\"\"!==h[1]&&e.push({value:\" \"===h[1]?\" \":h[1],isHighlighted:!1})});return e}function a(a){var g=a.preTag;void 0===g&&(g=t.highlightPreTag);var e=a.postTag;void 0===e&&(e=t.highlightPostTag);var s=a.highlightProperty,l=a.attribute,o=a.hit;if(!o)throw new Error(\"`hit`, the matching record, must be provided\");var u=i(o[s],l)||{};return Array.isArray(u)?u.map(function(i){return r({preTag:g,postTag:e,highlightedValue:h(i.value)})}):r({preTag:g,postTag:e,highlightedValue:h(u.value)})}export{a as parseAlgoliaHit};\n//# sourceMappingURL=parseAlgoliaHit.js.map\n","import{parseAlgoliaHit as t}from\"../../parseAlgoliaHit.js\";var e={render:function(){return this.$slots.default}};export default{name:\"AisHighlighter\",props:{hit:{type:Object,required:!0},attribute:{type:String,required:!0},highlightedTagName:{type:String,default:\"mark\"},suit:{type:Function,required:!0},highlightProperty:{type:String,required:!0},preTag:{type:String,required:!0},postTag:{type:String,required:!0}},data:function(){return{TextNode:e}},computed:{parsedHighlights:function(){return t({attribute:this.attribute,hit:this.hit,highlightProperty:this.highlightProperty,preTag:this.preTag,postTag:this.postTag})}}};\n//# sourceMappingURL=Highlighter-vue2.vue_rollup-plugin-vue=script.js.map\n","import{createSuitMixin as i}from\"../mixins/suit.js\";import t from\"../util/vue-compat/Highlighter/Highlighter-vue2.vue.js\";export default{name:\"AisHighlight\",mixins:[i({name:\"Highlight\"})],components:{AisHighlighter:t},props:{hit:{type:Object,required:!0},attribute:{type:String,required:!0},highlightedTagName:{type:String,default:\"mark\"}}};\n//# sourceMappingURL=Highlight.vue_rollup-plugin-vue=script.js.map\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { uniq, find, createDocumentationMessageGenerator, warning } from \"../utils/index.js\";\nvar getSelectedHits = function getSelectedHits(hits, selectedObjectIDs) {\n return selectedObjectIDs.map(function (objectID) {\n var hit = find(hits, function (h) {\n return h.objectID === objectID;\n });\n if (typeof hit === 'undefined') {\n throw new Error(\"Could not find objectID \\\"\".concat(objectID, \"\\\" passed to `clickedObjectIDsAfterSearch` in the returned hits. This is necessary to infer the absolute position and the query ID.\"));\n }\n return hit;\n });\n};\nvar getQueryID = function getQueryID(selectedHits) {\n var queryIDs = uniq(selectedHits.map(function (hit) {\n return hit.__queryID;\n }));\n if (queryIDs.length > 1) {\n throw new Error('Insights currently allows a single `queryID`. The `objectIDs` provided map to multiple `queryID`s.');\n }\n var queryID = queryIDs[0];\n if (typeof queryID !== 'string') {\n throw new Error(\"Could not infer `queryID`. Ensure InstantSearch `clickAnalytics: true` was added with the Configure widget.\\n\\nSee: https://alg.li/lNiZZ7\");\n }\n return queryID;\n};\nvar getPositions = function getPositions(selectedHits) {\n return selectedHits.map(function (hit) {\n return hit.__position;\n });\n};\nexport var inferPayload = function inferPayload(_ref) {\n var method = _ref.method,\n results = _ref.results,\n hits = _ref.hits,\n objectIDs = _ref.objectIDs;\n var index = results.index;\n var selectedHits = getSelectedHits(hits, objectIDs);\n var queryID = getQueryID(selectedHits);\n switch (method) {\n case 'clickedObjectIDsAfterSearch':\n {\n var positions = getPositions(selectedHits);\n return {\n index: index,\n queryID: queryID,\n objectIDs: objectIDs,\n positions: positions\n };\n }\n case 'convertedObjectIDsAfterSearch':\n return {\n index: index,\n queryID: queryID,\n objectIDs: objectIDs\n };\n default:\n throw new Error(\"Unsupported method passed to insights: \\\"\".concat(method, \"\\\".\"));\n }\n};\nvar wrapInsightsClient = function wrapInsightsClient(aa, results, hits) {\n return function (method) {\n for (var _len = arguments.length, payloads = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n payloads[_key - 1] = arguments[_key];\n }\n var payload = payloads[0];\n process.env.NODE_ENV === 'development' ? warning(false, \"`insights` function has been deprecated. It is still supported in 4.x releases, but not further. It is replaced by the `insights` middleware.\\n\\nFor more information, visit https://www.algolia.com/doc/guides/getting-insights-and-analytics/search-analytics/click-through-and-conversions/how-to/send-click-and-conversion-events-with-instantsearch/js/\") : void 0;\n if (!aa) {\n var withInstantSearchUsage = createDocumentationMessageGenerator({\n name: 'instantsearch'\n });\n throw new Error(withInstantSearchUsage('The `insightsClient` option has not been provided to `instantsearch`.'));\n }\n if (!Array.isArray(payload.objectIDs)) {\n throw new TypeError('Expected `objectIDs` to be an array.');\n }\n var inferredPayload = inferPayload({\n method: method,\n results: results,\n hits: hits,\n objectIDs: payload.objectIDs\n });\n aa(method, _objectSpread(_objectSpread({}, inferredPayload), payload));\n };\n};\n\n/**\n * @deprecated This function will be still supported in 4.x releases, but not further. It is replaced by the `insights` middleware. For more information, visit https://www.algolia.com/doc/guides/getting-insights-and-analytics/search-analytics/click-through-and-conversions/how-to/send-click-and-conversion-events-with-instantsearch/js/\n * It passes `insights` to `HitsWithInsightsListener` and `InfiniteHitsWithInsightsListener`.\n */\nexport default function withInsights(connector) {\n return function (renderFn, unmountFn) {\n return connector(function (renderOptions, isFirstRender) {\n var results = renderOptions.results,\n hits = renderOptions.hits,\n instantSearchInstance = renderOptions.instantSearchInstance;\n if (results && hits && instantSearchInstance) {\n var insights = wrapInsightsClient(instantSearchInstance.insightsClient, results, hits);\n return renderFn(_objectSpread(_objectSpread({}, renderOptions), {}, {\n insights: insights\n }), isFirstRender);\n }\n return renderFn(renderOptions, isFirstRender);\n }, unmountFn);\n };\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nexport function addAbsolutePosition(hits, page, hitsPerPage) {\n return hits.map(function (hit, idx) {\n return _objectSpread(_objectSpread({}, hit), {}, {\n __position: hitsPerPage * page + idx + 1\n });\n });\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nexport function addQueryID(hits, queryID) {\n if (!queryID) {\n return hits;\n }\n return hits.map(function (hit) {\n return _objectSpread(_objectSpread({}, hit), {}, {\n __queryID: queryID\n });\n });\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { escapeHits, TAG_PLACEHOLDER, checkRendering, createDocumentationMessageGenerator, addAbsolutePosition, addQueryID, createSendEventForHits, createBindEventForHits, noop } from \"../../lib/utils/index.js\";\nvar withUsage = createDocumentationMessageGenerator({\n name: 'hits',\n connector: true\n});\nvar connectHits = function connectHits(renderFn) {\n var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n checkRendering(renderFn, withUsage());\n return function (widgetParams) {\n var _ref = widgetParams || {},\n _ref$escapeHTML = _ref.escapeHTML,\n escapeHTML = _ref$escapeHTML === void 0 ? true : _ref$escapeHTML,\n _ref$transformItems = _ref.transformItems,\n transformItems = _ref$transformItems === void 0 ? function (items) {\n return items;\n } : _ref$transformItems;\n var sendEvent;\n var bindEvent;\n return {\n $$type: 'ais.hits',\n init: function init(initOptions) {\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(initOptions)), {}, {\n instantSearchInstance: initOptions.instantSearchInstance\n }), true);\n },\n render: function render(renderOptions) {\n var renderState = this.getWidgetRenderState(renderOptions);\n renderFn(_objectSpread(_objectSpread({}, renderState), {}, {\n instantSearchInstance: renderOptions.instantSearchInstance\n }), false);\n renderState.sendEvent('view:internal', renderState.hits);\n },\n getRenderState: function getRenderState(renderState, renderOptions) {\n return _objectSpread(_objectSpread({}, renderState), {}, {\n hits: this.getWidgetRenderState(renderOptions)\n });\n },\n getWidgetRenderState: function getWidgetRenderState(_ref2) {\n var results = _ref2.results,\n helper = _ref2.helper,\n instantSearchInstance = _ref2.instantSearchInstance;\n if (!sendEvent) {\n sendEvent = createSendEventForHits({\n instantSearchInstance: instantSearchInstance,\n getIndex: function getIndex() {\n return helper.getIndex();\n },\n widgetType: this.$$type\n });\n }\n if (!bindEvent) {\n bindEvent = createBindEventForHits({\n getIndex: function getIndex() {\n return helper.getIndex();\n },\n widgetType: this.$$type,\n instantSearchInstance: instantSearchInstance\n });\n }\n if (!results) {\n return {\n hits: [],\n results: undefined,\n sendEvent: sendEvent,\n bindEvent: bindEvent,\n widgetParams: widgetParams\n };\n }\n if (escapeHTML && results.hits.length > 0) {\n results.hits = escapeHits(results.hits);\n }\n var hitsWithAbsolutePosition = addAbsolutePosition(results.hits, results.page, results.hitsPerPage);\n var hitsWithAbsolutePositionAndQueryID = addQueryID(hitsWithAbsolutePosition, results.queryID);\n var transformedHits = transformItems(hitsWithAbsolutePositionAndQueryID, {\n results: results\n });\n return {\n hits: transformedHits,\n results: results,\n sendEvent: sendEvent,\n bindEvent: bindEvent,\n widgetParams: widgetParams\n };\n },\n dispose: function dispose(_ref3) {\n var state = _ref3.state;\n unmountFn();\n if (!escapeHTML) {\n return state;\n }\n return state.setQueryParameters(Object.keys(TAG_PLACEHOLDER).reduce(function (acc, key) {\n return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, key, undefined));\n }, {}));\n },\n getWidgetSearchParameters: function getWidgetSearchParameters(state) {\n if (!escapeHTML) {\n return state;\n }\n\n // @MAJOR: set this globally, not in the Hits widget to allow Hits to be conditionally used\n return state.setQueryParameters(TAG_PLACEHOLDER);\n }\n };\n };\n};\nexport default connectHits;","import { withInsights } from \"../../lib/insights/index.js\";\nimport connectHits from \"./connectHits.js\";\n\n/**\n * Due to https://github.com/microsoft/web-build-tools/issues/1050, we need\n * Connector<...> imported in this file, even though it is only used implicitly.\n * This _uses_ Connector<...> so it is not accidentally removed by someone.\n */ // eslint-disable-next-line @typescript-eslint/no-unused-vars\nvar connectHitsWithInsights = withInsights(connectHits);\nexport default connectHitsWithInsights;","export function cx() {\n for (var _len = arguments.length, classNames = new Array(_len), _key = 0; _key < _len; _key++) {\n classNames[_key] = arguments[_key];\n }\n return classNames.reduce(function (acc, className) {\n if (Array.isArray(className)) {\n return acc.concat(className);\n }\n return acc.concat([className]);\n }, []).filter(Boolean).join(' ');\n}","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"classNames\", \"hits\", \"itemComponent\", \"sendEvent\", \"emptyComponent\"];\nimport { cx } from \"../lib/index.js\";\n\n// Should be imported from a shared package in the future\n\nexport function createHitsComponent(_ref) {\n var createElement = _ref.createElement;\n return function Hits(userProps) {\n var _userProps$classNames = userProps.classNames,\n classNames = _userProps$classNames === void 0 ? {} : _userProps$classNames,\n hits = userProps.hits,\n ItemComponent = userProps.itemComponent,\n sendEvent = userProps.sendEvent,\n EmptyComponent = userProps.emptyComponent,\n props = _objectWithoutProperties(userProps, _excluded);\n if (hits.length === 0 && EmptyComponent) {\n return createElement(EmptyComponent, {\n className: cx('ais-Hits', classNames.root, cx('ais-Hits--empty', classNames.emptyRoot), props.className)\n });\n }\n return createElement(\"div\", _extends({}, props, {\n className: cx('ais-Hits', classNames.root, hits.length === 0 && cx('ais-Hits--empty', classNames.emptyRoot), props.className)\n }), createElement(\"ol\", {\n className: cx('ais-Hits-list', classNames.list)\n }, hits.map(function (hit, index) {\n return createElement(ItemComponent, {\n key: hit.objectID,\n hit: hit,\n index: index,\n className: cx('ais-Hits-item', classNames.item),\n onClick: function onClick() {\n sendEvent('click:internal', hit, 'Hit Clicked');\n },\n onAuxClick: function onAuxClick() {\n sendEvent('click:internal', hit, 'Hit Clicked');\n }\n });\n })));\n };\n}","import{createSuitMixin as t}from\"../mixins/suit.js\";import{renderCompat as s,getScopedSlot as i}from\"../util/vue-compat/index-vue2.js\";import{createWidgetMixin as e}from\"../mixins/widget.js\";import{connectHitsWithInsights as n}from\"instantsearch.js/es/connectors/index.js\";import{createHitsComponent as a}from\"instantsearch-ui-components\";export default{name:\"AisHits\",mixins:[e({connector:n},{$$widgetType:\"ais.hits\"}),t({name:\"Hits\"})],props:{escapeHTML:{type:Boolean,default:!0},transformItems:{type:Function,default:void 0}},computed:{items:function(){return this.state.hits},widgetParams:function(){return{escapeHTML:this.escapeHTML,transformItems:this.transformItems}}},render:s(function(t){var s=this;if(!this.state)return null;var e=i(this,\"default\"),n=i(this,\"item\");return!n&&e?t(\"div\",{attrs:{class:this.suit()}},[e({items:this.state.hits,insights:this.state.insights,sendEvent:this.state.sendEvent})]):t(a({createElement:t}),{hits:this.state.hits,itemComponent:function(i){var e=i.hit,a=i.index,r=i.onClick,o=i.onAuxClick,m=(i.key,function(t,s){var i={};for(var e in t)Object.prototype.hasOwnProperty.call(t,e)&&-1===s.indexOf(e)&&(i[e]=t[e]);return i}(i,[\"hit\",\"index\",\"onClick\",\"onAuxClick\",\"key\"]));return t(\"li\",{key:e.objectID,attrs:m,on:{click:r,auxclick:o}},[n&&n({item:e,index:a,insights:s.state.insights,sendEvent:s.state.sendEvent})||\"objectID: \"+e.objectID+\", index: \"+a])},sendEvent:this.state.sendEvent,classNames:this.classNames&&{root:this.classNames[\"ais-Hits\"],list:this.classNames[\"ais-Hits-list\"],item:this.classNames[\"ais-Hits-item\"]}})})};\n//# sourceMappingURL=Hits.js.map\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { checkRendering, warning, createDocumentationMessageGenerator, noop } from \"../../lib/utils/index.js\";\nvar withUsage = createDocumentationMessageGenerator({\n name: 'hits-per-page',\n connector: true\n});\nvar connectHitsPerPage = function connectHitsPerPage(renderFn) {\n var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n checkRendering(renderFn, withUsage());\n return function (widgetParams) {\n var _ref = widgetParams || {},\n userItems = _ref.items,\n _ref$transformItems = _ref.transformItems,\n transformItems = _ref$transformItems === void 0 ? function (items) {\n return items;\n } : _ref$transformItems;\n if (!Array.isArray(userItems)) {\n throw new Error(withUsage('The `items` option expects an array of objects.'));\n }\n var items = userItems;\n var defaultItems = items.filter(function (item) {\n return item.default === true;\n });\n if (defaultItems.length === 0) {\n throw new Error(withUsage(\"A default value must be specified in `items`.\"));\n }\n if (defaultItems.length > 1) {\n throw new Error(withUsage('More than one default value is specified in `items`.'));\n }\n var defaultItem = defaultItems[0];\n var normalizeItems = function normalizeItems(_ref2) {\n var hitsPerPage = _ref2.hitsPerPage;\n return items.map(function (item) {\n return _objectSpread(_objectSpread({}, item), {}, {\n isRefined: Number(item.value) === Number(hitsPerPage)\n });\n });\n };\n var connectorState = {\n getRefine: function getRefine(helper) {\n return function (value) {\n return !value && value !== 0 ? helper.setQueryParameter('hitsPerPage', undefined).search() : helper.setQueryParameter('hitsPerPage', value).search();\n };\n },\n createURLFactory: function createURLFactory(_ref3) {\n var state = _ref3.state,\n createURL = _ref3.createURL,\n getWidgetUiState = _ref3.getWidgetUiState,\n helper = _ref3.helper;\n return function (value) {\n return createURL(function (uiState) {\n return getWidgetUiState(uiState, {\n searchParameters: state.resetPage().setQueryParameter('hitsPerPage', !value && value !== 0 ? undefined : value),\n helper: helper\n });\n });\n };\n }\n };\n return {\n $$type: 'ais.hitsPerPage',\n init: function init(initOptions) {\n var state = initOptions.state,\n instantSearchInstance = initOptions.instantSearchInstance;\n var isCurrentInOptions = items.some(function (item) {\n return Number(state.hitsPerPage) === Number(item.value);\n });\n if (!isCurrentInOptions) {\n process.env.NODE_ENV === 'development' ? warning(state.hitsPerPage !== undefined, \"\\n`hitsPerPage` is not defined.\\nThe option `hitsPerPage` needs to be set using the `configure` widget.\\n\\nLearn more: https://www.algolia.com/doc/api-reference/widgets/hits-per-page/js/\\n \") : void 0;\n process.env.NODE_ENV === 'development' ? warning(false, \"\\nThe `items` option of `hitsPerPage` does not contain the \\\"hits per page\\\" value coming from the state: \".concat(state.hitsPerPage, \".\\n\\nYou may want to add another entry to the `items` option with this value.\")) : void 0;\n items = [\n // The helper will convert the empty string to `undefined`.\n {\n value: '',\n label: ''\n }].concat(_toConsumableArray(items));\n }\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(initOptions)), {}, {\n instantSearchInstance: instantSearchInstance\n }), true);\n },\n render: function render(initOptions) {\n var instantSearchInstance = initOptions.instantSearchInstance;\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(initOptions)), {}, {\n instantSearchInstance: instantSearchInstance\n }), false);\n },\n dispose: function dispose(_ref4) {\n var state = _ref4.state;\n unmountFn();\n return state.setQueryParameter('hitsPerPage', undefined);\n },\n getRenderState: function getRenderState(renderState, renderOptions) {\n return _objectSpread(_objectSpread({}, renderState), {}, {\n hitsPerPage: this.getWidgetRenderState(renderOptions)\n });\n },\n getWidgetRenderState: function getWidgetRenderState(_ref5) {\n var state = _ref5.state,\n results = _ref5.results,\n createURL = _ref5.createURL,\n helper = _ref5.helper;\n var canRefine = results ? results.nbHits > 0 : false;\n return {\n items: transformItems(normalizeItems(state), {\n results: results\n }),\n refine: connectorState.getRefine(helper),\n createURL: connectorState.createURLFactory({\n state: state,\n createURL: createURL,\n getWidgetUiState: this.getWidgetUiState,\n helper: helper\n }),\n hasNoResults: !canRefine,\n canRefine: canRefine,\n widgetParams: widgetParams\n };\n },\n getWidgetUiState: function getWidgetUiState(uiState, _ref6) {\n var searchParameters = _ref6.searchParameters;\n var hitsPerPage = searchParameters.hitsPerPage;\n if (hitsPerPage === undefined || hitsPerPage === defaultItem.value) {\n return uiState;\n }\n return _objectSpread(_objectSpread({}, uiState), {}, {\n hitsPerPage: hitsPerPage\n });\n },\n getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref7) {\n var uiState = _ref7.uiState;\n return searchParameters.setQueryParameters({\n hitsPerPage: uiState.hitsPerPage || defaultItem.value\n });\n }\n };\n };\n};\nexport default connectHitsPerPage;","import{createSuitMixin as t}from\"../mixins/suit.js\";import{createWidgetMixin as e}from\"../mixins/widget.js\";import{connectHitsPerPage as i}from\"instantsearch.js/es/connectors/index.js\";import{createPanelConsumerMixin as s}from\"../mixins/panel.js\";export default{name:\"AisHitsPerPage\",mixins:[t({name:\"HitsPerPage\"}),e({connector:i},{$$widgetType:\"ais.hitsPerPage\"}),s()],props:{items:{type:Array,required:!0},transformItems:{type:Function,default:void 0}},computed:{widgetParams:function(){return{items:this.items,transformItems:this.transformItems}}}};\n//# sourceMappingURL=HitsPerPage.vue_rollup-plugin-vue=script.js.map\n","import{createSuitMixin as e}from\"../mixins/suit.js\";import{renderCompat as i,getDefaultSlot as n}from\"../util/vue-compat/index-vue2.js\";import{createWidgetMixin as t}from\"../mixins/widget.js\";import r from\"instantsearch.js/es/widgets/index/index.js\";export default{name:\"AisIndex\",mixins:[e({name:\"Index\"}),t({connector:function(){return r}},{$$widgetType:\"ais.index\"})],provide:function(){var e=this;return{$_ais_getParentIndex:function(){return e.widget}}},props:{indexName:{type:String,required:!0},indexId:{type:String,required:!1}},render:i(function(e){return e(\"div\",{},n(this))}),computed:{widgetParams:function(){return{indexName:this.indexName,indexId:this.indexId}}}};\n//# sourceMappingURL=Index.js.map\n","var r=\"4.16.0\";export{r as version};\n//# sourceMappingURL=package.json.js.map\n","import{createSuitMixin as n}from\"../mixins/suit.js\";import{_objectSpread as t}from\"./polyfills.js\";import{version as e}from\"./vue-compat/index-vue2.js\";import{warn as a}from\"./warn.js\";import{INSTANTSEARCH_FUTURE_DEFAULTS as i}from\"instantsearch.js/es/lib/InstantSearch.js\";import{version as s}from\"../../package.json.js\";var r=function(r){var c;return t(((c={mixins:[n({name:\"InstantSearch\"})],provide:function(){return{$_ais_instantSearchInstance:this.instantSearchInstance}},watch:{searchClient:function(n){a(!1),this.instantSearchInstance.helper.setClient(n).search()},indexName:function(n){this.instantSearchInstance.helper.setIndex(n||\"\").search()},stalledSearchDelay:function(n){this.instantSearchInstance._stalledSearchDelay=n},routing:function(){throw new Error(\"routing configuration can not be changed dynamically at this point.\\n\\nPlease open a new issue: https://github.com/algolia/instantsearch/discussions/new?category=ideas&labels=triage%2cLibrary%3A+Vue+InstantSearch&title=Feature%20request%3A%20dynamic%20props\")},onStateChange:function(){throw new Error(\"onStateChange configuration can not be changed dynamically at this point.\\n\\nPlease open a new issue: https://github.com/algolia/instantsearch/discussions/new?category=ideas&labels=triage%2cLibrary%3A+Vue+InstantSearch&title=Feature%20request%3A%20dynamic%20props\")},searchFunction:function(n){this.instantSearchInstance._searchFunction=n},middlewares:{immediate:!0,handler:function(n,t){var e=this;(t||[]).filter(function(t){return-1===(n||[]).indexOf(t)}).forEach(function(n){e.instantSearchInstance.unuse(n)}),(n||[]).filter(function(n){return-1===(t||[]).indexOf(n)}).forEach(function(n){e.instantSearchInstance.use(n)})}},future:function(n){this.instantSearchInstance.future=Object.assign(i,n)}},created:function(){var n=this.instantSearchInstance.client;\"function\"==typeof n.addAlgoliaAgent&&(n.addAlgoliaAgent(\"Vue (\"+e+\")\"),n.addAlgoliaAgent(\"Vue InstantSearch (\"+s+\")\"))},mounted:function(){var n=this;this.$nextTick(function(){n.instantSearchInstance.started||n.instantSearchInstance.start()})}}).beforeDestroy=function(){this.instantSearchInstance.started&&this.instantSearchInstance.dispose(),this.instantSearchInstance.__initialSearchResults=void 0},c),r)};export{r as createInstantSearchComponent};\n//# sourceMappingURL=createInstantSearchComponent.js.map\n","import{renderCompat as t,getDefaultSlot as e}from\"../util/vue-compat/index-vue2.js\";import{warn as i}from\"../util/warn.js\";import n from\"instantsearch.js/es/index.js\";import{createInstantSearchComponent as a}from\"../util/createInstantSearchComponent.js\";var r=\"Vue InstantSearch: You used the prop api-key or app-id.\\nThese have been replaced by search-client.\\n\\nSee more info here: https://www.algolia.com/doc/api-reference/widgets/instantsearch/vue/#widget-param-search-client\";export default a({name:\"AisInstantSearch\",props:{searchClient:{type:Object,required:!0},insightsClient:{type:Function,default:void 0},indexName:{type:String,required:!0},routing:{default:void 0,validator:function(t){return!(\"boolean\"==typeof t||!t.router&&!t.stateMapping)||(i(\"The `routing` option expects an object with `router` and/or `stateMapping`.\\n\\nSee https://www.algolia.com/doc/api-reference/widgets/instantsearch/vue/#widget-param-routing\"),!1)}},insights:{default:void 0,validator:function(t){return void 0===t||\"boolean\"==typeof t||\"object\"==typeof t}},stalledSearchDelay:{type:Number,default:void 0},searchFunction:{type:Function,default:void 0},onStateChange:{type:Function,default:void 0},initialUiState:{type:Object,default:void 0},apiKey:{type:String,default:void 0,validator:function(t){return t&&i(r),!1}},appId:{type:String,default:void 0,validator:function(t){return t&&i(r),!1}},middlewares:{type:Array,default:null},future:{type:Object,default:void 0}},data:function(){return{instantSearchInstance:n({searchClient:this.searchClient,insightsClient:this.insightsClient,insights:this.insights,indexName:this.indexName,routing:this.routing,stalledSearchDelay:this.stalledSearchDelay,searchFunction:this.searchFunction,onStateChange:this.onStateChange,initialUiState:this.initialUiState,future:this.future})}},render:t(function(t){var i;return t(\"div\",{class:(i={},i[this.suit()]=!0,i[this.suit(\"\",\"ssr\")]=!1,i)},e(this))})});\n//# sourceMappingURL=InstantSearch.js.map\n","import{renderCompat as t,getDefaultSlot as n}from\"../util/vue-compat/index-vue2.js\";import{createInstantSearchComponent as e}from\"../util/createInstantSearchComponent.js\";export default e({name:\"AisInstantSearchSsr\",inject:{$_ais_ssrInstantSearchInstance:{default:function(){throw new Error(\"`createServerRootMixin` is required when using SSR.\")}}},data:function(){return{instantSearchInstance:this.$_ais_ssrInstantSearchInstance}},render:t(function(t){var e;return t(\"div\",{class:(e={},e[this.suit()]=!0,e[this.suit(\"\",\"ssr\")]=!0,e)},n(this))})});\n//# sourceMappingURL=InstantSearchSsr.js.map\n","import { isIndexWidget } from \"./isIndexWidget.js\";\n/**\n * Recurse over all child indices\n */\nexport function walkIndex(indexWidget, callback) {\n callback(indexWidget);\n indexWidget.getWidgets().forEach(function (widget) {\n if (isIndexWidget(widget)) {\n walkIndex(widget, callback);\n }\n });\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nvar _excluded = [\"page\"],\n _excluded2 = [\"clickAnalytics\", \"userToken\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport { escapeHits, TAG_PLACEHOLDER, checkRendering, createDocumentationMessageGenerator, isEqual, addAbsolutePosition, addQueryID, noop, createSendEventForHits, createBindEventForHits, walkIndex } from \"../../lib/utils/index.js\";\nvar withUsage = createDocumentationMessageGenerator({\n name: 'infinite-hits',\n connector: true\n});\nfunction getStateWithoutPage(state) {\n var _ref = state || {},\n page = _ref.page,\n rest = _objectWithoutProperties(_ref, _excluded);\n return rest;\n}\nfunction normalizeState(state) {\n var _ref2 = state || {},\n clickAnalytics = _ref2.clickAnalytics,\n userToken = _ref2.userToken,\n rest = _objectWithoutProperties(_ref2, _excluded2);\n return rest;\n}\nfunction getInMemoryCache() {\n var cachedHits = null;\n var cachedState = null;\n return {\n read: function read(_ref3) {\n var state = _ref3.state;\n return isEqual(cachedState, getStateWithoutPage(state)) ? cachedHits : null;\n },\n write: function write(_ref4) {\n var state = _ref4.state,\n hits = _ref4.hits;\n cachedState = getStateWithoutPage(state);\n cachedHits = hits;\n }\n };\n}\nfunction extractHitsFromCachedHits(cachedHits) {\n return Object.keys(cachedHits).map(Number).sort(function (a, b) {\n return a - b;\n }).reduce(function (acc, page) {\n return acc.concat(cachedHits[page]);\n }, []);\n}\nvar connectInfiniteHits = function connectInfiniteHits(renderFn) {\n var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n checkRendering(renderFn, withUsage());\n\n // @TODO: this should be a generic, but a Connector can not yet be generic itself\n\n return function (widgetParams) {\n var _ref5 = widgetParams || {},\n _ref5$escapeHTML = _ref5.escapeHTML,\n escapeHTML = _ref5$escapeHTML === void 0 ? true : _ref5$escapeHTML,\n _ref5$transformItems = _ref5.transformItems,\n transformItems = _ref5$transformItems === void 0 ? function (items) {\n return items;\n } : _ref5$transformItems,\n _ref5$cache = _ref5.cache,\n cache = _ref5$cache === void 0 ? getInMemoryCache() : _ref5$cache;\n var showPrevious;\n var showMore;\n var sendEvent;\n var bindEvent;\n var getFirstReceivedPage = function getFirstReceivedPage(state, cachedHits) {\n var _state$page = state.page,\n page = _state$page === void 0 ? 0 : _state$page;\n var pages = Object.keys(cachedHits).map(Number);\n if (pages.length === 0) {\n return page;\n } else {\n return Math.min.apply(Math, [page].concat(_toConsumableArray(pages)));\n }\n };\n var getLastReceivedPage = function getLastReceivedPage(state, cachedHits) {\n var _state$page2 = state.page,\n page = _state$page2 === void 0 ? 0 : _state$page2;\n var pages = Object.keys(cachedHits).map(Number);\n if (pages.length === 0) {\n return page;\n } else {\n return Math.max.apply(Math, [page].concat(_toConsumableArray(pages)));\n }\n };\n var getShowPrevious = function getShowPrevious(helper) {\n return function () {\n // Using the helper's `overrideStateWithoutTriggeringChangeEvent` method\n // avoid updating the browser URL when the user displays the previous page.\n helper.overrideStateWithoutTriggeringChangeEvent(_objectSpread(_objectSpread({}, helper.state), {}, {\n page: getFirstReceivedPage(helper.state, cache.read({\n state: normalizeState(helper.state)\n }) || {}) - 1\n })).searchWithoutTriggeringOnStateChange();\n };\n };\n var getShowMore = function getShowMore(helper) {\n return function () {\n helper.setPage(getLastReceivedPage(helper.state, cache.read({\n state: normalizeState(helper.state)\n }) || {}) + 1).search();\n };\n };\n return {\n $$type: 'ais.infiniteHits',\n init: function init(initOptions) {\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(initOptions)), {}, {\n instantSearchInstance: initOptions.instantSearchInstance\n }), true);\n },\n render: function render(renderOptions) {\n var instantSearchInstance = renderOptions.instantSearchInstance;\n var widgetRenderState = this.getWidgetRenderState(renderOptions);\n renderFn(_objectSpread(_objectSpread({}, widgetRenderState), {}, {\n instantSearchInstance: instantSearchInstance\n }), false);\n sendEvent('view:internal', widgetRenderState.currentPageHits);\n },\n getRenderState: function getRenderState(renderState, renderOptions) {\n return _objectSpread(_objectSpread({}, renderState), {}, {\n infiniteHits: this.getWidgetRenderState(renderOptions)\n });\n },\n getWidgetRenderState: function getWidgetRenderState(_ref6) {\n var results = _ref6.results,\n helper = _ref6.helper,\n parent = _ref6.parent,\n existingState = _ref6.state,\n instantSearchInstance = _ref6.instantSearchInstance;\n var isFirstPage;\n var currentPageHits = [];\n /**\n * We bail out of optimistic UI here, as the cache is based on search\n * parameters, and we don't want to invalidate the cache when the search\n * is loading.\n */\n var state = parent.getPreviousState() || existingState;\n var cachedHits = cache.read({\n state: normalizeState(state)\n }) || {};\n if (!results) {\n showPrevious = getShowPrevious(helper);\n showMore = getShowMore(helper);\n sendEvent = createSendEventForHits({\n instantSearchInstance: instantSearchInstance,\n getIndex: function getIndex() {\n return helper.getIndex();\n },\n widgetType: this.$$type\n });\n bindEvent = createBindEventForHits({\n getIndex: function getIndex() {\n return helper.getIndex();\n },\n widgetType: this.$$type,\n instantSearchInstance: instantSearchInstance\n });\n isFirstPage = state.page === undefined || getFirstReceivedPage(state, cachedHits) === 0;\n } else {\n var _state$disjunctiveFac, _state$hierarchicalFa;\n var _state$page3 = state.page,\n _page = _state$page3 === void 0 ? 0 : _state$page3;\n if (escapeHTML && results.hits.length > 0) {\n results.hits = escapeHits(results.hits);\n }\n var hitsWithAbsolutePosition = addAbsolutePosition(results.hits, results.page, results.hitsPerPage);\n var hitsWithAbsolutePositionAndQueryID = addQueryID(hitsWithAbsolutePosition, results.queryID);\n var transformedHits = transformItems(hitsWithAbsolutePositionAndQueryID, {\n results: results\n });\n\n /*\n With dynamic widgets, facets are not included in the state before their relevant widgets are mounted. Until then, we need to bail out of writing this incomplete state representation in cache.\n */\n var hasDynamicWidgets = false;\n walkIndex(instantSearchInstance.mainIndex, function (indexWidget) {\n if (!hasDynamicWidgets && indexWidget.getWidgets().some(function (_ref7) {\n var $$type = _ref7.$$type;\n return $$type === 'ais.dynamicWidgets';\n })) {\n hasDynamicWidgets = true;\n }\n });\n var hasNoFacets = !((_state$disjunctiveFac = state.disjunctiveFacets) !== null && _state$disjunctiveFac !== void 0 && _state$disjunctiveFac.length) && !(state.facets || []).filter(function (f) {\n return f !== '*';\n }).length && !((_state$hierarchicalFa = state.hierarchicalFacets) !== null && _state$hierarchicalFa !== void 0 && _state$hierarchicalFa.length);\n if (cachedHits[_page] === undefined && !results.__isArtificial && instantSearchInstance.status === 'idle' && !(hasDynamicWidgets && hasNoFacets)) {\n cachedHits[_page] = transformedHits;\n cache.write({\n state: normalizeState(state),\n hits: cachedHits\n });\n }\n currentPageHits = transformedHits;\n isFirstPage = getFirstReceivedPage(state, cachedHits) === 0;\n }\n var hits = extractHitsFromCachedHits(cachedHits);\n var isLastPage = results ? results.nbPages <= getLastReceivedPage(state, cachedHits) + 1 : true;\n return {\n hits: hits,\n currentPageHits: currentPageHits,\n sendEvent: sendEvent,\n bindEvent: bindEvent,\n results: results,\n showPrevious: showPrevious,\n showMore: showMore,\n isFirstPage: isFirstPage,\n isLastPage: isLastPage,\n widgetParams: widgetParams\n };\n },\n dispose: function dispose(_ref8) {\n var state = _ref8.state;\n unmountFn();\n var stateWithoutPage = state.setQueryParameter('page', undefined);\n if (!escapeHTML) {\n return stateWithoutPage;\n }\n return stateWithoutPage.setQueryParameters(Object.keys(TAG_PLACEHOLDER).reduce(function (acc, key) {\n return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, key, undefined));\n }, {}));\n },\n getWidgetUiState: function getWidgetUiState(uiState, _ref9) {\n var searchParameters = _ref9.searchParameters;\n var page = searchParameters.page || 0;\n if (!page) {\n // return without adding `page` to uiState\n // because we don't want `page=1` in the URL\n return uiState;\n }\n return _objectSpread(_objectSpread({}, uiState), {}, {\n // The page in the UI state is incremented by one\n // to expose the user value (not `0`).\n page: page + 1\n });\n },\n getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref10) {\n var uiState = _ref10.uiState;\n var widgetSearchParameters = searchParameters;\n if (escapeHTML) {\n // @MAJOR: set this globally, not in the InfiniteHits widget to allow InfiniteHits to be conditionally used\n widgetSearchParameters = searchParameters.setQueryParameters(TAG_PLACEHOLDER);\n }\n\n // The page in the search parameters is decremented by one\n // to get to the actual parameter value from the UI state.\n var page = uiState.page ? uiState.page - 1 : 0;\n return widgetSearchParameters.setQueryParameter('page', page);\n }\n };\n };\n};\nexport default connectInfiniteHits;","import { withInsights } from \"../../lib/insights/index.js\";\nimport connectInfiniteHits from \"./connectInfiniteHits.js\";\n\n/**\n * Due to https://github.com/microsoft/web-build-tools/issues/1050, we need\n * Connector<...> imported in this file, even though it is only used implicitly.\n * This _uses_ Connector<...> so it is not accidentally removed by someone.\n */ // eslint-disable-next-line @typescript-eslint/no-unused-vars\nvar connectInfiniteHitsWithInsights = withInsights(connectInfiniteHits);\nexport default connectInfiniteHitsWithInsights;","import{createSuitMixin as t}from\"../mixins/suit.js\";import{createWidgetMixin as e}from\"../mixins/widget.js\";import{connectInfiniteHitsWithInsights as s}from\"instantsearch.js/es/connectors/index.js\";export default{name:\"AisInfiniteHits\",mixins:[e({connector:s},{$$widgetType:\"ais.infiniteHits\"}),t({name:\"InfiniteHits\"})],props:{showPrevious:{type:Boolean,default:!1},escapeHTML:{type:Boolean,default:!0},transformItems:{type:Function,default:void 0},cache:{type:Object,default:void 0}},computed:{widgetParams:function(){return{showPrevious:this.showPrevious,escapeHTML:this.escapeHTML,transformItems:this.transformItems,cache:this.cache}},items:function(){return this.state.hits}},methods:{refinePrevious:function(){this.state.showPrevious()},refineNext:function(){this.state.showMore()}}};\n//# sourceMappingURL=InfiniteHits.vue_rollup-plugin-vue=script.js.map\n","var _excluded = [\"name\", \"escapedValue\", \"path\"];\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { checkRendering, createDocumentationMessageGenerator, createSendEventForFacet, noop, warning } from \"../../lib/utils/index.js\";\nvar withUsage = createDocumentationMessageGenerator({\n name: 'menu',\n connector: true\n});\nvar DEFAULT_SORT = ['isRefined', 'name:asc'];\n/**\n * **Menu** connector provides the logic to build a widget that will give the user the ability to choose a single value for a specific facet. The typical usage of menu is for navigation in categories.\n *\n * This connector provides a `toggleShowMore()` function to display more or less items and a `refine()`\n * function to select an item. While selecting a new element, the `refine` will also unselect the\n * one that is currently selected.\n *\n * **Requirement:** the attribute passed as `attribute` must be present in \"attributes for faceting\" on the Algolia dashboard or configured as attributesForFaceting via a set settings call to the Algolia API.\n */\nvar connectMenu = function connectMenu(renderFn) {\n var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n checkRendering(renderFn, withUsage());\n return function (widgetParams) {\n var _ref = widgetParams || {},\n attribute = _ref.attribute,\n _ref$limit = _ref.limit,\n limit = _ref$limit === void 0 ? 10 : _ref$limit,\n _ref$showMore = _ref.showMore,\n showMore = _ref$showMore === void 0 ? false : _ref$showMore,\n _ref$showMoreLimit = _ref.showMoreLimit,\n showMoreLimit = _ref$showMoreLimit === void 0 ? 20 : _ref$showMoreLimit,\n _ref$sortBy = _ref.sortBy,\n sortBy = _ref$sortBy === void 0 ? DEFAULT_SORT : _ref$sortBy,\n _ref$transformItems = _ref.transformItems,\n transformItems = _ref$transformItems === void 0 ? function (items) {\n return items;\n } : _ref$transformItems;\n if (!attribute) {\n throw new Error(withUsage('The `attribute` option is required.'));\n }\n if (showMore === true && showMoreLimit <= limit) {\n throw new Error(withUsage('The `showMoreLimit` option must be greater than `limit`.'));\n }\n var sendEvent;\n var _createURL;\n var _refine;\n\n // Provide the same function to the `renderFn` so that way the user\n // has to only bind it once when `isFirstRendering` for instance\n var isShowingMore = false;\n var toggleShowMore = function toggleShowMore() {};\n function createToggleShowMore(renderOptions, widget) {\n return function () {\n isShowingMore = !isShowingMore;\n widget.render(renderOptions);\n };\n }\n function cachedToggleShowMore() {\n toggleShowMore();\n }\n function getLimit() {\n return isShowingMore ? showMoreLimit : limit;\n }\n return {\n $$type: 'ais.menu',\n init: function init(initOptions) {\n var instantSearchInstance = initOptions.instantSearchInstance;\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(initOptions)), {}, {\n instantSearchInstance: instantSearchInstance\n }), true);\n },\n render: function render(renderOptions) {\n var instantSearchInstance = renderOptions.instantSearchInstance;\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(renderOptions)), {}, {\n instantSearchInstance: instantSearchInstance\n }), false);\n },\n dispose: function dispose(_ref2) {\n var state = _ref2.state;\n unmountFn();\n return state.removeHierarchicalFacet(attribute).setQueryParameter('maxValuesPerFacet', undefined);\n },\n getRenderState: function getRenderState(renderState, renderOptions) {\n return _objectSpread(_objectSpread({}, renderState), {}, {\n menu: _objectSpread(_objectSpread({}, renderState.menu), {}, _defineProperty({}, attribute, this.getWidgetRenderState(renderOptions)))\n });\n },\n getWidgetRenderState: function getWidgetRenderState(renderOptions) {\n var _this = this;\n var results = renderOptions.results,\n createURL = renderOptions.createURL,\n instantSearchInstance = renderOptions.instantSearchInstance,\n helper = renderOptions.helper;\n var items = [];\n var canToggleShowMore = false;\n if (!sendEvent) {\n sendEvent = createSendEventForFacet({\n instantSearchInstance: instantSearchInstance,\n helper: helper,\n attribute: attribute,\n widgetType: this.$$type\n });\n }\n if (!_createURL) {\n _createURL = function _createURL(facetValue) {\n return createURL(function (uiState) {\n return _this.getWidgetUiState(uiState, {\n searchParameters: helper.state.resetPage().toggleFacetRefinement(attribute, facetValue),\n helper: helper\n });\n });\n };\n }\n if (!_refine) {\n _refine = function _refine(facetValue) {\n var _helper$getHierarchic = helper.getHierarchicalFacetBreadcrumb(attribute),\n _helper$getHierarchic2 = _slicedToArray(_helper$getHierarchic, 1),\n refinedItem = _helper$getHierarchic2[0];\n sendEvent('click:internal', facetValue ? facetValue : refinedItem);\n helper.toggleFacetRefinement(attribute, facetValue ? facetValue : refinedItem).search();\n };\n }\n if (renderOptions.results) {\n toggleShowMore = createToggleShowMore(renderOptions, this);\n }\n if (results) {\n var facetValues = results.getFacetValues(attribute, {\n sortBy: sortBy,\n facetOrdering: sortBy === DEFAULT_SORT\n });\n var facetItems = facetValues && !Array.isArray(facetValues) && facetValues.data ? facetValues.data : [];\n canToggleShowMore = showMore && (isShowingMore || facetItems.length > getLimit());\n items = transformItems(facetItems.slice(0, getLimit()).map(function (_ref3) {\n var label = _ref3.name,\n value = _ref3.escapedValue,\n path = _ref3.path,\n item = _objectWithoutProperties(_ref3, _excluded);\n return _objectSpread(_objectSpread({}, item), {}, {\n label: label,\n value: value\n });\n }), {\n results: results\n });\n }\n return {\n items: items,\n createURL: _createURL,\n refine: _refine,\n sendEvent: sendEvent,\n canRefine: items.length > 0,\n widgetParams: widgetParams,\n isShowingMore: isShowingMore,\n toggleShowMore: cachedToggleShowMore,\n canToggleShowMore: canToggleShowMore\n };\n },\n getWidgetUiState: function getWidgetUiState(uiState, _ref4) {\n var searchParameters = _ref4.searchParameters;\n var _searchParameters$get = searchParameters.getHierarchicalFacetBreadcrumb(attribute),\n _searchParameters$get2 = _slicedToArray(_searchParameters$get, 1),\n value = _searchParameters$get2[0];\n return removeEmptyRefinementsFromUiState(_objectSpread(_objectSpread({}, uiState), {}, {\n menu: _objectSpread(_objectSpread({}, uiState.menu), {}, _defineProperty({}, attribute, value))\n }), attribute);\n },\n getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref5) {\n var uiState = _ref5.uiState;\n var value = uiState.menu && uiState.menu[attribute];\n if (searchParameters.isConjunctiveFacet(attribute) || searchParameters.isDisjunctiveFacet(attribute)) {\n process.env.NODE_ENV === 'development' ? warning(false, \"Menu: Attribute \\\"\".concat(attribute, \"\\\" is already used by another widget applying conjunctive or disjunctive faceting.\\nAs this is not supported, please make sure to remove this other widget or this Menu widget will not work at all.\")) : void 0;\n return searchParameters;\n }\n var withFacetConfiguration = searchParameters.removeHierarchicalFacet(attribute).addHierarchicalFacet({\n name: attribute,\n attributes: [attribute]\n });\n var currentMaxValuesPerFacet = withFacetConfiguration.maxValuesPerFacet || 0;\n var nextMaxValuesPerFacet = Math.max(currentMaxValuesPerFacet, showMore ? showMoreLimit : limit);\n var withMaxValuesPerFacet = withFacetConfiguration.setQueryParameter('maxValuesPerFacet', nextMaxValuesPerFacet);\n if (!value) {\n return withMaxValuesPerFacet.setQueryParameters({\n hierarchicalFacetsRefinements: _objectSpread(_objectSpread({}, withMaxValuesPerFacet.hierarchicalFacetsRefinements), {}, _defineProperty({}, attribute, []))\n });\n }\n return withMaxValuesPerFacet.addHierarchicalFacetRefinement(attribute, value);\n }\n };\n };\n};\nfunction removeEmptyRefinementsFromUiState(indexUiState, attribute) {\n if (!indexUiState.menu) {\n return indexUiState;\n }\n if (indexUiState.menu[attribute] === undefined) {\n delete indexUiState.menu[attribute];\n }\n if (Object.keys(indexUiState.menu).length === 0) {\n delete indexUiState.menu;\n }\n return indexUiState;\n}\nexport default connectMenu;","import{createSuitMixin as t}from\"../mixins/suit.js\";import{createWidgetMixin as i}from\"../mixins/widget.js\";import{connectMenu as e}from\"instantsearch.js/es/connectors/index.js\";import{createPanelConsumerMixin as o}from\"../mixins/panel.js\";export default{name:\"AisMenu\",mixins:[t({name:\"Menu\"}),i({connector:e},{$$widgetType:\"ais.menu\"}),o()],props:{attribute:{type:String,required:!0},limit:{type:Number,default:void 0},showMoreLimit:{type:Number,default:void 0},showMore:{type:Boolean,default:!1},sortBy:{type:[Array,Function],default:void 0},transformItems:{type:Function,default:void 0}},computed:{widgetParams:function(){return{attribute:this.attribute,limit:this.limit,showMore:this.showMore,showMoreLimit:this.showMoreLimit,sortBy:this.sortBy,transformItems:this.transformItems}},showShowMoreButton:function(){return this.state.canRefine&&this.showMore}}};\n//# sourceMappingURL=Menu.vue_rollup-plugin-vue=script.js.map\n","import{createSuitMixin as t}from\"../mixins/suit.js\";import{createWidgetMixin as e}from\"../mixins/widget.js\";import{connectMenu as i}from\"instantsearch.js/es/connectors/index.js\";import{createPanelConsumerMixin as r}from\"../mixins/panel.js\";export default{name:\"AisMenuSelect\",mixins:[t({name:\"MenuSelect\"}),e({connector:i},{$$widgetType:\"ais.menuSelect\"}),r()],props:{attribute:{type:String,required:!0},limit:{type:Number,default:10},sortBy:{type:[Array,Function],default:void 0},transformItems:{type:Function,default:function(t){return t}}},computed:{widgetParams:function(){return{attribute:this.attribute,limit:this.limit,sortBy:this.sortBy,transformItems:this.transformItems}}},methods:{refine:function(t){this.state.refine(t)}}};\n//# sourceMappingURL=MenuSelect.vue_rollup-plugin-vue=script.js.map\n","// This is the `Number.isFinite()` polyfill recommended by MDN.\n// We do not provide any tests for this function.\n// See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isFinite#Polyfill\n// @MAJOR Replace with the native `Number.isFinite` method\nexport function isFiniteNumber(value) {\n return typeof value === 'number' && isFinite(value);\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { checkRendering, createDocumentationMessageGenerator, isFiniteNumber, noop } from \"../../lib/utils/index.js\";\nvar withUsage = createDocumentationMessageGenerator({\n name: 'numeric-menu',\n connector: true\n});\nvar $$type = 'ais.numericMenu';\nvar createSendEvent = function createSendEvent(_ref) {\n var instantSearchInstance = _ref.instantSearchInstance;\n return function () {\n if (arguments.length === 1) {\n instantSearchInstance.sendEventToInsights(arguments.length <= 0 ? undefined : arguments[0]);\n return;\n }\n };\n};\nvar connectNumericMenu = function connectNumericMenu(renderFn) {\n var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n checkRendering(renderFn, withUsage());\n return function (widgetParams) {\n var _ref2 = widgetParams || {},\n _ref2$attribute = _ref2.attribute,\n attribute = _ref2$attribute === void 0 ? '' : _ref2$attribute,\n _ref2$items = _ref2.items,\n items = _ref2$items === void 0 ? [] : _ref2$items,\n _ref2$transformItems = _ref2.transformItems,\n transformItems = _ref2$transformItems === void 0 ? function (item) {\n return item;\n } : _ref2$transformItems;\n if (attribute === '') {\n throw new Error(withUsage('The `attribute` option is required.'));\n }\n if (!items || items.length === 0) {\n throw new Error(withUsage('The `items` option expects an array of objects.'));\n }\n var prepareItems = function prepareItems(state) {\n return items.map(function (_ref3) {\n var start = _ref3.start,\n end = _ref3.end,\n label = _ref3.label;\n return {\n label: label,\n value: encodeURI(JSON.stringify({\n start: start,\n end: end\n })),\n isRefined: isRefined(state, attribute, {\n start: start,\n end: end,\n label: label\n })\n };\n });\n };\n var connectorState = {};\n return {\n $$type: $$type,\n init: function init(initOptions) {\n var instantSearchInstance = initOptions.instantSearchInstance;\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(initOptions)), {}, {\n instantSearchInstance: instantSearchInstance\n }), true);\n },\n render: function render(renderOptions) {\n var instantSearchInstance = renderOptions.instantSearchInstance;\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(renderOptions)), {}, {\n instantSearchInstance: instantSearchInstance\n }), false);\n },\n dispose: function dispose(_ref4) {\n var state = _ref4.state;\n unmountFn();\n return state.removeNumericRefinement(attribute);\n },\n getWidgetUiState: function getWidgetUiState(uiState, _ref5) {\n var searchParameters = _ref5.searchParameters;\n var values = searchParameters.getNumericRefinements(attribute);\n var equal = values['='] && values['='][0];\n if (equal || equal === 0) {\n return _objectSpread(_objectSpread({}, uiState), {}, {\n numericMenu: _objectSpread(_objectSpread({}, uiState.numericMenu), {}, _defineProperty({}, attribute, \"\".concat(values['='])))\n });\n }\n var min = values['>='] && values['>='][0] || '';\n var max = values['<='] && values['<='][0] || '';\n return removeEmptyRefinementsFromUiState(_objectSpread(_objectSpread({}, uiState), {}, {\n numericMenu: _objectSpread(_objectSpread({}, uiState.numericMenu), {}, _defineProperty({}, attribute, \"\".concat(min, \":\").concat(max)))\n }), attribute);\n },\n getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref6) {\n var uiState = _ref6.uiState;\n var value = uiState.numericMenu && uiState.numericMenu[attribute];\n var withoutRefinements = searchParameters.setQueryParameters({\n numericRefinements: _objectSpread(_objectSpread({}, searchParameters.numericRefinements), {}, _defineProperty({}, attribute, {}))\n });\n if (!value) {\n return withoutRefinements;\n }\n var isExact = value.indexOf(':') === -1;\n if (isExact) {\n return withoutRefinements.addNumericRefinement(attribute, '=', Number(value));\n }\n var _value$split$map = value.split(':').map(parseFloat),\n _value$split$map2 = _slicedToArray(_value$split$map, 2),\n min = _value$split$map2[0],\n max = _value$split$map2[1];\n var withMinRefinement = isFiniteNumber(min) ? withoutRefinements.addNumericRefinement(attribute, '>=', min) : withoutRefinements;\n var withMaxRefinement = isFiniteNumber(max) ? withMinRefinement.addNumericRefinement(attribute, '<=', max) : withMinRefinement;\n return withMaxRefinement;\n },\n getRenderState: function getRenderState(renderState, renderOptions) {\n return _objectSpread(_objectSpread({}, renderState), {}, {\n numericMenu: _objectSpread(_objectSpread({}, renderState.numericMenu), {}, _defineProperty({}, attribute, this.getWidgetRenderState(renderOptions)))\n });\n },\n getWidgetRenderState: function getWidgetRenderState(_ref7) {\n var _this = this;\n var results = _ref7.results,\n state = _ref7.state,\n instantSearchInstance = _ref7.instantSearchInstance,\n helper = _ref7.helper,\n createURL = _ref7.createURL;\n if (!connectorState.refine) {\n connectorState.refine = function (facetValue) {\n var refinedState = getRefinedState(helper.state, attribute, facetValue);\n connectorState.sendEvent('click:internal', facetValue);\n helper.setState(refinedState).search();\n };\n }\n if (!connectorState.createURL) {\n connectorState.createURL = function (newState) {\n return function (facetValue) {\n return createURL(function (uiState) {\n return _this.getWidgetUiState(uiState, {\n searchParameters: getRefinedState(newState, attribute, facetValue),\n helper: helper\n });\n });\n };\n };\n }\n if (!connectorState.sendEvent) {\n connectorState.sendEvent = createSendEvent({\n instantSearchInstance: instantSearchInstance\n });\n }\n var hasNoResults = results ? results.nbHits === 0 : true;\n var preparedItems = prepareItems(state);\n var allIsSelected = true;\n // @TODO avoid for..of for polyfill reasons\n // eslint-disable-next-line no-restricted-syntax\n var _iterator = _createForOfIteratorHelper(preparedItems),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var item = _step.value;\n if (item.isRefined && decodeURI(item.value) !== '{}') {\n allIsSelected = false;\n break;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return {\n createURL: connectorState.createURL(state),\n items: transformItems(preparedItems, {\n results: results\n }),\n hasNoResults: hasNoResults,\n canRefine: !(hasNoResults && allIsSelected),\n refine: connectorState.refine,\n sendEvent: connectorState.sendEvent,\n widgetParams: widgetParams\n };\n }\n };\n };\n};\nfunction isRefined(state, attribute, option) {\n // @TODO: same as another spot, why is this mixing arrays & elements?\n var currentRefinements = state.getNumericRefinements(attribute);\n if (option.start !== undefined && option.end !== undefined) {\n if (option.start === option.end) {\n return hasNumericRefinement(currentRefinements, '=', option.start);\n } else {\n return hasNumericRefinement(currentRefinements, '>=', option.start) && hasNumericRefinement(currentRefinements, '<=', option.end);\n }\n }\n if (option.start !== undefined) {\n return hasNumericRefinement(currentRefinements, '>=', option.start);\n }\n if (option.end !== undefined) {\n return hasNumericRefinement(currentRefinements, '<=', option.end);\n }\n if (option.start === undefined && option.end === undefined) {\n return Object.keys(currentRefinements).every(function (operator) {\n return (currentRefinements[operator] || []).length === 0;\n });\n }\n return false;\n}\nfunction getRefinedState(state, attribute, facetValue) {\n var resolvedState = state;\n var refinedOption = JSON.parse(decodeURI(facetValue));\n\n // @TODO: why is array / element mixed here & hasRefinements; seems wrong?\n var currentRefinements = resolvedState.getNumericRefinements(attribute);\n if (refinedOption.start === undefined && refinedOption.end === undefined) {\n return resolvedState.removeNumericRefinement(attribute);\n }\n if (!isRefined(resolvedState, attribute, refinedOption)) {\n resolvedState = resolvedState.removeNumericRefinement(attribute);\n }\n if (refinedOption.start !== undefined && refinedOption.end !== undefined) {\n if (refinedOption.start > refinedOption.end) {\n throw new Error('option.start should be > to option.end');\n }\n if (refinedOption.start === refinedOption.end) {\n if (hasNumericRefinement(currentRefinements, '=', refinedOption.start)) {\n resolvedState = resolvedState.removeNumericRefinement(attribute, '=', refinedOption.start);\n } else {\n resolvedState = resolvedState.addNumericRefinement(attribute, '=', refinedOption.start);\n }\n return resolvedState;\n }\n }\n if (refinedOption.start !== undefined) {\n if (hasNumericRefinement(currentRefinements, '>=', refinedOption.start)) {\n resolvedState = resolvedState.removeNumericRefinement(attribute, '>=', refinedOption.start);\n }\n resolvedState = resolvedState.addNumericRefinement(attribute, '>=', refinedOption.start);\n }\n if (refinedOption.end !== undefined) {\n if (hasNumericRefinement(currentRefinements, '<=', refinedOption.end)) {\n resolvedState = resolvedState.removeNumericRefinement(attribute, '<=', refinedOption.end);\n }\n resolvedState = resolvedState.addNumericRefinement(attribute, '<=', refinedOption.end);\n }\n if (typeof resolvedState.page === 'number') {\n resolvedState.page = 0;\n }\n return resolvedState;\n}\nfunction hasNumericRefinement(currentRefinements, operator, value) {\n return currentRefinements[operator] !== undefined && currentRefinements[operator].includes(value);\n}\nfunction removeEmptyRefinementsFromUiState(indexUiState, attribute) {\n if (!indexUiState.numericMenu) {\n return indexUiState;\n }\n if (indexUiState.numericMenu[attribute] === ':') {\n delete indexUiState.numericMenu[attribute];\n }\n if (Object.keys(indexUiState.numericMenu).length === 0) {\n delete indexUiState.numericMenu;\n }\n return indexUiState;\n}\nexport default connectNumericMenu;","import{createSuitMixin as t}from\"../mixins/suit.js\";import{createWidgetMixin as e}from\"../mixins/widget.js\";import{connectNumericMenu as i}from\"instantsearch.js/es/connectors/index.js\";import{createPanelConsumerMixin as r}from\"../mixins/panel.js\";export default{name:\"AisNumericMenu\",mixins:[e({connector:i},{$$widgetType:\"ais.numericMenu\"}),t({name:\"NumericMenu\"}),r()],props:{attribute:{type:String,required:!0},items:{type:Array,required:!0},transformItems:{type:Function,default:void 0}},computed:{widgetParams:function(){return{attribute:this.attribute,transformItems:this.transformItems,items:this.items}}}};\n//# sourceMappingURL=NumericMenu.vue_rollup-plugin-vue=script.js.map\n","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nexport function range(_ref) {\n var _ref$start = _ref.start,\n start = _ref$start === void 0 ? 0 : _ref$start,\n end = _ref.end,\n _ref$step = _ref.step,\n step = _ref$step === void 0 ? 1 : _ref$step;\n // We can't divide by 0 so we re-assign the step to 1 if it happens.\n var limitStep = step === 0 ? 1 : step;\n\n // In some cases the array to create has a decimal length.\n // We therefore need to round the value.\n // Example:\n // { start: 1, end: 5000, step: 500 }\n // => Array length = (5000 - 1) / 500 = 9.998\n var arrayLength = Math.round((end - start) / limitStep);\n return _toConsumableArray(Array(arrayLength)).map(function (_, current) {\n return start + current * limitStep;\n });\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { range } from \"../../lib/utils/index.js\";\nvar Paginator = /*#__PURE__*/function () {\n function Paginator(params) {\n _classCallCheck(this, Paginator);\n _defineProperty(this, \"currentPage\", void 0);\n _defineProperty(this, \"total\", void 0);\n _defineProperty(this, \"padding\", void 0);\n this.currentPage = params.currentPage;\n this.total = params.total;\n this.padding = params.padding;\n }\n _createClass(Paginator, [{\n key: \"pages\",\n value: function pages() {\n var total = this.total,\n currentPage = this.currentPage,\n padding = this.padding;\n if (total === 0) return [0];\n var totalDisplayedPages = this.nbPagesDisplayed(padding, total);\n if (totalDisplayedPages === total) {\n return range({\n end: total\n });\n }\n var paddingLeft = this.calculatePaddingLeft(currentPage, padding, total, totalDisplayedPages);\n var paddingRight = totalDisplayedPages - paddingLeft;\n var first = currentPage - paddingLeft;\n var last = currentPage + paddingRight;\n return range({\n start: first,\n end: last\n });\n }\n }, {\n key: \"nbPagesDisplayed\",\n value: function nbPagesDisplayed(padding, total) {\n return Math.min(2 * padding + 1, total);\n }\n }, {\n key: \"calculatePaddingLeft\",\n value: function calculatePaddingLeft(current, padding, total, totalDisplayedPages) {\n if (current <= padding) {\n return current;\n }\n if (current >= total - padding) {\n return totalDisplayedPages - (total - current);\n }\n return padding;\n }\n }, {\n key: \"isLastPage\",\n value: function isLastPage() {\n return this.currentPage === this.total - 1 || this.total === 0;\n }\n }, {\n key: \"isFirstPage\",\n value: function isFirstPage() {\n return this.currentPage === 0;\n }\n }]);\n return Paginator;\n}();\nexport default Paginator;","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { checkRendering, createDocumentationMessageGenerator, noop } from \"../../lib/utils/index.js\";\nimport Paginator from \"./Paginator.js\";\nvar withUsage = createDocumentationMessageGenerator({\n name: 'pagination',\n connector: true\n});\n/**\n * **Pagination** connector provides the logic to build a widget that will let the user\n * choose the current page of the results.\n *\n * When using the pagination with Algolia, you should be aware that the engine won't provide you pages\n * beyond the 1000th hits by default. You can find more information on the [Algolia documentation](https://www.algolia.com/doc/guides/searching/pagination/#pagination-limitations).\n */\nvar connectPagination = function connectPagination(renderFn) {\n var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n checkRendering(renderFn, withUsage());\n return function (widgetParams) {\n var _ref = widgetParams || {},\n totalPages = _ref.totalPages,\n _ref$padding = _ref.padding,\n padding = _ref$padding === void 0 ? 3 : _ref$padding;\n var pager = new Paginator({\n currentPage: 0,\n total: 0,\n padding: padding\n });\n var connectorState = {};\n function getMaxPage(_ref2) {\n var nbPages = _ref2.nbPages;\n return totalPages !== undefined ? Math.min(totalPages, nbPages) : nbPages;\n }\n return {\n $$type: 'ais.pagination',\n init: function init(initOptions) {\n var instantSearchInstance = initOptions.instantSearchInstance;\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(initOptions)), {}, {\n instantSearchInstance: instantSearchInstance\n }), true);\n },\n render: function render(renderOptions) {\n var instantSearchInstance = renderOptions.instantSearchInstance;\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(renderOptions)), {}, {\n instantSearchInstance: instantSearchInstance\n }), false);\n },\n dispose: function dispose(_ref3) {\n var state = _ref3.state;\n unmountFn();\n return state.setQueryParameter('page', undefined);\n },\n getWidgetUiState: function getWidgetUiState(uiState, _ref4) {\n var searchParameters = _ref4.searchParameters;\n var page = searchParameters.page || 0;\n if (!page) {\n return uiState;\n }\n return _objectSpread(_objectSpread({}, uiState), {}, {\n page: page + 1\n });\n },\n getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref5) {\n var uiState = _ref5.uiState;\n var page = uiState.page ? uiState.page - 1 : 0;\n return searchParameters.setQueryParameter('page', page);\n },\n getWidgetRenderState: function getWidgetRenderState(_ref6) {\n var results = _ref6.results,\n helper = _ref6.helper,\n state = _ref6.state,\n createURL = _ref6.createURL;\n if (!connectorState.refine) {\n connectorState.refine = function (page) {\n helper.setPage(page);\n helper.search();\n };\n }\n if (!connectorState.createURL) {\n connectorState.createURL = function (page) {\n return createURL(function (uiState) {\n return _objectSpread(_objectSpread({}, uiState), {}, {\n page: page + 1\n });\n });\n };\n }\n var page = state.page || 0;\n var nbPages = getMaxPage(results || {\n nbPages: 0\n });\n pager.currentPage = page;\n pager.total = nbPages;\n return {\n createURL: connectorState.createURL,\n refine: connectorState.refine,\n canRefine: nbPages > 1,\n currentRefinement: page,\n nbHits: (results === null || results === void 0 ? void 0 : results.nbHits) || 0,\n nbPages: nbPages,\n pages: results ? pager.pages() : [],\n isFirstPage: pager.isFirstPage(),\n isLastPage: pager.isLastPage(),\n widgetParams: widgetParams\n };\n },\n getRenderState: function getRenderState(renderState, renderOptions) {\n return _objectSpread(_objectSpread({}, renderState), {}, {\n pagination: this.getWidgetRenderState(renderOptions)\n });\n }\n };\n };\n};\nexport default connectPagination;","import{createSuitMixin as t}from\"../mixins/suit.js\";import{createWidgetMixin as e}from\"../mixins/widget.js\";import{connectPagination as a}from\"instantsearch.js/es/connectors/index.js\";import{createPanelConsumerMixin as i}from\"../mixins/panel.js\";export default{name:\"AisPagination\",mixins:[t({name:\"Pagination\"}),e({connector:a},{$$widgetType:\"ais.pagination\"}),i()],props:{padding:{type:Number,default:void 0,validator:function(t){return t>0}},totalPages:{type:Number,default:void 0,validator:function(t){return t>0}},showFirst:{type:Boolean,default:!0},showLast:{type:Boolean,default:!0},showNext:{type:Boolean,default:!0},showPrevious:{type:Boolean,default:!0}},computed:{widgetParams:function(){return{padding:this.padding,totalPages:this.totalPages}}},emits:[\"page-change\"],methods:{refine:function(t){var e=Math.min(Math.max(t,0),this.state.nbPages-1);this.state.refine(e),this.$emit(\"page-change\",e)}}};\n//# sourceMappingURL=Pagination.vue_rollup-plugin-vue=script.js.map\n","import{createSuitMixin as t}from\"../mixins/suit.js\";import\"../util/vue-compat/index-vue2.js\";import{createPanelProviderMixin as i}from\"../mixins/panel.js\";export default{name:\"AisPanel\",mixins:[t({name:\"Panel\"}),i()],methods:{getSlot:function(t){return this.$slots[t]||this.$scopedSlots[t]}}};\n//# sourceMappingURL=Panel.vue_rollup-plugin-vue=script.js.map\n","import{createSuitMixin as t}from\"../mixins/suit.js\";export default{name:\"AisPoweredBy\",mixins:[t({name:\"PoweredBy\"})],props:{theme:{default:\"light\",validator:function(t){return-1!==[\"light\",\"dark\"].indexOf(t)}}},computed:{algoliaUrl:function(){return\"https://www.algolia.com/?utm_source=vue-instantsearch&utm_medium=website&utm_content=\"+(location?location.hostname:\"\")+\"&utm_campaign=poweredby\"}}};\n//# sourceMappingURL=PoweredBy.vue_rollup-plugin-vue=script.js.map\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { checkRendering, createDocumentationMessageGenerator, warning, getRefinements, isEqual, noop } from \"../../lib/utils/index.js\";\nvar withUsage = createDocumentationMessageGenerator({\n name: 'query-rules',\n connector: true\n});\nfunction hasStateRefinements(state) {\n return [state.disjunctiveFacetsRefinements, state.facetsRefinements, state.hierarchicalFacetsRefinements, state.numericRefinements].some(function (refinement) {\n return Boolean(refinement && Object.keys(refinement).length > 0);\n });\n}\n\n// A context rule must consist only of alphanumeric characters, hyphens, and underscores.\n// See https://www.algolia.com/doc/guides/managing-results/refine-results/merchandising-and-promoting/in-depth/implementing-query-rules/#context\nfunction escapeRuleContext(ruleName) {\n return ruleName.replace(/[^a-z0-9-_]+/gi, '_');\n}\nfunction getRuleContextsFromTrackedFilters(_ref) {\n var helper = _ref.helper,\n sharedHelperState = _ref.sharedHelperState,\n trackedFilters = _ref.trackedFilters;\n var ruleContexts = Object.keys(trackedFilters).reduce(function (facets, facetName) {\n var facetRefinements = getRefinements(helper.lastResults || {}, sharedHelperState, true).filter(function (refinement) {\n return refinement.attribute === facetName;\n }).map(function (refinement) {\n return refinement.numericValue || refinement.name;\n });\n var getTrackedFacetValues = trackedFilters[facetName];\n var trackedFacetValues = getTrackedFacetValues(facetRefinements);\n return [].concat(_toConsumableArray(facets), _toConsumableArray(facetRefinements.filter(function (facetRefinement) {\n return trackedFacetValues.includes(facetRefinement);\n }).map(function (facetValue) {\n return escapeRuleContext(\"ais-\".concat(facetName, \"-\").concat(facetValue));\n })));\n }, []);\n return ruleContexts;\n}\nfunction applyRuleContexts(event) {\n var helper = this.helper,\n initialRuleContexts = this.initialRuleContexts,\n trackedFilters = this.trackedFilters,\n transformRuleContexts = this.transformRuleContexts;\n var sharedHelperState = event.state;\n var previousRuleContexts = sharedHelperState.ruleContexts || [];\n var newRuleContexts = getRuleContextsFromTrackedFilters({\n helper: helper,\n sharedHelperState: sharedHelperState,\n trackedFilters: trackedFilters\n });\n var nextRuleContexts = [].concat(_toConsumableArray(initialRuleContexts), _toConsumableArray(newRuleContexts));\n process.env.NODE_ENV === 'development' ? warning(nextRuleContexts.length <= 10, \"\\nThe maximum number of `ruleContexts` is 10. They have been sliced to that limit.\\nConsider using `transformRuleContexts` to minimize the number of rules sent to Algolia.\\n\") : void 0;\n var ruleContexts = transformRuleContexts(nextRuleContexts).slice(0, 10);\n if (!isEqual(previousRuleContexts, ruleContexts)) {\n helper.overrideStateWithoutTriggeringChangeEvent(_objectSpread(_objectSpread({}, sharedHelperState), {}, {\n ruleContexts: ruleContexts\n }));\n }\n}\nvar connectQueryRules = function connectQueryRules(_render) {\n var unmount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n checkRendering(_render, withUsage());\n return function (widgetParams) {\n var _ref2 = widgetParams || {},\n _ref2$trackedFilters = _ref2.trackedFilters,\n trackedFilters = _ref2$trackedFilters === void 0 ? {} : _ref2$trackedFilters,\n _ref2$transformRuleCo = _ref2.transformRuleContexts,\n transformRuleContexts = _ref2$transformRuleCo === void 0 ? function (rules) {\n return rules;\n } : _ref2$transformRuleCo,\n _ref2$transformItems = _ref2.transformItems,\n transformItems = _ref2$transformItems === void 0 ? function (items) {\n return items;\n } : _ref2$transformItems;\n Object.keys(trackedFilters).forEach(function (facetName) {\n if (typeof trackedFilters[facetName] !== 'function') {\n throw new Error(withUsage(\"'The \\\"\".concat(facetName, \"\\\" filter value in the `trackedFilters` option expects a function.\")));\n }\n });\n var hasTrackedFilters = Object.keys(trackedFilters).length > 0;\n\n // We store the initial rule contexts applied before creating the widget\n // so that we do not override them with the rules created from `trackedFilters`.\n var initialRuleContexts = [];\n var onHelperChange;\n return {\n $$type: 'ais.queryRules',\n init: function init(initOptions) {\n var helper = initOptions.helper,\n state = initOptions.state,\n instantSearchInstance = initOptions.instantSearchInstance;\n initialRuleContexts = state.ruleContexts || [];\n onHelperChange = applyRuleContexts.bind({\n helper: helper,\n initialRuleContexts: initialRuleContexts,\n trackedFilters: trackedFilters,\n transformRuleContexts: transformRuleContexts\n });\n if (hasTrackedFilters) {\n // We need to apply the `ruleContexts` based on the `trackedFilters`\n // before the helper changes state in some cases:\n // - Some filters are applied on the first load (e.g. using `configure`)\n // - The `transformRuleContexts` option sets initial `ruleContexts`.\n if (hasStateRefinements(state) || Boolean(widgetParams.transformRuleContexts)) {\n onHelperChange({\n state: state\n });\n }\n\n // We track every change in the helper to override its state and add\n // any `ruleContexts` needed based on the `trackedFilters`.\n helper.on('change', onHelperChange);\n }\n _render(_objectSpread(_objectSpread({}, this.getWidgetRenderState(initOptions)), {}, {\n instantSearchInstance: instantSearchInstance\n }), true);\n },\n render: function render(renderOptions) {\n var instantSearchInstance = renderOptions.instantSearchInstance;\n _render(_objectSpread(_objectSpread({}, this.getWidgetRenderState(renderOptions)), {}, {\n instantSearchInstance: instantSearchInstance\n }), false);\n },\n getWidgetRenderState: function getWidgetRenderState(_ref3) {\n var results = _ref3.results;\n var _ref4 = results || {},\n _ref4$userData = _ref4.userData,\n userData = _ref4$userData === void 0 ? [] : _ref4$userData;\n var items = transformItems(userData, {\n results: results\n });\n return {\n items: items,\n widgetParams: widgetParams\n };\n },\n getRenderState: function getRenderState(renderState, renderOptions) {\n return _objectSpread(_objectSpread({}, renderState), {}, {\n queryRules: this.getWidgetRenderState(renderOptions)\n });\n },\n dispose: function dispose(_ref5) {\n var helper = _ref5.helper,\n state = _ref5.state;\n unmount();\n if (hasTrackedFilters) {\n helper.removeListener('change', onHelperChange);\n return state.setQueryParameter('ruleContexts', initialRuleContexts);\n }\n return state;\n }\n };\n };\n};\nexport default connectQueryRules;","import{createSuitMixin as e}from\"../mixins/suit.js\";import{createWidgetMixin as t}from\"../mixins/widget.js\";import{connectQueryRules as r}from\"instantsearch.js/es/connectors/index.js\";export default{name:\"AisQueryRuleContext\",mixins:[e({name:\"QueryRuleContext\"}),t({connector:r},{$$widgetType:\"ais.queryRuleContext\"})],props:{trackedFilters:{type:Object,required:!0},transformRuleContexts:{type:Function,required:!1,default:void 0}},computed:{widgetParams:function(){return{trackedFilters:this.trackedFilters,transformRuleContexts:this.transformRuleContexts}}},render:function(){return null}};\n//# sourceMappingURL=QueryRuleContext.js.map\n","import{createSuitMixin as t}from\"../mixins/suit.js\";import{createWidgetMixin as e}from\"../mixins/widget.js\";import{connectQueryRules as s}from\"instantsearch.js/es/connectors/index.js\";export default{name:\"AisQueryRuleCustomData\",mixins:[t({name:\"QueryRuleCustomData\"}),e({connector:s},{$$widgetType:\"ais.queryRuleCustomData\"})],props:{transformItems:{type:Function,required:!1,default:void 0}},computed:{widgetParams:function(){return{transformItems:this.transformItems}}}};\n//# sourceMappingURL=QueryRuleCustomData.vue_rollup-plugin-vue=script.js.map\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport { checkRendering, createDocumentationMessageGenerator, isFiniteNumber, find, noop } from \"../../lib/utils/index.js\";\nvar withUsage = createDocumentationMessageGenerator({\n name: 'range-input',\n connector: true\n}, {\n name: 'range-slider',\n connector: true\n});\nvar $$type = 'ais.range';\n\n// @MAJOR: potentially we should consolidate these types\n\nfunction toPrecision(_ref) {\n var min = _ref.min,\n max = _ref.max,\n precision = _ref.precision;\n var pow = Math.pow(10, precision);\n return {\n min: min ? Math.floor(min * pow) / pow : min,\n max: max ? Math.ceil(max * pow) / pow : max\n };\n}\n\n/**\n * **Range** connector provides the logic to create custom widget that will let\n * the user refine results using a numeric range.\n *\n * This connectors provides a `refine()` function that accepts bounds. It will also provide\n * information about the min and max bounds for the current result set.\n */\nvar connectRange = function connectRange(renderFn) {\n var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n checkRendering(renderFn, withUsage());\n return function (widgetParams) {\n var _ref2 = widgetParams || {},\n _ref2$attribute = _ref2.attribute,\n attribute = _ref2$attribute === void 0 ? '' : _ref2$attribute,\n minBound = _ref2.min,\n maxBound = _ref2.max,\n _ref2$precision = _ref2.precision,\n precision = _ref2$precision === void 0 ? 0 : _ref2$precision;\n if (!attribute) {\n throw new Error(withUsage('The `attribute` option is required.'));\n }\n if (isFiniteNumber(minBound) && isFiniteNumber(maxBound) && minBound > maxBound) {\n throw new Error(withUsage(\"The `max` option can't be lower than `min`.\"));\n }\n var formatToNumber = function formatToNumber(v) {\n return Number(Number(v).toFixed(precision));\n };\n var rangeFormatter = {\n from: function from(v) {\n return v.toLocaleString();\n },\n to: function to(v) {\n return formatToNumber(v).toLocaleString();\n }\n };\n\n // eslint-disable-next-line complexity\n var getRefinedState = function getRefinedState(helper, currentRange, nextMin, nextMax) {\n var resolvedState = helper.state;\n var currentRangeMin = currentRange.min,\n currentRangeMax = currentRange.max;\n var _ref3 = resolvedState.getNumericRefinement(attribute, '>=') || [],\n _ref4 = _slicedToArray(_ref3, 1),\n min = _ref4[0];\n var _ref5 = resolvedState.getNumericRefinement(attribute, '<=') || [],\n _ref6 = _slicedToArray(_ref5, 1),\n max = _ref6[0];\n var isResetMin = nextMin === undefined || nextMin === '';\n var isResetMax = nextMax === undefined || nextMax === '';\n var _toPrecision = toPrecision({\n min: !isResetMin ? parseFloat(nextMin) : undefined,\n max: !isResetMax ? parseFloat(nextMax) : undefined,\n precision: precision\n }),\n nextMinAsNumber = _toPrecision.min,\n nextMaxAsNumber = _toPrecision.max;\n var newNextMin;\n if (!isFiniteNumber(minBound) && currentRangeMin === nextMinAsNumber) {\n newNextMin = undefined;\n } else if (isFiniteNumber(minBound) && isResetMin) {\n newNextMin = minBound;\n } else {\n newNextMin = nextMinAsNumber;\n }\n var newNextMax;\n if (!isFiniteNumber(maxBound) && currentRangeMax === nextMaxAsNumber) {\n newNextMax = undefined;\n } else if (isFiniteNumber(maxBound) && isResetMax) {\n newNextMax = maxBound;\n } else {\n newNextMax = nextMaxAsNumber;\n }\n var isResetNewNextMin = newNextMin === undefined;\n var isGreaterThanCurrentRange = isFiniteNumber(currentRangeMin) && currentRangeMin <= newNextMin;\n var isMinValid = isResetNewNextMin || isFiniteNumber(newNextMin) && (!isFiniteNumber(currentRangeMin) || isGreaterThanCurrentRange);\n var isResetNewNextMax = newNextMax === undefined;\n var isLowerThanRange = isFiniteNumber(newNextMax) && currentRangeMax >= newNextMax;\n var isMaxValid = isResetNewNextMax || isFiniteNumber(newNextMax) && (!isFiniteNumber(currentRangeMax) || isLowerThanRange);\n var hasMinChange = min !== newNextMin;\n var hasMaxChange = max !== newNextMax;\n if ((hasMinChange || hasMaxChange) && isMinValid && isMaxValid) {\n resolvedState = resolvedState.removeNumericRefinement(attribute);\n if (isFiniteNumber(newNextMin)) {\n resolvedState = resolvedState.addNumericRefinement(attribute, '>=', newNextMin);\n }\n if (isFiniteNumber(newNextMax)) {\n resolvedState = resolvedState.addNumericRefinement(attribute, '<=', newNextMax);\n }\n return resolvedState.resetPage();\n }\n return null;\n };\n var createSendEvent = function createSendEvent(instantSearchInstance) {\n return function () {\n if (arguments.length === 1) {\n instantSearchInstance.sendEventToInsights(arguments.length <= 0 ? undefined : arguments[0]);\n return;\n }\n };\n };\n function _getCurrentRange(stats) {\n var min;\n if (isFiniteNumber(minBound)) {\n min = minBound;\n } else if (isFiniteNumber(stats.min)) {\n min = stats.min;\n } else {\n min = 0;\n }\n var max;\n if (isFiniteNumber(maxBound)) {\n max = maxBound;\n } else if (isFiniteNumber(stats.max)) {\n max = stats.max;\n } else {\n max = 0;\n }\n return toPrecision({\n min: min,\n max: max,\n precision: precision\n });\n }\n function _getCurrentRefinement(helper) {\n var _ref7 = helper.getNumericRefinement(attribute, '>=') || [],\n _ref8 = _slicedToArray(_ref7, 1),\n minValue = _ref8[0];\n var _ref9 = helper.getNumericRefinement(attribute, '<=') || [],\n _ref10 = _slicedToArray(_ref9, 1),\n maxValue = _ref10[0];\n var min = isFiniteNumber(minValue) ? minValue : -Infinity;\n var max = isFiniteNumber(maxValue) ? maxValue : Infinity;\n return [min, max];\n }\n function _refine(helper, currentRange) {\n return function () {\n var _ref11 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [undefined, undefined],\n _ref12 = _slicedToArray(_ref11, 2),\n nextMin = _ref12[0],\n nextMax = _ref12[1];\n var refinedState = getRefinedState(helper, currentRange, nextMin, nextMax);\n if (refinedState) {\n helper.setState(refinedState).search();\n }\n };\n }\n return {\n $$type: $$type,\n init: function init(initOptions) {\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(initOptions)), {}, {\n instantSearchInstance: initOptions.instantSearchInstance\n }), true);\n },\n render: function render(renderOptions) {\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(renderOptions)), {}, {\n instantSearchInstance: renderOptions.instantSearchInstance\n }), false);\n },\n getRenderState: function getRenderState(renderState, renderOptions) {\n return _objectSpread(_objectSpread({}, renderState), {}, {\n range: _objectSpread(_objectSpread({}, renderState.range), {}, _defineProperty({}, attribute, this.getWidgetRenderState(renderOptions)))\n });\n },\n getWidgetRenderState: function getWidgetRenderState(_ref13) {\n var results = _ref13.results,\n helper = _ref13.helper,\n instantSearchInstance = _ref13.instantSearchInstance;\n var facetsFromResults = results && results.disjunctiveFacets || [];\n var facet = find(facetsFromResults, function (facetResult) {\n return facetResult.name === attribute;\n });\n var stats = facet && facet.stats || {\n min: undefined,\n max: undefined\n };\n var currentRange = _getCurrentRange(stats);\n var start = _getCurrentRefinement(helper);\n var refine;\n if (!results) {\n // On first render pass an empty range\n // to be able to bypass the validation\n // related to it\n refine = _refine(helper, {\n min: undefined,\n max: undefined\n });\n } else {\n refine = _refine(helper, currentRange);\n }\n return {\n refine: refine,\n canRefine: currentRange.min !== currentRange.max,\n format: rangeFormatter,\n range: currentRange,\n sendEvent: createSendEvent(instantSearchInstance),\n widgetParams: _objectSpread(_objectSpread({}, widgetParams), {}, {\n precision: precision\n }),\n start: start\n };\n },\n dispose: function dispose(_ref14) {\n var state = _ref14.state;\n unmountFn();\n return state.removeDisjunctiveFacet(attribute).removeNumericRefinement(attribute);\n },\n getWidgetUiState: function getWidgetUiState(uiState, _ref15) {\n var searchParameters = _ref15.searchParameters;\n var _searchParameters$get = searchParameters.getNumericRefinements(attribute),\n _searchParameters$get2 = _searchParameters$get['>='],\n min = _searchParameters$get2 === void 0 ? [] : _searchParameters$get2,\n _searchParameters$get3 = _searchParameters$get['<='],\n max = _searchParameters$get3 === void 0 ? [] : _searchParameters$get3;\n if (min.length === 0 && max.length === 0) {\n return uiState;\n }\n return _objectSpread(_objectSpread({}, uiState), {}, {\n range: _objectSpread(_objectSpread({}, uiState.range), {}, _defineProperty({}, attribute, \"\".concat(min, \":\").concat(max)))\n });\n },\n getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref16) {\n var uiState = _ref16.uiState;\n var widgetSearchParameters = searchParameters.addDisjunctiveFacet(attribute).setQueryParameters({\n numericRefinements: _objectSpread(_objectSpread({}, searchParameters.numericRefinements), {}, _defineProperty({}, attribute, {}))\n });\n if (isFiniteNumber(minBound)) {\n widgetSearchParameters = widgetSearchParameters.addNumericRefinement(attribute, '>=', minBound);\n }\n if (isFiniteNumber(maxBound)) {\n widgetSearchParameters = widgetSearchParameters.addNumericRefinement(attribute, '<=', maxBound);\n }\n var value = uiState.range && uiState.range[attribute];\n if (!value || value.indexOf(':') === -1) {\n return widgetSearchParameters;\n }\n var _value$split$map = value.split(':').map(parseFloat),\n _value$split$map2 = _slicedToArray(_value$split$map, 2),\n lowerBound = _value$split$map2[0],\n upperBound = _value$split$map2[1];\n if (isFiniteNumber(lowerBound) && (!isFiniteNumber(minBound) || minBound < lowerBound)) {\n widgetSearchParameters = widgetSearchParameters.removeNumericRefinement(attribute, '>=');\n widgetSearchParameters = widgetSearchParameters.addNumericRefinement(attribute, '>=', lowerBound);\n }\n if (isFiniteNumber(upperBound) && (!isFiniteNumber(maxBound) || upperBound < maxBound)) {\n widgetSearchParameters = widgetSearchParameters.removeNumericRefinement(attribute, '<=');\n widgetSearchParameters = widgetSearchParameters.addNumericRefinement(attribute, '<=', upperBound);\n }\n return widgetSearchParameters;\n }\n };\n };\n};\nexport default connectRange;","import{createSuitMixin as t}from\"../mixins/suit.js\";import{createWidgetMixin as i}from\"../mixins/widget.js\";import{connectRange as e}from\"instantsearch.js/es/connectors/index.js\";import{createPanelConsumerMixin as n}from\"../mixins/panel.js\";export default{name:\"AisRangeInput\",mixins:[t({name:\"RangeInput\"}),i({connector:e},{$$widgetType:\"ais.rangeInput\"}),n()],props:{attribute:{type:String,required:!0},min:{type:Number,required:!1,default:void 0},max:{type:Number,required:!1,default:void 0},precision:{type:Number,required:!1,default:0}},data:function(){return{minInput:void 0,maxInput:void 0}},updated:function(){this.minInput=void 0,this.maxInput=void 0},computed:{widgetParams:function(){return{attribute:this.attribute,min:this.min,max:this.max,precision:this.precision}},step:function(){return 1/Math.pow(10,this.precision)},values:function(){var t=this.state.start,i=t[0],e=t[1],n=this.state.range,r=n.min,s=n.max;return{min:i!==-1/0&&i!==r?i:void 0,max:e!==1/0&&e!==s?e:void 0}}},methods:{pick:function(t,i){return null!=t?t:i},refine:function(t){var i=t.min,e=t.max;this.state.refine([i,e])}}};\n//# sourceMappingURL=RangeInput.vue_rollup-plugin-vue=script.js.map\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport { checkRendering, createDocumentationLink, createDocumentationMessageGenerator, noop, warning } from \"../../lib/utils/index.js\";\nvar withUsage = createDocumentationMessageGenerator({\n name: 'rating-menu',\n connector: true\n});\nvar $$type = 'ais.ratingMenu';\nvar MAX_VALUES_PER_FACET_API_LIMIT = 1000;\nvar STEP = 1;\nvar createSendEvent = function createSendEvent(_ref) {\n var instantSearchInstance = _ref.instantSearchInstance,\n helper = _ref.helper,\n getRefinedStar = _ref.getRefinedStar,\n attribute = _ref.attribute;\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (args.length === 1) {\n instantSearchInstance.sendEventToInsights(args[0]);\n return;\n }\n var facetValue = args[1],\n _args$ = args[2],\n eventName = _args$ === void 0 ? 'Filter Applied' : _args$;\n var _args$0$split = args[0].split(':'),\n _args$0$split2 = _slicedToArray(_args$0$split, 2),\n eventType = _args$0$split2[0],\n eventModifier = _args$0$split2[1];\n if (eventType !== 'click') {\n return;\n }\n var isRefined = getRefinedStar() === Number(facetValue);\n if (!isRefined) {\n instantSearchInstance.sendEventToInsights({\n insightsMethod: 'clickedFilters',\n widgetType: $$type,\n eventType: eventType,\n eventModifier: eventModifier,\n payload: {\n eventName: eventName,\n index: helper.getIndex(),\n filters: [\"\".concat(attribute, \">=\").concat(facetValue)]\n },\n attribute: attribute\n });\n }\n };\n};\n/**\n * **StarRating** connector provides the logic to build a custom widget that will let\n * the user refine search results based on ratings.\n *\n * The connector provides to the rendering: `refine()` to select a value and\n * `items` that are the values that can be selected. `refine` should be used\n * with `items.value`.\n */\nvar connectRatingMenu = function connectRatingMenu(renderFn) {\n var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n checkRendering(renderFn, withUsage());\n return function (widgetParams) {\n var _ref2 = widgetParams || {},\n attribute = _ref2.attribute,\n _ref2$max = _ref2.max,\n max = _ref2$max === void 0 ? 5 : _ref2$max;\n var sendEvent;\n if (!attribute) {\n throw new Error(withUsage('The `attribute` option is required.'));\n }\n var _getRefinedStar = function getRefinedStar(state) {\n var _values$;\n var values = state.getNumericRefinements(attribute);\n if (!((_values$ = values['>=']) !== null && _values$ !== void 0 && _values$.length)) {\n return undefined;\n }\n return values['>='][0];\n };\n var getFacetsMaxDecimalPlaces = function getFacetsMaxDecimalPlaces(facetResults) {\n var maxDecimalPlaces = 0;\n facetResults.forEach(function (facetResult) {\n var _facetResult$name$spl = facetResult.name.split('.'),\n _facetResult$name$spl2 = _slicedToArray(_facetResult$name$spl, 2),\n _facetResult$name$spl3 = _facetResult$name$spl2[1],\n decimal = _facetResult$name$spl3 === void 0 ? '' : _facetResult$name$spl3;\n maxDecimalPlaces = Math.max(maxDecimalPlaces, decimal.length);\n });\n return maxDecimalPlaces;\n };\n var getFacetValuesWarningMessage = function getFacetValuesWarningMessage(_ref3) {\n var maxDecimalPlaces = _ref3.maxDecimalPlaces,\n maxFacets = _ref3.maxFacets,\n maxValuesPerFacet = _ref3.maxValuesPerFacet;\n var maxDecimalPlacesInRange = Math.max(0, Math.floor(Math.log10(MAX_VALUES_PER_FACET_API_LIMIT / max)));\n var maxFacetsInRange = Math.min(MAX_VALUES_PER_FACET_API_LIMIT, Math.pow(10, maxDecimalPlacesInRange) * max);\n var solutions = [];\n if (maxFacets > MAX_VALUES_PER_FACET_API_LIMIT) {\n solutions.push(\"- Update your records to lower the precision of the values in the \\\"\".concat(attribute, \"\\\" attribute (for example: \").concat(5.123456789.toPrecision(maxDecimalPlaces + 1), \" to \").concat(5.123456789.toPrecision(maxDecimalPlacesInRange + 1), \")\"));\n }\n if (maxValuesPerFacet < maxFacetsInRange) {\n solutions.push(\"- Increase the maximum number of facet values to \".concat(maxFacetsInRange, \" using the \\\"configure\\\" widget \").concat(createDocumentationLink({\n name: 'configure'\n }), \" and the \\\"maxValuesPerFacet\\\" parameter https://www.algolia.com/doc/api-reference/api-parameters/maxValuesPerFacet/\"));\n }\n return \"The \".concat(attribute, \" attribute can have \").concat(maxFacets, \" different values (0 to \").concat(max, \" with a maximum of \").concat(maxDecimalPlaces, \" decimals = \").concat(maxFacets, \") but you retrieved only \").concat(maxValuesPerFacet, \" facet values. Therefore the number of results that match the refinements can be incorrect.\\n \").concat(solutions.length ? \"To resolve this problem you can:\\n\".concat(solutions.join('\\n')) : \"\");\n };\n function getRefinedState(state, facetValue) {\n var isRefined = _getRefinedStar(state) === Number(facetValue);\n var emptyState = state.resetPage().removeNumericRefinement(attribute);\n if (!isRefined) {\n return emptyState.addNumericRefinement(attribute, '<=', max).addNumericRefinement(attribute, '>=', Number(facetValue));\n }\n return emptyState;\n }\n var toggleRefinement = function toggleRefinement(helper, facetValue) {\n sendEvent('click:internal', facetValue);\n helper.setState(getRefinedState(helper.state, facetValue)).search();\n };\n var connectorState = {\n toggleRefinementFactory: function toggleRefinementFactory(helper) {\n return toggleRefinement.bind(null, helper);\n },\n createURLFactory: function createURLFactory(_ref4) {\n var state = _ref4.state,\n createURL = _ref4.createURL,\n getWidgetUiState = _ref4.getWidgetUiState,\n helper = _ref4.helper;\n return function (value) {\n return createURL(function (uiState) {\n return getWidgetUiState(uiState, {\n searchParameters: getRefinedState(state, value),\n helper: helper\n });\n });\n };\n }\n };\n return {\n $$type: $$type,\n init: function init(initOptions) {\n var instantSearchInstance = initOptions.instantSearchInstance;\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(initOptions)), {}, {\n instantSearchInstance: instantSearchInstance\n }), true);\n },\n render: function render(renderOptions) {\n var instantSearchInstance = renderOptions.instantSearchInstance;\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(renderOptions)), {}, {\n instantSearchInstance: instantSearchInstance\n }), false);\n },\n getRenderState: function getRenderState(renderState, renderOptions) {\n return _objectSpread(_objectSpread({}, renderState), {}, {\n ratingMenu: _objectSpread(_objectSpread({}, renderState.ratingMenu), {}, _defineProperty({}, attribute, this.getWidgetRenderState(renderOptions)))\n });\n },\n getWidgetRenderState: function getWidgetRenderState(_ref5) {\n var helper = _ref5.helper,\n results = _ref5.results,\n state = _ref5.state,\n instantSearchInstance = _ref5.instantSearchInstance,\n createURL = _ref5.createURL;\n var facetValues = [];\n if (!sendEvent) {\n sendEvent = createSendEvent({\n instantSearchInstance: instantSearchInstance,\n helper: helper,\n getRefinedStar: function getRefinedStar() {\n return _getRefinedStar(helper.state);\n },\n attribute: attribute\n });\n }\n var refinementIsApplied = false;\n var totalCount = 0;\n var facetResults = results === null || results === void 0 ? void 0 : results.getFacetValues(attribute, {});\n if (results && facetResults) {\n var maxValuesPerFacet = facetResults.length;\n var maxDecimalPlaces = getFacetsMaxDecimalPlaces(facetResults);\n var maxFacets = Math.pow(10, maxDecimalPlaces) * max;\n process.env.NODE_ENV === 'development' ? warning(maxFacets <= maxValuesPerFacet || Boolean(results.__isArtificial), getFacetValuesWarningMessage({\n maxDecimalPlaces: maxDecimalPlaces,\n maxFacets: maxFacets,\n maxValuesPerFacet: maxValuesPerFacet\n })) : void 0;\n var refinedStar = _getRefinedStar(state);\n var _loop = function _loop(star) {\n var isRefined = refinedStar === star;\n refinementIsApplied = refinementIsApplied || isRefined;\n var count = facetResults.filter(function (f) {\n return Number(f.name) >= star && Number(f.name) <= max;\n }).map(function (f) {\n return f.count;\n }).reduce(function (sum, current) {\n return sum + current;\n }, 0);\n totalCount += count;\n if (refinedStar && !isRefined && count === 0) {\n // skip count==0 when at least 1 refinement is enabled\n // eslint-disable-next-line no-continue\n return \"continue\";\n }\n var stars = _toConsumableArray(new Array(Math.floor(max / STEP))).map(function (_v, i) {\n return i * STEP < star;\n });\n facetValues.push({\n stars: stars,\n name: String(star),\n label: String(star),\n value: String(star),\n count: count,\n isRefined: isRefined\n });\n };\n for (var star = STEP; star < max; star += STEP) {\n var _ret = _loop(star);\n if (_ret === \"continue\") continue;\n }\n }\n facetValues = facetValues.reverse();\n var hasNoResults = results ? results.nbHits === 0 : true;\n return {\n items: facetValues,\n hasNoResults: hasNoResults,\n canRefine: (!hasNoResults || refinementIsApplied) && totalCount > 0,\n refine: connectorState.toggleRefinementFactory(helper),\n sendEvent: sendEvent,\n createURL: connectorState.createURLFactory({\n state: state,\n createURL: createURL,\n helper: helper,\n getWidgetUiState: this.getWidgetUiState\n }),\n widgetParams: widgetParams\n };\n },\n dispose: function dispose(_ref6) {\n var state = _ref6.state;\n unmountFn();\n return state.removeNumericRefinement(attribute);\n },\n getWidgetUiState: function getWidgetUiState(uiState, _ref7) {\n var searchParameters = _ref7.searchParameters;\n var value = _getRefinedStar(searchParameters);\n return removeEmptyRefinementsFromUiState(_objectSpread(_objectSpread({}, uiState), {}, {\n ratingMenu: _objectSpread(_objectSpread({}, uiState.ratingMenu), {}, _defineProperty({}, attribute, typeof value === 'number' ? value : undefined))\n }), attribute);\n },\n getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref8) {\n var uiState = _ref8.uiState;\n var value = uiState.ratingMenu && uiState.ratingMenu[attribute];\n var withDisjunctiveFacet = searchParameters.addDisjunctiveFacet(attribute).removeNumericRefinement(attribute).removeDisjunctiveFacetRefinement(attribute);\n if (!value) {\n return withDisjunctiveFacet.setQueryParameters({\n numericRefinements: _objectSpread(_objectSpread({}, withDisjunctiveFacet.numericRefinements), {}, _defineProperty({}, attribute, {}))\n });\n }\n return withDisjunctiveFacet.addNumericRefinement(attribute, '<=', max).addNumericRefinement(attribute, '>=', value);\n }\n };\n };\n};\nfunction removeEmptyRefinementsFromUiState(indexUiState, attribute) {\n if (!indexUiState.ratingMenu) {\n return indexUiState;\n }\n if (typeof indexUiState.ratingMenu[attribute] !== 'number') {\n delete indexUiState.ratingMenu[attribute];\n }\n if (Object.keys(indexUiState.ratingMenu).length === 0) {\n delete indexUiState.ratingMenu;\n }\n return indexUiState;\n}\nexport default connectRatingMenu;","import{createSuitMixin as t}from\"../mixins/suit.js\";import{createWidgetMixin as i}from\"../mixins/widget.js\";import{connectRatingMenu as e}from\"instantsearch.js/es/connectors/index.js\";import{createPanelConsumerMixin as n}from\"../mixins/panel.js\";export default{name:\"AisRatingMenu\",mixins:[t({name:\"RatingMenu\"}),i({connector:e},{$$widgetType:\"ais.ratingMenu\"}),n()],props:{attribute:{type:String,required:!0},max:{type:Number,default:void 0}},computed:{widgetParams:function(){return{attribute:this.attribute,max:this.max}}}};\n//# sourceMappingURL=RatingMenu.vue_rollup-plugin-vue=script.js.map\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nvar _excluded = [\"name\", \"escapedValue\"],\n _excluded2 = [\"escapedValue\", \"value\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport { escapeFacets, TAG_PLACEHOLDER, TAG_REPLACEMENT, checkRendering, createDocumentationMessageGenerator, createSendEventForFacet, noop, warning } from \"../../lib/utils/index.js\";\nvar withUsage = createDocumentationMessageGenerator({\n name: 'refinement-list',\n connector: true\n});\nvar DEFAULT_SORT = ['isRefined', 'count:desc', 'name:asc'];\n/**\n * **RefinementList** connector provides the logic to build a custom widget that\n * will let the user filter the results based on the values of a specific facet.\n *\n * **Requirement:** the attribute passed as `attribute` must be present in\n * attributesForFaceting of the searched index.\n *\n * This connector provides:\n * - a `refine()` function to select an item.\n * - a `toggleShowMore()` function to display more or less items\n * - a `searchForItems()` function to search within the items.\n */\nvar connectRefinementList = function connectRefinementList(renderFn) {\n var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n checkRendering(renderFn, withUsage());\n return function (widgetParams) {\n var _ref = widgetParams || {},\n attribute = _ref.attribute,\n _ref$operator = _ref.operator,\n operator = _ref$operator === void 0 ? 'or' : _ref$operator,\n _ref$limit = _ref.limit,\n limit = _ref$limit === void 0 ? 10 : _ref$limit,\n _ref$showMore = _ref.showMore,\n showMore = _ref$showMore === void 0 ? false : _ref$showMore,\n _ref$showMoreLimit = _ref.showMoreLimit,\n showMoreLimit = _ref$showMoreLimit === void 0 ? 20 : _ref$showMoreLimit,\n _ref$sortBy = _ref.sortBy,\n sortBy = _ref$sortBy === void 0 ? DEFAULT_SORT : _ref$sortBy,\n _ref$escapeFacetValue = _ref.escapeFacetValues,\n escapeFacetValues = _ref$escapeFacetValue === void 0 ? true : _ref$escapeFacetValue,\n _ref$transformItems = _ref.transformItems,\n transformItems = _ref$transformItems === void 0 ? function (items) {\n return items;\n } : _ref$transformItems;\n if (!attribute) {\n throw new Error(withUsage('The `attribute` option is required.'));\n }\n if (!/^(and|or)$/.test(operator)) {\n throw new Error(withUsage(\"The `operator` must one of: `\\\"and\\\"`, `\\\"or\\\"` (got \\\"\".concat(operator, \"\\\").\")));\n }\n if (showMore === true && showMoreLimit <= limit) {\n throw new Error(withUsage('`showMoreLimit` should be greater than `limit`.'));\n }\n var formatItems = function formatItems(_ref2) {\n var label = _ref2.name,\n value = _ref2.escapedValue,\n item = _objectWithoutProperties(_ref2, _excluded);\n return _objectSpread(_objectSpread({}, item), {}, {\n value: value,\n label: label,\n highlighted: label\n });\n };\n var lastResultsFromMainSearch;\n var lastItemsFromMainSearch = [];\n var hasExhaustiveItems = true;\n var triggerRefine;\n var sendEvent;\n var isShowingMore = false;\n // Provide the same function to the `renderFn` so that way the user\n // has to only bind it once when `isFirstRendering` for instance\n var toggleShowMore = function toggleShowMore() {};\n function cachedToggleShowMore() {\n toggleShowMore();\n }\n function createToggleShowMore(renderOptions, widget) {\n return function () {\n isShowingMore = !isShowingMore;\n widget.render(renderOptions);\n };\n }\n function getLimit() {\n return isShowingMore ? showMoreLimit : limit;\n }\n var searchForFacetValues = function searchForFacetValues() {\n return function () {};\n };\n var createSearchForFacetValues = function createSearchForFacetValues(helper, widget) {\n return function (renderOptions) {\n return function (query) {\n var instantSearchInstance = renderOptions.instantSearchInstance,\n searchResults = renderOptions.results;\n if (query === '' && lastItemsFromMainSearch) {\n // render with previous data from the helper.\n renderFn(_objectSpread(_objectSpread({}, widget.getWidgetRenderState(_objectSpread(_objectSpread({}, renderOptions), {}, {\n results: lastResultsFromMainSearch\n }))), {}, {\n instantSearchInstance: instantSearchInstance\n }), false);\n } else {\n var tags = {\n highlightPreTag: escapeFacetValues ? TAG_PLACEHOLDER.highlightPreTag : TAG_REPLACEMENT.highlightPreTag,\n highlightPostTag: escapeFacetValues ? TAG_PLACEHOLDER.highlightPostTag : TAG_REPLACEMENT.highlightPostTag\n };\n helper.searchForFacetValues(attribute, query,\n // We cap the `maxFacetHits` value to 100 because the Algolia API\n // doesn't support a greater number.\n // See https://www.algolia.com/doc/api-reference/api-parameters/maxFacetHits/\n Math.min(getLimit(), 100), tags).then(function (results) {\n var facetValues = escapeFacetValues ? escapeFacets(results.facetHits) : results.facetHits;\n var normalizedFacetValues = transformItems(facetValues.map(function (_ref3) {\n var escapedValue = _ref3.escapedValue,\n value = _ref3.value,\n item = _objectWithoutProperties(_ref3, _excluded2);\n return _objectSpread(_objectSpread({}, item), {}, {\n value: escapedValue,\n label: value\n });\n }), {\n results: searchResults\n });\n renderFn(_objectSpread(_objectSpread({}, widget.getWidgetRenderState(_objectSpread(_objectSpread({}, renderOptions), {}, {\n results: lastResultsFromMainSearch\n }))), {}, {\n items: normalizedFacetValues,\n canToggleShowMore: false,\n canRefine: true,\n isFromSearch: true,\n instantSearchInstance: instantSearchInstance\n }), false);\n });\n }\n };\n };\n };\n return {\n $$type: 'ais.refinementList',\n init: function init(initOptions) {\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(initOptions)), {}, {\n instantSearchInstance: initOptions.instantSearchInstance\n }), true);\n },\n render: function render(renderOptions) {\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(renderOptions)), {}, {\n instantSearchInstance: renderOptions.instantSearchInstance\n }), false);\n },\n getRenderState: function getRenderState(renderState, renderOptions) {\n return _objectSpread(_objectSpread({}, renderState), {}, {\n refinementList: _objectSpread(_objectSpread({}, renderState.refinementList), {}, _defineProperty({}, attribute, this.getWidgetRenderState(renderOptions)))\n });\n },\n getWidgetRenderState: function getWidgetRenderState(renderOptions) {\n var _this = this;\n var results = renderOptions.results,\n state = renderOptions.state,\n _createURL = renderOptions.createURL,\n instantSearchInstance = renderOptions.instantSearchInstance,\n helper = renderOptions.helper;\n var items = [];\n var facetValues = [];\n if (!sendEvent || !triggerRefine || !searchForFacetValues) {\n sendEvent = createSendEventForFacet({\n instantSearchInstance: instantSearchInstance,\n helper: helper,\n attribute: attribute,\n widgetType: this.$$type\n });\n triggerRefine = function triggerRefine(facetValue) {\n sendEvent('click:internal', facetValue);\n helper.toggleFacetRefinement(attribute, facetValue).search();\n };\n searchForFacetValues = createSearchForFacetValues(helper, this);\n }\n if (results) {\n var values = results.getFacetValues(attribute, {\n sortBy: sortBy,\n facetOrdering: sortBy === DEFAULT_SORT\n });\n facetValues = values && Array.isArray(values) ? values : [];\n items = transformItems(facetValues.slice(0, getLimit()).map(formatItems), {\n results: results\n });\n var maxValuesPerFacetConfig = state.maxValuesPerFacet;\n var currentLimit = getLimit();\n // If the limit is the max number of facet retrieved it is impossible to know\n // if the facets are exhaustive. The only moment we are sure it is exhaustive\n // is when it is strictly under the number requested unless we know that another\n // widget has requested more values (maxValuesPerFacet > getLimit()).\n // Because this is used for making the search of facets unable or not, it is important\n // to be conservative here.\n hasExhaustiveItems = maxValuesPerFacetConfig > currentLimit ? facetValues.length <= currentLimit : facetValues.length < currentLimit;\n lastResultsFromMainSearch = results;\n lastItemsFromMainSearch = items;\n if (renderOptions.results) {\n toggleShowMore = createToggleShowMore(renderOptions, this);\n }\n }\n\n // Do not mistake searchForFacetValues and searchFacetValues which is the actual search\n // function\n var searchFacetValues = searchForFacetValues && searchForFacetValues(renderOptions);\n var canShowLess = isShowingMore && lastItemsFromMainSearch.length > limit;\n var canShowMore = showMore && !hasExhaustiveItems;\n var canToggleShowMore = canShowLess || canShowMore;\n return {\n createURL: function createURL(facetValue) {\n return _createURL(function (uiState) {\n return _this.getWidgetUiState(uiState, {\n searchParameters: state.resetPage().toggleFacetRefinement(attribute, facetValue),\n helper: helper\n });\n });\n },\n items: items,\n refine: triggerRefine,\n searchForItems: searchFacetValues,\n isFromSearch: false,\n canRefine: items.length > 0,\n widgetParams: widgetParams,\n isShowingMore: isShowingMore,\n canToggleShowMore: canToggleShowMore,\n toggleShowMore: cachedToggleShowMore,\n sendEvent: sendEvent,\n hasExhaustiveItems: hasExhaustiveItems\n };\n },\n dispose: function dispose(_ref4) {\n var state = _ref4.state;\n unmountFn();\n var withoutMaxValuesPerFacet = state.setQueryParameter('maxValuesPerFacet', undefined);\n if (operator === 'and') {\n return withoutMaxValuesPerFacet.removeFacet(attribute);\n }\n return withoutMaxValuesPerFacet.removeDisjunctiveFacet(attribute);\n },\n getWidgetUiState: function getWidgetUiState(uiState, _ref5) {\n var searchParameters = _ref5.searchParameters;\n var values = operator === 'or' ? searchParameters.getDisjunctiveRefinements(attribute) : searchParameters.getConjunctiveRefinements(attribute);\n return removeEmptyRefinementsFromUiState(_objectSpread(_objectSpread({}, uiState), {}, {\n refinementList: _objectSpread(_objectSpread({}, uiState.refinementList), {}, _defineProperty({}, attribute, values))\n }), attribute);\n },\n getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref6) {\n var uiState = _ref6.uiState;\n var isDisjunctive = operator === 'or';\n if (searchParameters.isHierarchicalFacet(attribute)) {\n process.env.NODE_ENV === 'development' ? warning(false, \"RefinementList: Attribute \\\"\".concat(attribute, \"\\\" is already used by another widget applying hierarchical faceting.\\nAs this is not supported, please make sure to remove this other widget or this RefinementList widget will not work at all.\")) : void 0;\n return searchParameters;\n }\n if (isDisjunctive && searchParameters.isConjunctiveFacet(attribute) || !isDisjunctive && searchParameters.isDisjunctiveFacet(attribute)) {\n process.env.NODE_ENV === 'development' ? warning(false, \"RefinementList: Attribute \\\"\".concat(attribute, \"\\\" is used by another refinement list with a different operator.\\nAs this is not supported, please make sure to only use this attribute with one of the two operators.\")) : void 0;\n return searchParameters;\n }\n var values = uiState.refinementList && uiState.refinementList[attribute];\n var withFacetConfiguration = isDisjunctive ? searchParameters.addDisjunctiveFacet(attribute).removeDisjunctiveFacetRefinement(attribute) : searchParameters.addFacet(attribute).removeFacetRefinement(attribute);\n var currentMaxValuesPerFacet = withFacetConfiguration.maxValuesPerFacet || 0;\n var nextMaxValuesPerFacet = Math.max(currentMaxValuesPerFacet, showMore ? showMoreLimit : limit);\n var withMaxValuesPerFacet = withFacetConfiguration.setQueryParameter('maxValuesPerFacet', nextMaxValuesPerFacet);\n if (!values) {\n var key = isDisjunctive ? 'disjunctiveFacetsRefinements' : 'facetsRefinements';\n return withMaxValuesPerFacet.setQueryParameters(_defineProperty({}, key, _objectSpread(_objectSpread({}, withMaxValuesPerFacet[key]), {}, _defineProperty({}, attribute, []))));\n }\n return values.reduce(function (parameters, value) {\n return isDisjunctive ? parameters.addDisjunctiveFacetRefinement(attribute, value) : parameters.addFacetRefinement(attribute, value);\n }, withMaxValuesPerFacet);\n }\n };\n };\n};\nfunction removeEmptyRefinementsFromUiState(indexUiState, attribute) {\n if (!indexUiState.refinementList) {\n return indexUiState;\n }\n if (!indexUiState.refinementList[attribute] || indexUiState.refinementList[attribute].length === 0) {\n delete indexUiState.refinementList[attribute];\n }\n if (Object.keys(indexUiState.refinementList).length === 0) {\n delete indexUiState.refinementList;\n }\n return indexUiState;\n}\nexport default connectRefinementList;","import{createSuitMixin as t}from\"../mixins/suit.js\";import{_objectSpread as e}from\"../util/polyfills.js\";import\"../util/vue-compat/index-vue2.js\";import{createWidgetMixin as r}from\"../mixins/widget.js\";var n;export default((n={name:\"AisStateResults\",mixins:[r({connector:!0}),t({name:\"StateResults\"})],props:{catchError:{type:Boolean,default:!1}},data:function(){var t=this;return{renderFn:function(){var e=t.instantSearchInstance,r=e.status,n=e.error,s=t.getParentIndex().getResults(),i=t.getParentIndex().getHelper(),a=i?i.state:null;t.state={results:s,state:a,status:r,error:n}}}},created:function(){this.instantSearchInstance.addListener(\"render\",this.renderFn),this.renderFn()}}).beforeDestroy=function(){this.widget&&(this.instantSearchInstance.removeListener(\"render\",this.renderFn),this.errorFn&&this.instantSearchInstance.removeListener(\"error\",this.errorFn))},n.watch={catchError:{immediate:!0,handler:function(t){t?(this.errorFn=function(){},this.instantSearchInstance.addListener(\"error\",this.errorFn)):this.errorFn&&(this.instantSearchInstance.removeListener(\"error\",this.errorFn),this.errorFn=void 0)}}},n.computed={stateResults:function(){var t=this.state,r=t.results,n=t.state,s=t.status,i=t.error;return e({},r,{results:r,state:n,status:s,error:i})}},n);\n//# sourceMappingURL=StateResults.vue_rollup-plugin-vue=script.js.map\n","import{createSuitMixin as e}from\"../mixins/suit.js\";export default{name:\"SearchInput\",mixins:[e({name:\"SearchBox\"})],props:{placeholder:{type:String,default:\"Search here…\"},autofocus:{type:Boolean,default:!1},showLoadingIndicator:{type:Boolean,default:!1},shouldShowLoadingIndicator:{type:Boolean,default:!1},ignoreCompositionEvents:{type:Boolean,default:!1},submitTitle:{type:String,default:\"Search\"},resetTitle:{type:String,default:\"Clear\"},value:{type:String,required:!1,default:void 0},modelValue:{type:String,required:!1,default:void 0}},emits:[\"input\",\"update:modelValue\",\"blur\",\"focus\",\"reset\"],data:function(){return{query:\"\"}},methods:{isFocused:function(){return document.activeElement===this.$refs.input},onInput:function(e){this.ignoreCompositionEvents&&e.isComposing||(this.$emit(\"input\",e.target.value),this.$emit(\"update:modelValue\",e.target.value))},onFormSubmit:function(){this.$refs.input.blur()},onFormReset:function(){this.$emit(\"input\",\"\"),this.$emit(\"update:modelValue\",\"\"),this.$emit(\"reset\")}}};\n//# sourceMappingURL=SearchInput.vue_rollup-plugin-vue=script.js.map\n","import{createSuitMixin as e}from\"../mixins/suit.js\";import{createWidgetMixin as t}from\"../mixins/widget.js\";import{connectRefinementList as r}from\"instantsearch.js/es/connectors/index.js\";import{createPanelConsumerMixin as i}from\"../mixins/panel.js\";import o from\"./Highlight.vue.js\";import s from\"./SearchInput.vue.js\";var a=function(){};export default{name:\"AisRefinementList\",components:{SearchInput:s,AisHighlight:o},mixins:[e({name:\"RefinementList\"}),t({connector:r},{$$widgetType:\"ais.refinementList\"}),i()],props:{attribute:{type:String,required:!0},searchable:{type:Boolean,default:void 0},searchablePlaceholder:{type:String,required:!1,default:\"Search here…\"},operator:{default:\"or\",validator:function(e){return\"and\"===e||\"or\"===e},required:!1},limit:{type:Number,required:!1,default:void 0},showMoreLimit:{type:Number,required:!1,default:void 0},showMore:{type:Boolean,required:!1,default:!1},sortBy:{type:[Array,Function],required:!1,default:void 0},transformItems:{type:Function,required:!1,default:void 0}},data:function(){return{searchForFacetValuesQuery:\"\"}},computed:{searchForFacetValues:{get:function(){return this.searchForFacetValuesQuery},set:function(e){this.state.searchForItems(e),this.searchForFacetValuesQuery=e}},toggleShowMore:function(){return this.state.toggleShowMore||a},items:function(){return this.state.items.map(function(e){return Object.assign({},e,{_highlightResult:{item:{value:e.highlighted}}})})},widgetParams:function(){return{attribute:this.attribute,operator:this.operator,limit:this.limit,showMore:this.showMore,showMoreLimit:this.showMoreLimit,sortBy:this.sortBy,escapeFacetValues:!0,transformItems:this.transformItems}}},methods:{refine:function(e){this.state.refine(e),this.searchForFacetValuesQuery=\"\"}}};\n//# sourceMappingURL=RefinementList.vue_rollup-plugin-vue=script.js.map\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { checkRendering, createDocumentationMessageGenerator, noop } from \"../../lib/utils/index.js\";\nvar withUsage = createDocumentationMessageGenerator({\n name: 'search-box',\n connector: true\n});\n\n/**\n * @typedef {Object} CustomSearchBoxWidgetParams\n * @property {function(string, function(string))} [queryHook = undefined] A function that will be called every time\n * a new value for the query is set. The first parameter is the query and the second is a\n * function to actually trigger the search. The function takes the query as the parameter.\n *\n * This queryHook can be used to debounce the number of searches done from the searchBox.\n */\n\nvar defaultQueryHook = function defaultQueryHook(query, hook) {\n return hook(query);\n};\n\n/**\n * **SearchBox** connector provides the logic to build a widget that will let the user search for a query.\n *\n * The connector provides to the rendering: `refine()` to set the query. The behaviour of this function\n * may be impacted by the `queryHook` widget parameter.\n */\nvar connectSearchBox = function connectSearchBox(renderFn) {\n var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n checkRendering(renderFn, withUsage());\n return function (widgetParams) {\n var _ref = widgetParams || {},\n _ref$queryHook = _ref.queryHook,\n queryHook = _ref$queryHook === void 0 ? defaultQueryHook : _ref$queryHook;\n var _refine;\n var _clear;\n return {\n $$type: 'ais.searchBox',\n init: function init(initOptions) {\n var instantSearchInstance = initOptions.instantSearchInstance;\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(initOptions)), {}, {\n instantSearchInstance: instantSearchInstance\n }), true);\n },\n render: function render(renderOptions) {\n var instantSearchInstance = renderOptions.instantSearchInstance;\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(renderOptions)), {}, {\n instantSearchInstance: instantSearchInstance\n }), false);\n },\n dispose: function dispose(_ref2) {\n var state = _ref2.state;\n unmountFn();\n return state.setQueryParameter('query', undefined);\n },\n getRenderState: function getRenderState(renderState, renderOptions) {\n return _objectSpread(_objectSpread({}, renderState), {}, {\n searchBox: this.getWidgetRenderState(renderOptions)\n });\n },\n getWidgetRenderState: function getWidgetRenderState(_ref3) {\n var helper = _ref3.helper,\n instantSearchInstance = _ref3.instantSearchInstance,\n state = _ref3.state;\n if (!_refine) {\n _refine = function _refine(query) {\n queryHook(query, function (q) {\n return helper.setQuery(q).search();\n });\n };\n _clear = function _clear() {\n helper.setQuery('').search();\n };\n }\n return {\n query: state.query || '',\n refine: _refine,\n clear: _clear,\n widgetParams: widgetParams,\n isSearchStalled: instantSearchInstance.status === 'stalled'\n };\n },\n getWidgetUiState: function getWidgetUiState(uiState, _ref4) {\n var searchParameters = _ref4.searchParameters;\n var query = searchParameters.query || '';\n if (query === '' || uiState && uiState.query === query) {\n return uiState;\n }\n return _objectSpread(_objectSpread({}, uiState), {}, {\n query: query\n });\n },\n getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref5) {\n var uiState = _ref5.uiState;\n return searchParameters.setQueryParameter('query', uiState.query || '');\n }\n };\n };\n};\nexport default connectSearchBox;","import{createSuitMixin as e}from\"../mixins/suit.js\";import{isVue2 as t,isVue3 as i}from\"../util/vue-compat/index-vue2.js\";import{createWidgetMixin as o}from\"../mixins/widget.js\";import{connectSearchBox as s}from\"instantsearch.js/es/connectors/index.js\";import u from\"./SearchInput.vue.js\";export default{name:\"AisSearchBox\",mixins:[o({connector:s},{$$widgetType:\"ais.searchBox\"}),e({name:\"SearchBox\"})],components:{SearchInput:u},props:{placeholder:{type:String,default:\"\"},autofocus:{type:Boolean,default:!1},showLoadingIndicator:{type:Boolean,default:!0},ignoreCompositionEvents:{type:Boolean,default:!1},submitTitle:{type:String,default:\"Submit the search query\"},resetTitle:{type:String,default:\"Clear the search query\"},value:{type:String,default:void 0},modelValue:{type:String,default:void 0},queryHook:{type:Function,default:void 0}},data:function(){return{localValue:\"\",isVue2:t,isVue3:i}},computed:{widgetParams:function(){return{queryHook:this.queryHook}},isControlled:function(){return void 0!==this.value||void 0!==this.modelValue},model:function(){return this.value||this.modelValue},currentRefinement:{get:function(){this.isControlled&&this.model!==this.localValue&&(this.localValue=this.model,this.$emit(\"input\",this.model),this.$emit(\"update:modelValue\",this.model),this.state.refine(this.model));var e=this.$refs.searchInput;return e&&e.isFocused()?this.localValue:this.model||this.state.query||\"\"},set:function(e){this.localValue=e,this.state.refine(e),this.isControlled&&(this.$emit(\"input\",e),this.$emit(\"update:modelValue\",e))}}}};\n//# sourceMappingURL=SearchBox.vue_rollup-plugin-vue=script.js.map\n","import{createSuitMixin as i}from\"../mixins/suit.js\";import e from\"../util/vue-compat/Highlighter/Highlighter-vue2.vue.js\";export default{name:\"AisSnippet\",mixins:[i({name:\"Snippet\"})],components:{AisHighlighter:e},props:{hit:{type:Object,required:!0},attribute:{type:String,required:!0},highlightedTagName:{type:String,default:\"mark\"}}};\n//# sourceMappingURL=Snippet.vue_rollup-plugin-vue=script.js.map\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { checkRendering, createDocumentationMessageGenerator, find, warning, noop } from \"../../lib/utils/index.js\";\nvar withUsage = createDocumentationMessageGenerator({\n name: 'sort-by',\n connector: true\n});\n\n/**\n * The **SortBy** connector provides the logic to build a custom widget that will display a\n * list of indices. With Algolia, this is most commonly used for changing ranking strategy. This allows\n * a user to change how the hits are being sorted.\n */\n\nvar connectSortBy = function connectSortBy(renderFn) {\n var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n checkRendering(renderFn, withUsage());\n var connectorState = {};\n return function (widgetParams) {\n var _ref = widgetParams || {},\n items = _ref.items,\n _ref$transformItems = _ref.transformItems,\n transformItems = _ref$transformItems === void 0 ? function (x) {\n return x;\n } : _ref$transformItems;\n if (!Array.isArray(items)) {\n throw new Error(withUsage('The `items` option expects an array of objects.'));\n }\n return {\n $$type: 'ais.sortBy',\n init: function init(initOptions) {\n var instantSearchInstance = initOptions.instantSearchInstance;\n var widgetRenderState = this.getWidgetRenderState(initOptions);\n var currentIndex = widgetRenderState.currentRefinement;\n var isCurrentIndexInItems = find(items, function (item) {\n return item.value === currentIndex;\n });\n process.env.NODE_ENV === 'development' ? warning(isCurrentIndexInItems !== undefined, \"The index named \\\"\".concat(currentIndex, \"\\\" is not listed in the `items` of `sortBy`.\")) : void 0;\n renderFn(_objectSpread(_objectSpread({}, widgetRenderState), {}, {\n instantSearchInstance: instantSearchInstance\n }), true);\n },\n render: function render(renderOptions) {\n var instantSearchInstance = renderOptions.instantSearchInstance;\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(renderOptions)), {}, {\n instantSearchInstance: instantSearchInstance\n }), false);\n },\n dispose: function dispose(_ref2) {\n var state = _ref2.state;\n unmountFn();\n return connectorState.initialIndex ? state.setIndex(connectorState.initialIndex) : state;\n },\n getRenderState: function getRenderState(renderState, renderOptions) {\n return _objectSpread(_objectSpread({}, renderState), {}, {\n sortBy: this.getWidgetRenderState(renderOptions)\n });\n },\n getWidgetRenderState: function getWidgetRenderState(_ref3) {\n var results = _ref3.results,\n helper = _ref3.helper,\n state = _ref3.state,\n parent = _ref3.parent;\n if (!connectorState.initialIndex && parent) {\n connectorState.initialIndex = parent.getIndexName();\n }\n if (!connectorState.setIndex) {\n connectorState.setIndex = function (indexName) {\n helper.setIndex(indexName).search();\n };\n }\n var hasNoResults = results ? results.nbHits === 0 : true;\n return {\n currentRefinement: state.index,\n options: transformItems(items, {\n results: results\n }),\n refine: connectorState.setIndex,\n hasNoResults: hasNoResults,\n canRefine: !hasNoResults && items.length > 0,\n widgetParams: widgetParams\n };\n },\n getWidgetUiState: function getWidgetUiState(uiState, _ref4) {\n var searchParameters = _ref4.searchParameters;\n var currentIndex = searchParameters.index;\n return _objectSpread(_objectSpread({}, uiState), {}, {\n sortBy: currentIndex !== connectorState.initialIndex ? currentIndex : undefined\n });\n },\n getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref5) {\n var uiState = _ref5.uiState;\n return searchParameters.setQueryParameter('index', uiState.sortBy || connectorState.initialIndex || searchParameters.index);\n }\n };\n };\n};\nexport default connectSortBy;","import{createSuitMixin as t}from\"../mixins/suit.js\";import{createWidgetMixin as s}from\"../mixins/widget.js\";import{connectSortBy as i}from\"instantsearch.js/es/connectors/index.js\";import{createPanelConsumerMixin as r}from\"../mixins/panel.js\";export default{name:\"AisSortBy\",mixins:[t({name:\"SortBy\"}),s({connector:i},{$$widgetType:\"ais.sortBy\"}),r()],props:{items:{type:Array,required:!0},transformItems:{type:Function,default:void 0}},computed:{widgetParams:function(){return{items:this.items,transformItems:this.transformItems}}}};\n//# sourceMappingURL=SortBy.vue_rollup-plugin-vue=script.js.map\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { checkRendering, createDocumentationMessageGenerator, noop } from \"../../lib/utils/index.js\";\nvar withUsage = createDocumentationMessageGenerator({\n name: 'stats',\n connector: true\n});\n\n/**\n * **Stats** connector provides the logic to build a custom widget that will displays\n * search statistics (hits number and processing time).\n */\n\nvar connectStats = function connectStats(renderFn) {\n var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n checkRendering(renderFn, withUsage());\n return function (widgetParams) {\n return {\n $$type: 'ais.stats',\n init: function init(initOptions) {\n var instantSearchInstance = initOptions.instantSearchInstance;\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(initOptions)), {}, {\n instantSearchInstance: instantSearchInstance\n }), true);\n },\n render: function render(renderOptions) {\n var instantSearchInstance = renderOptions.instantSearchInstance;\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(renderOptions)), {}, {\n instantSearchInstance: instantSearchInstance\n }), false);\n },\n dispose: function dispose() {\n unmountFn();\n },\n getRenderState: function getRenderState(renderState, renderOptions) {\n return _objectSpread(_objectSpread({}, renderState), {}, {\n stats: this.getWidgetRenderState(renderOptions)\n });\n },\n getWidgetRenderState: function getWidgetRenderState(_ref) {\n var results = _ref.results,\n state = _ref.state;\n if (!results) {\n return {\n hitsPerPage: state.hitsPerPage,\n nbHits: 0,\n nbSortedHits: undefined,\n areHitsSorted: false,\n nbPages: 0,\n page: state.page || 0,\n processingTimeMS: -1,\n query: state.query || '',\n widgetParams: widgetParams\n };\n }\n return {\n hitsPerPage: results.hitsPerPage,\n nbHits: results.nbHits,\n nbSortedHits: results.nbSortedHits,\n areHitsSorted: typeof results.appliedRelevancyStrictness !== 'undefined' && results.appliedRelevancyStrictness > 0 && results.nbSortedHits !== results.nbHits,\n nbPages: results.nbPages,\n page: results.page,\n processingTimeMS: results.processingTimeMS,\n query: results.query,\n widgetParams: widgetParams\n };\n }\n };\n };\n};\nexport default connectStats;","import{createSuitMixin as t}from\"../mixins/suit.js\";import{createWidgetMixin as e}from\"../mixins/widget.js\";import{connectStats as s}from\"instantsearch.js/es/connectors/index.js\";export default{name:\"AisStats\",mixins:[e({connector:s},{$$widgetType:\"ais.stats\"}),t({name:\"Stats\"})],computed:{sortedResultsSentence:function(){var t=this.state,e=t.nbHits,s=t.nbSortedHits,r=\"sorted out of \"+e.toLocaleString();return 0===s?\"No relevant results \"+r:1===s?\"1 relevant result \"+r:s>1?(s||0).toLocaleString()+\" relevant results \"+r:\"\"},resultsSentence:function(){var t=this.state.nbHits;return 0===t?\"No results\":1===t?\"1 result\":t>1?t.toLocaleString()+\" results\":\"\"},widgetParams:function(){return{}}}};\n//# sourceMappingURL=Stats.vue_rollup-plugin-vue=script.js.map\n","export function toArray(value) {\n return Array.isArray(value) ? value : [value];\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport { checkRendering, escapeFacetValue, createDocumentationMessageGenerator, find, noop, toArray, warning } from \"../../lib/utils/index.js\";\nvar withUsage = createDocumentationMessageGenerator({\n name: 'toggle-refinement',\n connector: true\n});\nvar $$type = 'ais.toggleRefinement';\nvar createSendEvent = function createSendEvent(_ref) {\n var instantSearchInstance = _ref.instantSearchInstance,\n helper = _ref.helper,\n attribute = _ref.attribute,\n on = _ref.on;\n var sendEventForToggle = function sendEventForToggle() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (args.length === 1) {\n instantSearchInstance.sendEventToInsights(args[0]);\n return;\n }\n var isRefined = args[1],\n _args$ = args[2],\n eventName = _args$ === void 0 ? 'Filter Applied' : _args$;\n var _args$0$split = args[0].split(':'),\n _args$0$split2 = _slicedToArray(_args$0$split, 2),\n eventType = _args$0$split2[0],\n eventModifier = _args$0$split2[1];\n if (eventType !== 'click' || on === undefined) {\n return;\n }\n\n // only send an event when the refinement gets applied,\n // not when it gets removed\n if (!isRefined) {\n instantSearchInstance.sendEventToInsights({\n insightsMethod: 'clickedFilters',\n widgetType: $$type,\n eventType: eventType,\n eventModifier: eventModifier,\n payload: {\n eventName: eventName,\n index: helper.getIndex(),\n filters: on.map(function (value) {\n return \"\".concat(attribute, \":\").concat(value);\n })\n },\n attribute: attribute\n });\n }\n };\n return sendEventForToggle;\n};\n/**\n * **Toggle** connector provides the logic to build a custom widget that will provide\n * an on/off filtering feature based on an attribute value or values.\n *\n * Two modes are implemented in the custom widget:\n * - with or without the value filtered\n * - switch between two values.\n */\nvar connectToggleRefinement = function connectToggleRefinement(renderFn) {\n var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n checkRendering(renderFn, withUsage());\n return function (widgetParams) {\n var _ref2 = widgetParams || {},\n attribute = _ref2.attribute,\n _ref2$on = _ref2.on,\n userOn = _ref2$on === void 0 ? true : _ref2$on,\n userOff = _ref2.off;\n if (!attribute) {\n throw new Error(withUsage('The `attribute` option is required.'));\n }\n var hasAnOffValue = userOff !== undefined;\n // even though facet values can be numbers and boolean,\n // the helper methods only accept string in the type\n var on = toArray(userOn).map(escapeFacetValue);\n var off = hasAnOffValue ? toArray(userOff).map(escapeFacetValue) : undefined;\n var sendEvent;\n var toggleRefinementFactory = function toggleRefinementFactory(helper) {\n return function () {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n isRefined: false\n },\n isRefined = _ref3.isRefined;\n if (!isRefined) {\n sendEvent('click:internal', isRefined);\n if (hasAnOffValue) {\n off.forEach(function (v) {\n return helper.removeDisjunctiveFacetRefinement(attribute, v);\n });\n }\n on.forEach(function (v) {\n return helper.addDisjunctiveFacetRefinement(attribute, v);\n });\n } else {\n on.forEach(function (v) {\n return helper.removeDisjunctiveFacetRefinement(attribute, v);\n });\n if (hasAnOffValue) {\n off.forEach(function (v) {\n return helper.addDisjunctiveFacetRefinement(attribute, v);\n });\n }\n }\n helper.search();\n };\n };\n var connectorState = {\n createURLFactory: function createURLFactory(isRefined, _ref4) {\n var state = _ref4.state,\n createURL = _ref4.createURL,\n getWidgetUiState = _ref4.getWidgetUiState,\n helper = _ref4.helper;\n return function () {\n state = state.resetPage();\n var valuesToRemove = isRefined ? on : off;\n if (valuesToRemove) {\n valuesToRemove.forEach(function (v) {\n state = state.removeDisjunctiveFacetRefinement(attribute, v);\n });\n }\n var valuesToAdd = isRefined ? off : on;\n if (valuesToAdd) {\n valuesToAdd.forEach(function (v) {\n state = state.addDisjunctiveFacetRefinement(attribute, v);\n });\n }\n return createURL(function (uiState) {\n return getWidgetUiState(uiState, {\n searchParameters: state,\n helper: helper\n });\n });\n };\n }\n };\n return {\n $$type: $$type,\n init: function init(initOptions) {\n var instantSearchInstance = initOptions.instantSearchInstance;\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(initOptions)), {}, {\n instantSearchInstance: instantSearchInstance\n }), true);\n },\n render: function render(renderOptions) {\n var instantSearchInstance = renderOptions.instantSearchInstance;\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(renderOptions)), {}, {\n instantSearchInstance: instantSearchInstance\n }), false);\n },\n dispose: function dispose(_ref5) {\n var state = _ref5.state;\n unmountFn();\n return state.removeDisjunctiveFacet(attribute);\n },\n getRenderState: function getRenderState(renderState, renderOptions) {\n return _objectSpread(_objectSpread({}, renderState), {}, {\n toggleRefinement: _objectSpread(_objectSpread({}, renderState.toggleRefinement), {}, _defineProperty({}, attribute, this.getWidgetRenderState(renderOptions)))\n });\n },\n getWidgetRenderState: function getWidgetRenderState(_ref6) {\n var state = _ref6.state,\n helper = _ref6.helper,\n results = _ref6.results,\n createURL = _ref6.createURL,\n instantSearchInstance = _ref6.instantSearchInstance;\n var isRefined = results ? on.every(function (v) {\n return state.isDisjunctiveFacetRefined(attribute, v);\n }) : on.every(function (v) {\n return state.isDisjunctiveFacetRefined(attribute, v);\n });\n var onFacetValue = {\n isRefined: isRefined,\n count: 0\n };\n var offFacetValue = {\n isRefined: hasAnOffValue && !isRefined,\n count: 0\n };\n if (results) {\n var offValue = toArray(off || false);\n var allFacetValues = results.getFacetValues(attribute, {}) || [];\n var onData = on.map(function (v) {\n return find(allFacetValues, function (_ref7) {\n var escapedValue = _ref7.escapedValue;\n return escapedValue === escapeFacetValue(String(v));\n });\n }).filter(function (v) {\n return v !== undefined;\n });\n var offData = hasAnOffValue ? offValue.map(function (v) {\n return find(allFacetValues, function (_ref8) {\n var escapedValue = _ref8.escapedValue;\n return escapedValue === escapeFacetValue(String(v));\n });\n }).filter(function (v) {\n return v !== undefined;\n }) : [];\n onFacetValue = {\n isRefined: onData.length ? onData.every(function (v) {\n return v.isRefined;\n }) : false,\n count: onData.reduce(function (acc, v) {\n return acc + v.count;\n }, 0) || null\n };\n offFacetValue = {\n isRefined: offData.length ? offData.every(function (v) {\n return v.isRefined;\n }) : false,\n count: offData.reduce(function (acc, v) {\n return acc + v.count;\n }, 0) || allFacetValues.reduce(function (total, _ref9) {\n var count = _ref9.count;\n return total + count;\n }, 0)\n };\n }\n if (!sendEvent) {\n sendEvent = createSendEvent({\n instantSearchInstance: instantSearchInstance,\n attribute: attribute,\n on: on,\n helper: helper\n });\n }\n var nextRefinement = isRefined ? offFacetValue : onFacetValue;\n return {\n value: {\n name: attribute,\n isRefined: isRefined,\n count: results ? nextRefinement.count : null,\n onFacetValue: onFacetValue,\n offFacetValue: offFacetValue\n },\n createURL: connectorState.createURLFactory(isRefined, {\n state: state,\n createURL: createURL,\n helper: helper,\n getWidgetUiState: this.getWidgetUiState\n }),\n sendEvent: sendEvent,\n canRefine: Boolean(results ? nextRefinement.count : null),\n refine: toggleRefinementFactory(helper),\n widgetParams: widgetParams\n };\n },\n getWidgetUiState: function getWidgetUiState(uiState, _ref10) {\n var searchParameters = _ref10.searchParameters;\n var isRefined = on && on.every(function (v) {\n return searchParameters.isDisjunctiveFacetRefined(attribute, v);\n });\n if (!isRefined) {\n var _uiState$toggle;\n // This needs to be done in the case `uiState` comes from `createURL`\n (_uiState$toggle = uiState.toggle) === null || _uiState$toggle === void 0 ? true : delete _uiState$toggle[attribute];\n return uiState;\n }\n return _objectSpread(_objectSpread({}, uiState), {}, {\n toggle: _objectSpread(_objectSpread({}, uiState.toggle), {}, _defineProperty({}, attribute, isRefined))\n });\n },\n getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref11) {\n var uiState = _ref11.uiState;\n if (searchParameters.isHierarchicalFacet(attribute) || searchParameters.isConjunctiveFacet(attribute)) {\n process.env.NODE_ENV === 'development' ? warning(false, \"ToggleRefinement: Attribute \\\"\".concat(attribute, \"\\\" is already used by another widget of a different type.\\nAs this is not supported, please make sure to remove this other widget or this ToggleRefinement widget will not work at all.\")) : void 0;\n return searchParameters;\n }\n var withFacetConfiguration = searchParameters.addDisjunctiveFacet(attribute).removeDisjunctiveFacetRefinement(attribute);\n var isRefined = Boolean(uiState.toggle && uiState.toggle[attribute]);\n if (isRefined) {\n if (on) {\n on.forEach(function (v) {\n withFacetConfiguration = withFacetConfiguration.addDisjunctiveFacetRefinement(attribute, v);\n });\n }\n return withFacetConfiguration;\n }\n\n // It's not refined with an `off` value\n if (hasAnOffValue) {\n if (off) {\n off.forEach(function (v) {\n withFacetConfiguration = withFacetConfiguration.addDisjunctiveFacetRefinement(attribute, v);\n });\n }\n return withFacetConfiguration;\n }\n\n // It's not refined without an `off` value\n return withFacetConfiguration.setQueryParameters({\n disjunctiveFacetsRefinements: _objectSpread(_objectSpread({}, searchParameters.disjunctiveFacetsRefinements), {}, _defineProperty({}, attribute, []))\n });\n }\n };\n };\n};\nexport default connectToggleRefinement;","import{createSuitMixin as e}from\"../mixins/suit.js\";import{createWidgetMixin as t}from\"../mixins/widget.js\";import{connectToggleRefinement as i}from\"instantsearch.js/es/connectors/index.js\";import{createPanelConsumerMixin as r}from\"../mixins/panel.js\";export default{name:\"AisToggleRefinement\",mixins:[e({name:\"ToggleRefinement\"}),t({connector:i},{$$widgetType:\"ais.toggleRefinement\"}),r()],props:{attribute:{type:String,required:!0},on:{type:[String,Number,Boolean,Array],required:!1,default:!0},off:{type:[String,Number,Boolean,Array],required:!1,default:void 0},label:{type:String,default:void 0}},computed:{widgetParams:function(){return{attribute:this.attribute,on:this.on,off:this.off}}}};\n//# sourceMappingURL=ToggleRefinement.vue_rollup-plugin-vue=script.js.map\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n// `SpeechRecognition` is an API used on the browser so we can safely disable\n// the `window` check.\n/* eslint-disable no-restricted-globals */\n/* global SpeechRecognition SpeechRecognitionEvent */\n\nvar createVoiceSearchHelper = function createVoiceSearchHelper(_ref) {\n var searchAsYouSpeak = _ref.searchAsYouSpeak,\n language = _ref.language,\n onQueryChange = _ref.onQueryChange,\n onStateChange = _ref.onStateChange;\n var SpeechRecognitionAPI = window.webkitSpeechRecognition || window.SpeechRecognition;\n var getDefaultState = function getDefaultState(status) {\n return {\n status: status,\n transcript: '',\n isSpeechFinal: false,\n errorCode: undefined\n };\n };\n var state = getDefaultState('initial');\n var recognition;\n var isBrowserSupported = function isBrowserSupported() {\n return Boolean(SpeechRecognitionAPI);\n };\n var isListening = function isListening() {\n return state.status === 'askingPermission' || state.status === 'waiting' || state.status === 'recognizing';\n };\n var setState = function setState() {\n var newState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n state = _objectSpread(_objectSpread({}, state), newState);\n onStateChange();\n };\n var getState = function getState() {\n return state;\n };\n var resetState = function resetState() {\n var status = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'initial';\n setState(getDefaultState(status));\n };\n var onStart = function onStart() {\n setState({\n status: 'waiting'\n });\n };\n var onError = function onError(event) {\n setState({\n status: 'error',\n errorCode: event.error\n });\n };\n var onResult = function onResult(event) {\n setState({\n status: 'recognizing',\n transcript: event.results[0] && event.results[0][0] && event.results[0][0].transcript || '',\n isSpeechFinal: event.results[0] && event.results[0].isFinal\n });\n if (searchAsYouSpeak && state.transcript) {\n onQueryChange(state.transcript);\n }\n };\n var onEnd = function onEnd() {\n if (!state.errorCode && state.transcript && !searchAsYouSpeak) {\n onQueryChange(state.transcript);\n }\n if (state.status !== 'error') {\n setState({\n status: 'finished'\n });\n }\n };\n var startListening = function startListening() {\n recognition = new SpeechRecognitionAPI();\n if (!recognition) {\n return;\n }\n resetState('askingPermission');\n recognition.interimResults = true;\n if (language) {\n recognition.lang = language;\n }\n recognition.addEventListener('start', onStart);\n recognition.addEventListener('error', onError);\n recognition.addEventListener('result', onResult);\n recognition.addEventListener('end', onEnd);\n recognition.start();\n };\n var dispose = function dispose() {\n if (!recognition) {\n return;\n }\n recognition.stop();\n recognition.removeEventListener('start', onStart);\n recognition.removeEventListener('error', onError);\n recognition.removeEventListener('result', onResult);\n recognition.removeEventListener('end', onEnd);\n recognition = undefined;\n };\n var stopListening = function stopListening() {\n dispose();\n // Because `dispose` removes event listeners, `end` listener is not called.\n // So we're setting the `status` as `finished` here.\n // If we don't do it, it will be still `waiting` or `recognizing`.\n resetState('finished');\n };\n return {\n getState: getState,\n isBrowserSupported: isBrowserSupported,\n isListening: isListening,\n startListening: startListening,\n stopListening: stopListening,\n dispose: dispose\n };\n};\nexport default createVoiceSearchHelper;","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { checkRendering, createDocumentationMessageGenerator, noop } from \"../../lib/utils/index.js\";\nimport builtInCreateVoiceSearchHelper from \"../../lib/voiceSearchHelper/index.js\";\nvar withUsage = createDocumentationMessageGenerator({\n name: 'voice-search',\n connector: true\n});\nvar connectVoiceSearch = function connectVoiceSearch(renderFn) {\n var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n checkRendering(renderFn, withUsage());\n return function (widgetParams) {\n var _widgetParams$searchA = widgetParams.searchAsYouSpeak,\n searchAsYouSpeak = _widgetParams$searchA === void 0 ? false : _widgetParams$searchA,\n language = widgetParams.language,\n additionalQueryParameters = widgetParams.additionalQueryParameters,\n _widgetParams$createV = widgetParams.createVoiceSearchHelper,\n createVoiceSearchHelper = _widgetParams$createV === void 0 ? builtInCreateVoiceSearchHelper : _widgetParams$createV;\n return {\n $$type: 'ais.voiceSearch',\n init: function init(initOptions) {\n var instantSearchInstance = initOptions.instantSearchInstance;\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(initOptions)), {}, {\n instantSearchInstance: instantSearchInstance\n }), true);\n },\n render: function render(renderOptions) {\n var instantSearchInstance = renderOptions.instantSearchInstance;\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(renderOptions)), {}, {\n instantSearchInstance: instantSearchInstance\n }), false);\n },\n getRenderState: function getRenderState(renderState, renderOptions) {\n return _objectSpread(_objectSpread({}, renderState), {}, {\n voiceSearch: this.getWidgetRenderState(renderOptions)\n });\n },\n getWidgetRenderState: function getWidgetRenderState(renderOptions) {\n var _this = this;\n var helper = renderOptions.helper,\n instantSearchInstance = renderOptions.instantSearchInstance;\n if (!this._refine) {\n this._refine = function (query) {\n if (query !== helper.state.query) {\n var queryLanguages = language ? [language.split('-')[0]] : undefined;\n helper.setQueryParameter('queryLanguages', queryLanguages);\n if (typeof additionalQueryParameters === 'function') {\n helper.setState(helper.state.setQueryParameters(_objectSpread({\n ignorePlurals: true,\n removeStopWords: true,\n // @ts-ignore (optionalWords only allows array in v3, while string is also valid)\n optionalWords: query\n }, additionalQueryParameters({\n query: query\n }))));\n }\n helper.setQuery(query).search();\n }\n };\n }\n if (!this._voiceSearchHelper) {\n this._voiceSearchHelper = createVoiceSearchHelper({\n searchAsYouSpeak: searchAsYouSpeak,\n language: language,\n onQueryChange: function onQueryChange(query) {\n return _this._refine(query);\n },\n onStateChange: function onStateChange() {\n renderFn(_objectSpread(_objectSpread({}, _this.getWidgetRenderState(renderOptions)), {}, {\n instantSearchInstance: instantSearchInstance\n }), false);\n }\n });\n }\n var _voiceSearchHelper = this._voiceSearchHelper,\n isBrowserSupported = _voiceSearchHelper.isBrowserSupported,\n isListening = _voiceSearchHelper.isListening,\n startListening = _voiceSearchHelper.startListening,\n stopListening = _voiceSearchHelper.stopListening,\n getState = _voiceSearchHelper.getState;\n return {\n isBrowserSupported: isBrowserSupported(),\n isListening: isListening(),\n toggleListening: function toggleListening() {\n if (!isBrowserSupported()) {\n return;\n }\n if (isListening()) {\n stopListening();\n } else {\n startListening();\n }\n },\n voiceListeningState: getState(),\n widgetParams: widgetParams\n };\n },\n dispose: function dispose(_ref) {\n var state = _ref.state;\n this._voiceSearchHelper.dispose();\n unmountFn();\n var newState = state;\n if (typeof additionalQueryParameters === 'function') {\n var additional = additionalQueryParameters({\n query: ''\n });\n var toReset = additional ? Object.keys(additional).reduce(function (acc, current) {\n // @ts-ignore search parameters is typed as readonly in v4\n acc[current] = undefined;\n return acc;\n }, {}) : {};\n newState = state.setQueryParameters(_objectSpread({\n // @ts-ignore (queryLanguages is not added to algoliasearch v3)\n queryLanguages: undefined,\n ignorePlurals: undefined,\n removeStopWords: undefined,\n optionalWords: undefined\n }, toReset));\n }\n return newState.setQueryParameter('query', undefined);\n },\n getWidgetUiState: function getWidgetUiState(uiState, _ref2) {\n var searchParameters = _ref2.searchParameters;\n var query = searchParameters.query || '';\n if (!query) {\n return uiState;\n }\n return _objectSpread(_objectSpread({}, uiState), {}, {\n query: query\n });\n },\n getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref3) {\n var uiState = _ref3.uiState;\n return searchParameters.setQueryParameter('query', uiState.query || '');\n }\n };\n };\n};\nexport default connectVoiceSearch;","import{createSuitMixin as t}from\"../mixins/suit.js\";import{createWidgetMixin as e}from\"../mixins/widget.js\";import{connectVoiceSearch as i}from\"instantsearch.js/es/connectors/index.js\";export default{name:\"AisVoiceSearch\",mixins:[e({connector:i},{$$widgetType:\"ais.voiceSearch\"}),t({name:\"VoiceSearch\"})],props:{searchAsYouSpeak:{type:Boolean,required:!1,default:void 0},language:{type:String,default:void 0},additionalQueryParameters:{type:Object,default:void 0},buttonTitle:{type:String,required:!1,default:\"Search by voice\"},disabledButtonTitle:{type:String,required:!1,default:\"Search by voice (not supported on this browser)\"}},data:function(){return{buttonSvgAttrs:{xmlns:\"http://www.w3.org/2000/svg\",width:\"16\",height:\"16\",viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"}}},computed:{widgetParams:function(){return{searchAsYouSpeak:this.searchAsYouSpeak,language:this.language,additionalQueryParameters:this.additionalQueryParameters}},errorNotAllowed:function(){return\"error\"===this.state.voiceListeningState.status&&\"not-allowed\"===this.state.voiceListeningState.errorCode},rootSlotProps:function(){return{isBrowserSupported:this.state.isBrowserSupported,isListening:this.state.isListening,toggleListening:this.state.toggleListening,voiceListeningState:this.state.voiceListeningState}},innerSlotProps:function(){return{status:this.state.voiceListeningState.status,errorCode:this.state.voiceListeningState.errorCode,isListening:this.state.isListening,transcript:this.state.voiceListeningState.transcript,isSpeechFinal:this.state.voiceListeningState.isSpeechFinal,isBrowserSupported:this.state.isBrowserSupported}}},methods:{handleClick:function(t){t.currentTarget.blur(),this.state.toggleListening()}}};\n//# sourceMappingURL=VoiceSearch.vue_rollup-plugin-vue=script.js.map\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { noop } from \"../../lib/utils/index.js\";\nvar connectRelevantSort = function connectRelevantSort() {\n var renderFn = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : noop;\n var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n return function (widgetParams) {\n var connectorState = {};\n return {\n $$type: 'ais.relevantSort',\n init: function init(initOptions) {\n var instantSearchInstance = initOptions.instantSearchInstance;\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(initOptions)), {}, {\n instantSearchInstance: instantSearchInstance\n }), true);\n },\n render: function render(renderOptions) {\n var instantSearchInstance = renderOptions.instantSearchInstance;\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(renderOptions)), {}, {\n instantSearchInstance: instantSearchInstance\n }), false);\n },\n dispose: function dispose(_ref) {\n var state = _ref.state;\n unmountFn();\n return state.setQueryParameter('relevancyStrictness', undefined);\n },\n getRenderState: function getRenderState(renderState, renderOptions) {\n return _objectSpread(_objectSpread({}, renderState), {}, {\n relevantSort: this.getWidgetRenderState(renderOptions)\n });\n },\n getWidgetRenderState: function getWidgetRenderState(_ref2) {\n var results = _ref2.results,\n helper = _ref2.helper;\n if (!connectorState.refine) {\n connectorState.refine = function (relevancyStrictness) {\n helper.setQueryParameter('relevancyStrictness', relevancyStrictness).search();\n };\n }\n var _ref3 = results || {},\n appliedRelevancyStrictness = _ref3.appliedRelevancyStrictness;\n var isVirtualReplica = appliedRelevancyStrictness !== undefined;\n return {\n isRelevantSorted: typeof appliedRelevancyStrictness !== 'undefined' && appliedRelevancyStrictness > 0,\n isVirtualReplica: isVirtualReplica,\n canRefine: isVirtualReplica,\n refine: connectorState.refine,\n widgetParams: widgetParams\n };\n },\n getWidgetSearchParameters: function getWidgetSearchParameters(state, _ref4) {\n var _uiState$relevantSort;\n var uiState = _ref4.uiState;\n return state.setQueryParameter('relevancyStrictness', (_uiState$relevantSort = uiState.relevantSort) !== null && _uiState$relevantSort !== void 0 ? _uiState$relevantSort : state.relevancyStrictness);\n },\n getWidgetUiState: function getWidgetUiState(uiState, _ref5) {\n var searchParameters = _ref5.searchParameters;\n return _objectSpread(_objectSpread({}, uiState), {}, {\n relevantSort: searchParameters.relevancyStrictness || uiState.relevantSort\n });\n }\n };\n };\n};\nexport default connectRelevantSort;","import{createSuitMixin as e}from\"../mixins/suit.js\";import{createWidgetMixin as t}from\"../mixins/widget.js\";import{connectRelevantSort as i}from\"instantsearch.js/es/connectors/index.js\";export default{name:\"AisRelevantSort\",mixins:[e({name:\"RelevantSort\"}),t({connector:i},{$$widgetType:\"ais.relevantSort\"})],methods:{refine:function(){this.state.isRelevantSorted?this.state.refine(0):this.state.refine(void 0)}}};\n//# sourceMappingURL=RelevantSort.vue_rollup-plugin-vue=script.js.map\n","export function getWidgetAttribute(widget, initOptions) {\n var _widget$getWidgetRend;\n var renderState = (_widget$getWidgetRend = widget.getWidgetRenderState) === null || _widget$getWidgetRend === void 0 ? void 0 : _widget$getWidgetRend.call(widget, initOptions);\n var attribute = null;\n if (renderState && renderState.widgetParams) {\n // casting as widgetParams is checked just before\n var widgetParams = renderState.widgetParams;\n if (widgetParams.attribute) {\n attribute = widgetParams.attribute;\n } else if (Array.isArray(widgetParams.attributes)) {\n attribute = widgetParams.attributes[0];\n }\n }\n if (typeof attribute !== 'string') {\n throw new Error(\"Could not find the attribute of the widget:\\n\\n\".concat(JSON.stringify(widget), \"\\n\\nPlease check whether the widget's getWidgetRenderState returns widgetParams.attribute correctly.\"));\n }\n return attribute;\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nimport { checkRendering, createDocumentationMessageGenerator, getWidgetAttribute, noop, warning } from \"../../lib/utils/index.js\";\nvar withUsage = createDocumentationMessageGenerator({\n name: 'dynamic-widgets',\n connector: true\n});\nvar MAX_WILDCARD_FACETS = 20;\nvar connectDynamicWidgets = function connectDynamicWidgets(renderFn) {\n var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n checkRendering(renderFn, withUsage());\n return function (widgetParams) {\n var widgets = widgetParams.widgets,\n _widgetParams$maxValu = widgetParams.maxValuesPerFacet,\n maxValuesPerFacet = _widgetParams$maxValu === void 0 ? 20 : _widgetParams$maxValu,\n _widgetParams$facets = widgetParams.facets,\n facets = _widgetParams$facets === void 0 ? ['*'] : _widgetParams$facets,\n _widgetParams$transfo = widgetParams.transformItems,\n transformItems = _widgetParams$transfo === void 0 ? function (items) {\n return items;\n } : _widgetParams$transfo,\n fallbackWidget = widgetParams.fallbackWidget;\n if (!(widgets && Array.isArray(widgets) && widgets.every(function (widget) {\n return _typeof(widget) === 'object';\n }))) {\n throw new Error(withUsage('The `widgets` option expects an array of widgets.'));\n }\n if (!Array.isArray(facets)) {\n throw new Error(withUsage(\"The `facets` option only accepts an array of facets, you passed \".concat(JSON.stringify(facets))));\n }\n var localWidgets = new Map();\n return {\n $$type: 'ais.dynamicWidgets',\n init: function init(initOptions) {\n widgets.forEach(function (widget) {\n var attribute = getWidgetAttribute(widget, initOptions);\n localWidgets.set(attribute, {\n widget: widget,\n isMounted: false\n });\n });\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(initOptions)), {}, {\n instantSearchInstance: initOptions.instantSearchInstance\n }), true);\n },\n render: function render(renderOptions) {\n var parent = renderOptions.parent;\n var renderState = this.getWidgetRenderState(renderOptions);\n var widgetsToUnmount = [];\n var widgetsToMount = [];\n if (fallbackWidget) {\n renderState.attributesToRender.forEach(function (attribute) {\n if (!localWidgets.has(attribute)) {\n var widget = fallbackWidget({\n attribute: attribute\n });\n localWidgets.set(attribute, {\n widget: widget,\n isMounted: false\n });\n }\n });\n }\n localWidgets.forEach(function (_ref, attribute) {\n var widget = _ref.widget,\n isMounted = _ref.isMounted;\n var shouldMount = renderState.attributesToRender.indexOf(attribute) > -1;\n if (!isMounted && shouldMount) {\n widgetsToMount.push(widget);\n localWidgets.set(attribute, {\n widget: widget,\n isMounted: true\n });\n } else if (isMounted && !shouldMount) {\n widgetsToUnmount.push(widget);\n localWidgets.set(attribute, {\n widget: widget,\n isMounted: false\n });\n }\n });\n parent.addWidgets(widgetsToMount);\n // make sure this only happens after the regular render, otherwise it\n // happens too quick, since render is \"deferred\" for the next microtask,\n // so this needs to be a whole task later\n setTimeout(function () {\n return parent.removeWidgets(widgetsToUnmount);\n }, 0);\n renderFn(_objectSpread(_objectSpread({}, renderState), {}, {\n instantSearchInstance: renderOptions.instantSearchInstance\n }), false);\n },\n dispose: function dispose(_ref2) {\n var parent = _ref2.parent;\n var toRemove = [];\n localWidgets.forEach(function (_ref3) {\n var widget = _ref3.widget,\n isMounted = _ref3.isMounted;\n if (isMounted) {\n toRemove.push(widget);\n }\n });\n parent.removeWidgets(toRemove);\n unmountFn();\n },\n getWidgetSearchParameters: function getWidgetSearchParameters(state) {\n return facets.reduce(function (acc, curr) {\n return acc.addFacet(curr);\n }, state.setQueryParameters({\n maxValuesPerFacet: Math.max(maxValuesPerFacet || 0, state.maxValuesPerFacet || 0)\n }));\n },\n getRenderState: function getRenderState(renderState, renderOptions) {\n return _objectSpread(_objectSpread({}, renderState), {}, {\n dynamicWidgets: this.getWidgetRenderState(renderOptions)\n });\n },\n getWidgetRenderState: function getWidgetRenderState(_ref4) {\n var _results$renderingCon, _results$renderingCon2, _results$renderingCon3, _results$renderingCon4;\n var results = _ref4.results,\n state = _ref4.state;\n if (!results) {\n return {\n attributesToRender: [],\n widgetParams: widgetParams\n };\n }\n var attributesToRender = transformItems((_results$renderingCon = (_results$renderingCon2 = results.renderingContent) === null || _results$renderingCon2 === void 0 ? void 0 : (_results$renderingCon3 = _results$renderingCon2.facetOrdering) === null || _results$renderingCon3 === void 0 ? void 0 : (_results$renderingCon4 = _results$renderingCon3.facets) === null || _results$renderingCon4 === void 0 ? void 0 : _results$renderingCon4.order) !== null && _results$renderingCon !== void 0 ? _results$renderingCon : [], {\n results: results\n });\n if (!Array.isArray(attributesToRender)) {\n throw new Error(withUsage('The `transformItems` option expects a function that returns an Array.'));\n }\n process.env.NODE_ENV === 'development' ? warning(maxValuesPerFacet >= (state.maxValuesPerFacet || 0), \"The maxValuesPerFacet set by dynamic widgets (\".concat(maxValuesPerFacet, \") is smaller than one of the limits set by a widget (\").concat(state.maxValuesPerFacet, \"). This causes a mismatch in query parameters and thus an extra network request when that widget is mounted.\")) : void 0;\n process.env.NODE_ENV === 'development' ? warning(attributesToRender.length <= MAX_WILDCARD_FACETS || widgetParams.facets !== undefined, \"More than \".concat(MAX_WILDCARD_FACETS, \" facets are requested to be displayed without explicitly setting which facets to retrieve. This could have a performance impact. Set \\\"facets\\\" to [] to do two smaller network requests, or explicitly to ['*'] to avoid this warning.\")) : void 0;\n return {\n attributesToRender: attributesToRender,\n widgetParams: widgetParams\n };\n }\n };\n };\n};\nexport default connectDynamicWidgets;","import{createSuitMixin as t}from\"../mixins/suit.js\";import{_objectSpread as e}from\"../util/polyfills.js\";import{renderCompat as i,getDefaultSlot as r}from\"../util/vue-compat/index-vue2.js\";import{createWidgetMixin as s}from\"../mixins/widget.js\";import{connectDynamicWidgets as n}from\"instantsearch.js/es/connectors/index.js\";export default{name:\"AisDynamicWidgets\",mixins:[s({connector:n},{$$widgetType:\"ais.dynamicWidgets\"}),t({name:\"DynamicWidgets\"})],props:{transformItems:{type:Function,default:void 0},facets:{type:Array,default:void 0},maxValuesPerFacet:{type:Number,default:void 0}},render:i(function(t){var i=this,s=new Map;if((r(this)||[]).forEach(function(e){var r=function t(e){var i,r=e.componentOptions&&e.componentOptions.propsData;if(r){if(r.attribute)return r.attribute;if(Array.isArray(r.attributes))return r.attributes[0]}if(i=e.componentOptions&&e.componentOptions.children?e.componentOptions.children:e.children,Array.isArray(i))return i.reduce(function(e,i){return e||t(i)},void 0)}(e);r&&s.set(r,t(\"div\",{key:r,class:[i.suit(\"widget\")]},[e]))}),!this.state){var n=[];return s.forEach(function(t){return n.push(t)}),t(\"div\",e({class:[this.suit()]},{attrs:{hidden:!0}}),n)}return t(\"div\",{class:[this.suit()]},this.state.attributesToRender.map(function(t){return s.get(t)}))}),computed:{widgetParams:function(){return{transformItems:this.transformItems,facets:this.facets,maxValuesPerFacet:this.maxValuesPerFacet,widgets:[]}}}};\n//# sourceMappingURL=DynamicWidgets.js.map\n","import{warn as i}from\"../util/warn.js\";import e from\"./DynamicWidgets.js\";export default Object.assign({},e,{name:\"AisExperimentalDynamicWidgets\",mounted:function(){i(\"Use AisDynamicWidgets instead of AisExperimentalDynamicWidgets.\")}});\n//# sourceMappingURL=ExperimentalDynamicWidgets.js.map\n","import*as n from\"./widgets.js\";var o={install:function(o){Object.keys(n).forEach(function(t){o.component(n[t].name,n[t])})}};export{o as plugin};\n//# sourceMappingURL=plugin.js.map\n","import InstantSearch from './src/instantsearch.js';\nexport default InstantSearch;\nexport * from './src/instantsearch.js';","const truncate = (text = \"\", stop, clamp) => {\n return text.slice(0, stop) + (stop < text.length ? clamp || \"...\" : \"\");\n};\n\nexport default truncate;\n","// When added to any wrapping element, the block will\n// fade into view as the user scrolls down the page\nconst reveal = {\n inViewport(el) {\n const rect = el.getBoundingClientRect();\n return !(\n rect.bottom < 0 ||\n rect.right < 0 ||\n rect.left > window.innerWidth ||\n rect.top > window.innerHeight - 50\n );\n },\n\n bind(el, binding) {\n el.classList.add(\"v-reveal\");\n el.classList.add(\"before-enter\");\n el.$onScroll = () => {\n if (binding.def.inViewport(el)) {\n setTimeout(() => {\n el.classList.add(\"enter\");\n el.classList.remove(\"before-enter\");\n binding.def.unbind(el, binding);\n }, 200);\n }\n };\n document.addEventListener(\"scroll\", el.$onScroll);\n },\n\n inserted(el) {\n el.$onScroll();\n },\n\n unbind(el) {\n document.removeEventListener(\"scroll\", el.$onScroll);\n delete el.$onScroll;\n }\n};\n\nexport { reveal as default };\n","/*! medium-zoom 1.1.0 | MIT License | https://github.com/francoischalifour/medium-zoom */\nvar _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\nvar isSupported = function isSupported(node) {\n return node.tagName === 'IMG';\n};\n\n/* eslint-disable-next-line no-prototype-builtins */\nvar isNodeList = function isNodeList(selector) {\n return NodeList.prototype.isPrototypeOf(selector);\n};\n\nvar isNode = function isNode(selector) {\n return selector && selector.nodeType === 1;\n};\n\nvar isSvg = function isSvg(image) {\n var source = image.currentSrc || image.src;\n return source.substr(-4).toLowerCase() === '.svg';\n};\n\nvar getImagesFromSelector = function getImagesFromSelector(selector) {\n try {\n if (Array.isArray(selector)) {\n return selector.filter(isSupported);\n }\n\n if (isNodeList(selector)) {\n // Do not use spread operator or Array.from() for IE support\n return [].slice.call(selector).filter(isSupported);\n }\n\n if (isNode(selector)) {\n return [selector].filter(isSupported);\n }\n\n if (typeof selector === 'string') {\n // Do not use spread operator or Array.from() for IE support\n return [].slice.call(document.querySelectorAll(selector)).filter(isSupported);\n }\n\n return [];\n } catch (err) {\n throw new TypeError('The provided selector is invalid.\\n' + 'Expects a CSS selector, a Node element, a NodeList or an array.\\n' + 'See: https://github.com/francoischalifour/medium-zoom');\n }\n};\n\nvar createOverlay = function createOverlay(background) {\n var overlay = document.createElement('div');\n overlay.classList.add('medium-zoom-overlay');\n overlay.style.background = background;\n\n return overlay;\n};\n\nvar cloneTarget = function cloneTarget(template) {\n var _template$getBounding = template.getBoundingClientRect(),\n top = _template$getBounding.top,\n left = _template$getBounding.left,\n width = _template$getBounding.width,\n height = _template$getBounding.height;\n\n var clone = template.cloneNode();\n var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;\n var scrollLeft = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0;\n\n clone.removeAttribute('id');\n clone.style.position = 'absolute';\n clone.style.top = top + scrollTop + 'px';\n clone.style.left = left + scrollLeft + 'px';\n clone.style.width = width + 'px';\n clone.style.height = height + 'px';\n clone.style.transform = '';\n\n return clone;\n};\n\nvar createCustomEvent = function createCustomEvent(type, params) {\n var eventParams = _extends({\n bubbles: false,\n cancelable: false,\n detail: undefined\n }, params);\n\n if (typeof window.CustomEvent === 'function') {\n return new CustomEvent(type, eventParams);\n }\n\n var customEvent = document.createEvent('CustomEvent');\n customEvent.initCustomEvent(type, eventParams.bubbles, eventParams.cancelable, eventParams.detail);\n\n return customEvent;\n};\n\nvar mediumZoom = function mediumZoom(selector) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n /**\n * Ensure the compatibility with IE11 if no Promise polyfill are used.\n */\n var Promise = window.Promise || function Promise(fn) {\n function noop() {}\n fn(noop, noop);\n };\n\n var _handleClick = function _handleClick(event) {\n var target = event.target;\n\n\n if (target === overlay) {\n close();\n return;\n }\n\n if (images.indexOf(target) === -1) {\n return;\n }\n\n toggle({ target: target });\n };\n\n var _handleScroll = function _handleScroll() {\n if (isAnimating || !active.original) {\n return;\n }\n\n var currentScroll = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;\n\n if (Math.abs(scrollTop - currentScroll) > zoomOptions.scrollOffset) {\n setTimeout(close, 150);\n }\n };\n\n var _handleKeyUp = function _handleKeyUp(event) {\n var key = event.key || event.keyCode;\n\n // Close if escape key is pressed\n if (key === 'Escape' || key === 'Esc' || key === 27) {\n close();\n }\n };\n\n var update = function update() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var newOptions = options;\n\n if (options.background) {\n overlay.style.background = options.background;\n }\n\n if (options.container && options.container instanceof Object) {\n newOptions.container = _extends({}, zoomOptions.container, options.container);\n }\n\n if (options.template) {\n var template = isNode(options.template) ? options.template : document.querySelector(options.template);\n\n newOptions.template = template;\n }\n\n zoomOptions = _extends({}, zoomOptions, newOptions);\n\n images.forEach(function (image) {\n image.dispatchEvent(createCustomEvent('medium-zoom:update', {\n detail: { zoom: zoom }\n }));\n });\n\n return zoom;\n };\n\n var clone = function clone() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return mediumZoom(_extends({}, zoomOptions, options));\n };\n\n var attach = function attach() {\n for (var _len = arguments.length, selectors = Array(_len), _key = 0; _key < _len; _key++) {\n selectors[_key] = arguments[_key];\n }\n\n var newImages = selectors.reduce(function (imagesAccumulator, currentSelector) {\n return [].concat(imagesAccumulator, getImagesFromSelector(currentSelector));\n }, []);\n\n newImages.filter(function (newImage) {\n return images.indexOf(newImage) === -1;\n }).forEach(function (newImage) {\n images.push(newImage);\n newImage.classList.add('medium-zoom-image');\n });\n\n eventListeners.forEach(function (_ref) {\n var type = _ref.type,\n listener = _ref.listener,\n options = _ref.options;\n\n newImages.forEach(function (image) {\n image.addEventListener(type, listener, options);\n });\n });\n\n return zoom;\n };\n\n var detach = function detach() {\n for (var _len2 = arguments.length, selectors = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n selectors[_key2] = arguments[_key2];\n }\n\n if (active.zoomed) {\n close();\n }\n\n var imagesToDetach = selectors.length > 0 ? selectors.reduce(function (imagesAccumulator, currentSelector) {\n return [].concat(imagesAccumulator, getImagesFromSelector(currentSelector));\n }, []) : images;\n\n imagesToDetach.forEach(function (image) {\n image.classList.remove('medium-zoom-image');\n image.dispatchEvent(createCustomEvent('medium-zoom:detach', {\n detail: { zoom: zoom }\n }));\n });\n\n images = images.filter(function (image) {\n return imagesToDetach.indexOf(image) === -1;\n });\n\n return zoom;\n };\n\n var on = function on(type, listener) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n images.forEach(function (image) {\n image.addEventListener('medium-zoom:' + type, listener, options);\n });\n\n eventListeners.push({ type: 'medium-zoom:' + type, listener: listener, options: options });\n\n return zoom;\n };\n\n var off = function off(type, listener) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n images.forEach(function (image) {\n image.removeEventListener('medium-zoom:' + type, listener, options);\n });\n\n eventListeners = eventListeners.filter(function (eventListener) {\n return !(eventListener.type === 'medium-zoom:' + type && eventListener.listener.toString() === listener.toString());\n });\n\n return zoom;\n };\n\n var open = function open() {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n target = _ref2.target;\n\n var _animate = function _animate() {\n var container = {\n width: document.documentElement.clientWidth,\n height: document.documentElement.clientHeight,\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n };\n var viewportWidth = void 0;\n var viewportHeight = void 0;\n\n if (zoomOptions.container) {\n if (zoomOptions.container instanceof Object) {\n // The container is given as an object with properties like width, height, left, top\n container = _extends({}, container, zoomOptions.container);\n\n // We need to adjust custom options like container.right or container.bottom\n viewportWidth = container.width - container.left - container.right - zoomOptions.margin * 2;\n viewportHeight = container.height - container.top - container.bottom - zoomOptions.margin * 2;\n } else {\n // The container is given as an element\n var zoomContainer = isNode(zoomOptions.container) ? zoomOptions.container : document.querySelector(zoomOptions.container);\n\n var _zoomContainer$getBou = zoomContainer.getBoundingClientRect(),\n _width = _zoomContainer$getBou.width,\n _height = _zoomContainer$getBou.height,\n _left = _zoomContainer$getBou.left,\n _top = _zoomContainer$getBou.top;\n\n container = _extends({}, container, {\n width: _width,\n height: _height,\n left: _left,\n top: _top\n });\n }\n }\n\n viewportWidth = viewportWidth || container.width - zoomOptions.margin * 2;\n viewportHeight = viewportHeight || container.height - zoomOptions.margin * 2;\n\n var zoomTarget = active.zoomedHd || active.original;\n var naturalWidth = isSvg(zoomTarget) ? viewportWidth : zoomTarget.naturalWidth || viewportWidth;\n var naturalHeight = isSvg(zoomTarget) ? viewportHeight : zoomTarget.naturalHeight || viewportHeight;\n\n var _zoomTarget$getBoundi = zoomTarget.getBoundingClientRect(),\n top = _zoomTarget$getBoundi.top,\n left = _zoomTarget$getBoundi.left,\n width = _zoomTarget$getBoundi.width,\n height = _zoomTarget$getBoundi.height;\n\n var scaleX = Math.min(Math.max(width, naturalWidth), viewportWidth) / width;\n var scaleY = Math.min(Math.max(height, naturalHeight), viewportHeight) / height;\n var scale = Math.min(scaleX, scaleY);\n var translateX = (-left + (viewportWidth - width) / 2 + zoomOptions.margin + container.left) / scale;\n var translateY = (-top + (viewportHeight - height) / 2 + zoomOptions.margin + container.top) / scale;\n var transform = 'scale(' + scale + ') translate3d(' + translateX + 'px, ' + translateY + 'px, 0)';\n\n active.zoomed.style.transform = transform;\n\n if (active.zoomedHd) {\n active.zoomedHd.style.transform = transform;\n }\n };\n\n return new Promise(function (resolve) {\n if (target && images.indexOf(target) === -1) {\n resolve(zoom);\n return;\n }\n\n var _handleOpenEnd = function _handleOpenEnd() {\n isAnimating = false;\n active.zoomed.removeEventListener('transitionend', _handleOpenEnd);\n active.original.dispatchEvent(createCustomEvent('medium-zoom:opened', {\n detail: { zoom: zoom }\n }));\n\n resolve(zoom);\n };\n\n if (active.zoomed) {\n resolve(zoom);\n return;\n }\n\n if (target) {\n // The zoom was triggered manually via a click\n active.original = target;\n } else if (images.length > 0) {\nvar _images = images;\n active.original = _images[0];\n } else {\n resolve(zoom);\n return;\n }\n\n active.original.dispatchEvent(createCustomEvent('medium-zoom:open', {\n detail: { zoom: zoom }\n }));\n\n scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;\n isAnimating = true;\n active.zoomed = cloneTarget(active.original);\n\n document.body.appendChild(overlay);\n\n if (zoomOptions.template) {\n var template = isNode(zoomOptions.template) ? zoomOptions.template : document.querySelector(zoomOptions.template);\n active.template = document.createElement('div');\n active.template.appendChild(template.content.cloneNode(true));\n\n document.body.appendChild(active.template);\n }\n\n // If the selected
tag is inside a tag, set the\n // currently-applied source as the cloned `src=` attribute.\n // (as these might differ, or src= might be unset in some cases)\n if (active.original.parentElement && active.original.parentElement.tagName === 'PICTURE' && active.original.currentSrc) {\n active.zoomed.src = active.original.currentSrc;\n }\n\n document.body.appendChild(active.zoomed);\n\n window.requestAnimationFrame(function () {\n document.body.classList.add('medium-zoom--opened');\n });\n\n active.original.classList.add('medium-zoom-image--hidden');\n active.zoomed.classList.add('medium-zoom-image--opened');\n\n active.zoomed.addEventListener('click', close);\n active.zoomed.addEventListener('transitionend', _handleOpenEnd);\n\n if (active.original.getAttribute('data-zoom-src')) {\n active.zoomedHd = active.zoomed.cloneNode();\n\n // Reset the `scrset` property or the HD image won't load.\n active.zoomedHd.removeAttribute('srcset');\n active.zoomedHd.removeAttribute('sizes');\n // Remove loading attribute so the browser can load the image normally\n active.zoomedHd.removeAttribute('loading');\n\n active.zoomedHd.src = active.zoomed.getAttribute('data-zoom-src');\n\n active.zoomedHd.onerror = function () {\n clearInterval(getZoomTargetSize);\n console.warn('Unable to reach the zoom image target ' + active.zoomedHd.src);\n active.zoomedHd = null;\n _animate();\n };\n\n // We need to access the natural size of the full HD\n // target as fast as possible to compute the animation.\n var getZoomTargetSize = setInterval(function () {\n if ( active.zoomedHd.complete) {\n clearInterval(getZoomTargetSize);\n active.zoomedHd.classList.add('medium-zoom-image--opened');\n active.zoomedHd.addEventListener('click', close);\n document.body.appendChild(active.zoomedHd);\n _animate();\n }\n }, 10);\n } else if (active.original.hasAttribute('srcset')) {\n // If an image has a `srcset` attribuet, we don't know the dimensions of the\n // zoomed (HD) image (like when `data-zoom-src` is specified).\n // Therefore the approach is quite similar.\n active.zoomedHd = active.zoomed.cloneNode();\n\n // Resetting the sizes attribute tells the browser to load the\n // image best fitting the current viewport size, respecting the `srcset`.\n active.zoomedHd.removeAttribute('sizes');\n\n // In Firefox, the `loading` attribute needs to be set to `eager` (default\n // value) for the load event to be fired.\n active.zoomedHd.removeAttribute('loading');\n\n // Wait for the load event of the hd image. This will fire if the image\n // is already cached.\n var loadEventListener = active.zoomedHd.addEventListener('load', function () {\n active.zoomedHd.removeEventListener('load', loadEventListener);\n active.zoomedHd.classList.add('medium-zoom-image--opened');\n active.zoomedHd.addEventListener('click', close);\n document.body.appendChild(active.zoomedHd);\n _animate();\n });\n } else {\n _animate();\n }\n });\n };\n\n var close = function close() {\n return new Promise(function (resolve) {\n if (isAnimating || !active.original) {\n resolve(zoom);\n return;\n }\n\n var _handleCloseEnd = function _handleCloseEnd() {\n active.original.classList.remove('medium-zoom-image--hidden');\n document.body.removeChild(active.zoomed);\n if (active.zoomedHd) {\n document.body.removeChild(active.zoomedHd);\n }\n document.body.removeChild(overlay);\n active.zoomed.classList.remove('medium-zoom-image--opened');\n if (active.template) {\n document.body.removeChild(active.template);\n }\n\n isAnimating = false;\n active.zoomed.removeEventListener('transitionend', _handleCloseEnd);\n\n active.original.dispatchEvent(createCustomEvent('medium-zoom:closed', {\n detail: { zoom: zoom }\n }));\n\n active.original = null;\n active.zoomed = null;\n active.zoomedHd = null;\n active.template = null;\n\n resolve(zoom);\n };\n\n isAnimating = true;\n document.body.classList.remove('medium-zoom--opened');\n active.zoomed.style.transform = '';\n\n if (active.zoomedHd) {\n active.zoomedHd.style.transform = '';\n }\n\n // Fade out the template so it's not too abrupt\n if (active.template) {\n active.template.style.transition = 'opacity 150ms';\n active.template.style.opacity = 0;\n }\n\n active.original.dispatchEvent(createCustomEvent('medium-zoom:close', {\n detail: { zoom: zoom }\n }));\n\n active.zoomed.addEventListener('transitionend', _handleCloseEnd);\n });\n };\n\n var toggle = function toggle() {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n target = _ref3.target;\n\n if (active.original) {\n return close();\n }\n\n return open({ target: target });\n };\n\n var getOptions = function getOptions() {\n return zoomOptions;\n };\n\n var getImages = function getImages() {\n return images;\n };\n\n var getZoomedImage = function getZoomedImage() {\n return active.original;\n };\n\n var images = [];\n var eventListeners = [];\n var isAnimating = false;\n var scrollTop = 0;\n var zoomOptions = options;\n var active = {\n original: null,\n zoomed: null,\n zoomedHd: null,\n template: null\n\n // If the selector is omitted, it's replaced by the options\n };if (Object.prototype.toString.call(selector) === '[object Object]') {\n zoomOptions = selector;\n } else if (selector || typeof selector === 'string' // to process empty string as a selector\n ) {\n attach(selector);\n }\n\n // Apply the default option values\n zoomOptions = _extends({\n margin: 0,\n background: '#fff',\n scrollOffset: 40,\n container: null,\n template: null\n }, zoomOptions);\n\n var overlay = createOverlay(zoomOptions.background);\n\n document.addEventListener('click', _handleClick);\n document.addEventListener('keyup', _handleKeyUp);\n document.addEventListener('scroll', _handleScroll);\n window.addEventListener('resize', close);\n\n var zoom = {\n open: open,\n close: close,\n toggle: toggle,\n update: update,\n clone: clone,\n attach: attach,\n detach: detach,\n on: on,\n off: off,\n getOptions: getOptions,\n getImages: getImages,\n getZoomedImage: getZoomedImage\n };\n\n return zoom;\n};\n\nfunction styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar css = \".medium-zoom-overlay{position:fixed;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity .3s;will-change:opacity}.medium-zoom--opened .medium-zoom-overlay{cursor:pointer;cursor:zoom-out;opacity:1}.medium-zoom-image{cursor:pointer;cursor:zoom-in;transition:transform .3s cubic-bezier(.2,0,.2,1)!important}.medium-zoom-image--hidden{visibility:hidden}.medium-zoom-image--opened{position:relative;cursor:pointer;cursor:zoom-out;will-change:transform}\";\nstyleInject(css);\n\nexport default mediumZoom;\n","import mediumZoom from \"medium-zoom\";\n\nconst mediumZoomLib = mediumZoom({\n background: '#2e2925',\n});\n\nconst zoom = {\n inserted(el) {\n const img = el.querySelector(\"img\");\n // attach the zoom behavior to the image\n mediumZoomLib.attach(img);\n // if the button is selected via keyboard,\n // trigger a click on the image\n el.addEventListener(\"keypress\", () => img.click());\n },\n unbind(el) {\n const img = el.querySelector(\"img\");\n mediumZoomLib.detach(img);\n el.removeEventListener(\"keypress\", () => img.click());\n },\n};\n\nexport { zoom as default };\n","export const hasSlot = {\n methods: {\n $hasSlot(slotName) {\n return !!this.$slots[slotName];\n }\n }\n};\n","import Vue from \"vue\";\nimport Vuex from \"vuex\";\nimport router from \"../router\";\nVue.use(Vuex);\n\nexport default new Vuex.Store({\n state: {\n searchOpen: false,\n navOpen: false,\n drawerOpen: false,\n searchQuery: \"\",\n topAlertActive: false,\n bottomAlertActive: false,\n reduceMotion: matchMedia('(prefers-reduced-motion)').matches\n },\n mutations: {\n setQuery(state) {\n if (Object.keys(router.currentRoute.query).length !== 0) {\n if (router.currentRoute.query.s) {\n state.searchQuery = router.currentRoute.query.s;\n } else {\n state.searchQuery = \"\";\n }\n }\n },\n setTopAlertActive(state, payload) {\n state.topAlertActive = payload;\n },\n setBottomAlertActive(state, payload) {\n state.bottomAlertActive = payload;\n },\n setDrawerOpen(state, payload) {\n state.drawerOpen = payload;\n }\n },\n actions: {\n setQuery({ commit }) {\n commit(\"setQuery\");\n },\n },\n});\n","// Import core-js for polyfills, mostly for IE11\nimport \"core-js/stable\";\nimport \"regenerator-runtime/runtime\";\nimport \"intersection-observer\";\nimport \"./polyfills/append.polyfill\";\nimport \"./polyfills/closest.polyfill\";\nimport Vue from \"vue\";\nimport Vuex from \"vuex\";\nimport UniqueId from \"vue-unique-id\";\nimport router from \"./router\";\nimport { ImagePlugin, ModalPlugin } from \"bootstrap-vue\";\nimport InstantSearch from \"vue-instantsearch\";\nimport { breakpoint } from \"./mixins/breakpoint.js\";\nimport truncate from \"./filters/truncate\";\nimport reveal from \"./directives/reveal.js\";\nimport zoom from \"./directives/zoom.js\";\nimport { hasSlot } from \"./mixins/has-slot.js\";\nimport svg4everybody from \"svg4everybody/dist/svg4everybody.min.js\";\nimport VTooltip from \"v-tooltip\";\n\nVue.use(VTooltip);\n\nimport \"./services/ga-tracking\";\n\nsvg4everybody();\nimport \"./sass/main.scss\";\n\n// register plugins\nVue.use(ImagePlugin);\nVue.use(ModalPlugin);\nVue.use(UniqueId);\nVue.use(InstantSearch);\n\n// register global mixins\nVue.mixin(breakpoint);\nVue.mixin(hasSlot);\n\n// Import Vuex store\nimport store from \"./store\";\n\nVue.use(Vuex);\n\n/**\n * Directives.\n */\nVue.directive(\"ahc-reveal\", reveal);\nVue.directive(\"ahc-zoom\", zoom);\n\nVue.filter(\"truncate\", truncate);\n\n/**\n * Components to be loaded globally (always in the bundle)\n */\nVue.component(\n \"ahc-navigation\",\n require(\"./components/navigation/navigation.vue\").default\n);\nVue.component(\n \"ahc-masthead\",\n require(\"./components/masthead/masthead.vue\").default\n);\nVue.component(\n \"ahc-predictive-search\",\n require(\"./components/predictive-search/predictive-search.vue\").default\n);\nVue.component(\n \"ahc-hamburger\",\n require(\"./components/hamburger/hamburger.vue\").default\n);\nVue.component(\"ahc-icon\", require(\"./components/icon/icon.vue\").default);\nVue.component(\n \"ahc-skip-nav\",\n require(\"./components/skip-nav/skip-nav.vue\").default\n);\nVue.component(\n \"ahc-block-list\",\n require(\"./components/block-list/block-list.vue\").default\n);\nVue.component(\n \"ahc-post-list\",\n require(\"./components/post-list/post-list.vue\").default\n);\nVue.component(\n \"ahc-slideshow\",\n require(\"./components/slideshow/slideshow.vue\").default\n);\nVue.component(\n \"ahc-exhibition\",\n require(\"./components/exhibition/exhibition.vue\").default\n);\nVue.component(\n \"ahc-exhibition-section\",\n require(\"./components/exhibition-section/exhibition-section.vue\").default\n);\nVue.component(\n \"vue-script-component\",\n require(\"./../node_modules/vue-script-component/src/components/VueScriptComponent.vue\")\n .default\n);\nVue.component(\n \"ahc-federated-search-results\",\n require(\"./components/federated-search-results/federated-search-results.vue\")\n .default\n);\nVue.component(\n \"ahc-federated-search-facet-filter\",\n require(\"./components/federated-search-facet-filter/federated-search-facet-filter.vue\")\n .default\n);\nVue.component(\n \"ahc-federated-search-facet-date-filter\",\n require(\"./components/federated-search-facet-date-filter/federated-search-facet-date-filter.vue\")\n .default\n);\nVue.component(\n \"ahc-federated-search-results\",\n require(\"./components/federated-search-results/federated-search-results.vue\")\n .default\n);\nVue.component(\n \"ahc-paginator\",\n require(\"./components/paginator/paginator.vue\").default\n);\n\nVue.component(\n \"ahc-federated-search-searchbar\",\n require(\"./components/federated-search-searchbar/federated-search-searchbar.vue\")\n .default\n);\n\nVue.component(\n \"ahc-federated-search-details\",\n require(\"./components/federated-search-details/federated-search-details.vue\")\n .default\n);\n\nVue.component(\n \"ahc-federated-search-landing-modal\",\n require(\"./components/federated-search-landing-modal/federated-search-landing-modal.vue\")\n .default\n);\n\nVue.component(\n \"ahc-federated-search-slideshow\",\n require(\"./components/federated-search-slideshow/federated-search-slideshow.vue\")\n .default\n);\n\nVue.component(\n \"ahc-federated-search-list-item\",\n require(\"./components/federated-search-list-item/federated-search-list-item.vue\")\n .default\n);\n\n/**\n * Dynamic Imports\n * For components that should only be loaded on pages which use them,\n * import them dynamically here. The 'webpackChunkName' specifies how the\n * saved chunk file will be named (ie, showcase-lazy.js). Chunked files\n * are saved in the 'dist' folder in the theme root.\n */\n\nconst ahcBlockListCard = () =>\n import(\n /* webpackChunkName: \"block-list-card-lazy\" */ \"./components/block-list/block-list-card.vue\"\n );\n\nconst ahcVideo = () =>\n import(/* webpackChunkName: \"video-lazy\" */ \"./components/video/video.vue\");\n\nconst ahcAccordion = () =>\n import(\n /* webpackChunkName: \"accordion-lazy\" */ \"./components/accordion/accordion.vue\"\n );\n\nconst ahcAccordionGroup = () =>\n import(\n /* webpackChunkName: \"accordion-group-lazy\" */ \"./components/accordion/accordion-group.vue\"\n );\n\nconst ahcExhibitionMasthead = () =>\n import(\n /* webpackChunkName: \"exhibition-masthead-lazy\" */ \"./components/exhibition-masthead/exhibition-masthead.vue\"\n );\n\nconst ahcExhibitionImage = () =>\n import(\n /* webpackChunkName: \"exhibition-image-lazy\" */ \"./components/exhibition-image/exhibition-image.vue\"\n );\n\nconst ahcExhibitionImageSequence = () =>\n import(\n /* webpackChunkName: \"exhibition-image-sequence-lazy\" */ \"./components/exhibition-image-sequence/exhibition-image-sequence.vue\"\n );\n\nconst ahcFederatedSearchResults = () =>\n import(\n /* webpackChunkName: \"federated-search-results\" */ \"./components/federated-search-results/federated-search-results.vue\"\n );\n\nconst ahcFederatedSearchFacetFilter = () =>\n import(\n /* webpackChunkName: \"federated-search-facet-filter\" */ \"./components/federated-search-facet-filter/federated-search-facet-filter.vue\"\n );\n\nconst ahcFederatedSearchFacetDateFilter = () =>\n import(\n /* webpackChunkName: \"federated-search-facet-date-filter\" */ \"./components/federated-search-facet-date-filter/federated-search-facet-date-filter.vue\"\n );\n\nconst ahcFederatedSearchDetails = () =>\n import(\n /* webpackChunkName: \"federated-search-details\" */ \"./components/federated-search-details/federated-search-details.vue\"\n );\n\nconst ahcFederatedSearchLandingModal = () =>\n import(\n /* webpackChunkName: \"federated-search-landing-modal\" */ \"./components/federated-search-landing-modal/federated-search-landing-modal.vue\"\n );\n\nconst ahcFederatedSearchSlideshow = () =>\n import(\n /* webpackChunkName: \"federated-search-slideshow\" */ \"./components/federated-search-slideshow/federated-search-slideshow.vue\"\n );\n\nconst ahcFederatedSearchListItem = () =>\n import(\n /* webpackChunkName: \"federated-search-list-item\" */ \"./components/federated-search-list-item/federated-search-list-item.vue\"\n );\n\nconst ahcExhibitionIndexList = () =>\n import(\n /* webpackChunkName: \"exhibition-index-list-lazy\" */ \"./components/exhibition-index-list/exhibition-index-list.vue\"\n );\n\nconst ahcExhibitionIndexListCard = () =>\n import(\n /* webpackChunkName: \"exhibition-index-list-card-lazy\" */ \"./components/exhibition-index-list/exhibition-index-list-card.vue\"\n );\n\nconst ahcExhibitionSlideshow = () =>\n import(\n /* webpackChunkName: \"exhibition-slideshow-lazy\" */ \"./components/exhibition-slideshow/exhibition-slideshow.vue\"\n );\n\nconst ahcExhibitionVideo = () =>\n import(\n /* webpackChunkName: \"exhibition-video-lazy\" */ \"./components/exhibition-video/exhibition-video.vue\"\n );\n\nconst ahcExhibitionImmersiveVideo = () =>\n import(\n /* webpackChunkName: \"exhibition-immersive-video-lazy\" */ \"./components/exhibition-immersive-video/exhibition-immersive-video.vue\"\n );\n\nconst ahcRoulette = () =>\n import(\n /* webpackChunkName: \"roulette-lazy\" */ \"./components/roulette/roulette.vue\"\n );\n\nconst ahcSocial = () =>\n import(\n /* webpackChunkName: \"social-lazy\" */ \"./components/social/social.vue\"\n );\n\nconst ahcResults = () =>\n import(\n /* webpackChunkName: \"results-lazy\" */ \"./components/results/results.vue\"\n );\n\nconst ahcFilter = () =>\n import(\n /* webpackChunkName: \"filter-lazy\" */ \"./components/filter/filter.vue\"\n );\n\nconst ahcFederatedLandingSearchbar = () =>\n import(\n /* webpackChunkName: \"filter-lazy\" */ \"./components/federated-search-searchbar/federated-search-searchbar.vue\"\n );\n\nconst ahcImageTrail = () =>\n import(\n /* webpackChunkName: \"image-trail-lazy\" */ \"./components/copy-shoutout/image-trail/image-trail.vue\"\n );\n\nconst ahcSearch = () =>\n import(/* webpackChunkName: \"search\" */ \"./components/search/search.vue\");\n\nconst ahcPaginator = () =>\n import(\n /* webpackChunkName: \"paginator\" */ \"./components/paginator/paginator.vue\"\n );\n\nconst ahcPlanner = () =>\n import(\n /* webpackChunkName: \"planner-lazy\" */ \"./components/planner/planner.vue\"\n );\n\nconst ahcPlanBuilder = () =>\n import(\n /* webpackChunkName: \"planner-lazy\" */ \"./components/plan-builder/plan-builder.vue\"\n );\n\nconst ahcPlannerChart = () =>\n import(\n /* webpackChunkName: \"planner-chart-lazy\" */ \"./components/planner/planner-chart.vue\"\n );\n\nconst ahcShare = () =>\n import(/* webpackChunkName: \"share-lazy\" */ \"./components/share/share.vue\");\n\nconst ahcMemberCta = () =>\n import(\n /* webpackChunkName: \"member-cta-lazy\" */ \"./components/member-cta/member-cta.vue\"\n );\n\n/**\n * These dynamic imports are also lazy loaded, but are loaded via\n * rel=\"preload\" to load them immediately\n */\nconst ahcAlert = () =>\n import(\n /* webpackChunkName: \"ahc-alert-lazy\" */ /* webpackPreload: true */ \"./components/alert/alert.vue\"\n );\n\nconst ahcHero = () =>\n import(\n /* webpackChunkName: \"hero-lazy\" */ /* webpackPreload: true */ \"./components/hero/hero.vue\"\n );\n\n/**\n * These dynamic imports are also lazy loaded, but are loaded via\n * rel=\"prefetch\" to defer their loading until after other scripts\n */\n// const ahcRevelator = () =>\n// import(\n// /* webpackChunkName: \"revelator-lazy\" */ /* webpackPrefetch: true */ \"./components/revelator/revelator.vue\"\n// );\n\nVue.config.productionTip = false;\n\n/* eslint-disable no-new */\nnew Vue({\n el: \"#app\",\n store,\n router,\n comments: true,\n delimiters: [\"${\", \"}\"],\n components: {\n ahcAlert,\n ahcBlockListCard,\n ahcFederatedSearchDetails,\n ahcFederatedSearchResults,\n ahcFederatedSearchListItem,\n ahcFederatedSearchLandingModal,\n ahcFederatedLandingSearchbar,\n ahcFederatedSearchSlideshow,\n ahcFederatedSearchFacetFilter,\n ahcFederatedSearchFacetDateFilter,\n ahcHero,\n ahcVideo,\n ahcAccordion,\n ahcAccordionGroup,\n ahcExhibitionMasthead,\n ahcExhibitionImage,\n ahcExhibitionImageSequence,\n ahcExhibitionIndexList,\n ahcExhibitionIndexListCard,\n ahcExhibitionImmersiveVideo,\n ahcExhibitionSlideshow,\n ahcExhibitionVideo,\n ahcFilter,\n ahcRoulette,\n ahcResults,\n ahcSocial,\n ahcImageTrail,\n ahcSearch,\n ahcPaginator,\n ahcPlanner,\n ahcPlanBuilder,\n ahcPlannerChart,\n ahcShare,\n ahcMemberCta,\n },\n});\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","//! moment.js locale configuration\n//! locale : Tetun Dili (East Timor) [tet]\n//! author : Joshua Brooks : https://github.com/joshbrooks\n//! author : Onorio De J. Afonso : https://github.com/marobo\n//! author : Sonia Simoes : https://github.com/soniasimoes\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tet = moment.defineLocale('tet', {\n months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Ohin iha] LT',\n nextDay: '[Aban iha] LT',\n nextWeek: 'dddd [iha] LT',\n lastDay: '[Horiseik iha] LT',\n lastWeek: 'dddd [semana kotuk] [iha] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'iha %s',\n past: '%s liuba',\n s: 'segundu balun',\n ss: 'segundu %d',\n m: 'minutu ida',\n mm: 'minutu %d',\n h: 'oras ida',\n hh: 'oras %d',\n d: 'loron ida',\n dd: 'loron %d',\n M: 'fulan ida',\n MM: 'fulan %d',\n y: 'tinan ida',\n yy: 'tinan %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tet;\n\n})));\n","'use strict';\nvar classof = require('../internals/classof');\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string');\n return $String(argument);\n};\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","'use strict';\nvar call = require('../internals/function-call');\nvar getBuiltIn = require('../internals/get-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function () {\n var Symbol = getBuiltIn('Symbol');\n var SymbolPrototype = Symbol && Symbol.prototype;\n var valueOf = SymbolPrototype && SymbolPrototype.valueOf;\n var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n if (SymbolPrototype && !SymbolPrototype[TO_PRIMITIVE]) {\n // `Symbol.prototype[@@toPrimitive]` method\n // https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\n // eslint-disable-next-line no-unused-vars -- required for .length\n defineBuiltIn(SymbolPrototype, TO_PRIMITIVE, function (hint) {\n return call(valueOf, this);\n }, { arity: 1 });\n }\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar isIntegralNumber = require('../internals/is-integral-number');\n\nvar abs = Math.abs;\n\n// `Number.isSafeInteger` method\n// https://tc39.es/ecma262/#sec-number.issafeinteger\n$({ target: 'Number', stat: true }, {\n isSafeInteger: function isSafeInteger(number) {\n return isIntegralNumber(number) && abs(number) <= 0x1FFFFFFFFFFFFF;\n }\n});\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","'use strict';\n// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar whitespaces = require('../internals/whitespaces');\n\nvar replace = uncurryThis(''.replace);\nvar ltrim = RegExp('^[' + whitespaces + ']+');\nvar rtrim = RegExp('(^|[^' + whitespaces + '])[' + whitespaces + ']+$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = toString(requireObjectCoercible($this));\n if (TYPE & 1) string = replace(string, ltrim, '');\n if (TYPE & 2) string = replace(string, rtrim, '$1');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.es/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../vue';\nimport { EVENT_NAME_INPUT } from '../constants/events';\nimport { PROP_TYPE_ANY } from '../constants/props';\nimport { makeProp } from './props';\nexport var makeModelMixin = function makeModelMixin(prop) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref$type = _ref.type,\n type = _ref$type === void 0 ? PROP_TYPE_ANY : _ref$type,\n _ref$defaultValue = _ref.defaultValue,\n defaultValue = _ref$defaultValue === void 0 ? undefined : _ref$defaultValue,\n _ref$validator = _ref.validator,\n validator = _ref$validator === void 0 ? undefined : _ref$validator,\n _ref$event = _ref.event,\n event = _ref$event === void 0 ? EVENT_NAME_INPUT : _ref$event;\n\n var props = _defineProperty({}, prop, makeProp(type, defaultValue, validator)); // @vue/component\n\n\n var mixin = extend({\n model: {\n prop: prop,\n event: event\n },\n props: props\n });\n return {\n mixin: mixin,\n props: props,\n prop: prop,\n event: event\n };\n};","'use strict';\nvar trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n","//! moment.js locale configuration\n//! locale : Maldivian [dv]\n//! author : Jawish Hameed : https://github.com/jawish\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'ޖެނުއަރީ',\n 'ފެބްރުއަރީ',\n 'މާރިޗު',\n 'އޭޕްރީލު',\n 'މޭ',\n 'ޖޫން',\n 'ޖުލައި',\n 'އޯގަސްޓު',\n 'ސެޕްޓެމްބަރު',\n 'އޮކްޓޯބަރު',\n 'ނޮވެމްބަރު',\n 'ޑިސެމްބަރު',\n ],\n weekdays = [\n 'އާދިއްތަ',\n 'ހޯމަ',\n 'އަންގާރަ',\n 'ބުދަ',\n 'ބުރާސްފަތި',\n 'ހުކުރު',\n 'ހޮނިހިރު',\n ];\n\n var dv = moment.defineLocale('dv', {\n months: months,\n monthsShort: months,\n weekdays: weekdays,\n weekdaysShort: weekdays,\n weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/M/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /މކ|މފ/,\n isPM: function (input) {\n return 'މފ' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'މކ';\n } else {\n return 'މފ';\n }\n },\n calendar: {\n sameDay: '[މިއަދު] LT',\n nextDay: '[މާދަމާ] LT',\n nextWeek: 'dddd LT',\n lastDay: '[އިއްޔެ] LT',\n lastWeek: '[ފާއިތުވި] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ތެރޭގައި %s',\n past: 'ކުރިން %s',\n s: 'ސިކުންތުކޮޅެއް',\n ss: 'd% ސިކުންތު',\n m: 'މިނިޓެއް',\n mm: 'މިނިޓު %d',\n h: 'ގަޑިއިރެއް',\n hh: 'ގަޑިއިރު %d',\n d: 'ދުވަހެއް',\n dd: 'ދުވަސް %d',\n M: 'މަހެއް',\n MM: 'މަސް %d',\n y: 'އަހަރެއް',\n yy: 'އަހަރު %d',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 7, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return dv;\n\n})));\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw new $TypeError(tryToString(argument) + ' is not a function');\n};\n","'use strict';\nvar isRegExp = require('../internals/is-regexp');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw new $TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\nvar $ = require('../internals/export');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar fails = require('../internals/fails');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar toObject = require('../internals/to-object');\n\n// V8 ~ Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FORCED = !NATIVE_SYMBOL || fails(function () { getOwnPropertySymbolsModule.f(1); });\n\n// `Object.getOwnPropertySymbols` method\n// https://tc39.es/ecma262/#sec-object.getownpropertysymbols\n$({ target: 'Object', stat: true, forced: FORCED }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n var $getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return $getOwnPropertySymbols ? $getOwnPropertySymbols(toObject(it)) : [];\n }\n});\n","/**\n * Copyright 2016 Google Inc. All Rights Reserved.\n *\n * Licensed under the W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE.\n *\n * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n *\n */\n(function() {\n'use strict';\n\n// Exit early if we're not running in a browser.\nif (typeof window !== 'object') {\n return;\n}\n\n// Exit early if all IntersectionObserver and IntersectionObserverEntry\n// features are natively supported.\nif ('IntersectionObserver' in window &&\n 'IntersectionObserverEntry' in window &&\n 'intersectionRatio' in window.IntersectionObserverEntry.prototype) {\n\n // Minimal polyfill for Edge 15's lack of `isIntersecting`\n // See: https://github.com/w3c/IntersectionObserver/issues/211\n if (!('isIntersecting' in window.IntersectionObserverEntry.prototype)) {\n Object.defineProperty(window.IntersectionObserverEntry.prototype,\n 'isIntersecting', {\n get: function () {\n return this.intersectionRatio > 0;\n }\n });\n }\n return;\n}\n\n\n/**\n * A local reference to the document.\n */\nvar document = window.document;\n\n\n/**\n * An IntersectionObserver registry. This registry exists to hold a strong\n * reference to IntersectionObserver instances currently observing a target\n * element. Without this registry, instances without another reference may be\n * garbage collected.\n */\nvar registry = [];\n\n/**\n * The signal updater for cross-origin intersection. When not null, it means\n * that the polyfill is configured to work in a cross-origin mode.\n * @type {function(DOMRect|ClientRect, DOMRect|ClientRect)}\n */\nvar crossOriginUpdater = null;\n\n/**\n * The current cross-origin intersection. Only used in the cross-origin mode.\n * @type {DOMRect|ClientRect}\n */\nvar crossOriginRect = null;\n\n\n/**\n * Creates the global IntersectionObserverEntry constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-entry\n * @param {Object} entry A dictionary of instance properties.\n * @constructor\n */\nfunction IntersectionObserverEntry(entry) {\n this.time = entry.time;\n this.target = entry.target;\n this.rootBounds = ensureDOMRect(entry.rootBounds);\n this.boundingClientRect = ensureDOMRect(entry.boundingClientRect);\n this.intersectionRect = ensureDOMRect(entry.intersectionRect || getEmptyRect());\n this.isIntersecting = !!entry.intersectionRect;\n\n // Calculates the intersection ratio.\n var targetRect = this.boundingClientRect;\n var targetArea = targetRect.width * targetRect.height;\n var intersectionRect = this.intersectionRect;\n var intersectionArea = intersectionRect.width * intersectionRect.height;\n\n // Sets intersection ratio.\n if (targetArea) {\n // Round the intersection ratio to avoid floating point math issues:\n // https://github.com/w3c/IntersectionObserver/issues/324\n this.intersectionRatio = Number((intersectionArea / targetArea).toFixed(4));\n } else {\n // If area is zero and is intersecting, sets to 1, otherwise to 0\n this.intersectionRatio = this.isIntersecting ? 1 : 0;\n }\n}\n\n\n/**\n * Creates the global IntersectionObserver constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-interface\n * @param {Function} callback The function to be invoked after intersection\n * changes have queued. The function is not invoked if the queue has\n * been emptied by calling the `takeRecords` method.\n * @param {Object=} opt_options Optional configuration options.\n * @constructor\n */\nfunction IntersectionObserver(callback, opt_options) {\n\n var options = opt_options || {};\n\n if (typeof callback != 'function') {\n throw new Error('callback must be a function');\n }\n\n if (options.root && options.root.nodeType != 1) {\n throw new Error('root must be an Element');\n }\n\n // Binds and throttles `this._checkForIntersections`.\n this._checkForIntersections = throttle(\n this._checkForIntersections.bind(this), this.THROTTLE_TIMEOUT);\n\n // Private properties.\n this._callback = callback;\n this._observationTargets = [];\n this._queuedEntries = [];\n this._rootMarginValues = this._parseRootMargin(options.rootMargin);\n\n // Public properties.\n this.thresholds = this._initThresholds(options.threshold);\n this.root = options.root || null;\n this.rootMargin = this._rootMarginValues.map(function(margin) {\n return margin.value + margin.unit;\n }).join(' ');\n\n /** @private @const {!Array} */\n this._monitoringDocuments = [];\n /** @private @const {!Array} */\n this._monitoringUnsubscribes = [];\n}\n\n\n/**\n * The minimum interval within which the document will be checked for\n * intersection changes.\n */\nIntersectionObserver.prototype.THROTTLE_TIMEOUT = 100;\n\n\n/**\n * The frequency in which the polyfill polls for intersection changes.\n * this can be updated on a per instance basis and must be set prior to\n * calling `observe` on the first target.\n */\nIntersectionObserver.prototype.POLL_INTERVAL = null;\n\n/**\n * Use a mutation observer on the root element\n * to detect intersection changes.\n */\nIntersectionObserver.prototype.USE_MUTATION_OBSERVER = true;\n\n\n/**\n * Sets up the polyfill in the cross-origin mode. The result is the\n * updater function that accepts two arguments: `boundingClientRect` and\n * `intersectionRect` - just as these fields would be available to the\n * parent via `IntersectionObserverEntry`. This function should be called\n * each time the iframe receives intersection information from the parent\n * window, e.g. via messaging.\n * @return {function(DOMRect|ClientRect, DOMRect|ClientRect)}\n */\nIntersectionObserver._setupCrossOriginUpdater = function() {\n if (!crossOriginUpdater) {\n /**\n * @param {DOMRect|ClientRect} boundingClientRect\n * @param {DOMRect|ClientRect} intersectionRect\n */\n crossOriginUpdater = function(boundingClientRect, intersectionRect) {\n if (!boundingClientRect || !intersectionRect) {\n crossOriginRect = getEmptyRect();\n } else {\n crossOriginRect = convertFromParentRect(boundingClientRect, intersectionRect);\n }\n registry.forEach(function(observer) {\n observer._checkForIntersections();\n });\n };\n }\n return crossOriginUpdater;\n};\n\n\n/**\n * Resets the cross-origin mode.\n */\nIntersectionObserver._resetCrossOriginUpdater = function() {\n crossOriginUpdater = null;\n crossOriginRect = null;\n};\n\n\n/**\n * Starts observing a target element for intersection changes based on\n * the thresholds values.\n * @param {Element} target The DOM element to observe.\n */\nIntersectionObserver.prototype.observe = function(target) {\n var isTargetAlreadyObserved = this._observationTargets.some(function(item) {\n return item.element == target;\n });\n\n if (isTargetAlreadyObserved) {\n return;\n }\n\n if (!(target && target.nodeType == 1)) {\n throw new Error('target must be an Element');\n }\n\n this._registerInstance();\n this._observationTargets.push({element: target, entry: null});\n this._monitorIntersections(target.ownerDocument);\n this._checkForIntersections();\n};\n\n\n/**\n * Stops observing a target element for intersection changes.\n * @param {Element} target The DOM element to observe.\n */\nIntersectionObserver.prototype.unobserve = function(target) {\n this._observationTargets =\n this._observationTargets.filter(function(item) {\n return item.element != target;\n });\n this._unmonitorIntersections(target.ownerDocument);\n if (this._observationTargets.length == 0) {\n this._unregisterInstance();\n }\n};\n\n\n/**\n * Stops observing all target elements for intersection changes.\n */\nIntersectionObserver.prototype.disconnect = function() {\n this._observationTargets = [];\n this._unmonitorAllIntersections();\n this._unregisterInstance();\n};\n\n\n/**\n * Returns any queue entries that have not yet been reported to the\n * callback and clears the queue. This can be used in conjunction with the\n * callback to obtain the absolute most up-to-date intersection information.\n * @return {Array} The currently queued entries.\n */\nIntersectionObserver.prototype.takeRecords = function() {\n var records = this._queuedEntries.slice();\n this._queuedEntries = [];\n return records;\n};\n\n\n/**\n * Accepts the threshold value from the user configuration object and\n * returns a sorted array of unique threshold values. If a value is not\n * between 0 and 1 and error is thrown.\n * @private\n * @param {Array|number=} opt_threshold An optional threshold value or\n * a list of threshold values, defaulting to [0].\n * @return {Array} A sorted list of unique and valid threshold values.\n */\nIntersectionObserver.prototype._initThresholds = function(opt_threshold) {\n var threshold = opt_threshold || [0];\n if (!Array.isArray(threshold)) threshold = [threshold];\n\n return threshold.sort().filter(function(t, i, a) {\n if (typeof t != 'number' || isNaN(t) || t < 0 || t > 1) {\n throw new Error('threshold must be a number between 0 and 1 inclusively');\n }\n return t !== a[i - 1];\n });\n};\n\n\n/**\n * Accepts the rootMargin value from the user configuration object\n * and returns an array of the four margin values as an object containing\n * the value and unit properties. If any of the values are not properly\n * formatted or use a unit other than px or %, and error is thrown.\n * @private\n * @param {string=} opt_rootMargin An optional rootMargin value,\n * defaulting to '0px'.\n * @return {Array \n