@mintplayer/ng-bootstrap 13.1.2 → 13.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import { Component, ContentChildren, ElementRef, Input, QueryList } from '@angular/core';
1
+ import { Component, ContentChildren, Input, QueryList } from '@angular/core';
2
2
  import { FadeInOutAnimation, CarouselSlideAnimation } from '@mintplayer/ng-animations';
3
3
  import { BehaviorSubject, Subject } from 'rxjs';
4
4
  import { map, take, takeUntil } from 'rxjs/operators';
@@ -19,7 +19,7 @@ export class BsCarouselComponent {
19
19
  }))
20
20
  .pipe(takeUntil(this.destroyed$));
21
21
  this.currentImage$ = this.currentImageIndex$
22
- .pipe(map((index) => this.images.get(index) ?? null))
22
+ .pipe(map((index) => this.images.get(index)?.itemTemplate ?? null))
23
23
  .pipe(takeUntil(this.destroyed$));
24
24
  }
25
25
  ngOnInit() { }
@@ -49,18 +49,22 @@ export class BsCarouselComponent {
49
49
  });
50
50
  }
51
51
  setCurrentImage(index) {
52
- this.currentImageCounter$.next(index);
52
+ const currentValue = this.currentImageCounter$.value;
53
+ const l = this.images.length;
54
+ const counterMod = ((currentValue % l) + l) % l;
55
+ const newValue = currentValue - counterMod + index;
56
+ this.currentImageCounter$.next(newValue);
53
57
  }
54
58
  }
55
59
  BsCarouselComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCarouselComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
