UNPKG

@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
"use strict"; 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