vue-instantsearch 4.1.1 → 4.2.0

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.
Files changed (40) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/package.json +5 -5
  3. package/src/components/DynamicWidgets.js +1 -1
  4. package/src/components/ExperimentalDynamicWidgets.js +10 -0
  5. package/src/components/__tests__/ExperimentalDynamicWidgets.js +41 -0
  6. package/src/mixins/widget.js +1 -1
  7. package/src/util/__tests__/createServerRootMixin.test.js +141 -61
  8. package/src/util/createServerRootMixin.js +36 -107
  9. package/src/util/testutils/helper.js +2 -2
  10. package/src/widgets.js +3 -0
  11. package/vue2/cjs/index.js +1 -1
  12. package/vue2/cjs/index.js.map +1 -1
  13. package/vue2/es/package.json.js +1 -1
  14. package/vue2/es/src/components/DynamicWidgets.js +1 -1
  15. package/vue2/es/src/components/DynamicWidgets.js.map +1 -1
  16. package/vue2/es/src/components/ExperimentalDynamicWidgets.js +2 -0
  17. package/vue2/es/src/components/ExperimentalDynamicWidgets.js.map +1 -0
  18. package/vue2/es/src/instantsearch.js +1 -1
  19. package/vue2/es/src/mixins/widget.js +1 -1
  20. package/vue2/es/src/mixins/widget.js.map +1 -1
  21. package/vue2/es/src/util/createServerRootMixin.js +1 -1
  22. package/vue2/es/src/util/createServerRootMixin.js.map +1 -1
  23. package/vue2/es/src/widgets.js +1 -1
  24. package/vue2/umd/index.js +1 -1
  25. package/vue2/umd/index.js.map +1 -1
  26. package/vue3/cjs/index.js +1 -1
  27. package/vue3/cjs/index.js.map +1 -1
  28. package/vue3/es/package.json.js +1 -1
  29. package/vue3/es/src/components/DynamicWidgets.js +1 -1
  30. package/vue3/es/src/components/DynamicWidgets.js.map +1 -1
  31. package/vue3/es/src/components/ExperimentalDynamicWidgets.js +2 -0
  32. package/vue3/es/src/components/ExperimentalDynamicWidgets.js.map +1 -0
  33. package/vue3/es/src/instantsearch.js +1 -1
  34. package/vue3/es/src/mixins/widget.js +1 -1
  35. package/vue3/es/src/mixins/widget.js.map +1 -1
  36. package/vue3/es/src/util/createServerRootMixin.js +1 -1
  37. package/vue3/es/src/util/createServerRootMixin.js.map +1 -1
  38. package/vue3/es/src/widgets.js +1 -1
  39. package/vue3/umd/index.js +1 -1
  40. package/vue3/umd/index.js.map +1 -1
@@ -1,2 +1,2 @@
1
- var r="4.1.1";export{r as version};
1
+ var r="4.2.0";export{r as version};
2
2
  //# sourceMappingURL=package.json.js.map
@@ -1,2 +1,2 @@
1
- import{createSuitMixin as t}from"../mixins/suit.js";import"vue";import{renderCompat as i,getDefaultSlot as r}from"../util/vue-compat/index-2.js";import{createWidgetMixin as n}from"../mixins/widget.js";import{connectDynamicWidgets as e}from"instantsearch.js/es/connectors";import{_objectSpread as s}from"../util/polyfills.js";export default{name:"AisExperimentalDynamicWidgets",mixins:[n({connector:e}),t({name:"DynamicWidgets"})],props:{transformItems:{type:Function,default:void 0}},render:i(function(t){var i=this,n=new Map;if((r(this)||[]).forEach(function(r){var e=function t(i){var r,n=i.componentOptions&&i.componentOptions.propsData;if(n){if(n.attribute)return n.attribute;if(Array.isArray(n.attributes))return n.attributes[0]}if(r=i.componentOptions&&i.componentOptions.children?i.componentOptions.children:i.children,Array.isArray(r))return r.reduce(function(i,r){return i||t(r)},void 0)}(r);e&&n.set(e,t("div",{key:e,class:[i.suit("widget")]},[r]))}),!this.state){var e=[];return n.forEach(function(t){return e.push(t)}),t("div",s({class:[this.suit()]},{attrs:{hidden:!0}}),e)}return t("div",{class:[this.suit()]},this.state.attributesToRender.map(function(t){return n.get(t)}))}),computed:{widgetParams:function(){return{transformItems:this.transformItems,widgets:[]}}}};
1
+ import{createSuitMixin as t}from"../mixins/suit.js";import"vue";import{renderCompat as i,getDefaultSlot as r}from"../util/vue-compat/index-2.js";import{createWidgetMixin as n}from"../mixins/widget.js";import{connectDynamicWidgets as e}from"instantsearch.js/es/connectors";import{_objectSpread as s}from"../util/polyfills.js";export default{name:"AisDynamicWidgets",mixins:[n({connector:e}),t({name:"DynamicWidgets"})],props:{transformItems:{type:Function,default:void 0}},render:i(function(t){var i=this,n=new Map;if((r(this)||[]).forEach(function(r){var e=function t(i){var r,n=i.componentOptions&&i.componentOptions.propsData;if(n){if(n.attribute)return n.attribute;if(Array.isArray(n.attributes))return n.attributes[0]}if(r=i.componentOptions&&i.componentOptions.children?i.componentOptions.children:i.children,Array.isArray(r))return r.reduce(function(i,r){return i||t(r)},void 0)}(r);e&&n.set(e,t("div",{key:e,class:[i.suit("widget")]},[r]))}),!this.state){var e=[];return n.forEach(function(t){return e.push(t)}),t("div",s({class:[this.suit()]},{attrs:{hidden:!0}}),e)}return t("div",{class:[this.suit()]},this.state.attributesToRender.map(function(t){return n.get(t)}))}),computed:{widgetParams:function(){return{transformItems:this.transformItems,widgets:[]}}}};
2
2
  //# sourceMappingURL=DynamicWidgets.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DynamicWidgets.js","sources":["../../../../src/components/DynamicWidgets.js"],"sourcesContent":["import { createWidgetMixin } from '../mixins/widget';\nimport { connectDynamicWidgets } from 'instantsearch.js/es/connectors';\nimport { createSuitMixin } from '../mixins/suit';\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: 'AisExperimentalDynamicWidgets',\n mixins: [\n createWidgetMixin({ connector: connectDynamicWidgets }),\n createSuitMixin({ name: 'DynamicWidgets' }),\n ],\n props: {\n transformItems: {\n type: Function,\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 => components.get(attribute))\n );\n }),\n computed: {\n widgetParams() {\n return {\n transformItems: this.transformItems,\n // we do not pass \"widgets\" to the connector, since Vue is in charge of rendering\n widgets: [],\n };\n },\n },\n};\n"],"names":["name","mixins","createWidgetMixin","connector","connectDynamicWidgets","createSuitMixin","props","transformItems","type","Function","default","undefined","render","renderCompat","h","components","Map","getDefaultSlot","this","forEach","vnode","const","attribute","getWidgetAttribute","children","componentOptions","propsData","Array","isArray","attributes","reduce","acc","curr","set","key","class","suit","state","allComponents","component","push","_objectSpread","attrs","hidden","attributesToRender","map","get","computed","widgetParams","widgets"],"mappings":"mVAyCe,CACbA,KAAM,gCACNC,OAAQ,CACNC,EAAkB,CAAEC,UAAWC,IAC/BC,EAAgB,CAAEL,KAAM,oBAE1BM,MAAO,CACLC,eAAgB,CACdC,KAAMC,SACNC,aAASC,IAGbC,OAAQC,EAAa,SAASC,cACtBC,EAAa,IAAIC,IAavB,IAXCC,EAAeC,OAAS,IAAIC,iBAAQC,GACnCC,IAAMC,EAnDZ,SAASC,EAAmBH,GAC1BC,IAYIG,EAZElB,EAEFc,EAAMK,kBAAoBL,EAAMK,iBAAiBC,UACrD,GAAIpB,EAAO,CACT,GAAIA,EAAMgB,UACR,OAAOhB,EAAMgB,UAEf,GAAIK,MAAMC,QAAQtB,EAAMuB,YACtB,OAAOvB,EAAMuB,WAAW,GAe5B,GANEL,EACEJ,EAAMK,kBAAoBL,EAAMK,iBAAiBD,SAC7CJ,EAAMK,iBAAiBD,SACvBJ,EAAMI,SAGVG,MAAMC,QAAQJ,GAEhB,OAAOA,EAASM,gBACbC,EAAKC,UAASD,GAAOR,EAAmBS,SACzCrB,GAuBkBY,CAAmBH,GACjCE,GACFP,EAAWkB,IACTX,EACAR,EAAE,MAAO,CAAEoB,IAAKZ,EAAWa,MAAO,CAACjB,EAAKkB,KAAK,YAAc,CAAChB,QAM7DF,KAAKmB,MAAO,CACfhB,IAAMiB,EAAgB,GAGtB,OAFAvB,EAAWI,iBAAQoB,UAAaD,EAAcE,KAAKD,KAE5CzB,EACL,MACA2B,EACE,CACEN,MAAO,CAACjB,KAAKkB,SAEf,CAAEM,MAAO,CAAEC,QAAQ,KAErBL,GAIJ,OAAOxB,EACL,MACA,CAAEqB,MAAO,CAACjB,KAAKkB,SACflB,KAAKmB,MAAMO,mBAAmBC,aAAIvB,UAAaP,EAAW+B,IAAIxB,QAGlEyB,SAAU,CACRC,wBACE,MAAO,CACLzC,eAAgBW,KAAKX,eAErB0C,QAAS"}
1
+ {"version":3,"file":"DynamicWidgets.js","sources":["../../../../src/components/DynamicWidgets.js"],"sourcesContent":["import { createWidgetMixin } from '../mixins/widget';\nimport { connectDynamicWidgets } from 'instantsearch.js/es/connectors';\nimport { createSuitMixin } from '../mixins/suit';\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({ connector: connectDynamicWidgets }),\n createSuitMixin({ name: 'DynamicWidgets' }),\n ],\n props: {\n transformItems: {\n type: Function,\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 => components.get(attribute))\n );\n }),\n computed: {\n widgetParams() {\n return {\n transformItems: this.transformItems,\n // we do not pass \"widgets\" to the connector, since Vue is in charge of rendering\n widgets: [],\n };\n },\n },\n};\n"],"names":["name","mixins","createWidgetMixin","connector","connectDynamicWidgets","createSuitMixin","props","transformItems","type","Function","default","undefined","render","renderCompat","h","components","Map","getDefaultSlot","this","forEach","vnode","const","attribute","getWidgetAttribute","children","componentOptions","propsData","Array","isArray","attributes","reduce","acc","curr","set","key","class","suit","state","allComponents","component","push","_objectSpread","attrs","hidden","attributesToRender","map","get","computed","widgetParams","widgets"],"mappings":"mVAyCe,CACbA,KAAM,oBACNC,OAAQ,CACNC,EAAkB,CAAEC,UAAWC,IAC/BC,EAAgB,CAAEL,KAAM,oBAE1BM,MAAO,CACLC,eAAgB,CACdC,KAAMC,SACNC,aAASC,IAGbC,OAAQC,EAAa,SAASC,cACtBC,EAAa,IAAIC,IAavB,IAXCC,EAAeC,OAAS,IAAIC,iBAAQC,GACnCC,IAAMC,EAnDZ,SAASC,EAAmBH,GAC1BC,IAYIG,EAZElB,EAEFc,EAAMK,kBAAoBL,EAAMK,iBAAiBC,UACrD,GAAIpB,EAAO,CACT,GAAIA,EAAMgB,UACR,OAAOhB,EAAMgB,UAEf,GAAIK,MAAMC,QAAQtB,EAAMuB,YACtB,OAAOvB,EAAMuB,WAAW,GAe5B,GANEL,EACEJ,EAAMK,kBAAoBL,EAAMK,iBAAiBD,SAC7CJ,EAAMK,iBAAiBD,SACvBJ,EAAMI,SAGVG,MAAMC,QAAQJ,GAEhB,OAAOA,EAASM,gBACbC,EAAKC,UAASD,GAAOR,EAAmBS,SACzCrB,GAuBkBY,CAAmBH,GACjCE,GACFP,EAAWkB,IACTX,EACAR,EAAE,MAAO,CAAEoB,IAAKZ,EAAWa,MAAO,CAACjB,EAAKkB,KAAK,YAAc,CAAChB,QAM7DF,KAAKmB,MAAO,CACfhB,IAAMiB,EAAgB,GAGtB,OAFAvB,EAAWI,iBAAQoB,UAAaD,EAAcE,KAAKD,KAE5CzB,EACL,MACA2B,EACE,CACEN,MAAO,CAACjB,KAAKkB,SAEf,CAAEM,MAAO,CAAEC,QAAQ,KAErBL,GAIJ,OAAOxB,EACL,MACA,CAAEqB,MAAO,CAACjB,KAAKkB,SACflB,KAAKmB,MAAMO,mBAAmBC,aAAIvB,UAAaP,EAAW+B,IAAIxB,QAGlEyB,SAAU,CACRC,wBACE,MAAO,CACLzC,eAAgBW,KAAKX,eAErB0C,QAAS"}
@@ -0,0 +1,2 @@
1
+ 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.")}});
2
+ //# sourceMappingURL=ExperimentalDynamicWidgets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExperimentalDynamicWidgets.js","sources":["../../../../src/components/ExperimentalDynamicWidgets.js"],"sourcesContent":["import AisDynamicWidgets from './DynamicWidgets';\nimport { warn } from '../util/warn';\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"],"names":["Object","assign","AisDynamicWidgets","name","mounted","warn"],"mappings":"yFAIeA,OAAOC,OAAO,GAAIC,EAAmB,CAClDC,KAAM,gCACNC,mBACEC,EAAK"}
@@ -1,2 +1,2 @@
1
- export{createSuitMixin}from"./mixins/suit.js";export{createWidgetMixin}from"./mixins/widget.js";export{default as AisAutocomplete}from"./components/Autocomplete.vue.js";export{default as AisBreadcrumb}from"./components/Breadcrumb.vue.js";export{default as AisClearRefinements}from"./components/ClearRefinements.vue.js";export{default as AisConfigure}from"./components/Configure.js";export{default as AisExperimentalConfigureRelatedItems}from"./components/ConfigureRelatedItems.js";export{default as AisCurrentRefinements}from"./components/CurrentRefinements.vue.js";export{default as AisHierarchicalMenu}from"./components/HierarchicalMenu.vue.js";export{default as AisHighlight}from"./components/Highlight.vue.js";export{default as AisHits}from"./components/Hits.vue.js";export{default as AisHitsPerPage}from"./components/HitsPerPage.vue.js";export{default as AisIndex}from"./components/Index.js";export{default as AisInstantSearch}from"./components/InstantSearch.js";export{default as AisInstantSearchSsr}from"./components/InstantSearchSsr.js";export{default as AisInfiniteHits}from"./components/InfiniteHits.vue.js";export{default as AisMenu}from"./components/Menu.vue.js";export{default as AisMenuSelect}from"./components/MenuSelect.vue.js";export{default as AisNumericMenu}from"./components/NumericMenu.vue.js";export{default as AisPagination}from"./components/Pagination.vue.js";export{default as AisPanel}from"./components/Panel.vue.js";export{default as AisPoweredBy}from"./components/PoweredBy.vue.js";export{default as AisQueryRuleContext}from"./components/QueryRuleContext.js";export{default as AisQueryRuleCustomData}from"./components/QueryRuleCustomData.vue.js";export{default as AisRangeInput}from"./components/RangeInput.vue.js";export{default as AisRatingMenu}from"./components/RatingMenu.vue.js";export{default as AisRefinementList}from"./components/RefinementList.vue.js";export{default as AisStateResults}from"./components/StateResults.vue.js";export{default as AisSearchBox}from"./components/SearchBox.vue.js";export{default as AisSnippet}from"./components/Snippet.vue.js";export{default as AisSortBy}from"./components/SortBy.vue.js";export{default as AisStats}from"./components/Stats.vue.js";export{default as AisToggleRefinement}from"./components/ToggleRefinement.vue.js";export{default as AisVoiceSearch}from"./components/VoiceSearch.vue.js";export{default as AisRelevantSort}from"./components/RelevantSort.vue.js";export{default as AisDynamicWidgets}from"./components/DynamicWidgets.js";import"./widgets.js";export{plugin as default}from"./plugin.js";export{createServerRootMixin}from"./util/createServerRootMixin.js";
1
+ export{createSuitMixin}from"./mixins/suit.js";export{createWidgetMixin}from"./mixins/widget.js";export{default as AisAutocomplete}from"./components/Autocomplete.vue.js";export{default as AisBreadcrumb}from"./components/Breadcrumb.vue.js";export{default as AisClearRefinements}from"./components/ClearRefinements.vue.js";export{default as AisConfigure}from"./components/Configure.js";export{default as AisExperimentalConfigureRelatedItems}from"./components/ConfigureRelatedItems.js";export{default as AisCurrentRefinements}from"./components/CurrentRefinements.vue.js";export{default as AisHierarchicalMenu}from"./components/HierarchicalMenu.vue.js";export{default as AisHighlight}from"./components/Highlight.vue.js";export{default as AisHits}from"./components/Hits.vue.js";export{default as AisHitsPerPage}from"./components/HitsPerPage.vue.js";export{default as AisIndex}from"./components/Index.js";export{default as AisInstantSearch}from"./components/InstantSearch.js";export{default as AisInstantSearchSsr}from"./components/InstantSearchSsr.js";export{default as AisInfiniteHits}from"./components/InfiniteHits.vue.js";export{default as AisMenu}from"./components/Menu.vue.js";export{default as AisMenuSelect}from"./components/MenuSelect.vue.js";export{default as AisNumericMenu}from"./components/NumericMenu.vue.js";export{default as AisPagination}from"./components/Pagination.vue.js";export{default as AisPanel}from"./components/Panel.vue.js";export{default as AisPoweredBy}from"./components/PoweredBy.vue.js";export{default as AisQueryRuleContext}from"./components/QueryRuleContext.js";export{default as AisQueryRuleCustomData}from"./components/QueryRuleCustomData.vue.js";export{default as AisRangeInput}from"./components/RangeInput.vue.js";export{default as AisRatingMenu}from"./components/RatingMenu.vue.js";export{default as AisRefinementList}from"./components/RefinementList.vue.js";export{default as AisStateResults}from"./components/StateResults.vue.js";export{default as AisSearchBox}from"./components/SearchBox.vue.js";export{default as AisSnippet}from"./components/Snippet.vue.js";export{default as AisSortBy}from"./components/SortBy.vue.js";export{default as AisStats}from"./components/Stats.vue.js";export{default as AisToggleRefinement}from"./components/ToggleRefinement.vue.js";export{default as AisVoiceSearch}from"./components/VoiceSearch.vue.js";export{default as AisRelevantSort}from"./components/RelevantSort.vue.js";export{default as AisDynamicWidgets}from"./components/DynamicWidgets.js";export{default as AisExperimentalDynamicWidgets}from"./components/ExperimentalDynamicWidgets.js";import"./widgets.js";export{plugin as default}from"./plugin.js";export{createServerRootMixin}from"./util/createServerRootMixin.js";
2
2
  //# sourceMappingURL=instantsearch.js.map