56
- BsCarouselComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsCarouselComponent, selector: "bs-carousel", inputs: { animation: "animation" }, queries: [{ propertyName: "images", predicate: BsCarouselImageDirective, read: ElementRef }], ngImport: i0, template: "<div class=\"carousel slide\">\n <div class=\"carousel-indicators\">\n <button *ngFor=\"let image of images; let i = index\" type=\"button\" (click)=\"setCurrentImage(i)\" data-bs-target\n [class.active]=\"(currentImageIndex$ | async) === i\"\n [attr.aria-current]=\"(currentImageIndex$ | async) === i ? true : null\"\n [attr.aria-label]=\"'Slide ' + i\"></button>\n </div>\n\n\n\n <!-- [@carouselSlide]=\"currentImageCounter$ | async\" -->\n <div class=\"carousel-inner\" [@carouselSlide]=\"currentImageCounter$ | async\" *ngIf=\"animation === 'slide'\">\n <ng-container *ngFor=\"let image of images; let i = index\">\n <div class=\"carousel-item\" [class.active]=\"true\" *ngIf=\"(currentImageIndex$ | async) === i\">\n <img [src]=\"image.nativeElement.src\" class=\"d-block\" [attr.alt]=\"image.nativeElement.alt\" [class.w-100]=\"true\">\n </div>\n </ng-container>\n </div>\n <div class=\"carousel-inner\" *ngIf=\"animation === 'fade'\">\n <ng-container *ngFor=\"let image of images; let i = index\">\n <div class=\"carousel-item\" [class.active]=\"true\" @fadeInOut *ngIf=\"(currentImageIndex$ | async) === i\">\n <img [src]=\"image.nativeElement.src\" class=\"d-block\" [attr.alt]=\"image.nativeElement.alt\" [class.w-100]=\"true\">\n </div>\n </ng-container>\n </div>\n\n\n\n <button class=\"carousel-control-prev\" type=\"button\" (click)=\"previousImage()\">\n <span class=\"carousel-control-prev-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Previous</span>\n </button>\n <button class=\"carousel-control-next\" type=\"button\" (click)=\"nextImage()\">\n <span class=\"carousel-control-next-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Next</span>\n </button>\n</div>", styles: [".carousel{min-height:100px}\n"], directives: [{ type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i1.AsyncPipe }, animations: [FadeInOutAnimation, CarouselSlideAnimation] });
60
+ BsCarouselComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsCarouselComponent, selector: "bs-carousel", inputs: { animation: "animation" }, queries: [{ propertyName: "images", predicate: BsCarouselImageDirective }], ngImport: i0, template: "<div class=\"carousel slide\">\n <div class=\"carousel-indicators\">\n <button *ngFor=\"let image of images; let i = index\" type=\"button\" (click)=\"setCurrentImage(i)\"\n [class.active]=\"(currentImageIndex$ | async) === i\"\n [attr.aria-current]=\"(currentImageIndex$ | async) === i ? true : null\"\n [attr.aria-label]=\"'Slide ' + i\"></button>\n </div>\n\n\n\n <!-- [@carouselSlide]=\"currentImageCounter$ | async\" -->\n <div class=\"carousel-inner\" [@carouselSlide]=\"currentImageCounter$ | async\" *ngIf=\"animation === 'slide'\">\n <ng-container *ngFor=\"let image of images; let i = index\">\n <div class=\"carousel-item\" [class.active]=\"true\" *ngIf=\"(currentImageIndex$ | async) === i\">\n <ng-container [ngTemplateOutlet]=\"image.itemTemplate\"></ng-container> \n </div>\n </ng-container>\n </div>\n <div class=\"carousel-inner\" *ngIf=\"animation === 'fade'\">\n <ng-container *ngFor=\"let image of images; let i = index\">\n <div class=\"carousel-item\" [class.active]=\"true\" @fadeInOut *ngIf=\"(currentImageIndex$ | async) === i\">\n <ng-container [ngTemplateOutlet]=\"image.itemTemplate\"></ng-container> \n </div>\n </ng-container>\n </div>\n\n\n\n <button class=\"carousel-control-prev\" type=\"button\" (click)=\"previousImage()\">\n <span class=\"carousel-control-prev-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Previous</span>\n </button>\n <button class=\"carousel-control-next\" type=\"button\" (click)=\"nextImage()\">\n <span class=\"carousel-control-next-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Next</span>\n </button>\n</div>", styles: [".carousel{min-height:100px}\n"], directives: [{ type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "async": i1.AsyncPipe }, animations: [FadeInOutAnimation, CarouselSlideAnimation] });
57
61
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCarouselComponent, decorators: [{
58
62
  type: Component,
59
- args: [{ selector: 'bs-carousel', animations: [FadeInOutAnimation, CarouselSlideAnimation], template: "<div class=\"carousel slide\">\n <div class=\"carousel-indicators\">\n <button *ngFor=\"let image of images; let i = index\" type=\"button\" (click)=\"setCurrentImage(i)\" data-bs-target\n [class.active]=\"(currentImageIndex$ | async) === i\"\n [attr.aria-current]=\"(currentImageIndex$ | async) === i ? true : null\"\n [attr.aria-label]=\"'Slide ' + i\"></button>\n </div>\n\n\n\n <!-- [@carouselSlide]=\"currentImageCounter$ | async\" -->\n <div class=\"carousel-inner\" [@carouselSlide]=\"currentImageCounter$ | async\" *ngIf=\"animation === 'slide'\">\n <ng-container *ngFor=\"let image of images; let i = index\">\n <div class=\"carousel-item\" [class.active]=\"true\" *ngIf=\"(currentImageIndex$ | async) === i\">\n <img [src]=\"image.nativeElement.src\" class=\"d-block\" [attr.alt]=\"image.nativeElement.alt\" [class.w-100]=\"true\">\n </div>\n </ng-container>\n </div>\n <div class=\"carousel-inner\" *ngIf=\"animation === 'fade'\">\n <ng-container *ngFor=\"let image of images; let i = index\">\n <div class=\"carousel-item\" [class.active]=\"true\" @fadeInOut *ngIf=\"(currentImageIndex$ | async) === i\">\n <img [src]=\"image.nativeElement.src\" class=\"d-block\" [attr.alt]=\"image.nativeElement.alt\" [class.w-100]=\"true\">\n </div>\n </ng-container>\n </div>\n\n\n\n <button class=\"carousel-control-prev\" type=\"button\" (click)=\"previousImage()\">\n <span class=\"carousel-control-prev-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Previous</span>\n </button>\n <button class=\"carousel-control-next\" type=\"button\" (click)=\"nextImage()\">\n <span class=\"carousel-control-next-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Next</span>\n </button>\n</div>", styles: [".carousel{min-height:100px}\n"] }]
63
+ args: [{ selector: 'bs-carousel', animations: [FadeInOutAnimation, CarouselSlideAnimation], template: "<div class=\"carousel slide\">\n <div class=\"carousel-indicators\">\n <button *ngFor=\"let image of images; let i = index\" type=\"button\" (click)=\"setCurrentImage(i)\"\n [class.active]=\"(currentImageIndex$ | async) === i\"\n [attr.aria-current]=\"(currentImageIndex$ | async) === i ? true : null\"\n [attr.aria-label]=\"'Slide ' + i\"></button>\n </div>\n\n\n\n <!-- [@carouselSlide]=\"currentImageCounter$ | async\" -->\n <div class=\"carousel-inner\" [@carouselSlide]=\"currentImageCounter$ | async\" *ngIf=\"animation === 'slide'\">\n <ng-container *ngFor=\"let image of images; let i = index\">\n <div class=\"carousel-item\" [class.active]=\"true\" *ngIf=\"(currentImageIndex$ | async) === i\">\n <ng-container [ngTemplateOutlet]=\"image.itemTemplate\"></ng-container> \n </div>\n </ng-container>\n </div>\n <div class=\"carousel-inner\" *ngIf=\"animation === 'fade'\">\n <ng-container *ngFor=\"let image of images; let i = index\">\n <div class=\"carousel-item\" [class.active]=\"true\" @fadeInOut *ngIf=\"(currentImageIndex$ | async) === i\">\n <ng-container [ngTemplateOutlet]=\"image.itemTemplate\"></ng-container> \n </div>\n </ng-container>\n </div>\n\n\n\n <button class=\"carousel-control-prev\" type=\"button\" (click)=\"previousImage()\">\n <span class=\"carousel-control-prev-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Previous</span>\n </button>\n <button class=\"carousel-control-next\" type=\"button\" (click)=\"nextImage()\">\n <span class=\"carousel-control-next-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Next</span>\n </button>\n</div>", styles: [".carousel{min-height:100px}\n"] }]
60
64
  }], ctorParameters: function () { return []; }, propDecorators: { animation: [{
61
65
  type: Input
62
66
  }], images: [{
63
67
  type: ContentChildren,
64
- args: [BsCarouselImageDirective, { read: ElementRef }]
68
+ args: [BsCarouselImageDirective]
65
69
  }] } });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9zcmMvbGliL2NvbXBvbmVudHMvY2Fyb3VzZWwvY2Fyb3VzZWwvY2Fyb3VzZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9zcmMvbGliL2NvbXBvbmVudHMvY2Fyb3VzZWwvY2Fyb3VzZWwvY2Fyb3VzZWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQixTQUFTLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBZSxLQUFLLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzSSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RixPQUFPLEVBQUUsZUFBZSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQzs7O0FBUXRGLE1BQU0sT0FBTyxtQkFBbUI7SUFFOUI7UUEwQkEsNkJBQTZCO1FBQzdCLHFDQUFxQztRQUVyQixjQUFTLEdBQXFCLE9BQU8sQ0FBQztRQUV0RCxlQUFVLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUMzQix5QkFBb0IsR0FBRyxJQUFJLGVBQWUsQ0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBL0JyRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQjthQUNoRCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDcEIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDN0IsT0FBTyxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQzthQUNGLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsa0JBQWtCO2FBQ3pDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDO2FBQ3BELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELFFBQVEsS0FBVyxDQUFDO0lBRXBCLFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzFCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDbkM7YUFBTTtZQUNMLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNwQztJQUNILENBQUM7SUFZRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLG9CQUFvQjthQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2IsU0FBUyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsRUFBRTtZQUNqQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsb0JBQW9CO2FBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDYixTQUFTLENBQUMsQ0FBQyxtQkFBbUIsRUFBRSxFQUFFO1lBQ2pDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDMUQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQWE7UUFDM0IsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDOztnSEF4RFUsbUJBQW1CO29HQUFuQixtQkFBbUIsOEdBMERiLHdCQUF3QixRQUFVLFVBQVUsNkJDdEUvRCwyNERBb0NNLG9TRDFCUSxDQUFDLGtCQUFrQixFQUFFLHNCQUFzQixDQUFDOzJGQUU3QyxtQkFBbUI7a0JBTi9CLFNBQVM7K0JBQ0UsYUFBYSxjQUdYLENBQUMsa0JBQWtCLEVBQUUsc0JBQXNCLENBQUM7MEVBaUN4QyxTQUFTO3NCQUF4QixLQUFLO2dCQTJCMkQsTUFBTTtzQkFBdEUsZUFBZTt1QkFBQyx3QkFBd0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlckNvbnRlbnRJbml0LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgUXVlcnlMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGYWRlSW5PdXRBbmltYXRpb24sIENhcm91c2VsU2xpZGVBbmltYXRpb24gfSBmcm9tICdAbWludHBsYXllci9uZy1hbmltYXRpb25zJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBCc0Nhcm91c2VsSW1hZ2VEaXJlY3RpdmUgfSBmcm9tICcuLi9jYXJvdXNlbC1pbWFnZS9jYXJvdXNlbC1pbWFnZS5kaXJlY3RpdmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicy1jYXJvdXNlbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYXJvdXNlbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Nhcm91c2VsLmNvbXBvbmVudC5zY3NzJ10sXG4gIGFuaW1hdGlvbnM6IFtGYWRlSW5PdXRBbmltYXRpb24sIENhcm91c2VsU2xpZGVBbmltYXRpb25dXG59KVxuZXhwb3J0IGNsYXNzIEJzQ2Fyb3VzZWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJDb250ZW50SW5pdCB7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5jdXJyZW50SW1hZ2VJbmRleCQgPSB0aGlzLmN1cnJlbnRJbWFnZUNvdW50ZXIkXG4gICAgICAucGlwZShtYXAoKGNvdW50ZXIpID0+IHtcbiAgICAgICAgY29uc3QgbCA9IHRoaXMuaW1hZ2VzLmxlbmd0aDtcbiAgICAgICAgcmV0dXJuICgoY291bnRlciAlIGwpICsgbCkgJSBsO1xuICAgICAgfSkpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSk7XG4gICAgdGhpcy5jdXJyZW50SW1hZ2UkID0gdGhpcy5jdXJyZW50SW1hZ2VJbmRleCRcbiAgICAgIC5waXBlKG1hcCgoaW5kZXgpID0+IHRoaXMuaW1hZ2VzLmdldChpbmRleCkgPz8gbnVsbCkpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHsgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveWVkJC5uZXh0KHRydWUpO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIGlmICh0aGlzLmltYWdlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmN1cnJlbnRJbWFnZUNvdW50ZXIkLm5leHQoMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3VycmVudEltYWdlQ291bnRlciQubmV4dCgtMSk7XG4gICAgfVxuICB9XG4gIFxuICAvLyBASG9zdEJpbmRpbmcoJ0AuZGlzYWJsZWQnKVxuICAvLyBwdWJsaWMgYW5pbWF0aW9uc0Rpc2FibGVkID0gZmFsc2U7XG5cbiAgQElucHV0KCkgcHVibGljIGFuaW1hdGlvbjogJ2ZhZGUnIHwgJ3NsaWRlJyA9ICdzbGlkZSc7XG5cbiAgZGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0KCk7XG4gIGN1cnJlbnRJbWFnZUNvdW50ZXIkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KC0xKTtcbiAgY3VycmVudEltYWdlSW5kZXgkOiBPYnNlcnZhYmxlPG51bWJlcj47XG4gIGN1cnJlbnRJbWFnZSQ6IE9ic2VydmFibGU8RWxlbWVudFJlZjxIVE1MSW1hZ2VFbGVtZW50PiB8IG51bGw+O1xuXG4gIHByZXZpb3VzSW1hZ2UoKSB7XG4gICAgdGhpcy5jdXJyZW50SW1hZ2VDb3VudGVyJFxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoKGN1cnJlbnRJbWFnZUNvdW50ZXIpID0+IHtcbiAgICAgICAgdGhpcy5jdXJyZW50SW1hZ2VDb3VudGVyJC5uZXh0KGN1cnJlbnRJbWFnZUNvdW50ZXIgLSAxKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbmV4dEltYWdlKCkge1xuICAgIHRoaXMuY3VycmVudEltYWdlQ291bnRlciRcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKChjdXJyZW50SW1hZ2VDb3VudGVyKSA9PiB7XG4gICAgICAgIHRoaXMuY3VycmVudEltYWdlQ291bnRlciQubmV4dChjdXJyZW50SW1hZ2VDb3VudGVyICsgMSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHNldEN1cnJlbnRJbWFnZShpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5jdXJyZW50SW1hZ2VDb3VudGVyJC5uZXh0KGluZGV4KTtcbiAgfVxuXG4gIEBDb250ZW50Q2hpbGRyZW4oQnNDYXJvdXNlbEltYWdlRGlyZWN0aXZlLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgaW1hZ2VzITogUXVlcnlMaXN0PEVsZW1lbnRSZWY8SFRNTEltYWdlRWxlbWVudD4+O1xuXG59XG4iLCI8ZGl2IGNsYXNzPVwiY2Fyb3VzZWwgc2xpZGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2Fyb3VzZWwtaW5kaWNhdG9yc1wiPlxuICAgICAgICA8YnV0dG9uICpuZ0Zvcj1cImxldCBpbWFnZSBvZiBpbWFnZXM7IGxldCBpID0gaW5kZXhcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNldEN1cnJlbnRJbWFnZShpKVwiIGRhdGEtYnMtdGFyZ2V0XG4gICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cIihjdXJyZW50SW1hZ2VJbmRleCQgfCBhc3luYykgPT09IGlcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1jdXJyZW50XT1cIihjdXJyZW50SW1hZ2VJbmRleCQgfCBhc3luYykgPT09IGkgPyB0cnVlIDogbnVsbFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidTbGlkZSAnICsgaVwiPjwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG5cblxuICAgIDwhLS0gW0BjYXJvdXNlbFNsaWRlXT1cImN1cnJlbnRJbWFnZUNvdW50ZXIkIHwgYXN5bmNcIiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY2Fyb3VzZWwtaW5uZXJcIiBbQGNhcm91c2VsU2xpZGVdPVwiY3VycmVudEltYWdlQ291bnRlciQgfCBhc3luY1wiICpuZ0lmPVwiYW5pbWF0aW9uID09PSAnc2xpZGUnXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGltYWdlIG9mIGltYWdlczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcm91c2VsLWl0ZW1cIiBbY2xhc3MuYWN0aXZlXT1cInRydWVcIiAqbmdJZj1cIihjdXJyZW50SW1hZ2VJbmRleCQgfCBhc3luYykgPT09IGlcIj5cbiAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiaW1hZ2UubmF0aXZlRWxlbWVudC5zcmNcIiBjbGFzcz1cImQtYmxvY2tcIiBbYXR0ci5hbHRdPVwiaW1hZ2UubmF0aXZlRWxlbWVudC5hbHRcIiBbY2xhc3Mudy0xMDBdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjYXJvdXNlbC1pbm5lclwiICpuZ0lmPVwiYW5pbWF0aW9uID09PSAnZmFkZSdcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaW1hZ2Ugb2YgaW1hZ2VzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2Fyb3VzZWwtaXRlbVwiIFtjbGFzcy5hY3RpdmVdPVwidHJ1ZVwiIEBmYWRlSW5PdXQgKm5nSWY9XCIoY3VycmVudEltYWdlSW5kZXgkIHwgYXN5bmMpID09PSBpXCI+XG4gICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImltYWdlLm5hdGl2ZUVsZW1lbnQuc3JjXCIgY2xhc3M9XCJkLWJsb2NrXCIgW2F0dHIuYWx0XT1cImltYWdlLm5hdGl2ZUVsZW1lbnQuYWx0XCIgW2NsYXNzLnctMTAwXT1cInRydWVcIj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuXG5cbiAgICA8YnV0dG9uIGNsYXNzPVwiY2Fyb3VzZWwtY29udHJvbC1wcmV2XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJwcmV2aW91c0ltYWdlKClcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJvdXNlbC1jb250cm9sLXByZXYtaWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj5QcmV2aW91czwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiY2Fyb3VzZWwtY29udHJvbC1uZXh0XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJuZXh0SW1hZ2UoKVwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNhcm91c2VsLWNvbnRyb2wtbmV4dC1pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPk5leHQ8L3NwYW4+XG4gICAgPC9idXR0b24+XG48L2Rpdj4iXX0=
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9zcmMvbGliL2NvbXBvbmVudHMvY2Fyb3VzZWwvY2Fyb3VzZWwvY2Fyb3VzZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9zcmMvbGliL2NvbXBvbmVudHMvY2Fyb3VzZWwvY2Fyb3VzZWwvY2Fyb3VzZWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQixTQUFTLEVBQUUsZUFBZSxFQUEyQixLQUFLLEVBQXFCLFNBQVMsRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUN4SixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RixPQUFPLEVBQUUsZUFBZSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQUUsR0FBRyxFQUFPLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQzs7O0FBUXRGLE1BQU0sT0FBTyxtQkFBbUI7SUFFOUI7UUEwQkEsNkJBQTZCO1FBQzdCLHFDQUFxQztRQUVyQixjQUFTLEdBQXFCLE9BQU8sQ0FBQztRQUV0RCxlQUFVLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUMzQix5QkFBb0IsR0FBRyxJQUFJLGVBQWUsQ0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBL0JyRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQjthQUNoRCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDcEIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDN0IsT0FBTyxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQzthQUNGLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsa0JBQWtCO2FBQ3pDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLFlBQVksSUFBSSxJQUFJLENBQUMsQ0FBQzthQUNsRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxRQUFRLEtBQVcsQ0FBQztJQUVwQixXQUFXO1FBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMxQixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ25DO2FBQU07WUFDTCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDcEM7SUFDSCxDQUFDO0lBWUQsYUFBYTtRQUNYLElBQUksQ0FBQyxvQkFBb0I7YUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNiLFNBQVMsQ0FBQyxDQUFDLG1CQUFtQixFQUFFLEVBQUU7WUFDakMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMxRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLG9CQUFvQjthQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2IsU0FBUyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsRUFBRTtZQUNqQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFhO1FBQzNCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUM7UUFDckQsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDN0IsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEQsTUFBTSxRQUFRLEdBQUcsWUFBWSxHQUFHLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMzQyxDQUFDOztnSEE1RFUsbUJBQW1CO29HQUFuQixtQkFBbUIsOEdBOERiLHdCQUF3Qiw2QkMxRTNDLG95REFvQ00sNFpEMUJRLENBQUMsa0JBQWtCLEVBQUUsc0JBQXNCLENBQUM7MkZBRTdDLG1CQUFtQjtrQkFOL0IsU0FBUzsrQkFDRSxhQUFhLGNBR1gsQ0FBQyxrQkFBa0IsRUFBRSxzQkFBc0IsQ0FBQzswRUFpQ3hDLFNBQVM7c0JBQXhCLEtBQUs7Z0JBK0JxQyxNQUFNO3NCQUFoRCxlQUFlO3VCQUFDLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyQ29udGVudEluaXQsIENvbXBvbmVudCwgQ29udGVudENoaWxkcmVuLCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBRdWVyeUxpc3QsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGYWRlSW5PdXRBbmltYXRpb24sIENhcm91c2VsU2xpZGVBbmltYXRpb24gfSBmcm9tICdAbWludHBsYXllci9uZy1hbmltYXRpb25zJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCB0YXAsIHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEJzQ2Fyb3VzZWxJbWFnZURpcmVjdGl2ZSB9IGZyb20gJy4uL2Nhcm91c2VsLWltYWdlL2Nhcm91c2VsLWltYWdlLmRpcmVjdGl2ZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JzLWNhcm91c2VsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Nhcm91c2VsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2Fyb3VzZWwuY29tcG9uZW50LnNjc3MnXSxcbiAgYW5pbWF0aW9uczogW0ZhZGVJbk91dEFuaW1hdGlvbiwgQ2Fyb3VzZWxTbGlkZUFuaW1hdGlvbl1cbn0pXG5leHBvcnQgY2xhc3MgQnNDYXJvdXNlbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlckNvbnRlbnRJbml0IHtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmN1cnJlbnRJbWFnZUluZGV4JCA9IHRoaXMuY3VycmVudEltYWdlQ291bnRlciRcbiAgICAgIC5waXBlKG1hcCgoY291bnRlcikgPT4ge1xuICAgICAgICBjb25zdCBsID0gdGhpcy5pbWFnZXMubGVuZ3RoO1xuICAgICAgICByZXR1cm4gKChjb3VudGVyICUgbCkgKyBsKSAlIGw7XG4gICAgICB9KSlcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKTtcbiAgICB0aGlzLmN1cnJlbnRJbWFnZSQgPSB0aGlzLmN1cnJlbnRJbWFnZUluZGV4JFxuICAgICAgLnBpcGUobWFwKChpbmRleCkgPT4gdGhpcy5pbWFnZXMuZ2V0KGluZGV4KT8uaXRlbVRlbXBsYXRlID8/IG51bGwpKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7IH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3llZCQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICBpZiAodGhpcy5pbWFnZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5jdXJyZW50SW1hZ2VDb3VudGVyJC5uZXh0KDApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmN1cnJlbnRJbWFnZUNvdW50ZXIkLm5leHQoLTEpO1xuICAgIH1cbiAgfVxuICBcbiAgLy8gQEhvc3RCaW5kaW5nKCdALmRpc2FibGVkJylcbiAgLy8gcHVibGljIGFuaW1hdGlvbnNEaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBhbmltYXRpb246ICdmYWRlJyB8ICdzbGlkZScgPSAnc2xpZGUnO1xuXG4gIGRlc3Ryb3llZCQgPSBuZXcgU3ViamVjdCgpO1xuICBjdXJyZW50SW1hZ2VDb3VudGVyJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigtMSk7XG4gIGN1cnJlbnRJbWFnZUluZGV4JDogT2JzZXJ2YWJsZTxudW1iZXI+O1xuICBjdXJyZW50SW1hZ2UkOiBPYnNlcnZhYmxlPFRlbXBsYXRlUmVmPGFueT4gfCBudWxsPjtcblxuICBwcmV2aW91c0ltYWdlKCkge1xuICAgIHRoaXMuY3VycmVudEltYWdlQ291bnRlciRcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKChjdXJyZW50SW1hZ2VDb3VudGVyKSA9PiB7XG4gICAgICAgIHRoaXMuY3VycmVudEltYWdlQ291bnRlciQubmV4dChjdXJyZW50SW1hZ2VDb3VudGVyIC0gMSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIG5leHRJbWFnZSgpIHtcbiAgICB0aGlzLmN1cnJlbnRJbWFnZUNvdW50ZXIkXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSgoY3VycmVudEltYWdlQ291bnRlcikgPT4ge1xuICAgICAgICB0aGlzLmN1cnJlbnRJbWFnZUNvdW50ZXIkLm5leHQoY3VycmVudEltYWdlQ291bnRlciArIDEpO1xuICAgICAgfSk7XG4gIH1cblxuICBzZXRDdXJyZW50SW1hZ2UoaW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHRoaXMuY3VycmVudEltYWdlQ291bnRlciQudmFsdWU7XG4gICAgY29uc3QgbCA9IHRoaXMuaW1hZ2VzLmxlbmd0aDtcbiAgICBjb25zdCBjb3VudGVyTW9kID0gKChjdXJyZW50VmFsdWUgJSBsKSArIGwpICUgbDtcbiAgICBjb25zdCBuZXdWYWx1ZSA9IGN1cnJlbnRWYWx1ZSAtIGNvdW50ZXJNb2QgKyBpbmRleDtcbiAgICB0aGlzLmN1cnJlbnRJbWFnZUNvdW50ZXIkLm5leHQobmV3VmFsdWUpO1xuICB9XG5cbiAgQENvbnRlbnRDaGlsZHJlbihCc0Nhcm91c2VsSW1hZ2VEaXJlY3RpdmUpIGltYWdlcyE6IFF1ZXJ5TGlzdDxCc0Nhcm91c2VsSW1hZ2VEaXJlY3RpdmU+O1xuXG59XG4iLCI8ZGl2IGNsYXNzPVwiY2Fyb3VzZWwgc2xpZGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2Fyb3VzZWwtaW5kaWNhdG9yc1wiPlxuICAgICAgICA8YnV0dG9uICpuZ0Zvcj1cImxldCBpbWFnZSBvZiBpbWFnZXM7IGxldCBpID0gaW5kZXhcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNldEN1cnJlbnRJbWFnZShpKVwiXG4gICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cIihjdXJyZW50SW1hZ2VJbmRleCQgfCBhc3luYykgPT09IGlcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1jdXJyZW50XT1cIihjdXJyZW50SW1hZ2VJbmRleCQgfCBhc3luYykgPT09IGkgPyB0cnVlIDogbnVsbFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidTbGlkZSAnICsgaVwiPjwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG5cblxuICAgIDwhLS0gW0BjYXJvdXNlbFNsaWRlXT1cImN1cnJlbnRJbWFnZUNvdW50ZXIkIHwgYXN5bmNcIiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY2Fyb3VzZWwtaW5uZXJcIiBbQGNhcm91c2VsU2xpZGVdPVwiY3VycmVudEltYWdlQ291bnRlciQgfCBhc3luY1wiICpuZ0lmPVwiYW5pbWF0aW9uID09PSAnc2xpZGUnXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGltYWdlIG9mIGltYWdlczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcm91c2VsLWl0ZW1cIiBbY2xhc3MuYWN0aXZlXT1cInRydWVcIiAqbmdJZj1cIihjdXJyZW50SW1hZ2VJbmRleCQgfCBhc3luYykgPT09IGlcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImltYWdlLml0ZW1UZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPiAgICBcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY2Fyb3VzZWwtaW5uZXJcIiAqbmdJZj1cImFuaW1hdGlvbiA9PT0gJ2ZhZGUnXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGltYWdlIG9mIGltYWdlczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcm91c2VsLWl0ZW1cIiBbY2xhc3MuYWN0aXZlXT1cInRydWVcIiBAZmFkZUluT3V0ICpuZ0lmPVwiKGN1cnJlbnRJbWFnZUluZGV4JCB8IGFzeW5jKSA9PT0gaVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaW1hZ2UuaXRlbVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+ICAgIFxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG5cblxuICAgIDxidXR0b24gY2xhc3M9XCJjYXJvdXNlbC1jb250cm9sLXByZXZcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInByZXZpb3VzSW1hZ2UoKVwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNhcm91c2VsLWNvbnRyb2wtcHJldi1pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPlByZXZpb3VzPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gY2xhc3M9XCJjYXJvdXNlbC1jb250cm9sLW5leHRcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm5leHRJbWFnZSgpXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY2Fyb3VzZWwtY29udHJvbC1uZXh0LWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+TmV4dDwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbjwvZGl2PiJdfQ==
@@ -1,14 +1,17 @@
1
- import { Directive } from '@angular/core';
1
+ import { Directive, TemplateRef } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export class BsCarouselImageDirective {
4
- constructor() { }
4
+ constructor(templateRef) {
5
+ this.templateRef = templateRef;
6
+ this.itemTemplate = this.templateRef;
7
+ }
5
8
  }
