vue-instantsearch 3.6.0 → 3.9.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 (96) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/dist/vue-instantsearch.common.js +1 -1
  3. package/dist/vue-instantsearch.common.js.map +1 -1
  4. package/dist/vue-instantsearch.js +1 -1
  5. package/dist/vue-instantsearch.js.map +1 -1
  6. package/es/package.json.js +1 -1
  7. package/es/src/components/Breadcrumb.vue.js +1 -1
  8. package/es/src/components/Breadcrumb.vue.js.map +1 -1
  9. package/es/src/components/ClearRefinements.vue.js +1 -1
  10. package/es/src/components/ClearRefinements.vue.js.map +1 -1
  11. package/es/src/components/CurrentRefinements.vue.js +1 -1
  12. package/es/src/components/CurrentRefinements.vue.js.map +1 -1
  13. package/es/src/components/DynamicWidgets.js +2 -0
  14. package/es/src/components/DynamicWidgets.js.map +1 -0
  15. package/es/src/components/HierarchicalMenu.vue.js +1 -1
  16. package/es/src/components/HierarchicalMenu.vue.js.map +1 -1
  17. package/es/src/components/Highlighter.vue.js.map +1 -1
  18. package/es/src/components/Hits.vue.js +1 -1
  19. package/es/src/components/Hits.vue.js.map +1 -1
  20. package/es/src/components/HitsPerPage.vue.js +1 -1
  21. package/es/src/components/HitsPerPage.vue.js.map +1 -1
  22. package/es/src/components/InfiniteHits.vue.js +1 -1
  23. package/es/src/components/InfiniteHits.vue.js.map +1 -1
  24. package/es/src/components/InstantSearch.js +1 -1
  25. package/es/src/components/InstantSearch.js.map +1 -1
  26. package/es/src/components/Menu.vue.js +1 -1
  27. package/es/src/components/Menu.vue.js.map +1 -1
  28. package/es/src/components/MenuSelect.vue.js +1 -1
  29. package/es/src/components/MenuSelect.vue.js.map +1 -1
  30. package/es/src/components/NumericMenu.vue.js +1 -1
  31. package/es/src/components/NumericMenu.vue.js.map +1 -1
  32. package/es/src/components/Pagination.vue.js +1 -1
  33. package/es/src/components/Pagination.vue.js.map +1 -1
  34. package/es/src/components/QueryRuleContext.js +1 -1
  35. package/es/src/components/QueryRuleContext.js.map +1 -1
  36. package/es/src/components/QueryRuleCustomData.vue.js +1 -1
  37. package/es/src/components/QueryRuleCustomData.vue.js.map +1 -1
  38. package/es/src/components/RangeInput.vue.js +1 -1
  39. package/es/src/components/RangeInput.vue.js.map +1 -1
  40. package/es/src/components/RatingMenu.vue.js +1 -1
  41. package/es/src/components/RatingMenu.vue.js.map +1 -1
  42. package/es/src/components/RefinementList.vue.js +1 -1
  43. package/es/src/components/RefinementList.vue.js.map +1 -1
  44. package/es/src/components/SortBy.vue.js +1 -1
  45. package/es/src/components/SortBy.vue.js.map +1 -1
  46. package/es/src/components/ToggleRefinement.vue.js +1 -1
  47. package/es/src/components/ToggleRefinement.vue.js.map +1 -1
  48. package/es/src/instantsearch.js +1 -1
  49. package/es/src/mixins/widget.js +1 -1
  50. package/es/src/mixins/widget.js.map +1 -1
  51. package/es/src/util/createInstantSearchComponent.js +1 -1
  52. package/es/src/util/createInstantSearchComponent.js.map +1 -1
  53. package/es/src/util/createServerRootMixin.js +1 -1
  54. package/es/src/util/createServerRootMixin.js.map +1 -1
  55. package/es/src/widgets.js +1 -1
  56. package/package.json +5 -5
  57. package/src/__tests__/index.js +2 -0
  58. package/src/components/Breadcrumb.vue +3 -5
  59. package/src/components/ClearRefinements.vue +3 -7
  60. package/src/components/CurrentRefinements.vue +3 -7
  61. package/src/components/DynamicWidgets.js +87 -0
  62. package/src/components/HierarchicalMenu.vue +8 -11
  63. package/src/components/Highlighter.vue +16 -4
  64. package/src/components/Hits.vue +2 -3
  65. package/src/components/HitsPerPage.vue +1 -4
  66. package/src/components/InfiniteHits.vue +2 -3
  67. package/src/components/InstantSearch.js +11 -7
  68. package/src/components/Menu.vue +5 -8
  69. package/src/components/MenuSelect.vue +2 -3
  70. package/src/components/NumericMenu.vue +2 -3
  71. package/src/components/Pagination.vue +1 -1
  72. package/src/components/QueryRuleContext.js +1 -1
  73. package/src/components/QueryRuleCustomData.vue +1 -1
  74. package/src/components/RangeInput.vue +3 -0
  75. package/src/components/RatingMenu.vue +2 -1
  76. package/src/components/RefinementList.vue +8 -7
  77. package/src/components/SortBy.vue +1 -3
  78. package/src/components/ToggleRefinement.vue +1 -2
  79. package/src/components/__tests__/DynamicWidgets.js +419 -0
  80. package/src/components/__tests__/HierarchicalMenu.js +23 -0
  81. package/src/components/__tests__/Hits.js +22 -1
  82. package/src/components/__tests__/InfiniteHits.js +21 -0
  83. package/src/components/__tests__/InstantSearch-integration.js +155 -1
  84. package/src/components/__tests__/Menu.js +22 -0
  85. package/src/components/__tests__/MenuSelect.js +22 -0
  86. package/src/components/__tests__/NumericMenu.js +22 -0
  87. package/src/components/__tests__/RangeInput.js +22 -0
  88. package/src/components/__tests__/RatingMenu.js +23 -0
  89. package/src/components/__tests__/RefinementList.js +22 -0
  90. package/src/components/__tests__/ToggleRefinement.js +22 -0
  91. package/src/mixins/widget.js +1 -1
  92. package/src/util/__tests__/createServerRootMixin.test.js +229 -83
  93. package/src/util/createInstantSearchComponent.js +16 -0
  94. package/src/util/createServerRootMixin.js +40 -104
  95. package/src/util/testutils/helper.js +2 -2
  96. package/src/widgets.js +1 -0
@@ -1,2 +1,2 @@
1
- import{createSuitMixin as t}from"../mixins/suit.js";import{createWidgetMixin as e}from"../mixins/widget.js";import{connectQueryRules as s}from"instantsearch.js/es/connectors";export default{render:function(){var t=this,e=t.$createElement,s=t._self._c||e;return t.state?s("div",{class:t.suit()},[t._t("default",t._l(t.state.items,function(e,r){return s("div",{key:r},[t._t("item",[s("pre",[t._v(t._s(e))])],{item:e})],2)}),{items:t.state.items})],2):t._e()},staticRenderFns:[],name:"AisQueryRuleCustomData",mixins:[t({name:"QueryRuleCustomData"}),e({connector:s})],props:{transformItems:{type:Function,required:!1,default:function(t){return t}}},computed:{widgetParams:function(){return{transformItems:this.transformItems}}}};
1
+ import{createSuitMixin as t}from"../mixins/suit.js";import{createWidgetMixin as e}from"../mixins/widget.js";import{connectQueryRules as s}from"instantsearch.js/es/connectors";export default{render:function(){var t=this,e=t.$createElement,s=t._self._c||e;return t.state?s("div",{class:t.suit()},[t._t("default",t._l(t.state.items,function(e,r){return s("div",{key:r},[t._t("item",[s("pre",[t._v(t._s(e))])],{item:e})],2)}),{items:t.state.items})],2):t._e()},staticRenderFns:[],name:"AisQueryRuleCustomData",mixins:[t({name:"QueryRuleCustomData"}),e({connector:s})],props:{transformItems:{type:Function,required:!1,default:void 0}},computed:{widgetParams:function(){return{transformItems:this.transformItems}}}};
2
2
  //# sourceMappingURL=QueryRuleCustomData.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"QueryRuleCustomData.vue.js","sources":["../../../src/components/QueryRuleCustomData.vue"],"sourcesContent":["<template>\n <div\n v-if=\"state\"\n :class=\"suit()\"\n >\n <slot :items=\"state.items\">\n <div\n v-for=\"(item, key) in state.items\"\n :key=\"key\"\n >\n <slot\n name=\"item\"\n :item=\"item\"\n >\n <pre>{{ item }}</pre>\n </slot>\n </div>\n </slot>\n </div>\n</template>\n\n<script>\nimport { createSuitMixin } from '../mixins/suit';\nimport { createWidgetMixin } from '../mixins/widget';\nimport { connectQueryRules } from 'instantsearch.js/es/connectors';\n\nexport default {\n name: 'AisQueryRuleCustomData',\n mixins: [\n createSuitMixin({ name: 'QueryRuleCustomData' }),\n createWidgetMixin({\n connector: connectQueryRules,\n }),\n ],\n props: {\n transformItems: {\n type: Function,\n required: false,\n default: items => items,\n },\n },\n computed: {\n widgetParams() {\n return {\n transformItems: this.transformItems,\n };\n },\n },\n};\n</script>\n"],"names":["render","name","mixins","createSuitMixin","createWidgetMixin","connector","connectQueryRules","props","transformItems","type","Function","required","default","items","computed","widgetParams","this"],"mappings":"6LA0Be,CAACA,8RACdC,KAAM,yBACNC,OAAQ,CACNC,EAAgB,CAAEF,KAAM,wBACxBG,EAAkB,CAChBC,UAAWC,KAGfC,MAAO,CACLC,eAAgB,CACdC,KAAMC,SACNC,UAAU,EACVC,iBAASC,UAASA,KAGtBC,SAAU,CACRC,wBACE,MAAO,CACLP,eAAgBQ,KAAKR"}
