import React from 'react';
import { LeftHover, More, RightHover } from './style';
export const buildPagination = (totalPages: number, current: number) => {
const collapseLeft = current - 2 > 3;
const left = collapseLeft
? [1, '<', current - 2, current - 1, current]
: Array.from({ length: current }, (v, k) => k + 1);
const collapseRight = current + 2 < totalPages - 2;
const right = collapseRight
? [current + 1, current + 2, '>', totalPages]
: current + 1 > totalPages
? []
: Array.from({ length: totalPages - current }, (v, k) => k + current + 1);
const result = left.concat(right);
const rightIndex = result.findIndex(i => i === '>');
const leftIndex = result.findIndex(i => i === '<');
if (collapseRight && ~rightIndex && rightIndex < 5) {
result.splice(
rightIndex,
0,
...Array.from({ length: 5 - rightIndex }, (v, k) => k + (result[rightIndex - 1] as number) + 1)
);
}
if (collapseLeft && ~leftIndex && result.length - leftIndex < 6) {
result.splice(
leftIndex + 1,
0,
...Array.from(
{ length: 7 - result.length },
(v, k) => k + (result[leftIndex + 1] as number) - 7 + result.length
)
);
}
return result;
};
export const calNewPage = (current: number, clicked: number | string, totalPages: number) => {
if (clicked === '<') {
return current - 5 < 1 ? 1 : current - 5;
}
if (clicked === '>') {
return current + 5 > totalPages ? totalPages : current + 5;
}
return clicked as number;
};
export function getButtonContent(content: number | string) {
if (content === '<') {
return (
<>
>
);
}
if (content === '>') {
return (
<>
>
);
}
return content;
}