6
- BsCarouselImageDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCarouselImageDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
7
- BsCarouselImageDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsCarouselImageDirective, selector: "img[bsCarouselImage]", ngImport: i0 });
9
+ BsCarouselImageDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCarouselImageDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
10
+ BsCarouselImageDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsCarouselImageDirective, selector: "*[bsCarouselImage]", ngImport: i0 });
8
11
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCarouselImageDirective, decorators: [{
9
12
  type: Directive,
10
13
  args: [{
11
- selector: 'img[bsCarouselImage]'
14
+ selector: '*[bsCarouselImage]'
12
15
  }]
13
- }], ctorParameters: function () { return []; } });
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwtaW1hZ2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9zcmMvbGliL2NvbXBvbmVudHMvY2Fyb3VzZWwvY2Fyb3VzZWwtaW1hZ2UvY2Fyb3VzZWwtaW1hZ2UuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSzFDLE1BQU0sT0FBTyx3QkFBd0I7SUFFbkMsZ0JBQWdCLENBQUM7O3FIQUZOLHdCQUF3Qjt5R0FBeEIsd0JBQXdCOzJGQUF4Qix3QkFBd0I7a0JBSHBDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtpQkFDakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnaW1nW2JzQ2Fyb3VzZWxJbWFnZV0nXG59KVxuZXhwb3J0IGNsYXNzIEJzQ2Fyb3VzZWxJbWFnZURpcmVjdGl2ZSB7XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxufVxuIl19
16
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwtaW1hZ2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9zcmMvbGliL2NvbXBvbmVudHMvY2Fyb3VzZWwvY2Fyb3VzZWwtaW1hZ2UvY2Fyb3VzZWwtaW1hZ2UuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUt2RCxNQUFNLE9BQU8sd0JBQXdCO0lBSW5DLFlBQW9CLFdBQTZCO1FBQTdCLGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtRQUMvQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDdkMsQ0FBQzs7cUhBTlUsd0JBQXdCO3lHQUF4Qix3QkFBd0I7MkZBQXhCLHdCQUF3QjtrQkFIcEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsb0JBQW9CO2lCQUMvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnKltic0Nhcm91c2VsSW1hZ2VdJ1xufSlcbmV4cG9ydCBjbGFzcyBCc0Nhcm91c2VsSW1hZ2VEaXJlY3RpdmUge1xuXG4gIHB1YmxpYyBpdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIFxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgdGhpcy5pdGVtVGVtcGxhdGUgPSB0aGlzLnRlbXBsYXRlUmVmO1xuICB9XG5cbn1cbiJdfQ==
@@ -6,4 +6,5 @@ export * from './list-group';
6
6
  export * from './navbar';
