UNPKG

5.35 kBSource Map (JSON)View Raw
1{"version":3,"file":"Pagination.js","sources":["../src/components/Pagination/Pagination.js"],"sourcesContent":["import React from 'react'\nimport PropTypes from 'prop-types'\nimport { GU } from '../../style'\nimport { noop } from '../../utils'\nimport { PaginationItem } from './PaginationItem'\nimport { PaginationSeparator } from './PaginationSeparator'\n\nfunction paginationItems(pages, selected) {\n const all = [...Array(pages)].map((_, i) => i)\n\n if (all.length < 6) {\n return all\n }\n\n const first = 0\n const last = all.length - 1\n const prev = Math.min(all.length, Math.max(0, selected - 1))\n const next = Math.min(all.length, Math.max(0, selected + 1))\n\n const items = []\n\n // Selected item + previous + next\n items.push(...all.slice(prev, next + 1))\n\n // Display three items, even if the first / last one is selected\n if (selected === last) {\n items.unshift(last - 2)\n }\n if (selected === first) {\n items.push(first + 2)\n }\n\n // Ellipsises\n if (prev > first + 1) {\n items.unshift(-1)\n }\n if (next < last - 1) {\n items.push(-1)\n }\n\n // Always display the first & last items\n if (prev >= first + 1) {\n items.unshift(all[0])\n }\n if (next <= last - 1) {\n items.push(all[all.length - 1])\n }\n\n return items\n}\n\nconst Pagination = React.memo(function Pagination({\n pages,\n selected,\n onChange,\n touchMode,\n ...props\n}) {\n const items = paginationItems(pages, selected)\n return (\n <div\n css={`\n display: flex;\n align-items: center;\n justify-content: center;\n padding: ${2 * GU}px 0;\n & > div + div {\n margin-left: ${1 * GU}px;\n }\n `}\n {...props}\n >\n {items.map((pageIndex, i) =>\n pageIndex === -1 ? (\n <PaginationSeparator key={`separator-${i}`} />\n ) : (\n <PaginationItem\n key={pageIndex}\n index={pageIndex}\n selected={selected === pageIndex}\n onChange={onChange}\n touchMode={touchMode}\n />\n )\n )}\n </div>\n )\n})\n\nPagination.propTypes = {\n onChange: PropTypes.func,\n pages: PropTypes.number,\n selected: PropTypes.number,\n touchMode: PropTypes.bool,\n}\n\nPagination.defaultProps = {\n onChange: noop,\n pages: 0,\n selected: 0,\n touchMode: false,\n}\n\nexport default Pagination\n"],"names":["paginationItems","pages","selected","all","_toConsumableArray","Array","map","_","i","length","first","last","prev","Math","min","max","next","items","push","slice","unshift","Pagination","React","memo","onChange","touchMode","props","GU","pageIndex","PaginationSeparator","PaginationItem","propTypes","PropTypes","func","number","bool","defaultProps","noop"],"mappings":"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"}
\No newline at end of file