1
+ {"version":3,"file":"QueryRuleCustomData.vue.js","sources":["../../../src/components/QueryRuleCustomData.vue"],"sourcesContent":["<template>\n <div\n v-if=\"state\"\n :class=\"suit()\"\n >\n <slot :items=\"state.items\">\n <div\n v-for=\"(item, key) in state.items\"\n :key=\"key\"\n >\n <slot\n name=\"item\"\n :item=\"item\"\n >\n <pre>{{ item }}</pre>\n </slot>\n </div>\n </slot>\n </div>\n</template>\n\n<script>\nimport { createSuitMixin } from '../mixins/suit';\nimport { createWidgetMixin } from '../mixins/widget';\nimport { connectQueryRules } from 'instantsearch.js/es/connectors';\n\nexport default {\n name: 'AisQueryRuleCustomData',\n mixins: [\n createSuitMixin({ name: 'QueryRuleCustomData' }),\n createWidgetMixin({\n connector: connectQueryRules,\n }),\n ],\n props: {\n transformItems: {\n type: Function,\n required: false,\n default: undefined,\n },\n },\n computed: {\n widgetParams() {\n return {\n transformItems: this.transformItems,\n };\n },\n },\n};\n</script>\n"],"names":["render","name","mixins","createSuitMixin","createWidgetMixin","connector","connectQueryRules","props","transformItems","type","Function","required","default","undefined","computed","widgetParams","this"],"mappings":"6LA0Be,CAACA,8RACdC,KAAM,yBACNC,OAAQ,CACNC,EAAgB,CAAEF,KAAM,wBACxBG,EAAkB,CAChBC,UAAWC,KAGfC,MAAO,CACLC,eAAgB,CACdC,KAAMC,SACNC,UAAU,EACVC,aAASC,IAGbC,SAAU,CACRC,wBACE,MAAO,CACLP,eAAgBQ,KAAKR"}
@@ -1,2 +1,2 @@
1
- import{createSuitMixin as t}from"../mixins/suit.js";import{createWidgetMixin as e}from"../mixins/widget.js";import{connectRange as n}from"instantsearch.js/es/connectors";import{createPanelConsumerMixin as i}from"../mixins/panel.js";var a=function(t){return t&&Boolean(t.range)&&t.range.min!==t.range.max};export default{render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.state?n("div",{class:[t.suit(),!t.canRefine&&t.suit("","noRefinement")]},[t._t("default",[n("form",{class:t.suit("form"),on:{submit:function(e){e.preventDefault(),t.refine({min:t.pick(t.minInput,t.values.min),max:t.pick(t.maxInput,t.values.max)})}}},[n("label",{class:t.suit("label")},[t._t("minLabel"),t._v(" "),n("input",{class:[t.suit("input"),t.suit("input","min")],attrs:{type:"number",step:t.step,min:t.state.range.min,max:t.state.range.max,placeholder:t.state.range.min},domProps:{value:t.values.min},on:{change:function(e){t.minInput=e.currentTarget.value}}})],2),t._v(" "),n("span",{class:t.suit("separator")},[t._t("separator",[t._v("to")])],2),t._v(" "),n("label",{class:t.suit("label")},[t._t("maxLabel"),t._v(" "),n("input",{class:[t.suit("input"),t.suit("input","max")],attrs:{type:"number",step:t.step,min:t.state.range.min,max:t.state.range.max,placeholder:t.state.range.max},domProps:{value:t.values.max},on:{change:function(e){t.maxInput=e.currentTarget.value}}})],2),t._v(" "),n("button",{class:t.suit("submit"),attrs:{type:"submit"}},[t._t("submitLabel",[t._v("Go")])],2)])],{currentRefinement:t.values,refine:t.refine,canRefine:t.canRefine,range:t.state.range})],2):t._e()},staticRenderFns:[],name:"AisRangeInput",mixins:[t({name:"RangeInput"}),e({connector:n}),i({mapStateToCanRefine:a})],props:{attribute:{type:String,required:!0},min:{type:Number,required:!1,default:-1/0},max:{type:Number,required:!1,default:1/0},precision:{type:Number,required:!1,default:0}},data:function(){return{minInput:void 0,maxInput:void 0}},updated:function(){this.minInput=void 0,this.maxInput=void 0},computed:{widgetParams:function(){return{attribute:this.attribute,min:this.min,max:this.max,precision:this.precision}},canRefine:function(){return a(this.state)},step:function(){return 1/Math.pow(10,this.precision)},values:function(){var t=this.state.start,e=t[0],n=t[1],i=this.state.range,a=i.min,r=i.max;return{min:e!==-1/0&&e!==a?e:void 0,max:n!==1/0&&n!==r?n:void 0}}},methods:{pick:function(t,e){return null!=t?t:e},refine:function(t){var e=t.min,n=t.max;this.state.refine([e,n])}}};
1
+ import{createSuitMixin as t}from"../mixins/suit.js";import{createWidgetMixin as e}from"../mixins/widget.js";import{connectRange as n}from"instantsearch.js/es/connectors";import{createPanelConsumerMixin as i}from"../mixins/panel.js";var a=function(t){return t&&Boolean(t.range)&&t.range.min!==t.range.max};export default{render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.state?n("div",{class:[t.suit(),!t.canRefine&&t.suit("","noRefinement")]},[t._t("default",[n("form",{class:t.suit("form"),on:{submit:function(e){e.preventDefault(),t.refine({min:t.pick(t.minInput,t.values.min),max:t.pick(t.maxInput,t.values.max)})}}},[n("label",{class:t.suit("label")},[t._t("minLabel"),t._v(" "),n("input",{class:[t.suit("input"),t.suit("input","min")],attrs:{type:"number",step:t.step,min:t.state.range.min,max:t.state.range.max,placeholder:t.state.range.min},domProps:{value:t.values.min},on:{change:function(e){t.minInput=e.currentTarget.value}}})],2),t._v(" "),n("span",{class:t.suit("separator")},[t._t("separator",[t._v("to")])],2),t._v(" "),n("label",{class:t.suit("label")},[t._t("maxLabel"),t._v(" "),n("input",{class:[t.suit("input"),t.suit("input","max")],attrs:{type:"number",step:t.step,min:t.state.range.min,max:t.state.range.max,placeholder:t.state.range.max},domProps:{value:t.values.max},on:{change:function(e){t.maxInput=e.currentTarget.value}}})],2),t._v(" "),n("button",{class:t.suit("submit"),attrs:{type:"submit"}},[t._t("submitLabel",[t._v("Go")])],2)])],{currentRefinement:t.values,refine:t.refine,canRefine:t.canRefine,range:t.state.range,sendEvent:t.state.sendEvent})],2):t._e()},staticRenderFns:[],name:"AisRangeInput",mixins:[t({name:"RangeInput"}),e({connector:n}),i({mapStateToCanRefine:a})],props:{attribute:{type:String,required:!0},min:{type:Number,required:!1,default:-1/0},max:{type:Number,required:!1,default:1/0},precision:{type:Number,required:!1,default:0}},data:function(){return{minInput:void 0,maxInput:void 0}},updated:function(){this.minInput=void 0,this.maxInput=void 0},computed:{widgetParams:function(){return{attribute:this.attribute,min:this.min,max:this.max,precision:this.precision}},canRefine:function(){return a(this.state)},step:function(){return 1/Math.pow(10,this.precision)},values:function(){var t=this.state.start,e=t[0],n=t[1],i=this.state.range,a=i.min,s=i.max;return{min:e!==-1/0&&e!==a?e:void 0,max:n!==1/0&&n!==s?n:void 0}}},methods:{pick:function(t,e){return null!=t?t:e},refine:function(t){var e=t.min,n=t.max;this.state.refine([e,n])}}};
2
2
  //# sourceMappingURL=RangeInput.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RangeInput.vue.js","sources":["../../../src/components/RangeInput.vue"],"sourcesContent":["<template>\n <div\n v-if=\"state\"\n :class=\"[suit(), !canRefine && suit('', 'noRefinement')]\"\n >\n <slot\n :current-refinement=\"values\"\n :refine=\"refine\"\n :can-refine=\"canRefine\"\n :range=\"state.range\"\n >\n <form\n :class=\"suit('form')\"\n @submit.prevent=\"refine({ min: pick(minInput, values.min), max: pick(maxInput, values.max) })\"\n >\n <label :class=\"suit('label')\">\n <slot name=\"minLabel\" />\n <input\n type=\"number\"\n :class=\"[suit('input'), suit('input', 'min')]\"\n :step=\"step\"\n :min=\"state.range.min\"\n :max=\"state.range.max\"\n :placeholder=\"state.range.min\"\n :value=\"values.min\"\n @change=\"minInput = $event.currentTarget.value\"\n >\n </label>\n <span :class=\"suit('separator')\">\n <slot name=\"separator\">to</slot>\n </span>\n <label :class=\"suit('label')\">\n <slot name=\"maxLabel\" />\n <input\n :class=\"[suit('input'), suit('input', 'max')]\"\n type=\"number\"\n :step=\"step\"\n :min=\"state.range.min\"\n :max=\"state.range.max\"\n :placeholder=\"state.range.max\"\n :value=\"values.max\"\n @change=\"maxInput = $event.currentTarget.value\"\n >\n </label>\n <button\n :class=\"suit('submit')\"\n type=\"submit\"\n >\n <slot name=\"submitLabel\">Go</slot>\n </button>\n </form>\n </slot>\n </div>\n</template>\n\n<script>\nimport { connectRange } from 'instantsearch.js/es/connectors';\nimport { createWidgetMixin } from '../mixins/widget';\nimport { createPanelConsumerMixin } from '../mixins/panel';\nimport { createSuitMixin } from '../mixins/suit';\n\nconst mapStateToCanRefine = state =>\n state && Boolean(state.range) && state.range.min !== state.range.max;\n\nexport default {\n name: 'AisRangeInput',\n mixins: [\n createSuitMixin({ name: 'RangeInput' }),\n createWidgetMixin({ connector: connectRange }),\n createPanelConsumerMixin({\n mapStateToCanRefine,\n }),\n ],\n props: {\n attribute: {\n type: String,\n required: true,\n },\n min: {\n type: Number,\n required: false,\n default: -Infinity,\n },\n max: {\n type: Number,\n required: false,\n default: Infinity,\n },\n precision: {\n type: Number,\n required: false,\n default: 0,\n },\n },\n data() {\n return {\n minInput: undefined,\n maxInput: undefined,\n };\n },\n updated() {\n this.minInput = undefined;\n this.maxInput = undefined;\n },\n computed: {\n widgetParams() {\n return {\n attribute: this.attribute,\n min: this.min,\n max: this.max,\n precision: this.precision,\n };\n },\n canRefine() {\n return mapStateToCanRefine(this.state);\n },\n step() {\n return 1 / Math.pow(10, this.precision);\n },\n values() {\n const [minValue, maxValue] = this.state.start;\n const { min: minRange, max: maxRange } = this.state.range;\n\n return {\n min:\n minValue !== -Infinity && minValue !== minRange\n ? minValue\n : undefined,\n max:\n maxValue !== Infinity && maxValue !== maxRange ? maxValue : undefined,\n };\n },\n },\n methods: {\n pick(first, second) {\n if (first !== null && first !== undefined) {\n return first;\n } else {\n return second;\n }\n },\n refine({ min, max }) {\n this.state.refine([min, max]);\n },\n },\n};\n</script>\n"],"names":["const","mapStateToCanRefine","state","Boolean","range","min","max","render","name","mixins","createSuitMixin","createWidgetMixin","connector","connectRange","createPanelConsumerMixin","props","attribute","type","String","required","Number","default","Infinity","precision","data","minInput","undefined","maxInput","updated","this","computed","widgetParams","canRefine","step","Math","pow","values","start","minValue","minRange","maxValue","maxRange","methods","pick","first","second","refine","ref"],"mappings":"wOA6DAA,IAAMC,WAAsBC,UAC1BA,GAASC,QAAQD,EAAME,QAAUF,EAAME,MAAMC,MAAQH,EAAME,MAAME,mBAEpD,CAACC,uwCACdC,KAAM,gBACNC,OAAQ,CACNC,EAAgB,CAAEF,KAAM,eACxBG,EAAkB,CAAEC,UAAWC,IAC/BC,EAAyB,qBACvBb,KAGJc,MAAO,CACLC,UAAW,CACTC,KAAMC,OACNC,UAAU,GAEZd,IAAK,CACHY,KAAMG,OACND,UAAU,EACVE,SAAUC,EAAAA,GAEZhB,IAAK,CACHW,KAAMG,OACND,UAAU,EACVE,QAASC,EAAAA,GAEXC,UAAW,CACTN,KAAMG,OACND,UAAU,EACVE,QAAS,IAGbG,gBACE,MAAO,CACLC,cAAUC,EACVC,cAAUD,IAGdE,mBACEC,KAAKJ,cAAWC,EAChBG,KAAKF,cAAWD,GAElBI,SAAU,CACRC,wBACE,MAAO,CACLf,UAAWa,KAAKb,UAChBX,IAAKwB,KAAKxB,IACVC,IAAKuB,KAAKvB,IACViB,UAAWM,KAAKN,YAGpBS,qBACE,OAAO/B,EAAoB4B,KAAK3B,QAElC+B,gBACE,OAAO,EAAIC,KAAKC,IAAI,GAAIN,KAAKN,YAE/Ba,kBACE,MAA6BP,KAAK3B,MAAMmC,sBACCR,KAAK3B,MAAME,sBAEpD,MAAO,CACLC,IACEiC,KAAchB,EAAAA,GAAYgB,IAAaC,EACnCD,OACAZ,EACNpB,IACEkC,IAAalB,EAAAA,GAAYkB,IAAaC,EAAWD,OAAWd,KAIpEgB,QAAS,CACPC,cAAKC,EAAOC,GACV,OAAID,MAAAA,EACKA,EAEAC,GAGXC,gBAAOC,uBACLlB,KAAK3B,MAAM4C,OAAO,CAACzC,EAAKC"}