7
7
  export * from './accordion';
8
8
  export * from './tab-control';
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL3NyYy9saWIvY29tcG9uZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYWxlcnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jYXJkJztcbmV4cG9ydCAqIGZyb20gJy4vY2FsZW5kYXInO1xuZXhwb3J0ICogZnJvbSAnLi9jYXJvdXNlbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpc3QtZ3JvdXAnO1xuZXhwb3J0ICogZnJvbSAnLi9uYXZiYXInO1xuZXhwb3J0ICogZnJvbSAnLi9hY2NvcmRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi90YWItY29udHJvbCc7Il19
9
+ export * from './scrollspy';
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL3NyYy9saWIvY29tcG9uZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYWxlcnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jYXJkJztcbmV4cG9ydCAqIGZyb20gJy4vY2FsZW5kYXInO1xuZXhwb3J0ICogZnJvbSAnLi9jYXJvdXNlbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpc3QtZ3JvdXAnO1xuZXhwb3J0ICogZnJvbSAnLi9uYXZiYXInO1xuZXhwb3J0ICogZnJvbSAnLi9hY2NvcmRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi90YWItY29udHJvbCc7XG5leHBvcnQgKiBmcm9tICcuL3Njcm9sbHNweSc7Il19
@@ -9,10 +9,10 @@ export class BsNavbarComponent {
9
9
  }
10
10
  }
11
11
  BsNavbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsNavbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
