@tetacom/ng-components 1.1.19 → 1.1.20

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,14 +1,11 @@
1
- import { OnInit } from '@angular/core';
2
1
  import { TetaSize } from '../../../common/enum/teta-size.enum';
3
2
  import * as i0 from "@angular/core";
4
- export declare class IconComponent implements OnInit {
3
+ export declare class IconComponent {
5
4
  name: string;
6
5
  size: TetaSize;
7
6
  palette: string;
8
7
  class: any;
9
8
  private get getClass();
10
- constructor();
11
- ngOnInit(): void;
12
9
  getName(): string;
13
10
  static ɵfac: i0.ɵɵFactoryDeclaration<IconComponent, never>;
14
11
  static ɵcmp: i0.ɵɵComponentDeclaration<IconComponent, "teta-icon", never, { "name": { "alias": "name"; "required": false; }; "size": { "alias": "size"; "required": false; }; "palette": { "alias": "palette"; "required": false; }; "class": { "alias": "class"; "required": false; }; }, {}, never, never, false, never>;
@@ -1,11 +1,7 @@
1
- import { ElementRef, EventEmitter, Injector, NgZone, OnDestroy, OnInit } from '@angular/core';
2
- import { Observable } from "rxjs";
1
+ import { ChangeDetectorRef, EventEmitter, OnDestroy, OnInit } from '@angular/core';
3
2
  import * as i0 from "@angular/core";
4
3
  export declare class ScrollableComponent implements OnInit, OnDestroy {
5
- private _elementRef;
6
- private _injector;
7
- private _ngZone;
8
- private _animationFrame;
4
+ private _cdr;
9
5
  private _scrollDirective;
10
6
  private _scrollableWrapper;
11
7
  private _scrollbarVertical;
@@ -14,15 +10,17 @@ export declare class ScrollableComponent implements OnInit, OnDestroy {
14
10
  showScrollbars: boolean;
15
11
  contentClass: string | string[];
16
12
  scroll: EventEmitter<Event>;
17
- scrollSize: Observable<{
13
+ scrollSize: {
18
14
  clientHeight: number;
19
15
  clientWidth: number;
20
16
  scrollHeight: number;
21
17
  scrollWidth: number;
22
- }>;
18
+ };
23
19
  private _container;
24
20
  private _alive;
25
- constructor(_elementRef: ElementRef, _injector: Injector, _ngZone: NgZone, _animationFrame: Observable<number>);
21
+ private _observer;
22
+ constructor(_cdr: ChangeDetectorRef);
23
+ private _observe;
26
24
  scrollVertical(event: any): void;
27
25
  scrollHorizontal(event: any): void;
28
26
  ngOnInit(): void;
@@ -13,8 +13,6 @@ export class IconComponent {
13
13
  }
14
14
  return result.join(' ');
15
15
  }
16
- constructor() { }
17
- ngOnInit() { }
18
16
  getName() {
19
17
  return `#${this.name}`;
20
18
  }
@@ -24,7 +22,7 @@ export class IconComponent {
24
22
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: IconComponent, decorators: [{
25
23
  type: Component,
26
24
  args: [{ selector: 'teta-icon', changeDetection: ChangeDetectionStrategy.OnPush, template: "<svg class=\"icon__image\">\n <use [attr.xlink:href]=\"getName()\"></use>\n</svg>\n" }]
27
- }], ctorParameters: function () { return []; }, propDecorators: { name: [{
25
+ }], propDecorators: { name: [{
28
26
  type: Input
29
27
  }], size: [{
30
28
  type: Input
@@ -36,4 +34,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImpor
36
34
  type: HostBinding,
37
35
  args: ['class']
38
36
  }] } });
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L2ljb24vaWNvbi9pY29uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnQvaWNvbi9pY29uL2ljb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsV0FBVyxFQUNYLEtBQUssR0FFTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUNBQXFDLENBQUM7O0FBUS9ELE1BQU0sT0FBTyxhQUFhO0lBQ2YsSUFBSSxDQUFTO0lBQ2IsSUFBSSxHQUFhLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDNUIsT0FBTyxDQUFTO0lBRWhCLEtBQUssQ0FBQztJQUVmLElBQ1ksUUFBUTtRQUNsQixNQUFNLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDcEMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztTQUNyQztRQUNELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsZ0JBQWUsQ0FBQztJQUVoQixRQUFRLEtBQVUsQ0FBQztJQUVuQixPQUFPO1FBQ0wsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6QixDQUFDO3VHQXRCVSxhQUFhOzJGQUFiLGFBQWEsaUxDZjFCLHNGQUdBOzsyRkRZYSxhQUFhO2tCQU56QixTQUFTOytCQUNFLFdBQVcsbUJBR0osdUJBQXVCLENBQUMsTUFBTTswRUFHdEMsSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUdNLFFBQVE7c0JBRG5CLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRldGFTaXplIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2VudW0vdGV0YS1zaXplLmVudW0nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0ZXRhLWljb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vaWNvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ljb24uY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEljb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBuYW1lOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNpemU6IFRldGFTaXplID0gVGV0YVNpemUuTTtcbiAgQElucHV0KCkgcGFsZXR0ZTogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIGNsYXNzO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBwcml2YXRlIGdldCBnZXRDbGFzcygpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJlc3VsdCA9IFt0aGlzLmNsYXNzLCAnaWNvbiddO1xuICAgIGlmICh0aGlzLnBhbGV0dGUpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGBpY29uLSR7dGhpcy5wYWxldHRlfWApO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0LmpvaW4oJyAnKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHt9XG5cbiAgZ2V0TmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgIyR7dGhpcy5uYW1lfWA7XG4gIH1cbn1cbiIsIjxzdmcgY2xhc3M9XCJpY29uX19pbWFnZVwiPlxuICA8dXNlIFthdHRyLnhsaW5rOmhyZWZdPVwiZ2V0TmFtZSgpXCI+PC91c2U+XG48L3N2Zz5cbiJdfQ==
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L2ljb24vaWNvbi9pY29uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnQvaWNvbi9pY29uL2ljb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsV0FBVyxFQUNYLEtBQUssR0FDTixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUNBQXFDLENBQUM7O0FBUS9ELE1BQU0sT0FBTyxhQUFhO0lBQ2YsSUFBSSxDQUFTO0lBQ2IsSUFBSSxHQUFhLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDNUIsT0FBTyxDQUFTO0lBRWhCLEtBQUssQ0FBQztJQUVmLElBQ1ksUUFBUTtRQUNsQixNQUFNLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDcEMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztTQUNyQztRQUNELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQzt1R0FsQlUsYUFBYTsyRkFBYixhQUFhLGlMQ2YxQixzRkFHQTs7MkZEWWEsYUFBYTtrQkFOekIsU0FBUzsrQkFDRSxXQUFXLG1CQUdKLHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFHTSxRQUFRO3NCQURuQixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBUZXRhU2l6ZSB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9lbnVtL3RldGEtc2l6ZS5lbnVtJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGV0YS1pY29uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ljb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pY29uLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBJY29uQ29tcG9uZW50IHtcbiAgQElucHV0KCkgbmFtZTogc3RyaW5nO1xuICBASW5wdXQoKSBzaXplOiBUZXRhU2l6ZSA9IFRldGFTaXplLk07XG4gIEBJbnB1dCgpIHBhbGV0dGU6IHN0cmluZztcblxuICBASW5wdXQoKSBjbGFzcztcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgcHJpdmF0ZSBnZXQgZ2V0Q2xhc3MoKTogc3RyaW5nIHtcbiAgICBjb25zdCByZXN1bHQgPSBbdGhpcy5jbGFzcywgJ2ljb24nXTtcbiAgICBpZiAodGhpcy5wYWxldHRlKSB7XG4gICAgICByZXN1bHQucHVzaChgaWNvbi0ke3RoaXMucGFsZXR0ZX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdC5qb2luKCcgJyk7XG4gIH1cblxuICBnZXROYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAjJHt0aGlzLm5hbWV9YDtcbiAgfVxufVxuIiwiPHN2ZyBjbGFzcz1cImljb25fX2ltYWdlXCI+XG4gIDx1c2UgW2F0dHIueGxpbms6aHJlZl09XCJnZXROYW1lKClcIj48L3VzZT5cbjwvc3ZnPlxuIl19
@@ -1,18 +1,11 @@
1
- import { ChangeDetectionStrategy, Component, ContentChild, ElementRef, EventEmitter, HostBinding, Inject, Input, Output, ViewChild, } from '@angular/core';
2
- import { ScrollableDirective } from "../scrollable.directive";
3
- import { ANIMATION_FRAME } from "../../../observable/animation-frame";
4
- import { fromEvent, tap } from "rxjs";
5
- import { map, takeWhile, throttleTime } from "rxjs/operators";
6
- import { tetaZoneFull } from "../../../observable/zoneObservable";
1
+ import { ChangeDetectionStrategy, Component, ContentChild, ElementRef, EventEmitter, HostBinding, Input, Output, ViewChild, } from '@angular/core';
2
+ import { fromEvent, tap } from 'rxjs';
3
+ import { takeWhile } from 'rxjs/operators';
4
+ import { ScrollableDirective } from '../scrollable.directive';
7
5
  import * as i0 from "@angular/core";
8
6
  import * as i1 from "@angular/common";
9
- import * as i2 from "../../let/let.directive";
10
- import * as i3 from "rxjs";
11
7
  export class ScrollableComponent {
12
- _elementRef;
13
- _injector;
14
- _ngZone;
15
- _animationFrame;
8
+ _cdr;
16
9
  _scrollDirective;
17
10
  _scrollableWrapper;
18
11
  _scrollbarVertical;
@@ -24,29 +17,25 @@ export class ScrollableComponent {
24
17
  scrollSize;
25
18
  _container;
26
19
  _alive = true;
27
- constructor(_elementRef, _injector, _ngZone, _animationFrame) {
28
- this._elementRef = _elementRef;
29
- this._injector = _injector;
30
- this._ngZone = _ngZone;
31
- this._animationFrame = _animationFrame;
32
- this.scrollSize = this._animationFrame.pipe(throttleTime(300), map(() => ({
20
+ _observer;
21
+ constructor(_cdr) {
22
+ this._cdr = _cdr;
23
+ this._observer = new ResizeObserver(this._observe);
24
+ }
25
+ _observe = () => {
26
+ this.scrollSize = {
33
27
  scrollHeight: this._container.nativeElement.scrollHeight,
34
28
  scrollWidth: this._container.nativeElement.scrollWidth,
35
29
  clientHeight: this._container.nativeElement.clientHeight,
36
30
  clientWidth: this._container.nativeElement.clientWidth,
37
- })), tetaZoneFull(this._ngZone));
38
- }
31
+ };
32
+ this._cdr.detectChanges();
33
+ };
39
34
  scrollVertical(event) {
40
35
  this._container.nativeElement.scrollTop = event.target.scrollTop;
41
- // event.scrollLeft = this._container.nativeElement.scrollLeft;
42
- // this._elementRef.nativeElement.dispatchEvent(event);
43
- // this.scroll.emit(event);
44
36
  }
45
37
  scrollHorizontal(event) {
46
38
  this._container.nativeElement.scrollLeft = event.target.scrollLeft;
47
- // event.scrollTop = this._container.nativeElement.scrollTop;
48
- // this._elementRef.nativeElement.dispatchEvent(event);
49
- // this.scroll.emit(event);
50
39
  }
51
40
  ngOnInit() {
52
41
  this._container = this._scrollableWrapper;
@@ -55,44 +44,46 @@ export class ScrollableComponent {
55
44
  }
56
45
  fromEvent(this._container.nativeElement, 'scroll')
57
46
  .pipe(takeWhile(() => this._alive), tap((event) => {
58
- this._scrollbarHorizontal.nativeElement.scrollLeft = event.target.scrollLeft;
59
- this._scrollbarVertical.nativeElement.scrollTop = event.target.scrollTop;
60
- // this._elementRef.nativeElement.dispatchEvent(event);
47
+ this._scrollbarHorizontal.nativeElement.scrollLeft =
48
+ event.target.scrollLeft;
49
+ this._scrollbarVertical.nativeElement.scrollTop =
50
+ event.target.scrollTop;
61
51
  this.scroll.emit(event);
62
- })).subscribe();
52
+ }))
53
+ .subscribe();
54
+ this._observer.observe(this._container.nativeElement);
63
55
  }
64
56
  ngOnDestroy() {
65
57
  this._alive = false;
58
+ this._observer.unobserve(this._container.nativeElement);
59
+ this._observer.disconnect();
66
60
  }
67
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: ScrollableComponent, deps: [{ token: i0.ElementRef }, { token: i0.Injector }, { token: i0.NgZone }, { token: ANIMATION_FRAME }], target: i0.ɵɵFactoryTarget.Component });
68
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: ScrollableComponent, selector: "teta-scrollable", inputs: { direction: "direction", showScrollbars: "showScrollbars", contentClass: "contentClass" }, outputs: { scroll: "scroll" }, host: { properties: { "class.show-scrollbars": "this.showScrollbars" } }, queries: [{ propertyName: "_scrollDirective", first: true, predicate: ScrollableDirective, descendants: true, read: ElementRef, static: true }], viewQueries: [{ propertyName: "_scrollableWrapper", first: true, predicate: ["scrollableWrapper"], descendants: true, static: true }, { propertyName: "_scrollbarVertical", first: true, predicate: ["scrollbarVertical"], descendants: true, static: true }, { propertyName: "_scrollbarHorizontal", first: true, predicate: ["scrollbarHorizontal"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"scroll-controls\" *tetaLet=\"scrollSize | async as size\">\n <div #scrollbarVertical\n [class.display-none]=\"size?.scrollHeight <= size?.clientHeight\"\n class=\"scroll-scrollbar scroll-scrollbar-vertical\"\n (scroll)=\"scrollVertical($event)\">\n <div [style.height.px]=\"size?.scrollHeight\" style=\"width: 1px;\"></div>\n </div>\n <div #scrollbarHorizontal\n [class.display-none]=\"size?.scrollWidth <= size?.clientWidth\"\n class=\"scroll-scrollbar scroll-scrollbar-horizontal\"\n (scroll)=\"scrollHorizontal($event)\">\n <div [style.width.px]=\"size?.scrollWidth\" style=\"height: 1px;\"></div>\n </div>\n</div>\n\n\n<!--<div #scrollableWrapper class=\"scroll-content-wrapper\">-->\n<!-- <div class=\"scroll-content\"-->\n<!-- [class.column]=\"direction === 'column'\">-->\n<!-- &lt;!&ndash; <div class=\"scroll-content\">&ndash;&gt;-->\n<!-- <ng-content></ng-content>-->\n<!-- </div>-->\n<!--</div>-->\n<div #scrollableWrapper class=\"scroll-content-wrapper\"\n [ngClass]=\"contentClass\"\n [class.column]=\"direction === 'column'\">\n <ng-content></ng-content>\n</div>\n", styles: [":host{overflow:hidden;position:relative;z-index:0;display:flex}:host:hover .scroll-controls{opacity:1}:host.show-scrollbars .scroll-controls{opacity:1}:host::-webkit-scrollbar{width:0;height:0}.scroll-content-wrapper{display:flex;overflow:auto;flex-grow:1}.scroll-content-wrapper::-webkit-scrollbar{width:0;height:0}.scroll-content{position:relative;z-index:0;flex:1;display:flex;height:auto;min-width:0}.scroll-controls{position:absolute;inset:0;z-index:1;pointer-events:none;opacity:0;transition:opacity .5s linear}.scroll-scrollbar{position:absolute;overflow:auto;pointer-events:auto}.scroll-scrollbar-vertical{right:0;top:0;bottom:12px;width:12px}.scroll-scrollbar-horizontal{right:12px;left:0;bottom:0;height:12px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.LetDirective, selector: "[tetaLet]", inputs: ["tetaLet"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
61
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: ScrollableComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
62
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: ScrollableComponent, selector: "teta-scrollable", inputs: { direction: "direction", showScrollbars: "showScrollbars", contentClass: "contentClass" }, outputs: { scroll: "scroll" }, host: { properties: { "class.show-scrollbars": "this.showScrollbars" } }, queries: [{ propertyName: "_scrollDirective", first: true, predicate: ScrollableDirective, descendants: true, read: ElementRef, static: true }], viewQueries: [{ propertyName: "_scrollableWrapper", first: true, predicate: ["scrollableWrapper"], descendants: true, static: true }, { propertyName: "_scrollbarVertical", first: true, predicate: ["scrollbarVertical"], descendants: true, static: true }, { propertyName: "_scrollbarHorizontal", first: true, predicate: ["scrollbarHorizontal"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"scroll-controls\">\n <div #scrollbarVertical\n [class.display-none]=\"scrollSize?.scrollHeight <= scrollSize?.clientHeight\"\n class=\"scroll-scrollbar scroll-scrollbar-vertical\"\n (scroll)=\"scrollVertical($event)\">\n <div [style.height.px]=\"scrollSize?.scrollHeight\" style=\"width: 1px;\"></div>\n </div>\n <div #scrollbarHorizontal\n [class.display-none]=\"scrollSize?.scrollWidth <= scrollSize?.clientWidth\"\n class=\"scroll-scrollbar scroll-scrollbar-horizontal\"\n (scroll)=\"scrollHorizontal($event)\">\n <div [style.width.px]=\"scrollSize?.scrollWidth\" style=\"height: 1px;\"></div>\n </div>\n</div>\n\n\n<!--<div #scrollableWrapper class=\"scroll-content-wrapper\">-->\n<!-- <div class=\"scroll-content\"-->\n<!-- [class.column]=\"direction === 'column'\">-->\n<!-- &lt;!&ndash; <div class=\"scroll-content\">&ndash;&gt;-->\n<!-- <ng-content></ng-content>-->\n<!-- </div>-->\n<!--</div>-->\n<div #scrollableWrapper class=\"scroll-content-wrapper\"\n [ngClass]=\"contentClass\"\n [class.column]=\"direction === 'column'\">\n <ng-content></ng-content>\n</div>\n", styles: [":host{overflow:hidden;position:relative;z-index:0;display:flex}:host:hover .scroll-controls{opacity:1}:host.show-scrollbars .scroll-controls{opacity:1}:host::-webkit-scrollbar{width:0;height:0}.scroll-content-wrapper{display:flex;overflow:auto;flex-grow:1}.scroll-content-wrapper::-webkit-scrollbar{width:0;height:0}.scroll-content{position:relative;z-index:0;flex:1;display:flex;height:auto;min-width:0}.scroll-controls{position:absolute;inset:0;z-index:1;pointer-events:none;opacity:0;transition:opacity .5s linear}.scroll-scrollbar{position:absolute;overflow:auto;pointer-events:auto}.scroll-scrollbar-vertical{right:0;top:0;bottom:12px;width:12px}.scroll-scrollbar-horizontal{right:12px;left:0;bottom:0;height:12px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
69
63
  }
70
64
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: ScrollableComponent, decorators: [{
71
65
  type: Component,
72
- args: [{ selector: 'teta-scrollable', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"scroll-controls\" *tetaLet=\"scrollSize | async as size\">\n <div #scrollbarVertical\n [class.display-none]=\"size?.scrollHeight <= size?.clientHeight\"\n class=\"scroll-scrollbar scroll-scrollbar-vertical\"\n (scroll)=\"scrollVertical($event)\">\n <div [style.height.px]=\"size?.scrollHeight\" style=\"width: 1px;\"></div>\n </div>\n <div #scrollbarHorizontal\n [class.display-none]=\"size?.scrollWidth <= size?.clientWidth\"\n class=\"scroll-scrollbar scroll-scrollbar-horizontal\"\n (scroll)=\"scrollHorizontal($event)\">\n <div [style.width.px]=\"size?.scrollWidth\" style=\"height: 1px;\"></div>\n </div>\n</div>\n\n\n<!--<div #scrollableWrapper class=\"scroll-content-wrapper\">-->\n<!-- <div class=\"scroll-content\"-->\n<!-- [class.column]=\"direction === 'column'\">-->\n<!-- &lt;!&ndash; <div class=\"scroll-content\">&ndash;&gt;-->\n<!-- <ng-content></ng-content>-->\n<!-- </div>-->\n<!--</div>-->\n<div #scrollableWrapper class=\"scroll-content-wrapper\"\n [ngClass]=\"contentClass\"\n [class.column]=\"direction === 'column'\">\n <ng-content></ng-content>\n</div>\n", styles: [":host{overflow:hidden;position:relative;z-index:0;display:flex}:host:hover .scroll-controls{opacity:1}:host.show-scrollbars .scroll-controls{opacity:1}:host::-webkit-scrollbar{width:0;height:0}.scroll-content-wrapper{display:flex;overflow:auto;flex-grow:1}.scroll-content-wrapper::-webkit-scrollbar{width:0;height:0}.scroll-content{position:relative;z-index:0;flex:1;display:flex;height:auto;min-width:0}.scroll-controls{position:absolute;inset:0;z-index:1;pointer-events:none;opacity:0;transition:opacity .5s linear}.scroll-scrollbar{position:absolute;overflow:auto;pointer-events:auto}.scroll-scrollbar-vertical{right:0;top:0;bottom:12px;width:12px}.scroll-scrollbar-horizontal{right:12px;left:0;bottom:0;height:12px}\n"] }]
73
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Injector }, { type: i0.NgZone }, { type: i3.Observable, decorators: [{
74
- type: Inject,
75
- args: [ANIMATION_FRAME]
76
- }] }]; }, propDecorators: { _scrollDirective: [{
66
+ args: [{ selector: 'teta-scrollable', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"scroll-controls\">\n <div #scrollbarVertical\n [class.display-none]=\"scrollSize?.scrollHeight <= scrollSize?.clientHeight\"\n class=\"scroll-scrollbar scroll-scrollbar-vertical\"\n (scroll)=\"scrollVertical($event)\">\n <div [style.height.px]=\"scrollSize?.scrollHeight\" style=\"width: 1px;\"></div>\n </div>\n <div #scrollbarHorizontal\n [class.display-none]=\"scrollSize?.scrollWidth <= scrollSize?.clientWidth\"\n class=\"scroll-scrollbar scroll-scrollbar-horizontal\"\n (scroll)=\"scrollHorizontal($event)\">\n <div [style.width.px]=\"scrollSize?.scrollWidth\" style=\"height: 1px;\"></div>\n </div>\n</div>\n\n\n<!--<div #scrollableWrapper class=\"scroll-content-wrapper\">-->\n<!-- <div class=\"scroll-content\"-->\n<!-- [class.column]=\"direction === 'column'\">-->\n<!-- &lt;!&ndash; <div class=\"scroll-content\">&ndash;&gt;-->\n<!-- <ng-content></ng-content>-->\n<!-- </div>-->\n<!--</div>-->\n<div #scrollableWrapper class=\"scroll-content-wrapper\"\n [ngClass]=\"contentClass\"\n [class.column]=\"direction === 'column'\">\n <ng-content></ng-content>\n</div>\n", styles: [":host{overflow:hidden;position:relative;z-index:0;display:flex}:host:hover .scroll-controls{opacity:1}:host.show-scrollbars .scroll-controls{opacity:1}:host::-webkit-scrollbar{width:0;height:0}.scroll-content-wrapper{display:flex;overflow:auto;flex-grow:1}.scroll-content-wrapper::-webkit-scrollbar{width:0;height:0}.scroll-content{position:relative;z-index:0;flex:1;display:flex;height:auto;min-width:0}.scroll-controls{position:absolute;inset:0;z-index:1;pointer-events:none;opacity:0;transition:opacity .5s linear}.scroll-scrollbar{position:absolute;overflow:auto;pointer-events:auto}.scroll-scrollbar-vertical{right:0;top:0;bottom:12px;width:12px}.scroll-scrollbar-horizontal{right:12px;left:0;bottom:0;height:12px}\n"] }]
67
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { _scrollDirective: [{
77
68
  type: ContentChild,
78
69
  args: [ScrollableDirective, {
79
70
  static: true,
80
- read: ElementRef
71
+ read: ElementRef,
81
72
  }]
82
73
  }], _scrollableWrapper: [{
83
74
  type: ViewChild,
84
75
  args: ['scrollableWrapper', {
85
- static: true
76
+ static: true,
86
77
  }]
87
78
  }], _scrollbarVertical: [{
88
79
  type: ViewChild,
89
80
  args: ['scrollbarVertical', {
90
- static: true
81
+ static: true,
91
82
  }]
92
83
  }], _scrollbarHorizontal: [{
93
84
  type: ViewChild,
94
85
  args: ['scrollbarHorizontal', {
95
- static: true
86
+ static: true,
96
87
  }]
97
88
  }], direction: [{
98
89
  type: Input
@@ -106,4 +97,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImpor
106
97
  }], scroll: [{
107
98
  type: Output
108
99
  }] } });
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsYWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZGlyZWN0aXZlL3Njcm9sbGFibGUvc2Nyb2xsYWJsZS9zY3JvbGxhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9kaXJlY3RpdmUvc2Nyb2xsYWJsZS9zY3JvbGxhYmxlL3Njcm9sbGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQUUsWUFBWSxFQUN2QixVQUFVLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQ25DLEtBQUssRUFDUCxNQUFNLEVBQUUsU0FBUyxHQUMxQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFDcEUsT0FBTyxFQUFDLFNBQVMsRUFBYyxHQUFHLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLG9DQUFvQyxDQUFDOzs7OztBQVFoRSxNQUFNLE9BQU8sbUJBQW1CO0lBcUNWO0lBQ0E7SUFDQTtJQUN5QjtJQXBDbEMsZ0JBQWdCLENBQWE7SUFJN0Isa0JBQWtCLENBQVk7SUFJOUIsa0JBQWtCLENBQVk7SUFJOUIsb0JBQW9CLENBQWE7SUFFbkMsU0FBUyxHQUFxQixLQUFLLENBQUM7SUFHN0MsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUVkLFlBQVksQ0FBb0I7SUFFL0IsTUFBTSxHQUFHLElBQUksWUFBWSxFQUFTLENBQUM7SUFFN0MsVUFBVSxDQUtQO0lBRUssVUFBVSxDQUFhO0lBQ3ZCLE1B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TSxFQUFFLElBQUk7cUJBQ2I7Z0JBSVUsa0JBQWtCO3NCQUY1QixTQUFTO3VCQUFDLG1CQUFtQixFQUFFO3dCQUM5QixNQUFNLEVBQUUsSUFBSTtxQkFDYjtnQkFJVSxvQkFBb0I7c0JBRjlCLFNBQVM7dUJBQUMscUJBQXFCLEVBQUU7d0JBQ2hDLE1BQU0sRUFBRSxJQUFJO3FCQUNiO2dCQUVRLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR04sY0FBYztzQkFGYixLQUFLOztzQkFDTCxXQUFXO3VCQUFDLHVCQUF1QjtnQkFHM0IsWUFBWTtzQkFBcEIsS0FBSztnQkFFSSxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsXG4gIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIEluamVjdCxcbiAgSW5qZWN0b3IsIElucHV0LCBOZ1pvbmUsIE9uRGVzdHJveSxcbiAgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1Njcm9sbGFibGVEaXJlY3RpdmV9IGZyb20gXCIuLi9zY3JvbGxhYmxlLmRpcmVjdGl2ZVwiO1xuaW1wb3J0IHtBTklNQVRJT05fRlJBTUV9IGZyb20gXCIuLi8uLi8uLi9vYnNlcnZhYmxlL2FuaW1hdGlvbi1mcmFtZVwiO1xuaW1wb3J0IHtmcm9tRXZlbnQsIE9ic2VydmFibGUsIHRhcH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7bWFwLCB0YWtlV2hpbGUsIHRocm90dGxlVGltZX0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQge3RldGFab25lRnVsbH0gZnJvbSBcIi4uLy4uLy4uL29ic2VydmFibGUvem9uZU9ic2VydmFibGVcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGV0YS1zY3JvbGxhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Njcm9sbGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zY3JvbGxhYmxlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFNjcm9sbGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBDb250ZW50Q2hpbGQoU2Nyb2xsYWJsZURpcmVjdGl2ZSwge1xuICAgIHN0YXRpYzogdHJ1ZSxcbiAgICByZWFkOiBFbGVtZW50UmVmXG4gIH0pIHByaXZhdGUgX3Njcm9sbERpcmVjdGl2ZTogRWxlbWVudFJlZjtcblxuICBAVmlld0NoaWxkKCdzY3JvbGxhYmxlV3JhcHBlcicsIHtcbiAgICBzdGF0aWM6IHRydWVcbiAgfSkgcHJpdmF0ZSBfc2Nyb2xsYWJsZVdyYXBwZXI6IEVsZW1lbnRSZWZcblxuICBAVmlld0NoaWxkKCdzY3JvbGxiYXJWZXJ0aWNhbCcsIHtcbiAgICBzdGF0aWM6IHRydWVcbiAgfSkgcHJpdmF0ZSBfc2Nyb2xsYmFyVmVydGljYWw6IEVsZW1lbnRSZWZcblxuICBAVmlld0NoaWxkKCdzY3JvbGxiYXJIb3Jpem9udGFsJywge1xuICAgIHN0YXRpYzogdHJ1ZVxuICB9KSBwcml2YXRlIF9zY3JvbGxiYXJIb3Jpem9udGFsOiBFbGVtZW50UmVmO1xuXG4gIEBJbnB1dCgpIGRpcmVjdGlvbjogJ3JvdycgfCAnY29sdW1uJyA9ICdyb3cnO1xuICBASW5wdXQoKVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNob3ctc2Nyb2xsYmFycycpXG4gIHNob3dTY3JvbGxiYXJzID0gZmFsc2U7XG5cbiAgQElucHV0KCkgY29udGVudENsYXNzOiBzdHJpbmcgfCBzdHJpbmdbXTtcblxuICBAT3V0cHV0KCkgc2Nyb2xsID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcblxuICBzY3JvbGxTaXplOiBPYnNlcnZhYmxlPHtcbiAgICBjbGllbnRIZWlnaHQ6IG51bWJlcjtcbiAgICBjbGllbnRXaWR0aDogbnVtYmVyO1xuICAgIHNjcm9sbEhlaWdodDogbnVtYmVyO1xuICAgIHNjcm9sbFdpZHRoOiBudW1iZXI7XG4gIH0+O1xuXG4gIHByaXZhdGUgX2NvbnRhaW5lcjogRWxlbWVudFJlZjtcbiAgcHJpdmF0ZSBfYWxpdmUgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2luamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfbmdab25lOiBOZ1pvbmUsXG4gICAgICAgICAgICAgIEBJbmplY3QoQU5JTUFUSU9OX0ZSQU1FKSBwcml2YXRlIF9hbmltYXRpb25GcmFtZTogT2JzZXJ2YWJsZTxudW1iZXI+KSB7XG4gICAgdGhpcy5zY3JvbGxTaXplID0gdGhpcy5fYW5pbWF0aW9uRnJhbWUucGlwZShcbiAgICAgIHRocm90dGxlVGltZSgzMDApLFxuICAgICAgbWFwKCgpID0+ICh7XG4gICAgICAgIHNjcm9sbEhlaWdodDogdGhpcy5fY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0LFxuICAgICAgICBzY3JvbGxXaWR0aDogdGhpcy5fY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsV2lkdGgsXG4gICAgICAgIGNsaWVudEhlaWdodDogdGhpcy5fY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0LFxuICAgICAgICBjbGllbnRXaWR0aDogdGhpcy5fY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGgsXG4gICAgICB9KSksXG4gICAgICB0ZXRhWm9uZUZ1bGwodGhpcy5fbmdab25lKVxuICAgIClcbiAgfVxuXG4gIHNjcm9sbFZlcnRpY2FsKGV2ZW50KSB7XG4gICAgdGhpcy5fY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gZXZlbnQudGFyZ2V0LnNjcm9sbFRvcDtcbiAgICAvLyBldmVudC5zY3JvbGxMZWZ0ID0gdGhpcy5fY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdDtcbiAgICAvLyB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gICAgLy8gdGhpcy5zY3JvbGwuZW1pdChldmVudCk7XG4gIH1cblxuICBzY3JvbGxIb3Jpem9udGFsKGV2ZW50KSB7XG4gICAgdGhpcy5fY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IGV2ZW50LnRhcmdldC5zY3JvbGxMZWZ0O1xuICAgIC8vIGV2ZW50LnNjcm9sbFRvcCA9IHRoaXMuX2NvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcDtcbiAgICAvLyB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gICAgLy8gdGhpcy5zY3JvbGwuZW1pdChldmVudCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9jb250YWluZXIgPSB0aGlzLl9zY3JvbGxhYmxlV3JhcHBlcjtcbiAgICBpZiAodGhpcy5fc2Nyb2xsRGlyZWN0aXZlKSB7XG4gICAgICB0aGlzLl9jb250YWluZXIgPSB0aGlzLl9zY3JvbGxEaXJlY3RpdmU7XG4gICAgfVxuXG4gICAgZnJvbUV2ZW50KHRoaXMuX2NvbnRhaW5lci5uYXRpdmVFbGVtZW50LCAnc2Nyb2xsJylcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlV2hpbGUoKCkgPT4gdGhpcy5fYWxpdmUpLFxuICAgICAgICB0YXAoKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLl9zY3JvbGxiYXJIb3Jpem9udGFsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IGV2ZW50LnRhcmdldC5zY3JvbGxMZWZ0O1xuICAgICAgICAgIHRoaXMuX3Njcm9sbGJhclZlcnRpY2FsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gZXZlbnQudGFyZ2V0LnNjcm9sbFRvcDtcbiAgICAgICAgICAvLyB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gICAgICAgICAgdGhpcy5zY3JvbGwuZW1pdChldmVudCk7XG4gICAgICAgIH0pXG4gICAgICApLnN1YnNjcmliZSgpXG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9hbGl2ZSA9IGZhbHNlO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic2Nyb2xsLWNvbnRyb2xzXCIgKnRldGFMZXQ9XCJzY3JvbGxTaXplIHwgYXN5bmMgYXMgc2l6ZVwiPlxuICA8ZGl2ICNzY3JvbGxiYXJWZXJ0aWNhbFxuICAgICAgIFtjbGFzcy5kaXNwbGF5LW5vbmVdPVwic2l6ZT8uc2Nyb2xsSGVpZ2h0IDw9IHNpemU/LmNsaWVudEhlaWdodFwiXG4gICAgICAgY2xhc3M9XCJzY3JvbGwtc2Nyb2xsYmFyIHNjcm9sbC1zY3JvbGxiYXItdmVydGljYWxcIlxuICAgICAgIChzY3JvbGwpPVwic2Nyb2xsVmVydGljYWwoJGV2ZW50KVwiPlxuICAgIDxkaXYgW3N0eWxlLmhlaWdodC5weF09XCJzaXplPy5zY3JvbGxIZWlnaHRcIiBzdHlsZT1cIndpZHRoOiAxcHg7XCI+PC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2ICNzY3JvbGxiYXJIb3Jpem9udGFsXG4gICAgICAgW2NsYXNzLmRpc3BsYXktbm9uZV09XCJzaXplPy5zY3JvbGxXaWR0aCA8PSBzaXplPy5jbGllbnRXaWR0aFwiXG4gICAgICAgY2xhc3M9XCJzY3JvbGwtc2Nyb2xsYmFyIHNjcm9sbC1zY3JvbGxiYXItaG9yaXpvbnRhbFwiXG4gICAgICAgKHNjcm9sbCk9XCJzY3JvbGxIb3Jpem9udGFsKCRldmVudClcIj5cbiAgICA8ZGl2IFtzdHlsZS53aWR0aC5weF09XCJzaXplPy5zY3JvbGxXaWR0aFwiIHN0eWxlPVwiaGVpZ2h0OiAxcHg7XCI+PC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cblxuPCEtLTxkaXYgI3Njcm9sbGFibGVXcmFwcGVyIGNsYXNzPVwic2Nyb2xsLWNvbnRlbnQtd3JhcHBlclwiPi0tPlxuPCEtLSAgPGRpdiBjbGFzcz1cInNjcm9sbC1jb250ZW50XCItLT5cbjwhLS0gICAgICAgW2NsYXNzLmNvbHVtbl09XCJkaXJlY3Rpb24gPT09ICdjb2x1bW4nXCI+LS0+XG48IS0tICAgICZsdDshJm5kYXNoOyAgPGRpdiBjbGFzcz1cInNjcm9sbC1jb250ZW50XCI+Jm5kYXNoOyZndDstLT5cbjwhLS0gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pi0tPlxuPCEtLSAgPC9kaXY+LS0+XG48IS0tPC9kaXY+LS0+XG48ZGl2ICNzY3JvbGxhYmxlV3JhcHBlciBjbGFzcz1cInNjcm9sbC1jb250ZW50LXdyYXBwZXJcIlxuICAgICBbbmdDbGFzc109XCJjb250ZW50Q2xhc3NcIlxuICAgICBbY2xhc3MuY29sdW1uXT1cImRpcmVjdGlvbiA9PT0gJ2NvbHVtbidcIj5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9kaXY+XG4iXX0=
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsYWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZGlyZWN0aXZlL3Njcm9sbGFibGUvc2Nyb2xsYWJsZS9zY3JvbGxhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9kaXJlY3RpdmUvc2Nyb2xsYWJsZS9zY3JvbGxhYmxlL3Njcm9sbGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7O0FBUTlELE1BQU0sT0FBTyxtQkFBbUI7SUEwQ1Y7SUFyQ1osZ0JBQWdCLENBQWE7SUFLN0Isa0JBQWtCLENBQWE7SUFLL0Isa0JBQWtCLENBQWE7SUFLL0Isb0JBQW9CLENBQWE7SUFFaEMsU0FBUyxHQUFxQixLQUFLLENBQUM7SUFHN0MsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUVkLFlBQVksQ0FBb0I7SUFFL0IsTUFBTSxHQUFHLElBQUksWUFBWSxFQUFTLENBQUM7SUFFN0MsVUFBVSxDQUtSO0lBRU0sVUFBVSxDQUFhO0lBQ3ZCLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDZCxTQUFTLENBQWlCO0lBRWxDLFlBQW9CLElBQXVCO1FBQXZCLFNBQUksR0FBSixJQUFJLENBQW1CO1FBQ3pDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FB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QVM7c0JBQWpCLEtBQUs7Z0JBR04sY0FBYztzQkFGYixLQUFLOztzQkFDTCxXQUFXO3VCQUFDLHVCQUF1QjtnQkFHM0IsWUFBWTtzQkFBcEIsS0FBSztnQkFFSSxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZyb21FdmVudCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlV2hpbGUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNjcm9sbGFibGVEaXJlY3RpdmUgfSBmcm9tICcuLi9zY3JvbGxhYmxlLmRpcmVjdGl2ZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RldGEtc2Nyb2xsYWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9zY3JvbGxhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2Nyb2xsYWJsZS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2Nyb2xsYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQENvbnRlbnRDaGlsZChTY3JvbGxhYmxlRGlyZWN0aXZlLCB7XG4gICAgc3RhdGljOiB0cnVlLFxuICAgIHJlYWQ6IEVsZW1lbnRSZWYsXG4gIH0pXG4gIHByaXZhdGUgX3Njcm9sbERpcmVjdGl2ZTogRWxlbWVudFJlZjtcblxuICBAVmlld0NoaWxkKCdzY3JvbGxhYmxlV3JhcHBlcicsIHtcbiAgICBzdGF0aWM6IHRydWUsXG4gIH0pXG4gIHByaXZhdGUgX3Njcm9sbGFibGVXcmFwcGVyOiBFbGVtZW50UmVmO1xuXG4gIEBWaWV3Q2hpbGQoJ3Njcm9sbGJhclZlcnRpY2FsJywge1xuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgcHJpdmF0ZSBfc2Nyb2xsYmFyVmVydGljYWw6IEVsZW1lbnRSZWY7XG5cbiAgQFZpZXdDaGlsZCgnc2Nyb2xsYmFySG9yaXpvbnRhbCcsIHtcbiAgICBzdGF0aWM6IHRydWUsXG4gIH0pXG4gIHByaXZhdGUgX3Njcm9sbGJhckhvcml6b250YWw6IEVsZW1lbnRSZWY7XG5cbiAgQElucHV0KCkgZGlyZWN0aW9uOiAncm93JyB8ICdjb2x1bW4nID0gJ3Jvdyc7XG4gIEBJbnB1dCgpXG4gIEBIb3N0QmluZGluZygnY2xhc3Muc2hvdy1zY3JvbGxiYXJzJylcbiAgc2hvd1Njcm9sbGJhcnMgPSBmYWxzZTtcblxuICBASW5wdXQoKSBjb250ZW50Q2xhc3M6IHN0cmluZyB8IHN0cmluZ1tdO1xuXG4gIEBPdXRwdXQoKSBzY3JvbGwgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuXG4gIHNjcm9sbFNpemU6IHtcbiAgICBjbGllbnRIZWlnaHQ6IG51bWJlcjtcbiAgICBjbGllbnRXaWR0aDogbnVtYmVyO1xuICAgIHNjcm9sbEhlaWdodDogbnVtYmVyO1xuICAgIHNjcm9sbFdpZHRoOiBudW1iZXI7XG4gIH07XG5cbiAgcHJpdmF0ZSBfY29udGFpbmVyOiBFbGVtZW50UmVmO1xuICBwcml2YXRlIF9hbGl2ZSA9IHRydWU7XG4gIHByaXZhdGUgX29ic2VydmVyOiBSZXNpemVPYnNlcnZlcjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9jZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgdGhpcy5fb2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIodGhpcy5fb2JzZXJ2ZSk7XG4gIH1cblxuICBwcml2YXRlIF9vYnNlcnZlID0gKCkgPT4ge1xuICAgIHRoaXMuc2Nyb2xsU2l6ZSA9IHtcbiAgICAgIHNjcm9sbEhlaWdodDogdGhpcy5fY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0LFxuICAgICAgc2Nyb2xsV2lkdGg6IHRoaXMuX2NvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbFdpZHRoLFxuICAgICAgY2xpZW50SGVpZ2h0OiB0aGlzLl9jb250YWluZXIubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQsXG4gICAgICBjbGllbnRXaWR0aDogdGhpcy5fY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGgsXG4gICAgfTtcbiAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9O1xuXG4gIHNjcm9sbFZlcnRpY2FsKGV2ZW50KSB7XG4gICAgdGhpcy5fY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gZXZlbnQudGFyZ2V0LnNjcm9sbFRvcDtcbiAgfVxuXG4gIHNjcm9sbEhvcml6b250YWwoZXZlbnQpIHtcbiAgICB0aGlzLl9jb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gZXZlbnQudGFyZ2V0LnNjcm9sbExlZnQ7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9jb250YWluZXIgPSB0aGlzLl9zY3JvbGxhYmxlV3JhcHBlcjtcbiAgICBpZiAodGhpcy5fc2Nyb2xsRGlyZWN0aXZlKSB7XG4gICAgICB0aGlzLl9jb250YWluZXIgPSB0aGlzLl9zY3JvbGxEaXJlY3RpdmU7XG4gICAgfVxuXG4gICAgZnJvbUV2ZW50KHRoaXMuX2NvbnRhaW5lci5uYXRpdmVFbGVtZW50LCAnc2Nyb2xsJylcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlV2hpbGUoKCkgPT4gdGhpcy5fYWxpdmUpLFxuICAgICAgICB0YXAoKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLl9zY3JvbGxiYXJIb3Jpem9udGFsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9XG4gICAgICAgICAgICBldmVudC50YXJnZXQuc2Nyb2xsTGVmdDtcbiAgICAgICAgICB0aGlzLl9zY3JvbGxiYXJWZXJ0aWNhbC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9XG4gICAgICAgICAgICBldmVudC50YXJnZXQuc2Nyb2xsVG9wO1xuICAgICAgICAgIHRoaXMuc2Nyb2xsLmVtaXQoZXZlbnQpO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICAgIHRoaXMuX29ic2VydmVyLm9ic2VydmUodGhpcy5fY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fYWxpdmUgPSBmYWxzZTtcbiAgICB0aGlzLl9vYnNlcnZlci51bm9ic2VydmUodGhpcy5fY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpO1xuICAgIHRoaXMuX29ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInNjcm9sbC1jb250cm9sc1wiPlxuICA8ZGl2ICNzY3JvbGxiYXJWZXJ0aWNhbFxuICAgICAgIFtjbGFzcy5kaXNwbGF5LW5vbmVdPVwic2Nyb2xsU2l6ZT8uc2Nyb2xsSGVpZ2h0IDw9IHNjcm9sbFNpemU/LmNsaWVudEhlaWdodFwiXG4gICAgICAgY2xhc3M9XCJzY3JvbGwtc2Nyb2xsYmFyIHNjcm9sbC1zY3JvbGxiYXItdmVydGljYWxcIlxuICAgICAgIChzY3JvbGwpPVwic2Nyb2xsVmVydGljYWwoJGV2ZW50KVwiPlxuICAgIDxkaXYgW3N0eWxlLmhlaWdodC5weF09XCJzY3JvbGxTaXplPy5zY3JvbGxIZWlnaHRcIiBzdHlsZT1cIndpZHRoOiAxcHg7XCI+PC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2ICNzY3JvbGxiYXJIb3Jpem9udGFsXG4gICAgICAgW2NsYXNzLmRpc3BsYXktbm9uZV09XCJzY3JvbGxTaXplPy5zY3JvbGxXaWR0aCA8PSBzY3JvbGxTaXplPy5jbGllbnRXaWR0aFwiXG4gICAgICAgY2xhc3M9XCJzY3JvbGwtc2Nyb2xsYmFyIHNjcm9sbC1zY3JvbGxiYXItaG9yaXpvbnRhbFwiXG4gICAgICAgKHNjcm9sbCk9XCJzY3JvbGxIb3Jpem9udGFsKCRldmVudClcIj5cbiAgICA8ZGl2IFtzdHlsZS53aWR0aC5weF09XCJzY3JvbGxTaXplPy5zY3JvbGxXaWR0aFwiIHN0eWxlPVwiaGVpZ2h0OiAxcHg7XCI+PC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cblxuPCEtLTxkaXYgI3Njcm9sbGFibGVXcmFwcGVyIGNsYXNzPVwic2Nyb2xsLWNvbnRlbnQtd3JhcHBlclwiPi0tPlxuPCEtLSAgPGRpdiBjbGFzcz1cInNjcm9sbC1jb250ZW50XCItLT5cbjwhLS0gICAgICAgW2NsYXNzLmNvbHVtbl09XCJkaXJlY3Rpb24gPT09ICdjb2x1bW4nXCI+LS0+XG48IS0tICAgICZsdDshJm5kYXNoOyAgPGRpdiBjbGFzcz1cInNjcm9sbC1jb250ZW50XCI+Jm5kYXNoOyZndDstLT5cbjwhLS0gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pi0tPlxuPCEtLSAgPC9kaXY+LS0+XG48IS0tPC9kaXY+LS0+XG48ZGl2ICNzY3JvbGxhYmxlV3JhcHBlciBjbGFzcz1cInNjcm9sbC1jb250ZW50LXdyYXBwZXJcIlxuICAgICBbbmdDbGFzc109XCJjb250ZW50Q2xhc3NcIlxuICAgICBbY2xhc3MuY29sdW1uXT1cImRpcmVjdGlvbiA9PT0gJ2NvbHVtbidcIj5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9kaXY+XG4iXX0=
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Component, ChangeDetectionStrategy, HostBinding, Directive, Optional, Inject, ContentChild, Input, Host, HostListener, Injectable, NgModule, forwardRef, EventEmitter, Output, PLATFORM_ID, ElementRef, TemplateRef, Injector, Pipe, ViewChild, InjectionToken, inject, ViewContainerRef, ViewEncapsulation, ChangeDetectorRef, ContentChildren, CUSTOM_ELEMENTS_SCHEMA, SkipSelf } from '@angular/core';
2
+ import { Component, ChangeDetectionStrategy, HostBinding, Directive, Optional, Inject, ContentChild, Input, Host, HostListener, Injectable, NgModule, forwardRef, EventEmitter, Output, PLATFORM_ID, ElementRef, TemplateRef, Injector, Pipe, ViewChild, ViewEncapsulation, ChangeDetectorRef, ViewContainerRef, ContentChildren, inject, CUSTOM_ELEMENTS_SCHEMA, SkipSelf, InjectionToken } from '@angular/core';
3
3
  import * as i1 from '@angular/common';
4
4
  import { DOCUMENT, CommonModule, isPlatformBrowser, DatePipe } from '@angular/common';
5
5
  import * as i1$1 from '@angular/common/http';
@@ -12,8 +12,7 @@ import { MaskitoModule } from '@maskito/angular';
12
12
  import { coerceBooleanProperty } from '@angular/cdk/coercion';
13
13
  import { trigger, transition, style, animate } from '@angular/animations';
14
14
  import dayjs from 'dayjs';
15
- import * as i3$1 from 'rxjs';
16
- import { ReplaySubject, BehaviorSubject, combineLatest, takeWhile as takeWhile$1, filter as filter$1, map as map$1, shareReplay, Observable, share, pipe, fromEvent, tap, Subject, merge } from 'rxjs';
15
+ import { ReplaySubject, BehaviorSubject, combineLatest, takeWhile as takeWhile$1, filter as filter$1, map as map$1, shareReplay, fromEvent, tap, Subject, merge, Observable, pipe, share } from 'rxjs';
17
16
  import { maskitoDateTimeOptionsGenerator, maskitoDateOptionsGenerator, maskitoDateRangeOptionsGenerator } from '@maskito/kit';
18
17
  import * as i1$2 from '@ngneat/transloco';
19
18
  import { TranslocoModule, TRANSLOCO_SCOPE } from '@ngneat/transloco';
@@ -131,8 +130,6 @@ class IconComponent {
131
130
  }
132
131
  return result.join(' ');
133
132
  }
134
- constructor() { }
135
- ngOnInit() { }
136
133
  getName() {
137
134
  return `#${this.name}`;
138
135
  }
@@ -142,7 +139,7 @@ class IconComponent {
142
139
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: IconComponent, decorators: [{
143
140
  type: Component,
144
141
  args: [{ selector: 'teta-icon', changeDetection: ChangeDetectionStrategy.OnPush, template: "<svg class=\"icon__image\">\n <use [attr.xlink:href]=\"getName()\"></use>\n</svg>\n" }]
145
- }], ctorParameters: function () { return []; }, propDecorators: { name: [{
142
+ }], propDecorators: { name: [{
146
143
  type: Input
147
144
  }], size: [{
148
145
  type: Input
@@ -4348,90 +4345,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImpor
4348
4345
  args: ['class.scrollable_hide_scroll']
4349
4346
  }] } });
4350
4347
 
4351
- const ANIMATION_FRAME = new InjectionToken('Shared Observable based on `window.requestAnimationFrame`', {
4352
- factory: () => {
4353
- const { requestAnimationFrame, cancelAnimationFrame } = inject(WINDOW);
4354
- const animationFrame$ = new Observable(subscriber => {
4355
- let id = NaN;
4356
- const callback = (timestamp) => {
4357
- subscriber.next(timestamp);
4358
- id = requestAnimationFrame(callback);
4359
- };
4360
- id = requestAnimationFrame(callback);
4361
- return () => {
4362
- cancelAnimationFrame(id);
4363
- };
4364
- });
4365
- return animationFrame$.pipe(share());
4366
- },
4367
- });
4368
- const WINDOW = new InjectionToken('An abstraction over global window object', {
4369
- factory: () => {
4370
- const { defaultView } = inject(DOCUMENT);
4371
- if (!defaultView) {
4372
- throw new Error('Window is not available');
4373
- }
4374
- return defaultView;
4375
- },
4376
- });
4377
-
4378
- function tetaZoneFull(ngZone) {
4379
- return source => new Observable(subscriber => source.subscribe({
4380
- next: value => ngZone.run(() => subscriber.next(value)),
4381
- error: (error) => ngZone.run(() => subscriber.error(error)),
4382
- complete: () => ngZone.run(() => subscriber.complete()),
4383
- }));
4384
- }
4385
- function tetaZoneFree(ngZone) {
4386
- return source => new Observable(subscriber => ngZone.runOutsideAngular(() => source.subscribe(subscriber)));
4387
- }
4388
- function tetaZoneOptimized(ngZone) {
4389
- return pipe(tetaZoneFree(ngZone), tetaZoneFull(ngZone));
4390
- }
4391
-
4392
- class LetDirective {
4393
- tetaLet;
4394
- constructor(viewContainer, templateRef) {
4395
- viewContainer.createEmbeddedView(templateRef, new LetContext(this));
4396
- }
4397
- static ngTemplateContextGuard(_dir, _ctx) {
4398
- return true;
4399
- }
4400
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: LetDirective, deps: [{ token: ViewContainerRef }, { token: TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
4401
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.1", type: LetDirective, selector: "[tetaLet]", inputs: { tetaLet: "tetaLet" }, ngImport: i0 });
4402
- }
4403
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: LetDirective, decorators: [{
4404
- type: Directive,
4405
- args: [{
4406
- selector: '[tetaLet]'
4407
- }]
4408
- }], ctorParameters: function () { return [{ type: i0.ViewContainerRef, decorators: [{
4409
- type: Inject,
4410
- args: [ViewContainerRef]
4411
- }] }, { type: i0.TemplateRef, decorators: [{
4412
- type: Inject,
4413
- args: [TemplateRef]
4414
- }] }]; }, propDecorators: { tetaLet: [{
4415
- type: Input
4416
- }] } });
4417
- class LetContext {
4418
- internalDirectiveInstance;
4419
- constructor(internalDirectiveInstance) {
4420
- this.internalDirectiveInstance = internalDirectiveInstance;
4421
- }
4422
- get $implicit() {
4423
- return this.internalDirectiveInstance.tetaLet;
4424
- }
4425
- get tetaLet() {
4426
- return this.internalDirectiveInstance.tetaLet;
4427
- }
4428
- }
4429
-
4430
4348
  class ScrollableComponent {
4431
- _elementRef;
4432
- _injector;
4433
- _ngZone;
4434
- _animationFrame;
4349
+ _cdr;
4435
4350
  _scrollDirective;
4436
4351
  _scrollableWrapper;
4437
4352
  _scrollbarVertical;
@@ -4443,29 +4358,25 @@ class ScrollableComponent {
4443
4358
  scrollSize;
4444
4359
  _container;
4445
4360
  _alive = true;
4446
- constructor(_elementRef, _injector, _ngZone, _animationFrame) {
4447
- this._elementRef = _elementRef;
4448
- this._injector = _injector;
4449
- this._ngZone = _ngZone;
4450
- this._animationFrame = _animationFrame;
4451
- this.scrollSize = this._animationFrame.pipe(throttleTime(300), map(() => ({
4361
+ _observer;
4362
+ constructor(_cdr) {
4363
+ this._cdr = _cdr;
4364
+ this._observer = new ResizeObserver(this._observe);
4365
+ }
4366
+ _observe = () => {
4367
+ this.scrollSize = {
4452
4368
  scrollHeight: this._container.nativeElement.scrollHeight,
4453
4369
  scrollWidth: this._container.nativeElement.scrollWidth,
4454
4370
  clientHeight: this._container.nativeElement.clientHeight,
4455
4371
  clientWidth: this._container.nativeElement.clientWidth,
4456
- })), tetaZoneFull(this._ngZone));
4457
- }
4372
+ };
4373
+ this._cdr.detectChanges();
4374
+ };
4458
4375
  scrollVertical(event) {
4459
4376
  this._container.nativeElement.scrollTop = event.target.scrollTop;
4460
- // event.scrollLeft = this._container.nativeElement.scrollLeft;
4461
- // this._elementRef.nativeElement.dispatchEvent(event);
4462
- // this.scroll.emit(event);
4463
4377
  }
4464
4378
  scrollHorizontal(event) {
4465
4379
  this._container.nativeElement.scrollLeft = event.target.scrollLeft;
4466
- // event.scrollTop = this._container.nativeElement.scrollTop;
4467
- // this._elementRef.nativeElement.dispatchEvent(event);
4468
- // this.scroll.emit(event);
4469
4380
  }
4470
4381
  ngOnInit() {
4471
4382
  this._container = this._scrollableWrapper;
@@ -4474,44 +4385,46 @@ class ScrollableComponent {
4474
4385
  }
4475
4386
  fromEvent(this._container.nativeElement, 'scroll')
4476
4387
  .pipe(takeWhile(() => this._alive), tap((event) => {
4477
- this._scrollbarHorizontal.nativeElement.scrollLeft = event.target.scrollLeft;
4478
- this._scrollbarVertical.nativeElement.scrollTop = event.target.scrollTop;
4479
- // this._elementRef.nativeElement.dispatchEvent(event);
4388
+ this._scrollbarHorizontal.nativeElement.scrollLeft =
4389
+ event.target.scrollLeft;
4390
+ this._scrollbarVertical.nativeElement.scrollTop =
4391
+ event.target.scrollTop;
4480
4392
  this.scroll.emit(event);
4481
- })).subscribe();
4393
+ }))
4394
+ .subscribe();
4395
+ this._observer.observe(this._container.nativeElement);
4482
4396
  }
4483
4397
  ngOnDestroy() {
4484
4398
  this._alive = false;
4399
+ this._observer.unobserve(this._container.nativeElement);
4400
+ this._observer.disconnect();
4485
4401
  }
4486
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: ScrollableComponent, deps: [{ token: i0.ElementRef }, { token: i0.Injector }, { token: i0.NgZone }, { token: ANIMATION_FRAME }], target: i0.ɵɵFactoryTarget.Component });
4487
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: ScrollableComponent, selector: "teta-scrollable", inputs: { direction: "direction", showScrollbars: "showScrollbars", contentClass: "contentClass" }, outputs: { scroll: "scroll" }, host: { properties: { "class.show-scrollbars": "this.showScrollbars" } }, queries: [{ propertyName: "_scrollDirective", first: true, predicate: ScrollableDirective, descendants: true, read: ElementRef, static: true }], viewQueries: [{ propertyName: "_scrollableWrapper", first: true, predicate: ["scrollableWrapper"], descendants: true, static: true }, { propertyName: "_scrollbarVertical", first: true, predicate: ["scrollbarVertical"], descendants: true, static: true }, { propertyName: "_scrollbarHorizontal", first: true, predicate: ["scrollbarHorizontal"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"scroll-controls\" *tetaLet=\"scrollSize | async as size\">\n <div #scrollbarVertical\n [class.display-none]=\"size?.scrollHeight <= size?.clientHeight\"\n class=\"scroll-scrollbar scroll-scrollbar-vertical\"\n (scroll)=\"scrollVertical($event)\">\n <div [style.height.px]=\"size?.scrollHeight\" style=\"width: 1px;\"></div>\n </div>\n <div #scrollbarHorizontal\n [class.display-none]=\"size?.scrollWidth <= size?.clientWidth\"\n class=\"scroll-scrollbar scroll-scrollbar-horizontal\"\n (scroll)=\"scrollHorizontal($event)\">\n <div [style.width.px]=\"size?.scrollWidth\" style=\"height: 1px;\"></div>\n </div>\n</div>\n\n\n<!--<div #scrollableWrapper class=\"scroll-content-wrapper\">-->\n<!-- <div class=\"scroll-content\"-->\n<!-- [class.column]=\"direction === 'column'\">-->\n<!-- &lt;!&ndash; <div class=\"scroll-content\">&ndash;&gt;-->\n<!-- <ng-content></ng-content>-->\n<!-- </div>-->\n<!--</div>-->\n<div #scrollableWrapper class=\"scroll-content-wrapper\"\n [ngClass]=\"contentClass\"\n [class.column]=\"direction === 'column'\">\n <ng-content></ng-content>\n</div>\n", styles: [":host{overflow:hidden;position:relative;z-index:0;display:flex}:host:hover .scroll-controls{opacity:1}:host.show-scrollbars .scroll-controls{opacity:1}:host::-webkit-scrollbar{width:0;height:0}.scroll-content-wrapper{display:flex;overflow:auto;flex-grow:1}.scroll-content-wrapper::-webkit-scrollbar{width:0;height:0}.scroll-content{position:relative;z-index:0;flex:1;display:flex;height:auto;min-width:0}.scroll-controls{position:absolute;inset:0;z-index:1;pointer-events:none;opacity:0;transition:opacity .5s linear}.scroll-scrollbar{position:absolute;overflow:auto;pointer-events:auto}.scroll-scrollbar-vertical{right:0;top:0;bottom:12px;width:12px}.scroll-scrollbar-horizontal{right:12px;left:0;bottom:0;height:12px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: LetDirective, selector: "[tetaLet]", inputs: ["tetaLet"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
4402
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: ScrollableComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
4403
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: ScrollableComponent, selector: "teta-scrollable", inputs: { direction: "direction", showScrollbars: "showScrollbars", contentClass: "contentClass" }, outputs: { scroll: "scroll" }, host: { properties: { "class.show-scrollbars": "this.showScrollbars" } }, queries: [{ propertyName: "_scrollDirective", first: true, predicate: ScrollableDirective, descendants: true, read: ElementRef, static: true }], viewQueries: [{ propertyName: "_scrollableWrapper", first: true, predicate: ["scrollableWrapper"], descendants: true, static: true }, { propertyName: "_scrollbarVertical", first: true, predicate: ["scrollbarVertical"], descendants: true, static: true }, { propertyName: "_scrollbarHorizontal", first: true, predicate: ["scrollbarHorizontal"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"scroll-controls\">\n <div #scrollbarVertical\n [class.display-none]=\"scrollSize?.scrollHeight <= scrollSize?.clientHeight\"\n class=\"scroll-scrollbar scroll-scrollbar-vertical\"\n (scroll)=\"scrollVertical($event)\">\n <div [style.height.px]=\"scrollSize?.scrollHeight\" style=\"width: 1px;\"></div>\n </div>\n <div #scrollbarHorizontal\n [class.display-none]=\"scrollSize?.scrollWidth <= scrollSize?.clientWidth\"\n class=\"scroll-scrollbar scroll-scrollbar-horizontal\"\n (scroll)=\"scrollHorizontal($event)\">\n <div [style.width.px]=\"scrollSize?.scrollWidth\" style=\"height: 1px;\"></div>\n </div>\n</div>\n\n\n<!--<div #scrollableWrapper class=\"scroll-content-wrapper\">-->\n<!-- <div class=\"scroll-content\"-->\n<!-- [class.column]=\"direction === 'column'\">-->\n<!-- &lt;!&ndash; <div class=\"scroll-content\">&ndash;&gt;-->\n<!-- <ng-content></ng-content>-->\n<!-- </div>-->\n<!--</div>-->\n<div #scrollableWrapper class=\"scroll-content-wrapper\"\n [ngClass]=\"contentClass\"\n [class.column]=\"direction === 'column'\">\n <ng-content></ng-content>\n</div>\n", styles: [":host{overflow:hidden;position:relative;z-index:0;display:flex}:host:hover .scroll-controls{opacity:1}:host.show-scrollbars .scroll-controls{opacity:1}:host::-webkit-scrollbar{width:0;height:0}.scroll-content-wrapper{display:flex;overflow:auto;flex-grow:1}.scroll-content-wrapper::-webkit-scrollbar{width:0;height:0}.scroll-content{position:relative;z-index:0;flex:1;display:flex;height:auto;min-width:0}.scroll-controls{position:absolute;inset:0;z-index:1;pointer-events:none;opacity:0;transition:opacity .5s linear}.scroll-scrollbar{position:absolute;overflow:auto;pointer-events:auto}.scroll-scrollbar-vertical{right:0;top:0;bottom:12px;width:12px}.scroll-scrollbar-horizontal{right:12px;left:0;bottom:0;height:12px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
4488
4404
  }
4489
4405
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: ScrollableComponent, decorators: [{
4490
4406
  type: Component,
4491
- args: [{ selector: 'teta-scrollable', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"scroll-controls\" *tetaLet=\"scrollSize | async as size\">\n <div #scrollbarVertical\n [class.display-none]=\"size?.scrollHeight <= size?.clientHeight\"\n class=\"scroll-scrollbar scroll-scrollbar-vertical\"\n (scroll)=\"scrollVertical($event)\">\n <div [style.height.px]=\"size?.scrollHeight\" style=\"width: 1px;\"></div>\n </div>\n <div #scrollbarHorizontal\n [class.display-none]=\"size?.scrollWidth <= size?.clientWidth\"\n class=\"scroll-scrollbar scroll-scrollbar-horizontal\"\n (scroll)=\"scrollHorizontal($event)\">\n <div [style.width.px]=\"size?.scrollWidth\" style=\"height: 1px;\"></div>\n </div>\n</div>\n\n\n<!--<div #scrollableWrapper class=\"scroll-content-wrapper\">-->\n<!-- <div class=\"scroll-content\"-->\n<!-- [class.column]=\"direction === 'column'\">-->\n<!-- &lt;!&ndash; <div class=\"scroll-content\">&ndash;&gt;-->\n<!-- <ng-content></ng-content>-->\n<!-- </div>-->\n<!--</div>-->\n<div #scrollableWrapper class=\"scroll-content-wrapper\"\n [ngClass]=\"contentClass\"\n [class.column]=\"direction === 'column'\">\n <ng-content></ng-content>\n</div>\n", styles: [":host{overflow:hidden;position:relative;z-index:0;display:flex}:host:hover .scroll-controls{opacity:1}:host.show-scrollbars .scroll-controls{opacity:1}:host::-webkit-scrollbar{width:0;height:0}.scroll-content-wrapper{display:flex;overflow:auto;flex-grow:1}.scroll-content-wrapper::-webkit-scrollbar{width:0;height:0}.scroll-content{position:relative;z-index:0;flex:1;display:flex;height:auto;min-width:0}.scroll-controls{position:absolute;inset:0;z-index:1;pointer-events:none;opacity:0;transition:opacity .5s linear}.scroll-scrollbar{position:absolute;overflow:auto;pointer-events:auto}.scroll-scrollbar-vertical{right:0;top:0;bottom:12px;width:12px}.scroll-scrollbar-horizontal{right:12px;left:0;bottom:0;height:12px}\n"] }]
4492
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Injector }, { type: i0.NgZone }, { type: i3$1.Observable, decorators: [{
4493
- type: Inject,
4494
- args: [ANIMATION_FRAME]
4495
- }] }]; }, propDecorators: { _scrollDirective: [{
4407
+ args: [{ selector: 'teta-scrollable', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"scroll-controls\">\n <div #scrollbarVertical\n [class.display-none]=\"scrollSize?.scrollHeight <= scrollSize?.clientHeight\"\n class=\"scroll-scrollbar scroll-scrollbar-vertical\"\n (scroll)=\"scrollVertical($event)\">\n <div [style.height.px]=\"scrollSize?.scrollHeight\" style=\"width: 1px;\"></div>\n </div>\n <div #scrollbarHorizontal\n [class.display-none]=\"scrollSize?.scrollWidth <= scrollSize?.clientWidth\"\n class=\"scroll-scrollbar scroll-scrollbar-horizontal\"\n (scroll)=\"scrollHorizontal($event)\">\n <div [style.width.px]=\"scrollSize?.scrollWidth\" style=\"height: 1px;\"></div>\n </div>\n</div>\n\n\n<!--<div #scrollableWrapper class=\"scroll-content-wrapper\">-->\n<!-- <div class=\"scroll-content\"-->\n<!-- [class.column]=\"direction === 'column'\">-->\n<!-- &lt;!&ndash; <div class=\"scroll-content\">&ndash;&gt;-->\n<!-- <ng-content></ng-content>-->\n<!-- </div>-->\n<!--</div>-->\n<div #scrollableWrapper class=\"scroll-content-wrapper\"\n [ngClass]=\"contentClass\"\n [class.column]=\"direction === 'column'\">\n <ng-content></ng-content>\n</div>\n", styles: [":host{overflow:hidden;position:relative;z-index:0;display:flex}:host:hover .scroll-controls{opacity:1}:host.show-scrollbars .scroll-controls{opacity:1}:host::-webkit-scrollbar{width:0;height:0}.scroll-content-wrapper{display:flex;overflow:auto;flex-grow:1}.scroll-content-wrapper::-webkit-scrollbar{width:0;height:0}.scroll-content{position:relative;z-index:0;flex:1;display:flex;height:auto;min-width:0}.scroll-controls{position:absolute;inset:0;z-index:1;pointer-events:none;opacity:0;transition:opacity .5s linear}.scroll-scrollbar{position:absolute;overflow:auto;pointer-events:auto}.scroll-scrollbar-vertical{right:0;top:0;bottom:12px;width:12px}.scroll-scrollbar-horizontal{right:12px;left:0;bottom:0;height:12px}\n"] }]
4408
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { _scrollDirective: [{
4496
4409
  type: ContentChild,
4497
4410
  args: [ScrollableDirective, {
4498
4411
  static: true,
4499
- read: ElementRef
4412
+ read: ElementRef,
4500
4413
  }]
4501
4414
  }], _scrollableWrapper: [{
4502
4415
  type: ViewChild,
4503
4416
  args: ['scrollableWrapper', {
4504
- static: true
4417
+ static: true,
4505
4418
  }]
4506
4419
  }], _scrollbarVertical: [{
4507
4420
  type: ViewChild,
4508
4421
  args: ['scrollbarVertical', {
4509
- static: true
4422
+ static: true,
4510
4423
  }]
4511
4424
  }], _scrollbarHorizontal: [{
4512
4425
  type: ViewChild,
4513
4426
  args: ['scrollbarHorizontal', {
4514
- static: true
4427
+ static: true,
4515
4428
  }]
4516
4429
  }], direction: [{
4517
4430
  type: Input
@@ -5280,6 +5193,44 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImpor
5280
5193
  type: Input
5281
5194
  }] } });
5282
5195
 
5196
+ class LetDirective {
5197
+ tetaLet;
5198
+ constructor(viewContainer, templateRef) {
5199
+ viewContainer.createEmbeddedView(templateRef, new LetContext(this));
5200
+ }
5201
+ static ngTemplateContextGuard(_dir, _ctx) {
5202
+ return true;
5203
+ }
5204
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: LetDirective, deps: [{ token: ViewContainerRef }, { token: TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
5205
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.1", type: LetDirective, selector: "[tetaLet]", inputs: { tetaLet: "tetaLet" }, ngImport: i0 });
5206
+ }
5207
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: LetDirective, decorators: [{
5208
+ type: Directive,
5209
+ args: [{
5210
+ selector: '[tetaLet]'
5211
+ }]
5212
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef, decorators: [{
5213
+ type: Inject,
5214
+ args: [ViewContainerRef]
5215
+ }] }, { type: i0.TemplateRef, decorators: [{
5216
+ type: Inject,
5217
+ args: [TemplateRef]
5218
+ }] }]; }, propDecorators: { tetaLet: [{
5219
+ type: Input
5220
+ }] } });
5221
+ class LetContext {
5222
+ internalDirectiveInstance;
5223
+ constructor(internalDirectiveInstance) {
5224
+ this.internalDirectiveInstance = internalDirectiveInstance;
5225
+ }
5226
+ get $implicit() {
5227
+ return this.internalDirectiveInstance.tetaLet;
5228
+ }
5229
+ get tetaLet() {
5230
+ return this.internalDirectiveInstance.tetaLet;
5231
+ }
5232
+ }
5233
+
5283
5234
  class SelectComponent {
5284
5235
  _cdr;
5285
5236
  _elementRef;
@@ -14282,6 +14233,47 @@ const ruLocale = {
14282
14233
  ]
14283
14234
  };
14284
14235
 
14236
+ function tetaZoneFull(ngZone) {
14237
+ return source => new Observable(subscriber => source.subscribe({
14238
+ next: value => ngZone.run(() => subscriber.next(value)),
14239
+ error: (error) => ngZone.run(() => subscriber.error(error)),
14240
+ complete: () => ngZone.run(() => subscriber.complete()),
14241
+ }));
14242
+ }
14243
+ function tetaZoneFree(ngZone) {
14244
+ return source => new Observable(subscriber => ngZone.runOutsideAngular(() => source.subscribe(subscriber)));
14245
+ }
14246
+ function tetaZoneOptimized(ngZone) {
14247
+ return pipe(tetaZoneFree(ngZone), tetaZoneFull(ngZone));
14248
+ }
14249
+
14250
+ const ANIMATION_FRAME = new InjectionToken('Shared Observable based on `window.requestAnimationFrame`', {
14251
+ factory: () => {
14252
+ const { requestAnimationFrame, cancelAnimationFrame } = inject(WINDOW);
14253
+ const animationFrame$ = new Observable(subscriber => {
14254
+ let id = NaN;
14255
+ const callback = (timestamp) => {
14256
+ subscriber.next(timestamp);
14257
+ id = requestAnimationFrame(callback);
14258
+ };
14259
+ id = requestAnimationFrame(callback);
14260
+ return () => {
14261
+ cancelAnimationFrame(id);
14262
+ };
14263
+ });
14264
+ return animationFrame$.pipe(share());
14265
+ },
14266
+ });
14267
+ const WINDOW = new InjectionToken('An abstraction over global window object', {
14268
+ factory: () => {
14269
+ const { defaultView } = inject(DOCUMENT);
14270
+ if (!defaultView) {
14271
+ throw new Error('Window is not available');
14272
+ }
14273
+ return defaultView;
14274
+ },
14275
+ });
14276
+
14285
14277
  /**
14286
14278
  * Components
14287
14279
  */