@kubit-ui-web/react-components
Version:
Kubit React Components is a customizable, accessible library of React web components, designed to enhance your application's user experience
41 lines • 1.93 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.buildstepsNumber = void 0;
const buildBeforeCounters = (beforeNum, currentPosition) => [...Array(beforeNum)].map((_, index) => currentPosition - (beforeNum - index));
const buildAfterCounters = (afterNum, currentPosition) => [...Array(afterNum)].map((_, index) => currentPosition + 1 + index);
const buildstepsNumber = (currentStep, maxSteps, themeMaxNumber = 0, propsMaxNumber) => {
let maxCounters = propsMaxNumber && propsMaxNumber > themeMaxNumber ? propsMaxNumber : themeMaxNumber;
let startWith = [];
let endWith = [];
let beforeCounters = [];
let afterCounters = [];
let currentPosition = currentStep + 1;
if (currentPosition >= maxCounters && maxSteps !== maxCounters) {
maxCounters--;
startWith = [1, '...'];
}
if (Math.abs(maxSteps - currentPosition) >= maxCounters) {
maxCounters--;
endWith = ['...', maxSteps];
}
const isLeftEdge = currentPosition <= maxCounters;
const isRightEdge = Math.abs(maxSteps - currentPosition) < maxCounters;
if (isLeftEdge) {
currentPosition = 1;
afterCounters = buildAfterCounters(maxCounters - 1, currentPosition);
}
else if (isRightEdge) {
currentPosition = maxSteps - maxCounters + 1;
afterCounters = buildAfterCounters(maxCounters - 1, currentPosition);
}
else {
const counterDivided = (maxCounters - 1) / 2;
const beforeNum = Math.floor(counterDivided);
const afterNum = Math.ceil(counterDivided);
beforeCounters = buildBeforeCounters(beforeNum, currentPosition);
afterCounters = buildAfterCounters(afterNum, currentPosition);
}
return [...startWith, ...beforeCounters, currentPosition, ...afterCounters, ...endWith];
};
exports.buildstepsNumber = buildstepsNumber;
//# sourceMappingURL=getMaxCountersNumber.js.map