12
- BsNavbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsNavbarComponent, selector: "bs-navbar", viewQueries: [{ propertyName: "nav", first: true, predicate: ["nav"], descendants: true }], ngImport: i0, template: "<nav #nav class=\"navbar navbar-expand-md position-fixed navbar-dark bg-dark\">\n <div class=\"container-fluid\">\n <div class=\"d-flex w-100 w-md-auto\">\n <a class=\"navbar-brand mx-auto mx-md-unset\" href=\"#\">Navbar 2</a>\n <button (click)=\"toggleExpanded()\" class=\"navbar-toggler align-self-end\" type=\"button\" data-toggle=\"collapse\">\n <span class=\"navbar-toggler-icon\"></span>\n </button>\n </div>\n <ng-content></ng-content>\n </div>\n</nav>", styles: [":host ::ng-deep+*{padding-top:56px}nav{left:0;top:0;right:0;z-index:1}@media (min-width: 768px){.mx-md-unset{margin-left:0!important;margin-right:0!important}.w-md-auto{width:auto!important}}\n"] });
12
+ BsNavbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsNavbarComponent, selector: "bs-navbar", viewQueries: [{ propertyName: "nav", first: true, predicate: ["nav"], descendants: true }], ngImport: i0, template: "<nav #nav class=\"navbar navbar-expand-md position-fixed navbar-dark bg-dark\">\n <div class=\"container-fluid\">\n <div class=\"d-flex w-100 w-md-auto\">\n <a class=\"navbar-brand mx-auto mx-md-unset\" href=\"#\">Navbar 2</a>\n <button (click)=\"toggleExpanded()\" class=\"navbar-toggler align-self-end\" type=\"button\" data-toggle=\"collapse\">\n <span class=\"navbar-toggler-icon\"></span>\n </button>\n </div>\n <ng-content></ng-content>\n </div>\n</nav>", styles: [":host ::ng-deep+*{padding-top:56px}nav{left:0;top:0;right:0;z-index:10}@media (min-width: 768px){.mx-md-unset{margin-left:0!important;margin-right:0!important}.w-md-auto{width:auto!important}}\n"] });
13
13
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsNavbarComponent, decorators: [{
14
14
  type: Component,
15
- args: [{ selector: 'bs-navbar', template: "<nav #nav class=\"navbar navbar-expand-md position-fixed navbar-dark bg-dark\">\n <div class=\"container-fluid\">\n <div class=\"d-flex w-100 w-md-auto\">\n <a class=\"navbar-brand mx-auto mx-md-unset\" href=\"#\">Navbar 2</a>\n <button (click)=\"toggleExpanded()\" class=\"navbar-toggler align-self-end\" type=\"button\" data-toggle=\"collapse\">\n <span class=\"navbar-toggler-icon\"></span>\n </button>\n </div>\n <ng-content></ng-content>\n </div>\n</nav>", styles: [":host ::ng-deep+*{padding-top:56px}nav{left:0;top:0;right:0;z-index:1}@media (min-width: 768px){.mx-md-unset{margin-left:0!important;margin-right:0!important}.w-md-auto{width:auto!important}}\n"] }]
15
+ args: [{ selector: 'bs-navbar', template: "<nav #nav class=\"navbar navbar-expand-md position-fixed navbar-dark bg-dark\">\n <div class=\"container-fluid\">\n <div class=\"d-flex w-100 w-md-auto\">\n <a class=\"navbar-brand mx-auto mx-md-unset\" href=\"#\">Navbar 2</a>\n <button (click)=\"toggleExpanded()\" class=\"navbar-toggler align-self-end\" type=\"button\" data-toggle=\"collapse\">\n <span class=\"navbar-toggler-icon\"></span>\n </button>\n </div>\n <ng-content></ng-content>\n </div>\n</nav>", styles: [":host ::ng-deep+*{padding-top:56px}nav{left:0;top:0;right:0;z-index:10}@media (min-width: 768px){.mx-md-unset{margin-left:0!important;margin-right:0!important}.w-md-auto{width:auto!important}}\n"] }]
16
16
  }], ctorParameters: function () { return []; }, propDecorators: { nav: [{
17
17
  type: ViewChild,
18
18
  args: ['nav']
@@ -0,0 +1,48 @@
1
+ import { DOCUMENT } from '@angular/common';
2
+ import { Component, ContentChildren, HostListener, Inject, QueryList } from '@angular/core';
3
+ import { BsScrollspyDirective } from '../directives/scrollspy.directive';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common";
6
+ export class BsScrollspyComponent {
7
+ constructor(document) {
8
+ this.activeDirective = null;
9
+ this.doc = document;
10
+ }
11
+ ngOnInit() {
12
+ }
13
+ ngAfterViewInit() {
14
+ this.onWindowScroll();
15
+ }
16
+ onWindowScroll() {
17
+ const dirs = this.directives.filter((d) => d.element.nativeElement.getBoundingClientRect().y <= 0);
18
+ if (this.directives.length === 0) {
19
+ this.activeDirective = null;
20
+ }
21
+ else if (dirs.length === 0) {
22
+ this.activeDirective = this.directives.get(0) ?? null;
23
+ }
24
+ else {
25
+ this.activeDirective = dirs[dirs.length - 1];
26
+ }
27
+ }
28
+ scrollToHeader(directive) {
29
+ const header = directive.element.nativeElement;
30
+ header.scrollIntoView();
31
+ }
32
+ }
33
+ BsScrollspyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyComponent, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });
34
+ BsScrollspyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsScrollspyComponent, selector: "bs-scrollspy", host: { listeners: { "window:scroll": "onWindowScroll($event)" } }, queries: [{ propertyName: "directives", predicate: BsScrollspyDirective, descendants: true }], ngImport: i0, template: "<div class=\"spy\">\n <ul class=\"text-muted\">\n <li *ngFor=\"let dir of directives\">\n <span class=\"cursor-pointer\" [ngClass]=\"'nav' + dir.element.nativeElement.tagName\" [class.fw-bold]=\"activeDirective?.element === dir.element\" (click)=\"scrollToHeader(dir)\" [title]=\"dir.element.nativeElement.textContent\">\n {{ dir.element.nativeElement.textContent }}\n </span>\n </li>\n </ul>\n</div>\n<div class=\"content\">\n <ng-content></ng-content>\n</div>", styles: [":host{display:block}.spy>ul{list-style-type:none;padding-left:0}.spy>ul>li:hover{color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}@media (min-width: 768px){:host{display:grid;grid-template-areas:\"content toc\";grid-template-columns:auto 200px;grid-template-rows:auto;grid-gap:inherit;gap:inherit;grid-area:main}.spy{position:sticky;top:5rem;right:0;z-index:2;height:calc(100% - 60rem);overflow-y:auto;grid-area:toc}.spy>ul{padding-left:2rem}.spy>ul>li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}.navH2{margin-left:20px}.navH3{margin-left:40px}.navH4{margin-left:60px}\n"], directives: [{ type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyComponent, decorators: [{
36
+ type: Component,
37
+ args: [{ selector: 'bs-scrollspy', template: "<div class=\"spy\">\n <ul class=\"text-muted\">\n <li *ngFor=\"let dir of directives\">\n <span class=\"cursor-pointer\" [ngClass]=\"'nav' + dir.element.nativeElement.tagName\" [class.fw-bold]=\"activeDirective?.element === dir.element\" (click)=\"scrollToHeader(dir)\" [title]=\"dir.element.nativeElement.textContent\">\n {{ dir.element.nativeElement.textContent }}\n </span>\n </li>\n </ul>\n</div>\n<div class=\"content\">\n <ng-content></ng-content>\n</div>", styles: [":host{display:block}.spy>ul{list-style-type:none;padding-left:0}.spy>ul>li:hover{color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}@media (min-width: 768px){:host{display:grid;grid-template-areas:\"content toc\";grid-template-columns:auto 200px;grid-template-rows:auto;grid-gap:inherit;gap:inherit;grid-area:main}.spy{position:sticky;top:5rem;right:0;z-index:2;height:calc(100% - 60rem);overflow-y:auto;grid-area:toc}.spy>ul{padding-left:2rem}.spy>ul>li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}.navH2{margin-left:20px}.navH3{margin-left:40px}.navH4{margin-left:60px}\n"] }]
38
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
39
+ type: Inject,
40
+ args: [DOCUMENT]
41
+ }] }]; }, propDecorators: { directives: [{
42
+ type: ContentChildren,
43
+ args: [BsScrollspyDirective, { descendants: true }]
44
+ }], onWindowScroll: [{
45
+ type: HostListener,
46
+ args: ['window:scroll', ['$event']]
47
+ }] } });
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsc3B5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvc3JjL2xpYi9jb21wb25lbnRzL3Njcm9sbHNweS9jb21wb25lbnQvc2Nyb2xsc3B5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvc3JjL2xpYi9jb21wb25lbnRzL3Njcm9sbHNweS9jb21wb25lbnQvc2Nyb2xsc3B5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQWlCLFNBQVMsRUFBRSxlQUFlLEVBQWMsWUFBWSxFQUFFLE1BQU0sRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0gsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7OztBQU96RSxNQUFNLE9BQU8sb0JBQW9CO0lBRS9CLFlBQThCLFFBQWE7UUFRM0Msb0JBQWUsR0FBZ0MsSUFBSSxDQUFDO1FBUGxELElBQUksQ0FBQyxHQUFHLEdBQWEsUUFBUSxDQUFDO0lBQ2hDLENBQUM7SUFRRCxRQUFRO0lBQ1IsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUdELGNBQWM7UUFDWixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDbkcsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDaEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7U0FDN0I7YUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQzVCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDO1NBQ3ZEO2FBQU07WUFDTCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQzlDO0lBQ0gsQ0FBQztJQUVELGNBQWMsQ0FBQyxTQUErQjtRQUM1QyxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQztRQUMvQyxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDMUIsQ0FBQzs7aUhBbENVLG9CQUFvQixrQkFFWCxRQUFRO3FHQUZqQixvQkFBb0IsbUpBTWQsb0JBQW9CLGdEQ2Z2QywyZ0JBV007MkZERk8sb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGNBQWM7OzBCQU1YLE1BQU07MkJBQUMsUUFBUTs0Q0FLNUIsVUFBVTtzQkFEVCxlQUFlO3VCQUFDLG9CQUFvQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFjNUQsY0FBYztzQkFEYixZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgQ29udGVudENoaWxkcmVuLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIEluamVjdCwgT25Jbml0LCBRdWVyeUxpc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJzU2Nyb2xsc3B5RGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9zY3JvbGxzcHkuZGlyZWN0aXZlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnMtc2Nyb2xsc3B5JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Njcm9sbHNweS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Njcm9sbHNweS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEJzU2Nyb2xsc3B5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KERPQ1VNRU5UKSBkb2N1bWVudDogYW55KSB7XG4gICAgdGhpcy5kb2MgPSA8RG9jdW1lbnQ+ZG9jdW1lbnQ7XG4gIH1cblxuICBAQ29udGVudENoaWxkcmVuKEJzU2Nyb2xsc3B5RGlyZWN0aXZlLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIGRpcmVjdGl2ZXMhOiBRdWVyeUxpc3Q8QnNTY3JvbGxzcHlEaXJlY3RpdmU+O1xuXG4gIGRvYzogRG9jdW1lbnQ7XG4gIGFjdGl2ZURpcmVjdGl2ZTogQnNTY3JvbGxzcHlEaXJlY3RpdmUgfCBudWxsID0gbnVsbDtcblxuICBuZ09uSW5pdCgpIHtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLm9uV2luZG93U2Nyb2xsKCk7XG4gIH1cbiAgXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpzY3JvbGwnLCBbJyRldmVudCddKVxuICBvbldpbmRvd1Njcm9sbCgpIHtcbiAgICBjb25zdCBkaXJzID0gdGhpcy5kaXJlY3RpdmVzLmZpbHRlcigoZCkgPT4gZC5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkueSA8PSAwKTtcbiAgICBpZiAodGhpcy5kaXJlY3RpdmVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5hY3RpdmVEaXJlY3RpdmUgPSBudWxsO1xuICAgIH0gZWxzZSBpZiAoZGlycy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuYWN0aXZlRGlyZWN0aXZlID0gdGhpcy5kaXJlY3RpdmVzLmdldCgwKSA/PyBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFjdGl2ZURpcmVjdGl2ZSA9IGRpcnNbZGlycy5sZW5ndGggLSAxXTtcbiAgICB9XG4gIH1cbiAgXG4gIHNjcm9sbFRvSGVhZGVyKGRpcmVjdGl2ZTogQnNTY3JvbGxzcHlEaXJlY3RpdmUpIHtcbiAgICBjb25zdCBoZWFkZXIgPSBkaXJlY3RpdmUuZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgIGhlYWRlci5zY3JvbGxJbnRvVmlldygpO1xuICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJzcHlcIj5cbiAgICA8dWwgY2xhc3M9XCJ0ZXh0LW11dGVkXCI+XG4gICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZGlyIG9mIGRpcmVjdGl2ZXNcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiBbbmdDbGFzc109XCInbmF2JyArIGRpci5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQudGFnTmFtZVwiIFtjbGFzcy5mdy1ib2xkXT1cImFjdGl2ZURpcmVjdGl2ZT8uZWxlbWVudCA9PT0gZGlyLmVsZW1lbnRcIiAoY2xpY2spPVwic2Nyb2xsVG9IZWFkZXIoZGlyKVwiIFt0aXRsZV09XCJkaXIuZWxlbWVudC5uYXRpdmVFbGVtZW50LnRleHRDb250ZW50XCI+XG4gICAgICAgICAgICAgICAge3sgZGlyLmVsZW1lbnQubmF0aXZlRWxlbWVudC50ZXh0Q29udGVudCB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2xpPlxuICAgIDwvdWw+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJjb250ZW50XCI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9kaXY+Il19
@@ -0,0 +1,16 @@
1
+ import { Directive, ElementRef } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class BsScrollspyDirective {
4
+ constructor(element) {
5
+ this.element = element;
6
+ }
7
+ }
8
+ BsScrollspyDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
9
+ BsScrollspyDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsScrollspyDirective, selector: "[bsScrollspy]", ngImport: i0 });
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyDirective, decorators: [{
11
+ type: Directive,
12
+ args: [{
13
+ selector: '[bsScrollspy]'
14
+ }]
15
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsc3B5LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvc3JjL2xpYi9jb21wb25lbnRzL3Njcm9sbHNweS9kaXJlY3RpdmVzL3Njcm9sbHNweS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQW1DLE1BQU0sZUFBZSxDQUFDOztBQUt2RixNQUFNLE9BQU8sb0JBQW9CO0lBRS9CLFlBQVksT0FBbUI7UUFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDekIsQ0FBQzs7aUhBSlUsb0JBQW9CO3FHQUFwQixvQkFBb0I7MkZBQXBCLG9CQUFvQjtrQkFIaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZUFBZTtpQkFDMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2JzU2Nyb2xsc3B5XSdcbn0pXG5leHBvcnQgY2xhc3MgQnNTY3JvbGxzcHlEaXJlY3RpdmUge1xuXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnQ6IEVsZW1lbnRSZWYpIHtcbiAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50O1xuICB9XG5cbiAgZWxlbWVudDogRWxlbWVudFJlZjtcblxufVxuIl19
@@ -0,0 +1,4 @@
1
+ export * from './component/scrollspy.component';
2
+ export * from './directives/scrollspy.directive';
3
+ export * from './scrollspy.module';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL3NyYy9saWIvY29tcG9uZW50cy9zY3JvbGxzcHkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudC9zY3JvbGxzcHkuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9zY3JvbGxzcHkuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vc2Nyb2xsc3B5Lm1vZHVsZSc7Il19
@@ -0,0 +1,31 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { BsScrollspyComponent } from './component/scrollspy.component';
4
+ import { BsScrollspyDirective } from './directives/scrollspy.directive';
5
+ import * as i0 from "@angular/core";
6
+ export class BsScrollspyModule {
7
+ }
8
+ BsScrollspyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
9
+ BsScrollspyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyModule, declarations: [BsScrollspyComponent,
10
+ BsScrollspyDirective], imports: [CommonModule], exports: [BsScrollspyComponent,
11
+ BsScrollspyDirective] });
12
+ BsScrollspyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyModule, imports: [[
13
+ CommonModule
14
+ ]] });
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyModule, decorators: [{
16
+ type: NgModule,
17
+ args: [{
18
+ declarations: [
19
+ BsScrollspyComponent,
20
+ BsScrollspyDirective
21
+ ],
22
+ imports: [
23
+ CommonModule
24
+ ],
25
+ exports: [
26
+ BsScrollspyComponent,
27
+ BsScrollspyDirective
28
+ ]
29
+ }]
30
+ }] });
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsc3B5Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvc3JjL2xpYi9jb21wb25lbnRzL3Njcm9sbHNweS9zY3JvbGxzcHkubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOztBQWlCeEUsTUFBTSxPQUFPLGlCQUFpQjs7OEdBQWpCLGlCQUFpQjsrR0FBakIsaUJBQWlCLGlCQVgxQixvQkFBb0I7UUFDcEIsb0JBQW9CLGFBR3BCLFlBQVksYUFHWixvQkFBb0I7UUFDcEIsb0JBQW9COytHQUdYLGlCQUFpQixZQVJuQjtZQUNQLFlBQVk7U0FDYjsyRkFNVSxpQkFBaUI7a0JBYjdCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLG9CQUFvQjt3QkFDcEIsb0JBQW9CO3FCQUNyQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTtxQkFDYjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1Asb0JBQW9CO3dCQUNwQixvQkFBb0I7cUJBQ3JCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBCc1Njcm9sbHNweUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50L3Njcm9sbHNweS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnNTY3JvbGxzcHlEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvc2Nyb2xsc3B5LmRpcmVjdGl2ZSc7XG5cblxuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBCc1Njcm9sbHNweUNvbXBvbmVudCxcbiAgICBCc1Njcm9sbHNweURpcmVjdGl2ZVxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBCc1Njcm9sbHNweUNvbXBvbmVudCxcbiAgICBCc1Njcm9sbHNweURpcmVjdGl2ZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEJzU2Nyb2xsc3B5TW9kdWxlIHsgfVxuIl19
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Component, Input, NgModule, Injectable, Pipe, Directive, ElementRef, ContentChildren, ViewChild, Optional, forwardRef, SkipSelf, Host, Inject, TemplateRef, ContentChild } from '@angular/core';
2
+ import { Component, Input, NgModule, Injectable, Pipe, Directive, ContentChildren, ViewChild, Optional, forwardRef, SkipSelf, Host, Inject, TemplateRef, ContentChild, HostListener } from '@angular/core';
3
3
  import * as i1 from '@angular/common';
