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.

77 lines 13.1 kB
import { ChangeDetectorRef, Directive, NgZone } from '@angular/core'; import { filterNotNil, isNil, shareReplayWithRefCount } from '@bimeister/utilities'; import { BehaviorSubject, combineLatest, Subscription } from 'rxjs'; import { distinctUntilChanged, map } from 'rxjs/operators'; import './tabs-service-base.abstract'; import * as i0 from "@angular/core"; export class TabsBase { constructor(tabsService, changeDetectorRef, ngZone, containerService) { this.tabsService = tabsService; this.changeDetectorRef = changeDetectorRef; this.ngZone = ngZone; this.containerService = containerService; this.subscription = new Subscription(); this.stateService = !isNil(this.containerService) ? this.containerService : this.tabsService; this.activeTabName$ = this.stateService.activeTabName$; this.railHighlighterOffsetLeftTransform$ = new BehaviorSubject(null); this.railHighlighterWidthPx$ = new BehaviorSubject(null); this.isLeftGradient$ = new BehaviorSubject(false); this.isRightGradient$ = new BehaviorSubject(false); this.isHorizontalScrollExist$ = combineLatest([ this.isLeftGradient$, this.isRightGradient$, ]).pipe(map(([isLeftGradient, isRightGradient]) => isLeftGradient || isRightGradient), distinctUntilChanged(), shareReplayWithRefCount()); this.isContentDragging$ = this.tabsService.isContentDragging$; this.subscription.add(this.processActiveTabNameChanges()); this.subscription.add(this.processRailHighlighterOffsetLeftTransform()); this.subscription.add(this.processRailHighlighterWidthPx()); } detectChanges() { this.changeDetectorRef.detectChanges(); } ngAfterViewChecked() { this.stateService.setInitialTab(); } ngOnDestroy() { this.subscription.unsubscribe(); } handleContentDragStart() { this.tabsService.setContentDraggingStateState(true); this.detectChanges(); } handleContentDragEnd() { this.tabsService.setContentDraggingStateState(false); this.detectChanges(); } setLeftGradient(isLeftGradient) { this.isLeftGradient$.next(isLeftGradient); this.detectChanges(); } setRightGradient(isRightGradient) { this.isRightGradient$.next(isRightGradient); this.detectChanges(); } processActiveTabNameChanges() { return this.activeTabName$.pipe(filterNotNil()).subscribe((activeTabName) => { this.activeTabNameChange.emit(activeTabName); }); } processRailHighlighterOffsetLeftTransform() { return this.stateService.railHighlighterOffsetLeftPx$ .pipe(map((railHighlighterOffsetLeftPx) => `translateX(${railHighlighterOffsetLeftPx}px)`)) .subscribe((transformRailHighlighterOffsetLeftPx) => { this.ngZone.run(() => this.railHighlighterOffsetLeftTransform$.next(transformRailHighlighterOffsetLeftPx)); }); } processRailHighlighterWidthPx() { return this.stateService.railHighlighterWidthPx$.subscribe((processRailHighlighterWidthPx) => { this.ngZone.run(() => this.railHighlighterWidthPx$.next(processRailHighlighterWidthPx)); }); } } TabsBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TabsBase, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive }); TabsBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: TabsBase, ngImport: i0 }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TabsBase, decorators: [{ type: Directive }], ctorParameters: function () { return [{ type: undefined }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: undefined }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy1iYXNlLmFic3RyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2RlY2xhcmF0aW9ucy9jbGFzc2VzL2Fic3RyYWN0L3RhYnMtYmFzZS5hYnN0cmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLGlCQUFpQixFQUFFLFNBQVMsRUFBZ0IsTUFBTSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ2hILE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFZLHVCQUF1QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQWMsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRCxPQUFnQyw4QkFBOEIsQ0FBQzs7QUFHL0QsTUFBTSxPQUFnQixRQUFRO0lBd0I1QixZQUNtQixXQUFjLEVBQ1osaUJBQW9DLEVBQ3RDLE1BQWMsRUFDZCxnQkFBb0I7UUFIcEIsZ0JBQVcsR0FBWCxXQUFXLENBQUc7UUFDWixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3RDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQUk7UUEzQnBCLGlCQUFZLEdBQWlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFJaEQsaUJBQVksR0FBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQzdGLG1CQUFjLEdBQTRCLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDO1FBQzVFLHdDQUFtQyxHQUE0QixJQUFJLGVBQWUsQ0FBUyxJQUFJLENBQUMsQ0FBQztRQUNqRyw0QkFBdUIsR0FB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U0FBUyxDQUFDLENBQUMsNkJBQXFDLEVBQUUsRUFBRTtZQUNuRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLENBQUMsQ0FBQztRQUMxRixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O3NHQXJGbUIsUUFBUTswRkFBUixRQUFROzRGQUFSLFFBQVE7a0JBRDdCLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdDaGVja2VkLCBDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIE5nWm9uZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmaWx0ZXJOb3ROaWwsIGlzTmlsLCBOdWxsYWJsZSwgc2hhcmVSZXBsYXlXaXRoUmVmQ291bnQgfSBmcm9tICdAYmltZWlzdGVyL3V0aWxpdGllcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRhYnNTZXJ2aWNlQmFzZSB9IGZyb20gJy4vdGFicy1zZXJ2aWNlLWJhc2UuYWJzdHJhY3QnO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUYWJzQmFzZTxULCBTIGV4dGVuZHMgVGFic1NlcnZpY2VCYXNlPFQ+PiBpbXBsZW1lbnRzIEFmdGVyVmlld0NoZWNrZWQsIE9uRGVzdHJveSB7XG4gIHByb3RlY3RlZCByZWFkb25seSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgYWN0aXZlVGFiTmFtZUNoYW5nZTogRXZlbnRFbWl0dGVyPFQ+O1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBzdGF0ZVNlcnZpY2U6IFMgPSAhaXNOaWwodGhpcy5jb250YWluZXJTZXJ2aWNlKSA/IHRoaXMuY29udGFpbmVyU2VydmljZSA6IHRoaXMudGFic1NlcnZpY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWN0aXZlVGFiTmFtZSQ6IE9ic2VydmFibGU8TnVsbGFibGU8VD4+ID0gdGhpcy5zdGF0ZVNlcnZpY2UuYWN0aXZlVGFiTmFtZSQ7XG4gIHB1YmxpYyByZWFkb25seSByYWlsSGlnaGxpZ2h0ZXJPZmZzZXRMZWZ0VHJhbnNmb3JtJDogQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4obnVsbCk7XG4gIHB1YmxpYyByZWFkb25seSByYWlsSGlnaGxpZ2h0ZXJXaWR0aFB4JDogQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4obnVsbCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGlzTGVmdEdyYWRpZW50JDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBpc1JpZ2h0R3JhZGllbnQkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgaXNIb3Jpem9udGFsU2Nyb2xsRXhpc3QkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5pc0xlZnRHcmFkaWVudCQsXG4gICAgdGhpcy5pc1JpZ2h0R3JhZGllbnQkLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW2lzTGVmdEdyYWRpZW50LCBpc1JpZ2h0R3JhZGllbnRdOiBbYm9vbGVhbiwgYm9vbGVhbl0pID0+IGlzTGVmdEdyYWRpZW50IHx8IGlzUmlnaHRHcmFkaWVudCksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheVdpdGhSZWZDb3VudCgpXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGlzQ29udGVudERyYWdnaW5nJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMudGFic1NlcnZpY2UuaXNDb250ZW50RHJhZ2dpbmckO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGFic1NlcnZpY2U6IFMsXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29udGFpbmVyU2VydmljZT86IFNcbiAgKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKHRoaXMucHJvY2Vzc0FjdGl2ZVRhYk5hbWVDaGFuZ2VzKCkpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZCh0aGlzLnByb2Nlc3NSYWlsSGlnaGxpZ2h0ZXJPZmZzZXRMZWZ0VHJhbnNmb3JtKCkpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZCh0aGlzLnByb2Nlc3NSYWlsSGlnaGxpZ2h0ZXJXaWR0aFB4KCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGRldGVjdENoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGVTZXJ2aWNlLnNldEluaXRpYWxUYWIoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZUNvbnRlbnREcmFnU3RhcnQoKTogdm9pZCB7XG4gICAgdGhpcy50YWJzU2VydmljZS5zZXRDb250ZW50RHJhZ2dpbmdTdGF0ZVN0YXRlKHRydWUpO1xuICAgIHRoaXMuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZUNvbnRlbnREcmFnRW5kKCk6IHZvaWQge1xuICAgIHRoaXMudGFic1NlcnZpY2Uuc2V0Q29udGVudERyYWdnaW5nU3RhdGVTdGF0ZShmYWxzZSk7XG4gICAgdGhpcy5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0TGVmdEdyYWRpZW50KGlzTGVmdEdyYWRpZW50OiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5pc0xlZnRHcmFkaWVudCQubmV4dChpc0xlZnRHcmFkaWVudCk7XG4gICAgdGhpcy5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0UmlnaHRHcmFkaWVudChpc1JpZ2h0R3JhZGllbnQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmlzUmlnaHRHcmFkaWVudCQubmV4dChpc1JpZ2h0R3JhZGllbnQpO1xuICAgIHRoaXMuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzQWN0aXZlVGFiTmFtZUNoYW5nZXMoKTogU3Vic2NyaXB0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVUYWJOYW1lJC5waXBlKGZpbHRlck5vdE5pbCgpKS5zdWJzY3JpYmUoKGFjdGl2ZVRhYk5hbWU6IFQpID0+IHtcbiAgICAgIHRoaXMuYWN0aXZlVGFiTmFtZUNoYW5nZS5lbWl0KGFjdGl2ZVRhYk5hbWUpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzUmFpbEhpZ2hsaWdodGVyT2Zmc2V0TGVmdFRyYW5zZm9ybSgpOiBTdWJzY3JpcHRpb24ge1xuICAgIHJldHVybiB0aGlzLnN0YXRlU2VydmljZS5yYWlsSGlnaGxpZ2h0ZXJPZmZzZXRMZWZ0UHgkXG4gICAgICAucGlwZShtYXAoKHJhaWxIaWdobGlnaHRlck9mZnNldExlZnRQeDogbnVtYmVyKSA9PiBgdHJhbnNsYXRlWCgke3JhaWxIaWdobGlnaHRlck9mZnNldExlZnRQeH1weClgKSlcbiAgICAgIC5zdWJzY3JpYmUoKHRyYW5zZm9ybVJhaWxIaWdobGlnaHRlck9mZnNldExlZnRQeDogc3RyaW5nKSA9PiB7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLnJhaWxIaWdobGlnaHRlck9mZnNldExlZnRUcmFuc2Zvcm0kLm5leHQodHJhbnNmb3JtUmFpbEhpZ2hsaWdodGVyT2Zmc2V0TGVmdFB4KSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcHJvY2Vzc1JhaWxIaWdobGlnaHRlcldpZHRoUHgoKTogU3Vic2NyaXB0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZVNlcnZpY2UucmFpbEhpZ2hsaWdodGVyV2lkdGhQeCQuc3Vic2NyaWJlKChwcm9jZXNzUmFpbEhpZ2hsaWdodGVyV2lkdGhQeDogbnVtYmVyKSA9PiB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5yYWlsSGlnaGxpZ2h0ZXJXaWR0aFB4JC5uZXh0KHByb2Nlc3NSYWlsSGlnaGxpZ2h0ZXJXaWR0aFB4KSk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==