@cuby-ui/core 0.0.199 → 0.0.200

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.
@@ -10,7 +10,7 @@ export declare class CuiButtonComponent implements CuiButtonOptions, OnInit {
10
10
  protected readonly AppearanceIconColors: Record<CuiButtonOptions['appearance'], string>;
11
11
  protected readonly COLOR_BASE_500 = "var(--cui-base-500)";
12
12
  protected readonly BUTTON_ICONS_COLOR_BASE_500: CuiButtonOptions['appearance'][];
13
- protected _appearance: "action" | "secondary" | "outlined" | "outlined-gray" | "ghost" | "flat" | "destructive" | "link";
13
+ protected _appearance: "link" | "action" | "secondary" | "outlined" | "outlined-gray" | "ghost" | "flat" | "destructive";
14
14
  protected iconColor: string;
15
15
  protected _size: "xxs" | "xs" | "sm" | "md";
16
16
  protected iconDimensions: {
@@ -0,0 +1,8 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "@cuby-ui/cdk";
3
+ export declare class CuiDropdownWrapperComponent {
4
+ title?: string;
5
+ width?: string;
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<CuiDropdownWrapperComponent, never>;
7
+ static ɵcmp: i0.ɵɵComponentDeclaration<CuiDropdownWrapperComponent, "cui-dropdown-wrapper", never, { "title": { "alias": "title"; "required": false; }; "width": { "alias": "width"; "required": false; }; }, {}, never, ["[ccDropdownHeaderContent]", "*", "[ccDropdownFooterContent]"], true, [{ directive: typeof i1.CuiFocusTrapDirective; inputs: {}; outputs: {}; }]>;
8
+ }
@@ -0,0 +1,41 @@
1
+ import type { OnDestroy, OnInit, TemplateRef } from '@angular/core';
2
+ import { EventEmitter } from '@angular/core';
3
+ import type { CuiDropdownOrientation } from './dropdown.interfaces';
4
+ import * as i0 from "@angular/core";
5
+ export declare class CuiDropdownDirective implements OnInit, OnDestroy {
6
+ private readonly document;
7
+ private readonly viewContainerRef;
8
+ private readonly target;
9
+ private readonly window;
10
+ private readonly SPACE_BETWEEN_TARGET_AND_LIST;
11
+ private readonly CONTAINER_SELECTOR;
12
+ private readonly DROPDOWN_SELECTOR;
13
+ private container;
14
+ private element;
15
+ private backdrop;
16
+ content: TemplateRef<unknown>;
17
+ orientation: CuiDropdownOrientation;
18
+ readonly isOpened: EventEmitter<boolean>;
19
+ private readonly isOpen;
20
+ private readonly targetToggleEventListener;
21
+ private elementResizeObserver;
22
+ constructor();
23
+ protected onResize(): void;
24
+ protected onClick(event: MouseEvent): void;
25
+ ngOnInit(): void;
26
+ ngOnDestroy(): void;
27
+ open(): void;
28
+ close(): void;
29
+ private initContainer;
30
+ private initDropdown;
31
+ private initTargetElementListener;
32
+ private initResizeObserver;
33
+ private destroyElementResizeObserver;
34
+ private changeDropdownYCoordinateIfNeeded;
35
+ private calculateDropdownPosition;
36
+ private changePositionX;
37
+ private changePositionY;
38
+ private findScrollableContainer;
39
+ static ɵfac: i0.ɵɵFactoryDeclaration<CuiDropdownDirective, never>;
40
+ static ɵdir: i0.ɵɵDirectiveDeclaration<CuiDropdownDirective, "[cuiDropdown]", ["cuiDropdown"], { "content": { "alias": "cuiDropdown"; "required": true; }; "orientation": { "alias": "orientation"; "required": false; }; }, { "isOpened": "isOpened"; }, never, never, true, never>;
41
+ }
@@ -0,0 +1,7 @@
1
+ export interface ChangePositionYParams {
2
+ shouldListOpenAbove: boolean;
3
+ visibleTop: number;
4
+ visibleBottom: number;
5
+ dropdownHeight: number;
6
+ }
7
+ export type CuiDropdownOrientation = 'left' | 'right' | 'stretch';
@@ -0,0 +1,3 @@
1
+ export { CuiDropdownDirective } from './dropdown.directive';
2
+ export { CuiDropdownOrientation } from './dropdown.interfaces';
3
+ export { CuiDropdownWrapperComponent } from './dropdown-wrapper.component';
@@ -8,6 +8,7 @@ export * from './button-group';
8
8
  export * from './checkbox';
9
9
  export * from './context-menu';
10
10
  export * from './dialog';
11
+ export * from './dropdown';
11
12
  export * from './form-field';
12
13
  export * from './hint';
13
14
  export * from './icon-button';
@@ -0,0 +1,18 @@
1
+ import { NgIf } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
3
+ import { CuiFocusTrapDirective } from '@cuby-ui/cdk';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@cuby-ui/cdk";
6
+ export class CuiDropdownWrapperComponent {
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CuiDropdownWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CuiDropdownWrapperComponent, isStandalone: true, selector: "cui-dropdown-wrapper", inputs: { title: "title", width: "width" }, hostDirectives: [{ directive: i1.CuiFocusTrapDirective }], ngImport: i0, template: "<div\r\n [style.width]=\"width\"\r\n class=\"dropdown\"\r\n>\r\n <header *ngIf=\"title\" class=\"header\">\r\n <h3 class=\"title\">{{ title }}</h3>\r\n <ng-content select=\"[ccDropdownHeaderContent]\" />\r\n </header>\r\n\r\n <div class=\"scrollable-content\">\r\n <ng-content />\r\n </div>\r\n <footer class=\"footer\">\r\n <ng-content select=\"[ccDropdownFooterContent]\" />\r\n </footer>\r\n</div>\r\n", styles: [".dropdown{box-shadow:0 1px 4px #0000000a,0 1px 4px #0000000a;padding-top:3px;padding-bottom:3px;display:flex;flex-direction:column;border-radius:8px;border:1px solid var(--cui-base-200);max-height:350px;height:100%;width:345px;background:var(--cui-base-0)}.header{padding-right:5px;padding-left:5px;display:flex;flex-direction:column;justify-content:center}.title{font-weight:400;font-size:14px;line-height:20px;padding:4px 8px;color:var(--cui-base-500);text-transform:uppercase}.scrollable-content{overflow:auto}.footer{padding:2px 5px}.footer:empty{display:contents}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CuiDropdownWrapperComponent, decorators: [{
11
+ type: Component,
12
+ args: [{ selector: 'cui-dropdown-wrapper', standalone: true, imports: [NgIf], changeDetection: ChangeDetectionStrategy.OnPush, hostDirectives: [CuiFocusTrapDirective], template: "<div\r\n [style.width]=\"width\"\r\n class=\"dropdown\"\r\n>\r\n <header *ngIf=\"title\" class=\"header\">\r\n <h3 class=\"title\">{{ title }}</h3>\r\n <ng-content select=\"[ccDropdownHeaderContent]\" />\r\n </header>\r\n\r\n <div class=\"scrollable-content\">\r\n <ng-content />\r\n </div>\r\n <footer class=\"footer\">\r\n <ng-content select=\"[ccDropdownFooterContent]\" />\r\n </footer>\r\n</div>\r\n", styles: [".dropdown{box-shadow:0 1px 4px #0000000a,0 1px 4px #0000000a;padding-top:3px;padding-bottom:3px;display:flex;flex-direction:column;border-radius:8px;border:1px solid var(--cui-base-200);max-height:350px;height:100%;width:345px;background:var(--cui-base-0)}.header{padding-right:5px;padding-left:5px;display:flex;flex-direction:column;justify-content:center}.title{font-weight:400;font-size:14px;line-height:20px;padding:4px 8px;color:var(--cui-base-500);text-transform:uppercase}.scrollable-content{overflow:auto}.footer{padding:2px 5px}.footer:empty{display:contents}\n"] }]
13
+ }], propDecorators: { title: [{
14
+ type: Input
15
+ }], width: [{
16
+ type: Input
17
+ }] } });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24td3JhcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvZHJvcGRvd24vZHJvcGRvd24td3JhcHBlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvZHJvcGRvd24vZHJvcGRvd24td3JhcHBlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sY0FBYyxDQUFDOzs7QUFXckQsTUFBTSxPQUFPLDJCQUEyQjsrR0FBM0IsMkJBQTJCO21HQUEzQiwyQkFBMkIsdUxDYnhDLDBjQWdCQSxvbkJEVGMsSUFBSTs7NEZBTUwsMkJBQTJCO2tCQVR2QyxTQUFTOytCQUNJLHNCQUFzQixjQUNwQixJQUFJLFdBQ1AsQ0FBQyxJQUFJLENBQUMsbUJBR0UsdUJBQXVCLENBQUMsTUFBTSxrQkFDL0IsQ0FBQyxxQkFBcUIsQ0FBQzs4QkFJaEMsS0FBSztzQkFEWCxLQUFLO2dCQUlDLEtBQUs7c0JBRFgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDdWlGb2N1c1RyYXBEaXJlY3RpdmUgfSBmcm9tICdAY3VieS11aS9jZGsnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2N1aS1kcm9wZG93bi13cmFwcGVyJyxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbTmdJZl0sXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vZHJvcGRvd24td3JhcHBlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9kcm9wZG93bi13cmFwcGVyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIGhvc3REaXJlY3RpdmVzOiBbQ3VpRm9jdXNUcmFwRGlyZWN0aXZlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3VpRHJvcGRvd25XcmFwcGVyQ29tcG9uZW50IHtcclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgdGl0bGU/OiBzdHJpbmc7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyB3aWR0aD86IHN0cmluZztcclxufVxyXG4iLCI8ZGl2XHJcbiAgICBbc3R5bGUud2lkdGhdPVwid2lkdGhcIlxyXG4gICAgY2xhc3M9XCJkcm9wZG93blwiXHJcbj5cclxuICAgIDxoZWFkZXIgKm5nSWY9XCJ0aXRsZVwiIGNsYXNzPVwiaGVhZGVyXCI+XHJcbiAgICAgICAgPGgzIGNsYXNzPVwidGl0bGVcIj57eyB0aXRsZSB9fTwvaDM+XHJcbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2NjRHJvcGRvd25IZWFkZXJDb250ZW50XVwiIC8+XHJcbiAgICA8L2hlYWRlcj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwic2Nyb2xsYWJsZS1jb250ZW50XCI+XHJcbiAgICAgICAgPG5nLWNvbnRlbnQgLz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGZvb3RlciBjbGFzcz1cImZvb3RlclwiPlxyXG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltjY0Ryb3Bkb3duRm9vdGVyQ29udGVudF1cIiAvPlxyXG4gICAgPC9mb290ZXI+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -0,0 +1,179 @@
1
+ import { DOCUMENT } from '@angular/common';
2
+ import { Directive, ElementRef, EventEmitter, HostListener, inject, Input, Output, signal, ViewContainerRef } from '@angular/core';
3
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
+ import { CUI_WINDOW } from '@cuby-ui/cdk';
5
+ import { fromEvent } from 'rxjs';
6
+ import * as i0 from "@angular/core";
7
+ export class CuiDropdownDirective {
8
+ constructor() {
9
+ this.document = inject(DOCUMENT);
10
+ this.viewContainerRef = inject(ViewContainerRef);
11
+ this.target = inject(ElementRef).nativeElement;
12
+ this.window = inject(CUI_WINDOW);
13
+ this.SPACE_BETWEEN_TARGET_AND_LIST = 5;
14
+ this.CONTAINER_SELECTOR = 'cui-dropdowns';
15
+ this.DROPDOWN_SELECTOR = 'cui-dropdown';
16
+ this.orientation = 'left';
17
+ this.isOpened = new EventEmitter();
18
+ this.isOpen = signal(false);
19
+ this.targetToggleEventListener = () => {
20
+ if (!this.isOpen()) {
21
+ this.open();
22
+ return;
23
+ }
24
+ this.close();
25
+ };
26
+ this.initTargetElementListener();
27
+ }
28
+ onResize() {
29
+ this.close();
30
+ }
31
+ onClick(event) {
32
+ if (!this.isOpen()) {
33
+ return;
34
+ }
35
+ const target = event.target;
36
+ const elements = this.document.elementsFromPoint(event.clientX, event.clientY);
37
+ const doesExist = elements.some((element) => this.element.contains(element));
38
+ if (this.target.contains(target) || this.element.contains(target) || doesExist) {
39
+ return;
40
+ }
41
+ this.close();
42
+ }
43
+ ngOnInit() {
44
+ this.initContainer();
45
+ this.initDropdown();
46
+ }
47
+ ngOnDestroy() {
48
+ this.close();
49
+ this.destroyElementResizeObserver();
50
+ }
51
+ open() {
52
+ this.isOpen.set(true);
53
+ this.container.append(this.backdrop, this.element);
54
+ this.calculateDropdownPosition();
55
+ this.isOpened.emit(true);
56
+ }
57
+ close() {
58
+ this.isOpen.set(false);
59
+ this.element?.remove();
60
+ this.backdrop?.remove();
61
+ this.isOpened.emit(false);
62
+ }
63
+ initContainer() {
64
+ const root = this.document.querySelector('cui-dialogs');
65
+ const container = this.document.body.querySelector(this.CONTAINER_SELECTOR);
66
+ if (container) {
67
+ this.container = container;
68
+ return;
69
+ }
70
+ this.container = this.document.createElement(this.CONTAINER_SELECTOR);
71
+ root?.after(this.container);
72
+ }
73
+ initDropdown() {
74
+ const content = this.viewContainerRef.createEmbeddedView(this.content).rootNodes;
75
+ this.element = this.document.createElement(this.DROPDOWN_SELECTOR);
76
+ this.backdrop = this.document.createElement('div');
77
+ this.element.style.top = '0';
78
+ this.element.style.position = 'absolute';
79
+ this.backdrop.style.position = 'fixed';
80
+ this.backdrop.style.inset = '0';
81
+ this.element.append(...content);
82
+ this.initResizeObserver();
83
+ }
84
+ initTargetElementListener() {
85
+ fromEvent(this.target, 'click').pipe(takeUntilDestroyed()).subscribe(this.targetToggleEventListener);
86
+ }
87
+ initResizeObserver() {
88
+ this.elementResizeObserver = new ResizeObserver(() => {
89
+ this.changeDropdownYCoordinateIfNeeded();
90
+ });
91
+ this.elementResizeObserver.observe(this.element);
92
+ }
93
+ destroyElementResizeObserver() {
94
+ this.elementResizeObserver.disconnect();
95
+ }
96
+ changeDropdownYCoordinateIfNeeded() {
97
+ const distanceToBottom = this.document.documentElement.clientHeight - this.element.getBoundingClientRect().bottom;
98
+ if (distanceToBottom >= 0) {
99
+ return;
100
+ }
101
+ this.element.style.top = parseFloat(this.element.style.top) + distanceToBottom + 'px';
102
+ }
103
+ calculateDropdownPosition() {
104
+ this.element.style.visibility = 'hidden';
105
+ setTimeout(() => {
106
+ const targetRect = this.target.getBoundingClientRect();
107
+ const container = this.findScrollableContainer(this.target);
108
+ const containerRect = container.getBoundingClientRect();
109
+ const { clientHeight, clientWidth } = this.document.documentElement;
110
+ const visibleTop = Math.max(targetRect.top, containerRect.top);
111
+ const visibleBottom = Math.min(targetRect.bottom, containerRect.bottom);
112
+ const dropdownHeight = this.element.offsetHeight;
113
+ const shouldListOpenAbove = clientHeight - visibleBottom < dropdownHeight;
114
+ const shouldListAlignLeft = targetRect.left + dropdownHeight > clientWidth;
115
+ const orientation = this.orientation ?? (shouldListAlignLeft ? 'left' : 'right');
116
+ this.changePositionY({ shouldListOpenAbove, visibleTop, visibleBottom, dropdownHeight });
117
+ this.changePositionX(orientation, clientWidth, targetRect);
118
+ this.element.style.visibility = 'visible';
119
+ });
120
+ }
121
+ changePositionX(orientation, clientWidth, targetRect) {
122
+ switch (orientation) {
123
+ case 'right':
124
+ this.element.style.left = 'auto';
125
+ this.element.style.right = `${clientWidth - targetRect.right}px`;
126
+ break;
127
+ case 'stretch':
128
+ this.element.style.left = `${targetRect.left}px`;
129
+ this.element.style.right = `${clientWidth - targetRect.right}px`;
130
+ break;
131
+ default:
132
+ this.element.style.right = 'auto';
133
+ this.element.style.left = `${targetRect.left}px`;
134
+ }
135
+ }
136
+ changePositionY({ shouldListOpenAbove, visibleTop, visibleBottom, dropdownHeight }) {
137
+ const offset = this.SPACE_BETWEEN_TARGET_AND_LIST;
138
+ if (shouldListOpenAbove) {
139
+ this.element.style.top = `${this.window.scrollY + visibleTop - dropdownHeight - offset}px`;
140
+ return;
141
+ }
142
+ this.element.style.top = `${this.window.scrollY + visibleBottom + offset}px`;
143
+ }
144
+ findScrollableContainer(element) {
145
+ let parent = element.parentElement;
146
+ while (parent) {
147
+ const { overflowY } = window.getComputedStyle(parent);
148
+ if (overflowY === 'auto' || overflowY === 'scroll') {
149
+ return parent;
150
+ }
151
+ parent = parent.parentElement;
152
+ }
153
+ return this.document.body;
154
+ }
155
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CuiDropdownDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
156
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: CuiDropdownDirective, isStandalone: true, selector: "[cuiDropdown]", inputs: { content: ["cuiDropdown", "content"], orientation: "orientation" }, outputs: { isOpened: "isOpened" }, host: { listeners: { "window:resize": "onResize()", "document:click": "onClick($event)" } }, exportAs: ["cuiDropdown"], ngImport: i0 }); }
157
+ }
158
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CuiDropdownDirective, decorators: [{
159
+ type: Directive,
160
+ args: [{
161
+ selector: '[cuiDropdown]',
162
+ exportAs: 'cuiDropdown',
163
+ standalone: true,
164
+ }]
165
+ }], ctorParameters: function () { return []; }, propDecorators: { content: [{
166
+ type: Input,
167
+ args: [{ required: true, alias: 'cuiDropdown' }]
168
+ }], orientation: [{
169
+ type: Input
170
+ }], isOpened: [{
171
+ type: Output
172
+ }], onResize: [{
173
+ type: HostListener,
174
+ args: ['window:resize']
175
+ }], onClick: [{
176
+ type: HostListener,
177
+ args: ['document:click', ['$event']]
178
+ }] } });
179
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9jb21wb25lbnRzL2Ryb3Bkb3duL2Ryb3Bkb3duLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkksT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMxQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQVNqQyxNQUFNLE9BQU8sb0JBQW9CO0lBbUM3QjtRQWxDaUIsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QixxQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM1QyxXQUFNLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLGFBQWEsQ0FBQztRQUMxQyxXQUFNLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTVCLGtDQUE2QixHQUFHLENBQUMsQ0FBQztRQUNsQyx1QkFBa0IsR0FBRyxlQUFlLENBQUM7UUFDckMsc0JBQWlCLEdBQUcsY0FBYyxDQUFDO1FBVTdDLGdCQUFXLEdBQTJCLE1BQU0sQ0FBQztRQUdwQyxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUV0QyxXQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZCLDhCQUF5QixHQUFHLEdBQVMsRUFBRTtZQUNwRCxJQUFJLENB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QUk7aUJBQ25COzBFQWdCVSxPQUFPO3NCQURiLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUU7Z0JBSXhDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBSVUsUUFBUTtzQkFEdkIsTUFBTTtnQkFvQkcsUUFBUTtzQkFEakIsWUFBWTt1QkFBQyxlQUFlO2dCQU1uQixPQUFPO3NCQURoQixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgdHlwZSB7IE9uRGVzdHJveSwgT25Jbml0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBpbmplY3QsIElucHV0LCBPdXRwdXQsIHNpZ25hbCwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcbmltcG9ydCB7IENVSV9XSU5ET1cgfSBmcm9tICdAY3VieS11aS9jZGsnO1xyXG5pbXBvcnQgeyBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB0eXBlIHsgQ2hhbmdlUG9zaXRpb25ZUGFyYW1zLCBDdWlEcm9wZG93bk9yaWVudGF0aW9uIH0gZnJvbSAnLi9kcm9wZG93bi5pbnRlcmZhY2VzJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6ICdbY3VpRHJvcGRvd25dJyxcclxuICAgIGV4cG9ydEFzOiAnY3VpRHJvcGRvd24nLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEN1aURyb3Bkb3duRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRhcmdldCA9IGluamVjdChFbGVtZW50UmVmKS5uYXRpdmVFbGVtZW50O1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSB3aW5kb3cgPSBpbmplY3QoQ1VJX1dJTkRPVyk7XHJcblxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBTUEFDRV9CRVRXRUVOX1RBUkdFVF9BTkRfTElTVCA9IDU7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IENPTlRBSU5FUl9TRUxFQ1RPUiA9ICdjdWktZHJvcGRvd25zJztcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgRFJPUERPV05fU0VMRUNUT1IgPSAnY3VpLWRyb3Bkb3duJztcclxuXHJcbiAgICBwcml2YXRlIGNvbnRhaW5lciE6IEVsZW1lbnQ7XHJcbiAgICBwcml2YXRlIGVsZW1lbnQhOiBIVE1MRWxlbWVudDtcclxuICAgIHByaXZhdGUgYmFja2Ryb3AhOiBIVE1MRGl2RWxlbWVudDtcclxuXHJcbiAgICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSwgYWxpYXM6ICdjdWlEcm9wZG93bicgfSlcclxuICAgIHB1YmxpYyBjb250ZW50ITogVGVtcGxhdGVSZWY8dW5rbm93bj47XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBvcmllbnRhdGlvbjogQ3VpRHJvcGRvd25PcmllbnRhdGlvbiA9ICdsZWZ0JztcclxuXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyByZWFkb25seSBpc09wZW5lZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGlzT3BlbiA9IHNpZ25hbChmYWxzZSk7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRhcmdldFRvZ2dsZUV2ZW50TGlzdGVuZXIgPSAoKTogdm9pZCA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzT3BlbigpKSB7XHJcbiAgICAgICAgICAgIHRoaXMub3BlbigpO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgfTtcclxuICAgIHByaXZhdGUgZWxlbWVudFJlc2l6ZU9ic2VydmVyITogUmVzaXplT2JzZXJ2ZXI7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgdGhpcy5pbml0VGFyZ2V0RWxlbWVudExpc3RlbmVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScpXHJcbiAgICBwcm90ZWN0ZWQgb25SZXNpemUoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcclxuICAgIHByb3RlY3RlZCBvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzT3BlbigpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICBjb25zdCBlbGVtZW50cyA9IHRoaXMuZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSk7XHJcbiAgICAgICAgY29uc3QgZG9lc0V4aXN0ID0gZWxlbWVudHMuc29tZSgoZWxlbWVudCkgPT4gdGhpcy5lbGVtZW50LmNvbnRhaW5zKGVsZW1lbnQpKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMudGFyZ2V0LmNvbnRhaW5zKHRhcmdldCkgfHwgdGhpcy5lbGVtZW50LmNvbnRhaW5zKHRhcmdldCkgfHwgZG9lc0V4aXN0KSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5pbml0Q29udGFpbmVyKCk7XHJcbiAgICAgICAgdGhpcy5pbml0RHJvcGRvd24oKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgICAgIHRoaXMuZGVzdHJveUVsZW1lbnRSZXNpemVPYnNlcnZlcigpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvcGVuKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaXNPcGVuLnNldCh0cnVlKTtcclxuICAgICAgICB0aGlzLmNvbnRhaW5lci5hcHBlbmQodGhpcy5iYWNrZHJvcCwgdGhpcy5lbGVtZW50KTtcclxuICAgICAgICB0aGlzLmNhbGN1bGF0ZURyb3Bkb3duUG9zaXRpb24oKTtcclxuICAgICAgICB0aGlzLmlzT3BlbmVkLmVtaXQodHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaXNPcGVuLnNldChmYWxzZSk7XHJcbiAgICAgICAgdGhpcy5lbGVtZW50Py5yZW1vdmUoKTtcclxuICAgICAgICB0aGlzLmJhY2tkcm9wPy5yZW1vdmUoKTtcclxuICAgICAgICB0aGlzLmlzT3BlbmVkLmVtaXQoZmFsc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaW5pdENvbnRhaW5lcigpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCByb290ID0gdGhpcy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdjdWktZGlhbG9ncycpO1xyXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yKHRoaXMuQ09OVEFJTkVSX1NFTEVDVE9SKTtcclxuXHJcbiAgICAgICAgaWYgKGNvbnRhaW5lcikge1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRhaW5lciA9IGNvbnRhaW5lcjtcclxuXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuY29udGFpbmVyID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KHRoaXMuQ09OVEFJTkVSX1NFTEVDVE9SKTtcclxuXHJcbiAgICAgICAgcm9vdD8uYWZ0ZXIodGhpcy5jb250YWluZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaW5pdERyb3Bkb3duKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuY29udGVudCkucm9vdE5vZGVzO1xyXG4gICAgICAgIHRoaXMuZWxlbWVudCA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0aGlzLkRST1BET1dOX1NFTEVDVE9SKTtcclxuICAgICAgICB0aGlzLmJhY2tkcm9wID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuXHJcbiAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLnRvcCA9ICcwJztcclxuICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xyXG4gICAgICAgIHRoaXMuYmFja2Ryb3Auc3R5bGUucG9zaXRpb24gPSAnZml4ZWQnO1xyXG4gICAgICAgIHRoaXMuYmFja2Ryb3Auc3R5bGUuaW5zZXQgPSAnMCc7XHJcbiAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZCguLi5jb250ZW50KTtcclxuXHJcbiAgICAgICAgdGhpcy5pbml0UmVzaXplT2JzZXJ2ZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGluaXRUYXJnZXRFbGVtZW50TGlzdGVuZXIoKTogdm9pZCB7XHJcbiAgICAgICAgZnJvbUV2ZW50KHRoaXMudGFyZ2V0LCAnY2xpY2snKS5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUodGhpcy50YXJnZXRUb2dnbGVFdmVudExpc3RlbmVyKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGluaXRSZXNpemVPYnNlcnZlcigpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmVsZW1lbnRSZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRHJvcGRvd25ZQ29vcmRpbmF0ZUlmTmVlZGVkKCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuZWxlbWVudFJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5lbGVtZW50KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGRlc3Ryb3lFbGVtZW50UmVzaXplT2JzZXJ2ZXIoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5lbGVtZW50UmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY2hhbmdlRHJvcGRvd25ZQ29vcmRpbmF0ZUlmTmVlZGVkKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGRpc3RhbmNlVG9Cb3R0b20gPVxyXG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQgLSB0aGlzLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tO1xyXG5cclxuICAgICAgICBpZiAoZGlzdGFuY2VUb0JvdHRvbSA+PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS50b3AgPSBwYXJzZUZsb2F0KHRoaXMuZWxlbWVudC5zdHlsZS50b3ApICsgZGlzdGFuY2VUb0JvdHRvbSArICdweCc7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVEcm9wZG93blBvc2l0aW9uKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XHJcblxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB0YXJnZXRSZWN0ID0gdGhpcy50YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuZmluZFNjcm9sbGFibGVDb250YWluZXIodGhpcy50YXJnZXQpO1xyXG4gICAgICAgICAgICBjb25zdCBjb250YWluZXJSZWN0ID0gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICAgICAgICBjb25zdCB7IGNsaWVudEhlaWdodCwgY2xpZW50V2lkdGggfSA9IHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xyXG4gICAgICAgICAgICBjb25zdCB2aXNpYmxlVG9wID0gTWF0aC5tYXgodGFyZ2V0UmVjdC50b3AsIGNvbnRhaW5lclJlY3QudG9wKTtcclxuICAgICAgICAgICAgY29uc3QgdmlzaWJsZUJvdHRvbSA9IE1hdGgubWluKHRhcmdldFJlY3QuYm90dG9tLCBjb250YWluZXJSZWN0LmJvdHRvbSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGRyb3Bkb3duSGVpZ2h0ID0gdGhpcy5lbGVtZW50Lm9mZnNldEhlaWdodDtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHNob3VsZExpc3RPcGVuQWJvdmUgPSBjbGllbnRIZWlnaHQgLSB2aXNpYmxlQm90dG9tIDwgZHJvcGRvd25IZWlnaHQ7XHJcbiAgICAgICAgICAgIGNvbnN0IHNob3VsZExpc3RBbGlnbkxlZnQgPSB0YXJnZXRSZWN0LmxlZnQgKyBkcm9wZG93bkhlaWdodCA+IGNsaWVudFdpZHRoO1xyXG4gICAgICAgICAgICBjb25zdCBvcmllbnRhdGlvbiA9IHRoaXMub3JpZW50YXRpb24gPz8gKHNob3VsZExpc3RBbGlnbkxlZnQgPyAnbGVmdCcgOiAncmlnaHQnKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlUG9zaXRpb25ZKHsgc2hvdWxkTGlzdE9wZW5BYm92ZSwgdmlzaWJsZVRvcCwgdmlzaWJsZUJvdHRvbSwgZHJvcGRvd25IZWlnaHQgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlUG9zaXRpb25YKG9yaWVudGF0aW9uLCBjbGllbnRXaWR0aCwgdGFyZ2V0UmVjdCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUudmlzaWJpbGl0eSA9ICd2aXNpYmxlJztcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNoYW5nZVBvc2l0aW9uWChvcmllbnRhdGlvbjogc3RyaW5nLCBjbGllbnRXaWR0aDogbnVtYmVyLCB0YXJnZXRSZWN0OiBET01SZWN0KTogdm9pZCB7XHJcbiAgICAgICAgc3dpdGNoIChvcmllbnRhdGlvbikge1xyXG4gICAgICAgICAgICBjYXNlICdyaWdodCc6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUubGVmdCA9ICdhdXRvJztcclxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5yaWdodCA9IGAke2NsaWVudFdpZHRoIC0gdGFyZ2V0UmVjdC5yaWdodH1weGA7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgIGNhc2UgJ3N0cmV0Y2gnOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLmxlZnQgPSBgJHt0YXJnZXRSZWN0LmxlZnR9cHhgO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLnJpZ2h0ID0gYCR7Y2xpZW50V2lkdGggLSB0YXJnZXRSZWN0LnJpZ2h0fXB4YDtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5yaWdodCA9ICdhdXRvJztcclxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5sZWZ0ID0gYCR7dGFyZ2V0UmVjdC5sZWZ0fXB4YDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjaGFuZ2VQb3NpdGlvblkoe1xyXG4gICAgICAgIHNob3VsZExpc3RPcGVuQWJvdmUsXHJcbiAgICAgICAgdmlzaWJsZVRvcCxcclxuICAgICAgICB2aXNpYmxlQm90dG9tLFxyXG4gICAgICAgIGRyb3Bkb3duSGVpZ2h0XHJcbiAgICB9OiBDaGFuZ2VQb3NpdGlvbllQYXJhbXMpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBvZmZzZXQgPSB0aGlzLlNQQUNFX0JFVFdFRU5fVEFSR0VUX0FORF9MSVNUO1xyXG5cclxuICAgICAgICBpZiAoc2hvdWxkTGlzdE9wZW5BYm92ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUudG9wID0gYCR7dGhpcy53aW5kb3cuc2Nyb2xsWSArIHZpc2libGVUb3AgLSBkcm9wZG93bkhlaWdodCAtIG9mZnNldH1weGA7XHJcblxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUudG9wID0gYCR7dGhpcy53aW5kb3cuc2Nyb2xsWSArIHZpc2libGVCb3R0b20gKyBvZmZzZXR9cHhgO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZmluZFNjcm9sbGFibGVDb250YWluZXIoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudCB7XHJcbiAgICAgICAgbGV0IHBhcmVudCA9IGVsZW1lbnQucGFyZW50RWxlbWVudDtcclxuXHJcbiAgICAgICAgd2hpbGUgKHBhcmVudCkge1xyXG4gICAgICAgICAgICBjb25zdCB7IG92ZXJmbG93WSB9ID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUocGFyZW50KTtcclxuXHJcbiAgICAgICAgICAgIGlmIChvdmVyZmxvd1kgPT09ICdhdXRvJyB8fCBvdmVyZmxvd1kgPT09ICdzY3JvbGwnKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyZW50O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50RWxlbWVudDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmRvY3VtZW50LmJvZHk7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi5pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIENoYW5nZVBvc2l0aW9uWVBhcmFtcyB7XHJcbiAgICBzaG91bGRMaXN0T3BlbkFib3ZlOiBib29sZWFuO1xyXG4gICAgdmlzaWJsZVRvcDogbnVtYmVyO1xyXG4gICAgdmlzaWJsZUJvdHRvbTogbnVtYmVyO1xyXG4gICAgZHJvcGRvd25IZWlnaHQ6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgQ3VpRHJvcGRvd25PcmllbnRhdGlvbiA9ICdsZWZ0JyB8ICdyaWdodCcgfCAnc3RyZXRjaCc7XHJcbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export { CuiDropdownDirective } from './dropdown.directive';
2
+ export { CuiDropdownWrapperComponent } from './dropdown-wrapper.component';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvZHJvcGRvd24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFNUQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOEJBQThCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBDdWlEcm9wZG93bkRpcmVjdGl2ZSB9IGZyb20gJy4vZHJvcGRvd24uZGlyZWN0aXZlJztcclxuZXhwb3J0IHsgQ3VpRHJvcGRvd25PcmllbnRhdGlvbiB9IGZyb20gJy4vZHJvcGRvd24uaW50ZXJmYWNlcyc7XHJcbmV4cG9ydCB7IEN1aURyb3Bkb3duV3JhcHBlckNvbXBvbmVudCB9IGZyb20gJy4vZHJvcGRvd24td3JhcHBlci5jb21wb25lbnQnO1xyXG4iXX0=
@@ -8,6 +8,7 @@ export * from './button-group';
8
8
  export * from './checkbox';