4
- import { CommonModule } from '@angular/common';
4
+ import { CommonModule, DOCUMENT } from '@angular/common';
5
5
  import { SlideUpDownAnimation, FadeInOutAnimation, CarouselSlideAnimation } from '@mintplayer/ng-animations';
6
6
  import { Subject, BehaviorSubject } from 'rxjs';
7
7
  import { map, takeUntil, take } from 'rxjs/operators';
@@ -408,16 +408,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
408
408
  }] });
409
409
 
410
410
  class BsCarouselImageDirective {
411
- constructor() { }
411
+ constructor(templateRef) {
412
+ this.templateRef = templateRef;
413
+ this.itemTemplate = this.templateRef;
414
+ }
412
415
  }
413
- BsCarouselImageDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCarouselImageDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
414
- BsCarouselImageDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsCarouselImageDirective, selector: "img[bsCarouselImage]", ngImport: i0 });
416
+ BsCarouselImageDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCarouselImageDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
417
+ BsCarouselImageDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsCarouselImageDirective, selector: "*[bsCarouselImage]", ngImport: i0 });
415
418
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCarouselImageDirective, decorators: [{
416
419
  type: Directive,
417
420
  args: [{
418
- selector: 'img[bsCarouselImage]'
421
+ selector: '*[bsCarouselImage]'
419
422
  }]
420
- }], ctorParameters: function () { return []; } });
423
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
421
424
 
422
425
  class BsCarouselComponent {
423
426
  constructor() {
@@ -433,7 +436,7 @@ class BsCarouselComponent {
433
436
  }))
434
437
  .pipe(takeUntil(this.destroyed$));
435
438
  this.currentImage$ = this.currentImageIndex$
436
- .pipe(map((index) => { var _a; return (_a = this.images.get(index)) !== null && _a !== void 0 ? _a : null; }))
439
+ .pipe(map((index) => { var _a, _b; return (_b = (_a = this.images.get(index)) === null || _a === void 0 ? void 0 : _a.itemTemplate) !== null && _b !== void 0 ? _b : null; }))
437
440
  .pipe(takeUntil(this.destroyed$));
438
441
  }
439
442
  ngOnInit() { }
@@ -463,19 +466,23 @@ class BsCarouselComponent {
463
466
  });
464
467
  }
465
468
  setCurrentImage(index) {
466
- this.currentImageCounter$.next(index);
469
+ const currentValue = this.currentImageCounter$.value;
470
+ const l = this.images.length;
471
+ const counterMod = ((currentValue % l) + l) % l;
472
+ const newValue = currentValue - counterMod + index;
473
+ this.currentImageCounter$.next(newValue);
467
474
  }
468
475
  }
469
476
  BsCarouselComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCarouselComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