1
+ {"version":3,"file":"RangeInput.vue.js","sources":["../../../src/components/RangeInput.vue"],"sourcesContent":["<template>\n <div\n v-if=\"state\"\n :class=\"[suit(), !canRefine && suit('', 'noRefinement')]\"\n >\n <slot\n :current-refinement=\"values\"\n :refine=\"refine\"\n :can-refine=\"canRefine\"\n :range=\"state.range\"\n :send-event=\"state.sendEvent\"\n >\n <form\n :class=\"suit('form')\"\n @submit.prevent=\"refine({ min: pick(minInput, values.min), max: pick(maxInput, values.max) })\"\n >\n <label :class=\"suit('label')\">\n <slot name=\"minLabel\" />\n <input\n type=\"number\"\n :class=\"[suit('input'), suit('input', 'min')]\"\n :step=\"step\"\n :min=\"state.range.min\"\n :max=\"state.range.max\"\n :placeholder=\"state.range.min\"\n :value=\"values.min\"\n @change=\"minInput = $event.currentTarget.value\"\n >\n </label>\n <span :class=\"suit('separator')\">\n <slot name=\"separator\">to</slot>\n </span>\n <label :class=\"suit('label')\">\n <slot name=\"maxLabel\" />\n <input\n :class=\"[suit('input'), suit('input', 'max')]\"\n type=\"number\"\n :step=\"step\"\n :min=\"state.range.min\"\n :max=\"state.range.max\"\n :placeholder=\"state.range.max\"\n :value=\"values.max\"\n @change=\"maxInput = $event.currentTarget.value\"\n >\n </label>\n <button\n :class=\"suit('submit')\"\n type=\"submit\"\n >\n <slot name=\"submitLabel\">Go</slot>\n </button>\n </form>\n </slot>\n </div>\n</template>\n\n<script>\nimport { connectRange } from 'instantsearch.js/es/connectors';\nimport { createWidgetMixin } from '../mixins/widget';\nimport { createPanelConsumerMixin } from '../mixins/panel';\nimport { createSuitMixin } from '../mixins/suit';\n\nconst mapStateToCanRefine = state =>\n state && Boolean(state.range) && state.range.min !== state.range.max;\n\nexport default {\n name: 'AisRangeInput',\n mixins: [\n createSuitMixin({ name: 'RangeInput' }),\n createWidgetMixin({ connector: connectRange }),\n createPanelConsumerMixin({\n mapStateToCanRefine,\n }),\n ],\n props: {\n attribute: {\n type: String,\n required: true,\n },\n min: {\n type: Number,\n required: false,\n // @major: remove this default\n default: -Infinity,\n },\n max: {\n type: Number,\n required: false,\n // @major: remove this default\n default: Infinity,\n },\n precision: {\n type: Number,\n required: false,\n default: 0,\n },\n },\n data() {\n return {\n minInput: undefined,\n maxInput: undefined,\n };\n },\n updated() {\n this.minInput = undefined;\n this.maxInput = undefined;\n },\n computed: {\n widgetParams() {\n return {\n attribute: this.attribute,\n min: this.min,\n max: this.max,\n precision: this.precision,\n };\n },\n canRefine() {\n return mapStateToCanRefine(this.state);\n },\n step() {\n return 1 / Math.pow(10, this.precision);\n },\n values() {\n const [minValue, maxValue] = this.state.start;\n const { min: minRange, max: maxRange } = this.state.range;\n\n return {\n min:\n minValue !== -Infinity && minValue !== minRange\n ? minValue\n : undefined,\n max:\n maxValue !== Infinity && maxValue !== maxRange ? maxValue : undefined,\n };\n },\n },\n methods: {\n pick(first, second) {\n if (first !== null && first !== undefined) {\n return first;\n } else {\n return second;\n }\n },\n refine({ min, max }) {\n this.state.refine([min, max]);\n },\n },\n};\n</script>\n"],"names":["const","mapStateToCanRefine","state","Boolean","range","min","max","render","name","mixins","createSuitMixin","createWidgetMixin","connector","connectRange","createPanelConsumerMixin","props","attribute","type","String","required","Number","default","Infinity","precision","data","minInput","undefined","maxInput","updated","this","computed","widgetParams","canRefine","step","Math","pow","values","start","minValue","minRange","maxValue","maxRange","methods","pick","first","second","refine","ref"],"mappings":"wOA8DAA,IAAMC,WAAsBC,UAC1BA,GAASC,QAAQD,EAAME,QAAUF,EAAME,MAAMC,MAAQH,EAAME,MAAME,mBAEpD,CAACC,myCACdC,KAAM,gBACNC,OAAQ,CACNC,EAAgB,CAAEF,KAAM,eACxBG,EAAkB,CAAEC,UAAWC,IAC/BC,EAAyB,qBACvBb,KAGJc,MAAO,CACLC,UAAW,CACTC,KAAMC,OACNC,UAAU,GAEZd,IAAK,CACHY,KAAMG,OACND,UAAU,EAEVE,SAAUC,EAAAA,GAEZhB,IAAK,CACHW,KAAMG,OACND,UAAU,EAEVE,QAASC,EAAAA,GAEXC,UAAW,CACTN,KAAMG,OACND,UAAU,EACVE,QAAS,IAGbG,gBACE,MAAO,CACLC,cAAUC,EACVC,cAAUD,IAGdE,mBACEC,KAAKJ,cAAWC,EAChBG,KAAKF,cAAWD,GAElBI,SAAU,CACRC,wBACE,MAAO,CACLf,UAAWa,KAAKb,UAChBX,IAAKwB,KAAKxB,IACVC,IAAKuB,KAAKvB,IACViB,UAAWM,KAAKN,YAGpBS,qBACE,OAAO/B,EAAoB4B,KAAK3B,QAElC+B,gBACE,OAAO,EAAIC,KAAKC,IAAI,GAAIN,KAAKN,YAE/Ba,kBACE,MAA6BP,KAAK3B,MAAMmC,sBACCR,KAAK3B,MAAME,sBAEpD,MAAO,CACLC,IACEiC,KAAchB,EAAAA,GAAYgB,IAAaC,EACnCD,OACAZ,EACNpB,IACEkC,IAAalB,EAAAA,GAAYkB,IAAaC,EAAWD,OAAWd,KAIpEgB,QAAS,CACPC,cAAKC,EAAOC,GACV,OAAID,MAAAA,EACKA,EAEAC,GAGXC,gBAAOC,uBACLlB,KAAK3B,MAAM4C,OAAO,CAACzC,EAAKC"}
@@ -1,2 +1,2 @@
1
- import{createSuitMixin as t}from"../mixins/suit.js";import{createWidgetMixin as e}from"../mixins/widget.js";import{connectRatingMenu as s}from"instantsearch.js/es/connectors";import{createPanelConsumerMixin as a}from"../mixins/panel.js";export default{render:function(){var t=this,e=t.$createElement,s=t._self._c||e;return t.state?s("div",{class:t.suit()},[t._t("default",[s("svg",{staticStyle:{display:"none"},attrs:{xmlns:"http://www.w3.org/2000/svg"}},[s("symbol",{attrs:{id:"ais-RatingMenu-starSymbol",viewBox:"0 0 24 24"}},[s("path",{attrs:{d:"M12 .288l2.833 8.718h9.167l-7.417 5.389 2.833 8.718-7.416-5.388-7.417 5.388 2.833-8.718-7.416-5.389h9.167z"}})]),t._v(" "),s("symbol",{attrs:{id:"ais-RatingMenu-starEmptySymbol",viewBox:"0 0 24 24"}},[s("path",{attrs:{d:"M12 6.76l1.379 4.246h4.465l-3.612 2.625 1.379 4.246-3.611-2.625-3.612 2.625 1.379-4.246-3.612-2.625h4.465l1.38-4.246zm0-6.472l-2.833 8.718h-9.167l7.416 5.389-2.833 8.718 7.417-5.388 7.416 5.388-2.833-8.718 7.417-5.389h-9.167l-2.833-8.718z"}})])]),t._v(" "),s("ul",{class:t.suit("list")},t._l(t.state.items,function(e,a){return s("li",{key:a,class:[t.suit("item"),e.isRefined&&t.suit("item","selected")]},[s("a",{class:t.suit("link"),attrs:{href:t.state.createURL(e.value),"aria-label":e.value+" & Up"},on:{click:function(s){s.preventDefault(),t.state.refine(e.value)}}},[t._l(e.stars,function(e,a){return[e?s("svg",{key:a+"-full",class:[t.suit("starIcon"),t.suit("starIcon--full")],attrs:{"aria-hidden":"true",width:"24",height:"24"}},[s("use",{attrs:{"xlink:href":"#ais-RatingMenu-starSymbol"}})]):s("svg",{key:a+"-empty",class:[t.suit("starIcon"),t.suit("starIcon--empty")],attrs:{"aria-hidden":"true",width:"24",height:"24"}},[s("use",{attrs:{"xlink:href":"#ais-RatingMenu-starEmptySymbol"}})])]}),t._v(" "),s("span",{class:t.suit("label"),attrs:{"aria-hidden":"true"}},[t._t("andUp",[t._v("& Up")])],2),t._v(" "),s("span",{class:t.suit("count")},[t._v(t._s(e.count))])],2)])}))],{items:t.state.items,refine:t.state.refine,createURL:t.state.createURL})],2):t._e()},staticRenderFns:[],name:"AisRatingMenu",mixins:[t({name:"RatingMenu"}),e({connector:s}),a({mapStateToCanRefine:function(t){return!1===t.hasNoResults}})],props:{attribute:{type:String,required:!0},max:{type:Number,default:5}},computed:{widgetParams:function(){return{attribute:this.attribute,max:this.max}}}};
1
+ import{createSuitMixin as t}from"../mixins/suit.js";import{createWidgetMixin as e}from"../mixins/widget.js";import{connectRatingMenu as s}from"instantsearch.js/es/connectors";import{createPanelConsumerMixin as a}from"../mixins/panel.js";export default{render:function(){var t=this,e=t.$createElement,s=t._self._c||e;return t.state?s("div",{class:t.suit()},[t._t("default",[s("svg",{staticStyle:{display:"none"},attrs:{xmlns:"http://www.w3.org/2000/svg"}},[s("symbol",{attrs:{id:"ais-RatingMenu-starSymbol",viewBox:"0 0 24 24"}},[s("path",{attrs:{d:"M12 .288l2.833 8.718h9.167l-7.417 5.389 2.833 8.718-7.416-5.388-7.417 5.388 2.833-8.718-7.416-5.389h9.167z"}})]),t._v(" "),s("symbol",{attrs:{id:"ais-RatingMenu-starEmptySymbol",viewBox:"0 0 24 24"}},[s("path",{attrs:{d:"M12 6.76l1.379 4.246h4.465l-3.612 2.625 1.379 4.246-3.611-2.625-3.612 2.625 1.379-4.246-3.612-2.625h4.465l1.38-4.246zm0-6.472l-2.833 8.718h-9.167l7.416 5.389-2.833 8.718 7.417-5.388 7.416 5.388-2.833-8.718 7.417-5.389h-9.167l-2.833-8.718z"}})])]),t._v(" "),s("ul",{class:t.suit("list")},t._l(t.state.items,function(e,a){return s("li",{key:a,class:[t.suit("item"),e.isRefined&&t.suit("item","selected")]},[s("a",{class:t.suit("link"),attrs:{href:t.state.createURL(e.value),"aria-label":e.value+" & Up"},on:{click:function(s){s.preventDefault(),t.state.refine(e.value)}}},[t._l(e.stars,function(e,a){return[e?s("svg",{key:a+"-full",class:[t.suit("starIcon"),t.suit("starIcon--full")],attrs:{"aria-hidden":"true",width:"24",height:"24"}},[s("use",{attrs:{"xlink:href":"#ais-RatingMenu-starSymbol"}})]):s("svg",{key:a+"-empty",class:[t.suit("starIcon"),t.suit("starIcon--empty")],attrs:{"aria-hidden":"true",width:"24",height:"24"}},[s("use",{attrs:{"xlink:href":"#ais-RatingMenu-starEmptySymbol"}})])]}),t._v(" "),s("span",{class:t.suit("label"),attrs:{"aria-hidden":"true"}},[t._t("andUp",[t._v("& Up")])],2),t._v(" "),s("span",{class:t.suit("count")},[t._v(t._s(e.count))])],2)])}))],{items:t.state.items,refine:t.state.refine,createURL:t.state.createURL,sendEvent:t.state.sendEvent})],2):t._e()},staticRenderFns:[],name:"AisRatingMenu",mixins:[t({name:"RatingMenu"}),e({connector:s}),a({mapStateToCanRefine:function(t){return!1===t.hasNoResults}})],props:{attribute:{type:String,required:!0},max:{type:Number,default:void 0}},computed:{widgetParams:function(){return{attribute:this.attribute,max:this.max}}}};
2
2
  //# sourceMappingURL=RatingMenu.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RatingMenu.vue.js","sources":["../../../src/components/RatingMenu.vue"],"sourcesContent":["<template>\n <div\n v-if=\"state\"\n :class=\"suit()\"\n >\n <slot\n :items=\"state.items\"\n :refine=\"state.refine\"\n :createURL=\"state.createURL\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n style=\"display: none;\"\n >\n <symbol\n id=\"ais-RatingMenu-starSymbol\"\n viewBox=\"0 0 24 24\"\n >\n <path d=\"M12 .288l2.833 8.718h9.167l-7.417 5.389 2.833 8.718-7.416-5.388-7.417 5.388 2.833-8.718-7.416-5.389h9.167z\" />\n </symbol>\n <symbol\n id=\"ais-RatingMenu-starEmptySymbol\"\n viewBox=\"0 0 24 24\"\n >\n <path d=\"M12 6.76l1.379 4.246h4.465l-3.612 2.625 1.379 4.246-3.611-2.625-3.612 2.625 1.379-4.246-3.612-2.625h4.465l1.38-4.246zm0-6.472l-2.833 8.718h-9.167l7.416 5.389-2.833 8.718 7.417-5.388 7.416 5.388-2.833-8.718 7.417-5.389h-9.167l-2.833-8.718z\" />\n </symbol>\n </svg>\n\n <ul :class=\"suit('list')\">\n <li\n v-for=\"(item, key) in state.items\"\n :key=\"key\"\n :class=\"[suit('item'), item.isRefined && suit('item', 'selected')]\"\n >\n <a\n :href=\"state.createURL(item.value)\"\n :aria-label=\"`${item.value} & Up`\"\n :class=\"suit('link')\"\n @click.prevent=\"state.refine(item.value)\"\n >\n <template v-for=\"(full, n) in item.stars\">\n <svg\n v-if=\"full\"\n aria-hidden=\"true\"\n width=\"24\"\n height=\"24\"\n :class=\"[suit('starIcon'), suit('starIcon--full')]\"\n :key=\"n + '-full'\"\n >\n <use xlink:href=\"#ais-RatingMenu-starSymbol\" />\n </svg>\n\n <svg\n v-else\n :class=\"[suit('starIcon'), suit('starIcon--empty')]\"\n aria-hidden=\"true\"\n width=\"24\"\n height=\"24\"\n :key=\"n + '-empty'\"\n >\n <use xlink:href=\"#ais-RatingMenu-starEmptySymbol\" />\n </svg>\n </template>\n\n <span\n :class=\"suit('label')\"\n aria-hidden=\"true\"\n >\n <slot name=\"andUp\">&amp; Up</slot>\n </span>\n <span :class=\"suit('count')\">{{ item.count }}</span>\n </a>\n </li>\n </ul>\n </slot>\n </div>\n</template>\n\n<script>\nimport { connectRatingMenu } from 'instantsearch.js/es/connectors';\nimport { createPanelConsumerMixin } from '../mixins/panel';\nimport { createWidgetMixin } from '../mixins/widget';\nimport { createSuitMixin } from '../mixins/suit';\n\nexport default {\n name: 'AisRatingMenu',\n mixins: [\n createSuitMixin({ name: 'RatingMenu' }),\n createWidgetMixin({ connector: connectRatingMenu }),\n createPanelConsumerMixin({\n mapStateToCanRefine: state => state.hasNoResults === false,\n }),\n ],\n props: {\n attribute: {\n type: String,\n required: true,\n },\n max: {\n type: Number,\n default: 5,\n },\n },\n computed: {\n widgetParams() {\n return {\n attribute: this.attribute,\n max: this.max,\n };\n },\n },\n};\n</script>\n"],"names":["render","name","mixins","createSuitMixin","createWidgetMixin","connector","connectRatingMenu","createPanelConsumerMixin","mapStateToCanRefine","state","hasNoResults","props","attribute","type","String","required","max","Number","default","computed","widgetParams","this"],"mappings":"2PAoFe,CAACA,6wDACdC,KAAM,gBACNC,OAAQ,CACNC,EAAgB,CAAEF,KAAM,eACxBG,EAAkB,CAAEC,UAAWC,IAC/BC,EAAyB,CACvBC,6BAAqBC,UAAgC,IAAvBA,EAAMC,iBAGxCC,MAAO,CACLC,UAAW,CACTC,KAAMC,OACNC,UAAU,GAEZC,IAAK,CACHH,KAAMI,OACNC,QAAS,IAGbC,SAAU,CACRC,wBACE,MAAO,CACLR,UAAWS,KAAKT,UAChBI,IAAKK,KAAKL"}
