@cuby-ui/core 0.0.35 → 0.0.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/components/checkbox/checkbox.component.d.ts +5 -0
  2. package/components/checkbox/checkbox.module.d.ts +7 -0
  3. package/components/checkbox/index.d.ts +2 -0
  4. package/components/context-menu/context-menu.component.d.ts +8 -4
  5. package/components/index.d.ts +4 -0
  6. package/components/radio/index.d.ts +2 -0
  7. package/components/radio/radio.component.d.ts +5 -0
  8. package/components/radio/radio.module.d.ts +7 -0
  9. package/components/select/index.d.ts +2 -0
  10. package/components/select/select.component.d.ts +43 -0
  11. package/components/select/select.module.d.ts +10 -0
  12. package/components/toggle/index.d.ts +2 -0
  13. package/components/toggle/toggle.component.d.ts +5 -0
  14. package/components/toggle/toggle.module.d.ts +7 -0
  15. package/esm2020/components/checkbox/checkbox.component.mjs +11 -0
  16. package/esm2020/components/checkbox/checkbox.module.mjs +16 -0
  17. package/esm2020/components/checkbox/index.mjs +3 -0
  18. package/esm2020/components/context-menu/context-menu.component.mjs +23 -14
  19. package/esm2020/components/index.mjs +5 -1
  20. package/esm2020/components/radio/index.mjs +3 -0
  21. package/esm2020/components/radio/radio.component.mjs +11 -0
  22. package/esm2020/components/radio/radio.module.mjs +16 -0
  23. package/esm2020/components/select/index.mjs +3 -0
  24. package/esm2020/components/select/select.component.mjs +111 -0
  25. package/esm2020/components/select/select.module.mjs +29 -0
  26. package/esm2020/components/toggle/index.mjs +3 -0
  27. package/esm2020/components/toggle/toggle.component.mjs +11 -0
  28. package/esm2020/components/toggle/toggle.module.mjs +16 -0
  29. package/esm2020/interfaces/index.mjs +2 -1
  30. package/esm2020/interfaces/option.mjs +2 -0
  31. package/fesm2015/cuby-ui-core.mjs +215 -20
  32. package/fesm2015/cuby-ui-core.mjs.map +1 -1
  33. package/fesm2020/cuby-ui-core.mjs +215 -20
  34. package/fesm2020/cuby-ui-core.mjs.map +1 -1
  35. package/interfaces/index.d.ts +1 -0
  36. package/interfaces/option.d.ts +4 -0
  37. package/package.json +3 -3
@@ -0,0 +1,5 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class CuiCheckboxComponent {
3
+ static ɵfac: i0.ɵɵFactoryDeclaration<CuiCheckboxComponent, never>;
4
+ static ɵcmp: i0.ɵɵComponentDeclaration<CuiCheckboxComponent, "input[type=\"checkbox\"][cuiCheckbox]", never, {}, {}, never, never, false, never>;
5
+ }
@@ -0,0 +1,7 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./checkbox.component";
3
+ export declare class CuiCheckboxModule {
4
+ static ɵfac: i0.ɵɵFactoryDeclaration<CuiCheckboxModule, never>;
5
+ static ɵmod: i0.ɵɵNgModuleDeclaration<CuiCheckboxModule, [typeof i1.CuiCheckboxComponent], never, [typeof i1.CuiCheckboxComponent]>;
6
+ static ɵinj: i0.ɵɵInjectorDeclaration<CuiCheckboxModule>;
7
+ }
@@ -0,0 +1,2 @@
1
+ export * from './checkbox.component';
2
+ export * from './checkbox.module';
@@ -1,11 +1,14 @@
1
- import type { AfterViewInit, OnDestroy } from '@angular/core';
1
+ import type { OnInit, AfterViewInit, OnDestroy } from '@angular/core';
2
2
  import type { CuiContextMenuItem } from '../../interfaces';
3
3
  import * as i0 from "@angular/core";
4
- export declare class CuiContextMenuComponent implements AfterViewInit, OnDestroy {
4
+ import * as i1 from "@cuby-ui/cdk";
5
+ export declare class CuiContextMenuComponent implements OnInit, AfterViewInit, OnDestroy {
5
6
  private readonly changeDetectorRef;
6
7
  private readonly element;
7
8
  private readonly document;
8
9
  private readonly documentElement;
10
+ private readonly destroy$;
11
+ private readonly cuiClickOutsideDirective;
9
12
  protected readonly EXTRA_OFFSET_LEFT = 0;
10
13
  protected readonly EXTRA_OFFSET_TOP = 0;
11
14
  protected isVisible: boolean;
@@ -15,16 +18,17 @@ export declare class CuiContextMenuComponent implements AfterViewInit, OnDestroy
15
18
  isHidden: boolean;
16
19
  protected clientX?: number;
17
20
  protected clientY?: number;
21
+ ngOnInit(): void;
18
22
  ngAfterViewInit(): void;
19
23
  ngOnDestroy(): void;
20
24
  protected onSelect(item: CuiContextMenuItem): void;
21
- protected onClickOutside(target: HTMLElement): void;
22
25
  protected onClose(): void;
23
26
  protected onStopClickPropagation(event: MouseEvent): void;
24
27
  protected trackByFn(_: number, item: CuiContextMenuItem): string;
28
+ private initClickOutsideSubscription;
25
29
  private initTargetElementListener;
26
30
  private destroyTargetElementListener;
27
31
  private changePosition;
28
32
  static ɵfac: i0.ɵɵFactoryDeclaration<CuiContextMenuComponent, never>;
29
- static ɵcmp: i0.ɵɵComponentDeclaration<CuiContextMenuComponent, "cui-context-menu[items][target]", never, { "items": "items"; "target": "target"; }, {}, never, never, false, never>;
33
+ static ɵcmp: i0.ɵɵComponentDeclaration<CuiContextMenuComponent, "cui-context-menu[items][target]", never, { "items": "items"; "target": "target"; }, {}, never, never, false, [{ directive: typeof i1.CuiClickOutsideDirective; inputs: {}; outputs: {}; }]>;
30
34
  }
@@ -4,6 +4,7 @@ export * from './banner';
4
4
  export * from './breadcrumbs';
5
5
  export * from './button';
6
6
  export * from './button-group';
7
+ export * from './checkbox';
7
8
  export * from './context-menu';
8
9
  export * from './dialog';
9
10
  export * from './editor';
@@ -14,6 +15,9 @@ export * from './input-password';
14
15
  export * from './input-text';
15
16
  export * from './label';
16
17
  export * from './notification';
18
+ export * from './radio';
17
19
  export * from './root';
20
+ export * from './select';
18
21
  export * from './svg';
19
22
  export * from './textarea';
23
+ export * from './toggle';
@@ -0,0 +1,2 @@
1
+ export * from './radio.module';
2
+ export * from './radio.component';
@@ -0,0 +1,5 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class CuiRadioComponent {
3
+ static ɵfac: i0.ɵɵFactoryDeclaration<CuiRadioComponent, never>;
4
+ static ɵcmp: i0.ɵɵComponentDeclaration<CuiRadioComponent, "input[type=\"radio\"][cuiRadio]", never, {}, {}, never, never, false, never>;
5
+ }
@@ -0,0 +1,7 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./radio.component";
3
+ export declare class CuiRadioModule {
4
+ static ɵfac: i0.ɵɵFactoryDeclaration<CuiRadioModule, never>;
5
+ static ɵmod: i0.ɵɵNgModuleDeclaration<CuiRadioModule, [typeof i1.CuiRadioComponent], never, [typeof i1.CuiRadioComponent]>;
6
+ static ɵinj: i0.ɵɵInjectorDeclaration<CuiRadioModule>;
7
+ }
@@ -0,0 +1,2 @@
1
+ export * from './select.component';
2
+ export * from './select.module';
@@ -0,0 +1,43 @@
1
+ import type { OnInit } from '@angular/core';
2
+ import { ElementRef } from '@angular/core';
3
+ import { ControlValueAccessor } from '@angular/forms';
4
+ import type { CuiOnChange, CuiOnTouched, CuiNullable } from '@cuby-ui/cdk';
5
+ import type { CuiOption } from '../../interfaces';
6
+ import type { CuiSizeMd, CuiSizeSm } from '../../types';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@cuby-ui/cdk";
9
+ export declare class CuiSelectComponent implements ControlValueAccessor, OnInit {
10
+ private readonly element;
11
+ private readonly document;
12
+ private readonly changeDetectorRef;
13
+ private readonly destroy$;
14
+ private readonly cuiTextFieldController;
15
+ private readonly cuiClickOutsideDirective;
16
+ protected readonly SPACE_BETWEEN_BUTTON_AND_OPTIONS = 3;
17
+ protected isOpened: boolean;
18
+ protected isOptionsListAbove: boolean;
19
+ protected value: CuiNullable<unknown>;
20
+ protected onChange: CuiOnChange<unknown>;
21
+ protected onTouched: CuiOnTouched;
22
+ protected isDisabled: boolean;
23
+ protected selectedOption?: CuiOption;
24
+ options: CuiOption[];
25
+ protected getOptionsListHeightContainer: ElementRef<HTMLUListElement>;
26
+ protected gap: string;
27
+ protected get size(): CuiSizeSm | CuiSizeMd;
28
+ protected get placeholder(): string | undefined;
29
+ protected get isError(): boolean;
30
+ protected trackByFn(_: number, item: CuiOption): string;
31
+ writeValue(value: unknown): void;
32
+ registerOnChange(fn: CuiOnChange<unknown>): void;
33
+ registerOnTouched(fn: CuiOnTouched): void;
34
+ ngOnInit(): void;
35
+ setDisabledState(isDisabled: boolean): void;
36
+ protected onSelect(option: CuiOption): void;
37
+ protected onSwitch(): void;
38
+ private initClickOutsideSubscription;
39
+ private open;
40
+ private close;
41
+ static ɵfac: i0.ɵɵFactoryDeclaration<CuiSelectComponent, never>;
42
+ static ɵcmp: i0.ɵɵComponentDeclaration<CuiSelectComponent, "cui-select[options]", never, { "options": "options"; }, {}, never, never, false, [{ directive: typeof i1.CuiClickOutsideDirective; inputs: {}; outputs: {}; }]>;
43
+ }
@@ -0,0 +1,10 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./select.component";
3
+ import * as i2 from "@angular/common";
4
+ import * as i3 from "../svg/svg.module";
5
+ import * as i4 from "../../directives/text-field-controller/text-field-controller.module";
6
+ export declare class CuiSelectModule {
7
+ static ɵfac: i0.ɵɵFactoryDeclaration<CuiSelectModule, never>;
8
+ static ɵmod: i0.ɵɵNgModuleDeclaration<CuiSelectModule, [typeof i1.CuiSelectComponent], [typeof i2.CommonModule, typeof i3.CuiSvgModule], [typeof i1.CuiSelectComponent, typeof i4.CuiTextFieldControllerModule]>;
9
+ static ɵinj: i0.ɵɵInjectorDeclaration<CuiSelectModule>;
10
+ }
@@ -0,0 +1,2 @@
1
+ export * from './toggle.component';
2
+ export * from './toggle.module';
@@ -0,0 +1,5 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class CuiToggleComponent {
3
+ static ɵfac: i0.ɵɵFactoryDeclaration<CuiToggleComponent, never>;
4
+ static ɵcmp: i0.ɵɵComponentDeclaration<CuiToggleComponent, "input[type=\"checkbox\"][cuiToggle]", never, {}, {}, never, never, false, never>;
5
+ }
@@ -0,0 +1,7 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./toggle.component";
3
+ export declare class CuiToggleModule {
4
+ static ɵfac: i0.ɵɵFactoryDeclaration<CuiToggleModule, never>;
5
+ static ɵmod: i0.ɵɵNgModuleDeclaration<CuiToggleModule, [typeof i1.CuiToggleComponent], never, [typeof i1.CuiToggleComponent]>;
6
+ static ɵinj: i0.ɵɵInjectorDeclaration<CuiToggleModule>;
7
+ }
@@ -0,0 +1,11 @@
1
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class CuiCheckboxComponent {
4
+ }
5
+ CuiCheckboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiCheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6
+ CuiCheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: CuiCheckboxComponent, selector: "input[type=\"checkbox\"][cuiCheckbox]", ngImport: i0, template: '', isInline: true, styles: [":host{position:relative;width:16px;height:16px;border:1px solid var(--cui-base-200);border-radius:4px;outline:none;margin:0;appearance:none;cursor:pointer}:host:before{content:\"\";position:absolute;transform:translate(-50%,-50%);top:50%;left:50%;width:12px;height:12px;mask-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"><path d=\"M10 3L4.5 8.5L2 6\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>');background:none}:host:checked{border:none;background:var(--cui-info)}:host:checked:before{background:var(--cui-gray-0)}:host:focus{box-shadow:0 0 0 2px var(--cui-focus)}@media (hover: hover){:host:hover{border-color:var(--cui-base-400)}}:host:active{border-color:var(--cui-base-400);box-shadow:none}:host:disabled{cursor:not-allowed;border:1px solid var(--cui-base-200);background:var(--cui-base-100)}:host:disabled:checked:before{background:var(--cui-gray-500)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
7
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiCheckboxComponent, decorators: [{
8
+ type: Component,
9
+ args: [{ selector: 'input[type="checkbox"][cuiCheckbox]', template: '', changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{position:relative;width:16px;height:16px;border:1px solid var(--cui-base-200);border-radius:4px;outline:none;margin:0;appearance:none;cursor:pointer}:host:before{content:\"\";position:absolute;transform:translate(-50%,-50%);top:50%;left:50%;width:12px;height:12px;mask-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"><path d=\"M10 3L4.5 8.5L2 6\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>');background:none}:host:checked{border:none;background:var(--cui-info)}:host:checked:before{background:var(--cui-gray-0)}:host:focus{box-shadow:0 0 0 2px var(--cui-focus)}@media (hover: hover){:host:hover{border-color:var(--cui-base-400)}}:host:active{border-color:var(--cui-base-400);box-shadow:none}:host:disabled{cursor:not-allowed;border:1px solid var(--cui-base-200);background:var(--cui-base-100)}:host:disabled:checked:before{background:var(--cui-gray-500)}\n"] }]
10
+ }] });
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9jb21wb25lbnRzL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVFuRSxNQUFNLE9BQU8sb0JBQW9COztrSEFBcEIsb0JBQW9CO3NHQUFwQixvQkFBb0IsNkVBSnJCLEVBQUU7NEZBSUQsb0JBQW9CO2tCQU5oQyxTQUFTOytCQUNFLHFDQUFxQyxZQUNyQyxFQUFFLG1CQUVLLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lucHV0W3R5cGU9XCJjaGVja2JveFwiXVtjdWlDaGVja2JveF0nLFxuICB0ZW1wbGF0ZTogJycsXG4gIHN0eWxlVXJsczogWycuL2NoZWNrYm94LnN0eWxlLnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQ3VpQ2hlY2tib3hDb21wb25lbnQge1xufVxuIl19
@@ -0,0 +1,16 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CuiCheckboxComponent } from './checkbox.component';
3
+ import * as i0 from "@angular/core";
4
+ export class CuiCheckboxModule {
5
+ }
6
+ CuiCheckboxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiCheckboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
7
+ CuiCheckboxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: CuiCheckboxModule, declarations: [CuiCheckboxComponent], exports: [CuiCheckboxComponent] });
8
+ CuiCheckboxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiCheckboxModule });
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiCheckboxModule, decorators: [{
10
+ type: NgModule,
11
+ args: [{
12
+ declarations: [CuiCheckboxComponent],
13
+ exports: [CuiCheckboxComponent]
14
+ }]
15
+ }] });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9jb21wb25lbnRzL2NoZWNrYm94L2NoZWNrYm94Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQU01RCxNQUFNLE9BQU8saUJBQWlCOzsrR0FBakIsaUJBQWlCO2dIQUFqQixpQkFBaUIsaUJBSGIsb0JBQW9CLGFBQ3pCLG9CQUFvQjtnSEFFbkIsaUJBQWlCOzRGQUFqQixpQkFBaUI7a0JBSjdCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsb0JBQW9CLENBQUM7b0JBQ3BDLE9BQU8sRUFBRSxDQUFDLG9CQUFvQixDQUFDO2lCQUNoQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEN1aUNoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnLi9jaGVja2JveC5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtDdWlDaGVja2JveENvbXBvbmVudF0sXG4gIGV4cG9ydHM6IFtDdWlDaGVja2JveENvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgQ3VpQ2hlY2tib3hNb2R1bGUge1xufVxuIl19
@@ -0,0 +1,3 @@
1
+ export * from './checkbox.component';
2
+ export * from './checkbox.module';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvY2hlY2tib3gvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jaGVja2JveC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jaGVja2JveC5tb2R1bGUnOyJdfQ==
@@ -1,19 +1,27 @@
1
1
  import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, HostBinding, HostListener, inject, Input } from '@angular/core';
2
2
  import { DOCUMENT } from '@angular/common';
3
+ import { takeUntil } from 'rxjs';
4
+ import { CuiDestroyService, CuiClickOutsideDirective } from '@cuby-ui/cdk';
3
5
  import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