470
- BsCarouselComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsCarouselComponent, selector: "bs-carousel", inputs: { animation: "animation" }, queries: [{ propertyName: "images", predicate: BsCarouselImageDirective, read: ElementRef }], ngImport: i0, template: "<div class=\"carousel slide\">\n <div class=\"carousel-indicators\">\n <button *ngFor=\"let image of images; let i = index\" type=\"button\" (click)=\"setCurrentImage(i)\" data-bs-target\n [class.active]=\"(currentImageIndex$ | async) === i\"\n [attr.aria-current]=\"(currentImageIndex$ | async) === i ? true : null\"\n [attr.aria-label]=\"'Slide ' + i\"></button>\n </div>\n\n\n\n <!-- [@carouselSlide]=\"currentImageCounter$ | async\" -->\n <div class=\"carousel-inner\" [@carouselSlide]=\"currentImageCounter$ | async\" *ngIf=\"animation === 'slide'\">\n <ng-container *ngFor=\"let image of images; let i = index\">\n <div class=\"carousel-item\" [class.active]=\"true\" *ngIf=\"(currentImageIndex$ | async) === i\">\n <img [src]=\"image.nativeElement.src\" class=\"d-block\" [attr.alt]=\"image.nativeElement.alt\" [class.w-100]=\"true\">\n </div>\n </ng-container>\n </div>\n <div class=\"carousel-inner\" *ngIf=\"animation === 'fade'\">\n <ng-container *ngFor=\"let image of images; let i = index\">\n <div class=\"carousel-item\" [class.active]=\"true\" @fadeInOut *ngIf=\"(currentImageIndex$ | async) === i\">\n <img [src]=\"image.nativeElement.src\" class=\"d-block\" [attr.alt]=\"image.nativeElement.alt\" [class.w-100]=\"true\">\n </div>\n </ng-container>\n </div>\n\n\n\n <button class=\"carousel-control-prev\" type=\"button\" (click)=\"previousImage()\">\n <span class=\"carousel-control-prev-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Previous</span>\n </button>\n <button class=\"carousel-control-next\" type=\"button\" (click)=\"nextImage()\">\n <span class=\"carousel-control-next-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Next</span>\n </button>\n</div>", styles: [".carousel{min-height:100px}\n"], directives: [{ type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i1.AsyncPipe }, animations: [FadeInOutAnimation, CarouselSlideAnimation] });
477
+ BsCarouselComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsCarouselComponent, selector: "bs-carousel", inputs: { animation: "animation" }, queries: [{ propertyName: "images", predicate: BsCarouselImageDirective }], ngImport: i0, template: "<div class=\"carousel slide\">\n <div class=\"carousel-indicators\">\n <button *ngFor=\"let image of images; let i = index\" type=\"button\" (click)=\"setCurrentImage(i)\"\n [class.active]=\"(currentImageIndex$ | async) === i\"\n [attr.aria-current]=\"(currentImageIndex$ | async) === i ? true : null\"\n [attr.aria-label]=\"'Slide ' + i\"></button>\n </div>\n\n\n\n <!-- [@carouselSlide]=\"currentImageCounter$ | async\" -->\n <div class=\"carousel-inner\" [@carouselSlide]=\"currentImageCounter$ | async\" *ngIf=\"animation === 'slide'\">\n <ng-container *ngFor=\"let image of images; let i = index\">\n <div class=\"carousel-item\" [class.active]=\"true\" *ngIf=\"(currentImageIndex$ | async) === i\">\n <ng-container [ngTemplateOutlet]=\"image.itemTemplate\"></ng-container> \n </div>\n </ng-container>\n </div>\n <div class=\"carousel-inner\" *ngIf=\"animation === 'fade'\">\n <ng-container *ngFor=\"let image of images; let i = index\">\n <div class=\"carousel-item\" [class.active]=\"true\" @fadeInOut *ngIf=\"(currentImageIndex$ | async) === i\">\n <ng-container [ngTemplateOutlet]=\"image.itemTemplate\"></ng-container> \n </div>\n </ng-container>\n </div>\n\n\n\n <button class=\"carousel-control-prev\" type=\"button\" (click)=\"previousImage()\">\n <span class=\"carousel-control-prev-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Previous</span>\n </button>\n <button class=\"carousel-control-next\" type=\"button\" (click)=\"nextImage()\">\n <span class=\"carousel-control-next-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Next</span>\n </button>\n</div>", styles: [".carousel{min-height:100px}\n"], directives: [{ type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "async": i1.AsyncPipe }, animations: [FadeInOutAnimation, CarouselSlideAnimation] });
471
478
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCarouselComponent, decorators: [{
472
479
  type: Component,
473
- args: [{ selector: 'bs-carousel', animations: [FadeInOutAnimation, CarouselSlideAnimation], template: "<div class=\"carousel slide\">\n <div class=\"carousel-indicators\">\n <button *ngFor=\"let image of images; let i = index\" type=\"button\" (click)=\"setCurrentImage(i)\" data-bs-target\n [class.active]=\"(currentImageIndex$ | async) === i\"\n [attr.aria-current]=\"(currentImageIndex$ | async) === i ? true : null\"\n [attr.aria-label]=\"'Slide ' + i\"></button>\n </div>\n\n\n\n <!-- [@carouselSlide]=\"currentImageCounter$ | async\" -->\n <div class=\"carousel-inner\" [@carouselSlide]=\"currentImageCounter$ | async\" *ngIf=\"animation === 'slide'\">\n <ng-container *ngFor=\"let image of images; let i = index\">\n <div class=\"carousel-item\" [class.active]=\"true\" *ngIf=\"(currentImageIndex$ | async) === i\">\n <img [src]=\"image.nativeElement.src\" class=\"d-block\" [attr.alt]=\"image.nativeElement.alt\" [class.w-100]=\"true\">\n </div>\n </ng-container>\n </div>\n <div class=\"carousel-inner\" *ngIf=\"animation === 'fade'\">\n <ng-container *ngFor=\"let image of images; let i = index\">\n <div class=\"carousel-item\" [class.active]=\"true\" @fadeInOut *ngIf=\"(currentImageIndex$ | async) === i\">\n <img [src]=\"image.nativeElement.src\" class=\"d-block\" [attr.alt]=\"image.nativeElement.alt\" [class.w-100]=\"true\">\n </div>\n </ng-container>\n </div>\n\n\n\n <button class=\"carousel-control-prev\" type=\"button\" (click)=\"previousImage()\">\n <span class=\"carousel-control-prev-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Previous</span>\n </button>\n <button class=\"carousel-control-next\" type=\"button\" (click)=\"nextImage()\">\n <span class=\"carousel-control-next-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Next</span>\n </button>\n</div>", styles: [".carousel{min-height:100px}\n"] }]
480
+ args: [{ selector: 'bs-carousel', animations: [FadeInOutAnimation, CarouselSlideAnimation], template: "<div class=\"carousel slide\">\n <div class=\"carousel-indicators\">\n <button *ngFor=\"let image of images; let i = index\" type=\"button\" (click)=\"setCurrentImage(i)\"\n [class.active]=\"(currentImageIndex$ | async) === i\"\n [attr.aria-current]=\"(currentImageIndex$ | async) === i ? true : null\"\n [attr.aria-label]=\"'Slide ' + i\"></button>\n </div>\n\n\n\n <!-- [@carouselSlide]=\"currentImageCounter$ | async\" -->\n <div class=\"carousel-inner\" [@carouselSlide]=\"currentImageCounter$ | async\" *ngIf=\"animation === 'slide'\">\n <ng-container *ngFor=\"let image of images; let i = index\">\n <div class=\"carousel-item\" [class.active]=\"true\" *ngIf=\"(currentImageIndex$ | async) === i\">\n <ng-container [ngTemplateOutlet]=\"image.itemTemplate\"></ng-container> \n </div>\n </ng-container>\n </div>\n <div class=\"carousel-inner\" *ngIf=\"animation === 'fade'\">\n <ng-container *ngFor=\"let image of images; let i = index\">\n <div class=\"carousel-item\" [class.active]=\"true\" @fadeInOut *ngIf=\"(currentImageIndex$ | async) === i\">\n <ng-container [ngTemplateOutlet]=\"image.itemTemplate\"></ng-container> \n </div>\n </ng-container>\n </div>\n\n\n\n <button class=\"carousel-control-prev\" type=\"button\" (click)=\"previousImage()\">\n <span class=\"carousel-control-prev-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Previous</span>\n </button>\n <button class=\"carousel-control-next\" type=\"button\" (click)=\"nextImage()\">\n <span class=\"carousel-control-next-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Next</span>\n </button>\n</div>", styles: [".carousel{min-height:100px}\n"] }]
474
481
  }], ctorParameters: function () { return []; }, propDecorators: { animation: [{
475
482
  type: Input
476
483
  }], images: [{
477
484
  type: ContentChildren,
478
- args: [BsCarouselImageDirective, { read: ElementRef }]
485
+ args: [BsCarouselImageDirective]
479
486
  }] } });
480
487
 
481
488
  class BsCarouselModule {
@@ -564,10 +571,10 @@ class BsNavbarComponent {
564
571
  }
565
572
  }
566
573
  BsNavbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsNavbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