1
+ {"version":3,"file":"RatingMenu.vue.js","sources":["../../../src/components/RatingMenu.vue"],"sourcesContent":["<template>\n <div\n v-if=\"state\"\n :class=\"suit()\"\n >\n <slot\n :items=\"state.items\"\n :refine=\"state.refine\"\n :createURL=\"state.createURL\"\n :send-event=\"state.sendEvent\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n style=\"display: none;\"\n >\n <symbol\n id=\"ais-RatingMenu-starSymbol\"\n viewBox=\"0 0 24 24\"\n >\n <path d=\"M12 .288l2.833 8.718h9.167l-7.417 5.389 2.833 8.718-7.416-5.388-7.417 5.388 2.833-8.718-7.416-5.389h9.167z\" />\n </symbol>\n <symbol\n id=\"ais-RatingMenu-starEmptySymbol\"\n viewBox=\"0 0 24 24\"\n >\n <path d=\"M12 6.76l1.379 4.246h4.465l-3.612 2.625 1.379 4.246-3.611-2.625-3.612 2.625 1.379-4.246-3.612-2.625h4.465l1.38-4.246zm0-6.472l-2.833 8.718h-9.167l7.416 5.389-2.833 8.718 7.417-5.388 7.416 5.388-2.833-8.718 7.417-5.389h-9.167l-2.833-8.718z\" />\n </symbol>\n </svg>\n\n <ul :class=\"suit('list')\">\n <li\n v-for=\"(item, key) in state.items\"\n :key=\"key\"\n :class=\"[suit('item'), item.isRefined && suit('item', 'selected')]\"\n >\n <a\n :href=\"state.createURL(item.value)\"\n :aria-label=\"`${item.value} & Up`\"\n :class=\"suit('link')\"\n @click.prevent=\"state.refine(item.value)\"\n >\n <template v-for=\"(full, n) in item.stars\">\n <svg\n v-if=\"full\"\n aria-hidden=\"true\"\n width=\"24\"\n height=\"24\"\n :class=\"[suit('starIcon'), suit('starIcon--full')]\"\n :key=\"n + '-full'\"\n >\n <use xlink:href=\"#ais-RatingMenu-starSymbol\" />\n </svg>\n\n <svg\n v-else\n :class=\"[suit('starIcon'), suit('starIcon--empty')]\"\n aria-hidden=\"true\"\n width=\"24\"\n height=\"24\"\n :key=\"n + '-empty'\"\n >\n <use xlink:href=\"#ais-RatingMenu-starEmptySymbol\" />\n </svg>\n </template>\n\n <span\n :class=\"suit('label')\"\n aria-hidden=\"true\"\n >\n <slot name=\"andUp\">&amp; Up</slot>\n </span>\n <span :class=\"suit('count')\">{{ item.count }}</span>\n </a>\n </li>\n </ul>\n </slot>\n </div>\n</template>\n\n<script>\nimport { connectRatingMenu } from 'instantsearch.js/es/connectors';\nimport { createPanelConsumerMixin } from '../mixins/panel';\nimport { createWidgetMixin } from '../mixins/widget';\nimport { createSuitMixin } from '../mixins/suit';\n\nexport default {\n name: 'AisRatingMenu',\n mixins: [\n createSuitMixin({ name: 'RatingMenu' }),\n createWidgetMixin({ connector: connectRatingMenu }),\n createPanelConsumerMixin({\n mapStateToCanRefine: state => state.hasNoResults === false,\n }),\n ],\n props: {\n attribute: {\n type: String,\n required: true,\n },\n max: {\n type: Number,\n default: undefined,\n },\n },\n computed: {\n widgetParams() {\n return {\n attribute: this.attribute,\n max: this.max,\n };\n },\n },\n};\n</script>\n"],"names":["render","name","mixins","createSuitMixin","createWidgetMixin","connector","connectRatingMenu","createPanelConsumerMixin","mapStateToCanRefine","state","hasNoResults","props","attribute","type","String","required","max","Number","default","undefined","computed","widgetParams","this"],"mappings":"2PAqFe,CAACA,yyDACdC,KAAM,gBACNC,OAAQ,CACNC,EAAgB,CAAEF,KAAM,eACxBG,EAAkB,CAAEC,UAAWC,IAC/BC,EAAyB,CACvBC,6BAAqBC,UAAgC,IAAvBA,EAAMC,iBAGxCC,MAAO,CACLC,UAAW,CACTC,KAAMC,OACNC,UAAU,GAEZC,IAAK,CACHH,KAAMI,OACNC,aAASC,IAGbC,SAAU,CACRC,wBACE,MAAO,CACLT,UAAWU,KAAKV,UAChBI,IAAKM,KAAKN"}
@@ -1,2 +1,2 @@
1
- import{createSuitMixin as e}from"../mixins/suit.js";import{createWidgetMixin as t}from"../mixins/widget.js";import{connectRefinementList as s}from"instantsearch.js/es/connectors";import{createPanelConsumerMixin as r}from"../mixins/panel.js";import a from"./Highlight.vue.js";import i from"./SearchInput.vue.js";var o=function(){};export default{render:function(){var e,t=this,s=t.$createElement,r=t._self._c||s;return t.state?r("div",{class:[t.suit(),!t.state.canRefine&&t.suit("","noRefinement")]},[t._t("default",[t.searchable?r("div",{class:t.suit("searchBox")},[r("search-input",{attrs:{placeholder:t.searchablePlaceholder,"class-names":t.classNames},model:{value:t.searchForFacetValues,callback:function(e){t.searchForFacetValues=e},expression:"searchForFacetValues"}})],1):t._e(),t._v(" "),t.state.isFromSearch&&0===t.items.length?t._t("noResults",[r("div",{class:t.suit("noResults")},[t._v("No results.")])],{query:t.searchForFacetValues}):t._e(),t._v(" "),r("ul",{class:t.suit("list")},t._l(t.items,function(e){return r("li",{key:e.value,class:[t.suit("item"),e.isRefined&&t.suit("item","selected")]},[t._t("item",[r("label",{class:t.suit("label")},[r("input",{class:t.suit("checkbox"),attrs:{type:"checkbox"},domProps:{value:e.value,checked:e.isRefined},on:{change:function(s){t.refine(e.value)}}}),t._v(" "),t.searchable?r("span",{class:t.suit("labelText")},[r("ais-highlight",{attrs:{attribute:"item",hit:e}})],1):r("span",{class:t.suit("labelText")},[t._v(t._s(e.label))]),t._v(" "),r("span",{class:t.suit("count")},[t._v(t._s(e.count))])])],{item:e,refine:t.refine,createURL:t.state.createURL})],2)})),t._v(" "),t.showMore?r("button",{class:[t.suit("showMore"),(e={},e[t.suit("showMore","disabled")]=!t.state.canToggleShowMore,e)],attrs:{disabled:!t.state.canToggleShowMore},on:{click:t.toggleShowMore}},[t._t("showMoreLabel",[t._v("Show "+t._s(t.state.isShowingMore?"less":"more"))],{isShowingMore:t.state.isShowingMore})],2):t._e()],{items:t.items,refine:t.refine,searchForItems:t.state.searchForItems,searchForItemsQuery:t.searchForFacetValuesQuery,toggleShowMore:t.toggleShowMore,canToggleShowMore:t.state.canToggleShowMore,isShowingMore:t.state.isShowingMore,createURL:t.state.createURL,isFromSearch:t.state.isFromSearch,canRefine:t.state.canRefine})],2):t._e()},staticRenderFns:[],name:"AisRefinementList",components:{SearchInput:i,AisHighlight:a},mixins:[e({name:"RefinementList"}),t({connector:s}),r({mapStateToCanRefine:function(e){return Boolean(e.canRefine)}})],props:{attribute:{type:String,required:!0},searchable:{type:Boolean,default:!1},searchablePlaceholder:{default:"Search here…",type:String,required:!1},operator:{default:"or",validator:function(e){return"and"===e||"or"===e},required:!1},limit:{type:Number,default:10,required:!1},showMoreLimit:{type:Number,default:20,required:!1},showMore:{type:Boolean,default:!1,required:!1},sortBy:{type:[Array,Function],default:function(){return["isRefined","count:desc","name:asc"]},required:!1},transformItems:{type:Function,default:function(e){return e},required:!1}},data:function(){return{searchForFacetValuesQuery:""}},computed:{searchForFacetValues:{get:function(){return this.searchForFacetValuesQuery},set:function(e){this.state.searchForItems(e),this.searchForFacetValuesQuery=e}},toggleShowMore:function(){return this.state.toggleShowMore||o},items:function(){return this.state.items.map(function(e){return Object.assign({},e,{_highlightResult:{item:{value:e.highlighted}}})})},widgetParams:function(){return{attribute:this.attribute,operator:this.operator,limit:this.limit,showMore:this.showMore,showMoreLimit:this.showMoreLimit,sortBy:this.sortBy,escapeFacetValues:!0,transformItems:this.transformItems}}},methods:{refine:function(e){this.state.refine(e),this.searchForFacetValuesQuery=""}}};
1
+ import{createSuitMixin as e}from"../mixins/suit.js";import{createWidgetMixin as t}from"../mixins/widget.js";import{connectRefinementList as s}from"instantsearch.js/es/connectors";import{createPanelConsumerMixin as r}from"../mixins/panel.js";import a from"./Highlight.vue.js";import i from"./SearchInput.vue.js";var o=function(){};export default{render:function(){var e,t=this,s=t.$createElement,r=t._self._c||s;return t.state?r("div",{class:[t.suit(),!t.state.canRefine&&t.suit("","noRefinement")]},[t._t("default",[t.searchable?r("div",{class:t.suit("searchBox")},[r("search-input",{attrs:{placeholder:t.searchablePlaceholder,"class-names":t.classNames},model:{value:t.searchForFacetValues,callback:function(e){t.searchForFacetValues=e},expression:"searchForFacetValues"}})],1):t._e(),t._v(" "),t.state.isFromSearch&&0===t.items.length?t._t("noResults",[r("div",{class:t.suit("noResults")},[t._v("No results.")])],{query:t.searchForFacetValues}):t._e(),t._v(" "),r("ul",{class:t.suit("list")},t._l(t.items,function(e){return r("li",{key:e.value,class:[t.suit("item"),e.isRefined&&t.suit("item","selected")]},[t._t("item",[r("label",{class:t.suit("label")},[r("input",{class:t.suit("checkbox"),attrs:{type:"checkbox"},domProps:{value:e.value,checked:e.isRefined},on:{change:function(s){t.refine(e.value)}}}),t._v(" "),t.searchable?r("span",{class:t.suit("labelText")},[r("ais-highlight",{attrs:{attribute:"item",hit:e}})],1):r("span",{class:t.suit("labelText")},[t._v(t._s(e.label))]),t._v(" "),r("span",{class:t.suit("count")},[t._v(t._s(e.count))])])],{item:e,refine:t.refine,createURL:t.state.createURL})],2)})),t._v(" "),t.showMore?r("button",{class:[t.suit("showMore"),(e={},e[t.suit("showMore","disabled")]=!t.state.canToggleShowMore,e)],attrs:{disabled:!t.state.canToggleShowMore},on:{click:t.toggleShowMore}},[t._t("showMoreLabel",[t._v("Show "+t._s(t.state.isShowingMore?"less":"more"))],{isShowingMore:t.state.isShowingMore})],2):t._e()],{items:t.items,refine:t.refine,searchForItems:t.state.searchForItems,searchForItemsQuery:t.searchForFacetValuesQuery,toggleShowMore:t.toggleShowMore,canToggleShowMore:t.state.canToggleShowMore,isShowingMore:t.state.isShowingMore,createURL:t.state.createURL,isFromSearch:t.state.isFromSearch,canRefine:t.state.canRefine,sendEvent:t.state.sendEvent})],2):t._e()},staticRenderFns:[],name:"AisRefinementList",components:{SearchInput:i,AisHighlight:a},mixins:[e({name:"RefinementList"}),t({connector:s}),r({mapStateToCanRefine:function(e){return Boolean(e.canRefine)}})],props:{attribute:{type:String,required:!0},searchable:{type:Boolean,default:void 0},searchablePlaceholder:{type:String,required:!1,default:"Search here…"},operator:{default:"or",validator:function(e){return"and"===e||"or"===e},required:!1},limit:{type:Number,required:!1,default:void 0},showMoreLimit:{type:Number,required:!1,default:void 0},showMore:{type:Boolean,required:!1,default:!1},sortBy:{type:[Array,Function],required:!1,default:void 0},transformItems:{type:Function,required:!1,default:void 0}},data:function(){return{searchForFacetValuesQuery:""}},computed:{searchForFacetValues:{get:function(){return this.searchForFacetValuesQuery},set:function(e){this.state.searchForItems(e),this.searchForFacetValuesQuery=e}},toggleShowMore:function(){return this.state.toggleShowMore||o},items:function(){return this.state.items.map(function(e){return Object.assign({},e,{_highlightResult:{item:{value:e.highlighted}}})})},widgetParams:function(){return{attribute:this.attribute,operator:this.operator,limit:this.limit,showMore:this.showMore,showMoreLimit:this.showMoreLimit,sortBy:this.sortBy,escapeFacetValues:!0,transformItems:this.transformItems}}},methods:{refine:function(e){this.state.refine(e),this.searchForFacetValuesQuery=""}}};
2
2
  //# sourceMappingURL=RefinementList.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RefinementList.vue.js","sources":["../../../src/components/RefinementList.vue"],"sourcesContent":["<template>\n <div\n :class=\"[\n suit(),\n !state.canRefine && suit('','noRefinement')\n ]\"\n v-if=\"state\"\n >\n <slot\n :items=\"items\"\n :refine=\"refine\"\n :search-for-items=\"state.searchForItems\"\n :search-for-items-query=\"searchForFacetValuesQuery\"\n :toggle-show-more=\"toggleShowMore\"\n :can-toggle-show-more=\"state.canToggleShowMore\"\n :is-showing-more=\"state.isShowingMore\"\n :createURL=\"state.createURL\"\n :is-from-search=\"state.isFromSearch\"\n :can-refine=\"state.canRefine\"\n >\n <div\n :class=\"suit('searchBox')\"\n v-if=\"searchable\"\n >\n <search-input\n v-model=\"searchForFacetValues\"\n :placeholder=\"searchablePlaceholder\"\n :class-names=\"classNames\"\n />\n </div>\n <slot\n name=\"noResults\"\n :query=\"searchForFacetValues\"\n v-if=\"state.isFromSearch && items.length === 0\"\n >\n <div :class=\"suit('noResults')\">No results.</div>\n </slot>\n <ul :class=\"suit('list')\">\n <li\n :class=\"[\n suit('item'), item.isRefined && suit('item', 'selected')]\"\n v-for=\"item in items\"\n :key=\"item.value\"\n >\n <slot\n name=\"item\"\n :item=\"item\"\n :refine=\"refine\"\n :createURL=\"state.createURL\"\n >\n <label :class=\"suit('label')\">\n <input\n :class=\"suit('checkbox')\"\n type=\"checkbox\"\n :value=\"item.value\"\n :checked=\"item.isRefined\"\n @change=\"refine(item.value)\"\n >\n <span\n v-if=\"searchable\"\n :class=\"suit('labelText')\"\n >\n <ais-highlight\n attribute=\"item\"\n :hit=\"item\"\n />\n </span>\n <span\n v-else\n :class=\"suit('labelText')\"\n >{{ item.label }}</span>\n <span :class=\"suit('count')\">{{ item.count }}</span>\n </label>\n </slot>\n </li>\n </ul>\n <button\n :class=\"[\n suit('showMore'),\n {\n [suit('showMore', 'disabled')]: !state.canToggleShowMore,\n }\n ]\"\n @click=\"toggleShowMore\"\n v-if=\"showMore\"\n :disabled=\"!state.canToggleShowMore\"\n >\n <slot\n name=\"showMoreLabel\"\n :is-showing-more=\"state.isShowingMore\"\n >Show {{ state.isShowingMore ? 'less' : 'more' }}</slot>\n </button>\n </slot>\n </div>\n</template>\n\n<script>\nimport { createWidgetMixin } from '../mixins/widget';\nimport { createPanelConsumerMixin } from '../mixins/panel';\nimport { createSuitMixin } from '../mixins/suit';\nimport { connectRefinementList } from 'instantsearch.js/es/connectors';\nimport SearchInput from './SearchInput.vue';\nimport AisHighlight from './Highlight.vue';\n\nconst noop = () => {};\n\nexport default {\n name: 'AisRefinementList',\n components: { SearchInput, AisHighlight },\n mixins: [\n createSuitMixin({ name: 'RefinementList' }),\n createWidgetMixin({ connector: connectRefinementList }),\n createPanelConsumerMixin({\n mapStateToCanRefine: state => Boolean(state.canRefine),\n }),\n ],\n props: {\n attribute: {\n type: String,\n required: true,\n },\n searchable: {\n type: Boolean,\n default: false,\n },\n searchablePlaceholder: {\n default: 'Search here…',\n type: String,\n required: false,\n },\n operator: {\n default: 'or',\n validator(value) {\n return value === 'and' || value === 'or';\n },\n required: false,\n },\n limit: {\n type: Number,\n default: 10,\n required: false,\n },\n showMoreLimit: {\n type: Number,\n default: 20,\n required: false,\n },\n showMore: {\n type: Boolean,\n default: false,\n required: false,\n },\n sortBy: {\n type: [Array, Function],\n default: () => ['isRefined', 'count:desc', 'name:asc'],\n required: false,\n },\n transformItems: {\n type: Function,\n default: items => items,\n required: false,\n },\n },\n data() {\n return {\n searchForFacetValuesQuery: '',\n };\n },\n computed: {\n searchForFacetValues: {\n get() {\n return this.searchForFacetValuesQuery;\n },\n set(value) {\n this.state.searchForItems(value);\n this.searchForFacetValuesQuery = value;\n },\n },\n toggleShowMore() {\n return this.state.toggleShowMore || noop;\n },\n items() {\n return this.state.items.map(item =>\n Object.assign({}, item, {\n _highlightResult: {\n item: {\n value: item.highlighted,\n },\n },\n })\n );\n },\n widgetParams() {\n return {\n attribute: this.attribute,\n operator: this.operator,\n limit: this.limit,\n showMore: this.showMore,\n showMoreLimit: this.showMoreLimit,\n sortBy: this.sortBy,\n escapeFacetValues: true,\n transformItems: this.transformItems,\n };\n },\n },\n methods: {\n refine(value) {\n this.state.refine(value);\n this.searchForFacetValuesQuery = '';\n },\n },\n};\n</script>\n"],"names":["const","noop","render","name","components","SearchInput","AisHighlight","mixins","createSuitMixin","createWidgetMixin","connector","connectRefinementList","createPanelConsumerMixin","mapStateToCanRefine","state","Boolean","canRefine","props","attribute","type","String","required","searchable","default","searchablePlaceholder","operator","validator","value","limit","Number","showMoreLimit","showMore","sortBy","Array","Function","transformItems","items","data","searchForFacetValuesQuery","computed","searchForFacetValues","get","this","set","searchForItems","toggleShowMore","map","item","Object","assign","_highlightResult","highlighted","widgetParams","escapeFacetValues","methods","refine"],"mappings":"uTAwGAA,IAAMC,6BAES,CAACC,m6DACdC,KAAM,oBACNC,WAAY,aAAEC,eAAaC,GAC3BC,OAAQ,CACNC,EAAgB,CAAEL,KAAM,mBACxBM,EAAkB,CAAEC,UAAWC,IAC/BC,EAAyB,CACvBC,6BAAqBC,UAASC,QAAQD,EAAME,eAGhDC,MAAO,CACLC,UAAW,CACTC,KAAMC,OACNC,UAAU,GAEZC,WAAY,CACVH,KAAMJ,QACNQ,SAAS,GAEXC,sBAAuB,CACrBD,QAAS,eACTJ,KAAMC,OACNC,UAAU,GAEZI,SAAU,CACRF,QAAS,KACTG,mBAAUC,GACR,MAAiB,QAAVA,GAA6B,OAAVA,GAE5BN,UAAU,GAEZO,MAAO,CACLT,KAAMU,OACNN,QAAS,GACTF,UAAU,GAEZS,cAAe,CACbX,KAAMU,OACNN,QAAS,GACTF,UAAU,GAEZU,SAAU,CACRZ,KAAMJ,QACNQ,SAAS,EACTF,UAAU,GAEZW,OAAQ,CACNb,KAAM,CAACc,MAAOC,UACdX,yBAAe,CAAC,YAAa,aAAc,aAC3CF,UAAU,GAEZc,eAAgB,CACdhB,KAAMe,SACNX,iBAASa,UAASA,GAClBf,UAAU,IAGdgB,gBACE,MAAO,CACLC,0BAA2B,KAG/BC,SAAU,CACRC,qBAAsB,CACpBC,eACE,OAAOC,KAAKJ,2BAEdK,aAAIhB,GACFe,KAAK5B,MAAM8B,eAAejB,GAC1Be,KAAKJ,0BAA4BX,IAGrCkB,0BACE,OAAOH,KAAK5B,MAAM+B,gBAAkB5C,GAEtCmC,iBACE,OAAOM,KAAK5B,MAAMsB,MAAMU,aAAIC,UAC1BC,OAAOC,OAAO,GAAIF,EAAM,CACtBG,iBAAkB,CAChBH,KAAM,CACJpB,MAAOoB,EAAKI,mBAMtBC,wBACE,MAAO,CACLlC,UAAWwB,KAAKxB,UAChBO,SAAUiB,KAAKjB,SACfG,MAAOc,KAAKd,MACZG,SAAUW,KAAKX,SACfD,cAAeY,KAAKZ,cACpBE,OAAQU,KAAKV,OACbqB,mBAAmB,EACnBlB,eAAgBO,KAAKP,kBAI3BmB,QAAS,CACPC,gBAAO5B,GACLe,KAAK5B,MAAMyC,OAAO5B,GAClBe,KAAKJ,0BAA4B"}