9
9
  export * from './context-menu';
10
10
  export * from './dialog';
11
+ export * from './dropdown';
11
12
  export * from './form-field';
12
13
  export * from './hint';
13
14
  export * from './icon-button';
@@ -25,4 +26,4 @@ export * from './svg';
25
26
  export * from './tabs';
26
27
  export * from './textarea';
27
28
  export * from './toggle';
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsT0FBTyxDQUFDO0FBQ3RCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hY2NvcmRpb24nO1xyXG5leHBvcnQgKiBmcm9tICcuL2FsZXJ0JztcclxuZXhwb3J0ICogZnJvbSAnLi9iYWRnZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYmFubmVyJztcclxuZXhwb3J0ICogZnJvbSAnLi9icmVhZGNydW1icyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYnV0dG9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9idXR0b24tZ3JvdXAnO1xyXG5leHBvcnQgKiBmcm9tICcuL2NoZWNrYm94JztcclxuZXhwb3J0ICogZnJvbSAnLi9jb250ZXh0LW1lbnUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2RpYWxvZyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS1maWVsZCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vaGludCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vaWNvbi1idXR0b24nO1xyXG5leHBvcnQgKiBmcm9tICcuL2lucHV0LW51bWJlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vaW5wdXQtcGFzc3dvcmQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2lucHV0LXRleHQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2lucHV0LXRpbWUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xhYmVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9sZXR0ZXItYm94JztcclxuZXhwb3J0ICogZnJvbSAnLi9ub3RpZmljYXRpb24nO1xyXG5leHBvcnQgKiBmcm9tICcuL3JhZGlvJztcclxuZXhwb3J0ICogZnJvbSAnLi9yb290JztcclxuZXhwb3J0ICogZnJvbSAnLi9zZWxlY3QnO1xyXG5leHBvcnQgKiBmcm9tICcuL3N2Zyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdGFicyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdGV4dGFyZWEnO1xyXG5leHBvcnQgKiBmcm9tICcuL3RvZ2dsZSc7XHJcbiJdfQ==
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsT0FBTyxDQUFDO0FBQ3RCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hY2NvcmRpb24nO1xyXG5leHBvcnQgKiBmcm9tICcuL2FsZXJ0JztcclxuZXhwb3J0ICogZnJvbSAnLi9iYWRnZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYmFubmVyJztcclxuZXhwb3J0ICogZnJvbSAnLi9icmVhZGNydW1icyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYnV0dG9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9idXR0b24tZ3JvdXAnO1xyXG5leHBvcnQgKiBmcm9tICcuL2NoZWNrYm94JztcclxuZXhwb3J0ICogZnJvbSAnLi9jb250ZXh0LW1lbnUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2RpYWxvZyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZHJvcGRvd24nO1xyXG5leHBvcnQgKiBmcm9tICcuL2Zvcm0tZmllbGQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2hpbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2ljb24tYnV0dG9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9pbnB1dC1udW1iZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL2lucHV0LXBhc3N3b3JkJztcclxuZXhwb3J0ICogZnJvbSAnLi9pbnB1dC10ZXh0JztcclxuZXhwb3J0ICogZnJvbSAnLi9pbnB1dC10aW1lJztcclxuZXhwb3J0ICogZnJvbSAnLi9sYWJlbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGV0dGVyLWJveCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbm90aWZpY2F0aW9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9yYWRpbyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcm9vdCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc2VsZWN0JztcclxuZXhwb3J0ICogZnJvbSAnLi9zdmcnO1xyXG5leHBvcnQgKiBmcm9tICcuL3RhYnMnO1xyXG5leHBvcnQgKiBmcm9tICcuL3RleHRhcmVhJztcclxuZXhwb3J0ICogZnJvbSAnLi90b2dnbGUnO1xyXG4iXX0=
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Component, ChangeDetectionStrategy, InjectionToken, inject, Input, HostBinding, ChangeDetectorRef, ElementRef, ViewChild, EventEmitter, Output, NgModule, Injector, Injectable, SkipSelf, Optional, DestroyRef, Directive, NgZone, TemplateRef, ContentChildren, HostListener, Self, signal, INJECTOR, forwardRef, ViewContainerRef } from '@angular/core';
3
3
  import * as i1 from '@angular/common';
