vue-instantsearch 4.4.2 → 4.6.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 (161) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/package.json +5 -5
  3. package/src/__tests__/index.js +1 -0
  4. package/src/components/Breadcrumb.vue +1 -3
  5. package/src/components/ClearRefinements.vue +1 -3
  6. package/src/components/CurrentRefinements.vue +1 -4
  7. package/src/components/HierarchicalMenu.vue +3 -11
  8. package/src/components/HierarchicalMenuList.vue +4 -1
  9. package/src/components/HitsPerPage.vue +2 -3
  10. package/src/components/InstantSearch.js +5 -0
  11. package/src/components/Menu.vue +1 -3
  12. package/src/components/MenuSelect.vue +1 -3
  13. package/src/components/NumericMenu.vue +3 -8
  14. package/src/components/Pagination.vue +1 -3
  15. package/src/components/RangeInput.vue +3 -11
  16. package/src/components/RatingMenu.vue +2 -3
  17. package/src/components/RefinementList.vue +1 -3
  18. package/src/components/SortBy.vue +2 -3
  19. package/src/components/StateResults.vue +55 -12
  20. package/src/components/ToggleRefinement.vue +3 -10
  21. package/src/components/__tests__/Breadcrumb.js +0 -25
  22. package/src/components/__tests__/ClearRefinements.js +0 -23
  23. package/src/components/__tests__/CurrentRefinements.js +0 -17
  24. package/src/components/__tests__/HierarchicalMenu.js +3 -19
  25. package/src/components/__tests__/HitsPerPage.js +0 -26
  26. package/src/components/__tests__/Menu.js +0 -22
  27. package/src/components/__tests__/MenuSelect.js +0 -23
  28. package/src/components/__tests__/NumericMenu.js +3 -25
  29. package/src/components/__tests__/Pagination.js +0 -21
  30. package/src/components/__tests__/RangeInput.js +1 -34
  31. package/src/components/__tests__/RatingMenu.js +0 -23
  32. package/src/components/__tests__/RefinementList.js +0 -23
  33. package/src/components/__tests__/SortBy.js +1 -23
  34. package/src/components/__tests__/StateResults.js +6 -0
  35. package/src/components/__tests__/ToggleRefinement.js +4 -33
  36. package/src/components/__tests__/__snapshots__/HierarchicalMenu.js.snap +2 -2
  37. package/src/components/__tests__/__snapshots__/StateResults.js.snap +6 -0
  38. package/src/mixins/__mocks__/panel.js +1 -5
  39. package/src/mixins/__mocks__/widget.js +10 -0
  40. package/src/mixins/__tests__/panel.test.js +18 -40
  41. package/src/mixins/panel.js +3 -1
  42. package/src/util/createInstantSearchComponent.js +7 -0
  43. package/src/util/createServerRootMixin.js +10 -1
  44. package/vue2/cjs/index.js +1 -1
  45. package/vue2/cjs/index.js.map +1 -1
  46. package/vue2/es/package.json.js +1 -1
  47. package/vue2/es/src/components/Breadcrumb.vue.js +1 -1
  48. package/vue2/es/src/components/Breadcrumb.vue.js.map +1 -1
  49. package/vue2/es/src/components/ClearRefinements.vue.js +1 -1
  50. package/vue2/es/src/components/ClearRefinements.vue.js.map +1 -1
  51. package/vue2/es/src/components/CurrentRefinements.vue.js +1 -1
  52. package/vue2/es/src/components/CurrentRefinements.vue.js.map +1 -1
  53. package/vue2/es/src/components/HierarchicalMenu.vue.js +1 -1
  54. package/vue2/es/src/components/HierarchicalMenu.vue.js.map +1 -1
  55. package/vue2/es/src/components/HierarchicalMenuList.vue.js +1 -1
  56. package/vue2/es/src/components/HierarchicalMenuList.vue.js.map +1 -1
  57. package/vue2/es/src/components/HitsPerPage.vue.js +1 -1
  58. package/vue2/es/src/components/HitsPerPage.vue.js.map +1 -1
  59. package/vue2/es/src/components/InstantSearch.js +1 -1
  60. package/vue2/es/src/components/InstantSearch.js.map +1 -1
  61. package/vue2/es/src/components/Menu.vue.js +1 -1
  62. package/vue2/es/src/components/Menu.vue.js.map +1 -1
  63. package/vue2/es/src/components/MenuSelect.vue.js +1 -1
  64. package/vue2/es/src/components/MenuSelect.vue.js.map +1 -1
  65. package/vue2/es/src/components/NumericMenu.vue.js +1 -1
  66. package/vue2/es/src/components/NumericMenu.vue.js.map +1 -1
  67. package/vue2/es/src/components/Pagination.vue.js +1 -1
  68. package/vue2/es/src/components/Pagination.vue.js.map +1 -1
  69. package/vue2/es/src/components/RangeInput.vue.js +1 -1
  70. package/vue2/es/src/components/RangeInput.vue.js.map +1 -1
  71. package/vue2/es/src/components/RatingMenu.vue.js +1 -1
  72. package/vue2/es/src/components/RatingMenu.vue.js.map +1 -1
  73. package/vue2/es/src/components/RefinementList.vue.js +1 -1
  74. package/vue2/es/src/components/RefinementList.vue.js.map +1 -1
  75. package/vue2/es/src/components/SortBy.vue.js +1 -1
  76. package/vue2/es/src/components/SortBy.vue.js.map +1 -1
  77. package/vue2/es/src/components/StateResults.vue.js +1 -1
  78. package/vue2/es/src/components/StateResults.vue.js.map +1 -1
  79. package/vue2/es/src/components/ToggleRefinement.vue.js +1 -1
  80. package/vue2/es/src/components/ToggleRefinement.vue.js.map +1 -1
  81. package/vue2/es/src/mixins/panel.js +1 -1
  82. package/vue2/es/src/mixins/panel.js.map +1 -1
  83. package/vue2/es/src/util/createInstantSearchComponent.js +1 -1
  84. package/vue2/es/src/util/createInstantSearchComponent.js.map +1 -1
  85. package/vue2/es/src/util/createServerRootMixin.js +1 -1
  86. package/vue2/es/src/util/createServerRootMixin.js.map +1 -1
  87. package/vue2/umd/index.js +1 -1
  88. package/vue2/umd/index.js.map +1 -1
  89. package/vue3/cjs/index.js +1 -1
  90. package/vue3/cjs/index.js.map +1 -1
  91. package/vue3/es/package.json.js +1 -1
  92. package/vue3/es/src/components/Breadcrumb.vue_vue&type=script&lang.js +1 -1
  93. package/vue3/es/src/components/Breadcrumb.vue_vue&type=script&lang.js.map +1 -1
  94. package/vue3/es/src/components/Breadcrumb.vue_vue&type=template&id=6f46de9a&lang.js.map +1 -1
  95. package/vue3/es/src/components/ClearRefinements.vue_vue&type=script&lang.js +1 -1
  96. package/vue3/es/src/components/ClearRefinements.vue_vue&type=script&lang.js.map +1 -1
  97. package/vue3/es/src/components/ClearRefinements.vue_vue&type=template&id=410a3aaa&lang.js.map +1 -1
  98. package/vue3/es/src/components/CurrentRefinements.vue_vue&type=script&lang.js +1 -1
  99. package/vue3/es/src/components/CurrentRefinements.vue_vue&type=script&lang.js.map +1 -1
  100. package/vue3/es/src/components/CurrentRefinements.vue_vue&type=template&id=4f1917ff&lang.js.map +1 -1
  101. package/vue3/es/src/components/HierarchicalMenu.vue_vue&type=script&lang.js +1 -1
  102. package/vue3/es/src/components/HierarchicalMenu.vue_vue&type=script&lang.js.map +1 -1
  103. package/vue3/es/src/components/HierarchicalMenu.vue_vue&type=template&id=4361a0b8&lang.js +1 -1
  104. package/vue3/es/src/components/HierarchicalMenu.vue_vue&type=template&id=4361a0b8&lang.js.map +1 -1
  105. package/vue3/es/src/components/HierarchicalMenuList.vue_vue&type=script&lang.js.map +1 -1
  106. package/vue3/es/src/components/HierarchicalMenuList.vue_vue&type=template&id=0435b314&lang.js +1 -1
  107. package/vue3/es/src/components/HierarchicalMenuList.vue_vue&type=template&id=0435b314&lang.js.map +1 -1
  108. package/vue3/es/src/components/HitsPerPage.vue_vue&type=script&lang.js +1 -1
  109. package/vue3/es/src/components/HitsPerPage.vue_vue&type=script&lang.js.map +1 -1
  110. package/vue3/es/src/components/HitsPerPage.vue_vue&type=template&id=74f3ac28&lang.js +1 -1
  111. package/vue3/es/src/components/HitsPerPage.vue_vue&type=template&id=74f3ac28&lang.js.map +1 -1
  112. package/vue3/es/src/components/InstantSearch.js +1 -1
  113. package/vue3/es/src/components/InstantSearch.js.map +1 -1
  114. package/vue3/es/src/components/Menu.vue_vue&type=script&lang.js +1 -1
  115. package/vue3/es/src/components/Menu.vue_vue&type=script&lang.js.map +1 -1
  116. package/vue3/es/src/components/Menu.vue_vue&type=template&id=9bcc0be2&lang.js.map +1 -1
  117. package/vue3/es/src/components/MenuSelect.vue_vue&type=script&lang.js +1 -1
  118. package/vue3/es/src/components/MenuSelect.vue_vue&type=script&lang.js.map +1 -1
  119. package/vue3/es/src/components/MenuSelect.vue_vue&type=template&id=694477eb&lang.js.map +1 -1
  120. package/vue3/es/src/components/NumericMenu.vue_vue&type=script&lang.js +1 -1
  121. package/vue3/es/src/components/NumericMenu.vue_vue&type=script&lang.js.map +1 -1
  122. package/vue3/es/src/components/NumericMenu.vue_vue&type=template&id=160fae0c&lang.js +1 -1
  123. package/vue3/es/src/components/NumericMenu.vue_vue&type=template&id=160fae0c&lang.js.map +1 -1
  124. package/vue3/es/src/components/Pagination.vue_vue&type=script&lang.js +1 -1
  125. package/vue3/es/src/components/Pagination.vue_vue&type=script&lang.js.map +1 -1
  126. package/vue3/es/src/components/Pagination.vue_vue&type=template&id=849a166c&lang.js.map +1 -1
  127. package/vue3/es/src/components/RangeInput.vue_vue&type=script&lang.js +1 -1
  128. package/vue3/es/src/components/RangeInput.vue_vue&type=script&lang.js.map +1 -1
  129. package/vue3/es/src/components/RangeInput.vue_vue&type=template&id=1e17783d&lang.js +1 -1
  130. package/vue3/es/src/components/RangeInput.vue_vue&type=template&id=1e17783d&lang.js.map +1 -1
  131. package/vue3/es/src/components/RatingMenu.vue_vue&type=script&lang.js +1 -1
  132. package/vue3/es/src/components/RatingMenu.vue_vue&type=script&lang.js.map +1 -1
  133. package/vue3/es/src/components/RatingMenu.vue_vue&type=template&id=9254de68&lang.js +1 -1
  134. package/vue3/es/src/components/RatingMenu.vue_vue&type=template&id=9254de68&lang.js.map +1 -1
  135. package/vue3/es/src/components/RefinementList.vue_vue&type=script&lang.js +1 -1
  136. package/vue3/es/src/components/RefinementList.vue_vue&type=script&lang.js.map +1 -1
  137. package/vue3/es/src/components/RefinementList.vue_vue&type=template&id=28927239&lang.js.map +1 -1
  138. package/vue3/es/src/components/SortBy.vue_vue&type=script&lang.js +1 -1
  139. package/vue3/es/src/components/SortBy.vue_vue&type=script&lang.js.map +1 -1
  140. package/vue3/es/src/components/SortBy.vue_vue&type=template&id=b69b3b76&lang.js +1 -1
  141. package/vue3/es/src/components/SortBy.vue_vue&type=template&id=b69b3b76&lang.js.map +1 -1
  142. package/vue3/es/src/components/StateResults.vue_vue&type=script&lang.js +1 -1
  143. package/vue3/es/src/components/StateResults.vue_vue&type=script&lang.js.map +1 -1
  144. package/vue3/es/src/components/StateResults.vue_vue&type=template&id=5992f3d5&lang.js +1 -1
  145. package/vue3/es/src/components/StateResults.vue_vue&type=template&id=5992f3d5&lang.js.map +1 -1
  146. package/vue3/es/src/components/ToggleRefinement.vue_vue&type=script&lang.js +1 -1
  147. package/vue3/es/src/components/ToggleRefinement.vue_vue&type=script&lang.js.map +1 -1
  148. package/vue3/es/src/components/ToggleRefinement.vue_vue&type=template&id=14e4586f&lang.js +1 -1
  149. package/vue3/es/src/components/ToggleRefinement.vue_vue&type=template&id=14e4586f&lang.js.map +1 -1
  150. package/vue3/es/src/mixins/panel.js +1 -1
  151. package/vue3/es/src/mixins/panel.js.map +1 -1
  152. package/vue3/es/src/util/createInstantSearchComponent.js +1 -1
  153. package/vue3/es/src/util/createInstantSearchComponent.js.map +1 -1
  154. package/vue3/es/src/util/createServerRootMixin.js +1 -1
  155. package/vue3/es/src/util/createServerRootMixin.js.map +1 -1
  156. package/vue3/umd/index.js +1 -1
  157. package/vue3/umd/index.js.map +1 -1
  158. package/vue2/es/src/connectors/connectStateResults.js +0 -2
  159. package/vue2/es/src/connectors/connectStateResults.js.map +0 -1
  160. package/vue3/es/src/connectors/connectStateResults.js +0 -2
  161. package/vue3/es/src/connectors/connectStateResults.js.map +0 -1