1
+ {"version":3,"file":"RefinementList.vue.js","sources":["../../../src/components/RefinementList.vue"],"sourcesContent":["<template>\n <div\n :class=\"[\n suit(),\n !state.canRefine && suit('','noRefinement')\n ]\"\n v-if=\"state\"\n >\n <slot\n :items=\"items\"\n :refine=\"refine\"\n :search-for-items=\"state.searchForItems\"\n :search-for-items-query=\"searchForFacetValuesQuery\"\n :toggle-show-more=\"toggleShowMore\"\n :can-toggle-show-more=\"state.canToggleShowMore\"\n :is-showing-more=\"state.isShowingMore\"\n :createURL=\"state.createURL\"\n :is-from-search=\"state.isFromSearch\"\n :can-refine=\"state.canRefine\"\n :send-event=\"state.sendEvent\"\n >\n <div\n :class=\"suit('searchBox')\"\n v-if=\"searchable\"\n >\n <search-input\n v-model=\"searchForFacetValues\"\n :placeholder=\"searchablePlaceholder\"\n :class-names=\"classNames\"\n />\n </div>\n <slot\n name=\"noResults\"\n :query=\"searchForFacetValues\"\n v-if=\"state.isFromSearch && items.length === 0\"\n >\n <div :class=\"suit('noResults')\">No results.</div>\n </slot>\n <ul :class=\"suit('list')\">\n <li\n :class=\"[\n suit('item'), item.isRefined && suit('item', 'selected')]\"\n v-for=\"item in items\"\n :key=\"item.value\"\n >\n <slot\n name=\"item\"\n :item=\"item\"\n :refine=\"refine\"\n :createURL=\"state.createURL\"\n >\n <label :class=\"suit('label')\">\n <input\n :class=\"suit('checkbox')\"\n type=\"checkbox\"\n :value=\"item.value\"\n :checked=\"item.isRefined\"\n @change=\"refine(item.value)\"\n >\n <span\n v-if=\"searchable\"\n :class=\"suit('labelText')\"\n >\n <ais-highlight\n attribute=\"item\"\n :hit=\"item\"\n />\n </span>\n <span\n v-else\n :class=\"suit('labelText')\"\n >{{ item.label }}</span>\n <span :class=\"suit('count')\">{{ item.count }}</span>\n </label>\n </slot>\n </li>\n </ul>\n <button\n :class=\"[\n suit('showMore'),\n {\n [suit('showMore', 'disabled')]: !state.canToggleShowMore,\n }\n ]\"\n @click=\"toggleShowMore\"\n v-if=\"showMore\"\n :disabled=\"!state.canToggleShowMore\"\n >\n <slot\n name=\"showMoreLabel\"\n :is-showing-more=\"state.isShowingMore\"\n >Show {{ state.isShowingMore ? 'less' : 'more' }}</slot>\n </button>\n </slot>\n </div>\n</template>\n\n<script>\nimport { createWidgetMixin } from '../mixins/widget';\nimport { createPanelConsumerMixin } from '../mixins/panel';\nimport { createSuitMixin } from '../mixins/suit';\nimport { connectRefinementList } from 'instantsearch.js/es/connectors';\nimport SearchInput from './SearchInput.vue';\nimport AisHighlight from './Highlight.vue';\n\nconst noop = () => {};\n\nexport default {\n name: 'AisRefinementList',\n components: { SearchInput, AisHighlight },\n mixins: [\n createSuitMixin({ name: 'RefinementList' }),\n createWidgetMixin({ connector: connectRefinementList }),\n createPanelConsumerMixin({\n mapStateToCanRefine: state => Boolean(state.canRefine),\n }),\n ],\n props: {\n attribute: {\n type: String,\n required: true,\n },\n searchable: {\n type: Boolean,\n default: undefined,\n },\n searchablePlaceholder: {\n type: String,\n required: false,\n default: 'Search here…',\n },\n operator: {\n default: 'or',\n validator(value) {\n return value === 'and' || value === 'or';\n },\n required: false,\n },\n limit: {\n type: Number,\n required: false,\n default: undefined,\n },\n showMoreLimit: {\n type: Number,\n required: false,\n default: undefined,\n },\n showMore: {\n type: Boolean,\n required: false,\n default: false,\n },\n sortBy: {\n type: [Array, Function],\n required: false,\n default: undefined,\n },\n transformItems: {\n type: Function,\n required: false,\n default: undefined,\n },\n },\n data() {\n return {\n searchForFacetValuesQuery: '',\n };\n },\n computed: {\n searchForFacetValues: {\n get() {\n return this.searchForFacetValuesQuery;\n },\n set(value) {\n this.state.searchForItems(value);\n this.searchForFacetValuesQuery = value;\n },\n },\n toggleShowMore() {\n return this.state.toggleShowMore || noop;\n },\n items() {\n return this.state.items.map(item =>\n Object.assign({}, item, {\n _highlightResult: {\n item: {\n value: item.highlighted,\n },\n },\n })\n );\n },\n widgetParams() {\n return {\n attribute: this.attribute,\n operator: this.operator,\n limit: this.limit,\n showMore: this.showMore,\n showMoreLimit: this.showMoreLimit,\n sortBy: this.sortBy,\n escapeFacetValues: true,\n transformItems: this.transformItems,\n };\n },\n },\n methods: {\n refine(value) {\n this.state.refine(value);\n this.searchForFacetValuesQuery = '';\n },\n },\n};\n</script>\n"],"names":["const","noop","render","name","components","SearchInput","AisHighlight","mixins","createSuitMixin","createWidgetMixin","connector","connectRefinementList","createPanelConsumerMixin","mapStateToCanRefine","state","Boolean","canRefine","props","attribute","type","String","required","searchable","default","undefined","searchablePlaceholder","operator","validator","value","limit","Number","showMoreLimit","showMore","sortBy","Array","Function","transformItems","data","searchForFacetValuesQuery","computed","searchForFacetValues","get","this","set","searchForItems","toggleShowMore","items","map","item","Object","assign","_highlightResult","highlighted","widgetParams","escapeFacetValues","methods","refine"],"mappings":"uTAyGAA,IAAMC,6BAES,CAACC,+7DACdC,KAAM,oBACNC,WAAY,aAAEC,eAAaC,GAC3BC,OAAQ,CACNC,EAAgB,CAAEL,KAAM,mBACxBM,EAAkB,CAAEC,UAAWC,IAC/BC,EAAyB,CACvBC,6BAAqBC,UAASC,QAAQD,EAAME,eAGhDC,MAAO,CACLC,UAAW,CACTC,KAAMC,OACNC,UAAU,GAEZC,WAAY,CACVH,KAAMJ,QACNQ,aAASC,GAEXC,sBAAuB,CACrBN,KAAMC,OACNC,UAAU,EACVE,QAAS,gBAEXG,SAAU,CACRH,QAAS,KACTI,mBAAUC,GACR,MAAiB,QAAVA,GAA6B,OAAVA,GAE5BP,UAAU,GAEZQ,MAAO,CACLV,KAAMW,OACNT,UAAU,EACVE,aAASC,GAEXO,cAAe,CACbZ,KAAMW,OACNT,UAAU,EACVE,aAASC,GAEXQ,SAAU,CACRb,KAAMJ,QACNM,UAAU,EACVE,SAAS,GAEXU,OAAQ,CACNd,KAAM,CAACe,MAAOC,UACdd,UAAU,EACVE,aAASC,GAEXY,eAAgB,CACdjB,KAAMgB,SACNd,UAAU,EACVE,aAASC,IAGba,gBACE,MAAO,CACLC,0BAA2B,KAG/BC,SAAU,CACRC,qBAAsB,CACpBC,eACE,OAAOC,KAAKJ,2BAEdK,aAAIf,GACFc,KAAK5B,MAAM8B,eAAehB,GAC1Bc,KAAKJ,0BAA4BV,IAGrCiB,0BACE,OAAOH,KAAK5B,MAAM+B,gBAAkB5C,GAEtC6C,iBACE,OAAOJ,KAAK5B,MAAMgC,MAAMC,aAAIC,UAC1BC,OAAOC,OAAO,GAAIF,EAAM,CACtBG,iBAAkB,CAChBH,KAAM,CACJpB,MAAOoB,EAAKI,mBAMtBC,wBACE,MAAO,CACLnC,UAAWwB,KAAKxB,UAChBQ,SAAUgB,KAAKhB,SACfG,MAAOa,KAAKb,MACZG,SAAUU,KAAKV,SACfD,cAAeW,KAAKX,cACpBE,OAAQS,KAAKT,OACbqB,mBAAmB,EACnBlB,eAAgBM,KAAKN,kBAI3BmB,QAAS,CACPC,gBAAO5B,GACLc,KAAK5B,MAAM0C,OAAO5B,GAClBc,KAAKJ,0BAA4B"}
@@ -1,2 +1,2 @@
1
- import{createSuitMixin as e}from"../mixins/suit.js";import{createWidgetMixin as t}from"../mixins/widget.js";import{connectSortBy as s}from"instantsearch.js/es/connectors";import{createPanelConsumerMixin as n}from"../mixins/panel.js";export default{render:function(){var e=this,t=e.$createElement,s=e._self._c||t;return e.state?s("div",{class:e.suit()},[e._t("default",[s("select",{class:e.suit("select"),on:{change:function(t){e.state.refine(t.currentTarget.value)}}},e._l(e.state.options,function(t){return s("option",{key:t.value,class:e.suit("option"),domProps:{value:t.value,selected:t.value===e.state.currentRefinement}},[e._v(e._s(t.label))])}))],{items:e.state.options,hasNoResults:e.state.hasNoResults,refine:e.state.refine,currentRefinement:e.state.currentRefinement})],2):e._e()},staticRenderFns:[],name:"AisSortBy",mixins:[e({name:"SortBy"}),t({connector:s}),n({mapStateToCanRefine:function(e){return!1===e.hasNoResults}})],props:{items:{type:Array,required:!0},transformItems:{type:Function,default:function(e){return e}}},computed:{widgetParams:function(){return{items:this.items,transformItems:this.transformItems}}}};
1
+ import{createSuitMixin as e}from"../mixins/suit.js";import{createWidgetMixin as t}from"../mixins/widget.js";import{connectSortBy as s}from"instantsearch.js/es/connectors";import{createPanelConsumerMixin as n}from"../mixins/panel.js";export default{render:function(){var e=this,t=e.$createElement,s=e._self._c||t;return e.state?s("div",{class:e.suit()},[e._t("default",[s("select",{class:e.suit("select"),on:{change:function(t){e.state.refine(t.currentTarget.value)}}},e._l(e.state.options,function(t){return s("option",{key:t.value,class:e.suit("option"),domProps:{value:t.value,selected:t.value===e.state.currentRefinement}},[e._v(e._s(t.label))])}))],{items:e.state.options,hasNoResults:e.state.hasNoResults,refine:e.state.refine,currentRefinement:e.state.currentRefinement})],2):e._e()},staticRenderFns:[],name:"AisSortBy",mixins:[e({name:"SortBy"}),t({connector:s}),n({mapStateToCanRefine:function(e){return!1===e.hasNoResults}})],props:{items:{type:Array,required:!0},transformItems:{type:Function,default:void 0}},computed:{widgetParams:function(){return{items:this.items,transformItems:this.transformItems}}}};
2
2
  //# sourceMappingURL=SortBy.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SortBy.vue.js","sources":["../../../src/components/SortBy.vue"],"sourcesContent":["<template>\n <div\n :class=\"suit()\"\n v-if=\"state\"\n >\n <slot\n :items=\"state.options\"\n :has-no-results=\"state.hasNoResults\"\n :refine=\"state.refine\"\n :current-refinement=\"state.currentRefinement\"\n >\n <select\n :class=\"suit('select')\"\n @change=\"state.refine($event.currentTarget.value)\"\n >\n <option\n v-for=\"item in state.options\"\n :key=\"item.value\"\n :class=\"suit('option')\"\n :value=\"item.value\"\n :selected=\"item.value === state.currentRefinement\"\n >{{ item.label }}</option>\n </select>\n </slot>\n </div>\n</template>\n\n<script>\nimport { connectSortBy } from 'instantsearch.js/es/connectors';\nimport { createPanelConsumerMixin } from '../mixins/panel';\nimport { createSuitMixin } from '../mixins/suit';\nimport { createWidgetMixin } from '../mixins/widget';\n\nexport default {\n name: 'AisSortBy',\n mixins: [\n createSuitMixin({ name: 'SortBy' }),\n createWidgetMixin({ connector: connectSortBy }),\n\n createPanelConsumerMixin({\n mapStateToCanRefine: state => state.hasNoResults === false,\n }),\n ],\n props: {\n items: {\n type: Array,\n required: true,\n },\n transformItems: {\n type: Function,\n default(items) {\n return items;\n },\n },\n },\n computed: {\n widgetParams() {\n return {\n items: this.items,\n transformItems: this.transformItems,\n };\n },\n },\n};\n</script>\n"],"names":["render","name","mixins","createSuitMixin","createWidgetMixin","connector","connectSortBy","createPanelConsumerMixin","mapStateToCanRefine","state","hasNoResults","props","items","type","Array","required","transformItems","Function","default","computed","widgetParams","this"],"mappings":"uPAiCe,CAACA,ijBACdC,KAAM,YACNC,OAAQ,CACNC,EAAgB,CAAEF,KAAM,WACxBG,EAAkB,CAAEC,UAAWC,IAE/BC,EAAyB,CACvBC,6BAAqBC,UAAgC,IAAvBA,EAAMC,iBAGxCC,MAAO,CACLC,MAAO,CACLC,KAAMC,MACNC,UAAU,GAEZC,eAAgB,CACdH,KAAMI,SACNC,iBAAQN,GACN,OAAOA,KAIbO,SAAU,CACRC,wBACE,MAAO,CACLR,MAAOS,KAAKT,MACZI,eAAgBK,KAAKL"}
