vue-instantsearch 4.4.2 → 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 (129) hide show
  1. package/CHANGELOG.md +14 -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/SortBy.vue +2 -3
  16. package/src/components/ToggleRefinement.vue +3 -10
  17. package/src/components/__tests__/Breadcrumb.js +0 -25
  18. package/src/components/__tests__/ClearRefinements.js +0 -23
  19. package/src/components/__tests__/CurrentRefinements.js +0 -17
  20. package/src/components/__tests__/HierarchicalMenu.js +3 -19
  21. package/src/components/__tests__/HitsPerPage.js +0 -26
  22. package/src/components/__tests__/Menu.js +0 -22
  23. package/src/components/__tests__/MenuSelect.js +0 -23
  24. package/src/components/__tests__/NumericMenu.js +3 -25
  25. package/src/components/__tests__/Pagination.js +0 -21
  26. package/src/components/__tests__/RangeInput.js +1 -34
  27. package/src/components/__tests__/RatingMenu.js +0 -23
  28. package/src/components/__tests__/RefinementList.js +0 -23
  29. package/src/components/__tests__/SortBy.js +1 -23
  30. package/src/components/__tests__/ToggleRefinement.js +4 -33
  31. package/src/mixins/__mocks__/panel.js +1 -5
  32. package/src/mixins/__tests__/panel.test.js +18 -40
  33. package/src/mixins/panel.js +3 -1
  34. package/src/util/createServerRootMixin.js +10 -1
  35. package/vue2/cjs/index.js +1 -1
  36. package/vue2/cjs/index.js.map +1 -1
  37. package/vue2/es/package.json.js +1 -1
  38. package/vue2/es/src/components/Breadcrumb.vue.js +1 -1
  39. package/vue2/es/src/components/Breadcrumb.vue.js.map +1 -1
  40. package/vue2/es/src/components/ClearRefinements.vue.js +1 -1
  41. package/vue2/es/src/components/ClearRefinements.vue.js.map +1 -1
  42. package/vue2/es/src/components/CurrentRefinements.vue.js +1 -1
  43. package/vue2/es/src/components/CurrentRefinements.vue.js.map +1 -1
  44. package/vue2/es/src/components/HierarchicalMenu.vue.js +1 -1
  45. package/vue2/es/src/components/HierarchicalMenu.vue.js.map +1 -1
  46. package/vue2/es/src/components/HitsPerPage.vue.js +1 -1
  47. package/vue2/es/src/components/HitsPerPage.vue.js.map +1 -1
  48. package/vue2/es/src/components/Menu.vue.js +1 -1
  49. package/vue2/es/src/components/Menu.vue.js.map +1 -1
  50. package/vue2/es/src/components/MenuSelect.vue.js +1 -1
  51. package/vue2/es/src/components/MenuSelect.vue.js.map +1 -1
  52. package/vue2/es/src/components/NumericMenu.vue.js +1 -1
  53. package/vue2/es/src/components/NumericMenu.vue.js.map +1 -1
  54. package/vue2/es/src/components/Pagination.vue.js +1 -1
  55. package/vue2/es/src/components/Pagination.vue.js.map +1 -1
  56. package/vue2/es/src/components/RangeInput.vue.js +1 -1
  57. package/vue2/es/src/components/RangeInput.vue.js.map +1 -1
  58. package/vue2/es/src/components/RatingMenu.vue.js +1 -1
  59. package/vue2/es/src/components/RatingMenu.vue.js.map +1 -1
  60. package/vue2/es/src/components/RefinementList.vue.js +1 -1
  61. package/vue2/es/src/components/RefinementList.vue.js.map +1 -1
  62. package/vue2/es/src/components/SortBy.vue.js +1 -1
  63. package/vue2/es/src/components/SortBy.vue.js.map +1 -1
  64. package/vue2/es/src/components/ToggleRefinement.vue.js +1 -1
  65. package/vue2/es/src/components/ToggleRefinement.vue.js.map +1 -1
  66. package/vue2/es/src/mixins/panel.js +1 -1
  67. package/vue2/es/src/mixins/panel.js.map +1 -1
  68. package/vue2/es/src/util/createServerRootMixin.js +1 -1
  69. package/vue2/es/src/util/createServerRootMixin.js.map +1 -1
  70. package/vue2/umd/index.js +1 -1
  71. package/vue2/umd/index.js.map +1 -1
  72. package/vue3/cjs/index.js +1 -1
  73. package/vue3/cjs/index.js.map +1 -1
  74. package/vue3/es/package.json.js +1 -1
  75. package/vue3/es/src/components/Breadcrumb.vue_vue&type=script&lang.js +1 -1
  76. package/vue3/es/src/components/Breadcrumb.vue_vue&type=script&lang.js.map +1 -1
  77. package/vue3/es/src/components/Breadcrumb.vue_vue&type=template&id=6f46de9a&lang.js.map +1 -1
  78. package/vue3/es/src/components/ClearRefinements.vue_vue&type=script&lang.js +1 -1
  79. package/vue3/es/src/components/ClearRefinements.vue_vue&type=script&lang.js.map +1 -1
  80. package/vue3/es/src/components/ClearRefinements.vue_vue&type=template&id=410a3aaa&lang.js.map +1 -1
  81. package/vue3/es/src/components/CurrentRefinements.vue_vue&type=script&lang.js +1 -1
  82. package/vue3/es/src/components/CurrentRefinements.vue_vue&type=script&lang.js.map +1 -1
  83. package/vue3/es/src/components/CurrentRefinements.vue_vue&type=template&id=4f1917ff&lang.js.map +1 -1
  84. package/vue3/es/src/components/HierarchicalMenu.vue_vue&type=script&lang.js +1 -1
  85. package/vue3/es/src/components/HierarchicalMenu.vue_vue&type=script&lang.js.map +1 -1
  86. package/vue3/es/src/components/HierarchicalMenu.vue_vue&type=template&id=4361a0b8&lang.js +1 -1
  87. package/vue3/es/src/components/HierarchicalMenu.vue_vue&type=template&id=4361a0b8&lang.js.map +1 -1
  88. package/vue3/es/src/components/HitsPerPage.vue_vue&type=script&lang.js +1 -1
  89. package/vue3/es/src/components/HitsPerPage.vue_vue&type=script&lang.js.map +1 -1
  90. package/vue3/es/src/components/HitsPerPage.vue_vue&type=template&id=74f3ac28&lang.js +1 -1
  91. package/vue3/es/src/components/HitsPerPage.vue_vue&type=template&id=74f3ac28&lang.js.map +1 -1
  92. package/vue3/es/src/components/Menu.vue_vue&type=script&lang.js +1 -1
  93. package/vue3/es/src/components/Menu.vue_vue&type=script&lang.js.map +1 -1
  94. package/vue3/es/src/components/Menu.vue_vue&type=template&id=9bcc0be2&lang.js.map +1 -1
  95. package/vue3/es/src/components/MenuSelect.vue_vue&type=script&lang.js +1 -1
  96. package/vue3/es/src/components/MenuSelect.vue_vue&type=script&lang.js.map +1 -1
  97. package/vue3/es/src/components/MenuSelect.vue_vue&type=template&id=694477eb&lang.js.map +1 -1
  98. package/vue3/es/src/components/NumericMenu.vue_vue&type=script&lang.js +1 -1
  99. package/vue3/es/src/components/NumericMenu.vue_vue&type=script&lang.js.map +1 -1
  100. package/vue3/es/src/components/NumericMenu.vue_vue&type=template&id=160fae0c&lang.js +1 -1
  101. package/vue3/es/src/components/NumericMenu.vue_vue&type=template&id=160fae0c&lang.js.map +1 -1
  102. package/vue3/es/src/components/Pagination.vue_vue&type=script&lang.js +1 -1
  103. package/vue3/es/src/components/Pagination.vue_vue&type=script&lang.js.map +1 -1
  104. package/vue3/es/src/components/Pagination.vue_vue&type=template&id=849a166c&lang.js.map +1 -1
  105. package/vue3/es/src/components/RangeInput.vue_vue&type=script&lang.js +1 -1
  106. package/vue3/es/src/components/RangeInput.vue_vue&type=script&lang.js.map +1 -1
  107. package/vue3/es/src/components/RangeInput.vue_vue&type=template&id=1e17783d&lang.js +1 -1
  108. package/vue3/es/src/components/RangeInput.vue_vue&type=template&id=1e17783d&lang.js.map +1 -1
  109. package/vue3/es/src/components/RatingMenu.vue_vue&type=script&lang.js +1 -1
  110. package/vue3/es/src/components/RatingMenu.vue_vue&type=script&lang.js.map +1 -1
  111. package/vue3/es/src/components/RatingMenu.vue_vue&type=template&id=9254de68&lang.js +1 -1
  112. package/vue3/es/src/components/RatingMenu.vue_vue&type=template&id=9254de68&lang.js.map +1 -1
  113. package/vue3/es/src/components/RefinementList.vue_vue&type=script&lang.js +1 -1
  114. package/vue3/es/src/components/RefinementList.vue_vue&type=script&lang.js.map +1 -1
  115. package/vue3/es/src/components/RefinementList.vue_vue&type=template&id=28927239&lang.js.map +1 -1
  116. package/vue3/es/src/components/SortBy.vue_vue&type=script&lang.js +1 -1
  117. package/vue3/es/src/components/SortBy.vue_vue&type=script&lang.js.map +1 -1
  118. package/vue3/es/src/components/SortBy.vue_vue&type=template&id=b69b3b76&lang.js +1 -1
  119. package/vue3/es/src/components/SortBy.vue_vue&type=template&id=b69b3b76&lang.js.map +1 -1
  120. package/vue3/es/src/components/ToggleRefinement.vue_vue&type=script&lang.js +1 -1
  121. package/vue3/es/src/components/ToggleRefinement.vue_vue&type=script&lang.js.map +1 -1
  122. package/vue3/es/src/components/ToggleRefinement.vue_vue&type=template&id=14e4586f&lang.js +1 -1
  123. package/vue3/es/src/components/ToggleRefinement.vue_vue&type=template&id=14e4586f&lang.js.map +1 -1
  124. package/vue3/es/src/mixins/panel.js +1 -1
  125. package/vue3/es/src/mixins/panel.js.map +1 -1
  126. package/vue3/es/src/util/createServerRootMixin.js +1 -1
  127. package/vue3/es/src/util/createServerRootMixin.js.map +1 -1
  128. package/vue3/umd/index.js +1 -1
  129. package/vue3/umd/index.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Pagination.vue_vue&type=template&id=849a166c&lang.js","sources":["../../../../src/components/Pagination.vue?vue&type=template&id=849a166c&lang.js"],"sourcesContent":["<template>\n <div\n v-if=\"state\"\n :class=\"suit()\"\n >\n <slot\n :refine=\"refine\"\n :createURL=\"state.createURL\"\n :current-refinement=\"state.currentRefinement\"\n :nb-hits=\"state.nbHits\"\n :nb-pages=\"state.nbPages\"\n :pages=\"state.pages\"\n :is-first-page=\"state.isFirstPage\"\n :is-last-page=\"state.isLastPage\"\n >\n <ul :class=\"suit('list')\">\n <li\n :class=\"{\n [suit('item')]: true,\n [suit('item', 'firstPage')]: true,\n [suit('item', 'disabled')]: state.isFirstPage,\n }\"\n v-if=\"showFirst\"\n >\n <slot\n name=\"first\"\n :createURL=\"() => state.createURL(0)\"\n :is-first-page=\"state.isFirstPage\"\n :refine=\"() => refine(0)\"\n >\n <template v-if=\"!state.isFirstPage\">\n <a\n :class=\"suit('link')\"\n aria-label=\"First\"\n :href=\"state.createURL(0)\"\n @click.prevent=\"refine(0)\"\n >‹‹</a>\n </template>\n <template v-else>\n <span\n :class=\"suit('link')\"\n aria-label=\"First\"\n >‹‹</span>\n </template>\n </slot>\n </li>\n <li\n :class=\"{\n [suit('item')]: true,\n [suit('item', 'previousPage')]: true,\n [suit('item', 'disabled')]: state.isFirstPage,\n }\"\n v-if=\"showPrevious\"\n >\n <slot\n name=\"previous\"\n :createURL=\"() => state.createURL(state.currentRefinement - 1)\"\n :is-first-page=\"state.isFirstPage\"\n :refine=\"() => refine(state.currentRefinement - 1)\"\n >\n <template v-if=\"!state.isFirstPage\">\n <a\n :class=\"suit('link')\"\n aria-label=\"Previous\"\n :href=\"state.createURL(state.currentRefinement - 1)\"\n @click.prevent=\"refine(state.currentRefinement - 1)\"\n >‹</a>\n </template>\n <template v-else>\n <span\n :class=\"suit('link')\"\n aria-label=\"Previous\"\n >‹</span>\n </template>\n </slot>\n </li>\n\n <li\n :class=\"{\n [suit('item')]: true,\n [suit('item', 'page')]: true,\n [suit('item', 'selected')]: state.currentRefinement === page\n }\"\n v-for=\"page in state.pages\"\n :key=\"page\"\n >\n <slot\n name=\"item\"\n :page=\"page\"\n :createURL=\"() => state.createURL(page)\"\n :is-first-page=\"state.isFirstPage\"\n :is-last-page=\"state.isLastPage\"\n :refine=\"() => refine(page)\"\n >\n <a\n :class=\"suit('link')\"\n :href=\"state.createURL(page)\"\n @click.prevent=\"refine(page)\"\n >{{ page + 1 }}</a>\n </slot>\n </li>\n\n <li\n :class=\"{\n [suit('item')]: true,\n [suit('item','nextPage')]: true,\n [suit('item','disabled')]: state.isLastPage\n }\"\n v-if=\"showNext\"\n >\n <slot\n name=\"next\"\n :createURL=\"() => state.createURL(state.currentRefinement + 1)\"\n :is-last-page=\"state.isLastPage\"\n :refine=\"() => refine(state.currentRefinement + 1)\"\n >\n <template v-if=\"!state.isLastPage\">\n <a\n :class=\"suit('link')\"\n aria-label=\"Next\"\n :href=\"state.createURL(state.currentRefinement + 1)\"\n @click.prevent=\"refine(state.currentRefinement + 1)\"\n >›</a>\n </template>\n <template v-else>\n <span\n :class=\"suit('link')\"\n aria-label=\"Next\"\n >›</span>\n </template>\n </slot>\n </li>\n <li\n :class=\"{\n [suit('item')]: true,\n [suit('item','lastPage')]: true,\n [suit('item','disabled')]: state.isLastPage,\n }\"\n v-if=\"showLast\"\n >\n <slot\n name=\"last\"\n :createURL=\"() => state.createURL(state.nbPages - 1)\"\n :is-last-page=\"state.isLastPage\"\n :refine=\"() => refine(state.nbPages - 1)\"\n >\n <template v-if=\"!state.isLastPage\">\n <a\n :class=\"suit('link')\"\n aria-label=\"Last\"\n :href=\"state.createURL(state.nbPages - 1)\"\n @click.prevent=\"refine(state.nbPages - 1)\"\n >››</a>\n </template>\n <template v-else>\n <span\n :class=\"suit('link')\"\n aria-label=\"Last\"\n >››</span>\n </template>\n </slot>\n </li>\n </ul>\n </slot>\n </div>\n</template>\n\n<script>\nimport { connectPagination } from 'instantsearch.js/es/connectors';\nimport { createPanelConsumerMixin } from '../mixins/panel';\nimport { createWidgetMixin } from '../mixins/widget';\nimport { createSuitMixin } from '../mixins/suit';\n\nexport default {\n name: 'AisPagination',\n mixins: [\n createSuitMixin({ name: 'Pagination' }),\n createWidgetMixin(\n {\n connector: connectPagination,\n },\n {\n $$widgetType: 'ais.pagination',\n }\n ),\n createPanelConsumerMixin({\n mapStateToCanRefine: state => state.nbPages > 1,\n }),\n ],\n props: {\n padding: {\n type: Number,\n default: undefined,\n validator(value) {\n return value > 0;\n },\n },\n totalPages: {\n type: Number,\n default: undefined,\n validator(value) {\n return value > 0;\n },\n },\n showFirst: {\n type: Boolean,\n default: true,\n },\n showLast: {\n type: Boolean,\n default: true,\n },\n showNext: {\n type: Boolean,\n default: true,\n },\n showPrevious: {\n type: Boolean,\n default: true,\n },\n },\n computed: {\n widgetParams() {\n return {\n padding: this.padding,\n totalPages: this.totalPages,\n };\n },\n },\n emits: ['page-change'],\n methods: {\n refine(page) {\n const p = Math.min(Math.max(page, 0), this.state.nbPages - 1);\n this.state.refine(p);\n // TODO: do this in a general way\n this.$emit('page-change', p);\n },\n },\n};\n</script>\n"],"names":["_ctx","_createBlock","class","_renderSlot","refine","$options","createURL","currentRefinement","nbHits","nbPages","pages","isFirstPage","isLastPage","_createVNode","$props","href","onClick","page","key"],"mappings":"+MAEUA,aADRC,eAEGC,MAAOF,WAERG,sBACGC,OAAQC,SACRC,UAAWN,QAAMM,UACjBC,kBAAoBP,QAAMO,kBAC1BC,OAASR,QAAMQ,OACfC,QAAUT,QAAMS,QAChBC,MAAOV,QAAMU,MACbC,YAAeX,QAAMW,YACrBC,WAAcZ,QAAMY,0CAErBC,QAAKX,MAAOF,iBAOFc,iBANRb,cACGC,wHAODC,oBAEGG,4BAAiBN,QAAMM,cACvBK,YAAeX,QAAMW,YACrBP,yBAAcC,gCAEEL,QAAMW,iBASrBV,gBACGC,MAAOF,4BACG,SACZ,cAXDC,aACGC,MAAOF,4BACG,QACVe,KAAMf,QAAMM,aACZU,yCAAeX,4BACjB,wCAgBCS,oBANRb,cACGC,2HAODC,uBAEGG,4BAAiBN,QAAMM,UAAUN,QAAMO,sBACvCI,YAAeX,QAAMW,YACrBP,yBAAcC,SAAOL,QAAMO,yCAEXP,QAAMW,iBASrBV,gBACGC,MAAOF,4BACG,YACZ,aAXDC,aACGC,MAAOF,4BACG,WACVe,KAAMf,QAAMM,UAAUN,QAAMO,qBAC5BS,yCAAeX,SAAOL,QAAMO,qCAC9B,8CAWPN,WAMiBD,QAAMU,eAAdO,oBANThB,QACGC,2HAMAgB,IAAKD,IAENd,mBAEGc,KAAMA,EACNX,4BAAiBN,QAAMM,UAAUW,IACjCN,YAAeX,QAAMW,YACrBC,WAAcZ,QAAMY,WACpBR,yBAAcC,SAAOY,uBAEtBJ,OACGX,MAAOF,eACPe,KAAMf,QAAMM,UAAUW,GACtBD,6BAAeX,SAAOY,oBACrBA,2CAUAH,gBANRb,cACGC,sHAODC,mBAEGG,4BAAiBN,QAAMM,UAAUN,QAAMO,sBACvCK,WAAcZ,QAAMY,WACpBR,yBAAcC,SAAOL,QAAMO,yCAEXP,QAAMY,gBASrBX,gBACGC,MAAOF,4BACG,QACZ,aAXDC,aACGC,MAAOF,4BACG,OACVe,KAAMf,QAAMM,UAAUN,QAAMO,qBAC5BS,yCAAeX,SAAOL,QAAMO,qCAC9B,uCAgBCO,gBANRb,cACGC,sHAODC,mBAEGG,4BAAiBN,QAAMM,UAAUN,QAAMS,YACvCG,WAAcZ,QAAMY,WACpBR,yBAAcC,SAAOL,QAAMS,+BAEXT,QAAMY,gBASrBX,gBACGC,MAAOF,4BACG,QACZ,cAXDC,aACGC,MAAOF,4BACG,OACVe,KAAMf,QAAMM,UAAUN,QAAMS,WAC5BO,yCAAeX,SAAOL,QAAMS,2BAC9B"}
