vue-instantsearch 4.4.0 → 4.5.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 (149) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/package.json +4 -4
  3. package/src/components/Breadcrumb.vue +1 -3
  4. package/src/components/ClearRefinements.vue +1 -3
  5. package/src/components/CurrentRefinements.vue +1 -4
  6. package/src/components/HierarchicalMenu.vue +3 -11
  7. package/src/components/HitsPerPage.vue +2 -3
  8. package/src/components/Menu.vue +1 -3
  9. package/src/components/MenuSelect.vue +1 -3
  10. package/src/components/NumericMenu.vue +3 -8
  11. package/src/components/Pagination.vue +1 -3
  12. package/src/components/RangeInput.vue +3 -11
  13. package/src/components/RatingMenu.vue +2 -3
  14. package/src/components/RefinementList.vue +1 -3
  15. package/src/components/SearchBox.vue +18 -0
  16. package/src/components/SearchInput.vue +3 -0
  17. package/src/components/SortBy.vue +2 -3
  18. package/src/components/ToggleRefinement.vue +3 -10
  19. package/src/components/VoiceSearch.vue +10 -0
  20. package/src/components/__tests__/Breadcrumb.js +0 -25
  21. package/src/components/__tests__/ClearRefinements.js +0 -23
  22. package/src/components/__tests__/CurrentRefinements.js +0 -17
  23. package/src/components/__tests__/HierarchicalMenu.js +3 -19
  24. package/src/components/__tests__/HitsPerPage.js +0 -26
  25. package/src/components/__tests__/Menu.js +0 -22
  26. package/src/components/__tests__/MenuSelect.js +0 -23
  27. package/src/components/__tests__/NumericMenu.js +3 -25
  28. package/src/components/__tests__/Pagination.js +0 -21
  29. package/src/components/__tests__/RangeInput.js +1 -34
  30. package/src/components/__tests__/RatingMenu.js +0 -23
  31. package/src/components/__tests__/RefinementList.js +0 -23
  32. package/src/components/__tests__/SearchBox.js +15 -0
  33. package/src/components/__tests__/SortBy.js +1 -23
  34. package/src/components/__tests__/ToggleRefinement.js +4 -33
  35. package/src/mixins/__mocks__/panel.js +1 -5
  36. package/src/mixins/__tests__/panel.test.js +18 -40
  37. package/src/mixins/panel.js +3 -1
  38. package/src/util/createServerRootMixin.js +10 -1
  39. package/vue2/cjs/index.js +1 -1
  40. package/vue2/cjs/index.js.map +1 -1
  41. package/vue2/es/package.json.js +1 -1
  42. package/vue2/es/src/components/Breadcrumb.vue.js +1 -1
  43. package/vue2/es/src/components/Breadcrumb.vue.js.map +1 -1
  44. package/vue2/es/src/components/ClearRefinements.vue.js +1 -1
  45. package/vue2/es/src/components/ClearRefinements.vue.js.map +1 -1
  46. package/vue2/es/src/components/CurrentRefinements.vue.js +1 -1
  47. package/vue2/es/src/components/CurrentRefinements.vue.js.map +1 -1
  48. package/vue2/es/src/components/HierarchicalMenu.vue.js +1 -1
  49. package/vue2/es/src/components/HierarchicalMenu.vue.js.map +1 -1
  50. package/vue2/es/src/components/HitsPerPage.vue.js +1 -1
  51. package/vue2/es/src/components/HitsPerPage.vue.js.map +1 -1
  52. package/vue2/es/src/components/Menu.vue.js +1 -1
  53. package/vue2/es/src/components/Menu.vue.js.map +1 -1
  54. package/vue2/es/src/components/MenuSelect.vue.js +1 -1
  55. package/vue2/es/src/components/MenuSelect.vue.js.map +1 -1
  56. package/vue2/es/src/components/NumericMenu.vue.js +1 -1
  57. package/vue2/es/src/components/NumericMenu.vue.js.map +1 -1
  58. package/vue2/es/src/components/Pagination.vue.js +1 -1
  59. package/vue2/es/src/components/Pagination.vue.js.map +1 -1
  60. package/vue2/es/src/components/RangeInput.vue.js +1 -1
  61. package/vue2/es/src/components/RangeInput.vue.js.map +1 -1
  62. package/vue2/es/src/components/RatingMenu.vue.js +1 -1
  63. package/vue2/es/src/components/RatingMenu.vue.js.map +1 -1
  64. package/vue2/es/src/components/RefinementList.vue.js +1 -1
  65. package/vue2/es/src/components/RefinementList.vue.js.map +1 -1
  66. package/vue2/es/src/components/SearchBox.vue.js +1 -1
  67. package/vue2/es/src/components/SearchBox.vue.js.map +1 -1
  68. package/vue2/es/src/components/SearchInput.vue.js +1 -1
  69. package/vue2/es/src/components/SearchInput.vue.js.map +1 -1
  70. package/vue2/es/src/components/SortBy.vue.js +1 -1
  71. package/vue2/es/src/components/SortBy.vue.js.map +1 -1
  72. package/vue2/es/src/components/ToggleRefinement.vue.js +1 -1
  73. package/vue2/es/src/components/ToggleRefinement.vue.js.map +1 -1
  74. package/vue2/es/src/components/VoiceSearch.vue.js +1 -1
  75. package/vue2/es/src/components/VoiceSearch.vue.js.map +1 -1
  76. package/vue2/es/src/mixins/panel.js +1 -1
  77. package/vue2/es/src/mixins/panel.js.map +1 -1
  78. package/vue2/es/src/util/createServerRootMixin.js +1 -1
  79. package/vue2/es/src/util/createServerRootMixin.js.map +1 -1
  80. package/vue2/umd/index.js +1 -1
  81. package/vue2/umd/index.js.map +1 -1
  82. package/vue3/cjs/index.js +1 -1
  83. package/vue3/cjs/index.js.map +1 -1
  84. package/vue3/es/package.json.js +1 -1
  85. package/vue3/es/src/components/Breadcrumb.vue_vue&type=script&lang.js +1 -1
  86. package/vue3/es/src/components/Breadcrumb.vue_vue&type=script&lang.js.map +1 -1
  87. package/vue3/es/src/components/Breadcrumb.vue_vue&type=template&id=6f46de9a&lang.js.map +1 -1
  88. package/vue3/es/src/components/ClearRefinements.vue_vue&type=script&lang.js +1 -1
  89. package/vue3/es/src/components/ClearRefinements.vue_vue&type=script&lang.js.map +1 -1
  90. package/vue3/es/src/components/ClearRefinements.vue_vue&type=template&id=410a3aaa&lang.js.map +1 -1
  91. package/vue3/es/src/components/CurrentRefinements.vue_vue&type=script&lang.js +1 -1
  92. package/vue3/es/src/components/CurrentRefinements.vue_vue&type=script&lang.js.map +1 -1
  93. package/vue3/es/src/components/CurrentRefinements.vue_vue&type=template&id=4f1917ff&lang.js.map +1 -1
  94. package/vue3/es/src/components/HierarchicalMenu.vue_vue&type=script&lang.js +1 -1
  95. package/vue3/es/src/components/HierarchicalMenu.vue_vue&type=script&lang.js.map +1 -1
  96. package/vue3/es/src/components/HierarchicalMenu.vue_vue&type=template&id=4361a0b8&lang.js +1 -1
  97. package/vue3/es/src/components/HierarchicalMenu.vue_vue&type=template&id=4361a0b8&lang.js.map +1 -1
  98. package/vue3/es/src/components/HitsPerPage.vue_vue&type=script&lang.js +1 -1
  99. package/vue3/es/src/components/HitsPerPage.vue_vue&type=script&lang.js.map +1 -1
  100. package/vue3/es/src/components/HitsPerPage.vue_vue&type=template&id=74f3ac28&lang.js +1 -1
  101. package/vue3/es/src/components/HitsPerPage.vue_vue&type=template&id=74f3ac28&lang.js.map +1 -1
  102. package/vue3/es/src/components/Menu.vue_vue&type=script&lang.js +1 -1
  103. package/vue3/es/src/components/Menu.vue_vue&type=script&lang.js.map +1 -1
  104. package/vue3/es/src/components/Menu.vue_vue&type=template&id=9bcc0be2&lang.js.map +1 -1
  105. package/vue3/es/src/components/MenuSelect.vue_vue&type=script&lang.js +1 -1
  106. package/vue3/es/src/components/MenuSelect.vue_vue&type=script&lang.js.map +1 -1
  107. package/vue3/es/src/components/MenuSelect.vue_vue&type=template&id=694477eb&lang.js.map +1 -1
  108. package/vue3/es/src/components/NumericMenu.vue_vue&type=script&lang.js +1 -1
  109. package/vue3/es/src/components/NumericMenu.vue_vue&type=script&lang.js.map +1 -1
  110. package/vue3/es/src/components/NumericMenu.vue_vue&type=template&id=160fae0c&lang.js +1 -1
  111. package/vue3/es/src/components/NumericMenu.vue_vue&type=template&id=160fae0c&lang.js.map +1 -1
  112. package/vue3/es/src/components/Pagination.vue_vue&type=script&lang.js +1 -1
  113. package/vue3/es/src/components/Pagination.vue_vue&type=script&lang.js.map +1 -1
  114. package/vue3/es/src/components/Pagination.vue_vue&type=template&id=849a166c&lang.js.map +1 -1
  115. package/vue3/es/src/components/RangeInput.vue_vue&type=script&lang.js +1 -1
  116. package/vue3/es/src/components/RangeInput.vue_vue&type=script&lang.js.map +1 -1
  117. package/vue3/es/src/components/RangeInput.vue_vue&type=template&id=1e17783d&lang.js +1 -1
  118. package/vue3/es/src/components/RangeInput.vue_vue&type=template&id=1e17783d&lang.js.map +1 -1
  119. package/vue3/es/src/components/RatingMenu.vue_vue&type=script&lang.js +1 -1
  120. package/vue3/es/src/components/RatingMenu.vue_vue&type=script&lang.js.map +1 -1
  121. package/vue3/es/src/components/RatingMenu.vue_vue&type=template&id=9254de68&lang.js +1 -1
  122. package/vue3/es/src/components/RatingMenu.vue_vue&type=template&id=9254de68&lang.js.map +1 -1
  123. package/vue3/es/src/components/RefinementList.vue_vue&type=script&lang.js +1 -1
  124. package/vue3/es/src/components/RefinementList.vue_vue&type=script&lang.js.map +1 -1
  125. package/vue3/es/src/components/RefinementList.vue_vue&type=template&id=28927239&lang.js.map +1 -1
  126. package/vue3/es/src/components/SearchBox.vue_vue&type=script&lang.js +1 -1
  127. package/vue3/es/src/components/SearchBox.vue_vue&type=script&lang.js.map +1 -1
  128. package/vue3/es/src/components/SearchBox.vue_vue&type=template&id=27029d83&lang.js +1 -1
  129. package/vue3/es/src/components/SearchBox.vue_vue&type=template&id=27029d83&lang.js.map +1 -1
  130. package/vue3/es/src/components/SearchInput.vue_vue&type=script&lang.js +1 -1
  131. package/vue3/es/src/components/SearchInput.vue_vue&type=script&lang.js.map +1 -1
  132. package/vue3/es/src/components/SearchInput.vue_vue&type=template&id=2eed8ffc&lang.js.map +1 -1
  133. package/vue3/es/src/components/SortBy.vue_vue&type=script&lang.js +1 -1
  134. package/vue3/es/src/components/SortBy.vue_vue&type=script&lang.js.map +1 -1
  135. package/vue3/es/src/components/SortBy.vue_vue&type=template&id=b69b3b76&lang.js +1 -1
  136. package/vue3/es/src/components/SortBy.vue_vue&type=template&id=b69b3b76&lang.js.map +1 -1
  137. package/vue3/es/src/components/ToggleRefinement.vue_vue&type=script&lang.js +1 -1
  138. package/vue3/es/src/components/ToggleRefinement.vue_vue&type=script&lang.js.map +1 -1
  139. package/vue3/es/src/components/ToggleRefinement.vue_vue&type=template&id=14e4586f&lang.js +1 -1
  140. package/vue3/es/src/components/ToggleRefinement.vue_vue&type=template&id=14e4586f&lang.js.map +1 -1
  141. package/vue3/es/src/components/VoiceSearch.vue_vue&type=script&lang.js +1 -1
  142. package/vue3/es/src/components/VoiceSearch.vue_vue&type=script&lang.js.map +1 -1
  143. package/vue3/es/src/components/VoiceSearch.vue_vue&type=template&id=24b0f67a&lang.js.map +1 -1
  144. package/vue3/es/src/mixins/panel.js +1 -1
  145. package/vue3/es/src/mixins/panel.js.map +1 -1
  146. package/vue3/es/src/util/createServerRootMixin.js +1 -1
  147. package/vue3/es/src/util/createServerRootMixin.js.map +1 -1
  148. package/vue3/umd/index.js +1 -1
  149. package/vue3/umd/index.js.map +1 -1