1
+ {"version":3,"file":"SortBy.vue.js","sources":["../../../src/components/SortBy.vue"],"sourcesContent":["<template>\n <div\n :class=\"suit()\"\n v-if=\"state\"\n >\n <slot\n :items=\"state.options\"\n :has-no-results=\"state.hasNoResults\"\n :refine=\"state.refine\"\n :current-refinement=\"state.currentRefinement\"\n >\n <select\n :class=\"suit('select')\"\n @change=\"state.refine($event.currentTarget.value)\"\n >\n <option\n v-for=\"item in state.options\"\n :key=\"item.value\"\n :class=\"suit('option')\"\n :value=\"item.value\"\n :selected=\"item.value === state.currentRefinement\"\n >{{ item.label }}</option>\n </select>\n </slot>\n </div>\n</template>\n\n<script>\nimport { connectSortBy } from 'instantsearch.js/es/connectors';\nimport { createPanelConsumerMixin } from '../mixins/panel';\nimport { createSuitMixin } from '../mixins/suit';\nimport { createWidgetMixin } from '../mixins/widget';\n\nexport default {\n name: 'AisSortBy',\n mixins: [\n createSuitMixin({ name: 'SortBy' }),\n createWidgetMixin({ connector: connectSortBy }),\n\n createPanelConsumerMixin({\n mapStateToCanRefine: state => state.hasNoResults === false,\n }),\n ],\n props: {\n items: {\n type: Array,\n required: true,\n },\n transformItems: {\n type: Function,\n default: undefined,\n },\n },\n computed: {\n widgetParams() {\n return {\n items: this.items,\n transformItems: this.transformItems,\n };\n },\n },\n};\n</script>\n"],"names":["render","name","mixins","createSuitMixin","createWidgetMixin","connector","connectSortBy","createPanelConsumerMixin","mapStateToCanRefine","state","hasNoResults","props","items","type","Array","required","transformItems","Function","default","undefined","computed","widgetParams","this"],"mappings":"uPAiCe,CAACA,ijBACdC,KAAM,YACNC,OAAQ,CACNC,EAAgB,CAAEF,KAAM,WACxBG,EAAkB,CAAEC,UAAWC,IAE/BC,EAAyB,CACvBC,6BAAqBC,UAAgC,IAAvBA,EAAMC,iBAGxCC,MAAO,CACLC,MAAO,CACLC,KAAMC,MACNC,UAAU,GAEZC,eAAgB,CACdH,KAAMI,SACNC,aAASC,IAGbC,SAAU,CACRC,wBACE,MAAO,CACLT,MAAOU,KAAKV,MACZI,eAAgBM,KAAKN"}
@@ -1,2 +1,2 @@
1
- import{createSuitMixin as e}from"../mixins/suit.js";import{createWidgetMixin as t}from"../mixins/widget.js";import{connectToggleRefinement as n}from"instantsearch.js/es/connectors";import{createPanelConsumerMixin as a}from"../mixins/panel.js";var i=function(e){return Boolean(e.value&&e.value.count)};export default{render:function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.state?n("div",{class:[e.suit(),!e.canRefine&&e.suit("","noRefinement")]},[e._t("default",[n("label",{class:e.suit("label")},[n("input",{class:e.suit("checkbox"),attrs:{type:"checkbox",name:e.state.value.name},domProps:{value:e.on,checked:e.state.value.isRefined},on:{change:function(t){e.state.refine(e.state.value)}}}),e._v(" "),n("span",{class:e.suit("labelText")},[e._v(e._s(e.label))]),e._v(" "),null!==e.state.value.count?n("span",{class:e.suit("count")},[e._v(e._s(e.state.value.count.toLocaleString()))]):e._e()])],{value:e.state.value,canRefine:e.canRefine,refine:e.state.refine,createURL:e.state.createURL})],2):e._e()},staticRenderFns:[],name:"AisToggleRefinement",mixins:[e({name:"ToggleRefinement"}),t({connector:n}),a({mapStateToCanRefine:i})],props:{attribute:{type:String,required:!0},label:{type:String,required:!0},on:{type:[String,Number,Boolean,Array],required:!1,default:!0},off:{type:[String,Number,Boolean,Array],required:!1,default:void 0}},computed:{widgetParams:function(){return{attribute:this.attribute,label:this.label,on:this.on,off:this.off}},canRefine:function(){return i(this.state)}}};
1
+ import{createSuitMixin as e}from"../mixins/suit.js";import{createWidgetMixin as t}from"../mixins/widget.js";import{connectToggleRefinement as n}from"instantsearch.js/es/connectors";import{createPanelConsumerMixin as a}from"../mixins/panel.js";var i=function(e){return Boolean(e.value&&e.value.count)};export default{render:function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.state?n("div",{class:[e.suit(),!e.canRefine&&e.suit("","noRefinement")]},[e._t("default",[n("label",{class:e.suit("label")},[n("input",{class:e.suit("checkbox"),attrs:{type:"checkbox",name:e.state.value.name},domProps:{value:e.on,checked:e.state.value.isRefined},on:{change:function(t){e.state.refine(e.state.value)}}}),e._v(" "),n("span",{class:e.suit("labelText")},[e._v(e._s(e.label))]),e._v(" "),null!==e.state.value.count?n("span",{class:e.suit("count")},[e._v(e._s(e.state.value.count.toLocaleString()))]):e._e()])],{value:e.state.value,canRefine:e.canRefine,refine:e.state.refine,createURL:e.state.createURL,sendEvent:e.state.sendEvent})],2):e._e()},staticRenderFns:[],name:"AisToggleRefinement",mixins:[e({name:"ToggleRefinement"}),t({connector:n}),a({mapStateToCanRefine:i})],props:{attribute:{type:String,required:!0},label:{type:String,required:!0},on:{type:[String,Number,Boolean,Array],required:!1,default:!0},off:{type:[String,Number,Boolean,Array],required:!1,default:void 0}},computed:{widgetParams:function(){return{attribute:this.attribute,label:this.label,on:this.on,off:this.off}},canRefine:function(){return i(this.state)}}};
2
2
  //# sourceMappingURL=ToggleRefinement.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ToggleRefinement.vue.js","sources":["../../../src/components/ToggleRefinement.vue"],"sourcesContent":["<template>\n <div\n v-if=\"state\"\n :class=\"[suit(), !canRefine && suit('', 'noRefinement')]\"\n >\n <slot\n :value=\"state.value\"\n :can-refine=\"canRefine\"\n :refine=\"state.refine\"\n :createURL=\"state.createURL\"\n >\n <label :class=\"suit('label')\">\n <input\n :class=\"suit('checkbox')\"\n type=\"checkbox\"\n :name=\"state.value.name\"\n :value=\"on\"\n :checked=\"state.value.isRefined\"\n @change=\"state.refine(state.value)\"\n >\n <span :class=\"suit('labelText')\">{{ label }}</span>\n <span\n v-if=\"state.value.count !== null\"\n :class=\"suit('count')\"\n >{{ state.value.count.toLocaleString() }}</span>\n </label>\n </slot>\n </div>\n</template>\n\n<script>\nimport { connectToggleRefinement } from 'instantsearch.js/es/connectors';\nimport { createWidgetMixin } from '../mixins/widget';\nimport { createPanelConsumerMixin } from '../mixins/panel';\nimport { createSuitMixin } from '../mixins/suit';\n\nconst mapStateToCanRefine = state => Boolean(state.value && state.value.count);\n\nexport default {\n name: 'AisToggleRefinement',\n mixins: [\n createSuitMixin({ name: 'ToggleRefinement' }),\n createWidgetMixin({ connector: connectToggleRefinement }),\n createPanelConsumerMixin({\n mapStateToCanRefine,\n }),\n ],\n props: {\n attribute: {\n type: String,\n required: true,\n },\n label: {\n type: String,\n required: true,\n },\n on: {\n type: [String, Number, Boolean, Array],\n required: false,\n default: true,\n },\n off: {\n type: [String, Number, Boolean, Array],\n required: false,\n // explicit otherwise Vue coerces the default value\n // to false because of the `Boolean` prop type\n default: undefined,\n },\n },\n computed: {\n widgetParams() {\n return {\n attribute: this.attribute,\n label: this.label,\n on: this.on,\n off: this.off,\n };\n },\n canRefine() {\n return mapStateToCanRefine(this.state);\n },\n },\n};\n</script>\n"],"names":["const","mapStateToCanRefine","state","Boolean","value","count","render","name","mixins","createSuitMixin","createWidgetMixin","connector","connectToggleRefinement","createPanelConsumerMixin","props","attribute","type","String","required","label","on","Number","Array","default","off","undefined","computed","widgetParams","this","canRefine"],"mappings":"mPAoCAA,IAAMC,WAAsBC,UAASC,QAAQD,EAAME,OAASF,EAAME,MAAMC,sBAEzD,CAACC,itBACdC,KAAM,sBACNC,OAAQ,CACNC,EAAgB,CAAEF,KAAM,qBACxBG,EAAkB,CAAEC,UAAWC,IAC/BC,EAAyB,qBACvBZ,KAGJa,MAAO,CACLC,UAAW,CACTC,KAAMC,OACNC,UAAU,GAEZC,MAAO,CACLH,KAAMC,OACNC,UAAU,GAEZE,GAAI,CACFJ,KAAM,CAACC,OAAQI,OAAQlB,QAASmB,OAChCJ,UAAU,EACVK,SAAS,GAEXC,IAAK,CACHR,KAAM,CAACC,OAAQI,OAAQlB,QAASmB,OAChCJ,UAAU,EAGVK,aAASE,IAGbC,SAAU,CACRC,wBACE,MAAO,CACLZ,UAAWa,KAAKb,UAChBI,MAAOS,KAAKT,MACZC,GAAIQ,KAAKR,GACTI,IAAKI,KAAKJ,MAGdK,qBACE,OAAO5B,EAAoB2B,KAAK1B"}