1
+ {"version":3,"file":"Pagination.vue_vue&type=template&id=849a166c&lang.js","sources":["../../../../src/components/Pagination.vue?vue&type=template&id=849a166c&lang.js"],"sourcesContent":["<template>\n <div\n v-if=\"state\"\n :class=\"suit()\"\n >\n <slot\n :refine=\"refine\"\n :createURL=\"state.createURL\"\n :current-refinement=\"state.currentRefinement\"\n :nb-hits=\"state.nbHits\"\n :nb-pages=\"state.nbPages\"\n :pages=\"state.pages\"\n :is-first-page=\"state.isFirstPage\"\n :is-last-page=\"state.isLastPage\"\n >\n <ul :class=\"suit('list')\">\n <li\n :class=\"{\n [suit('item')]: true,\n [suit('item', 'firstPage')]: true,\n [suit('item', 'disabled')]: state.isFirstPage,\n }\"\n v-if=\"showFirst\"\n >\n <slot\n name=\"first\"\n :createURL=\"() => state.createURL(0)\"\n :is-first-page=\"state.isFirstPage\"\n :refine=\"() => refine(0)\"\n >\n <template v-if=\"!state.isFirstPage\">\n <a\n :class=\"suit('link')\"\n aria-label=\"First\"\n :href=\"state.createURL(0)\"\n @click.prevent=\"refine(0)\"\n >‹‹</a>\n </template>\n <template v-else>\n <span\n :class=\"suit('link')\"\n aria-label=\"First\"\n >‹‹</span>\n </template>\n </slot>\n </li>\n <li\n :class=\"{\n [suit('item')]: true,\n [suit('item', 'previousPage')]: true,\n [suit('item', 'disabled')]: state.isFirstPage,\n }\"\n v-if=\"showPrevious\"\n >\n <slot\n name=\"previous\"\n :createURL=\"() => state.createURL(state.currentRefinement - 1)\"\n :is-first-page=\"state.isFirstPage\"\n :refine=\"() => refine(state.currentRefinement - 1)\"\n >\n <template v-if=\"!state.isFirstPage\">\n <a\n :class=\"suit('link')\"\n aria-label=\"Previous\"\n :href=\"state.createURL(state.currentRefinement - 1)\"\n @click.prevent=\"refine(state.currentRefinement - 1)\"\n >‹</a>\n </template>\n <template v-else>\n <span\n :class=\"suit('link')\"\n aria-label=\"Previous\"\n >‹</span>\n </template>\n </slot>\n </li>\n\n <li\n :class=\"{\n [suit('item')]: true,\n [suit('item', 'page')]: true,\n [suit('item', 'selected')]: state.currentRefinement === page\n }\"\n v-for=\"page in state.pages\"\n :key=\"page\"\n >\n <slot\n name=\"item\"\n :page=\"page\"\n :createURL=\"() => state.createURL(page)\"\n :is-first-page=\"state.isFirstPage\"\n :is-last-page=\"state.isLastPage\"\n :refine=\"() => refine(page)\"\n >\n <a\n :class=\"suit('link')\"\n :href=\"state.createURL(page)\"\n @click.prevent=\"refine(page)\"\n >{{ page + 1 }}</a>\n </slot>\n </li>\n\n <li\n :class=\"{\n [suit('item')]: true,\n [suit('item','nextPage')]: true,\n [suit('item','disabled')]: state.isLastPage\n }\"\n v-if=\"showNext\"\n >\n <slot\n name=\"next\"\n :createURL=\"() => state.createURL(state.currentRefinement + 1)\"\n :is-last-page=\"state.isLastPage\"\n :refine=\"() => refine(state.currentRefinement + 1)\"\n >\n <template v-if=\"!state.isLastPage\">\n <a\n :class=\"suit('link')\"\n aria-label=\"Next\"\n :href=\"state.createURL(state.currentRefinement + 1)\"\n @click.prevent=\"refine(state.currentRefinement + 1)\"\n >›</a>\n </template>\n <template v-else>\n <span\n :class=\"suit('link')\"\n aria-label=\"Next\"\n >›</span>\n </template>\n </slot>\n </li>\n <li\n :class=\"{\n [suit('item')]: true,\n [suit('item','lastPage')]: true,\n [suit('item','disabled')]: state.isLastPage,\n }\"\n v-if=\"showLast\"\n >\n <slot\n name=\"last\"\n :createURL=\"() => state.createURL(state.nbPages - 1)\"\n :is-last-page=\"state.isLastPage\"\n :refine=\"() => refine(state.nbPages - 1)\"\n >\n <template v-if=\"!state.isLastPage\">\n <a\n :class=\"suit('link')\"\n aria-label=\"Last\"\n :href=\"state.createURL(state.nbPages - 1)\"\n @click.prevent=\"refine(state.nbPages - 1)\"\n >››</a>\n </template>\n <template v-else>\n <span\n :class=\"suit('link')\"\n aria-label=\"Last\"\n >››</span>\n </template>\n </slot>\n </li>\n </ul>\n </slot>\n </div>\n</template>\n\n<script>\nimport { connectPagination } from 'instantsearch.js/es/connectors';\nimport { createPanelConsumerMixin } from '../mixins/panel';\nimport { createWidgetMixin } from '../mixins/widget';\nimport { createSuitMixin } from '../mixins/suit';\n\nexport default {\n name: 'AisPagination',\n mixins: [\n createSuitMixin({ name: 'Pagination' }),\n createWidgetMixin(\n {\n connector: connectPagination,\n },\n {\n $$widgetType: 'ais.pagination',\n }\n ),\n createPanelConsumerMixin(),\n ],\n props: {\n padding: {\n type: Number,\n default: undefined,\n validator(value) {\n return value > 0;\n },\n },\n totalPages: {\n type: Number,\n default: undefined,\n validator(value) {\n return value > 0;\n },\n },\n showFirst: {\n type: Boolean,\n default: true,\n },\n showLast: {\n type: Boolean,\n default: true,\n },\n showNext: {\n type: Boolean,\n default: true,\n },\n showPrevious: {\n type: Boolean,\n default: true,\n },\n },\n computed: {\n widgetParams() {\n return {\n padding: this.padding,\n totalPages: this.totalPages,\n };\n },\n },\n emits: ['page-change'],\n methods: {\n refine(page) {\n const p = Math.min(Math.max(page, 0), this.state.nbPages - 1);\n this.state.refine(p);\n // TODO: do this in a general way\n this.$emit('page-change', p);\n },\n },\n};\n</script>\n"],"names":["_ctx","_createBlock","class","_renderSlot","refine","$options","createURL","currentRefinement","nbHits","nbPages","pages","isFirstPage","isLastPage","_createVNode","$props","href","onClick","page","key"],"mappings":"+MAEUA,aADRC,eAEGC,MAAOF,WAERG,sBACGC,OAAQC,SACRC,UAAWN,QAAMM,UACjBC,kBAAoBP,QAAMO,kBAC1BC,OAASR,QAAMQ,OACfC,QAAUT,QAAMS,QAChBC,MAAOV,QAAMU,MACbC,YAAeX,QAAMW,YACrBC,WAAcZ,QAAMY,0CAErBC,QAAKX,MAAOF,iBAOFc,iBANRb,cACGC,wHAODC,oBAEGG,4BAAiBN,QAAMM,cACvBK,YAAeX,QAAMW,YACrBP,yBAAcC,gCAEEL,QAAMW,iBASrBV,gBACGC,MAAOF,4BACG,SACZ,cAXDC,aACGC,MAAOF,4BACG,QACVe,KAAMf,QAAMM,aACZU,yCAAeX,4BACjB,wCAgBCS,oBANRb,cACGC,2HAODC,uBAEGG,4BAAiBN,QAAMM,UAAUN,QAAMO,sBACvCI,YAAeX,QAAMW,YACrBP,yBAAcC,SAAOL,QAAMO,yCAEXP,QAAMW,iBASrBV,gBACGC,MAAOF,4BACG,YACZ,aAXDC,aACGC,MAAOF,4BACG,WACVe,KAAMf,QAAMM,UAAUN,QAAMO,qBAC5BS,yCAAeX,SAAOL,QAAMO,qCAC9B,8CAWPN,WAMiBD,QAAMU,eAAdO,oBANThB,QACGC,2HAMAgB,IAAKD,IAENd,mBAEGc,KAAMA,EACNX,4BAAiBN,QAAMM,UAAUW,IACjCN,YAAeX,QAAMW,YACrBC,WAAcZ,QAAMY,WACpBR,yBAAcC,SAAOY,uBAEtBJ,OACGX,MAAOF,eACPe,KAAMf,QAAMM,UAAUW,GACtBD,6BAAeX,SAAOY,oBACrBA,2CAUAH,gBANRb,cACGC,sHAODC,mBAEGG,4BAAiBN,QAAMM,UAAUN,QAAMO,sBACvCK,WAAcZ,QAAMY,WACpBR,yBAAcC,SAAOL,QAAMO,yCAEXP,QAAMY,gBASrBX,gBACGC,MAAOF,4BACG,QACZ,aAXDC,aACGC,MAAOF,4BACG,OACVe,KAAMf,QAAMM,UAAUN,QAAMO,qBAC5BS,yCAAeX,SAAOL,QAAMO,qCAC9B,uCAgBCO,gBANRb,cACGC,sHAODC,mBAEGG,4BAAiBN,QAAMM,UAAUN,QAAMS,YACvCG,WAAcZ,QAAMY,WACpBR,yBAAcC,SAAOL,QAAMS,+BAEXT,QAAMY,gBASrBX,gBACGC,MAAOF,4BACG,QACZ,cAXDC,aACGC,MAAOF,4BACG,OACVe,KAAMf,QAAMM,UAAUN,QAAMS,WAC5BO,yCAAeX,SAAOL,QAAMS,2BAC9B"}
@@ -1,2 +1,2 @@
1
- import{createSuitMixin as t}from"../mixins/suit.js";import{createWidgetMixin as i}from"../mixins/widget.js";import{connectRange as n}from"instantsearch.js/es/connectors/index.js";import{createPanelConsumerMixin as e}from"../mixins/panel.js";var r=function(t){return t&&Boolean(t.range)&&t.range.min!==t.range.max};export default{name:"AisRangeInput",mixins:[t({name:"RangeInput"}),i({connector:n},{$$widgetType:"ais.rangeInput"}),e({mapStateToCanRefine:r})],props:{attribute:{type:String,required:!0},min:{type:Number,required:!1,default:void 0},max:{type:Number,required:!1,default:void 0},precision:{type:Number,required:!1,default:0}},data:function(){return{minInput:void 0,maxInput:void 0}},updated:function(){this.minInput=void 0,this.maxInput=void 0},computed:{widgetParams:function(){return{attribute:this.attribute,min:this.min,max:this.max,precision:this.precision}},canRefine:function(){return r(this.state)},step:function(){return 1/Math.pow(10,this.precision)},values:function(){var t=this.state.start,i=t[0],n=t[1],e=this.state.range,r=e.min,a=e.max;return{min:i!==-1/0&&i!==r?i:void 0,max:n!==1/0&&n!==a?n:void 0}}},methods:{pick:function(t,i){return null!=t?t:i},refine:function(t){var i=t.min,n=t.max;this.state.refine([i,n])}}};
1
+ import{createSuitMixin as t}from"../mixins/suit.js";import{createWidgetMixin as i}from"../mixins/widget.js";import{connectRange as e}from"instantsearch.js/es/connectors/index.js";import{createPanelConsumerMixin as n}from"../mixins/panel.js";export default{name:"AisRangeInput",mixins:[t({name:"RangeInput"}),i({connector:e},{$$widgetType:"ais.rangeInput"}),n()],props:{attribute:{type:String,required:!0},min:{type:Number,required:!1,default:void 0},max:{type:Number,required:!1,default:void 0},precision:{type:Number,required:!1,default:0}},data:function(){return{minInput:void 0,maxInput:void 0}},updated:function(){this.minInput=void 0,this.maxInput=void 0},computed:{widgetParams:function(){return{attribute:this.attribute,min:this.min,max:this.max,precision:this.precision}},step:function(){return 1/Math.pow(10,this.precision)},values:function(){var t=this.state.start,i=t[0],e=t[1],n=this.state.range,r=n.min,s=n.max;return{min:i!==-1/0&&i!==r?i:void 0,max:e!==1/0&&e!==s?e:void 0}}},methods:{pick:function(t,i){return null!=t?t:i},refine:function(t){var i=t.min,e=t.max;this.state.refine([i,e])}}};
2
2
  //# sourceMappingURL=RangeInput.vue_vue&type=script&lang.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RangeInput.vue_vue&type=script&lang.js","sources":["../../../../src/components/RangeInput.vue"],"sourcesContent":["<template>\n <div\n v-if=\"state\"\n :class=\"[suit(), !canRefine && suit('', 'noRefinement')]\"\n >\n <slot\n :current-refinement=\"values\"\n :refine=\"refine\"\n :can-refine=\"canRefine\"\n :range=\"state.range\"\n :send-event=\"state.sendEvent\"\n >\n <form\n :class=\"suit('form')\"\n @submit.prevent=\"refine({ min: pick(minInput, values.min), max: pick(maxInput, values.max) })\"\n >\n <label :class=\"suit('label')\">\n <slot name=\"minLabel\" />\n <input\n type=\"number\"\n :class=\"[suit('input'), suit('input', 'min')]\"\n :step=\"step\"\n :min=\"state.range.min\"\n :max=\"state.range.max\"\n :placeholder=\"state.range.min\"\n :value=\"values.min\"\n @change=\"minInput = $event.currentTarget.value\"\n >\n </label>\n <span :class=\"suit('separator')\">\n <slot name=\"separator\">to</slot>\n </span>\n <label :class=\"suit('label')\">\n <slot name=\"maxLabel\" />\n <input\n :class=\"[suit('input'), suit('input', 'max')]\"\n type=\"number\"\n :step=\"step\"\n :min=\"state.range.min\"\n :max=\"state.range.max\"\n :placeholder=\"state.range.max\"\n :value=\"values.max\"\n @change=\"maxInput = $event.currentTarget.value\"\n >\n </label>\n <button\n :class=\"suit('submit')\"\n type=\"submit\"\n >\n <slot name=\"submitLabel\">Go</slot>\n </button>\n </form>\n </slot>\n </div>\n</template>\n\n<script>\nimport { connectRange } from 'instantsearch.js/es/connectors';\nimport { createWidgetMixin } from '../mixins/widget';\nimport { createPanelConsumerMixin } from '../mixins/panel';\nimport { createSuitMixin } from '../mixins/suit';\n\nconst mapStateToCanRefine = state =>\n state && Boolean(state.range) && state.range.min !== state.range.max;\n\nexport default {\n name: 'AisRangeInput',\n mixins: [\n createSuitMixin({ name: 'RangeInput' }),\n createWidgetMixin(\n {\n connector: connectRange,\n },\n {\n $$widgetType: 'ais.rangeInput',\n }\n ),\n createPanelConsumerMixin({\n mapStateToCanRefine,\n }),\n ],\n props: {\n attribute: {\n type: String,\n required: true,\n },\n min: {\n type: Number,\n required: false,\n default: undefined,\n },\n max: {\n type: Number,\n required: false,\n default: undefined,\n },\n precision: {\n type: Number,\n required: false,\n default: 0,\n },\n },\n data() {\n return {\n minInput: undefined,\n maxInput: undefined,\n };\n },\n updated() {\n this.minInput = undefined;\n this.maxInput = undefined;\n },\n computed: {\n widgetParams() {\n return {\n attribute: this.attribute,\n min: this.min,\n max: this.max,\n precision: this.precision,\n };\n },\n canRefine() {\n return mapStateToCanRefine(this.state);\n },\n step() {\n return 1 / Math.pow(10, this.precision);\n },\n values() {\n const [minValue, maxValue] = this.state.start;\n const { min: minRange, max: maxRange } = this.state.range;\n\n return {\n min:\n minValue !== -Infinity && minValue !== minRange\n ? minValue\n : undefined,\n max:\n maxValue !== Infinity && maxValue !== maxRange ? maxValue : undefined,\n };\n },\n },\n methods: {\n pick(first, second) {\n if (first !== null && first !== undefined) {\n return first;\n } else {\n return second;\n }\n },\n refine({ min, max }) {\n this.state.refine([min, max]);\n },\n },\n};\n</script>\n"],"names":["const","mapStateToCanRefine","state","Boolean","range","min","max","name","mixins","createSuitMixin","createWidgetMixin","connector","connectRange","$$widgetType","createPanelConsumerMixin","props","attribute","type","String","required","Number","default","undefined","precision","data","minInput","maxInput","updated","computed","widgetParams","this","canRefine","step","Math","pow","values","start","minValue","Infinity","minRange","maxValue","maxRange","methods","pick","first","second","refine","ref"],"mappings":"iPA8DAA,IAAMC,WAAsBC,UAC1BA,GAASC,QAAQD,EAAME,QAAUF,EAAME,MAAMC,MAAQH,EAAME,MAAME,mBAEpD,CACbC,KAAM,gBACNC,OAAQ,CACNC,EAAgB,CAAEF,KAAM,eACxBG,EACE,CACEC,UAAWC,GAEb,CACEC,aAAc,mBAGlBC,EAAyB,qBACvBb,KAGJc,MAAO,CACLC,UAAW,CACTC,KAAMC,OACNC,UAAU,GAEZd,IAAK,CACHY,KAAMG,OACND,UAAU,EACVE,aAASC,GAEXhB,IAAK,CACHW,KAAMG,OACND,UAAU,EACVE,aAASC,GAEXC,UAAW,CACTN,KAAMG,OACND,UAAU,EACVE,QAAS,IAGbG,sBACS,CACLC,cAAUH,EACVI,cAAUJ,IAGdK,wBACOF,cAAWH,OACXI,cAAWJ,GAElBM,SAAU,CACRC,8BACS,CACLb,UAAWc,KAAKd,UAChBX,IAAKyB,KAAKzB,IACVC,IAAKwB,KAAKxB,IACViB,UAAWO,KAAKP,YAGpBQ,4BACS9B,EAAoB6B,KAAK5B,QAElC8B,uBACS,EAAIC,KAAKC,IAAI,GAAIJ,KAAKP,YAE/BY,wBAC+BL,KAAK5B,MAAMkC,sBACCN,KAAK5B,MAAME,4BAE7C,CACLC,IACEgC,KAAcC,EAAAA,GAAYD,IAAaE,EACnCF,OACAf,EACNhB,IACEkC,IAAaF,EAAAA,GAAYE,IAAaC,EAAWD,OAAWlB,KAIpEoB,QAAS,CACPC,cAAKC,EAAOC,UACND,MAAAA,EACKA,EAEAC,GAGXC,gBAAOC,4BACA7C,MAAM4C,OAAO,CAACzC,EAAKC"}
