{"version":3,"file":"pagination-DlmSKCBn.js","sources":["../../../app/javascript/shared/pagination.vue"],"sourcesContent":["<template>\n <nav class=\"pagination is-centered\" role=\"navigation\" aria-label=\"pagination\">\n <!-- previous page router-link -->\n <router-link\n v-if=\"previousPage > 0\"\n :to=\"routerLinkTo(previousPage)\"\n class=\"pagination-previous\"\n rel=\"prev\"\n >\n ‹ Prev\n </router-link>\n <a\n v-else\n class=\"pagination-previous is-disabled\"\n >\n ‹ Prev\n </a>\n <!-- next page router-link -->\n <router-link\n v-if=\"nextPage <= metadata.totalPages\"\n :to=\"routerLinkTo(nextPage)\"\n class=\"pagination-next\"\n rel=\"next\"\n >\n Next ›\n </router-link>\n <a\n v-else\n class=\"pagination-next is-disabled\"\n >\n Next ›\n </a>\n <ul class=\"pagination-list\">\n <li\n v-for=\"page in pages\"\n >\n <router-link\n v-if=\"page === metadata.currentPage\"\n :to=\"routerLinkTo(page)\"\n class=\"pagination-link is-current\"\n >\n {{ page }}\n </router-link>\n <span\n v-else-if=\"page === '…'\"\n class=\"pagination-ellipsis\"\n >\n …\n </span>\n <router-link\n v-else\n :to=\"routerLinkTo(page)\"\n class=\"pagination-link\"\n >\n {{ page }}\n </router-link>\n </li>\n <!-- <a href=\"/photos?page=2\" rel=\"next\" class=\"pagination-link\" aria-label=\"goto page 2\">2</a> -->\n </ul>\n </nav>\n</template>\n\n<script setup>\n import { computed, toRefs } from 'vue'\n\n const pad = 3\n const padFirst = 0\n const padLast = 0\n\n const props = defineProps({\n metadata: {\n type: Object,\n required: true\n },\n routeName: {\n type: String,\n required: true\n },\n routeParams: {\n type: Object,\n required: false\n },\n additionalQueryParams: {\n type: Object,\n required: false\n }\n })\n\n const { metadata, routeName, routeParams, additionalQueryParams } = toRefs(props)\n\n const pages = computed(\n function() {\n const pages = []\n for (let i = 1; i <= metadata.value.totalPages; i++) {\n let addPage = false\n if(i == 1 || i == metadata.value.totalPages) {\n addPage = true\n } else if(i >= metadata.value.currentPage - pad && i <= metadata.value.currentPage + pad) {\n addPage = true\n } else if(i <= padFirst + 1) {\n addPage = true\n } else if(i >= metadata.value.totalPages - padLast) {\n addPage = true\n }\n\n if(addPage) {\n pages.push(i)\n } else if(pages[pages.length - 1] != '…') {\n pages.push('…')\n }\n }\n return pages\n }\n )\n\n const previousPage = computed(\n function() {\n return metadata.value.currentPage - 1\n }\n )\n\n const nextPage = computed(\n function() {\n return metadata.value.currentPage + 1\n }\n )\n\n const routerLinkTo = (page) => {\n const query = page != 1 ? { ...additionalQueryParams.value, page: page } : additionalQueryParams.value\n return {\n name: routeName.value,\n params: routeParams.value,\n query: query\n }\n }\n</script>\n"],"names":["pad","padFirst","padLast","props","__props","metadata","routeName","routeParams","additionalQueryParams","toRefs","pages","computed","i","addPage","previousPage","nextPage","routerLinkTo","page","query"],"mappings":"yXAiEQA,EAAM,EACNC,EAAW,EACXC,EAAU,uMAEhB,MAAMC,EAAQC,EAmBR,CAAE,SAAAC,EAAU,UAAAC,EAAW,YAAAC,EAAa,sBAAAC,CAAqB,EAAKC,EAAON,CAAK,EAE1EO,EAAQC,EACZ,UAAW,CACT,MAAMD,EAAQ,CAAA,EACd,QAASE,EAAI,EAAGA,GAAKP,EAAS,MAAM,WAAYO,IAAK,CACnD,IAAIC,EAAU,IACXD,GAAK,GAAKA,GAAKP,EAAS,MAAM,YAEvBO,GAAKP,EAAS,MAAM,YAAcL,GAAOY,GAAKP,EAAS,MAAM,YAAcL,GAE3EY,GAAKX,EAAW,GAEhBW,GAAKP,EAAS,MAAM,WAAaH,KACzCW,EAAU,IAGTA,EACDH,EAAM,KAAKE,CAAC,EACJF,EAAMA,EAAM,OAAS,CAAC,GAAK,KACnCA,EAAM,KAAK,GAAG,CAExB,CACM,OAAOA,CACb,CACA,EAEQI,EAAeH,EACnB,UAAW,CACT,OAAON,EAAS,MAAM,YAAc,CAC1C,CACA,EAEQU,EAAWJ,EACf,UAAW,CACT,OAAON,EAAS,MAAM,YAAc,CAC1C,CACA,EAEQW,EAAgBC,GAAS,CAC7B,MAAMC,EAAQD,GAAQ,EAAI,CAAE,GAAGT,EAAsB,MAAO,KAAMS,CAAM,EAAGT,EAAsB,MACjG,MAAO,CACL,KAAMF,EAAU,MAChB,OAAQC,EAAY,MACpB,MAAOW,CACb,CACA"}