@@ -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/index.js";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){return 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)}),0),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},{$$widgetType:"ais.refinementList"}),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=""}}};
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/index.js";import{createPanelConsumerMixin as r}from"../mixins/panel.js";import i from"./Highlight.vue.js";import a 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){return 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)}),0),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:a,AisHighlight:i},mixins:[e({name:"RefinementList"}),t({connector:s},{$$widgetType:"ais.refinementList"}),r()],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 :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(\n {\n connector: connectRefinementList,\n },\n {\n $$widgetType: 'ais.refinementList',\n }\n ),\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","$$widgetType","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":"gUAyGAA,IAAMC,6BAES,CAACC,w8DACdC,KAAM,oBACNC,WAAY,aAAEC,eAAaC,GAC3BC,OAAQ,CACNC,EAAgB,CAAEL,KAAM,mBACxBM,EACE,CACEC,UAAWC,GAEb,CACEC,aAAc,uBAGlBC,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,SACS,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,sBACS,CACLC,0BAA2B,KAG/BC,SAAU,CACRC,qBAAsB,CACpBC,sBACSC,KAAKJ,2BAEdK,aAAIf,QACGd,MAAM8B,eAAehB,QACrBU,0BAA4BV,IAGrCiB,iCACSH,KAAK5B,MAAM+B,gBAAkB7C,GAEtC8C,wBACSJ,KAAK5B,MAAMgC,MAAMC,aAAIC,UAC1BC,OAAOC,OAAO,GAAIF,EAAM,CACtBG,iBAAkB,CAChBH,KAAM,CACJpB,MAAOoB,EAAKI,mBAMtBC,8BACS,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,QACAd,MAAM0C,OAAO5B,QACbU,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(\n {\n connector: connectRefinementList,\n },\n {\n $$widgetType: 'ais.refinementList',\n }\n ),\n createPanelConsumerMixin(),\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","$$widgetType","createPanelConsumerMixin","props","attribute","type","String","required","searchable","Boolean","default","undefined","searchablePlaceholder","operator","validator","value","limit","Number","showMoreLimit","showMore","sortBy","Array","Function","transformItems","data","searchForFacetValuesQuery","computed","searchForFacetValues","get","this","set","state","searchForItems","toggleShowMore","items","map","item","Object","assign","_highlightResult","highlighted","widgetParams","escapeFacetValues","methods","refine"],"mappings":"gUAyGAA,IAAMC,6BAES,CAACC,w8DACdC,KAAM,oBACNC,WAAY,aAAEC,eAAaC,GAC3BC,OAAQ,CACNC,EAAgB,CAAEL,KAAM,mBACxBM,EACE,CACEC,UAAWC,GAEb,CACEC,aAAc,uBAGlBC,KAEFC,MAAO,CACLC,UAAW,CACTC,KAAMC,OACNC,UAAU,GAEZC,WAAY,CACVH,KAAMI,QACNC,aAASC,GAEXC,sBAAuB,CACrBP,KAAMC,OACNC,UAAU,EACVG,QAAS,gBAEXG,SAAU,CACRH,QAAS,KACTI,mBAAUC,SACS,QAAVA,GAA6B,OAAVA,GAE5BR,UAAU,GAEZS,MAAO,CACLX,KAAMY,OACNV,UAAU,EACVG,aAASC,GAEXO,cAAe,CACbb,KAAMY,OACNV,UAAU,EACVG,aAASC,GAEXQ,SAAU,CACRd,KAAMI,QACNF,UAAU,EACVG,SAAS,GAEXU,OAAQ,CACNf,KAAM,CAACgB,MAAOC,UACdf,UAAU,EACVG,aAASC,GAEXY,eAAgB,CACdlB,KAAMiB,SACNf,UAAU,EACVG,aAASC,IAGba,sBACS,CACLC,0BAA2B,KAG/BC,SAAU,CACRC,qBAAsB,CACpBC,sBACSC,KAAKJ,2BAEdK,aAAIf,QACGgB,MAAMC,eAAejB,QACrBU,0BAA4BV,IAGrCkB,iCACSJ,KAAKE,MAAME,gBAAkB3C,GAEtC4C,wBACSL,KAAKE,MAAMG,MAAMC,aAAIC,UAC1BC,OAAOC,OAAO,GAAIF,EAAM,CACtBG,iBAAkB,CAChBH,KAAM,CACJrB,MAAOqB,EAAKI,mBAMtBC,8BACS,CACLrC,UAAWyB,KAAKzB,UAChBS,SAAUgB,KAAKhB,SACfG,MAAOa,KAAKb,MACZG,SAAUU,KAAKV,SACfD,cAAeW,KAAKX,cACpBE,OAAQS,KAAKT,OACbsB,mBAAmB,EACnBnB,eAAgBM,KAAKN,kBAI3BoB,QAAS,CACPC,gBAAO7B,QACAgB,MAAMa,OAAO7B,QACbU,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/index.js";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){return 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))])}),0)],{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},{$$widgetType:"ais.sortBy"}),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}}}};
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/index.js";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){return 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))])}),0)],{items:e.state.options,hasNoResults:e.state.hasNoResults,refine:e.state.refine,currentRefinement:e.state.currentRefinement,canRefine:e.state.canRefine})],2):e._e()},staticRenderFns:[],name:"AisSortBy",mixins:[e({name:"SortBy"}),t({connector:s},{$$widgetType:"ais.sortBy"}),n()],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(\n { connector: connectSortBy },\n {\n $$widgetType: 'ais.sortBy',\n }\n ),\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","$$widgetType","createPanelConsumerMixin","mapStateToCanRefine","state","hasNoResults","props","items","type","Array","required","transformItems","Function","default","undefined","computed","widgetParams","this"],"mappings":"gQAiCe,CAACA,0jBACdC,KAAM,YACNC,OAAQ,CACNC,EAAgB,CAAEF,KAAM,WACxBG,EACE,CAAEC,UAAWC,GACb,CACEC,aAAc,eAIlBC,EAAyB,CACvBC,6BAAqBC,UAAgC,IAAvBA,EAAMC,iBAGxCC,MAAO,CACLC,MAAO,CACLC,KAAMC,MACNC,UAAU,GAEZC,eAAgB,CACdH,KAAMI,SACNC,aAASC,IAGbC,SAAU,CACRC,8BACS,CACLT,MAAOU,KAAKV,MACZI,eAAgBM,KAAKN"}
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 :can-refine=\"state.canRefine\"\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(\n { connector: connectSortBy },\n {\n $$widgetType: 'ais.sortBy',\n }\n ),\n\n createPanelConsumerMixin(),\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","$$widgetType","createPanelConsumerMixin","props","items","type","Array","required","transformItems","Function","default","undefined","computed","widgetParams","this"],"mappings":"gQAkCe,CAACA,slBACdC,KAAM,YACNC,OAAQ,CACNC,EAAgB,CAAEF,KAAM,WACxBG,EACE,CAAEC,UAAWC,GACb,CACEC,aAAc,eAIlBC,KAEFC,MAAO,CACLC,MAAO,CACLC,KAAMC,MACNC,UAAU,GAEZC,eAAgB,CACdH,KAAMI,SACNC,aAASC,IAGbC,SAAU,CACRC,8BACS,CACLT,MAAOU,KAAKV,MACZI,eAAgBM,KAAKN"}
@@ -1,2 +1,2 @@
1
- import{createSuitMixin as t}from"../mixins/suit.js";import{_objectSpread as e}from"../util/polyfills.js";import{createWidgetMixin as s}from"../mixins/widget.js";import a from"../connectors/connectStateResults.js";export default{render:function(){var t=this,e=t.$createElement,s=t._self._c||e;return t.state&&t.state.state&&t.state.results?s("div",{class:t.suit()},[t._t("default",[s("p",[t._v(" Use this component to have a different layout based on a certain state. ")]),t._v(" "),s("p",[t._v(" Fill in the slot, and get access to the following things: ")]),t._v(" "),s("pre",[t._v("results: "+t._s(Object.keys(t.state.results)))]),t._v(" "),s("pre",[t._v("state: "+t._s(Object.keys(t.state.state)))])],null,t.stateResults)],2):t._e()},staticRenderFns:[],name:"AisStateResults",mixins:[s({connector:a},{$$widgetType:"ais.stateResults"}),t({name:"StateResults"})],computed:{stateResults:function(){var t=this.state,s=t.state,a=t.results;return e({},a,{results:a,state:s})}}};
1
+ import{createSuitMixin as t}from"../mixins/suit.js";import{_objectSpread as e}from"../util/polyfills.js";import"../util/vue-compat/index-vue2.js";import{createWidgetMixin as r}from"../mixins/widget.js";var s;export default((s={render:function(){var t=this,e=t.$createElement,r=t._self._c||e;return t.state&&t.state.state&&t.state.results?r("div",{class:t.suit()},[t._t("default",[r("p",[t._v(" Use this component to have a different layout based on a certain state. ")]),t._v(" "),r("p",[t._v(" Fill in the slot, and get access to the following things: ")]),t._v(" "),r("pre",[t._v("results: "+t._s(Object.keys(t.state.results)))]),t._v(" "),r("pre",[t._v("state: "+t._s(Object.keys(t.state.state)))]),t._v(" "),r("pre",[t._v("status: "+t._s(t.state.status))]),t._v(" "),r("pre",[t._v("error: "+t._s(t.state.error))])],null,t.stateResults)],2):t._e()},staticRenderFns:[],name:"AisStateResults",mixins:[r({connector:!0}),t({name:"StateResults"})],props:{catchError:{type:Boolean,default:!1}},data:function(){var t=this;return{renderFn:function(){var e=t.instantSearchInstance,r=e.status,s=e.error,n=t.getParentIndex().getResults(),a=t.getParentIndex().getHelper(),i=a?a.state:null;t.state={results:n,state:i,status:r,error:s}}}},created:function(){this.instantSearchInstance.addListener("render",this.renderFn)}}).beforeDestroy=function(){this.widget&&(this.instantSearchInstance.removeListener("render",this.renderFn),this.errorFn&&this.instantSearchInstance.removeListener("error",this.errorFn))},s.watch={catchError:{immediate:!0,handler:function(t){t?(this.errorFn=function(){},this.instantSearchInstance.addListener("error",this.errorFn)):this.errorFn&&(this.instantSearchInstance.removeListener("error",this.errorFn),this.errorFn=void 0)}}},s.computed={stateResults:function(){var t=this.state,r=t.results,s=t.state,n=t.status,a=t.error;return e({},r,{results:r,state:s,status:n,error:a})}},s);
2
2
  //# sourceMappingURL=StateResults.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StateResults.vue.js","sources":["../../../../src/components/StateResults.vue"],"sourcesContent":["<template>\n <div\n :class=\"suit()\"\n v-if=\"state && state.state && state.results\"\n >\n <slot v-bind=\"stateResults\">\n <p>\n Use this component to have a different layout based on a certain state.\n </p>\n <p>\n Fill in the slot, and get access to the following things:\n </p>\n <pre>results: {{ Object.keys(state.results) }}</pre>\n <pre>state: {{ Object.keys(state.state) }}</pre>\n </slot>\n </div>\n</template>\n\n<script>\nimport { createSuitMixin } from '../mixins/suit';\nimport { createWidgetMixin } from '../mixins/widget';\nimport { _objectSpread } from '../util/polyfills';\nimport connectStateResults from '../connectors/connectStateResults';\n\nexport default {\n name: 'AisStateResults',\n mixins: [\n createWidgetMixin(\n {\n connector: connectStateResults,\n },\n {\n $$widgetType: 'ais.stateResults',\n }\n ),\n createSuitMixin({ name: 'StateResults' }),\n ],\n computed: {\n stateResults() {\n // @MAJOR: replace v-bind=\"stateResults\" with :state=\"state.state\" :results=\"state.results\"\n const { state, results } = this.state;\n return _objectSpread({}, results, { results, state });\n },\n },\n};\n</script>\n"],"names":["render","name","mixins","createWidgetMixin","connector","connectStateResults","$$widgetType","createSuitMixin","computed","stateResults","this","state","_objectSpread","results"],"mappings":"mOAwBe,CAACA,ghBACdC,KAAM,kBACNC,OAAQ,CACNC,EACE,CACEC,UAAWC,GAEb,CACEC,aAAc,qBAGlBC,EAAgB,CAAEN,KAAM,kBAE1BO,SAAU,CACRC,8BAE6BC,KAAKC,mCACzBC,EAAc,GAAIC,EAAS,SAAEA,QAASF"}