@@ -1,2 +1,2 @@
1
- import{createSuitMixin as e}from"../mixins/suit.js";import{isVue2 as t,isVue3 as i}from"../util/vue-compat/index-vue2.js";import{createWidgetMixin as n}from"../mixins/widget.js";import{connectSearchBox as o}from"instantsearch.js/es/connectors/index.js";import s from"./SearchInput.vue.js";export default{render:function(){var e=this,t=e.$createElement,i=e._self._c||t;return e.state?i("div",{class:e.suit()},[e._t("default",[i("search-input",{attrs:{placeholder:e.placeholder,autofocus:e.autofocus,"show-loading-indicator":e.showLoadingIndicator,"should-show-loading-indicator":e.state.isSearchStalled,"submit-title":e.submitTitle,"reset-title":e.resetTitle,"class-names":e.classNames},on:{focus:function(t){return e.$emit("focus",t)},blur:function(t){return e.$emit("blur",t)},reset:function(t){return e.$emit("reset")}},scopedSlots:e._u([e.isVue3?{key:"loading-indicator",fn:function(t){return[e._t("loading-indicator")]}}:null,e.isVue3?{key:"submit-icon",fn:function(t){return[e._t("submit-icon")]}}:null,e.isVue3?{key:"reset-icon",fn:function(t){return[e._t("reset-icon")]}}:null],!0),model:{value:e.currentRefinement,callback:function(t){e.currentRefinement=t},expression:"currentRefinement"}},[e._v(" "),e.isVue2?e._t("loading-indicator",null,{slot:"loading-indicator"}):e._e(),e._v(" "),e._v(" "),e.isVue2?e._t("submit-icon",null,{slot:"submit-icon"}):e._e(),e._v(" "),e._v(" "),e.isVue2?e._t("reset-icon",null,{slot:"reset-icon"}):e._e()],2)],{currentRefinement:e.currentRefinement,isSearchStalled:e.state.isSearchStalled,refine:e.state.refine})],2):e._e()},staticRenderFns:[],name:"AisSearchBox",mixins:[n({connector:o},{$$widgetType:"ais.searchBox"}),e({name:"SearchBox"})],components:{SearchInput:s},props:{placeholder:{type:String,default:"Search here…"},autofocus:{type:Boolean,default:!1},showLoadingIndicator:{type:Boolean,default:!1},submitTitle:{type:String,default:"Search"},resetTitle:{type:String,default:"Clear"},value:{type:String,default:void 0},modelValue:{type:String,default:void 0}},data:function(){return{localValue:"",isVue2:t,isVue3:i}},computed:{isControlled:function(){return void 0!==this.value||void 0!==this.modelValue},model:function(){return this.value||this.modelValue},currentRefinement:{get:function(){return this.isControlled&&this.model!==this.localValue&&(this.localValue=this.model,this.$emit("input",this.model),this.$emit("update:modelValue",this.model),this.state.refine(this.model)),this.model||this.state.query||""},set:function(e){this.localValue=e,this.state.refine(e),this.isControlled&&(this.$emit("input",e),this.$emit("update:modelValue",e))}}}};
1
+ import{createSuitMixin as e}from"../mixins/suit.js";import{isVue2 as t,isVue3 as i}from"../util/vue-compat/index-vue2.js";import{createWidgetMixin as n}from"../mixins/widget.js";import{connectSearchBox as o}from"instantsearch.js/es/connectors/index.js";import s from"./SearchInput.vue.js";export default{render:function(){var e=this,t=e.$createElement,i=e._self._c||t;return e.state?i("div",{class:e.suit()},[e._t("default",[i("search-input",{ref:"searchInput",attrs:{placeholder:e.placeholder,autofocus:e.autofocus,"show-loading-indicator":e.showLoadingIndicator,"should-show-loading-indicator":e.state.isSearchStalled,"submit-title":e.submitTitle,"reset-title":e.resetTitle,"class-names":e.classNames},on:{focus:function(t){return e.$emit("focus",t)},blur:function(t){return e.$emit("blur",t)},reset:function(t){return e.$emit("reset")}},scopedSlots:e._u([e.isVue3?{key:"loading-indicator",fn:function(t){return[e._t("loading-indicator")]}}:null,e.isVue3?{key:"submit-icon",fn:function(t){return[e._t("submit-icon")]}}:null,e.isVue3?{key:"reset-icon",fn:function(t){return[e._t("reset-icon")]}}:null],!0),model:{value:e.currentRefinement,callback:function(t){e.currentRefinement=t},expression:"currentRefinement"}},[e._v(" "),e.isVue2?e._t("loading-indicator",null,{slot:"loading-indicator"}):e._e(),e._v(" "),e._v(" "),e.isVue2?e._t("submit-icon",null,{slot:"submit-icon"}):e._e(),e._v(" "),e._v(" "),e.isVue2?e._t("reset-icon",null,{slot:"reset-icon"}):e._e()],2)],{currentRefinement:e.currentRefinement,isSearchStalled:e.state.isSearchStalled,refine:e.state.refine})],2):e._e()},staticRenderFns:[],name:"AisSearchBox",mixins:[n({connector:o},{$$widgetType:"ais.searchBox"}),e({name:"SearchBox"})],components:{SearchInput:s},props:{placeholder:{type:String,default:"Search here…"},autofocus:{type:Boolean,default:!1},showLoadingIndicator:{type:Boolean,default:!1},submitTitle:{type:String,default:"Search"},resetTitle:{type:String,default:"Clear"},value:{type:String,default:void 0},modelValue:{type:String,default:void 0},queryHook:{type:Function,default:void 0}},data:function(){return{localValue:"",isVue2:t,isVue3:i}},computed:{widgetParams:function(){return{queryHook:this.queryHook}},isControlled:function(){return void 0!==this.value||void 0!==this.modelValue},model:function(){return this.value||this.modelValue},currentRefinement:{get:function(){this.isControlled&&this.model!==this.localValue&&(this.localValue=this.model,this.$emit("input",this.model),this.$emit("update:modelValue",this.model),this.state.refine(this.model));var e=this.$refs.searchInput;return e&&e.isFocused()?this.localValue:this.model||this.state.query||""},set:function(e){this.localValue=e,this.state.refine(e),this.isControlled&&(this.$emit("input",e),this.$emit("update:modelValue",e))}}}};
2
2
  //# sourceMappingURL=SearchBox.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SearchBox.vue.js","sources":["../../../../src/components/SearchBox.vue"],"sourcesContent":["<template>\n <div\n v-if=\"state\"\n :class=\"suit()\"\n >\n <slot\n :current-refinement=\"currentRefinement\"\n :is-search-stalled=\"state.isSearchStalled\"\n :refine=\"state.refine\"\n >\n <search-input\n @focus=\"$emit('focus', $event)\"\n @blur=\"$emit('blur', $event)\"\n @reset=\"$emit('reset')\"\n :placeholder=\"placeholder\"\n :autofocus=\"autofocus\"\n :show-loading-indicator=\"showLoadingIndicator\"\n :should-show-loading-indicator=\"state.isSearchStalled\"\n :submit-title=\"submitTitle\"\n :reset-title=\"resetTitle\"\n :class-names=\"classNames\"\n v-model=\"currentRefinement\"\n >\n <template\n v-slot:loading-indicator\n v-if=\"isVue3\"\n >\n <slot\n name=\"loading-indicator\"\n />\n </template>\n <slot\n v-if=\"isVue2\"\n name=\"loading-indicator\"\n slot=\"loading-indicator\"\n />\n\n <template\n v-slot:submit-icon\n v-if=\"isVue3\"\n >\n <slot\n name=\"submit-icon\"\n />\n </template>\n <slot\n v-if=\"isVue2\"\n name=\"submit-icon\"\n slot=\"submit-icon\"\n />\n\n <template\n v-slot:reset-icon\n v-if=\"isVue3\"\n >\n <slot\n name=\"reset-icon\"\n />\n </template>\n <slot\n v-if=\"isVue2\"\n name=\"reset-icon\"\n slot=\"reset-icon\"\n />\n </search-input>\n </slot>\n </div>\n</template>\n\n<script>\nimport { connectSearchBox } from 'instantsearch.js/es/connectors';\nimport { createSuitMixin } from '../mixins/suit';\nimport { createWidgetMixin } from '../mixins/widget';\nimport { isVue3, isVue2 } from '../util/vue-compat';\nimport SearchInput from './SearchInput.vue';\n\nexport default {\n name: 'AisSearchBox',\n mixins: [\n createWidgetMixin(\n {\n connector: connectSearchBox,\n },\n {\n $$widgetType: 'ais.searchBox',\n }\n ),\n createSuitMixin({ name: 'SearchBox' }),\n ],\n components: {\n SearchInput,\n },\n props: {\n placeholder: {\n type: String,\n default: 'Search here…',\n },\n autofocus: {\n type: Boolean,\n default: false,\n },\n showLoadingIndicator: {\n type: Boolean,\n default: false,\n },\n submitTitle: {\n type: String,\n default: 'Search',\n },\n resetTitle: {\n type: String,\n default: 'Clear',\n },\n value: {\n type: String,\n default: undefined,\n },\n modelValue: {\n type: String,\n default: undefined,\n },\n },\n data() {\n return {\n localValue: '',\n isVue2,\n isVue3,\n };\n },\n computed: {\n isControlled() {\n return (\n typeof this.value !== 'undefined' ||\n typeof this.modelValue !== 'undefined'\n );\n },\n model() {\n return this.value || this.modelValue;\n },\n currentRefinement: {\n get() {\n // if the input is controlled, but not up to date\n // this means it didn't search, and we should pretend it was `set`\n if (this.isControlled && this.model !== this.localValue) {\n // eslint-disable-next-line vue/no-side-effects-in-computed-properties\n this.localValue = this.model;\n this.$emit('input', this.model);\n this.$emit('update:modelValue', this.model);\n this.state.refine(this.model);\n }\n return this.model || this.state.query || '';\n },\n set(val) {\n this.localValue = val;\n this.state.refine(val);\n if (this.isControlled) {\n this.$emit('input', val);\n this.$emit('update:modelValue', val);\n }\n },\n },\n },\n};\n</script>\n"],"names":["render","name","mixins","createWidgetMixin","connector","connectSearchBox","$$widgetType","createSuitMixin","components","SearchInput","props","placeholder","type","String","default","autofocus","Boolean","showLoadingIndicator","submitTitle","resetTitle","value","undefined","modelValue","data","localValue","isVue2","isVue3","computed","isControlled","this","model","currentRefinement","get","$emit","state","refine","query","set","val"],"mappings":"+SA4Ee,CAACA,iwCACdC,KAAM,eACNC,OAAQ,CACNC,EACE,CACEC,UAAWC,GAEb,CACEC,aAAc,kBAGlBC,EAAgB,CAAEN,KAAM,eAE1BO,WAAY,aACVC,GAEFC,MAAO,CACLC,YAAa,CACXC,KAAMC,OACNC,QAAS,gBAEXC,UAAW,CACTH,KAAMI,QACNF,SAAS,GAEXG,qBAAsB,CACpBL,KAAMI,QACNF,SAAS,GAEXI,YAAa,CACXN,KAAMC,OACNC,QAAS,UAEXK,WAAY,CACVP,KAAMC,OACNC,QAAS,SAEXM,MAAO,CACLR,KAAMC,OACNC,aAASO,GAEXC,WAAY,CACVV,KAAMC,OACNC,aAASO,IAGbE,sBACS,CACLC,WAAY,UACZC,SACAC,IAGJC,SAAU,CACRC,oCAE0B,IAAfC,KAAKT,YACe,IAApBS,KAAKP,YAGhBQ,wBACSD,KAAKT,OAASS,KAAKP,YAE5BS,kBAAmB,CACjBC,sBAGMH,KAAKD,cAAgBC,KAAKC,QAAUD,KAAKL,kBAEtCA,WAAaK,KAAKC,WAClBG,MAAM,QAASJ,KAAKC,YACpBG,MAAM,oBAAqBJ,KAAKC,YAChCI,MAAMC,OAAON,KAAKC,QAElBD,KAAKC,OAASD,KAAKK,MAAME,OAAS,IAE3CC,aAAIC,QACGd,WAAac,OACbJ,MAAMC,OAAOG,GACdT,KAAKD,oBACFK,MAAM,QAASK,QACfL,MAAM,oBAAqBK"}
1
+ {"version":3,"file":"SearchBox.vue.js","sources":["../../../../src/components/SearchBox.vue"],"sourcesContent":["<template>\n <div\n v-if=\"state\"\n :class=\"suit()\"\n >\n <slot\n :current-refinement=\"currentRefinement\"\n :is-search-stalled=\"state.isSearchStalled\"\n :refine=\"state.refine\"\n >\n <search-input\n @focus=\"$emit('focus', $event)\"\n @blur=\"$emit('blur', $event)\"\n @reset=\"$emit('reset')\"\n :placeholder=\"placeholder\"\n :autofocus=\"autofocus\"\n :show-loading-indicator=\"showLoadingIndicator\"\n :should-show-loading-indicator=\"state.isSearchStalled\"\n :submit-title=\"submitTitle\"\n :reset-title=\"resetTitle\"\n :class-names=\"classNames\"\n v-model=\"currentRefinement\"\n ref=\"searchInput\"\n >\n <template\n v-slot:loading-indicator\n v-if=\"isVue3\"\n >\n <slot\n name=\"loading-indicator\"\n />\n </template>\n <slot\n v-if=\"isVue2\"\n name=\"loading-indicator\"\n slot=\"loading-indicator\"\n />\n\n <template\n v-slot:submit-icon\n v-if=\"isVue3\"\n >\n <slot\n name=\"submit-icon\"\n />\n </template>\n <slot\n v-if=\"isVue2\"\n name=\"submit-icon\"\n slot=\"submit-icon\"\n />\n\n <template\n v-slot:reset-icon\n v-if=\"isVue3\"\n >\n <slot\n name=\"reset-icon\"\n />\n </template>\n <slot\n v-if=\"isVue2\"\n name=\"reset-icon\"\n slot=\"reset-icon\"\n />\n </search-input>\n </slot>\n </div>\n</template>\n\n<script>\nimport { connectSearchBox } from 'instantsearch.js/es/connectors';\nimport { createSuitMixin } from '../mixins/suit';\nimport { createWidgetMixin } from '../mixins/widget';\nimport { isVue3, isVue2 } from '../util/vue-compat';\nimport SearchInput from './SearchInput.vue';\n\nexport default {\n name: 'AisSearchBox',\n mixins: [\n createWidgetMixin(\n {\n connector: connectSearchBox,\n },\n {\n $$widgetType: 'ais.searchBox',\n }\n ),\n createSuitMixin({ name: 'SearchBox' }),\n ],\n components: {\n SearchInput,\n },\n props: {\n placeholder: {\n type: String,\n default: 'Search here…',\n },\n autofocus: {\n type: Boolean,\n default: false,\n },\n showLoadingIndicator: {\n type: Boolean,\n default: false,\n },\n submitTitle: {\n type: String,\n default: 'Search',\n },\n resetTitle: {\n type: String,\n default: 'Clear',\n },\n value: {\n type: String,\n default: undefined,\n },\n modelValue: {\n type: String,\n default: undefined,\n },\n queryHook: {\n type: Function,\n default: undefined,\n },\n },\n data() {\n return {\n localValue: '',\n isVue2,\n isVue3,\n };\n },\n computed: {\n widgetParams() {\n return {\n queryHook: this.queryHook,\n };\n },\n isControlled() {\n return (\n typeof this.value !== 'undefined' ||\n typeof this.modelValue !== 'undefined'\n );\n },\n model() {\n return this.value || this.modelValue;\n },\n currentRefinement: {\n get() {\n // if the input is controlled, but not up to date\n // this means it didn't search, and we should pretend it was `set`\n if (this.isControlled && this.model !== this.localValue) {\n // eslint-disable-next-line vue/no-side-effects-in-computed-properties\n this.localValue = this.model;\n this.$emit('input', this.model);\n this.$emit('update:modelValue', this.model);\n this.state.refine(this.model);\n }\n\n // we return the local value if the input is focused to avoid\n // concurrent updates when typing\n const { searchInput } = this.$refs;\n if (searchInput && searchInput.isFocused()) {\n return this.localValue;\n }\n\n return this.model || this.state.query || '';\n },\n set(val) {\n this.localValue = val;\n this.state.refine(val);\n if (this.isControlled) {\n this.$emit('input', val);\n this.$emit('update:modelValue', val);\n }\n },\n },\n },\n};\n</script>\n"],"names":["render","name","mixins","createWidgetMixin","connector","connectSearchBox","$$widgetType","createSuitMixin","components","SearchInput","props","placeholder","type","String","default","autofocus","Boolean","showLoadingIndicator","submitTitle","resetTitle","value","undefined","modelValue","queryHook","Function","data","localValue","isVue2","isVue3","computed","widgetParams","this","isControlled","model","currentRefinement","get","$emit","state","refine","$refs","searchInput","isFocused","query","set","val"],"mappings":"+SA6Ee,CAACA,mxCACdC,KAAM,eACNC,OAAQ,CACNC,EACE,CACEC,UAAWC,GAEb,CACEC,aAAc,kBAGlBC,EAAgB,CAAEN,KAAM,eAE1BO,WAAY,aACVC,GAEFC,MAAO,CACLC,YAAa,CACXC,KAAMC,OACNC,QAAS,gBAEXC,UAAW,CACTH,KAAMI,QACNF,SAAS,GAEXG,qBAAsB,CACpBL,KAAMI,QACNF,SAAS,GAEXI,YAAa,CACXN,KAAMC,OACNC,QAAS,UAEXK,WAAY,CACVP,KAAMC,OACNC,QAAS,SAEXM,MAAO,CACLR,KAAMC,OACNC,aAASO,GAEXC,WAAY,CACVV,KAAMC,OACNC,aAASO,GAEXE,UAAW,CACTX,KAAMY,SACNV,aAASO,IAGbI,sBACS,CACLC,WAAY,UACZC,SACAC,IAGJC,SAAU,CACRC,8BACS,CACLP,UAAWQ,KAAKR,YAGpBS,oCAE0B,IAAfD,KAAKX,YACe,IAApBW,KAAKT,YAGhBW,wBACSF,KAAKX,OAASW,KAAKT,YAE5BY,kBAAmB,CACjBC,eAGMJ,KAAKC,cAAgBD,KAAKE,QAAUF,KAAKL,kBAEtCA,WAAaK,KAAKE,WAClBG,MAAM,QAASL,KAAKE,YACpBG,MAAM,oBAAqBL,KAAKE,YAChCI,MAAMC,OAAOP,KAAKE,cAKDF,KAAKQ,yBACzBC,GAAeA,EAAYC,YACtBV,KAAKL,WAGPK,KAAKE,OAASF,KAAKM,MAAMK,OAAS,IAE3CC,aAAIC,QACGlB,WAAakB,OACbP,MAAMC,OAAOM,GACdb,KAAKC,oBACFI,MAAM,QAASQ,QACfR,MAAM,oBAAqBQ"}
@@ -1,2 +1,2 @@
1
- import{createSuitMixin as t}from"../mixins/suit.js";export default{render:function(){var t=this,e=t.$createElement,o=t._self._c||e;return o("form",{class:t.suit("form"),attrs:{action:"",role:"search",novalidate:""},on:{submit:function(e){return e.preventDefault(),t.onFormSubmit(e)},reset:function(e){return e.preventDefault(),t.onFormReset(e)}}},[o("input",{ref:"input",class:t.suit("input"),attrs:{type:"search",autocorrect:"off",autocapitalize:"off",autocomplete:"off",spellcheck:"false",required:"",maxlength:"512","aria-label":"Search",placeholder:t.placeholder,autofocus:t.autofocus},domProps:{value:t.value||t.modelValue},on:{focus:function(e){return t.$emit("focus",e)},blur:function(e){return t.$emit("blur",e)},input:function(e){t.$emit("input",e.target.value),t.$emit("update:modelValue",e.target.value)}}}),t._v(" "),o("button",{class:t.suit("submit"),attrs:{type:"submit",title:t.submitTitle,hidden:t.showLoadingIndicator&&t.shouldShowLoadingIndicator}},[t._t("submit-icon",[o("svg",{class:t.suit("submitIcon"),attrs:{role:"img",xmlns:"http://www.w3.org/2000/svg",width:"10",height:"10",viewBox:"0 0 40 40"}},[o("path",{attrs:{d:"M26.804 29.01c-2.832 2.34-6.465 3.746-10.426 3.746C7.333 32.756 0 25.424 0 16.378 0 7.333 7.333 0 16.378 0c9.046 0 16.378 7.333 16.378 16.378 0 3.96-1.406 7.594-3.746 10.426l10.534 10.534c.607.607.61 1.59-.004 2.202-.61.61-1.597.61-2.202.004L26.804 29.01zm-10.426.627c7.323 0 13.26-5.936 13.26-13.26 0-7.32-5.937-13.257-13.26-13.257C9.056 3.12 3.12 9.056 3.12 16.378c0 7.323 5.936 13.26 13.258 13.26z",fillRule:"evenodd"}})])])],2),t._v(" "),o("button",{class:t.suit("reset"),attrs:{type:"reset",title:t.resetTitle,hidden:!t.value&&!t.modelValue||t.showLoadingIndicator&&t.shouldShowLoadingIndicator}},[t._t("reset-icon",[o("svg",{class:t.suit("resetIcon"),attrs:{role:"img",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 20 20"}},[o("path",{attrs:{d:"M8.114 10L.944 2.83 0 1.885 1.886 0l.943.943L10 8.113l7.17-7.17.944-.943L20 1.886l-.943.943-7.17 7.17 7.17 7.17.943.944L18.114 20l-.943-.943-7.17-7.17-7.17 7.17-.944.943L0 18.114l.943-.943L8.113 10z",fillRule:"evenodd"}})])])],2),t._v(" "),t.showLoadingIndicator?o("span",{class:t.suit("loadingIndicator"),attrs:{hidden:!t.shouldShowLoadingIndicator}},[t._t("loading-indicator",[o("svg",{class:t.suit("loadingIcon"),attrs:{role:"img","aria-label":"Results are loading",width:"16",height:"16",xmlns:"http://www.w3.org/2000/svg",stroke:"#444",viewBox:"0 0 38 38"}},[o("g",{attrs:{fill:"none","fill-rule":"evenodd"}},[o("g",{attrs:{transform:"translate(1 1)","stroke-width":"2"}},[o("circle",{attrs:{"stroke-opacity":".5",cx:"18",cy:"18",r:"18"}}),t._v(" "),o("path",{attrs:{d:"M36 18c0-9.94-8.06-18-18-18"}},[o("animateTransform",{attrs:{attributeName:"transform",type:"rotate",from:"0 18 18",to:"360 18 18",dur:"1s",repeatCount:"indefinite"}})],1)])])])])],2):t._e()])},staticRenderFns:[],name:"SearchInput",mixins:[t({name:"SearchBox"})],props:{placeholder:{type:String,default:"Search here…"},autofocus:{type:Boolean,default:!1},showLoadingIndicator:{type:Boolean,default:!1},shouldShowLoadingIndicator:{type:Boolean,default:!1},submitTitle:{type:String,default:"Search"},resetTitle:{type:String,default:"Clear"},value:{type:String,required:!1,default:void 0},modelValue:{type:String,required:!1,default:void 0}},emits:["input","update:modelValue","blur","focus","reset"],data:function(){return{query:""}},methods:{onFormSubmit:function(){this.$refs.input.blur()},onFormReset:function(){this.$emit("input",""),this.$emit("update:modelValue",""),this.$emit("reset")}}};
1
+ import{createSuitMixin as t}from"../mixins/suit.js";export default{render:function(){var t=this,e=t.$createElement,o=t._self._c||e;return o("form",{class:t.suit("form"),attrs:{action:"",role:"search",novalidate:""},on:{submit:function(e){return e.preventDefault(),t.onFormSubmit(e)},reset:function(e){return e.preventDefault(),t.onFormReset(e)}}},[o("input",{ref:"input",class:t.suit("input"),attrs:{type:"search",autocorrect:"off",autocapitalize:"off",autocomplete:"off",spellcheck:"false",required:"",maxlength:"512","aria-label":"Search",placeholder:t.placeholder,autofocus:t.autofocus},domProps:{value:t.value||t.modelValue},on:{focus:function(e){return t.$emit("focus",e)},blur:function(e){return t.$emit("blur",e)},input:function(e){t.$emit("input",e.target.value),t.$emit("update:modelValue",e.target.value)}}}),t._v(" "),o("button",{class:t.suit("submit"),attrs:{type:"submit",title:t.submitTitle,hidden:t.showLoadingIndicator&&t.shouldShowLoadingIndicator}},[t._t("submit-icon",[o("svg",{class:t.suit("submitIcon"),attrs:{role:"img",xmlns:"http://www.w3.org/2000/svg",width:"10",height:"10",viewBox:"0 0 40 40"}},[o("path",{attrs:{d:"M26.804 29.01c-2.832 2.34-6.465 3.746-10.426 3.746C7.333 32.756 0 25.424 0 16.378 0 7.333 7.333 0 16.378 0c9.046 0 16.378 7.333 16.378 16.378 0 3.96-1.406 7.594-3.746 10.426l10.534 10.534c.607.607.61 1.59-.004 2.202-.61.61-1.597.61-2.202.004L26.804 29.01zm-10.426.627c7.323 0 13.26-5.936 13.26-13.26 0-7.32-5.937-13.257-13.26-13.257C9.056 3.12 3.12 9.056 3.12 16.378c0 7.323 5.936 13.26 13.258 13.26z",fillRule:"evenodd"}})])])],2),t._v(" "),o("button",{class:t.suit("reset"),attrs:{type:"reset",title:t.resetTitle,hidden:!t.value&&!t.modelValue||t.showLoadingIndicator&&t.shouldShowLoadingIndicator}},[t._t("reset-icon",[o("svg",{class:t.suit("resetIcon"),attrs:{role:"img",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 20 20"}},[o("path",{attrs:{d:"M8.114 10L.944 2.83 0 1.885 1.886 0l.943.943L10 8.113l7.17-7.17.944-.943L20 1.886l-.943.943-7.17 7.17 7.17 7.17.943.944L18.114 20l-.943-.943-7.17-7.17-7.17 7.17-.944.943L0 18.114l.943-.943L8.113 10z",fillRule:"evenodd"}})])])],2),t._v(" "),t.showLoadingIndicator?o("span",{class:t.suit("loadingIndicator"),attrs:{hidden:!t.shouldShowLoadingIndicator}},[t._t("loading-indicator",[o("svg",{class:t.suit("loadingIcon"),attrs:{role:"img","aria-label":"Results are loading",width:"16",height:"16",xmlns:"http://www.w3.org/2000/svg",stroke:"#444",viewBox:"0 0 38 38"}},[o("g",{attrs:{fill:"none","fill-rule":"evenodd"}},[o("g",{attrs:{transform:"translate(1 1)","stroke-width":"2"}},[o("circle",{attrs:{"stroke-opacity":".5",cx:"18",cy:"18",r:"18"}}),t._v(" "),o("path",{attrs:{d:"M36 18c0-9.94-8.06-18-18-18"}},[o("animateTransform",{attrs:{attributeName:"transform",type:"rotate",from:"0 18 18",to:"360 18 18",dur:"1s",repeatCount:"indefinite"}})],1)])])])])],2):t._e()])},staticRenderFns:[],name:"SearchInput",mixins:[t({name:"SearchBox"})],props:{placeholder:{type:String,default:"Search here…"},autofocus:{type:Boolean,default:!1},showLoadingIndicator:{type:Boolean,default:!1},shouldShowLoadingIndicator:{type:Boolean,default:!1},submitTitle:{type:String,default:"Search"},resetTitle:{type:String,default:"Clear"},value:{type:String,required:!1,default:void 0},modelValue:{type:String,required:!1,default:void 0}},emits:["input","update:modelValue","blur","focus","reset"],data:function(){return{query:""}},methods:{isFocused:function(){return document.activeElement===this.$refs.input},onFormSubmit:function(){this.$refs.input.blur()},onFormReset:function(){this.$emit("input",""),this.$emit("update:modelValue",""),this.$emit("reset")}}};
2
2
  //# sourceMappingURL=SearchInput.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SearchInput.vue.js","sources":["../../../../src/components/SearchInput.vue"],"sourcesContent":["<template>\n <form\n action=\"\"\n role=\"search\"\n novalidate\n :class=\"suit('form')\"\n @submit.prevent=\"onFormSubmit\"\n @reset.prevent=\"onFormReset\"\n >\n <!-- :value/@input allows us to pass v-model to the component in v2 -->\n <!-- :modelValue/@update:modelValue allows us to pass v-model to the component in v3 -->\n <input\n type=\"search\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n required\n maxlength=\"512\"\n aria-label=\"Search\"\n :placeholder=\"placeholder\"\n :autofocus=\"autofocus\"\n :class=\"suit('input')\"\n :value=\"value || modelValue\"\n @focus=\"$emit('focus', $event)\"\n @blur=\"$emit('blur', $event)\"\n @input=\"$emit('input', $event.target.value); $emit('update:modelValue', $event.target.value)\"\n ref=\"input\"\n >\n <button\n type=\"submit\"\n :title=\"submitTitle\"\n :class=\"suit('submit')\"\n :hidden=\"showLoadingIndicator && shouldShowLoadingIndicator\"\n >\n <slot name=\"submit-icon\">\n <svg\n role=\"img\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"10\"\n height=\"10\"\n viewBox=\"0 0 40 40\"\n :class=\"suit('submitIcon')\"\n >\n <path\n d=\"M26.804 29.01c-2.832 2.34-6.465 3.746-10.426 3.746C7.333 32.756 0 25.424 0 16.378 0 7.333 7.333 0 16.378 0c9.046 0 16.378 7.333 16.378 16.378 0 3.96-1.406 7.594-3.746 10.426l10.534 10.534c.607.607.61 1.59-.004 2.202-.61.61-1.597.61-2.202.004L26.804 29.01zm-10.426.627c7.323 0 13.26-5.936 13.26-13.26 0-7.32-5.937-13.257-13.26-13.257C9.056 3.12 3.12 9.056 3.12 16.378c0 7.323 5.936 13.26 13.258 13.26z\"\n fillRule=\"evenodd\"\n />\n </svg>\n </slot>\n </button>\n\n <button\n type=\"reset\"\n :title=\"resetTitle\"\n :class=\"suit('reset')\"\n :hidden=\"(!value && !modelValue) || (showLoadingIndicator && shouldShowLoadingIndicator)\"\n >\n <slot name=\"reset-icon\">\n <svg\n role=\"img\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 20 20\"\n :class=\"suit('resetIcon')\"\n >\n <path\n d=\"M8.114 10L.944 2.83 0 1.885 1.886 0l.943.943L10 8.113l7.17-7.17.944-.943L20 1.886l-.943.943-7.17 7.17 7.17 7.17.943.944L18.114 20l-.943-.943-7.17-7.17-7.17 7.17-.944.943L0 18.114l.943-.943L8.113 10z\"\n fillRule=\"evenodd\"\n />\n </svg>\n </slot>\n </button>\n\n <span\n v-if=\"showLoadingIndicator\"\n :hidden=\"!shouldShowLoadingIndicator\"\n :class=\"suit('loadingIndicator')\"\n >\n <slot name=\"loading-indicator\">\n <svg\n role=\"img\"\n aria-label=\"Results are loading\"\n width=\"16\"\n height=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n stroke=\"#444\"\n viewBox=\"0 0 38 38\"\n :class=\"suit('loadingIcon')\"\n >\n <g\n fill=\"none\"\n fill-rule=\"evenodd\"\n >\n <g\n transform=\"translate(1 1)\"\n stroke-width=\"2\"\n >\n <circle\n stroke-opacity=\".5\"\n cx=\"18\"\n cy=\"18\"\n r=\"18\"\n />\n <path d=\"M36 18c0-9.94-8.06-18-18-18\">\n <animateTransform\n attributeName=\"transform\"\n type=\"rotate\"\n from=\"0 18 18\"\n to=\"360 18 18\"\n dur=\"1s\"\n repeatCount=\"indefinite\"\n />\n </path>\n </g>\n </g>\n </svg>\n </slot>\n </span>\n </form>\n</template>\n\n<script>\nimport { createSuitMixin } from '../mixins/suit';\n\nexport default {\n name: 'SearchInput',\n mixins: [createSuitMixin({ name: 'SearchBox' })],\n props: {\n placeholder: {\n type: String,\n default: 'Search here…',\n },\n autofocus: {\n type: Boolean,\n default: false,\n },\n showLoadingIndicator: {\n type: Boolean,\n default: false,\n },\n shouldShowLoadingIndicator: {\n type: Boolean,\n default: false,\n },\n submitTitle: {\n type: String,\n default: 'Search',\n },\n resetTitle: {\n type: String,\n default: 'Clear',\n },\n value: {\n type: String,\n required: false,\n default: undefined,\n },\n modelValue: {\n type: String,\n required: false,\n default: undefined,\n },\n },\n emits: ['input', 'update:modelValue', 'blur', 'focus', 'reset'],\n data() {\n return {\n query: '',\n };\n },\n methods: {\n onFormSubmit() {\n const input = this.$refs.input;\n input.blur();\n },\n onFormReset() {\n this.$emit('input', '');\n this.$emit('update:modelValue', '');\n this.$emit('reset');\n },\n },\n};\n</script>\n"],"names":["render","name","mixins","createSuitMixin","props","placeholder","type","String","default","autofocus","Boolean","showLoadingIndicator","shouldShowLoadingIndicator","submitTitle","resetTitle","value","required","undefined","modelValue","emits","data","query","methods","onFormSubmit","this","$refs","input","blur","onFormReset","$emit"],"mappings":"kEA8He,CAACA,0xFACdC,KAAM,cACNC,OAAQ,CAACC,EAAgB,CAAEF,KAAM,eACjCG,MAAO,CACLC,YAAa,CACXC,KAAMC,OACNC,QAAS,gBAEXC,UAAW,CACTH,KAAMI,QACNF,SAAS,GAEXG,qBAAsB,CACpBL,KAAMI,QACNF,SAAS,GAEXI,2BAA4B,CAC1BN,KAAMI,QACNF,SAAS,GAEXK,YAAa,CACXP,KAAMC,OACNC,QAAS,UAEXM,WAAY,CACVR,KAAMC,OACNC,QAAS,SAEXO,MAAO,CACLT,KAAMC,OACNS,UAAU,EACVR,aAASS,GAEXC,WAAY,CACVZ,KAAMC,OACNS,UAAU,EACVR,aAASS,IAGbE,MAAO,CAAC,QAAS,oBAAqB,OAAQ,QAAS,SACvDC,sBACS,CACLC,MAAO,KAGXC,QAAS,CACPC,wBACgBC,KAAKC,MAAMC,MACnBC,QAERC,4BACOC,MAAM,QAAS,SACfA,MAAM,oBAAqB,SAC3BA,MAAM"}
1
+ {"version":3,"file":"SearchInput.vue.js","sources":["../../../../src/components/SearchInput.vue"],"sourcesContent":["<template>\n <form\n action=\"\"\n role=\"search\"\n novalidate\n :class=\"suit('form')\"\n @submit.prevent=\"onFormSubmit\"\n @reset.prevent=\"onFormReset\"\n >\n <!-- :value/@input allows us to pass v-model to the component in v2 -->\n <!-- :modelValue/@update:modelValue allows us to pass v-model to the component in v3 -->\n <input\n type=\"search\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n required\n maxlength=\"512\"\n aria-label=\"Search\"\n :placeholder=\"placeholder\"\n :autofocus=\"autofocus\"\n :class=\"suit('input')\"\n :value=\"value || modelValue\"\n @focus=\"$emit('focus', $event)\"\n @blur=\"$emit('blur', $event)\"\n @input=\"$emit('input', $event.target.value); $emit('update:modelValue', $event.target.value)\"\n ref=\"input\"\n >\n <button\n type=\"submit\"\n :title=\"submitTitle\"\n :class=\"suit('submit')\"\n :hidden=\"showLoadingIndicator && shouldShowLoadingIndicator\"\n >\n <slot name=\"submit-icon\">\n <svg\n role=\"img\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"10\"\n height=\"10\"\n viewBox=\"0 0 40 40\"\n :class=\"suit('submitIcon')\"\n >\n <path\n d=\"M26.804 29.01c-2.832 2.34-6.465 3.746-10.426 3.746C7.333 32.756 0 25.424 0 16.378 0 7.333 7.333 0 16.378 0c9.046 0 16.378 7.333 16.378 16.378 0 3.96-1.406 7.594-3.746 10.426l10.534 10.534c.607.607.61 1.59-.004 2.202-.61.61-1.597.61-2.202.004L26.804 29.01zm-10.426.627c7.323 0 13.26-5.936 13.26-13.26 0-7.32-5.937-13.257-13.26-13.257C9.056 3.12 3.12 9.056 3.12 16.378c0 7.323 5.936 13.26 13.258 13.26z\"\n fillRule=\"evenodd\"\n />\n </svg>\n </slot>\n </button>\n\n <button\n type=\"reset\"\n :title=\"resetTitle\"\n :class=\"suit('reset')\"\n :hidden=\"(!value && !modelValue) || (showLoadingIndicator && shouldShowLoadingIndicator)\"\n >\n <slot name=\"reset-icon\">\n <svg\n role=\"img\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 20 20\"\n :class=\"suit('resetIcon')\"\n >\n <path\n d=\"M8.114 10L.944 2.83 0 1.885 1.886 0l.943.943L10 8.113l7.17-7.17.944-.943L20 1.886l-.943.943-7.17 7.17 7.17 7.17.943.944L18.114 20l-.943-.943-7.17-7.17-7.17 7.17-.944.943L0 18.114l.943-.943L8.113 10z\"\n fillRule=\"evenodd\"\n />\n </svg>\n </slot>\n </button>\n\n <span\n v-if=\"showLoadingIndicator\"\n :hidden=\"!shouldShowLoadingIndicator\"\n :class=\"suit('loadingIndicator')\"\n >\n <slot name=\"loading-indicator\">\n <svg\n role=\"img\"\n aria-label=\"Results are loading\"\n width=\"16\"\n height=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n stroke=\"#444\"\n viewBox=\"0 0 38 38\"\n :class=\"suit('loadingIcon')\"\n >\n <g\n fill=\"none\"\n fill-rule=\"evenodd\"\n >\n <g\n transform=\"translate(1 1)\"\n stroke-width=\"2\"\n >\n <circle\n stroke-opacity=\".5\"\n cx=\"18\"\n cy=\"18\"\n r=\"18\"\n />\n <path d=\"M36 18c0-9.94-8.06-18-18-18\">\n <animateTransform\n attributeName=\"transform\"\n type=\"rotate\"\n from=\"0 18 18\"\n to=\"360 18 18\"\n dur=\"1s\"\n repeatCount=\"indefinite\"\n />\n </path>\n </g>\n </g>\n </svg>\n </slot>\n </span>\n </form>\n</template>\n\n<script>\nimport { createSuitMixin } from '../mixins/suit';\n\nexport default {\n name: 'SearchInput',\n mixins: [createSuitMixin({ name: 'SearchBox' })],\n props: {\n placeholder: {\n type: String,\n default: 'Search here…',\n },\n autofocus: {\n type: Boolean,\n default: false,\n },\n showLoadingIndicator: {\n type: Boolean,\n default: false,\n },\n shouldShowLoadingIndicator: {\n type: Boolean,\n default: false,\n },\n submitTitle: {\n type: String,\n default: 'Search',\n },\n resetTitle: {\n type: String,\n default: 'Clear',\n },\n value: {\n type: String,\n required: false,\n default: undefined,\n },\n modelValue: {\n type: String,\n required: false,\n default: undefined,\n },\n },\n emits: ['input', 'update:modelValue', 'blur', 'focus', 'reset'],\n data() {\n return {\n query: '',\n };\n },\n methods: {\n isFocused() {\n return document.activeElement === this.$refs.input;\n },\n onFormSubmit() {\n const input = this.$refs.input;\n input.blur();\n },\n onFormReset() {\n this.$emit('input', '');\n this.$emit('update:modelValue', '');\n this.$emit('reset');\n },\n },\n};\n</script>\n"],"names":["render","name","mixins","createSuitMixin","props","placeholder","type","String","default","autofocus","Boolean","showLoadingIndicator","shouldShowLoadingIndicator","submitTitle","resetTitle","value","required","undefined","modelValue","emits","data","query","methods","isFocused","document","activeElement","this","$refs","input","onFormSubmit","blur","onFormReset","$emit"],"mappings":"kEA8He,CAACA,0xFACdC,KAAM,cACNC,OAAQ,CAACC,EAAgB,CAAEF,KAAM,eACjCG,MAAO,CACLC,YAAa,CACXC,KAAMC,OACNC,QAAS,gBAEXC,UAAW,CACTH,KAAMI,QACNF,SAAS,GAEXG,qBAAsB,CACpBL,KAAMI,QACNF,SAAS,GAEXI,2BAA4B,CAC1BN,KAAMI,QACNF,SAAS,GAEXK,YAAa,CACXP,KAAMC,OACNC,QAAS,UAEXM,WAAY,CACVR,KAAMC,OACNC,QAAS,SAEXO,MAAO,CACLT,KAAMC,OACNS,UAAU,EACVR,aAASS,GAEXC,WAAY,CACVZ,KAAMC,OACNS,UAAU,EACVR,aAASS,IAGbE,MAAO,CAAC,QAAS,oBAAqB,OAAQ,QAAS,SACvDC,sBACS,CACLC,MAAO,KAGXC,QAAS,CACPC,4BACSC,SAASC,gBAAkBC,KAAKC,MAAMC,OAE/CC,wBACgBH,KAAKC,MAAMC,MACnBE,QAERC,4BACOC,MAAM,QAAS,SACfA,MAAM,oBAAqB,SAC3BA,MAAM"}
@@ -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 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{createSuitMixin as t}from"../mixins/suit.js";import{createWidgetMixin as e}from"../mixins/widget.js";import{connectVoiceSearch as s}from"instantsearch.js/es/connectors/index.js";export default{render:function(){var t=this,e=t.$createElement,s=t._self._c||e;return t.state?s("div",{class:t.suit()},[t._t("default",[s("button",{class:t.suit("button"),attrs:{type:"button",title:t.state.isBrowserSupported?t.buttonTitle:t.disabledButtonTitle,disabled:!t.state.isBrowserSupported},on:{click:t.handleClick}},[t._t("buttonText",[t.errorNotAllowed?s("svg",t._b({},"svg",t.buttonSvgAttrs,!1),[s("line",{attrs:{x1:"1",y1:"1",x2:"23",y2:"23"}}),t._v(" "),s("path",{attrs:{d:"M9 9v3a3 3 0 0 0 5.12 2.12M15 9.34V4a3 3 0 0 0-5.94-.6"}}),t._v(" "),s("path",{attrs:{d:"M17 16.95A7 7 0 0 1 5 12v-2m14 0v2a7 7 0 0 1-.11 1.23"}}),t._v(" "),s("line",{attrs:{x1:"12",y1:"19",x2:"12",y2:"23"}}),t._v(" "),s("line",{attrs:{x1:"8",y1:"23",x2:"16",y2:"23"}})]):s("svg",t._b({},"svg",t.buttonSvgAttrs,!1),[s("path",{attrs:{d:"M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z",fill:t.state.isListening?"currentColor":"none"}}),t._v(" "),s("path",{attrs:{d:"M19 10v2a7 7 0 0 1-14 0v-2"}}),t._v(" "),s("line",{attrs:{x1:"12",y1:"19",x2:"12",y2:"23"}}),t._v(" "),s("line",{attrs:{x1:"8",y1:"23",x2:"16",y2:"23"}})])],null,t.innerSlotProps)],2),t._v(" "),s("div",{class:t.suit("status")},[t._t("status",[s("p",[t._v(t._s(t.state.voiceListeningState.transcript))])],null,t.innerSlotProps)],2)],null,t.rootSlotProps)],2):t._e()},staticRenderFns:[],name:"AisVoiceSearch",mixins:[e({connector:s},{$$widgetType:"ais.voiceSearch"}),t({name:"VoiceSearch"})],props:{searchAsYouSpeak:{type:Boolean,required:!1,default:void 0},buttonTitle:{type:String,required:!1,default:"Search by voice"},disabledButtonTitle:{type:String,required:!1,default:"Search by voice (not supported on this browser)"}},data:function(){return{buttonSvgAttrs:{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"}}},computed:{widgetParams:function(){return{searchAsYouSpeak:this.searchAsYouSpeak}},errorNotAllowed:function(){return"error"===this.state.voiceListeningState.status&&"not-allowed"===this.state.voiceListeningState.errorCode},rootSlotProps:function(){return{isBrowserSupported:this.state.isBrowserSupported,isListening:this.state.isListening,toggleListening:this.state.toggleListening,voiceListeningState:this.state.voiceListeningState}},innerSlotProps:function(){return{status:this.state.voiceListeningState.status,errorCode:this.state.voiceListeningState.errorCode,isListening:this.state.isListening,transcript:this.state.voiceListeningState.transcript,isSpeechFinal:this.state.voiceListeningState.isSpeechFinal,isBrowserSupported:this.state.isBrowserSupported}}},methods:{handleClick:function(t){t.currentTarget.blur(),this.state.toggleListening()}}};
1
+ import{createSuitMixin as t}from"../mixins/suit.js";import{createWidgetMixin as e}from"../mixins/widget.js";import{connectVoiceSearch as i}from"instantsearch.js/es/connectors/index.js";export default{render:function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.state?i("div",{class:t.suit()},[t._t("default",[i("button",{class:t.suit("button"),attrs:{type:"button",title:t.state.isBrowserSupported?t.buttonTitle:t.disabledButtonTitle,disabled:!t.state.isBrowserSupported},on:{click:t.handleClick}},[t._t("buttonText",[t.errorNotAllowed?i("svg",t._b({},"svg",t.buttonSvgAttrs,!1),[i("line",{attrs:{x1:"1",y1:"1",x2:"23",y2:"23"}}),t._v(" "),i("path",{attrs:{d:"M9 9v3a3 3 0 0 0 5.12 2.12M15 9.34V4a3 3 0 0 0-5.94-.6"}}),t._v(" "),i("path",{attrs:{d:"M17 16.95A7 7 0 0 1 5 12v-2m14 0v2a7 7 0 0 1-.11 1.23"}}),t._v(" "),i("line",{attrs:{x1:"12",y1:"19",x2:"12",y2:"23"}}),t._v(" "),i("line",{attrs:{x1:"8",y1:"23",x2:"16",y2:"23"}})]):i("svg",t._b({},"svg",t.buttonSvgAttrs,!1),[i("path",{attrs:{d:"M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z",fill:t.state.isListening?"currentColor":"none"}}),t._v(" "),i("path",{attrs:{d:"M19 10v2a7 7 0 0 1-14 0v-2"}}),t._v(" "),i("line",{attrs:{x1:"12",y1:"19",x2:"12",y2:"23"}}),t._v(" "),i("line",{attrs:{x1:"8",y1:"23",x2:"16",y2:"23"}})])],null,t.innerSlotProps)],2),t._v(" "),i("div",{class:t.suit("status")},[t._t("status",[i("p",[t._v(t._s(t.state.voiceListeningState.transcript))])],null,t.innerSlotProps)],2)],null,t.rootSlotProps)],2):t._e()},staticRenderFns:[],name:"AisVoiceSearch",mixins:[e({connector:i},{$$widgetType:"ais.voiceSearch"}),t({name:"VoiceSearch"})],props:{searchAsYouSpeak:{type:Boolean,required:!1,default:void 0},language:{type:String,default:void 0},additionalQueryParameters:{type:Object,default:void 0},buttonTitle:{type:String,required:!1,default:"Search by voice"},disabledButtonTitle:{type:String,required:!1,default:"Search by voice (not supported on this browser)"}},data:function(){return{buttonSvgAttrs:{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"}}},computed:{widgetParams:function(){return{searchAsYouSpeak:this.searchAsYouSpeak,language:this.language,additionalQueryParameters:this.additionalQueryParameters}},errorNotAllowed:function(){return"error"===this.state.voiceListeningState.status&&"not-allowed"===this.state.voiceListeningState.errorCode},rootSlotProps:function(){return{isBrowserSupported:this.state.isBrowserSupported,isListening:this.state.isListening,toggleListening:this.state.toggleListening,voiceListeningState:this.state.voiceListeningState}},innerSlotProps:function(){return{status:this.state.voiceListeningState.status,errorCode:this.state.voiceListeningState.errorCode,isListening:this.state.isListening,transcript:this.state.voiceListeningState.transcript,isSpeechFinal:this.state.voiceListeningState.isSpeechFinal,isBrowserSupported:this.state.isBrowserSupported}}},methods:{handleClick:function(t){t.currentTarget.blur(),this.state.toggleListening()}}};
2
2
  //# sourceMappingURL=VoiceSearch.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"VoiceSearch.vue.js","sources":["../../../../src/components/VoiceSearch.vue"],"sourcesContent":["<template>\n <div\n v-if=\"state\"\n :class=\"suit()\"\n >\n <slot v-bind=\"rootSlotProps\">\n <button\n type=\"button\"\n :class=\"suit('button')\"\n :title=\"state.isBrowserSupported ? buttonTitle : disabledButtonTitle\"\n :disabled=\"!state.isBrowserSupported\"\n @click=\"handleClick\"\n >\n <slot\n name=\"buttonText\"\n v-bind=\"innerSlotProps\"\n >\n <svg\n v-bind=\"buttonSvgAttrs\"\n v-if=\"errorNotAllowed\"\n >\n <line\n x1=\"1\"\n y1=\"1\"\n x2=\"23\"\n y2=\"23\"\n />\n <path d=\"M9 9v3a3 3 0 0 0 5.12 2.12M15 9.34V4a3 3 0 0 0-5.94-.6\" />\n <path d=\"M17 16.95A7 7 0 0 1 5 12v-2m14 0v2a7 7 0 0 1-.11 1.23\" />\n <line\n x1=\"12\"\n y1=\"19\"\n x2=\"12\"\n y2=\"23\"\n />\n <line\n x1=\"8\"\n y1=\"23\"\n x2=\"16\"\n y2=\"23\"\n />\n </svg>\n <svg\n v-bind=\"buttonSvgAttrs\"\n v-else\n >\n <path\n d=\"M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z\"\n :fill=\"state.isListening ? 'currentColor' : 'none'\"\n />\n <path d=\"M19 10v2a7 7 0 0 1-14 0v-2\" />\n <line\n x1=\"12\"\n y1=\"19\"\n x2=\"12\"\n y2=\"23\"\n />\n <line\n x1=\"8\"\n y1=\"23\"\n x2=\"16\"\n y2=\"23\"\n />\n </svg>\n </slot>\n </button>\n <div :class=\"suit('status')\">\n <slot\n name=\"status\"\n v-bind=\"innerSlotProps\"\n >\n <p>{{ state.voiceListeningState.transcript }}</p>\n </slot>\n </div>\n </slot>\n </div>\n</template>\n\n<script>\nimport { connectVoiceSearch } from 'instantsearch.js/es/connectors';\nimport { createSuitMixin } from '../mixins/suit';\nimport { createWidgetMixin } from '../mixins/widget';\n\nexport default {\n name: 'AisVoiceSearch',\n mixins: [\n createWidgetMixin(\n {\n connector: connectVoiceSearch,\n },\n {\n $$widgetType: 'ais.voiceSearch',\n }\n ),\n createSuitMixin({ name: 'VoiceSearch' }),\n ],\n props: {\n searchAsYouSpeak: {\n type: Boolean,\n required: false,\n default: undefined,\n },\n buttonTitle: {\n type: String,\n required: false,\n default: 'Search by voice',\n },\n disabledButtonTitle: {\n type: String,\n required: false,\n default: 'Search by voice (not supported on this browser)',\n },\n },\n data() {\n return {\n buttonSvgAttrs: {\n xmlns: 'http://www.w3.org/2000/svg',\n width: '16',\n height: '16',\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: '2',\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n },\n };\n },\n computed: {\n widgetParams() {\n return {\n searchAsYouSpeak: this.searchAsYouSpeak,\n };\n },\n errorNotAllowed() {\n return (\n this.state.voiceListeningState.status === 'error' &&\n this.state.voiceListeningState.errorCode === 'not-allowed'\n );\n },\n rootSlotProps() {\n return {\n isBrowserSupported: this.state.isBrowserSupported,\n isListening: this.state.isListening,\n toggleListening: this.state.toggleListening,\n voiceListeningState: this.state.voiceListeningState,\n };\n },\n innerSlotProps() {\n return {\n status: this.state.voiceListeningState.status,\n errorCode: this.state.voiceListeningState.errorCode,\n isListening: this.state.isListening,\n transcript: this.state.voiceListeningState.transcript,\n isSpeechFinal: this.state.voiceListeningState.isSpeechFinal,\n isBrowserSupported: this.state.isBrowserSupported,\n };\n },\n },\n methods: {\n handleClick(event) {\n event.currentTarget.blur();\n this.state.toggleListening();\n },\n },\n};\n</script>\n"],"names":["render","name","mixins","createWidgetMixin","connector","connectVoiceSearch","$$widgetType","createSuitMixin","props","searchAsYouSpeak","type","Boolean","required","default","undefined","buttonTitle","String","disabledButtonTitle","data","buttonSvgAttrs","xmlns","width","height","viewBox","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","computed","widgetParams","this","errorNotAllowed","state","voiceListeningState","status","errorCode","rootSlotProps","isBrowserSupported","isListening","toggleListening","innerSlotProps","transcript","isSpeechFinal","methods","handleClick","event","currentTarget","blur"],"mappings":"uMAmFe,CAACA,+yCACdC,KAAM,iBACNC,OAAQ,CACNC,EACE,CACEC,UAAWC,GAEb,CACEC,aAAc,oBAGlBC,EAAgB,CAAEN,KAAM,iBAE1BO,MAAO,CACLC,iBAAkB,CAChBC,KAAMC,QACNC,UAAU,EACVC,aAASC,GAEXC,YAAa,CACXL,KAAMM,OACNJ,UAAU,EACVC,QAAS,mBAEXI,oBAAqB,CACnBP,KAAMM,OACNJ,UAAU,EACVC,QAAS,oDAGbK,sBACS,CACLC,eAAgB,CACdC,MAAO,6BACPC,MAAO,KACPC,OAAQ,KACRC,QAAS,YACTC,KAAM,OACNC,OAAQ,eACRC,YAAa,IACbC,cAAe,QACfC,eAAgB,WAItBC,SAAU,CACRC,8BACS,CACLrB,iBAAkBsB,KAAKtB,mBAG3BuB,iCAE8C,UAA1CD,KAAKE,MAAMC,oBAAoBC,QACc,gBAA7CJ,KAAKE,MAAMC,oBAAoBE,WAGnCC,+BACS,CACLC,mBAAoBP,KAAKE,MAAMK,mBAC/BC,YAAaR,KAAKE,MAAMM,YACxBC,gBAAiBT,KAAKE,MAAMO,gBAC5BN,oBAAqBH,KAAKE,MAAMC,sBAGpCO,gCACS,CACLN,OAAQJ,KAAKE,MAAMC,oBAAoBC,OACvCC,UAAWL,KAAKE,MAAMC,oBAAoBE,UAC1CG,YAAaR,KAAKE,MAAMM,YACxBG,WAAYX,KAAKE,MAAMC,oBAAoBQ,WAC3CC,cAAeZ,KAAKE,MAAMC,oBAAoBS,cAC9CL,mBAAoBP,KAAKE,MAAMK,sBAIrCM,QAAS,CACPC,qBAAYC,GACVA,EAAMC,cAAcC,YACff,MAAMO"}
1
+ {"version":3,"file":"VoiceSearch.vue.js","sources":["../../../../src/components/VoiceSearch.vue"],"sourcesContent":["<template>\n <div\n v-if=\"state\"\n :class=\"suit()\"\n >\n <slot v-bind=\"rootSlotProps\">\n <button\n type=\"button\"\n :class=\"suit('button')\"\n :title=\"state.isBrowserSupported ? buttonTitle : disabledButtonTitle\"\n :disabled=\"!state.isBrowserSupported\"\n @click=\"handleClick\"\n >\n <slot\n name=\"buttonText\"\n v-bind=\"innerSlotProps\"\n >\n <svg\n v-bind=\"buttonSvgAttrs\"\n v-if=\"errorNotAllowed\"\n >\n <line\n x1=\"1\"\n y1=\"1\"\n x2=\"23\"\n y2=\"23\"\n />\n <path d=\"M9 9v3a3 3 0 0 0 5.12 2.12M15 9.34V4a3 3 0 0 0-5.94-.6\" />\n <path d=\"M17 16.95A7 7 0 0 1 5 12v-2m14 0v2a7 7 0 0 1-.11 1.23\" />\n <line\n x1=\"12\"\n y1=\"19\"\n x2=\"12\"\n y2=\"23\"\n />\n <line\n x1=\"8\"\n y1=\"23\"\n x2=\"16\"\n y2=\"23\"\n />\n </svg>\n <svg\n v-bind=\"buttonSvgAttrs\"\n v-else\n >\n <path\n d=\"M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z\"\n :fill=\"state.isListening ? 'currentColor' : 'none'\"\n />\n <path d=\"M19 10v2a7 7 0 0 1-14 0v-2\" />\n <line\n x1=\"12\"\n y1=\"19\"\n x2=\"12\"\n y2=\"23\"\n />\n <line\n x1=\"8\"\n y1=\"23\"\n x2=\"16\"\n y2=\"23\"\n />\n </svg>\n </slot>\n </button>\n <div :class=\"suit('status')\">\n <slot\n name=\"status\"\n v-bind=\"innerSlotProps\"\n >\n <p>{{ state.voiceListeningState.transcript }}</p>\n </slot>\n </div>\n </slot>\n </div>\n</template>\n\n<script>\nimport { connectVoiceSearch } from 'instantsearch.js/es/connectors';\nimport { createSuitMixin } from '../mixins/suit';\nimport { createWidgetMixin } from '../mixins/widget';\n\nexport default {\n name: 'AisVoiceSearch',\n mixins: [\n createWidgetMixin(\n {\n connector: connectVoiceSearch,\n },\n {\n $$widgetType: 'ais.voiceSearch',\n }\n ),\n createSuitMixin({ name: 'VoiceSearch' }),\n ],\n props: {\n searchAsYouSpeak: {\n type: Boolean,\n required: false,\n default: undefined,\n },\n language: {\n type: String,\n default: undefined,\n },\n additionalQueryParameters: {\n type: Object,\n default: undefined,\n },\n buttonTitle: {\n type: String,\n required: false,\n default: 'Search by voice',\n },\n disabledButtonTitle: {\n type: String,\n required: false,\n default: 'Search by voice (not supported on this browser)',\n },\n },\n data() {\n return {\n buttonSvgAttrs: {\n xmlns: 'http://www.w3.org/2000/svg',\n width: '16',\n height: '16',\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: '2',\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n },\n };\n },\n computed: {\n widgetParams() {\n return {\n searchAsYouSpeak: this.searchAsYouSpeak,\n language: this.language,\n additionalQueryParameters: this.additionalQueryParameters,\n };\n },\n errorNotAllowed() {\n return (\n this.state.voiceListeningState.status === 'error' &&\n this.state.voiceListeningState.errorCode === 'not-allowed'\n );\n },\n rootSlotProps() {\n return {\n isBrowserSupported: this.state.isBrowserSupported,\n isListening: this.state.isListening,\n toggleListening: this.state.toggleListening,\n voiceListeningState: this.state.voiceListeningState,\n };\n },\n innerSlotProps() {\n return {\n status: this.state.voiceListeningState.status,\n errorCode: this.state.voiceListeningState.errorCode,\n isListening: this.state.isListening,\n transcript: this.state.voiceListeningState.transcript,\n isSpeechFinal: this.state.voiceListeningState.isSpeechFinal,\n isBrowserSupported: this.state.isBrowserSupported,\n };\n },\n },\n methods: {\n handleClick(event) {\n event.currentTarget.blur();\n this.state.toggleListening();\n },\n },\n};\n</script>\n"],"names":["render","name","mixins","createWidgetMixin","connector","connectVoiceSearch","$$widgetType","createSuitMixin","props","searchAsYouSpeak","type","Boolean","required","default","undefined","language","String","additionalQueryParameters","Object","buttonTitle","disabledButtonTitle","data","buttonSvgAttrs","xmlns","width","height","viewBox","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","computed","widgetParams","this","errorNotAllowed","state","voiceListeningState","status","errorCode","rootSlotProps","isBrowserSupported","isListening","toggleListening","innerSlotProps","transcript","isSpeechFinal","methods","handleClick","event","currentTarget","blur"],"mappings":"uMAmFe,CAACA,+yCACdC,KAAM,iBACNC,OAAQ,CACNC,EACE,CACEC,UAAWC,GAEb,CACEC,aAAc,oBAGlBC,EAAgB,CAAEN,KAAM,iBAE1BO,MAAO,CACLC,iBAAkB,CAChBC,KAAMC,QACNC,UAAU,EACVC,aAASC,GAEXC,SAAU,CACRL,KAAMM,OACNH,aAASC,GAEXG,0BAA2B,CACzBP,KAAMQ,OACNL,aAASC,GAEXK,YAAa,CACXT,KAAMM,OACNJ,UAAU,EACVC,QAAS,mBAEXO,oBAAqB,CACnBV,KAAMM,OACNJ,UAAU,EACVC,QAAS,oDAGbQ,sBACS,CACLC,eAAgB,CACdC,MAAO,6BACPC,MAAO,KACPC,OAAQ,KACRC,QAAS,YACTC,KAAM,OACNC,OAAQ,eACRC,YAAa,IACbC,cAAe,QACfC,eAAgB,WAItBC,SAAU,CACRC,8BACS,CACLxB,iBAAkByB,KAAKzB,iBACvBM,SAAUmB,KAAKnB,SACfE,0BAA2BiB,KAAKjB,4BAGpCkB,iCAE8C,UAA1CD,KAAKE,MAAMC,oBAAoBC,QACc,gBAA7CJ,KAAKE,MAAMC,oBAAoBE,WAGnCC,+BACS,CACLC,mBAAoBP,KAAKE,MAAMK,mBAC/BC,YAAaR,KAAKE,MAAMM,YACxBC,gBAAiBT,KAAKE,MAAMO,gBAC5BN,oBAAqBH,KAAKE,MAAMC,sBAGpCO,gCACS,CACLN,OAAQJ,KAAKE,MAAMC,oBAAoBC,OACvCC,UAAWL,KAAKE,MAAMC,oBAAoBE,UAC1CG,YAAaR,KAAKE,MAAMM,YACxBG,WAAYX,KAAKE,MAAMC,oBAAoBQ,WAC3CC,cAAeZ,KAAKE,MAAMC,oBAAoBS,cAC9CL,mBAAoBP,KAAKE,MAAMK,sBAIrCM,QAAS,CACPC,qBAAYC,GACVA,EAAMC,cAAcC,YACff,MAAMO"}
@@ -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{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"}