4
- import { CommonModule, DOCUMENT, NgForOf } from '@angular/common';
4
+ import { CommonModule, DOCUMENT, NgForOf, NgIf } from '@angular/common';
5
5
  import * as i1$1 from '@cuby-ui/cdk';
6
6
  import { CUI_WINDOW, cuiCreateToken, cuiCreateTokenFromFactory, CuiDestroyService, CuiFilterPipe, CuiLetDirective, CuiPopoverService, cuiProvide, CUI_ANIMATION_FRAME, cuiZonefree, EMPTY_CLIENT_RECT, cuiInjectElement, CUI_LOCAL_STORAGE, CUI_IS_WEBKIT, CuiItemDirective, CuiActiveZone, CuiFocusTrapDirective, cuiGetElementObscures, CUI_IS_MOBILE, CuiHoveredService, cuiPure, cuiPointToClientRect, cuiClamp, cuiPx, cuiIfMap, cuiIsPresent, cuiTypedFromEvent, cuiZonefreeScheduler, cuiZoneOptimized, cuiIsNativeFocused, CuiClickOutsideDirective, CuiTargetDirective, cuiGetClosestFocusable, CuiTime, CuiAutoResizingDirective } from '@cuby-ui/cdk';
7
7
  import { DomSanitizer } from '@angular/platform-browser';