1
+ {"version":3,"file":"RangeInput.vue_vue&type=script&lang.js","sources":["../../../../src/components/RangeInput.vue"],"sourcesContent":["<template>\n <div\n v-if=\"state\"\n :class=\"[suit(), !state.canRefine && suit('', 'noRefinement')]\"\n >\n <slot\n :current-refinement=\"values\"\n :refine=\"refine\"\n :can-refine=\"state.canRefine\"\n :range=\"state.range\"\n :send-event=\"state.sendEvent\"\n >\n <form\n :class=\"suit('form')\"\n @submit.prevent=\"refine({ min: pick(minInput, values.min), max: pick(maxInput, values.max) })\"\n >\n <label :class=\"suit('label')\">\n <slot name=\"minLabel\" />\n <input\n type=\"number\"\n :class=\"[suit('input'), suit('input', 'min')]\"\n :step=\"step\"\n :min=\"state.range.min\"\n :max=\"state.range.max\"\n :placeholder=\"state.range.min\"\n :value=\"values.min\"\n @change=\"minInput = $event.currentTarget.value\"\n >\n </label>\n <span :class=\"suit('separator')\">\n <slot name=\"separator\">to</slot>\n </span>\n <label :class=\"suit('label')\">\n <slot name=\"maxLabel\" />\n <input\n :class=\"[suit('input'), suit('input', 'max')]\"\n type=\"number\"\n :step=\"step\"\n :min=\"state.range.min\"\n :max=\"state.range.max\"\n :placeholder=\"state.range.max\"\n :value=\"values.max\"\n @change=\"maxInput = $event.currentTarget.value\"\n >\n </label>\n <button\n :class=\"suit('submit')\"\n type=\"submit\"\n >\n <slot name=\"submitLabel\">Go</slot>\n </button>\n </form>\n </slot>\n </div>\n</template>\n\n<script>\nimport { connectRange } from 'instantsearch.js/es/connectors';\nimport { createWidgetMixin } from '../mixins/widget';\nimport { createPanelConsumerMixin } from '../mixins/panel';\nimport { createSuitMixin } from '../mixins/suit';\n\nexport default {\n name: 'AisRangeInput',\n mixins: [\n createSuitMixin({ name: 'RangeInput' }),\n createWidgetMixin(\n {\n connector: connectRange,\n },\n {\n $$widgetType: 'ais.rangeInput',\n }\n ),\n createPanelConsumerMixin(),\n ],\n props: {\n attribute: {\n type: String,\n required: true,\n },\n min: {\n type: Number,\n required: false,\n default: undefined,\n },\n max: {\n type: Number,\n required: false,\n default: undefined,\n },\n precision: {\n type: Number,\n required: false,\n default: 0,\n },\n },\n data() {\n return {\n minInput: undefined,\n maxInput: undefined,\n };\n },\n updated() {\n this.minInput = undefined;\n this.maxInput = undefined;\n },\n computed: {\n widgetParams() {\n return {\n attribute: this.attribute,\n min: this.min,\n max: this.max,\n precision: this.precision,\n };\n },\n step() {\n return 1 / Math.pow(10, this.precision);\n },\n values() {\n const [minValue, maxValue] = this.state.start;\n const { min: minRange, max: maxRange } = this.state.range;\n\n return {\n min:\n minValue !== -Infinity && minValue !== minRange\n ? minValue\n : undefined,\n max:\n maxValue !== Infinity && maxValue !== maxRange ? maxValue : undefined,\n };\n },\n },\n methods: {\n pick(first, second) {\n if (first !== null && first !== undefined) {\n return first;\n } else {\n return second;\n }\n },\n refine({ min, max }) {\n this.state.refine([min, max]);\n },\n },\n};\n</script>\n"],"names":["name","mixins","createSuitMixin","createWidgetMixin","connector","connectRange","$$widgetType","createPanelConsumerMixin","props","attribute","type","String","required","min","Number","default","undefined","max","precision","data","minInput","maxInput","updated","computed","widgetParams","this","step","Math","pow","values","state","start","range","minValue","Infinity","minRange","maxValue","maxRange","methods","pick","first","second","refine","ref"],"mappings":"+PA8De,CACbA,KAAM,gBACNC,OAAQ,CACNC,EAAgB,CAAEF,KAAM,eACxBG,EACE,CACEC,UAAWC,GAEb,CACEC,aAAc,mBAGlBC,KAEFC,MAAO,CACLC,UAAW,CACTC,KAAMC,OACNC,UAAU,GAEZC,IAAK,CACHH,KAAMI,OACNF,UAAU,EACVG,aAASC,GAEXC,IAAK,CACHP,KAAMI,OACNF,UAAU,EACVG,aAASC,GAEXE,UAAW,CACTR,KAAMI,OACNF,UAAU,EACVG,QAAS,IAGbI,sBACS,CACLC,cAAUJ,EACVK,cAAUL,IAGdM,wBACOF,cAAWJ,OACXK,cAAWL,GAElBO,SAAU,CACRC,8BACS,CACLf,UAAWgB,KAAKhB,UAChBI,IAAKY,KAAKZ,IACVI,IAAKQ,KAAKR,IACVC,UAAWO,KAAKP,YAGpBQ,uBACS,EAAIC,KAAKC,IAAI,GAAIH,KAAKP,YAE/BW,wBAC+BJ,KAAKK,MAAMC,sBACCN,KAAKK,MAAME,4BAE7C,CACLnB,IACEoB,KAAcC,EAAAA,GAAYD,IAAaE,EACnCF,OACAjB,EACNC,IACEmB,IAAaF,EAAAA,GAAYE,IAAaC,EAAWD,OAAWpB,KAIpEsB,QAAS,CACPC,cAAKC,EAAOC,UACND,MAAAA,EACKA,EAEAC,GAGXC,gBAAOC,4BACAb,MAAMY,OAAO,CAAC7B,EAAKI"}
@@ -1,2 +1,2 @@
1
- import{openBlock as e,createBlock as t,renderSlot as n,createVNode as a,withModifiers as s,createCommentVNode as u,createTextVNode as i}from"vue";var r=i("to"),l=i("Go");function m(i,m,p,o,c,f){return i.state?(e(),t("div",{key:0,class:[i.suit(),!f.canRefine&&i.suit("","noRefinement")]},[n(i.$slots,"default",{currentRefinement:f.values,refine:f.refine,canRefine:f.canRefine,range:i.state.range,sendEvent:i.state.sendEvent},function(){return[a("form",{class:i.suit("form"),onSubmit:m[3]||(m[3]=s(function(e){return f.refine({min:f.pick(c.minInput,f.values.min),max:f.pick(c.maxInput,f.values.max)})},["prevent"]))},[a("label",{class:i.suit("label")},[n(i.$slots,"minLabel"),a("input",{type:"number",class:[i.suit("input"),i.suit("input","min")],step:f.step,min:i.state.range.min,max:i.state.range.max,placeholder:i.state.range.min,value:f.values.min,onChange:m[1]||(m[1]=function(e){return c.minInput=e.currentTarget.value})},null,42,["step","min","max","placeholder","value"])],2),a("span",{class:i.suit("separator")},[n(i.$slots,"separator",{},function(){return[r]})],2),a("label",{class:i.suit("label")},[n(i.$slots,"maxLabel"),a("input",{class:[i.suit("input"),i.suit("input","max")],type:"number",step:f.step,min:i.state.range.min,max:i.state.range.max,placeholder:i.state.range.max,value:f.values.max,onChange:m[2]||(m[2]=function(e){return c.maxInput=e.currentTarget.value})},null,42,["step","min","max","placeholder","value"])],2),a("button",{class:i.suit("submit"),type:"submit"},[n(i.$slots,"submitLabel",{},function(){return[l]})],2)],34)]})],2)):u("v-if",!0)}export{m as render};
1
+ import{openBlock as e,createBlock as t,renderSlot as n,createVNode as a,withModifiers as s,createCommentVNode as u,createTextVNode as i}from"vue";var r=i("to"),l=i("Go");function m(i,m,p,o,c,f){return i.state?(e(),t("div",{key:0,class:[i.suit(),!i.state.canRefine&&i.suit("","noRefinement")]},[n(i.$slots,"default",{currentRefinement:f.values,refine:f.refine,canRefine:i.state.canRefine,range:i.state.range,sendEvent:i.state.sendEvent},function(){return[a("form",{class:i.suit("form"),onSubmit:m[3]||(m[3]=s(function(e){return f.refine({min:f.pick(c.minInput,f.values.min),max:f.pick(c.maxInput,f.values.max)})},["prevent"]))},[a("label",{class:i.suit("label")},[n(i.$slots,"minLabel"),a("input",{type:"number",class:[i.suit("input"),i.suit("input","min")],step:f.step,min:i.state.range.min,max:i.state.range.max,placeholder:i.state.range.min,value:f.values.min,onChange:m[1]||(m[1]=function(e){return c.minInput=e.currentTarget.value})},null,42,["step","min","max","placeholder","value"])],2),a("span",{class:i.suit("separator")},[n(i.$slots,"separator",{},function(){return[r]})],2),a("label",{class:i.suit("label")},[n(i.$slots,"maxLabel"),a("input",{class:[i.suit("input"),i.suit("input","max")],type:"number",step:f.step,min:i.state.range.min,max:i.state.range.max,placeholder:i.state.range.max,value:f.values.max,onChange:m[2]||(m[2]=function(e){return c.maxInput=e.currentTarget.value})},null,42,["step","min","max","placeholder","value"])],2),a("button",{class:i.suit("submit"),type:"submit"},[n(i.$slots,"submitLabel",{},function(){return[l]})],2)],34)]})],2)):u("v-if",!0)}export{m as render};
2
2
  //# sourceMappingURL=RangeInput.vue_vue&type=template&id=1e17783d&lang.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RangeInput.vue_vue&type=template&id=1e17783d&lang.js","sources":["../../../../src/components/RangeInput.vue?vue&type=template&id=1e17783d&lang.js"],"sourcesContent":["<template>\n <div\n v-if=\"state\"\n :class=\"[suit(), !canRefine && suit('', 'noRefinement')]\"\n >\n <slot\n :current-refinement=\"values\"\n :refine=\"refine\"\n :can-refine=\"canRefine\"\n :range=\"state.range\"\n :send-event=\"state.sendEvent\"\n >\n <form\n :class=\"suit('form')\"\n @submit.prevent=\"refine({ min: pick(minInput, values.min), max: pick(maxInput, values.max) })\"\n >\n <label :class=\"suit('label')\">\n <slot name=\"minLabel\" />\n <input\n type=\"number\"\n :class=\"[suit('input'), suit('input', 'min')]\"\n :step=\"step\"\n :min=\"state.range.min\"\n :max=\"state.range.max\"\n :placeholder=\"state.range.min\"\n :value=\"values.min\"\n @change=\"minInput = $event.currentTarget.value\"\n >\n </label>\n <span :class=\"suit('separator')\">\n <slot name=\"separator\">to</slot>\n </span>\n <label :class=\"suit('label')\">\n <slot name=\"maxLabel\" />\n <input\n :class=\"[suit('input'), suit('input', 'max')]\"\n type=\"number\"\n :step=\"step\"\n :min=\"state.range.min\"\n :max=\"state.range.max\"\n :placeholder=\"state.range.max\"\n :value=\"values.max\"\n @change=\"maxInput = $event.currentTarget.value\"\n >\n </label>\n <button\n :class=\"suit('submit')\"\n type=\"submit\"\n >\n <slot name=\"submitLabel\">Go</slot>\n </button>\n </form>\n </slot>\n </div>\n</template>\n\n<script>\nimport { connectRange } from 'instantsearch.js/es/connectors';\nimport { createWidgetMixin } from '../mixins/widget';\nimport { createPanelConsumerMixin } from '../mixins/panel';\nimport { createSuitMixin } from '../mixins/suit';\n\nconst mapStateToCanRefine = state =>\n state && Boolean(state.range) && state.range.min !== state.range.max;\n\nexport default {\n name: 'AisRangeInput',\n mixins: [\n createSuitMixin({ name: 'RangeInput' }),\n createWidgetMixin(\n {\n connector: connectRange,\n },\n {\n $$widgetType: 'ais.rangeInput',\n }\n ),\n createPanelConsumerMixin({\n mapStateToCanRefine,\n }),\n ],\n props: {\n attribute: {\n type: String,\n required: true,\n },\n min: {\n type: Number,\n required: false,\n default: undefined,\n },\n max: {\n type: Number,\n required: false,\n default: undefined,\n },\n precision: {\n type: Number,\n required: false,\n default: 0,\n },\n },\n data() {\n return {\n minInput: undefined,\n maxInput: undefined,\n };\n },\n updated() {\n this.minInput = undefined;\n this.maxInput = undefined;\n },\n computed: {\n widgetParams() {\n return {\n attribute: this.attribute,\n min: this.min,\n max: this.max,\n precision: this.precision,\n };\n },\n canRefine() {\n return mapStateToCanRefine(this.state);\n },\n step() {\n return 1 / Math.pow(10, this.precision);\n },\n values() {\n const [minValue, maxValue] = this.state.start;\n const { min: minRange, max: maxRange } = this.state.range;\n\n return {\n min:\n minValue !== -Infinity && minValue !== minRange\n ? minValue\n : undefined,\n max:\n maxValue !== Infinity && maxValue !== maxRange ? maxValue : undefined,\n };\n },\n },\n methods: {\n pick(first, second) {\n if (first !== null && first !== undefined) {\n return first;\n } else {\n return second;\n }\n },\n refine({ min, max }) {\n this.state.refine([min, max]);\n },\n },\n};\n</script>\n"],"names":["_ctx","_createBlock","class","$options","_renderSlot","currentRefinement","refine","canRefine","range","sendEvent","_createVNode","onSubmit","$data","min","max","type","step","placeholder","value","onChange","$event","currentTarget"],"mappings":"0JA8BiC,UAmBE,qCA/CzBA,aADRC,eAEGC,OAAQF,UAASG,aAAaH,6BAE/BI,sBACGC,kBAAoBF,SACpBG,OAAQH,SACRI,UAAYJ,YACZK,MAAOR,QAAMQ,MACbC,UAAYT,QAAMS,6BAEnBC,UACGR,MAAOF,eACPW,0CAAgBR,cAAcA,OAAKS,WAAUT,SAAOU,SAAWV,OAAKS,WAAUT,SAAOW,wBAEtFJ,WAAQR,MAAOF,kBACbI,uBACAM,WACEK,KAAK,SACJb,OAAQF,gBAAeA,uBACvBgB,KAAMb,OACNU,IAAKb,QAAMQ,MAAMK,IACjBC,IAAKd,QAAMQ,MAAMM,IACjBG,YAAajB,QAAMQ,MAAMK,IACzBK,MAAOf,SAAOU,IACdM,wCAAQP,WAAWQ,EAAOC,cAAcH,iEAG7CR,UAAOR,MAAOF,sBACZI,qDAEFM,WAAQR,MAAOF,kBACbI,uBACAM,WACGR,OAAQF,gBAAeA,uBACxBe,KAAK,SACJC,KAAMb,OACNU,IAAKb,QAAMQ,MAAMK,IACjBC,IAAKd,QAAMQ,MAAMM,IACjBG,YAAajB,QAAMQ,MAAMM,IACzBI,MAAOf,SAAOW,IACdK,wCAAQP,WAAWQ,EAAOC,cAAcH,iEAG7CR,YACGR,MAAOF,iBACRe,KAAK,WAELX"}
