{"version":3,"mappings":"wnBAIA,MAAMA,EAAeC,EAAqB,IAAMC,EAAA,WAAO,4BAAuC,2FAAC,EAQzFC,EAAQC,EACRC,EAAOC,EACPC,EAAoBC,EAAI,CAAC,EAEzBC,EAAYD,EAAI,CAAC,EACjBE,EAAUF,EAAI,CAAC,EAEfG,EAAuB,CAACC,EAAiBC,EAAoB,KAAM,CACxE,GAAGA,IAAc,GAChBN,EAAkB,MAAQK,MAE1B,QAAQC,EAAW,CACnB,IAAK,OACcN,EAAA,QAClB,MACD,IAAK,OACcA,EAAA,QAClB,KACD,CAEIF,EAAA,WAAYE,EAAkB,KAAK,GAGnCO,EAAgBC,EAAS,IAAK,CAChC,GAAAZ,EAAM,YAAcA,EAAM,cAC5BM,EAAU,MAAQ,EAClBC,EAAQ,MAAQP,EAAM,eACjB,CACL,IAAIa,EAAiC,KAAK,MAAMb,EAAM,cAAgB,CAAC,EACnEc,EAAgC,KAAK,KAAKd,EAAM,cAAgB,CAAC,EAAI,EAErEI,EAAkB,OAASS,GAC9BP,EAAU,MAAQ,EAClBC,EAAQ,MAAQP,EAAM,eAEtBI,EAAkB,MAAQU,GAC1Bd,EAAM,YAGNM,EAAU,MAAQN,EAAM,WAAaA,EAAM,cAAgB,EAC3DO,EAAQ,MAAQP,EAAM,aAGZM,EAAA,MAAQF,EAAkB,MAAQS,EACpCN,EAAA,MAAQH,EAAkB,MAAQU,EAE5C,CACO,aAAM,KAAK,MAAMP,EAAQ,MAAQ,EAAID,EAAU,KAAK,EAAE,KAAK,CAAC,EAAE,IACnES,GAAMT,EAAU,MAAQS,CAAA,CAC1B,CACA,EAEKC,EAAmBJ,EAAS,IAC1B,CAACD,EAAc,MAAM,SAAS,CAAC,CACtC,EAEKM,EAAiBL,EAAS,IACxB,CAACD,EAAc,MAAM,SAASX,EAAM,UAAU,CACrD,EAEKkB,EAAMb,EAAI,EAAE,EAElB,OAAAc,EAAU,IAAK,CACVD,EAAA,MAAQ,SAAS,SAAS,SAC9B,EAEDE,EAAO,IAAMpB,EAAM,YAAcqB,GAAY,CAC5CjB,EAAkB,MAAQiB,CAAA,EACzB,CACD,KAAK,GACL,UAAW,GACX","names":["RenderAction","defineAsyncComponent","__vitePreload","props","__props","emit","__emit","currentPageNumber","ref","startPage","endPage","navigationPagination","pageNum","direction","getPagination","computed","maxPagesShownBeforeCurrentPage","maxPagesShownAfterCurrentPage","i","startBreakPoints","endBreakPoints","url","onMounted","watch","newValue"],"sources":["../../src/components/Files/Templates/Designs/Mobler/src/components/Pagination.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport {computed, defineAsyncComponent, onMounted, ref, watch} from 'vue'\r\nimport {getTranslation} from '@/ts/utilities.ts'\r\nimport {FontAwesomeIcon} from '@fortawesome/vue-fontawesome'\r\nconst RenderAction = defineAsyncComponent(() => import('@/components/helpers/RenderAction.vue'))\r\ninterface Props {\r\n\tcurrentPage: number,\r\n\ttotalPages: number,\r\n\tpageSize: number,\r\n\tmaxPagesShown: number\r\n}\r\n\r\nconst props = defineProps<Props>()\r\nconst emit = defineEmits(['onPaging'])\r\nconst currentPageNumber = ref(0)\r\n\r\nconst startPage = ref(1)\r\nconst endPage = ref(1)\r\n\r\nconst navigationPagination = (pageNum: number, direction: string = '') =>{\r\n\tif(direction === ''){\r\n\t\tcurrentPageNumber.value = pageNum\r\n\t} else{\r\n\t\tswitch (direction) {\r\n\t\tcase 'prev':\r\n\t\t\tcurrentPageNumber.value--\r\n\t\t\tbreak\r\n\t\tcase 'next':\r\n\t\t\tcurrentPageNumber.value++\r\n\t\t\tbreak\r\n\t\t}\r\n\t}\r\n\temit('onPaging', currentPageNumber.value)\r\n}\r\n\r\nconst getPagination = computed(() =>{\r\n\tif(props.totalPages <= props.maxPagesShown){\r\n\t\tstartPage.value = 1\r\n\t\tendPage.value = props.totalPages\r\n\t} else{\r\n\t\tlet maxPagesShownBeforeCurrentPage = Math.floor(props.maxPagesShown / 2)\r\n\t\tlet maxPagesShownAfterCurrentPage = Math.ceil(props.maxPagesShown / 2) - 1\r\n\r\n\t\tif (currentPageNumber.value <= maxPagesShownBeforeCurrentPage) {\r\n\t\t\tstartPage.value = 1\r\n\t\t\tendPage.value = props.maxPagesShown\r\n\t\t} else if (\r\n\t\t\tcurrentPageNumber.value + maxPagesShownAfterCurrentPage >=\r\n\t\t\tprops.totalPages\r\n\t\t) {\r\n\t\t\t// current page is at the end of the pagination\r\n\t\t\tstartPage.value = props.totalPages - props.maxPagesShown + 1\r\n\t\t\tendPage.value = props.totalPages\r\n\t\t} else {\r\n\t\t\t// current page is somewhere in the middle of the pagination\r\n\t\t\tstartPage.value = currentPageNumber.value - maxPagesShownBeforeCurrentPage\r\n\t\t\tendPage.value = currentPageNumber.value + maxPagesShownAfterCurrentPage\r\n\t\t}\r\n\t}\r\n\treturn Array.from(Array(endPage.value + 1 - startPage.value).keys()).map(\r\n\t\t(i) => startPage.value + i\r\n\t)\r\n})\r\n\r\nconst startBreakPoints = computed(() => {\r\n\treturn !getPagination.value.includes(1)\r\n})\r\n\r\nconst endBreakPoints = computed(() => {\r\n\treturn !getPagination.value.includes(props.totalPages)\r\n})\r\n\r\nconst url = ref('')\r\n\r\nonMounted(() =>{\r\n\turl.value = document.location.pathname\r\n})\r\n\r\nwatch( () => props.currentPage, (newValue) =>{\r\n\tcurrentPageNumber.value = newValue\r\n},{\r\n\tdeep:true,\r\n\timmediate: true\r\n})\r\n\r\n</script>\r\n\r\n<template>\r\n\t<div class=\"container mb-4\" v-if=\"props.totalPages > 1\">\r\n\t\t<nav class=\"isolate flex flex-col lg:flex-row justify-center gap-y-4 lg:gap-2\">\r\n\t\t\t<RenderAction\r\n\t\t\t\tv-if=\"currentPageNumber > 1\"\r\n\t\t\t\taction=\"link\"\r\n\t\t\t\ttheme=\"outline\"\r\n\t\t\t\tsize=\"sm\"\r\n\t\t\t\t:data=\"url + `?PageNum=${currentPageNumber - 1}`\"\r\n\t\t\t\t@click.prevent=\"navigationPagination(-1, 'prev')\">\r\n\t\t\t\t<font-awesome-icon :icon=\"['fas', 'arrow-left']\" />\r\n\t\t\t\t{{ getTranslation('Pagination.Previous') }}\r\n\t\t\t</RenderAction>\r\n\t\t\t<RenderAction\r\n\t\t\t\tv-if=\"currentPageNumber < props.totalPages\"\r\n\t\t\t\tclass=\"lg:order-3\"\r\n\t\t\t\taction=\"link\"\r\n\t\t\t\ttheme=\"primary\"\r\n\t\t\t\tsize=\"sm\"\r\n\t\t\t\t:data=\"url + `?PageNum=${currentPageNumber + 1}`\"\r\n\t\t\t\t@click.prevent=\"navigationPagination(-1, 'next')\">\r\n\t\t\t\t{{ getTranslation('Pagination.Next') }}\r\n\t\t\t\t<font-awesome-icon :icon=\"['fas', 'arrow-right']\" />\r\n\t\t\t</RenderAction>\r\n\t\t\t<div class=\"flex flex-wrap gap-2 lg:order-2 *:relative *:inline-flex *:items-center *:px-4 *:py-2 *:text-sm *:rounded-full\">\r\n\t\t\t\t<RenderAction\r\n\t\t\t\t\tv-if=\"startBreakPoints\"\r\n\t\t\t\t\t:class=\"currentPageNumber === 1 ? 'bg-white pointer-events-none' : 'bg-white hover:bg-white-hover hover:text-black text-black cursor-pointer'\"\r\n\t\t\t\t\taction=\"link\"\r\n\t\t\t\t\tsize=\"none\"\r\n\t\t\t\t\ttheme=\"none\"\r\n\t\t\t\t\t:data=\"url + '?PageNum=1'\"\r\n\t\t\t\t\t@click.prevent=\"navigationPagination(1)\">\r\n\t\t\t\t\t1\r\n\t\t\t\t</RenderAction>\r\n\t\t\t\t<div v-if=\"startBreakPoints\" class=\"pointer-events-none\">\r\n\t\t\t\t\t...\r\n\t\t\t\t</div>\r\n\t\t\t\t<RenderAction\r\n\t\t\t\t\tv-for=\"page in getPagination\" :key=\"page\"\r\n\t\t\t\t\tclass=\"focus:ring-2 focus:ring-offset-2\"\r\n\t\t\t\t\t:class=\"currentPageNumber === page ? 'bg-primary text-white pointer-events-none' : 'bg-white text-black hover:bg-white-hover hover:text-black cursor-pointer'\"\r\n\t\t\t\t\taction=\"link\"\r\n\t\t\t\t\tsize=\"none\"\r\n\t\t\t\t\ttheme=\"none\"\r\n\t\t\t\t\t:data=\"url + `?PageNum=${page}`\"\r\n\t\t\t\t\t@click.prevent=\"navigationPagination(page)\">\r\n\t\t\t\t\t{{ page }}\r\n\t\t\t\t</RenderAction>\r\n\t\t\t\t<div v-if=\"endBreakPoints\" class=\"pointer-events-none\">\r\n\t\t\t\t\t...\r\n\t\t\t\t</div>\r\n\t\t\t\t<RenderAction\r\n\t\t\t\t\tv-if=\"endBreakPoints\"\r\n\t\t\t\t\t:class=\"currentPageNumber === props.totalPages ? 'bg-white pointer-events-none' : 'bg-white text-black hover:bg-white-hover hover:text-black cursor-pointer'\"\r\n\t\t\t\t\taction=\"link\"\r\n\t\t\t\t\tsize=\"none\"\r\n\t\t\t\t\ttheme=\"none\"\r\n\t\t\t\t\t:data=\"url + `?PageNum=${props.totalPages}`\"\r\n\t\t\t\t\t@click.prevent=\"navigationPagination(props.totalPages)\">\r\n\t\t\t\t\t{{ props.totalPages }}\r\n\t\t\t\t</RenderAction>\r\n\t\t\t</div>\r\n\t\t</nav>\r\n\t</div>\r\n</template>\r\n"],"file":"assets/Pagination-cedd5c85.js"}