@vnmfify/core
Version:
```shell npm i @vnmfify/core -S ```
40 lines (38 loc) • 923 B
JavaScript
import { ItemType } from "./pagination.shared";
export function makePages(count) {
var range = (start, end) => {
var length = end - start + 1;
return Array.from({
length
}, (_, i) => start + i);
};
return range(1, count).map(page => ({
page,
type: ItemType.Page
}));
}
export function usePagination(options) {
var {
current = 1,
limit = 10,
total = 60
} = options !== null && options !== void 0 ? options : {};
var count = Math.ceil(total / limit);
var hasPrevious = current > 1;
var hasNext = current < count;
var pageItems = makePages(count);
var items = [{
page: Number.MIN_SAFE_INTEGER,
type: ItemType.Previous
}, ...pageItems, {
page: Number.MAX_SAFE_INTEGER,
type: ItemType.Next
}];
return {
hasPrevious,
hasNext,
count,
items
};
}
//# sourceMappingURL=pagination.hooks.js.map