1
+ {"version":3,"file":"StateResults.vue.js","sources":["../../../../src/components/StateResults.vue"],"sourcesContent":["<template>\n <div\n :class=\"suit()\"\n v-if=\"state && state.state && state.results\"\n >\n <slot v-bind=\"stateResults\">\n <p>\n Use this component to have a different layout based on a certain state.\n </p>\n <p>\n Fill in the slot, and get access to the following things:\n </p>\n <pre>results: {{ Object.keys(state.results) }}</pre>\n <pre>state: {{ Object.keys(state.state) }}</pre>\n <pre>status: {{ state.status }}</pre>\n <pre>error: {{ state.error }}</pre>\n </slot>\n </div>\n</template>\n\n<script>\nimport { isVue3 } from '../util/vue-compat';\nimport { createSuitMixin } from '../mixins/suit';\nimport { createWidgetMixin } from '../mixins/widget';\nimport { _objectSpread } from '../util/polyfills';\n\nexport default {\n name: 'AisStateResults',\n mixins: [\n createWidgetMixin({ connector: true }),\n createSuitMixin({ name: 'StateResults' }),\n ],\n props: {\n catchError: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n renderFn: () => {\n const { status, error } = this.instantSearchInstance;\n const results = this.getParentIndex().getResults();\n const helper = this.getParentIndex().getHelper();\n const state = helper ? helper.state : null;\n\n // @MAJOR no longer spread this inside `results`\n this.state = {\n results,\n state,\n status,\n error,\n };\n },\n };\n },\n created() {\n this.instantSearchInstance.addListener('render', this.renderFn);\n },\n [isVue3 ? 'beforeUnmount' : 'beforeDestroy']() {\n if (this.widget) {\n this.instantSearchInstance.removeListener('render', this.renderFn);\n if (this.errorFn) {\n this.instantSearchInstance.removeListener('error', this.errorFn);\n }\n }\n },\n watch: {\n catchError: {\n immediate: true,\n handler(catchError) {\n if (catchError) {\n this.errorFn = () => {};\n this.instantSearchInstance.addListener('error', this.errorFn);\n } else if (this.errorFn) {\n this.instantSearchInstance.removeListener('error', this.errorFn);\n this.errorFn = undefined;\n }\n },\n },\n },\n computed: {\n stateResults() {\n const { results, state, status, error } = this.state;\n return _objectSpread({}, results, { results, state, status, error });\n },\n },\n};\n</script>\n"],"names":["render","name","mixins","createWidgetMixin","connector","createSuitMixin","props","catchError","type","Boolean","default","data","renderFn","this","instantSearchInstance","results","getParentIndex","getResults","helper","getHelper","state","status","error","created","addListener","widget","removeListener","errorFn","watch","immediate","handler","undefined","computed","stateResults","_objectSpread"],"mappings":"kOA0Be,CAACA,ooBACdC,KAAM,kBACNC,OAAQ,CACNC,EAAkB,CAAEC,WAAW,IAC/BC,EAAgB,CAAEJ,KAAM,kBAE1BK,MAAO,CACLC,WAAY,CACVC,KAAMC,QACNC,SAAS,IAGbC,iCACS,CACLC,0BAC4BC,EAAKC,2CACzBC,EAAUF,EAAKG,iBAAiBC,aAChCC,EAASL,EAAKG,iBAAiBG,YAC/BC,EAAQF,EAASA,EAAOE,MAAQ,KAGtCP,EAAKO,MAAQ,SACXL,QACAK,SACAC,QACAC,MAKRC,wBACOT,sBAAsBU,YAAY,SAAUX,KAAKD,aAExD,yBACMC,KAAKY,cACFX,sBAAsBY,eAAe,SAAUb,KAAKD,UACrDC,KAAKc,cACFb,sBAAsBY,eAAe,QAASb,KAAKc,aAI9DC,MAAO,CACLrB,WAAY,CACVsB,WAAW,EACXC,iBAAQvB,GACFA,QACGoB,0BACAb,sBAAsBU,YAAY,QAASX,KAAKc,UAC5Cd,KAAKc,eACTb,sBAAsBY,eAAe,QAASb,KAAKc,cACnDA,aAAUI,QAKvBC,SAAU,CACRC,8BAC4CpB,KAAKO,wDACxCc,EAAc,GAAInB,EAAS,SAAEA,QAASK,SAAOC,QAAQC"}
@@ -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/index.js";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){return 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},{$$widgetType:"ais.toggleRefinement"}),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/index.js";import{createPanelConsumerMixin as a}from"../mixins/panel.js";export default{render:function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.state?n("div",{class:[e.suit(),!e.state.canRefine&&e.suit("","noRefinement")]},[e._t("default",[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){return 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.state.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},{$$widgetType:"ais.toggleRefinement"}),a()],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}}}};
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 :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(\n {\n connector: connectToggleRefinement,\n },\n {\n $$widgetType: 'ais.toggleRefinement',\n }\n ),\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","$$widgetType","createPanelConsumerMixin","props","attribute","type","String","required","label","on","Number","Array","default","off","undefined","computed","widgetParams","this","canRefine"],"mappings":"4PAqCAA,IAAMC,WAAsBC,UAASC,QAAQD,EAAME,OAASF,EAAME,MAAMC,sBAEzD,CAACC,ovBACdC,KAAM,sBACNC,OAAQ,CACNC,EAAgB,CAAEF,KAAM,qBACxBG,EACE,CACEC,UAAWC,GAEb,CACEC,aAAc,yBAGlBC,EAAyB,qBACvBb,KAGJc,MAAO,CACLC,UAAW,CACTC,KAAMC,OACNC,UAAU,GAEZC,MAAO,CACLH,KAAMC,OACNC,UAAU,GAEZE,GAAI,CACFJ,KAAM,CAACC,OAAQI,OAAQnB,QAASoB,OAChCJ,UAAU,EACVK,SAAS,GAEXC,IAAK,CACHR,KAAM,CAACC,OAAQI,OAAQnB,QAASoB,OAChCJ,UAAU,EACVK,aAASE,IAGbC,SAAU,CACRC,8BACS,CACLZ,UAAWa,KAAKb,UAChBI,MAAOS,KAAKT,MACZC,GAAIQ,KAAKR,GACTI,IAAKI,KAAKJ,MAGdK,4BACS7B,EAAoB4B,KAAK3B"}
1
+ {"version":3,"file":"ToggleRefinement.vue.js","sources":["../../../../src/components/ToggleRefinement.vue"],"sourcesContent":["<template>\n <div\n v-if=\"state\"\n :class=\"[suit(), !state.canRefine && suit('', 'noRefinement')]\"\n >\n <slot\n :value=\"state.value\"\n :can-refine=\"state.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\nexport default {\n name: 'AisToggleRefinement',\n mixins: [\n createSuitMixin({ name: 'ToggleRefinement' }),\n createWidgetMixin(\n {\n connector: connectToggleRefinement,\n },\n {\n $$widgetType: 'ais.toggleRefinement',\n }\n ),\n createPanelConsumerMixin(),\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 },\n};\n</script>\n"],"names":["render","name","mixins","createSuitMixin","createWidgetMixin","connector","connectToggleRefinement","$$widgetType","createPanelConsumerMixin","props","attribute","type","String","required","label","on","Number","Boolean","Array","default","off","undefined","computed","widgetParams","this"],"mappings":"0QAqCe,CAACA,gwBACdC,KAAM,sBACNC,OAAQ,CACNC,EAAgB,CAAEF,KAAM,qBACxBG,EACE,CACEC,UAAWC,GAEb,CACEC,aAAc,yBAGlBC,KAEFC,MAAO,CACLC,UAAW,CACTC,KAAMC,OACNC,UAAU,GAEZC,MAAO,CACLH,KAAMC,OACNC,UAAU,GAEZE,GAAI,CACFJ,KAAM,CAACC,OAAQI,OAAQC,QAASC,OAChCL,UAAU,EACVM,SAAS,GAEXC,IAAK,CACHT,KAAM,CAACC,OAAQI,OAAQC,QAASC,OAChCL,UAAU,EACVM,aAASE,IAGbC,SAAU,CACRC,8BACS,CACLb,UAAWc,KAAKd,UAChBI,MAAOU,KAAKV,MACZC,GAAIS,KAAKT,GACTK,IAAKI,KAAKJ"}
@@ -1,2 +1,2 @@
1
- import"../util/vue-compat/index-vue2.js";import t from"mitt";var e="instantSearchPanelEmitter",n="PANEL_CHANGE_EVENT",i=function(){var e;return(e={props:{emitter:{type:Object,required:!1,default:function(){return t()}}},provide:function(){var t;return(t={}).instantSearchPanelEmitter=this.emitter,t},data:function(){return{canRefine:!0}},created:function(){var t=this;this.emitter.on("PANEL_CHANGE_EVENT",function(e){t.updateCanRefine(e)})}}).beforeDestroy=function(){this.emitter.all.clear()},e.methods={updateCanRefine:function(t){this.canRefine=t}},e},r=function(t){var e=t.mapStateToCanRefine;return{inject:{emitter:{from:"instantSearchPanelEmitter",default:function(){return{emit:function(){}}}}},data:function(){return{state:null,hasAlreadyEmitted:!1}},watch:{state:{immediate:!0,handler:function(t,n){if(t){var i=e(n||{}),r=e(t);this.hasAlreadyEmitted&&i===r||(this.emitter.emit("PANEL_CHANGE_EVENT",r),this.hasAlreadyEmitted=!0)}}}}}};export{n as PANEL_CHANGE_EVENT,e as PANEL_EMITTER_NAMESPACE,r as createPanelConsumerMixin,i as createPanelProviderMixin};
1
+ import"../util/vue-compat/index-vue2.js";import t from"mitt";var e="instantSearchPanelEmitter",n="PANEL_CHANGE_EVENT",i=function(){var e;return(e={props:{emitter:{type:Object,required:!1,default:function(){return t()}}},provide:function(){var t;return(t={}).instantSearchPanelEmitter=this.emitter,t},data:function(){return{canRefine:!0}},created:function(){var t=this;this.emitter.on("PANEL_CHANGE_EVENT",function(e){t.updateCanRefine(e)})}}).beforeDestroy=function(){this.emitter.all.clear()},e.methods={updateCanRefine:function(t){this.canRefine=t}},e},r=function(t){void 0===t&&(t={});var e=t.mapStateToCanRefine;return void 0===e&&(e=function(t){return Boolean(t.canRefine)}),{inject:{emitter:{from:"instantSearchPanelEmitter",default:function(){return{emit:function(){}}}}},data:function(){return{state:null,hasAlreadyEmitted:!1}},watch:{state:{immediate:!0,handler:function(t,n){if(t){var i=e(n||{}),r=e(t);this.hasAlreadyEmitted&&i===r||(this.emitter.emit("PANEL_CHANGE_EVENT",r),this.hasAlreadyEmitted=!0)}}}}}};export{n as PANEL_CHANGE_EVENT,e as PANEL_EMITTER_NAMESPACE,r as createPanelConsumerMixin,i as createPanelProviderMixin};
2
2
  //# sourceMappingURL=panel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"panel.js","sources":["../../../../src/mixins/panel.js"],"sourcesContent":["import { isVue3 } from '../util/vue-compat';\nimport mitt from 'mitt';\n\nexport const PANEL_EMITTER_NAMESPACE = 'instantSearchPanelEmitter';\nexport const PANEL_CHANGE_EVENT = 'PANEL_CHANGE_EVENT';\n\nexport const createPanelProviderMixin = () => ({\n props: {\n emitter: {\n type: Object,\n required: false,\n default() {\n return mitt();\n },\n },\n },\n provide() {\n return {\n [PANEL_EMITTER_NAMESPACE]: this.emitter,\n };\n },\n data() {\n return {\n canRefine: true,\n };\n },\n created() {\n this.emitter.on(PANEL_CHANGE_EVENT, value => {\n this.updateCanRefine(value);\n });\n },\n [isVue3 ? 'beforeUnmount' : 'beforeDestroy']() {\n this.emitter.all.clear();\n },\n methods: {\n updateCanRefine(value) {\n this.canRefine = value;\n },\n },\n});\n\nexport const createPanelConsumerMixin = ({ mapStateToCanRefine }) => ({\n inject: {\n emitter: {\n from: PANEL_EMITTER_NAMESPACE,\n default() {\n return {\n emit: () => {},\n };\n },\n },\n },\n data() {\n return {\n state: null,\n hasAlreadyEmitted: false,\n };\n },\n watch: {\n state: {\n immediate: true,\n handler(nextState, previousState) {\n if (!nextState) {\n return;\n }\n\n const previousCanRefine = mapStateToCanRefine(previousState || {});\n const nextCanRefine = mapStateToCanRefine(nextState);\n\n if (!this.hasAlreadyEmitted || previousCanRefine !== nextCanRefine) {\n this.emitter.emit(PANEL_CHANGE_EVENT, nextCanRefine);\n this.hasAlreadyEmitted = true;\n }\n },\n },\n },\n});\n"],"names":["PANEL_EMITTER_NAMESPACE","PANEL_CHANGE_EVENT","createPanelProviderMixin","props","emitter","type","Object","required","default","mitt","provide","this","data","canRefine","created","on","value","updateCanRefine","all","clear","methods","createPanelConsumerMixin","ref","inject","from","emit","state","hasAlreadyEmitted","watch","immediate","handler","nextState","previousState","previousCanRefine","mapStateToCanRefine","nextCanRefine"],"mappings":"iEAGaA,EAA0B,4BAC1BC,EAAqB,qBAErBC,4BAAkC,CAC7CC,MAAO,CACLC,QAAS,CACPC,KAAMC,OACNC,UAAU,EACVC,0BACSC,OAIbC,kCACS,IACL,0BAA2BC,KAAKP,WAGpCQ,sBACS,CACLC,WAAW,IAGfC,mCACOV,QAAQW,GAvBiB,8BAuBMC,GAClCL,EAAKM,gBAAgBD,QAGzB,8BACOZ,QAAQc,IAAIC,WAEnBC,QAAS,CACPH,yBAAgBD,QACTH,UAAYG,OAKVK,WAA4BC,qCAA6B,CACpEC,OAAQ,CACNnB,QAAS,CACPoB,KAzCiC,4BA0CjChB,yBACS,CACLiB,sBAKRb,sBACS,CACLc,MAAO,KACPC,mBAAmB,IAGvBC,MAAO,CACLF,MAAO,CACLG,WAAW,EACXC,iBAAQC,EAAWC,MACZD,OAICE,EAAoBC,EAAoBF,GAAiB,IACzDG,EAAgBD,EAAoBH,GAErCpB,KAAKgB,mBAAqBM,IAAsBE,SAC9C/B,QAAQqB,KAlEW,qBAkEcU,QACjCR,mBAAoB"}
