Socket
Socket
Sign inDemoInstall

compact-pagination

Package Overview
Dependencies
0
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.0.2 to 2.0.0

59

lib/index.js
'use strict';
module.exports = function compactPagination(_ref) {
var _ref$totalSize = _ref.totalSize;
var totalSize = _ref$totalSize === undefined ? 3 : _ref$totalSize;
var _ref$currentIndex = _ref.currentIndex;
var currentIndex = _ref$currentIndex === undefined ? 1 : _ref$currentIndex;
var _ref$bufferSize = _ref.bufferSize;
var bufferSize = _ref$bufferSize === undefined ? 1 : _ref$bufferSize;
var _ref$totalSize = _ref.totalSize,
totalSize = _ref$totalSize === undefined ? 3 : _ref$totalSize,
_ref$currentIndex = _ref.currentIndex,
currentIndex = _ref$currentIndex === undefined ? 1 : _ref$currentIndex,
_ref$bufferSize = _ref.bufferSize,
bufferSize = _ref$bufferSize === undefined ? 1 : _ref$bufferSize;
if (currentIndex < 1 || currentIndex > totalSize) throw 'Invalid config';
var pages = [{ page: currentIndex, isCurrent: true }];
for (var page = currentIndex - 1; page >= Math.max(1, currentIndex - bufferSize); page--) {
pages.unshift({ page: page });
var size = Math.min(totalSize, 5 + bufferSize * 2);
var pageNumbers = new Set([1, totalSize]);
var lowestBound = Math.max(1, currentIndex - bufferSize);
var highestBound = Math.min(totalSize, currentIndex + bufferSize);
for (var i = lowestBound; i <= highestBound; i++) {
pageNumbers.add(i);
}
for (var page = currentIndex + 1; page <= Math.min(totalSize, currentIndex + bufferSize); page++) {
pages.push({ page: page });
var edges = {};
if (lowestBound > 2) edges.left = true;
if (highestBound < totalSize - 1) edges.right = true;
if (Object.keys(edges).length === 1) {
for (var _i = edges.left ? lowestBound : highestBound; pageNumbers.size < size - 1; edges.left ? _i-- : _i++) {
pageNumbers.add(_i);
if (edges.left) {
lowestBound = _i;
} else {
highestBound = _i;
}
}
}
if (pages[0].page > 3) {
pages = [{ page: 1 }, { isSeparator: true }].concat(pages);
} else if (pages[0].page === 3) {
pages = [{ page: 1 }, { page: 2 }].concat(pages);
} else if (pages[0].page === 2) {
pages = [{ page: 1 }].concat(pages);
var pages = Array.from(pageNumbers).sort(function (x, y) {
return x - y;
}).map(function (i) {
return { page: i, isCurrent: i === currentIndex };
});
if (edges.left) {
var left = lowestBound === 3 ? { page: 2 } : { isSeparator: true };
pages.splice(1, 0, left);
}
var lastPage = pages[pages.length - 1].page;
if (lastPage === totalSize - 1) {
pages = pages.concat([{ page: totalSize }]);
} else if (lastPage === totalSize - 2) {
pages = pages.concat([{ page: totalSize - 1 }, { page: totalSize }]);
} else if (lastPage !== totalSize) {
pages = pages.concat([{ isSeparator: true }, { page: totalSize }]);
if (edges.right) {
var right = highestBound === totalSize - 2 ? { page: highestBound + 1 } : { isSeparator: true };
pages.splice(pages.length - 1, 0, right);
}
return pages;
};
{
"name": "compact-pagination",
"version": "1.0.2",
"version": "2.0.0",
"description": "no fuss pagination helper",

@@ -5,0 +5,0 @@ "main": "lib/index.js",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc