@mintplayer/ng-bootstrap 13.1.9 → 13.1.14

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.
Files changed (48) hide show
  1. package/_bootstrap.scss +7 -0
  2. package/esm2020/lib/components/context-menu/context-menu.directive.mjs +34 -14
  3. package/esm2020/lib/components/dropdown/dropdown/dropdown.directive.mjs +10 -3
  4. package/esm2020/lib/components/dropdown/dropdown-menu/dropdown-menu.directive.mjs +3 -1
  5. package/esm2020/lib/components/file-upload/component/file-upload.component.mjs +85 -0
  6. package/esm2020/lib/components/file-upload/directive/file-upload-template.directive.mjs +18 -0
  7. package/esm2020/lib/components/file-upload/file-upload.mjs +2 -0
  8. package/esm2020/lib/components/file-upload/file-upload.module.mjs +43 -0
  9. package/esm2020/lib/components/file-upload/index.mjs +5 -0
  10. package/esm2020/lib/components/for/for.directive.mjs +32 -0
  11. package/esm2020/lib/components/for/for.module.mjs +26 -0
  12. package/esm2020/lib/components/for/index.mjs +3 -0
  13. package/esm2020/lib/components/index.mjs +3 -1
  14. package/esm2020/lib/components/navbar/navbar/navbar.component.mjs +9 -6
  15. package/esm2020/lib/components/navbar/navbar-nav/navbar-nav.component.mjs +46 -9
  16. package/esm2020/lib/components/scrollspy/component/scrollspy.component.mjs +30 -6
  17. package/esm2020/lib/components/select2/directive/item-template.directive.mjs +1 -2
  18. package/esm2020/lib/components/snackbar/component/snackbar.component.mjs +1 -1
  19. package/esm2020/lib/components/snackbar/service/snackbar.service.mjs +1 -2
  20. package/esm2020/lib/components/tooltip/directive/tooltip.directive.mjs +10 -4
  21. package/esm2020/lib/pipes/format-bytes/format-bytes.module.mjs +26 -0
  22. package/esm2020/lib/pipes/format-bytes/format-bytes.pipe.mjs +23 -0
  23. package/esm2020/lib/pipes/index.mjs +1 -1
  24. package/fesm2015/mintplayer-ng-bootstrap.mjs +519 -203
  25. package/fesm2015/mintplayer-ng-bootstrap.mjs.map +1 -1
  26. package/fesm2020/mintplayer-ng-bootstrap.mjs +519 -203
  27. package/fesm2020/mintplayer-ng-bootstrap.mjs.map +1 -1
  28. package/lib/components/context-menu/context-menu.directive.d.ts +2 -0
  29. package/lib/components/dropdown/dropdown/dropdown.directive.d.ts +1 -0
  30. package/lib/components/file-upload/component/file-upload.component.d.ts +19 -0
  31. package/lib/components/file-upload/directive/file-upload-template.directive.d.ts +8 -0
  32. package/lib/components/file-upload/file-upload.d.ts +4 -0
  33. package/lib/components/file-upload/file-upload.module.d.ts +12 -0
  34. package/lib/components/file-upload/index.d.ts +4 -0
  35. package/lib/components/for/for.directive.d.ts +7 -0
  36. package/lib/components/for/for.module.d.ts +8 -0
  37. package/lib/components/for/index.d.ts +2 -0
  38. package/lib/components/index.d.ts +2 -0
  39. package/lib/components/navbar/navbar/navbar.component.d.ts +3 -3
  40. package/lib/components/navbar/navbar-nav/navbar-nav.component.d.ts +10 -4
  41. package/lib/components/scrollspy/component/scrollspy.component.d.ts +11 -3
  42. package/lib/components/snackbar/component/snackbar.component.d.ts +1 -2
  43. package/lib/components/tooltip/directive/tooltip.directive.d.ts +1 -0
  44. package/lib/pipes/format-bytes/format-bytes.module.d.ts +8 -0
  45. package/lib/pipes/format-bytes/format-bytes.pipe.d.ts +7 -0
  46. package/package.json +1 -1
  47. package/src/assets/ic-upload-file.svg +7 -0
  48. package/src/styles/utilities/cursor.scss +14 -0
@@ -4,7 +4,7 @@ import * as i1 from '@angular/common';
4
4
  import { CommonModule, DOCUMENT } from '@angular/common';
5
5
  import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
6
6
  import { SlideUpDownAnimation, FadeInOutAnimation, CarouselSlideAnimation, ColorTransitionAnimation } from '@mintplayer/ng-animations';
7
- import { Subject, BehaviorSubject, map, takeUntil, filter, take, Observable, combineLatest } from 'rxjs';
7
+ import { Subject, BehaviorSubject, map, takeUntil, filter, take, Observable, combineLatest, debounceTime } from 'rxjs';
8
8
  import { map as map$1, takeUntil as takeUntil$1, take as take$1 } from 'rxjs/operators';
9
9
  import { TemplatePortal, ComponentPortal } from '@angular/cdk/portal';
10
10
  import * as i1$1 from '@angular/cdk/overlay';
@@ -693,33 +693,50 @@ class BsContextMenuDirective {
693
693
  this.element.nativeElement.oncontextmenu = (ev) => {
694
694
  ev.preventDefault();
695
695
  this.checkAndCloseExisting(ev);
696
+ console.log('d', element.nativeElement);
696
697
  this.overlayRef = this.overlay.create({
697
- scrollStrategy: this.overlay.scrollStrategies.noop(),
698
+ hasBackdrop: false,
699
+ scrollStrategy: this.overlay.scrollStrategies.reposition(),
698
700
  positionStrategy: this.overlay.position()
699
- .global()
700
- .left(ev.x + 'px')
701
- .bottom((window.innerHeight - ev.y) + 'px')
702
- .top(ev.y + 'px')
701
+ // .flexibleConnectedTo({ x: ev.x, y: ev.y })
702
+ .flexibleConnectedTo(this.element)
703
+ .withPositions([
704
+ // element: TopLeft - dropdown: TopLeft
705
+ { originX: "start", originY: "top", overlayX: "start", overlayY: "top", offsetX: ev.offsetX, offsetY: ev.offsetY },
706
+ // // element: TopLeft - dropdown: BottomLeft
707
+ // { originX: "start", originY: "top", overlayX: "start", overlayY: "bottom", offsetX: ev.offsetX, offsetY: ev.offsetY },
708
+ // // element: TopLeft - dropdown: TopRight
709
+ // { originX: "start", originY: "top", overlayX: "end", overlayY: "top", offsetX: ev.offsetX, offsetY: ev.offsetY },
710
+ // // element: TopLeft - dropdown: BottomRight
711
+ // { originX: "start", originY: "top", overlayX: "end", overlayY: "bottom", offsetX: ev.offsetX, offsetY: ev.offsetY },
712
+ ])
703
713
  });
704
714
  this.templatePortal = new TemplatePortal(this.templateRef, this.viewContainerRef);
705
- this.overlayRef.attach(this.templatePortal);
715
+ const view = this.overlayRef.attach(this.templatePortal);
716
+ view.rootNodes.forEach(node => node.classList.add('position-static'));
706
717
  };
707
718
  }
708
719
  clickAnywhere(ev) {
709
720
  this.checkAndCloseExisting(ev);
710
721
  }
711
- checkAndCloseExisting(ev) {
722
+ onBlur() {
723
+ this.close();
724
+ }
725
+ close() {
712
726
  if (this.overlayRef) {
713
- if (!this.overlayRef.overlayElement.contains(ev.target)) {
714
- this.overlayRef.detach();
715
- this.overlayRef.dispose();
716
- this.overlayRef = null;
717
- }
727
+ this.overlayRef.detach();
728
+ this.overlayRef.dispose();
729
+ this.overlayRef = null;
730
+ }
731
+ }
732
+ checkAndCloseExisting(ev) {
733
+ if (this.overlayRef && !this.overlayRef.overlayElement.contains(ev.target)) {
734
+ this.close();
718
735
  }
719
736
  }
720
737
  }
721
738
  BsContextMenuDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsContextMenuDirective, deps: [{ token: i1$1.Overlay }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: i0.ElementRef, host: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Directive });
722
- BsContextMenuDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsContextMenuDirective, selector: "[bsContextMenu]", host: { listeners: { "document:click": "clickAnywhere($event)" } }, ngImport: i0 });
739
+ BsContextMenuDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsContextMenuDirective, selector: "[bsContextMenu]", host: { listeners: { "document:click": "clickAnywhere($event)", "window:blur": "onBlur()" } }, ngImport: i0 });
723
740
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsContextMenuDirective, decorators: [{
724
741
  type: Directive,
725
742
  args: [{
@@ -734,6 +751,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
734
751
  }, propDecorators: { clickAnywhere: [{
735
752
  type: HostListener,
736
753
  args: ['document:click', ['$event']]
754
+ }], onBlur: [{
755
+ type: HostListener,
756
+ args: ['window:blur']
737
757
  }] } });
738
758
 
739
759
  class BsContextMenuModule {
@@ -1092,7 +1112,9 @@ class BsDropdownMenuDirective extends ClickOutsideDirective {
1092
1112
  positionStrategy: this.overlay.position()
1093
1113
  .flexibleConnectedTo(!this.dropdown.toggle ? dropdown.elementRef : this.dropdown.toggle.toggleButton)
1094
1114
  .withPositions([
1115
+ // element: BottomLeft - dropdown: TopLeft
1095
1116
  { originX: "start", originY: "bottom", overlayX: "start", overlayY: "top", offsetY: 0 },
1117
+ // element: TopLeft - dropdown: BottomLeft
1096
1118
  { originX: "start", originY: "top", overlayX: "start", overlayY: "bottom", offsetY: 0 },
1097
1119
  ]),
1098
1120
  });
@@ -1195,9 +1217,13 @@ class BsDropdownDirective {
1195
1217
  this.isOpenChange.emit(value);
1196
1218
  }
1197
1219
  }
1220
+ //#endregion
1221
+ onBlur() {
1222
+ this.isOpen = false;
1223
+ }
1198
1224
  }
1199
1225
  BsDropdownDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDropdownDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
1200
- BsDropdownDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsDropdownDirective, selector: "[bsDropdown]", inputs: { hasBackdrop: "hasBackdrop", sameWidth: "sameWidth", closeOnClickOutside: "closeOnClickOutside", isOpen: "isOpen" }, outputs: { isOpenChange: "isOpenChange" }, queries: [{ propertyName: "menu", first: true, predicate: BsDropdownMenuDirective, descendants: true }, { propertyName: "toggle", first: true, predicate: BsDropdownToggleDirective, descendants: true }], ngImport: i0 });
1226
+ BsDropdownDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsDropdownDirective, selector: "[bsDropdown]", inputs: { hasBackdrop: "hasBackdrop", sameWidth: "sameWidth", closeOnClickOutside: "closeOnClickOutside", isOpen: "isOpen" }, outputs: { isOpenChange: "isOpenChange" }, host: { listeners: { "window:blur": "onBlur()" } }, queries: [{ propertyName: "menu", first: true, predicate: BsDropdownMenuDirective, descendants: true }, { propertyName: "toggle", first: true, predicate: BsDropdownToggleDirective, descendants: true }], ngImport: i0 });
1201
1227
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDropdownDirective, decorators: [{
1202
1228
  type: Directive,
1203
1229
  args: [{
@@ -1219,6 +1245,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
1219
1245
  type: Output
1220
1246
  }], isOpen: [{
1221
1247
  type: Input
1248
+ }], onBlur: [{
1249
+ type: HostListener,
1250
+ args: ['window:blur']
1222
1251
  }] } });
1223
1252
 
1224
1253
  class BsDatepickerComponent {
@@ -1300,6 +1329,395 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
1300
1329
  }]
1301
1330
  }] });
1302
1331
 
1332
+ class BsProgressComponent {
1333
+ constructor() {
1334
+ this.progressClass = true;
1335
+ this.height = null;
1336
+ this.isIndeterminate = false;
1337
+ }
1338
+ }
1339
+ BsProgressComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1340
+ BsProgressComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsProgressComponent, selector: "bs-progress", inputs: { height: "height", isIndeterminate: "isIndeterminate" }, host: { properties: { "class.progress": "this.progressClass", "style.height.px": "this.height" } }, ngImport: i0, template: "<ng-content *ngIf=\"!isIndeterminate\"></ng-content>\n<div *ngIf=\"isIndeterminate\" class=\"progress-bar progress-bar-infinite\" role=\"progressbar\" aria-valuenow=\"infinite\"></div>", styles: ["@keyframes progress-infinite{0%{width:10%;margin-left:0%}25%{width:70%;margin-left:15%}50%{width:10%;margin-left:90%}75%{width:70%;margin-left:15%}to{width:10%;margin-left:0%}}.progress-bar-infinite{animation:progress-infinite 1.5s infinite}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1341
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressComponent, decorators: [{
1342
+ type: Component,
1343
+ args: [{ selector: 'bs-progress', template: "<ng-content *ngIf=\"!isIndeterminate\"></ng-content>\n<div *ngIf=\"isIndeterminate\" class=\"progress-bar progress-bar-infinite\" role=\"progressbar\" aria-valuenow=\"infinite\"></div>", styles: ["@keyframes progress-infinite{0%{width:10%;margin-left:0%}25%{width:70%;margin-left:15%}50%{width:10%;margin-left:90%}75%{width:70%;margin-left:15%}to{width:10%;margin-left:0%}}.progress-bar-infinite{animation:progress-infinite 1.5s infinite}\n"] }]
1344
+ }], propDecorators: { progressClass: [{
1345
+ type: HostBinding,
1346
+ args: ['class.progress']
1347
+ }], height: [{
1348
+ type: Input
1349
+ }, {
1350
+ type: HostBinding,
1351
+ args: ['style.height.px']
1352
+ }], isIndeterminate: [{
1353
+ type: Input
1354
+ }] } });
1355
+
1356
+ class BsProgressBarComponent {
1357
+ constructor() {
1358
+ this.destroyed$ = new Subject();
1359
+ this.minimum$ = new BehaviorSubject(0);
1360
+ this.maximum$ = new BehaviorSubject(100);
1361
+ this.value$ = new BehaviorSubject(50);
1362
+ this.color$ = new BehaviorSubject(Color.primary);
1363
+ this.striped = false;
1364
+ this.animated = false;
1365
+ this.progressBar = true;
1366
+ this.colorClass = 'bg-primary';
1367
+ this.widthStyle = '0';
1368
+ this.role = 'progressbar';
1369
+ this.valueNow = 50;
1370
+ this.valueMin = 0;
1371
+ this.valueMax = 100;
1372
+ this.percentage$ = combineLatest([this.minimum$, this.maximum$, this.value$])
1373
+ .pipe(map(([minimum, maximum, value]) => {
1374
+ return (value - minimum) / (maximum - minimum) * 100;
1375
+ }));
1376
+ this.width$ = this.percentage$
1377
+ .pipe(map((width) => {
1378
+ return String(width) + '%';
1379
+ }));
1380
+ this.colorClass$ = this.color$
1381
+ .pipe(map((color) => {
1382
+ const name = Color[color];
1383
+ return `bg-${name}`;
1384
+ }));
1385
+ this.colorClass$
1386
+ .pipe(takeUntil(this.destroyed$))
1387
+ .subscribe((color) => {
1388
+ this.colorClass = color;
1389
+ });
1390
+ this.width$
1391
+ .pipe(takeUntil(this.destroyed$))
1392
+ .subscribe((width) => {
1393
+ this.widthStyle = width;
1394
+ });
1395
+ this.value$
1396
+ .pipe(takeUntil(this.destroyed$))
1397
+ .subscribe((value) => {
1398
+ this.valueNow = value;
1399
+ });
1400
+ this.minimum$
1401
+ .pipe(takeUntil(this.destroyed$))
1402
+ .subscribe((value) => {
1403
+ this.valueMin = value;
1404
+ });
1405
+ this.maximum$
1406
+ .pipe(takeUntil(this.destroyed$))
1407
+ .subscribe((value) => {
1408
+ this.valueMax = value;
1409
+ });
1410
+ }
1411
+ set minimum(value) {
1412
+ this.minimum$.next(value);
1413
+ }
1414
+ set maximum(value) {
1415
+ this.maximum$.next(value);
1416
+ }
1417
+ set value(value) {
1418
+ this.value$.next(value);
1419
+ }
1420
+ set color(value) {
1421
+ this.color$.next(value);
1422
+ }
1423
+ ngOnDestroy() {
1424
+ this.destroyed$.next(true);
1425
+ }
1426
+ }
1427
+ BsProgressBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1428
+ BsProgressBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsProgressBarComponent, selector: "bs-progress-bar", inputs: { minimum: "minimum", maximum: "maximum", value: "value", color: "color", striped: "striped", animated: "animated" }, host: { properties: { "class.progress-bar-striped": "this.striped", "class.progress-bar-animated": "this.animated", "class.progress-bar": "this.progressBar", "class": "this.colorClass", "style.width": "this.widthStyle", "attr.role": "this.role", "attr.aria-valuenow": "this.valueNow", "attr.aria-valuemin": "this.valueMin", "attr.aria-valuemax": "this.valueMax" } }, ngImport: i0, template: "", styles: [""] });
1429
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressBarComponent, decorators: [{
1430
+ type: Component,
1431
+ args: [{ selector: 'bs-progress-bar', template: "", styles: [""] }]
1432
+ }], ctorParameters: function () { return []; }, propDecorators: { minimum: [{
1433
+ type: Input
1434
+ }], maximum: [{
1435
+ type: Input
1436
+ }], value: [{
1437
+ type: Input
1438
+ }], color: [{
1439
+ type: Input
1440
+ }], striped: [{
1441
+ type: Input
1442
+ }, {
1443
+ type: HostBinding,
1444
+ args: ['class.progress-bar-striped']
1445
+ }], animated: [{
1446
+ type: Input
1447
+ }, {
1448
+ type: HostBinding,
1449
+ args: ['class.progress-bar-animated']
1450
+ }], progressBar: [{
1451
+ type: HostBinding,
1452
+ args: ['class.progress-bar']
1453
+ }], colorClass: [{
1454
+ type: HostBinding,
1455
+ args: ['class']
1456
+ }], widthStyle: [{
1457
+ type: HostBinding,
1458
+ args: ['style.width']
1459
+ }], role: [{
1460
+ type: HostBinding,
1461
+ args: ['attr.role']
1462
+ }], valueNow: [{
1463
+ type: HostBinding,
1464
+ args: ['attr.aria-valuenow']
1465
+ }], valueMin: [{
1466
+ type: HostBinding,
1467
+ args: ['attr.aria-valuemin']
1468
+ }], valueMax: [{
1469
+ type: HostBinding,
1470
+ args: ['attr.aria-valuemax']
1471
+ }] } });
1472
+
1473
+ class BsForDirective {
1474
+ onMouseClick() {
1475
+ if (!('tagName' in this.bsFor)) {
1476
+ this.bsFor.focus();
1477
+ }
1478
+ else if (this.bsFor.tagName.toLowerCase() !== 'input') {
1479
+ this.bsFor.focus();
1480
+ }
1481
+ else if (this.bsFor.type.toLowerCase() === 'file') {
1482
+ this.bsFor.click();
1483
+ }
1484
+ else {
1485
+ this.bsFor.focus();
1486
+ }
1487
+ }
1488
+ }
1489
+ BsForDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsForDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1490
+ BsForDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsForDirective, selector: "[bsFor]", inputs: { bsFor: "bsFor" }, host: { listeners: { "click": "onMouseClick()" } }, ngImport: i0 });
1491
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsForDirective, decorators: [{
1492
+ type: Directive,
1493
+ args: [{
1494
+ selector: '[bsFor]'
1495
+ }]
1496
+ }], propDecorators: { bsFor: [{
1497
+ type: Input
1498
+ }], onMouseClick: [{
1499
+ type: HostListener,
1500
+ args: ['click']
1501
+ }] } });
1502
+
1503
+ class BsFormatBytesPipe {
1504
+ transform(value, decimals = 2) {
1505
+ if (value === 0) {
1506
+ return "0 Bytes";
1507
+ }
1508
+ const k = 1024;
1509
+ const dm = decimals <= 0 ? 0 : decimals;
1510
+ const sizes = ["Bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"];
1511
+ const i = Math.floor(Math.log(value) / Math.log(k));
1512
+ return parseFloat((value / Math.pow(k, i)).toFixed(dm)) + " " + sizes[i];
1513
+ }
1514
+ }
1515
+ BsFormatBytesPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFormatBytesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
1516
+ BsFormatBytesPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFormatBytesPipe, name: "bsFormatBytes" });
1517
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFormatBytesPipe, decorators: [{
1518
+ type: Pipe,
1519
+ args: [{
1520
+ name: 'bsFormatBytes'
1521
+ }]
1522
+ }] });
1523
+
1524
+ class BsFileUploadComponent {
1525
+ constructor() {
1526
+ this.dropFilesCaption = 'Drop your files here';
1527
+ this.browseFilesCaption = 'Browse for files';
1528
+ this.placeholder = 'Drop files to upload';
1529
+ this.isDraggingFile = false;
1530
+ this.files = [];
1531
+ this.filesDropped = new EventEmitter();
1532
+ }
1533
+ onChange(event) {
1534
+ console.log('event', event);
1535
+ if (!event.target)
1536
+ return;
1537
+ if (!('files' in event.target))
1538
+ return;
1539
+ if (!event.target['files'])
1540
+ return;
1541
+ const files = event.target.files;
1542
+ if (!files)
1543
+ return;
1544
+ this.processDroppedFiles(files);
1545
+ }
1546
+ onDragOver(event) {
1547
+ event.preventDefault();
1548
+ event.stopPropagation();
1549
+ if (event.dataTransfer) {
1550
+ this.isDraggingFile = true;
1551
+ event.dataTransfer.effectAllowed = "copy";
1552
+ }
1553
+ }
1554
+ onDragLeave(event) {
1555
+ event.preventDefault();
1556
+ event.stopPropagation();
1557
+ this.isDraggingFile = false;
1558
+ }
1559
+ onDrop(event) {
1560
+ event.preventDefault();
1561
+ event.stopPropagation();
1562
+ this.isDraggingFile = false;
1563
+ if (event.dataTransfer && event.dataTransfer.files) {
1564
+ this.processDroppedFiles(event.dataTransfer.files);
1565
+ }
1566
+ }
1567
+ processDroppedFiles(fileList) {
1568
+ const newFiles = [...Array(fileList.length).keys()]
1569
+ .map(i => fileList.item(i))
1570
+ .filter(f => !!f)
1571
+ .map(f => ({ file: f, progress: 0 }));
1572
+ this.files.push(...newFiles);
1573
+ this.filesDropped.emit(newFiles);
1574
+ }
1575
+ }
1576
+ BsFileUploadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFileUploadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1577
+ BsFileUploadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsFileUploadComponent, selector: "bs-file-upload", inputs: { dropFilesCaption: "dropFilesCaption", browseFilesCaption: "browseFilesCaption", placeholder: "placeholder", files: "files" }, outputs: { filesDropped: "filesDropped" }, host: { listeners: { "dragover": "onDragOver($event)", "dragleave": "onDragLeave($event)", "drop": "onDrop($event)" } }, ngImport: i0, template: "<div class=\"dropzone border position-relative p-5\" [class.dragging]=\"isDraggingFile\">\n <input type=\"file\" multiple #fileUpload (change)=\"onChange($event)\" [title]=\"placeholder\" [placeholder]=\"placeholder\" class=\"position-absolute w-100 h-100\">\n <!-- <img src=\"/assets/ic-file-upload.svg\" [alt]=\"placeholder\"> -->\n <span class=\"h3 d-block\">{{ dropFilesCaption }}</span>\n <label class=\"btn btn-primary position-relative\" [bsFor]=\"fileUpload\">{{ browseFilesCaption }}</label>\n</div>\n<ul class=\"list-group files-list\">\n <li class=\"list-group-item\" *ngFor=\"let upload of files\">\n <ng-container *ngTemplateOutlet=\"fileTemplate ?? defaultFileTemplate; context: { $implicit: upload }\"></ng-container>\n </li>\n</ul>\n\n<ng-template #defaultFileTemplate let-upload>\n <div class=\"d-flex flex-row mx-auto\">\n <div class=\"file-img\"></div>\n <div class=\"flex-grow-1 text-start px-2\">\n <span class=\"d-block text-truncate text-secondary\">{{ upload.file.name }}</span>\n <span class=\"d-block text-grey mb-0\">{{ upload.file.size | bsFormatBytes }}</span>\n <bs-progress [height]=\"4\">\n <bs-progress-bar [minimum]=\"0\" [maximum]=\"upload.file.size\" [value]=\"upload.progress\"></bs-progress-bar>\n </bs-progress>\n </div>\n </div>\n</ng-template>", styles: [".dropzone{z-index:1}.dropzone.dragging{border:4px solid #CB1535!important;background:#DC88A8;margin:-3px -3px -4px}.dropzone input{opacity:0;z-index:2;top:0;left:0}.dropzone .btn{z-index:5}.files-list{margin-top:-1px}.files-list .d-flex{max-width:400px}.text-grey{color:#999}.list-group span{margin:-5px auto}\n"], components: [{ type: BsProgressComponent, selector: "bs-progress", inputs: ["height", "isIndeterminate"] }, { type: BsProgressBarComponent, selector: "bs-progress-bar", inputs: ["minimum", "maximum", "value", "color", "striped", "animated"] }], directives: [{ type: BsForDirective, selector: "[bsFor]", inputs: ["bsFor"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "bsFormatBytes": BsFormatBytesPipe } });
1578
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFileUploadComponent, decorators: [{
1579
+ type: Component,
1580
+ args: [{ selector: 'bs-file-upload', template: "<div class=\"dropzone border position-relative p-5\" [class.dragging]=\"isDraggingFile\">\n <input type=\"file\" multiple #fileUpload (change)=\"onChange($event)\" [title]=\"placeholder\" [placeholder]=\"placeholder\" class=\"position-absolute w-100 h-100\">\n <!-- <img src=\"/assets/ic-file-upload.svg\" [alt]=\"placeholder\"> -->\n <span class=\"h3 d-block\">{{ dropFilesCaption }}</span>\n <label class=\"btn btn-primary position-relative\" [bsFor]=\"fileUpload\">{{ browseFilesCaption }}</label>\n</div>\n<ul class=\"list-group files-list\">\n <li class=\"list-group-item\" *ngFor=\"let upload of files\">\n <ng-container *ngTemplateOutlet=\"fileTemplate ?? defaultFileTemplate; context: { $implicit: upload }\"></ng-container>\n </li>\n</ul>\n\n<ng-template #defaultFileTemplate let-upload>\n <div class=\"d-flex flex-row mx-auto\">\n <div class=\"file-img\"></div>\n <div class=\"flex-grow-1 text-start px-2\">\n <span class=\"d-block text-truncate text-secondary\">{{ upload.file.name }}</span>\n <span class=\"d-block text-grey mb-0\">{{ upload.file.size | bsFormatBytes }}</span>\n <bs-progress [height]=\"4\">\n <bs-progress-bar [minimum]=\"0\" [maximum]=\"upload.file.size\" [value]=\"upload.progress\"></bs-progress-bar>\n </bs-progress>\n </div>\n </div>\n</ng-template>", styles: [".dropzone{z-index:1}.dropzone.dragging{border:4px solid #CB1535!important;background:#DC88A8;margin:-3px -3px -4px}.dropzone input{opacity:0;z-index:2;top:0;left:0}.dropzone .btn{z-index:5}.files-list{margin-top:-1px}.files-list .d-flex{max-width:400px}.text-grey{color:#999}.list-group span{margin:-5px auto}\n"] }]
1581
+ }], propDecorators: { dropFilesCaption: [{
1582
+ type: Input
1583
+ }], browseFilesCaption: [{
1584
+ type: Input
1585
+ }], placeholder: [{
1586
+ type: Input
1587
+ }], files: [{
1588
+ type: Input
1589
+ }], filesDropped: [{
1590
+ type: Output
1591
+ }], onDragOver: [{
1592
+ type: HostListener,
1593
+ args: ['dragover', ['$event']]
1594
+ }], onDragLeave: [{
1595
+ type: HostListener,
1596
+ args: ['dragleave', ['$event']]
1597
+ }], onDrop: [{
1598
+ type: HostListener,
1599
+ args: ['drop', ['$event']]
1600
+ }] } });
1601
+
1602
+ class BsFileUploadTemplateDirective {
1603
+ constructor(fileUploadComponent, templateRef) {
1604
+ fileUploadComponent.fileTemplate = templateRef;
1605
+ }
1606
+ }
1607
+ BsFileUploadTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFileUploadTemplateDirective, deps: [{ token: BsFileUploadComponent }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
1608
+ BsFileUploadTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsFileUploadTemplateDirective, selector: "[bsFileUploadTemplate]", ngImport: i0 });
1609
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFileUploadTemplateDirective, decorators: [{
1610
+ type: Directive,
1611
+ args: [{
1612
+ selector: '[bsFileUploadTemplate]'
1613
+ }]
1614
+ }], ctorParameters: function () { return [{ type: BsFileUploadComponent }, { type: i0.TemplateRef }]; } });
1615
+
1616
+ class BsForModule {
1617
+ }
1618
+ BsForModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsForModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1619
+ BsForModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsForModule, declarations: [BsForDirective], imports: [CommonModule], exports: [BsForDirective] });
1620
+ BsForModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsForModule, imports: [[
1621
+ CommonModule
1622
+ ]] });
1623
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsForModule, decorators: [{
1624
+ type: NgModule,
1625
+ args: [{
1626
+ declarations: [
1627
+ BsForDirective
1628
+ ],
1629
+ imports: [
1630
+ CommonModule
1631
+ ],
1632
+ exports: [
1633
+ BsForDirective
1634
+ ]
1635
+ }]
1636
+ }] });
1637
+
1638
+ class BsProgressBarModule {
1639
+ }
1640
+ BsProgressBarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1641
+ BsProgressBarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressBarModule, declarations: [BsProgressBarComponent,
1642
+ BsProgressComponent], imports: [CommonModule], exports: [BsProgressBarComponent,
1643
+ BsProgressComponent] });
1644
+ BsProgressBarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressBarModule, imports: [[
1645
+ CommonModule
1646
+ ]] });
1647
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressBarModule, decorators: [{
1648
+ type: NgModule,
1649
+ args: [{
1650
+ declarations: [
1651
+ BsProgressBarComponent,
1652
+ BsProgressComponent
1653
+ ],
1654
+ imports: [
1655
+ CommonModule
1656
+ ],
1657
+ exports: [
1658
+ BsProgressBarComponent,
1659
+ BsProgressComponent
1660
+ ]
1661
+ }]
1662
+ }] });
1663
+
1664
+ class BsFormatBytesModule {
1665
+ }
1666
+ BsFormatBytesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFormatBytesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1667
+ BsFormatBytesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFormatBytesModule, declarations: [BsFormatBytesPipe], imports: [CommonModule], exports: [BsFormatBytesPipe] });
1668
+ BsFormatBytesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFormatBytesModule, imports: [[
1669
+ CommonModule
1670
+ ]] });
1671
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFormatBytesModule, decorators: [{
1672
+ type: NgModule,
1673
+ args: [{
1674
+ declarations: [
1675
+ BsFormatBytesPipe
1676
+ ],
1677
+ imports: [
1678
+ CommonModule
1679
+ ],
1680
+ exports: [
1681
+ BsFormatBytesPipe
1682
+ ]
1683
+ }]
1684
+ }] });
1685
+
1686
+ class BsFileUploadModule {
1687
+ }
1688
+ BsFileUploadModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFileUploadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1689
+ BsFileUploadModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFileUploadModule, declarations: [BsFileUploadComponent,
1690
+ BsFileUploadTemplateDirective], imports: [CommonModule,
1691
+ BsForModule,
1692
+ BsFormatBytesModule,
1693
+ BsProgressBarModule], exports: [BsFileUploadComponent,
1694
+ BsFileUploadTemplateDirective] });
1695
+ BsFileUploadModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFileUploadModule, imports: [[
1696
+ CommonModule,
1697
+ BsForModule,
1698
+ BsFormatBytesModule,
1699
+ BsProgressBarModule
1700
+ ]] });
1701
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFileUploadModule, decorators: [{
1702
+ type: NgModule,
1703
+ args: [{
1704
+ declarations: [
1705
+ BsFileUploadComponent,
1706
+ BsFileUploadTemplateDirective
1707
+ ],
1708
+ imports: [
1709
+ CommonModule,
1710
+ BsForModule,
1711
+ BsFormatBytesModule,
1712
+ BsProgressBarModule
1713
+ ],
1714
+ exports: [
1715
+ BsFileUploadComponent,
1716
+ BsFileUploadTemplateDirective
1717
+ ]
1718
+ }]
1719
+ }] });
1720
+
1303
1721
  class BsListGroupItemComponent {
1304
1722
  constructor() {
1305
1723
  }
@@ -1411,44 +1829,82 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
1411
1829
 
1412
1830
  class BsNavbarComponent {
1413
1831
  constructor() {
1414
- this.isExpanded = false;
1832
+ this.isExpanded$ = new BehaviorSubject(false);
1415
1833
  }
1416
1834
  toggleExpanded() {
1417
- this.isExpanded = !this.isExpanded;
1835
+ this.isExpanded$.pipe(take(1)).subscribe((isExpanded) => {
1836
+ this.isExpanded$.next(!isExpanded);
1837
+ });
1418
1838
  }
1419
1839
  }
1420
1840
  BsNavbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsNavbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1421
- 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"] });
1841
+ 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\">\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"] });
1422
1842
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsNavbarComponent, decorators: [{
1423
1843
  type: Component,
1424
- 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"] }]
1425
- }], ctorParameters: function () { return []; }, propDecorators: { nav: [{
1844
+ 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\">\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"] }]
1845
+ }], propDecorators: { nav: [{
1426
1846
  type: ViewChild,
1427
1847
  args: ['nav']
1428
1848
  }] } });
1429
1849
 
1430
1850
  class BsNavbarNavComponent {
1431
1851
  constructor(bsNavbar) {
1432
- //#region collapse
1433
- this._collapse = true;
1852
+ this.collapse$ = new BehaviorSubject(true);
1853
+ this.windowWidth$ = new BehaviorSubject(null);
1854
+ this.isResizing$ = new BehaviorSubject(false);
1855
+ this.destroyed$ = new Subject();
1434
1856
  this.bsNavbar = bsNavbar;
1857
+ this.showNavs$ = combineLatest([this.bsNavbar.isExpanded$, this.windowWidth$])
1858
+ .pipe(filter(([isExpanded, windowWidth]) => {
1859
+ return windowWidth !== null;
1860
+ }))
1861
+ .pipe(map(([isExpanded, windowWidth]) => {
1862
+ if (windowWidth === null) {
1863
+ throw 'windowWidth should not be null here';
1864
+ }
1865
+ else if (windowWidth >= 768) {
1866
+ return true;
1867
+ }
1868
+ else if (isExpanded) {
1869
+ return true;
1870
+ }
1871
+ else {
1872
+ return false;
1873
+ }
1874
+ }));
1875
+ this.windowWidth$
1876
+ .pipe(debounceTime(300), takeUntil(this.destroyed$))
1877
+ .subscribe(() => {
1878
+ this.isResizing$.next(false);
1879
+ });
1880
+ this.onWindowResize();
1435
1881
  }
1436
- ngOnInit() {
1882
+ ngOnDestroy() {
1883
+ this.destroyed$.next(true);
1437
1884
  }
1885
+ //#region collapse
1438
1886
  set collapse(value) {
1439
- this._collapse = value;
1887
+ this.collapse$.next(value);
1440
1888
  }
1441
1889
  get collapse() {
1442
- return this._collapse;
1890
+ return this.collapse$.value;
1891
+ }
1892
+ //#endregion
1893
+ onWindowResize() {
1894
+ this.isResizing$.next(true);
1895
+ this.windowWidth$.next(window.innerWidth);
1443
1896
  }
1444
1897
  }
1445
1898
  BsNavbarNavComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsNavbarNavComponent, deps: [{ token: BsNavbarComponent }], target: i0.ɵɵFactoryTarget.Component });
1446
- BsNavbarNavComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsNavbarNavComponent, selector: "bs-navbar-nav", inputs: { collapse: "collapse" }, ngImport: i0, template: "<div class=\"navbar-collapse collapse w-100 show\" *ngIf=\"bsNavbar.isExpanded\" [@slideUpDown]>\n <ul class=\"navbar-nav mr-auto\">\n <ng-content></ng-content>\n </ul>\n</div>", styles: [":host{margin-right:auto}@media screen and (max-width: 767px){:host{width:100%!important}.navbar-collapse.collapse{overflow:hidden}}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: [SlideUpDownAnimation] });
1899
+ BsNavbarNavComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsNavbarNavComponent, selector: "bs-navbar-nav", inputs: { collapse: "collapse" }, host: { listeners: { "window:resize": "onWindowResize()" } }, ngImport: i0, template: "<div class=\"navbar-collapse w-100 show\" [class.collapse]=\"collapse$ | async\" *ngIf=\"showNavs$ | async\" [@slideUpDown] [@.disabled]=\"isResizing$ | async\">\n <ul class=\"navbar-nav mr-auto\">\n <ng-content></ng-content>\n </ul>\n</div>", styles: [":host{margin-right:auto}@media screen and (max-width: 767px){:host{width:100%!important}.navbar-collapse.collapse{overflow:hidden}}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i1.AsyncPipe }, animations: [SlideUpDownAnimation] });
1447
1900
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsNavbarNavComponent, decorators: [{
1448
1901
  type: Component,
1449
- args: [{ selector: 'bs-navbar-nav', animations: [SlideUpDownAnimation], template: "<div class=\"navbar-collapse collapse w-100 show\" *ngIf=\"bsNavbar.isExpanded\" [@slideUpDown]>\n <ul class=\"navbar-nav mr-auto\">\n <ng-content></ng-content>\n </ul>\n</div>", styles: [":host{margin-right:auto}@media screen and (max-width: 767px){:host{width:100%!important}.navbar-collapse.collapse{overflow:hidden}}\n"] }]
1902
+ args: [{ selector: 'bs-navbar-nav', animations: [SlideUpDownAnimation], template: "<div class=\"navbar-collapse w-100 show\" [class.collapse]=\"collapse$ | async\" *ngIf=\"showNavs$ | async\" [@slideUpDown] [@.disabled]=\"isResizing$ | async\">\n <ul class=\"navbar-nav mr-auto\">\n <ng-content></ng-content>\n </ul>\n</div>", styles: [":host{margin-right:auto}@media screen and (max-width: 767px){:host{width:100%!important}.navbar-collapse.collapse{overflow:hidden}}\n"] }]
1450
1903
  }], ctorParameters: function () { return [{ type: BsNavbarComponent }]; }, propDecorators: { collapse: [{
1451
1904
  type: Input
1905
+ }], onWindowResize: [{
1906
+ type: HostListener,
1907
+ args: ['window:resize']
1452
1908
  }] } });
1453
1909
 
1454
1910
  class BsNavbarItemComponent {
@@ -1674,173 +2130,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
1674
2130
  }]
1675
2131
  }] });
1676
2132
 
1677
- class BsProgressComponent {
1678
- constructor() {
1679
- this.progressClass = true;
1680
- this.height = null;
1681
- this.isIndeterminate = false;
1682
- }
1683
- }
1684
- BsProgressComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1685
- BsProgressComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsProgressComponent, selector: "bs-progress", inputs: { height: "height", isIndeterminate: "isIndeterminate" }, host: { properties: { "class.progress": "this.progressClass", "style.height.px": "this.height" } }, ngImport: i0, template: "<ng-content *ngIf=\"!isIndeterminate\"></ng-content>\n<div *ngIf=\"isIndeterminate\" class=\"progress-bar progress-bar-infinite\" role=\"progressbar\" aria-valuenow=\"infinite\"></div>", styles: ["@keyframes progress-infinite{0%{width:10%;margin-left:0%}25%{width:70%;margin-left:15%}50%{width:10%;margin-left:90%}75%{width:70%;margin-left:15%}to{width:10%;margin-left:0%}}.progress-bar-infinite{animation:progress-infinite 1.5s infinite}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1686
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressComponent, decorators: [{
1687
- type: Component,
1688
- args: [{ selector: 'bs-progress', template: "<ng-content *ngIf=\"!isIndeterminate\"></ng-content>\n<div *ngIf=\"isIndeterminate\" class=\"progress-bar progress-bar-infinite\" role=\"progressbar\" aria-valuenow=\"infinite\"></div>", styles: ["@keyframes progress-infinite{0%{width:10%;margin-left:0%}25%{width:70%;margin-left:15%}50%{width:10%;margin-left:90%}75%{width:70%;margin-left:15%}to{width:10%;margin-left:0%}}.progress-bar-infinite{animation:progress-infinite 1.5s infinite}\n"] }]
1689
- }], propDecorators: { progressClass: [{
1690
- type: HostBinding,
1691
- args: ['class.progress']
1692
- }], height: [{
1693
- type: Input
1694
- }, {
1695
- type: HostBinding,
1696
- args: ['style.height.px']
1697
- }], isIndeterminate: [{
1698
- type: Input
1699
- }] } });
1700
-
1701
- class BsProgressBarComponent {
1702
- constructor() {
1703
- this.destroyed$ = new Subject();
1704
- this.minimum$ = new BehaviorSubject(0);
1705
- this.maximum$ = new BehaviorSubject(100);
1706
- this.value$ = new BehaviorSubject(50);
1707
- this.color$ = new BehaviorSubject(Color.primary);
1708
- this.striped = false;
1709
- this.animated = false;
1710
- this.progressBar = true;
1711
- this.colorClass = 'bg-primary';
1712
- this.widthStyle = '0';
1713
- this.role = 'progressbar';
1714
- this.valueNow = 50;
1715
- this.valueMin = 0;
1716
- this.valueMax = 100;
1717
- this.percentage$ = combineLatest([this.minimum$, this.maximum$, this.value$])
1718
- .pipe(map(([minimum, maximum, value]) => {
1719
- return (value - minimum) / (maximum - minimum) * 100;
1720
- }));
1721
- this.width$ = this.percentage$
1722
- .pipe(map((width) => {
1723
- return String(width) + '%';
1724
- }));
1725
- this.colorClass$ = this.color$
1726
- .pipe(map((color) => {
1727
- const name = Color[color];
1728
- return `bg-${name}`;
1729
- }));
1730
- this.colorClass$
1731
- .pipe(takeUntil(this.destroyed$))
1732
- .subscribe((color) => {
1733
- this.colorClass = color;
1734
- });
1735
- this.width$
1736
- .pipe(takeUntil(this.destroyed$))
1737
- .subscribe((width) => {
1738
- this.widthStyle = width;
1739
- });
1740
- this.value$
1741
- .pipe(takeUntil(this.destroyed$))
1742
- .subscribe((value) => {
1743
- this.valueNow = value;
1744
- });
1745
- this.minimum$
1746
- .pipe(takeUntil(this.destroyed$))
1747
- .subscribe((value) => {
1748
- this.valueMin = value;
1749
- });
1750
- this.maximum$
1751
- .pipe(takeUntil(this.destroyed$))
1752
- .subscribe((value) => {
1753
- this.valueMax = value;
1754
- });
1755
- }
1756
- set minimum(value) {
1757
- this.minimum$.next(value);
1758
- }
1759
- set maximum(value) {
1760
- this.maximum$.next(value);
1761
- }
1762
- set value(value) {
1763
- this.value$.next(value);
1764
- }
1765
- set color(value) {
1766
- this.color$.next(value);
1767
- }
1768
- ngOnDestroy() {
1769
- this.destroyed$.next(true);
1770
- }
1771
- }
1772
- BsProgressBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1773
- BsProgressBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsProgressBarComponent, selector: "bs-progress-bar", inputs: { minimum: "minimum", maximum: "maximum", value: "value", color: "color", striped: "striped", animated: "animated" }, host: { properties: { "class.progress-bar-striped": "this.striped", "class.progress-bar-animated": "this.animated", "class.progress-bar": "this.progressBar", "class": "this.colorClass", "style.width": "this.widthStyle", "attr.role": "this.role", "attr.aria-valuenow": "this.valueNow", "attr.aria-valuemin": "this.valueMin", "attr.aria-valuemax": "this.valueMax" } }, ngImport: i0, template: "", styles: [""] });
1774
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressBarComponent, decorators: [{
1775
- type: Component,
1776
- args: [{ selector: 'bs-progress-bar', template: "", styles: [""] }]
1777
- }], ctorParameters: function () { return []; }, propDecorators: { minimum: [{
1778
- type: Input
1779
- }], maximum: [{
1780
- type: Input
1781
- }], value: [{
1782
- type: Input
1783
- }], color: [{
1784
- type: Input
1785
- }], striped: [{
1786
- type: Input
1787
- }, {
1788
- type: HostBinding,
1789
- args: ['class.progress-bar-striped']
1790
- }], animated: [{
1791
- type: Input
1792
- }, {
1793
- type: HostBinding,
1794
- args: ['class.progress-bar-animated']
1795
- }], progressBar: [{
1796
- type: HostBinding,
1797
- args: ['class.progress-bar']
1798
- }], colorClass: [{
1799
- type: HostBinding,
1800
- args: ['class']
1801
- }], widthStyle: [{
1802
- type: HostBinding,
1803
- args: ['style.width']
1804
- }], role: [{
1805
- type: HostBinding,
1806
- args: ['attr.role']
1807
- }], valueNow: [{
1808
- type: HostBinding,
1809
- args: ['attr.aria-valuenow']
1810
- }], valueMin: [{
1811
- type: HostBinding,
1812
- args: ['attr.aria-valuemin']
1813
- }], valueMax: [{
1814
- type: HostBinding,
1815
- args: ['attr.aria-valuemax']
1816
- }] } });
1817
-
1818
- class BsProgressBarModule {
1819
- }
1820
- BsProgressBarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1821
- BsProgressBarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressBarModule, declarations: [BsProgressBarComponent,
1822
- BsProgressComponent], imports: [CommonModule], exports: [BsProgressBarComponent,
1823
- BsProgressComponent] });
1824
- BsProgressBarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressBarModule, imports: [[
1825
- CommonModule
1826
- ]] });
1827
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressBarModule, decorators: [{
1828
- type: NgModule,
1829
- args: [{
1830
- declarations: [
1831
- BsProgressBarComponent,
1832
- BsProgressComponent
1833
- ],
1834
- imports: [
1835
- CommonModule
1836
- ],
1837
- exports: [
1838
- BsProgressBarComponent,
1839
- BsProgressComponent
1840
- ]
1841
- }]
1842
- }] });
1843
-
1844
2133
  class BsScrollspyDirective {
1845
2134
  constructor(element) {
1846
2135
  this.element = element;
@@ -1886,15 +2175,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
1886
2175
  } });
1887
2176
 
1888
2177
  class BsScrollspyComponent {
1889
- constructor(scrollOffsetService, document) {
2178
+ constructor(scrollOffsetService, document, zone) {
1890
2179
  this.scrollOffsetService = scrollOffsetService;
2180
+ this.zone = zone;
2181
+ this.destroyed$ = new Subject();
2182
+ this.viewInit$ = new BehaviorSubject(false);
2183
+ this.contentInit$ = new BehaviorSubject(false);
1891
2184
  this.activeDirective = null;
1892
2185
  this.doc = document;
2186
+ combineLatest([this.viewInit$, this.contentInit$])
2187
+ .pipe(filter(([viewInit, contentInit]) => viewInit && contentInit), take(1))
2188
+ .pipe(takeUntil(this.destroyed$))
2189
+ .subscribe(() => {
2190
+ // this.setActiveDirective();
2191
+ this.scrollToCurrentInSpy();
2192
+ });
1893
2193
  }
1894
2194
  ngAfterViewInit() {
1895
- this.onWindowScroll();
2195
+ this.viewInit$.next(true);
2196
+ }
2197
+ ngAfterContentInit() {
2198
+ this.contentInit$.next(true);
2199
+ }
2200
+ ngOnDestroy() {
2201
+ this.destroyed$.next(true);
1896
2202
  }
1897
2203
  onWindowScroll() {
2204
+ this.setActiveDirective();
2205
+ this.scrollToCurrentInSpy();
2206
+ }
2207
+ setActiveDirective() {
1898
2208
  var _a;
1899
2209
  const offsetY = this.scrollOffsetService.getScrollOffset()[1];
1900
2210
  const dirs = this.directives.filter((d) => d.element.nativeElement.getBoundingClientRect().y < offsetY);
@@ -1907,6 +2217,8 @@ class BsScrollspyComponent {
1907
2217
  else {
1908
2218
  this.activeDirective = dirs[dirs.length - 1];
1909
2219
  }
2220
+ }
2221
+ scrollToCurrentInSpy() {
1910
2222
  if (window && (window.innerWidth >= 768)) {
1911
2223
  if (this.activeDirective) {
1912
2224
  const index = this.directives.toArray().findIndex((v, i) => v === this.activeDirective);
@@ -1924,7 +2236,7 @@ class BsScrollspyComponent {
1924
2236
  window.scrollTo({ top: y, behavior: 'smooth' });
1925
2237
  }
1926
2238
  }
1927
- BsScrollspyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyComponent, deps: [{ token: BsScrollOffsetService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });
2239
+ BsScrollspyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyComponent, deps: [{ token: BsScrollOffsetService }, { token: DOCUMENT }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1928
2240
  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 }], viewQueries: [{ propertyName: "anchors", predicate: ["anchor"], descendants: true }], ngImport: i0, template: "<div class=\"spy\">\n <ul class=\"text-muted\">\n <li *ngFor=\"let dir of directives; let i = index\">\n <span [attr.data-index]=\"i\" class=\"cursor-pointer\" [ngClass]=\"'nav' + dir.element.nativeElement.tagName\" [class.fw-bold]=\"activeDirective?.element === dir.element\" (click)=\"scrollToHeader(dir)\" [title]=\"dir.element.nativeElement.textContent\" #anchor>\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}.spy>ul>li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@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(100vh - 7rem);overflow-y:auto;grid-area:toc}.spy>ul{padding-left:2rem}}.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"] }] });
1929
2241
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyComponent, decorators: [{
1930
2242
  type: Component,
@@ -1933,7 +2245,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
1933
2245
  return [{ type: BsScrollOffsetService }, { type: undefined, decorators: [{
1934
2246
  type: Inject,
1935
2247
  args: [DOCUMENT]
1936
- }] }];
2248
+ }] }, { type: i0.NgZone }];
1937
2249
  }, propDecorators: { directives: [{
1938
2250
  type: ContentChildren,
1939
2251
  args: [BsScrollspyDirective, { descendants: true }]
@@ -2076,7 +2388,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
2076
2388
  class BsItemTemplateDirective {
2077
2389
  constructor(select2component, templateRef) {
2078
2390
  this.select2component = select2component;
2079
- console.log('template', templateRef);
2080
2391
  this.select2component.itemTemplate = templateRef;
2081
2392
  }
2082
2393
  }
@@ -2199,7 +2510,6 @@ class BsSnackbarService {
2199
2510
  width: '100%'
2200
2511
  });
2201
2512
  const componentInstance = overlayRef.attach(portal);
2202
- // componentInstance.
2203
2513
  componentInstance.instance['instance'] = {
2204
2514
  component: componentInstance,
2205
2515
  overlay: overlayRef
@@ -2451,6 +2761,9 @@ class BsTooltipDirective {
2451
2761
  this.hideTooltip();
2452
2762
  };
2453
2763
  }
2764
+ onBlur() {
2765
+ this.hideTooltip();
2766
+ }
2454
2767
  showTooltip() {
2455
2768
  const positions = [];
2456
2769
  switch (this.bsTooltip) {
@@ -2513,7 +2826,7 @@ class BsTooltipDirective {
2513
2826
  }
2514
2827
  }
2515
2828
  BsTooltipDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsTooltipDirective, deps: [{ token: i1$1.Overlay }, { token: i0.TemplateRef }, { token: i0.ComponentFactoryResolver }, { token: i0.Injector }, { token: i0.ElementRef, host: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Directive });
2516
- BsTooltipDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsTooltipDirective, selector: "*[bsTooltip]", inputs: { bsTooltip: "bsTooltip" }, ngImport: i0 });
2829
+ BsTooltipDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsTooltipDirective, selector: "*[bsTooltip]", inputs: { bsTooltip: "bsTooltip" }, host: { listeners: { "window:blur": "onBlur()" } }, ngImport: i0 });
2517
2830
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsTooltipDirective, decorators: [{
2518
2831
  type: Directive,
2519
2832
  args: [{
@@ -2525,7 +2838,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
2525
2838
  }, {
2526
2839
  type: SkipSelf
2527
2840
  }] }];
2528
- }, propDecorators: { bsTooltip: [{
2841
+ }, propDecorators: { onBlur: [{
2842
+ type: HostListener,
2843
+ args: ['window:blur']
2844
+ }], bsTooltip: [{
2529
2845
  type: Input
2530
2846
  }] } });
2531
2847
 
@@ -2716,5 +3032,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
2716
3032
  * Generated bundle index. Do not edit.
2717
3033
  */
2718
3034
 
2719
- export { BsAccordionComponent, BsAccordionModule, BsAccordionTabComponent, BsAccordionTabHeaderComponent, BsAlertCloseComponent, BsAlertComponent, BsAlertModule, BsCalendarComponent, BsCalendarModule, BsCardComponent, BsCardHeaderComponent, BsCardModule, BsCarouselComponent, BsCarouselImageDirective, BsCarouselModule, BsContextMenuDirective, BsContextMenuModule, BsDatatableColumnDirective, BsDatatableComponent, BsDatatableModule, BsDatepickerComponent, BsDatepickerModule, BsDropdownDirective, BsDropdownMenuDirective, BsDropdownModule, BsDropdownToggleDirective, BsFontColorPipe, BsFontColorPipeModule, BsItemTemplateDirective, BsListGroupComponent, BsListGroupItemComponent, BsListGroupModule, BsMultiselectComponent, BsMultiselectModule, BsNavbarComponent, BsNavbarDropdownComponent, BsNavbarItemComponent, BsNavbarModule, BsNavbarNavComponent, BsPaginationComponent, BsPaginationModule, BsProgressBarComponent, BsProgressBarModule, BsProgressComponent, BsRowTemplateDirective, BsScrollspyComponent, BsScrollspyDirective, BsScrollspyModule, BsSelect2Component, BsSelect2Module, BsSnackbarCloseDirective, BsSnackbarComponent, BsSnackbarModule, BsSnackbarService, BsTabControlComponent, BsTabControlModule, BsTabPageComponent, BsToggleButtonComponent, BsToggleButtonModule, BsTooltipDirective, BsTooltipModule, BsTypeaheadComponent, BsTypeaheadModule, Color, DatatableSettings, DropdownToggleDirective, NavLinkDirective, NavbarContentDirective, Position };
3035
+ export { BsAccordionComponent, BsAccordionModule, BsAccordionTabComponent, BsAccordionTabHeaderComponent, BsAlertCloseComponent, BsAlertComponent, BsAlertModule, BsCalendarComponent, BsCalendarModule, BsCardComponent, BsCardHeaderComponent, BsCardModule, BsCarouselComponent, BsCarouselImageDirective, BsCarouselModule, BsContextMenuDirective, BsContextMenuModule, BsDatatableColumnDirective, BsDatatableComponent, BsDatatableModule, BsDatepickerComponent, BsDatepickerModule, BsDropdownDirective, BsDropdownMenuDirective, BsDropdownModule, BsDropdownToggleDirective, BsFileUploadComponent, BsFileUploadModule, BsFileUploadTemplateDirective, BsFontColorPipe, BsFontColorPipeModule, BsForDirective, BsForModule, BsItemTemplateDirective, BsListGroupComponent, BsListGroupItemComponent, BsListGroupModule, BsMultiselectComponent, BsMultiselectModule, BsNavbarComponent, BsNavbarDropdownComponent, BsNavbarItemComponent, BsNavbarModule, BsNavbarNavComponent, BsPaginationComponent, BsPaginationModule, BsProgressBarComponent, BsProgressBarModule, BsProgressComponent, BsRowTemplateDirective, BsScrollspyComponent, BsScrollspyDirective, BsScrollspyModule, BsSelect2Component, BsSelect2Module, BsSnackbarCloseDirective, BsSnackbarComponent, BsSnackbarModule, BsSnackbarService, BsTabControlComponent, BsTabControlModule, BsTabPageComponent, BsToggleButtonComponent, BsToggleButtonModule, BsTooltipDirective, BsTooltipModule, BsTypeaheadComponent, BsTypeaheadModule, Color, DatatableSettings, DropdownToggleDirective, NavLinkDirective, NavbarContentDirective, Position };
2720
3036
  //# sourceMappingURL=mintplayer-ng-bootstrap.mjs.map