1
+ {"version":3,"file":"RangeInput.vue_vue&type=template&id=1e17783d&lang.js","sources":["../../../../src/components/RangeInput.vue?vue&type=template&id=1e17783d&lang.js"],"sourcesContent":["<template>\n <div\n v-if=\"state\"\n :class=\"[suit(), !state.canRefine && suit('', 'noRefinement')]\"\n >\n <slot\n :current-refinement=\"values\"\n :refine=\"refine\"\n :can-refine=\"state.canRefine\"\n :range=\"state.range\"\n :send-event=\"state.sendEvent\"\n >\n <form\n :class=\"suit('form')\"\n @submit.prevent=\"refine({ min: pick(minInput, values.min), max: pick(maxInput, values.max) })\"\n >\n <label :class=\"suit('label')\">\n <slot name=\"minLabel\" />\n <input\n type=\"number\"\n :class=\"[suit('input'), suit('input', 'min')]\"\n :step=\"step\"\n :min=\"state.range.min\"\n :max=\"state.range.max\"\n :placeholder=\"state.range.min\"\n :value=\"values.min\"\n @change=\"minInput = $event.currentTarget.value\"\n >\n </label>\n <span :class=\"suit('separator')\">\n <slot name=\"separator\">to</slot>\n </span>\n <label :class=\"suit('label')\">\n <slot name=\"maxLabel\" />\n <input\n :class=\"[suit('input'), suit('input', 'max')]\"\n type=\"number\"\n :step=\"step\"\n :min=\"state.range.min\"\n :max=\"state.range.max\"\n :placeholder=\"state.range.max\"\n :value=\"values.max\"\n @change=\"maxInput = $event.currentTarget.value\"\n >\n </label>\n <button\n :class=\"suit('submit')\"\n type=\"submit\"\n >\n <slot name=\"submitLabel\">Go</slot>\n </button>\n </form>\n </slot>\n </div>\n</template>\n\n<script>\nimport { connectRange } from 'instantsearch.js/es/connectors';\nimport { createWidgetMixin } from '../mixins/widget';\nimport { createPanelConsumerMixin } from '../mixins/panel';\nimport { createSuitMixin } from '../mixins/suit';\n\nexport default {\n name: 'AisRangeInput',\n mixins: [\n createSuitMixin({ name: 'RangeInput' }),\n createWidgetMixin(\n {\n connector: connectRange,\n },\n {\n $$widgetType: 'ais.rangeInput',\n }\n ),\n createPanelConsumerMixin(),\n ],\n props: {\n attribute: {\n type: String,\n required: true,\n },\n min: {\n type: Number,\n required: false,\n default: undefined,\n },\n max: {\n type: Number,\n required: false,\n default: undefined,\n },\n precision: {\n type: Number,\n required: false,\n default: 0,\n },\n },\n data() {\n return {\n minInput: undefined,\n maxInput: undefined,\n };\n },\n updated() {\n this.minInput = undefined;\n this.maxInput = undefined;\n },\n computed: {\n widgetParams() {\n return {\n attribute: this.attribute,\n min: this.min,\n max: this.max,\n precision: this.precision,\n };\n },\n step() {\n return 1 / Math.pow(10, this.precision);\n },\n values() {\n const [minValue, maxValue] = this.state.start;\n const { min: minRange, max: maxRange } = this.state.range;\n\n return {\n min:\n minValue !== -Infinity && minValue !== minRange\n ? minValue\n : undefined,\n max:\n maxValue !== Infinity && maxValue !== maxRange ? maxValue : undefined,\n };\n },\n },\n methods: {\n pick(first, second) {\n if (first !== null && first !== undefined) {\n return first;\n } else {\n return second;\n }\n },\n refine({ min, max }) {\n this.state.refine([min, max]);\n },\n },\n};\n</script>\n"],"names":["_ctx","_createBlock","class","canRefine","_renderSlot","currentRefinement","$options","refine","range","sendEvent","_createVNode","onSubmit","$data","min","max","type","step","placeholder","value","onChange","$event","currentTarget"],"mappings":"0JA8BiC,UAmBE,qCA/CzBA,aADRC,eAEGC,OAAQF,UAASA,QAAMG,WAAaH,6BAErCI,sBACGC,kBAAoBC,SACpBC,OAAQD,SACRH,UAAYH,QAAMG,UAClBK,MAAOR,QAAMQ,MACbC,UAAYT,QAAMS,6BAEnBC,UACGR,MAAOF,eACPW,0CAAgBL,cAAcA,OAAKM,WAAUN,SAAOO,SAAWP,OAAKM,WAAUN,SAAOQ,wBAEtFJ,WAAQR,MAAOF,kBACbI,uBACAM,WACEK,KAAK,SACJb,OAAQF,gBAAeA,uBACvBgB,KAAMV,OACNO,IAAKb,QAAMQ,MAAMK,IACjBC,IAAKd,QAAMQ,MAAMM,IACjBG,YAAajB,QAAMQ,MAAMK,IACzBK,MAAOZ,SAAOO,IACdM,wCAAQP,WAAWQ,EAAOC,cAAcH,iEAG7CR,UAAOR,MAAOF,sBACZI,qDAEFM,WAAQR,MAAOF,kBACbI,uBACAM,WACGR,OAAQF,gBAAeA,uBACxBe,KAAK,SACJC,KAAMV,OACNO,IAAKb,QAAMQ,MAAMK,IACjBC,IAAKd,QAAMQ,MAAMM,IACjBG,YAAajB,QAAMQ,MAAMM,IACzBI,MAAOZ,SAAOQ,IACdK,wCAAQP,WAAWQ,EAAOC,cAAcH,iEAG7CR,YACGR,MAAOF,iBACRe,KAAK,WAELX"}
@@ -1,2 +1,2 @@
1
- import{createSuitMixin as t}from"../mixins/suit.js";import{createWidgetMixin as i}from"../mixins/widget.js";import{connectRatingMenu as e}from"instantsearch.js/es/connectors/index.js";import{createPanelConsumerMixin as n}from"../mixins/panel.js";export default{name:"AisRatingMenu",mixins:[t({name:"RatingMenu"}),i({connector:e},{$$widgetType:"ais.ratingMenu"}),n({mapStateToCanRefine:function(t){return!1===t.hasNoResults}})],props:{attribute:{type:String,required:!0},max:{type:Number,default:void 0}},computed:{widgetParams:function(){return{attribute:this.attribute,max:this.max}}}};
1
+ import{createSuitMixin as t}from"../mixins/suit.js";import{createWidgetMixin as i}from"../mixins/widget.js";import{connectRatingMenu as e}from"instantsearch.js/es/connectors/index.js";import{createPanelConsumerMixin as n}from"../mixins/panel.js";export default{name:"AisRatingMenu",mixins:[t({name:"RatingMenu"}),i({connector:e},{$$widgetType:"ais.ratingMenu"}),n()],props:{attribute:{type:String,required:!0},max:{type:Number,default:void 0}},computed:{widgetParams:function(){return{attribute:this.attribute,max:this.max}}}};
2
2
  //# sourceMappingURL=RatingMenu.vue_vue&type=script&lang.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RatingMenu.vue_vue&type=script&lang.js","sources":["../../../../src/components/RatingMenu.vue"],"sourcesContent":["<template>\n <div\n v-if=\"state\"\n :class=\"suit()\"\n >\n <slot\n :items=\"state.items\"\n :refine=\"state.refine\"\n :createURL=\"state.createURL\"\n :send-event=\"state.sendEvent\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n style=\"display: none;\"\n >\n <symbol\n id=\"ais-RatingMenu-starSymbol\"\n viewBox=\"0 0 24 24\"\n >\n <path d=\"M12 .288l2.833 8.718h9.167l-7.417 5.389 2.833 8.718-7.416-5.388-7.417 5.388 2.833-8.718-7.416-5.389h9.167z\" />\n </symbol>\n <symbol\n id=\"ais-RatingMenu-starEmptySymbol\"\n viewBox=\"0 0 24 24\"\n >\n <path d=\"M12 6.76l1.379 4.246h4.465l-3.612 2.625 1.379 4.246-3.611-2.625-3.612 2.625 1.379-4.246-3.612-2.625h4.465l1.38-4.246zm0-6.472l-2.833 8.718h-9.167l7.416 5.389-2.833 8.718 7.417-5.388 7.416 5.388-2.833-8.718 7.417-5.389h-9.167l-2.833-8.718z\" />\n </symbol>\n </svg>\n\n <ul :class=\"suit('list')\">\n <li\n v-for=\"(item, key) in state.items\"\n :key=\"key\"\n :class=\"[suit('item'), item.isRefined && suit('item', 'selected')]\"\n >\n <a\n :href=\"state.createURL(item.value)\"\n :aria-label=\"`${item.value} & Up`\"\n :class=\"suit('link')\"\n @click.prevent=\"state.refine(item.value)\"\n >\n <template v-for=\"(full, n) in item.stars\">\n <svg\n v-if=\"full\"\n aria-hidden=\"true\"\n width=\"24\"\n height=\"24\"\n :class=\"[suit('starIcon'), suit('starIcon--full')]\"\n :key=\"n + '-full'\"\n >\n <use xlink:href=\"#ais-RatingMenu-starSymbol\" />\n </svg>\n\n <svg\n v-else\n :class=\"[suit('starIcon'), suit('starIcon--empty')]\"\n aria-hidden=\"true\"\n width=\"24\"\n height=\"24\"\n :key=\"n + '-empty'\"\n >\n <use xlink:href=\"#ais-RatingMenu-starEmptySymbol\" />\n </svg>\n </template>\n\n <span\n :class=\"suit('label')\"\n aria-hidden=\"true\"\n >\n <slot name=\"andUp\">&amp; Up</slot>\n </span>\n <span :class=\"suit('count')\">{{ item.count }}</span>\n </a>\n </li>\n </ul>\n </slot>\n </div>\n</template>\n\n<script>\nimport { connectRatingMenu } from 'instantsearch.js/es/connectors';\nimport { createPanelConsumerMixin } from '../mixins/panel';\nimport { createWidgetMixin } from '../mixins/widget';\nimport { createSuitMixin } from '../mixins/suit';\n\nexport default {\n name: 'AisRatingMenu',\n mixins: [\n createSuitMixin({ name: 'RatingMenu' }),\n createWidgetMixin(\n {\n connector: connectRatingMenu,\n },\n {\n $$widgetType: 'ais.ratingMenu',\n }\n ),\n createPanelConsumerMixin({\n mapStateToCanRefine: state => state.hasNoResults === false,\n }),\n ],\n props: {\n attribute: {\n type: String,\n required: true,\n },\n max: {\n type: Number,\n default: undefined,\n },\n },\n computed: {\n widgetParams() {\n return {\n attribute: this.attribute,\n max: this.max,\n };\n },\n },\n};\n</script>\n"],"names":["name","mixins","createSuitMixin","createWidgetMixin","connector","connectRatingMenu","$$widgetType","createPanelConsumerMixin","mapStateToCanRefine","state","hasNoResults","props","attribute","type","String","required","max","Number","default","undefined","computed","widgetParams","this"],"mappings":"oQAqFe,CACbA,KAAM,gBACNC,OAAQ,CACNC,EAAgB,CAAEF,KAAM,eACxBG,EACE,CACEC,UAAWC,GAEb,CACEC,aAAc,mBAGlBC,EAAyB,CACvBC,6BAAqBC,UAAgC,IAAvBA,EAAMC,iBAGxCC,MAAO,CACLC,UAAW,CACTC,KAAMC,OACNC,UAAU,GAEZC,IAAK,CACHH,KAAMI,OACNC,aAASC,IAGbC,SAAU,CACRC,8BACS,CACLT,UAAWU,KAAKV,UAChBI,IAAKM,KAAKN"}
1
+ {"version":3,"file":"RatingMenu.vue_vue&type=script&lang.js","sources":["../../../../src/components/RatingMenu.vue"],"sourcesContent":["<template>\n <div\n v-if=\"state\"\n :class=\"suit()\"\n >\n <slot\n :items=\"state.items\"\n :refine=\"state.refine\"\n :createURL=\"state.createURL\"\n :send-event=\"state.sendEvent\"\n :can-refine=\"state.canRefine\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n style=\"display: none;\"\n >\n <symbol\n id=\"ais-RatingMenu-starSymbol\"\n viewBox=\"0 0 24 24\"\n >\n <path d=\"M12 .288l2.833 8.718h9.167l-7.417 5.389 2.833 8.718-7.416-5.388-7.417 5.388 2.833-8.718-7.416-5.389h9.167z\" />\n </symbol>\n <symbol\n id=\"ais-RatingMenu-starEmptySymbol\"\n viewBox=\"0 0 24 24\"\n >\n <path d=\"M12 6.76l1.379 4.246h4.465l-3.612 2.625 1.379 4.246-3.611-2.625-3.612 2.625 1.379-4.246-3.612-2.625h4.465l1.38-4.246zm0-6.472l-2.833 8.718h-9.167l7.416 5.389-2.833 8.718 7.417-5.388 7.416 5.388-2.833-8.718 7.417-5.389h-9.167l-2.833-8.718z\" />\n </symbol>\n </svg>\n\n <ul :class=\"suit('list')\">\n <li\n v-for=\"(item, key) in state.items\"\n :key=\"key\"\n :class=\"[suit('item'), item.isRefined && suit('item', 'selected')]\"\n >\n <a\n :href=\"state.createURL(item.value)\"\n :aria-label=\"`${item.value} & Up`\"\n :class=\"suit('link')\"\n @click.prevent=\"state.refine(item.value)\"\n >\n <template v-for=\"(full, n) in item.stars\">\n <svg\n v-if=\"full\"\n aria-hidden=\"true\"\n width=\"24\"\n height=\"24\"\n :class=\"[suit('starIcon'), suit('starIcon--full')]\"\n :key=\"n + '-full'\"\n >\n <use xlink:href=\"#ais-RatingMenu-starSymbol\" />\n </svg>\n\n <svg\n v-else\n :class=\"[suit('starIcon'), suit('starIcon--empty')]\"\n aria-hidden=\"true\"\n width=\"24\"\n height=\"24\"\n :key=\"n + '-empty'\"\n >\n <use xlink:href=\"#ais-RatingMenu-starEmptySymbol\" />\n </svg>\n </template>\n\n <span\n :class=\"suit('label')\"\n aria-hidden=\"true\"\n >\n <slot name=\"andUp\">&amp; Up</slot>\n </span>\n <span :class=\"suit('count')\">{{ item.count }}</span>\n </a>\n </li>\n </ul>\n </slot>\n </div>\n</template>\n\n<script>\nimport { connectRatingMenu } from 'instantsearch.js/es/connectors';\nimport { createPanelConsumerMixin } from '../mixins/panel';\nimport { createWidgetMixin } from '../mixins/widget';\nimport { createSuitMixin } from '../mixins/suit';\n\nexport default {\n name: 'AisRatingMenu',\n mixins: [\n createSuitMixin({ name: 'RatingMenu' }),\n createWidgetMixin(\n {\n connector: connectRatingMenu,\n },\n {\n $$widgetType: 'ais.ratingMenu',\n }\n ),\n createPanelConsumerMixin(),\n ],\n props: {\n attribute: {\n type: String,\n required: true,\n },\n max: {\n type: Number,\n default: undefined,\n },\n },\n computed: {\n widgetParams() {\n return {\n attribute: this.attribute,\n max: this.max,\n };\n },\n },\n};\n</script>\n"],"names":["name","mixins","createSuitMixin","createWidgetMixin","connector","connectRatingMenu","$$widgetType","createPanelConsumerMixin","props","attribute","type","String","required","max","Number","default","undefined","computed","widgetParams","this"],"mappings":"oQAsFe,CACbA,KAAM,gBACNC,OAAQ,CACNC,EAAgB,CAAEF,KAAM,eACxBG,EACE,CACEC,UAAWC,GAEb,CACEC,aAAc,mBAGlBC,KAEFC,MAAO,CACLC,UAAW,CACTC,KAAMC,OACNC,UAAU,GAEZC,IAAK,CACHH,KAAMI,OACNC,aAASC,IAGbC,SAAU,CACRC,8BACS,CACLT,UAAWU,KAAKV,UAChBI,IAAKM,KAAKN"}
@@ -1,2 +1,2 @@
1
- import{openBlock as t,createBlock as e,renderSlot as s,createVNode as i,Fragment as a,renderList as l,withModifiers as n,toDisplayString as u,createCommentVNode as r,createTextVNode as o}from"vue";var c=i("svg",{xmlns:"http://www.w3.org/2000/svg",style:{display:"none"}},[i("symbol",{id:"ais-RatingMenu-starSymbol",viewBox:"0 0 24 24"},[i("path",{d:"M12 .288l2.833 8.718h9.167l-7.417 5.389 2.833 8.718-7.416-5.388-7.417 5.388 2.833-8.718-7.416-5.389h9.167z"})]),i("symbol",{id:"ais-RatingMenu-starEmptySymbol",viewBox:"0 0 24 24"},[i("path",{d:"M12 6.76l1.379 4.246h4.465l-3.612 2.625 1.379 4.246-3.611-2.625-3.612 2.625 1.379-4.246-3.612-2.625h4.465l1.38-4.246zm0-6.472l-2.833 8.718h-9.167l7.416 5.389-2.833 8.718 7.417-5.388 7.416 5.388-2.833-8.718 7.417-5.389h-9.167l-2.833-8.718z"})])],-1),h=i("use",{"xlink:href":"#ais-RatingMenu-starSymbol"},null,-1),d=i("use",{"xlink:href":"#ais-RatingMenu-starEmptySymbol"},null,-1),f=o("& Up");function m(o,m,p,v,y,g){return o.state?(t(),e("div",{key:0,class:o.suit()},[s(o.$slots,"default",{items:o.state.items,refine:o.state.refine,createURL:o.state.createURL,sendEvent:o.state.sendEvent},function(){return[c,i("ul",{class:o.suit("list")},[(t(!0),e(a,null,l(o.state.items,function(r,c){return t(),e("li",{key:c,class:[o.suit("item"),r.isRefined&&o.suit("item","selected")]},[i("a",{href:o.state.createURL(r.value),"aria-label":r.value+" & Up",class:o.suit("link"),onClick:n(function(t){return o.state.refine(r.value)},["prevent"])},[(t(!0),e(a,null,l(r.stars,function(s,i){return t(),e(a,null,[s?(t(),e("svg",{"aria-hidden":"true",width:"24",height:"24",class:[o.suit("starIcon"),o.suit("starIcon--full")],key:i+"-full"},[h],2)):(t(),e("svg",{class:[o.suit("starIcon"),o.suit("starIcon--empty")],"aria-hidden":"true",width:"24",height:"24",key:i+"-empty"},[d],2))],64)}),256)),i("span",{class:o.suit("label"),"aria-hidden":"true"},[s(o.$slots,"andUp",{},function(){return[f]})],2),i("span",{class:o.suit("count")},u(r.count),3)],10,["href","aria-label","onClick"])],2)}),128))],2)]})],2)):r("v-if",!0)}export{m as render};
1
+ import{openBlock as t,createBlock as e,renderSlot as s,createVNode as a,Fragment as i,renderList as n,withModifiers as l,toDisplayString as u,createCommentVNode as r,createTextVNode as o}from"vue";var c=a("svg",{xmlns:"http://www.w3.org/2000/svg",style:{display:"none"}},[a("symbol",{id:"ais-RatingMenu-starSymbol",viewBox:"0 0 24 24"},[a("path",{d:"M12 .288l2.833 8.718h9.167l-7.417 5.389 2.833 8.718-7.416-5.388-7.417 5.388 2.833-8.718-7.416-5.389h9.167z"})]),a("symbol",{id:"ais-RatingMenu-starEmptySymbol",viewBox:"0 0 24 24"},[a("path",{d:"M12 6.76l1.379 4.246h4.465l-3.612 2.625 1.379 4.246-3.611-2.625-3.612 2.625 1.379-4.246-3.612-2.625h4.465l1.38-4.246zm0-6.472l-2.833 8.718h-9.167l7.416 5.389-2.833 8.718 7.417-5.388 7.416 5.388-2.833-8.718 7.417-5.389h-9.167l-2.833-8.718z"})])],-1),h=a("use",{"xlink:href":"#ais-RatingMenu-starSymbol"},null,-1),f=a("use",{"xlink:href":"#ais-RatingMenu-starEmptySymbol"},null,-1),d=o("& Up");function m(o,m,p,v,y,g){return o.state?(t(),e("div",{key:0,class:o.suit()},[s(o.$slots,"default",{items:o.state.items,refine:o.state.refine,createURL:o.state.createURL,sendEvent:o.state.sendEvent,canRefine:o.state.canRefine},function(){return[c,a("ul",{class:o.suit("list")},[(t(!0),e(i,null,n(o.state.items,function(r,c){return t(),e("li",{key:c,class:[o.suit("item"),r.isRefined&&o.suit("item","selected")]},[a("a",{href:o.state.createURL(r.value),"aria-label":r.value+" & Up",class:o.suit("link"),onClick:l(function(t){return o.state.refine(r.value)},["prevent"])},[(t(!0),e(i,null,n(r.stars,function(s,a){return t(),e(i,null,[s?(t(),e("svg",{"aria-hidden":"true",width:"24",height:"24",class:[o.suit("starIcon"),o.suit("starIcon--full")],key:a+"-full"},[h],2)):(t(),e("svg",{class:[o.suit("starIcon"),o.suit("starIcon--empty")],"aria-hidden":"true",width:"24",height:"24",key:a+"-empty"},[f],2))],64)}),256)),a("span",{class:o.suit("label"),"aria-hidden":"true"},[s(o.$slots,"andUp",{},function(){return[d]})],2),a("span",{class:o.suit("count")},u(r.count),3)],10,["href","aria-label","onClick"])],2)}),128))],2)]})],2)):r("v-if",!0)}export{m as render};
2
2
  //# sourceMappingURL=RatingMenu.vue_vue&type=template&id=9254de68&lang.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RatingMenu.vue_vue&type=template&id=9254de68&lang.js","sources":["../../../../src/components/RatingMenu.vue?vue&type=template&id=9254de68&lang.js"],"sourcesContent":["<template>\n <div\n v-if=\"state\"\n :class=\"suit()\"\n >\n <slot\n :items=\"state.items\"\n :refine=\"state.refine\"\n :createURL=\"state.createURL\"\n :send-event=\"state.sendEvent\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n style=\"display: none;\"\n >\n <symbol\n id=\"ais-RatingMenu-starSymbol\"\n viewBox=\"0 0 24 24\"\n >\n <path d=\"M12 .288l2.833 8.718h9.167l-7.417 5.389 2.833 8.718-7.416-5.388-7.417 5.388 2.833-8.718-7.416-5.389h9.167z\" />\n </symbol>\n <symbol\n id=\"ais-RatingMenu-starEmptySymbol\"\n viewBox=\"0 0 24 24\"\n >\n <path d=\"M12 6.76l1.379 4.246h4.465l-3.612 2.625 1.379 4.246-3.611-2.625-3.612 2.625 1.379-4.246-3.612-2.625h4.465l1.38-4.246zm0-6.472l-2.833 8.718h-9.167l7.416 5.389-2.833 8.718 7.417-5.388 7.416 5.388-2.833-8.718 7.417-5.389h-9.167l-2.833-8.718z\" />\n </symbol>\n </svg>\n\n <ul :class=\"suit('list')\">\n <li\n v-for=\"(item, key) in state.items\"\n :key=\"key\"\n :class=\"[suit('item'), item.isRefined && suit('item', 'selected')]\"\n >\n <a\n :href=\"state.createURL(item.value)\"\n :aria-label=\"`${item.value} & Up`\"\n :class=\"suit('link')\"\n @click.prevent=\"state.refine(item.value)\"\n >\n <template v-for=\"(full, n) in item.stars\">\n <svg\n v-if=\"full\"\n aria-hidden=\"true\"\n width=\"24\"\n height=\"24\"\n :class=\"[suit('starIcon'), suit('starIcon--full')]\"\n :key=\"n + '-full'\"\n >\n <use xlink:href=\"#ais-RatingMenu-starSymbol\" />\n </svg>\n\n <svg\n v-else\n :class=\"[suit('starIcon'), suit('starIcon--empty')]\"\n aria-hidden=\"true\"\n width=\"24\"\n height=\"24\"\n :key=\"n + '-empty'\"\n >\n <use xlink:href=\"#ais-RatingMenu-starEmptySymbol\" />\n </svg>\n </template>\n\n <span\n :class=\"suit('label')\"\n aria-hidden=\"true\"\n >\n <slot name=\"andUp\">&amp; Up</slot>\n </span>\n <span :class=\"suit('count')\">{{ item.count }}</span>\n </a>\n </li>\n </ul>\n </slot>\n </div>\n</template>\n\n<script>\nimport { connectRatingMenu } from 'instantsearch.js/es/connectors';\nimport { createPanelConsumerMixin } from '../mixins/panel';\nimport { createWidgetMixin } from '../mixins/widget';\nimport { createSuitMixin } from '../mixins/suit';\n\nexport default {\n name: 'AisRatingMenu',\n mixins: [\n createSuitMixin({ name: 'RatingMenu' }),\n createWidgetMixin(\n {\n connector: connectRatingMenu,\n },\n {\n $$widgetType: 'ais.ratingMenu',\n }\n ),\n createPanelConsumerMixin({\n mapStateToCanRefine: state => state.hasNoResults === false,\n }),\n ],\n props: {\n attribute: {\n type: String,\n required: true,\n },\n max: {\n type: Number,\n default: undefined,\n },\n },\n computed: {\n widgetParams() {\n return {\n attribute: this.attribute,\n max: this.max,\n };\n },\n },\n};\n</script>\n"],"names":["_createVNode","xmlns","style","id","viewBox","d","_ctx","_createBlock","class","_renderSlot","items","refine","createURL","sendEvent","_hoisted_1","item","key","isRefined","href","value","onClick","stars","full","n","width","height","_hoisted_2","_hoisted_3","count"],"mappings":"2MAWMA,SACEC,MAAM,6BACNC,MAAA,mBAEAF,YACEG,GAAG,4BACHC,QAAQ,cAERJ,UAAMK,EAAE,iHAEVL,YACEG,GAAG,iCACHC,QAAQ,cAERJ,UAAMK,EAAE,4PAyBFL,sBAAgB,yCAWhBA,sBAAgB,gDAQC,uCAnEvBM,aADRC,eAEGC,MAAOF,WAERG,sBACGC,MAAOJ,QAAMI,MACbC,OAAQL,QAAMK,OACdC,UAAWN,QAAMM,UACjBC,UAAYP,QAAMO,6BAEnBC,EAkBAd,QAAKQ,MAAOF,wBACVC,WACwBD,QAAMI,eAApBK,EAAMC,cADhBT,QAEGS,IAAKA,EACLR,OAAQF,eAAcS,EAAKE,WAAaX,6BAEzCN,OACGkB,KAAMZ,QAAMM,UAAUG,EAAKI,oBACZJ,EAAKI,cACpBX,MAAOF,eACPc,6BAAed,QAAMK,OAAOI,EAAKI,8BAElCZ,WAA8BQ,EAAKM,eAAjBC,EAAMC,wBAEdD,OADRf,uBAEc,OACZiB,MAAM,KACNC,OAAO,KACNjB,OAAQF,mBAAkBA,0BAC1BU,IAAKO,YAENG,YAGFnB,SAEGC,OAAQF,mBAAkBA,yCACf,OACZkB,MAAM,KACNC,OAAO,KACNT,IAAKO,aAENI,oBAIJ3B,UACGQ,MAAOF,8BACI,SAEZG,iDAEFT,UAAOQ,MAAOF,mBAAkBS,EAAKa"}
