vue-instantsearch 4.22.8 → 4.23.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +5 -5
- package/src/__tests__/common-connectors.test.js +6 -0
- package/src/__tests__/common-widgets.test.js +6 -0
- package/src/components/Menu.vue +3 -3
- package/vue2/cjs/index.js +1 -1
- package/vue2/cjs/index.js.map +1 -1
- package/vue2/es/package.json.js +1 -1
- package/vue2/es/src/components/Menu.vue.js +1 -1
- package/vue2/umd/index.js +1 -1
- package/vue2/umd/index.js.map +1 -1
- package/vue3/cjs/index.js +1 -1
- package/vue3/cjs/index.js.map +1 -1
- package/vue3/es/package.json.js +1 -1
- package/vue3/es/src/components/Menu.vue.js +1 -1
- package/vue3/es/src/components/Menu.vue_vue&type=script&lang.js.map +1 -1
- package/vue3/es/src/components/{Menu.vue_vue&type=template&id=524bff96&lang.js → Menu.vue_vue&type=template&id=5a1eefa4&lang.js} +1 -1
- package/vue3/es/src/components/Menu.vue_vue&type=template&id=5a1eefa4&lang.js.map +1 -0
- package/vue3/umd/index.js +1 -1
- package/vue3/umd/index.js.map +1 -1
- package/vue3/es/src/components/Menu.vue_vue&type=template&id=524bff96&lang.js.map +0 -1
package/vue2/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/util/suit.js","../../src/mixins/suit.js","../../src/util/polyfills.js","../../src/util/vue-compat/index-vue2.js","../../src/util/warn.js","../../src/mixins/widget.js","../../src/mixins/panel.js","../../src/components/Configure.js","../../src/components/ConfigureRelatedItems.js","../../src/util/unescape.js","../../src/util/parseAlgoliaHit.js","../../src/util/vue-compat/Highlighter/Highlighter-vue2.vue","../../src/components/Hits.js","../../src/components/Index.js","../../src/util/createInstantSearchComponent.js","../../src/components/InstantSearch.js","../../src/components/InstantSearchSsr.js","../../src/components/QueryRuleContext.js","../../src/components/DynamicWidgets.js","../../src/components/ExperimentalDynamicWidgets.js","../../src/plugin.js","../../src/util/createServerRootMixin.js"],"sourcesContent":["/**\n * Create class names like ais-widgetName-element--modifier\n *\n * @param {string} widgetName first part\n * @param {string} element part separated by -\n * @param {string} modifier final part, separated by --\n *\n * @returns {string} the composed class name\n */\nexport default function suit(widgetName, element, modifier) {\n if (!widgetName) {\n throw new Error('You need to provide `widgetName` in your data');\n }\n\n const elements = [`ais-${widgetName}`];\n\n if (element) {\n elements.push(`-${element}`);\n }\n\n if (modifier) {\n elements.push(`--${modifier}`);\n }\n\n return elements.join('');\n}\n","import suit from '../util/suit';\n\nexport const createSuitMixin = ({ name }) => ({\n props: {\n classNames: {\n type: Object,\n default: undefined,\n },\n },\n methods: {\n suit(element, modifier) {\n const className = suit(name, element, modifier);\n const userClassName = this.classNames && this.classNames[className];\n if (userClassName) {\n return [className, userClassName].join(' ');\n }\n return className;\n },\n },\n});\n","/* eslint-disable eslint-comments/no-unlimited-disable */\n/* eslint-disable */\n\n// source: @babel/plugin-proposal-object-rest-spread@7.2.0\n// prettier-ignore\nexport function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\n// source: @babel/plugin-proposal-object-rest-spread@7.2.0\n// prettier-ignore\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","import Vue from 'vue';\n\nconst isVue2 = true;\nconst isVue3 = false;\nconst Vue2 = Vue;\nconst version = Vue.version;\n\nexport { Vue, Vue2, isVue2, isVue3, version };\n\nconst augmentCreateElement =\n (createElement) =>\n (tag, propsWithClassName = {}, ...children) => {\n const { className, ...props } = propsWithClassName;\n\n if (typeof tag === 'function') {\n return tag(\n Object.assign(props, {\n class: className || props.class,\n children: children.length > 0 ? children : undefined,\n })\n );\n }\n\n if (typeof tag === 'string') {\n const { on, style, attrs, domProps, nativeOn, key, ...rest } = props;\n return createElement(\n tag,\n {\n class: className || props.class,\n attrs: attrs || rest,\n on,\n nativeOn,\n style,\n domProps,\n key,\n },\n children\n );\n }\n\n return createElement(\n tag,\n Object.assign(props, { class: className || props.class }),\n children\n );\n };\n\nexport function renderCompat(fn) {\n return function (createElement) {\n return fn.call(this, augmentCreateElement(createElement));\n };\n}\n\nexport function getDefaultSlot(component) {\n return component.$slots.default;\n}\n\nexport function getScopedSlot(component, name) {\n return (component.$scopedSlots || {})[name];\n}\n\n// Vue3-only APIs\nexport const computed = undefined;\nexport const createApp = undefined;\nexport const createSSRApp = undefined;\nexport const createRef = undefined;\nexport const customRef = undefined;\nexport const defineAsyncComponent = undefined;\nexport const defineComponent = undefined;\nexport const del = undefined;\nexport const getCurrentInstance = undefined;\nexport const h = undefined;\nexport const inject = undefined;\nexport const isRaw = undefined;\nexport const isReactive = undefined;\nexport const isReadonly = undefined;\nexport const isRef = undefined;\nexport const markRaw = undefined;\nexport const nextTick = undefined;\nexport const onActivated = undefined;\nexport const onBeforeMount = undefined;\nexport const onBeforeUnmount = undefined;\nexport const onBeforeUpdate = undefined;\nexport const onDeactivated = undefined;\nexport const onErrorCaptured = undefined;\nexport const onMounted = undefined;\nexport const onServerPrefetch = undefined;\nexport const onUnmounted = undefined;\nexport const onUpdated = undefined;\nexport const provide = undefined;\nexport const proxyRefs = undefined;\nexport const reactive = undefined;\nexport const readonly = undefined;\nexport const ref = undefined;\nexport const set = undefined;\nexport const shallowReactive = undefined;\nexport const shallowReadonly = undefined;\nexport const shallowRef = undefined;\nexport const toRaw = undefined;\nexport const toRef = undefined;\nexport const toRefs = undefined;\nexport const triggerRef = undefined;\nexport const unref = undefined;\nexport const useCSSModule = undefined;\nexport const useCssModule = undefined;\nexport const warn = undefined;\nexport const watch = undefined;\nexport const watchEffect = undefined;\n","const cache = new Set();\n\nexport function warn(message) {\n if (cache.has(message)) return;\n cache.add(message);\n // eslint-disable-next-line no-console\n console.warn(message);\n}\n","import { _objectSpread } from '../util/polyfills';\nimport { isVue3 } from '../util/vue-compat';\nimport { warn } from '../util/warn';\n\nexport const createWidgetMixin = (\n { connector } = {},\n additionalProperties = {}\n) => ({\n inject: {\n instantSearchInstance: {\n from: '$_ais_instantSearchInstance',\n default() {\n const tag = this.$options._componentTag;\n throw new TypeError(\n `It looks like you forgot to wrap your Algolia search component \"<${tag}>\" inside of an \"<ais-instant-search>\" component.`\n );\n },\n },\n getParentIndex: {\n from: '$_ais_getParentIndex',\n default() {\n return () => this.instantSearchInstance.mainIndex;\n },\n },\n },\n data() {\n return {\n state: null,\n };\n },\n created() {\n if (typeof connector === 'function') {\n this.factory = connector(this.updateState, () => {});\n this.widget = _objectSpread(\n this.factory(this.widgetParams),\n additionalProperties\n );\n this.getParentIndex().addWidgets([this.widget]);\n\n if (\n this.instantSearchInstance._initialResults &&\n !this.instantSearchInstance.started\n ) {\n if (typeof this.instantSearchInstance.__forceRender !== 'function') {\n throw new Error(\n 'You are using server side rendering with <ais-instant-search> instead of <ais-instant-search-ssr>.'\n );\n }\n this.instantSearchInstance.__forceRender(\n this.widget,\n this.getParentIndex()\n );\n }\n } else if (connector !== true) {\n warn(\n `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`\n );\n }\n },\n [isVue3 ? 'beforeUnmount' : 'beforeDestroy']() {\n if (this.widget) {\n this.getParentIndex().removeWidgets([this.widget]);\n }\n },\n watch: {\n widgetParams: {\n handler(nextWidgetParams) {\n this.state = null;\n this.getParentIndex().removeWidgets([this.widget]);\n this.widget = _objectSpread(\n this.factory(nextWidgetParams),\n additionalProperties\n );\n this.getParentIndex().addWidgets([this.widget]);\n },\n deep: true,\n },\n },\n methods: {\n updateState(state = {}, isFirstRender) {\n if (!isFirstRender) {\n // Avoid updating the state on first render\n // otherwise there will be a flash of placeholder data\n this.state = state;\n }\n },\n },\n});\n","import mitt from 'mitt';\n\nimport { isVue3 } from '../util/vue-compat';\n\nexport const PANEL_EMITTER_NAMESPACE = 'instantSearchPanelEmitter';\nexport const PANEL_CHANGE_EVENT = 'PANEL_CHANGE_EVENT';\n\nexport const createPanelProviderMixin = () => ({\n props: {\n emitter: {\n type: Object,\n required: false,\n default() {\n return mitt();\n },\n },\n },\n provide() {\n return {\n [PANEL_EMITTER_NAMESPACE]: this.emitter,\n };\n },\n data() {\n return {\n canRefine: true,\n };\n },\n created() {\n this.emitter.on(PANEL_CHANGE_EVENT, (value) => {\n this.updateCanRefine(value);\n });\n },\n [isVue3 ? 'beforeUnmount' : 'beforeDestroy']() {\n this.emitter.all.clear();\n },\n methods: {\n updateCanRefine(value) {\n this.canRefine = value;\n },\n },\n});\n\nexport const createPanelConsumerMixin = ({\n mapStateToCanRefine = (state) => Boolean(state.canRefine),\n} = {}) => ({\n inject: {\n emitter: {\n from: PANEL_EMITTER_NAMESPACE,\n default() {\n return {\n emit: () => {},\n };\n },\n },\n },\n data() {\n return {\n state: null,\n hasAlreadyEmitted: false,\n };\n },\n watch: {\n state: {\n immediate: true,\n handler(nextState, previousState) {\n if (!nextState) {\n return;\n }\n\n const previousCanRefine = mapStateToCanRefine(previousState || {});\n const nextCanRefine = mapStateToCanRefine(nextState);\n\n if (!this.hasAlreadyEmitted || previousCanRefine !== nextCanRefine) {\n this.emitter.emit(PANEL_CHANGE_EVENT, nextCanRefine);\n this.hasAlreadyEmitted = true;\n }\n },\n },\n },\n});\n","import { connectConfigure } from 'instantsearch.js/es/connectors/index.umd';\n\nimport { createSuitMixin } from '../mixins/suit';\nimport { createWidgetMixin } from '../mixins/widget';\nimport { isVue3, renderCompat } from '../util/vue-compat';\n\nexport default {\n inheritAttrs: false,\n name: 'AisConfigure',\n mixins: [\n createSuitMixin({ name: 'Configure' }),\n createWidgetMixin(\n {\n connector: connectConfigure,\n },\n {\n $$widgetType: 'ais.configure',\n }\n ),\n ],\n computed: {\n widgetParams() {\n return {\n searchParameters: Object.assign({}, this.$attrs),\n };\n },\n },\n render: renderCompat(function (h) {\n const slot = isVue3 ? this.$slots.default : this.$scopedSlots.default;\n\n if (!this.state || !slot) {\n return null;\n }\n\n return h(\n 'div',\n {\n class: this.suit(),\n },\n [\n slot({\n refine: this.state.refine,\n searchParameters: this.state.widgetParams.searchParameters,\n }),\n ]\n );\n }),\n};\n","import { EXPERIMENTAL_connectConfigureRelatedItems } from 'instantsearch.js/es/connectors/index.umd';\n\nimport { createWidgetMixin } from '../mixins/widget';\n\nexport default {\n inheritAttrs: false,\n name: 'AisExperimentalConfigureRelatedItems',\n mixins: [\n createWidgetMixin(\n {\n connector: EXPERIMENTAL_connectConfigureRelatedItems,\n },\n {\n $$widgetType: 'ais.configureRelatedItems',\n }\n ),\n ],\n props: {\n hit: {\n type: Object,\n required: true,\n },\n matchingPatterns: {\n type: Object,\n required: true,\n },\n transformSearchParameters: {\n type: Function,\n required: false,\n },\n },\n computed: {\n widgetParams() {\n return {\n hit: this.hit,\n matchingPatterns: this.matchingPatterns,\n transformSearchParameters: this.transformSearchParameters,\n };\n },\n },\n render() {\n return null;\n },\n};\n","/**\n * This implementation is taken from Lodash implementation.\n * See: https://github.com/lodash/lodash/blob/4.17.11-npm/unescape.js\n */\n\n/** Used to map HTML entities to characters. */\nconst htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\",\n};\n\n/** Used to match HTML entities and HTML characters. */\nconst reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g;\nconst reHasEscapedHtml = RegExp(reEscapedHtml.source);\n\n/**\n * The inverse of `_.escape`; this method converts the HTML entities\n * `&`, `<`, `>`, `"`, and `'` in `string` to\n * their corresponding characters.\n *\n * **Note:** No other HTML entities are unescaped. To unescape additional\n * HTML entities use a third-party library like [_he_](https://mths.be/he).\n *\n * @static\n * @memberOf _\n * @since 0.6.0\n * @category String\n * @param {string} [string=''] The string to unescape.\n * @returns {string} Returns the unescaped string.\n * @example\n *\n * _.unescape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\nexport function unescape(string) {\n return string && reHasEscapedHtml.test(string)\n ? string.replace(reEscapedHtml, (character) => htmlUnescapes[character])\n : string;\n}\n","// copied from React InstantSearch\nimport { getPropertyByPath } from 'instantsearch.js/es/lib/utils';\n\nimport { unescape } from '../util/unescape';\n\nconst TAG_PLACEHOLDER = {\n highlightPreTag: '__ais-highlight__',\n highlightPostTag: '__/ais-highlight__',\n};\n\n/**\n * Parses an highlighted attribute into an array of objects with the string value, and\n * a boolean that indicated if this part is highlighted.\n *\n * @param {string} preTag - string used to identify the start of an highlighted value\n * @param {string} postTag - string used to identify the end of an highlighted value\n * @param {string} highlightedValue - highlighted attribute as returned by Algolia highlight feature\n * @return {object[]} - An array of {value: string, isHighlighted: boolean}.\n */\nfunction parseHighlightedAttribute({ preTag, postTag, highlightedValue = '' }) {\n const splitByPreTag = highlightedValue.split(preTag);\n const firstValue = splitByPreTag.shift();\n const elements =\n firstValue === '' ? [] : [{ value: firstValue, isHighlighted: false }];\n\n if (postTag === preTag) {\n let isHighlighted = true;\n splitByPreTag.forEach((split) => {\n elements.push({ value: split, isHighlighted });\n isHighlighted = !isHighlighted;\n });\n } else {\n splitByPreTag.forEach((split) => {\n const splitByPostTag = split.split(postTag);\n\n elements.push({\n value: splitByPostTag[0],\n isHighlighted: true,\n });\n\n if (splitByPostTag[1] !== '') {\n elements.push({\n // Vue removes nodes which are just a single space (vuejs/vue#9208),\n // we replace this by two spaces, which does not have an impact,\n // unless someone would have `white-space: pre` on the highlights\n value: splitByPostTag[1] === ' ' ? ' ' : splitByPostTag[1],\n isHighlighted: false,\n });\n }\n });\n }\n\n return elements;\n}\n\n/**\n * Find an highlighted attribute given an `attribute` and an `highlightProperty`, parses it,\n * and provided an array of objects with the string value and a boolean if this\n * value is highlighted.\n *\n * In order to use this feature, highlight must be activated in the configuration of\n * the index. The `preTag` and `postTag` attributes are respectively highlightPreTag and\n * highlightPostTag in Algolia configuration.\n *\n * @param {string} preTag - string used to identify the start of an highlighted value\n * @param {string} postTag - string used to identify the end of an highlighted value\n * @param {string} highlightProperty - the property that contains the highlight structure in the results\n * @param {string} attribute - the highlighted attribute to look for\n * @param {object} hit - the actual hit returned by Algolia.\n * @return {object[]} - An array of {value: string, isHighlighted: boolean}.\n */\nexport function parseAlgoliaHit({\n preTag = TAG_PLACEHOLDER.highlightPreTag,\n postTag = TAG_PLACEHOLDER.highlightPostTag,\n highlightProperty,\n attribute,\n hit,\n}) {\n if (!hit) throw new Error('`hit`, the matching record, must be provided');\n\n const highlightObject =\n getPropertyByPath(hit[highlightProperty], attribute) || {};\n\n if (Array.isArray(highlightObject)) {\n return highlightObject.map((item) =>\n parseHighlightedAttribute({\n preTag,\n postTag,\n highlightedValue: unescape(item.value),\n })\n );\n }\n\n return parseHighlightedAttribute({\n preTag,\n postTag,\n highlightedValue: unescape(highlightObject.value),\n });\n}\n","<template>\n <span :class=\"suit()\">\n <component\n v-for=\"({ value, isHighlighted }, index) in parsedHighlights\"\n :class=\"[isHighlighted && suit('highlighted')]\"\n :key=\"index\"\n :is=\"isHighlighted ? highlightedTagName : TextNode\"\n >{{ value }}</component\n >\n </span>\n</template>\n\n<script>\nimport { parseAlgoliaHit } from '../../parseAlgoliaHit';\n\nconst TextNode = {\n render() {\n return this.$slots.default;\n },\n};\n\nexport default {\n name: 'AisHighlighter',\n props: {\n hit: {\n type: Object,\n required: true,\n },\n attribute: {\n type: String,\n required: true,\n },\n highlightedTagName: {\n type: String,\n default: 'mark',\n },\n suit: {\n type: Function,\n required: true,\n },\n highlightProperty: {\n type: String,\n required: true,\n },\n preTag: {\n type: String,\n required: true,\n },\n postTag: {\n type: String,\n required: true,\n },\n },\n data() {\n return { TextNode };\n },\n computed: {\n parsedHighlights() {\n return parseAlgoliaHit({\n attribute: this.attribute,\n hit: this.hit,\n highlightProperty: this.highlightProperty,\n preTag: this.preTag,\n postTag: this.postTag,\n });\n },\n },\n};\n</script>\n","import { createHitsComponent } from 'instantsearch-ui-components';\nimport { connectHitsWithInsights } from 'instantsearch.js/es/connectors/index.umd';\n\nimport { createSuitMixin } from '../mixins/suit';\nimport { createWidgetMixin } from '../mixins/widget';\nimport { getScopedSlot, renderCompat } from '../util/vue-compat';\n\nexport default {\n name: 'AisHits',\n mixins: [\n createWidgetMixin(\n {\n connector: connectHitsWithInsights,\n },\n {\n $$widgetType: 'ais.hits',\n }\n ),\n createSuitMixin({ name: 'Hits' }),\n ],\n props: {\n showBanner: {\n type: Boolean,\n default: true,\n },\n escapeHTML: {\n type: Boolean,\n default: true,\n },\n transformItems: {\n type: Function,\n default: undefined,\n },\n },\n computed: {\n widgetParams() {\n return {\n showBanner: this.showBanner,\n escapeHTML: this.escapeHTML,\n transformItems: this.transformItems,\n };\n },\n },\n render: renderCompat(function (h) {\n if (!this.state) {\n return null;\n }\n\n const defaultSlot = getScopedSlot(this, 'default');\n const itemSlot = getScopedSlot(this, 'item');\n const bannerSlot = getScopedSlot(this, 'banner');\n\n const itemComponent = ({\n hit,\n index,\n onClick,\n onAuxClick,\n // We don't want to pass the Preact key as a prop\n key: _key,\n ...rootProps\n }) => {\n return h(\n 'li',\n {\n key: hit.objectID,\n attrs: rootProps,\n on: {\n click: onClick,\n auxclick: onAuxClick,\n },\n },\n [\n (itemSlot &&\n itemSlot({\n item: hit,\n index,\n insights: this.state.insights,\n sendEvent: this.state.sendEvent,\n })) ||\n `objectID: ${hit.objectID}, index: ${index}`,\n ]\n );\n };\n\n // We only want to render the default slot\n // if no other slots are defined\n if (!itemSlot && !bannerSlot && defaultSlot) {\n return h(\n 'div',\n {\n attrs: {\n class: this.suit(),\n },\n },\n [\n defaultSlot({\n banner: this.state.banner,\n items: this.state.items,\n insights: this.state.insights,\n sendEvent: this.state.sendEvent,\n }),\n ]\n );\n }\n\n return h(createHitsComponent({ createElement: h }), {\n hits: this.state.items,\n itemComponent,\n banner: this.showBanner ? this.state.banner : undefined,\n bannerComponent: bannerSlot,\n sendEvent: this.state.sendEvent,\n classNames: this.classNames && {\n root: this.classNames['ais-Hits'],\n list: this.classNames['ais-Hits-list'],\n item: this.classNames['ais-Hits-item'],\n bannerRoot: this.classNames['ais-Hits-banner'],\n bannerImage: this.classNames['ais-Hits-banner-image'],\n bannerLink: this.classNames['ais-Hits-banner-link'],\n },\n });\n }),\n};\n","import indexWidget from 'instantsearch.js/es/widgets/index/index';\n\nimport { createSuitMixin } from '../mixins/suit';\nimport { createWidgetMixin } from '../mixins/widget';\nimport { renderCompat, getDefaultSlot } from '../util/vue-compat';\n\n// wrapped in a dummy function, since indexWidget doesn't render\nconst connectIndex = () => indexWidget;\n\nexport default {\n name: 'AisIndex',\n mixins: [\n createSuitMixin({ name: 'Index' }),\n createWidgetMixin(\n { connector: connectIndex },\n {\n $$widgetType: 'ais.index',\n }\n ),\n ],\n provide() {\n return {\n // The widget is created & registered by widgetMixin, accessor is needed\n // because provide is not reactive.\n $_ais_getParentIndex: () => this.widget,\n };\n },\n props: {\n indexName: {\n type: String,\n required: true,\n },\n indexId: {\n type: String,\n required: false,\n },\n },\n render: renderCompat(function (h) {\n return h('div', {}, getDefaultSlot(this));\n }),\n computed: {\n widgetParams() {\n return {\n indexName: this.indexName,\n indexId: this.indexId,\n };\n },\n },\n};\n","import { INSTANTSEARCH_FUTURE_DEFAULTS } from 'instantsearch.js/es/lib/InstantSearch';\n\nimport { version } from '../../package.json'; // rollup does pick only what needed from json\nimport { createSuitMixin } from '../mixins/suit';\n\nimport { _objectSpread } from './polyfills';\nimport { isVue3, version as vueVersion } from './vue-compat';\nimport { warn } from './warn';\n\nexport const createInstantSearchComponent = (component) =>\n _objectSpread(\n {\n mixins: [createSuitMixin({ name: 'InstantSearch' })],\n provide() {\n return {\n $_ais_instantSearchInstance: this.instantSearchInstance,\n };\n },\n watch: {\n searchClient(searchClient) {\n warn(\n false,\n 'The `search-client` prop of `<ais-instant-search>` changed between renders, which may cause more search requests than necessary. If this is an unwanted behavior, please provide a stable reference: https://www.algolia.com/doc/api-reference/widgets/instantsearch/vue/#widget-param-search-client'\n );\n\n this.instantSearchInstance.helper.setClient(searchClient).search();\n },\n indexName(indexName) {\n this.instantSearchInstance.helper.setIndex(indexName || '').search();\n },\n compositionID(compositionID) {\n this.instantSearchInstance.helper\n .setIndex(compositionID || '')\n .search();\n },\n stalledSearchDelay(stalledSearchDelay) {\n // private InstantSearch.js API:\n this.instantSearchInstance._stalledSearchDelay = stalledSearchDelay;\n },\n routing() {\n throw new Error(\n 'routing configuration can not be changed dynamically at this point.' +\n '\\n\\n' +\n 'Please 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'\n );\n },\n onStateChange() {\n throw new Error(\n 'onStateChange configuration can not be changed dynamically at this point.' +\n '\\n\\n' +\n 'Please 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'\n );\n },\n searchFunction(searchFunction) {\n // private InstantSearch.js API:\n this.instantSearchInstance._searchFunction = searchFunction;\n },\n middlewares: {\n immediate: true,\n handler(next, prev) {\n (prev || [])\n .filter((middleware) => (next || []).indexOf(middleware) === -1)\n .forEach((middlewareToRemove) => {\n this.instantSearchInstance.unuse(middlewareToRemove);\n });\n\n (next || [])\n .filter((middleware) => (prev || []).indexOf(middleware) === -1)\n .forEach((middlewareToAdd) => {\n this.instantSearchInstance.use(middlewareToAdd);\n });\n },\n },\n future(future) {\n this.instantSearchInstance.future = Object.assign(\n INSTANTSEARCH_FUTURE_DEFAULTS,\n future\n );\n },\n },\n created() {\n const searchClient = this.instantSearchInstance.client;\n if (typeof searchClient.addAlgoliaAgent === 'function') {\n searchClient.addAlgoliaAgent(`Vue (${vueVersion})`);\n searchClient.addAlgoliaAgent(`Vue InstantSearch (${version})`);\n }\n },\n mounted() {\n // from the documentation: https://vuejs.org/v2/api/#mounted\n // \"Note that mounted does not guarantee that all child components have also been mounted. If you want to\n // wait until the entire view has been rendered, you can use vm.$nextTick inside of mounted\"\n this.$nextTick(() => {\n if (!this.instantSearchInstance.started) {\n this.instantSearchInstance.start();\n }\n });\n },\n [isVue3 ? 'beforeUnmount' : 'beforeDestroy']() {\n if (this.instantSearchInstance.started) {\n this.instantSearchInstance.dispose();\n }\n\n // a hydrated instance will no longer be hydrated once disposed, and starts from scratch\n this.instantSearchInstance.__initialSearchResults = undefined;\n },\n },\n component\n );\n","import instantsearch from 'instantsearch.js/es';\n\nimport { createInstantSearchComponent } from '../util/createInstantSearchComponent';\nimport { renderCompat, getDefaultSlot } from '../util/vue-compat';\nimport { warn } from '../util/warn';\n\nconst oldApiWarning = `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`;\n\nexport default createInstantSearchComponent({\n name: 'AisInstantSearch',\n props: {\n searchClient: {\n type: Object,\n required: true,\n },\n insightsClient: {\n type: Function,\n default: undefined,\n },\n indexName: {\n type: String,\n required: false,\n },\n compositionID: {\n type: String,\n required: false,\n },\n routing: {\n default: undefined,\n validator(value) {\n if (\n typeof value === 'boolean' ||\n (!value.router && !value.stateMapping)\n ) {\n warn(\n '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'\n );\n return false;\n }\n return true;\n },\n },\n insights: {\n default: undefined,\n validator(value) {\n return (\n typeof value === 'undefined' ||\n typeof value === 'boolean' ||\n typeof value === 'object'\n );\n },\n },\n stalledSearchDelay: {\n type: Number,\n default: undefined,\n },\n searchFunction: {\n type: Function,\n default: undefined,\n },\n onStateChange: {\n type: Function,\n default: undefined,\n },\n initialUiState: {\n type: Object,\n default: undefined,\n },\n apiKey: {\n type: String,\n default: undefined,\n validator(value) {\n if (value) {\n warn(oldApiWarning);\n }\n return false;\n },\n },\n appId: {\n type: String,\n default: undefined,\n validator(value) {\n if (value) {\n warn(oldApiWarning);\n }\n return false;\n },\n },\n middlewares: {\n type: Array,\n default: null,\n },\n future: {\n type: Object,\n default: undefined,\n },\n },\n data() {\n return {\n instantSearchInstance: instantsearch({\n searchClient: this.searchClient,\n insightsClient: this.insightsClient,\n insights: this.insights,\n indexName: this.indexName,\n compositionID: this.compositionID,\n routing: this.routing,\n stalledSearchDelay: this.stalledSearchDelay,\n searchFunction: this.searchFunction,\n onStateChange: this.onStateChange,\n initialUiState: this.initialUiState,\n future: this.future,\n }),\n };\n },\n render: renderCompat(function (h) {\n return h(\n 'div',\n {\n class: {\n [this.suit()]: true,\n [this.suit('', 'ssr')]: false,\n },\n },\n getDefaultSlot(this)\n );\n }),\n});\n","import { createInstantSearchComponent } from '../util/createInstantSearchComponent';\nimport { renderCompat, getDefaultSlot } from '../util/vue-compat';\n\nexport default createInstantSearchComponent({\n name: 'AisInstantSearchSsr',\n inject: {\n $_ais_ssrInstantSearchInstance: {\n default() {\n throw new Error('`createServerRootMixin` is required when using SSR.');\n },\n },\n },\n data() {\n return {\n instantSearchInstance: this.$_ais_ssrInstantSearchInstance,\n };\n },\n render: renderCompat(function (h) {\n return h(\n 'div',\n {\n class: {\n [this.suit()]: true,\n [this.suit('', 'ssr')]: true,\n },\n },\n getDefaultSlot(this)\n );\n }),\n});\n","import { connectQueryRules } from 'instantsearch.js/es/connectors/index.umd';\n\nimport { createSuitMixin } from '../mixins/suit';\nimport { createWidgetMixin } from '../mixins/widget';\n\nexport default {\n name: 'AisQueryRuleContext',\n mixins: [\n createSuitMixin({ name: 'QueryRuleContext' }),\n createWidgetMixin(\n {\n connector: connectQueryRules,\n },\n {\n $$widgetType: 'ais.queryRuleContext',\n }\n ),\n ],\n props: {\n trackedFilters: {\n type: Object,\n required: true,\n },\n transformRuleContexts: {\n type: Function,\n required: false,\n default: undefined,\n },\n },\n computed: {\n widgetParams() {\n return {\n trackedFilters: this.trackedFilters,\n transformRuleContexts: this.transformRuleContexts,\n };\n },\n },\n render() {\n return null;\n },\n};\n","import { connectDynamicWidgets } from 'instantsearch.js/es/connectors/index.umd';\n\nimport { createSuitMixin } from '../mixins/suit';\nimport { createWidgetMixin } from '../mixins/widget';\nimport { _objectSpread } from '../util/polyfills';\nimport { isVue3, renderCompat, getDefaultSlot } from '../util/vue-compat';\n\nfunction getWidgetAttribute(vnode) {\n const props = isVue3\n ? vnode.props\n : vnode.componentOptions && vnode.componentOptions.propsData;\n if (props) {\n if (props.attribute) {\n return props.attribute;\n }\n if (Array.isArray(props.attributes)) {\n return props.attributes[0];\n }\n }\n\n let children;\n if (isVue3) {\n children =\n vnode.children && vnode.children.default && vnode.children.default();\n } else {\n children =\n vnode.componentOptions && vnode.componentOptions.children\n ? vnode.componentOptions.children\n : vnode.children;\n }\n\n if (Array.isArray(children)) {\n // return first child with a truthy attribute\n return children.reduce(\n (acc, curr) => acc || getWidgetAttribute(curr),\n undefined\n );\n }\n\n return undefined;\n}\n\nexport default {\n name: 'AisDynamicWidgets',\n mixins: [\n createWidgetMixin(\n {\n connector: connectDynamicWidgets,\n },\n {\n $$widgetType: 'ais.dynamicWidgets',\n }\n ),\n createSuitMixin({ name: 'DynamicWidgets' }),\n ],\n props: {\n transformItems: {\n type: Function,\n default: undefined,\n },\n facets: {\n type: Array,\n default: undefined,\n },\n maxValuesPerFacet: {\n type: Number,\n default: undefined,\n },\n },\n render: renderCompat(function (h) {\n const components = new Map();\n\n (getDefaultSlot(this) || []).forEach((vnode) => {\n const attribute = getWidgetAttribute(vnode);\n if (attribute) {\n components.set(\n attribute,\n h('div', { key: attribute, class: [this.suit('widget')] }, [vnode])\n );\n }\n });\n\n // by default, render everything, but hidden so that the routing doesn't disappear\n if (!this.state) {\n const allComponents = [];\n components.forEach((component) => allComponents.push(component));\n\n return h(\n 'div',\n _objectSpread(\n {\n class: [this.suit()],\n },\n { attrs: { hidden: true } }\n ),\n allComponents\n );\n }\n\n return h(\n 'div',\n { class: [this.suit()] },\n this.state.attributesToRender.map((attribute) =>\n components.get(attribute)\n )\n );\n }),\n computed: {\n widgetParams() {\n return {\n transformItems: this.transformItems,\n facets: this.facets,\n maxValuesPerFacet: this.maxValuesPerFacet,\n // we do not pass \"widgets\" to the connector, since Vue is in charge of rendering\n widgets: [],\n };\n },\n },\n};\n","import { warn } from '../util/warn';\n\nimport AisDynamicWidgets from './DynamicWidgets';\n\n// @MAJOR remove this file\nexport default Object.assign({}, AisDynamicWidgets, {\n name: 'AisExperimentalDynamicWidgets',\n mounted() {\n warn('Use AisDynamicWidgets instead of AisExperimentalDynamicWidgets.');\n },\n});\n","/* eslint import/namespace: ['error', { allowComputed: true }]*/\n\nimport * as widgets from './widgets';\n\nexport const plugin = {\n install(localVue) {\n Object.keys(widgets).forEach((widgetName) => {\n localVue.component(widgets[widgetName].name, widgets[widgetName]);\n });\n },\n};\n","import instantsearch from 'instantsearch.js/es';\nimport {\n waitForResults,\n getInitialResults,\n} from 'instantsearch.js/es/lib/server';\n\nimport { isVue3, isVue2, Vue2, createSSRApp } from './vue-compat';\nimport { warn } from './warn';\n\nfunction defaultCloneComponent(componentInstance, { mixins = [] } = {}) {\n const options = {\n serverPrefetch: undefined,\n fetch: undefined,\n _base: undefined,\n name: 'ais-ssr-root-component',\n };\n\n let app;\n\n if (isVue3) {\n const appOptions = Object.assign({}, componentInstance.$options, options);\n appOptions.mixins = [...mixins, ...(appOptions.mixins || [])];\n app = createSSRApp(appOptions);\n if (componentInstance.$router) {\n app.use(componentInstance.$router);\n }\n if (componentInstance.$store) {\n app.use(componentInstance.$store);\n }\n if (componentInstance.$i18n) {\n app.use(componentInstance.$i18n);\n }\n } else {\n // copy over global Vue APIs\n options.router = componentInstance.$router;\n options.store = componentInstance.$store;\n options.i18n = componentInstance.$i18n;\n\n const Extended = componentInstance.$vnode\n ? componentInstance.$vnode.componentOptions.Ctor.extend(options)\n : Vue2.component(\n options.name,\n Object.assign({}, componentInstance.$options, options)\n );\n\n app = new Extended({\n propsData: componentInstance.$options.propsData,\n mixins: [...mixins],\n });\n }\n\n // https://stackoverflow.com/a/48195006/3185307\n app.$slots = componentInstance.$slots;\n app.$root = componentInstance.$root;\n if (isVue2) {\n app.$options.serverPrefetch = [];\n }\n\n return app;\n}\n\nfunction augmentInstantSearch(instantSearchOptions, cloneComponent) {\n const search = instantsearch(instantSearchOptions);\n\n let initialResults;\n\n /**\n * main API for SSR, called in serverPrefetch of a root component which contains instantsearch\n * @param {Object} props the object including `component` and `renderToString`\n * @param {Object} props.component the calling component's `this`\n * @param {Function} props.renderToString the function to render componentInstance to string\n * @returns {Promise} result of the search, to save for .hydrate\n */\n search.findResultsState = function ({ component, renderToString }) {\n if (!renderToString) {\n throw new Error(\n 'findResultsState requires `renderToString: (component) => Promise<string>` in the first argument.'\n );\n }\n\n let app;\n let instance;\n\n return Promise.resolve()\n .then(() => {\n app = cloneComponent(component, {\n mixins: [\n {\n beforeCreate() {\n const descriptor = Object.getOwnPropertyDescriptor(\n component,\n '$nuxt'\n );\n\n const isWritable = descriptor\n ? descriptor.writable || descriptor.set\n : false;\n\n if (component.$nuxt && isWritable) {\n // In case of Nuxt (3), we ensure the context is shared between\n // the real and cloned component\n this.$nuxt = component.$nuxt;\n }\n },\n created() {\n instance = this.instantsearch;\n\n instance.start();\n // although we use start for initializing the main index,\n // we don't want to send search requests yet\n instance.started = false;\n },\n },\n ],\n });\n })\n .then(() => renderToString(app))\n .then(() => waitForResults(instance))\n .then((requestParamsList) => {\n initialResults = getInitialResults(\n instance.mainIndex,\n requestParamsList\n );\n search.hydrate(initialResults);\n return search.getState();\n });\n };\n\n /**\n * @returns {Promise} result state to serialize and enter into .hydrate\n */\n search.getState = function () {\n if (!initialResults) {\n throw new Error('You need to wait for findResultsState to finish');\n }\n return initialResults;\n };\n\n /**\n * make sure correct data is available in each widget's state.\n * called in widget mixin with (this.widget, this)\n *\n * @param {object} widget The widget instance\n * @param {object} parent The local parent index\n * @returns {void}\n */\n search.__forceRender = function (widget, parent) {\n const results = parent.getResults();\n\n // this happens when a different InstantSearch gets rendered initially,\n // after the hydrate finished. There's thus no initial results available.\n if (results === null) {\n return;\n }\n\n const state = results._state;\n\n const localHelper = parent.getHelper();\n // helper gets created in init, but that means it doesn't get the injected\n // parameters, because those are from the lastResults\n localHelper.state = state;\n\n widget.render({\n helper: localHelper,\n results,\n scopedResults: parent.getScopedResults(),\n parent,\n state,\n templatesConfig: {},\n createURL: parent.createURL,\n instantSearchInstance: search,\n searchMetadata: {\n isSearchStalled: false,\n },\n });\n };\n\n /**\n * Called both in server\n * @param {object} results a map of indexId: SearchResults\n * @returns {void}\n */\n search.hydrate = function (results) {\n if (!results) {\n warn(\n 'The result of `findResultsState()` needs to be passed to `hydrate()`.'\n );\n return;\n }\n\n search._initialResults = results;\n\n search.start();\n search.started = false;\n };\n return search;\n}\n\nexport function createServerRootMixin(instantSearchOptions = {}) {\n const { $cloneComponent = defaultCloneComponent } = instantSearchOptions;\n\n const search = augmentInstantSearch(instantSearchOptions, $cloneComponent);\n\n // put this in the user's root Vue instance\n // we can then reuse that InstantSearch instance seamlessly from `ais-instant-search-ssr`\n const rootMixin = {\n provide() {\n return {\n $_ais_ssrInstantSearchInstance: this.instantsearch,\n };\n },\n data() {\n return {\n // this is in data, so that the real & cloned render do not share\n // the same instantsearch instance.\n instantsearch: search,\n };\n },\n };\n\n return rootMixin;\n}\n"],"names":["suit","widgetName","element","modifier","Error","const","elements","push","join","createSuitMixin","props","classNames","type","Object","default","undefined","methods","className","name","userClassName","this","_objectSpread","target","i","arguments","length","source","ownKeys","keys","getOwnPropertySymbols","concat","filter","sym","getOwnPropertyDescriptor","enumerable","forEach","key","_defineProperty","obj","value","defineProperty","configurable","writable","isVue2","isVue3","Vue2","Vue","version","augmentCreateElement","createElement","tag","propsWithClassName","assign","class","children","attrs","rest","on","nativeOn","style","domProps","renderCompat","fn","call","getDefaultSlot","component","$slots","getScopedSlot","$scopedSlots","cache","Set","warn","message","has","add","console","createWidgetMixin","additionalProperties","inject","instantSearchInstance","from","$options","_componentTag","TypeError","getParentIndex","mainIndex","data","state","created","connector","factory","updateState","widget","widgetParams","addWidgets","_initialResults","started","__forceRender","removeWidgets","watch","handler","nextWidgetParams","deep","isFirstRender","PANEL_EMITTER_NAMESPACE","PANEL_CHANGE_EVENT","createPanelProviderMixin","emitter","required","mitt","provide","canRefine","updateCanRefine","all","clear","createPanelConsumerMixin","Boolean","emit","hasAlreadyEmitted","immediate","nextState","previousState","previousCanRefine","mapStateToCanRefine","nextCanRefine","inheritAttrs","mixins","connectConfigure","$$widgetType","computed","searchParameters","$attrs","render","h","slot","refine","EXPERIMENTAL_connectConfigureRelatedItems","hit","matchingPatterns","transformSearchParameters","Function","htmlUnescapes","&","<",">",""","'","reEscapedHtml","reHasEscapedHtml","RegExp","unescape","string","test","replace","character","TAG_PLACEHOLDER","highlightPreTag","highlightPostTag","parseHighlightedAttribute","splitByPreTag","highlightedValue","split","preTag","firstValue","shift","isHighlighted","postTag","let","splitByPostTag","parseAlgoliaHit","highlightObject","getPropertyByPath","highlightProperty","attribute","Array","isArray","map","item","connectHitsWithInsights","showBanner","escapeHTML","transformItems","defaultSlot","itemSlot","bannerSlot","createHitsComponent","hits","items","objectID","rootProps","click","onClick","auxclick","onAuxClick","index","insights","sendEvent","banner","bannerComponent","root","list","bannerRoot","bannerImage","bannerLink","connectIndex","indexWidget","$_ais_getParentIndex","indexName","String","indexId","createInstantSearchComponent","$_ais_instantSearchInstance","searchClient","helper","setClient","search","setIndex","compositionID","stalledSearchDelay","_stalledSearchDelay","routing","onStateChange","searchFunction","_searchFunction","middlewares","next","prev","middleware","indexOf","middlewareToRemove","unuse","middlewareToAdd","use","future","INSTANTSEARCH_FUTURE_DEFAULTS","client","addAlgoliaAgent","vueVersion","mounted","$nextTick","start","dispose","__initialSearchResults","oldApiWarning","insightsClient","validator","router","stateMapping","Number","initialUiState","apiKey","appId","instantsearch","$_ais_ssrInstantSearchInstance","connectQueryRules","trackedFilters","transformRuleContexts","getWidgetAttribute","vnode","componentOptions","propsData","attributes","reduce","acc","curr","connectDynamicWidgets","facets","maxValuesPerFacet","components","Map","set","allComponents","hidden","attributesToRender","get","widgets","AisDynamicWidgets","plugin","install","localVue","defaultCloneComponent","componentInstance","app","options","serverPrefetch","fetch","_base","$router","store","$store","i18n","$i18n","$vnode","Ctor","extend","$root","augmentInstantSearch","instantSearchOptions","cloneComponent","initialResults","findResultsState","instance","renderToString","Promise","resolve","then","beforeCreate","descriptor","isWritable","$nuxt","waitForResults","requestParamsList","getInitialResults","hydrate","getState","parent","results","getResults","_state","localHelper","getHelper","scopedResults","getScopedResults","templatesConfig","createURL","searchMetadata","isSearchStalled","createServerRootMixin","$cloneComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/util/suit.js","../../src/mixins/suit.js","../../src/util/polyfills.js","../../src/util/vue-compat/index-vue2.js","../../src/util/warn.js","../../src/mixins/widget.js","../../src/mixins/panel.js","../../src/components/Configure.js","../../src/components/ConfigureRelatedItems.js","../../src/util/unescape.js","../../src/util/parseAlgoliaHit.js","../../src/util/vue-compat/Highlighter/Highlighter-vue2.vue","../../src/components/Hits.js","../../src/components/Index.js","../../src/util/createInstantSearchComponent.js","../../src/components/InstantSearch.js","../../src/components/InstantSearchSsr.js","../../src/components/QueryRuleContext.js","../../src/components/DynamicWidgets.js","../../src/components/ExperimentalDynamicWidgets.js","../../src/plugin.js","../../src/util/createServerRootMixin.js"],"sourcesContent":["/**\n * Create class names like ais-widgetName-element--modifier\n *\n * @param {string} widgetName first part\n * @param {string} element part separated by -\n * @param {string} modifier final part, separated by --\n *\n * @returns {string} the composed class name\n */\nexport default function suit(widgetName, element, modifier) {\n if (!widgetName) {\n throw new Error('You need to provide `widgetName` in your data');\n }\n\n const elements = [`ais-${widgetName}`];\n\n if (element) {\n elements.push(`-${element}`);\n }\n\n if (modifier) {\n elements.push(`--${modifier}`);\n }\n\n return elements.join('');\n}\n","import suit from '../util/suit';\n\nexport const createSuitMixin = ({ name }) => ({\n props: {\n classNames: {\n type: Object,\n default: undefined,\n },\n },\n methods: {\n suit(element, modifier) {\n const className = suit(name, element, modifier);\n const userClassName = this.classNames && this.classNames[className];\n if (userClassName) {\n return [className, userClassName].join(' ');\n }\n return className;\n },\n },\n});\n","/* eslint-disable eslint-comments/no-unlimited-disable */\n/* eslint-disable */\n\n// source: @babel/plugin-proposal-object-rest-spread@7.2.0\n// prettier-ignore\nexport function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\n// source: @babel/plugin-proposal-object-rest-spread@7.2.0\n// prettier-ignore\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","import Vue from 'vue';\n\nconst isVue2 = true;\nconst isVue3 = false;\nconst Vue2 = Vue;\nconst version = Vue.version;\n\nexport { Vue, Vue2, isVue2, isVue3, version };\n\nconst augmentCreateElement =\n (createElement) =>\n (tag, propsWithClassName = {}, ...children) => {\n const { className, ...props } = propsWithClassName;\n\n if (typeof tag === 'function') {\n return tag(\n Object.assign(props, {\n class: className || props.class,\n children: children.length > 0 ? children : undefined,\n })\n );\n }\n\n if (typeof tag === 'string') {\n const { on, style, attrs, domProps, nativeOn, key, ...rest } = props;\n return createElement(\n tag,\n {\n class: className || props.class,\n attrs: attrs || rest,\n on,\n nativeOn,\n style,\n domProps,\n key,\n },\n children\n );\n }\n\n return createElement(\n tag,\n Object.assign(props, { class: className || props.class }),\n children\n );\n };\n\nexport function renderCompat(fn) {\n return function (createElement) {\n return fn.call(this, augmentCreateElement(createElement));\n };\n}\n\nexport function getDefaultSlot(component) {\n return component.$slots.default;\n}\n\nexport function getScopedSlot(component, name) {\n return (component.$scopedSlots || {})[name];\n}\n\n// Vue3-only APIs\nexport const computed = undefined;\nexport const createApp = undefined;\nexport const createSSRApp = undefined;\nexport const createRef = undefined;\nexport const customRef = undefined;\nexport const defineAsyncComponent = undefined;\nexport const defineComponent = undefined;\nexport const del = undefined;\nexport const getCurrentInstance = undefined;\nexport const h = undefined;\nexport const inject = undefined;\nexport const isRaw = undefined;\nexport const isReactive = undefined;\nexport const isReadonly = undefined;\nexport const isRef = undefined;\nexport const markRaw = undefined;\nexport const nextTick = undefined;\nexport const onActivated = undefined;\nexport const onBeforeMount = undefined;\nexport const onBeforeUnmount = undefined;\nexport const onBeforeUpdate = undefined;\nexport const onDeactivated = undefined;\nexport const onErrorCaptured = undefined;\nexport const onMounted = undefined;\nexport const onServerPrefetch = undefined;\nexport const onUnmounted = undefined;\nexport const onUpdated = undefined;\nexport const provide = undefined;\nexport const proxyRefs = undefined;\nexport const reactive = undefined;\nexport const readonly = undefined;\nexport const ref = undefined;\nexport const set = undefined;\nexport const shallowReactive = undefined;\nexport const shallowReadonly = undefined;\nexport const shallowRef = undefined;\nexport const toRaw = undefined;\nexport const toRef = undefined;\nexport const toRefs = undefined;\nexport const triggerRef = undefined;\nexport const unref = undefined;\nexport const useCSSModule = undefined;\nexport const useCssModule = undefined;\nexport const warn = undefined;\nexport const watch = undefined;\nexport const watchEffect = undefined;\n","const cache = new Set();\n\nexport function warn(message) {\n if (cache.has(message)) return;\n cache.add(message);\n // eslint-disable-next-line no-console\n console.warn(message);\n}\n","import { _objectSpread } from '../util/polyfills';\nimport { isVue3 } from '../util/vue-compat';\nimport { warn } from '../util/warn';\n\nexport const createWidgetMixin = (\n { connector } = {},\n additionalProperties = {}\n) => ({\n inject: {\n instantSearchInstance: {\n from: '$_ais_instantSearchInstance',\n default() {\n const tag = this.$options._componentTag;\n throw new TypeError(\n `It looks like you forgot to wrap your Algolia search component \"<${tag}>\" inside of an \"<ais-instant-search>\" component.`\n );\n },\n },\n getParentIndex: {\n from: '$_ais_getParentIndex',\n default() {\n return () => this.instantSearchInstance.mainIndex;\n },\n },\n },\n data() {\n return {\n state: null,\n };\n },\n created() {\n if (typeof connector === 'function') {\n this.factory = connector(this.updateState, () => {});\n this.widget = _objectSpread(\n this.factory(this.widgetParams),\n additionalProperties\n );\n this.getParentIndex().addWidgets([this.widget]);\n\n if (\n this.instantSearchInstance._initialResults &&\n !this.instantSearchInstance.started\n ) {\n if (typeof this.instantSearchInstance.__forceRender !== 'function') {\n throw new Error(\n 'You are using server side rendering with <ais-instant-search> instead of <ais-instant-search-ssr>.'\n );\n }\n this.instantSearchInstance.__forceRender(\n this.widget,\n this.getParentIndex()\n );\n }\n } else if (connector !== true) {\n warn(\n `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`\n );\n }\n },\n [isVue3 ? 'beforeUnmount' : 'beforeDestroy']() {\n if (this.widget) {\n this.getParentIndex().removeWidgets([this.widget]);\n }\n },\n watch: {\n widgetParams: {\n handler(nextWidgetParams) {\n this.state = null;\n this.getParentIndex().removeWidgets([this.widget]);\n this.widget = _objectSpread(\n this.factory(nextWidgetParams),\n additionalProperties\n );\n this.getParentIndex().addWidgets([this.widget]);\n },\n deep: true,\n },\n },\n methods: {\n updateState(state = {}, isFirstRender) {\n if (!isFirstRender) {\n // Avoid updating the state on first render\n // otherwise there will be a flash of placeholder data\n this.state = state;\n }\n },\n },\n});\n","import mitt from 'mitt';\n\nimport { isVue3 } from '../util/vue-compat';\n\nexport const PANEL_EMITTER_NAMESPACE = 'instantSearchPanelEmitter';\nexport const PANEL_CHANGE_EVENT = 'PANEL_CHANGE_EVENT';\n\nexport const createPanelProviderMixin = () => ({\n props: {\n emitter: {\n type: Object,\n required: false,\n default() {\n return mitt();\n },\n },\n },\n provide() {\n return {\n [PANEL_EMITTER_NAMESPACE]: this.emitter,\n };\n },\n data() {\n return {\n canRefine: true,\n };\n },\n created() {\n this.emitter.on(PANEL_CHANGE_EVENT, (value) => {\n this.updateCanRefine(value);\n });\n },\n [isVue3 ? 'beforeUnmount' : 'beforeDestroy']() {\n this.emitter.all.clear();\n },\n methods: {\n updateCanRefine(value) {\n this.canRefine = value;\n },\n },\n});\n\nexport const createPanelConsumerMixin = ({\n mapStateToCanRefine = (state) => Boolean(state.canRefine),\n} = {}) => ({\n inject: {\n emitter: {\n from: PANEL_EMITTER_NAMESPACE,\n default() {\n return {\n emit: () => {},\n };\n },\n },\n },\n data() {\n return {\n state: null,\n hasAlreadyEmitted: false,\n };\n },\n watch: {\n state: {\n immediate: true,\n handler(nextState, previousState) {\n if (!nextState) {\n return;\n }\n\n const previousCanRefine = mapStateToCanRefine(previousState || {});\n const nextCanRefine = mapStateToCanRefine(nextState);\n\n if (!this.hasAlreadyEmitted || previousCanRefine !== nextCanRefine) {\n this.emitter.emit(PANEL_CHANGE_EVENT, nextCanRefine);\n this.hasAlreadyEmitted = true;\n }\n },\n },\n },\n});\n","import { connectConfigure } from 'instantsearch.js/es/connectors/index.umd';\n\nimport { createSuitMixin } from '../mixins/suit';\nimport { createWidgetMixin } from '../mixins/widget';\nimport { isVue3, renderCompat } from '../util/vue-compat';\n\nexport default {\n inheritAttrs: false,\n name: 'AisConfigure',\n mixins: [\n createSuitMixin({ name: 'Configure' }),\n createWidgetMixin(\n {\n connector: connectConfigure,\n },\n {\n $$widgetType: 'ais.configure',\n }\n ),\n ],\n computed: {\n widgetParams() {\n return {\n searchParameters: Object.assign({}, this.$attrs),\n };\n },\n },\n render: renderCompat(function (h) {\n const slot = isVue3 ? this.$slots.default : this.$scopedSlots.default;\n\n if (!this.state || !slot) {\n return null;\n }\n\n return h(\n 'div',\n {\n class: this.suit(),\n },\n [\n slot({\n refine: this.state.refine,\n searchParameters: this.state.widgetParams.searchParameters,\n }),\n ]\n );\n }),\n};\n","import { EXPERIMENTAL_connectConfigureRelatedItems } from 'instantsearch.js/es/connectors/index.umd';\n\nimport { createWidgetMixin } from '../mixins/widget';\n\nexport default {\n inheritAttrs: false,\n name: 'AisExperimentalConfigureRelatedItems',\n mixins: [\n createWidgetMixin(\n {\n connector: EXPERIMENTAL_connectConfigureRelatedItems,\n },\n {\n $$widgetType: 'ais.configureRelatedItems',\n }\n ),\n ],\n props: {\n hit: {\n type: Object,\n required: true,\n },\n matchingPatterns: {\n type: Object,\n required: true,\n },\n transformSearchParameters: {\n type: Function,\n required: false,\n },\n },\n computed: {\n widgetParams() {\n return {\n hit: this.hit,\n matchingPatterns: this.matchingPatterns,\n transformSearchParameters: this.transformSearchParameters,\n };\n },\n },\n render() {\n return null;\n },\n};\n","/**\n * This implementation is taken from Lodash implementation.\n * See: https://github.com/lodash/lodash/blob/4.17.11-npm/unescape.js\n */\n\n/** Used to map HTML entities to characters. */\nconst htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\",\n};\n\n/** Used to match HTML entities and HTML characters. */\nconst reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g;\nconst reHasEscapedHtml = RegExp(reEscapedHtml.source);\n\n/**\n * The inverse of `_.escape`; this method converts the HTML entities\n * `&`, `<`, `>`, `"`, and `'` in `string` to\n * their corresponding characters.\n *\n * **Note:** No other HTML entities are unescaped. To unescape additional\n * HTML entities use a third-party library like [_he_](https://mths.be/he).\n *\n * @static\n * @memberOf _\n * @since 0.6.0\n * @category String\n * @param {string} [string=''] The string to unescape.\n * @returns {string} Returns the unescaped string.\n * @example\n *\n * _.unescape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\nexport function unescape(string) {\n return string && reHasEscapedHtml.test(string)\n ? string.replace(reEscapedHtml, (character) => htmlUnescapes[character])\n : string;\n}\n","// copied from React InstantSearch\nimport { getPropertyByPath } from 'instantsearch.js/es/lib/utils';\n\nimport { unescape } from '../util/unescape';\n\nconst TAG_PLACEHOLDER = {\n highlightPreTag: '__ais-highlight__',\n highlightPostTag: '__/ais-highlight__',\n};\n\n/**\n * Parses an highlighted attribute into an array of objects with the string value, and\n * a boolean that indicated if this part is highlighted.\n *\n * @param {string} preTag - string used to identify the start of an highlighted value\n * @param {string} postTag - string used to identify the end of an highlighted value\n * @param {string} highlightedValue - highlighted attribute as returned by Algolia highlight feature\n * @return {object[]} - An array of {value: string, isHighlighted: boolean}.\n */\nfunction parseHighlightedAttribute({ preTag, postTag, highlightedValue = '' }) {\n const splitByPreTag = highlightedValue.split(preTag);\n const firstValue = splitByPreTag.shift();\n const elements =\n firstValue === '' ? [] : [{ value: firstValue, isHighlighted: false }];\n\n if (postTag === preTag) {\n let isHighlighted = true;\n splitByPreTag.forEach((split) => {\n elements.push({ value: split, isHighlighted });\n isHighlighted = !isHighlighted;\n });\n } else {\n splitByPreTag.forEach((split) => {\n const splitByPostTag = split.split(postTag);\n\n elements.push({\n value: splitByPostTag[0],\n isHighlighted: true,\n });\n\n if (splitByPostTag[1] !== '') {\n elements.push({\n // Vue removes nodes which are just a single space (vuejs/vue#9208),\n // we replace this by two spaces, which does not have an impact,\n // unless someone would have `white-space: pre` on the highlights\n value: splitByPostTag[1] === ' ' ? ' ' : splitByPostTag[1],\n isHighlighted: false,\n });\n }\n });\n }\n\n return elements;\n}\n\n/**\n * Find an highlighted attribute given an `attribute` and an `highlightProperty`, parses it,\n * and provided an array of objects with the string value and a boolean if this\n * value is highlighted.\n *\n * In order to use this feature, highlight must be activated in the configuration of\n * the index. The `preTag` and `postTag` attributes are respectively highlightPreTag and\n * highlightPostTag in Algolia configuration.\n *\n * @param {string} preTag - string used to identify the start of an highlighted value\n * @param {string} postTag - string used to identify the end of an highlighted value\n * @param {string} highlightProperty - the property that contains the highlight structure in the results\n * @param {string} attribute - the highlighted attribute to look for\n * @param {object} hit - the actual hit returned by Algolia.\n * @return {object[]} - An array of {value: string, isHighlighted: boolean}.\n */\nexport function parseAlgoliaHit({\n preTag = TAG_PLACEHOLDER.highlightPreTag,\n postTag = TAG_PLACEHOLDER.highlightPostTag,\n highlightProperty,\n attribute,\n hit,\n}) {\n if (!hit) throw new Error('`hit`, the matching record, must be provided');\n\n const highlightObject =\n getPropertyByPath(hit[highlightProperty], attribute) || {};\n\n if (Array.isArray(highlightObject)) {\n return highlightObject.map((item) =>\n parseHighlightedAttribute({\n preTag,\n postTag,\n highlightedValue: unescape(item.value),\n })\n );\n }\n\n return parseHighlightedAttribute({\n preTag,\n postTag,\n highlightedValue: unescape(highlightObject.value),\n });\n}\n","<template>\n <span :class=\"suit()\">\n <component\n v-for=\"({ value, isHighlighted }, index) in parsedHighlights\"\n :class=\"[isHighlighted && suit('highlighted')]\"\n :key=\"index\"\n :is=\"isHighlighted ? highlightedTagName : TextNode\"\n >{{ value }}</component\n >\n </span>\n</template>\n\n<script>\nimport { parseAlgoliaHit } from '../../parseAlgoliaHit';\n\nconst TextNode = {\n render() {\n return this.$slots.default;\n },\n};\n\nexport default {\n name: 'AisHighlighter',\n props: {\n hit: {\n type: Object,\n required: true,\n },\n attribute: {\n type: String,\n required: true,\n },\n highlightedTagName: {\n type: String,\n default: 'mark',\n },\n suit: {\n type: Function,\n required: true,\n },\n highlightProperty: {\n type: String,\n required: true,\n },\n preTag: {\n type: String,\n required: true,\n },\n postTag: {\n type: String,\n required: true,\n },\n },\n data() {\n return { TextNode };\n },\n computed: {\n parsedHighlights() {\n return parseAlgoliaHit({\n attribute: this.attribute,\n hit: this.hit,\n highlightProperty: this.highlightProperty,\n preTag: this.preTag,\n postTag: this.postTag,\n });\n },\n },\n};\n</script>\n","import { createHitsComponent } from 'instantsearch-ui-components';\nimport { connectHitsWithInsights } from 'instantsearch.js/es/connectors/index.umd';\n\nimport { createSuitMixin } from '../mixins/suit';\nimport { createWidgetMixin } from '../mixins/widget';\nimport { getScopedSlot, renderCompat } from '../util/vue-compat';\n\nexport default {\n name: 'AisHits',\n mixins: [\n createWidgetMixin(\n {\n connector: connectHitsWithInsights,\n },\n {\n $$widgetType: 'ais.hits',\n }\n ),\n createSuitMixin({ name: 'Hits' }),\n ],\n props: {\n showBanner: {\n type: Boolean,\n default: true,\n },\n escapeHTML: {\n type: Boolean,\n default: true,\n },\n transformItems: {\n type: Function,\n default: undefined,\n },\n },\n computed: {\n widgetParams() {\n return {\n showBanner: this.showBanner,\n escapeHTML: this.escapeHTML,\n transformItems: this.transformItems,\n };\n },\n },\n render: renderCompat(function (h) {\n if (!this.state) {\n return null;\n }\n\n const defaultSlot = getScopedSlot(this, 'default');\n const itemSlot = getScopedSlot(this, 'item');\n const bannerSlot = getScopedSlot(this, 'banner');\n\n const itemComponent = ({\n hit,\n index,\n onClick,\n onAuxClick,\n // We don't want to pass the Preact key as a prop\n key: _key,\n ...rootProps\n }) => {\n return h(\n 'li',\n {\n key: hit.objectID,\n attrs: rootProps,\n on: {\n click: onClick,\n auxclick: onAuxClick,\n },\n },\n [\n (itemSlot &&\n itemSlot({\n item: hit,\n index,\n insights: this.state.insights,\n sendEvent: this.state.sendEvent,\n })) ||\n `objectID: ${hit.objectID}, index: ${index}`,\n ]\n );\n };\n\n // We only want to render the default slot\n // if no other slots are defined\n if (!itemSlot && !bannerSlot && defaultSlot) {\n return h(\n 'div',\n {\n attrs: {\n class: this.suit(),\n },\n },\n [\n defaultSlot({\n banner: this.state.banner,\n items: this.state.items,\n insights: this.state.insights,\n sendEvent: this.state.sendEvent,\n }),\n ]\n );\n }\n\n return h(createHitsComponent({ createElement: h }), {\n hits: this.state.items,\n itemComponent,\n banner: this.showBanner ? this.state.banner : undefined,\n bannerComponent: bannerSlot,\n sendEvent: this.state.sendEvent,\n classNames: this.classNames && {\n root: this.classNames['ais-Hits'],\n list: this.classNames['ais-Hits-list'],\n item: this.classNames['ais-Hits-item'],\n bannerRoot: this.classNames['ais-Hits-banner'],\n bannerImage: this.classNames['ais-Hits-banner-image'],\n bannerLink: this.classNames['ais-Hits-banner-link'],\n },\n });\n }),\n};\n","import indexWidget from 'instantsearch.js/es/widgets/index/index';\n\nimport { createSuitMixin } from '../mixins/suit';\nimport { createWidgetMixin } from '../mixins/widget';\nimport { renderCompat, getDefaultSlot } from '../util/vue-compat';\n\n// wrapped in a dummy function, since indexWidget doesn't render\nconst connectIndex = () => indexWidget;\n\nexport default {\n name: 'AisIndex',\n mixins: [\n createSuitMixin({ name: 'Index' }),\n createWidgetMixin(\n { connector: connectIndex },\n {\n $$widgetType: 'ais.index',\n }\n ),\n ],\n provide() {\n return {\n // The widget is created & registered by widgetMixin, accessor is needed\n // because provide is not reactive.\n $_ais_getParentIndex: () => this.widget,\n };\n },\n props: {\n indexName: {\n type: String,\n required: true,\n },\n indexId: {\n type: String,\n required: false,\n },\n },\n render: renderCompat(function (h) {\n return h('div', {}, getDefaultSlot(this));\n }),\n computed: {\n widgetParams() {\n return {\n indexName: this.indexName,\n indexId: this.indexId,\n };\n },\n },\n};\n","import { INSTANTSEARCH_FUTURE_DEFAULTS } from 'instantsearch.js/es/lib/InstantSearch';\n\nimport { version } from '../../package.json'; // rollup does pick only what needed from json\nimport { createSuitMixin } from '../mixins/suit';\n\nimport { _objectSpread } from './polyfills';\nimport { isVue3, version as vueVersion } from './vue-compat';\nimport { warn } from './warn';\n\nexport const createInstantSearchComponent = (component) =>\n _objectSpread(\n {\n mixins: [createSuitMixin({ name: 'InstantSearch' })],\n provide() {\n return {\n $_ais_instantSearchInstance: this.instantSearchInstance,\n };\n },\n watch: {\n searchClient(searchClient) {\n warn(\n false,\n 'The `search-client` prop of `<ais-instant-search>` changed between renders, which may cause more search requests than necessary. If this is an unwanted behavior, please provide a stable reference: https://www.algolia.com/doc/api-reference/widgets/instantsearch/vue/#widget-param-search-client'\n );\n\n this.instantSearchInstance.helper.setClient(searchClient).search();\n },\n indexName(indexName) {\n this.instantSearchInstance.helper.setIndex(indexName || '').search();\n },\n compositionID(compositionID) {\n this.instantSearchInstance.helper\n .setIndex(compositionID || '')\n .search();\n },\n stalledSearchDelay(stalledSearchDelay) {\n // private InstantSearch.js API:\n this.instantSearchInstance._stalledSearchDelay = stalledSearchDelay;\n },\n routing() {\n throw new Error(\n 'routing configuration can not be changed dynamically at this point.' +\n '\\n\\n' +\n 'Please 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'\n );\n },\n onStateChange() {\n throw new Error(\n 'onStateChange configuration can not be changed dynamically at this point.' +\n '\\n\\n' +\n 'Please 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'\n );\n },\n searchFunction(searchFunction) {\n // private InstantSearch.js API:\n this.instantSearchInstance._searchFunction = searchFunction;\n },\n middlewares: {\n immediate: true,\n handler(next, prev) {\n (prev || [])\n .filter((middleware) => (next || []).indexOf(middleware) === -1)\n .forEach((middlewareToRemove) => {\n this.instantSearchInstance.unuse(middlewareToRemove);\n });\n\n (next || [])\n .filter((middleware) => (prev || []).indexOf(middleware) === -1)\n .forEach((middlewareToAdd) => {\n this.instantSearchInstance.use(middlewareToAdd);\n });\n },\n },\n future(future) {\n this.instantSearchInstance.future = Object.assign(\n INSTANTSEARCH_FUTURE_DEFAULTS,\n future\n );\n },\n },\n created() {\n const searchClient = this.instantSearchInstance.client;\n if (typeof searchClient.addAlgoliaAgent === 'function') {\n searchClient.addAlgoliaAgent(`Vue (${vueVersion})`);\n searchClient.addAlgoliaAgent(`Vue InstantSearch (${version})`);\n }\n },\n mounted() {\n // from the documentation: https://vuejs.org/v2/api/#mounted\n // \"Note that mounted does not guarantee that all child components have also been mounted. If you want to\n // wait until the entire view has been rendered, you can use vm.$nextTick inside of mounted\"\n this.$nextTick(() => {\n if (!this.instantSearchInstance.started) {\n this.instantSearchInstance.start();\n }\n });\n },\n [isVue3 ? 'beforeUnmount' : 'beforeDestroy']() {\n if (this.instantSearchInstance.started) {\n this.instantSearchInstance.dispose();\n }\n\n // a hydrated instance will no longer be hydrated once disposed, and starts from scratch\n this.instantSearchInstance.__initialSearchResults = undefined;\n },\n },\n component\n );\n","import instantsearch from 'instantsearch.js/es';\n\nimport { createInstantSearchComponent } from '../util/createInstantSearchComponent';\nimport { renderCompat, getDefaultSlot } from '../util/vue-compat';\nimport { warn } from '../util/warn';\n\nconst oldApiWarning = `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`;\n\nexport default createInstantSearchComponent({\n name: 'AisInstantSearch',\n props: {\n searchClient: {\n type: Object,\n required: true,\n },\n insightsClient: {\n type: Function,\n default: undefined,\n },\n indexName: {\n type: String,\n required: false,\n },\n compositionID: {\n type: String,\n required: false,\n },\n routing: {\n default: undefined,\n validator(value) {\n if (\n typeof value === 'boolean' ||\n (!value.router && !value.stateMapping)\n ) {\n warn(\n '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'\n );\n return false;\n }\n return true;\n },\n },\n insights: {\n default: undefined,\n validator(value) {\n return (\n typeof value === 'undefined' ||\n typeof value === 'boolean' ||\n typeof value === 'object'\n );\n },\n },\n stalledSearchDelay: {\n type: Number,\n default: undefined,\n },\n searchFunction: {\n type: Function,\n default: undefined,\n },\n onStateChange: {\n type: Function,\n default: undefined,\n },\n initialUiState: {\n type: Object,\n default: undefined,\n },\n apiKey: {\n type: String,\n default: undefined,\n validator(value) {\n if (value) {\n warn(oldApiWarning);\n }\n return false;\n },\n },\n appId: {\n type: String,\n default: undefined,\n validator(value) {\n if (value) {\n warn(oldApiWarning);\n }\n return false;\n },\n },\n middlewares: {\n type: Array,\n default: null,\n },\n future: {\n type: Object,\n default: undefined,\n },\n },\n data() {\n return {\n instantSearchInstance: instantsearch({\n searchClient: this.searchClient,\n insightsClient: this.insightsClient,\n insights: this.insights,\n indexName: this.indexName,\n compositionID: this.compositionID,\n routing: this.routing,\n stalledSearchDelay: this.stalledSearchDelay,\n searchFunction: this.searchFunction,\n onStateChange: this.onStateChange,\n initialUiState: this.initialUiState,\n future: this.future,\n }),\n };\n },\n render: renderCompat(function (h) {\n return h(\n 'div',\n {\n class: {\n [this.suit()]: true,\n [this.suit('', 'ssr')]: false,\n },\n },\n getDefaultSlot(this)\n );\n }),\n});\n","import { createInstantSearchComponent } from '../util/createInstantSearchComponent';\nimport { renderCompat, getDefaultSlot } from '../util/vue-compat';\n\nexport default createInstantSearchComponent({\n name: 'AisInstantSearchSsr',\n inject: {\n $_ais_ssrInstantSearchInstance: {\n default() {\n throw new Error('`createServerRootMixin` is required when using SSR.');\n },\n },\n },\n data() {\n return {\n instantSearchInstance: this.$_ais_ssrInstantSearchInstance,\n };\n },\n render: renderCompat(function (h) {\n return h(\n 'div',\n {\n class: {\n [this.suit()]: true,\n [this.suit('', 'ssr')]: true,\n },\n },\n getDefaultSlot(this)\n );\n }),\n});\n","import { connectQueryRules } from 'instantsearch.js/es/connectors/index.umd';\n\nimport { createSuitMixin } from '../mixins/suit';\nimport { createWidgetMixin } from '../mixins/widget';\n\nexport default {\n name: 'AisQueryRuleContext',\n mixins: [\n createSuitMixin({ name: 'QueryRuleContext' }),\n createWidgetMixin(\n {\n connector: connectQueryRules,\n },\n {\n $$widgetType: 'ais.queryRuleContext',\n }\n ),\n ],\n props: {\n trackedFilters: {\n type: Object,\n required: true,\n },\n transformRuleContexts: {\n type: Function,\n required: false,\n default: undefined,\n },\n },\n computed: {\n widgetParams() {\n return {\n trackedFilters: this.trackedFilters,\n transformRuleContexts: this.transformRuleContexts,\n };\n },\n },\n render() {\n return null;\n },\n};\n","import { connectDynamicWidgets } from 'instantsearch.js/es/connectors/index.umd';\n\nimport { createSuitMixin } from '../mixins/suit';\nimport { createWidgetMixin } from '../mixins/widget';\nimport { _objectSpread } from '../util/polyfills';\nimport { isVue3, renderCompat, getDefaultSlot } from '../util/vue-compat';\n\nfunction getWidgetAttribute(vnode) {\n const props = isVue3\n ? vnode.props\n : vnode.componentOptions && vnode.componentOptions.propsData;\n if (props) {\n if (props.attribute) {\n return props.attribute;\n }\n if (Array.isArray(props.attributes)) {\n return props.attributes[0];\n }\n }\n\n let children;\n if (isVue3) {\n children =\n vnode.children && vnode.children.default && vnode.children.default();\n } else {\n children =\n vnode.componentOptions && vnode.componentOptions.children\n ? vnode.componentOptions.children\n : vnode.children;\n }\n\n if (Array.isArray(children)) {\n // return first child with a truthy attribute\n return children.reduce(\n (acc, curr) => acc || getWidgetAttribute(curr),\n undefined\n );\n }\n\n return undefined;\n}\n\nexport default {\n name: 'AisDynamicWidgets',\n mixins: [\n createWidgetMixin(\n {\n connector: connectDynamicWidgets,\n },\n {\n $$widgetType: 'ais.dynamicWidgets',\n }\n ),\n createSuitMixin({ name: 'DynamicWidgets' }),\n ],\n props: {\n transformItems: {\n type: Function,\n default: undefined,\n },\n facets: {\n type: Array,\n default: undefined,\n },\n maxValuesPerFacet: {\n type: Number,\n default: undefined,\n },\n },\n render: renderCompat(function (h) {\n const components = new Map();\n\n (getDefaultSlot(this) || []).forEach((vnode) => {\n const attribute = getWidgetAttribute(vnode);\n if (attribute) {\n components.set(\n attribute,\n h('div', { key: attribute, class: [this.suit('widget')] }, [vnode])\n );\n }\n });\n\n // by default, render everything, but hidden so that the routing doesn't disappear\n if (!this.state) {\n const allComponents = [];\n components.forEach((component) => allComponents.push(component));\n\n return h(\n 'div',\n _objectSpread(\n {\n class: [this.suit()],\n },\n { attrs: { hidden: true } }\n ),\n allComponents\n );\n }\n\n return h(\n 'div',\n { class: [this.suit()] },\n this.state.attributesToRender.map((attribute) =>\n components.get(attribute)\n )\n );\n }),\n computed: {\n widgetParams() {\n return {\n transformItems: this.transformItems,\n facets: this.facets,\n maxValuesPerFacet: this.maxValuesPerFacet,\n // we do not pass \"widgets\" to the connector, since Vue is in charge of rendering\n widgets: [],\n };\n },\n },\n};\n","import { warn } from '../util/warn';\n\nimport AisDynamicWidgets from './DynamicWidgets';\n\n// @MAJOR remove this file\nexport default Object.assign({}, AisDynamicWidgets, {\n name: 'AisExperimentalDynamicWidgets',\n mounted() {\n warn('Use AisDynamicWidgets instead of AisExperimentalDynamicWidgets.');\n },\n});\n","/* eslint import/namespace: ['error', { allowComputed: true }]*/\n\nimport * as widgets from './widgets';\n\nexport const plugin = {\n install(localVue) {\n Object.keys(widgets).forEach((widgetName) => {\n localVue.component(widgets[widgetName].name, widgets[widgetName]);\n });\n },\n};\n","import instantsearch from 'instantsearch.js/es';\nimport {\n waitForResults,\n getInitialResults,\n} from 'instantsearch.js/es/lib/server';\n\nimport { isVue3, isVue2, Vue2, createSSRApp } from './vue-compat';\nimport { warn } from './warn';\n\nfunction defaultCloneComponent(componentInstance, { mixins = [] } = {}) {\n const options = {\n serverPrefetch: undefined,\n fetch: undefined,\n _base: undefined,\n name: 'ais-ssr-root-component',\n };\n\n let app;\n\n if (isVue3) {\n const appOptions = Object.assign({}, componentInstance.$options, options);\n appOptions.mixins = [...mixins, ...(appOptions.mixins || [])];\n app = createSSRApp(appOptions);\n if (componentInstance.$router) {\n app.use(componentInstance.$router);\n }\n if (componentInstance.$store) {\n app.use(componentInstance.$store);\n }\n if (componentInstance.$i18n) {\n app.use(componentInstance.$i18n);\n }\n } else {\n // copy over global Vue APIs\n options.router = componentInstance.$router;\n options.store = componentInstance.$store;\n options.i18n = componentInstance.$i18n;\n\n const Extended = componentInstance.$vnode\n ? componentInstance.$vnode.componentOptions.Ctor.extend(options)\n : Vue2.component(\n options.name,\n Object.assign({}, componentInstance.$options, options)\n );\n\n app = new Extended({\n propsData: componentInstance.$options.propsData,\n mixins: [...mixins],\n });\n }\n\n // https://stackoverflow.com/a/48195006/3185307\n app.$slots = componentInstance.$slots;\n app.$root = componentInstance.$root;\n if (isVue2) {\n app.$options.serverPrefetch = [];\n }\n\n return app;\n}\n\nfunction augmentInstantSearch(instantSearchOptions, cloneComponent) {\n const search = instantsearch(instantSearchOptions);\n\n let initialResults;\n\n /**\n * main API for SSR, called in serverPrefetch of a root component which contains instantsearch\n * @param {Object} props the object including `component` and `renderToString`\n * @param {Object} props.component the calling component's `this`\n * @param {Function} props.renderToString the function to render componentInstance to string\n * @returns {Promise} result of the search, to save for .hydrate\n */\n search.findResultsState = function ({ component, renderToString }) {\n if (!renderToString) {\n throw new Error(\n 'findResultsState requires `renderToString: (component) => Promise<string>` in the first argument.'\n );\n }\n\n let app;\n let instance;\n\n return Promise.resolve()\n .then(() => {\n app = cloneComponent(component, {\n mixins: [\n {\n beforeCreate() {\n const descriptor = Object.getOwnPropertyDescriptor(\n component,\n '$nuxt'\n );\n\n const isWritable = descriptor\n ? descriptor.writable || descriptor.set\n : false;\n\n if (component.$nuxt && isWritable) {\n // In case of Nuxt (3), we ensure the context is shared between\n // the real and cloned component\n this.$nuxt = component.$nuxt;\n }\n },\n created() {\n instance = this.instantsearch;\n\n instance.start();\n // although we use start for initializing the main index,\n // we don't want to send search requests yet\n instance.started = false;\n },\n },\n ],\n });\n })\n .then(() => renderToString(app))\n .then(() => waitForResults(instance))\n .then((requestParamsList) => {\n initialResults = getInitialResults(\n instance.mainIndex,\n requestParamsList\n );\n search.hydrate(initialResults);\n return search.getState();\n });\n };\n\n /**\n * @returns {Promise} result state to serialize and enter into .hydrate\n */\n search.getState = function () {\n if (!initialResults) {\n throw new Error('You need to wait for findResultsState to finish');\n }\n return initialResults;\n };\n\n /**\n * make sure correct data is available in each widget's state.\n * called in widget mixin with (this.widget, this)\n *\n * @param {object} widget The widget instance\n * @param {object} parent The local parent index\n * @returns {void}\n */\n search.__forceRender = function (widget, parent) {\n const results = parent.getResults();\n\n // this happens when a different InstantSearch gets rendered initially,\n // after the hydrate finished. There's thus no initial results available.\n if (results === null) {\n return;\n }\n\n const state = results._state;\n\n const localHelper = parent.getHelper();\n // helper gets created in init, but that means it doesn't get the injected\n // parameters, because those are from the lastResults\n localHelper.state = state;\n\n widget.render({\n helper: localHelper,\n results,\n scopedResults: parent.getScopedResults(),\n parent,\n state,\n templatesConfig: {},\n createURL: parent.createURL,\n instantSearchInstance: search,\n searchMetadata: {\n isSearchStalled: false,\n },\n });\n };\n\n /**\n * Called both in server\n * @param {object} results a map of indexId: SearchResults\n * @returns {void}\n */\n search.hydrate = function (results) {\n if (!results) {\n warn(\n 'The result of `findResultsState()` needs to be passed to `hydrate()`.'\n );\n return;\n }\n\n search._initialResults = results;\n\n search.start();\n search.started = false;\n };\n return search;\n}\n\nexport function createServerRootMixin(instantSearchOptions = {}) {\n const { $cloneComponent = defaultCloneComponent } = instantSearchOptions;\n\n const search = augmentInstantSearch(instantSearchOptions, $cloneComponent);\n\n // put this in the user's root Vue instance\n // we can then reuse that InstantSearch instance seamlessly from `ais-instant-search-ssr`\n const rootMixin = {\n provide() {\n return {\n $_ais_ssrInstantSearchInstance: this.instantsearch,\n };\n },\n data() {\n return {\n // this is in data, so that the real & cloned render do not share\n // the same instantsearch instance.\n instantsearch: search,\n };\n },\n };\n\n return rootMixin;\n}\n"],"names":["suit","widgetName","element","modifier","Error","const","elements","push","join","createSuitMixin","props","classNames","type","Object","default","undefined","methods","className","name","userClassName","this","_objectSpread","target","i","arguments","length","source","ownKeys","keys","getOwnPropertySymbols","concat","filter","sym","getOwnPropertyDescriptor","enumerable","forEach","key","_defineProperty","obj","value","defineProperty","configurable","writable","isVue2","isVue3","Vue2","Vue","version","augmentCreateElement","createElement","tag","propsWithClassName","assign","class","children","attrs","rest","on","nativeOn","style","domProps","renderCompat","fn","call","getDefaultSlot","component","$slots","getScopedSlot","$scopedSlots","cache","Set","warn","message","has","add","console","createWidgetMixin","additionalProperties","inject","instantSearchInstance","from","$options","_componentTag","TypeError","getParentIndex","mainIndex","data","state","created","connector","factory","updateState","widget","widgetParams","addWidgets","_initialResults","started","__forceRender","removeWidgets","watch","handler","nextWidgetParams","deep","isFirstRender","PANEL_EMITTER_NAMESPACE","PANEL_CHANGE_EVENT","createPanelProviderMixin","emitter","required","mitt","provide","canRefine","updateCanRefine","all","clear","createPanelConsumerMixin","Boolean","emit","hasAlreadyEmitted","immediate","nextState","previousState","previousCanRefine","mapStateToCanRefine","nextCanRefine","inheritAttrs","mixins","connectConfigure","$$widgetType","computed","searchParameters","$attrs","render","h","slot","refine","EXPERIMENTAL_connectConfigureRelatedItems","hit","matchingPatterns","transformSearchParameters","Function","htmlUnescapes","&","<",">",""","'","reEscapedHtml","reHasEscapedHtml","RegExp","unescape","string","test","replace","character","TAG_PLACEHOLDER","highlightPreTag","highlightPostTag","parseHighlightedAttribute","splitByPreTag","highlightedValue","split","preTag","firstValue","shift","isHighlighted","postTag","let","splitByPostTag","parseAlgoliaHit","highlightObject","getPropertyByPath","highlightProperty","attribute","Array","isArray","map","item","connectHitsWithInsights","showBanner","escapeHTML","transformItems","defaultSlot","itemSlot","bannerSlot","createHitsComponent","hits","items","objectID","rootProps","click","onClick","auxclick","onAuxClick","index","insights","sendEvent","banner","bannerComponent","root","list","bannerRoot","bannerImage","bannerLink","connectIndex","indexWidget","$_ais_getParentIndex","indexName","String","indexId","createInstantSearchComponent","$_ais_instantSearchInstance","searchClient","helper","setClient","search","setIndex","compositionID","stalledSearchDelay","_stalledSearchDelay","routing","onStateChange","searchFunction","_searchFunction","middlewares","next","prev","middleware","indexOf","middlewareToRemove","unuse","middlewareToAdd","use","future","INSTANTSEARCH_FUTURE_DEFAULTS","client","addAlgoliaAgent","vueVersion","mounted","$nextTick","start","dispose","__initialSearchResults","oldApiWarning","insightsClient","validator","router","stateMapping","Number","initialUiState","apiKey","appId","instantsearch","$_ais_ssrInstantSearchInstance","connectQueryRules","trackedFilters","transformRuleContexts","getWidgetAttribute","vnode","componentOptions","propsData","attributes","reduce","acc","curr","connectDynamicWidgets","facets","maxValuesPerFacet","components","Map","set","allComponents","hidden","attributesToRender","get","widgets","AisDynamicWidgets","plugin","install","localVue","defaultCloneComponent","componentInstance","app","options","serverPrefetch","fetch","_base","$router","store","$store","i18n","$i18n","$vnode","Ctor","extend","$root","augmentInstantSearch","instantSearchOptions","cloneComponent","initialResults","findResultsState","instance","renderToString","Promise","resolve","then","beforeCreate","descriptor","isWritable","$nuxt","waitForResults","requestParamsList","getInitialResults","hydrate","getState","parent","results","getResults","_state","localHelper","getHelper","scopedResults","getScopedResults","templatesConfig","createURL","searchMetadata","isSearchStalled","createServerRootMixin","$cloneComponent"],"mappings":"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"}
|
package/vue2/es/package.json.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var r="4.
|
|
1
|
+
var r="4.23.1";export{r as version};
|
|
2
2
|
//# sourceMappingURL=package.json.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"./Menu.vue_rollup-plugin-vue=script.js";export default(function(e,t,n,s,o,i,r,a){var l=("function"==typeof n?n.options:n)||{};return l.__file="Menu.vue",l.render||(l.render=e.render,l.staticRenderFns=e.staticRenderFns,l._compiled=!0,o&&(l.functional=!0)),l._scopeId=s,l}({render:function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.state?n("div",{class:[e.suit(),!e.state.canRefine&&e.suit("","noRefinement")]},[e._t("default",function(){return[n("ul",{class:e.suit("list")},e._l(e.state.items,function(t){return n("li",{key:t.value,class:[e.suit("item"),t.isRefined&&e.suit("item","selected")]},[n("a",{class:e.suit("link"),attrs:{href:e.state.createURL(t.value)},on:{click:function(n){return!n.type.indexOf("key")&&e._k(n.keyCode,"left",37,n.key,["Left","ArrowLeft"])?null:n.ctrlKey||n.shiftKey||n.altKey||n.metaKey?null:"button"in n&&0!==n.button?null:(n.preventDefault(),e.state.refine(t.value))}}},[n("span",{class:e.suit("label")},[e._v(e._s(t.label))]),e._v(" "),n("span",{class:e.suit("count")},[e._v(e._s(t.count))])])])}),0),e._v(" "),e.showShowMoreButton?n("button",{class:[e.suit("showMore"),!e.state.canToggleShowMore&&e.suit("showMore","disabled")],attrs:{disabled:!e.state.canToggleShowMore},on:{click:function(t){return t.preventDefault(),e.state.toggleShowMore.apply(null,arguments)}}},[e._t("showMoreLabel",function(){return[e._v(e._s(e.state.isShowingMore?"Show less":"Show more"))]},{isShowingMore:e.state.isShowingMore})],2):e._e()]},{items:e.state.items,canRefine:e.state.canRefine,canToggleShowMore:e.state.canToggleShowMore,isShowingMore:e.state.isShowingMore,refine:e.state.refine,createURL:e.state.createURL,toggleShowMore:e.state.toggleShowMore,sendEvent:e.state.sendEvent})],2):e._e()},staticRenderFns:[]},0,e,void 0,!1));
|
|
1
|
+
import e from"./Menu.vue_rollup-plugin-vue=script.js";export default(function(e,t,n,s,o,i,r,a){var l=("function"==typeof n?n.options:n)||{};return l.__file="Menu.vue",l.render||(l.render=e.render,l.staticRenderFns=e.staticRenderFns,l._compiled=!0,o&&(l.functional=!0)),l._scopeId=s,l}({render:function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.state?n("div",{class:[e.suit(),!e.state.canRefine&&e.suit("","noRefinement")]},[e._t("default",function(){return[n("ul",{class:e.suit("list")},e._l(e.state.items,function(t){return n("li",{key:t.value,class:[e.suit("item"),t.isRefined&&e.suit("item","selected")]},[n("a",{class:e.suit("link"),attrs:{href:e.state.createURL(t.value)},on:{click:function(n){return!n.type.indexOf("key")&&e._k(n.keyCode,"left",37,n.key,["Left","ArrowLeft"])?null:n.ctrlKey||n.shiftKey||n.altKey||n.metaKey?null:"button"in n&&0!==n.button?null:(n.preventDefault(),e.state.refine(t.value))}}},[n("span",{class:e.suit("label")},[e._v(e._s(t.label))]),e._v(" "),n("span",{class:e.suit("count")},[e._v(e._s(t.count))])])])}),0),e._v(" "),e.showShowMoreButton?n("button",{class:[e.suit("showMore"),!e.state.canToggleShowMore&&e.suit("showMore","disabled")],attrs:{disabled:!e.state.canToggleShowMore},on:{click:function(t){return t.preventDefault(),e.state.toggleShowMore.apply(null,arguments)}}},[e._t("showMoreLabel",function(){return[e._v("\n "+e._s(e.state.isShowingMore?"Show less":"Show more")+"\n ")]},{isShowingMore:e.state.isShowingMore})],2):e._e()]},{items:e.state.items,canRefine:e.state.canRefine,canToggleShowMore:e.state.canToggleShowMore,isShowingMore:e.state.isShowingMore,refine:e.state.refine,createURL:e.state.createURL,toggleShowMore:e.state.toggleShowMore,sendEvent:e.state.sendEvent})],2):e._e()},staticRenderFns:[]},0,e,void 0,!1));
|
|
2
2
|
//# sourceMappingURL=Menu.vue.js.map
|