UNPKG

@bimeister/pupakit.kit

Version:

PupaKit is an open source collection of Angular components based on an atomic approach to building interfaces, which guarantees better performance and greater development flexibility.

62 lines 12.7 kB
import '@bimeister/utilities'; import '../interfaces/breadcrumb.interface'; import '../interfaces/breadcrumbs-data.interface'; import '../interfaces/breadcrumbs-parts.interface'; const UNFIT_BREADCRUMB_DESKTOP_FIRST_INDEX = 1; const UNFIT_BREADCRUMB_MOBILE_FIRST_INDEX = 0; export class BreadcrumbsProducer { constructor({ breadcrumbs, breadcrumbsContainerWidthPx, isContainerFullFitted, breadcrumbWidthList, isMobile, unfitBreadcrumbTriggerWidthPx, }) { this.breadcrumbs = breadcrumbs; this.breadcrumbsContainerWidthPx = breadcrumbsContainerWidthPx; this.isContainerFullFitted = isContainerFullFitted; this.breadcrumbWidthList = breadcrumbWidthList; this.isMobile = isMobile; this.unfitBreadcrumbTriggerWidthPx = unfitBreadcrumbTriggerWidthPx; this.hasRoot = breadcrumbs.length > 1; } getBreadcrumbsParts() { const rootBreadcrumbWidth = this.getRootBreadcrumbWidthPx(); const moreBreadcrumbsTriggerWidthPx = this.isContainerFullFitted ? 0 : this.unfitBreadcrumbTriggerWidthPx; const freeSpaceWidthInitial = this.breadcrumbsContainerWidthPx - rootBreadcrumbWidth - moreBreadcrumbsTriggerWidthPx; const unfitBreadcrumbFirstIndex = this.isMobile ? UNFIT_BREADCRUMB_MOBILE_FIRST_INDEX : UNFIT_BREADCRUMB_DESKTOP_FIRST_INDEX; const lastBreadcrumbIndex = this.breadcrumbs.length - 1; const parsedUnfitBreadcrumbFirstIndex = Math.min(unfitBreadcrumbFirstIndex, lastBreadcrumbIndex); const fitBreadcrumbsIndexes = BreadcrumbsProducer.getFitBreadcrumbIndexes(freeSpaceWidthInitial, this.breadcrumbWidthList, parsedUnfitBreadcrumbFirstIndex); const firstFitBreadcrumbIndex = fitBreadcrumbsIndexes[0]; const unfitBreadcrumbs = this.breadcrumbs.slice(unfitBreadcrumbFirstIndex, firstFitBreadcrumbIndex); const fitBreadcrumbs = fitBreadcrumbsIndexes.map((capacityIndex) => this.breadcrumbs[capacityIndex]); const rootBreadcrumb = this.hasRoot ? this.breadcrumbs[0] : null; return { unfitBreadcrumbs, fitBreadcrumbs, rootBreadcrumb }; } getRootBreadcrumbWidthPx() { return !this.hasRoot || this.isMobile ? 0 : this.breadcrumbWidthList[0]; } static getFitBreadcrumbIndexes(freeSpacePx, breadcrumbWidthList, unfitBreadcrumbFirstIndex = 0) { const initialReduceData = { freeSpaceWidthPx: freeSpacePx, fitBreadcrumbsIndexes: [], }; const result = breadcrumbWidthList .map((widthPx, index) => ({ widthPx, index, })) .filter(({ index }) => index >= unfitBreadcrumbFirstIndex) .reduceRight((accumulatedValue, currentWidthWithIndex) => { const { freeSpaceWidthPx, fitBreadcrumbsIndexes } = accumulatedValue; const { widthPx, index } = currentWidthWithIndex; const remainingFreeSpacePx = freeSpaceWidthPx - widthPx; if (remainingFreeSpacePx < 0) { return accumulatedValue; } return { freeSpaceWidthPx: remainingFreeSpacePx, fitBreadcrumbsIndexes: [...fitBreadcrumbsIndexes, index], }; }, initialReduceData); return result.fitBreadcrumbsIndexes.reverse(); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYnMtcHJvZHVjZXIuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGVjbGFyYXRpb25zL2NsYXNzZXMvYnJlYWRjcnVtYnMtcHJvZHVjZXIuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBeUIsc0JBQXNCLENBQUM7QUFDaEQsT0FBMkIsb0NBQW9DLENBQUM7QUFDaEUsT0FBZ0MsMENBQTBDLENBQUM7QUFDM0UsT0FBaUMsMkNBQTJDLENBQUM7QUFFN0UsTUFBTSxvQ0FBb0MsR0FBVyxDQUFDLENBQUM7QUFDdkQsTUFBTSxtQ0FBbUMsR0FBVyxDQUFDLENBQUM7QUFXdEQsTUFBTSxPQUFPLG1CQUFtQjtJQVM5QixZQUFZLEVBQ1YsV0FBVyxFQUNYLDJCQUEyQixFQUMzQixxQkFBcUIsRUFDckIsbUJBQW1CLEVBQ25CLFFBQVEsRUFDUiw2QkFBNkIsR0FDYjtRQUNoQixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMsMkJBQTJCLEdBQUcsMkJBQTJCLENBQUM7UUFDL0QsSUFBSSxDQUFDLHFCQUFxQixHQUFHLHFCQUFxQixDQUFDO1FBQ25ELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxtQkFBbUIsQ0FBQztRQUMvQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsNkJBQTZCLEdBQUcsNkJBQTZCLENBQUM7UUFDbkUsSUFBSSxDQUFDLE9BQU8sR0FBRyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRU0sbUJBQW1CO1FBQ3hCLE1BQU0sbUJBQW1CLEdBQVcsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDcEUsTUFBTSw2QkFBNkIsR0FBVyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLDZCQUE2QixDQUFD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cm9tICdAYmltZWlzdGVyL3V0aWxpdGllcyc7XG5pbXBvcnQgeyBCcmVhZGNydW1iIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9icmVhZGNydW1iLmludGVyZmFjZSc7XG5pbXBvcnQgeyBCcmVhZGNydW1ic0RhdGEgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2JyZWFkY3J1bWJzLWRhdGEuaW50ZXJmYWNlJztcbmltcG9ydCB7IEJyZWFkY3J1bWJzUGFydHMgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2JyZWFkY3J1bWJzLXBhcnRzLmludGVyZmFjZSc7XG5cbmNvbnN0IFVORklUX0JSRUFEQ1JVTUJfREVTS1RPUF9GSVJTVF9JTkRFWDogbnVtYmVyID0gMTtcbmNvbnN0IFVORklUX0JSRUFEQ1JVTUJfTU9CSUxFX0ZJUlNUX0lOREVYOiBudW1iZXIgPSAwO1xuXG5pbnRlcmZhY2UgV2lkdGhXaXRoSW5kZXgge1xuICB3aWR0aFB4OiBudW1iZXI7XG4gIGluZGV4OiBudW1iZXI7XG59XG5pbnRlcmZhY2UgQWNjdW11bGF0ZWRWYWx1ZSB7XG4gIGZyZWVTcGFjZVdpZHRoUHg6IG51bWJlcjtcbiAgZml0QnJlYWRjcnVtYnNJbmRleGVzOiBudW1iZXJbXTtcbn1cblxuZXhwb3J0IGNsYXNzIEJyZWFkY3J1bWJzUHJvZHVjZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IGJyZWFkY3J1bWJzOiBCcmVhZGNydW1iW107XG4gIHByaXZhdGUgcmVhZG9ubHkgYnJlYWRjcnVtYnNDb250YWluZXJXaWR0aFB4OiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgaXNDb250YWluZXJGdWxsRml0dGVkOiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IGJyZWFkY3J1bWJXaWR0aExpc3Q6IG51bWJlcltdO1xuICBwcml2YXRlIHJlYWRvbmx5IGlzTW9iaWxlOiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IHVuZml0QnJlYWRjcnVtYlRyaWdnZXJXaWR0aFB4OiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgaGFzUm9vdDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcih7XG4gICAgYnJlYWRjcnVtYnMsXG4gICAgYnJlYWRjcnVtYnNDb250YWluZXJXaWR0aFB4LFxuICAgIGlzQ29udGFpbmVyRnVsbEZpdHRlZCxcbiAgICBicmVhZGNydW1iV2lkdGhMaXN0LFxuICAgIGlzTW9iaWxlLFxuICAgIHVuZml0QnJlYWRjcnVtYlRyaWdnZXJXaWR0aFB4LFxuICB9OiBCcmVhZGNydW1ic0RhdGEpIHtcbiAgICB0aGlzLmJyZWFkY3J1bWJzID0gYnJlYWRjcnVtYnM7XG4gICAgdGhpcy5icmVhZGNydW1ic0NvbnRhaW5lcldpZHRoUHggPSBicmVhZGNydW1ic0NvbnRhaW5lcldpZHRoUHg7XG4gICAgdGhpcy5pc0NvbnRhaW5lckZ1bGxGaXR0ZWQgPSBpc0NvbnRhaW5lckZ1bGxGaXR0ZWQ7XG4gICAgdGhpcy5icmVhZGNydW1iV2lkdGhMaXN0ID0gYnJlYWRjcnVtYldpZHRoTGlzdDtcbiAgICB0aGlzLmlzTW9iaWxlID0gaXNNb2JpbGU7XG4gICAgdGhpcy51bmZpdEJyZWFkY3J1bWJUcmlnZ2VyV2lkdGhQeCA9IHVuZml0QnJlYWRjcnVtYlRyaWdnZXJXaWR0aFB4O1xuICAgIHRoaXMuaGFzUm9vdCA9IGJyZWFkY3J1bWJzLmxlbmd0aCA+IDE7XG4gIH1cblxuICBwdWJsaWMgZ2V0QnJlYWRjcnVtYnNQYXJ0cygpOiBCcmVhZGNydW1ic1BhcnRzIHtcbiAgICBjb25zdCByb290QnJlYWRjcnVtYldpZHRoOiBudW1iZXIgPSB0aGlzLmdldFJvb3RCcmVhZGNydW1iV2lkdGhQeCgpO1xuICAgIGNvbnN0IG1vcmVCcmVhZGNydW1ic1RyaWdnZXJXaWR0aFB4OiBudW1iZXIgPSB0aGlzLmlzQ29udGFpbmVyRnVsbEZpdHRlZCA/IDAgOiB0aGlzLnVuZml0QnJlYWRjcnVtYlRyaWdnZXJXaWR0aFB4O1xuXG4gICAgY29uc3QgZnJlZVNwYWNlV2lkdGhJbml0aWFsOiBudW1iZXIgPVxuICAgICAgdGhpcy5icmVhZGNydW1ic0NvbnRhaW5lcldpZHRoUHggLSByb290QnJlYWRjcnVtYldpZHRoIC0gbW9yZUJyZWFkY3J1bWJzVHJpZ2dlcldpZHRoUHg7XG5cbiAgICBjb25zdCB1bmZpdEJyZWFkY3J1bWJGaXJzdEluZGV4OiBudW1iZXIgPSB0aGlzLmlzTW9iaWxlXG4gICAgICA/IFVORklUX0JSRUFEQ1JVTUJfTU9CSUxFX0ZJUlNUX0lOREVYXG4gICAgICA6IFVORklUX0JSRUFEQ1JVTUJfREVTS1RPUF9GSVJTVF9JTkRFWDtcblxuICAgIGNvbnN0IGxhc3RCcmVhZGNydW1iSW5kZXg6IG51bWJlciA9IHRoaXMuYnJlYWRjcnVtYnMubGVuZ3RoIC0gMTtcbiAgICBjb25zdCBwYXJzZWRVbmZpdEJyZWFkY3J1bWJGaXJzdEluZGV4OiBudW1iZXIgPSBNYXRoLm1pbih1bmZpdEJyZWFkY3J1bWJGaXJzdEluZGV4LCBsYXN0QnJlYWRjcnVtYkluZGV4KTtcblxuICAgIGNvbnN0IGZpdEJyZWFkY3J1bWJzSW5kZXhlczogbnVtYmVyW10gPSBCcmVhZGNydW1ic1Byb2R1Y2VyLmdldEZpdEJyZWFkY3J1bWJJbmRleGVzKFxuICAgICAgZnJlZVNwYWNlV2lkdGhJbml0aWFsLFxuICAgICAgdGhpcy5icmVhZGNydW1iV2lkdGhMaXN0LFxuICAgICAgcGFyc2VkVW5maXRCcmVhZGNydW1iRmlyc3RJbmRleFxuICAgICk7XG5cbiAgICBjb25zdCBmaXJzdEZpdEJyZWFkY3J1bWJJbmRleDogbnVtYmVyID0gZml0QnJlYWRjcnVtYnNJbmRleGVzWzBdO1xuICAgIGNvbnN0IHVuZml0QnJlYWRjcnVtYnM6IEJyZWFkY3J1bWJbXSA9IHRoaXMuYnJlYWRjcnVtYnMuc2xpY2UodW5maXRCcmVhZGNydW1iRmlyc3RJbmRleCwgZmlyc3RGaXRCcmVhZGNydW1iSW5kZXgpO1xuXG4gICAgY29uc3QgZml0QnJlYWRjcnVtYnM6IEJyZWFkY3J1bWJbXSA9IGZpdEJyZWFkY3J1bWJzSW5kZXhlcy5tYXAoXG4gICAgICAoY2FwYWNpdHlJbmRleDogbnVtYmVyKSA9PiB0aGlzLmJyZWFkY3J1bWJzW2NhcGFjaXR5SW5kZXhdXG4gICAgKTtcbiAgICBjb25zdCByb290QnJlYWRjcnVtYjogTnVsbGFibGU8QnJlYWRjcnVtYj4gPSB0aGlzLmhhc1Jvb3QgPyB0aGlzLmJyZWFkY3J1bWJzWzBdIDogbnVsbDtcblxuICAgIHJldHVybiB7IHVuZml0QnJlYWRjcnVtYnMsIGZpdEJyZWFkY3J1bWJzLCByb290QnJlYWRjcnVtYiB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRSb290QnJlYWRjcnVtYldpZHRoUHgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gIXRoaXMuaGFzUm9vdCB8fCB0aGlzLmlzTW9iaWxlID8gMCA6IHRoaXMuYnJlYWRjcnVtYldpZHRoTGlzdFswXTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldEZpdEJyZWFkY3J1bWJJbmRleGVzKFxuICAgIGZyZWVTcGFjZVB4OiBudW1iZXIsXG4gICAgYnJlYWRjcnVtYldpZHRoTGlzdDogbnVtYmVyW10sXG4gICAgdW5maXRCcmVhZGNydW1iRmlyc3RJbmRleDogbnVtYmVyID0gMFxuICApOiBudW1iZXJbXSB7XG4gICAgY29uc3QgaW5pdGlhbFJlZHVjZURhdGE6IEFjY3VtdWxhdGVkVmFsdWUgPSB7XG4gICAgICBmcmVlU3BhY2VXaWR0aFB4OiBmcmVlU3BhY2VQeCxcbiAgICAgIGZpdEJyZWFkY3J1bWJzSW5kZXhlczogW10sXG4gICAgfTtcblxuICAgIGNvbnN0IHJlc3VsdDogQWNjdW11bGF0ZWRWYWx1ZSA9IGJyZWFkY3J1bWJXaWR0aExpc3RcbiAgICAgIC5tYXAoKHdpZHRoUHg6IG51bWJlciwgaW5kZXg6IG51bWJlcikgPT4gKHtcbiAgICAgICAgd2lkdGhQeCxcbiAgICAgICAgaW5kZXgsXG4gICAgICB9KSlcbiAgICAgIC5maWx0ZXIoKHsgaW5kZXggfTogV2lkdGhXaXRoSW5kZXgpID0+IGluZGV4ID49IHVuZml0QnJlYWRjcnVtYkZpcnN0SW5kZXgpXG4gICAgICAucmVkdWNlUmlnaHQoKGFjY3VtdWxhdGVkVmFsdWU6IEFjY3VtdWxhdGVkVmFsdWUsIGN1cnJlbnRXaWR0aFdpdGhJbmRleDogV2lkdGhXaXRoSW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgeyBmcmVlU3BhY2VXaWR0aFB4LCBmaXRCcmVhZGNydW1ic0luZGV4ZXMgfTogQWNjdW11bGF0ZWRWYWx1ZSA9IGFjY3VtdWxhdGVkVmFsdWU7XG4gICAgICAgIGNvbnN0IHsgd2lkdGhQeCwgaW5kZXggfTogV2lkdGhXaXRoSW5kZXggPSBjdXJyZW50V2lkdGhXaXRoSW5kZXg7XG5cbiAgICAgICAgY29uc3QgcmVtYWluaW5nRnJlZVNwYWNlUHg6IG51bWJlciA9IGZyZWVTcGFjZVdpZHRoUHggLSB3aWR0aFB4O1xuICAgICAgICBpZiAocmVtYWluaW5nRnJlZVNwYWNlUHggPCAwKSB7XG4gICAgICAgICAgcmV0dXJuIGFjY3VtdWxhdGVkVmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGZyZWVTcGFjZVdpZHRoUHg6IHJlbWFpbmluZ0ZyZWVTcGFjZVB4LFxuICAgICAgICAgIGZpdEJyZWFkY3J1bWJzSW5kZXhlczogWy4uLmZpdEJyZWFkY3J1bWJzSW5kZXhlcywgaW5kZXhdLFxuICAgICAgICB9O1xuICAgICAgfSwgaW5pdGlhbFJlZHVjZURhdGEpO1xuXG4gICAgcmV0dXJuIHJlc3VsdC5maXRCcmVhZGNydW1ic0luZGV4ZXMucmV2ZXJzZSgpO1xuICB9XG59XG4iXX0=