@primer/react-brand
Version:
Primer Brand is a GitHub's design system for creating React-based marketing websites and digital experiences.
66 lines (65 loc) • 1.4 kB
JavaScript
//#region src/Pagination/model.ts
function e(e, t, n, r, i) {
let a = [];
if (n) {
let n = [], o = (t) => {
t >= 1 && t <= e && n.push(t);
}, s = t - i, c = t + i;
if (s < 1 && c > e) s = 1, c = e;
else if (s < 1) for (; s < 1;) s++, c++;
else if (c > e) for (; c > e;) s--, c--;
for (let t = 1; t <= r; t++) {
let n = t, r = e - (t - 1);
n >= s ? c++ : o(n), r <= c ? s-- : o(r);
}
for (let e = s; e <= c; e++) o(e);
let l = n.slice().sort((e, t) => e - t).filter((e, t, n) => !t || e !== n[t - 1]);
for (let e = 0; e < l.length; e++) {
let n = l[e], r = n === t, i = l[e - 1], o = l[e + 1], s = n - i, c = n - o !== -1;
e === 0 ? (n !== 1 && a.push({
type: "BREAK",
num: 1
}), a.push({
type: "NUM",
num: n,
selected: r,
precedesBreak: c
})) : s === 1 ? a.push({
type: "NUM",
num: n,
selected: r,
precedesBreak: c
}) : (a.push({
type: "BREAK",
num: n - 1
}), a.push({
type: "NUM",
num: n,
selected: r,
precedesBreak: !1
}));
}
let u = a[a.length - 1];
u.type === "NUM" && u.num !== e && a.push({
type: "BREAK",
num: e
});
}
let o = {
type: "PREV",
num: t - 1,
disabled: t === 1
}, s = {
type: "NEXT",
num: t + 1,
disabled: t === e
};
return [
o,
...a,
s
];
}
//#endregion
export { e as buildPaginationModel };
//# sourceMappingURL=model.js.map