1
+ {"version":3,"file":"ToggleRefinement.vue.js","sources":["../../../src/components/ToggleRefinement.vue"],"sourcesContent":["<template>\n <div\n v-if=\"state\"\n :class=\"[suit(), !canRefine && suit('', 'noRefinement')]\"\n >\n <slot\n :value=\"state.value\"\n :can-refine=\"canRefine\"\n :refine=\"state.refine\"\n :createURL=\"state.createURL\"\n :send-event=\"state.sendEvent\"\n >\n <label :class=\"suit('label')\">\n <input\n :class=\"suit('checkbox')\"\n type=\"checkbox\"\n :name=\"state.value.name\"\n :value=\"on\"\n :checked=\"state.value.isRefined\"\n @change=\"state.refine(state.value)\"\n >\n <span :class=\"suit('labelText')\">{{ label }}</span>\n <span\n v-if=\"state.value.count !== null\"\n :class=\"suit('count')\"\n >{{ state.value.count.toLocaleString() }}</span>\n </label>\n </slot>\n </div>\n</template>\n\n<script>\nimport { connectToggleRefinement } from 'instantsearch.js/es/connectors';\nimport { createWidgetMixin } from '../mixins/widget';\nimport { createPanelConsumerMixin } from '../mixins/panel';\nimport { createSuitMixin } from '../mixins/suit';\n\nconst mapStateToCanRefine = state => Boolean(state.value && state.value.count);\n\nexport default {\n name: 'AisToggleRefinement',\n mixins: [\n createSuitMixin({ name: 'ToggleRefinement' }),\n createWidgetMixin({ connector: connectToggleRefinement }),\n createPanelConsumerMixin({\n mapStateToCanRefine,\n }),\n ],\n props: {\n attribute: {\n type: String,\n required: true,\n },\n label: {\n type: String,\n required: true,\n },\n on: {\n type: [String, Number, Boolean, Array],\n required: false,\n default: true,\n },\n off: {\n type: [String, Number, Boolean, Array],\n required: false,\n default: undefined,\n },\n },\n computed: {\n widgetParams() {\n return {\n attribute: this.attribute,\n label: this.label,\n on: this.on,\n off: this.off,\n };\n },\n canRefine() {\n return mapStateToCanRefine(this.state);\n },\n },\n};\n</script>\n"],"names":["const","mapStateToCanRefine","state","Boolean","value","count","render","name","mixins","createSuitMixin","createWidgetMixin","connector","connectToggleRefinement","createPanelConsumerMixin","props","attribute","type","String","required","label","on","Number","Array","default","off","undefined","computed","widgetParams","this","canRefine"],"mappings":"mPAqCAA,IAAMC,WAAsBC,UAASC,QAAQD,EAAME,OAASF,EAAME,MAAMC,sBAEzD,CAACC,6uBACdC,KAAM,sBACNC,OAAQ,CACNC,EAAgB,CAAEF,KAAM,qBACxBG,EAAkB,CAAEC,UAAWC,IAC/BC,EAAyB,qBACvBZ,KAGJa,MAAO,CACLC,UAAW,CACTC,KAAMC,OACNC,UAAU,GAEZC,MAAO,CACLH,KAAMC,OACNC,UAAU,GAEZE,GAAI,CACFJ,KAAM,CAACC,OAAQI,OAAQlB,QAASmB,OAChCJ,UAAU,EACVK,SAAS,GAEXC,IAAK,CACHR,KAAM,CAACC,OAAQI,OAAQlB,QAASmB,OAChCJ,UAAU,EACVK,aAASE,IAGbC,SAAU,CACRC,wBACE,MAAO,CACLZ,UAAWa,KAAKb,UAChBI,MAAOS,KAAKT,MACZC,GAAIQ,KAAKR,GACTI,IAAKI,KAAKJ,MAGdK,qBACE,OAAO5B,EAAoB2B,KAAK1B"}
@@ -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";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";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{warn as t}from"../util/warn.js";var e=function(e){void 0===e&&(e={});var n=e.connector;return{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 n){if(this.factory=n(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!==n&&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])},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}},methods:{updateState:function(t,e){void 0===t&&(t={}),e||(this.state=t)}}}};export{e as createWidgetMixin};
1
+ import{warn as t}from"../util/warn.js";var e=function(e){void 0===e&&(e={});var n=e.connector;return{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 n){if(this.factory=n(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!==n&&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])},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}},methods:{updateState:function(t,e){void 0===t&&(t={}),e||(this.state=t)}}}};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 { 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 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","beforeDestroy","removeWidgets","watch","handler","nextWidgetParams","deep","methods","isFirstRender"],"mappings":"uCAEY,IAACA,WAAqBC,kBAAgB,6BAChDC,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,qWAUNC,yBACMpB,KAAKY,QACPZ,KAAKI,iBAAiBiB,cAAc,CAACrB,KAAKY,UAG9CU,MAAO,CACLT,aAAc,CACZU,iBAAQC,GACNxB,KAAKO,MAAQ,KACbP,KAAKI,iBAAiBiB,cAAc,CAACrB,KAAKY,SAC1CZ,KAAKY,OAASZ,KAAKU,QAAQc,GAC3BxB,KAAKI,iBAAiBU,WAAW,CAACd,KAAKY,UAEzCa,MAAM,IAGVC,QAAS,CACPf,qBAAYJ,EAAYoB,kBAAJ,IACbA,IAGH3B,KAAKO,MAAQA"}
1
+ {"version":3,"file":"widget.js","sources":["../../../src/mixins/widget.js"],"sourcesContent":["import { 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 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","beforeDestroy","removeWidgets","watch","handler","nextWidgetParams","deep","methods","isFirstRender"],"mappings":"uCAEY,IAACA,WAAqBC,kBAAgB,6BAChDC,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,qWAUNC,yBACMpB,KAAKY,QACPZ,KAAKI,iBAAiBiB,cAAc,CAACrB,KAAKY,UAG9CU,MAAO,CACLT,aAAc,CACZU,iBAAQC,GACNxB,KAAKO,MAAQ,KACbP,KAAKI,iBAAiBiB,cAAc,CAACrB,KAAKY,SAC1CZ,KAAKY,OAASZ,KAAKU,QAAQc,GAC3BxB,KAAKI,iBAAiBU,WAAW,CAACd,KAAKY,UAEzCa,MAAM,IAGVC,QAAS,CACPf,qBAAYJ,EAAYoB,kBAAJ,IACbA,IAGH3B,KAAKO,MAAQA"}
@@ -1,2 +1,2 @@
1
- import{createSuitMixin as n}from"../mixins/suit.js";import t from"vue";import{version as e}from"../../package.json.js";import{_objectSpread as a}from"./polyfills.js";var i=function(i){return a({mixins:[n({name:"InstantSearch"})],provide:function(){return{$_ais_instantSearchInstance:this.instantSearchInstance}},watch:{searchClient:function(n){this.instantSearchInstance.helper.setClient(n).search()},indexName:function(n){this.instantSearchInstance.helper.setIndex(n).search()},stalledSearchDelay:function(n){this.instantSearchInstance._stalledSearchDelay=n},routing:function(){throw new Error("routing configuration can not be changed dynamically at this point.\n\nPlease open a new issue: https://github.com/algolia/vue-instantsearch/issues/new?template=feature.md")},searchFunction:function(n){this.instantSearchInstance._searchFunction=n}},created:function(){var n=this.instantSearchInstance.client;"function"==typeof n.addAlgoliaAgent&&(n.addAlgoliaAgent("Vue ("+t.version+")"),n.addAlgoliaAgent("Vue InstantSearch ("+e+")"))},mounted:function(){var n=this;this.$nextTick(function(){n.instantSearchInstance.started||n.instantSearchInstance.start()})},beforeDestroy:function(){this.instantSearchInstance.started&&this.instantSearchInstance.dispose(),this.instantSearchInstance.__initialSearchResults=void 0}},i)};export{i as createInstantSearchComponent};
1
+ import{createSuitMixin as n}from"../mixins/suit.js";import t from"vue";import{version as e}from"../../package.json.js";import{_objectSpread as a}from"./polyfills.js";var i=function(i){return a({mixins:[n({name:"InstantSearch"})],provide:function(){return{$_ais_instantSearchInstance:this.instantSearchInstance}},watch:{searchClient:function(n){this.instantSearchInstance.helper.setClient(n).search()},indexName:function(n){this.instantSearchInstance.helper.setIndex(n).search()},stalledSearchDelay:function(n){this.instantSearchInstance._stalledSearchDelay=n},routing:function(){throw new Error("routing configuration can not be changed dynamically at this point.\n\nPlease open a new issue: https://github.com/algolia/vue-instantsearch/issues/new?template=feature.md")},searchFunction:function(n){this.instantSearchInstance._searchFunction=n},middlewares:{immediate:!0,handler:function(n,t){var e=this;(t||[]).filter(function(t){return-1===(n||[]).indexOf(t)}).forEach(function(n){e.instantSearchInstance.unuse(n)}),(n||[]).filter(function(n){return-1===(t||[]).indexOf(n)}).forEach(function(n){e.instantSearchInstance.use(n)})}}},created:function(){var n=this.instantSearchInstance.client;"function"==typeof n.addAlgoliaAgent&&(n.addAlgoliaAgent("Vue ("+t.version+")"),n.addAlgoliaAgent("Vue InstantSearch ("+e+")"))},mounted:function(){var n=this;this.$nextTick(function(){n.instantSearchInstance.started||n.instantSearchInstance.start()})},beforeDestroy:function(){this.instantSearchInstance.started&&this.instantSearchInstance.dispose(),this.instantSearchInstance.__initialSearchResults=void 0}},i)};export{i as createInstantSearchComponent};
2
2
  //# sourceMappingURL=createInstantSearchComponent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createInstantSearchComponent.js","sources":["../../../src/util/createInstantSearchComponent.js"],"sourcesContent":["import { createSuitMixin } from '../mixins/suit';\nimport { version } from '../../package.json'; // rollup does pick only what needed from json\nimport { _objectSpread } from './polyfills';\nimport Vue from 'vue';\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 this.instantSearchInstance.helper.setClient(searchClient).search();\n },\n indexName(indexName) {\n this.instantSearchInstance.helper.setIndex(indexName).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/vue-instantsearch/issues/new?template=feature.md'\n );\n },\n searchFunction(searchFunction) {\n // private InstantSearch.js API:\n this.instantSearchInstance._searchFunction = searchFunction;\n },\n },\n created() {\n const searchClient = this.instantSearchInstance.client;\n if (typeof searchClient.addAlgoliaAgent === 'function') {\n searchClient.addAlgoliaAgent(`Vue (${Vue.version})`);\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 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"],"names":["createInstantSearchComponent","component","_objectSpread","mixins","createSuitMixin","name","provide","$_ais_instantSearchInstance","this","instantSearchInstance","watch","searchClient","helper","setClient","search","indexName","setIndex","stalledSearchDelay","_stalledSearchDelay","routing","Error","searchFunction","_searchFunction","created","const","client","addAlgoliaAgent","Vue","version","mounted","$nextTick","started","start","beforeDestroy","dispose","__initialSearchResults","undefined"],"mappings":"sKAKY,IAACA,WAA+BC,UAC1CC,EACE,CACEC,OAAQ,CAACC,EAAgB,CAAEC,KAAM,mBACjCC,mBACE,MAAO,CACLC,4BAA6BC,KAAKC,wBAGtCC,MAAO,CACLC,sBAAaA,GACXH,KAAKC,sBAAsBG,OAAOC,UAAUF,GAAcG,UAE5DC,mBAAUA,GACRP,KAAKC,sBAAsBG,OAAOI,SAASD,GAAWD,UAExDG,4BAAmBA,GAEjBT,KAAKC,sBAAsBS,oBAAsBD,GAEnDE,mBACE,MAAM,IAAIC,MACR,gLAKJC,wBAAeA,GAEbb,KAAKC,sBAAsBa,gBAAkBD,IAGjDE,mBACEC,IAAMb,EAAeH,KAAKC,sBAAsBgB,OACJ,mBAAjCd,EAAae,kBACtBf,EAAae,wBAAwBC,eACrChB,EAAae,sCAAsCE,SAGvDC,8BAIErB,KAAKsB,qBACEtB,EAAKC,sBAAsBsB,SAC9BvB,EAAKC,sBAAsBuB,WAIjCC,yBACMzB,KAAKC,sBAAsBsB,SAC7BvB,KAAKC,sBAAsByB,UAI7B1B,KAAKC,sBAAsB0B,4BAAyBC,IAGxDnC"}
1
+ {"version":3,"file":"createInstantSearchComponent.js","sources":["../../../src/util/createInstantSearchComponent.js"],"sourcesContent":["import { createSuitMixin } from '../mixins/suit';\nimport { version } from '../../package.json'; // rollup does pick only what needed from json\nimport { _objectSpread } from './polyfills';\nimport Vue from 'vue';\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 this.instantSearchInstance.helper.setClient(searchClient).search();\n },\n indexName(indexName) {\n this.instantSearchInstance.helper.setIndex(indexName).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/vue-instantsearch/issues/new?template=feature.md'\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 },\n created() {\n const searchClient = this.instantSearchInstance.client;\n if (typeof searchClient.addAlgoliaAgent === 'function') {\n searchClient.addAlgoliaAgent(`Vue (${Vue.version})`);\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 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"],"names":["createInstantSearchComponent","component","_objectSpread","mixins","createSuitMixin","name","provide","$_ais_instantSearchInstance","this","instantSearchInstance","watch","searchClient","helper","setClient","search","indexName","setIndex","stalledSearchDelay","_stalledSearchDelay","routing","Error","searchFunction","_searchFunction","middlewares","immediate","handler","next","prev","filter","middleware","indexOf","forEach","middlewareToRemove","unuse","middlewareToAdd","use","created","const","client","addAlgoliaAgent","Vue","version","mounted","$nextTick","started","start","beforeDestroy","dispose","__initialSearchResults","undefined"],"mappings":"sKAKY,IAACA,WAA+BC,UAC1CC,EACE,CACEC,OAAQ,CAACC,EAAgB,CAAEC,KAAM,mBACjCC,mBACE,MAAO,CACLC,4BAA6BC,KAAKC,wBAGtCC,MAAO,CACLC,sBAAaA,GACXH,KAAKC,sBAAsBG,OAAOC,UAAUF,GAAcG,UAE5DC,mBAAUA,GACRP,KAAKC,sBAAsBG,OAAOI,SAASD,GAAWD,UAExDG,4BAAmBA,GAEjBT,KAAKC,sBAAsBS,oBAAsBD,GAEnDE,mBACE,MAAM,IAAIC,MACR,gLAKJC,wBAAeA,GAEbb,KAAKC,sBAAsBa,gBAAkBD,GAE/CE,YAAa,CACXC,WAAW,EACXC,iBAAQC,EAAMC,eACXA,GAAQ,IACNC,gBAAOC,UAAoD,KAArCH,GAAQ,IAAII,QAAQD,KAC1CE,iBAAQC,GACPxB,EAAKC,sBAAsBwB,MAAMD,MAGpCN,GAAQ,IACNE,gBAAOC,UAAoD,KAArCF,GAAQ,IAAIG,QAAQD,KAC1CE,iBAAQG,GACP1B,EAAKC,sBAAsB0B,IAAID,QAKzCE,mBACEC,IAAM1B,EAAeH,KAAKC,sBAAsB6B,OACJ,mBAAjC3B,EAAa4B,kBACtB5B,EAAa4B,wBAAwBC,eACrC7B,EAAa4B,sCAAsCE,SAGvDC,8BAIElC,KAAKmC,qBACEnC,EAAKC,sBAAsBmC,SAC9BpC,EAAKC,sBAAsBoC,WAIjCC,yBACMtC,KAAKC,sBAAsBmC,SAC7BpC,KAAKC,sBAAsBsC,UAI7BvC,KAAKC,sBAAsBuC,4BAAyBC,IAGxDhD"}
@@ -1,2 +1,2 @@
1
- import{warn as e}from"./warn.js";import t from"vue";import n from"instantsearch.js/es";import r from"algoliasearch-helper";var i=r.SearchResults,s=r.SearchParameters;function a(e){var n={serverPrefetch:void 0,fetch:void 0,_base:void 0,name:"ais-ssr-root-component",router:e.$router,store:e.$store},r=new(e.$vnode?e.$vnode.componentOptions.Ctor.extend(n):t.component(Object.assign({},e.$options,n)))({propsData:e.$options.propsData});return r.$slots=e.$slots,r.$root=e.$root,r.$options.serverPrefetch=[],r}function o(t,a,o,c){var u,f=r(a,o),d=n(t);return d.findResultsState=function(e){var t,n;try{t=require("vue-server-renderer/basic")}catch(e){}if(!t)throw new Error("you need to install vue-server-renderer");return Promise.resolve().then(function(){(n=c(e)).instantsearch.helper=f,n.instantsearch.mainHelper=f,n.instantsearch.mainIndex.init({instantSearchInstance:n.instantsearch,parent:null,uiState:n.instantsearch._initialUiState})}).then(function(){return function(e,t){return new Promise(function(n,r){return t(e,function(e,t){e&&r(e),n(t)})})}(n,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)})})})}(f)}).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()}),d.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"}),d.getState()})},d.getState=function(){if(!u)throw new Error("You need to wait for findResultsState to finish");return u},d.__forceRender=function(e,t){var n=t.getHelper(),r=d.__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:d.__initialSearchResults[e.indexId]})}),state:i,templatesConfig:{},createURL:t.createURL,instantSearchInstance:d,searchMetadata:{isSearchStalled:!1}})}},d.hydrate=function(t){if(t){var n="stringified"===t.__identifier?Object.keys(t).reduce(function(e,n){return"__identifier"===n?e:(e[n]=new i(new s(t[n]._state),t[n]._rawResults),e)},{}):t;d.__initialSearchResults=n,d.helper=f,d.mainHelper=f,d.mainIndex.init({instantSearchInstance:d,parent:null,uiState:d._initialUiState})}else e("The result of `findResultsState()` needs to be passed to `hydrate()`.")},d}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{warn as e}from"./warn.js";import t from"vue";import r from"instantsearch.js/es";function n(e){var r={serverPrefetch:void 0,fetch:void 0,_base:void 0,name:"ais-ssr-root-component",router:e.$router,store:e.$store},n=new(e.$vnode?e.$vnode.componentOptions.Ctor.extend(r):t.component(r.name,Object.assign({},e.$options,r)))({propsData:e.$options.propsData});return n.$slots=e.$slots,n.$root=e.$root,n.$options.serverPrefetch=[],n}function o(t,n){var o,s=r(t);return s.findResultsState=function(e){var t,r,a;try{t=require("vue-server-renderer/basic")}catch(e){}if(!t)throw new Error("you need to install vue-server-renderer");return Promise.resolve().then(function(){r=n(e),(a=r.instantsearch).start(),a.started=!1}).then(function(){return function(e,t){return new Promise(function(r,n){return t(e,function(e,t){e&&n(e),r(t)})})}(r,t)}).then(function(){return e=a.mainHelper,new Promise(function(t,r){e.searchOnlyWithDerivedHelpers(),e.derivedHelpers[0].on("result",function(){t()}),e.derivedHelpers.forEach(function(e){return e.on("error",function(e){r(e)})})});var e}).then(function(){return o={},function e(t,r){return r(t),t.getWidgets().forEach(function(t){"ais.index"===t.$$type&&(r(t),e(t,r))})}(a.mainIndex,function(e){var t=e.getResults(),r=t._state,n=t._rawResults;o[e.getIndexId()]={state:Object.keys(r).reduce(function(e,t){return e[t]=r[t],e},{}),results:n}}),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(e,t){var r=t.getResults();if(null!==r){var n=r._state,o=t.getHelper();o.state=n,e.render({helper:o,results:r,scopedResults:t.getScopedResults(),parent:t,state:n,templatesConfig:{},createURL:t.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(e){void 0===e&&(e={});var t=e.$cloneComponent;void 0===t&&(t=n);var r=o(e,t);return{provide:function(){return{$_ais_ssrInstantSearchInstance:this.instantsearch}},data:function(){return{instantsearch:r}}}}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 Vue from 'vue';\nimport instantsearch from 'instantsearch.js/es';\nimport algoliaHelper from 'algoliasearch-helper';\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 renderToString(app, _renderToString) {\n return new Promise((resolve, reject) =>\n _renderToString(app, (err, res) => {\n if (err) reject(err);\n resolve(res);\n })\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) {\n const options = {\n serverPrefetch: undefined,\n fetch: undefined,\n _base: undefined,\n name: 'ais-ssr-root-component',\n // copy over global Vue APIs\n router: componentInstance.$router,\n store: componentInstance.$store,\n };\n\n const Extended = componentInstance.$vnode\n ? componentInstance.$vnode.componentOptions.Ctor.extend(options)\n : Vue.component(Object.assign({}, componentInstance.$options, options));\n\n const app = new Extended({\n propsData: componentInstance.$options.propsData,\n });\n\n // https://stackoverflow.com/a/48195006/3185307\n app.$slots = componentInstance.$slots;\n app.$root = componentInstance.$root;\n app.$options.serverPrefetch = [];\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} componentInstance the calling component's `this`\n * @returns {Promise} result of the search, to save for .hydrate\n */\n search.findResultsState = function(componentInstance) {\n let _renderToString;\n try {\n _renderToString = require('vue-server-renderer/basic');\n } catch (e) {\n // error is handled by regular if, in case it's `undefined`\n }\n if (!_renderToString) {\n throw new Error('you need to install vue-server-renderer');\n }\n\n let app;\n\n return Promise.resolve()\n .then(() => {\n app = cloneComponent(componentInstance);\n\n app.instantsearch.helper = helper;\n app.instantsearch.mainHelper = helper;\n\n app.instantsearch.mainIndex.init({\n instantSearchInstance: app.instantsearch,\n parent: null,\n uiState: app.instantsearch._initialUiState,\n });\n })\n .then(() => renderToString(app, _renderToString))\n .then(() => searchOnlyWithDerivedHelpers(helper))\n .then(() => {\n const results = {};\n walkIndex(app.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 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","const","options","serverPrefetch","undefined","fetch","_base","name","router","$router","store","$store","app","$vnode","componentOptions","Ctor","extend","Vue","component","Object","assign","$options","propsData","$slots","$root","augmentInstantSearch","instantSearchOptions","searchClient","indexName","cloneComponent","resultsState","helper","algoliaHelper","search","instantsearch","findResultsState","let","_renderToString","require","e","Error","Promise","resolve","then","mainHelper","mainIndex","init","instantSearchInstance","parent","uiState","_initialUiState","reject","err","res","renderToString","searchOnlyWithDerivedHelpers","derivedHelpers","on","forEach","derivedHelper","results","walkIndex","indexWidget","visit","getWidgets","widget","$$type","getIndexId","getResults","hydrate","keys","map","indexId","_state","reduce","acc","key","_rawResults","ref","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","this","data"],"mappings":"2HAGA,2CAuCA,SAASA,EAAsBC,GAC7BC,IAAMC,EAAU,CACdC,oBAAgBC,EAChBC,WAAOD,EACPE,WAAOF,EACPG,KAAM,yBAENC,OAAQR,EAAkBS,QAC1BC,MAAOV,EAAkBW,QAOrBC,EAAM,IAJKZ,EAAkBa,OAC/Bb,EAAkBa,OAAOC,iBAAiBC,KAAKC,OAAOd,GACtDe,EAAIC,UAAUC,OAAOC,OAAO,GAAIpB,EAAkBqB,SAAUnB,KAEvC,CACvBoB,UAAWtB,EAAkBqB,SAASC,YAQxC,OAJAV,EAAIW,OAASvB,EAAkBuB,OAC/BX,EAAIY,MAAQxB,EAAkBwB,MAC9BZ,EAAIS,SAASlB,eAAiB,GAEvBS,EAGT,SAASa,EACPC,EACAC,EACAC,EACAC,GAIA5B,IAGI6B,EAHEC,EAASC,EAAcL,EAAcC,GACrCK,EAASC,EAAcR,GAsK7B,OA7JAO,EAAOE,iBAAmB,SAASnC,GACjCoC,IAAIC,EAUAzB,EATJ,IACEyB,EAAkBC,QAAQ,6BAC1B,MAAOC,IAGT,IAAKF,EACH,MAAM,IAAIG,MAAM,2CAKlB,OAAOC,QAAQC,UACZC,iBACC/B,EAAMiB,EAAe7B,IAEjBkC,cAAcH,OAASA,EAC3BnB,EAAIsB,cAAcU,WAAab,EAE/BnB,EAAIsB,cAAcW,UAAUC,KAAK,CAC/BC,sBAAuBnC,EAAIsB,cAC3Bc,OAAQ,KACRC,QAASrC,EAAIsB,cAAcgB,oBAG9BP,uBAjGP,SAAwB/B,EAAKyB,GAC3B,OAAO,IAAII,iBAASC,EAASS,UAC3Bd,EAAgBzB,WAAMwC,EAAKC,GACrBD,GAAKD,EAAOC,GAChBV,EAAQW,OA6FIC,CAAe1C,EAAKyB,KAC/BM,uBAzFP,SAAsCZ,GACpC,OAAO,IAAIU,iBAASC,EAASS,GAC3BpB,EAAOwB,+BAGPxB,EAAOyB,eAAe,GAAGC,GAAG,oBAC1Bf,MAGFX,EAAOyB,eAAeE,iBAAQC,UAC5BA,EAAcF,GAAG,iBAASlB,GACxBY,EAAOZ,SA8EGgB,CAA6BxB,KACxCY,gBACC1C,IAAM2D,EAAU,GA+BhB,OA7IR,SAASC,EAAUC,EAAaC,GAG9B,OAFAA,EAAMD,GAECA,EAAYE,aAAaN,iBAAQO,GAChB,cAAlBA,EAAOC,SACXH,EAAME,GACNJ,EAAUI,EAAQF,MAyGdF,CAAUjD,EAAIsB,cAAcW,mBAAWoB,GACrCL,EAAQK,EAAOE,cAAgBF,EAAOG,eAGxCnC,EAAOoC,QAAQT,GAEf9B,EAAeX,OAAOmD,KAAKV,GACxBW,aAAIC,GACH,MAAgCZ,EAAQY,8BACxC,MAAO,CACLA,EACA,CAEEC,OAAQtD,OAAOmD,KAAKG,GAAQC,gBAAQC,EAAKC,GAEvC,OADAD,EAAIC,GAAOH,EAAOG,GACXD,GACN,gBACHE,MAILH,gBACEC,EAAKG,qBAEJ,OADAH,EAAIC,GAAOG,EACJJ,GAET,CACEK,aAAc,gBAGb/C,EAAOgD,cAOpBhD,EAAOgD,SAAW,WAChB,IAAKnD,EACH,MAAM,IAAIU,MAAM,mDAElB,OAAOV,GAWTG,EAAOiD,cAAgB,SAASjB,EAAQjB,GACtC/C,IAAMkF,EAAcnC,EAAOoC,YAErBxB,EAAU3B,EAAOoD,uBAAuBrC,EAAOmB,cAIrD,GAAKP,EAAL,CAIA3D,IAAMqF,EAAQ1B,EAAQa,OAItBU,EAAYG,MAAQA,EAEpBrB,EAAOsB,OAAO,CACZxD,OAAQoD,UACRvB,EACA4B,cAAexC,EAAOyC,mBAAmBlB,aAAImB,UAC3CvE,OAAOC,OAAOsE,EAAQ,CACpB9B,QAAS3B,EAAOoD,uBAAuBK,EAAOlB,mBAGlDc,EACAK,gBAAiB,GACjBC,UAAW5C,EAAO4C,UAClB7C,sBAAuBd,EACvB4D,eAAgB,CACdC,iBAAiB,OAUvB7D,EAAOoC,QAAU,SAAST,GACxB,GAAKA,EAAL,CAOA3D,IAAM8F,EACqB,gBAAzBnC,EAAQoB,aACJ7D,OAAOmD,KAAKV,GAASc,gBAAQC,EAAKH,GAChC,MAAgB,iBAAZA,EACKG,GAETA,EAAIH,GAAW,IAAIwB,EACjB,IAAIC,EAAiBrC,EAAQY,GAASC,QACtCb,EAAQY,GAASK,aAEZF,IACN,IACHf,EAEN3B,EAAOoD,uBAAyBU,EAEhC9D,EAAOF,OAASA,EAChBE,EAAOW,WAAab,EAEpBE,EAAOY,UAAUC,KAAK,CACpBC,sBAAuBd,EACvBe,OAAQ,KACRC,QAAShB,EAAOiB,uBA5BhBgD,EACE,0EAgCCjE,EAGF,SAASkE,EAAsBzE,kBAAuB,IAC3D,uDAMA,kBAHoB3B,IAGf4B,IAAiBC,EACpB,MAAM,IAAIY,MACR,uFAIJvC,IAAMgC,EAASR,EACbC,EACAC,EACAC,EACAwE,GAoBF,MAfkB,CAChBC,mBACE,MAAO,CACLC,+BAAgCC,KAAKrE,gBAGzCsE,gBACE,MAAO,CAGLtE,cAAeD"}
1
+ {"version":3,"file":"createServerRootMixin.js","sources":["../../../src/util/createServerRootMixin.js"],"sourcesContent":["import Vue from 'vue';\nimport instantsearch from 'instantsearch.js/es';\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 renderToString(app, _renderToString) {\n return new Promise((resolve, reject) =>\n _renderToString(app, (err, res) => {\n if (err) reject(err);\n resolve(res);\n })\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) {\n const options = {\n serverPrefetch: undefined,\n fetch: undefined,\n _base: undefined,\n name: 'ais-ssr-root-component',\n // copy over global Vue APIs\n router: componentInstance.$router,\n store: componentInstance.$store,\n };\n\n const Extended = componentInstance.$vnode\n ? componentInstance.$vnode.componentOptions.Ctor.extend(options)\n : Vue.component(\n options.name,\n Object.assign({}, componentInstance.$options, options)\n );\n\n const app = new Extended({\n propsData: componentInstance.$options.propsData,\n });\n\n // https://stackoverflow.com/a/48195006/3185307\n app.$slots = componentInstance.$slots;\n app.$root = componentInstance.$root;\n app.$options.serverPrefetch = [];\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} componentInstance the calling component's `this`\n * @returns {Promise} result of the search, to save for .hydrate\n */\n search.findResultsState = function(componentInstance) {\n let _renderToString;\n try {\n _renderToString = require('vue-server-renderer/basic');\n } catch (e) {\n // error is handled by regular if, in case it's `undefined`\n }\n if (!_renderToString) {\n throw new Error('you need to install vue-server-renderer');\n }\n\n let app;\n let instance;\n\n return Promise.resolve()\n .then(() => {\n app = cloneComponent(componentInstance);\n\n instance = app.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 .then(() => renderToString(app, _renderToString))\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","const","options","serverPrefetch","undefined","fetch","_base","name","router","$router","store","$store","app","$vnode","componentOptions","Ctor","extend","Vue","component","Object","assign","$options","propsData","$slots","$root","augmentInstantSearch","instantSearchOptions","cloneComponent","initialResults","search","instantsearch","findResultsState","let","_renderToString","instance","require","e","Error","Promise","resolve","then","start","started","reject","err","res","renderToString","helper","mainHelper","searchOnlyWithDerivedHelpers","derivedHelpers","on","forEach","derivedHelper","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","this","data"],"mappings":"uFAwCA,SAASA,EAAsBC,GAC7BC,IAAMC,EAAU,CACdC,oBAAgBC,EAChBC,WAAOD,EACPE,WAAOF,EACPG,KAAM,yBAENC,OAAQR,EAAkBS,QAC1BC,MAAOV,EAAkBW,QAUrBC,EAAM,IAPKZ,EAAkBa,OAC/Bb,EAAkBa,OAAOC,iBAAiBC,KAAKC,OAAOd,GACtDe,EAAIC,UACFhB,EAAQK,KACRY,OAAOC,OAAO,GAAIpB,EAAkBqB,SAAUnB,KAG3B,CACvBoB,UAAWtB,EAAkBqB,SAASC,YAQxC,OAJAV,EAAIW,OAASvB,EAAkBuB,OAC/BX,EAAIY,MAAQxB,EAAkBwB,MAC9BZ,EAAIS,SAASlB,eAAiB,GAEvBS,EAGT,SAASa,EAAqBC,EAAsBC,GAClD1B,IAEI2B,EAFEC,EAASC,EAAcJ,GA4H7B,OAnHAG,EAAOE,iBAAmB,SAAS/B,GACjCgC,IAAIC,EAUArB,EACAsB,EAVJ,IACED,EAAkBE,QAAQ,6BAC1B,MAAOC,IAGT,IAAKH,EACH,MAAM,IAAII,MAAM,2CAMlB,OAAOC,QAAQC,UACZC,gBACC5B,EAAMe,EAAe3B,IAErBkC,EAAWtB,EAAIkB,eAENW,QAGTP,EAASQ,SAAU,IAEpBF,uBA3FP,SAAwB5B,EAAKqB,GAC3B,OAAO,IAAIK,iBAASC,EAASI,UAC3BV,EAAgBrB,WAAMgC,EAAKC,GACrBD,GAAKD,EAAOC,GAChBL,EAAQM,OAuFIC,CAAelC,EAAKqB,KAC/BO,uBAnF+BO,EAmFSb,EAASc,WAlF/C,IAAIV,iBAASC,EAASI,GAC3BI,EAAOE,+BAGPF,EAAOG,eAAe,GAAGC,GAAG,oBAC1BZ,MAGFQ,EAAOG,eAAeE,iBAAQC,UAC5BA,EAAcF,GAAG,iBAASf,GACxBO,EAAOP,SAXf,IAAsCW,IAoF/BP,gBAiBC,OAhBAZ,EAAiB,GAxGzB,SAAS0B,EAAUC,EAAaC,GAG9B,OAFAA,EAAMD,GAECA,EAAYE,aAAaL,iBAAQM,GAChB,cAAlBA,EAAOC,SACXH,EAAME,GACNJ,EAAUI,EAAQF,MAmGdF,CAAUpB,EAAS0B,mBAAWF,GAC5B,MAAgCA,EAAOG,wCAEvCjC,EAAe8B,EAAOI,cAAgB,CAEpCC,MAAO5C,OAAO6C,KAAKC,GAAQC,gBAAQC,EAAKC,GAGtC,OADAD,EAAIC,GAAOH,EAAOG,GACXD,GACN,IACHE,QAASC,KAIbzC,EAAO0C,QAAQ3C,GACRC,EAAO2C,cAOpB3C,EAAO2C,SAAW,WAChB,IAAK5C,EACH,MAAM,IAAIS,MAAM,mDAElB,OAAOT,GAWTC,EAAO4C,cAAgB,SAASf,EAAQgB,GACtCzE,IAAMoE,EAAUK,EAAOb,aAIvB,GAAgB,OAAZQ,EAAJ,CAIApE,IAAM8D,EAAQM,EAAQJ,OAEhBU,EAAcD,EAAOE,YAG3BD,EAAYZ,MAAQA,EAEpBL,EAAOmB,OAAO,CACZ9B,OAAQ4B,UACRN,EACAS,cAAeJ,EAAOK,0BACtBL,QACAX,EACAiB,gBAAiB,GACjBC,UAAWP,EAAOO,UAClBC,sBAAuBrD,EACvBsD,eAAgB,CACdC,iBAAiB,OAUvBvD,EAAO0C,QAAU,SAASF,GACnBA,GAOLxC,EAAOwD,gBAAkBhB,EAEzBxC,EAAOY,QACPZ,EAAOa,SAAU,GATf4C,EACE,0EAUCzD,EAGF,SAAS0D,EAAsB7D,kBAAuB,IAC3D,uCAA0B3B,GAE1BE,IAAM4B,EAASJ,EAAqBC,EAAsB8D,GAmB1D,MAfkB,CAChBC,mBACE,MAAO,CACLC,+BAAgCC,KAAK7D,gBAGzC8D,gBACE,MAAO,CAGL9D,cAAeD"}
package/es/src/widgets.js CHANGED
@@ -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 r from"./components/CurrentRefinements.vue.js";export{default as AisCurrentRefinements}from"./components/CurrentRefinements.vue.js";import m 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 a from"./components/HitsPerPage.vue.js";export{default as AisHitsPerPage}from"./components/HitsPerPage.vue.js";import i 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 R from"./components/PoweredBy.vue.js";export{default as AisPoweredBy}from"./components/PoweredBy.vue.js";import S from"./components/QueryRuleContext.js";export{default as AisQueryRuleContext}from"./components/QueryRuleContext.js";import g 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 H from"./components/StateResults.vue.js";export{default as AisStateResults}from"./components/StateResults.vue.js";import M from"./components/SearchBox.vue.js";export{default as AisSearchBox}from"./components/SearchBox.vue.js";import P from"./components/Snippet.vue.js";export{default as AisSnippet}from"./components/Snippet.vue.js";import y 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 Q from"./components/ToggleRefinement.vue.js";export{default as AisToggleRefinement}from"./components/ToggleRefinement.vue.js";import b 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";
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";
2
2
  //# sourceMappingURL=widgets.js.map