1
+ {"version":3,"file":"RatingMenu.vue_vue&type=template&id=9254de68&lang.js","sources":["../../../../src/components/RatingMenu.vue?vue&type=template&id=9254de68&lang.js"],"sourcesContent":["<template>\n <div\n v-if=\"state\"\n :class=\"suit()\"\n >\n <slot\n :items=\"state.items\"\n :refine=\"state.refine\"\n :createURL=\"state.createURL\"\n :send-event=\"state.sendEvent\"\n :can-refine=\"state.canRefine\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n style=\"display: none;\"\n >\n <symbol\n id=\"ais-RatingMenu-starSymbol\"\n viewBox=\"0 0 24 24\"\n >\n <path d=\"M12 .288l2.833 8.718h9.167l-7.417 5.389 2.833 8.718-7.416-5.388-7.417 5.388 2.833-8.718-7.416-5.389h9.167z\" />\n </symbol>\n <symbol\n id=\"ais-RatingMenu-starEmptySymbol\"\n viewBox=\"0 0 24 24\"\n >\n <path d=\"M12 6.76l1.379 4.246h4.465l-3.612 2.625 1.379 4.246-3.611-2.625-3.612 2.625 1.379-4.246-3.612-2.625h4.465l1.38-4.246zm0-6.472l-2.833 8.718h-9.167l7.416 5.389-2.833 8.718 7.417-5.388 7.416 5.388-2.833-8.718 7.417-5.389h-9.167l-2.833-8.718z\" />\n </symbol>\n </svg>\n\n <ul :class=\"suit('list')\">\n <li\n v-for=\"(item, key) in state.items\"\n :key=\"key\"\n :class=\"[suit('item'), item.isRefined && suit('item', 'selected')]\"\n >\n <a\n :href=\"state.createURL(item.value)\"\n :aria-label=\"`${item.value} & Up`\"\n :class=\"suit('link')\"\n @click.prevent=\"state.refine(item.value)\"\n >\n <template v-for=\"(full, n) in item.stars\">\n <svg\n v-if=\"full\"\n aria-hidden=\"true\"\n width=\"24\"\n height=\"24\"\n :class=\"[suit('starIcon'), suit('starIcon--full')]\"\n :key=\"n + '-full'\"\n >\n <use xlink:href=\"#ais-RatingMenu-starSymbol\" />\n </svg>\n\n <svg\n v-else\n :class=\"[suit('starIcon'), suit('starIcon--empty')]\"\n aria-hidden=\"true\"\n width=\"24\"\n height=\"24\"\n :key=\"n + '-empty'\"\n >\n <use xlink:href=\"#ais-RatingMenu-starEmptySymbol\" />\n </svg>\n </template>\n\n <span\n :class=\"suit('label')\"\n aria-hidden=\"true\"\n >\n <slot name=\"andUp\">&amp; Up</slot>\n </span>\n <span :class=\"suit('count')\">{{ item.count }}</span>\n </a>\n </li>\n </ul>\n </slot>\n </div>\n</template>\n\n<script>\nimport { connectRatingMenu } from 'instantsearch.js/es/connectors';\nimport { createPanelConsumerMixin } from '../mixins/panel';\nimport { createWidgetMixin } from '../mixins/widget';\nimport { createSuitMixin } from '../mixins/suit';\n\nexport default {\n name: 'AisRatingMenu',\n mixins: [\n createSuitMixin({ name: 'RatingMenu' }),\n createWidgetMixin(\n {\n connector: connectRatingMenu,\n },\n {\n $$widgetType: 'ais.ratingMenu',\n }\n ),\n createPanelConsumerMixin(),\n ],\n props: {\n attribute: {\n type: String,\n required: true,\n },\n max: {\n type: Number,\n default: undefined,\n },\n },\n computed: {\n widgetParams() {\n return {\n attribute: this.attribute,\n max: this.max,\n };\n },\n },\n};\n</script>\n"],"names":["_createVNode","xmlns","style","id","viewBox","d","_ctx","_createBlock","class","_renderSlot","items","refine","createURL","sendEvent","canRefine","_hoisted_1","item","key","isRefined","href","value","onClick","stars","full","n","width","height","_hoisted_2","_hoisted_3","count"],"mappings":"2MAYMA,SACEC,MAAM,6BACNC,MAAA,mBAEAF,YACEG,GAAG,4BACHC,QAAQ,cAERJ,UAAMK,EAAE,iHAEVL,YACEG,GAAG,iCACHC,QAAQ,cAERJ,UAAMK,EAAE,4PAyBFL,sBAAgB,yCAWhBA,sBAAgB,gDAQC,uCApEvBM,aADRC,eAEGC,MAAOF,WAERG,sBACGC,MAAOJ,QAAMI,MACbC,OAAQL,QAAMK,OACdC,UAAWN,QAAMM,UACjBC,UAAYP,QAAMO,UAClBC,UAAYR,QAAMQ,6BAEnBC,EAkBAf,QAAKQ,MAAOF,wBACVC,WACwBD,QAAMI,eAApBM,EAAMC,cADhBV,QAEGU,IAAKA,EACLT,OAAQF,eAAcU,EAAKE,WAAaZ,6BAEzCN,OACGmB,KAAMb,QAAMM,UAAUI,EAAKI,oBACZJ,EAAKI,cACpBZ,MAAOF,eACPe,6BAAef,QAAMK,OAAOK,EAAKI,8BAElCb,WAA8BS,EAAKM,eAAjBC,EAAMC,wBAEdD,OADRhB,uBAEc,OACZkB,MAAM,KACNC,OAAO,KACNlB,OAAQF,mBAAkBA,0BAC1BW,IAAKO,YAENG,YAGFpB,SAEGC,OAAQF,mBAAkBA,yCACf,OACZmB,MAAM,KACNC,OAAO,KACNT,IAAKO,aAENI,oBAIJ5B,UACGQ,MAAOF,8BACI,SAEZG,iDAEFT,UAAOQ,MAAOF,mBAAkBU,EAAKa"}
@@ -1,2 +1,2 @@
1
- import{createSuitMixin as e}from"../mixins/suit.js";import{createWidgetMixin as t}from"../mixins/widget.js";import{connectRefinementList as r}from"instantsearch.js/es/connectors/index.js";import{createPanelConsumerMixin as i}from"../mixins/panel.js";import o from"./Highlight.vue.js";import s from"./SearchInput.vue.js";var a=function(){};export default{name:"AisRefinementList",components:{SearchInput:s,AisHighlight:o},mixins:[e({name:"RefinementList"}),t({connector:r},{$$widgetType:"ais.refinementList"}),i({mapStateToCanRefine:function(e){return Boolean(e.canRefine)}})],props:{attribute:{type:String,required:!0},searchable:{type:Boolean,default:void 0},searchablePlaceholder:{type:String,required:!1,default:"Search here…"},operator:{default:"or",validator:function(e){return"and"===e||"or"===e},required:!1},limit:{type:Number,required:!1,default:void 0},showMoreLimit:{type:Number,required:!1,default:void 0},showMore:{type:Boolean,required:!1,default:!1},sortBy:{type:[Array,Function],required:!1,default:void 0},transformItems:{type:Function,required:!1,default:void 0}},data:function(){return{searchForFacetValuesQuery:""}},computed:{searchForFacetValues:{get:function(){return this.searchForFacetValuesQuery},set:function(e){this.state.searchForItems(e),this.searchForFacetValuesQuery=e}},toggleShowMore:function(){return this.state.toggleShowMore||a},items:function(){return this.state.items.map(function(e){return Object.assign({},e,{_highlightResult:{item:{value:e.highlighted}}})})},widgetParams:function(){return{attribute:this.attribute,operator:this.operator,limit:this.limit,showMore:this.showMore,showMoreLimit:this.showMoreLimit,sortBy:this.sortBy,escapeFacetValues:!0,transformItems:this.transformItems}}},methods:{refine:function(e){this.state.refine(e),this.searchForFacetValuesQuery=""}}};
1
+ import{createSuitMixin as e}from"../mixins/suit.js";import{createWidgetMixin as t}from"../mixins/widget.js";import{connectRefinementList as r}from"instantsearch.js/es/connectors/index.js";import{createPanelConsumerMixin as i}from"../mixins/panel.js";import o from"./Highlight.vue.js";import s from"./SearchInput.vue.js";var a=function(){};export default{name:"AisRefinementList",components:{SearchInput:s,AisHighlight:o},mixins:[e({name:"RefinementList"}),t({connector:r},{$$widgetType:"ais.refinementList"}),i()],props:{attribute:{type:String,required:!0},searchable:{type:Boolean,default:void 0},searchablePlaceholder:{type:String,required:!1,default:"Search here…"},operator:{default:"or",validator:function(e){return"and"===e||"or"===e},required:!1},limit:{type:Number,required:!1,default:void 0},showMoreLimit:{type:Number,required:!1,default:void 0},showMore:{type:Boolean,required:!1,default:!1},sortBy:{type:[Array,Function],required:!1,default:void 0},transformItems:{type:Function,required:!1,default:void 0}},data:function(){return{searchForFacetValuesQuery:""}},computed:{searchForFacetValues:{get:function(){return this.searchForFacetValuesQuery},set:function(e){this.state.searchForItems(e),this.searchForFacetValuesQuery=e}},toggleShowMore:function(){return this.state.toggleShowMore||a},items:function(){return this.state.items.map(function(e){return Object.assign({},e,{_highlightResult:{item:{value:e.highlighted}}})})},widgetParams:function(){return{attribute:this.attribute,operator:this.operator,limit:this.limit,showMore:this.showMore,showMoreLimit:this.showMoreLimit,sortBy:this.sortBy,escapeFacetValues:!0,transformItems:this.transformItems}}},methods:{refine:function(e){this.state.refine(e),this.searchForFacetValuesQuery=""}}};
2
2
  //# sourceMappingURL=RefinementList.vue_vue&type=script&lang.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RefinementList.vue_vue&type=script&lang.js","sources":["../../../../src/components/RefinementList.vue"],"sourcesContent":["<template>\n <div\n :class=\"[\n suit(),\n !state.canRefine && suit('','noRefinement')\n ]\"\n v-if=\"state\"\n >\n <slot\n :items=\"items\"\n :refine=\"refine\"\n :search-for-items=\"state.searchForItems\"\n :search-for-items-query=\"searchForFacetValuesQuery\"\n :toggle-show-more=\"toggleShowMore\"\n :can-toggle-show-more=\"state.canToggleShowMore\"\n :is-showing-more=\"state.isShowingMore\"\n :createURL=\"state.createURL\"\n :is-from-search=\"state.isFromSearch\"\n :can-refine=\"state.canRefine\"\n :send-event=\"state.sendEvent\"\n >\n <div\n :class=\"suit('searchBox')\"\n v-if=\"searchable\"\n >\n <search-input\n v-model=\"searchForFacetValues\"\n :placeholder=\"searchablePlaceholder\"\n :class-names=\"classNames\"\n />\n </div>\n <slot\n name=\"noResults\"\n :query=\"searchForFacetValues\"\n v-if=\"state.isFromSearch && items.length === 0\"\n >\n <div :class=\"suit('noResults')\">No results.</div>\n </slot>\n <ul :class=\"suit('list')\">\n <li\n :class=\"[\n suit('item'), item.isRefined && suit('item', 'selected')]\"\n v-for=\"item in items\"\n :key=\"item.value\"\n >\n <slot\n name=\"item\"\n :item=\"item\"\n :refine=\"refine\"\n :createURL=\"state.createURL\"\n >\n <label :class=\"suit('label')\">\n <input\n :class=\"suit('checkbox')\"\n type=\"checkbox\"\n :value=\"item.value\"\n :checked=\"item.isRefined\"\n @change=\"refine(item.value)\"\n >\n <span\n v-if=\"searchable\"\n :class=\"suit('labelText')\"\n >\n <ais-highlight\n attribute=\"item\"\n :hit=\"item\"\n />\n </span>\n <span\n v-else\n :class=\"suit('labelText')\"\n >{{ item.label }}</span>\n <span :class=\"suit('count')\">{{ item.count }}</span>\n </label>\n </slot>\n </li>\n </ul>\n <button\n :class=\"[\n suit('showMore'),\n {\n [suit('showMore', 'disabled')]: !state.canToggleShowMore,\n }\n ]\"\n @click=\"toggleShowMore\"\n v-if=\"showMore\"\n :disabled=\"!state.canToggleShowMore\"\n >\n <slot\n name=\"showMoreLabel\"\n :is-showing-more=\"state.isShowingMore\"\n >Show {{ state.isShowingMore ? 'less' : 'more' }}</slot>\n </button>\n </slot>\n </div>\n</template>\n\n<script>\nimport { createWidgetMixin } from '../mixins/widget';\nimport { createPanelConsumerMixin } from '../mixins/panel';\nimport { createSuitMixin } from '../mixins/suit';\nimport { connectRefinementList } from 'instantsearch.js/es/connectors';\nimport SearchInput from './SearchInput.vue';\nimport AisHighlight from './Highlight.vue';\n\nconst noop = () => {};\n\nexport default {\n name: 'AisRefinementList',\n components: { SearchInput, AisHighlight },\n mixins: [\n createSuitMixin({ name: 'RefinementList' }),\n createWidgetMixin(\n {\n connector: connectRefinementList,\n },\n {\n $$widgetType: 'ais.refinementList',\n }\n ),\n createPanelConsumerMixin({\n mapStateToCanRefine: state => Boolean(state.canRefine),\n }),\n ],\n props: {\n attribute: {\n type: String,\n required: true,\n },\n searchable: {\n type: Boolean,\n default: undefined,\n },\n searchablePlaceholder: {\n type: String,\n required: false,\n default: 'Search here…',\n },\n operator: {\n default: 'or',\n validator(value) {\n return value === 'and' || value === 'or';\n },\n required: false,\n },\n limit: {\n type: Number,\n required: false,\n default: undefined,\n },\n showMoreLimit: {\n type: Number,\n required: false,\n default: undefined,\n },\n showMore: {\n type: Boolean,\n required: false,\n default: false,\n },\n sortBy: {\n type: [Array, Function],\n required: false,\n default: undefined,\n },\n transformItems: {\n type: Function,\n required: false,\n default: undefined,\n },\n },\n data() {\n return {\n searchForFacetValuesQuery: '',\n };\n },\n computed: {\n searchForFacetValues: {\n get() {\n return this.searchForFacetValuesQuery;\n },\n set(value) {\n this.state.searchForItems(value);\n this.searchForFacetValuesQuery = value;\n },\n },\n toggleShowMore() {\n return this.state.toggleShowMore || noop;\n },\n items() {\n return this.state.items.map(item =>\n Object.assign({}, item, {\n _highlightResult: {\n item: {\n value: item.highlighted,\n },\n },\n })\n );\n },\n widgetParams() {\n return {\n attribute: this.attribute,\n operator: this.operator,\n limit: this.limit,\n showMore: this.showMore,\n showMoreLimit: this.showMoreLimit,\n sortBy: this.sortBy,\n escapeFacetValues: true,\n transformItems: this.transformItems,\n };\n },\n },\n methods: {\n refine(value) {\n this.state.refine(value);\n this.searchForFacetValuesQuery = '';\n },\n },\n};\n</script>\n"],"names":["const","noop","name","components","SearchInput","AisHighlight","mixins","createSuitMixin","createWidgetMixin","connector","connectRefinementList","$$widgetType","createPanelConsumerMixin","mapStateToCanRefine","state","Boolean","canRefine","props","attribute","type","String","required","searchable","default","undefined","searchablePlaceholder","operator","validator","value","limit","Number","showMoreLimit","showMore","sortBy","Array","Function","transformItems","data","searchForFacetValuesQuery","computed","searchForFacetValues","get","this","set","searchForItems","toggleShowMore","items","map","item","Object","assign","_highlightResult","highlighted","widgetParams","escapeFacetValues","methods","refine"],"mappings":"gUAyGAA,IAAMC,6BAES,CACbC,KAAM,oBACNC,WAAY,aAAEC,eAAaC,GAC3BC,OAAQ,CACNC,EAAgB,CAAEL,KAAM,mBACxBM,EACE,CACEC,UAAWC,GAEb,CACEC,aAAc,uBAGlBC,EAAyB,CACvBC,6BAAqBC,UAASC,QAAQD,EAAME,eAGhDC,MAAO,CACLC,UAAW,CACTC,KAAMC,OACNC,UAAU,GAEZC,WAAY,CACVH,KAAMJ,QACNQ,aAASC,GAEXC,sBAAuB,CACrBN,KAAMC,OACNC,UAAU,EACVE,QAAS,gBAEXG,SAAU,CACRH,QAAS,KACTI,mBAAUC,SACS,QAAVA,GAA6B,OAAVA,GAE5BP,UAAU,GAEZQ,MAAO,CACLV,KAAMW,OACNT,UAAU,EACVE,aAASC,GAEXO,cAAe,CACbZ,KAAMW,OACNT,UAAU,EACVE,aAASC,GAEXQ,SAAU,CACRb,KAAMJ,QACNM,UAAU,EACVE,SAAS,GAEXU,OAAQ,CACNd,KAAM,CAACe,MAAOC,UACdd,UAAU,EACVE,aAASC,GAEXY,eAAgB,CACdjB,KAAMgB,SACNd,UAAU,EACVE,aAASC,IAGba,sBACS,CACLC,0BAA2B,KAG/BC,SAAU,CACRC,qBAAsB,CACpBC,sBACSC,KAAKJ,2BAEdK,aAAIf,QACGd,MAAM8B,eAAehB,QACrBU,0BAA4BV,IAGrCiB,iCACSH,KAAK5B,MAAM+B,gBAAkB5C,GAEtC6C,wBACSJ,KAAK5B,MAAMgC,MAAMC,aAAIC,UAC1BC,OAAOC,OAAO,GAAIF,EAAM,CACtBG,iBAAkB,CAChBH,KAAM,CACJpB,MAAOoB,EAAKI,mBAMtBC,8BACS,CACLnC,UAAWwB,KAAKxB,UAChBQ,SAAUgB,KAAKhB,SACfG,MAAOa,KAAKb,MACZG,SAAUU,KAAKV,SACfD,cAAeW,KAAKX,cACpBE,OAAQS,KAAKT,OACbqB,mBAAmB,EACnBlB,eAAgBM,KAAKN,kBAI3BmB,QAAS,CACPC,gBAAO5B,QACAd,MAAM0C,OAAO5B,QACbU,0BAA4B"}
