@taiga-ui/core 4.34.0-canary.7b7adbb → 4.34.0-canary.f3c7d23
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.
- package/directives/dropdown/dropdown.component.d.ts +2 -1
- package/esm2022/components/root/root.component.mjs +1 -1
- package/esm2022/directives/dropdown/dropdown.component.mjs +21 -30
- package/esm2022/directives/dropdown/dropdown.directive.mjs +2 -7
- package/esm2022/directives/dropdown/dropdowns.component.mjs +3 -2
- package/esm2022/tokens/viewport.mjs +3 -2
- package/fesm2022/taiga-ui-core-components-root.mjs +1 -1
- package/fesm2022/taiga-ui-core-directives-dropdown.mjs +23 -34
- package/fesm2022/taiga-ui-core-directives-dropdown.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-tokens.mjs +2 -1
- package/fesm2022/taiga-ui-core-tokens.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -9,7 +9,7 @@ import * as i1 from "@taiga-ui/cdk/directives/active-zone";
|
|
|
9
9
|
export declare class TuiDropdownComponent {
|
|
10
10
|
private readonly el;
|
|
11
11
|
private readonly accessor;
|
|
12
|
-
private readonly
|
|
12
|
+
private readonly viewport;
|
|
13
13
|
private readonly vvs;
|
|
14
14
|
protected readonly animation: import("@angular/animations").AnimationOptions;
|
|
15
15
|
protected readonly options: import("./dropdown-options.directive").TuiDropdownOptions;
|
|
@@ -18,6 +18,7 @@ export declare class TuiDropdownComponent {
|
|
|
18
18
|
protected readonly darkMode: import("@angular/core").WritableSignal<boolean> & {
|
|
19
19
|
reset(): void;
|
|
20
20
|
};
|
|
21
|
+
protected readonly position: "fixed" | "absolute";
|
|
21
22
|
protected readonly theme: import("@angular/core").Signal<string | null | undefined>;
|
|
22
23
|
protected readonly sub: import("rxjs").Subscription;
|
|
23
24
|
protected readonly close: () => void;
|
|
@@ -53,7 +53,7 @@ class TuiRoot {
|
|
|
53
53
|
: !this.isChildRoot;
|
|
54
54
|
}
|
|
55
55
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiRoot, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
56
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiRoot, isStandalone: true, selector: "tui-root", host: { attributes: { "data-tui-version": "4.34.0-canary.
|
|
56
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiRoot, isStandalone: true, selector: "tui-root", host: { attributes: { "data-tui-version": "4.34.0-canary.f3c7d23" }, listeners: { "touchstart.passive.zoneless": "0", "document:fullscreenchange": "top.set(isTopLayer)" }, properties: { "style.--tui-duration.ms": "duration", "style.--tui-scroll-behavior": "reducedMotion ? \"auto\" : \"smooth\"", "class._mobile": "isMobileRes()" } }, hostDirectives: [{ directive: i1.TuiPlatform }, { directive: i2.TuiVisualViewport }, { directive: i3.TuiFontSize }], ngImport: i0, template: "<div class=\"t-root-content\"><ng-content /></div>\n<ng-container *ngIf=\"top()\">\n <tui-scroll-controls\n *ngIf=\"scrollbars\"\n class=\"t-root-scrollbar\"\n />\n <tui-popups />\n <ng-content select=\"tuiOverContent\" />\n <tui-dialogs />\n <ng-content select=\"tuiOverDialogs\" />\n <tui-alerts />\n <ng-content select=\"tuiOverAlerts\" />\n <tui-dropdowns />\n <ng-content select=\"tuiOverDropdowns\" />\n <tui-hints />\n <ng-content select=\"tuiOverHints\" />\n</ng-container>\n", styles: ["@keyframes tuiPresent{to{content:\"\"}}@keyframes tuiSkeletonVibe{to{opacity:.5}}.tui-zero-scrollbar{scrollbar-width:none;-ms-overflow-style:none}.tui-zero-scrollbar::-webkit-scrollbar,.tui-zero-scrollbar::-webkit-scrollbar-thumb{display:none}body,input{margin:0}tui-root{position:relative;display:block;font:var(--tui-font-text-s);color:var(--tui-text-primary);flex:1;border-image:conic-gradient(var(--tui-background-base) 0 0) fill 0/0/0 0 100vh 0;-webkit-tap-highlight-color:transparent}tui-root>.t-root-scrollbar{position:fixed;top:0;left:0;bottom:0;right:0;z-index:0;display:none;margin:0}[data-tui-theme] tui-root>.t-root-scrollbar{display:block}.t-root-content{position:relative;top:var(--t-root-top);block-size:100%;isolation:isolate}.t-root-content>*{--t-root-top: 0}[tuiDropdownButton][tuiDropdownButton]{display:none}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: TuiAlerts, selector: "tui-alerts" }, { kind: "component", type: TuiDialogs, selector: "tui-dialogs" }, { kind: "component", type: TuiDropdowns, selector: "tui-dropdowns" }, { kind: "component", type: TuiHints, selector: "tui-hints" }, { kind: "component", type: TuiPopups, selector: "tui-popups" }, { kind: "component", type: TuiScrollControls, selector: "tui-scroll-controls" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
|
|
57
57
|
}
|
|
58
58
|
export { TuiRoot };
|
|
59
59
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiRoot, decorators: [{
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';
|
|
2
2
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
3
|
-
import { WA_WINDOW } from '@ng-web-apis/common';
|
|
4
3
|
import { TuiActiveZone } from '@taiga-ui/cdk/directives/active-zone';
|
|
5
4
|
import { tuiInjectElement } from '@taiga-ui/cdk/utils/dom';
|
|
6
5
|
import { tuiClamp } from '@taiga-ui/cdk/utils/math';
|
|
@@ -9,7 +8,7 @@ import { tuiDropdownAnimation } from '@taiga-ui/core/animations';
|
|
|
9
8
|
import { tuiPositionAccessorFor, TuiRectAccessor, tuiRectAccessorFor, } from '@taiga-ui/core/classes';
|
|
10
9
|
import { TuiScrollbar } from '@taiga-ui/core/components/scrollbar';
|
|
11
10
|
import { TuiPositionService, TuiVisualViewportService } from '@taiga-ui/core/services';
|
|
12
|
-
import { TUI_ANIMATIONS_SPEED, TUI_DARK_MODE } from '@taiga-ui/core/tokens';
|
|
11
|
+
import { TUI_ANIMATIONS_SPEED, TUI_DARK_MODE, TUI_VIEWPORT } from '@taiga-ui/core/tokens';
|
|
13
12
|
import { tuiToAnimationOptions } from '@taiga-ui/core/utils';
|
|
14
13
|
import { PolymorpheusOutlet } from '@taiga-ui/polymorpheus';
|
|
15
14
|
import { map, takeWhile } from 'rxjs';
|
|
@@ -28,50 +27,42 @@ class TuiDropdownComponent {
|
|
|
28
27
|
constructor() {
|
|
29
28
|
this.el = tuiInjectElement();
|
|
30
29
|
this.accessor = inject(TuiRectAccessor);
|
|
31
|
-
this.
|
|
30
|
+
this.viewport = inject(TUI_VIEWPORT);
|
|
32
31
|
this.vvs = inject(TuiVisualViewportService);
|
|
33
32
|
this.animation = tuiToAnimationOptions(inject(TUI_ANIMATIONS_SPEED));
|
|
34
33
|
this.options = inject(TUI_DROPDOWN_OPTIONS);
|
|
35
34
|
this.directive = inject(TuiDropdownDirective);
|
|
36
35
|
this.context = inject(TUI_DROPDOWN_CONTEXT, { optional: true });
|
|
37
36
|
this.darkMode = inject(TUI_DARK_MODE);
|
|
38
|
-
|
|
39
|
-
this.theme = computed(() =>
|
|
40
|
-
this.darkMode();
|
|
41
|
-
return this.directive.el.closest('[tuiTheme]')?.getAttribute('tuiTheme');
|
|
42
|
-
});
|
|
37
|
+
this.position = this.directive.position;
|
|
38
|
+
this.theme = computed((_ = this.darkMode()) => this.directive.el.closest('[tuiTheme]')?.getAttribute('tuiTheme'));
|
|
43
39
|
this.sub = inject(TuiPositionService)
|
|
44
40
|
.pipe(takeWhile(() => this.directive.el.isConnected &&
|
|
45
|
-
!!this.directive.el.getBoundingClientRect().height), map((v) => (this.directive.position === 'fixed' ? this.vvs.correct(v) : v)), map(([top, left]) => this.getStyles(
|
|
41
|
+
!!this.directive.el.getBoundingClientRect().height), map((v) => (this.directive.position === 'fixed' ? this.vvs.correct(v) : v)), map(([top, left]) => this.getStyles(left, top)), takeUntilDestroyed())
|
|
46
42
|
.subscribe({
|
|
47
43
|
next: (styles) => Object.assign(this.el.style, styles),
|
|
48
44
|
complete: () => this.close?.(),
|
|
49
45
|
});
|
|
50
46
|
this.close = () => this.directive.toggle(false);
|
|
51
47
|
}
|
|
52
|
-
getStyles(
|
|
53
|
-
const { right } = this.el.getBoundingClientRect();
|
|
48
|
+
getStyles(x, y) {
|
|
54
49
|
const { maxHeight, minHeight, offset, limitWidth } = this.options;
|
|
55
|
-
const
|
|
56
|
-
const clientRect = this.el.offsetParent?.getBoundingClientRect();
|
|
57
|
-
const { position } = this.directive;
|
|
50
|
+
const { left = 0, top = 0 } = this.el.offsetParent?.getBoundingClientRect() || {};
|
|
58
51
|
const rect = this.accessor.getClientRect();
|
|
59
|
-
const
|
|
60
|
-
const
|
|
61
|
-
top
|
|
62
|
-
|
|
63
|
-
const
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
52
|
+
const viewport = this.viewport.getClientRect();
|
|
53
|
+
const above = rect.top - viewport.top - 2 * offset;
|
|
54
|
+
const below = viewport.top + viewport.height - y - offset;
|
|
55
|
+
const available = y > rect.bottom ? below : above;
|
|
56
|
+
const height = this.el.getBoundingClientRect().right <= rect.left || x >= rect.right
|
|
57
|
+
? maxHeight
|
|
58
|
+
: tuiClamp(available, minHeight, maxHeight);
|
|
59
|
+
y -= top;
|
|
60
|
+
x -= left;
|
|
68
61
|
return {
|
|
69
|
-
position,
|
|
70
|
-
top: tuiPx(Math.round(Math.max(
|
|
71
|
-
left: tuiPx(Math.round(
|
|
72
|
-
maxHeight:
|
|
73
|
-
? tuiPx(maxHeight)
|
|
74
|
-
: tuiPx(Math.round(tuiClamp(available, minHeight, maxHeight))),
|
|
62
|
+
position: this.position,
|
|
63
|
+
top: tuiPx(Math.round(Math.max(y, offset - top))),
|
|
64
|
+
left: tuiPx(Math.round(x)),
|
|
65
|
+
maxHeight: tuiPx(Math.round(height)),
|
|
75
66
|
width: limitWidth === 'fixed' ? tuiPx(Math.round(rect.width)) : '',
|
|
76
67
|
minWidth: limitWidth === 'min' ? tuiPx(Math.round(rect.width)) : '',
|
|
77
68
|
};
|
|
@@ -96,4 +87,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
96
87
|
'[attr.tuiTheme]': 'theme()',
|
|
97
88
|
}, template: "<tui-scrollbar class=\"t-scroll\">\n <div\n *polymorpheusOutlet=\"directive.content as text; context: {$implicit: close}\"\n class=\"t-primitive\"\n >\n {{ text }}\n </div>\n</tui-scrollbar>\n", styles: [":host{position:absolute;display:flex;box-shadow:var(--tui-shadow-medium);color:var(--tui-text-primary);background:var(--tui-background-elevation-3);border-radius:var(--tui-radius-m);overflow:hidden;border:1px solid var(--tui-border-normal);box-sizing:border-box;max-inline-size:calc(100% - 8px);isolation:isolate;pointer-events:auto}:host.ng-animating{pointer-events:none}:host:not([style*=top]){visibility:hidden}.t-scroll{flex-grow:1;max-inline-size:100%;inline-size:-webkit-max-content;inline-size:max-content;overscroll-behavior:none}.t-primitive{padding:1rem}\n"] }]
|
|
98
89
|
}] });
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9kaXJlY3RpdmVzL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvZGlyZWN0aXZlcy9kcm9wZG93bi9kcm9wZG93bi50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNuRixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDOUMsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ25FLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRCxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDeEQsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDL0QsT0FBTyxFQUNILHNCQUFzQixFQUN0QixlQUFlLEVBQ2Ysa0JBQWtCLEdBQ3JCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ2pFLE9BQU8sRUFBQyxrQkFBa0IsRUFBRSx3QkFBd0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3JGLE9BQU8sRUFBQyxvQkFBb0IsRUFBRSxhQUFhLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRCxPQUFP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ZixDQUFDLGtCQUFrQixFQUFFLFlBQVksQ0FBQyxtQkFLMUIsdUJBQXVCLENBQUMsT0FBTyxhQUNyQzt3QkFDUCxrQkFBa0I7d0JBQ2xCLHNCQUFzQixDQUFDLFVBQVUsRUFBRSxtQkFBbUIsQ0FBQzt3QkFDdkQsa0JBQWtCLENBQUMsVUFBVSxFQUFFLG9CQUFvQixDQUFDO3FCQUN2RCxjQUNXLENBQUMsb0JBQW9CLENBQUMsa0JBQ2xCLENBQUMsYUFBYSxDQUFDLFFBQ3pCO3dCQUNGLHlCQUF5QixFQUFFLFdBQVc7d0JBQ3RDLHdCQUF3QixFQUFFLG9CQUFvQjt3QkFDOUMsaUJBQWlCLEVBQUUsU0FBUztxQkFDL0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBpbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7V0FfV0lORE9XfSBmcm9tICdAbmctd2ViLWFwaXMvY29tbW9uJztcbmltcG9ydCB7VHVpQWN0aXZlWm9uZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay9kaXJlY3RpdmVzL2FjdGl2ZS16b25lJztcbmltcG9ydCB7dHVpSW5qZWN0RWxlbWVudH0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9kb20nO1xuaW1wb3J0IHt0dWlDbGFtcH0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9tYXRoJztcbmltcG9ydCB7dHVpUHh9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvbWlzY2VsbGFuZW91cyc7XG5pbXBvcnQge3R1aURyb3Bkb3duQW5pbWF0aW9ufSBmcm9tICdAdGFpZ2EtdWkvY29yZS9hbmltYXRpb25zJztcbmltcG9ydCB7XG4gICAgdHVpUG9zaXRpb25BY2Nlc3NvckZvcixcbiAgICBUdWlSZWN0QWNjZXNzb3IsXG4gICAgdHVpUmVjdEFjY2Vzc29yRm9yLFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jbGFzc2VzJztcbmltcG9ydCB7VHVpU2Nyb2xsYmFyfSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL3Njcm9sbGJhcic7XG5pbXBvcnQge1R1aVBvc2l0aW9uU2VydmljZSwgVHVpVmlzdWFsVmlld3BvcnRTZXJ2aWNlfSBmcm9tICdAdGFpZ2EtdWkvY29yZS9zZXJ2aWNlcyc7XG5pbXBvcnQge1RVSV9BTklNQVRJT05TX1NQRUVELCBUVUlfREFSS19NT0RFfSBmcm9tICdAdGFpZ2EtdWkvY29yZS90b2tlbnMnO1xuaW1wb3J0IHt0dWlUb0FuaW1hdGlvbk9wdGlvbnN9IGZyb20gJ0B0YWlnYS11aS9jb3JlL3V0aWxzJztcbmltcG9ydCB7UG9seW1vcnBoZXVzT3V0bGV0fSBmcm9tICdAdGFpZ2EtdWkvcG9seW1vcnBoZXVzJztcbmltcG9ydCB7bWFwLCB0YWtlV2hpbGV9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1R1aURyb3Bkb3duRGlyZWN0aXZlfSBmcm9tICcuL2Ryb3Bkb3duLmRpcmVjdGl2ZSc7XG5pbXBvcnQge1RVSV9EUk9QRE9XTl9DT05URVhUfSBmcm9tICcuL2Ryb3Bkb3duLnByb3ZpZGVycyc7XG5pbXBvcnQge1RVSV9EUk9QRE9XTl9PUFRJT05TfSBmcm9tICcuL2Ryb3Bkb3duLW9wdGlvbnMuZGlyZWN0aXZlJztcbmltcG9ydCB7VHVpRHJvcGRvd25Qb3NpdGlvbn0gZnJvbSAnLi9kcm9wZG93bi1wb3NpdGlvbi5kaXJlY3RpdmUnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbjpcbiAqIFRoaXMgY29tcG9uZW50IGlzIHVzZWQgdG8gc2hvdyB0ZW1wbGF0ZSBpbiBhIHBvcnRhbFxuICogdXNpbmcgZGVmYXVsdCBzdHlsZSBvZiB3aGl0ZSByb3VuZGVkIGJveCB3aXRoIGEgc2hhZG93XG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICd0dWktZHJvcGRvd24nLFxuICAgIGltcG9ydHM6IFtQb2x5bW9ycGhldXNPdXRsZXQsIFR1aVNjcm9sbGJhcl0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Ryb3Bkb3duLnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2Ryb3Bkb3duLnN0eWxlLmxlc3MnXSxcbiAgICAvLyBAYmFkIFRPRE86IE9uUHVzaFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvcHJlZmVyLW9uLXB1c2gtY29tcG9uZW50LWNoYW5nZS1kZXRlY3Rpb25cbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIFR1aVBvc2l0aW9uU2VydmljZSxcbiAgICAgICAgdHVpUG9zaXRpb25BY2Nlc3NvckZvcignZHJvcGRvd24nLCBUdWlEcm9wZG93blBvc2l0aW9uKSxcbiAgICAgICAgdHVpUmVjdEFjY2Vzc29yRm9yKCdkcm9wZG93bicsIFR1aURyb3Bkb3duRGlyZWN0aXZlKSxcbiAgICBdLFxuICAgIGFuaW1hdGlvbnM6IFt0dWlEcm9wZG93bkFuaW1hdGlvbl0sXG4gICAgaG9zdERpcmVjdGl2ZXM6IFtUdWlBY3RpdmVab25lXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbQHR1aURyb3Bkb3duQW5pbWF0aW9uXSc6ICdhbmltYXRpb24nLFxuICAgICAgICAnW2F0dHIuZGF0YS1hcHBlYXJhbmNlXSc6ICdvcHRpb25zLmFwcGVhcmFuY2UnLFxuICAgICAgICAnW2F0dHIudHVpVGhlbWVdJzogJ3RoZW1lKCknLFxuICAgIH0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aURyb3Bkb3duQ29tcG9uZW50IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsID0gdHVpSW5qZWN0RWxlbWVudCgpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYWNjZXNzb3IgPSBpbmplY3QoVHVpUmVjdEFjY2Vzc29yKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdpbiA9IGluamVjdChXQV9XSU5ET1cpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdnZzID0gaW5qZWN0KFR1aVZpc3VhbFZpZXdwb3J0U2VydmljZSk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgYW5pbWF0aW9uID0gdHVpVG9BbmltYXRpb25PcHRpb25zKGluamVjdChUVUlfQU5JTUFUSU9OU19TUEVFRCkpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBvcHRpb25zID0gaW5qZWN0KFRVSV9EUk9QRE9XTl9PUFRJT05TKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGlyZWN0aXZlID0gaW5qZWN0KFR1aURyb3Bkb3duRGlyZWN0aXZlKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29udGV4dCA9IGluamVjdChUVUlfRFJPUERPV05fQ09OVEVYVCwge29wdGlvbmFsOiB0cnVlfSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGRhcmtNb2RlID0gaW5qZWN0KFRVSV9EQVJLX01PREUpO1xuXG4gICAgLy8gVE9ETyh2NSk6IHVzZSBgVFVJX0RBUktfTU9ERWAgaW5zdGVhZCBvZiBlbGVtZW50IGF0dHJpYnV0ZSB0byBnZXQgY3VycmVudCB0aGVtZVxuICAgIHByb3RlY3RlZCByZWFkb25seSB0aGVtZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgdGhpcy5kYXJrTW9kZSgpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmRpcmVjdGl2ZS5lbC5jbG9zZXN0KCdbdHVpVGhlbWVdJyk/LmdldEF0dHJpYnV0ZSgndHVpVGhlbWUnKTtcbiAgICB9KTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBzdWIgPSBpbmplY3QoVHVpUG9zaXRpb25TZXJ2aWNlKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHRha2VXaGlsZShcbiAgICAgICAgICAgICAgICAoKSA9PlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpcmVjdGl2ZS5lbC5pc0Nvbm5lY3RlZCAmJlxuICAgICAgICAgICAgICAgICAgICAhIXRoaXMuZGlyZWN0aXZlLmVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBtYXAoKHYpID0+ICh0aGlzLmRpcmVjdGl2ZS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJyA/IHRoaXMudnZzLmNvcnJlY3QodikgOiB2KSksXG4gICAgICAgICAgICBtYXAoKFt0b3AsIGxlZnRdKSA9PiB0aGlzLmdldFN0eWxlcyh0b3AsIGxlZnQpKSxcbiAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgbmV4dDogKHN0eWxlcykgPT4gT2JqZWN0LmFzc2lnbih0aGlzLmVsLnN0eWxlLCBzdHlsZXMpLFxuICAgICAgICAgICAgY29tcGxldGU6ICgpID0+IHRoaXMuY2xvc2U/LigpLFxuICAgICAgICB9KTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBjbG9zZSA9ICgpOiB2b2lkID0+IHRoaXMuZGlyZWN0aXZlLnRvZ2dsZShmYWxzZSk7XG5cbiAgICBwcml2YXRlIGdldFN0eWxlcyh0b3A6IG51bWJlciwgbGVmdDogbnVtYmVyKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IHtyaWdodH0gPSB0aGlzLmVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCB7bWF4SGVpZ2h0LCBtaW5IZWlnaHQsIG9mZnNldCwgbGltaXRXaWR0aH0gPSB0aGlzLm9wdGlvbnM7XG4gICAgICAgIGNvbnN0IGlubmVySGVpZ2h0ID0gdGhpcy53aW4udmlzdWFsVmlld3BvcnQ/LmhlaWdodCA/PyB0aGlzLndpbi5pbm5lckhlaWdodDtcbiAgICAgICAgY29uc3QgY2xpZW50UmVjdCA9IHRoaXMuZWwub2Zmc2V0UGFyZW50Py5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3Qge3Bvc2l0aW9ufSA9IHRoaXMuZGlyZWN0aXZlO1xuICAgICAgICBjb25zdCByZWN0ID0gdGhpcy5hY2Nlc3Nvci5nZXRDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IG9mZnNldFggPSBwb3NpdGlvbiA9PT0gJ2ZpeGVkJyA/IDAgOiAtKGNsaWVudFJlY3Q/LmxlZnQgfHwgMCk7XG4gICAgICAgIGNvbnN0IG9mZnNldFkgPSBwb3NpdGlvbiA9PT0gJ2ZpeGVkJyA/IDAgOiAtKGNsaWVudFJlY3Q/LnRvcCB8fCAwKTtcblxuICAgICAgICB0b3AgKz0gb2Zmc2V0WTtcbiAgICAgICAgbGVmdCArPSBvZmZzZXRYO1xuXG4gICAgICAgIGNvbnN0IHNpZGVkID0gcmlnaHQgPD0gcmVjdC5sZWZ0IHx8IGxlZnQgPj0gcmVjdC5yaWdodDtcbiAgICAgICAgY29uc3QgaXNJbnRlcnNlY3RpbmcgPVxuICAgICAgICAgICAgbGVmdCA8IHJlY3QucmlnaHQgJiYgcmlnaHQgPiByZWN0LmxlZnQgJiYgdG9wIDwgb2Zmc2V0WSArIDIgKiBvZmZzZXQ7XG4gICAgICAgIGNvbnN0IGF2YWlsYWJsZSA9IGlzSW50ZXJzZWN0aW5nXG4gICAgICAgICAgICA/IHJlY3QudG9wIC0gMiAqIG9mZnNldFxuICAgICAgICAgICAgOiBvZmZzZXRZICsgaW5uZXJIZWlnaHQgLSB0b3AgLSBvZmZzZXQ7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgdG9wOiB0dWlQeChNYXRoLnJvdW5kKE1hdGgubWF4KHRvcCwgb2Zmc2V0WSArIG9mZnNldCkpKSxcbiAgICAgICAgICAgIGxlZnQ6IHR1aVB4KE1hdGgucm91bmQobGVmdCkpLFxuICAgICAgICAgICAgbWF4SGVpZ2h0OiBzaWRlZFxuICAgICAgICAgICAgICAgID8gdHVpUHgobWF4SGVpZ2h0KVxuICAgICAgICAgICAgICAgIDogdHVpUHgoTWF0aC5yb3VuZCh0dWlDbGFtcChhdmFpbGFibGUsIG1pbkhlaWdodCwgbWF4SGVpZ2h0KSkpLFxuICAgICAgICAgICAgd2lkdGg6IGxpbWl0V2lkdGggPT09ICdmaXhlZCcgPyB0dWlQeChNYXRoLnJvdW5kKHJlY3Qud2lkdGgpKSA6ICcnLFxuICAgICAgICAgICAgbWluV2lkdGg6IGxpbWl0V2lkdGggPT09ICdtaW4nID8gdHVpUHgoTWF0aC5yb3VuZChyZWN0LndpZHRoKSkgOiAnJyxcbiAgICAgICAgfTtcbiAgICB9XG59XG4iLCI8dHVpLXNjcm9sbGJhciBjbGFzcz1cInQtc2Nyb2xsXCI+XG4gICAgPGRpdlxuICAgICAgICAqcG9seW1vcnBoZXVzT3V0bGV0PVwiZGlyZWN0aXZlLmNvbnRlbnQgYXMgdGV4dDsgY29udGV4dDogeyRpbXBsaWNpdDogY2xvc2V9XCJcbiAgICAgICAgY2xhc3M9XCJ0LXByaW1pdGl2ZVwiXG4gICAgPlxuICAgICAgICB7eyB0ZXh0IH19XG4gICAgPC9kaXY+XG48L3R1aS1zY3JvbGxiYXI+XG4iXX0=
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9kaXJlY3RpdmVzL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvZGlyZWN0aXZlcy9kcm9wZG93bi9kcm9wZG93bi50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNuRixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFDbkUsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4RCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQ0gsc0JBQXNCLEVBQ3RCLGVBQWUsRUFDZixrQkFBa0IsR0FDckIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFDakUsT0FBTyxFQUFDLGtCQUFrQixFQUFFLHdCQUF3QixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDckYsT0FBTyxFQUFDLG9CQUFvQixFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RixPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx3QkFBd0IsQ0FB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b3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge1R1aUFjdGl2ZVpvbmV9IGZyb20gJ0B0YWlnYS11aS9jZGsvZGlyZWN0aXZlcy9hY3RpdmUtem9uZSc7XG5pbXBvcnQge3R1aUluamVjdEVsZW1lbnR9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvZG9tJztcbmltcG9ydCB7dHVpQ2xhbXB9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvbWF0aCc7XG5pbXBvcnQge3R1aVB4fSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL21pc2NlbGxhbmVvdXMnO1xuaW1wb3J0IHt0dWlEcm9wZG93bkFuaW1hdGlvbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvYW5pbWF0aW9ucyc7XG5pbXBvcnQge1xuICAgIHR1aVBvc2l0aW9uQWNjZXNzb3JGb3IsXG4gICAgVHVpUmVjdEFjY2Vzc29yLFxuICAgIHR1aVJlY3RBY2Nlc3NvckZvcixcbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY2xhc3Nlcyc7XG5pbXBvcnQge1R1aVNjcm9sbGJhcn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY29tcG9uZW50cy9zY3JvbGxiYXInO1xuaW1wb3J0IHtUdWlQb3NpdGlvblNlcnZpY2UsIFR1aVZpc3VhbFZpZXdwb3J0U2VydmljZX0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvc2VydmljZXMnO1xuaW1wb3J0IHtUVUlfQU5JTUFUSU9OU19TUEVFRCwgVFVJX0RBUktfTU9ERSwgVFVJX1ZJRVdQT1JUfSBmcm9tICdAdGFpZ2EtdWkvY29yZS90b2tlbnMnO1xuaW1wb3J0IHt0dWlUb0FuaW1hdGlvbk9wdGlvbnN9IGZyb20gJ0B0YWlnYS11aS9jb3JlL3V0aWxzJztcbmltcG9ydCB7UG9seW1vcnBoZXVzT3V0bGV0fSBmcm9tICdAdGFpZ2EtdWkvcG9seW1vcnBoZXVzJztcbmltcG9ydCB7bWFwLCB0YWtlV2hpbGV9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1R1aURyb3Bkb3duRGlyZWN0aXZlfSBmcm9tICcuL2Ryb3Bkb3duLmRpcmVjdGl2ZSc7XG5pbXBvcnQge1RVSV9EUk9QRE9XTl9DT05URVhUfSBmcm9tICcuL2Ryb3Bkb3duLnByb3ZpZGVycyc7XG5pbXBvcnQge1RVSV9EUk9QRE9XTl9PUFRJT05TfSBmcm9tICcuL2Ryb3Bkb3duLW9wdGlvbnMuZGlyZWN0aXZlJztcbmltcG9ydCB7VHVpRHJvcGRvd25Qb3NpdGlvbn0gZnJvbSAnLi9kcm9wZG93bi1wb3NpdGlvbi5kaXJlY3RpdmUnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbjpcbiAqIFRoaXMgY29tcG9uZW50IGlzIHVzZWQgdG8gc2hvdyB0ZW1wbGF0ZSBpbiBhIHBvcnRhbFxuICogdXNpbmcgZGVmYXVsdCBzdHlsZSBvZiB3aGl0ZSByb3VuZGVkIGJveCB3aXRoIGEgc2hhZG93XG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICd0dWktZHJvcGRvd24nLFxuICAgIGltcG9ydHM6IFtQb2x5bW9ycGhldXNPdXRsZXQsIFR1aVNjcm9sbGJhcl0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Ryb3Bkb3duLnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2Ryb3Bkb3duLnN0eWxlLmxlc3MnXSxcbiAgICAvLyBAYmFkIFRPRE86IE9uUHVzaFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvcHJlZmVyLW9uLXB1c2gtY29tcG9uZW50LWNoYW5nZS1kZXRlY3Rpb25cbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIFR1aVBvc2l0aW9uU2VydmljZSxcbiAgICAgICAgdHVpUG9zaXRpb25BY2Nlc3NvckZvcignZHJvcGRvd24nLCBUdWlEcm9wZG93blBvc2l0aW9uKSxcbiAgICAgICAgdHVpUmVjdEFjY2Vzc29yRm9yKCdkcm9wZG93bicsIFR1aURyb3Bkb3duRGlyZWN0aXZlKSxcbiAgICBdLFxuICAgIGFuaW1hdGlvbnM6IFt0dWlEcm9wZG93bkFuaW1hdGlvbl0sXG4gICAgaG9zdERpcmVjdGl2ZXM6IFtUdWlBY3RpdmVab25lXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbQHR1aURyb3Bkb3duQW5pbWF0aW9uXSc6ICdhbmltYXRpb24nLFxuICAgICAgICAnW2F0dHIuZGF0YS1hcHBlYXJhbmNlXSc6ICdvcHRpb25zLmFwcGVhcmFuY2UnLFxuICAgICAgICAnW2F0dHIudHVpVGhlbWVdJzogJ3RoZW1lKCknLFxuICAgIH0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aURyb3Bkb3duQ29tcG9uZW50IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsID0gdHVpSW5qZWN0RWxlbWVudCgpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYWNjZXNzb3IgPSBpbmplY3QoVHVpUmVjdEFjY2Vzc29yKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHZpZXdwb3J0ID0gaW5qZWN0KFRVSV9WSUVXUE9SVCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSB2dnMgPSBpbmplY3QoVHVpVmlzdWFsVmlld3BvcnRTZXJ2aWNlKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBhbmltYXRpb24gPSB0dWlUb0FuaW1hdGlvbk9wdGlvbnMoaW5qZWN0KFRVSV9BTklNQVRJT05TX1NQRUVEKSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG9wdGlvbnMgPSBpbmplY3QoVFVJX0RST1BET1dOX09QVElPTlMpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBkaXJlY3RpdmUgPSBpbmplY3QoVHVpRHJvcGRvd25EaXJlY3RpdmUpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBjb250ZXh0ID0gaW5qZWN0KFRVSV9EUk9QRE9XTl9DT05URVhULCB7b3B0aW9uYWw6IHRydWV9KTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGFya01vZGUgPSBpbmplY3QoVFVJX0RBUktfTU9ERSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHBvc2l0aW9uID0gdGhpcy5kaXJlY3RpdmUucG9zaXRpb247XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHRoZW1lID0gY29tcHV0ZWQoKF8gPSB0aGlzLmRhcmtNb2RlKCkpID0+XG4gICAgICAgIHRoaXMuZGlyZWN0aXZlLmVsLmNsb3Nlc3QoJ1t0dWlUaGVtZV0nKT8uZ2V0QXR0cmlidXRlKCd0dWlUaGVtZScpLFxuICAgICk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3ViID0gaW5qZWN0KFR1aVBvc2l0aW9uU2VydmljZSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICB0YWtlV2hpbGUoXG4gICAgICAgICAgICAgICAgKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXJlY3RpdmUuZWwuaXNDb25uZWN0ZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgISF0aGlzLmRpcmVjdGl2ZS5lbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgbWFwKCh2KSA9PiAodGhpcy5kaXJlY3RpdmUucG9zaXRpb24gPT09ICdmaXhlZCcgPyB0aGlzLnZ2cy5jb3JyZWN0KHYpIDogdikpLFxuICAgICAgICAgICAgbWFwKChbdG9wLCBsZWZ0XSkgPT4gdGhpcy5nZXRTdHlsZXMobGVmdCwgdG9wKSksXG4gICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6IChzdHlsZXMpID0+IE9iamVjdC5hc3NpZ24odGhpcy5lbC5zdHlsZSwgc3R5bGVzKSxcbiAgICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB0aGlzLmNsb3NlPy4oKSxcbiAgICAgICAgfSk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2xvc2UgPSAoKTogdm9pZCA9PiB0aGlzLmRpcmVjdGl2ZS50b2dnbGUoZmFsc2UpO1xuXG4gICAgcHJpdmF0ZSBnZXRTdHlsZXMoeDogbnVtYmVyLCB5OiBudW1iZXIpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICAgICAgY29uc3Qge21heEhlaWdodCwgbWluSGVpZ2h0LCBvZmZzZXQsIGxpbWl0V2lkdGh9ID0gdGhpcy5vcHRpb25zO1xuICAgICAgICBjb25zdCB7bGVmdCA9IDAsIHRvcCA9IDB9ID0gdGhpcy5lbC5vZmZzZXRQYXJlbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpIHx8IHt9O1xuICAgICAgICBjb25zdCByZWN0ID0gdGhpcy5hY2Nlc3Nvci5nZXRDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IHZpZXdwb3J0ID0gdGhpcy52aWV3cG9ydC5nZXRDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IGFib3ZlID0gcmVjdC50b3AgLSB2aWV3cG9ydC50b3AgLSAyICogb2Zmc2V0O1xuICAgICAgICBjb25zdCBiZWxvdyA9IHZpZXdwb3J0LnRvcCArIHZpZXdwb3J0LmhlaWdodCAtIHkgLSBvZmZzZXQ7XG4gICAgICAgIGNvbnN0IGF2YWlsYWJsZSA9IHkgPiByZWN0LmJvdHRvbSA/IGJlbG93IDogYWJvdmU7XG4gICAgICAgIGNvbnN0IGhlaWdodCA9XG4gICAgICAgICAgICB0aGlzLmVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnJpZ2h0IDw9IHJlY3QubGVmdCB8fCB4ID49IHJlY3QucmlnaHRcbiAgICAgICAgICAgICAgICA/IG1heEhlaWdodFxuICAgICAgICAgICAgICAgIDogdHVpQ2xhbXAoYXZhaWxhYmxlLCBtaW5IZWlnaHQsIG1heEhlaWdodCk7XG5cbiAgICAgICAgeSAtPSB0b3A7XG4gICAgICAgIHggLT0gbGVmdDtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcG9zaXRpb246IHRoaXMucG9zaXRpb24sXG4gICAgICAgICAgICB0b3A6IHR1aVB4KE1hdGgucm91bmQoTWF0aC5tYXgoeSwgb2Zmc2V0IC0gdG9wKSkpLFxuICAgICAgICAgICAgbGVmdDogdHVpUHgoTWF0aC5yb3VuZCh4KSksXG4gICAgICAgICAgICBtYXhIZWlnaHQ6IHR1aVB4KE1hdGgucm91bmQoaGVpZ2h0KSksXG4gICAgICAgICAgICB3aWR0aDogbGltaXRXaWR0aCA9PT0gJ2ZpeGVkJyA/IHR1aVB4KE1hdGgucm91bmQocmVjdC53aWR0aCkpIDogJycsXG4gICAgICAgICAgICBtaW5XaWR0aDogbGltaXRXaWR0aCA9PT0gJ21pbicgPyB0dWlQeChNYXRoLnJvdW5kKHJlY3Qud2lkdGgpKSA6ICcnLFxuICAgICAgICB9O1xuICAgIH1cbn1cbiIsIjx0dWktc2Nyb2xsYmFyIGNsYXNzPVwidC1zY3JvbGxcIj5cbiAgICA8ZGl2XG4gICAgICAgICpwb2x5bW9ycGhldXNPdXRsZXQ9XCJkaXJlY3RpdmUuY29udGVudCBhcyB0ZXh0OyBjb250ZXh0OiB7JGltcGxpY2l0OiBjbG9zZX1cIlxuICAgICAgICBjbGFzcz1cInQtcHJpbWl0aXZlXCJcbiAgICA+XG4gICAgICAgIHt7IHRleHQgfX1cbiAgICA8L2Rpdj5cbjwvdHVpLXNjcm9sbGJhcj5cbiJdfQ==
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
1
|
import { coerceArray } from '@angular/cdk/coercion';
|
|
3
2
|
import { ChangeDetectorRef, Directive, inject, INJECTOR, Input, signal, TemplateRef, } from '@angular/core';
|
|
4
3
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
5
4
|
import { tuiZonefreeScheduler } from '@taiga-ui/cdk/observables';
|
|
6
5
|
import { tuiInjectElement } from '@taiga-ui/cdk/utils/dom';
|
|
7
|
-
import { tuiPure } from '@taiga-ui/cdk/utils/miscellaneous';
|
|
8
6
|
import { tuiAsRectAccessor, tuiAsVehicle } from '@taiga-ui/core/classes';
|
|
9
7
|
import { tuiCheckFixedPosition } from '@taiga-ui/core/utils';
|
|
10
8
|
import { PolymorpheusComponent, PolymorpheusTemplate } from '@taiga-ui/polymorpheus';
|
|
@@ -79,9 +77,6 @@ class TuiDropdownDirective {
|
|
|
79
77
|
tuiAsVehicle(TuiDropdownDirective),
|
|
80
78
|
], exportAs: ["tuiDropdown"], usesOnChanges: true, hostDirectives: [{ directive: i1.TuiDropdownDriverDirective }, { directive: i2.TuiDropdownPosition, outputs: ["tuiDropdownDirectionChange", "tuiDropdownDirectionChange"] }], ngImport: i0 }); }
|
|
81
79
|
}
|
|
82
|
-
__decorate([
|
|
83
|
-
tuiPure
|
|
84
|
-
], TuiDropdownDirective.prototype, "position", null);
|
|
85
80
|
export { TuiDropdownDirective };
|
|
86
81
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownDirective, decorators: [{
|
|
87
82
|
type: Directive,
|
|
@@ -106,5 +101,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
106
101
|
}]
|
|
107
102
|
}], propDecorators: { tuiDropdown: [{
|
|
108
103
|
type: Input
|
|
109
|
-
}]
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9kaXJlY3RpdmVzL2Ryb3Bkb3duL2Ryb3Bkb3duLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBRWxELE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sRUFDTixXQUFXLEdBQ2QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFFL0QsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBRTFELE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxZQUFZLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUV2RSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRCxPQUFPLEVBQUMscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRixPQUFPLEVBQUMsT0FBTyxFQUFFLFlBQVksRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUUzQyxPQUFPLEVBQUMsaUJBQWlCLEVBQUUsMEJBQTBCLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRixPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUM1RCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQzs7OztBQUVs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SUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM1QixDQUFDOytHQW5GUSxvQkFBb0I7bUdBQXBCLG9CQUFvQixxTUFoQmxCO1lBQ1AsaUJBQWlCLENBQUMsb0JBQW9CLENBQUM7WUFDdkMsWUFBWSxDQUFDLG9CQUFvQixDQUFDO1NBQ3JDOztBQTRERDtJQURDLE9BQU87b0RBR1A7U0FqRFEsb0JBQW9COzRGQUFwQixvQkFBb0I7a0JBbkJoQyxTQUFTO21CQUFDO29CQUNQLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsa0RBQWtEO29CQUM1RCxTQUFTLEVBQUU7d0JBQ1AsaUJBQWlCLHNCQUFzQjt3QkFDdkMsWUFBWSxzQkFBc0I7cUJBQ3JDO29CQUNELFFBQVEsRUFBRSxhQUFhO29CQUN2QixjQUFjLEVBQUU7d0JBQ1osMEJBQTBCO3dCQUMxQjs0QkFDSSxTQUFTLEVBQUUsbUJBQW1COzRCQUM5QixPQUFPLEVBQUUsQ0FBQyw0QkFBNEIsQ0FBQzt5QkFDMUM7cUJBQ0o7b0JBQ0QsSUFBSSxFQUFFO3dCQUNGLDJCQUEyQixFQUFFLE9BQU87cUJBQ3ZDO2lCQUNKOzhCQXdDYyxXQUFXO3NCQURyQixLQUFLO2dCQVNLLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2NvZXJjZUFycmF5fSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHR5cGUge0FmdGVyVmlld0NoZWNrZWQsIENvbXBvbmVudFJlZiwgT25DaGFuZ2VzLCBPbkRlc3Ryb3l9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBEaXJlY3RpdmUsXG4gICAgaW5qZWN0LFxuICAgIElOSkVDVE9SLFxuICAgIElucHV0LFxuICAgIHNpZ25hbCxcbiAgICBUZW1wbGF0ZVJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHt0dWlab25lZnJlZVNjaGVkdWxlcn0gZnJvbSAnQHRhaWdhLXVpL2Nkay9vYnNlcnZhYmxlcyc7XG5pbXBvcnQgdHlwZSB7VHVpQ29udGV4dH0gZnJvbSAnQHRhaWdhLXVpL2Nkay90eXBlcyc7XG5pbXBvcnQge3R1aUluamVjdEVsZW1lbnR9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvZG9tJztcbmltcG9ydCB7dHVpUHVyZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9taXNjZWxsYW5lb3VzJztcbmltcG9ydCB0eXBlIHtUdWlSZWN0QWNjZXNzb3IsIFR1aVZlaGljbGV9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NsYXNzZXMnO1xuaW1wb3J0IHt0dWlBc1JlY3RBY2Nlc3NvciwgdHVpQXNWZWhpY2xlfSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jbGFzc2VzJztcbmltcG9ydCB0eXBlIHtUdWlQb3J0YWxJdGVtfSBmcm9tICdAdGFpZ2EtdWkvY29yZS90eXBlcyc7XG5pbXBvcnQge3R1aUNoZWNrRml4ZWRQb3NpdGlvbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvdXRpbHMnO1xuaW1wb3J0IHR5cGUge1BvbHltb3JwaGV1c0NvbnRlbnR9IGZyb20gJ0B0YWlnYS11aS9wb2x5bW9ycGhldXMnO1xuaW1wb3J0IHtQb2x5bW9ycGhldXNDb21wb25lbnQsIFBvbHltb3JwaGV1c1RlbXBsYXRlfSBmcm9tICdAdGFpZ2EtdWkvcG9seW1vcnBoZXVzJztcbmltcG9ydCB7U3ViamVjdCwgdGhyb3R0bGVUaW1lfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtUdWlEcm9wZG93bkRyaXZlciwgVHVpRHJvcGRvd25Ecml2ZXJEaXJlY3RpdmV9IGZyb20gJy4vZHJvcGRvd24uZHJpdmVyJztcbmltcG9ydCB7VFVJX0RST1BET1dOX0NPTVBPTkVOVH0gZnJvbSAnLi9kcm9wZG93bi5wcm92aWRlcnMnO1xuaW1wb3J0IHtUdWlEcm9wZG93blNlcnZpY2V9IGZyb20gJy4vZHJvcGRvd24uc2VydmljZSc7XG5pbXBvcnQge1R1aURyb3Bkb3duUG9zaXRpb259IGZyb20gJy4vZHJvcGRvd24tcG9zaXRpb24uZGlyZWN0aXZlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ1t0dWlEcm9wZG93bl06bm90KG5nLWNvbnRhaW5lcik6bm90KG5nLXRlbXBsYXRlKScsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHR1aUFzUmVjdEFjY2Vzc29yKFR1aURyb3Bkb3duRGlyZWN0aXZlKSxcbiAgICAgICAgdHVpQXNWZWhpY2xlKFR1aURyb3Bkb3duRGlyZWN0aXZlKSxcbiAgICBdLFxuICAgIGV4cG9ydEFzOiAndHVpRHJvcGRvd24nLFxuICAgIGhvc3REaXJlY3RpdmVzOiBbXG4gICAgICAgIFR1aURyb3Bkb3duRHJpdmVyRGlyZWN0aXZlLFxuICAgICAgICB7XG4gICAgICAgICAgICBkaXJlY3RpdmU6IFR1aURyb3Bkb3duUG9zaXRpb24sXG4gICAgICAgICAgICBvdXRwdXRzOiBbJ3R1aURyb3Bkb3duRGlyZWN0aW9uQ2hhbmdlJ10sXG4gICAgICAgIH0sXG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbY2xhc3MudHVpLWRyb3Bkb3duLW9wZW5dJzogJ3JlZigpJyxcbiAgICB9LFxufSlcbmV4cG9ydCBjbGFzcyBUdWlEcm9wZG93bkRpcmVjdGl2ZVxuICAgIGltcGxlbWVudHNcbiAgICAgICAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgICAgICAgT25EZXN0cm95LFxuICAgICAgICBPbkNoYW5nZXMsXG4gICAgICAgIFR1aVBvcnRhbEl0ZW0sXG4gICAgICAgIFR1aVJlY3RBY2Nlc3NvcixcbiAgICAgICAgVHVpVmVoaWNsZVxue1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVmcmVzaCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc2VydmljZSA9IGluamVjdChUdWlEcm9wZG93blNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICAgIC8vIFRPRE86IHRoaW5rIG9mIGEgYmV0dGVyIHNvbHV0aW9uIGxhdGVyXG4gICAgcHJpdmF0ZSByZWFkb25seSBkcml2ZXJzID0gY29lcmNlQXJyYXkoXG4gICAgICAgIGluamVjdChUdWlEcm9wZG93bkRyaXZlciwge1xuICAgICAgICAgICAgc2VsZjogdHJ1ZSxcbiAgICAgICAgICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgICAgICB9KSxcbiAgICApO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHN1YiA9IHRoaXMucmVmcmVzaCRcbiAgICAgICAgLnBpcGUodGhyb3R0bGVUaW1lKDAsIHR1aVpvbmVmcmVlU2NoZWR1bGVyKCkpLCB0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlZigpPy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB0aGlzLnJlZigpPy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgZWwgPSB0dWlJbmplY3RFbGVtZW50KCk7XG4gICAgcHVibGljIHJlYWRvbmx5IHR5cGUgPSAnZHJvcGRvd24nO1xuICAgIHB1YmxpYyByZWFkb25seSBjb21wb25lbnQgPSBuZXcgUG9seW1vcnBoZXVzQ29tcG9uZW50KFxuICAgICAgICBpbmplY3QoVFVJX0RST1BET1dOX0NPTVBPTkVOVCksXG4gICAgICAgIGluamVjdChJTkpFQ1RPUiksXG4gICAgKTtcblxuICAgIHB1YmxpYyByZWYgPSBzaWduYWw8Q29tcG9uZW50UmVmPHVua25vd24+IHwgbnVsbD4obnVsbCk7XG4gICAgcHVibGljIGNvbnRlbnQ6IFBvbHltb3JwaGV1c0NvbnRlbnQ8VHVpQ29udGV4dDwoKSA9PiB2b2lkPj47XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgdHVpRHJvcGRvd24oY29udGVudDogUG9seW1vcnBoZXVzQ29udGVudDxUdWlDb250ZXh0PCgpID0+IHZvaWQ+Pikge1xuICAgICAgICB0aGlzLmNvbnRlbnQgPVxuICAgICAgICAgICAgY29udGVudCBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmXG4gICAgICAgICAgICAgICAgPyBuZXcgUG9seW1vcnBoZXVzVGVtcGxhdGUoY29udGVudCwgdGhpcy5jZHIpXG4gICAgICAgICAgICAgICAgOiBjb250ZW50O1xuICAgIH1cblxuICAgIEB0dWlQdXJlXG4gICAgcHVibGljIGdldCBwb3NpdGlvbigpOiAnYWJzb2x1dGUnIHwgJ2ZpeGVkJyB7XG4gICAgICAgIHJldHVybiB0dWlDaGVja0ZpeGVkUG9zaXRpb24odGhpcy5lbCkgPyAnZml4ZWQnIDogJ2Fic29sdXRlJztcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlZnJlc2gkLm5leHQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5jb250ZW50KSB7XG4gICAgICAgICAgICB0aGlzLnRvZ2dsZShmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMudG9nZ2xlKGZhbHNlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q2xpZW50UmVjdCgpOiBET01SZWN0IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIHRvZ2dsZShzaG93OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlZiA9IHRoaXMucmVmKCk7XG5cbiAgICAgICAgaWYgKHNob3cgJiYgdGhpcy5jb250ZW50ICYmICFyZWYpIHtcbiAgICAgICAgICAgIHRoaXMucmVmLnNldCh0aGlzLnNlcnZpY2UuYWRkKHRoaXMuY29tcG9uZW50KSk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXNob3cgJiYgcmVmKSB7XG4gICAgICAgICAgICB0aGlzLnJlZi5zZXQobnVsbCk7XG4gICAgICAgICAgICB0aGlzLnNlcnZpY2UucmVtb3ZlKHJlZik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmRyaXZlcnMuZm9yRWFjaCgoZHJpdmVyKSA9PiBkcml2ZXI/Lm5leHQoc2hvdykpO1xuXG4gICAgICAgIC8vIFRPRE86IFJlbW92ZSBpbiB2NSwgb25seSBuZWVkZWQgaW4gQW5ndWxhciAxNlxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG59XG4iXX0=
|
|
104
|
+
}] } });
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9kaXJlY3RpdmVzL2Ryb3Bkb3duL2Ryb3Bkb3duLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFFbEQsT0FBTyxFQUNILGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBQ0wsTUFBTSxFQUNOLFdBQVcsR0FDZCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUUvRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUV6RCxPQUFPLEVBQUMsaUJBQWlCLEVBQUUsWUFBWSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFFdkUsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFFM0QsT0FBTyxFQUFDLHFCQUFxQixFQUFFLG9CQUFvQixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDbkYsT0FBTyxFQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFM0MsT0FBTyxFQUFDLGlCQUFpQixFQUFFLDBCQUEwQixFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDaEYsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDNUQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sK0JBQStCLENBQUM7Ozs7QUFFbEUsTUFtQmEsb0JBQW9CO0lBbkJqQztRQTRCcUIsYUFBUSxHQUFHLElBQUks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QzsrR0FsRlEsb0JBQW9CO21HQUFwQixvQkFBb0IscU1BaEJsQjtZQUNQLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDO1lBQ3ZDLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQztTQUNyQzs7U0FhUSxvQkFBb0I7NEZBQXBCLG9CQUFvQjtrQkFuQmhDLFNBQVM7bUJBQUM7b0JBQ1AsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxrREFBa0Q7b0JBQzVELFNBQVMsRUFBRTt3QkFDUCxpQkFBaUIsc0JBQXNCO3dCQUN2QyxZQUFZLHNCQUFzQjtxQkFDckM7b0JBQ0QsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLGNBQWMsRUFBRTt3QkFDWiwwQkFBMEI7d0JBQzFCOzRCQUNJLFNBQVMsRUFBRSxtQkFBbUI7NEJBQzlCLE9BQU8sRUFBRSxDQUFDLDRCQUE0QixDQUFDO3lCQUMxQztxQkFDSjtvQkFDRCxJQUFJLEVBQUU7d0JBQ0YsMkJBQTJCLEVBQUUsT0FBTztxQkFDdkM7aUJBQ0o7OEJBd0NjLFdBQVc7c0JBRHJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2NvZXJjZUFycmF5fSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHR5cGUge0FmdGVyVmlld0NoZWNrZWQsIENvbXBvbmVudFJlZiwgT25DaGFuZ2VzLCBPbkRlc3Ryb3l9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBEaXJlY3RpdmUsXG4gICAgaW5qZWN0LFxuICAgIElOSkVDVE9SLFxuICAgIElucHV0LFxuICAgIHNpZ25hbCxcbiAgICBUZW1wbGF0ZVJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHt0dWlab25lZnJlZVNjaGVkdWxlcn0gZnJvbSAnQHRhaWdhLXVpL2Nkay9vYnNlcnZhYmxlcyc7XG5pbXBvcnQgdHlwZSB7VHVpQ29udGV4dH0gZnJvbSAnQHRhaWdhLXVpL2Nkay90eXBlcyc7XG5pbXBvcnQge3R1aUluamVjdEVsZW1lbnR9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvZG9tJztcbmltcG9ydCB0eXBlIHtUdWlSZWN0QWNjZXNzb3IsIFR1aVZlaGljbGV9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NsYXNzZXMnO1xuaW1wb3J0IHt0dWlBc1JlY3RBY2Nlc3NvciwgdHVpQXNWZWhpY2xlfSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jbGFzc2VzJztcbmltcG9ydCB0eXBlIHtUdWlQb3J0YWxJdGVtfSBmcm9tICdAdGFpZ2EtdWkvY29yZS90eXBlcyc7XG5pbXBvcnQge3R1aUNoZWNrRml4ZWRQb3NpdGlvbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvdXRpbHMnO1xuaW1wb3J0IHR5cGUge1BvbHltb3JwaGV1c0NvbnRlbnR9IGZyb20gJ0B0YWlnYS11aS9wb2x5bW9ycGhldXMnO1xuaW1wb3J0IHtQb2x5bW9ycGhldXNDb21wb25lbnQsIFBvbHltb3JwaGV1c1RlbXBsYXRlfSBmcm9tICdAdGFpZ2EtdWkvcG9seW1vcnBoZXVzJztcbmltcG9ydCB7U3ViamVjdCwgdGhyb3R0bGVUaW1lfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtUdWlEcm9wZG93bkRyaXZlciwgVHVpRHJvcGRvd25Ecml2ZXJEaXJlY3RpdmV9IGZyb20gJy4vZHJvcGRvd24uZHJpdmVyJztcbmltcG9ydCB7VFVJX0RST1BET1dOX0NPTVBPTkVOVH0gZnJvbSAnLi9kcm9wZG93bi5wcm92aWRlcnMnO1xuaW1wb3J0IHtUdWlEcm9wZG93blNlcnZpY2V9IGZyb20gJy4vZHJvcGRvd24uc2VydmljZSc7XG5pbXBvcnQge1R1aURyb3Bkb3duUG9zaXRpb259IGZyb20gJy4vZHJvcGRvd24tcG9zaXRpb24uZGlyZWN0aXZlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ1t0dWlEcm9wZG93bl06bm90KG5nLWNvbnRhaW5lcik6bm90KG5nLXRlbXBsYXRlKScsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHR1aUFzUmVjdEFjY2Vzc29yKFR1aURyb3Bkb3duRGlyZWN0aXZlKSxcbiAgICAgICAgdHVpQXNWZWhpY2xlKFR1aURyb3Bkb3duRGlyZWN0aXZlKSxcbiAgICBdLFxuICAgIGV4cG9ydEFzOiAndHVpRHJvcGRvd24nLFxuICAgIGhvc3REaXJlY3RpdmVzOiBbXG4gICAgICAgIFR1aURyb3Bkb3duRHJpdmVyRGlyZWN0aXZlLFxuICAgICAgICB7XG4gICAgICAgICAgICBkaXJlY3RpdmU6IFR1aURyb3Bkb3duUG9zaXRpb24sXG4gICAgICAgICAgICBvdXRwdXRzOiBbJ3R1aURyb3Bkb3duRGlyZWN0aW9uQ2hhbmdlJ10sXG4gICAgICAgIH0sXG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbY2xhc3MudHVpLWRyb3Bkb3duLW9wZW5dJzogJ3JlZigpJyxcbiAgICB9LFxufSlcbmV4cG9ydCBjbGFzcyBUdWlEcm9wZG93bkRpcmVjdGl2ZVxuICAgIGltcGxlbWVudHNcbiAgICAgICAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgICAgICAgT25EZXN0cm95LFxuICAgICAgICBPbkNoYW5nZXMsXG4gICAgICAgIFR1aVBvcnRhbEl0ZW0sXG4gICAgICAgIFR1aVJlY3RBY2Nlc3NvcixcbiAgICAgICAgVHVpVmVoaWNsZVxue1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVmcmVzaCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc2VydmljZSA9IGluamVjdChUdWlEcm9wZG93blNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICAgIC8vIFRPRE86IHRoaW5rIG9mIGEgYmV0dGVyIHNvbHV0aW9uIGxhdGVyXG4gICAgcHJpdmF0ZSByZWFkb25seSBkcml2ZXJzID0gY29lcmNlQXJyYXkoXG4gICAgICAgIGluamVjdChUdWlEcm9wZG93bkRyaXZlciwge1xuICAgICAgICAgICAgc2VsZjogdHJ1ZSxcbiAgICAgICAgICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgICAgICB9KSxcbiAgICApO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHN1YiA9IHRoaXMucmVmcmVzaCRcbiAgICAgICAgLnBpcGUodGhyb3R0bGVUaW1lKDAsIHR1aVpvbmVmcmVlU2NoZWR1bGVyKCkpLCB0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlZigpPy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB0aGlzLnJlZigpPy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgZWwgPSB0dWlJbmplY3RFbGVtZW50KCk7XG4gICAgcHVibGljIHJlYWRvbmx5IHR5cGUgPSAnZHJvcGRvd24nO1xuICAgIHB1YmxpYyByZWFkb25seSBjb21wb25lbnQgPSBuZXcgUG9seW1vcnBoZXVzQ29tcG9uZW50KFxuICAgICAgICBpbmplY3QoVFVJX0RST1BET1dOX0NPTVBPTkVOVCksXG4gICAgICAgIGluamVjdChJTkpFQ1RPUiksXG4gICAgKTtcblxuICAgIHB1YmxpYyByZWYgPSBzaWduYWw8Q29tcG9uZW50UmVmPHVua25vd24+IHwgbnVsbD4obnVsbCk7XG4gICAgcHVibGljIGNvbnRlbnQ6IFBvbHltb3JwaGV1c0NvbnRlbnQ8VHVpQ29udGV4dDwoKSA9PiB2b2lkPj47XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgdHVpRHJvcGRvd24oY29udGVudDogUG9seW1vcnBoZXVzQ29udGVudDxUdWlDb250ZXh0PCgpID0+IHZvaWQ+Pikge1xuICAgICAgICB0aGlzLmNvbnRlbnQgPVxuICAgICAgICAgICAgY29udGVudCBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmXG4gICAgICAgICAgICAgICAgPyBuZXcgUG9seW1vcnBoZXVzVGVtcGxhdGUoY29udGVudCwgdGhpcy5jZHIpXG4gICAgICAgICAgICAgICAgOiBjb250ZW50O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcG9zaXRpb24oKTogJ2Fic29sdXRlJyB8ICdmaXhlZCcge1xuICAgICAgICByZXR1cm4gdHVpQ2hlY2tGaXhlZFBvc2l0aW9uKHRoaXMuZWwpID8gJ2ZpeGVkJyA6ICdhYnNvbHV0ZSc7XG4gICAgfVxuXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZWZyZXNoJC5uZXh0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuY29udGVudCkge1xuICAgICAgICAgICAgdGhpcy50b2dnbGUoZmFsc2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRvZ2dsZShmYWxzZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldENsaWVudFJlY3QoKTogRE9NUmVjdCB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b2dnbGUoc2hvdzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBjb25zdCByZWYgPSB0aGlzLnJlZigpO1xuXG4gICAgICAgIGlmIChzaG93ICYmIHRoaXMuY29udGVudCAmJiAhcmVmKSB7XG4gICAgICAgICAgICB0aGlzLnJlZi5zZXQodGhpcy5zZXJ2aWNlLmFkZCh0aGlzLmNvbXBvbmVudCkpO1xuICAgICAgICB9IGVsc2UgaWYgKCFzaG93ICYmIHJlZikge1xuICAgICAgICAgICAgdGhpcy5yZWYuc2V0KG51bGwpO1xuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLnJlbW92ZShyZWYpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kcml2ZXJzLmZvckVhY2goKGRyaXZlcikgPT4gZHJpdmVyPy5uZXh0KHNob3cpKTtcblxuICAgICAgICAvLyBUT0RPOiBSZW1vdmUgaW4gdjUsIG9ubHkgbmVlZGVkIGluIEFuZ3VsYXIgMTZcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxufVxuIl19
|
|
@@ -7,7 +7,7 @@ import * as i0 from "@angular/core";
|
|
|
7
7
|
*/
|
|
8
8
|
class TuiDropdowns extends TuiPortals {
|
|
9
9
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdowns, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
10
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiDropdowns, isStandalone: true, selector: "tui-dropdowns", providers: [tuiAsPortal(TuiDropdownService)], usesInheritance: true, ngImport: i0, template: '<ng-container #viewContainer />', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
10
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiDropdowns, isStandalone: true, selector: "tui-dropdowns", host: { styleAttribute: "position: absolute; width: 100%; top: 0" }, providers: [tuiAsPortal(TuiDropdownService)], usesInheritance: true, ngImport: i0, template: '<ng-container #viewContainer />', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
11
11
|
}
|
|
12
12
|
export { TuiDropdowns };
|
|
13
13
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdowns, decorators: [{
|
|
@@ -18,6 +18,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
18
18
|
template: '<ng-container #viewContainer />',
|
|
19
19
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
20
20
|
providers: [tuiAsPortal(TuiDropdownService)],
|
|
21
|
+
host: { style: 'position: absolute; width: 100%; top: 0' },
|
|
21
22
|
}]
|
|
22
23
|
}] });
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvZGlyZWN0aXZlcy9kcm9wZG93bi9kcm9wZG93bnMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUU5RCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQzs7QUFFdEQ7O0dBRUc7QUFDSCxNQVFhLFlBQWEsU0FBUSxVQUFVOytHQUEvQixZQUFZO21HQUFaLFlBQVksaUlBSFYsQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxpREFGbEMsaUNBQWlDOztTQUtsQyxZQUFZOzRGQUFaLFlBQVk7a0JBUnhCLFNBQVM7bUJBQUM7b0JBQ1AsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxlQUFlO29CQUN6QixRQUFRLEVBQUUsaUNBQWlDO29CQUMzQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLENBQUM7b0JBQzVDLElBQUksRUFBRSxFQUFDLEtBQUssRUFBRSx5Q0FBeUMsRUFBQztpQkFDM0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0dWlBc1BvcnRhbCwgVHVpUG9ydGFsc30gZnJvbSAnQHRhaWdhLXVpL2Nkay9jbGFzc2VzJztcblxuaW1wb3J0IHtUdWlEcm9wZG93blNlcnZpY2V9IGZyb20gJy4vZHJvcGRvd24uc2VydmljZSc7XG5cbi8qKlxuICogSG9zdCBlbGVtZW50IGZvciBkeW5hbWljYWxseSBjcmVhdGVkIHBvcnRhbHMsIGZvciBleGFtcGxlIHVzaW5nIHtAbGluayBUdWlEcm9wZG93bkRpcmVjdGl2ZX0uXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICd0dWktZHJvcGRvd25zJyxcbiAgICB0ZW1wbGF0ZTogJzxuZy1jb250YWluZXIgI3ZpZXdDb250YWluZXIgLz4nLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW3R1aUFzUG9ydGFsKFR1aURyb3Bkb3duU2VydmljZSldLFxuICAgIGhvc3Q6IHtzdHlsZTogJ3Bvc2l0aW9uOiBhYnNvbHV0ZTsgd2lkdGg6IDEwMCU7IHRvcDogMCd9LFxufSlcbmV4cG9ydCBjbGFzcyBUdWlEcm9wZG93bnMgZXh0ZW5kcyBUdWlQb3J0YWxzIHt9XG4iXX0=
|
|
@@ -9,13 +9,14 @@ export const TUI_VIEWPORT = tuiCreateTokenFromFactory(() => {
|
|
|
9
9
|
return {
|
|
10
10
|
type: 'viewport',
|
|
11
11
|
getClientRect() {
|
|
12
|
+
const { height = 0, offsetTop = 0 } = win.visualViewport || {};
|
|
12
13
|
const rect = {
|
|
13
14
|
top: 0,
|
|
14
15
|
left: 0,
|
|
15
16
|
right: win.innerWidth,
|
|
16
17
|
bottom: win.innerHeight,
|
|
17
18
|
width: win.innerWidth,
|
|
18
|
-
height: win.innerHeight,
|
|
19
|
+
height: height + offsetTop || win.innerHeight,
|
|
19
20
|
x: 0,
|
|
20
21
|
y: 0,
|
|
21
22
|
};
|
|
@@ -29,4 +30,4 @@ export const TUI_VIEWPORT = tuiCreateTokenFromFactory(() => {
|
|
|
29
30
|
export function tuiAsViewport(accessor) {
|
|
30
31
|
return tuiProvide(TUI_VIEWPORT, accessor);
|
|
31
32
|
}
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3Rva2Vucy92aWV3cG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3JDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUM5QyxPQUFPLEVBQUMseUJBQXlCLEVBQUUsVUFBVSxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFHeEY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcseUJBQXlCLENBQWtCLEdBQUcsRUFBRTtJQUN4RSxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFOUIsT0FBTztRQUNILElBQUksRUFBRSxVQUFVO1FBQ2hCLGFBQWE7WUFDVCxNQUFNLEVBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxTQUFTLEdBQUcsQ0FBQyxFQUFDLEdBQUcsR0FBRyxDQUFDLGNBQWMsSUFBSSxFQUFFLENBQUM7WUFDN0QsTUFBTSxJQUFJLEdBQUc7Z0JBQ1QsR0FBRyxFQUFFLENBQUM7Z0JBQ04sSUFBSSxFQUFFLENBQUM7Z0JBQ1AsS0FBSyxFQUFFLEdBQUcsQ0FBQyxVQUFVO2dCQUNyQixNQUFNLEVBQUUsR0FBRyxDQUFDLFdBQVc7Z0JBQ3ZCLEtBQUssRUFBRSxHQUFHLENBQUMsVUFBVTtnQkFDckIsTUFBTSxFQUFFLE1BQU0sR0FBRyxTQUFTLElBQUksR0FBRyxDQUFDLFdBQVc7Z0JBQzdDLENBQUMsRUFBRSxDQUFDO2dCQUNKLENBQUMsRUFBRSxDQUFDO2FBQ1AsQ0FBQztZQUVGLE9BQU87Z0JBQ0gsR0FBRyxJQUFJO2dCQUNQLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQzthQUNyQyxDQUFDO1FBQ04sQ0FBQztLQUNKLENBQUM7QUFDTixDQUFDLENBQUMsQ0FBQztBQUVILE1BQU0sVUFBVSxhQUFhLENBQUMsUUFBK0I7SUFDekQsT0FBTyxVQUFVLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQzlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7UHJvdmlkZXIsIFR5cGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtpbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtXQV9XSU5ET1d9IGZyb20gJ0BuZy13ZWItYXBpcy9jb21tb24nO1xuaW1wb3J0IHt0dWlDcmVhdGVUb2tlbkZyb21GYWN0b3J5LCB0dWlQcm92aWRlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL21pc2NlbGxhbmVvdXMnO1xuaW1wb3J0IHR5cGUge1R1aVJlY3RBY2Nlc3Nvcn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY2xhc3Nlcyc7XG5cbi8qKlxuICogVmlld3BvcnQgYWNjZXNzb3JcbiAqL1xuZXhwb3J0IGNvbnN0IFRVSV9WSUVXUE9SVCA9IHR1aUNyZWF0ZVRva2VuRnJvbUZhY3Rvcnk8VHVpUmVjdEFjY2Vzc29yPigoKSA9PiB7XG4gICAgY29uc3Qgd2luID0gaW5qZWN0KFdBX1dJTkRPVyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiAndmlld3BvcnQnLFxuICAgICAgICBnZXRDbGllbnRSZWN0KCkge1xuICAgICAgICAgICAgY29uc3Qge2hlaWdodCA9IDAsIG9mZnNldFRvcCA9IDB9ID0gd2luLnZpc3VhbFZpZXdwb3J0IHx8IHt9O1xuICAgICAgICAgICAgY29uc3QgcmVjdCA9IHtcbiAgICAgICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICAgICAgbGVmdDogMCxcbiAgICAgICAgICAgICAgICByaWdodDogd2luLmlubmVyV2lkdGgsXG4gICAgICAgICAgICAgICAgYm90dG9tOiB3aW4uaW5uZXJIZWlnaHQsXG4gICAgICAgICAgICAgICAgd2lkdGg6IHdpbi5pbm5lcldpZHRoLFxuICAgICAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0ICsgb2Zmc2V0VG9wIHx8IHdpbi5pbm5lckhlaWdodCxcbiAgICAgICAgICAgICAgICB4OiAwLFxuICAgICAgICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLnJlY3QsXG4gICAgICAgICAgICAgICAgdG9KU09OOiAoKSA9PiBKU09OLnN0cmluZ2lmeShyZWN0KSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgfTtcbn0pO1xuXG5leHBvcnQgZnVuY3Rpb24gdHVpQXNWaWV3cG9ydChhY2Nlc3NvcjogVHlwZTxUdWlSZWN0QWNjZXNzb3I+KTogUHJvdmlkZXIge1xuICAgIHJldHVybiB0dWlQcm92aWRlKFRVSV9WSUVXUE9SVCwgYWNjZXNzb3IpO1xufVxuIl19
|
|
@@ -54,7 +54,7 @@ class TuiRoot {
|
|
|
54
54
|
: !this.isChildRoot;
|
|
55
55
|
}
|
|
56
56
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiRoot, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
57
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiRoot, isStandalone: true, selector: "tui-root", host: { attributes: { "data-tui-version": "4.34.0-canary.
|
|
57
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiRoot, isStandalone: true, selector: "tui-root", host: { attributes: { "data-tui-version": "4.34.0-canary.f3c7d23" }, listeners: { "touchstart.passive.zoneless": "0", "document:fullscreenchange": "top.set(isTopLayer)" }, properties: { "style.--tui-duration.ms": "duration", "style.--tui-scroll-behavior": "reducedMotion ? \"auto\" : \"smooth\"", "class._mobile": "isMobileRes()" } }, hostDirectives: [{ directive: i1.TuiPlatform }, { directive: i2.TuiVisualViewport }, { directive: i3.TuiFontSize }], ngImport: i0, template: "<div class=\"t-root-content\"><ng-content /></div>\n<ng-container *ngIf=\"top()\">\n <tui-scroll-controls\n *ngIf=\"scrollbars\"\n class=\"t-root-scrollbar\"\n />\n <tui-popups />\n <ng-content select=\"tuiOverContent\" />\n <tui-dialogs />\n <ng-content select=\"tuiOverDialogs\" />\n <tui-alerts />\n <ng-content select=\"tuiOverAlerts\" />\n <tui-dropdowns />\n <ng-content select=\"tuiOverDropdowns\" />\n <tui-hints />\n <ng-content select=\"tuiOverHints\" />\n</ng-container>\n", styles: ["@keyframes tuiPresent{to{content:\"\"}}@keyframes tuiSkeletonVibe{to{opacity:.5}}.tui-zero-scrollbar{scrollbar-width:none;-ms-overflow-style:none}.tui-zero-scrollbar::-webkit-scrollbar,.tui-zero-scrollbar::-webkit-scrollbar-thumb{display:none}body,input{margin:0}tui-root{position:relative;display:block;font:var(--tui-font-text-s);color:var(--tui-text-primary);flex:1;border-image:conic-gradient(var(--tui-background-base) 0 0) fill 0/0/0 0 100vh 0;-webkit-tap-highlight-color:transparent}tui-root>.t-root-scrollbar{position:fixed;top:0;left:0;bottom:0;right:0;z-index:0;display:none;margin:0}[data-tui-theme] tui-root>.t-root-scrollbar{display:block}.t-root-content{position:relative;top:var(--t-root-top);block-size:100%;isolation:isolate}.t-root-content>*{--t-root-top: 0}[tuiDropdownButton][tuiDropdownButton]{display:none}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: TuiAlerts, selector: "tui-alerts" }, { kind: "component", type: TuiDialogs, selector: "tui-dialogs" }, { kind: "component", type: TuiDropdowns, selector: "tui-dropdowns" }, { kind: "component", type: TuiHints, selector: "tui-hints" }, { kind: "component", type: TuiPopups, selector: "tui-popups" }, { kind: "component", type: TuiScrollControls, selector: "tui-scroll-controls" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
|
|
58
58
|
}
|
|
59
59
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiRoot, decorators: [{
|
|
60
60
|
type: Component,
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { Injectable, Directive, Optional, Self, SkipSelf, inject, Input, EventEmitter, Output, ChangeDetectorRef, INJECTOR, signal, TemplateRef, computed, Component, ChangeDetectionStrategy, ElementRef, ContentChild, ViewContainerRef } from '@angular/core';
|
|
3
3
|
import { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';
|
|
4
|
-
import { WA_WINDOW } from '@ng-web-apis/common';
|
|
5
4
|
import * as i1 from '@taiga-ui/cdk/directives/active-zone';
|
|
6
5
|
import { TuiActiveZone } from '@taiga-ui/cdk/directives/active-zone';
|
|
7
6
|
import { tuiInjectElement, tuiGetActualTarget, tuiPointToClientRect, tuiIsElement, tuiIsHTMLElement, tuiIsElementEditable, tuiIsTextNode, tuiIsTextfield } from '@taiga-ui/cdk/utils/dom';
|
|
@@ -15,10 +14,10 @@ import { TUI_VIEWPORT, TUI_ANIMATIONS_SPEED, TUI_DARK_MODE, TUI_SELECTION_STREAM
|
|
|
15
14
|
import { tuiOverrideOptions, tuiCheckFixedPosition, tuiToAnimationOptions, tuiGetWordRange } from '@taiga-ui/core/utils';
|
|
16
15
|
import { PolymorpheusComponent, PolymorpheusTemplate, PolymorpheusOutlet } from '@taiga-ui/polymorpheus';
|
|
17
16
|
import { BehaviorSubject, Subject, throttleTime, takeWhile, map, merge, filter, fromEvent, switchMap, delay, startWith, takeUntil, distinctUntilChanged, of, tap, share, combineLatest } from 'rxjs';
|
|
18
|
-
import { __decorate } from 'tslib';
|
|
19
17
|
import { coerceArray } from '@angular/cdk/coercion';
|
|
20
18
|
import { tuiZonefreeScheduler, tuiIfMap, tuiCloseWatcher, tuiZonefull, tuiWatch, tuiTypedFromEvent, tuiZoneOptimized } from '@taiga-ui/cdk/observables';
|
|
21
19
|
import { TuiPortalService, TuiPortals, tuiAsPortal } from '@taiga-ui/cdk/classes';
|
|
20
|
+
import { __decorate } from 'tslib';
|
|
22
21
|
import { EMPTY_CLIENT_RECT, TUI_TRUE_HANDLER, CHAR_ZERO_WIDTH_SPACE, CHAR_NO_BREAK_SPACE } from '@taiga-ui/cdk/constants';
|
|
23
22
|
import { TUI_IS_TOUCH, TUI_RANGE } from '@taiga-ui/cdk/tokens';
|
|
24
23
|
import { shouldCall } from '@taiga-ui/event-plugins';
|
|
@@ -268,9 +267,6 @@ class TuiDropdownDirective {
|
|
|
268
267
|
tuiAsVehicle(TuiDropdownDirective),
|
|
269
268
|
], exportAs: ["tuiDropdown"], usesOnChanges: true, hostDirectives: [{ directive: TuiDropdownDriverDirective }, { directive: TuiDropdownPosition, outputs: ["tuiDropdownDirectionChange", "tuiDropdownDirectionChange"] }], ngImport: i0 }); }
|
|
270
269
|
}
|
|
271
|
-
__decorate([
|
|
272
|
-
tuiPure
|
|
273
|
-
], TuiDropdownDirective.prototype, "position", null);
|
|
274
270
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownDirective, decorators: [{
|
|
275
271
|
type: Directive,
|
|
276
272
|
args: [{
|
|
@@ -294,7 +290,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
294
290
|
}]
|
|
295
291
|
}], propDecorators: { tuiDropdown: [{
|
|
296
292
|
type: Input
|
|
297
|
-
}]
|
|
293
|
+
}] } });
|
|
298
294
|
|
|
299
295
|
/**
|
|
300
296
|
* @description:
|
|
@@ -305,50 +301,42 @@ class TuiDropdownComponent {
|
|
|
305
301
|
constructor() {
|
|
306
302
|
this.el = tuiInjectElement();
|
|
307
303
|
this.accessor = inject(TuiRectAccessor);
|
|
308
|
-
this.
|
|
304
|
+
this.viewport = inject(TUI_VIEWPORT);
|
|
309
305
|
this.vvs = inject(TuiVisualViewportService);
|
|
310
306
|
this.animation = tuiToAnimationOptions(inject(TUI_ANIMATIONS_SPEED));
|
|
311
307
|
this.options = inject(TUI_DROPDOWN_OPTIONS);
|
|
312
308
|
this.directive = inject(TuiDropdownDirective);
|
|
313
309
|
this.context = inject(TUI_DROPDOWN_CONTEXT, { optional: true });
|
|
314
310
|
this.darkMode = inject(TUI_DARK_MODE);
|
|
315
|
-
|
|
316
|
-
this.theme = computed(() =>
|
|
317
|
-
this.darkMode();
|
|
318
|
-
return this.directive.el.closest('[tuiTheme]')?.getAttribute('tuiTheme');
|
|
319
|
-
});
|
|
311
|
+
this.position = this.directive.position;
|
|
312
|
+
this.theme = computed((_ = this.darkMode()) => this.directive.el.closest('[tuiTheme]')?.getAttribute('tuiTheme'));
|
|
320
313
|
this.sub = inject(TuiPositionService)
|
|
321
314
|
.pipe(takeWhile(() => this.directive.el.isConnected &&
|
|
322
|
-
!!this.directive.el.getBoundingClientRect().height), map((v) => (this.directive.position === 'fixed' ? this.vvs.correct(v) : v)), map(([top, left]) => this.getStyles(
|
|
315
|
+
!!this.directive.el.getBoundingClientRect().height), map((v) => (this.directive.position === 'fixed' ? this.vvs.correct(v) : v)), map(([top, left]) => this.getStyles(left, top)), takeUntilDestroyed())
|
|
323
316
|
.subscribe({
|
|
324
317
|
next: (styles) => Object.assign(this.el.style, styles),
|
|
325
318
|
complete: () => this.close?.(),
|
|
326
319
|
});
|
|
327
320
|
this.close = () => this.directive.toggle(false);
|
|
328
321
|
}
|
|
329
|
-
getStyles(
|
|
330
|
-
const { right } = this.el.getBoundingClientRect();
|
|
322
|
+
getStyles(x, y) {
|
|
331
323
|
const { maxHeight, minHeight, offset, limitWidth } = this.options;
|
|
332
|
-
const
|
|
333
|
-
const clientRect = this.el.offsetParent?.getBoundingClientRect();
|
|
334
|
-
const { position } = this.directive;
|
|
324
|
+
const { left = 0, top = 0 } = this.el.offsetParent?.getBoundingClientRect() || {};
|
|
335
325
|
const rect = this.accessor.getClientRect();
|
|
336
|
-
const
|
|
337
|
-
const
|
|
338
|
-
top
|
|
339
|
-
|
|
340
|
-
const
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
326
|
+
const viewport = this.viewport.getClientRect();
|
|
327
|
+
const above = rect.top - viewport.top - 2 * offset;
|
|
328
|
+
const below = viewport.top + viewport.height - y - offset;
|
|
329
|
+
const available = y > rect.bottom ? below : above;
|
|
330
|
+
const height = this.el.getBoundingClientRect().right <= rect.left || x >= rect.right
|
|
331
|
+
? maxHeight
|
|
332
|
+
: tuiClamp(available, minHeight, maxHeight);
|
|
333
|
+
y -= top;
|
|
334
|
+
x -= left;
|
|
345
335
|
return {
|
|
346
|
-
position,
|
|
347
|
-
top: tuiPx(Math.round(Math.max(
|
|
348
|
-
left: tuiPx(Math.round(
|
|
349
|
-
maxHeight:
|
|
350
|
-
? tuiPx(maxHeight)
|
|
351
|
-
: tuiPx(Math.round(tuiClamp(available, minHeight, maxHeight))),
|
|
336
|
+
position: this.position,
|
|
337
|
+
top: tuiPx(Math.round(Math.max(y, offset - top))),
|
|
338
|
+
left: tuiPx(Math.round(x)),
|
|
339
|
+
maxHeight: tuiPx(Math.round(height)),
|
|
352
340
|
width: limitWidth === 'fixed' ? tuiPx(Math.round(rect.width)) : '',
|
|
353
341
|
minWidth: limitWidth === 'min' ? tuiPx(Math.round(rect.width)) : '',
|
|
354
342
|
};
|
|
@@ -990,7 +978,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
990
978
|
*/
|
|
991
979
|
class TuiDropdowns extends TuiPortals {
|
|
992
980
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdowns, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
993
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiDropdowns, isStandalone: true, selector: "tui-dropdowns", providers: [tuiAsPortal(TuiDropdownService)], usesInheritance: true, ngImport: i0, template: '<ng-container #viewContainer />', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
981
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiDropdowns, isStandalone: true, selector: "tui-dropdowns", host: { styleAttribute: "position: absolute; width: 100%; top: 0" }, providers: [tuiAsPortal(TuiDropdownService)], usesInheritance: true, ngImport: i0, template: '<ng-container #viewContainer />', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
994
982
|
}
|
|
995
983
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdowns, decorators: [{
|
|
996
984
|
type: Component,
|
|
@@ -1000,6 +988,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
1000
988
|
template: '<ng-container #viewContainer />',
|
|
1001
989
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1002
990
|
providers: [tuiAsPortal(TuiDropdownService)],
|
|
991
|
+
host: { style: 'position: absolute; width: 100%; top: 0' },
|
|
1003
992
|
}]
|
|
1004
993
|
}] });
|
|
1005
994
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-core-directives-dropdown.mjs","sources":["../../../projects/core/directives/dropdown/dropdown.driver.ts","../../../projects/core/directives/dropdown/dropdown.providers.ts","../../../projects/core/directives/dropdown/dropdown.service.ts","../../../projects/core/directives/dropdown/dropdown-options.directive.ts","../../../projects/core/directives/dropdown/dropdown-position.directive.ts","../../../projects/core/directives/dropdown/dropdown.directive.ts","../../../projects/core/directives/dropdown/dropdown.component.ts","../../../projects/core/directives/dropdown/dropdown.template.html","../../../projects/core/directives/dropdown/dropdown-context.directive.ts","../../../projects/core/directives/dropdown/dropdown-hover.options.ts","../../../projects/core/directives/dropdown/dropdown-open.directive.ts","../../../projects/core/directives/dropdown/dropdown-hover.directive.ts","../../../projects/core/directives/dropdown/dropdown-manual.directive.ts","../../../projects/core/directives/dropdown/dropdown-open-legacy.directive.ts","../../../projects/core/directives/dropdown/dropdown-portal.directive.ts","../../../projects/core/directives/dropdown/dropdown-position-sided.directive.ts","../../../projects/core/directives/dropdown/dropdown-selection.directive.ts","../../../projects/core/directives/dropdown/dropdown.ts","../../../projects/core/directives/dropdown/dropdown.bindings.ts","../../../projects/core/directives/dropdown/dropdown-limit-width.ts","../../../projects/core/directives/dropdown/dropdowns.component.ts","../../../projects/core/directives/dropdown/with-dropdown-open.directive.ts","../../../projects/core/directives/dropdown/taiga-ui-core-directives-dropdown.ts"],"sourcesContent":["import {Directive, Injectable} from '@angular/core';\nimport type {TuiDriver} from '@taiga-ui/core/classes';\nimport {TuiDriverDirective} from '@taiga-ui/core/classes';\nimport {BehaviorSubject} from 'rxjs';\n\n@Injectable()\nexport class TuiDropdownDriver extends BehaviorSubject<boolean> implements TuiDriver {\n public readonly type = 'dropdown';\n\n constructor() {\n super(false);\n }\n}\n\n@Directive({\n standalone: true,\n})\nexport class TuiDropdownDriverDirective extends TuiDriverDirective {\n public readonly type = 'dropdown';\n}\n","import type {Type} from '@angular/core';\nimport {\n tuiCreateToken,\n tuiCreateTokenFromFactory,\n} from '@taiga-ui/cdk/utils/miscellaneous';\n\nimport {TuiDropdownComponent} from './dropdown.component';\n\n/**\n * A component to display a dropdown\n */\nexport const TUI_DROPDOWN_COMPONENT = tuiCreateTokenFromFactory<Type<any>>(\n () => TuiDropdownComponent,\n);\n\nexport const TUI_DROPDOWN_CONTEXT = tuiCreateToken<Record<any, any>>();\n","import {Injectable} from '@angular/core';\nimport {TuiPortalService} from '@taiga-ui/cdk/classes';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TuiDropdownService extends TuiPortalService {}\n","import type {FactoryProvider} from '@angular/core';\nimport {Directive, inject, Input, Optional, Self, SkipSelf} from '@angular/core';\nimport {tuiCreateToken, tuiProvide} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {TuiVerticalDirection} from '@taiga-ui/core/types';\nimport {tuiOverrideOptions} from '@taiga-ui/core/utils';\n\nexport type TuiDropdownAlign = 'center' | 'left' | 'right';\nexport type TuiDropdownWidth = 'auto' | 'fixed' | 'min';\n\nexport interface TuiDropdownOptions {\n readonly align: TuiDropdownAlign;\n readonly appearance: string;\n readonly direction: TuiVerticalDirection | null;\n readonly limitWidth: TuiDropdownWidth;\n readonly maxHeight: number;\n readonly minHeight: number;\n readonly offset: number;\n}\n\n/** Default values for dropdown options */\nexport const TUI_DROPDOWN_DEFAULT_OPTIONS: TuiDropdownOptions = {\n align: 'left',\n direction: null,\n limitWidth: 'auto',\n maxHeight: 400,\n minHeight: 80,\n offset: 4,\n appearance: '',\n};\n\n/**\n * Default parameters for dropdown directive\n */\nexport const TUI_DROPDOWN_OPTIONS = tuiCreateToken(TUI_DROPDOWN_DEFAULT_OPTIONS);\n\nexport const tuiDropdownOptionsProvider: (\n options: Partial<TuiDropdownOptions>,\n) => FactoryProvider = (override: Partial<TuiDropdownOptions>) => ({\n provide: TUI_DROPDOWN_OPTIONS,\n deps: [\n [new Optional(), new Self(), TuiDropdownOptionsDirective],\n [new Optional(), new SkipSelf(), TUI_DROPDOWN_OPTIONS],\n ],\n useFactory: tuiOverrideOptions(override, TUI_DROPDOWN_DEFAULT_OPTIONS),\n});\n\n@Directive({\n standalone: true,\n selector:\n '[tuiDropdownAlign], [tuiDropdownAppearance], [tuiDropdownDirection], [tuiDropdownLimitWidth], [tuiDropdownMinHeight], [tuiDropdownMaxHeight], [tuiDropdownOffset]',\n providers: [tuiProvide(TUI_DROPDOWN_OPTIONS, TuiDropdownOptionsDirective)],\n})\nexport class TuiDropdownOptionsDirective implements TuiDropdownOptions {\n private readonly options = inject(TUI_DROPDOWN_OPTIONS, {skipSelf: true});\n\n @Input('tuiDropdownAlign')\n public align = this.options.align;\n\n @Input('tuiDropdownAppearance')\n public appearance = this.options.appearance;\n\n @Input('tuiDropdownDirection')\n public direction = this.options.direction;\n\n @Input('tuiDropdownLimitWidth')\n public limitWidth = this.options.limitWidth;\n\n @Input('tuiDropdownMinHeight')\n public minHeight = this.options.minHeight;\n\n @Input('tuiDropdownMaxHeight')\n public maxHeight = this.options.maxHeight;\n\n @Input('tuiDropdownOffset')\n public offset = this.options.offset;\n}\n","import {Directive, EventEmitter, inject, Output} from '@angular/core';\nimport {EMPTY_CLIENT_RECT} from '@taiga-ui/cdk/constants';\nimport {tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {\n tuiFallbackAccessor,\n TuiPositionAccessor,\n TuiRectAccessor,\n} from '@taiga-ui/core/classes';\nimport {TUI_VIEWPORT} from '@taiga-ui/core/tokens';\nimport type {TuiPoint, TuiVerticalDirection} from '@taiga-ui/core/types';\n\nimport {TuiDropdownDirective} from './dropdown.directive';\nimport {TUI_DROPDOWN_OPTIONS} from './dropdown-options.directive';\n\n@Directive({\n standalone: true,\n})\nexport class TuiDropdownPosition extends TuiPositionAccessor {\n private readonly options = inject(TUI_DROPDOWN_OPTIONS);\n private readonly viewport = inject(TUI_VIEWPORT);\n\n private previous?: TuiVerticalDirection;\n\n @Output('tuiDropdownDirectionChange')\n public readonly directionChange = new EventEmitter<TuiVerticalDirection>();\n\n public readonly type = 'dropdown';\n public readonly accessor: TuiRectAccessor | null =\n tuiFallbackAccessor<TuiRectAccessor>('dropdown')(\n inject<any>(TuiRectAccessor),\n inject(TuiDropdownDirective, {optional: true})!,\n );\n\n @tuiPure\n public emitDirection(direction: TuiVerticalDirection): void {\n this.directionChange.emit(direction);\n }\n\n public getPosition({width, height}: DOMRect): TuiPoint {\n if (!width && !height) {\n this.previous = undefined;\n }\n\n const hostRect = this.accessor?.getClientRect() ?? EMPTY_CLIENT_RECT;\n const viewportRect = this.viewport.getClientRect();\n const {minHeight, align, direction, offset, limitWidth} = this.options;\n const viewport = {\n top: viewportRect.top - offset,\n bottom: viewportRect.bottom + offset,\n right: viewportRect.right - offset,\n left: viewportRect.left + offset,\n } as const;\n const previous = this.previous || direction || 'bottom';\n const available = {\n top: hostRect.top - 2 * offset - viewport.top,\n bottom: viewport.bottom - hostRect.bottom - 2 * offset,\n } as const;\n const rectWidth = limitWidth === 'fixed' ? hostRect.width : width;\n const right = Math.max(hostRect.right - rectWidth, offset);\n const left = hostRect.left + width < viewport.right ? hostRect.left : right;\n const position = {\n top: hostRect.top - offset - height,\n bottom: hostRect.bottom + offset,\n right: Math.max(viewport.left, right),\n center:\n hostRect.left + hostRect.width / 2 + width / 2 < viewport.right\n ? hostRect.left + hostRect.width / 2 - width / 2\n : right,\n left: Math.max(viewport.left, left),\n } as const;\n const better: TuiVerticalDirection =\n available.top > available.bottom ? 'top' : 'bottom';\n\n if (\n (available[previous] > minHeight && direction) ||\n available[previous] > height\n ) {\n this.emitDirection(previous);\n\n return [position[previous], position[align]];\n }\n\n this.previous = better;\n this.emitDirection(better);\n\n return [position[better], position[align]];\n }\n}\n","import {coerceArray} from '@angular/cdk/coercion';\nimport type {AfterViewChecked, ComponentRef, OnChanges, OnDestroy} from '@angular/core';\nimport {\n ChangeDetectorRef,\n Directive,\n inject,\n INJECTOR,\n Input,\n signal,\n TemplateRef,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {tuiZonefreeScheduler} from '@taiga-ui/cdk/observables';\nimport type {TuiContext} from '@taiga-ui/cdk/types';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {TuiRectAccessor, TuiVehicle} from '@taiga-ui/core/classes';\nimport {tuiAsRectAccessor, tuiAsVehicle} from '@taiga-ui/core/classes';\nimport type {TuiPortalItem} from '@taiga-ui/core/types';\nimport {tuiCheckFixedPosition} from '@taiga-ui/core/utils';\nimport type {PolymorpheusContent} from '@taiga-ui/polymorpheus';\nimport {PolymorpheusComponent, PolymorpheusTemplate} from '@taiga-ui/polymorpheus';\nimport {Subject, throttleTime} from 'rxjs';\n\nimport {TuiDropdownDriver, TuiDropdownDriverDirective} from './dropdown.driver';\nimport {TUI_DROPDOWN_COMPONENT} from './dropdown.providers';\nimport {TuiDropdownService} from './dropdown.service';\nimport {TuiDropdownPosition} from './dropdown-position.directive';\n\n@Directive({\n standalone: true,\n selector: '[tuiDropdown]:not(ng-container):not(ng-template)',\n providers: [\n tuiAsRectAccessor(TuiDropdownDirective),\n tuiAsVehicle(TuiDropdownDirective),\n ],\n exportAs: 'tuiDropdown',\n hostDirectives: [\n TuiDropdownDriverDirective,\n {\n directive: TuiDropdownPosition,\n outputs: ['tuiDropdownDirectionChange'],\n },\n ],\n host: {\n '[class.tui-dropdown-open]': 'ref()',\n },\n})\nexport class TuiDropdownDirective\n implements\n AfterViewChecked,\n OnDestroy,\n OnChanges,\n TuiPortalItem,\n TuiRectAccessor,\n TuiVehicle\n{\n private readonly refresh$ = new Subject<void>();\n private readonly service = inject(TuiDropdownService);\n private readonly cdr = inject(ChangeDetectorRef);\n\n // TODO: think of a better solution later\n private readonly drivers = coerceArray(\n inject(TuiDropdownDriver, {\n self: true,\n optional: true,\n }),\n );\n\n protected readonly sub = this.refresh$\n .pipe(throttleTime(0, tuiZonefreeScheduler()), takeUntilDestroyed())\n .subscribe(() => {\n this.ref()?.changeDetectorRef.detectChanges();\n this.ref()?.changeDetectorRef.markForCheck();\n });\n\n public readonly el = tuiInjectElement();\n public readonly type = 'dropdown';\n public readonly component = new PolymorpheusComponent(\n inject(TUI_DROPDOWN_COMPONENT),\n inject(INJECTOR),\n );\n\n public ref = signal<ComponentRef<unknown> | null>(null);\n public content: PolymorpheusContent<TuiContext<() => void>>;\n\n @Input()\n public set tuiDropdown(content: PolymorpheusContent<TuiContext<() => void>>) {\n this.content =\n content instanceof TemplateRef\n ? new PolymorpheusTemplate(content, this.cdr)\n : content;\n }\n\n @tuiPure\n public get position(): 'absolute' | 'fixed' {\n return tuiCheckFixedPosition(this.el) ? 'fixed' : 'absolute';\n }\n\n public ngAfterViewChecked(): void {\n this.refresh$.next();\n }\n\n public ngOnChanges(): void {\n if (!this.content) {\n this.toggle(false);\n }\n }\n\n public ngOnDestroy(): void {\n this.toggle(false);\n }\n\n public getClientRect(): DOMRect {\n return this.el.getBoundingClientRect();\n }\n\n public toggle(show: boolean): void {\n const ref = this.ref();\n\n if (show && this.content && !ref) {\n this.ref.set(this.service.add(this.component));\n } else if (!show && ref) {\n this.ref.set(null);\n this.service.remove(ref);\n }\n\n this.drivers.forEach((driver) => driver?.next(show));\n\n // TODO: Remove in v5, only needed in Angular 16\n this.cdr.markForCheck();\n }\n}\n","import {ChangeDetectionStrategy, Component, computed, inject} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {WA_WINDOW} from '@ng-web-apis/common';\nimport {TuiActiveZone} from '@taiga-ui/cdk/directives/active-zone';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {tuiPx} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {tuiDropdownAnimation} from '@taiga-ui/core/animations';\nimport {\n tuiPositionAccessorFor,\n TuiRectAccessor,\n tuiRectAccessorFor,\n} from '@taiga-ui/core/classes';\nimport {TuiScrollbar} from '@taiga-ui/core/components/scrollbar';\nimport {TuiPositionService, TuiVisualViewportService} from '@taiga-ui/core/services';\nimport {TUI_ANIMATIONS_SPEED, TUI_DARK_MODE} from '@taiga-ui/core/tokens';\nimport {tuiToAnimationOptions} from '@taiga-ui/core/utils';\nimport {PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\nimport {map, takeWhile} from 'rxjs';\n\nimport {TuiDropdownDirective} from './dropdown.directive';\nimport {TUI_DROPDOWN_CONTEXT} from './dropdown.providers';\nimport {TUI_DROPDOWN_OPTIONS} from './dropdown-options.directive';\nimport {TuiDropdownPosition} from './dropdown-position.directive';\n\n/**\n * @description:\n * This component is used to show template in a portal\n * using default style of white rounded box with a shadow\n */\n@Component({\n standalone: true,\n selector: 'tui-dropdown',\n imports: [PolymorpheusOutlet, TuiScrollbar],\n templateUrl: './dropdown.template.html',\n styleUrls: ['./dropdown.style.less'],\n // @bad TODO: OnPush\n // eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [\n TuiPositionService,\n tuiPositionAccessorFor('dropdown', TuiDropdownPosition),\n tuiRectAccessorFor('dropdown', TuiDropdownDirective),\n ],\n animations: [tuiDropdownAnimation],\n hostDirectives: [TuiActiveZone],\n host: {\n '[@tuiDropdownAnimation]': 'animation',\n '[attr.data-appearance]': 'options.appearance',\n '[attr.tuiTheme]': 'theme()',\n },\n})\nexport class TuiDropdownComponent {\n private readonly el = tuiInjectElement();\n private readonly accessor = inject(TuiRectAccessor);\n private readonly win = inject(WA_WINDOW);\n private readonly vvs = inject(TuiVisualViewportService);\n\n protected readonly animation = tuiToAnimationOptions(inject(TUI_ANIMATIONS_SPEED));\n protected readonly options = inject(TUI_DROPDOWN_OPTIONS);\n protected readonly directive = inject(TuiDropdownDirective);\n protected readonly context = inject(TUI_DROPDOWN_CONTEXT, {optional: true});\n protected readonly darkMode = inject(TUI_DARK_MODE);\n\n // TODO(v5): use `TUI_DARK_MODE` instead of element attribute to get current theme\n protected readonly theme = computed(() => {\n this.darkMode();\n\n return this.directive.el.closest('[tuiTheme]')?.getAttribute('tuiTheme');\n });\n\n protected readonly sub = inject(TuiPositionService)\n .pipe(\n takeWhile(\n () =>\n this.directive.el.isConnected &&\n !!this.directive.el.getBoundingClientRect().height,\n ),\n map((v) => (this.directive.position === 'fixed' ? this.vvs.correct(v) : v)),\n map(([top, left]) => this.getStyles(top, left)),\n takeUntilDestroyed(),\n )\n .subscribe({\n next: (styles) => Object.assign(this.el.style, styles),\n complete: () => this.close?.(),\n });\n\n protected readonly close = (): void => this.directive.toggle(false);\n\n private getStyles(top: number, left: number): Record<string, string> {\n const {right} = this.el.getBoundingClientRect();\n const {maxHeight, minHeight, offset, limitWidth} = this.options;\n const innerHeight = this.win.visualViewport?.height ?? this.win.innerHeight;\n const clientRect = this.el.offsetParent?.getBoundingClientRect();\n const {position} = this.directive;\n const rect = this.accessor.getClientRect();\n const offsetX = position === 'fixed' ? 0 : -(clientRect?.left || 0);\n const offsetY = position === 'fixed' ? 0 : -(clientRect?.top || 0);\n\n top += offsetY;\n left += offsetX;\n\n const sided = right <= rect.left || left >= rect.right;\n const isIntersecting =\n left < rect.right && right > rect.left && top < offsetY + 2 * offset;\n const available = isIntersecting\n ? rect.top - 2 * offset\n : offsetY + innerHeight - top - offset;\n\n return {\n position,\n top: tuiPx(Math.round(Math.max(top, offsetY + offset))),\n left: tuiPx(Math.round(left)),\n maxHeight: sided\n ? tuiPx(maxHeight)\n : tuiPx(Math.round(tuiClamp(available, minHeight, maxHeight))),\n width: limitWidth === 'fixed' ? tuiPx(Math.round(rect.width)) : '',\n minWidth: limitWidth === 'min' ? tuiPx(Math.round(rect.width)) : '',\n };\n }\n}\n","<tui-scrollbar class=\"t-scroll\">\n <div\n *polymorpheusOutlet=\"directive.content as text; context: {$implicit: close}\"\n class=\"t-primitive\"\n >\n {{ text }}\n </div>\n</tui-scrollbar>\n","import {computed, Directive, inject} from '@angular/core';\nimport {EMPTY_CLIENT_RECT} from '@taiga-ui/cdk/constants';\nimport {TuiActiveZone} from '@taiga-ui/cdk/directives/active-zone';\nimport {TUI_IS_TOUCH} from '@taiga-ui/cdk/tokens';\nimport {tuiGetActualTarget, tuiPointToClientRect} from '@taiga-ui/cdk/utils/dom';\nimport {tuiAsDriver, tuiAsRectAccessor, TuiRectAccessor} from '@taiga-ui/core/classes';\nimport {shouldCall} from '@taiga-ui/event-plugins';\n\nimport {TuiDropdownDriver} from './dropdown.driver';\n\nfunction activeZoneFilter(this: TuiDropdownContext, event?: Event): boolean {\n return (\n !event ||\n (this.driver.value && !this.activeZone.contains(tuiGetActualTarget(event)))\n );\n}\n\n@Directive({\n standalone: true,\n selector: '[tuiDropdownContext]',\n providers: [\n TuiActiveZone,\n TuiDropdownDriver,\n tuiAsDriver(TuiDropdownDriver),\n tuiAsRectAccessor(TuiDropdownContext),\n ],\n host: {\n '[style.user-select]': 'userSelect()',\n '[style.-webkit-user-select]': 'userSelect()',\n '[style.-webkit-touch-callout]': 'userSelect()',\n '(document:pointerdown.zoneless)': 'closeDropdown($event)',\n '(document:contextmenu.capture.zoneless)': 'closeDropdown($event)',\n '(document:keydown.esc)': 'closeDropdown()',\n '(longtap)': 'onContextMenu($event.detail.clientX, $event.detail.clientY)',\n },\n})\nexport class TuiDropdownContext extends TuiRectAccessor {\n private readonly isTouch = inject(TUI_IS_TOUCH);\n private currentRect = EMPTY_CLIENT_RECT;\n\n protected readonly userSelect = computed(() => (this.isTouch() ? 'none' : null));\n protected readonly activeZone = inject(TuiActiveZone);\n protected readonly driver = inject(TuiDropdownDriver);\n\n public readonly type = 'dropdown';\n\n public getClientRect(): DOMRect {\n return this.currentRect;\n }\n\n @shouldCall(activeZoneFilter)\n protected closeDropdown(_event?: Event): void {\n this.driver.next(false);\n this.currentRect = EMPTY_CLIENT_RECT;\n }\n\n protected onContextMenu(x: number, y: number): void {\n this.currentRect = tuiPointToClientRect(x, y);\n this.driver.next(true);\n }\n}\n","import type {Provider} from '@angular/core';\nimport {tuiCreateToken, tuiProvideOptions} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport interface TuiDropdownHoverOptions {\n readonly hideDelay: number;\n readonly showDelay: number;\n}\n\n/** Default values for hint options */\nexport const TUI_DROPDOWN_HOVER_DEFAULT_OPTIONS: TuiDropdownHoverOptions = {\n showDelay: 200,\n hideDelay: 500,\n};\n\n/**\n * Default parameters for dropdown hover directive\n */\nexport const TUI_DROPDOWN_HOVER_OPTIONS = tuiCreateToken(\n TUI_DROPDOWN_HOVER_DEFAULT_OPTIONS,\n);\n\nexport function tuiDropdownHoverOptionsProvider(\n options: Partial<TuiDropdownHoverOptions>,\n): Provider {\n return tuiProvideOptions(\n TUI_DROPDOWN_HOVER_OPTIONS,\n options,\n TUI_DROPDOWN_HOVER_DEFAULT_OPTIONS,\n );\n}\n","import type {OnChanges} from '@angular/core';\nimport {\n computed,\n ContentChild,\n Directive,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n Output,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {TuiActiveZone} from '@taiga-ui/cdk/directives/active-zone';\nimport {TuiObscured} from '@taiga-ui/cdk/directives/obscured';\nimport {\n tuiCloseWatcher,\n tuiIfMap,\n tuiWatch,\n tuiZonefull,\n} from '@taiga-ui/cdk/observables';\nimport {\n tuiGetActualTarget,\n tuiInjectElement,\n tuiIsElement,\n tuiIsElementEditable,\n tuiIsHTMLElement,\n} from '@taiga-ui/cdk/utils/dom';\nimport {\n tuiGetClosestFocusable,\n tuiIsNativeFocusedIn,\n tuiIsNativeKeyboardFocusable,\n} from '@taiga-ui/cdk/utils/focus';\nimport {tuiAsDriver} from '@taiga-ui/core/classes';\nimport {tuiIsEditingKey} from '@taiga-ui/core/utils/miscellaneous';\nimport {shouldCall} from '@taiga-ui/event-plugins';\nimport {filter, fromEvent, merge} from 'rxjs';\n\nimport {TuiDropdownDirective} from './dropdown.directive';\nimport {TuiDropdownDriver} from './dropdown.driver';\n\nfunction shouldClose(this: TuiDropdownOpen, event: KeyboardEvent): boolean {\n return (\n // @ts-ignore\n typeof CloseWatcher === 'undefined' &&\n event.key.toLowerCase() === 'escape' &&\n this.tuiDropdownEnabled &&\n !!this.tuiDropdownOpen &&\n !this['dropdown']()?.nextElementSibling\n );\n}\n\n@Directive({\n standalone: true,\n selector: '[tuiDropdown][tuiDropdownOpen],[tuiDropdown][tuiDropdownOpenChange]',\n providers: [TuiDropdownDriver, tuiAsDriver(TuiDropdownDriver)],\n hostDirectives: [\n TuiObscured,\n {\n directive: TuiActiveZone,\n inputs: ['tuiActiveZoneParent'],\n outputs: ['tuiActiveZoneChange'],\n },\n ],\n host: {\n '(click)': 'onClick($event.target)',\n '(keydown.arrowDown)': 'onArrow($event, false)',\n '(keydown.arrowUp)': 'onArrow($event, true)',\n '(document:keydown.zoneless.capture)': 'onEsc($event)',\n '(document:keydown.zoneless)': 'onKeydown($event)',\n // TODO: Necessary because startWith(false) + distinctUntilChanged() in TuiActiveZone, think of better solution\n '(tuiActiveZoneChange)': '0',\n },\n})\nexport class TuiDropdownOpen implements OnChanges {\n @ContentChild('tuiDropdownHost', {descendants: true, read: ElementRef})\n private readonly dropdownHost?: ElementRef<HTMLElement>;\n\n private readonly directive = inject(TuiDropdownDirective);\n private readonly el = tuiInjectElement();\n private readonly obscured = inject(TuiObscured);\n private readonly activeZone = inject(TuiActiveZone);\n\n private readonly dropdown = computed(\n () => this.directive.ref()?.location.nativeElement,\n );\n\n @Input()\n public tuiDropdownEnabled = true;\n\n @Input()\n public tuiDropdownOpen: boolean | '' = false;\n\n @Output()\n public readonly tuiDropdownOpenChange = new EventEmitter<boolean>();\n\n // TODO: make it private when all legacy controls will be deleted from @taiga-ui/legacy (5.0)\n public readonly driver = inject(TuiDropdownDriver);\n public readonly sub = this.driver\n .pipe(\n tuiIfMap(() =>\n merge(\n tuiCloseWatcher(),\n this.obscured.tuiObscured.pipe(filter(Boolean)),\n this.activeZone.tuiActiveZoneChange.pipe(filter((a) => !a)),\n fromEvent(this.el, 'focusin').pipe(\n filter(\n (event) =>\n !this.host.contains(tuiGetActualTarget(event)) ||\n !this.directive.ref(),\n ),\n ),\n ),\n ),\n tuiZonefull(),\n tuiWatch(),\n takeUntilDestroyed(),\n )\n .subscribe(() => this.toggle(false));\n\n public readonly sync = this.driver.pipe(takeUntilDestroyed()).subscribe((open) => {\n if (open !== this.tuiDropdownOpen) {\n this.update(open);\n }\n });\n\n public ngOnChanges(): void {\n this.drive(!!this.tuiDropdownOpen);\n this.tuiDropdownOpenChange.emit(!!this.tuiDropdownOpen);\n }\n\n public toggle(open: boolean): void {\n if (this.focused && !open) {\n this.host.focus({preventScroll: true});\n }\n\n this.update(open);\n }\n\n @shouldCall(shouldClose)\n protected onEsc(event: KeyboardEvent): void {\n event.preventDefault();\n this.toggle(false);\n }\n\n protected onClick(target: HTMLElement): void {\n if (!this.editable && this.host.contains(target)) {\n this.update(!this.tuiDropdownOpen);\n }\n }\n\n protected onArrow(event: KeyboardEvent, up: boolean): void {\n if (\n !tuiIsElement(event.target) ||\n !this.host.contains(event.target) ||\n !this.tuiDropdownEnabled ||\n !this.directive.content\n ) {\n return;\n }\n\n event.preventDefault();\n this.focusDropdown(up);\n }\n\n protected onKeydown({key, target, defaultPrevented}: KeyboardEvent): void {\n if (\n !defaultPrevented &&\n tuiIsEditingKey(key) &&\n this.editable &&\n this.focused &&\n tuiIsHTMLElement(target) &&\n !tuiIsElementEditable(target)\n ) {\n this.host.focus({preventScroll: true});\n }\n }\n\n private get host(): HTMLElement {\n const initial = this.dropdownHost?.nativeElement || this.el;\n const focusable = tuiIsNativeKeyboardFocusable(initial)\n ? initial\n : tuiGetClosestFocusable({initial, root: this.el});\n\n return this.dropdownHost?.nativeElement || focusable || this.el;\n }\n\n private get editable(): boolean {\n return tuiIsElementEditable(this.host);\n }\n\n private get focused(): boolean {\n return tuiIsNativeFocusedIn(this.host) || tuiIsNativeFocusedIn(this.dropdown());\n }\n\n private update(open: boolean): void {\n if (open && !this.tuiDropdownEnabled) {\n return this.drive();\n }\n\n this.tuiDropdownOpen = open;\n this.tuiDropdownOpenChange.emit(open);\n this.drive();\n }\n\n private drive(open = !!this.tuiDropdownOpen && this.tuiDropdownEnabled): void {\n this.obscured.tuiObscuredEnabled = open;\n this.driver.next(open);\n }\n\n private focusDropdown(previous: boolean): void {\n const root = this.dropdown();\n\n if (!root) {\n this.update(true);\n\n return;\n }\n\n const doc = this.el.ownerDocument;\n const child = root.appendChild(doc.createElement('div'));\n const initial = previous ? child : root;\n const focusable = tuiGetClosestFocusable({initial, previous, root});\n\n child.remove();\n focusable?.focus();\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {ContentChild, Directive, ElementRef, inject, Input} from '@angular/core';\nimport {toObservable} from '@angular/core/rxjs-interop';\nimport {TuiActiveZone} from '@taiga-ui/cdk/directives/active-zone';\nimport {tuiTypedFromEvent, tuiZoneOptimized} from '@taiga-ui/cdk/observables';\nimport {\n tuiGetActualTarget,\n tuiInjectElement,\n tuiIsElement,\n} from '@taiga-ui/cdk/utils/dom';\nimport {tuiAsDriver, TuiDriver} from '@taiga-ui/core/classes';\nimport {\n delay,\n distinctUntilChanged,\n filter,\n fromEvent,\n map,\n merge,\n of,\n share,\n startWith,\n switchMap,\n takeUntil,\n tap,\n} from 'rxjs';\n\nimport {TuiDropdownDirective} from './dropdown.directive';\nimport {TUI_DROPDOWN_HOVER_OPTIONS} from './dropdown-hover.options';\nimport {TuiDropdownOpen} from './dropdown-open.directive';\n\n@Directive({\n standalone: true,\n selector: '[tuiDropdownHover]',\n providers: [TuiActiveZone, tuiAsDriver(TuiDropdownHover)],\n host: {\n '(click.capture)': 'onClick($event)',\n },\n})\nexport class TuiDropdownHover extends TuiDriver {\n @ContentChild('tuiDropdownHost', {descendants: true, read: ElementRef})\n private readonly dropdownHost?: ElementRef<HTMLElement>;\n\n private readonly el = tuiInjectElement();\n private readonly doc = inject(DOCUMENT);\n private readonly options = inject(TUI_DROPDOWN_HOVER_OPTIONS);\n private readonly activeZone = inject(TuiActiveZone);\n private readonly open = inject(TuiDropdownOpen, {optional: true});\n /**\n * Dropdown can be removed not only via click/touch –\n * swipe on mobile devices removes dropdown sheet without triggering new mouseover / mouseout events.\n */\n private readonly dropdownExternalRemoval$ = toObservable(\n inject(TuiDropdownDirective).ref,\n ).pipe(filter((x) => !x && this.hovered));\n\n private readonly stream$ = merge(\n this.dropdownExternalRemoval$.pipe(\n switchMap(() =>\n tuiTypedFromEvent(this.doc, 'pointerdown').pipe(\n map(tuiGetActualTarget),\n delay(this.hideDelay),\n startWith(null),\n takeUntil(fromEvent(this.doc, 'mouseover')),\n ),\n ),\n ),\n tuiTypedFromEvent(this.doc, 'mouseover').pipe(map(tuiGetActualTarget)),\n tuiTypedFromEvent(this.doc, 'mouseout').pipe(map((e) => e.relatedTarget)),\n ).pipe(\n map((element) => tuiIsElement(element) && this.isHovered(element)),\n distinctUntilChanged(),\n switchMap((v) => of(v).pipe(delay(v ? this.showDelay : this.hideDelay))),\n tuiZoneOptimized(),\n tap((hovered) => {\n this.hovered = hovered;\n this.open?.toggle(hovered);\n }),\n share(),\n );\n\n @Input('tuiDropdownShowDelay')\n public showDelay = this.options.showDelay;\n\n @Input('tuiDropdownHideDelay')\n public hideDelay = this.options.hideDelay;\n\n public hovered = false;\n\n public readonly type = 'dropdown';\n\n constructor() {\n super((subscriber) => this.stream$.subscribe(subscriber));\n }\n\n protected onClick(event: MouseEvent): void {\n if (this.hovered && this.open) {\n event.preventDefault();\n }\n }\n\n private isHovered(element: Element): boolean {\n const host = this.dropdownHost?.nativeElement || this.el;\n const hovered = host.contains(element);\n const child = !this.el.contains(element) && this.activeZone.contains(element);\n\n return hovered || child;\n }\n}\n","import type {OnChanges} from '@angular/core';\nimport {Directive, inject, Input} from '@angular/core';\nimport {tuiAsDriver} from '@taiga-ui/core/classes';\n\nimport {TuiDropdownDriver} from './dropdown.driver';\n\n@Directive({\n standalone: true,\n selector: '[tuiDropdownManual]',\n providers: [TuiDropdownDriver, tuiAsDriver(TuiDropdownDriver)],\n})\nexport class TuiDropdownManual implements OnChanges {\n private readonly driver = inject(TuiDropdownDriver);\n\n @Input()\n public tuiDropdownManual: boolean | '' = false;\n\n public ngOnChanges(): void {\n this.driver.next(!!this.tuiDropdownManual);\n }\n}\n","import {Directive, Input, Output} from '@angular/core';\nimport {distinctUntilChanged, Subject} from 'rxjs';\n\n/**\n * @deprecated TODO: remove in v.5 when legacy controls are dropped\n */\n@Directive({\n standalone: true,\n selector:\n '[tuiDropdownOpen]:not([tuiDropdown]),[tuiDropdownOpenChange]:not([tuiDropdown])',\n})\nexport class TuiDropdownOpenLegacy {\n private readonly openStateSub = new Subject<boolean>();\n\n @Output()\n public readonly tuiDropdownOpenChange =\n this.openStateSub.pipe(distinctUntilChanged());\n\n @Input()\n public set tuiDropdownOpen(open: boolean) {\n this.emitOpenChange(open);\n }\n\n public emitOpenChange(open: boolean): void {\n this.openStateSub.next(open);\n }\n}\n","import type {EmbeddedViewRef, OnDestroy} from '@angular/core';\nimport {Directive, inject, Input, TemplateRef} from '@angular/core';\n\nimport {TuiDropdownService} from './dropdown.service';\n\n/**\n * @deprecated use {@link TuiPopup} directive instead\n */\n@Directive({\n standalone: true,\n selector: 'ng-template[tuiDropdown]',\n})\nexport class TuiDropdownPortal implements OnDestroy {\n private readonly template = inject(TemplateRef);\n private readonly service = inject(TuiDropdownService);\n\n private viewRef?: EmbeddedViewRef<unknown>;\n\n @Input()\n public set tuiDropdown(show: boolean) {\n this.viewRef?.destroy();\n\n if (show) {\n this.viewRef = this.service.addTemplate(this.template);\n }\n }\n\n public ngOnDestroy(): void {\n this.viewRef?.destroy();\n }\n}\n","import {Directive, inject, Input} from '@angular/core';\nimport {EMPTY_CLIENT_RECT} from '@taiga-ui/cdk/constants';\nimport {tuiAsPositionAccessor, TuiPositionAccessor} from '@taiga-ui/core/classes';\nimport {TUI_VIEWPORT} from '@taiga-ui/core/tokens';\nimport type {TuiPoint} from '@taiga-ui/core/types';\n\nimport {TUI_DROPDOWN_OPTIONS} from './dropdown-options.directive';\nimport {TuiDropdownPosition} from './dropdown-position.directive';\n\n@Directive({\n standalone: true,\n selector: '[tuiDropdownSided]',\n providers: [TuiDropdownPosition, tuiAsPositionAccessor(TuiDropdownPositionSided)],\n})\nexport class TuiDropdownPositionSided extends TuiPositionAccessor {\n private readonly options = inject(TUI_DROPDOWN_OPTIONS);\n private readonly viewport = inject(TUI_VIEWPORT);\n private readonly vertical = inject(TuiDropdownPosition);\n private previous = this.options.direction || 'bottom';\n\n @Input()\n public tuiDropdownSided: boolean | string = '';\n\n @Input()\n public tuiDropdownSidedOffset = 4;\n\n public readonly type = 'dropdown';\n\n public getPosition(rect: DOMRect): TuiPoint {\n if (this.tuiDropdownSided === false) {\n return this.vertical.getPosition(rect);\n }\n\n const {height, width} = rect;\n const hostRect = this.vertical.accessor?.getClientRect() ?? EMPTY_CLIENT_RECT;\n const viewport = this.viewport.getClientRect();\n const {direction, minHeight, offset} = this.options;\n const align = this.options.align === 'center' ? 'left' : this.options.align;\n const available = {\n top: hostRect.bottom - viewport.top,\n left: hostRect.left - offset - viewport.left,\n right: viewport.right - hostRect.right - offset,\n bottom: viewport.bottom - hostRect.top,\n } as const;\n const position = {\n top: hostRect.bottom - height + this.tuiDropdownSidedOffset + 1, // 1 for border\n left: hostRect.left - width - offset,\n right: hostRect.right + offset,\n bottom: hostRect.top - this.tuiDropdownSidedOffset - 1, // 1 for border\n } as const;\n const better = available.top > available.bottom ? 'top' : 'bottom';\n const maxLeft = available.left > available.right ? position.left : position.right;\n const left = available[align] > width ? position[align] : maxLeft;\n\n if (\n (available[this.previous] > minHeight && direction) ||\n this.previous === better\n ) {\n this.vertical.emitDirection(this.previous);\n\n return [position[this.previous], left];\n }\n\n this.previous = better;\n this.vertical.emitDirection(better);\n\n return [position[better], left];\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport type {OnDestroy} from '@angular/core';\nimport {Directive, inject, Input, ViewContainerRef} from '@angular/core';\nimport {\n CHAR_NO_BREAK_SPACE,\n CHAR_ZERO_WIDTH_SPACE,\n EMPTY_CLIENT_RECT,\n TUI_TRUE_HANDLER,\n} from '@taiga-ui/cdk/constants';\nimport {TUI_RANGE} from '@taiga-ui/cdk/tokens';\nimport type {TuiBooleanHandler} from '@taiga-ui/cdk/types';\nimport {\n tuiInjectElement,\n tuiIsElement,\n tuiIsTextfield,\n tuiIsTextNode,\n} from '@taiga-ui/cdk/utils/dom';\nimport {tuiGetNativeFocused} from '@taiga-ui/cdk/utils/focus';\nimport {tuiIsString, tuiPx} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {TuiRectAccessor} from '@taiga-ui/core/classes';\nimport {tuiAsDriver, tuiAsRectAccessor, TuiDriver} from '@taiga-ui/core/classes';\nimport {TUI_SELECTION_STREAM} from '@taiga-ui/core/tokens';\nimport {tuiGetWordRange} from '@taiga-ui/core/utils';\nimport {BehaviorSubject, combineLatest, distinctUntilChanged, map} from 'rxjs';\n\nimport {TuiDropdownDirective} from './dropdown.directive';\n\n@Directive({\n standalone: true,\n selector: '[tuiDropdownSelection]',\n providers: [\n tuiAsDriver(TuiDropdownSelection),\n tuiAsRectAccessor(TuiDropdownSelection),\n ],\n})\nexport class TuiDropdownSelection\n extends TuiDriver\n implements TuiRectAccessor, OnDestroy\n{\n private ghost?: HTMLElement;\n\n protected readonly doc = inject(DOCUMENT);\n protected readonly vcr = inject(ViewContainerRef);\n protected readonly dropdown = inject(TuiDropdownDirective);\n protected readonly el = tuiInjectElement();\n protected readonly handler$ = new BehaviorSubject<TuiBooleanHandler<Range>>(\n TUI_TRUE_HANDLER,\n );\n\n protected readonly stream$ = combineLatest([\n this.handler$,\n inject(TUI_SELECTION_STREAM).pipe(\n map(() => this.getRange()),\n distinctUntilChanged(\n (x, y) =>\n x.startOffset === y.startOffset &&\n x.endOffset === y.endOffset &&\n x.commonAncestorContainer === y.commonAncestorContainer,\n ),\n ),\n ]).pipe(\n map(([handler, range]) => {\n const contained = this.el.contains(range.commonAncestorContainer);\n\n this.range =\n contained && tuiIsTextNode(range.commonAncestorContainer)\n ? range\n : this.range;\n\n return (contained && handler(this.range)) || this.inDropdown(range);\n }),\n );\n\n protected range = inject(TUI_RANGE);\n\n @Input('tuiDropdownSelectionPosition')\n public position: 'selection' | 'tag' | 'word' = 'selection';\n\n public readonly type = 'dropdown';\n\n constructor() {\n super((subscriber) => this.stream$.subscribe(subscriber));\n }\n\n @Input()\n public set tuiDropdownSelection(visible: TuiBooleanHandler<Range> | string) {\n if (!tuiIsString(visible)) {\n this.handler$.next(visible);\n }\n }\n\n public getClientRect(): DOMRect {\n switch (this.position) {\n case 'tag': {\n const {commonAncestorContainer} = this.range;\n const element = tuiIsElement(commonAncestorContainer)\n ? commonAncestorContainer\n : commonAncestorContainer.parentNode;\n\n return element && tuiIsElement(element)\n ? element.getBoundingClientRect()\n : EMPTY_CLIENT_RECT;\n }\n case 'word':\n return tuiGetWordRange(this.range).getBoundingClientRect();\n default:\n return this.range.getBoundingClientRect();\n }\n }\n\n public ngOnDestroy(): void {\n if (this.ghost) {\n this.vcr.element.nativeElement.removeChild(this.ghost);\n }\n }\n\n protected getRange(): Range {\n const active = tuiGetNativeFocused(this.doc);\n const selection = this.doc.getSelection();\n const range =\n active && tuiIsTextfield(active) && this.el.contains(active)\n ? this.veryVerySadInputFix(active)\n : (selection?.rangeCount && selection.getRangeAt(0)) || this.range;\n\n return range.cloneRange();\n }\n\n /**\n * Check if given range is at least partially inside dropdown\n */\n protected inDropdown(range: Range): boolean {\n const {startContainer, endContainer} = range;\n const inDropdown = this.boxContains(range.commonAncestorContainer);\n const hostToDropdown =\n this.boxContains(endContainer) && this.el.contains(startContainer);\n const dropdownToHost =\n this.boxContains(startContainer) && this.el.contains(endContainer);\n\n return inDropdown || hostToDropdown || dropdownToHost;\n }\n\n /**\n * Check if Node is inside dropdown\n */\n private boxContains(node: Node): boolean {\n return !!this.dropdown.ref()?.location.nativeElement.contains(node);\n }\n\n private veryVerySadInputFix(element: HTMLInputElement | HTMLTextAreaElement): Range {\n const {ghost = this.initGhost(element)} = this;\n const {top, left, width, height} = element.getBoundingClientRect();\n const {selectionStart, selectionEnd, value} = element;\n const range = this.doc.createRange();\n const hostRect = this.el.getBoundingClientRect();\n\n ghost.style.top = tuiPx(top - hostRect.top);\n ghost.style.left = tuiPx(left - hostRect.left);\n ghost.style.width = tuiPx(width);\n ghost.style.height = tuiPx(height);\n ghost.textContent = CHAR_ZERO_WIDTH_SPACE + value + CHAR_NO_BREAK_SPACE;\n\n range.setStart(ghost.firstChild as Node, selectionStart || 0);\n range.setEnd(ghost.firstChild as Node, selectionEnd || 0);\n\n return range;\n }\n\n /**\n * Create an invisible DIV styled exactly like input/textarea element inside directive\n */\n private initGhost(element: HTMLInputElement | HTMLTextAreaElement): HTMLElement {\n const ghost = this.doc.createElement('div');\n const {font, letterSpacing, textTransform, padding} = getComputedStyle(element);\n\n ghost.style.position = 'absolute';\n ghost.style.pointerEvents = 'none';\n ghost.style.opacity = '0';\n ghost.style.whiteSpace = 'pre-wrap';\n ghost.style.font = font;\n ghost.style.letterSpacing = letterSpacing;\n ghost.style.textTransform = textTransform;\n ghost.style.padding = padding;\n\n this.vcr.element.nativeElement.appendChild(ghost);\n this.ghost = ghost;\n\n return ghost;\n }\n}\n","import {TuiDropdownComponent} from './dropdown.component';\nimport {TuiDropdownDirective} from './dropdown.directive';\nimport {TuiDropdownDriverDirective} from './dropdown.driver';\nimport {TuiDropdownContext} from './dropdown-context.directive';\nimport {TuiDropdownHover} from './dropdown-hover.directive';\nimport {TuiDropdownManual} from './dropdown-manual.directive';\nimport {TuiDropdownOpen} from './dropdown-open.directive';\nimport {TuiDropdownOpenLegacy} from './dropdown-open-legacy.directive';\nimport {TuiDropdownOptionsDirective} from './dropdown-options.directive';\nimport {TuiDropdownPortal} from './dropdown-portal.directive';\nimport {TuiDropdownPosition} from './dropdown-position.directive';\nimport {TuiDropdownPositionSided} from './dropdown-position-sided.directive';\nimport {TuiDropdownSelection} from './dropdown-selection.directive';\n\nexport const TuiDropdown = [\n TuiDropdownOptionsDirective,\n TuiDropdownDriverDirective,\n TuiDropdownDirective,\n TuiDropdownComponent,\n TuiDropdownOpen,\n TuiDropdownOpenLegacy,\n TuiDropdownPortal,\n TuiDropdownManual,\n TuiDropdownHover,\n TuiDropdownContext,\n TuiDropdownPosition,\n TuiDropdownPositionSided,\n TuiDropdownSelection,\n] as const;\n","import type {Signal, WritableSignal} from '@angular/core';\nimport {inject} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {tuiDirectiveBinding} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {PolymorpheusContent} from '@taiga-ui/polymorpheus';\n\nimport {TuiDropdownDirective} from './dropdown.directive';\nimport {TuiDropdownOpen} from './dropdown-open.directive';\n\ntype C = PolymorpheusContent;\n\nexport function tuiDropdown(value: C | WritableSignal<C>): WritableSignal<C>;\nexport function tuiDropdown(value: Signal<C>): Signal<C>;\nexport function tuiDropdown(value: C | Signal<C>): Signal<C> {\n return tuiDirectiveBinding(TuiDropdownDirective, 'tuiDropdown', value, {});\n}\n\nexport function tuiDropdownEnabled(\n value: WritableSignal<boolean> | boolean,\n): WritableSignal<boolean>;\nexport function tuiDropdownEnabled(value: Signal<boolean>): Signal<boolean>;\nexport function tuiDropdownEnabled(value: Signal<boolean> | boolean): Signal<boolean> {\n return tuiDirectiveBinding(TuiDropdownOpen, 'tuiDropdownEnabled', value, {});\n}\n\nexport function tuiDropdownOpen(): WritableSignal<boolean> {\n const open: WritableSignal<boolean> = tuiDirectiveBinding(\n TuiDropdownOpen,\n 'tuiDropdownOpen',\n false,\n {},\n );\n\n inject(TuiDropdownOpen)\n .tuiDropdownOpenChange.pipe(takeUntilDestroyed())\n .subscribe((value) => open.set(value));\n\n return open;\n}\n","import {Directive, inject} from '@angular/core';\nimport {tuiOverrideOptions} from '@taiga-ui/core/utils/miscellaneous';\n\nimport {\n TUI_DROPDOWN_DEFAULT_OPTIONS,\n TUI_DROPDOWN_OPTIONS,\n tuiDropdownOptionsProvider,\n} from './dropdown-options.directive';\n\n@Directive({\n standalone: true,\n providers: [tuiDropdownOptionsProvider({})],\n})\nexport class TuiDropdownFixed {\n constructor() {\n const override = tuiOverrideOptions(\n {limitWidth: 'fixed'},\n TUI_DROPDOWN_DEFAULT_OPTIONS,\n );\n\n override(inject(TUI_DROPDOWN_OPTIONS, {self: true, optional: true}), null);\n }\n}\n\n@Directive({standalone: true})\nexport class TuiDropdownAuto {\n constructor() {\n /**\n * Update directive props with new defaults before inputs are processed\n * TODO: find better way to override TuiDropdownFixed host directive from parent component\n */\n (inject(TUI_DROPDOWN_OPTIONS) as any).limitWidth = 'auto';\n }\n}\n","import {ChangeDetectionStrategy, Component} from '@angular/core';\nimport {tuiAsPortal, TuiPortals} from '@taiga-ui/cdk/classes';\n\nimport {TuiDropdownService} from './dropdown.service';\n\n/**\n * Host element for dynamically created portals, for example using {@link TuiDropdownDirective}.\n */\n@Component({\n standalone: true,\n selector: 'tui-dropdowns',\n template: '<ng-container #viewContainer />',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiAsPortal(TuiDropdownService)],\n})\nexport class TuiDropdowns extends TuiPortals {}\n","import {Directive} from '@angular/core';\n\nimport {TuiDropdownOpen} from './dropdown-open.directive';\n\n@Directive({\n standalone: true,\n hostDirectives: [\n {\n directive: TuiDropdownOpen,\n inputs: ['tuiDropdownOpen: open', 'tuiDropdownEnabled'],\n outputs: ['tuiDropdownOpenChange: openChange'],\n },\n ],\n})\nexport class TuiWithDropdownOpen {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.TuiDropdownDriverDirective","i2.TuiDropdownPosition","i1","i2","tuiOverrideOptions","i1.TuiDropdownOpen"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"taiga-ui-core-directives-dropdown.mjs","sources":["../../../projects/core/directives/dropdown/dropdown.driver.ts","../../../projects/core/directives/dropdown/dropdown.providers.ts","../../../projects/core/directives/dropdown/dropdown.service.ts","../../../projects/core/directives/dropdown/dropdown-options.directive.ts","../../../projects/core/directives/dropdown/dropdown-position.directive.ts","../../../projects/core/directives/dropdown/dropdown.directive.ts","../../../projects/core/directives/dropdown/dropdown.component.ts","../../../projects/core/directives/dropdown/dropdown.template.html","../../../projects/core/directives/dropdown/dropdown-context.directive.ts","../../../projects/core/directives/dropdown/dropdown-hover.options.ts","../../../projects/core/directives/dropdown/dropdown-open.directive.ts","../../../projects/core/directives/dropdown/dropdown-hover.directive.ts","../../../projects/core/directives/dropdown/dropdown-manual.directive.ts","../../../projects/core/directives/dropdown/dropdown-open-legacy.directive.ts","../../../projects/core/directives/dropdown/dropdown-portal.directive.ts","../../../projects/core/directives/dropdown/dropdown-position-sided.directive.ts","../../../projects/core/directives/dropdown/dropdown-selection.directive.ts","../../../projects/core/directives/dropdown/dropdown.ts","../../../projects/core/directives/dropdown/dropdown.bindings.ts","../../../projects/core/directives/dropdown/dropdown-limit-width.ts","../../../projects/core/directives/dropdown/dropdowns.component.ts","../../../projects/core/directives/dropdown/with-dropdown-open.directive.ts","../../../projects/core/directives/dropdown/taiga-ui-core-directives-dropdown.ts"],"sourcesContent":["import {Directive, Injectable} from '@angular/core';\nimport type {TuiDriver} from '@taiga-ui/core/classes';\nimport {TuiDriverDirective} from '@taiga-ui/core/classes';\nimport {BehaviorSubject} from 'rxjs';\n\n@Injectable()\nexport class TuiDropdownDriver extends BehaviorSubject<boolean> implements TuiDriver {\n public readonly type = 'dropdown';\n\n constructor() {\n super(false);\n }\n}\n\n@Directive({\n standalone: true,\n})\nexport class TuiDropdownDriverDirective extends TuiDriverDirective {\n public readonly type = 'dropdown';\n}\n","import type {Type} from '@angular/core';\nimport {\n tuiCreateToken,\n tuiCreateTokenFromFactory,\n} from '@taiga-ui/cdk/utils/miscellaneous';\n\nimport {TuiDropdownComponent} from './dropdown.component';\n\n/**\n * A component to display a dropdown\n */\nexport const TUI_DROPDOWN_COMPONENT = tuiCreateTokenFromFactory<Type<any>>(\n () => TuiDropdownComponent,\n);\n\nexport const TUI_DROPDOWN_CONTEXT = tuiCreateToken<Record<any, any>>();\n","import {Injectable} from '@angular/core';\nimport {TuiPortalService} from '@taiga-ui/cdk/classes';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TuiDropdownService extends TuiPortalService {}\n","import type {FactoryProvider} from '@angular/core';\nimport {Directive, inject, Input, Optional, Self, SkipSelf} from '@angular/core';\nimport {tuiCreateToken, tuiProvide} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {TuiVerticalDirection} from '@taiga-ui/core/types';\nimport {tuiOverrideOptions} from '@taiga-ui/core/utils';\n\nexport type TuiDropdownAlign = 'center' | 'left' | 'right';\nexport type TuiDropdownWidth = 'auto' | 'fixed' | 'min';\n\nexport interface TuiDropdownOptions {\n readonly align: TuiDropdownAlign;\n readonly appearance: string;\n readonly direction: TuiVerticalDirection | null;\n readonly limitWidth: TuiDropdownWidth;\n readonly maxHeight: number;\n readonly minHeight: number;\n readonly offset: number;\n}\n\n/** Default values for dropdown options */\nexport const TUI_DROPDOWN_DEFAULT_OPTIONS: TuiDropdownOptions = {\n align: 'left',\n direction: null,\n limitWidth: 'auto',\n maxHeight: 400,\n minHeight: 80,\n offset: 4,\n appearance: '',\n};\n\n/**\n * Default parameters for dropdown directive\n */\nexport const TUI_DROPDOWN_OPTIONS = tuiCreateToken(TUI_DROPDOWN_DEFAULT_OPTIONS);\n\nexport const tuiDropdownOptionsProvider: (\n options: Partial<TuiDropdownOptions>,\n) => FactoryProvider = (override: Partial<TuiDropdownOptions>) => ({\n provide: TUI_DROPDOWN_OPTIONS,\n deps: [\n [new Optional(), new Self(), TuiDropdownOptionsDirective],\n [new Optional(), new SkipSelf(), TUI_DROPDOWN_OPTIONS],\n ],\n useFactory: tuiOverrideOptions(override, TUI_DROPDOWN_DEFAULT_OPTIONS),\n});\n\n@Directive({\n standalone: true,\n selector:\n '[tuiDropdownAlign], [tuiDropdownAppearance], [tuiDropdownDirection], [tuiDropdownLimitWidth], [tuiDropdownMinHeight], [tuiDropdownMaxHeight], [tuiDropdownOffset]',\n providers: [tuiProvide(TUI_DROPDOWN_OPTIONS, TuiDropdownOptionsDirective)],\n})\nexport class TuiDropdownOptionsDirective implements TuiDropdownOptions {\n private readonly options = inject(TUI_DROPDOWN_OPTIONS, {skipSelf: true});\n\n @Input('tuiDropdownAlign')\n public align = this.options.align;\n\n @Input('tuiDropdownAppearance')\n public appearance = this.options.appearance;\n\n @Input('tuiDropdownDirection')\n public direction = this.options.direction;\n\n @Input('tuiDropdownLimitWidth')\n public limitWidth = this.options.limitWidth;\n\n @Input('tuiDropdownMinHeight')\n public minHeight = this.options.minHeight;\n\n @Input('tuiDropdownMaxHeight')\n public maxHeight = this.options.maxHeight;\n\n @Input('tuiDropdownOffset')\n public offset = this.options.offset;\n}\n","import {Directive, EventEmitter, inject, Output} from '@angular/core';\nimport {EMPTY_CLIENT_RECT} from '@taiga-ui/cdk/constants';\nimport {tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {\n tuiFallbackAccessor,\n TuiPositionAccessor,\n TuiRectAccessor,\n} from '@taiga-ui/core/classes';\nimport {TUI_VIEWPORT} from '@taiga-ui/core/tokens';\nimport type {TuiPoint, TuiVerticalDirection} from '@taiga-ui/core/types';\n\nimport {TuiDropdownDirective} from './dropdown.directive';\nimport {TUI_DROPDOWN_OPTIONS} from './dropdown-options.directive';\n\n@Directive({\n standalone: true,\n})\nexport class TuiDropdownPosition extends TuiPositionAccessor {\n private readonly options = inject(TUI_DROPDOWN_OPTIONS);\n private readonly viewport = inject(TUI_VIEWPORT);\n\n private previous?: TuiVerticalDirection;\n\n @Output('tuiDropdownDirectionChange')\n public readonly directionChange = new EventEmitter<TuiVerticalDirection>();\n\n public readonly type = 'dropdown';\n public readonly accessor: TuiRectAccessor | null =\n tuiFallbackAccessor<TuiRectAccessor>('dropdown')(\n inject<any>(TuiRectAccessor),\n inject(TuiDropdownDirective, {optional: true})!,\n );\n\n @tuiPure\n public emitDirection(direction: TuiVerticalDirection): void {\n this.directionChange.emit(direction);\n }\n\n public getPosition({width, height}: DOMRect): TuiPoint {\n if (!width && !height) {\n this.previous = undefined;\n }\n\n const hostRect = this.accessor?.getClientRect() ?? EMPTY_CLIENT_RECT;\n const viewportRect = this.viewport.getClientRect();\n const {minHeight, align, direction, offset, limitWidth} = this.options;\n const viewport = {\n top: viewportRect.top - offset,\n bottom: viewportRect.bottom + offset,\n right: viewportRect.right - offset,\n left: viewportRect.left + offset,\n } as const;\n const previous = this.previous || direction || 'bottom';\n const available = {\n top: hostRect.top - 2 * offset - viewport.top,\n bottom: viewport.bottom - hostRect.bottom - 2 * offset,\n } as const;\n const rectWidth = limitWidth === 'fixed' ? hostRect.width : width;\n const right = Math.max(hostRect.right - rectWidth, offset);\n const left = hostRect.left + width < viewport.right ? hostRect.left : right;\n const position = {\n top: hostRect.top - offset - height,\n bottom: hostRect.bottom + offset,\n right: Math.max(viewport.left, right),\n center:\n hostRect.left + hostRect.width / 2 + width / 2 < viewport.right\n ? hostRect.left + hostRect.width / 2 - width / 2\n : right,\n left: Math.max(viewport.left, left),\n } as const;\n const better: TuiVerticalDirection =\n available.top > available.bottom ? 'top' : 'bottom';\n\n if (\n (available[previous] > minHeight && direction) ||\n available[previous] > height\n ) {\n this.emitDirection(previous);\n\n return [position[previous], position[align]];\n }\n\n this.previous = better;\n this.emitDirection(better);\n\n return [position[better], position[align]];\n }\n}\n","import {coerceArray} from '@angular/cdk/coercion';\nimport type {AfterViewChecked, ComponentRef, OnChanges, OnDestroy} from '@angular/core';\nimport {\n ChangeDetectorRef,\n Directive,\n inject,\n INJECTOR,\n Input,\n signal,\n TemplateRef,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {tuiZonefreeScheduler} from '@taiga-ui/cdk/observables';\nimport type {TuiContext} from '@taiga-ui/cdk/types';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport type {TuiRectAccessor, TuiVehicle} from '@taiga-ui/core/classes';\nimport {tuiAsRectAccessor, tuiAsVehicle} from '@taiga-ui/core/classes';\nimport type {TuiPortalItem} from '@taiga-ui/core/types';\nimport {tuiCheckFixedPosition} from '@taiga-ui/core/utils';\nimport type {PolymorpheusContent} from '@taiga-ui/polymorpheus';\nimport {PolymorpheusComponent, PolymorpheusTemplate} from '@taiga-ui/polymorpheus';\nimport {Subject, throttleTime} from 'rxjs';\n\nimport {TuiDropdownDriver, TuiDropdownDriverDirective} from './dropdown.driver';\nimport {TUI_DROPDOWN_COMPONENT} from './dropdown.providers';\nimport {TuiDropdownService} from './dropdown.service';\nimport {TuiDropdownPosition} from './dropdown-position.directive';\n\n@Directive({\n standalone: true,\n selector: '[tuiDropdown]:not(ng-container):not(ng-template)',\n providers: [\n tuiAsRectAccessor(TuiDropdownDirective),\n tuiAsVehicle(TuiDropdownDirective),\n ],\n exportAs: 'tuiDropdown',\n hostDirectives: [\n TuiDropdownDriverDirective,\n {\n directive: TuiDropdownPosition,\n outputs: ['tuiDropdownDirectionChange'],\n },\n ],\n host: {\n '[class.tui-dropdown-open]': 'ref()',\n },\n})\nexport class TuiDropdownDirective\n implements\n AfterViewChecked,\n OnDestroy,\n OnChanges,\n TuiPortalItem,\n TuiRectAccessor,\n TuiVehicle\n{\n private readonly refresh$ = new Subject<void>();\n private readonly service = inject(TuiDropdownService);\n private readonly cdr = inject(ChangeDetectorRef);\n\n // TODO: think of a better solution later\n private readonly drivers = coerceArray(\n inject(TuiDropdownDriver, {\n self: true,\n optional: true,\n }),\n );\n\n protected readonly sub = this.refresh$\n .pipe(throttleTime(0, tuiZonefreeScheduler()), takeUntilDestroyed())\n .subscribe(() => {\n this.ref()?.changeDetectorRef.detectChanges();\n this.ref()?.changeDetectorRef.markForCheck();\n });\n\n public readonly el = tuiInjectElement();\n public readonly type = 'dropdown';\n public readonly component = new PolymorpheusComponent(\n inject(TUI_DROPDOWN_COMPONENT),\n inject(INJECTOR),\n );\n\n public ref = signal<ComponentRef<unknown> | null>(null);\n public content: PolymorpheusContent<TuiContext<() => void>>;\n\n @Input()\n public set tuiDropdown(content: PolymorpheusContent<TuiContext<() => void>>) {\n this.content =\n content instanceof TemplateRef\n ? new PolymorpheusTemplate(content, this.cdr)\n : content;\n }\n\n public get position(): 'absolute' | 'fixed' {\n return tuiCheckFixedPosition(this.el) ? 'fixed' : 'absolute';\n }\n\n public ngAfterViewChecked(): void {\n this.refresh$.next();\n }\n\n public ngOnChanges(): void {\n if (!this.content) {\n this.toggle(false);\n }\n }\n\n public ngOnDestroy(): void {\n this.toggle(false);\n }\n\n public getClientRect(): DOMRect {\n return this.el.getBoundingClientRect();\n }\n\n public toggle(show: boolean): void {\n const ref = this.ref();\n\n if (show && this.content && !ref) {\n this.ref.set(this.service.add(this.component));\n } else if (!show && ref) {\n this.ref.set(null);\n this.service.remove(ref);\n }\n\n this.drivers.forEach((driver) => driver?.next(show));\n\n // TODO: Remove in v5, only needed in Angular 16\n this.cdr.markForCheck();\n }\n}\n","import {ChangeDetectionStrategy, Component, computed, inject} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {TuiActiveZone} from '@taiga-ui/cdk/directives/active-zone';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {tuiPx} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {tuiDropdownAnimation} from '@taiga-ui/core/animations';\nimport {\n tuiPositionAccessorFor,\n TuiRectAccessor,\n tuiRectAccessorFor,\n} from '@taiga-ui/core/classes';\nimport {TuiScrollbar} from '@taiga-ui/core/components/scrollbar';\nimport {TuiPositionService, TuiVisualViewportService} from '@taiga-ui/core/services';\nimport {TUI_ANIMATIONS_SPEED, TUI_DARK_MODE, TUI_VIEWPORT} from '@taiga-ui/core/tokens';\nimport {tuiToAnimationOptions} from '@taiga-ui/core/utils';\nimport {PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\nimport {map, takeWhile} from 'rxjs';\n\nimport {TuiDropdownDirective} from './dropdown.directive';\nimport {TUI_DROPDOWN_CONTEXT} from './dropdown.providers';\nimport {TUI_DROPDOWN_OPTIONS} from './dropdown-options.directive';\nimport {TuiDropdownPosition} from './dropdown-position.directive';\n\n/**\n * @description:\n * This component is used to show template in a portal\n * using default style of white rounded box with a shadow\n */\n@Component({\n standalone: true,\n selector: 'tui-dropdown',\n imports: [PolymorpheusOutlet, TuiScrollbar],\n templateUrl: './dropdown.template.html',\n styleUrls: ['./dropdown.style.less'],\n // @bad TODO: OnPush\n // eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [\n TuiPositionService,\n tuiPositionAccessorFor('dropdown', TuiDropdownPosition),\n tuiRectAccessorFor('dropdown', TuiDropdownDirective),\n ],\n animations: [tuiDropdownAnimation],\n hostDirectives: [TuiActiveZone],\n host: {\n '[@tuiDropdownAnimation]': 'animation',\n '[attr.data-appearance]': 'options.appearance',\n '[attr.tuiTheme]': 'theme()',\n },\n})\nexport class TuiDropdownComponent {\n private readonly el = tuiInjectElement();\n private readonly accessor = inject(TuiRectAccessor);\n private readonly viewport = inject(TUI_VIEWPORT);\n private readonly vvs = inject(TuiVisualViewportService);\n\n protected readonly animation = tuiToAnimationOptions(inject(TUI_ANIMATIONS_SPEED));\n protected readonly options = inject(TUI_DROPDOWN_OPTIONS);\n protected readonly directive = inject(TuiDropdownDirective);\n protected readonly context = inject(TUI_DROPDOWN_CONTEXT, {optional: true});\n protected readonly darkMode = inject(TUI_DARK_MODE);\n protected readonly position = this.directive.position;\n protected readonly theme = computed((_ = this.darkMode()) =>\n this.directive.el.closest('[tuiTheme]')?.getAttribute('tuiTheme'),\n );\n\n protected readonly sub = inject(TuiPositionService)\n .pipe(\n takeWhile(\n () =>\n this.directive.el.isConnected &&\n !!this.directive.el.getBoundingClientRect().height,\n ),\n map((v) => (this.directive.position === 'fixed' ? this.vvs.correct(v) : v)),\n map(([top, left]) => this.getStyles(left, top)),\n takeUntilDestroyed(),\n )\n .subscribe({\n next: (styles) => Object.assign(this.el.style, styles),\n complete: () => this.close?.(),\n });\n\n protected readonly close = (): void => this.directive.toggle(false);\n\n private getStyles(x: number, y: number): Record<string, string> {\n const {maxHeight, minHeight, offset, limitWidth} = this.options;\n const {left = 0, top = 0} = this.el.offsetParent?.getBoundingClientRect() || {};\n const rect = this.accessor.getClientRect();\n const viewport = this.viewport.getClientRect();\n const above = rect.top - viewport.top - 2 * offset;\n const below = viewport.top + viewport.height - y - offset;\n const available = y > rect.bottom ? below : above;\n const height =\n this.el.getBoundingClientRect().right <= rect.left || x >= rect.right\n ? maxHeight\n : tuiClamp(available, minHeight, maxHeight);\n\n y -= top;\n x -= left;\n\n return {\n position: this.position,\n top: tuiPx(Math.round(Math.max(y, offset - top))),\n left: tuiPx(Math.round(x)),\n maxHeight: tuiPx(Math.round(height)),\n width: limitWidth === 'fixed' ? tuiPx(Math.round(rect.width)) : '',\n minWidth: limitWidth === 'min' ? tuiPx(Math.round(rect.width)) : '',\n };\n }\n}\n","<tui-scrollbar class=\"t-scroll\">\n <div\n *polymorpheusOutlet=\"directive.content as text; context: {$implicit: close}\"\n class=\"t-primitive\"\n >\n {{ text }}\n </div>\n</tui-scrollbar>\n","import {computed, Directive, inject} from '@angular/core';\nimport {EMPTY_CLIENT_RECT} from '@taiga-ui/cdk/constants';\nimport {TuiActiveZone} from '@taiga-ui/cdk/directives/active-zone';\nimport {TUI_IS_TOUCH} from '@taiga-ui/cdk/tokens';\nimport {tuiGetActualTarget, tuiPointToClientRect} from '@taiga-ui/cdk/utils/dom';\nimport {tuiAsDriver, tuiAsRectAccessor, TuiRectAccessor} from '@taiga-ui/core/classes';\nimport {shouldCall} from '@taiga-ui/event-plugins';\n\nimport {TuiDropdownDriver} from './dropdown.driver';\n\nfunction activeZoneFilter(this: TuiDropdownContext, event?: Event): boolean {\n return (\n !event ||\n (this.driver.value && !this.activeZone.contains(tuiGetActualTarget(event)))\n );\n}\n\n@Directive({\n standalone: true,\n selector: '[tuiDropdownContext]',\n providers: [\n TuiActiveZone,\n TuiDropdownDriver,\n tuiAsDriver(TuiDropdownDriver),\n tuiAsRectAccessor(TuiDropdownContext),\n ],\n host: {\n '[style.user-select]': 'userSelect()',\n '[style.-webkit-user-select]': 'userSelect()',\n '[style.-webkit-touch-callout]': 'userSelect()',\n '(document:pointerdown.zoneless)': 'closeDropdown($event)',\n '(document:contextmenu.capture.zoneless)': 'closeDropdown($event)',\n '(document:keydown.esc)': 'closeDropdown()',\n '(longtap)': 'onContextMenu($event.detail.clientX, $event.detail.clientY)',\n },\n})\nexport class TuiDropdownContext extends TuiRectAccessor {\n private readonly isTouch = inject(TUI_IS_TOUCH);\n private currentRect = EMPTY_CLIENT_RECT;\n\n protected readonly userSelect = computed(() => (this.isTouch() ? 'none' : null));\n protected readonly activeZone = inject(TuiActiveZone);\n protected readonly driver = inject(TuiDropdownDriver);\n\n public readonly type = 'dropdown';\n\n public getClientRect(): DOMRect {\n return this.currentRect;\n }\n\n @shouldCall(activeZoneFilter)\n protected closeDropdown(_event?: Event): void {\n this.driver.next(false);\n this.currentRect = EMPTY_CLIENT_RECT;\n }\n\n protected onContextMenu(x: number, y: number): void {\n this.currentRect = tuiPointToClientRect(x, y);\n this.driver.next(true);\n }\n}\n","import type {Provider} from '@angular/core';\nimport {tuiCreateToken, tuiProvideOptions} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport interface TuiDropdownHoverOptions {\n readonly hideDelay: number;\n readonly showDelay: number;\n}\n\n/** Default values for hint options */\nexport const TUI_DROPDOWN_HOVER_DEFAULT_OPTIONS: TuiDropdownHoverOptions = {\n showDelay: 200,\n hideDelay: 500,\n};\n\n/**\n * Default parameters for dropdown hover directive\n */\nexport const TUI_DROPDOWN_HOVER_OPTIONS = tuiCreateToken(\n TUI_DROPDOWN_HOVER_DEFAULT_OPTIONS,\n);\n\nexport function tuiDropdownHoverOptionsProvider(\n options: Partial<TuiDropdownHoverOptions>,\n): Provider {\n return tuiProvideOptions(\n TUI_DROPDOWN_HOVER_OPTIONS,\n options,\n TUI_DROPDOWN_HOVER_DEFAULT_OPTIONS,\n );\n}\n","import type {OnChanges} from '@angular/core';\nimport {\n computed,\n ContentChild,\n Directive,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n Output,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {TuiActiveZone} from '@taiga-ui/cdk/directives/active-zone';\nimport {TuiObscured} from '@taiga-ui/cdk/directives/obscured';\nimport {\n tuiCloseWatcher,\n tuiIfMap,\n tuiWatch,\n tuiZonefull,\n} from '@taiga-ui/cdk/observables';\nimport {\n tuiGetActualTarget,\n tuiInjectElement,\n tuiIsElement,\n tuiIsElementEditable,\n tuiIsHTMLElement,\n} from '@taiga-ui/cdk/utils/dom';\nimport {\n tuiGetClosestFocusable,\n tuiIsNativeFocusedIn,\n tuiIsNativeKeyboardFocusable,\n} from '@taiga-ui/cdk/utils/focus';\nimport {tuiAsDriver} from '@taiga-ui/core/classes';\nimport {tuiIsEditingKey} from '@taiga-ui/core/utils/miscellaneous';\nimport {shouldCall} from '@taiga-ui/event-plugins';\nimport {filter, fromEvent, merge} from 'rxjs';\n\nimport {TuiDropdownDirective} from './dropdown.directive';\nimport {TuiDropdownDriver} from './dropdown.driver';\n\nfunction shouldClose(this: TuiDropdownOpen, event: KeyboardEvent): boolean {\n return (\n // @ts-ignore\n typeof CloseWatcher === 'undefined' &&\n event.key.toLowerCase() === 'escape' &&\n this.tuiDropdownEnabled &&\n !!this.tuiDropdownOpen &&\n !this['dropdown']()?.nextElementSibling\n );\n}\n\n@Directive({\n standalone: true,\n selector: '[tuiDropdown][tuiDropdownOpen],[tuiDropdown][tuiDropdownOpenChange]',\n providers: [TuiDropdownDriver, tuiAsDriver(TuiDropdownDriver)],\n hostDirectives: [\n TuiObscured,\n {\n directive: TuiActiveZone,\n inputs: ['tuiActiveZoneParent'],\n outputs: ['tuiActiveZoneChange'],\n },\n ],\n host: {\n '(click)': 'onClick($event.target)',\n '(keydown.arrowDown)': 'onArrow($event, false)',\n '(keydown.arrowUp)': 'onArrow($event, true)',\n '(document:keydown.zoneless.capture)': 'onEsc($event)',\n '(document:keydown.zoneless)': 'onKeydown($event)',\n // TODO: Necessary because startWith(false) + distinctUntilChanged() in TuiActiveZone, think of better solution\n '(tuiActiveZoneChange)': '0',\n },\n})\nexport class TuiDropdownOpen implements OnChanges {\n @ContentChild('tuiDropdownHost', {descendants: true, read: ElementRef})\n private readonly dropdownHost?: ElementRef<HTMLElement>;\n\n private readonly directive = inject(TuiDropdownDirective);\n private readonly el = tuiInjectElement();\n private readonly obscured = inject(TuiObscured);\n private readonly activeZone = inject(TuiActiveZone);\n\n private readonly dropdown = computed(\n () => this.directive.ref()?.location.nativeElement,\n );\n\n @Input()\n public tuiDropdownEnabled = true;\n\n @Input()\n public tuiDropdownOpen: boolean | '' = false;\n\n @Output()\n public readonly tuiDropdownOpenChange = new EventEmitter<boolean>();\n\n // TODO: make it private when all legacy controls will be deleted from @taiga-ui/legacy (5.0)\n public readonly driver = inject(TuiDropdownDriver);\n public readonly sub = this.driver\n .pipe(\n tuiIfMap(() =>\n merge(\n tuiCloseWatcher(),\n this.obscured.tuiObscured.pipe(filter(Boolean)),\n this.activeZone.tuiActiveZoneChange.pipe(filter((a) => !a)),\n fromEvent(this.el, 'focusin').pipe(\n filter(\n (event) =>\n !this.host.contains(tuiGetActualTarget(event)) ||\n !this.directive.ref(),\n ),\n ),\n ),\n ),\n tuiZonefull(),\n tuiWatch(),\n takeUntilDestroyed(),\n )\n .subscribe(() => this.toggle(false));\n\n public readonly sync = this.driver.pipe(takeUntilDestroyed()).subscribe((open) => {\n if (open !== this.tuiDropdownOpen) {\n this.update(open);\n }\n });\n\n public ngOnChanges(): void {\n this.drive(!!this.tuiDropdownOpen);\n this.tuiDropdownOpenChange.emit(!!this.tuiDropdownOpen);\n }\n\n public toggle(open: boolean): void {\n if (this.focused && !open) {\n this.host.focus({preventScroll: true});\n }\n\n this.update(open);\n }\n\n @shouldCall(shouldClose)\n protected onEsc(event: KeyboardEvent): void {\n event.preventDefault();\n this.toggle(false);\n }\n\n protected onClick(target: HTMLElement): void {\n if (!this.editable && this.host.contains(target)) {\n this.update(!this.tuiDropdownOpen);\n }\n }\n\n protected onArrow(event: KeyboardEvent, up: boolean): void {\n if (\n !tuiIsElement(event.target) ||\n !this.host.contains(event.target) ||\n !this.tuiDropdownEnabled ||\n !this.directive.content\n ) {\n return;\n }\n\n event.preventDefault();\n this.focusDropdown(up);\n }\n\n protected onKeydown({key, target, defaultPrevented}: KeyboardEvent): void {\n if (\n !defaultPrevented &&\n tuiIsEditingKey(key) &&\n this.editable &&\n this.focused &&\n tuiIsHTMLElement(target) &&\n !tuiIsElementEditable(target)\n ) {\n this.host.focus({preventScroll: true});\n }\n }\n\n private get host(): HTMLElement {\n const initial = this.dropdownHost?.nativeElement || this.el;\n const focusable = tuiIsNativeKeyboardFocusable(initial)\n ? initial\n : tuiGetClosestFocusable({initial, root: this.el});\n\n return this.dropdownHost?.nativeElement || focusable || this.el;\n }\n\n private get editable(): boolean {\n return tuiIsElementEditable(this.host);\n }\n\n private get focused(): boolean {\n return tuiIsNativeFocusedIn(this.host) || tuiIsNativeFocusedIn(this.dropdown());\n }\n\n private update(open: boolean): void {\n if (open && !this.tuiDropdownEnabled) {\n return this.drive();\n }\n\n this.tuiDropdownOpen = open;\n this.tuiDropdownOpenChange.emit(open);\n this.drive();\n }\n\n private drive(open = !!this.tuiDropdownOpen && this.tuiDropdownEnabled): void {\n this.obscured.tuiObscuredEnabled = open;\n this.driver.next(open);\n }\n\n private focusDropdown(previous: boolean): void {\n const root = this.dropdown();\n\n if (!root) {\n this.update(true);\n\n return;\n }\n\n const doc = this.el.ownerDocument;\n const child = root.appendChild(doc.createElement('div'));\n const initial = previous ? child : root;\n const focusable = tuiGetClosestFocusable({initial, previous, root});\n\n child.remove();\n focusable?.focus();\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {ContentChild, Directive, ElementRef, inject, Input} from '@angular/core';\nimport {toObservable} from '@angular/core/rxjs-interop';\nimport {TuiActiveZone} from '@taiga-ui/cdk/directives/active-zone';\nimport {tuiTypedFromEvent, tuiZoneOptimized} from '@taiga-ui/cdk/observables';\nimport {\n tuiGetActualTarget,\n tuiInjectElement,\n tuiIsElement,\n} from '@taiga-ui/cdk/utils/dom';\nimport {tuiAsDriver, TuiDriver} from '@taiga-ui/core/classes';\nimport {\n delay,\n distinctUntilChanged,\n filter,\n fromEvent,\n map,\n merge,\n of,\n share,\n startWith,\n switchMap,\n takeUntil,\n tap,\n} from 'rxjs';\n\nimport {TuiDropdownDirective} from './dropdown.directive';\nimport {TUI_DROPDOWN_HOVER_OPTIONS} from './dropdown-hover.options';\nimport {TuiDropdownOpen} from './dropdown-open.directive';\n\n@Directive({\n standalone: true,\n selector: '[tuiDropdownHover]',\n providers: [TuiActiveZone, tuiAsDriver(TuiDropdownHover)],\n host: {\n '(click.capture)': 'onClick($event)',\n },\n})\nexport class TuiDropdownHover extends TuiDriver {\n @ContentChild('tuiDropdownHost', {descendants: true, read: ElementRef})\n private readonly dropdownHost?: ElementRef<HTMLElement>;\n\n private readonly el = tuiInjectElement();\n private readonly doc = inject(DOCUMENT);\n private readonly options = inject(TUI_DROPDOWN_HOVER_OPTIONS);\n private readonly activeZone = inject(TuiActiveZone);\n private readonly open = inject(TuiDropdownOpen, {optional: true});\n /**\n * Dropdown can be removed not only via click/touch –\n * swipe on mobile devices removes dropdown sheet without triggering new mouseover / mouseout events.\n */\n private readonly dropdownExternalRemoval$ = toObservable(\n inject(TuiDropdownDirective).ref,\n ).pipe(filter((x) => !x && this.hovered));\n\n private readonly stream$ = merge(\n this.dropdownExternalRemoval$.pipe(\n switchMap(() =>\n tuiTypedFromEvent(this.doc, 'pointerdown').pipe(\n map(tuiGetActualTarget),\n delay(this.hideDelay),\n startWith(null),\n takeUntil(fromEvent(this.doc, 'mouseover')),\n ),\n ),\n ),\n tuiTypedFromEvent(this.doc, 'mouseover').pipe(map(tuiGetActualTarget)),\n tuiTypedFromEvent(this.doc, 'mouseout').pipe(map((e) => e.relatedTarget)),\n ).pipe(\n map((element) => tuiIsElement(element) && this.isHovered(element)),\n distinctUntilChanged(),\n switchMap((v) => of(v).pipe(delay(v ? this.showDelay : this.hideDelay))),\n tuiZoneOptimized(),\n tap((hovered) => {\n this.hovered = hovered;\n this.open?.toggle(hovered);\n }),\n share(),\n );\n\n @Input('tuiDropdownShowDelay')\n public showDelay = this.options.showDelay;\n\n @Input('tuiDropdownHideDelay')\n public hideDelay = this.options.hideDelay;\n\n public hovered = false;\n\n public readonly type = 'dropdown';\n\n constructor() {\n super((subscriber) => this.stream$.subscribe(subscriber));\n }\n\n protected onClick(event: MouseEvent): void {\n if (this.hovered && this.open) {\n event.preventDefault();\n }\n }\n\n private isHovered(element: Element): boolean {\n const host = this.dropdownHost?.nativeElement || this.el;\n const hovered = host.contains(element);\n const child = !this.el.contains(element) && this.activeZone.contains(element);\n\n return hovered || child;\n }\n}\n","import type {OnChanges} from '@angular/core';\nimport {Directive, inject, Input} from '@angular/core';\nimport {tuiAsDriver} from '@taiga-ui/core/classes';\n\nimport {TuiDropdownDriver} from './dropdown.driver';\n\n@Directive({\n standalone: true,\n selector: '[tuiDropdownManual]',\n providers: [TuiDropdownDriver, tuiAsDriver(TuiDropdownDriver)],\n})\nexport class TuiDropdownManual implements OnChanges {\n private readonly driver = inject(TuiDropdownDriver);\n\n @Input()\n public tuiDropdownManual: boolean | '' = false;\n\n public ngOnChanges(): void {\n this.driver.next(!!this.tuiDropdownManual);\n }\n}\n","import {Directive, Input, Output} from '@angular/core';\nimport {distinctUntilChanged, Subject} from 'rxjs';\n\n/**\n * @deprecated TODO: remove in v.5 when legacy controls are dropped\n */\n@Directive({\n standalone: true,\n selector:\n '[tuiDropdownOpen]:not([tuiDropdown]),[tuiDropdownOpenChange]:not([tuiDropdown])',\n})\nexport class TuiDropdownOpenLegacy {\n private readonly openStateSub = new Subject<boolean>();\n\n @Output()\n public readonly tuiDropdownOpenChange =\n this.openStateSub.pipe(distinctUntilChanged());\n\n @Input()\n public set tuiDropdownOpen(open: boolean) {\n this.emitOpenChange(open);\n }\n\n public emitOpenChange(open: boolean): void {\n this.openStateSub.next(open);\n }\n}\n","import type {EmbeddedViewRef, OnDestroy} from '@angular/core';\nimport {Directive, inject, Input, TemplateRef} from '@angular/core';\n\nimport {TuiDropdownService} from './dropdown.service';\n\n/**\n * @deprecated use {@link TuiPopup} directive instead\n */\n@Directive({\n standalone: true,\n selector: 'ng-template[tuiDropdown]',\n})\nexport class TuiDropdownPortal implements OnDestroy {\n private readonly template = inject(TemplateRef);\n private readonly service = inject(TuiDropdownService);\n\n private viewRef?: EmbeddedViewRef<unknown>;\n\n @Input()\n public set tuiDropdown(show: boolean) {\n this.viewRef?.destroy();\n\n if (show) {\n this.viewRef = this.service.addTemplate(this.template);\n }\n }\n\n public ngOnDestroy(): void {\n this.viewRef?.destroy();\n }\n}\n","import {Directive, inject, Input} from '@angular/core';\nimport {EMPTY_CLIENT_RECT} from '@taiga-ui/cdk/constants';\nimport {tuiAsPositionAccessor, TuiPositionAccessor} from '@taiga-ui/core/classes';\nimport {TUI_VIEWPORT} from '@taiga-ui/core/tokens';\nimport type {TuiPoint} from '@taiga-ui/core/types';\n\nimport {TUI_DROPDOWN_OPTIONS} from './dropdown-options.directive';\nimport {TuiDropdownPosition} from './dropdown-position.directive';\n\n@Directive({\n standalone: true,\n selector: '[tuiDropdownSided]',\n providers: [TuiDropdownPosition, tuiAsPositionAccessor(TuiDropdownPositionSided)],\n})\nexport class TuiDropdownPositionSided extends TuiPositionAccessor {\n private readonly options = inject(TUI_DROPDOWN_OPTIONS);\n private readonly viewport = inject(TUI_VIEWPORT);\n private readonly vertical = inject(TuiDropdownPosition);\n private previous = this.options.direction || 'bottom';\n\n @Input()\n public tuiDropdownSided: boolean | string = '';\n\n @Input()\n public tuiDropdownSidedOffset = 4;\n\n public readonly type = 'dropdown';\n\n public getPosition(rect: DOMRect): TuiPoint {\n if (this.tuiDropdownSided === false) {\n return this.vertical.getPosition(rect);\n }\n\n const {height, width} = rect;\n const hostRect = this.vertical.accessor?.getClientRect() ?? EMPTY_CLIENT_RECT;\n const viewport = this.viewport.getClientRect();\n const {direction, minHeight, offset} = this.options;\n const align = this.options.align === 'center' ? 'left' : this.options.align;\n const available = {\n top: hostRect.bottom - viewport.top,\n left: hostRect.left - offset - viewport.left,\n right: viewport.right - hostRect.right - offset,\n bottom: viewport.bottom - hostRect.top,\n } as const;\n const position = {\n top: hostRect.bottom - height + this.tuiDropdownSidedOffset + 1, // 1 for border\n left: hostRect.left - width - offset,\n right: hostRect.right + offset,\n bottom: hostRect.top - this.tuiDropdownSidedOffset - 1, // 1 for border\n } as const;\n const better = available.top > available.bottom ? 'top' : 'bottom';\n const maxLeft = available.left > available.right ? position.left : position.right;\n const left = available[align] > width ? position[align] : maxLeft;\n\n if (\n (available[this.previous] > minHeight && direction) ||\n this.previous === better\n ) {\n this.vertical.emitDirection(this.previous);\n\n return [position[this.previous], left];\n }\n\n this.previous = better;\n this.vertical.emitDirection(better);\n\n return [position[better], left];\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport type {OnDestroy} from '@angular/core';\nimport {Directive, inject, Input, ViewContainerRef} from '@angular/core';\nimport {\n CHAR_NO_BREAK_SPACE,\n CHAR_ZERO_WIDTH_SPACE,\n EMPTY_CLIENT_RECT,\n TUI_TRUE_HANDLER,\n} from '@taiga-ui/cdk/constants';\nimport {TUI_RANGE} from '@taiga-ui/cdk/tokens';\nimport type {TuiBooleanHandler} from '@taiga-ui/cdk/types';\nimport {\n tuiInjectElement,\n tuiIsElement,\n tuiIsTextfield,\n tuiIsTextNode,\n} from '@taiga-ui/cdk/utils/dom';\nimport {tuiGetNativeFocused} from '@taiga-ui/cdk/utils/focus';\nimport {tuiIsString, tuiPx} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {TuiRectAccessor} from '@taiga-ui/core/classes';\nimport {tuiAsDriver, tuiAsRectAccessor, TuiDriver} from '@taiga-ui/core/classes';\nimport {TUI_SELECTION_STREAM} from '@taiga-ui/core/tokens';\nimport {tuiGetWordRange} from '@taiga-ui/core/utils';\nimport {BehaviorSubject, combineLatest, distinctUntilChanged, map} from 'rxjs';\n\nimport {TuiDropdownDirective} from './dropdown.directive';\n\n@Directive({\n standalone: true,\n selector: '[tuiDropdownSelection]',\n providers: [\n tuiAsDriver(TuiDropdownSelection),\n tuiAsRectAccessor(TuiDropdownSelection),\n ],\n})\nexport class TuiDropdownSelection\n extends TuiDriver\n implements TuiRectAccessor, OnDestroy\n{\n private ghost?: HTMLElement;\n\n protected readonly doc = inject(DOCUMENT);\n protected readonly vcr = inject(ViewContainerRef);\n protected readonly dropdown = inject(TuiDropdownDirective);\n protected readonly el = tuiInjectElement();\n protected readonly handler$ = new BehaviorSubject<TuiBooleanHandler<Range>>(\n TUI_TRUE_HANDLER,\n );\n\n protected readonly stream$ = combineLatest([\n this.handler$,\n inject(TUI_SELECTION_STREAM).pipe(\n map(() => this.getRange()),\n distinctUntilChanged(\n (x, y) =>\n x.startOffset === y.startOffset &&\n x.endOffset === y.endOffset &&\n x.commonAncestorContainer === y.commonAncestorContainer,\n ),\n ),\n ]).pipe(\n map(([handler, range]) => {\n const contained = this.el.contains(range.commonAncestorContainer);\n\n this.range =\n contained && tuiIsTextNode(range.commonAncestorContainer)\n ? range\n : this.range;\n\n return (contained && handler(this.range)) || this.inDropdown(range);\n }),\n );\n\n protected range = inject(TUI_RANGE);\n\n @Input('tuiDropdownSelectionPosition')\n public position: 'selection' | 'tag' | 'word' = 'selection';\n\n public readonly type = 'dropdown';\n\n constructor() {\n super((subscriber) => this.stream$.subscribe(subscriber));\n }\n\n @Input()\n public set tuiDropdownSelection(visible: TuiBooleanHandler<Range> | string) {\n if (!tuiIsString(visible)) {\n this.handler$.next(visible);\n }\n }\n\n public getClientRect(): DOMRect {\n switch (this.position) {\n case 'tag': {\n const {commonAncestorContainer} = this.range;\n const element = tuiIsElement(commonAncestorContainer)\n ? commonAncestorContainer\n : commonAncestorContainer.parentNode;\n\n return element && tuiIsElement(element)\n ? element.getBoundingClientRect()\n : EMPTY_CLIENT_RECT;\n }\n case 'word':\n return tuiGetWordRange(this.range).getBoundingClientRect();\n default:\n return this.range.getBoundingClientRect();\n }\n }\n\n public ngOnDestroy(): void {\n if (this.ghost) {\n this.vcr.element.nativeElement.removeChild(this.ghost);\n }\n }\n\n protected getRange(): Range {\n const active = tuiGetNativeFocused(this.doc);\n const selection = this.doc.getSelection();\n const range =\n active && tuiIsTextfield(active) && this.el.contains(active)\n ? this.veryVerySadInputFix(active)\n : (selection?.rangeCount && selection.getRangeAt(0)) || this.range;\n\n return range.cloneRange();\n }\n\n /**\n * Check if given range is at least partially inside dropdown\n */\n protected inDropdown(range: Range): boolean {\n const {startContainer, endContainer} = range;\n const inDropdown = this.boxContains(range.commonAncestorContainer);\n const hostToDropdown =\n this.boxContains(endContainer) && this.el.contains(startContainer);\n const dropdownToHost =\n this.boxContains(startContainer) && this.el.contains(endContainer);\n\n return inDropdown || hostToDropdown || dropdownToHost;\n }\n\n /**\n * Check if Node is inside dropdown\n */\n private boxContains(node: Node): boolean {\n return !!this.dropdown.ref()?.location.nativeElement.contains(node);\n }\n\n private veryVerySadInputFix(element: HTMLInputElement | HTMLTextAreaElement): Range {\n const {ghost = this.initGhost(element)} = this;\n const {top, left, width, height} = element.getBoundingClientRect();\n const {selectionStart, selectionEnd, value} = element;\n const range = this.doc.createRange();\n const hostRect = this.el.getBoundingClientRect();\n\n ghost.style.top = tuiPx(top - hostRect.top);\n ghost.style.left = tuiPx(left - hostRect.left);\n ghost.style.width = tuiPx(width);\n ghost.style.height = tuiPx(height);\n ghost.textContent = CHAR_ZERO_WIDTH_SPACE + value + CHAR_NO_BREAK_SPACE;\n\n range.setStart(ghost.firstChild as Node, selectionStart || 0);\n range.setEnd(ghost.firstChild as Node, selectionEnd || 0);\n\n return range;\n }\n\n /**\n * Create an invisible DIV styled exactly like input/textarea element inside directive\n */\n private initGhost(element: HTMLInputElement | HTMLTextAreaElement): HTMLElement {\n const ghost = this.doc.createElement('div');\n const {font, letterSpacing, textTransform, padding} = getComputedStyle(element);\n\n ghost.style.position = 'absolute';\n ghost.style.pointerEvents = 'none';\n ghost.style.opacity = '0';\n ghost.style.whiteSpace = 'pre-wrap';\n ghost.style.font = font;\n ghost.style.letterSpacing = letterSpacing;\n ghost.style.textTransform = textTransform;\n ghost.style.padding = padding;\n\n this.vcr.element.nativeElement.appendChild(ghost);\n this.ghost = ghost;\n\n return ghost;\n }\n}\n","import {TuiDropdownComponent} from './dropdown.component';\nimport {TuiDropdownDirective} from './dropdown.directive';\nimport {TuiDropdownDriverDirective} from './dropdown.driver';\nimport {TuiDropdownContext} from './dropdown-context.directive';\nimport {TuiDropdownHover} from './dropdown-hover.directive';\nimport {TuiDropdownManual} from './dropdown-manual.directive';\nimport {TuiDropdownOpen} from './dropdown-open.directive';\nimport {TuiDropdownOpenLegacy} from './dropdown-open-legacy.directive';\nimport {TuiDropdownOptionsDirective} from './dropdown-options.directive';\nimport {TuiDropdownPortal} from './dropdown-portal.directive';\nimport {TuiDropdownPosition} from './dropdown-position.directive';\nimport {TuiDropdownPositionSided} from './dropdown-position-sided.directive';\nimport {TuiDropdownSelection} from './dropdown-selection.directive';\n\nexport const TuiDropdown = [\n TuiDropdownOptionsDirective,\n TuiDropdownDriverDirective,\n TuiDropdownDirective,\n TuiDropdownComponent,\n TuiDropdownOpen,\n TuiDropdownOpenLegacy,\n TuiDropdownPortal,\n TuiDropdownManual,\n TuiDropdownHover,\n TuiDropdownContext,\n TuiDropdownPosition,\n TuiDropdownPositionSided,\n TuiDropdownSelection,\n] as const;\n","import type {Signal, WritableSignal} from '@angular/core';\nimport {inject} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {tuiDirectiveBinding} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {PolymorpheusContent} from '@taiga-ui/polymorpheus';\n\nimport {TuiDropdownDirective} from './dropdown.directive';\nimport {TuiDropdownOpen} from './dropdown-open.directive';\n\ntype C = PolymorpheusContent;\n\nexport function tuiDropdown(value: C | WritableSignal<C>): WritableSignal<C>;\nexport function tuiDropdown(value: Signal<C>): Signal<C>;\nexport function tuiDropdown(value: C | Signal<C>): Signal<C> {\n return tuiDirectiveBinding(TuiDropdownDirective, 'tuiDropdown', value, {});\n}\n\nexport function tuiDropdownEnabled(\n value: WritableSignal<boolean> | boolean,\n): WritableSignal<boolean>;\nexport function tuiDropdownEnabled(value: Signal<boolean>): Signal<boolean>;\nexport function tuiDropdownEnabled(value: Signal<boolean> | boolean): Signal<boolean> {\n return tuiDirectiveBinding(TuiDropdownOpen, 'tuiDropdownEnabled', value, {});\n}\n\nexport function tuiDropdownOpen(): WritableSignal<boolean> {\n const open: WritableSignal<boolean> = tuiDirectiveBinding(\n TuiDropdownOpen,\n 'tuiDropdownOpen',\n false,\n {},\n );\n\n inject(TuiDropdownOpen)\n .tuiDropdownOpenChange.pipe(takeUntilDestroyed())\n .subscribe((value) => open.set(value));\n\n return open;\n}\n","import {Directive, inject} from '@angular/core';\nimport {tuiOverrideOptions} from '@taiga-ui/core/utils/miscellaneous';\n\nimport {\n TUI_DROPDOWN_DEFAULT_OPTIONS,\n TUI_DROPDOWN_OPTIONS,\n tuiDropdownOptionsProvider,\n} from './dropdown-options.directive';\n\n@Directive({\n standalone: true,\n providers: [tuiDropdownOptionsProvider({})],\n})\nexport class TuiDropdownFixed {\n constructor() {\n const override = tuiOverrideOptions(\n {limitWidth: 'fixed'},\n TUI_DROPDOWN_DEFAULT_OPTIONS,\n );\n\n override(inject(TUI_DROPDOWN_OPTIONS, {self: true, optional: true}), null);\n }\n}\n\n@Directive({standalone: true})\nexport class TuiDropdownAuto {\n constructor() {\n /**\n * Update directive props with new defaults before inputs are processed\n * TODO: find better way to override TuiDropdownFixed host directive from parent component\n */\n (inject(TUI_DROPDOWN_OPTIONS) as any).limitWidth = 'auto';\n }\n}\n","import {ChangeDetectionStrategy, Component} from '@angular/core';\nimport {tuiAsPortal, TuiPortals} from '@taiga-ui/cdk/classes';\n\nimport {TuiDropdownService} from './dropdown.service';\n\n/**\n * Host element for dynamically created portals, for example using {@link TuiDropdownDirective}.\n */\n@Component({\n standalone: true,\n selector: 'tui-dropdowns',\n template: '<ng-container #viewContainer />',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiAsPortal(TuiDropdownService)],\n host: {style: 'position: absolute; width: 100%; top: 0'},\n})\nexport class TuiDropdowns extends TuiPortals {}\n","import {Directive} from '@angular/core';\n\nimport {TuiDropdownOpen} from './dropdown-open.directive';\n\n@Directive({\n standalone: true,\n hostDirectives: [\n {\n directive: TuiDropdownOpen,\n inputs: ['tuiDropdownOpen: open', 'tuiDropdownEnabled'],\n outputs: ['tuiDropdownOpenChange: openChange'],\n },\n ],\n})\nexport class TuiWithDropdownOpen {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.TuiDropdownDriverDirective","i2.TuiDropdownPosition","i1","i2","tuiOverrideOptions","i1.TuiDropdownOpen"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,MACa,iBAAkB,SAAQ,eAAwB,CAAA;AAG3D,IAAA,WAAA,GAAA;QACI,KAAK,CAAC,KAAK,CAAC,CAAC;QAHD,IAAI,CAAA,IAAA,GAAG,UAAU,CAAC;KAIjC;+GALQ,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;mHAAjB,iBAAiB,EAAA,CAAA,CAAA,EAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;;AASX,MAGa,0BAA2B,SAAQ,kBAAkB,CAAA;AAHlE,IAAA,WAAA,GAAA;;QAIoB,IAAI,CAAA,IAAA,GAAG,UAAU,CAAC;AACrC,KAAA;+GAFY,0BAA0B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAHtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;;;ACRD;;AAEG;AACU,MAAA,sBAAsB,GAAG,yBAAyB,CAC3D,MAAM,oBAAoB,EAC5B;AAEW,MAAA,oBAAoB,GAAG,cAAc;;ACZlD,MAGa,kBAAmB,SAAQ,gBAAgB,CAAA;+GAA3C,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cAFf,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAET,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;;ACcD;AACa,MAAA,4BAA4B,GAAuB;AAC5D,IAAA,KAAK,EAAE,MAAM;AACb,IAAA,SAAS,EAAE,IAAI;AACf,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,SAAS,EAAE,GAAG;AACd,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,MAAM,EAAE,CAAC;AACT,IAAA,UAAU,EAAE,EAAE;EAChB;AAEF;;AAEG;MACU,oBAAoB,GAAG,cAAc,CAAC,4BAA4B,EAAE;MAEpE,0BAA0B,GAEhB,CAAC,QAAqC,MAAM;AAC/D,IAAA,OAAO,EAAE,oBAAoB;AAC7B,IAAA,IAAI,EAAE;QACF,CAAC,IAAI,QAAQ,EAAE,EAAE,IAAI,IAAI,EAAE,EAAE,2BAA2B,CAAC;QACzD,CAAC,IAAI,QAAQ,EAAE,EAAE,IAAI,QAAQ,EAAE,EAAE,oBAAoB,CAAC;AACzD,KAAA;AACD,IAAA,UAAU,EAAE,kBAAkB,CAAC,QAAQ,EAAE,4BAA4B,CAAC;AACzE,CAAA,EAAE;AAEH,MAMa,2BAA2B,CAAA;AANxC,IAAA,WAAA,GAAA;QAOqB,IAAO,CAAA,OAAA,GAAG,MAAM,CAAC,oBAAoB,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;AAGnE,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AAG3B,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;AAGrC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;AAGnC,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;AAGrC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;AAGnC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;AAGnC,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AACvC,KAAA;+GAvBY,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mKAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,CAAA,kBAAA,EAAA,OAAA,CAAA,EAAA,UAAA,EAAA,CAAA,uBAAA,EAAA,YAAA,CAAA,EAAA,SAAA,EAAA,CAAA,sBAAA,EAAA,WAAA,CAAA,EAAA,UAAA,EAAA,CAAA,uBAAA,EAAA,YAAA,CAAA,EAAA,SAAA,EAAA,CAAA,sBAAA,EAAA,WAAA,CAAA,EAAA,SAAA,EAAA,CAAA,sBAAA,EAAA,WAAA,CAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,CAAA,EAAA,EAAA,SAAA,EAFzB,CAAC,UAAU,CAAC,oBAAoB,EAAE,2BAA2B,CAAC,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAEjE,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EACJ,mKAAmK;AACvK,oBAAA,SAAS,EAAE,CAAC,UAAU,CAAC,oBAAoB,8BAA8B,CAAC;AAC7E,iBAAA,CAAA;8BAKU,KAAK,EAAA,CAAA;sBADX,KAAK;uBAAC,kBAAkB,CAAA;gBAIlB,UAAU,EAAA,CAAA;sBADhB,KAAK;uBAAC,uBAAuB,CAAA;gBAIvB,SAAS,EAAA,CAAA;sBADf,KAAK;uBAAC,sBAAsB,CAAA;gBAItB,UAAU,EAAA,CAAA;sBADhB,KAAK;uBAAC,uBAAuB,CAAA;gBAIvB,SAAS,EAAA,CAAA;sBADf,KAAK;uBAAC,sBAAsB,CAAA;gBAItB,SAAS,EAAA,CAAA;sBADf,KAAK;uBAAC,sBAAsB,CAAA;gBAItB,MAAM,EAAA,CAAA;sBADZ,KAAK;uBAAC,mBAAmB,CAAA;;;AC3D9B,MAGa,mBAAoB,SAAQ,mBAAmB,CAAA;AAH5D,IAAA,WAAA,GAAA;;AAIqB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;AACvC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AAKjC,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAwB,CAAC;QAE3D,IAAI,CAAA,IAAA,GAAG,UAAU,CAAC;QAClB,IAAQ,CAAA,QAAA,GACpB,mBAAmB,CAAkB,UAAU,CAAC,CAC5C,MAAM,CAAM,eAAe,CAAC,EAC5B,MAAM,CAAC,oBAAoB,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAE,CAClD,CAAC;AAwDT,KAAA;AArDU,IAAA,aAAa,CAAC,SAA+B,EAAA;AAChD,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KACxC;AAEM,IAAA,WAAW,CAAC,EAAC,KAAK,EAAE,MAAM,EAAU,EAAA;AACvC,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE;AACnB,YAAA,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;AAC7B,SAAA;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,iBAAiB,CAAC;QACrE,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;AACnD,QAAA,MAAM,EAAC,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAC,GAAG,IAAI,CAAC,OAAO,CAAC;AACvE,QAAA,MAAM,QAAQ,GAAG;AACb,YAAA,GAAG,EAAE,YAAY,CAAC,GAAG,GAAG,MAAM;AAC9B,YAAA,MAAM,EAAE,YAAY,CAAC,MAAM,GAAG,MAAM;AACpC,YAAA,KAAK,EAAE,YAAY,CAAC,KAAK,GAAG,MAAM;AAClC,YAAA,IAAI,EAAE,YAAY,CAAC,IAAI,GAAG,MAAM;SAC1B,CAAC;QACX,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,SAAS,IAAI,QAAQ,CAAC;AACxD,QAAA,MAAM,SAAS,GAAG;YACd,GAAG,EAAE,QAAQ,CAAC,GAAG,GAAG,CAAC,GAAG,MAAM,GAAG,QAAQ,CAAC,GAAG;YAC7C,MAAM,EAAE,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM;SAChD,CAAC;AACX,QAAA,MAAM,SAAS,GAAG,UAAU,KAAK,OAAO,GAAG,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;AAClE,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,SAAS,EAAE,MAAM,CAAC,CAAC;QAC3D,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,GAAG,KAAK,GAAG,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC;AAC5E,QAAA,MAAM,QAAQ,GAAG;AACb,YAAA,GAAG,EAAE,QAAQ,CAAC,GAAG,GAAG,MAAM,GAAG,MAAM;AACnC,YAAA,MAAM,EAAE,QAAQ,CAAC,MAAM,GAAG,MAAM;YAChC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;AACrC,YAAA,MAAM,EACF,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK;AAC3D,kBAAE,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC;AAChD,kBAAE,KAAK;YACf,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;SAC7B,CAAC;AACX,QAAA,MAAM,MAAM,GACR,SAAS,CAAC,GAAG,GAAG,SAAS,CAAC,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;QAExD,IACI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,SAAS,IAAI,SAAS;AAC7C,YAAA,SAAS,CAAC,QAAQ,CAAC,GAAG,MAAM,EAC9B;AACE,YAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAE7B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAChD,SAAA;AAED,QAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC;AACvB,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAE3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;KAC9C;+GArEQ,mBAAmB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,4BAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;AAiBrB,UAAA,CAAA;IADN,OAAO;AAGP,CAAA,EAAA,mBAAA,CAAA,SAAA,EAAA,eAAA,EAAA,IAAA,CAAA,CAAA;4FAnBQ,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;8BAQmB,eAAe,EAAA,CAAA;sBAD9B,MAAM;uBAAC,4BAA4B,CAAA;gBAW7B,aAAa,EAAA,EAAA,EAAA,EAAA,CAAA;;ACNxB,MAmBa,oBAAoB,CAAA;AAnBjC,IAAA,WAAA,GAAA;AA4BqB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ,CAAC;AAC/B,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AACrC,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;;AAGhC,QAAA,IAAA,CAAA,OAAO,GAAG,WAAW,CAClC,MAAM,CAAC,iBAAiB,EAAE;AACtB,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,QAAQ,EAAE,IAAI;AACjB,SAAA,CAAC,CACL,CAAC;QAEiB,IAAG,CAAA,GAAA,GAAG,IAAI,CAAC,QAAQ;aACjC,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,oBAAoB,EAAE,CAAC,EAAE,kBAAkB,EAAE,CAAC;aACnE,SAAS,CAAC,MAAK;YACZ,IAAI,CAAC,GAAG,EAAE,EAAE,iBAAiB,CAAC,aAAa,EAAE,CAAC;YAC9C,IAAI,CAAC,GAAG,EAAE,EAAE,iBAAiB,CAAC,YAAY,EAAE,CAAC;AACjD,SAAC,CAAC,CAAC;QAES,IAAE,CAAA,EAAA,GAAG,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAA,IAAA,GAAG,UAAU,CAAC;AAClB,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,qBAAqB,CACjD,MAAM,CAAC,sBAAsB,CAAC,EAC9B,MAAM,CAAC,QAAQ,CAAC,CACnB,CAAC;AAEK,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAA+B,IAAI,CAAC,CAAC;AAgD3D,KAAA;IA7CG,IACW,WAAW,CAAC,OAAoD,EAAA;AACvE,QAAA,IAAI,CAAC,OAAO;AACR,YAAA,OAAO,YAAY,WAAW;kBACxB,IAAI,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC;kBAC3C,OAAO,CAAC;KACrB;AAED,IAAA,IAAW,QAAQ,GAAA;AACf,QAAA,OAAO,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,OAAO,GAAG,UAAU,CAAC;KAChE;IAEM,kBAAkB,GAAA;AACrB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;KACxB;IAEM,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACf,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACtB,SAAA;KACJ;IAEM,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACtB;IAEM,aAAa,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,CAAC;KAC1C;AAEM,IAAA,MAAM,CAAC,IAAa,EAAA;AACvB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,GAAG,EAAE;AAC9B,YAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AAClD,SAAA;AAAM,aAAA,IAAI,CAAC,IAAI,IAAI,GAAG,EAAE;AACrB,YAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACnB,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC5B,SAAA;AAED,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;;AAGrD,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KAC3B;+GAlFQ,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAhBlB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,yBAAA,EAAA,OAAA,EAAA,EAAA,EAAA,SAAA,EAAA;YACP,iBAAiB,CAAC,oBAAoB,CAAC;YACvC,YAAY,CAAC,oBAAoB,CAAC;AACrC,SAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,0BAAA,EAAA,EAAA,EAAA,SAAA,EAAAC,mBAAA,EAAA,OAAA,EAAA,CAAA,4BAAA,EAAA,4BAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAaQ,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAnBhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,kDAAkD;AAC5D,oBAAA,SAAS,EAAE;AACP,wBAAA,iBAAiB,CAAsB,oBAAA,CAAA;AACvC,wBAAA,YAAY,CAAsB,oBAAA,CAAA;AACrC,qBAAA;AACD,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,cAAc,EAAE;wBACZ,0BAA0B;AAC1B,wBAAA;AACI,4BAAA,SAAS,EAAE,mBAAmB;4BAC9B,OAAO,EAAE,CAAC,4BAA4B,CAAC;AAC1C,yBAAA;AACJ,qBAAA;AACD,oBAAA,IAAI,EAAE;AACF,wBAAA,2BAA2B,EAAE,OAAO;AACvC,qBAAA;AACJ,iBAAA,CAAA;8BAwCc,WAAW,EAAA,CAAA;sBADrB,KAAK;;;AC7DV;;;;AAIG;AACH,MAsBa,oBAAoB,CAAA;AAtBjC,IAAA,WAAA,GAAA;QAuBqB,IAAE,CAAA,EAAA,GAAG,gBAAgB,EAAE,CAAC;AACxB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;AACnC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AAChC,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC;QAErC,IAAS,CAAA,SAAA,GAAG,qBAAqB,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC;AAChE,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;AACvC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACzC,IAAO,CAAA,OAAA,GAAG,MAAM,CAAC,oBAAoB,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;AACzD,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AACjC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;AACnC,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,KACpD,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CACpE,CAAC;AAEiB,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC9C,aAAA,IAAI,CACD,SAAS,CACL,MACI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,WAAW;AAC7B,YAAA,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,qBAAqB,EAAE,CAAC,MAAM,CACzD,EACD,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAC3E,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,EAC/C,kBAAkB,EAAE,CACvB;AACA,aAAA,SAAS,CAAC;AACP,YAAA,IAAI,EAAE,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;YACtD,QAAQ,EAAE,MAAM,IAAI,CAAC,KAAK,IAAI;AACjC,SAAA,CAAC,CAAC;AAEY,QAAA,IAAA,CAAA,KAAK,GAAG,MAAY,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AA2BvE,KAAA;IAzBW,SAAS,CAAC,CAAS,EAAE,CAAS,EAAA;AAClC,QAAA,MAAM,EAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QAChE,MAAM,EAAC,IAAI,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAC,GAAG,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC;QAChF,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;AAC/C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC;AACnD,QAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC;AAC1D,QAAA,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;AAClD,QAAA,MAAM,MAAM,GACR,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK;AACjE,cAAE,SAAS;cACT,QAAQ,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QAEpD,CAAC,IAAI,GAAG,CAAC;QACT,CAAC,IAAI,IAAI,CAAC;QAEV,OAAO;YACH,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,YAAA,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC;YACjD,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC1B,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACpC,KAAK,EAAE,UAAU,KAAK,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE;YAClE,QAAQ,EAAE,UAAU,KAAK,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE;SACtE,CAAC;KACL;+GA1DQ,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAblB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,SAAA,EAAA,EAAA,EAAA,SAAA,EAAA;YACP,kBAAkB;AAClB,YAAA,sBAAsB,CAAC,UAAU,EAAE,mBAAmB,CAAC;AACvD,YAAA,kBAAkB,CAAC,UAAU,EAAE,oBAAoB,CAAC;SACvD,EC1CL,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,aAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,gOAQA,gnBDwBc,kBAAkB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,2BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,YAAY,EAW9B,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAC,oBAAoB,CAAC,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,OAAA,EAAA,CAAA,CAAA,EAAA;;4FAQzB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAtBhC,SAAS;AACM,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EACN,QAAA,EAAA,cAAc,EACf,OAAA,EAAA,CAAC,kBAAkB,EAAE,YAAY,CAAC,EAK1B,eAAA,EAAA,uBAAuB,CAAC,OAAO,EACrC,SAAA,EAAA;wBACP,kBAAkB;AAClB,wBAAA,sBAAsB,CAAC,UAAU,EAAE,mBAAmB,CAAC;AACvD,wBAAA,kBAAkB,CAAC,UAAU,EAAE,oBAAoB,CAAC;AACvD,qBAAA,EAAA,UAAA,EACW,CAAC,oBAAoB,CAAC,kBAClB,CAAC,aAAa,CAAC,EACzB,IAAA,EAAA;AACF,wBAAA,yBAAyB,EAAE,WAAW;AACtC,wBAAA,wBAAwB,EAAE,oBAAoB;AAC9C,wBAAA,iBAAiB,EAAE,SAAS;AAC/B,qBAAA,EAAA,QAAA,EAAA,gOAAA,EAAA,MAAA,EAAA,CAAA,wjBAAA,CAAA,EAAA,CAAA;;;AEvCL,SAAS,gBAAgB,CAA2B,KAAa,EAAA;IAC7D,QACI,CAAC,KAAK;SACL,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,EAC7E;AACN,CAAC;AAED,MAmBa,kBAAmB,SAAQ,eAAe,CAAA;AAnBvD,IAAA,WAAA,GAAA;;AAoBqB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;QACxC,IAAW,CAAA,WAAA,GAAG,iBAAiB,CAAC;QAErB,IAAU,CAAA,UAAA,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;AAC9D,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AACnC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAEtC,IAAI,CAAA,IAAA,GAAG,UAAU,CAAC;AAgBrC,KAAA;IAdU,aAAa,GAAA;QAChB,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;AAGS,IAAA,aAAa,CAAC,MAAc,EAAA;AAClC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxB,QAAA,IAAI,CAAC,WAAW,GAAG,iBAAiB,CAAC;KACxC;IAES,aAAa,CAAC,CAAS,EAAE,CAAS,EAAA;QACxC,IAAI,CAAC,WAAW,GAAG,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC1B;+GAvBQ,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EAhBhB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,+BAAA,EAAA,uBAAA,EAAA,uCAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,6DAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,2BAAA,EAAA,cAAA,EAAA,6BAAA,EAAA,cAAA,EAAA,EAAA,EAAA,SAAA,EAAA;YACP,aAAa;YACb,iBAAiB;YACjB,WAAW,CAAC,iBAAiB,CAAC;YAC9B,iBAAiB,CAAC,kBAAkB,CAAC;AACxC,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;AA0BS,UAAA,CAAA;IADT,UAAU,CAAC,gBAAgB,CAAC;AAI5B,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,eAAA,EAAA,IAAA,CAAA,CAAA;4FAlBQ,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAnB9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,SAAS,EAAE;wBACP,aAAa;wBACb,iBAAiB;wBACjB,WAAW,CAAC,iBAAiB,CAAC;AAC9B,wBAAA,iBAAiB,CAAoB,kBAAA,CAAA;AACxC,qBAAA;AACD,oBAAA,IAAI,EAAE;AACF,wBAAA,qBAAqB,EAAE,cAAc;AACrC,wBAAA,6BAA6B,EAAE,cAAc;AAC7C,wBAAA,+BAA+B,EAAE,cAAc;AAC/C,wBAAA,iCAAiC,EAAE,uBAAuB;AAC1D,wBAAA,yCAAyC,EAAE,uBAAuB;AAClE,wBAAA,wBAAwB,EAAE,iBAAiB;AAC3C,wBAAA,WAAW,EAAE,6DAA6D;AAC7E,qBAAA;AACJ,iBAAA,CAAA;8BAgBa,aAAa,EAAA,EAAA,EAAA,EAAA,CAAA;;AC3C3B;AACa,MAAA,kCAAkC,GAA4B;AACvE,IAAA,SAAS,EAAE,GAAG;AACd,IAAA,SAAS,EAAE,GAAG;EAChB;AAEF;;AAEG;MACU,0BAA0B,GAAG,cAAc,CACpD,kCAAkC,EACpC;AAEI,SAAU,+BAA+B,CAC3C,OAAyC,EAAA;IAEzC,OAAO,iBAAiB,CACpB,0BAA0B,EAC1B,OAAO,EACP,kCAAkC,CACrC,CAAC;AACN;;ACWA,SAAS,WAAW,CAAwB,KAAoB,EAAA;IAC5D;;IAEI,OAAO,YAAY,KAAK,WAAW;AACnC,QAAA,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,QAAQ;AACpC,QAAA,IAAI,CAAC,kBAAkB;QACvB,CAAC,CAAC,IAAI,CAAC,eAAe;QACtB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,kBAAkB,EACzC;AACN,CAAC;AAED,MAsBa,eAAe,CAAA;AAtB5B,IAAA,WAAA,GAAA;AA0BqB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACzC,IAAE,CAAA,EAAA,GAAG,gBAAgB,EAAE,CAAC;AACxB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAC/B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AAEnC,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAChC,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,aAAa,CACrD,CAAC;QAGK,IAAkB,CAAA,kBAAA,GAAG,IAAI,CAAC;QAG1B,IAAe,CAAA,eAAA,GAAiB,KAAK,CAAC;AAG7B,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,YAAY,EAAW,CAAC;;AAGpD,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACnC,IAAG,CAAA,GAAA,GAAG,IAAI,CAAC,MAAM;AAC5B,aAAA,IAAI,CACD,QAAQ,CAAC,MACL,KAAK,CACD,eAAe,EAAE,EACjB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAC/C,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAC3D,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,IAAI,CAC9B,MAAM,CACF,CAAC,KAAK,KACF,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAC9C,YAAA,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAC5B,CACJ,CACJ,CACJ,EACD,WAAW,EAAE,EACb,QAAQ,EAAE,EACV,kBAAkB,EAAE,CACvB;aACA,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAEzB,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AAC7E,YAAA,IAAI,IAAI,KAAK,IAAI,CAAC,eAAe,EAAE;AAC/B,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACrB,aAAA;AACL,SAAC,CAAC,CAAC;AAuGN,KAAA;IArGU,WAAW,GAAA;QACd,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACnC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;KAC3D;AAEM,IAAA,MAAM,CAAC,IAAa,EAAA;AACvB,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,EAAE;YACvB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAC,aAAa,EAAE,IAAI,EAAC,CAAC,CAAC;AAC1C,SAAA;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;KACrB;AAGS,IAAA,KAAK,CAAC,KAAoB,EAAA;QAChC,KAAK,CAAC,cAAc,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACtB;AAES,IAAA,OAAO,CAAC,MAAmB,EAAA;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YAC9C,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACtC,SAAA;KACJ;IAES,OAAO,CAAC,KAAoB,EAAE,EAAW,EAAA;AAC/C,QAAA,IACI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC;YAC3B,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;YACjC,CAAC,IAAI,CAAC,kBAAkB;AACxB,YAAA,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EACzB;YACE,OAAO;AACV,SAAA;QAED,KAAK,CAAC,cAAc,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;KAC1B;AAES,IAAA,SAAS,CAAC,EAAC,GAAG,EAAE,MAAM,EAAE,gBAAgB,EAAgB,EAAA;AAC9D,QAAA,IACI,CAAC,gBAAgB;YACjB,eAAe,CAAC,GAAG,CAAC;AACpB,YAAA,IAAI,CAAC,QAAQ;AACb,YAAA,IAAI,CAAC,OAAO;YACZ,gBAAgB,CAAC,MAAM,CAAC;AACxB,YAAA,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAC/B;YACE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAC,aAAa,EAAE,IAAI,EAAC,CAAC,CAAC;AAC1C,SAAA;KACJ;AAED,IAAA,IAAY,IAAI,GAAA;QACZ,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,aAAa,IAAI,IAAI,CAAC,EAAE,CAAC;AAC5D,QAAA,MAAM,SAAS,GAAG,4BAA4B,CAAC,OAAO,CAAC;AACnD,cAAE,OAAO;AACT,cAAE,sBAAsB,CAAC,EAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAC,CAAC,CAAC;QAEvD,OAAO,IAAI,CAAC,YAAY,EAAE,aAAa,IAAI,SAAS,IAAI,IAAI,CAAC,EAAE,CAAC;KACnE;AAED,IAAA,IAAY,QAAQ,GAAA;AAChB,QAAA,OAAO,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC1C;AAED,IAAA,IAAY,OAAO,GAAA;AACf,QAAA,OAAO,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,oBAAoB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;KACnF;AAEO,IAAA,MAAM,CAAC,IAAa,EAAA;AACxB,QAAA,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAClC,YAAA,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;AACvB,SAAA;AAED,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAC5B,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,EAAE,CAAC;KAChB;IAEO,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,kBAAkB,EAAA;AAClE,QAAA,IAAI,CAAC,QAAQ,CAAC,kBAAkB,GAAG,IAAI,CAAC;AACxC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC1B;AAEO,IAAA,aAAa,CAAC,QAAiB,EAAA;AACnC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAE7B,IAAI,CAAC,IAAI,EAAE;AACP,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAElB,OAAO;AACV,SAAA;AAED,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;AAClC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;QACzD,MAAM,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC;AACxC,QAAA,MAAM,SAAS,GAAG,sBAAsB,CAAC,EAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;QAEpE,KAAK,CAAC,MAAM,EAAE,CAAC;QACf,SAAS,EAAE,KAAK,EAAE,CAAC;KACtB;+GAxJQ,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qEAAA,EAAA,MAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,wBAAA,EAAA,mBAAA,EAAA,wBAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,mCAAA,EAAA,eAAA,EAAA,2BAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,GAAA,EAAA,EAAA,EAAA,SAAA,EAnBb,CAAC,iBAAiB,EAAE,WAAW,CAAC,iBAAiB,CAAC,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAoBH,UAAU,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,SAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;AAiE3D,UAAA,CAAA;IADT,UAAU,CAAC,WAAW,CAAC;AAIvB,CAAA,EAAA,eAAA,CAAA,SAAA,EAAA,OAAA,EAAA,IAAA,CAAA,CAAA;4FArEQ,eAAe,EAAA,UAAA,EAAA,CAAA;kBAtB3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,qEAAqE;oBAC/E,SAAS,EAAE,CAAC,iBAAiB,EAAE,WAAW,CAAC,iBAAiB,CAAC,CAAC;AAC9D,oBAAA,cAAc,EAAE;wBACZ,WAAW;AACX,wBAAA;AACI,4BAAA,SAAS,EAAE,aAAa;4BACxB,MAAM,EAAE,CAAC,qBAAqB,CAAC;4BAC/B,OAAO,EAAE,CAAC,qBAAqB,CAAC;AACnC,yBAAA;AACJ,qBAAA;AACD,oBAAA,IAAI,EAAE;AACF,wBAAA,SAAS,EAAE,wBAAwB;AACnC,wBAAA,qBAAqB,EAAE,wBAAwB;AAC/C,wBAAA,mBAAmB,EAAE,uBAAuB;AAC5C,wBAAA,qCAAqC,EAAE,eAAe;AACtD,wBAAA,6BAA6B,EAAE,mBAAmB;;AAElD,wBAAA,uBAAuB,EAAE,GAAG;AAC/B,qBAAA;AACJ,iBAAA,CAAA;8BAGoB,YAAY,EAAA,CAAA;sBAD5B,YAAY;uBAAC,iBAAiB,EAAE,EAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAC,CAAA;gBAa/D,kBAAkB,EAAA,CAAA;sBADxB,KAAK;gBAIC,eAAe,EAAA,CAAA;sBADrB,KAAK;gBAIU,qBAAqB,EAAA,CAAA;sBADpC,MAAM;gBA+CG,KAAK,EAAA,EAAA,EAAA,EAAA,CAAA;;AC7GnB,MAQa,gBAAiB,SAAQ,SAAS,CAAA;AAoD3C,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QAjD7C,IAAE,CAAA,EAAA,GAAG,gBAAgB,EAAE,CAAC;AACxB,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AACvB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAC;AAC7C,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;QACnC,IAAI,CAAA,IAAA,GAAG,MAAM,CAAC,eAAe,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;AAClE;;;AAGG;AACc,QAAA,IAAA,CAAA,wBAAwB,GAAG,YAAY,CACpD,MAAM,CAAC,oBAAoB,CAAC,CAAC,GAAG,CACnC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAEzB,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAC5B,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAC9B,SAAS,CAAC,MACN,iBAAiB,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,IAAI,CAC3C,GAAG,CAAC,kBAAkB,CAAC,EACvB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EACrB,SAAS,CAAC,IAAI,CAAC,EACf,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAC9C,CACJ,CACJ,EACD,iBAAiB,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,EACtE,iBAAiB,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,CAAC,CAC5E,CAAC,IAAI,CACF,GAAG,CAAC,CAAC,OAAO,KAAK,YAAY,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAClE,oBAAoB,EAAE,EACtB,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EACxE,gBAAgB,EAAE,EAClB,GAAG,CAAC,CAAC,OAAO,KAAI;AACZ,YAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,YAAA,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;AAC/B,SAAC,CAAC,EACF,KAAK,EAAE,CACV,CAAC;AAGK,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;AAGnC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;QAEnC,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;QAEP,IAAI,CAAA,IAAA,GAAG,UAAU,CAAC;KAIjC;AAES,IAAA,OAAO,CAAC,KAAiB,EAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE;YAC3B,KAAK,CAAC,cAAc,EAAE,CAAC;AAC1B,SAAA;KACJ;AAEO,IAAA,SAAS,CAAC,OAAgB,EAAA;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,aAAa,IAAI,IAAI,CAAC,EAAE,CAAC;QACzD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACvC,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAE9E,OAAO,OAAO,IAAI,KAAK,CAAC;KAC3B;+GApEQ,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,CAAA,sBAAA,EAAA,WAAA,CAAA,EAAA,SAAA,EAAA,CAAA,sBAAA,EAAA,WAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,SAAA,EALd,CAAC,aAAa,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAME,UAAU,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAD5D,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAR5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,SAAS,EAAE,CAAC,aAAa,EAAE,WAAW,kBAAkB,CAAC;AACzD,oBAAA,IAAI,EAAE;AACF,wBAAA,iBAAiB,EAAE,iBAAiB;AACvC,qBAAA;AACJ,iBAAA,CAAA;0EAGoB,YAAY,EAAA,CAAA;sBAD5B,YAAY;uBAAC,iBAAiB,EAAE,EAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAC,CAAA;gBA0C/D,SAAS,EAAA,CAAA;sBADf,KAAK;uBAAC,sBAAsB,CAAA;gBAItB,SAAS,EAAA,CAAA;sBADf,KAAK;uBAAC,sBAAsB,CAAA;;;AC7EjC,MAKa,iBAAiB,CAAA;AAL9B,IAAA,WAAA,GAAA;AAMqB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAG7C,IAAiB,CAAA,iBAAA,GAAiB,KAAK,CAAC;AAKlD,KAAA;IAHU,WAAW,GAAA;QACd,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;KAC9C;+GARQ,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,SAAA,EAFf,CAAC,iBAAiB,EAAE,WAAW,CAAC,iBAAiB,CAAC,CAAC,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAErD,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,qBAAqB;oBAC/B,SAAS,EAAE,CAAC,iBAAiB,EAAE,WAAW,CAAC,iBAAiB,CAAC,CAAC;AACjE,iBAAA,CAAA;8BAKU,iBAAiB,EAAA,CAAA;sBADvB,KAAK;;;ACXV;;AAEG;AACH,MAKa,qBAAqB,CAAA;AALlC,IAAA,WAAA,GAAA;AAMqB,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAW,CAAC;QAGvC,IAAqB,CAAA,qBAAA,GACjC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;AAUtD,KAAA;IARG,IACW,eAAe,CAAC,IAAa,EAAA;AACpC,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;KAC7B;AAEM,IAAA,cAAc,CAAC,IAAa,EAAA;AAC/B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAChC;+GAdQ,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iFAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EACJ,iFAAiF;AACxF,iBAAA,CAAA;8BAKmB,qBAAqB,EAAA,CAAA;sBADpC,MAAM;gBAKI,eAAe,EAAA,CAAA;sBADzB,KAAK;;;ACbV;;AAEG;AACH,MAIa,iBAAiB,CAAA;AAJ9B,IAAA,WAAA,GAAA;AAKqB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAC/B,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAgBzD,KAAA;IAZG,IACW,WAAW,CAAC,IAAa,EAAA;AAChC,QAAA,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;AAExB,QAAA,IAAI,IAAI,EAAE;AACN,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC1D,SAAA;KACJ;IAEM,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;KAC3B;+GAjBQ,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,0BAA0B;AACvC,iBAAA,CAAA;8BAQc,WAAW,EAAA,CAAA;sBADrB,KAAK;;;ACTV,MAKa,wBAAyB,SAAQ,mBAAmB,CAAA;AALjE,IAAA,WAAA,GAAA;;AAMqB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;AACvC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AAChC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;QAChD,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,QAAQ,CAAC;QAG/C,IAAgB,CAAA,gBAAA,GAAqB,EAAE,CAAC;QAGxC,IAAsB,CAAA,sBAAA,GAAG,CAAC,CAAC;QAElB,IAAI,CAAA,IAAA,GAAG,UAAU,CAAC;AA0CrC,KAAA;AAxCU,IAAA,WAAW,CAAC,IAAa,EAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,gBAAgB,KAAK,KAAK,EAAE;YACjC,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC1C,SAAA;AAED,QAAA,MAAM,EAAC,MAAM,EAAE,KAAK,EAAC,GAAG,IAAI,CAAC;AAC7B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,iBAAiB,CAAC;QAC9E,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;QAC/C,MAAM,EAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,QAAQ,GAAG,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AAC5E,QAAA,MAAM,SAAS,GAAG;AACd,YAAA,GAAG,EAAE,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG;YACnC,IAAI,EAAE,QAAQ,CAAC,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC,IAAI;YAC5C,KAAK,EAAE,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,GAAG,MAAM;AAC/C,YAAA,MAAM,EAAE,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG;SAChC,CAAC;AACX,QAAA,MAAM,QAAQ,GAAG;YACb,GAAG,EAAE,QAAQ,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,sBAAsB,GAAG,CAAC;AAC/D,YAAA,IAAI,EAAE,QAAQ,CAAC,IAAI,GAAG,KAAK,GAAG,MAAM;AACpC,YAAA,KAAK,EAAE,QAAQ,CAAC,KAAK,GAAG,MAAM;YAC9B,MAAM,EAAE,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC,sBAAsB,GAAG,CAAC;SAChD,CAAC;AACX,QAAA,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,GAAG,SAAS,CAAC,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;QACnE,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC;AAClF,QAAA,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;QAElE,IACI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,SAAS,IAAI,SAAS;AAClD,YAAA,IAAI,CAAC,QAAQ,KAAK,MAAM,EAC1B;YACE,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAE3C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;AAC1C,SAAA;AAED,QAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC;AACvB,QAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAEpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;KACnC;+GArDQ,wBAAwB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,EAAA,SAAA,EAFtB,CAAC,mBAAmB,EAAE,qBAAqB,CAAC,wBAAwB,CAAC,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAExE,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,SAAS,EAAE,CAAC,mBAAmB,EAAE,qBAAqB,0BAA0B,CAAC;AACpF,iBAAA,CAAA;8BAQU,gBAAgB,EAAA,CAAA;sBADtB,KAAK;gBAIC,sBAAsB,EAAA,CAAA;sBAD5B,KAAK;;;ACIV,MAQa,oBACT,SAAQ,SAAS,CAAA;AA4CjB,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;AAxC3C,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AACvB,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAC/B,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACxC,IAAE,CAAA,EAAA,GAAG,gBAAgB,EAAE,CAAC;AACxB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,eAAe,CAC7C,gBAAgB,CACnB,CAAC;QAEiB,IAAO,CAAA,OAAA,GAAG,aAAa,CAAC;AACvC,YAAA,IAAI,CAAC,QAAQ;AACb,YAAA,MAAM,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAC7B,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,EAC1B,oBAAoB,CAChB,CAAC,CAAC,EAAE,CAAC,KACD,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW;AAC/B,gBAAA,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS;AAC3B,gBAAA,CAAC,CAAC,uBAAuB,KAAK,CAAC,CAAC,uBAAuB,CAC9D,CACJ;AACJ,SAAA,CAAC,CAAC,IAAI,CACH,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,KAAI;AACrB,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;AAElE,YAAA,IAAI,CAAC,KAAK;AACN,gBAAA,SAAS,IAAI,aAAa,CAAC,KAAK,CAAC,uBAAuB,CAAC;AACrD,sBAAE,KAAK;AACP,sBAAE,IAAI,CAAC,KAAK,CAAC;AAErB,YAAA,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;SACvE,CAAC,CACL,CAAC;AAEQ,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;QAG7B,IAAQ,CAAA,QAAA,GAAiC,WAAW,CAAC;QAE5C,IAAI,CAAA,IAAA,GAAG,UAAU,CAAC;KAIjC;IAED,IACW,oBAAoB,CAAC,OAA0C,EAAA;AACtE,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE;AACvB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC/B,SAAA;KACJ;IAEM,aAAa,GAAA;QAChB,QAAQ,IAAI,CAAC,QAAQ;YACjB,KAAK,KAAK,EAAE;AACR,gBAAA,MAAM,EAAC,uBAAuB,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC;AAC7C,gBAAA,MAAM,OAAO,GAAG,YAAY,CAAC,uBAAuB,CAAC;AACjD,sBAAE,uBAAuB;AACzB,sBAAE,uBAAuB,CAAC,UAAU,CAAC;AAEzC,gBAAA,OAAO,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC;AACnC,sBAAE,OAAO,CAAC,qBAAqB,EAAE;sBAC/B,iBAAiB,CAAC;AAC3B,aAAA;AACD,YAAA,KAAK,MAAM;gBACP,OAAO,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,qBAAqB,EAAE,CAAC;AAC/D,YAAA;AACI,gBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC;AACjD,SAAA;KACJ;IAEM,WAAW,GAAA;QACd,IAAI,IAAI,CAAC,KAAK,EAAE;AACZ,YAAA,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1D,SAAA;KACJ;IAES,QAAQ,GAAA;QACd,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;AAC1C,QAAA,MAAM,KAAK,GACP,MAAM,IAAI,cAAc,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;AACxD,cAAE,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC;AAClC,cAAE,CAAC,SAAS,EAAE,UAAU,IAAI,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC;AAE3E,QAAA,OAAO,KAAK,CAAC,UAAU,EAAE,CAAC;KAC7B;AAED;;AAEG;AACO,IAAA,UAAU,CAAC,KAAY,EAAA;AAC7B,QAAA,MAAM,EAAC,cAAc,EAAE,YAAY,EAAC,GAAG,KAAK,CAAC;QAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;AACnE,QAAA,MAAM,cAAc,GAChB,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AACvE,QAAA,MAAM,cAAc,GAChB,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAEvE,QAAA,OAAO,UAAU,IAAI,cAAc,IAAI,cAAc,CAAC;KACzD;AAED;;AAEG;AACK,IAAA,WAAW,CAAC,IAAU,EAAA;AAC1B,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KACvE;AAEO,IAAA,mBAAmB,CAAC,OAA+C,EAAA;AACvE,QAAA,MAAM,EAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAC,GAAG,IAAI,CAAC;AAC/C,QAAA,MAAM,EAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAC,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;QACnE,MAAM,EAAC,cAAc,EAAE,YAAY,EAAE,KAAK,EAAC,GAAG,OAAO,CAAC;QACtD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,CAAC;AAEjD,QAAA,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC5C,QAAA,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC/C,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QACjC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QACnC,KAAK,CAAC,WAAW,GAAG,qBAAqB,GAAG,KAAK,GAAG,mBAAmB,CAAC;QAExE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAkB,EAAE,cAAc,IAAI,CAAC,CAAC,CAAC;QAC9D,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,UAAkB,EAAE,YAAY,IAAI,CAAC,CAAC,CAAC;AAE1D,QAAA,OAAO,KAAK,CAAC;KAChB;AAED;;AAEG;AACK,IAAA,SAAS,CAAC,OAA+C,EAAA;QAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC5C,QAAA,MAAM,EAAC,IAAI,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,EAAC,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAEhF,QAAA,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;AAClC,QAAA,KAAK,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC;AACnC,QAAA,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;AAC1B,QAAA,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;AACpC,QAAA,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;AACxB,QAAA,KAAK,CAAC,KAAK,CAAC,aAAa,GAAG,aAAa,CAAC;AAC1C,QAAA,KAAK,CAAC,KAAK,CAAC,aAAa,GAAG,aAAa,CAAC;AAC1C,QAAA,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QAE9B,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAEnB,QAAA,OAAO,KAAK,CAAC;KAChB;+GAxJQ,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EALlB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,CAAA,8BAAA,EAAA,UAAA,CAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,EAAA,SAAA,EAAA;YACP,WAAW,CAAC,oBAAoB,CAAC;YACjC,iBAAiB,CAAC,oBAAoB,CAAC;AAC1C,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAEQ,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBARhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,SAAS,EAAE;AACP,wBAAA,WAAW,CAAsB,oBAAA,CAAA;AACjC,wBAAA,iBAAiB,CAAsB,oBAAA,CAAA;AAC1C,qBAAA;AACJ,iBAAA,CAAA;0EA0CU,QAAQ,EAAA,CAAA;sBADd,KAAK;uBAAC,8BAA8B,CAAA;gBAU1B,oBAAoB,EAAA,CAAA;sBAD9B,KAAK;;;ACtEG,MAAA,WAAW,GAAG;IACvB,2BAA2B;IAC3B,0BAA0B;IAC1B,oBAAoB;IACpB,oBAAoB;IACpB,eAAe;IACf,qBAAqB;IACrB,iBAAiB;IACjB,iBAAiB;IACjB,gBAAgB;IAChB,kBAAkB;IAClB,mBAAmB;IACnB,wBAAwB;IACxB,oBAAoB;;;ACdlB,SAAU,WAAW,CAAC,KAAoB,EAAA;IAC5C,OAAO,mBAAmB,CAAC,oBAAoB,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;AAC/E,CAAC;AAMK,SAAU,kBAAkB,CAAC,KAAgC,EAAA;IAC/D,OAAO,mBAAmB,CAAC,eAAe,EAAE,oBAAoB,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;AACjF,CAAC;SAEe,eAAe,GAAA;AAC3B,IAAA,MAAM,IAAI,GAA4B,mBAAmB,CACrD,eAAe,EACf,iBAAiB,EACjB,KAAK,EACL,EAAE,CACL,CAAC;IAEF,MAAM,CAAC,eAAe,CAAC;AAClB,SAAA,qBAAqB,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAChD,SAAA,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAE3C,IAAA,OAAO,IAAI,CAAC;AAChB;;AC7BA,MAIa,gBAAgB,CAAA;AACzB,IAAA,WAAA,GAAA;AACI,QAAA,MAAM,QAAQ,GAAGC,oBAAkB,CAC/B,EAAC,UAAU,EAAE,OAAO,EAAC,EACrB,4BAA4B,CAC/B,CAAC;AAEF,QAAA,QAAQ,CAAC,MAAM,CAAC,oBAAoB,EAAE,EAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC,EAAE,IAAI,CAAC,CAAC;KAC9E;+GARQ,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,iCAFd,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAElC,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,SAAS,EAAE,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC;AAC9C,iBAAA,CAAA;;AAYD,MACa,eAAe,CAAA;AACxB,IAAA,WAAA,GAAA;AACI;;;AAGG;AACF,QAAA,MAAM,CAAC,oBAAoB,CAAS,CAAC,UAAU,GAAG,MAAM,CAAC;KAC7D;+GAPQ,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,SAAS;mBAAC,EAAC,UAAU,EAAE,IAAI,EAAC,CAAA;;;ACnB7B;;AAEG;AACH,MAQa,YAAa,SAAQ,UAAU,CAAA;+GAA/B,YAAY,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,yCAAA,EAAA,EAAA,SAAA,EAHV,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,iDAFlC,iCAAiC,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;4FAKlC,YAAY,EAAA,UAAA,EAAA,CAAA;kBARxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE,iCAAiC;oBAC3C,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,SAAS,EAAE,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;AAC5C,oBAAA,IAAI,EAAE,EAAC,KAAK,EAAE,yCAAyC,EAAC;AAC3D,iBAAA,CAAA;;;ACXD,MAUa,mBAAmB,CAAA;+GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAC,eAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,MAAA,EAAA,oBAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,uBAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAV/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,cAAc,EAAE;AACZ,wBAAA;AACI,4BAAA,SAAS,EAAE,eAAe;AAC1B,4BAAA,MAAM,EAAE,CAAC,uBAAuB,EAAE,oBAAoB,CAAC;4BACvD,OAAO,EAAE,CAAC,mCAAmC,CAAC;AACjD,yBAAA;AACJ,qBAAA;AACJ,iBAAA,CAAA;;;ACbD;;AAEG;;;;"}
|
|
@@ -218,13 +218,14 @@ const TUI_VIEWPORT = tuiCreateTokenFromFactory(() => {
|
|
|
218
218
|
return {
|
|
219
219
|
type: 'viewport',
|
|
220
220
|
getClientRect() {
|
|
221
|
+
const { height = 0, offsetTop = 0 } = win.visualViewport || {};
|
|
221
222
|
const rect = {
|
|
222
223
|
top: 0,
|
|
223
224
|
left: 0,
|
|
224
225
|
right: win.innerWidth,
|
|
225
226
|
bottom: win.innerHeight,
|
|
226
227
|
width: win.innerWidth,
|
|
227
|
-
height: win.innerHeight,
|
|
228
|
+
height: height + offsetTop || win.innerHeight,
|
|
228
229
|
x: 0,
|
|
229
230
|
y: 0,
|
|
230
231
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-core-tokens.mjs","sources":["../../../projects/core/tokens/reduced-motion.ts","../../../projects/core/tokens/animations-speed.ts","../../../projects/core/tokens/assets-path.ts","../../../projects/core/tokens/common-icons.ts","../../../projects/core/tokens/dark-mode.ts","../../../projects/core/tokens/date-format.ts","../../../projects/core/tokens/day-type-handler.ts","../../../projects/core/tokens/first-day-of-week.ts","../../../projects/core/tokens/i18n.ts","../../../projects/core/tokens/icon.ts","../../../projects/core/tokens/icons.ts","../../../projects/core/tokens/icon-resolver.ts","../../../projects/core/tokens/media.ts","../../../projects/core/tokens/number-format.ts","../../../projects/core/tokens/scroll-ref.ts","../../../projects/core/tokens/selection-stream.ts","../../../projects/core/tokens/spin-icons.ts","../../../projects/core/tokens/theme.ts","../../../projects/core/tokens/viewport.ts","../../../projects/core/tokens/taiga-ui-core-tokens.ts"],"sourcesContent":["import {DOCUMENT} from '@angular/common';\nimport {inject} from '@angular/core';\nimport {tuiCreateTokenFromFactory} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport const TUI_REDUCED_MOTION = tuiCreateTokenFromFactory(\n () =>\n inject(DOCUMENT).defaultView?.matchMedia?.('(prefers-reduced-motion: reduce)')\n .matches ?? false,\n);\n","import {inject} from '@angular/core';\nimport {tuiCreateTokenFromFactory} from '@taiga-ui/cdk/utils/miscellaneous';\n\nimport {TUI_REDUCED_MOTION} from './reduced-motion';\n\n/**\n * Speed of all Taiga UI animations. 1 equals 300ms.\n */\nexport const TUI_ANIMATIONS_SPEED = tuiCreateTokenFromFactory<number>(() =>\n inject(TUI_REDUCED_MOTION) ? 0 : 1,\n);\n","import type {ValueProvider} from '@angular/core';\nimport {tuiCreateToken} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport const TUI_ASSETS_PATH = tuiCreateToken('assets/taiga-ui/icons');\n\nexport function tuiAssetsPathProvider(useValue: string): ValueProvider {\n return {\n provide: TUI_ASSETS_PATH,\n useValue,\n };\n}\n","import type {Provider} from '@angular/core';\nimport {tuiCreateToken, tuiProvideOptions} from '@taiga-ui/cdk/utils/miscellaneous';\n\n// TODO: Rename `ellipsis` to `more` in the next major version\nconst COMMON_ICONS: TuiCommonIcons = {\n check: '@tui.check',\n close: '@tui.x',\n error: '@tui.circle-alert',\n more: '@tui.chevron-right',\n search: '@tui.search',\n ellipsis: '@tui.ellipsis',\n};\n\nexport interface TuiCommonIcons {\n readonly check: string;\n readonly close: string;\n readonly error: string;\n readonly more: string;\n readonly search: string;\n readonly ellipsis: string;\n}\n\nexport const TUI_COMMON_ICONS = tuiCreateToken(COMMON_ICONS);\n\nexport function tuiCommonIconsProvider(icons: Partial<TuiCommonIcons>): Provider {\n return tuiProvideOptions(TUI_COMMON_ICONS, icons, COMMON_ICONS);\n}\n","import type {WritableSignal} from '@angular/core';\nimport {effect, inject, signal} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {WA_LOCAL_STORAGE, WA_WINDOW} from '@ng-web-apis/common';\nimport {\n tuiCreateToken,\n tuiCreateTokenFromFactory,\n} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {filter, fromEvent} from 'rxjs';\n\nexport const TUI_DARK_MODE_DEFAULT_KEY = 'tuiDark';\nexport const TUI_DARK_MODE_KEY = tuiCreateToken(TUI_DARK_MODE_DEFAULT_KEY);\nexport const TUI_DARK_MODE = tuiCreateTokenFromFactory<\n WritableSignal<boolean> & {reset(): void}\n>(() => {\n let automatic = true;\n\n const storage = inject(WA_LOCAL_STORAGE);\n const key = inject(TUI_DARK_MODE_KEY);\n const saved = storage.getItem(key);\n const media = inject(WA_WINDOW).matchMedia('(prefers-color-scheme: dark)');\n const result = signal(Boolean((saved && JSON.parse(saved)) ?? media.matches));\n\n fromEvent(media, 'change')\n .pipe(\n filter(() => !storage.getItem(key)),\n takeUntilDestroyed(),\n )\n .subscribe(() => {\n automatic = true;\n result.set(media.matches);\n });\n\n effect(() => {\n const value = String(result());\n\n if (automatic) {\n automatic = false;\n } else {\n storage.setItem(key, value);\n }\n });\n\n return Object.assign(result, {\n reset: () => {\n storage.removeItem(key);\n automatic = true;\n result.set(media.matches);\n },\n });\n});\n","import type {InjectionToken, Provider} from '@angular/core';\nimport {Optional, SkipSelf} from '@angular/core';\nimport type {TuiDateMode} from '@taiga-ui/cdk/date-time';\nimport {tuiCreateToken} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {Observable} from 'rxjs';\nimport {map, of} from 'rxjs';\n\n/**\n * Formatting configuration for displayed dates\n */\nexport interface TuiDateFormatSettings {\n /**\n * Date format mode.\n */\n readonly mode: TuiDateMode;\n /**\n * Separator between date segments\n * @example 10.02 ('.' by default)\n */\n readonly separator: string;\n}\n\nexport const TUI_DEFAULT_DATE_FORMAT: TuiDateFormatSettings = {\n mode: 'DMY',\n separator: '.',\n};\n\n/**\n * Formatting configuration for displayed dates\n */\nexport const TUI_DATE_FORMAT: InjectionToken<Observable<TuiDateFormatSettings>> =\n tuiCreateToken(of(TUI_DEFAULT_DATE_FORMAT));\n\nexport function tuiDateFormatProvider(options: Partial<TuiDateFormatSettings>): Provider {\n return {\n provide: TUI_DATE_FORMAT,\n deps: [[new Optional(), new SkipSelf(), TUI_DATE_FORMAT]],\n useFactory: (\n parent: Observable<TuiDateFormatSettings> | null,\n ): Observable<TuiDateFormatSettings> =>\n (parent || of(TUI_DEFAULT_DATE_FORMAT)).pipe(\n map((format) => ({...format, ...options})),\n ),\n };\n}\n","import type {TuiDay} from '@taiga-ui/cdk/date-time';\nimport type {TuiHandler} from '@taiga-ui/cdk/types';\nimport {tuiCreateToken} from '@taiga-ui/cdk/utils/miscellaneous';\n\n/**\n * Token for adding data-type attribute to calendar cell\n */\nexport const TUI_DAY_TYPE_HANDLER = tuiCreateToken<TuiHandler<TuiDay, string>>((day) =>\n day.isWeekend ? 'weekend' : 'weekday',\n);\n","import {TuiDayOfWeek} from '@taiga-ui/cdk/date-time';\nimport {tuiCreateToken} from '@taiga-ui/cdk/utils/miscellaneous';\n\n/**\n * The first day of the week index\n */\nexport const TUI_FIRST_DAY_OF_WEEK = tuiCreateToken<0 | 1 | 2 | 3 | 4 | 5 | 6>(\n TuiDayOfWeek.Monday,\n);\n","import {tuiCreateTokenFromFactory} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {tuiExtractI18n} from '@taiga-ui/i18n/utils';\n\n/**\n * Localized months names\n */\nexport const TUI_MONTHS = tuiCreateTokenFromFactory(tuiExtractI18n('months'));\n\n/**\n * i18n 'close' word\n */\nexport const TUI_CLOSE_WORD = tuiCreateTokenFromFactory(tuiExtractI18n('close'));\n\n/**\n * i18n 'clear' word\n */\nexport const TUI_CLEAR_WORD = tuiCreateTokenFromFactory(tuiExtractI18n('clear'));\n\n/**\n * i18n 'Nothing found' message\n */\nexport const TUI_NOTHING_FOUND_MESSAGE = tuiCreateTokenFromFactory(\n tuiExtractI18n('nothingFoundMessage'),\n);\n\n/**\n * i18n of error message\n */\nexport const TUI_DEFAULT_ERROR_MESSAGE = tuiCreateTokenFromFactory(\n tuiExtractI18n('defaultErrorMessage'),\n);\n\n/**\n * spin i18n texts\n */\nexport const TUI_SPIN_TEXTS = tuiCreateTokenFromFactory(tuiExtractI18n('spinTexts'));\n\n/**\n * calendars i18n texts\n */\nexport const TUI_SHORT_WEEK_DAYS = tuiCreateTokenFromFactory(\n tuiExtractI18n('shortWeekDays'),\n);\n","import {tuiCreateToken} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport const TUI_ICON_START = tuiCreateToken('');\nexport const TUI_ICON_END = tuiCreateToken('');\n","import type {FactoryProvider} from '@angular/core';\nimport {inject} from '@angular/core';\nimport {tuiCreateToken} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport const TUI_ICON_REGISTRY = tuiCreateToken<Record<string, string>>({});\n\n/**\n * @deprecated: use {@link TUI_ICON_REGISTRY}\n */\nexport const TUI_ICON_STARTS = TUI_ICON_REGISTRY;\n\nexport function tuiIconsProvider(icons: Record<string, string>): FactoryProvider {\n return {\n provide: TUI_ICON_REGISTRY,\n useFactory: () => ({\n ...(inject(TUI_ICON_REGISTRY, {skipSelf: true, optional: true}) || {}),\n ...Object.fromEntries(\n Object.entries(icons).map(([key, value]) => [\n key,\n `data:image/svg+xml;charset=UTF-8,${encodeURIComponent(value)}`,\n ]),\n ),\n }),\n };\n}\n","import type {Provider} from '@angular/core';\nimport {inject} from '@angular/core';\nimport type {TuiStringHandler} from '@taiga-ui/cdk/types';\nimport {tuiCreateTokenFromFactory} from '@taiga-ui/cdk/utils/miscellaneous';\n\nimport {TUI_ASSETS_PATH} from './assets-path';\nimport {TUI_ICON_REGISTRY} from './icons';\n\nexport const TUI_ICON_RESOLVER = tuiCreateTokenFromFactory<TuiStringHandler<string>>(\n () => {\n const path = inject(TUI_ASSETS_PATH);\n\n return (icon) => `${path}/${icon.replace('@tui.', '').split('.').join('/')}.svg`;\n },\n);\n\n/**\n * @deprecated use {@link TUI_ICON_RESOLVER}\n */\nexport const TUI_ICON_START_RESOLVER = TUI_ICON_RESOLVER;\n\nexport function tuiInjectIconResolver(): TuiStringHandler<string> {\n const icons = inject(TUI_ICON_REGISTRY);\n const resolver = inject(TUI_ICON_RESOLVER);\n\n return (icon) =>\n !icon || icon.includes('/') ? icon : (icons[icon] ?? resolver(icon));\n}\n\nexport function tuiIconResolverProvider(useValue: TuiStringHandler<string>): Provider {\n return {provide: TUI_ICON_RESOLVER, useValue};\n}\n","import {tuiCreateToken} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport interface TuiMedia {\n readonly desktopLarge: number;\n readonly desktopSmall: number;\n readonly mobile: number;\n readonly tablet?: number;\n}\n\n/**\n * Token for media constant\n */\nexport const TUI_MEDIA = tuiCreateToken<TuiMedia>({\n mobile: 768,\n desktopSmall: 1024,\n desktopLarge: 1280,\n});\n","import type {InjectionToken, Provider} from '@angular/core';\nimport {Optional, SkipSelf} from '@angular/core';\nimport {CHAR_NO_BREAK_SPACE} from '@taiga-ui/cdk/constants';\nimport type {TuiRounding} from '@taiga-ui/cdk/types';\nimport {tuiCreateToken} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {Observable} from 'rxjs';\nimport {map, of} from 'rxjs';\n\nexport type TuiDecimalMode = 'always' | 'not-zero' | 'pad';\nexport type TuiDecimalSymbol = ',' | '.';\n\n/**\n * Formatting configuration for displayed numbers\n */\nexport interface TuiNumberFormatSettings {\n /**\n * Number of digits of decimal part.\n * @note Use `Infinity` to keep untouched.\n */\n readonly precision: number;\n /**\n * Separator between the integer and the decimal part.\n * @example 0,42 (',' by default)\n */\n readonly decimalSeparator: TuiDecimalSymbol;\n /**\n * Rounding method.\n */\n readonly rounding: TuiRounding;\n /**\n * Separator between thousands.\n * @example 360 000 (' ' by default)\n */\n readonly thousandSeparator: string;\n /**\n * Decimal part display mode. ('not-zero' by default)\n */\n readonly decimalMode: TuiDecimalMode;\n}\n\nexport const TUI_DEFAULT_NUMBER_FORMAT: TuiNumberFormatSettings = {\n precision: NaN,\n decimalSeparator: '.',\n thousandSeparator: CHAR_NO_BREAK_SPACE,\n rounding: 'truncate',\n decimalMode: 'pad',\n};\n\n/**\n * Formatting configuration for displayed numbers\n */\nexport const TUI_NUMBER_FORMAT: InjectionToken<Observable<TuiNumberFormatSettings>> =\n tuiCreateToken(of(TUI_DEFAULT_NUMBER_FORMAT));\n\nexport function tuiNumberFormatProvider(\n options: Partial<TuiNumberFormatSettings>,\n): Provider {\n return {\n provide: TUI_NUMBER_FORMAT,\n deps: [[new Optional(), new SkipSelf(), TUI_NUMBER_FORMAT]],\n useFactory: (\n parent: Observable<TuiNumberFormatSettings> | null,\n ): Observable<TuiNumberFormatSettings> =>\n (parent || of(TUI_DEFAULT_NUMBER_FORMAT)).pipe(\n map((format) => ({...format, ...options})),\n ),\n };\n}\n","import {DOCUMENT} from '@angular/common';\nimport {ElementRef, inject} from '@angular/core';\nimport {tuiCreateTokenFromFactory} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport const TUI_SCROLL_REF = tuiCreateTokenFromFactory(\n () => new ElementRef(inject(DOCUMENT).documentElement),\n);\n","import {DOCUMENT} from '@angular/common';\nimport {inject} from '@angular/core';\nimport {tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {tuiCreateTokenFromFactory} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {Observable} from 'rxjs';\nimport {merge, share, switchMap, takeUntil} from 'rxjs';\n\n/**\n * A stream of possible selection changes\n */\nexport const TUI_SELECTION_STREAM = tuiCreateTokenFromFactory<Observable<unknown>>(() => {\n const doc = inject(DOCUMENT);\n\n return merge(\n tuiTypedFromEvent(doc, 'selectionchange'),\n tuiTypedFromEvent(doc, 'mouseup'),\n tuiTypedFromEvent(doc, 'mousedown').pipe(\n switchMap(() =>\n tuiTypedFromEvent(doc, 'mousemove').pipe(\n takeUntil(tuiTypedFromEvent(doc, 'mouseup')),\n ),\n ),\n ),\n tuiTypedFromEvent(doc, 'keydown'),\n tuiTypedFromEvent(doc, 'keyup'),\n ).pipe(share());\n});\n","import {tuiCreateToken} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport interface TuiSpinIcons {\n readonly decrement: string;\n readonly increment: string;\n}\n\nexport const TUI_SPIN_ICONS = tuiCreateToken<TuiSpinIcons>({\n decrement: '@tui.chevron-left',\n increment: '@tui.chevron-right',\n});\n","import {tuiCreateToken} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport const TUI_THEME = tuiCreateToken('Taiga UI');\n","import type {Provider, Type} from '@angular/core';\nimport {inject} from '@angular/core';\nimport {WA_WINDOW} from '@ng-web-apis/common';\nimport {tuiCreateTokenFromFactory, tuiProvide} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {TuiRectAccessor} from '@taiga-ui/core/classes';\n\n/**\n * Viewport accessor\n */\nexport const TUI_VIEWPORT = tuiCreateTokenFromFactory<TuiRectAccessor>(() => {\n const win = inject(WA_WINDOW);\n\n return {\n type: 'viewport',\n getClientRect() {\n const rect = {\n top: 0,\n left: 0,\n right: win.innerWidth,\n bottom: win.innerHeight,\n width: win.innerWidth,\n height: win.innerHeight,\n x: 0,\n y: 0,\n };\n\n return {\n ...rect,\n toJSON: () => JSON.stringify(rect),\n };\n },\n };\n});\n\nexport function tuiAsViewport(accessor: Type<TuiRectAccessor>): Provider {\n return tuiProvide(TUI_VIEWPORT, accessor);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"taiga-ui-core-tokens.mjs","sources":["../../../projects/core/tokens/reduced-motion.ts","../../../projects/core/tokens/animations-speed.ts","../../../projects/core/tokens/assets-path.ts","../../../projects/core/tokens/common-icons.ts","../../../projects/core/tokens/dark-mode.ts","../../../projects/core/tokens/date-format.ts","../../../projects/core/tokens/day-type-handler.ts","../../../projects/core/tokens/first-day-of-week.ts","../../../projects/core/tokens/i18n.ts","../../../projects/core/tokens/icon.ts","../../../projects/core/tokens/icons.ts","../../../projects/core/tokens/icon-resolver.ts","../../../projects/core/tokens/media.ts","../../../projects/core/tokens/number-format.ts","../../../projects/core/tokens/scroll-ref.ts","../../../projects/core/tokens/selection-stream.ts","../../../projects/core/tokens/spin-icons.ts","../../../projects/core/tokens/theme.ts","../../../projects/core/tokens/viewport.ts","../../../projects/core/tokens/taiga-ui-core-tokens.ts"],"sourcesContent":["import {DOCUMENT} from '@angular/common';\nimport {inject} from '@angular/core';\nimport {tuiCreateTokenFromFactory} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport const TUI_REDUCED_MOTION = tuiCreateTokenFromFactory(\n () =>\n inject(DOCUMENT).defaultView?.matchMedia?.('(prefers-reduced-motion: reduce)')\n .matches ?? false,\n);\n","import {inject} from '@angular/core';\nimport {tuiCreateTokenFromFactory} from '@taiga-ui/cdk/utils/miscellaneous';\n\nimport {TUI_REDUCED_MOTION} from './reduced-motion';\n\n/**\n * Speed of all Taiga UI animations. 1 equals 300ms.\n */\nexport const TUI_ANIMATIONS_SPEED = tuiCreateTokenFromFactory<number>(() =>\n inject(TUI_REDUCED_MOTION) ? 0 : 1,\n);\n","import type {ValueProvider} from '@angular/core';\nimport {tuiCreateToken} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport const TUI_ASSETS_PATH = tuiCreateToken('assets/taiga-ui/icons');\n\nexport function tuiAssetsPathProvider(useValue: string): ValueProvider {\n return {\n provide: TUI_ASSETS_PATH,\n useValue,\n };\n}\n","import type {Provider} from '@angular/core';\nimport {tuiCreateToken, tuiProvideOptions} from '@taiga-ui/cdk/utils/miscellaneous';\n\n// TODO: Rename `ellipsis` to `more` in the next major version\nconst COMMON_ICONS: TuiCommonIcons = {\n check: '@tui.check',\n close: '@tui.x',\n error: '@tui.circle-alert',\n more: '@tui.chevron-right',\n search: '@tui.search',\n ellipsis: '@tui.ellipsis',\n};\n\nexport interface TuiCommonIcons {\n readonly check: string;\n readonly close: string;\n readonly error: string;\n readonly more: string;\n readonly search: string;\n readonly ellipsis: string;\n}\n\nexport const TUI_COMMON_ICONS = tuiCreateToken(COMMON_ICONS);\n\nexport function tuiCommonIconsProvider(icons: Partial<TuiCommonIcons>): Provider {\n return tuiProvideOptions(TUI_COMMON_ICONS, icons, COMMON_ICONS);\n}\n","import type {WritableSignal} from '@angular/core';\nimport {effect, inject, signal} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {WA_LOCAL_STORAGE, WA_WINDOW} from '@ng-web-apis/common';\nimport {\n tuiCreateToken,\n tuiCreateTokenFromFactory,\n} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {filter, fromEvent} from 'rxjs';\n\nexport const TUI_DARK_MODE_DEFAULT_KEY = 'tuiDark';\nexport const TUI_DARK_MODE_KEY = tuiCreateToken(TUI_DARK_MODE_DEFAULT_KEY);\nexport const TUI_DARK_MODE = tuiCreateTokenFromFactory<\n WritableSignal<boolean> & {reset(): void}\n>(() => {\n let automatic = true;\n\n const storage = inject(WA_LOCAL_STORAGE);\n const key = inject(TUI_DARK_MODE_KEY);\n const saved = storage.getItem(key);\n const media = inject(WA_WINDOW).matchMedia('(prefers-color-scheme: dark)');\n const result = signal(Boolean((saved && JSON.parse(saved)) ?? media.matches));\n\n fromEvent(media, 'change')\n .pipe(\n filter(() => !storage.getItem(key)),\n takeUntilDestroyed(),\n )\n .subscribe(() => {\n automatic = true;\n result.set(media.matches);\n });\n\n effect(() => {\n const value = String(result());\n\n if (automatic) {\n automatic = false;\n } else {\n storage.setItem(key, value);\n }\n });\n\n return Object.assign(result, {\n reset: () => {\n storage.removeItem(key);\n automatic = true;\n result.set(media.matches);\n },\n });\n});\n","import type {InjectionToken, Provider} from '@angular/core';\nimport {Optional, SkipSelf} from '@angular/core';\nimport type {TuiDateMode} from '@taiga-ui/cdk/date-time';\nimport {tuiCreateToken} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {Observable} from 'rxjs';\nimport {map, of} from 'rxjs';\n\n/**\n * Formatting configuration for displayed dates\n */\nexport interface TuiDateFormatSettings {\n /**\n * Date format mode.\n */\n readonly mode: TuiDateMode;\n /**\n * Separator between date segments\n * @example 10.02 ('.' by default)\n */\n readonly separator: string;\n}\n\nexport const TUI_DEFAULT_DATE_FORMAT: TuiDateFormatSettings = {\n mode: 'DMY',\n separator: '.',\n};\n\n/**\n * Formatting configuration for displayed dates\n */\nexport const TUI_DATE_FORMAT: InjectionToken<Observable<TuiDateFormatSettings>> =\n tuiCreateToken(of(TUI_DEFAULT_DATE_FORMAT));\n\nexport function tuiDateFormatProvider(options: Partial<TuiDateFormatSettings>): Provider {\n return {\n provide: TUI_DATE_FORMAT,\n deps: [[new Optional(), new SkipSelf(), TUI_DATE_FORMAT]],\n useFactory: (\n parent: Observable<TuiDateFormatSettings> | null,\n ): Observable<TuiDateFormatSettings> =>\n (parent || of(TUI_DEFAULT_DATE_FORMAT)).pipe(\n map((format) => ({...format, ...options})),\n ),\n };\n}\n","import type {TuiDay} from '@taiga-ui/cdk/date-time';\nimport type {TuiHandler} from '@taiga-ui/cdk/types';\nimport {tuiCreateToken} from '@taiga-ui/cdk/utils/miscellaneous';\n\n/**\n * Token for adding data-type attribute to calendar cell\n */\nexport const TUI_DAY_TYPE_HANDLER = tuiCreateToken<TuiHandler<TuiDay, string>>((day) =>\n day.isWeekend ? 'weekend' : 'weekday',\n);\n","import {TuiDayOfWeek} from '@taiga-ui/cdk/date-time';\nimport {tuiCreateToken} from '@taiga-ui/cdk/utils/miscellaneous';\n\n/**\n * The first day of the week index\n */\nexport const TUI_FIRST_DAY_OF_WEEK = tuiCreateToken<0 | 1 | 2 | 3 | 4 | 5 | 6>(\n TuiDayOfWeek.Monday,\n);\n","import {tuiCreateTokenFromFactory} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {tuiExtractI18n} from '@taiga-ui/i18n/utils';\n\n/**\n * Localized months names\n */\nexport const TUI_MONTHS = tuiCreateTokenFromFactory(tuiExtractI18n('months'));\n\n/**\n * i18n 'close' word\n */\nexport const TUI_CLOSE_WORD = tuiCreateTokenFromFactory(tuiExtractI18n('close'));\n\n/**\n * i18n 'clear' word\n */\nexport const TUI_CLEAR_WORD = tuiCreateTokenFromFactory(tuiExtractI18n('clear'));\n\n/**\n * i18n 'Nothing found' message\n */\nexport const TUI_NOTHING_FOUND_MESSAGE = tuiCreateTokenFromFactory(\n tuiExtractI18n('nothingFoundMessage'),\n);\n\n/**\n * i18n of error message\n */\nexport const TUI_DEFAULT_ERROR_MESSAGE = tuiCreateTokenFromFactory(\n tuiExtractI18n('defaultErrorMessage'),\n);\n\n/**\n * spin i18n texts\n */\nexport const TUI_SPIN_TEXTS = tuiCreateTokenFromFactory(tuiExtractI18n('spinTexts'));\n\n/**\n * calendars i18n texts\n */\nexport const TUI_SHORT_WEEK_DAYS = tuiCreateTokenFromFactory(\n tuiExtractI18n('shortWeekDays'),\n);\n","import {tuiCreateToken} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport const TUI_ICON_START = tuiCreateToken('');\nexport const TUI_ICON_END = tuiCreateToken('');\n","import type {FactoryProvider} from '@angular/core';\nimport {inject} from '@angular/core';\nimport {tuiCreateToken} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport const TUI_ICON_REGISTRY = tuiCreateToken<Record<string, string>>({});\n\n/**\n * @deprecated: use {@link TUI_ICON_REGISTRY}\n */\nexport const TUI_ICON_STARTS = TUI_ICON_REGISTRY;\n\nexport function tuiIconsProvider(icons: Record<string, string>): FactoryProvider {\n return {\n provide: TUI_ICON_REGISTRY,\n useFactory: () => ({\n ...(inject(TUI_ICON_REGISTRY, {skipSelf: true, optional: true}) || {}),\n ...Object.fromEntries(\n Object.entries(icons).map(([key, value]) => [\n key,\n `data:image/svg+xml;charset=UTF-8,${encodeURIComponent(value)}`,\n ]),\n ),\n }),\n };\n}\n","import type {Provider} from '@angular/core';\nimport {inject} from '@angular/core';\nimport type {TuiStringHandler} from '@taiga-ui/cdk/types';\nimport {tuiCreateTokenFromFactory} from '@taiga-ui/cdk/utils/miscellaneous';\n\nimport {TUI_ASSETS_PATH} from './assets-path';\nimport {TUI_ICON_REGISTRY} from './icons';\n\nexport const TUI_ICON_RESOLVER = tuiCreateTokenFromFactory<TuiStringHandler<string>>(\n () => {\n const path = inject(TUI_ASSETS_PATH);\n\n return (icon) => `${path}/${icon.replace('@tui.', '').split('.').join('/')}.svg`;\n },\n);\n\n/**\n * @deprecated use {@link TUI_ICON_RESOLVER}\n */\nexport const TUI_ICON_START_RESOLVER = TUI_ICON_RESOLVER;\n\nexport function tuiInjectIconResolver(): TuiStringHandler<string> {\n const icons = inject(TUI_ICON_REGISTRY);\n const resolver = inject(TUI_ICON_RESOLVER);\n\n return (icon) =>\n !icon || icon.includes('/') ? icon : (icons[icon] ?? resolver(icon));\n}\n\nexport function tuiIconResolverProvider(useValue: TuiStringHandler<string>): Provider {\n return {provide: TUI_ICON_RESOLVER, useValue};\n}\n","import {tuiCreateToken} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport interface TuiMedia {\n readonly desktopLarge: number;\n readonly desktopSmall: number;\n readonly mobile: number;\n readonly tablet?: number;\n}\n\n/**\n * Token for media constant\n */\nexport const TUI_MEDIA = tuiCreateToken<TuiMedia>({\n mobile: 768,\n desktopSmall: 1024,\n desktopLarge: 1280,\n});\n","import type {InjectionToken, Provider} from '@angular/core';\nimport {Optional, SkipSelf} from '@angular/core';\nimport {CHAR_NO_BREAK_SPACE} from '@taiga-ui/cdk/constants';\nimport type {TuiRounding} from '@taiga-ui/cdk/types';\nimport {tuiCreateToken} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {Observable} from 'rxjs';\nimport {map, of} from 'rxjs';\n\nexport type TuiDecimalMode = 'always' | 'not-zero' | 'pad';\nexport type TuiDecimalSymbol = ',' | '.';\n\n/**\n * Formatting configuration for displayed numbers\n */\nexport interface TuiNumberFormatSettings {\n /**\n * Number of digits of decimal part.\n * @note Use `Infinity` to keep untouched.\n */\n readonly precision: number;\n /**\n * Separator between the integer and the decimal part.\n * @example 0,42 (',' by default)\n */\n readonly decimalSeparator: TuiDecimalSymbol;\n /**\n * Rounding method.\n */\n readonly rounding: TuiRounding;\n /**\n * Separator between thousands.\n * @example 360 000 (' ' by default)\n */\n readonly thousandSeparator: string;\n /**\n * Decimal part display mode. ('not-zero' by default)\n */\n readonly decimalMode: TuiDecimalMode;\n}\n\nexport const TUI_DEFAULT_NUMBER_FORMAT: TuiNumberFormatSettings = {\n precision: NaN,\n decimalSeparator: '.',\n thousandSeparator: CHAR_NO_BREAK_SPACE,\n rounding: 'truncate',\n decimalMode: 'pad',\n};\n\n/**\n * Formatting configuration for displayed numbers\n */\nexport const TUI_NUMBER_FORMAT: InjectionToken<Observable<TuiNumberFormatSettings>> =\n tuiCreateToken(of(TUI_DEFAULT_NUMBER_FORMAT));\n\nexport function tuiNumberFormatProvider(\n options: Partial<TuiNumberFormatSettings>,\n): Provider {\n return {\n provide: TUI_NUMBER_FORMAT,\n deps: [[new Optional(), new SkipSelf(), TUI_NUMBER_FORMAT]],\n useFactory: (\n parent: Observable<TuiNumberFormatSettings> | null,\n ): Observable<TuiNumberFormatSettings> =>\n (parent || of(TUI_DEFAULT_NUMBER_FORMAT)).pipe(\n map((format) => ({...format, ...options})),\n ),\n };\n}\n","import {DOCUMENT} from '@angular/common';\nimport {ElementRef, inject} from '@angular/core';\nimport {tuiCreateTokenFromFactory} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport const TUI_SCROLL_REF = tuiCreateTokenFromFactory(\n () => new ElementRef(inject(DOCUMENT).documentElement),\n);\n","import {DOCUMENT} from '@angular/common';\nimport {inject} from '@angular/core';\nimport {tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {tuiCreateTokenFromFactory} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {Observable} from 'rxjs';\nimport {merge, share, switchMap, takeUntil} from 'rxjs';\n\n/**\n * A stream of possible selection changes\n */\nexport const TUI_SELECTION_STREAM = tuiCreateTokenFromFactory<Observable<unknown>>(() => {\n const doc = inject(DOCUMENT);\n\n return merge(\n tuiTypedFromEvent(doc, 'selectionchange'),\n tuiTypedFromEvent(doc, 'mouseup'),\n tuiTypedFromEvent(doc, 'mousedown').pipe(\n switchMap(() =>\n tuiTypedFromEvent(doc, 'mousemove').pipe(\n takeUntil(tuiTypedFromEvent(doc, 'mouseup')),\n ),\n ),\n ),\n tuiTypedFromEvent(doc, 'keydown'),\n tuiTypedFromEvent(doc, 'keyup'),\n ).pipe(share());\n});\n","import {tuiCreateToken} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport interface TuiSpinIcons {\n readonly decrement: string;\n readonly increment: string;\n}\n\nexport const TUI_SPIN_ICONS = tuiCreateToken<TuiSpinIcons>({\n decrement: '@tui.chevron-left',\n increment: '@tui.chevron-right',\n});\n","import {tuiCreateToken} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport const TUI_THEME = tuiCreateToken('Taiga UI');\n","import type {Provider, Type} from '@angular/core';\nimport {inject} from '@angular/core';\nimport {WA_WINDOW} from '@ng-web-apis/common';\nimport {tuiCreateTokenFromFactory, tuiProvide} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {TuiRectAccessor} from '@taiga-ui/core/classes';\n\n/**\n * Viewport accessor\n */\nexport const TUI_VIEWPORT = tuiCreateTokenFromFactory<TuiRectAccessor>(() => {\n const win = inject(WA_WINDOW);\n\n return {\n type: 'viewport',\n getClientRect() {\n const {height = 0, offsetTop = 0} = win.visualViewport || {};\n const rect = {\n top: 0,\n left: 0,\n right: win.innerWidth,\n bottom: win.innerHeight,\n width: win.innerWidth,\n height: height + offsetTop || win.innerHeight,\n x: 0,\n y: 0,\n };\n\n return {\n ...rect,\n toJSON: () => JSON.stringify(rect),\n };\n },\n };\n});\n\nexport function tuiAsViewport(accessor: Type<TuiRectAccessor>): Provider {\n return tuiProvide(TUI_VIEWPORT, accessor);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|