@@ -1,2 +1,2 @@
1
- import"vue";import"../util/vue-compat/index-2.js";import{warn as t}from"../util/warn.js";var e=function(e){var n;void 0===e&&(e={});var i=e.connector;return(n={inject:{instantSearchInstance:{from:"$_ais_instantSearchInstance",default:function(){var t=this.$options._componentTag;throw new TypeError('It looks like you forgot to wrap your Algolia search component "<'+t+'>" inside of an "<ais-instant-search>" 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 i){if(this.factory=i(this.updateState,function(){}),this.widget=this.factory(this.widgetParams),this.getParentIndex().addWidgets([this.widget]),this.instantSearchInstance.__initialSearchResults&&!this.instantSearchInstance.started){if("function"!=typeof this.instantSearchInstance.__forceRender)throw new Error("You are using server side rendering with <ais-instant-search> instead of <ais-instant-search-ssr>.");this.instantSearchInstance.__forceRender(this.widget,this.getParentIndex())}}else!0!==i&&t("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])},n.watch={widgetParams:{handler:function(t){this.state=null,this.getParentIndex().removeWidgets([this.widget]),this.widget=this.factory(t),this.getParentIndex().addWidgets([this.widget])},deep:!0}},n.methods={updateState:function(t,e){void 0===t&&(t={}),e||(this.state=t)}},n};export{e as createWidgetMixin};
1
+ import"vue";import"../util/vue-compat/index-2.js";import{warn as t}from"../util/warn.js";var e=function(e){var n;void 0===e&&(e={});var i=e.connector;return(n={inject:{instantSearchInstance:{from:"$_ais_instantSearchInstance",default:function(){var t=this.$options._componentTag;throw new TypeError('It looks like you forgot to wrap your Algolia search component "<'+t+'>" inside of an "<ais-instant-search>" 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 i){if(this.factory=i(this.updateState,function(){}),this.widget=this.factory(this.widgetParams),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 <ais-instant-search> instead of <ais-instant-search-ssr>.");this.instantSearchInstance.__forceRender(this.widget,this.getParentIndex())}}else!0!==i&&t("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])},n.watch={widgetParams:{handler:function(t){this.state=null,this.getParentIndex().removeWidgets([this.widget]),this.widget=this.factory(t),this.getParentIndex().addWidgets([this.widget])},deep:!0}},n.methods={updateState:function(t,e){void 0===t&&(t={}),e||(this.state=t)}},n};export{e as createWidgetMixin};
2
2
  //# sourceMappingURL=widget.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"widget.js","sources":["../../../../src/mixins/widget.js"],"sourcesContent":["import { isVue3 } from '../util/vue-compat';\nimport { warn } from '../util/warn';\n\nexport const createWidgetMixin = ({ connector } = {}) => ({\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 = this.factory(this.widgetParams);\n this.getParentIndex().addWidgets([this.widget]);\n\n if (\n this.instantSearchInstance.__initialSearchResults &&\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 = this.factory(nextWidgetParams);\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"],"names":["createWidgetMixin","ref","inject","instantSearchInstance","from","default","const","tag","this","$options","_componentTag","TypeError","getParentIndex","mainIndex","data","state","created","connector","factory","updateState","widget","widgetParams","addWidgets","__initialSearchResults","started","__forceRender","Error","warn","removeWidgets","watch","handler","nextWidgetParams","deep","methods","isFirstRender"],"mappings":"yFAGY,IAACA,WAAqBC,wBAAgB,+BAAQ,CACxDC,OAAQ,CACNC,sBAAuB,CACrBC,KAAM,8BACNC,mBACEC,IAAMC,EAAMC,KAAKC,SAASC,cAC1B,MAAM,IAAIC,8EAC4DJ,yDAI1EK,eAAgB,CACdR,KAAM,uBACNC,8BACE,yBAAaG,EAAKL,sBAAsBU,cAI9CC,gBACE,MAAO,CACLC,MAAO,OAGXC,mBACE,GAAyB,mBAAdC,GAKT,GAJAT,KAAKU,QAAUD,EAAUT,KAAKW,0BAC9BX,KAAKY,OAASZ,KAAKU,QAAQV,KAAKa,cAChCb,KAAKI,iBAAiBU,WAAW,CAACd,KAAKY,SAGrCZ,KAAKL,sBAAsBoB,yBAC1Bf,KAAKL,sBAAsBqB,QAC5B,CACA,GAAwD,mBAA7ChB,KAAKL,sBAAsBsB,cACpC,MAAM,IAAIC,MACR,sGAGJlB,KAAKL,sBAAsBsB,cACzBjB,KAAKY,OACLZ,KAAKI,wBAGc,IAAdK,GACTU,EACE,uWAUqC,yBACrCnB,KAAKY,QACPZ,KAAKI,iBAAiBgB,cAAc,CAACpB,KAAKY,YAG9CS,MAAO,CACLR,aAAc,CACZS,iBAAQC,GACNvB,KAAKO,MAAQ,KACbP,KAAKI,iBAAiBgB,cAAc,CAACpB,KAAKY,SAC1CZ,KAAKY,OAASZ,KAAKU,QAAQa,GAC3BvB,KAAKI,iBAAiBU,WAAW,CAACd,KAAKY,UAEzCY,MAAM,MAGVC,QAAS,CACPd,qBAAYJ,EAAYmB,kBAAJ,IACbA,IAGH1B,KAAKO,MAAQA"}
1
+ {"version":3,"file":"widget.js","sources":["../../../../src/mixins/widget.js"],"sourcesContent":["import { isVue3 } from '../util/vue-compat';\nimport { warn } from '../util/warn';\n\nexport const createWidgetMixin = ({ connector } = {}) => ({\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 = this.factory(this.widgetParams);\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 = this.factory(nextWidgetParams);\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"],"names":["createWidgetMixin","ref","inject","instantSearchInstance","from","default","const","tag","this","$options","_componentTag","TypeError","getParentIndex","mainIndex","data","state","created","connector","factory","updateState","widget","widgetParams","addWidgets","_initialResults","started","__forceRender","Error","warn","removeWidgets","watch","handler","nextWidgetParams","deep","methods","isFirstRender"],"mappings":"yFAGY,IAACA,WAAqBC,wBAAgB,+BAAQ,CACxDC,OAAQ,CACNC,sBAAuB,CACrBC,KAAM,8BACNC,mBACEC,IAAMC,EAAMC,KAAKC,SAASC,cAC1B,MAAM,IAAIC,8EAC4DJ,yDAI1EK,eAAgB,CACdR,KAAM,uBACNC,8BACE,yBAAaG,EAAKL,sBAAsBU,cAI9CC,gBACE,MAAO,CACLC,MAAO,OAGXC,mBACE,GAAyB,mBAAdC,GAKT,GAJAT,KAAKU,QAAUD,EAAUT,KAAKW,0BAC9BX,KAAKY,OAASZ,KAAKU,QAAQV,KAAKa,cAChCb,KAAKI,iBAAiBU,WAAW,CAACd,KAAKY,SAGrCZ,KAAKL,sBAAsBoB,kBAC1Bf,KAAKL,sBAAsBqB,QAC5B,CACA,GAAwD,mBAA7ChB,KAAKL,sBAAsBsB,cACpC,MAAM,IAAIC,MACR,sGAGJlB,KAAKL,sBAAsBsB,cACzBjB,KAAKY,OACLZ,KAAKI,wBAGc,IAAdK,GACTU,EACE,uWAUqC,yBACrCnB,KAAKY,QACPZ,KAAKI,iBAAiBgB,cAAc,CAACpB,KAAKY,YAG9CS,MAAO,CACLR,aAAc,CACZS,iBAAQC,GACNvB,KAAKO,MAAQ,KACbP,KAAKI,iBAAiBgB,cAAc,CAACpB,KAAKY,SAC1CZ,KAAKY,OAASZ,KAAKU,QAAQa,GAC3BvB,KAAKI,iBAAiBU,WAAW,CAACd,KAAKY,UAEzCY,MAAM,MAGVC,QAAS,CACPd,qBAAYJ,EAAYmB,kBAAJ,IACbA,IAGH1B,KAAKO,MAAQA"}
@@ -1,2 +1,2 @@
1
- import"vue";import{Vue2 as e}from"./vue-compat/index-2.js";import{warn as t}from"./warn.js";import n from"instantsearch.js/es";import r from"algoliasearch-helper";var i=r.SearchResults,s=r.SearchParameters;function a(t,n){void 0===n&&(n={});var r=n.mixins;void 0===r&&(r=[]);var i,s={serverPrefetch:void 0,fetch:void 0,_base:void 0,name:"ais-ssr-root-component"};return s.router=t.$router,s.store=t.$store,(i=new(t.$vnode?t.$vnode.componentOptions.Ctor.extend(s):e.component(Object.assign({},t.$options,s)))({propsData:t.$options.propsData,mixins:[].concat(r)})).$slots=t.$slots,i.$root=t.$root,i.$options.serverPrefetch=[],i}function o(e,a,o,c){var u,d=r(a,o),f=n(e);return f.findResultsState=function(e){var t,n,r=e.component,i=e.renderToString;if(!i)throw new Error("findResultsState requires `renderToString: (component) => Promise<string>` in the first argument.");return Promise.resolve().then(function(){t=c(r,{mixins:[{created:function(){n=this,this.instantsearch.helper=d,this.instantsearch.mainHelper=d,this.instantsearch.mainIndex.init({instantSearchInstance:this.instantsearch,parent:null,uiState:this.instantsearch._initialUiState})}}]})}).then(function(){return i(t)}).then(function(){return function(e){return new Promise(function(t,n){e.searchOnlyWithDerivedHelpers(),e.derivedHelpers[0].on("result",function(){t()}),e.derivedHelpers.forEach(function(e){return e.on("error",function(e){n(e)})})})}(d)}).then(function(){var e={};return function e(t,n){return n(t),t.getWidgets().forEach(function(t){"ais.index"===t.$$type&&(n(t),e(t,n))})}(n.instantsearch.mainIndex,function(t){e[t.getIndexId()]=t.getResults()}),f.hydrate(e),u=Object.keys(e).map(function(t){var n=e[t],r=n._state,i=n._rawResults;return[t,{_state:Object.keys(r).reduce(function(e,t){return e[t]=r[t],e},{}),_rawResults:i}]}).reduce(function(e,t){var n=t[0],r=t[1];return e[n]=r,e},{__identifier:"stringified"}),f.getState()})},f.getState=function(){if(!u)throw new Error("You need to wait for findResultsState to finish");return u},f.__forceRender=function(e,t){var n=t.getHelper(),r=f.__initialSearchResults[t.getIndexId()];if(r){var i=r._state;n.state=i,e.render({helper:n,results:r,scopedResults:t.getScopedResults().map(function(e){return Object.assign(e,{results:f.__initialSearchResults[e.indexId]})}),parent:t,state:i,templatesConfig:{},createURL:t.createURL,instantSearchInstance:f,searchMetadata:{isSearchStalled:!1}})}},f.hydrate=function(e){if(e){var n="stringified"===e.__identifier?Object.keys(e).reduce(function(t,n){return"__identifier"===n?t:(t[n]=new i(new s(e[n]._state),e[n]._rawResults),t)},{}):e;f.__initialSearchResults=n,f.helper=d,f.mainHelper=d,f.mainIndex.init({instantSearchInstance:f,parent:null,uiState:f._initialUiState})}else t("The result of `findResultsState()` needs to be passed to `hydrate()`.")},f}function c(e){void 0===e&&(e={});var t=e.searchClient,n=e.indexName,r=e.$cloneComponent;if(void 0===r&&(r=a),!t||!n)throw new Error("createServerRootMixin requires `searchClient` and `indexName` in the first argument");var i=o(e,t,n,r);return{provide:function(){return{$_ais_ssrInstantSearchInstance:this.instantsearch}},data:function(){return{instantsearch:i}}}}export{c as createServerRootMixin};
1
+ import"vue";import{Vue2 as t}from"./vue-compat/index-2.js";import{warn as e}from"./warn.js";import n from"instantsearch.js/es";function r(e,n){void 0===n&&(n={});var r=n.mixins;void 0===r&&(r=[]);var o,s={serverPrefetch:void 0,fetch:void 0,_base:void 0,name:"ais-ssr-root-component"};return s.router=e.$router,s.store=e.$store,(o=new(e.$vnode?e.$vnode.componentOptions.Ctor.extend(s):t.component(Object.assign({},e.$options,s)))({propsData:e.$options.propsData,mixins:[].concat(r)})).$slots=e.$slots,o.$root=e.$root,o.$options.serverPrefetch=[],o}function o(t,r){var o,s=n(t);return s.findResultsState=function(t){var e,n,i=t.component,a=t.renderToString;if(!a)throw new Error("findResultsState requires `renderToString: (component) => Promise<string>` in the first argument.");return Promise.resolve().then(function(){e=r(i,{mixins:[{created:function(){(n=this.instantsearch).start(),n.started=!1}}]})}).then(function(){return a(e)}).then(function(){return t=n.mainHelper,new Promise(function(e,n){t.searchOnlyWithDerivedHelpers(),t.derivedHelpers[0].on("result",function(){e()}),t.derivedHelpers.forEach(function(t){return t.on("error",function(t){n(t)})})});var t}).then(function(){return o={},function t(e,n){return n(e),e.getWidgets().forEach(function(e){"ais.index"===e.$$type&&(n(e),t(e,n))})}(n.mainIndex,function(t){var e=t.getResults(),n=e._state,r=e._rawResults;o[t.getIndexId()]={state:Object.keys(n).reduce(function(t,e){return t[e]=n[e],t},{}),results:r}}),s.hydrate(o),s.getState()})},s.getState=function(){if(!o)throw new Error("You need to wait for findResultsState to finish");return o},s.__forceRender=function(t,e){var n=e.getResults();if(null!==n){var r=n._state,o=e.getHelper();o.state=r,t.render({helper:o,results:n,scopedResults:e.getScopedResults(),parent:e,state:r,templatesConfig:{},createURL:e.createURL,instantSearchInstance:s,searchMetadata:{isSearchStalled:!1}})}},s.hydrate=function(t){t?(s._initialResults=t,s.start(),s.started=!1):e("The result of `findResultsState()` needs to be passed to `hydrate()`.")},s}function s(t){void 0===t&&(t={});var e=t.$cloneComponent;void 0===e&&(e=r);var n=o(t,e);return{provide:function(){return{$_ais_ssrInstantSearchInstance:this.instantsearch}},data:function(){return{instantsearch:n}}}}export{s as createServerRootMixin};
2
2
  //# sourceMappingURL=createServerRootMixin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createServerRootMixin.js","sources":["../../../../src/util/createServerRootMixin.js"],"sourcesContent":["import instantsearch from 'instantsearch.js/es';\nimport algoliaHelper from 'algoliasearch-helper';\nimport { isVue3, isVue2, Vue2, createSSRApp } from '../util/vue-compat';\nconst { SearchResults, SearchParameters } = algoliaHelper;\nimport { warn } from './warn';\n\nfunction walkIndex(indexWidget, visit) {\n visit(indexWidget);\n\n return indexWidget.getWidgets().forEach(widget => {\n if (widget.$$type !== 'ais.index') return;\n visit(widget);\n walkIndex(widget, visit);\n });\n}\n\nfunction searchOnlyWithDerivedHelpers(helper) {\n return new Promise((resolve, reject) => {\n helper.searchOnlyWithDerivedHelpers();\n\n // we assume all derived helpers resolve at least in the same tick\n helper.derivedHelpers[0].on('result', () => {\n resolve();\n });\n\n helper.derivedHelpers.forEach(derivedHelper =>\n derivedHelper.on('error', e => {\n reject(e);\n })\n );\n });\n}\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 = [...appOptions.mixins, ...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 } else {\n // copy over global Vue APIs\n options.router = componentInstance.$router;\n options.store = componentInstance.$store;\n\n const Extended = componentInstance.$vnode\n ? componentInstance.$vnode.componentOptions.Ctor.extend(options)\n : Vue2.component(Object.assign({}, componentInstance.$options, options));\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(\n instantSearchOptions,\n searchClient,\n indexName,\n cloneComponent\n) {\n /* eslint-disable no-param-reassign */\n\n const helper = algoliaHelper(searchClient, indexName);\n const search = instantsearch(instantSearchOptions);\n\n let resultsState;\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 renderedComponent;\n\n return Promise.resolve()\n .then(() => {\n app = cloneComponent(component, {\n mixins: [\n {\n created() {\n // eslint-disable-next-line consistent-this\n renderedComponent = this;\n this.instantsearch.helper = helper;\n this.instantsearch.mainHelper = helper;\n\n this.instantsearch.mainIndex.init({\n instantSearchInstance: this.instantsearch,\n parent: null,\n uiState: this.instantsearch._initialUiState,\n });\n },\n },\n ],\n });\n })\n .then(() => renderToString(app))\n .then(() => searchOnlyWithDerivedHelpers(helper))\n .then(() => {\n const results = {};\n walkIndex(renderedComponent.instantsearch.mainIndex, widget => {\n results[widget.getIndexId()] = widget.getResults();\n });\n\n search.hydrate(results);\n\n resultsState = Object.keys(results)\n .map(indexId => {\n const { _state, _rawResults } = results[indexId];\n return [\n indexId,\n {\n // copy just the values of SearchParameters, not the functions\n _state: Object.keys(_state).reduce((acc, key) => {\n acc[key] = _state[key];\n return acc;\n }, {}),\n _rawResults,\n },\n ];\n })\n .reduce(\n (acc, [key, val]) => {\n acc[key] = val;\n return acc;\n },\n {\n __identifier: 'stringified',\n }\n );\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 (!resultsState) {\n throw new Error('You need to wait for findResultsState to finish');\n }\n return resultsState;\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 localHelper = parent.getHelper();\n\n const results = search.__initialSearchResults[parent.getIndexId()];\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) {\n return;\n }\n\n const state = results._state;\n\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().map(result =>\n Object.assign(result, {\n results: search.__initialSearchResults[result.indexId],\n })\n ),\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 const initialResults =\n results.__identifier === 'stringified'\n ? Object.keys(results).reduce((acc, indexId) => {\n if (indexId === '__identifier') {\n return acc;\n }\n acc[indexId] = new SearchResults(\n new SearchParameters(results[indexId]._state),\n results[indexId]._rawResults\n );\n return acc;\n }, {})\n : results;\n\n search.__initialSearchResults = initialResults;\n\n search.helper = helper;\n search.mainHelper = helper;\n\n search.mainIndex.init({\n instantSearchInstance: search,\n parent: null,\n uiState: search._initialUiState,\n });\n };\n\n /* eslint-enable no-param-reassign */\n return search;\n}\n\nexport function createServerRootMixin(instantSearchOptions = {}) {\n const {\n searchClient,\n indexName,\n $cloneComponent = defaultCloneComponent,\n } = instantSearchOptions;\n\n if (!searchClient || !indexName) {\n throw new Error(\n 'createServerRootMixin requires `searchClient` and `indexName` in the first argument'\n );\n }\n\n const search = augmentInstantSearch(\n instantSearchOptions,\n searchClient,\n indexName,\n $cloneComponent\n );\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 & duplicated render do not share\n // the same instantsearch instance.\n instantsearch: search,\n };\n },\n };\n\n return rootMixin;\n}\n"],"names":["defaultCloneComponent","componentInstance","ref","const","app","options","serverPrefetch","undefined","fetch","_base","name","router","$router","store","$store","$vnode","componentOptions","Ctor","extend","Vue2","component","Object","assign","$options","propsData","mixins","$slots","$root","augmentInstantSearch","instantSearchOptions","searchClient","indexName","cloneComponent","resultsState","helper","algoliaHelper","search","instantsearch","findResultsState","renderedComponent","renderToString","Error","Promise","resolve","then","created","this","mainHelper","mainIndex","init","instantSearchInstance","parent","uiState","_initialUiState","reject","searchOnlyWithDerivedHelpers","derivedHelpers","on","forEach","derivedHelper","e","results","walkIndex","indexWidget","visit","getWidgets","widget","$$type","getIndexId","getResults","hydrate","keys","map","indexId","_state","reduce","acc","key","_rawResults","val","__identifier","getState","__forceRender","localHelper","getHelper","__initialSearchResults","state","render","scopedResults","getScopedResults","result","templatesConfig","createURL","searchMetadata","isSearchStalled","initialResults","SearchResults","SearchParameters","warn","createServerRootMixin","$cloneComponent","provide","$_ais_ssrInstantSearchInstance","data"],"mappings":"mKAGA,2CA8BA,SAASA,EAAsBC,EAAmBC,kBAAkB,kCAAP,IAC3DC,IAOIC,EAPEC,EAAU,CACdC,oBAAgBC,EAChBC,WAAOD,EACPE,WAAOF,EACPG,KAAM,0BAqCR,OApBEL,EAAQM,OAASV,EAAkBW,QACnCP,EAAQQ,MAAQZ,EAAkBa,QAMlCV,EAAM,IAJWH,EAAkBc,OAC/Bd,EAAkBc,OAAOC,iBAAiBC,KAAKC,OAAOb,GACtDc,EAAKC,UAAUC,OAAOC,OAAO,GAAIrB,EAAkBsB,SAAUlB,KAE9C,CACjBmB,UAAWvB,EAAkBsB,SAASC,UACtCC,OAAQ,UAAIA,MAKZC,OAASzB,EAAkByB,OAC/BtB,EAAIuB,MAAQ1B,EAAkB0B,MAE5BvB,EAAImB,SAASjB,eAAiB,GAGzBF,EAGT,SAASwB,EACPC,EACAC,EACAC,EACAC,GAIA7B,IAGI8B,EAHEC,EAASC,EAAcL,EAAcC,GACrCK,EAASC,EAAcR,GA8K7B,OAnKAO,EAAOE,iBAAmB,SAASpC,OAO7BE,EACAmC,mCAPJ,IAAKC,EACH,MAAM,IAAIC,MACR,qGAOJ,OAAOC,QAAQC,UACZC,gBACCxC,EAAM4B,EAAeZ,EAAW,CAC9BK,OAAQ,CACN,CACEoB,mBAEEN,EAAoBO,KACpBA,KAAKT,cAAcH,OAASA,EAC5BY,KAAKT,cAAcU,WAAab,EAEhCY,KAAKT,cAAcW,UAAUC,KAAK,CAChCC,sBAAuBJ,KAAKT,cAC5Bc,OAAQ,KACRC,QAASN,KAAKT,cAAcgB,yBAOvCT,uBAAWJ,EAAepC,KAC1BwC,uBAlHP,SAAsCV,GACpC,OAAO,IAAIQ,iBAASC,EAASW,GAC3BpB,EAAOqB,+BAGPrB,EAAOsB,eAAe,GAAGC,GAAG,oBAC1Bd,MAGFT,EAAOsB,eAAeE,iBAAQC,UAC5BA,EAAcF,GAAG,iBAASG,GACxBN,EAAOM,SAuGGL,CAA6BrB,KACxCU,gBACCzC,IAAM0D,EAAU,GA+BhB,OA7JR,SAASC,EAAUC,EAAaC,GAG9B,OAFAA,EAAMD,GAECA,EAAYE,aAAaP,iBAAQQ,GAChB,cAAlBA,EAAOC,SACXH,EAAME,GACNJ,EAAUI,EAAQF,MAyHdF,CAAUvB,EAAkBF,cAAcW,mBAAWkB,GACnDL,EAAQK,EAAOE,cAAgBF,EAAOG,eAGxCjC,EAAOkC,QAAQT,GAEf5B,EAAeZ,OAAOkD,KAAKV,GACxBW,aAAIC,GACH,MAAgCZ,EAAQY,8BACxC,MAAO,CACLA,EACA,CAEEC,OAAQrD,OAAOkD,KAAKG,GAAQC,gBAAQC,EAAKC,GAEvC,OADAD,EAAIC,GAAOH,EAAOG,GACXD,GACN,gBACHE,MAILH,gBACEC,EAAK1E,qBAEJ,OADA0E,EAAIC,GAAOE,EACJH,GAET,CACEI,aAAc,gBAGb5C,EAAO6C,cAOpB7C,EAAO6C,SAAW,WAChB,IAAKhD,EACH,MAAM,IAAIQ,MAAM,mDAElB,OAAOR,GAWTG,EAAO8C,cAAgB,SAAShB,EAAQf,GACtChD,IAAMgF,EAAchC,EAAOiC,YAErBvB,EAAUzB,EAAOiD,uBAAuBlC,EAAOiB,cAIrD,GAAKP,EAAL,CAIA1D,IAAMmF,EAAQzB,EAAQa,OAItBS,EAAYG,MAAQA,EAEpBpB,EAAOqB,OAAO,CACZrD,OAAQiD,UACRtB,EACA2B,cAAerC,EAAOsC,mBAAmBjB,aAAIkB,UAC3CrE,OAAOC,OAAOoE,EAAQ,CACpB7B,QAASzB,EAAOiD,uBAAuBK,EAAOjB,oBAGlDtB,QACAmC,EACAK,gBAAiB,GACjBC,UAAWzC,EAAOyC,UAClB1C,sBAAuBd,EACvByD,eAAgB,CACdC,iBAAiB,OAUvB1D,EAAOkC,QAAU,SAAST,GACxB,GAAKA,EAAL,CAOA1D,IAAM4F,EACqB,gBAAzBlC,EAAQmB,aACJ3D,OAAOkD,KAAKV,GAASc,gBAAQC,EAAKH,GAChC,MAAgB,iBAAZA,EACKG,GAETA,EAAIH,GAAW,IAAIuB,EACjB,IAAIC,EAAiBpC,EAAQY,GAASC,QACtCb,EAAQY,GAASK,aAEZF,IACN,IACHf,EAENzB,EAAOiD,uBAAyBU,EAEhC3D,EAAOF,OAASA,EAChBE,EAAOW,WAAab,EAEpBE,EAAOY,UAAUC,KAAK,CACpBC,sBAAuBd,EACvBe,OAAQ,KACRC,QAAShB,EAAOiB,uBA5BhB6C,EACE,0EAgCC9D,EAGF,SAAS+D,EAAsBtE,kBAAuB,IAC3D,uDAMA,kBAHoB7B,IAGf8B,IAAiBC,EACpB,MAAM,IAAIU,MACR,uFAIJtC,IAAMiC,EAASR,EACbC,EACAC,EACAC,EACAqE,GAoBF,MAfkB,CAChBC,mBACE,MAAO,CACLC,+BAAgCxD,KAAKT,gBAGzCkE,gBACE,MAAO,CAGLlE,cAAeD"}
1
+ {"version":3,"file":"createServerRootMixin.js","sources":["../../../../src/util/createServerRootMixin.js"],"sourcesContent":["import instantsearch from 'instantsearch.js/es';\nimport { isVue3, isVue2, Vue2, createSSRApp } from '../util/vue-compat';\nimport { warn } from './warn';\n\nfunction walkIndex(indexWidget, visit) {\n visit(indexWidget);\n\n return indexWidget.getWidgets().forEach(widget => {\n if (widget.$$type !== 'ais.index') return;\n visit(widget);\n walkIndex(widget, visit);\n });\n}\n\nfunction searchOnlyWithDerivedHelpers(helper) {\n return new Promise((resolve, reject) => {\n helper.searchOnlyWithDerivedHelpers();\n\n // we assume all derived helpers resolve at least in the same tick\n helper.derivedHelpers[0].on('result', () => {\n resolve();\n });\n\n helper.derivedHelpers.forEach(derivedHelper =>\n derivedHelper.on('error', e => {\n reject(e);\n })\n );\n });\n}\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 = [...appOptions.mixins, ...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 } else {\n // copy over global Vue APIs\n options.router = componentInstance.$router;\n options.store = componentInstance.$store;\n\n const Extended = componentInstance.$vnode\n ? componentInstance.$vnode.componentOptions.Ctor.extend(options)\n : Vue2.component(Object.assign({}, componentInstance.$options, options));\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 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(() => searchOnlyWithDerivedHelpers(instance.mainHelper))\n .then(() => {\n initialResults = {};\n walkIndex(instance.mainIndex, widget => {\n const { _state, _rawResults } = widget.getResults();\n\n initialResults[widget.getIndexId()] = {\n // copy just the values of SearchParameters, not the functions\n state: Object.keys(_state).reduce((acc, key) => {\n // eslint-disable-next-line no-param-reassign\n acc[key] = _state[key];\n return acc;\n }, {}),\n results: _rawResults,\n };\n });\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":["defaultCloneComponent","componentInstance","ref","const","app","options","serverPrefetch","undefined","fetch","_base","name","router","$router","store","$store","$vnode","componentOptions","Ctor","extend","Vue2","component","Object","assign","$options","propsData","mixins","$slots","$root","augmentInstantSearch","instantSearchOptions","cloneComponent","initialResults","search","instantsearch","findResultsState","instance","renderToString","Error","Promise","resolve","then","created","this","start","started","helper","mainHelper","reject","searchOnlyWithDerivedHelpers","derivedHelpers","on","forEach","derivedHelper","e","walkIndex","indexWidget","visit","getWidgets","widget","$$type","mainIndex","getResults","getIndexId","state","keys","_state","reduce","acc","key","results","_rawResults","hydrate","getState","__forceRender","parent","localHelper","getHelper","render","scopedResults","getScopedResults","templatesConfig","createURL","instantSearchInstance","searchMetadata","isSearchStalled","_initialResults","warn","createServerRootMixin","$cloneComponent","provide","$_ais_ssrInstantSearchInstance","data"],"mappings":"+HA+BA,SAASA,EAAsBC,EAAmBC,kBAAkB,kCAAP,IAC3DC,IAOIC,EAPEC,EAAU,CACdC,oBAAgBC,EAChBC,WAAOD,EACPE,WAAOF,EACPG,KAAM,0BAqCR,OApBEL,EAAQM,OAASV,EAAkBW,QACnCP,EAAQQ,MAAQZ,EAAkBa,QAMlCV,EAAM,IAJWH,EAAkBc,OAC/Bd,EAAkBc,OAAOC,iBAAiBC,KAAKC,OAAOb,GACtDc,EAAKC,UAAUC,OAAOC,OAAO,GAAIrB,EAAkBsB,SAAUlB,KAE9C,CACjBmB,UAAWvB,EAAkBsB,SAASC,UACtCC,OAAQ,UAAIA,MAKZC,OAASzB,EAAkByB,OAC/BtB,EAAIuB,MAAQ1B,EAAkB0B,MAE5BvB,EAAImB,SAASjB,eAAiB,GAGzBF,EAGT,SAASwB,EAAqBC,EAAsBC,GAClD3B,IAEI4B,EAFEC,EAASC,EAAcJ,GAgI7B,OArHAG,EAAOE,iBAAmB,SAAShC,OAO7BE,EACA+B,mCAPJ,IAAKC,EACH,MAAM,IAAIC,MACR,qGAOJ,OAAOC,QAAQC,UACZC,gBACCpC,EAAM0B,EAAeV,EAAW,CAC9BK,OAAQ,CACN,CACEgB,oBACEN,EAAWO,KAAKT,eAEPU,QAGTR,EAASS,SAAU,SAM5BJ,uBAAWJ,EAAehC,KAC1BoC,uBAtG+BK,EAsGSV,EAASW,WArG/C,IAAIR,iBAASC,EAASQ,GAC3BF,EAAOG,+BAGPH,EAAOI,eAAe,GAAGC,GAAG,oBAC1BX,MAGFM,EAAOI,eAAeE,iBAAQC,UAC5BA,EAAcF,GAAG,iBAASG,GACxBN,EAAOM,SAXf,IAAsCR,IAuG/BL,gBAiBC,OAhBAT,EAAiB,GAlHzB,SAASuB,EAAUC,EAAaC,GAG9B,OAFAA,EAAMD,GAECA,EAAYE,aAAaN,iBAAQO,GAChB,cAAlBA,EAAOC,SACXH,EAAME,GACNJ,EAAUI,EAAQF,MA6GdF,CAAUnB,EAASyB,mBAAWF,GAC5B,MAAgCA,EAAOG,wCAEvC9B,EAAe2B,EAAOI,cAAgB,CAEpCC,MAAO1C,OAAO2C,KAAKC,GAAQC,gBAAQC,EAAKC,GAGtC,OADAD,EAAIC,GAAOH,EAAOG,GACXD,GACN,IACHE,QAASC,KAIbtC,EAAOuC,QAAQxC,GACRC,EAAOwC,cAOpBxC,EAAOwC,SAAW,WAChB,IAAKzC,EACH,MAAM,IAAIM,MAAM,mDAElB,OAAON,GAWTC,EAAOyC,cAAgB,SAASf,EAAQgB,GACtCvE,IAAMkE,EAAUK,EAAOb,aAIvB,GAAgB,OAAZQ,EAAJ,CAIAlE,IAAM4D,EAAQM,EAAQJ,OAEhBU,EAAcD,EAAOE,YAG3BD,EAAYZ,MAAQA,EAEpBL,EAAOmB,OAAO,CACZhC,OAAQ8B,UACRN,EACAS,cAAeJ,EAAOK,0BACtBL,QACAX,EACAiB,gBAAiB,GACjBC,UAAWP,EAAOO,UAClBC,sBAAuBlD,EACvBmD,eAAgB,CACdC,iBAAiB,OAUvBpD,EAAOuC,QAAU,SAASF,GACnBA,GAOLrC,EAAOqD,gBAAkBhB,EAEzBrC,EAAOW,QACPX,EAAOY,SAAU,GATf0C,EACE,0EAUCtD,EAGF,SAASuD,EAAsB1D,kBAAuB,IAC3D,uCAA0B7B,GAE1BG,IAAM6B,EAASJ,EAAqBC,EAAsB2D,GAmB1D,MAfkB,CAChBC,mBACE,MAAO,CACLC,+BAAgChD,KAAKT,gBAGzC0D,gBACE,MAAO,CAGL1D,cAAeD"}
@@ -1,2 +1,2 @@
1
- import e from"./components/Autocomplete.vue.js";export{default as AisAutocomplete}from"./components/Autocomplete.vue.js";import o from"./components/Breadcrumb.vue.js";export{default as AisBreadcrumb}from"./components/Breadcrumb.vue.js";import t from"./components/ClearRefinements.vue.js";export{default as AisClearRefinements}from"./components/ClearRefinements.vue.js";import s from"./components/Configure.js";export{default as AisConfigure}from"./components/Configure.js";import n from"./components/ConfigureRelatedItems.js";export{default as AisExperimentalConfigureRelatedItems}from"./components/ConfigureRelatedItems.js";import m from"./components/CurrentRefinements.vue.js";export{default as AisCurrentRefinements}from"./components/CurrentRefinements.vue.js";import r from"./components/HierarchicalMenu.vue.js";export{default as AisHierarchicalMenu}from"./components/HierarchicalMenu.vue.js";import p from"./components/Highlight.vue.js";export{default as AisHighlight}from"./components/Highlight.vue.js";import u from"./components/Hits.vue.js";export{default as AisHits}from"./components/Hits.vue.js";import i from"./components/HitsPerPage.vue.js";export{default as AisHitsPerPage}from"./components/HitsPerPage.vue.js";import a from"./components/Index.js";export{default as AisIndex}from"./components/Index.js";import f from"./components/InstantSearch.js";export{default as AisInstantSearch}from"./components/InstantSearch.js";import c from"./components/InstantSearchSsr.js";export{default as AisInstantSearchSsr}from"./components/InstantSearchSsr.js";import l from"./components/InfiniteHits.vue.js";export{default as AisInfiniteHits}from"./components/InfiniteHits.vue.js";import j from"./components/Menu.vue.js";export{default as AisMenu}from"./components/Menu.vue.js";import v from"./components/MenuSelect.vue.js";export{default as AisMenuSelect}from"./components/MenuSelect.vue.js";import d from"./components/NumericMenu.vue.js";export{default as AisNumericMenu}from"./components/NumericMenu.vue.js";import x from"./components/Pagination.vue.js";export{default as AisPagination}from"./components/Pagination.vue.js";import A from"./components/Panel.vue.js";export{default as AisPanel}from"./components/Panel.vue.js";import g from"./components/PoweredBy.vue.js";export{default as AisPoweredBy}from"./components/PoweredBy.vue.js";import R from"./components/QueryRuleContext.js";export{default as AisQueryRuleContext}from"./components/QueryRuleContext.js";import S from"./components/QueryRuleCustomData.vue.js";export{default as AisQueryRuleCustomData}from"./components/QueryRuleCustomData.vue.js";import h from"./components/RangeInput.vue.js";export{default as AisRangeInput}from"./components/RangeInput.vue.js";import C from"./components/RatingMenu.vue.js";export{default as AisRatingMenu}from"./components/RatingMenu.vue.js";import I from"./components/RefinementList.vue.js";export{default as AisRefinementList}from"./components/RefinementList.vue.js";import y from"./components/StateResults.vue.js";export{default as AisStateResults}from"./components/StateResults.vue.js";import H from"./components/SearchBox.vue.js";export{default as AisSearchBox}from"./components/SearchBox.vue.js";import M from"./components/Snippet.vue.js";export{default as AisSnippet}from"./components/Snippet.vue.js";import P from"./components/SortBy.vue.js";export{default as AisSortBy}from"./components/SortBy.vue.js";import B from"./components/Stats.vue.js";export{default as AisStats}from"./components/Stats.vue.js";import D from"./components/ToggleRefinement.vue.js";export{default as AisToggleRefinement}from"./components/ToggleRefinement.vue.js";import Q from"./components/VoiceSearch.vue.js";export{default as AisVoiceSearch}from"./components/VoiceSearch.vue.js";import b from"./components/RelevantSort.vue.js";export{default as AisRelevantSort}from"./components/RelevantSort.vue.js";import w from"./components/DynamicWidgets.js";export{default as AisDynamicWidgets}from"./components/DynamicWidgets.js";
1
+ import e from"./components/Autocomplete.vue.js";export{default as AisAutocomplete}from"./components/Autocomplete.vue.js";import o from"./components/Breadcrumb.vue.js";export{default as AisBreadcrumb}from"./components/Breadcrumb.vue.js";import t from"./components/ClearRefinements.vue.js";export{default as AisClearRefinements}from"./components/ClearRefinements.vue.js";import s from"./components/Configure.js";export{default as AisConfigure}from"./components/Configure.js";import n from"./components/ConfigureRelatedItems.js";export{default as AisExperimentalConfigureRelatedItems}from"./components/ConfigureRelatedItems.js";import m from"./components/CurrentRefinements.vue.js";export{default as AisCurrentRefinements}from"./components/CurrentRefinements.vue.js";import r from"./components/HierarchicalMenu.vue.js";export{default as AisHierarchicalMenu}from"./components/HierarchicalMenu.vue.js";import p from"./components/Highlight.vue.js";export{default as AisHighlight}from"./components/Highlight.vue.js";import i from"./components/Hits.vue.js";export{default as AisHits}from"./components/Hits.vue.js";import a from"./components/HitsPerPage.vue.js";export{default as AisHitsPerPage}from"./components/HitsPerPage.vue.js";import u from"./components/Index.js";export{default as AisIndex}from"./components/Index.js";import f from"./components/InstantSearch.js";export{default as AisInstantSearch}from"./components/InstantSearch.js";import c from"./components/InstantSearchSsr.js";export{default as AisInstantSearchSsr}from"./components/InstantSearchSsr.js";import l from"./components/InfiniteHits.vue.js";export{default as AisInfiniteHits}from"./components/InfiniteHits.vue.js";import j from"./components/Menu.vue.js";export{default as AisMenu}from"./components/Menu.vue.js";import v from"./components/MenuSelect.vue.js";export{default as AisMenuSelect}from"./components/MenuSelect.vue.js";import d from"./components/NumericMenu.vue.js";export{default as AisNumericMenu}from"./components/NumericMenu.vue.js";import x from"./components/Pagination.vue.js";export{default as AisPagination}from"./components/Pagination.vue.js";import A from"./components/Panel.vue.js";export{default as AisPanel}from"./components/Panel.vue.js";import g from"./components/PoweredBy.vue.js";export{default as AisPoweredBy}from"./components/PoweredBy.vue.js";import R from"./components/QueryRuleContext.js";export{default as AisQueryRuleContext}from"./components/QueryRuleContext.js";import S from"./components/QueryRuleCustomData.vue.js";export{default as AisQueryRuleCustomData}from"./components/QueryRuleCustomData.vue.js";import h from"./components/RangeInput.vue.js";export{default as AisRangeInput}from"./components/RangeInput.vue.js";import y from"./components/RatingMenu.vue.js";export{default as AisRatingMenu}from"./components/RatingMenu.vue.js";import C from"./components/RefinementList.vue.js";export{default as AisRefinementList}from"./components/RefinementList.vue.js";import I from"./components/StateResults.vue.js";export{default as AisStateResults}from"./components/StateResults.vue.js";import H from"./components/SearchBox.vue.js";export{default as AisSearchBox}from"./components/SearchBox.vue.js";import M from"./components/Snippet.vue.js";export{default as AisSnippet}from"./components/Snippet.vue.js";import P from"./components/SortBy.vue.js";export{default as AisSortBy}from"./components/SortBy.vue.js";import B from"./components/Stats.vue.js";export{default as AisStats}from"./components/Stats.vue.js";import D from"./components/ToggleRefinement.vue.js";export{default as AisToggleRefinement}from"./components/ToggleRefinement.vue.js";import Q from"./components/VoiceSearch.vue.js";export{default as AisVoiceSearch}from"./components/VoiceSearch.vue.js";import W from"./components/RelevantSort.vue.js";export{default as AisRelevantSort}from"./components/RelevantSort.vue.js";import E from"./components/DynamicWidgets.js";export{default as AisDynamicWidgets}from"./components/DynamicWidgets.js";import b from"./components/ExperimentalDynamicWidgets.js";export{default as AisExperimentalDynamicWidgets}from"./components/ExperimentalDynamicWidgets.js";
2
2
  //# sourceMappingURL=widgets.js.map