@@ -2294,6 +2294,192 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2294
2294
  }]
2295
2295
  }] });
2296
2296
 
2297
+ class CuiDropdownDirective {
2298
+ constructor() {
2299
+ this.document = inject(DOCUMENT);
2300
+ this.viewContainerRef = inject(ViewContainerRef);
2301
+ this.target = inject(ElementRef).nativeElement;
2302
+ this.window = inject(CUI_WINDOW);
2303
+ this.SPACE_BETWEEN_TARGET_AND_LIST = 5;
2304
+ this.CONTAINER_SELECTOR = 'cui-dropdowns';
2305
+ this.DROPDOWN_SELECTOR = 'cui-dropdown';
2306
+ this.orientation = 'left';
2307
+ this.isOpened = new EventEmitter();
2308
+ this.isOpen = signal(false);
2309
+ this.targetToggleEventListener = () => {
2310
+ if (!this.isOpen()) {
2311
+ this.open();
2312
+ return;
2313
+ }
2314
+ this.close();
2315
+ };
2316
+ this.initTargetElementListener();
2317
+ }
2318
+ onResize() {
2319
+ this.close();
2320
+ }
2321
+ onClick(event) {
2322
+ if (!this.isOpen()) {
2323
+ return;
2324
+ }
2325
+ const target = event.target;
2326
+ const elements = this.document.elementsFromPoint(event.clientX, event.clientY);
2327
+ const doesExist = elements.some((element) => this.element.contains(element));
2328
+ if (this.target.contains(target) || this.element.contains(target) || doesExist) {
2329
+ return;
2330
+ }
2331
+ this.close();
2332
+ }
2333
+ ngOnInit() {
2334
+ this.initContainer();
2335
+ this.initDropdown();
2336
+ }
2337
+ ngOnDestroy() {
2338
+ this.close();
2339
+ this.destroyElementResizeObserver();
2340
+ }
2341
+ open() {
2342
+ this.isOpen.set(true);
2343
+ this.container.append(this.backdrop, this.element);
2344
+ this.calculateDropdownPosition();
2345
+ this.isOpened.emit(true);
2346
+ }
2347
+ close() {
2348
+ this.isOpen.set(false);
2349
+ this.element?.remove();
2350
+ this.backdrop?.remove();
2351
+ this.isOpened.emit(false);
2352
+ }
2353
+ initContainer() {
2354
+ const root = this.document.querySelector('cui-dialogs');
2355
+ const container = this.document.body.querySelector(this.CONTAINER_SELECTOR);
2356
+ if (container) {
2357
+ this.container = container;
2358
+ return;
2359
+ }
2360
+ this.container = this.document.createElement(this.CONTAINER_SELECTOR);
2361
+ root?.after(this.container);
2362
+ }
2363
+ initDropdown() {
2364
+ const content = this.viewContainerRef.createEmbeddedView(this.content).rootNodes;
2365
+ this.element = this.document.createElement(this.DROPDOWN_SELECTOR);
2366
+ this.backdrop = this.document.createElement('div');
2367
+ this.element.style.top = '0';
2368
+ this.element.style.position = 'absolute';
2369
+ this.backdrop.style.position = 'fixed';
2370
+ this.backdrop.style.inset = '0';
2371
+ this.element.append(...content);
2372
+ this.initResizeObserver();
2373
+ }
2374
+ initTargetElementListener() {
2375
+ fromEvent(this.target, 'click').pipe(takeUntilDestroyed()).subscribe(this.targetToggleEventListener);
2376
+ }
2377
+ initResizeObserver() {
2378
+ this.elementResizeObserver = new ResizeObserver(() => {
2379
+ this.changeDropdownYCoordinateIfNeeded();
2380
+ });
2381
+ this.elementResizeObserver.observe(this.element);
2382
+ }
2383
+ destroyElementResizeObserver() {
2384
+ this.elementResizeObserver.disconnect();
2385
+ }
2386
+ changeDropdownYCoordinateIfNeeded() {
2387
+ const distanceToBottom = this.document.documentElement.clientHeight - this.element.getBoundingClientRect().bottom;
2388
+ if (distanceToBottom >= 0) {
2389
+ return;
2390
+ }
2391
+ this.element.style.top = parseFloat(this.element.style.top) + distanceToBottom + 'px';
2392
+ }
2393
+ calculateDropdownPosition() {
2394
+ this.element.style.visibility = 'hidden';
2395
+ setTimeout(() => {
2396
+ const targetRect = this.target.getBoundingClientRect();
2397
+ const container = this.findScrollableContainer(this.target);
2398
+ const containerRect = container.getBoundingClientRect();
2399
+ const { clientHeight, clientWidth } = this.document.documentElement;
2400
+ const visibleTop = Math.max(targetRect.top, containerRect.top);
2401
+ const visibleBottom = Math.min(targetRect.bottom, containerRect.bottom);
2402
+ const dropdownHeight = this.element.offsetHeight;
2403
+ const shouldListOpenAbove = clientHeight - visibleBottom < dropdownHeight;
2404
+ const shouldListAlignLeft = targetRect.left + dropdownHeight > clientWidth;
2405
+ const orientation = this.orientation ?? (shouldListAlignLeft ? 'left' : 'right');
2406
+ this.changePositionY({ shouldListOpenAbove, visibleTop, visibleBottom, dropdownHeight });
2407
+ this.changePositionX(orientation, clientWidth, targetRect);
2408
+ this.element.style.visibility = 'visible';
2409
+ });
2410
+ }
2411
+ changePositionX(orientation, clientWidth, targetRect) {
2412
+ switch (orientation) {
2413
+ case 'right':
2414
+ this.element.style.left = 'auto';
2415
+ this.element.style.right = `${clientWidth - targetRect.right}px`;
2416
+ break;
2417
+ case 'stretch':
2418
+ this.element.style.left = `${targetRect.left}px`;
2419
+ this.element.style.right = `${clientWidth - targetRect.right}px`;
2420
+ break;
2421
+ default:
2422
+ this.element.style.right = 'auto';
2423
+ this.element.style.left = `${targetRect.left}px`;
2424
+ }
2425
+ }
2426
+ changePositionY({ shouldListOpenAbove, visibleTop, visibleBottom, dropdownHeight }) {
2427
+ const offset = this.SPACE_BETWEEN_TARGET_AND_LIST;
2428
+ if (shouldListOpenAbove) {
2429
+ this.element.style.top = `${this.window.scrollY + visibleTop - dropdownHeight - offset}px`;
2430
+ return;
2431
+ }
2432
+ this.element.style.top = `${this.window.scrollY + visibleBottom + offset}px`;
2433
+ }
2434
+ findScrollableContainer(element) {
2435
+ let parent = element.parentElement;
2436
+ while (parent) {
2437
+ const { overflowY } = window.getComputedStyle(parent);
2438
+ if (overflowY === 'auto' || overflowY === 'scroll') {
2439
+ return parent;
2440
+ }
2441
+ parent = parent.parentElement;
2442
+ }
2443
+ return this.document.body;
2444
+ }
2445
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CuiDropdownDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
2446
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: CuiDropdownDirective, isStandalone: true, selector: "[cuiDropdown]", inputs: { content: ["cuiDropdown", "content"], orientation: "orientation" }, outputs: { isOpened: "isOpened" }, host: { listeners: { "window:resize": "onResize()", "document:click": "onClick($event)" } }, exportAs: ["cuiDropdown"], ngImport: i0 }); }
2447
+ }
2448
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CuiDropdownDirective, decorators: [{
2449
+ type: Directive,
2450
+ args: [{
2451
+ selector: '[cuiDropdown]',
2452
+ exportAs: 'cuiDropdown',
2453
+ standalone: true,
2454
+ }]
2455
+ }], ctorParameters: function () { return []; }, propDecorators: { content: [{
2456
+ type: Input,
2457
+ args: [{ required: true, alias: 'cuiDropdown' }]
2458
+ }], orientation: [{
2459
+ type: Input
2460
+ }], isOpened: [{
2461
+ type: Output
2462
+ }], onResize: [{
2463
+ type: HostListener,
2464
+ args: ['window:resize']
2465
+ }], onClick: [{
2466
+ type: HostListener,
2467
+ args: ['document:click', ['$event']]
2468
+ }] } });
2469
+
2470
+ class CuiDropdownWrapperComponent {
2471
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CuiDropdownWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2472
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CuiDropdownWrapperComponent, isStandalone: true, selector: "cui-dropdown-wrapper", inputs: { title: "title", width: "width" }, hostDirectives: [{ directive: i1$1.CuiFocusTrapDirective }], ngImport: i0, template: "<div\r\n [style.width]=\"width\"\r\n class=\"dropdown\"\r\n>\r\n <header *ngIf=\"title\" class=\"header\">\r\n <h3 class=\"title\">{{ title }}</h3>\r\n <ng-content select=\"[ccDropdownHeaderContent]\" />\r\n </header>\r\n\r\n <div class=\"scrollable-content\">\r\n <ng-content />\r\n </div>\r\n <footer class=\"footer\">\r\n <ng-content select=\"[ccDropdownFooterContent]\" />\r\n </footer>\r\n</div>\r\n", styles: [".dropdown{box-shadow:0 1px 4px #0000000a,0 1px 4px #0000000a;padding-top:3px;padding-bottom:3px;display:flex;flex-direction:column;border-radius:8px;border:1px solid var(--cui-base-200);max-height:350px;height:100%;width:345px;background:var(--cui-base-0)}.header{padding-right:5px;padding-left:5px;display:flex;flex-direction:column;justify-content:center}.title{font-weight:400;font-size:14px;line-height:20px;padding:4px 8px;color:var(--cui-base-500);text-transform:uppercase}.scrollable-content{overflow:auto}.footer{padding:2px 5px}.footer:empty{display:contents}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2473
+ }
2474
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CuiDropdownWrapperComponent, decorators: [{
2475
+ type: Component,
2476
+ args: [{ selector: 'cui-dropdown-wrapper', standalone: true, imports: [NgIf], changeDetection: ChangeDetectionStrategy.OnPush, hostDirectives: [CuiFocusTrapDirective], template: "<div\r\n [style.width]=\"width\"\r\n class=\"dropdown\"\r\n>\r\n <header *ngIf=\"title\" class=\"header\">\r\n <h3 class=\"title\">{{ title }}</h3>\r\n <ng-content select=\"[ccDropdownHeaderContent]\" />\r\n </header>\r\n\r\n <div class=\"scrollable-content\">\r\n <ng-content />\r\n </div>\r\n <footer class=\"footer\">\r\n <ng-content select=\"[ccDropdownFooterContent]\" />\r\n </footer>\r\n</div>\r\n", styles: [".dropdown{box-shadow:0 1px 4px #0000000a,0 1px 4px #0000000a;padding-top:3px;padding-bottom:3px;display:flex;flex-direction:column;border-radius:8px;border:1px solid var(--cui-base-200);max-height:350px;height:100%;width:345px;background:var(--cui-base-0)}.header{padding-right:5px;padding-left:5px;display:flex;flex-direction:column;justify-content:center}.title{font-weight:400;font-size:14px;line-height:20px;padding:4px 8px;color:var(--cui-base-500);text-transform:uppercase}.scrollable-content{overflow:auto}.footer{padding:2px 5px}.footer:empty{display:contents}\n"] }]
2477
+ }], propDecorators: { title: [{
2478
+ type: Input
2479
+ }], width: [{
2480
+ type: Input
2481
+ }] } });
2482
+
2297
2483
  class CuiFormFieldComponent {
2298
2484
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CuiFormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2299
2485
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CuiFormFieldComponent, selector: "cui-form-field", ngImport: i0, template: "<ng-content select=\"label[cuiLabel]\" />\r\n<ng-content />\r\n<div class=\"c-hint-container\">\r\n <ng-content select=\"cui-hint\" />\r\n</div>\r\n", styles: [":host{display:flex;flex-direction:column;gap:4px}.c-hint-container{margin-top:2px}.c-hint-container:empty{display:contents}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
@@ -3502,5 +3688,5 @@ const cuiXNdjsonInterceptor = (request, next) => {
3502
3688
  * Generated bundle index. Do not edit.
3503
3689
  */
3504
3690
 
3505
- export { CUI_ALERTS, CUI_ALERT_CONTEXT, CUI_ALERT_DEFAULT_OPTIONS, CUI_ALERT_OPTIONS, CUI_ANIMATIONS_DEFAULT_DURATION, CUI_BANNER_DEFAULT_OPTIONS, CUI_BANNER_OPTIONS, CUI_BUTTON_DEFAULT_OPTIONS, CUI_BUTTON_OPTIONS, CUI_DEFAULT_THEME, CUI_DIALOGS, CUI_DIALOG_CONTEXT, CUI_DIALOG_DEFAULT_OPTIONS, CUI_DIALOG_OPTIONS, CUI_INPUT_TIME_DEFAULT_OPTIONS, CUI_INPUT_TIME_OPTIONS, CUI_NOTIFICATION_DEFAULT_OPTIONS, CUI_NOTIFICATION_ICONS, CUI_NOTIFICATION_ICON_OPTIONS, CUI_NOTIFICATION_ICON_OPTIONS_DEFAULT_MODE, CUI_NOTIFICATION_ICON_OPTIONS_LIGHT_MODE, CUI_NOTIFICATION_OPTIONS, CUI_ROOT_SELECTOR, CUI_TAB_ACTIVATE, CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FIELD_ICON_LEFT, CUI_TEXT_FIELD_ID, CUI_TEXT_FIELD_IS_ERROR, CUI_TEXT_FIELD_PLACEHOLDER, CUI_TEXT_FIELD_SIZE, CUI_TEXT_FILED_CONTROLLER_PROVIDER, CUI_THEME, CUI_THEME_STORAGE_DEFAULT_KEY, CUI_THEME_STORAGE_KEY, CUI_TOOLTIP_COMPONENT, CUI_TOOLTIP_DEFAULT_OPTIONS, CUI_TOOLTIP_DIRECTIONS, CUI_TOOLTIP_OPTIONS, CUI_TOOLTIP_PROVIDERS, CuiAccordionComponent, CuiAccordionItemComponent, CuiAccordionModule, CuiAlertComponent, CuiAlertModule, CuiAlertService, CuiAlertsComponent, CuiBadgeComponent, CuiBadgeModule, CuiBannerComponent, CuiBannerModule, CuiBreadcrumbComponent, CuiBreadcrumbsComponent, CuiBreadcrumbsModule, CuiButtonComponent, CuiButtonGroupComponent, CuiButtonGroupModule, CuiButtonModule, CuiCheckboxComponent, CuiCheckboxModule, CuiContextMenuComponent, CuiContextMenuModule, CuiDialogActionsComponent, CuiDialogComponent, CuiDialogHeaderComponent, CuiDialogModule, CuiDialogService, CuiDialogsComponent, CuiFormFieldComponent, CuiFormFieldModule, CuiHintComponent, CuiHintModule, CuiIconButtonComponent, CuiIconButtonModule, CuiInputModule, CuiInputNumberComponent, CuiInputNumberModule, CuiInputPasswordComponent, CuiInputPasswordModule, CuiInputTextComponent, CuiInputTimeComponent, CuiInputTimeModule, CuiLabelComponent, CuiLabelModule, CuiLetterBoxComponent, CuiNotificationComponent, CuiNotificationModule, CuiPositionService, CuiRadioComponent, CuiRadioModule, CuiRootComponent, CuiRootModule, CuiSelectComponent, CuiSelectModule, CuiSvgComponent, CuiSvgModule, CuiTabComponent, CuiTabsComponent, CuiTabsModule, CuiTextFieldController, CuiTextFieldControllerModule, CuiTextFieldIconLeftDirective, CuiTextFieldIdDirective, CuiTextFieldIsErrorDirective, CuiTextFieldPlaceholderDirective, CuiTextFieldSizeDirective, CuiTextareaComponent, CuiTextareaModule, CuiThemeService, CuiToggleComponent, CuiToggleModule, CuiTooltip, CuiTooltipComponent, CuiTooltipDescribe, CuiTooltipDirective, CuiTooltipDriver, CuiTooltipHost, CuiTooltipHover, CuiTooltipManual, CuiTooltipOptionsDirective, CuiTooltipOverflow, CuiTooltipPointer, CuiTooltipPosition, CuiTooltipService, CuiTooltipUnstyled, CuiTooltipUnstyledComponent, CuiTooltips, CuiVisualViewportService, cuiGetDuration, cuiIsObscured, cuiOverrideOptions, cuiRemoveSpaces, cuiReplace, cuiToAnimationOptions, cuiTooltipOptionsProvider, cuiXNdjsonInterceptor };
3691
+ export { CUI_ALERTS, CUI_ALERT_CONTEXT, CUI_ALERT_DEFAULT_OPTIONS, CUI_ALERT_OPTIONS, CUI_ANIMATIONS_DEFAULT_DURATION, CUI_BANNER_DEFAULT_OPTIONS, CUI_BANNER_OPTIONS, CUI_BUTTON_DEFAULT_OPTIONS, CUI_BUTTON_OPTIONS, CUI_DEFAULT_THEME, CUI_DIALOGS, CUI_DIALOG_CONTEXT, CUI_DIALOG_DEFAULT_OPTIONS, CUI_DIALOG_OPTIONS, CUI_INPUT_TIME_DEFAULT_OPTIONS, CUI_INPUT_TIME_OPTIONS, CUI_NOTIFICATION_DEFAULT_OPTIONS, CUI_NOTIFICATION_ICONS, CUI_NOTIFICATION_ICON_OPTIONS, CUI_NOTIFICATION_ICON_OPTIONS_DEFAULT_MODE, CUI_NOTIFICATION_ICON_OPTIONS_LIGHT_MODE, CUI_NOTIFICATION_OPTIONS, CUI_ROOT_SELECTOR, CUI_TAB_ACTIVATE, CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FIELD_ICON_LEFT, CUI_TEXT_FIELD_ID, CUI_TEXT_FIELD_IS_ERROR, CUI_TEXT_FIELD_PLACEHOLDER, CUI_TEXT_FIELD_SIZE, CUI_TEXT_FILED_CONTROLLER_PROVIDER, CUI_THEME, CUI_THEME_STORAGE_DEFAULT_KEY, CUI_THEME_STORAGE_KEY, CUI_TOOLTIP_COMPONENT, CUI_TOOLTIP_DEFAULT_OPTIONS, CUI_TOOLTIP_DIRECTIONS, CUI_TOOLTIP_OPTIONS, CUI_TOOLTIP_PROVIDERS, CuiAccordionComponent, CuiAccordionItemComponent, CuiAccordionModule, CuiAlertComponent, CuiAlertModule, CuiAlertService, CuiAlertsComponent, CuiBadgeComponent, CuiBadgeModule, CuiBannerComponent, CuiBannerModule, CuiBreadcrumbComponent, CuiBreadcrumbsComponent, CuiBreadcrumbsModule, CuiButtonComponent, CuiButtonGroupComponent, CuiButtonGroupModule, CuiButtonModule, CuiCheckboxComponent, CuiCheckboxModule, CuiContextMenuComponent, CuiContextMenuModule, CuiDialogActionsComponent, CuiDialogComponent, CuiDialogHeaderComponent, CuiDialogModule, CuiDialogService, CuiDialogsComponent, CuiDropdownDirective, CuiDropdownWrapperComponent, CuiFormFieldComponent, CuiFormFieldModule, CuiHintComponent, CuiHintModule, CuiIconButtonComponent, CuiIconButtonModule, CuiInputModule, CuiInputNumberComponent, CuiInputNumberModule, CuiInputPasswordComponent, CuiInputPasswordModule, CuiInputTextComponent, CuiInputTimeComponent, CuiInputTimeModule, CuiLabelComponent, CuiLabelModule, CuiLetterBoxComponent, CuiNotificationComponent, CuiNotificationModule, CuiPositionService, CuiRadioComponent, CuiRadioModule, CuiRootComponent, CuiRootModule, CuiSelectComponent, CuiSelectModule, CuiSvgComponent, CuiSvgModule, CuiTabComponent, CuiTabsComponent, CuiTabsModule, CuiTextFieldController, CuiTextFieldControllerModule, CuiTextFieldIconLeftDirective, CuiTextFieldIdDirective, CuiTextFieldIsErrorDirective, CuiTextFieldPlaceholderDirective, CuiTextFieldSizeDirective, CuiTextareaComponent, CuiTextareaModule, CuiThemeService, CuiToggleComponent, CuiToggleModule, CuiTooltip, CuiTooltipComponent, CuiTooltipDescribe, CuiTooltipDirective, CuiTooltipDriver, CuiTooltipHost, CuiTooltipHover, CuiTooltipManual, CuiTooltipOptionsDirective, CuiTooltipOverflow, CuiTooltipPointer, CuiTooltipPosition, CuiTooltipService, CuiTooltipUnstyled, CuiTooltipUnstyledComponent, CuiTooltips, CuiVisualViewportService, cuiGetDuration, cuiIsObscured, cuiOverrideOptions, cuiRemoveSpaces, cuiReplace, cuiToAnimationOptions, cuiTooltipOptionsProvider, cuiXNdjsonInterceptor };
3506
3692
  //# sourceMappingURL=cuby-ui-core.mjs.map