{"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"}