package/package.json CHANGED
@@ -16,7 +16,7 @@
16
16
  "autocomplete"
17
17
  ],
18
18
  "license": "MIT",
19
- "version": "3.6.0",
19
+ "version": "3.9.0",
20
20
  "files": [
21
21
  "dist",
22
22
  "src",
@@ -45,8 +45,7 @@
45
45
  "release": "shipjs prepare"
46
46
  },
47
47
  "dependencies": {
48
- "algoliasearch-helper": "^3.1.0",
49
- "instantsearch.js": "^4.16.1"
48
+ "instantsearch.js": "^4.34.0"
50
49
  },
51
50
  "peerDependencies": {
52
51
  "algoliasearch": ">= 3.32.0 < 5",
@@ -67,6 +66,7 @@
67
66
  "@wdio/spec-reporter": "^5.11.7",
68
67
  "@wdio/static-server-service": "^5.11.0",
69
68
  "algoliasearch": "4.0.1",
69
+ "algoliasearch-helper": "3.6.2",
70
70
  "babel-eslint": "10.0.1",
71
71
  "babel-jest": "23.6.0",
72
72
  "babel-preset-es2015": "6.24.1",
@@ -114,11 +114,11 @@
114
114
  "bundlesize": [
115
115
  {
116
116
  "path": "./dist/vue-instantsearch.js",
117
- "maxSize": "52.50 kB"
117
+ "maxSize": "56.50 kB"
118
118
  },
119
119
  {
120
120
  "path": "./dist/vue-instantsearch.common.js",
121
- "maxSize": "16.25 kB"
121
+ "maxSize": "16.75 kB"
122
122
  }
123
123
  ],
124
124
  "resolutions": {
@@ -34,6 +34,8 @@ it('should have `name` the same as the suit class name everywhere', () => {
34
34
  expect(installedName).toBe(name);
35
35
  if (name === 'AisInstantSearchSsr') {
36
36
  expect(suitClass).toBe(`ais-InstantSearch`);
37
+ } else if (name === 'AisExperimentalDynamicWidgets') {
38
+ expect(suitClass).toBe(`ais-DynamicWidgets`);
37
39
  } else {
38
40
  expect(suitClass).toBe(`ais-${name.substr(3)}`);
39
41
  }
@@ -69,17 +69,15 @@ export default {
69
69
  },
70
70
  separator: {
71
71
  type: String,
72
- default: ' > ',
72
+ default: undefined,
73
73
  },
74
74
  rootPath: {
75
75
  type: String,
76
- default: null,
76
+ default: undefined,
77
77
  },
78
78
  transformItems: {
79
79
  type: Function,
80
- default(items) {
81
- return items;
82
- },
80
+ default: undefined,
83
81
  },
84
82
  },
85
83
  computed: {
@@ -36,21 +36,17 @@ export default {
36
36
  createSuitMixin({ name: 'ClearRefinements' }),
37
37
  ],
38
38
  props: {
39
- // explicitly no default, since included and excluded are incompatible
40
- // eslint-disable-next-line vue/require-default-prop
41
39
  excludedAttributes: {
42
40
  type: Array,
41
+ default: undefined,
43
42
  },
44
- // explicitly no default, since included and excluded are incompatible
45
- // eslint-disable-next-line vue/require-default-prop
46
43
  includedAttributes: {
47
44
  type: Array,
45
+ default: undefined,
48
46
  },
49
47
  transformItems: {
50
48
  type: Function,
51
- default(items) {
52
- return items;
53
- },
49
+ default: undefined,
54
50
  },
55
51
  },
56
52
  computed: {
@@ -70,21 +70,17 @@ export default {
70
70
  }),
71
71
  ],
72
72
  props: {
73
- // no default because included and excluded are incompatible
74
- // eslint-disable-next-line vue/require-default-prop
75
73
  includedAttributes: {
76
74
  type: Array,
75
+ default: undefined,
77
76
  },
78
- // no default because included and excluded are incompatible
79
- // eslint-disable-next-line vue/require-default-prop
80
77
  excludedAttributes: {
81
78
  type: Array,
79
+ default: undefined,
82
80
  },
83
81
  transformItems: {
84
82
  type: Function,
85
- default(items) {
86
- return items;
87
- },
83
+ default: undefined,
88
84
  },
89
85
  },
90
86
  computed: {