UNPKG

6.53 kBSource Map (JSON)View Raw
1{"version":3,"file":"react-paginating.umd.min.js","sources":["../src/Pagination/Pagination.js","../src/Pagination/utils.js"],"sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { getRange, getPageInfo } from './utils';\n\nclass Pagination extends Component {\n constructor() {\n super();\n this.state = {\n currentPage: 0,\n };\n }\n\n componentWillMount() {\n if (this.props.currentPage) {\n this.setState({\n currentPage: parseInt(this.props.currentPage, 10),\n });\n }\n }\n\n componentWillReceiveProps(nextProps) {\n if (nextProps.currentPage !== this.props.currentPage) {\n this.setState({\n currentPage: parseInt(nextProps.currentPage, 10),\n });\n }\n }\n\n _getPageItemProps = props => {\n const { pageValue, onPageChange: handlePageChange, ...rest } = props;\n\n const onPageChange = e => {\n if (typeof handlePageChange === 'function') {\n handlePageChange(pageValue, e);\n }\n this.setState({\n currentPage: pageValue,\n });\n };\n\n return {\n onClick: onPageChange,\n ...rest,\n };\n };\n\n render() {\n const { total, limit, pageCount } = this.props;\n const { currentPage } = this.state;\n\n const pageInfo = getPageInfo({\n limit,\n pageCount,\n total,\n page: currentPage,\n });\n\n const {\n firstPage,\n lastPage,\n hasNextPage,\n hasPreviousPage,\n previousPage,\n nextPage,\n totalPages,\n } = pageInfo;\n\n const pages = total ? getRange(firstPage, lastPage) : [];\n\n return (\n <div>\n {this.props.children({\n pages,\n previousPage,\n nextPage,\n totalPages,\n currentPage,\n hasNextPage,\n hasPreviousPage,\n getPageItemProps: this._getPageItemProps,\n })}\n </div>\n );\n }\n}\n\nPagination.propTypes = {\n total: PropTypes.number.isRequired,\n limit: PropTypes.number,\n pageCount: PropTypes.number,\n currentPage: PropTypes.number,\n pageValue: PropTypes.number,\n children: PropTypes.func.isRequired,\n onPageChange: PropTypes.func,\n};\n\nPagination.defaultProps = {\n limit: 10,\n pageCount: 5,\n currentPage: 0,\n pageValue: 0,\n};\n\nexport default Pagination;\n","export function getRange(start, end) {\n return [...Array(end - start + 1)].map((_, i) => start + i);\n}\n\nexport function getPageInfo({ limit, pageCount, total, page }) {\n const totalPages = Math.ceil(total / limit);\n\n const totalResults = parseInt(total, 10);\n let currentPage = parseInt(page, 10);\n\n if (currentPage < 1) {\n currentPage = 1;\n }\n\n if (currentPage > totalPages) {\n currentPage = totalPages;\n }\n\n let firstPage = Math.max(1, currentPage - Math.floor(pageCount / 2));\n\n let lastPage = Math.min(totalPages, currentPage + Math.floor(pageCount / 2));\n\n if (lastPage - firstPage + 1 < pageCount) {\n if (currentPage < totalPages / 2) {\n lastPage = Math.min(\n totalPages,\n lastPage + (pageCount - (lastPage - firstPage))\n );\n } else {\n firstPage = Math.max(1, firstPage - (pageCount - (lastPage - firstPage)));\n }\n }\n\n if (lastPage - firstPage + 1 > pageCount) {\n if (currentPage > totalPages / 2) {\n // eslint-disable-next-line\n firstPage++;\n } else {\n // eslint-disable-next-line\n lastPage--;\n }\n }\n const firstResult = limit * (currentPage - 1);\n const lastResult = limit * currentPage - 1;\n\n return {\n totalPages,\n pages: Math.min(lastPage - firstPage + 1, totalPages),\n currentPage,\n firstPage,\n lastPage,\n previousPage: currentPage - 1,\n nextPage: currentPage + 1,\n hasPreviousPage: currentPage > 1,\n hasNextPage: currentPage < totalPages,\n totalResults,\n results: Math.min(lastResult - firstResult + 1, totalResults),\n firstResult,\n lastResult\n };\n}\n"],"names":["Pagination","props","pageValue","handlePageChange","onPageChange","onClick","e","setState","currentPage","state","Component","this","parseInt","nextProps","start","total","limit","pageCount","pageInfo","page","totalPages","Math","ceil","totalResults","firstPage","max","floor","lastPage","min","firstResult","lastResult","pages","previousPage","nextPage","hasPreviousPage","hasNextPage","results","getPageInfo","_toConsumableArray","Array","map","_","i","React","children","getPageItemProps","_getPageItemProps","propTypes","PropTypes","number","isRequired","func","defaultProps"],"mappings":"gkDAKMA,8PAwBgB,SAAAC,OACVC,EAAuDD,EAAvDC,UAAyBC,EAA8BF,EAA5CG,wVAYjBC,QAVmB,SAAAC,GACa,mBAArBH,GACTA,EAAiBD,EAAWI,KAEzBC,SAAS,CACZC,YAAaN,QAP8CD,qCAtB1DQ,MAAQ,CACXD,YAAa,2PAJME,gEASjBC,KAAKV,MAAMO,kBACRD,SAAS,CACZC,YAAaI,SAASD,KAAKV,MAAMO,YAAa,wDAK1BK,GACpBA,EAAUL,cAAgBG,KAAKV,MAAMO,kBAClCD,SAAS,CACZC,YAAaI,SAASC,EAAUL,YAAa,2CCxB5BM,IDgDeH,KAAKV,MAAjCc,IAAAA,MAAOC,IAAAA,MAAOC,IAAAA,UACdT,EAAgBG,KAAKF,MAArBD,YAEFU,EC/CH,gBAAuBF,IAAAA,MAAOC,IAAAA,UAAWF,IAAAA,MAAOI,IAAAA,KAC/CC,EAAaC,KAAKC,KAAKP,EAAQC,GAE/BO,EAAeX,SAASG,EAAO,IACjCP,EAAcI,SAASO,EAAM,IAE7BX,EAAc,IAChBA,EAAc,GAGZA,EAAcY,IAChBZ,EAAcY,OAGZI,EAAYH,KAAKI,IAAI,EAAGjB,EAAca,KAAKK,MAAMT,EAAY,IAE7DU,EAAWN,KAAKO,IAAIR,EAAYZ,EAAca,KAAKK,MAAMT,EAAY,IAErEU,EAAWH,EAAY,EAAIP,IACzBT,EAAcY,EAAa,EAC7BO,EAAWN,KAAKO,IACdR,EACAO,GAAYV,GAAaU,EAAWH,KAGtCA,EAAYH,KAAKI,IAAI,EAAGD,GAAaP,GAAaU,EAAWH,MAI7DG,EAAWH,EAAY,EAAIP,IACzBT,EAAcY,EAAa,EAE7BI,IAGAG,SAGEE,EAAcb,GAASR,EAAc,GACrCsB,EAAad,EAAQR,EAAc,QAElC,CACLY,WAAAA,EACAW,MAAOV,KAAKO,IAAID,EAAWH,EAAY,EAAGJ,GAC1CZ,YAAAA,EACAgB,UAAAA,EACAG,SAAAA,EACAK,aAAcxB,EAAc,EAC5ByB,SAAUzB,EAAc,EACxB0B,gBAAiB1B,EAAc,EAC/B2B,YAAa3B,EAAcY,EAC3BG,aAAAA,EACAa,QAASf,KAAKO,IAAIE,EAAaD,EAAc,EAAGN,GAChDM,YAAAA,EACAC,WAAAA,GDPiBO,CAAY,CAC3BrB,MAAAA,EACAC,UAAAA,EACAF,MAAAA,EACAI,KAAMX,IAINgB,EAOEN,EAPFM,UACAG,EAMET,EANFS,SACAQ,EAKEjB,EALFiB,YACAD,EAIEhB,EAJFgB,gBACAF,EAGEd,EAHFc,aACAC,EAEEf,EAFFe,SACAb,EACEF,EADFE,WAGIW,EAAQhB,GCpEOD,EDoEUU,ECnE1Bc,EAAIC,MDmEiCZ,ECnErBb,EAAQ,IAAI0B,IAAI,SAACC,EAAGC,UAAM5B,EAAQ4B,KDmED,UAGpDC,2BACGhC,KAAKV,MAAM2C,SAAS,CACnBb,MAAAA,EACAC,aAAAA,EACAC,SAAAA,EACAb,WAAAA,EACAZ,YAAAA,EACA2B,YAAAA,EACAD,gBAAAA,EACAW,iBAAkBlC,KAAKmC,iEAOjC9C,EAAW+C,UAAY,CACrBhC,MAAOiC,EAAUC,OAAOC,WACxBlC,MAAOgC,EAAUC,OACjBhC,UAAW+B,EAAUC,OACrBzC,YAAawC,EAAUC,OACvB/C,UAAW8C,EAAUC,OACrBL,SAAUI,EAAUG,KAAKD,WACzB9C,aAAc4C,EAAUG,MAG1BnD,EAAWoD,aAAe,CACxBpC,MAAO,GACPC,UAAW,EACXT,YAAa,EACbN,UAAW"}
\No newline at end of file