import { h, Component } from 'preact'; class WBPagination extends Component { renderVisiblePages(numPages, activePage, chunkSize, onPageChanged) { let visible = {}; let begActChnk = activePage - Math.floor(chunkSize / 2); let endActChnk = activePage + Math.floor(chunkSize / 2) + 1; for (let i = begActChnk; i < endActChnk; i++) visible[i] = true; for (let i = 0; i < chunkSize; i++) visible[i] = true; for (let i = Math.max(numPages - chunkSize, 0); i < numPages; i++) visible[i] = true; visible = Object.keys(visible).map(n => Number(n)); let res = []; let prev = 0; res.push((
  • onPageChanged(activePage - 1) }>Previous
  • )); for (let i in visible) { if (i > prev + 1) res.push((
  • onPageChanged(i - 1) }>...
  • )); prev = i; res.push((
  • onPageChanged(i) }>{ i + 1 }
  • )); } res.push((
  • = numPages - 1 ? "page-item disabled" : "page-item" }> onPageChanged(activePage + 1) }>Next
  • )); return res; } render({ numPages, activePage, chunkSize, onPageChanged }) { return ( ); } } WBPagination.defaultProps = { 'chunkSize': 5 }; export default WBPagination;