567
- BsNavbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsNavbarComponent, selector: "bs-navbar", viewQueries: [{ propertyName: "nav", first: true, predicate: ["nav"], descendants: true }], ngImport: i0, template: "<nav #nav class=\"navbar navbar-expand-md position-fixed navbar-dark bg-dark\">\n <div class=\"container-fluid\">\n <div class=\"d-flex w-100 w-md-auto\">\n <a class=\"navbar-brand mx-auto mx-md-unset\" href=\"#\">Navbar 2</a>\n <button (click)=\"toggleExpanded()\" class=\"navbar-toggler align-self-end\" type=\"button\" data-toggle=\"collapse\">\n <span class=\"navbar-toggler-icon\"></span>\n </button>\n </div>\n <ng-content></ng-content>\n </div>\n</nav>", styles: [":host ::ng-deep+*{padding-top:56px}nav{left:0;top:0;right:0;z-index:1}@media (min-width: 768px){.mx-md-unset{margin-left:0!important;margin-right:0!important}.w-md-auto{width:auto!important}}\n"] });
574
+ BsNavbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsNavbarComponent, selector: "bs-navbar", viewQueries: [{ propertyName: "nav", first: true, predicate: ["nav"], descendants: true }], ngImport: i0, template: "<nav #nav class=\"navbar navbar-expand-md position-fixed navbar-dark bg-dark\">\n <div class=\"container-fluid\">\n <div class=\"d-flex w-100 w-md-auto\">\n <a class=\"navbar-brand mx-auto mx-md-unset\" href=\"#\">Navbar 2</a>\n <button (click)=\"toggleExpanded()\" class=\"navbar-toggler align-self-end\" type=\"button\" data-toggle=\"collapse\">\n <span class=\"navbar-toggler-icon\"></span>\n </button>\n </div>\n <ng-content></ng-content>\n </div>\n</nav>", styles: [":host ::ng-deep+*{padding-top:56px}nav{left:0;top:0;right:0;z-index:10}@media (min-width: 768px){.mx-md-unset{margin-left:0!important;margin-right:0!important}.w-md-auto{width:auto!important}}\n"] });
568
575
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsNavbarComponent, decorators: [{
569
576
  type: Component,
570
- args: [{ selector: 'bs-navbar', template: "<nav #nav class=\"navbar navbar-expand-md position-fixed navbar-dark bg-dark\">\n <div class=\"container-fluid\">\n <div class=\"d-flex w-100 w-md-auto\">\n <a class=\"navbar-brand mx-auto mx-md-unset\" href=\"#\">Navbar 2</a>\n <button (click)=\"toggleExpanded()\" class=\"navbar-toggler align-self-end\" type=\"button\" data-toggle=\"collapse\">\n <span class=\"navbar-toggler-icon\"></span>\n </button>\n </div>\n <ng-content></ng-content>\n </div>\n</nav>", styles: [":host ::ng-deep+*{padding-top:56px}nav{left:0;top:0;right:0;z-index:1}@media (min-width: 768px){.mx-md-unset{margin-left:0!important;margin-right:0!important}.w-md-auto{width:auto!important}}\n"] }]
577
+ args: [{ selector: 'bs-navbar', template: "<nav #nav class=\"navbar navbar-expand-md position-fixed navbar-dark bg-dark\">\n <div class=\"container-fluid\">\n <div class=\"d-flex w-100 w-md-auto\">\n <a class=\"navbar-brand mx-auto mx-md-unset\" href=\"#\">Navbar 2</a>\n <button (click)=\"toggleExpanded()\" class=\"navbar-toggler align-self-end\" type=\"button\" data-toggle=\"collapse\">\n <span class=\"navbar-toggler-icon\"></span>\n </button>\n </div>\n <ng-content></ng-content>\n </div>\n</nav>", styles: [":host ::ng-deep+*{padding-top:56px}nav{left:0;top:0;right:0;z-index:10}@media (min-width: 768px){.mx-md-unset{margin-left:0!important;margin-right:0!important}.w-md-auto{width:auto!important}}\n"] }]
571
578
  }], ctorParameters: function () { return []; }, propDecorators: { nav: [{
572
579
  type: ViewChild,
573
580
  args: ['nav']
@@ -984,9 +991,95 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
984
991
  }]
985
992
  }] });
986
993
 
994
+ class BsScrollspyDirective {
995
+ constructor(element) {
996
+ this.element = element;
997
+ }
998
+ }
999
+ BsScrollspyDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
1000
+ BsScrollspyDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsScrollspyDirective, selector: "[bsScrollspy]", ngImport: i0 });
1001
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyDirective, decorators: [{
1002
+ type: Directive,
1003
+ args: [{
1004
+ selector: '[bsScrollspy]'
1005
+ }]
1006
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });
1007
+
1008
+ class BsScrollspyComponent {
1009
+ constructor(document) {
1010
+ this.activeDirective = null;
1011
+ this.doc = document;
1012
+ }
1013
+ ngOnInit() {
1014
+ }
1015
+ ngAfterViewInit() {
1016
+ this.onWindowScroll();
1017
+ }
1018
+ onWindowScroll() {
1019
+ var _a;
1020
+ const dirs = this.directives.filter((d) => d.element.nativeElement.getBoundingClientRect().y <= 0);
1021
+ if (this.directives.length === 0) {
1022
+ this.activeDirective = null;
1023
+ }
1024
+ else if (dirs.length === 0) {
1025
+ this.activeDirective = (_a = this.directives.get(0)) !== null && _a !== void 0 ? _a : null;
1026
+ }
1027
+ else {
1028
+ this.activeDirective = dirs[dirs.length - 1];
1029
+ }
1030
+ }
1031
+ scrollToHeader(directive) {
1032
+ const header = directive.element.nativeElement;
1033
+ header.scrollIntoView();
1034
+ }
1035
+ }
1036
+ BsScrollspyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyComponent, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });
1037
+ BsScrollspyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsScrollspyComponent, selector: "bs-scrollspy", host: { listeners: { "window:scroll": "onWindowScroll($event)" } }, queries: [{ propertyName: "directives", predicate: BsScrollspyDirective, descendants: true }], ngImport: i0, template: "<div class=\"spy\">\n <ul class=\"text-muted\">\n <li *ngFor=\"let dir of directives\">\n <span class=\"cursor-pointer\" [ngClass]=\"'nav' + dir.element.nativeElement.tagName\" [class.fw-bold]=\"activeDirective?.element === dir.element\" (click)=\"scrollToHeader(dir)\" [title]=\"dir.element.nativeElement.textContent\">\n {{ dir.element.nativeElement.textContent }}\n </span>\n </li>\n </ul>\n</div>\n<div class=\"content\">\n <ng-content></ng-content>\n</div>", styles: [":host{display:block}.spy>ul{list-style-type:none;padding-left:0}.spy>ul>li:hover{color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}@media (min-width: 768px){:host{display:grid;grid-template-areas:\"content toc\";grid-template-columns:auto 200px;grid-template-rows:auto;grid-gap:inherit;gap:inherit;grid-area:main}.spy{position:sticky;top:5rem;right:0;z-index:2;height:calc(100% - 60rem);overflow-y:auto;grid-area:toc}.spy>ul{padding-left:2rem}.spy>ul>li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}.navH2{margin-left:20px}.navH3{margin-left:40px}.navH4{margin-left:60px}\n"], directives: [{ type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
1038
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyComponent, decorators: [{
1039
+ type: Component,
1040
+ args: [{ selector: 'bs-scrollspy', template: "<div class=\"spy\">\n <ul class=\"text-muted\">\n <li *ngFor=\"let dir of directives\">\n <span class=\"cursor-pointer\" [ngClass]=\"'nav' + dir.element.nativeElement.tagName\" [class.fw-bold]=\"activeDirective?.element === dir.element\" (click)=\"scrollToHeader(dir)\" [title]=\"dir.element.nativeElement.textContent\">\n {{ dir.element.nativeElement.textContent }}\n </span>\n </li>\n </ul>\n</div>\n<div class=\"content\">\n <ng-content></ng-content>\n</div>", styles: [":host{display:block}.spy>ul{list-style-type:none;padding-left:0}.spy>ul>li:hover{color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}@media (min-width: 768px){:host{display:grid;grid-template-areas:\"content toc\";grid-template-columns:auto 200px;grid-template-rows:auto;grid-gap:inherit;gap:inherit;grid-area:main}.spy{position:sticky;top:5rem;right:0;z-index:2;height:calc(100% - 60rem);overflow-y:auto;grid-area:toc}.spy>ul{padding-left:2rem}.spy>ul>li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}.navH2{margin-left:20px}.navH3{margin-left:40px}.navH4{margin-left:60px}\n"] }]
1041
+ }], ctorParameters: function () {
1042
+ return [{ type: undefined, decorators: [{
1043
+ type: Inject,
1044
+ args: [DOCUMENT]
1045
+ }] }];
1046
+ }, propDecorators: { directives: [{
1047
+ type: ContentChildren,
1048
+ args: [BsScrollspyDirective, { descendants: true }]
1049
+ }], onWindowScroll: [{
1050
+ type: HostListener,
1051
+ args: ['window:scroll', ['$event']]
1052
+ }] } });
1053
+
1054
+ class BsScrollspyModule {
1055
+ }
1056
+ BsScrollspyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1057
+ BsScrollspyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyModule, declarations: [BsScrollspyComponent,
1058
+ BsScrollspyDirective], imports: [CommonModule], exports: [BsScrollspyComponent,
1059
+ BsScrollspyDirective] });
1060
+ BsScrollspyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyModule, imports: [[
1061
+ CommonModule
1062
+ ]] });
1063
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyModule, decorators: [{
1064
+ type: NgModule,
1065
+ args: [{
1066
+ declarations: [
1067
+ BsScrollspyComponent,
1068
+ BsScrollspyDirective
1069
+ ],
1070
+ imports: [
1071
+ CommonModule
1072
+ ],
1073
+ exports: [
1074
+ BsScrollspyComponent,
1075
+ BsScrollspyDirective
1076
+ ]
1077
+ }]
1078
+ }] });
1079
+
987
1080
  /**
988
1081
  * Generated bundle index. Do not edit.
989
1082
  */
990
1083
 
991
- export { BsAccordionComponent, BsAccordionModule, BsAccordionTabComponent, BsAccordionTabHeaderComponent, BsAlertCloseComponent, BsAlertComponent, BsAlertModule, BsCalendarComponent, BsCalendarModule, BsCardComponent, BsCardHeaderComponent, BsCardModule, BsCarouselComponent, BsCarouselImageDirective, BsCarouselModule, BsListGroupComponent, BsListGroupItemComponent, BsListGroupModule, BsNavbarComponent, BsNavbarDropdownComponent, BsNavbarItemComponent, BsNavbarModule, BsNavbarNavComponent, BsTabControlComponent, BsTabControlModule, BsTabPageComponent, Color, DropdownToggleDirective, NavLinkDirective, NavbarContentDirective };
1084
+ export { BsAccordionComponent, BsAccordionModule, BsAccordionTabComponent, BsAccordionTabHeaderComponent, BsAlertCloseComponent, BsAlertComponent, BsAlertModule, BsCalendarComponent, BsCalendarModule, BsCardComponent, BsCardHeaderComponent, BsCardModule, BsCarouselComponent, BsCarouselImageDirective, BsCarouselModule, BsListGroupComponent, BsListGroupItemComponent, BsListGroupModule, BsNavbarComponent, BsNavbarDropdownComponent, BsNavbarItemComponent, BsNavbarModule, BsNavbarNavComponent, BsScrollspyComponent, BsScrollspyDirective, BsScrollspyModule, BsTabControlComponent, BsTabControlModule, BsTabPageComponent, Color, DropdownToggleDirective, NavLinkDirective, NavbarContentDirective };
992
1085
  //# sourceMappingURL=mintplayer-ng-bootstrap.mjs.map