1
+ {"version":3,"file":"RefinementList.vue_vue&type=script&lang.js","sources":["../../../../src/components/RefinementList.vue"],"sourcesContent":["<template>\n <div\n :class=\"[\n suit(),\n !state.canRefine && suit('','noRefinement')\n ]\"\n v-if=\"state\"\n >\n <slot\n :items=\"items\"\n :refine=\"refine\"\n :search-for-items=\"state.searchForItems\"\n :search-for-items-query=\"searchForFacetValuesQuery\"\n :toggle-show-more=\"toggleShowMore\"\n :can-toggle-show-more=\"state.canToggleShowMore\"\n :is-showing-more=\"state.isShowingMore\"\n :createURL=\"state.createURL\"\n :is-from-search=\"state.isFromSearch\"\n :can-refine=\"state.canRefine\"\n :send-event=\"state.sendEvent\"\n >\n <div\n :class=\"suit('searchBox')\"\n v-if=\"searchable\"\n >\n <search-input\n v-model=\"searchForFacetValues\"\n :placeholder=\"searchablePlaceholder\"\n :class-names=\"classNames\"\n />\n </div>\n <slot\n name=\"noResults\"\n :query=\"searchForFacetValues\"\n v-if=\"state.isFromSearch && items.length === 0\"\n >\n <div :class=\"suit('noResults')\">No results.</div>\n </slot>\n <ul :class=\"suit('list')\">\n <li\n :class=\"[\n suit('item'), item.isRefined && suit('item', 'selected')]\"\n v-for=\"item in items\"\n :key=\"item.value\"\n >\n <slot\n name=\"item\"\n :item=\"item\"\n :refine=\"refine\"\n :createURL=\"state.createURL\"\n >\n <label :class=\"suit('label')\">\n <input\n :class=\"suit('checkbox')\"\n type=\"checkbox\"\n :value=\"item.value\"\n :checked=\"item.isRefined\"\n @change=\"refine(item.value)\"\n >\n <span\n v-if=\"searchable\"\n :class=\"suit('labelText')\"\n >\n <ais-highlight\n attribute=\"item\"\n :hit=\"item\"\n />\n </span>\n <span\n v-else\n :class=\"suit('labelText')\"\n >{{ item.label }}</span>\n <span :class=\"suit('count')\">{{ item.count }}</span>\n </label>\n </slot>\n </li>\n </ul>\n <button\n :class=\"[\n suit('showMore'),\n {\n [suit('showMore', 'disabled')]: !state.canToggleShowMore,\n }\n ]\"\n @click=\"toggleShowMore\"\n v-if=\"showMore\"\n :disabled=\"!state.canToggleShowMore\"\n >\n <slot\n name=\"showMoreLabel\"\n :is-showing-more=\"state.isShowingMore\"\n >Show {{ state.isShowingMore ? 'less' : 'more' }}</slot>\n </button>\n </slot>\n </div>\n</template>\n\n<script>\nimport { createWidgetMixin } from '../mixins/widget';\nimport { createPanelConsumerMixin } from '../mixins/panel';\nimport { createSuitMixin } from '../mixins/suit';\nimport { connectRefinementList } from 'instantsearch.js/es/connectors';\nimport SearchInput from './SearchInput.vue';\nimport AisHighlight from './Highlight.vue';\n\nconst noop = () => {};\n\nexport default {\n name: 'AisRefinementList',\n components: { SearchInput, AisHighlight },\n mixins: [\n createSuitMixin({ name: 'RefinementList' }),\n createWidgetMixin(\n {\n connector: connectRefinementList,\n },\n {\n $$widgetType: 'ais.refinementList',\n }\n ),\n createPanelConsumerMixin(),\n ],\n props: {\n attribute: {\n type: String,\n required: true,\n },\n searchable: {\n type: Boolean,\n default: undefined,\n },\n searchablePlaceholder: {\n type: String,\n required: false,\n default: 'Search here…',\n },\n operator: {\n default: 'or',\n validator(value) {\n return value === 'and' || value === 'or';\n },\n required: false,\n },\n limit: {\n type: Number,\n required: false,\n default: undefined,\n },\n showMoreLimit: {\n type: Number,\n required: false,\n default: undefined,\n },\n showMore: {\n type: Boolean,\n required: false,\n default: false,\n },\n sortBy: {\n type: [Array, Function],\n required: false,\n default: undefined,\n },\n transformItems: {\n type: Function,\n required: false,\n default: undefined,\n },\n },\n data() {\n return {\n searchForFacetValuesQuery: '',\n };\n },\n computed: {\n searchForFacetValues: {\n get() {\n return this.searchForFacetValuesQuery;\n },\n set(value) {\n this.state.searchForItems(value);\n this.searchForFacetValuesQuery = value;\n },\n },\n toggleShowMore() {\n return this.state.toggleShowMore || noop;\n },\n items() {\n return this.state.items.map(item =>\n Object.assign({}, item, {\n _highlightResult: {\n item: {\n value: item.highlighted,\n },\n },\n })\n );\n },\n widgetParams() {\n return {\n attribute: this.attribute,\n operator: this.operator,\n limit: this.limit,\n showMore: this.showMore,\n showMoreLimit: this.showMoreLimit,\n sortBy: this.sortBy,\n escapeFacetValues: true,\n transformItems: this.transformItems,\n };\n },\n },\n methods: {\n refine(value) {\n this.state.refine(value);\n this.searchForFacetValuesQuery = '';\n },\n },\n};\n</script>\n"],"names":["const","noop","name","components","SearchInput","AisHighlight","mixins","createSuitMixin","createWidgetMixin","connector","connectRefinementList","$$widgetType","createPanelConsumerMixin","props","attribute","type","String","required","searchable","Boolean","default","undefined","searchablePlaceholder","operator","validator","value","limit","Number","showMoreLimit","showMore","sortBy","Array","Function","transformItems","data","searchForFacetValuesQuery","computed","searchForFacetValues","get","this","set","state","searchForItems","toggleShowMore","items","map","item","Object","assign","_highlightResult","highlighted","widgetParams","escapeFacetValues","methods","refine"],"mappings":"gUAyGAA,IAAMC,6BAES,CACbC,KAAM,oBACNC,WAAY,aAAEC,eAAaC,GAC3BC,OAAQ,CACNC,EAAgB,CAAEL,KAAM,mBACxBM,EACE,CACEC,UAAWC,GAEb,CACEC,aAAc,uBAGlBC,KAEFC,MAAO,CACLC,UAAW,CACTC,KAAMC,OACNC,UAAU,GAEZC,WAAY,CACVH,KAAMI,QACNC,aAASC,GAEXC,sBAAuB,CACrBP,KAAMC,OACNC,UAAU,EACVG,QAAS,gBAEXG,SAAU,CACRH,QAAS,KACTI,mBAAUC,SACS,QAAVA,GAA6B,OAAVA,GAE5BR,UAAU,GAEZS,MAAO,CACLX,KAAMY,OACNV,UAAU,EACVG,aAASC,GAEXO,cAAe,CACbb,KAAMY,OACNV,UAAU,EACVG,aAASC,GAEXQ,SAAU,CACRd,KAAMI,QACNF,UAAU,EACVG,SAAS,GAEXU,OAAQ,CACNf,KAAM,CAACgB,MAAOC,UACdf,UAAU,EACVG,aAASC,GAEXY,eAAgB,CACdlB,KAAMiB,SACNf,UAAU,EACVG,aAASC,IAGba,sBACS,CACLC,0BAA2B,KAG/BC,SAAU,CACRC,qBAAsB,CACpBC,sBACSC,KAAKJ,2BAEdK,aAAIf,QACGgB,MAAMC,eAAejB,QACrBU,0BAA4BV,IAGrCkB,iCACSJ,KAAKE,MAAME,gBAAkB1C,GAEtC2C,wBACSL,KAAKE,MAAMG,MAAMC,aAAIC,UAC1BC,OAAOC,OAAO,GAAIF,EAAM,CACtBG,iBAAkB,CAChBH,KAAM,CACJrB,MAAOqB,EAAKI,mBAMtBC,8BACS,CACLrC,UAAWyB,KAAKzB,UAChBS,SAAUgB,KAAKhB,SACfG,MAAOa,KAAKb,MACZG,SAAUU,KAAKV,SACfD,cAAeW,KAAKX,cACpBE,OAAQS,KAAKT,OACbsB,mBAAmB,EACnBnB,eAAgBM,KAAKN,kBAI3BoB,QAAS,CACPC,gBAAO7B,QACAgB,MAAMa,OAAO7B,QACbU,0BAA4B"}
@@ -1 +1 @@
1
- {"version":3,"file":"RefinementList.vue_vue&type=template&id=28927239&lang.js","sources":["../../../../src/components/RefinementList.vue?vue&type=template&id=28927239&lang.js"],"sourcesContent":["<template>\n <div\n :class=\"[\n suit(),\n !state.canRefine && suit('','noRefinement')\n ]\"\n v-if=\"state\"\n >\n <slot\n :items=\"items\"\n :refine=\"refine\"\n :search-for-items=\"state.searchForItems\"\n :search-for-items-query=\"searchForFacetValuesQuery\"\n :toggle-show-more=\"toggleShowMore\"\n :can-toggle-show-more=\"state.canToggleShowMore\"\n :is-showing-more=\"state.isShowingMore\"\n :createURL=\"state.createURL\"\n :is-from-search=\"state.isFromSearch\"\n :can-refine=\"state.canRefine\"\n :send-event=\"state.sendEvent\"\n >\n <div\n :class=\"suit('searchBox')\"\n v-if=\"searchable\"\n >\n <search-input\n v-model=\"searchForFacetValues\"\n :placeholder=\"searchablePlaceholder\"\n :class-names=\"classNames\"\n />\n </div>\n <slot\n name=\"noResults\"\n :query=\"searchForFacetValues\"\n v-if=\"state.isFromSearch && items.length === 0\"\n >\n <div :class=\"suit('noResults')\">No results.</div>\n </slot>\n <ul :class=\"suit('list')\">\n <li\n :class=\"[\n suit('item'), item.isRefined && suit('item', 'selected')]\"\n v-for=\"item in items\"\n :key=\"item.value\"\n >\n <slot\n name=\"item\"\n :item=\"item\"\n :refine=\"refine\"\n :createURL=\"state.createURL\"\n >\n <label :class=\"suit('label')\">\n <input\n :class=\"suit('checkbox')\"\n type=\"checkbox\"\n :value=\"item.value\"\n :checked=\"item.isRefined\"\n @change=\"refine(item.value)\"\n >\n <span\n v-if=\"searchable\"\n :class=\"suit('labelText')\"\n >\n <ais-highlight\n attribute=\"item\"\n :hit=\"item\"\n />\n </span>\n <span\n v-else\n :class=\"suit('labelText')\"\n >{{ item.label }}</span>\n <span :class=\"suit('count')\">{{ item.count }}</span>\n </label>\n </slot>\n </li>\n </ul>\n <button\n :class=\"[\n suit('showMore'),\n {\n [suit('showMore', 'disabled')]: !state.canToggleShowMore,\n }\n ]\"\n @click=\"toggleShowMore\"\n v-if=\"showMore\"\n :disabled=\"!state.canToggleShowMore\"\n >\n <slot\n name=\"showMoreLabel\"\n :is-showing-more=\"state.isShowingMore\"\n >Show {{ state.isShowingMore ? 'less' : 'more' }}</slot>\n </button>\n </slot>\n </div>\n</template>\n\n<script>\nimport { createWidgetMixin } from '../mixins/widget';\nimport { createPanelConsumerMixin } from '../mixins/panel';\nimport { createSuitMixin } from '../mixins/suit';\nimport { connectRefinementList } from 'instantsearch.js/es/connectors';\nimport SearchInput from './SearchInput.vue';\nimport AisHighlight from './Highlight.vue';\n\nconst noop = () => {};\n\nexport default {\n name: 'AisRefinementList',\n components: { SearchInput, AisHighlight },\n mixins: [\n createSuitMixin({ name: 'RefinementList' }),\n createWidgetMixin(\n {\n connector: connectRefinementList,\n },\n {\n $$widgetType: 'ais.refinementList',\n }\n ),\n createPanelConsumerMixin({\n mapStateToCanRefine: state => Boolean(state.canRefine),\n }),\n ],\n props: {\n attribute: {\n type: String,\n required: true,\n },\n searchable: {\n type: Boolean,\n default: undefined,\n },\n searchablePlaceholder: {\n type: String,\n required: false,\n default: 'Search here…',\n },\n operator: {\n default: 'or',\n validator(value) {\n return value === 'and' || value === 'or';\n },\n required: false,\n },\n limit: {\n type: Number,\n required: false,\n default: undefined,\n },\n showMoreLimit: {\n type: Number,\n required: false,\n default: undefined,\n },\n showMore: {\n type: Boolean,\n required: false,\n default: false,\n },\n sortBy: {\n type: [Array, Function],\n required: false,\n default: undefined,\n },\n transformItems: {\n type: Function,\n required: false,\n default: undefined,\n },\n },\n data() {\n return {\n searchForFacetValuesQuery: '',\n };\n },\n computed: {\n searchForFacetValues: {\n get() {\n return this.searchForFacetValuesQuery;\n },\n set(value) {\n this.state.searchForItems(value);\n this.searchForFacetValuesQuery = value;\n },\n },\n toggleShowMore() {\n return this.state.toggleShowMore || noop;\n },\n items() {\n return this.state.items.map(item =>\n Object.assign({}, item, {\n _highlightResult: {\n item: {\n value: item.highlighted,\n },\n },\n })\n );\n },\n widgetParams() {\n return {\n attribute: this.attribute,\n operator: this.operator,\n limit: this.limit,\n showMore: this.showMore,\n showMoreLimit: this.showMoreLimit,\n sortBy: this.sortBy,\n escapeFacetValues: true,\n transformItems: this.transformItems,\n };\n },\n },\n methods: {\n refine(value) {\n this.state.refine(value);\n this.searchForFacetValuesQuery = '';\n },\n },\n};\n</script>\n"],"names":["_ctx","_createBlock","class","_renderSlot","items","$options","refine","searchForItems","searchForItemsQuery","$data","toggleShowMore","canToggleShowMore","isShowingMore","createURL","isFromSearch","canRefine","sendEvent","$props","_createVNode","placeholder","length","query","item","key","value","type","checked","isRefined","onChange","attribute","hit","label","count","onClick","disabled"],"mappings":"oRAMUA,aALRC,eACGC,iEAMDC,sBACGC,MAAOC,QACPC,OAAQD,SACRE,eAAkBP,QAAMO,eACxBC,oBAAwBC,4BACxBC,eAAkBL,iBAClBM,kBAAsBX,QAAMW,kBAC5BC,cAAiBZ,QAAMY,cACvBC,UAAWb,QAAMa,UACjBC,aAAgBd,QAAMc,aACtBC,UAAYf,QAAMe,UAClBC,UAAYhB,QAAMgB,mCAIXC,kBAFRhB,eACGC,MAAOF,sBAGRkB,gBACWb,4EAAAA,2BACRc,YAAaF,sCACAjB,mFAMVA,QAAMc,kBAAgBT,QAAMe,OAHpCjB,8BAEGkB,MAAOhB,0CAGRa,SAAMhB,MAAOF,qBAAmB,iCAElCkB,QAAKhB,MAAOF,wBACVC,WAGiBI,iBAARiB,cAHTrB,QACGC,8DAGAqB,IAAKD,EAAKE,QAEXrB,mBAEGmB,KAAMA,EACNhB,OAAQD,SACRQ,UAAWb,QAAMa,6BAElBK,WAAQhB,MAAOF,kBACbkB,WACGhB,MAAOF,mBACRyB,KAAK,WACJD,MAAOF,EAAKE,MACZE,QAASJ,EAAKK,UACdC,4BAAQvB,SAAOiB,EAAKE,iDAGfP,kBADRhB,gBAEGC,MAAOF,sBAERkB,KACEW,UAAU,OACTC,IAAKR,6BAGVrB,gBAEGC,MAAOF,uBACNsB,EAAKS,WACTb,UAAOhB,MAAOF,mBAAkBsB,EAAKU,iCAarCf,gBARRhB,kBACGC,gGAMA+B,6FAAO5B,gDAEP6B,UAAWlC,QAAMW,oBAElBR,4BAEGS,cAAiBZ,QAAMY,mCACzB,UAAQZ,QAAMY"}
1
+ {"version":3,"file":"RefinementList.vue_vue&type=template&id=28927239&lang.js","sources":["../../../../src/components/RefinementList.vue?vue&type=template&id=28927239&lang.js"],"sourcesContent":["<template>\n <div\n :class=\"[\n suit(),\n !state.canRefine && suit('','noRefinement')\n ]\"\n v-if=\"state\"\n >\n <slot\n :items=\"items\"\n :refine=\"refine\"\n :search-for-items=\"state.searchForItems\"\n :search-for-items-query=\"searchForFacetValuesQuery\"\n :toggle-show-more=\"toggleShowMore\"\n :can-toggle-show-more=\"state.canToggleShowMore\"\n :is-showing-more=\"state.isShowingMore\"\n :createURL=\"state.createURL\"\n :is-from-search=\"state.isFromSearch\"\n :can-refine=\"state.canRefine\"\n :send-event=\"state.sendEvent\"\n >\n <div\n :class=\"suit('searchBox')\"\n v-if=\"searchable\"\n >\n <search-input\n v-model=\"searchForFacetValues\"\n :placeholder=\"searchablePlaceholder\"\n :class-names=\"classNames\"\n />\n </div>\n <slot\n name=\"noResults\"\n :query=\"searchForFacetValues\"\n v-if=\"state.isFromSearch && items.length === 0\"\n >\n <div :class=\"suit('noResults')\">No results.</div>\n </slot>\n <ul :class=\"suit('list')\">\n <li\n :class=\"[\n suit('item'), item.isRefined && suit('item', 'selected')]\"\n v-for=\"item in items\"\n :key=\"item.value\"\n >\n <slot\n name=\"item\"\n :item=\"item\"\n :refine=\"refine\"\n :createURL=\"state.createURL\"\n >\n <label :class=\"suit('label')\">\n <input\n :class=\"suit('checkbox')\"\n type=\"checkbox\"\n :value=\"item.value\"\n :checked=\"item.isRefined\"\n @change=\"refine(item.value)\"\n >\n <span\n v-if=\"searchable\"\n :class=\"suit('labelText')\"\n >\n <ais-highlight\n attribute=\"item\"\n :hit=\"item\"\n />\n </span>\n <span\n v-else\n :class=\"suit('labelText')\"\n >{{ item.label }}</span>\n <span :class=\"suit('count')\">{{ item.count }}</span>\n </label>\n </slot>\n </li>\n </ul>\n <button\n :class=\"[\n suit('showMore'),\n {\n [suit('showMore', 'disabled')]: !state.canToggleShowMore,\n }\n ]\"\n @click=\"toggleShowMore\"\n v-if=\"showMore\"\n :disabled=\"!state.canToggleShowMore\"\n >\n <slot\n name=\"showMoreLabel\"\n :is-showing-more=\"state.isShowingMore\"\n >Show {{ state.isShowingMore ? 'less' : 'more' }}</slot>\n </button>\n </slot>\n </div>\n</template>\n\n<script>\nimport { createWidgetMixin } from '../mixins/widget';\nimport { createPanelConsumerMixin } from '../mixins/panel';\nimport { createSuitMixin } from '../mixins/suit';\nimport { connectRefinementList } from 'instantsearch.js/es/connectors';\nimport SearchInput from './SearchInput.vue';\nimport AisHighlight from './Highlight.vue';\n\nconst noop = () => {};\n\nexport default {\n name: 'AisRefinementList',\n components: { SearchInput, AisHighlight },\n mixins: [\n createSuitMixin({ name: 'RefinementList' }),\n createWidgetMixin(\n {\n connector: connectRefinementList,\n },\n {\n $$widgetType: 'ais.refinementList',\n }\n ),\n createPanelConsumerMixin(),\n ],\n props: {\n attribute: {\n type: String,\n required: true,\n },\n searchable: {\n type: Boolean,\n default: undefined,\n },\n searchablePlaceholder: {\n type: String,\n required: false,\n default: 'Search here…',\n },\n operator: {\n default: 'or',\n validator(value) {\n return value === 'and' || value === 'or';\n },\n required: false,\n },\n limit: {\n type: Number,\n required: false,\n default: undefined,\n },\n showMoreLimit: {\n type: Number,\n required: false,\n default: undefined,\n },\n showMore: {\n type: Boolean,\n required: false,\n default: false,\n },\n sortBy: {\n type: [Array, Function],\n required: false,\n default: undefined,\n },\n transformItems: {\n type: Function,\n required: false,\n default: undefined,\n },\n },\n data() {\n return {\n searchForFacetValuesQuery: '',\n };\n },\n computed: {\n searchForFacetValues: {\n get() {\n return this.searchForFacetValuesQuery;\n },\n set(value) {\n this.state.searchForItems(value);\n this.searchForFacetValuesQuery = value;\n },\n },\n toggleShowMore() {\n return this.state.toggleShowMore || noop;\n },\n items() {\n return this.state.items.map(item =>\n Object.assign({}, item, {\n _highlightResult: {\n item: {\n value: item.highlighted,\n },\n },\n })\n );\n },\n widgetParams() {\n return {\n attribute: this.attribute,\n operator: this.operator,\n limit: this.limit,\n showMore: this.showMore,\n showMoreLimit: this.showMoreLimit,\n sortBy: this.sortBy,\n escapeFacetValues: true,\n transformItems: this.transformItems,\n };\n },\n },\n methods: {\n refine(value) {\n this.state.refine(value);\n this.searchForFacetValuesQuery = '';\n },\n },\n};\n</script>\n"],"names":["_ctx","_createBlock","class","_renderSlot","items","$options","refine","searchForItems","searchForItemsQuery","$data","toggleShowMore","canToggleShowMore","isShowingMore","createURL","isFromSearch","canRefine","sendEvent","$props","_createVNode","placeholder","length","query","item","key","value","type","checked","isRefined","onChange","attribute","hit","label","count","onClick","disabled"],"mappings":"oRAMUA,aALRC,eACGC,iEAMDC,sBACGC,MAAOC,QACPC,OAAQD,SACRE,eAAkBP,QAAMO,eACxBC,oBAAwBC,4BACxBC,eAAkBL,iBAClBM,kBAAsBX,QAAMW,kBAC5BC,cAAiBZ,QAAMY,cACvBC,UAAWb,QAAMa,UACjBC,aAAgBd,QAAMc,aACtBC,UAAYf,QAAMe,UAClBC,UAAYhB,QAAMgB,mCAIXC,kBAFRhB,eACGC,MAAOF,sBAGRkB,gBACWb,4EAAAA,2BACRc,YAAaF,sCACAjB,mFAMVA,QAAMc,kBAAgBT,QAAMe,OAHpCjB,8BAEGkB,MAAOhB,0CAGRa,SAAMhB,MAAOF,qBAAmB,iCAElCkB,QAAKhB,MAAOF,wBACVC,WAGiBI,iBAARiB,cAHTrB,QACGC,8DAGAqB,IAAKD,EAAKE,QAEXrB,mBAEGmB,KAAMA,EACNhB,OAAQD,SACRQ,UAAWb,QAAMa,6BAElBK,WAAQhB,MAAOF,kBACbkB,WACGhB,MAAOF,mBACRyB,KAAK,WACJD,MAAOF,EAAKE,MACZE,QAASJ,EAAKK,UACdC,4BAAQvB,SAAOiB,EAAKE,iDAGfP,kBADRhB,gBAEGC,MAAOF,sBAERkB,KACEW,UAAU,OACTC,IAAKR,6BAGVrB,gBAEGC,MAAOF,uBACNsB,EAAKS,WACTb,UAAOhB,MAAOF,mBAAkBsB,EAAKU,iCAarCf,gBARRhB,kBACGC,gGAMA+B,6FAAO5B,gDAEP6B,UAAWlC,QAAMW,oBAElBR,4BAEGS,cAAiBZ,QAAMY,mCACzB,UAAQZ,QAAMY"}
@@ -1,2 +1,2 @@
1
- import{createSuitMixin as t}from"../mixins/suit.js";import{createWidgetMixin as s}from"../mixins/widget.js";import{connectSortBy as e}from"instantsearch.js/es/connectors/index.js";import{createPanelConsumerMixin as i}from"../mixins/panel.js";export default{name:"AisSortBy",mixins:[t({name:"SortBy"}),s({connector:e},{$$widgetType:"ais.sortBy"}),i({mapStateToCanRefine:function(t){return!1===t.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 t}from"../mixins/suit.js";import{createWidgetMixin as s}from"../mixins/widget.js";import{connectSortBy as i}from"instantsearch.js/es/connectors/index.js";import{createPanelConsumerMixin as r}from"../mixins/panel.js";export default{name:"AisSortBy",mixins:[t({name:"SortBy"}),s({connector:i},{$$widgetType:"ais.sortBy"}),r()],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_vue&type=script&lang.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SortBy.vue_vue&type=script&lang.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":["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,CACbA,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_vue&type=script&lang.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":["name","mixins","createSuitMixin","createWidgetMixin","connector","connectSortBy","$$widgetType","createPanelConsumerMixin","props","items","type","Array","required","transformItems","Function","default","undefined","computed","widgetParams","this"],"mappings":"gQAkCe,CACbA,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{openBlock as e,createBlock as t,renderSlot as n,createVNode as s,Fragment as u,renderList as a,toDisplayString as r,createCommentVNode as i}from"vue";function l(l,o,c,f,v,m){return l.state?(e(),t("div",{key:0,class:l.suit()},[n(l.$slots,"default",{items:l.state.options,hasNoResults:l.state.hasNoResults,refine:l.state.refine,currentRefinement:l.state.currentRefinement},function(){return[s("select",{class:l.suit("select"),onChange:o[1]||(o[1]=function(e){return l.state.refine(e.currentTarget.value)})},[(e(!0),t(u,null,a(l.state.options,function(n){return e(),t("option",{key:n.value,class:l.suit("option"),value:n.value,selected:n.value===l.state.currentRefinement},r(n.label),11,["value","selected"])}),128))],34)]})],2)):i("v-if",!0)}export{l as render};
1
+ import{openBlock as e,createBlock as t,renderSlot as n,createVNode as s,Fragment as a,renderList as u,toDisplayString as i,createCommentVNode as r}from"vue";function l(l,o,c,f,v,R){return l.state?(e(),t("div",{key:0,class:l.suit()},[n(l.$slots,"default",{items:l.state.options,hasNoResults:l.state.hasNoResults,refine:l.state.refine,currentRefinement:l.state.currentRefinement,canRefine:l.state.canRefine},function(){return[s("select",{class:l.suit("select"),onChange:o[1]||(o[1]=function(e){return l.state.refine(e.currentTarget.value)})},[(e(!0),t(a,null,u(l.state.options,function(n){return e(),t("option",{key:n.value,class:l.suit("option"),value:n.value,selected:n.value===l.state.currentRefinement},i(n.label),11,["value","selected"])}),128))],34)]})],2)):r("v-if",!0)}export{l as render};
2
2
  //# sourceMappingURL=SortBy.vue_vue&type=template&id=b69b3b76&lang.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SortBy.vue_vue&type=template&id=b69b3b76&lang.js","sources":["../../../../src/components/SortBy.vue?vue&type=template&id=b69b3b76&lang.js"],"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":["_ctx","_createBlock","class","_renderSlot","items","options","hasNoResults","refine","currentRefinement","_createVNode","onChange","$event","currentTarget","value","item","key","selected","label"],"mappings":"4LAGUA,aAFRC,eACGC,MAAOF,WAGRG,sBACGC,MAAOJ,QAAMK,QACbC,aAAgBN,QAAMM,aACtBC,OAAQP,QAAMO,OACdC,kBAAoBR,QAAMQ,qCAE3BC,YACGP,MAAOF,iBACPU,wCAAQV,QAAMO,OAAOI,EAAOC,cAAcC,kBAE3CZ,WACiBD,QAAMK,iBAAdS,cADTb,YAEGc,IAAKD,EAAKD,MACVX,MAAOF,iBACPa,MAAOC,EAAKD,MACZG,SAAUF,EAAKD,QAAUb,QAAMQ,qBAC9BM,EAAKG"}
1
+ {"version":3,"file":"SortBy.vue_vue&type=template&id=b69b3b76&lang.js","sources":["../../../../src/components/SortBy.vue?vue&type=template&id=b69b3b76&lang.js"],"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":["_ctx","_createBlock","class","_renderSlot","items","options","hasNoResults","refine","currentRefinement","canRefine","_createVNode","onChange","$event","currentTarget","value","item","key","selected","label"],"mappings":"4LAGUA,aAFRC,eACGC,MAAOF,WAGRG,sBACGC,MAAOJ,QAAMK,QACbC,aAAgBN,QAAMM,aACtBC,OAAQP,QAAMO,OACdC,kBAAoBR,QAAMQ,kBAC1BC,UAAYT,QAAMS,6BAEnBC,YACGR,MAAOF,iBACPW,wCAAQX,QAAMO,OAAOK,EAAOC,cAAcC,kBAE3Cb,WACiBD,QAAMK,iBAAdU,cADTd,YAEGe,IAAKD,EAAKD,MACVZ,MAAOF,iBACPc,MAAOC,EAAKD,MACZG,SAAUF,EAAKD,QAAUd,QAAMQ,qBAC9BO,EAAKG"}
@@ -1,2 +1,2 @@
1
- import{createSuitMixin as e}from"../mixins/suit.js";import{createWidgetMixin as t}from"../mixins/widget.js";import{connectToggleRefinement as i}from"instantsearch.js/es/connectors/index.js";import{createPanelConsumerMixin as n}from"../mixins/panel.js";var r=function(e){return Boolean(e.value&&e.value.count)};export default{name:"AisToggleRefinement",mixins:[e({name:"ToggleRefinement"}),t({connector:i},{$$widgetType:"ais.toggleRefinement"}),n({mapStateToCanRefine:r})],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 r(this.state)}}};
1
+ import{createSuitMixin as e}from"../mixins/suit.js";import{createWidgetMixin as t}from"../mixins/widget.js";import{connectToggleRefinement as i}from"instantsearch.js/es/connectors/index.js";import{createPanelConsumerMixin as r}from"../mixins/panel.js";export default{name:"AisToggleRefinement",mixins:[e({name:"ToggleRefinement"}),t({connector:i},{$$widgetType:"ais.toggleRefinement"}),r()],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_vue&type=script&lang.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ToggleRefinement.vue_vue&type=script&lang.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","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,CACbC,KAAM,sBACNC,OAAQ,CACNC,EAAgB,CAAEF,KAAM,qBACxBG,EACE,CACEC,UAAWC,GAEb,CACEC,aAAc,yBAGlBC,EAAyB,qBACvBZ,KAGJa,MAAO,CACLC,UAAW,CACTC,KAAMC,OACNC,UAAU,GAEZC,MAAO,CACLH,KAAMC,OACNC,UAAU,GAEZE,GAAI,CACFJ,KAAM,CAACC,OAAQI,OAAQlB,QAASmB,OAChCJ,UAAU,EACVK,SAAS,GAEXC,IAAK,CACHR,KAAM,CAACC,OAAQI,OAAQlB,QAASmB,OAChCJ,UAAU,EACVK,aAASE,IAGbC,SAAU,CACRC,8BACS,CACLZ,UAAWa,KAAKb,UAChBI,MAAOS,KAAKT,MACZC,GAAIQ,KAAKR,GACTI,IAAKI,KAAKJ,MAGdK,4BACS5B,EAAoB2B,KAAK1B"}
1
+ {"version":3,"file":"ToggleRefinement.vue_vue&type=script&lang.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":["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,CACbA,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{openBlock as e,createBlock as t,renderSlot as a,createVNode as n,toDisplayString as s,createCommentVNode as l}from"vue";function u(u,c,i,o,f,r){return u.state?(e(),t("div",{key:0,class:[u.suit(),!r.canRefine&&u.suit("","noRefinement")]},[a(u.$slots,"default",{value:u.state.value,canRefine:r.canRefine,refine:u.state.refine,createURL:u.state.createURL,sendEvent:u.state.sendEvent},function(){return[n("label",{class:u.suit("label")},[n("input",{class:u.suit("checkbox"),type:"checkbox",name:u.state.value.name,value:i.on,checked:u.state.value.isRefined,onChange:c[1]||(c[1]=function(e){return u.state.refine(u.state.value)})},null,42,["name","value","checked"]),n("span",{class:u.suit("labelText")},s(i.label),3),null!==u.state.value.count?(e(),t("span",{key:0,class:u.suit("count")},s(u.state.value.count.toLocaleString()),3)):l("v-if",!0)],2)]})],2)):l("v-if",!0)}export{u as render};
1
+ import{openBlock as e,createBlock as t,renderSlot as a,createVNode as n,toDisplayString as s,createCommentVNode as l}from"vue";function u(u,c,i,o,f,r){return u.state?(e(),t("div",{key:0,class:[u.suit(),!u.state.canRefine&&u.suit("","noRefinement")]},[a(u.$slots,"default",{value:u.state.value,canRefine:u.state.canRefine,refine:u.state.refine,createURL:u.state.createURL,sendEvent:u.state.sendEvent},function(){return[n("label",{class:u.suit("label")},[n("input",{class:u.suit("checkbox"),type:"checkbox",name:u.state.value.name,value:i.on,checked:u.state.value.isRefined,onChange:c[1]||(c[1]=function(e){return u.state.refine(u.state.value)})},null,42,["name","value","checked"]),n("span",{class:u.suit("labelText")},s(i.label),3),null!==u.state.value.count?(e(),t("span",{key:0,class:u.suit("count")},s(u.state.value.count.toLocaleString()),3)):l("v-if",!0)],2)]})],2)):l("v-if",!0)}export{u as render};
2
2
  //# sourceMappingURL=ToggleRefinement.vue_vue&type=template&id=14e4586f&lang.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ToggleRefinement.vue_vue&type=template&id=14e4586f&lang.js","sources":["../../../../src/components/ToggleRefinement.vue?vue&type=template&id=14e4586f&lang.js"],"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":["_ctx","_createBlock","class","$options","_renderSlot","value","canRefine","refine","createURL","sendEvent","_createVNode","type","name","$props","checked","isRefined","onChange","count","toLocaleString"],"mappings":"8JAEUA,aADRC,eAEGC,OAAQF,UAASG,aAAaH,6BAE/BI,sBACGC,MAAOL,QAAMK,MACbC,UAAYH,YACZI,OAAQP,QAAMO,OACdC,UAAWR,QAAMQ,UACjBC,UAAYT,QAAMS,6BAEnBC,WAAQR,MAAOF,kBACbU,WACGR,MAAOF,mBACRW,KAAK,WACJC,KAAMZ,QAAMK,MAAMO,KAClBP,MAAOQ,KACPC,QAASd,QAAMK,MAAMU,UACrBC,wCAAQhB,QAAMO,OAAOP,QAAMK,8CAE9BK,UAAOR,MAAOF,uBAAsBa,mBAE5Bb,QAAMK,MAAMY,WADpBhB,gBAEGC,MAAOF,mBACNA,QAAMK,MAAMY,MAAMC"}
1
+ {"version":3,"file":"ToggleRefinement.vue_vue&type=template&id=14e4586f&lang.js","sources":["../../../../src/components/ToggleRefinement.vue?vue&type=template&id=14e4586f&lang.js"],"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":["_ctx","_createBlock","class","canRefine","_renderSlot","value","refine","createURL","sendEvent","_createVNode","type","name","$props","checked","isRefined","onChange","count","toLocaleString"],"mappings":"8JAEUA,aADRC,eAEGC,OAAQF,UAASA,QAAMG,WAAaH,6BAErCI,sBACGC,MAAOL,QAAMK,MACbF,UAAYH,QAAMG,UAClBG,OAAQN,QAAMM,OACdC,UAAWP,QAAMO,UACjBC,UAAYR,QAAMQ,6BAEnBC,WAAQP,MAAOF,kBACbS,WACGP,MAAOF,mBACRU,KAAK,WACJC,KAAMX,QAAMK,MAAMM,KAClBN,MAAOO,KACPC,QAASb,QAAMK,MAAMS,UACrBC,wCAAQf,QAAMM,OAAON,QAAMK,8CAE9BI,UAAOP,MAAOF,uBAAsBY,mBAE5BZ,QAAMK,MAAMW,WADpBf,gBAEGC,MAAOF,mBACNA,QAAMK,MAAMW,MAAMC"}
@@ -1,2 +1,2 @@
1
- import"../util/vue-compat/index-vue3.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)})}}).beforeUnmount=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-vue3.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)})}}).beforeUnmount=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{createSSRApp as t}from"vue";import"./vue-compat/index-vue3.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 s,o={serverPrefetch:void 0,fetch:void 0,_base:void 0,name:"ais-ssr-root-component"},i=Object.assign({},e.$options,o);return i.mixins=r.concat(i.mixins||[]),s=t(i),e.$router&&s.use(e.$router),e.$store&&s.use(e.$store),s.$slots=e.$slots,s.$root=e.$root,s}function s(t,r){var s,o=n(t);return o.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 s={},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;s[t.getIndexId()]={state:Object.keys(n).reduce(function(t,e){return t[e]=n[e],t},{}),results:r}}),o.hydrate(s),o.getState()})},o.getState=function(){if(!s)throw new Error("You need to wait for findResultsState to finish");return s},o.__forceRender=function(t,e){var n=e.getResults();if(null!==n){var r=n._state,s=e.getHelper();s.state=r,t.render({helper:s,results:n,scopedResults:e.getScopedResults(),parent:e,state:r,templatesConfig:{},createURL:e.createURL,instantSearchInstance:o,searchMetadata:{isSearchStalled:!1}})}},o.hydrate=function(t){t?(o._initialResults=t,o.start(),o.started=!1):e("The result of `findResultsState()` needs to be passed to `hydrate()`.")},o}function o(t){void 0===t&&(t={});var e=t.$cloneComponent;void 0===e&&(e=r);var n=s(t,e);return{provide:function(){return{$_ais_ssrInstantSearchInstance:this.instantsearch}},data:function(){return{instantsearch:n}}}}export{o as createServerRootMixin};
1
+ import{createSSRApp as t}from"vue";import"./vue-compat/index-vue3.js";import{warn as e}from"./warn.js";import r from"instantsearch.js/es/index.js";function n(e,r){void 0===r&&(r={});var n=r.mixins;void 0===n&&(n=[]);var s,o={serverPrefetch:void 0,fetch:void 0,_base:void 0,name:"ais-ssr-root-component"},i=Object.assign({},e.$options,o);return i.mixins=n.concat(i.mixins||[]),s=t(i),e.$router&&s.use(e.$router),e.$store&&s.use(e.$store),s.$slots=e.$slots,s.$root=e.$root,s}function s(t,n){var s,o=r(t);return o.findResultsState=function(t){var e,r,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=n(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(){(r=this.instantsearch).start(),r.started=!1}}]})}).then(function(){return a(e)}).then(function(){return t=r.mainHelper,new Promise(function(e,r){t.searchOnlyWithDerivedHelpers(),t.derivedHelpers[0].on("result",function(){e()}),t.derivedHelpers.forEach(function(t){return t.on("error",function(t){r(t)})})});var t}).then(function(){return s={},function t(e,r){return r(e),e.getWidgets().forEach(function(e){"ais.index"===e.$$type&&(r(e),t(e,r))})}(r.mainIndex,function(t){var e=t.getResults(),r=e._state,n=e._rawResults;s[t.getIndexId()]={state:Object.keys(r).reduce(function(t,e){return t[e]=r[e],t},{}),results:n}}),o.hydrate(s),o.getState()})},o.getState=function(){if(!s)throw new Error("You need to wait for findResultsState to finish");return s},o.__forceRender=function(t,e){var r=e.getResults();if(null!==r){var n=r._state,s=e.getHelper();s.state=n,t.render({helper:s,results:r,scopedResults:e.getScopedResults(),parent:e,state:n,templatesConfig:{},createURL:e.createURL,instantSearchInstance:o,searchMetadata:{isSearchStalled:!1}})}},o.hydrate=function(t){t?(o._initialResults=t,o.start(),o.started=!1):e("The result of `findResultsState()` needs to be passed to `hydrate()`.")},o}function o(t){void 0===t&&(t={});var e=t.$cloneComponent;void 0===e&&(e=n);var r=s(t,e);return{provide:function(){return{$_ais_ssrInstantSearchInstance:this.instantsearch}},data:function(){return{instantsearch:r}}}}export{o 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","appOptions","Object","assign","$options","mixins","createSSRApp","$router","use","$store","$slots","$root","augmentInstantSearch","instantSearchOptions","cloneComponent","initialResults","search","instantsearch","findResultsState","instance","renderToString","Error","Promise","resolve","then","component","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":"mJA+BA,SAASA,EAAsBC,EAAmBC,kBAAkB,kCAAP,QAQvDC,EAPEC,EAAU,CACdC,oBAAgBC,EAChBC,WAAOD,EACPE,WAAOF,EACPG,KAAM,0BAMAC,EAAaC,OAAOC,OAAO,GAAIX,EAAkBY,SAAUT,UACjEM,EAAWI,OAAaA,SAAYJ,EAAWI,QAAU,IACzDX,EAAMY,EAAaL,GACfT,EAAkBe,SACpBb,EAAIc,IAAIhB,EAAkBe,SAExBf,EAAkBiB,QACpBf,EAAIc,IAAIhB,EAAkBiB,QAqB9Bf,EAAIgB,OAASlB,EAAkBkB,OAC/BhB,EAAIiB,MAAQnB,EAAkBmB,MAKvBjB,EAGT,SAASkB,EAAqBC,EAAsBC,OAG9CC,EAFEC,EAASC,EAAcJ,UAW7BG,EAAOE,iBAAmB,SAASzB,OAO7BC,EACAyB,uCAPCC,QACG,IAAIC,MACR,4GAOGC,QAAQC,UACZC,gBACC9B,EAAMoB,EAAeW,EAAW,CAC9BpB,OAAQ,CACN,CACEqB,wBACMD,EAAUE,aAGPA,MAAQF,EAAUE,QAG3BC,oBACET,EAAWU,KAAKZ,eAEPa,QAGTX,EAASY,SAAU,SAM5BP,uBAAWJ,EAAe1B,KAC1B8B,uBAhH+BQ,EAgHSb,EAASc,WA/G/C,IAAIX,iBAASC,EAASW,GAC3BF,EAAOG,+BAGPH,EAAOI,eAAe,GAAGC,GAAG,oBAC1Bd,MAGFS,EAAOI,eAAeE,iBAAQC,UAC5BA,EAAcF,GAAG,iBAASG,GACxBN,EAAOM,SAXf,IAAsCR,IAiH/BR,uBACCT,EAAiB,GA5HzB,SAAS0B,EAAUC,EAAaC,UAC9BA,EAAMD,GAECA,EAAYE,aAAaN,iBAAQO,GAChB,cAAlBA,EAAOC,SACXH,EAAME,GACNJ,EAAUI,EAAQF,MAuHdF,CAAUtB,EAAS4B,mBAAWF,SACIA,EAAOG,wCAEvCjC,EAAe8B,EAAOI,cAAgB,CAEpCC,MAAOhD,OAAOiD,KAAKC,GAAQC,gBAAQC,EAAKC,UAEtCD,EAAIC,GAAOH,EAAOG,GACXD,GACN,IACHE,QAASC,KAIbzC,EAAO0C,QAAQ3C,GACRC,EAAO2C,cAOpB3C,EAAO2C,SAAW,eACX5C,QACG,IAAIM,MAAM,0DAEXN,GAWTC,EAAO4C,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,sBAAuBrD,EACvBsD,eAAgB,CACdC,iBAAiB,OAUvBvD,EAAO0C,QAAU,SAASF,GACnBA,GAOLxC,EAAOwD,gBAAkBhB,EAEzBxC,EAAOc,QACPd,EAAOe,SAAU,GATf0C,EACE,0EAUCzD,EAGF,SAAS0D,EAAsB7D,kBAAuB,2CACjCtB,OAEpByB,EAASJ,EAAqBC,EAAsB8D,SAIxC,CAChBC,yBACS,CACLC,+BAAgChD,KAAKZ,gBAGzC6D,sBACS,CAGL7D,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","appOptions","Object","assign","$options","mixins","createSSRApp","$router","use","$store","$slots","$root","augmentInstantSearch","instantSearchOptions","cloneComponent","initialResults","search","instantsearch","findResultsState","instance","renderToString","Error","Promise","resolve","then","component","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":"mJA+BA,SAASA,EAAsBC,EAAmBC,kBAAkB,kCAAP,QAQvDC,EAPEC,EAAU,CACdC,oBAAgBC,EAChBC,WAAOD,EACPE,WAAOF,EACPG,KAAM,0BAMAC,EAAaC,OAAOC,OAAO,GAAIX,EAAkBY,SAAUT,UACjEM,EAAWI,OAAaA,SAAYJ,EAAWI,QAAU,IACzDX,EAAMY,EAAaL,GACfT,EAAkBe,SACpBb,EAAIc,IAAIhB,EAAkBe,SAExBf,EAAkBiB,QACpBf,EAAIc,IAAIhB,EAAkBiB,QAqB9Bf,EAAIgB,OAASlB,EAAkBkB,OAC/BhB,EAAIiB,MAAQnB,EAAkBmB,MAKvBjB,EAGT,SAASkB,EAAqBC,EAAsBC,OAG9CC,EAFEC,EAASC,EAAcJ,UAW7BG,EAAOE,iBAAmB,SAASzB,OAO7BC,EACAyB,uCAPCC,QACG,IAAIC,MACR,4GAOGC,QAAQC,UACZC,gBACC9B,EAAMoB,EAAeW,EAAW,CAC9BpB,OAAQ,CACN,CACEqB,4BACQC,EAAazB,OAAO0B,yBACxBH,EACA,SAGII,IAAaF,IACfA,EAAWG,UAAYH,EAAWI,KAGlCN,EAAUO,OAASH,SAGhBG,MAAQP,EAAUO,QAG3BC,oBACEd,EAAWe,KAAKjB,eAEPkB,QAGThB,EAASiB,SAAU,SAM5BZ,uBAAWJ,EAAe1B,KAC1B8B,uBAzH+Ba,EAyHSlB,EAASmB,WAxH/C,IAAIhB,iBAASC,EAASgB,GAC3BF,EAAOG,+BAGPH,EAAOI,eAAe,GAAGC,GAAG,oBAC1BnB,MAGFc,EAAOI,eAAeE,iBAAQC,UAC5BA,EAAcF,GAAG,iBAASG,GACxBN,EAAOM,SAXf,IAAsCR,IA0H/Bb,uBACCT,EAAiB,GArIzB,SAAS+B,EAAUC,EAAaC,UAC9BA,EAAMD,GAECA,EAAYE,aAAaN,iBAAQO,GAChB,cAAlBA,EAAOC,SACXH,EAAME,GACNJ,EAAUI,EAAQF,MAgIdF,CAAU3B,EAASiC,mBAAWF,SACIA,EAAOG,wCAEvCtC,EAAemC,EAAOI,cAAgB,CAEpCC,MAAOrD,OAAOsD,KAAKC,GAAQC,gBAAQC,EAAKC,UAEtCD,EAAIC,GAAOH,EAAOG,GACXD,GACN,IACHE,QAASC,KAIb9C,EAAO+C,QAAQhD,GACRC,EAAOgD,cAOpBhD,EAAOgD,SAAW,eACXjD,QACG,IAAIM,MAAM,0DAEXN,GAWTC,EAAOiD,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,sBAAuB1D,EACvB2D,eAAgB,CACdC,iBAAiB,OAUvB5D,EAAO+C,QAAU,SAASF,GACnBA,GAOL7C,EAAO6D,gBAAkBhB,EAEzB7C,EAAOmB,QACPnB,EAAOoB,SAAU,GATf0C,EACE,0EAUC9D,EAGF,SAAS+D,EAAsBlE,kBAAuB,2CACjCtB,OAEpByB,EAASJ,EAAqBC,EAAsBmE,SAIxC,CAChBC,yBACS,CACLC,+BAAgChD,KAAKjB,gBAGzCkE,sBACS,CAGLlE,cAAeD"}