1
+ {"version":3,"file":"panel.js","sources":["../../../../src/mixins/panel.js"],"sourcesContent":["import { isVue3 } from '../util/vue-compat';\nimport mitt from 'mitt';\n\nexport const PANEL_EMITTER_NAMESPACE = 'instantSearchPanelEmitter';\nexport const PANEL_CHANGE_EVENT = 'PANEL_CHANGE_EVENT';\n\nexport const createPanelProviderMixin = () => ({\n props: {\n emitter: {\n type: Object,\n required: false,\n default() {\n return mitt();\n },\n },\n },\n provide() {\n return {\n [PANEL_EMITTER_NAMESPACE]: this.emitter,\n };\n },\n data() {\n return {\n canRefine: true,\n };\n },\n created() {\n this.emitter.on(PANEL_CHANGE_EVENT, value => {\n this.updateCanRefine(value);\n });\n },\n [isVue3 ? 'beforeUnmount' : 'beforeDestroy']() {\n this.emitter.all.clear();\n },\n methods: {\n updateCanRefine(value) {\n this.canRefine = value;\n },\n },\n});\n\nexport const createPanelConsumerMixin = ({\n mapStateToCanRefine = state => Boolean(state.canRefine),\n} = {}) => ({\n inject: {\n emitter: {\n from: PANEL_EMITTER_NAMESPACE,\n default() {\n return {\n emit: () => {},\n };\n },\n },\n },\n data() {\n return {\n state: null,\n hasAlreadyEmitted: false,\n };\n },\n watch: {\n state: {\n immediate: true,\n handler(nextState, previousState) {\n if (!nextState) {\n return;\n }\n\n const previousCanRefine = mapStateToCanRefine(previousState || {});\n const nextCanRefine = mapStateToCanRefine(nextState);\n\n if (!this.hasAlreadyEmitted || previousCanRefine !== nextCanRefine) {\n this.emitter.emit(PANEL_CHANGE_EVENT, nextCanRefine);\n this.hasAlreadyEmitted = true;\n }\n },\n },\n },\n});\n"],"names":["PANEL_EMITTER_NAMESPACE","PANEL_CHANGE_EVENT","createPanelProviderMixin","props","emitter","type","Object","required","default","mitt","provide","this","data","canRefine","created","on","value","updateCanRefine","all","clear","methods","createPanelConsumerMixin","ref","state","Boolean","inject","from","emit","hasAlreadyEmitted","watch","immediate","handler","nextState","previousState","previousCanRefine","mapStateToCanRefine","nextCanRefine"],"mappings":"iEAGaA,EAA0B,4BAC1BC,EAAqB,qBAErBC,4BAAkC,CAC7CC,MAAO,CACLC,QAAS,CACPC,KAAMC,OACNC,UAAU,EACVC,0BACSC,OAIbC,kCACS,IACL,0BAA2BC,KAAKP,WAGpCQ,sBACS,CACLC,WAAW,IAGfC,mCACOV,QAAQW,GAvBiB,8BAuBMC,GAClCL,EAAKM,gBAAgBD,QAGzB,8BACOZ,QAAQc,IAAIC,WAEnBC,QAAS,CACPH,yBAAgBD,QACTH,UAAYG,OAKVK,WAA4BC,kBAErC,+DADoBC,UAASC,QAAQD,EAAMV,aACnC,CACVY,OAAQ,CACNrB,QAAS,CACPsB,KA3CiC,4BA4CjClB,yBACS,CACLmB,sBAKRf,sBACS,CACLW,MAAO,KACPK,mBAAmB,IAGvBC,MAAO,CACLN,MAAO,CACLO,WAAW,EACXC,iBAAQC,EAAWC,MACZD,OAICE,EAAoBC,EAAoBF,GAAiB,IACzDG,EAAgBD,EAAoBH,GAErCrB,KAAKiB,mBAAqBM,IAAsBE,SAC9ChC,QAAQuB,KApEW,qBAoEcS,QACjCR,mBAAoB"}
@@ -1,2 +1,2 @@
1
- import{createSuitMixin as n}from"../mixins/suit.js";import{_objectSpread as t}from"./polyfills.js";import{version as e}from"./vue-compat/index-vue2.js";import{version as a}from"../../package.json.js";var i=function(i){var s;return t(((s={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 ("+e+")"),n.addAlgoliaAgent("Vue InstantSearch ("+a+")"))},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},s),i)};export{i as createInstantSearchComponent};
1
+ import{createSuitMixin as n}from"../mixins/suit.js";import{_objectSpread as t}from"./polyfills.js";import{version as e}from"./vue-compat/index-vue2.js";import{version as a}from"../../package.json.js";var i=function(i){var s;return t(((s={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")},onStateChange:function(){throw new Error("onStateChange configuration can not be changed dynamically at this point.\n\nPlease open a new issue: https://github.com/algolia/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 ("+e+")"),n.addAlgoliaAgent("Vue InstantSearch ("+a+")"))},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},s),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 { isVue3, version as vueVersion } from './vue-compat';\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 (${vueVersion})`);\n searchClient.addAlgoliaAgent(`Vue InstantSearch (${version})`);\n }\n },\n mounted() {\n // from the documentation: https://vuejs.org/v2/api/#mounted\n // \"Note that mounted does not guarantee that all child components have also been mounted. If you want to\n // wait until the entire view has been rendered, you can use vm.$nextTick inside of mounted\"\n this.$nextTick(() => {\n if (!this.instantSearchInstance.started) {\n this.instantSearchInstance.start();\n }\n });\n },\n [isVue3 ? 'beforeUnmount' : 'beforeDestroy']() {\n if (this.instantSearchInstance.started) {\n this.instantSearchInstance.dispose();\n }\n\n // a hydrated instance will no longer be hydrated once disposed, and starts from scratch\n this.instantSearchInstance.__initialSearchResults = undefined;\n },\n },\n component\n );\n"],"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","client","addAlgoliaAgent","vueVersion","version","mounted","$nextTick","started","start","dispose","__initialSearchResults","undefined"],"mappings":"4MAKaA,WAA+BC,gBAC1CC,MACE,CACEC,OAAQ,CAACC,EAAgB,CAAEC,KAAM,mBACjCC,yBACS,CACLC,4BAA6BC,KAAKC,wBAGtCC,MAAO,CACLC,sBAAaA,QACNF,sBAAsBG,OAAOC,UAAUF,GAAcG,UAE5DC,mBAAUA,QACHN,sBAAsBG,OAAOI,SAASD,GAAWD,UAExDG,4BAAmBA,QAEZR,sBAAsBS,oBAAsBD,GAEnDE,yBACQ,IAAIC,MACR,gLAKJC,wBAAeA,QAERZ,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,uBACQzB,EAAeH,KAAKC,sBAAsB4B,OACJ,mBAAjC1B,EAAa2B,kBACtB3B,EAAa2B,wBAAwBC,OACrC5B,EAAa2B,sCAAsCE,SAGvDC,mCAIOC,qBACElC,EAAKC,sBAAsBkC,SAC9BnC,EAAKC,sBAAsBmC,aAIjC,yBACMpC,KAAKC,sBAAsBkC,cACxBlC,sBAAsBoC,eAIxBpC,sBAAsBqC,4BAAyBC,MAGxD9C"}
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 { isVue3, version as vueVersion } from './vue-compat';\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 onStateChange() {\n throw new Error(\n 'onStateChange configuration can not be changed dynamically at this point.' +\n '\\n\\n' +\n 'Please open a new issue: https://github.com/algolia/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 (${vueVersion})`);\n searchClient.addAlgoliaAgent(`Vue InstantSearch (${version})`);\n }\n },\n mounted() {\n // from the documentation: https://vuejs.org/v2/api/#mounted\n // \"Note that mounted does not guarantee that all child components have also been mounted. If you want to\n // wait until the entire view has been rendered, you can use vm.$nextTick inside of mounted\"\n this.$nextTick(() => {\n if (!this.instantSearchInstance.started) {\n this.instantSearchInstance.start();\n }\n });\n },\n [isVue3 ? 'beforeUnmount' : 'beforeDestroy']() {\n if (this.instantSearchInstance.started) {\n this.instantSearchInstance.dispose();\n }\n\n // a hydrated instance will no longer be hydrated once disposed, and starts from scratch\n this.instantSearchInstance.__initialSearchResults = undefined;\n },\n },\n component\n );\n"],"names":["createInstantSearchComponent","component","_objectSpread","mixins","createSuitMixin","name","provide","$_ais_instantSearchInstance","this","instantSearchInstance","watch","searchClient","helper","setClient","search","indexName","setIndex","stalledSearchDelay","_stalledSearchDelay","routing","Error","onStateChange","searchFunction","_searchFunction","middlewares","immediate","handler","next","prev","filter","middleware","indexOf","forEach","middlewareToRemove","unuse","middlewareToAdd","use","created","client","addAlgoliaAgent","vueVersion","version","mounted","$nextTick","started","start","dispose","__initialSearchResults","undefined"],"mappings":"4MAKaA,WAA+BC,gBAC1CC,MACE,CACEC,OAAQ,CAACC,EAAgB,CAAEC,KAAM,mBACjCC,yBACS,CACLC,4BAA6BC,KAAKC,wBAGtCC,MAAO,CACLC,sBAAaA,QACNF,sBAAsBG,OAAOC,UAAUF,GAAcG,UAE5DC,mBAAUA,QACHN,sBAAsBG,OAAOI,SAASD,GAAWD,UAExDG,4BAAmBA,QAEZR,sBAAsBS,oBAAsBD,GAEnDE,yBACQ,IAAIC,MACR,gLAKJC,+BACQ,IAAID,MACR,sLAKJE,wBAAeA,QAERb,sBAAsBc,gBAAkBD,GAE/CE,YAAa,CACXC,WAAW,EACXC,iBAAQC,EAAMC,eACXA,GAAQ,IACNC,gBAAOC,UAAoD,KAArCH,GAAQ,IAAII,QAAQD,KAC1CE,iBAAQC,GACPzB,EAAKC,sBAAsByB,MAAMD,MAGpCN,GAAQ,IACNE,gBAAOC,UAAoD,KAArCF,GAAQ,IAAIG,QAAQD,KAC1CE,iBAAQG,GACP3B,EAAKC,sBAAsB2B,IAAID,QAKzCE,uBACQ1B,EAAeH,KAAKC,sBAAsB6B,OACJ,mBAAjC3B,EAAa4B,kBACtB5B,EAAa4B,wBAAwBC,OACrC7B,EAAa4B,sCAAsCE,SAGvDC,mCAIOC,qBACEnC,EAAKC,sBAAsBmC,SAC9BpC,EAAKC,sBAAsBoC,aAIjC,yBACMrC,KAAKC,sBAAsBmC,cACxBnC,sBAAsBqC,eAIxBrC,sBAAsBsC,4BAAyBC,MAGxD/C"}
@@ -1,2 +1,2 @@
1
- import{Vue2 as t}from"./vue-compat/index-vue2.js";import{warn as e}from"./warn.js";import n from"instantsearch.js/es/index.js";function r(e,n){void 0===n&&(n={});var r=n.mixins;void 0===r&&(r=[]);var o,s={serverPrefetch:void 0,fetch:void 0,_base:void 0,name:"ais-ssr-root-component"};return s.router=e.$router,s.store=e.$store,(o=new(e.$vnode?e.$vnode.componentOptions.Ctor.extend(s):t.component(s.name,Object.assign({},e.$options,s)))({propsData:e.$options.propsData,mixins:[].concat(r)})).$slots=e.$slots,o.$root=e.$root,o.$options.serverPrefetch=[],o}function o(t,r){var o,s=n(t);return s.findResultsState=function(t){var e,n,i=t.component,a=t.renderToString;if(!a)throw new Error("findResultsState requires `renderToString: (component) => Promise<string>` in the first argument.");return Promise.resolve().then(function(){e=r(i,{mixins:[{beforeCreate:function(){i.$nuxt&&(this.$nuxt=i.$nuxt)},created:function(){(n=this.instantsearch).start(),n.started=!1}}]})}).then(function(){return a(e)}).then(function(){return t=n.mainHelper,new Promise(function(e,n){t.searchOnlyWithDerivedHelpers(),t.derivedHelpers[0].on("result",function(){e()}),t.derivedHelpers.forEach(function(t){return t.on("error",function(t){n(t)})})});var t}).then(function(){return o={},function t(e,n){return n(e),e.getWidgets().forEach(function(e){"ais.index"===e.$$type&&(n(e),t(e,n))})}(n.mainIndex,function(t){var e=t.getResults(),n=e._state,r=e._rawResults;o[t.getIndexId()]={state:Object.keys(n).reduce(function(t,e){return t[e]=n[e],t},{}),results:r}}),s.hydrate(o),s.getState()})},s.getState=function(){if(!o)throw new Error("You need to wait for findResultsState to finish");return o},s.__forceRender=function(t,e){var n=e.getResults();if(null!==n){var r=n._state,o=e.getHelper();o.state=r,t.render({helper:o,results:n,scopedResults:e.getScopedResults(),parent:e,state:r,templatesConfig:{},createURL:e.createURL,instantSearchInstance:s,searchMetadata:{isSearchStalled:!1}})}},s.hydrate=function(t){t?(s._initialResults=t,s.start(),s.started=!1):e("The result of `findResultsState()` needs to be passed to `hydrate()`.")},s}function s(t){void 0===t&&(t={});var e=t.$cloneComponent;void 0===e&&(e=r);var n=o(t,e);return{provide:function(){return{$_ais_ssrInstantSearchInstance:this.instantsearch}},data:function(){return{instantsearch:n}}}}export{s as createServerRootMixin};
1
+ import{Vue2 as t}from"./vue-compat/index-vue2.js";import{warn as e}from"./warn.js";import n from"instantsearch.js/es/index.js";function r(e,n){void 0===n&&(n={});var r=n.mixins;void 0===r&&(r=[]);var o,s={serverPrefetch:void 0,fetch:void 0,_base:void 0,name:"ais-ssr-root-component"};return s.router=e.$router,s.store=e.$store,(o=new(e.$vnode?e.$vnode.componentOptions.Ctor.extend(s):t.component(s.name,Object.assign({},e.$options,s)))({propsData:e.$options.propsData,mixins:[].concat(r)})).$slots=e.$slots,o.$root=e.$root,o.$options.serverPrefetch=[],o}function o(t,r){var o,s=n(t);return s.findResultsState=function(t){var e,n,i=t.component,a=t.renderToString;if(!a)throw new Error("findResultsState requires `renderToString: (component) => Promise<string>` in the first argument.");return Promise.resolve().then(function(){e=r(i,{mixins:[{beforeCreate:function(){var t=Object.getOwnPropertyDescriptor(i,"$nuxt"),e=!!t&&(t.writable||t.set);i.$nuxt&&e&&(this.$nuxt=i.$nuxt)},created:function(){(n=this.instantsearch).start(),n.started=!1}}]})}).then(function(){return a(e)}).then(function(){return t=n.mainHelper,new Promise(function(e,n){t.searchOnlyWithDerivedHelpers(),t.derivedHelpers[0].on("result",function(){e()}),t.derivedHelpers.forEach(function(t){return t.on("error",function(t){n(t)})})});var t}).then(function(){return o={},function t(e,n){return n(e),e.getWidgets().forEach(function(e){"ais.index"===e.$$type&&(n(e),t(e,n))})}(n.mainIndex,function(t){var e=t.getResults(),n=e._state,r=e._rawResults;o[t.getIndexId()]={state:Object.keys(n).reduce(function(t,e){return t[e]=n[e],t},{}),results:r}}),s.hydrate(o),s.getState()})},s.getState=function(){if(!o)throw new Error("You need to wait for findResultsState to finish");return o},s.__forceRender=function(t,e){var n=e.getResults();if(null!==n){var r=n._state,o=e.getHelper();o.state=r,t.render({helper:o,results:n,scopedResults:e.getScopedResults(),parent:e,state:r,templatesConfig:{},createURL:e.createURL,instantSearchInstance:s,searchMetadata:{isSearchStalled:!1}})}},s.hydrate=function(t){t?(s._initialResults=t,s.start(),s.started=!1):e("The result of `findResultsState()` needs to be passed to `hydrate()`.")},s}function s(t){void 0===t&&(t={});var e=t.$cloneComponent;void 0===e&&(e=r);var n=o(t,e);return{provide:function(){return{$_ais_ssrInstantSearchInstance:this.instantsearch}},data:function(){return{instantsearch:n}}}}export{s as createServerRootMixin};
2
2
  //# sourceMappingURL=createServerRootMixin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createServerRootMixin.js","sources":["../../../../src/util/createServerRootMixin.js"],"sourcesContent":["import instantsearch from 'instantsearch.js/es';\nimport { isVue3, isVue2, Vue2, createSSRApp } from './vue-compat';\nimport { warn } from './warn';\n\nfunction walkIndex(indexWidget, visit) {\n visit(indexWidget);\n\n return indexWidget.getWidgets().forEach(widget => {\n if (widget.$$type !== 'ais.index') return;\n visit(widget);\n walkIndex(widget, visit);\n });\n}\n\nfunction searchOnlyWithDerivedHelpers(helper) {\n return new Promise((resolve, reject) => {\n helper.searchOnlyWithDerivedHelpers();\n\n // we assume all derived helpers resolve at least in the same tick\n helper.derivedHelpers[0].on('result', () => {\n resolve();\n });\n\n helper.derivedHelpers.forEach(derivedHelper =>\n derivedHelper.on('error', e => {\n reject(e);\n })\n );\n });\n}\n\nfunction defaultCloneComponent(componentInstance, { mixins = [] } = {}) {\n const options = {\n serverPrefetch: undefined,\n fetch: undefined,\n _base: undefined,\n name: 'ais-ssr-root-component',\n };\n\n let app;\n\n if (isVue3) {\n const appOptions = Object.assign({}, componentInstance.$options, options);\n appOptions.mixins = [...mixins, ...(appOptions.mixins || [])];\n app = createSSRApp(appOptions);\n if (componentInstance.$router) {\n app.use(componentInstance.$router);\n }\n if (componentInstance.$store) {\n app.use(componentInstance.$store);\n }\n } else {\n // copy over global Vue APIs\n options.router = componentInstance.$router;\n options.store = componentInstance.$store;\n\n const Extended = componentInstance.$vnode\n ? componentInstance.$vnode.componentOptions.Ctor.extend(options)\n : Vue2.component(\n options.name,\n Object.assign({}, componentInstance.$options, options)\n );\n\n app = new Extended({\n propsData: componentInstance.$options.propsData,\n mixins: [...mixins],\n });\n }\n\n // https://stackoverflow.com/a/48195006/3185307\n app.$slots = componentInstance.$slots;\n app.$root = componentInstance.$root;\n if (isVue2) {\n app.$options.serverPrefetch = [];\n }\n\n return app;\n}\n\nfunction augmentInstantSearch(instantSearchOptions, cloneComponent) {\n const search = instantsearch(instantSearchOptions);\n\n let initialResults;\n\n /**\n * main API for SSR, called in serverPrefetch of a root component which contains instantsearch\n * @param {Object} props the object including `component` and `renderToString`\n * @param {Object} props.component the calling component's `this`\n * @param {Function} props.renderToString the function to render componentInstance to string\n * @returns {Promise} result of the search, to save for .hydrate\n */\n search.findResultsState = function({ component, renderToString }) {\n if (!renderToString) {\n throw new Error(\n 'findResultsState requires `renderToString: (component) => Promise<string>` in the first argument.'\n );\n }\n\n let app;\n let instance;\n\n return Promise.resolve()\n .then(() => {\n app = cloneComponent(component, {\n mixins: [\n {\n beforeCreate() {\n if (component.$nuxt) {\n // In case of Nuxt (3), we ensure the context is shared between\n // the real and cloned component\n this.$nuxt = component.$nuxt;\n }\n },\n created() {\n instance = this.instantsearch;\n\n instance.start();\n // although we use start for initializing the main index,\n // we don't want to send search requests yet\n instance.started = false;\n },\n },\n ],\n });\n })\n .then(() => renderToString(app))\n .then(() => searchOnlyWithDerivedHelpers(instance.mainHelper))\n .then(() => {\n initialResults = {};\n walkIndex(instance.mainIndex, widget => {\n const { _state, _rawResults } = widget.getResults();\n\n initialResults[widget.getIndexId()] = {\n // copy just the values of SearchParameters, not the functions\n state: Object.keys(_state).reduce((acc, key) => {\n // eslint-disable-next-line no-param-reassign\n acc[key] = _state[key];\n return acc;\n }, {}),\n results: _rawResults,\n };\n });\n\n search.hydrate(initialResults);\n return search.getState();\n });\n };\n\n /**\n * @returns {Promise} result state to serialize and enter into .hydrate\n */\n search.getState = function() {\n if (!initialResults) {\n throw new Error('You need to wait for findResultsState to finish');\n }\n return initialResults;\n };\n\n /**\n * make sure correct data is available in each widget's state.\n * called in widget mixin with (this.widget, this)\n *\n * @param {object} widget The widget instance\n * @param {object} parent The local parent index\n * @returns {void}\n */\n search.__forceRender = function(widget, parent) {\n const results = parent.getResults();\n\n // this happens when a different InstantSearch gets rendered initially,\n // after the hydrate finished. There's thus no initial results available.\n if (results === null) {\n return;\n }\n\n const state = results._state;\n\n const localHelper = parent.getHelper();\n // helper gets created in init, but that means it doesn't get the injected\n // parameters, because those are from the lastResults\n localHelper.state = state;\n\n widget.render({\n helper: localHelper,\n results,\n scopedResults: parent.getScopedResults(),\n parent,\n state,\n templatesConfig: {},\n createURL: parent.createURL,\n instantSearchInstance: search,\n searchMetadata: {\n isSearchStalled: false,\n },\n });\n };\n\n /**\n * Called both in server\n * @param {object} results a map of indexId: SearchResults\n * @returns {void}\n */\n search.hydrate = function(results) {\n if (!results) {\n warn(\n 'The result of `findResultsState()` needs to be passed to `hydrate()`.'\n );\n return;\n }\n\n search._initialResults = results;\n\n search.start();\n search.started = false;\n };\n return search;\n}\n\nexport function createServerRootMixin(instantSearchOptions = {}) {\n const { $cloneComponent = defaultCloneComponent } = instantSearchOptions;\n\n const search = augmentInstantSearch(instantSearchOptions, $cloneComponent);\n\n // put this in the user's root Vue instance\n // we can then reuse that InstantSearch instance seamlessly from `ais-instant-search-ssr`\n const rootMixin = {\n provide() {\n return {\n $_ais_ssrInstantSearchInstance: this.instantsearch,\n };\n },\n data() {\n return {\n // this is in data, so that the real & cloned render do not share\n // the same instantsearch instance.\n instantsearch: search,\n };\n },\n };\n\n return rootMixin;\n}\n"],"names":["defaultCloneComponent","componentInstance","ref","app","options","serverPrefetch","undefined","fetch","_base","name","router","$router","store","$store","$vnode","componentOptions","Ctor","extend","Vue2","component","Object","assign","$options","propsData","mixins","$slots","$root","augmentInstantSearch","instantSearchOptions","cloneComponent","initialResults","search","instantsearch","findResultsState","instance","renderToString","Error","Promise","resolve","then","beforeCreate","$nuxt","created","this","start","started","helper","mainHelper","reject","searchOnlyWithDerivedHelpers","derivedHelpers","on","forEach","derivedHelper","e","walkIndex","indexWidget","visit","getWidgets","widget","$$type","mainIndex","getResults","getIndexId","state","keys","_state","reduce","acc","key","results","_rawResults","hydrate","getState","__forceRender","parent","localHelper","getHelper","render","scopedResults","getScopedResults","templatesConfig","createURL","instantSearchInstance","searchMetadata","isSearchStalled","_initialResults","warn","createServerRootMixin","$cloneComponent","provide","$_ais_ssrInstantSearchInstance","data"],"mappings":"+HA+BA,SAASA,EAAsBC,EAAmBC,kBAAkB,kCAAP,QAQvDC,EAPEC,EAAU,CACdC,oBAAgBC,EAChBC,WAAOD,EACPE,WAAOF,EACPG,KAAM,iCAiBNL,EAAQM,OAAST,EAAkBU,QACnCP,EAAQQ,MAAQX,EAAkBY,QASlCV,EAAM,IAPWF,EAAkBa,OAC/Bb,EAAkBa,OAAOC,iBAAiBC,KAAKC,OAAOb,GACtDc,EAAKC,UACHf,EAAQK,KACRW,OAAOC,OAAO,GAAIpB,EAAkBqB,SAAUlB,KAGjC,CACjBmB,UAAWtB,EAAkBqB,SAASC,UACtCC,OAAQ,UAAIA,MAKZC,OAASxB,EAAkBwB,OAC/BtB,EAAIuB,MAAQzB,EAAkByB,MAE5BvB,EAAImB,SAASjB,eAAiB,GAGzBF,EAGT,SAASwB,EAAqBC,EAAsBC,OAG9CC,EAFEC,EAASC,EAAcJ,UAW7BG,EAAOE,iBAAmB,SAAS/B,OAO7BC,EACA+B,uCAPCC,QACG,IAAIC,MACR,4GAOGC,QAAQC,UACZC,gBACCpC,EAAM0B,EAAeV,EAAW,CAC9BK,OAAQ,CACN,CACEgB,wBACMrB,EAAUsB,aAGPA,MAAQtB,EAAUsB,QAG3BC,oBACER,EAAWS,KAAKX,eAEPY,QAGTV,EAASW,SAAU,SAM5BN,uBAAWJ,EAAehC,KAC1BoC,uBAhH+BO,EAgHSZ,EAASa,WA/G/C,IAAIV,iBAASC,EAASU,GAC3BF,EAAOG,+BAGPH,EAAOI,eAAe,GAAGC,GAAG,oBAC1Bb,MAGFQ,EAAOI,eAAeE,iBAAQC,UAC5BA,EAAcF,GAAG,iBAASG,GACxBN,EAAOM,SAXf,IAAsCR,IAiH/BP,uBACCT,EAAiB,GA5HzB,SAASyB,EAAUC,EAAaC,UAC9BA,EAAMD,GAECA,EAAYE,aAAaN,iBAAQO,GAChB,cAAlBA,EAAOC,SACXH,EAAME,GACNJ,EAAUI,EAAQF,MAuHdF,CAAUrB,EAAS2B,mBAAWF,SACIA,EAAOG,wCAEvChC,EAAe6B,EAAOI,cAAgB,CAEpCC,MAAO5C,OAAO6C,KAAKC,GAAQC,gBAAQC,EAAKC,UAEtCD,EAAIC,GAAOH,EAAOG,GACXD,GACN,IACHE,QAASC,KAIbxC,EAAOyC,QAAQ1C,GACRC,EAAO0C,cAOpB1C,EAAO0C,SAAW,eACX3C,QACG,IAAIM,MAAM,0DAEXN,GAWTC,EAAO2C,cAAgB,SAASf,EAAQgB,OAChCL,EAAUK,EAAOb,gBAIP,OAAZQ,OAIEN,EAAQM,EAAQJ,OAEhBU,EAAcD,EAAOE,YAG3BD,EAAYZ,MAAQA,EAEpBL,EAAOmB,OAAO,CACZhC,OAAQ8B,UACRN,EACAS,cAAeJ,EAAOK,0BACtBL,QACAX,EACAiB,gBAAiB,GACjBC,UAAWP,EAAOO,UAClBC,sBAAuBpD,EACvBqD,eAAgB,CACdC,iBAAiB,OAUvBtD,EAAOyC,QAAU,SAASF,GACnBA,GAOLvC,EAAOuD,gBAAkBhB,EAEzBvC,EAAOa,QACPb,EAAOc,SAAU,GATf0C,EACE,0EAUCxD,EAGF,SAASyD,EAAsB5D,kBAAuB,2CACjC5B,OAEpB+B,EAASJ,EAAqBC,EAAsB6D,SAIxC,CAChBC,yBACS,CACLC,+BAAgChD,KAAKX,gBAGzC4D,sBACS,CAGL5D,cAAeD"}
1
+ {"version":3,"file":"createServerRootMixin.js","sources":["../../../../src/util/createServerRootMixin.js"],"sourcesContent":["import instantsearch from 'instantsearch.js/es';\nimport { isVue3, isVue2, Vue2, createSSRApp } from './vue-compat';\nimport { warn } from './warn';\n\nfunction walkIndex(indexWidget, visit) {\n visit(indexWidget);\n\n return indexWidget.getWidgets().forEach(widget => {\n if (widget.$$type !== 'ais.index') return;\n visit(widget);\n walkIndex(widget, visit);\n });\n}\n\nfunction searchOnlyWithDerivedHelpers(helper) {\n return new Promise((resolve, reject) => {\n helper.searchOnlyWithDerivedHelpers();\n\n // we assume all derived helpers resolve at least in the same tick\n helper.derivedHelpers[0].on('result', () => {\n resolve();\n });\n\n helper.derivedHelpers.forEach(derivedHelper =>\n derivedHelper.on('error', e => {\n reject(e);\n })\n );\n });\n}\n\nfunction defaultCloneComponent(componentInstance, { mixins = [] } = {}) {\n const options = {\n serverPrefetch: undefined,\n fetch: undefined,\n _base: undefined,\n name: 'ais-ssr-root-component',\n };\n\n let app;\n\n if (isVue3) {\n const appOptions = Object.assign({}, componentInstance.$options, options);\n appOptions.mixins = [...mixins, ...(appOptions.mixins || [])];\n app = createSSRApp(appOptions);\n if (componentInstance.$router) {\n app.use(componentInstance.$router);\n }\n if (componentInstance.$store) {\n app.use(componentInstance.$store);\n }\n } else {\n // copy over global Vue APIs\n options.router = componentInstance.$router;\n options.store = componentInstance.$store;\n\n const Extended = componentInstance.$vnode\n ? componentInstance.$vnode.componentOptions.Ctor.extend(options)\n : Vue2.component(\n options.name,\n Object.assign({}, componentInstance.$options, options)\n );\n\n app = new Extended({\n propsData: componentInstance.$options.propsData,\n mixins: [...mixins],\n });\n }\n\n // https://stackoverflow.com/a/48195006/3185307\n app.$slots = componentInstance.$slots;\n app.$root = componentInstance.$root;\n if (isVue2) {\n app.$options.serverPrefetch = [];\n }\n\n return app;\n}\n\nfunction augmentInstantSearch(instantSearchOptions, cloneComponent) {\n const search = instantsearch(instantSearchOptions);\n\n let initialResults;\n\n /**\n * main API for SSR, called in serverPrefetch of a root component which contains instantsearch\n * @param {Object} props the object including `component` and `renderToString`\n * @param {Object} props.component the calling component's `this`\n * @param {Function} props.renderToString the function to render componentInstance to string\n * @returns {Promise} result of the search, to save for .hydrate\n */\n search.findResultsState = function({ component, renderToString }) {\n if (!renderToString) {\n throw new Error(\n 'findResultsState requires `renderToString: (component) => Promise<string>` in the first argument.'\n );\n }\n\n let app;\n let instance;\n\n return Promise.resolve()\n .then(() => {\n app = cloneComponent(component, {\n mixins: [\n {\n beforeCreate() {\n const descriptor = Object.getOwnPropertyDescriptor(\n component,\n '$nuxt'\n );\n\n const isWritable = descriptor\n ? descriptor.writable || descriptor.set\n : false;\n\n if (component.$nuxt && isWritable) {\n // In case of Nuxt (3), we ensure the context is shared between\n // the real and cloned component\n this.$nuxt = component.$nuxt;\n }\n },\n created() {\n instance = this.instantsearch;\n\n instance.start();\n // although we use start for initializing the main index,\n // we don't want to send search requests yet\n instance.started = false;\n },\n },\n ],\n });\n })\n .then(() => renderToString(app))\n .then(() => searchOnlyWithDerivedHelpers(instance.mainHelper))\n .then(() => {\n initialResults = {};\n walkIndex(instance.mainIndex, widget => {\n const { _state, _rawResults } = widget.getResults();\n\n initialResults[widget.getIndexId()] = {\n // copy just the values of SearchParameters, not the functions\n state: Object.keys(_state).reduce((acc, key) => {\n // eslint-disable-next-line no-param-reassign\n acc[key] = _state[key];\n return acc;\n }, {}),\n results: _rawResults,\n };\n });\n\n search.hydrate(initialResults);\n return search.getState();\n });\n };\n\n /**\n * @returns {Promise} result state to serialize and enter into .hydrate\n */\n search.getState = function() {\n if (!initialResults) {\n throw new Error('You need to wait for findResultsState to finish');\n }\n return initialResults;\n };\n\n /**\n * make sure correct data is available in each widget's state.\n * called in widget mixin with (this.widget, this)\n *\n * @param {object} widget The widget instance\n * @param {object} parent The local parent index\n * @returns {void}\n */\n search.__forceRender = function(widget, parent) {\n const results = parent.getResults();\n\n // this happens when a different InstantSearch gets rendered initially,\n // after the hydrate finished. There's thus no initial results available.\n if (results === null) {\n return;\n }\n\n const state = results._state;\n\n const localHelper = parent.getHelper();\n // helper gets created in init, but that means it doesn't get the injected\n // parameters, because those are from the lastResults\n localHelper.state = state;\n\n widget.render({\n helper: localHelper,\n results,\n scopedResults: parent.getScopedResults(),\n parent,\n state,\n templatesConfig: {},\n createURL: parent.createURL,\n instantSearchInstance: search,\n searchMetadata: {\n isSearchStalled: false,\n },\n });\n };\n\n /**\n * Called both in server\n * @param {object} results a map of indexId: SearchResults\n * @returns {void}\n */\n search.hydrate = function(results) {\n if (!results) {\n warn(\n 'The result of `findResultsState()` needs to be passed to `hydrate()`.'\n );\n return;\n }\n\n search._initialResults = results;\n\n search.start();\n search.started = false;\n };\n return search;\n}\n\nexport function createServerRootMixin(instantSearchOptions = {}) {\n const { $cloneComponent = defaultCloneComponent } = instantSearchOptions;\n\n const search = augmentInstantSearch(instantSearchOptions, $cloneComponent);\n\n // put this in the user's root Vue instance\n // we can then reuse that InstantSearch instance seamlessly from `ais-instant-search-ssr`\n const rootMixin = {\n provide() {\n return {\n $_ais_ssrInstantSearchInstance: this.instantsearch,\n };\n },\n data() {\n return {\n // this is in data, so that the real & cloned render do not share\n // the same instantsearch instance.\n instantsearch: search,\n };\n },\n };\n\n return rootMixin;\n}\n"],"names":["defaultCloneComponent","componentInstance","ref","app","options","serverPrefetch","undefined","fetch","_base","name","router","$router","store","$store","$vnode","componentOptions","Ctor","extend","Vue2","component","Object","assign","$options","propsData","mixins","$slots","$root","augmentInstantSearch","instantSearchOptions","cloneComponent","initialResults","search","instantsearch","findResultsState","instance","renderToString","Error","Promise","resolve","then","beforeCreate","descriptor","getOwnPropertyDescriptor","isWritable","writable","set","$nuxt","created","this","start","started","helper","mainHelper","reject","searchOnlyWithDerivedHelpers","derivedHelpers","on","forEach","derivedHelper","e","walkIndex","indexWidget","visit","getWidgets","widget","$$type","mainIndex","getResults","getIndexId","state","keys","_state","reduce","acc","key","results","_rawResults","hydrate","getState","__forceRender","parent","localHelper","getHelper","render","scopedResults","getScopedResults","templatesConfig","createURL","instantSearchInstance","searchMetadata","isSearchStalled","_initialResults","warn","createServerRootMixin","$cloneComponent","provide","$_ais_ssrInstantSearchInstance","data"],"mappings":"+HA+BA,SAASA,EAAsBC,EAAmBC,kBAAkB,kCAAP,QAQvDC,EAPEC,EAAU,CACdC,oBAAgBC,EAChBC,WAAOD,EACPE,WAAOF,EACPG,KAAM,iCAiBNL,EAAQM,OAAST,EAAkBU,QACnCP,EAAQQ,MAAQX,EAAkBY,QASlCV,EAAM,IAPWF,EAAkBa,OAC/Bb,EAAkBa,OAAOC,iBAAiBC,KAAKC,OAAOb,GACtDc,EAAKC,UACHf,EAAQK,KACRW,OAAOC,OAAO,GAAIpB,EAAkBqB,SAAUlB,KAGjC,CACjBmB,UAAWtB,EAAkBqB,SAASC,UACtCC,OAAQ,UAAIA,MAKZC,OAASxB,EAAkBwB,OAC/BtB,EAAIuB,MAAQzB,EAAkByB,MAE5BvB,EAAImB,SAASjB,eAAiB,GAGzBF,EAGT,SAASwB,EAAqBC,EAAsBC,OAG9CC,EAFEC,EAASC,EAAcJ,UAW7BG,EAAOE,iBAAmB,SAAS/B,OAO7BC,EACA+B,uCAPCC,QACG,IAAIC,MACR,4GAOGC,QAAQC,UACZC,gBACCpC,EAAM0B,EAAeV,EAAW,CAC9BK,OAAQ,CACN,CACEgB,4BACQC,EAAarB,OAAOsB,yBACxBvB,EACA,SAGIwB,IAAaF,IACfA,EAAWG,UAAYH,EAAWI,KAGlC1B,EAAU2B,OAASH,SAGhBG,MAAQ3B,EAAU2B,QAG3BC,oBACEb,EAAWc,KAAKhB,eAEPiB,QAGTf,EAASgB,SAAU,SAM5BX,uBAAWJ,EAAehC,KAC1BoC,uBAzH+BY,EAyHSjB,EAASkB,WAxH/C,IAAIf,iBAASC,EAASe,GAC3BF,EAAOG,+BAGPH,EAAOI,eAAe,GAAGC,GAAG,oBAC1BlB,MAGFa,EAAOI,eAAeE,iBAAQC,UAC5BA,EAAcF,GAAG,iBAASG,GACxBN,EAAOM,SAXf,IAAsCR,IA0H/BZ,uBACCT,EAAiB,GArIzB,SAAS8B,EAAUC,EAAaC,UAC9BA,EAAMD,GAECA,EAAYE,aAAaN,iBAAQO,GAChB,cAAlBA,EAAOC,SACXH,EAAME,GACNJ,EAAUI,EAAQF,MAgIdF,CAAU1B,EAASgC,mBAAWF,SACIA,EAAOG,wCAEvCrC,EAAekC,EAAOI,cAAgB,CAEpCC,MAAOjD,OAAOkD,KAAKC,GAAQC,gBAAQC,EAAKC,UAEtCD,EAAIC,GAAOH,EAAOG,GACXD,GACN,IACHE,QAASC,KAIb7C,EAAO8C,QAAQ/C,GACRC,EAAO+C,cAOpB/C,EAAO+C,SAAW,eACXhD,QACG,IAAIM,MAAM,0DAEXN,GAWTC,EAAOgD,cAAgB,SAASf,EAAQgB,OAChCL,EAAUK,EAAOb,gBAIP,OAAZQ,OAIEN,EAAQM,EAAQJ,OAEhBU,EAAcD,EAAOE,YAG3BD,EAAYZ,MAAQA,EAEpBL,EAAOmB,OAAO,CACZhC,OAAQ8B,UACRN,EACAS,cAAeJ,EAAOK,0BACtBL,QACAX,EACAiB,gBAAiB,GACjBC,UAAWP,EAAOO,UAClBC,sBAAuBzD,EACvB0D,eAAgB,CACdC,iBAAiB,OAUvB3D,EAAO8C,QAAU,SAASF,GACnBA,GAOL5C,EAAO4D,gBAAkBhB,EAEzB5C,EAAOkB,QACPlB,EAAOmB,SAAU,GATf0C,EACE,0EAUC7D,EAGF,SAAS8D,EAAsBjE,kBAAuB,2CACjC5B,OAEpB+B,EAASJ,EAAqBC,EAAsBkE,SAIxC,CAChBC,yBACS,CACLC,+BAAgChD,KAAKhB,gBAGzCiE,sBACS,CAGLjE,cAAeD"}