- import * as i2 from "../svg/svg.component";
6
+ import * as i1 from "@cuby-ui/cdk";
7
+ import * as i2 from "@angular/common";
8
+ import * as i3 from "../svg/svg.component";
6
9
  export class CuiContextMenuComponent {
7
10
  constructor() {
8
11
  this.changeDetectorRef = inject(ChangeDetectorRef);
9
12
  this.element = inject(ElementRef).nativeElement;
10
13
  this.document = inject(DOCUMENT);
11
14
  this.documentElement = this.document.documentElement;
15
+ this.destroy$ = inject(CuiDestroyService, { self: true });
16
+ this.cuiClickOutsideDirective = inject(CuiClickOutsideDirective, { self: true });
12
17
  this.EXTRA_OFFSET_LEFT = 0;
13
18
  this.EXTRA_OFFSET_TOP = 0;
14
19
  this.isVisible = false;
15
20
  this.isHidden = false;
16
21
  }
22
+ ngOnInit() {
23
+ this.initClickOutsideSubscription();
24
+ }
17
25
  ngAfterViewInit() {
18
26
  this.initTargetElementListener();
19
27
  }
@@ -24,12 +32,6 @@ export class CuiContextMenuComponent {
24
32
  this.isVisible = false;
25
33
  item.command?.();
26
34
  }
27
- onClickOutside(target) {
28
- if (this.element.contains(target) || this.target.contains(target)) {
29
- return;
30
- }
31
- this.isVisible = false;
32
- }
33
35
  onClose() {
34
36
  this.isVisible = false;
35
37
  }
@@ -39,6 +41,16 @@ export class CuiContextMenuComponent {
39
41
  trackByFn(_, item) {
40
42
  return item.label;
41
43
  }
44
+ initClickOutsideSubscription() {
45
+ this.cuiClickOutsideDirective.cuiClickOutside
46
+ .pipe(takeUntil(this.destroy$))
47
+ .subscribe((target) => {
48
+ if (this.target.contains(target)) {
49
+ return;
50
+ }
51
+ this.isVisible = false;
52
+ });
53
+ }
42
54
  initTargetElementListener() {
43
55
  this.targetEventListener = ({ clientX, clientY }) => {
44
56
  this.isVisible = !this.isVisible;
@@ -76,10 +88,10 @@ export class CuiContextMenuComponent {
76
88
  }
77
89
  }
78
90
  CuiContextMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiContextMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
79
- CuiContextMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: CuiContextMenuComponent, selector: "cui-context-menu[items][target]", inputs: { items: "items", target: "target" }, host: { listeners: { "document:click": "onClickOutside($event.target)", "window:scroll": "onClose()", "window:resize": "onClose()", "click": "onStopClickPropagation($event)" }, properties: { "class._hidden": "this.isHidden", "style.left.px": "this.clientX", "style.top.px": "this.clientY" } }, ngImport: i0, template: "<ul\n *ngIf=\"isVisible\"\n class=\"c-ul\"\n>\n <li\n *ngFor=\"let item of items; trackBy: trackByFn\"\n [style.color]=\"item.color\"\n >\n <button\n class=\"c-button\"\n (click)=\"onSelect(item)\"\n >\n <cui-svg\n *ngIf=\"item.icon\"\n [icon]=\"item.icon\"\n [color]=\"item.color\"\n ></cui-svg>\n <span>{{ item.label }}</span>\n </button>\n </li>\n</ul>\n", styles: [":host{position:fixed;z-index:2;display:block;width:268px;border-radius:8px}:host._hidden{visibility:hidden}.c-ul{padding:7px 0;margin:0;list-style:none;font-weight:400;font-size:14px;line-height:20px;box-shadow:0 1px 4px #0000000a,0 1px 4px #0000000a;border:1px solid var(--cui-base-200);border-radius:inherit;background:var(--cui-base-0);color:var(--cui-base-900);font-family:var(--cui-main-font)}.c-button{padding:8px 11px 8px 0;border:0;outline:none;cursor:pointer;appearance:none;color:inherit;font:inherit;background:inherit;text-decoration:none;-webkit-tap-highlight-color:transparent;padding:8px 11px;width:100%;display:flex;align-items:center;gap:12px}.c-button:active{background:var(--cui-base-50)}@media (hover: hover){.c-button:hover{background:var(--cui-base-50)}}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.CuiSvgComponent, selector: "cui-svg[icon]", inputs: ["width", "height", "strokeWidth", "color", "icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
91
+ CuiContextMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: CuiContextMenuComponent, selector: "cui-context-menu[items][target]", inputs: { items: "items", target: "target" }, host: { listeners: { "window:scroll": "onClose()", "window:resize": "onClose()", "click": "onStopClickPropagation($event)" }, properties: { "class._hidden": "this.isHidden", "style.left.px": "this.clientX", "style.top.px": "this.clientY" } }, providers: [CuiDestroyService], hostDirectives: [{ directive: i1.CuiClickOutsideDirective }], ngImport: i0, template: "<ul\n *ngIf=\"isVisible\"\n class=\"c-ul\"\n>\n <li\n *ngFor=\"let item of items; trackBy: trackByFn\"\n [style.color]=\"item.color\"\n >\n <button\n class=\"c-button\"\n (click)=\"onSelect(item)\"\n >\n <cui-svg\n *ngIf=\"item.icon\"\n [icon]=\"item.icon\"\n [color]=\"item.color\"\n ></cui-svg>\n <span>{{ item.label }}</span>\n </button>\n </li>\n</ul>\n", styles: [":host{position:fixed;z-index:2;display:block;width:268px;border-radius:8px}:host._hidden{visibility:hidden}.c-ul{padding:7px 0;margin:0;list-style:none;font-weight:400;font-size:14px;line-height:20px;box-shadow:0 1px 4px #0000000a,0 1px 4px #0000000a;border:1px solid var(--cui-base-200);border-radius:inherit;background:var(--cui-base-0);color:var(--cui-base-900);font-family:var(--cui-main-font)}.c-button{padding:8px 11px 8px 0;border:0;outline:none;cursor:pointer;appearance:none;color:inherit;font:inherit;background:inherit;text-decoration:none;-webkit-tap-highlight-color:transparent;padding:8px 11px;width:100%;display:flex;align-items:center;gap:12px}.c-button:active{background:var(--cui-base-50)}@media (hover: hover){.c-button:hover{background:var(--cui-base-50)}}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.CuiSvgComponent, selector: "cui-svg[icon]", inputs: ["width", "height", "strokeWidth", "color", "icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
80
92
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiContextMenuComponent, decorators: [{
81
93
  type: Component,
82
- args: [{ selector: 'cui-context-menu[items][target]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ul\n *ngIf=\"isVisible\"\n class=\"c-ul\"\n>\n <li\n *ngFor=\"let item of items; trackBy: trackByFn\"\n [style.color]=\"item.color\"\n >\n <button\n class=\"c-button\"\n (click)=\"onSelect(item)\"\n >\n <cui-svg\n *ngIf=\"item.icon\"\n [icon]=\"item.icon\"\n [color]=\"item.color\"\n ></cui-svg>\n <span>{{ item.label }}</span>\n </button>\n </li>\n</ul>\n", styles: [":host{position:fixed;z-index:2;display:block;width:268px;border-radius:8px}:host._hidden{visibility:hidden}.c-ul{padding:7px 0;margin:0;list-style:none;font-weight:400;font-size:14px;line-height:20px;box-shadow:0 1px 4px #0000000a,0 1px 4px #0000000a;border:1px solid var(--cui-base-200);border-radius:inherit;background:var(--cui-base-0);color:var(--cui-base-900);font-family:var(--cui-main-font)}.c-button{padding:8px 11px 8px 0;border:0;outline:none;cursor:pointer;appearance:none;color:inherit;font:inherit;background:inherit;text-decoration:none;-webkit-tap-highlight-color:transparent;padding:8px 11px;width:100%;display:flex;align-items:center;gap:12px}.c-button:active{background:var(--cui-base-50)}@media (hover: hover){.c-button:hover{background:var(--cui-base-50)}}\n"] }]
94
+ args: [{ selector: 'cui-context-menu[items][target]', changeDetection: ChangeDetectionStrategy.OnPush, providers: [CuiDestroyService], hostDirectives: [CuiClickOutsideDirective], template: "<ul\n *ngIf=\"isVisible\"\n class=\"c-ul\"\n>\n <li\n *ngFor=\"let item of items; trackBy: trackByFn\"\n [style.color]=\"item.color\"\n >\n <button\n class=\"c-button\"\n (click)=\"onSelect(item)\"\n >\n <cui-svg\n *ngIf=\"item.icon\"\n [icon]=\"item.icon\"\n [color]=\"item.color\"\n ></cui-svg>\n <span>{{ item.label }}</span>\n </button>\n </li>\n</ul>\n", styles: [":host{position:fixed;z-index:2;display:block;width:268px;border-radius:8px}:host._hidden{visibility:hidden}.c-ul{padding:7px 0;margin:0;list-style:none;font-weight:400;font-size:14px;line-height:20px;box-shadow:0 1px 4px #0000000a,0 1px 4px #0000000a;border:1px solid var(--cui-base-200);border-radius:inherit;background:var(--cui-base-0);color:var(--cui-base-900);font-family:var(--cui-main-font)}.c-button{padding:8px 11px 8px 0;border:0;outline:none;cursor:pointer;appearance:none;color:inherit;font:inherit;background:inherit;text-decoration:none;-webkit-tap-highlight-color:transparent;padding:8px 11px;width:100%;display:flex;align-items:center;gap:12px}.c-button:active{background:var(--cui-base-50)}@media (hover: hover){.c-button:hover{background:var(--cui-base-50)}}\n"] }]
83
95
  }], propDecorators: { items: [{
84
96
  type: Input
85
97
  }], target: [{
@@ -93,9 +105,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
93
105
  }], clientY: [{
94
106
  type: HostBinding,
95
107
  args: ['style.top.px']
96
- }], onClickOutside: [{
97
- type: HostListener,
98
- args: ['document:click', ['$event.target']]
99
108
  }], onClose: [{
100
109
  type: HostListener,
101
110
  args: ['window:scroll']
@@ -106,4 +115,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
106
115
  type: HostListener,
107
116
  args: ['click', ['$event']]
108
117
  }] } });
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9jb250ZXh0LW1lbnUvY29udGV4dC1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9jb250ZXh0LW1lbnUvY29udGV4dC1tZW51LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7OztBQVUzQyxNQUFNLE9BQU8sdUJBQXVCO0lBTnBDO1FBT21CLHNCQUFpQixHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzlDLFlBQU8sR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsYUFBYSxDQUFDO1FBQzNDLGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUIsb0JBQWUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQztRQUU5QyxzQkFBaUIsR0FBRyxDQUFDLENBQUM7UUFDdEIscUJBQWdCLEdBQUcsQ0FBQyxDQUFDO1FBRTlCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFVNUIsYUFBUSxHQUFZLEtBQUssQ0FBQztLQTRGM0I7SUFwRlEsZUFBZTtRQUNwQixJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRVMsUUFBUSxDQUFDLElBQXdCO1FBQ3pDLElBQUksQ0FBQyxT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ZXhDLEtBQUs7c0JBRFgsS0FBSztnQkFJQyxNQUFNO3NCQURaLEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxXQUFXO3VCQUFDLGVBQWU7Z0JBSWxCLE9BQU87c0JBRGhCLFdBQVc7dUJBQUMsZUFBZTtnQkFJbEIsT0FBTztzQkFEaEIsV0FBVzt1QkFBQyxjQUFjO2dCQWtCakIsY0FBYztzQkFEdkIsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLGVBQWUsQ0FBQztnQkFXdkMsT0FBTztzQkFGaEIsWUFBWTt1QkFBQyxlQUFlOztzQkFDNUIsWUFBWTt1QkFBQyxlQUFlO2dCQU1uQixzQkFBc0I7c0JBRC9CLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBpbmplY3QsXG4gIElucHV0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQgdHlwZSB7IEN1aUNvbnRleHRNZW51SXRlbSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjdWktY29udGV4dC1tZW51W2l0ZW1zXVt0YXJnZXRdJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbnRleHQtbWVudS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbnRleHQtbWVudS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBDdWlDb250ZXh0TWVudUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnQgPSBpbmplY3QoRWxlbWVudFJlZikubmF0aXZlRWxlbWVudDtcbiAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnRFbGVtZW50ID0gdGhpcy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IEVYVFJBX09GRlNFVF9MRUZUID0gMDtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IEVYVFJBX09GRlNFVF9UT1AgPSAwO1xuXG4gIHByb3RlY3RlZCBpc1Zpc2libGUgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIHRhcmdldEV2ZW50TGlzdGVuZXIhOiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHZvaWQ7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGl0ZW1zITogQ3VpQ29udGV4dE1lbnVJdGVtW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIHRhcmdldCE6IEhUTUxFbGVtZW50O1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuX2hpZGRlbicpXG4gIGlzSGlkZGVuOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5sZWZ0LnB4JylcbiAgcHJvdGVjdGVkIGNsaWVudFg/OiBudW1iZXI7XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS50b3AucHgnKVxuICBwcm90ZWN0ZWQgY2xpZW50WT86IG51bWJlcjtcblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdFRhcmdldEVsZW1lbnRMaXN0ZW5lcigpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveVRhcmdldEVsZW1lbnRMaXN0ZW5lcigpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uU2VsZWN0KGl0ZW06IEN1aUNvbnRleHRNZW51SXRlbSk6IHZvaWQge1xuICAgIHRoaXMuaXNWaXNpYmxlID0gZmFsc2U7XG5cbiAgICBpdGVtLmNvbW1hbmQ/LigpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudC50YXJnZXQnXSlcbiAgcHJvdGVjdGVkIG9uQ2xpY2tPdXRzaWRlKHRhcmdldDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5lbGVtZW50LmNvbnRhaW5zKHRhcmdldCkgfHwgdGhpcy50YXJnZXQuY29udGFpbnModGFyZ2V0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaXNWaXNpYmxlID0gZmFsc2U7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6c2Nyb2xsJylcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScpXG4gIHByb3RlY3RlZCBvbkNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuaXNWaXNpYmxlID0gZmFsc2U7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gIHByb3RlY3RlZCBvblN0b3BDbGlja1Byb3BhZ2F0aW9uKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0cmFja0J5Rm4oXzogbnVtYmVyLCBpdGVtOiBDdWlDb250ZXh0TWVudUl0ZW0pOiBzdHJpbmcge1xuICAgIHJldHVybiBpdGVtLmxhYmVsO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0VGFyZ2V0RWxlbWVudExpc3RlbmVyKCk6IHZvaWQge1xuICAgIHRoaXMudGFyZ2V0RXZlbnRMaXN0ZW5lciA9ICh7IGNsaWVudFgsIGNsaWVudFkgfSkgPT4ge1xuICAgICAgdGhpcy5pc1Zpc2libGUgPSAhdGhpcy5pc1Zpc2libGU7XG5cbiAgICAgIGlmICh0aGlzLmlzVmlzaWJsZSkge1xuICAgICAgICB0aGlzLmNoYW5nZVBvc2l0aW9uKGNsaWVudFgsIGNsaWVudFkpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH07XG5cbiAgICB0aGlzLnRhcmdldC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMudGFyZ2V0RXZlbnRMaXN0ZW5lcik7XG4gIH1cblxuICBwcml2YXRlIGRlc3Ryb3lUYXJnZXRFbGVtZW50TGlzdGVuZXIoKTogdm9pZCB7XG4gICAgdGhpcy50YXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLnRhcmdldEV2ZW50TGlzdGVuZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGFuZ2VQb3NpdGlvbih4OiBudW1iZXIsIHk6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuaXNIaWRkZW4gPSB0cnVlO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCB7IGNsaWVudFdpZHRoLCBjbGllbnRIZWlnaHQgfSA9IHRoaXMuZG9jdW1lbnRFbGVtZW50O1xuICAgICAgY29uc3Qgd2lkdGggPSB0aGlzLmVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICBjb25zdCBoZWlnaHQgPSB0aGlzLmVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuICAgICAgbGV0IGxlZnQgPSB4O1xuICAgICAgbGV0IHRvcCA9IHk7XG5cbiAgICAgIGlmIChsZWZ0ICsgd2lkdGggPiBjbGllbnRXaWR0aCkge1xuICAgICAgICBsZWZ0IC09IHdpZHRoO1xuICAgICAgfVxuXG4gICAgICBpZiAodG9wICsgaGVpZ2h0ID4gY2xpZW50SGVpZ2h0KSB7XG4gICAgICAgIHRvcCAtPSBoZWlnaHQ7XG4gICAgICB9XG5cbiAgICAgIGxlZnQgPSBNYXRoLm1heChsZWZ0LCB0aGlzLkVYVFJBX09GRlNFVF9MRUZUKTtcbiAgICAgIHRvcCA9IE1hdGgubWF4KHRvcCwgdGhpcy5FWFRSQV9PRkZTRVRfVE9QKTtcblxuICAgICAgdGhpcy5pc0hpZGRlbiA9IGZhbHNlO1xuICAgICAgdGhpcy5jbGllbnRYID0gbGVmdDtcbiAgICAgIHRoaXMuY2xpZW50WSA9IHRvcDtcblxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPHVsXG4gICpuZ0lmPVwiaXNWaXNpYmxlXCJcbiAgY2xhc3M9XCJjLXVsXCJcbj5cbiAgPGxpXG4gICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXM7IHRyYWNrQnk6IHRyYWNrQnlGblwiXG4gICAgW3N0eWxlLmNvbG9yXT1cIml0ZW0uY29sb3JcIlxuICA+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJjLWJ1dHRvblwiXG4gICAgICAoY2xpY2spPVwib25TZWxlY3QoaXRlbSlcIlxuICAgID5cbiAgICAgIDxjdWktc3ZnXG4gICAgICAgICpuZ0lmPVwiaXRlbS5pY29uXCJcbiAgICAgICAgW2ljb25dPVwiaXRlbS5pY29uXCJcbiAgICAgICAgW2NvbG9yXT1cIml0ZW0uY29sb3JcIlxuICAgICAgPjwvY3VpLXN2Zz5cbiAgICAgIDxzcGFuPnt7IGl0ZW0ubGFiZWwgfX08L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIDwvbGk+XG48L3VsPlxuIl19
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9jb250ZXh0LW1lbnUvY29udGV4dC1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9jb250ZXh0LW1lbnUvY29udGV4dC1tZW51LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWpDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7QUFZM0UsTUFBTSxPQUFPLHVCQUF1QjtJQVJwQztRQVNtQixzQkFBaUIsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUM5QyxZQUFPLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLGFBQWEsQ0FBQztRQUMzQyxhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLG9CQUFlLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUM7UUFDaEQsYUFBUSxHQUFJLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELDZCQUF3QixHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRTFFLHNCQUFpQixHQUFH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QUFDLGlCQUFpQixDQUFDLENBQUM7WUFDOUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBRTNDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO1lBRW5CLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN4QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O3FIQXZIVSx1QkFBdUI7eUdBQXZCLHVCQUF1QiwyVkFIdkIsQ0FBQyxpQkFBaUIsQ0FBQyx3RkN2QmhDLHlhQXFCQTs0RkRLYSx1QkFBdUI7a0JBUm5DLFNBQVM7K0JBQ0UsaUNBQWlDLG1CQUcxQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDLENBQUMsaUJBQWlCLENBQUMsa0JBQ2QsQ0FBQyx3QkFBd0IsQ0FBQzs4QkFpQm5DLEtBQUs7c0JBRFgsS0FBSztnQkFJQyxNQUFNO3NCQURaLEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxXQUFXO3VCQUFDLGVBQWU7Z0JBSWxCLE9BQU87c0JBRGhCLFdBQVc7dUJBQUMsZUFBZTtnQkFJbEIsT0FBTztzQkFEaEIsV0FBVzt1QkFBQyxjQUFjO2dCQXVCakIsT0FBTztzQkFGaEIsWUFBWTt1QkFBQyxlQUFlOztzQkFDNUIsWUFBWTt1QkFBQyxlQUFlO2dCQU1uQixzQkFBc0I7c0JBRC9CLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIGluamVjdCxcbiAgSW5wdXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQ3VpRGVzdHJveVNlcnZpY2UsIEN1aUNsaWNrT3V0c2lkZURpcmVjdGl2ZSB9IGZyb20gJ0BjdWJ5LXVpL2Nkayc7XG5cbmltcG9ydCB0eXBlIHsgQ3VpQ29udGV4dE1lbnVJdGVtIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2N1aS1jb250ZXh0LW1lbnVbaXRlbXNdW3RhcmdldF0nLFxuICB0ZW1wbGF0ZVVybDogJy4vY29udGV4dC1tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29udGV4dC1tZW51LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtDdWlEZXN0cm95U2VydmljZV0sXG4gIGhvc3REaXJlY3RpdmVzOiBbQ3VpQ2xpY2tPdXRzaWRlRGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBDdWlDb250ZXh0TWVudUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBjaGFuZ2VEZXRlY3RvclJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudCA9IGluamVjdChFbGVtZW50UmVmKS5uYXRpdmVFbGVtZW50O1xuICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcbiAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudEVsZW1lbnQgPSB0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9ICBpbmplY3QoQ3VpRGVzdHJveVNlcnZpY2UsIHsgc2VsZjogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBjdWlDbGlja091dHNpZGVEaXJlY3RpdmUgPSBpbmplY3QoQ3VpQ2xpY2tPdXRzaWRlRGlyZWN0aXZlLCB7IHNlbGY6IHRydWUgfSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IEVYVFJBX09GRlNFVF9MRUZUID0gMDtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IEVYVFJBX09GRlNFVF9UT1AgPSAwO1xuXG4gIHByb3RlY3RlZCBpc1Zpc2libGUgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIHRhcmdldEV2ZW50TGlzdGVuZXIhOiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHZvaWQ7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGl0ZW1zITogQ3VpQ29udGV4dE1lbnVJdGVtW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIHRhcmdldCE6IEhUTUxFbGVtZW50O1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuX2hpZGRlbicpXG4gIGlzSGlkZGVuOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5sZWZ0LnB4JylcbiAgcHJvdGVjdGVkIGNsaWVudFg/OiBudW1iZXI7XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS50b3AucHgnKVxuICBwcm90ZWN0ZWQgY2xpZW50WT86IG51bWJlcjtcblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0Q2xpY2tPdXRzaWRlU3Vic2NyaXB0aW9uKCk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdFRhcmdldEVsZW1lbnRMaXN0ZW5lcigpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveVRhcmdldEVsZW1lbnRMaXN0ZW5lcigpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uU2VsZWN0KGl0ZW06IEN1aUNvbnRleHRNZW51SXRlbSk6IHZvaWQge1xuICAgIHRoaXMuaXNWaXNpYmxlID0gZmFsc2U7XG5cbiAgICBpdGVtLmNvbW1hbmQ/LigpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnNjcm9sbCcpXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnKVxuICBwcm90ZWN0ZWQgb25DbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLmlzVmlzaWJsZSA9IGZhbHNlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICBwcm90ZWN0ZWQgb25TdG9wQ2xpY2tQcm9wYWdhdGlvbihldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdHJhY2tCeUZuKF86IG51bWJlciwgaXRlbTogQ3VpQ29udGV4dE1lbnVJdGVtKTogc3RyaW5nIHtcbiAgICByZXR1cm4gaXRlbS5sYWJlbDtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdENsaWNrT3V0c2lkZVN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLmN1aUNsaWNrT3V0c2lkZURpcmVjdGl2ZS5jdWlDbGlja091dHNpZGVcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKHRhcmdldCkgPT4ge1xuICAgICAgICBpZiAodGhpcy50YXJnZXQuY29udGFpbnModGFyZ2V0KSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaXNWaXNpYmxlID0gZmFsc2U7XG4gICAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0VGFyZ2V0RWxlbWVudExpc3RlbmVyKCk6IHZvaWQge1xuICAgIHRoaXMudGFyZ2V0RXZlbnRMaXN0ZW5lciA9ICh7IGNsaWVudFgsIGNsaWVudFkgfSkgPT4ge1xuICAgICAgdGhpcy5pc1Zpc2libGUgPSAhdGhpcy5pc1Zpc2libGU7XG5cbiAgICAgIGlmICh0aGlzLmlzVmlzaWJsZSkge1xuICAgICAgICB0aGlzLmNoYW5nZVBvc2l0aW9uKGNsaWVudFgsIGNsaWVudFkpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH07XG5cbiAgICB0aGlzLnRhcmdldC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMudGFyZ2V0RXZlbnRMaXN0ZW5lcik7XG4gIH1cblxuICBwcml2YXRlIGRlc3Ryb3lUYXJnZXRFbGVtZW50TGlzdGVuZXIoKTogdm9pZCB7XG4gICAgdGhpcy50YXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLnRhcmdldEV2ZW50TGlzdGVuZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGFuZ2VQb3NpdGlvbih4OiBudW1iZXIsIHk6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuaXNIaWRkZW4gPSB0cnVlO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCB7IGNsaWVudFdpZHRoLCBjbGllbnRIZWlnaHQgfSA9IHRoaXMuZG9jdW1lbnRFbGVtZW50O1xuICAgICAgY29uc3Qgd2lkdGggPSB0aGlzLmVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICBjb25zdCBoZWlnaHQgPSB0aGlzLmVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuICAgICAgbGV0IGxlZnQgPSB4O1xuICAgICAgbGV0IHRvcCA9IHk7XG5cbiAgICAgIGlmIChsZWZ0ICsgd2lkdGggPiBjbGllbnRXaWR0aCkge1xuICAgICAgICBsZWZ0IC09IHdpZHRoO1xuICAgICAgfVxuXG4gICAgICBpZiAodG9wICsgaGVpZ2h0ID4gY2xpZW50SGVpZ2h0KSB7XG4gICAgICAgIHRvcCAtPSBoZWlnaHQ7XG4gICAgICB9XG5cbiAgICAgIGxlZnQgPSBNYXRoLm1heChsZWZ0LCB0aGlzLkVYVFJBX09GRlNFVF9MRUZUKTtcbiAgICAgIHRvcCA9IE1hdGgubWF4KHRvcCwgdGhpcy5FWFRSQV9PRkZTRVRfVE9QKTtcblxuICAgICAgdGhpcy5pc0hpZGRlbiA9IGZhbHNlO1xuICAgICAgdGhpcy5jbGllbnRYID0gbGVmdDtcbiAgICAgIHRoaXMuY2xpZW50WSA9IHRvcDtcblxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPHVsXG4gICpuZ0lmPVwiaXNWaXNpYmxlXCJcbiAgY2xhc3M9XCJjLXVsXCJcbj5cbiAgPGxpXG4gICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXM7IHRyYWNrQnk6IHRyYWNrQnlGblwiXG4gICAgW3N0eWxlLmNvbG9yXT1cIml0ZW0uY29sb3JcIlxuICA+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJjLWJ1dHRvblwiXG4gICAgICAoY2xpY2spPVwib25TZWxlY3QoaXRlbSlcIlxuICAgID5cbiAgICAgIDxjdWktc3ZnXG4gICAgICAgICpuZ0lmPVwiaXRlbS5pY29uXCJcbiAgICAgICAgW2ljb25dPVwiaXRlbS5pY29uXCJcbiAgICAgICAgW2NvbG9yXT1cIml0ZW0uY29sb3JcIlxuICAgICAgPjwvY3VpLXN2Zz5cbiAgICAgIDxzcGFuPnt7IGl0ZW0ubGFiZWwgfX08L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIDwvbGk+XG48L3VsPlxuIl19
@@ -4,6 +4,7 @@ export * from './banner';
4
4
  export * from './breadcrumbs';
5
5
  export * from './button';
6
6
  export * from './button-group';
7
+ export * from './checkbox';
7
8
  export * from './context-menu';
8
9
  export * from './dialog';
9
10
  export * from './editor';
@@ -14,7 +15,10 @@ export * from './input-password';
14
15
  export * from './input-text';
15
16
  export * from './label';
16
17
  export * from './notification';
18
+ export * from './radio';
17
19
  export * from './root';
20
+ export * from './select';
18
21
  export * from './svg';
19
22
  export * from './textarea';
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsT0FBTyxDQUFDO0FBQ3RCLGNBQWMsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hY2NvcmRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9hbGVydCc7XG5leHBvcnQgKiBmcm9tICcuL2Jhbm5lcic7XG5leHBvcnQgKiBmcm9tICcuL2JyZWFkY3J1bWJzJztcbmV4cG9ydCAqIGZyb20gJy4vYnV0dG9uJztcbmV4cG9ydCAqIGZyb20gJy4vYnV0dG9uLWdyb3VwJztcbmV4cG9ydCAqIGZyb20gJy4vY29udGV4dC1tZW51JztcbmV4cG9ydCAqIGZyb20gJy4vZGlhbG9nJztcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vaGludCc7XG5leHBvcnQgKiBmcm9tICcuL2ljb24tYnV0dG9uJztcbmV4cG9ydCAqIGZyb20gJy4vaW5wdXQtbnVtYmVyJztcbmV4cG9ydCAqIGZyb20gJy4vaW5wdXQtcGFzc3dvcmQnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnB1dC10ZXh0JztcbmV4cG9ydCAqIGZyb20gJy4vbGFiZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9ub3RpZmljYXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9yb290JztcbmV4cG9ydCAqIGZyb20gJy4vc3ZnJztcbmV4cG9ydCAqIGZyb20gJy4vdGV4dGFyZWEnO1xuIl19
23
+ export * from './toggle';
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsT0FBTyxDQUFDO0FBQ3RCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hY2NvcmRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9hbGVydCc7XG5leHBvcnQgKiBmcm9tICcuL2Jhbm5lcic7XG5leHBvcnQgKiBmcm9tICcuL2JyZWFkY3J1bWJzJztcbmV4cG9ydCAqIGZyb20gJy4vYnV0dG9uJztcbmV4cG9ydCAqIGZyb20gJy4vYnV0dG9uLWdyb3VwJztcbmV4cG9ydCAqIGZyb20gJy4vY2hlY2tib3gnO1xuZXhwb3J0ICogZnJvbSAnLi9jb250ZXh0LW1lbnUnO1xuZXhwb3J0ICogZnJvbSAnLi9kaWFsb2cnO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9oaW50JztcbmV4cG9ydCAqIGZyb20gJy4vaWNvbi1idXR0b24nO1xuZXhwb3J0ICogZnJvbSAnLi9pbnB1dC1udW1iZXInO1xuZXhwb3J0ICogZnJvbSAnLi9pbnB1dC1wYXNzd29yZCc7XG5leHBvcnQgKiBmcm9tICcuL2lucHV0LXRleHQnO1xuZXhwb3J0ICogZnJvbSAnLi9sYWJlbCc7XG5leHBvcnQgKiBmcm9tICcuL25vdGlmaWNhdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL3JhZGlvJztcbmV4cG9ydCAqIGZyb20gJy4vcm9vdCc7XG5leHBvcnQgKiBmcm9tICcuL3NlbGVjdCc7XG5leHBvcnQgKiBmcm9tICcuL3N2Zyc7XG5leHBvcnQgKiBmcm9tICcuL3RleHRhcmVhJztcbmV4cG9ydCAqIGZyb20gJy4vdG9nZ2xlJztcbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export * from './radio.module';
2
+ export * from './radio.component';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvcmFkaW8vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9yYWRpby5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9yYWRpby5jb21wb25lbnQnO1xuIl19
@@ -0,0 +1,11 @@
1
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class CuiRadioComponent {
4
+ }
5
+ CuiRadioComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiRadioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6
+ CuiRadioComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: CuiRadioComponent, selector: "input[type=\"radio\"][cuiRadio]", ngImport: i0, template: '', isInline: true, styles: [":host{position:relative;width:16px;height:16px;outline:none;margin:0;appearance:none;border:1px solid var(--cui-base-200);border-radius:50%;cursor:pointer}:host:before{content:\"\";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:10px;height:10px;border-radius:50%}:host:focus{box-shadow:0 0 0 2px var(--cui-focus)}@media (hover: hover){:host:hover{border-color:var(--cui-base-400)}}:host:active{border-color:var(--cui-base-400);box-shadow:none}:host:checked{border:2px solid var(--cui-info)}:host:checked:before{background:var(--cui-info)}:host:disabled{cursor:not-allowed;border:1px solid var(--cui-base-200);background:var(--cui-base-100)}:host:disabled:checked{border-width:2px}:host:disabled:checked:before{background:var(--cui-base-200)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
7
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiRadioComponent, decorators: [{
8
+ type: Component,
9
+ args: [{ selector: 'input[type="radio"][cuiRadio]', template: '', changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{position:relative;width:16px;height:16px;outline:none;margin:0;appearance:none;border:1px solid var(--cui-base-200);border-radius:50%;cursor:pointer}:host:before{content:\"\";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:10px;height:10px;border-radius:50%}:host:focus{box-shadow:0 0 0 2px var(--cui-focus)}@media (hover: hover){:host:hover{border-color:var(--cui-base-400)}}:host:active{border-color:var(--cui-base-400);box-shadow:none}:host:checked{border:2px solid var(--cui-info)}:host:checked:before{background:var(--cui-info)}:host:disabled{cursor:not-allowed;border:1px solid var(--cui-base-200);background:var(--cui-base-100)}:host:disabled:checked{border-width:2px}:host:disabled:checked:before{background:var(--cui-base-200)}\n"] }]
10
+ }] });
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9jb21wb25lbnRzL3JhZGlvL3JhZGlvLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVFuRSxNQUFNLE9BQU8saUJBQWlCOzsrR0FBakIsaUJBQWlCO21HQUFqQixpQkFBaUIsdUVBSmxCLEVBQUU7NEZBSUQsaUJBQWlCO2tCQU43QixTQUFTOytCQUNFLCtCQUErQixZQUMvQixFQUFFLG1CQUVLLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lucHV0W3R5cGU9XCJyYWRpb1wiXVtjdWlSYWRpb10nLFxuICB0ZW1wbGF0ZTogJycsXG4gIHN0eWxlVXJsczogWycuL3JhZGlvLnN0eWxlLnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQ3VpUmFkaW9Db21wb25lbnQge1xufVxuIl19
@@ -0,0 +1,16 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CuiRadioComponent } from './radio.component';
3
+ import * as i0 from "@angular/core";
4
+ export class CuiRadioModule {
5
+ }
6
+ CuiRadioModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiRadioModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
7
+ CuiRadioModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: CuiRadioModule, declarations: [CuiRadioComponent], exports: [CuiRadioComponent] });
8
+ CuiRadioModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiRadioModule });
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiRadioModule, decorators: [{
10
+ type: NgModule,
11
+ args: [{
12
+ declarations: [CuiRadioComponent],
13
+ exports: [CuiRadioComponent]
14
+ }]
15
+ }] });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9jb21wb25lbnRzL3JhZGlvL3JhZGlvLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQU10RCxNQUFNLE9BQU8sY0FBYzs7NEdBQWQsY0FBYzs2R0FBZCxjQUFjLGlCQUhWLGlCQUFpQixhQUN0QixpQkFBaUI7NkdBRWhCLGNBQWM7NEZBQWQsY0FBYztrQkFKMUIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztvQkFDakMsT0FBTyxFQUFFLENBQUMsaUJBQWlCLENBQUM7aUJBQzdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ3VpUmFkaW9Db21wb25lbnQgfSBmcm9tICcuL3JhZGlvLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW0N1aVJhZGlvQ29tcG9uZW50XSxcbiAgZXhwb3J0czogW0N1aVJhZGlvQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBDdWlSYWRpb01vZHVsZSB7XG59XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export * from './select.component';
2
+ export * from './select.module';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvc2VsZWN0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc2VsZWN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3NlbGVjdC5tb2R1bGUnO1xuIl19
@@ -0,0 +1,111 @@
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, Input, ElementRef, ViewChild, HostBinding } from '@angular/core';
2
+ import { DOCUMENT } from '@angular/common';
3
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
4
+ import { CuiDestroyService } from '@cuby-ui/cdk';
5
+ import { cuiProvide, CuiClickOutsideDirective } from '@cuby-ui/cdk';
6
+ import { takeUntil } from 'rxjs';
7
+ import { CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FILED_CONTROLLER_PROVIDER } from '../../directives';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@cuby-ui/cdk";
10
+ import * as i2 from "@angular/common";
11
+ import * as i3 from "../svg/svg.component";
12
+ export class CuiSelectComponent {
13
+ constructor() {
14
+ this.element = inject(ElementRef).nativeElement;
15
+ this.document = inject(DOCUMENT);
16
+ this.changeDetectorRef = inject(ChangeDetectorRef);
17
+ this.destroy$ = inject(CuiDestroyService, { self: true });
18
+ this.cuiTextFieldController = inject(CUI_TEXT_FIELD_CONTROLLER);
19
+ this.cuiClickOutsideDirective = inject(CuiClickOutsideDirective, { self: true });
20
+ this.SPACE_BETWEEN_BUTTON_AND_OPTIONS = 3;
21
+ this.isOpened = false;
22
+ this.isOptionsListAbove = false;
23
+ this.gap = `${this.SPACE_BETWEEN_BUTTON_AND_OPTIONS}px`;
24
+ }
25
+ get size() {
26
+ return this.cuiTextFieldController.size;
27
+ }
28
+ get placeholder() {
29
+ return this.cuiTextFieldController.placeholder;
30
+ }
31
+ get isError() {
32
+ return this.cuiTextFieldController.isError;
33
+ }
34
+ trackByFn(_, item) {
35
+ return item.label;
36
+ }
37
+ writeValue(value) {
38
+ this.value = value;
39
+ this.changeDetectorRef.markForCheck();
40
+ }
41
+ registerOnChange(fn) {
42
+ this.onChange = fn;
43
+ }
44
+ registerOnTouched(fn) {
45
+ this.onTouched = fn;
46
+ }
47
+ ngOnInit() {
48
+ this.initClickOutsideSubscription();
49
+ }
50
+ setDisabledState(isDisabled) {
51
+ this.isDisabled = isDisabled;
52
+ this.changeDetectorRef.markForCheck();
53
+ }
54
+ onSelect(option) {
55
+ this.value = option.value;
56
+ this.selectedOption = option;
57
+ this.onChange(this.value);
58
+ this.onSwitch();
59
+ this.onTouched();
60
+ }
61
+ onSwitch() {
62
+ if (!this.isOpened) {
63
+ this.open();
64
+ return;
65
+ }
66
+ this.close();
67
+ }
68
+ initClickOutsideSubscription() {
69
+ this.cuiClickOutsideDirective.cuiClickOutside
70
+ .pipe(takeUntil(this.destroy$))
71
+ .subscribe(() => {
72
+ if (this.isOpened) {
73
+ this.onTouched();
74
+ }
75
+ this.close();
76
+ });
77
+ }
78
+ open() {
79
+ this.isOpened = true;
80
+ const { bottom: elementRectBottom } = this.element.getBoundingClientRect();
81
+ const distanceToBottom = this.document.documentElement.clientHeight
82
+ - (elementRectBottom + this.SPACE_BETWEEN_BUTTON_AND_OPTIONS);
83
+ this.isOptionsListAbove = distanceToBottom < this.getOptionsListHeightContainer.nativeElement.offsetHeight;
84
+ }
85
+ close() {
86
+ this.isOpened = false;
87
+ }
88
+ }
89
+ CuiSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
90
+ CuiSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: CuiSelectComponent, selector: "cui-select[options]", inputs: { options: "options" }, host: { properties: { "style.--c-gap": "this.gap" } }, providers: [
91
+ CUI_TEXT_FILED_CONTROLLER_PROVIDER,
92
+ cuiProvide(NG_VALUE_ACCESSOR, CuiSelectComponent, true),
93
+ CuiDestroyService
94
+ ], viewQueries: [{ propertyName: "getOptionsListHeightContainer", first: true, predicate: ["getOptionsListHeightContainer"], descendants: true }], hostDirectives: [{ directive: i1.CuiClickOutsideDirective }], ngImport: i0, template: "<button\n [attr.data-size]=\"size\"\n class=\"c-button\"\n [class.c-button_with-error]=\"isError\"\n [disabled]=\"isDisabled\"\n (click)=\"onSwitch()\"\n>\n <ng-container *ngIf=\"selectedOption; else placeholderTemplate\">\n {{ selectedOption.label }}\n </ng-container>\n <ng-template #placeholderTemplate>\n <span class=\"c-placeholder\">{{ placeholder }}</span>\n </ng-template>\n <cui-svg\n icon=\"cuiIconChevronDown\"\n color=\"var(--cui-base-500)\"\n />\n</button>\n<div\n *ngIf=\"isOpened\"\n class=\"c-options__wrapper\"\n [class.c-options__wrapper_top]=\"isOptionsListAbove\"\n>\n <ng-container *ngTemplateOutlet=\"optionsList\"/>\n</div>\n<div\n #getOptionsListHeightContainer\n class=\"c-get-options-list-height-container\"\n>\n <ng-container *ngTemplateOutlet=\"optionsList\"/>\n</div>\n<ng-template #optionsList>\n <ul\n class=\"c-options\"\n [class.c-options_top]=\"isOptionsListAbove\"\n >\n <li *ngFor=\"let option of options; trackBy: trackByFn\">\n <button\n class=\"c-option-button\"\n [class.c-option-button_selected]=\"selectedOption === option\"\n (click)=\"onSelect(option)\"\n >\n <span>{{ option.label }}</span>\n <cui-svg\n *ngIf=\"selectedOption === option\"\n icon=\"cuiIconCheckSm\"\n color=\"var(--cui-info)\"\n class=\"c-option-button__icon\"\n />\n </button>\n </li>\n </ul>\n</ng-template>\n", styles: [":host{position:relative;z-index:1;display:block;font-family:var(--cui-main-font)}.c-button{border:0;outline:none;appearance:none;color:inherit;font:inherit;background:inherit;text-decoration:none;-webkit-tap-highlight-color:transparent;padding:0 13px;font-weight:400;font-size:14px;line-height:20px;display:flex;justify-content:space-between;align-items:center;gap:8px;width:100%;border:1px solid var(--cui-base-200);border-radius:8px;cursor:pointer;background:var(--cui-base-10);color:var(--cui-base-900);font-family:var(--cui-main-font)}.c-button:hover{border-color:var(--cui-base-300)}.c-button:focus{box-shadow:0 0 0 2px var(--cui-focus);border-color:var(--cui-info)}.c-button:disabled{cursor:not-allowed;opacity:.5;background:var(--cui-base-50);border-color:var(--cui-base-200)}.c-button[data-size=sm]{padding-top:7px;padding-bottom:7px}.c-button[data-size=md]{padding-top:8px;padding-bottom:8px}.c-button_with-error{border-color:var(--cui-danger)}.c-button_with-error:focus{box-shadow:0 0 0 2px #d92d2040;border-color:var(--cui-danger)}.c-placeholder{color:var(--cui-base-400)}.c-options__wrapper{position:absolute;top:calc(100% + var(--c-gap));width:100%}.c-options__wrapper_top{top:unset;bottom:calc(100% + var(--c-gap))}.c-get-options-list-height-container{position:fixed;visibility:hidden}.c-options{padding:7px 0;margin:0;list-style:none;font-weight:400;font-size:14px;line-height:20px;box-shadow:0 1px 4px #0000000a,0 1px 4px #0000000a;border:1px solid var(--cui-base-200);border-radius:8px;background:var(--cui-base-0);color:var(--cui-base-900)}.c-option-button{padding:8px 11px 8px 0;border:0;outline:none;cursor:pointer;appearance:none;color:inherit;font:inherit;background:inherit;text-decoration:none;-webkit-tap-highlight-color:transparent;padding:8px 11px;width:100%;display:flex;align-items:center;gap:12px}.c-option-button:active{background:var(--cui-base-50)}@media (hover: hover){.c-option-button:hover{background:var(--cui-base-50)}}.c-option-button_selected{background:var(--cui-base-50)}.c-option-button__icon{margin-left:auto}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.CuiSvgComponent, selector: "cui-svg[icon]", inputs: ["width", "height", "strokeWidth", "color", "icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
95
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiSelectComponent, decorators: [{
96
+ type: Component,
97
+ args: [{ selector: 'cui-select[options]', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
98
+ CUI_TEXT_FILED_CONTROLLER_PROVIDER,
99
+ cuiProvide(NG_VALUE_ACCESSOR, CuiSelectComponent, true),
100
+ CuiDestroyService
101
+ ], hostDirectives: [CuiClickOutsideDirective], template: "<button\n [attr.data-size]=\"size\"\n class=\"c-button\"\n [class.c-button_with-error]=\"isError\"\n [disabled]=\"isDisabled\"\n (click)=\"onSwitch()\"\n>\n <ng-container *ngIf=\"selectedOption; else placeholderTemplate\">\n {{ selectedOption.label }}\n </ng-container>\n <ng-template #placeholderTemplate>\n <span class=\"c-placeholder\">{{ placeholder }}</span>\n </ng-template>\n <cui-svg\n icon=\"cuiIconChevronDown\"\n color=\"var(--cui-base-500)\"\n />\n</button>\n<div\n *ngIf=\"isOpened\"\n class=\"c-options__wrapper\"\n [class.c-options__wrapper_top]=\"isOptionsListAbove\"\n>\n <ng-container *ngTemplateOutlet=\"optionsList\"/>\n</div>\n<div\n #getOptionsListHeightContainer\n class=\"c-get-options-list-height-container\"\n>\n <ng-container *ngTemplateOutlet=\"optionsList\"/>\n</div>\n<ng-template #optionsList>\n <ul\n class=\"c-options\"\n [class.c-options_top]=\"isOptionsListAbove\"\n >\n <li *ngFor=\"let option of options; trackBy: trackByFn\">\n <button\n class=\"c-option-button\"\n [class.c-option-button_selected]=\"selectedOption === option\"\n (click)=\"onSelect(option)\"\n >\n <span>{{ option.label }}</span>\n <cui-svg\n *ngIf=\"selectedOption === option\"\n icon=\"cuiIconCheckSm\"\n color=\"var(--cui-info)\"\n class=\"c-option-button__icon\"\n />\n </button>\n </li>\n </ul>\n</ng-template>\n", styles: [":host{position:relative;z-index:1;display:block;font-family:var(--cui-main-font)}.c-button{border:0;outline:none;appearance:none;color:inherit;font:inherit;background:inherit;text-decoration:none;-webkit-tap-highlight-color:transparent;padding:0 13px;font-weight:400;font-size:14px;line-height:20px;display:flex;justify-content:space-between;align-items:center;gap:8px;width:100%;border:1px solid var(--cui-base-200);border-radius:8px;cursor:pointer;background:var(--cui-base-10);color:var(--cui-base-900);font-family:var(--cui-main-font)}.c-button:hover{border-color:var(--cui-base-300)}.c-button:focus{box-shadow:0 0 0 2px var(--cui-focus);border-color:var(--cui-info)}.c-button:disabled{cursor:not-allowed;opacity:.5;background:var(--cui-base-50);border-color:var(--cui-base-200)}.c-button[data-size=sm]{padding-top:7px;padding-bottom:7px}.c-button[data-size=md]{padding-top:8px;padding-bottom:8px}.c-button_with-error{border-color:var(--cui-danger)}.c-button_with-error:focus{box-shadow:0 0 0 2px #d92d2040;border-color:var(--cui-danger)}.c-placeholder{color:var(--cui-base-400)}.c-options__wrapper{position:absolute;top:calc(100% + var(--c-gap));width:100%}.c-options__wrapper_top{top:unset;bottom:calc(100% + var(--c-gap))}.c-get-options-list-height-container{position:fixed;visibility:hidden}.c-options{padding:7px 0;margin:0;list-style:none;font-weight:400;font-size:14px;line-height:20px;box-shadow:0 1px 4px #0000000a,0 1px 4px #0000000a;border:1px solid var(--cui-base-200);border-radius:8px;background:var(--cui-base-0);color:var(--cui-base-900)}.c-option-button{padding:8px 11px 8px 0;border:0;outline:none;cursor:pointer;appearance:none;color:inherit;font:inherit;background:inherit;text-decoration:none;-webkit-tap-highlight-color:transparent;padding:8px 11px;width:100%;display:flex;align-items:center;gap:12px}.c-option-button:active{background:var(--cui-base-50)}@media (hover: hover){.c-option-button:hover{background:var(--cui-base-50)}}.c-option-button_selected{background:var(--cui-base-50)}.c-option-button__icon{margin-left:auto}\n"] }]
102
+ }], propDecorators: { options: [{
103
+ type: Input
104
+ }], getOptionsListHeightContainer: [{
105
+ type: ViewChild,
106
+ args: ['getOptionsListHeightContainer']
107
+ }], gap: [{
108
+ type: HostBinding,
109
+ args: ['style.--c-gap']
110
+ }] } });
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9zZWxlY3Qvc2VsZWN0LnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBQ0wsVUFBVSxFQUNWLFNBQVMsRUFDVCxXQUFXLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSWpDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7OztBQWNqRyxNQUFNLE9BQU8sa0JBQWtCO0lBWi9CO1FBYW1CLFlBQU8sR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsYUFBYSxDQUFDO1FBQzNDLGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUIsc0JBQWlCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDOUMsYUFBUSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELDJCQUFzQixHQUFHLE1BQU0sQ0FB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QWdCLEdBQUcsSUFBSSxDQUFDLDZCQUE2QixDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUM7SUFDN0csQ0FBQztJQUVPLEtBQUs7UUFDWCxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDOztnSEE5R1Usa0JBQWtCO29HQUFsQixrQkFBa0IscUlBUGxCO1FBQ1Qsa0NBQWtDO1FBQ2xDLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxJQUFJLENBQUM7UUFDdkQsaUJBQWlCO0tBQ2xCLHdPQy9CSCx1N0NBcURBOzRGRG5CYSxrQkFBa0I7a0JBWjlCLFNBQVM7K0JBQ0UscUJBQXFCLG1CQUdkLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1Qsa0NBQWtDO3dCQUNsQyxVQUFVLENBQUMsaUJBQWlCLHNCQUFzQixJQUFJLENBQUM7d0JBQ3ZELGlCQUFpQjtxQkFDbEIsa0JBQ2UsQ0FBQyx3QkFBd0IsQ0FBQzs4QkFxQm5DLE9BQU87c0JBRGIsS0FBSztnQkFJSSw2QkFBNkI7c0JBRHRDLFNBQVM7dUJBQUMsK0JBQStCO2dCQUloQyxHQUFHO3NCQURaLFdBQVc7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgaW5qZWN0LFxuICBJbnB1dCxcbiAgRWxlbWVudFJlZixcbiAgVmlld0NoaWxkLFxuICBIb3N0QmluZGluZ1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB0eXBlIHsgQ3VpT25DaGFuZ2UsIEN1aU9uVG91Y2hlZCwgQ3VpTnVsbGFibGUgfSBmcm9tICdAY3VieS11aS9jZGsnO1xuaW1wb3J0IHsgQ3VpRGVzdHJveVNlcnZpY2UgfSBmcm9tICdAY3VieS11aS9jZGsnO1xuaW1wb3J0IHsgY3VpUHJvdmlkZSwgQ3VpQ2xpY2tPdXRzaWRlRGlyZWN0aXZlIH0gZnJvbSAnQGN1YnktdWkvY2RrJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgdHlwZSB7IEN1aU9wdGlvbiB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHR5cGUgeyBDdWlTaXplTWQsIEN1aVNpemVTbSB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IENVSV9URVhUX0ZJRUxEX0NPTlRST0xMRVIsIENVSV9URVhUX0ZJTEVEX0NPTlRST0xMRVJfUFJPVklERVIgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3VpLXNlbGVjdFtvcHRpb25zXScsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3QudGVtcGxhdGUuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlbGVjdC5zdHlsZS5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICBDVUlfVEVYVF9GSUxFRF9DT05UUk9MTEVSX1BST1ZJREVSLFxuICAgIGN1aVByb3ZpZGUoTkdfVkFMVUVfQUNDRVNTT1IsIEN1aVNlbGVjdENvbXBvbmVudCwgdHJ1ZSksXG4gICAgQ3VpRGVzdHJveVNlcnZpY2VcbiAgXSxcbiAgaG9zdERpcmVjdGl2ZXM6IFtDdWlDbGlja091dHNpZGVEaXJlY3RpdmVdXG59KVxuZXhwb3J0IGNsYXNzIEN1aVNlbGVjdENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQge1xuICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnQgPSBpbmplY3QoRWxlbWVudFJlZikubmF0aXZlRWxlbWVudDtcbiAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gaW5qZWN0KEN1aURlc3Ryb3lTZXJ2aWNlLCB7IHNlbGY6IHRydWUgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY3VpVGV4dEZpZWxkQ29udHJvbGxlciA9IGluamVjdChDVUlfVEVYVF9GSUVMRF9DT05UUk9MTEVSKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjdWlDbGlja091dHNpZGVEaXJlY3RpdmUgPSBpbmplY3QoQ3VpQ2xpY2tPdXRzaWRlRGlyZWN0aXZlLCB7IHNlbGY6IHRydWUgfSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IFNQQUNFX0JFVFdFRU5fQlVUVE9OX0FORF9PUFRJT05TID0gMztcblxuICBwcm90ZWN0ZWQgaXNPcGVuZWQgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIGlzT3B0aW9uc0xpc3RBYm92ZSA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgdmFsdWUhOiBDdWlOdWxsYWJsZTx1bmtub3duPjtcbiAgcHJvdGVjdGVkIG9uQ2hhbmdlITogQ3VpT25DaGFuZ2U8dW5rbm93bj47XG4gIHByb3RlY3RlZCBvblRvdWNoZWQhOiBDdWlPblRvdWNoZWQ7XG4gIHByb3RlY3RlZCBpc0Rpc2FibGVkITogYm9vbGVhbjtcbiAgcHJvdGVjdGVkIHNlbGVjdGVkT3B0aW9uPzogQ3VpT3B0aW9uO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBvcHRpb25zITogQ3VpT3B0aW9uW107XG5cbiAgQFZpZXdDaGlsZCgnZ2V0T3B0aW9uc0xpc3RIZWlnaHRDb250YWluZXInKVxuICBwcm90ZWN0ZWQgZ2V0T3B0aW9uc0xpc3RIZWlnaHRDb250YWluZXIhOiBFbGVtZW50UmVmPEhUTUxVTGlzdEVsZW1lbnQ+O1xuXG4gIEBIb3N0QmluZGluZygnc3R5bGUuLS1jLWdhcCcpXG4gIHByb3RlY3RlZCBnYXAgPSBgJHt0aGlzLlNQQUNFX0JFVFdFRU5fQlVUVE9OX0FORF9PUFRJT05TfXB4YDtcblxuICBwcm90ZWN0ZWQgZ2V0IHNpemUoKTogQ3VpU2l6ZVNtIHwgQ3VpU2l6ZU1kIHtcbiAgICByZXR1cm4gdGhpcy5jdWlUZXh0RmllbGRDb250cm9sbGVyLnNpemU7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHBsYWNlaG9sZGVyKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuY3VpVGV4dEZpZWxkQ29udHJvbGxlci5wbGFjZWhvbGRlcjtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgaXNFcnJvcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jdWlUZXh0RmllbGRDb250cm9sbGVyLmlzRXJyb3I7XG4gIH1cblxuICBwcm90ZWN0ZWQgdHJhY2tCeUZuKF86IG51bWJlciwgaXRlbTogQ3VpT3B0aW9uKTogc3RyaW5nIHtcbiAgICByZXR1cm4gaXRlbS5sYWJlbDtcbiAgfVxuXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiB1bmtub3duKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBDdWlPbkNoYW5nZTx1bmtub3duPik6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogQ3VpT25Ub3VjaGVkKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRDbGlja091dHNpZGVTdWJzY3JpcHRpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmlzRGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvblNlbGVjdChvcHRpb246IEN1aU9wdGlvbik6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSBvcHRpb24udmFsdWU7XG4gICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA9IG9wdGlvbjtcblxuICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgdGhpcy5vblN3aXRjaCgpO1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25Td2l0Y2goKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzT3BlbmVkKSB7XG4gICAgICB0aGlzLm9wZW4oKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdENsaWNrT3V0c2lkZVN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLmN1aUNsaWNrT3V0c2lkZURpcmVjdGl2ZS5jdWlDbGlja091dHNpZGVcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5pc09wZW5lZCkge1xuICAgICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlbigpOiB2b2lkIHtcbiAgICB0aGlzLmlzT3BlbmVkID0gdHJ1ZTtcblxuICAgIGNvbnN0IHsgYm90dG9tOiBlbGVtZW50UmVjdEJvdHRvbSB9ID0gdGhpcy5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IGRpc3RhbmNlVG9Cb3R0b20gPSB0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHRcbiAgICAgIC0gKGVsZW1lbnRSZWN0Qm90dG9tICsgdGhpcy5TUEFDRV9CRVRXRUVOX0JVVFRPTl9BTkRfT1BUSU9OUyk7XG5cbiAgICB0aGlzLmlzT3B0aW9uc0xpc3RBYm92ZSA9IGRpc3RhbmNlVG9Cb3R0b20gPCB0aGlzLmdldE9wdGlvbnNMaXN0SGVpZ2h0Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLmlzT3BlbmVkID0gZmFsc2U7XG4gIH1cbn1cbiIsIjxidXR0b25cbiAgW2F0dHIuZGF0YS1zaXplXT1cInNpemVcIlxuICBjbGFzcz1cImMtYnV0dG9uXCJcbiAgW2NsYXNzLmMtYnV0dG9uX3dpdGgtZXJyb3JdPVwiaXNFcnJvclwiXG4gIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCJcbiAgKGNsaWNrKT1cIm9uU3dpdGNoKClcIlxuPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRPcHRpb247IGVsc2UgcGxhY2Vob2xkZXJUZW1wbGF0ZVwiPlxuICAgIHt7IHNlbGVjdGVkT3B0aW9uLmxhYmVsIH19XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctdGVtcGxhdGUgI3BsYWNlaG9sZGVyVGVtcGxhdGU+XG4gICAgPHNwYW4gY2xhc3M9XCJjLXBsYWNlaG9sZGVyXCI+e3sgcGxhY2Vob2xkZXIgfX08L3NwYW4+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxjdWktc3ZnXG4gICAgaWNvbj1cImN1aUljb25DaGV2cm9uRG93blwiXG4gICAgY29sb3I9XCJ2YXIoLS1jdWktYmFzZS01MDApXCJcbiAgLz5cbjwvYnV0dG9uPlxuPGRpdlxuICAqbmdJZj1cImlzT3BlbmVkXCJcbiAgY2xhc3M9XCJjLW9wdGlvbnNfX3dyYXBwZXJcIlxuICBbY2xhc3MuYy1vcHRpb25zX193cmFwcGVyX3RvcF09XCJpc09wdGlvbnNMaXN0QWJvdmVcIlxuPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwib3B0aW9uc0xpc3RcIi8+XG48L2Rpdj5cbjxkaXZcbiAgI2dldE9wdGlvbnNMaXN0SGVpZ2h0Q29udGFpbmVyXG4gIGNsYXNzPVwiYy1nZXQtb3B0aW9ucy1saXN0LWhlaWdodC1jb250YWluZXJcIlxuPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwib3B0aW9uc0xpc3RcIi8+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjb3B0aW9uc0xpc3Q+XG4gIDx1bFxuICAgIGNsYXNzPVwiYy1vcHRpb25zXCJcbiAgICBbY2xhc3MuYy1vcHRpb25zX3RvcF09XCJpc09wdGlvbnNMaXN0QWJvdmVcIlxuICA+XG4gICAgPGxpICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3B0aW9uczsgdHJhY2tCeTogdHJhY2tCeUZuXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYy1vcHRpb24tYnV0dG9uXCJcbiAgICAgICAgW2NsYXNzLmMtb3B0aW9uLWJ1dHRvbl9zZWxlY3RlZF09XCJzZWxlY3RlZE9wdGlvbiA9PT0gb3B0aW9uXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0KG9wdGlvbilcIlxuICAgICAgPlxuICAgICAgICA8c3Bhbj57eyBvcHRpb24ubGFiZWwgfX08L3NwYW4+XG4gICAgICAgIDxjdWktc3ZnXG4gICAgICAgICAgKm5nSWY9XCJzZWxlY3RlZE9wdGlvbiA9PT0gb3B0aW9uXCJcbiAgICAgICAgICBpY29uPVwiY3VpSWNvbkNoZWNrU21cIlxuICAgICAgICAgIGNvbG9yPVwidmFyKC0tY3VpLWluZm8pXCJcbiAgICAgICAgICBjbGFzcz1cImMtb3B0aW9uLWJ1dHRvbl9faWNvblwiXG4gICAgICAgIC8+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2xpPlxuICA8L3VsPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==