@cuby-ui/core 0.0.130 → 0.0.132
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -24
- package/components/accordion/accordion-item/accordion-item.component.d.ts +11 -11
- package/components/accordion/accordion.component.d.ts +5 -5
- package/components/accordion/accordion.module.d.ts +11 -11
- package/components/accordion/index.d.ts +3 -3
- package/components/alert/alert.component.d.ts +13 -13
- package/components/alert/alert.interfaces.d.ts +9 -9
- package/components/alert/alert.module.d.ts +11 -11
- package/components/alert/alert.service.d.ts +7 -7
- package/components/alert/alert.tokens.d.ts +15 -15
- package/components/alert/alert.types.d.ts +3 -3
- package/components/alert/alerts.component.d.ts +17 -17
- package/components/alert/index.d.ts +8 -8
- package/components/badge/badge.component.d.ts +10 -10
- package/components/badge/badge.module.d.ts +8 -8
- package/components/badge/badge.options.d.ts +8 -8
- package/components/badge/index.d.ts +2 -2
- package/components/banner/banner.component.d.ts +21 -21
- package/components/banner/banner.module.d.ts +11 -11
- package/components/banner/banner.options.d.ts +13 -13
- package/components/banner/index.d.ts +3 -3
- package/components/breadcrumbs/breadcrumb/breadcrumb.component.d.ts +6 -6
- package/components/breadcrumbs/breadcrumbs.component.d.ts +7 -7
- package/components/breadcrumbs/breadcrumbs.module.d.ts +10 -10
- package/components/breadcrumbs/index.d.ts +3 -3
- package/components/button/button.component.d.ts +30 -30
- package/components/button/button.module.d.ts +9 -9
- package/components/button/button.options.d.ts +9 -9
- package/components/button/index.d.ts +3 -3
- package/components/button-group/button-group.component.d.ts +5 -5
- package/components/button-group/button-group.module.d.ts +7 -7
- package/components/button-group/index.d.ts +2 -2
- package/components/checkbox/checkbox.component.d.ts +5 -5
- package/components/checkbox/checkbox.module.d.ts +7 -7
- package/components/checkbox/index.d.ts +2 -2
- package/components/context-menu/context-menu.component.d.ts +39 -39
- package/components/context-menu/context-menu.module.d.ts +9 -9
- package/components/context-menu/index.d.ts +2 -2
- package/components/dialog/dialog-actions/dialog-actions.component.d.ts +5 -5
- package/components/dialog/dialog-header/dialog-header.component.d.ts +13 -13
- package/components/dialog/dialog.component.d.ts +37 -37
- package/components/dialog/dialog.interfaces.d.ts +10 -10
- package/components/dialog/dialog.module.d.ts +14 -14
- package/components/dialog/dialog.service.d.ts +7 -7
- package/components/dialog/dialog.tokens.d.ts +8 -8
- package/components/dialog/dialogs.component.d.ts +17 -17
- package/components/dialog/index.d.ts +8 -8
- package/components/form-field/form-field.component.d.ts +5 -5
- package/components/form-field/form-field.module.d.ts +7 -7
- package/components/form-field/index.d.ts +2 -2
- package/components/hint/hint.component.d.ts +7 -7
- package/components/hint/hint.module.d.ts +7 -7
- package/components/hint/index.d.ts +2 -2
- package/components/icon-button/icon-button.component.d.ts +13 -13
- package/components/icon-button/icon-button.module.d.ts +9 -9
- package/components/icon-button/index.d.ts +2 -2
- package/components/index.d.ts +25 -25
- package/components/input-number/index.d.ts +2 -2
- package/components/input-number/input-number.component.d.ts +55 -55
- package/components/input-number/input-number.module.d.ts +11 -11
- package/components/input-number/input-number.options.d.ts +9 -9
- package/components/input-password/index.d.ts +2 -2
- package/components/input-password/input-password.component.d.ts +31 -31
- package/components/input-password/input-password.module.d.ts +11 -11
- package/components/input-text/index.d.ts +2 -2
- package/components/input-text/input-text.component.d.ts +31 -31
- package/components/input-text/input-text.module.d.ts +11 -11
- package/components/label/index.d.ts +2 -2
- package/components/label/label.component.d.ts +6 -6
- package/components/label/label.module.d.ts +8 -8
- package/components/notification/index.d.ts +3 -3
- package/components/notification/notification.component.d.ts +13 -13
- package/components/notification/notification.module.d.ts +10 -10
- package/components/notification/notification.options.d.ts +13 -13
- package/components/radio/index.d.ts +2 -2
- package/components/radio/radio.component.d.ts +5 -5
- package/components/radio/radio.module.d.ts +7 -7
- package/components/root/index.d.ts +3 -3
- package/components/root/root.component.d.ts +11 -11
- package/components/root/root.module.d.ts +10 -10
- package/components/root/root.options.d.ts +1 -1
- package/components/select/index.d.ts +2 -2
- package/components/select/select.component.d.ts +52 -52
- package/components/select/select.module.d.ts +10 -10
- package/components/svg/index.d.ts +2 -2
- package/components/svg/svg.component.d.ts +16 -16
- package/components/svg/svg.module.d.ts +8 -8
- package/components/tabs/index.d.ts +3 -3
- package/components/tabs/tab/index.d.ts +1 -1
- package/components/tabs/tab/tab.component.d.ts +8 -8
- package/components/tabs/tabs.component.d.ts +16 -16
- package/components/tabs/tabs.module.d.ts +8 -8
- package/components/textarea/index.d.ts +2 -2
- package/components/textarea/textarea.component.d.ts +10 -10
- package/components/textarea/textarea.module.d.ts +7 -7
- package/components/toggle/index.d.ts +2 -2
- package/components/toggle/toggle.component.d.ts +5 -5
- package/components/toggle/toggle.module.d.ts +7 -7
- package/directives/index.d.ts +1 -1
- package/directives/text-field-controller/index.d.ts +8 -8
- package/directives/text-field-controller/text-field-controller.module.d.ts +11 -11
- package/directives/text-field-controller/text-field-controller.provider.d.ts +4 -4
- package/directives/text-field-controller/text-field-icon-left.directive.d.ts +9 -9
- package/directives/text-field-controller/text-field-id.directive.d.ts +8 -8
- package/directives/text-field-controller/text-field-is-error.directive.d.ts +8 -8
- package/directives/text-field-controller/text-field-placeholder.directive.d.ts +8 -8
- package/directives/text-field-controller/text-field-size.directive.d.ts +9 -9
- package/directives/text-field-controller/text-field.controller.d.ts +20 -20
- package/esm2020/components/accordion/accordion-item/accordion-item.component.mjs +28 -28
- package/esm2020/components/accordion/accordion.component.mjs +11 -11
- package/esm2020/components/accordion/accordion.module.mjs +37 -37
- package/esm2020/components/accordion/index.mjs +4 -4
- package/esm2020/components/alert/alert.component.mjs +37 -37
- package/esm2020/components/alert/alert.interfaces.mjs +2 -2
- package/esm2020/components/alert/alert.module.mjs +40 -40
- package/esm2020/components/alert/alert.service.mjs +17 -17
- package/esm2020/components/alert/alert.tokens.mjs +19 -19
- package/esm2020/components/alert/alert.types.mjs +2 -2
- package/esm2020/components/alert/alerts.component.mjs +36 -36
- package/esm2020/components/alert/index.mjs +9 -9
- package/esm2020/components/badge/badge.component.mjs +31 -31
- package/esm2020/components/badge/badge.module.mjs +18 -18
- package/esm2020/components/badge/badge.options.mjs +8 -8
- package/esm2020/components/badge/index.mjs +3 -3
- package/esm2020/components/banner/banner.component.mjs +68 -68
- package/esm2020/components/banner/banner.module.mjs +31 -31
- package/esm2020/components/banner/banner.options.mjs +6 -6
- package/esm2020/components/banner/index.mjs +4 -4
- package/esm2020/components/breadcrumbs/breadcrumb/breadcrumb.component.mjs +16 -16
- package/esm2020/components/breadcrumbs/breadcrumbs.component.mjs +17 -17
- package/esm2020/components/breadcrumbs/breadcrumbs.module.mjs +33 -33
- package/esm2020/components/breadcrumbs/index.mjs +4 -4
- package/esm2020/components/button/button.component.mjs +104 -104
- package/esm2020/components/button/button.module.mjs +24 -24
- package/esm2020/components/button/button.options.mjs +10 -10
- package/esm2020/components/button/index.mjs +4 -4
- package/esm2020/components/button-group/button-group.component.mjs +11 -11
- package/esm2020/components/button-group/button-group.module.mjs +16 -16
- package/esm2020/components/button-group/index.mjs +3 -3
- package/esm2020/components/checkbox/checkbox.component.mjs +11 -11
- package/esm2020/components/checkbox/checkbox.module.mjs +16 -16
- package/esm2020/components/checkbox/index.mjs +3 -3
- package/esm2020/components/context-menu/context-menu.component.mjs +146 -146
- package/esm2020/components/context-menu/context-menu.module.mjs +24 -24
- package/esm2020/components/context-menu/index.mjs +3 -3
- package/esm2020/components/dialog/dialog-actions/dialog-actions.component.mjs +11 -11
- package/esm2020/components/dialog/dialog-header/dialog-header.component.mjs +28 -28
- package/esm2020/components/dialog/dialog.component.mjs +76 -76
- package/esm2020/components/dialog/dialog.interfaces.mjs +2 -2
- package/esm2020/components/dialog/dialog.module.mjs +50 -50
- package/esm2020/components/dialog/dialog.service.mjs +17 -17
- package/esm2020/components/dialog/dialog.tokens.mjs +11 -11
- package/esm2020/components/dialog/dialogs.component.mjs +48 -48
- package/esm2020/components/dialog/index.mjs +9 -9
- package/esm2020/components/form-field/form-field.component.mjs +11 -11
- package/esm2020/components/form-field/form-field.module.mjs +16 -16
- package/esm2020/components/form-field/index.mjs +3 -3
- package/esm2020/components/hint/hint.component.mjs +19 -19
- package/esm2020/components/hint/hint.module.mjs +16 -16
- package/esm2020/components/hint/index.mjs +3 -3
- package/esm2020/components/icon-button/icon-button.component.mjs +32 -32
- package/esm2020/components/icon-button/icon-button.module.mjs +24 -24
- package/esm2020/components/icon-button/index.mjs +3 -3
- package/esm2020/components/index.mjs +26 -26
- package/esm2020/components/input-number/index.mjs +3 -3
- package/esm2020/components/input-number/input-number.component.mjs +204 -204
- package/esm2020/components/input-number/input-number.module.mjs +33 -33
- package/esm2020/components/input-number/input-number.options.mjs +11 -11
- package/esm2020/components/input-password/index.mjs +3 -3
- package/esm2020/components/input-password/input-password.component.mjs +89 -89
- package/esm2020/components/input-password/input-password.module.mjs +33 -33
- package/esm2020/components/input-text/index.mjs +3 -3
- package/esm2020/components/input-text/input-text.component.mjs +87 -87
- package/esm2020/components/input-text/input-text.module.mjs +33 -33
- package/esm2020/components/label/index.mjs +3 -3
- package/esm2020/components/label/label.component.mjs +17 -17
- package/esm2020/components/label/label.module.mjs +18 -18
- package/esm2020/components/notification/index.mjs +4 -4
- package/esm2020/components/notification/notification.component.mjs +51 -51
- package/esm2020/components/notification/notification.module.mjs +27 -27
- package/esm2020/components/notification/notification.options.mjs +6 -6
- package/esm2020/components/radio/index.mjs +3 -3
- package/esm2020/components/radio/radio.component.mjs +11 -11
- package/esm2020/components/radio/radio.module.mjs +16 -16
- package/esm2020/components/root/index.mjs +4 -4
- package/esm2020/components/root/root.component.mjs +31 -31
- package/esm2020/components/root/root.module.mjs +28 -28
- package/esm2020/components/root/root.options.mjs +1 -1
- package/esm2020/components/select/index.mjs +3 -3
- package/esm2020/components/select/select.component.mjs +165 -165
- package/esm2020/components/select/select.module.mjs +29 -29
- package/esm2020/components/svg/index.mjs +3 -3
- package/esm2020/components/svg/svg.component.mjs +50 -50
- package/esm2020/components/svg/svg.module.mjs +18 -18
- package/esm2020/components/tabs/index.mjs +4 -4
- package/esm2020/components/tabs/tab/index.mjs +1 -1
- package/esm2020/components/tabs/tab/tab.component.mjs +21 -21
- package/esm2020/components/tabs/tabs.component.mjs +49 -49
- package/esm2020/components/tabs/tabs.module.mjs +18 -18
- package/esm2020/components/textarea/index.mjs +3 -3
- package/esm2020/components/textarea/textarea.component.mjs +35 -35
- package/esm2020/components/textarea/textarea.module.mjs +16 -16
- package/esm2020/components/toggle/index.mjs +3 -3
- package/esm2020/components/toggle/toggle.component.mjs +11 -11
- package/esm2020/components/toggle/toggle.module.mjs +16 -16
- package/esm2020/cuby-ui-core.mjs +4 -4
- package/esm2020/directives/index.mjs +2 -2
- package/esm2020/directives/text-field-controller/index.mjs +9 -9
- package/esm2020/directives/text-field-controller/text-field-controller.module.mjs +40 -40
- package/esm2020/directives/text-field-controller/text-field-controller.provider.mjs +24 -24
- package/esm2020/directives/text-field-controller/text-field-icon-left.directive.mjs +21 -21
- package/esm2020/directives/text-field-controller/text-field-id.directive.mjs +21 -21
- package/esm2020/directives/text-field-controller/text-field-is-error.directive.mjs +24 -24
- package/esm2020/directives/text-field-controller/text-field-placeholder.directive.mjs +21 -21
- package/esm2020/directives/text-field-controller/text-field-size.directive.mjs +24 -24
- package/esm2020/directives/text-field-controller/text-field.controller.mjs +25 -25
- package/esm2020/index.mjs +7 -7
- package/esm2020/interfaces/context-menu-item.mjs +2 -2
- package/esm2020/interfaces/index.mjs +3 -3
- package/esm2020/interfaces/option.mjs +2 -2
- package/esm2020/services/index.mjs +3 -3
- package/esm2020/services/theme.options.mjs +6 -6
- package/esm2020/services/theme.service.mjs +30 -30
- package/esm2020/types/appearance.mjs +2 -2
- package/esm2020/types/hint-type.mjs +2 -2
- package/esm2020/types/index.mjs +8 -8
- package/esm2020/types/position.mjs +2 -2
- package/esm2020/types/resizing.mjs +2 -2
- package/esm2020/types/shape.mjs +2 -2
- package/esm2020/types/size.mjs +2 -2
- package/esm2020/types/status.mjs +2 -2
- package/esm2020/utils/format/index.mjs +3 -3
- package/esm2020/utils/format/remove-spaces.mjs +4 -4
- package/esm2020/utils/format/replace.mjs +5 -5
- package/esm2020/utils/index.mjs +2 -2
- package/fesm2015/cuby-ui-core.mjs +2050 -2050
- package/fesm2015/cuby-ui-core.mjs.map +1 -1
- package/fesm2020/cuby-ui-core.mjs +2049 -2049
- package/fesm2020/cuby-ui-core.mjs.map +1 -1
- package/fonts/Inter-Bold.svg +25443 -25443
- package/fonts/Inter-Medium.svg +25400 -25400
- package/fonts/Inter-Regular.svg +24341 -24341
- package/fonts/Inter-SemiBold.svg +25459 -25459
- package/index.d.ts +6 -6
- package/interfaces/context-menu-item.d.ts +7 -7
- package/interfaces/index.d.ts +2 -2
- package/interfaces/option.d.ts +5 -5
- package/package.json +3 -3
- package/services/index.d.ts +2 -2
- package/services/theme.options.d.ts +5 -5
- package/services/theme.service.d.ts +12 -12
- package/styles/fonts.scss +51 -51
- package/styles/global.scss +9 -9
- package/styles/mixins/buttons.scss +13 -13
- package/styles/mixins/headings.scss +115 -115
- package/styles/mixins/inputs.scss +91 -91
- package/styles/mixins/lists.scss +5 -5
- package/styles/mixins/paddings.scss +35 -35
- package/styles/mixins/shadows.scss +38 -38
- package/styles/mixins/texts.scss +225 -225
- package/styles/theme.scss +351 -351
- package/styles/variables/colors.scss +240 -240
- package/types/appearance.d.ts +8 -8
- package/types/hint-type.d.ts +1 -1
- package/types/index.d.ts +7 -7
- package/types/position.d.ts +2 -2
- package/types/resizing.d.ts +2 -2
- package/types/shape.d.ts +1 -1
- package/types/size.d.ts +4 -4
- package/types/status.d.ts +1 -1
- package/utils/format/index.d.ts +2 -2
- package/utils/format/remove-spaces.d.ts +1 -1
- package/utils/format/replace.d.ts +1 -1
- package/utils/index.d.ts +1 -1
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { CuiRootComponent } from './root.component';
|
|
4
|
-
import { CuiDialogModule } from '../dialog';
|
|
5
|
-
import { CuiAlertModule } from '../alert';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
export class CuiRootModule {
|
|
8
|
-
}
|
|
9
|
-
CuiRootModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiRootModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
10
|
-
CuiRootModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: CuiRootModule, declarations: [CuiRootComponent], imports: [CommonModule,
|
|
11
|
-
CuiDialogModule,
|
|
12
|
-
CuiAlertModule], exports: [CuiRootComponent] });
|
|
13
|
-
CuiRootModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiRootModule, imports: [CommonModule,
|
|
14
|
-
CuiDialogModule,
|
|
15
|
-
CuiAlertModule] });
|
|
16
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiRootModule, decorators: [{
|
|
17
|
-
type: NgModule,
|
|
18
|
-
args: [{
|
|
19
|
-
imports: [
|
|
20
|
-
CommonModule,
|
|
21
|
-
CuiDialogModule,
|
|
22
|
-
CuiAlertModule
|
|
23
|
-
],
|
|
24
|
-
declarations: [CuiRootComponent],
|
|
25
|
-
exports: [CuiRootComponent]
|
|
26
|
-
}]
|
|
27
|
-
}] });
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { CuiRootComponent } from './root.component';
|
|
4
|
+
import { CuiDialogModule } from '../dialog';
|
|
5
|
+
import { CuiAlertModule } from '../alert';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class CuiRootModule {
|
|
8
|
+
}
|
|
9
|
+
CuiRootModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiRootModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
10
|
+
CuiRootModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: CuiRootModule, declarations: [CuiRootComponent], imports: [CommonModule,
|
|
11
|
+
CuiDialogModule,
|
|
12
|
+
CuiAlertModule], exports: [CuiRootComponent] });
|
|
13
|
+
CuiRootModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiRootModule, imports: [CommonModule,
|
|
14
|
+
CuiDialogModule,
|
|
15
|
+
CuiAlertModule] });
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiRootModule, decorators: [{
|
|
17
|
+
type: NgModule,
|
|
18
|
+
args: [{
|
|
19
|
+
imports: [
|
|
20
|
+
CommonModule,
|
|
21
|
+
CuiDialogModule,
|
|
22
|
+
CuiAlertModule
|
|
23
|
+
],
|
|
24
|
+
declarations: [CuiRootComponent],
|
|
25
|
+
exports: [CuiRootComponent]
|
|
26
|
+
}]
|
|
27
|
+
}] });
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vdC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvcm9vdC9yb290Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBVzFDLE1BQU0sT0FBTyxhQUFhOzsyR0FBYixhQUFhOzRHQUFiLGFBQWEsaUJBSFQsZ0JBQWdCLGFBSjdCLFlBQVk7UUFDWixlQUFlO1FBQ2YsY0FBYyxhQUdOLGdCQUFnQjs0R0FFZixhQUFhLFlBUHRCLFlBQVk7UUFDWixlQUFlO1FBQ2YsY0FBYzs0RkFLTCxhQUFhO2tCQVR6QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsY0FBYztxQkFDZjtvQkFDRCxZQUFZLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztvQkFDaEMsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7aUJBQzVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbmltcG9ydCB7IEN1aVJvb3RDb21wb25lbnQgfSBmcm9tICcuL3Jvb3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ3VpRGlhbG9nTW9kdWxlIH0gZnJvbSAnLi4vZGlhbG9nJztcclxuaW1wb3J0IHsgQ3VpQWxlcnRNb2R1bGUgfSBmcm9tICcuLi9hbGVydCc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEN1aURpYWxvZ01vZHVsZSxcclxuICAgIEN1aUFsZXJ0TW9kdWxlXHJcbiAgXSxcclxuICBkZWNsYXJhdGlvbnM6IFtDdWlSb290Q29tcG9uZW50XSxcclxuICBleHBvcnRzOiBbQ3VpUm9vdENvbXBvbmVudF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEN1aVJvb3RNb2R1bGUge1xyXG59XHJcbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const CUI_ROOT_SELECTOR = 'cui-root';
|
|
1
|
+
export const CUI_ROOT_SELECTOR = 'cui-root';
|
|
2
2
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vdC5vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9jb21wb25lbnRzL3Jvb3Qvcm9vdC5vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLFVBQVUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBDVUlfUk9PVF9TRUxFQ1RPUiA9ICdjdWktcm9vdCc7Il19
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from './select.component';
|
|
2
|
-
export * from './select.module';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export * from './select.component';
|
|
2
|
+
export * from './select.module';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvc2VsZWN0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc2VsZWN0LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc2VsZWN0Lm1vZHVsZSc7XHJcbiJdfQ==
|
|
@@ -1,165 +1,165 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, Input, ElementRef, ViewChild, HostBinding, ViewContainerRef, HostListener } 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 { CUI_ROOT_SELECTOR } from '../root';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "@cuby-ui/cdk";
|
|
11
|
-
import * as i2 from "@angular/common";
|
|
12
|
-
import * as i3 from "../svg/svg.component";
|
|
13
|
-
export class CuiSelectComponent {
|
|
14
|
-
constructor() {
|
|
15
|
-
this.element = inject(ElementRef).nativeElement;
|
|
16
|
-
this.document = inject(DOCUMENT);
|
|
17
|
-
this.changeDetectorRef = inject(ChangeDetectorRef);
|
|
18
|
-
this.viewContainerRef = inject(ViewContainerRef);
|
|
19
|
-
this.destroy$ = inject(CuiDestroyService, { self: true });
|
|
20
|
-
this.cuiTextFieldController = inject(CUI_TEXT_FIELD_CONTROLLER);
|
|
21
|
-
this.cuiClickOutsideDirective = inject(CuiClickOutsideDirective, { self: true });
|
|
22
|
-
this.SPACE_BETWEEN_BUTTON_AND_OPTIONS = 3;
|
|
23
|
-
this.isOpened = false;
|
|
24
|
-
this.isOptionsListAbove = false;
|
|
25
|
-
this.gap = `${this.SPACE_BETWEEN_BUTTON_AND_OPTIONS}px`;
|
|
26
|
-
}
|
|
27
|
-
get id() {
|
|
28
|
-
return this.cuiTextFieldController.id;
|
|
29
|
-
}
|
|
30
|
-
get size() {
|
|
31
|
-
return this.cuiTextFieldController.size;
|
|
32
|
-
}
|
|
33
|
-
get placeholder() {
|
|
34
|
-
return this.cuiTextFieldController.placeholder;
|
|
35
|
-
}
|
|
36
|
-
get isError() {
|
|
37
|
-
return this.cuiTextFieldController.isError;
|
|
38
|
-
}
|
|
39
|
-
trackByFn(_, item) {
|
|
40
|
-
return item.label;
|
|
41
|
-
}
|
|
42
|
-
writeValue(value) {
|
|
43
|
-
this.value = value;
|
|
44
|
-
// TODO: Непонятно, зачем нужно в construction вторая часть выражения
|
|
45
|
-
this.selectedOption = this.options.find(option => option.value === value) ?? value;
|
|
46
|
-
this.changeDetectorRef.markForCheck();
|
|
47
|
-
}
|
|
48
|
-
registerOnChange(fn) {
|
|
49
|
-
this.onChange = fn;
|
|
50
|
-
}
|
|
51
|
-
registerOnTouched(fn) {
|
|
52
|
-
this.onTouched = fn;
|
|
53
|
-
}
|
|
54
|
-
ngOnInit() {
|
|
55
|
-
this.initClickOutsideSubscription();
|
|
56
|
-
}
|
|
57
|
-
ngOnDestroy() {
|
|
58
|
-
this.clearViewContainerRef();
|
|
59
|
-
}
|
|
60
|
-
setDisabledState(isDisabled) {
|
|
61
|
-
this.isDisabled = isDisabled;
|
|
62
|
-
this.changeDetectorRef.markForCheck();
|
|
63
|
-
}
|
|
64
|
-
onSelect(option) {
|
|
65
|
-
if (option.isDisabled) {
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
this.value = option.value;
|
|
69
|
-
this.selectedOption = option;
|
|
70
|
-
this.onChange(this.value);
|
|
71
|
-
this.onSwitch();
|
|
72
|
-
this.onTouched();
|
|
73
|
-
}
|
|
74
|
-
onSwitch() {
|
|
75
|
-
if (!this.options.length && !this.defaultOptionText) {
|
|
76
|
-
return;
|
|
77
|
-
}
|
|
78
|
-
if (!this.isOpened) {
|
|
79
|
-
this.open();
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
|
-
this.close();
|
|
83
|
-
}
|
|
84
|
-
onClose() {
|
|
85
|
-
this.close();
|
|
86
|
-
}
|
|
87
|
-
onWindowResize() {
|
|
88
|
-
this.button.nativeElement.blur();
|
|
89
|
-
this.close();
|
|
90
|
-
}
|
|
91
|
-
initClickOutsideSubscription() {
|
|
92
|
-
this.cuiClickOutsideDirective.cuiClickOutside
|
|
93
|
-
.pipe(takeUntil(this.destroy$))
|
|
94
|
-
.subscribe(() => {
|
|
95
|
-
if (this.isOpened) {
|
|
96
|
-
this.onTouched();
|
|
97
|
-
}
|
|
98
|
-
this.close();
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
open() {
|
|
102
|
-
this.isOpened = true;
|
|
103
|
-
const { top: elementRectTop, left: elementRectLeft, bottom: elementRectBottom } = this.element.getBoundingClientRect();
|
|
104
|
-
const distanceToBottom = this.document.documentElement.clientHeight
|
|
105
|
-
- (elementRectBottom + this.SPACE_BETWEEN_BUTTON_AND_OPTIONS);
|
|
106
|
-
const embeddedViewRef = this.viewContainerRef.createEmbeddedView(this.optionsWrapper);
|
|
107
|
-
const node = embeddedViewRef.rootNodes[0];
|
|
108
|
-
const nodeStyles = node.style;
|
|
109
|
-
this.isOptionsListAbove = distanceToBottom < this.getOptionsListHeightContainer.nativeElement.offsetHeight;
|
|
110
|
-
embeddedViewRef.detectChanges();
|
|
111
|
-
nodeStyles.width = this.element.offsetWidth + 'px';
|
|
112
|
-
nodeStyles.left = window.scrollX + elementRectLeft + 'px';
|
|
113
|
-
if (this.isOptionsListAbove) {
|
|
114
|
-
nodeStyles.top = window.scrollY + elementRectTop
|
|
115
|
-
- this.getOptionsListHeightContainer.nativeElement.offsetHeight
|
|
116
|
-
- this.SPACE_BETWEEN_BUTTON_AND_OPTIONS
|
|
117
|
-
+ 'px';
|
|
118
|
-
}
|
|
119
|
-
else {
|
|
120
|
-
nodeStyles.top = window.scrollY + elementRectBottom + this.SPACE_BETWEEN_BUTTON_AND_OPTIONS + 'px';
|
|
121
|
-
}
|
|
122
|
-
this.document.querySelector(CUI_ROOT_SELECTOR).appendChild(embeddedViewRef.rootNodes[0]);
|
|
123
|
-
}
|
|
124
|
-
close() {
|
|
125
|
-
this.isOpened = false;
|
|
126
|
-
this.clearViewContainerRef();
|
|
127
|
-
}
|
|
128
|
-
clearViewContainerRef() {
|
|
129
|
-
this.viewContainerRef.clear();
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
CuiSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
133
|
-
CuiSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: CuiSelectComponent, selector: "cui-select[options]", inputs: { options: "options", defaultOptionText: "defaultOptionText" }, host: { listeners: { "window:resize": "onWindowResize()" }, properties: { "style.--c-gap": "this.gap" } }, providers: [
|
|
134
|
-
CUI_TEXT_FILED_CONTROLLER_PROVIDER,
|
|
135
|
-
cuiProvide(NG_VALUE_ACCESSOR, CuiSelectComponent, true),
|
|
136
|
-
CuiDestroyService
|
|
137
|
-
], viewQueries: [{ propertyName: "button", first: true, predicate: ["button"], descendants: true }, { propertyName: "getOptionsListHeightContainer", first: true, predicate: ["getOptionsListHeightContainer"], descendants: true }, { propertyName: "optionsWrapper", first: true, predicate: ["optionsWrapper"], descendants: true }], hostDirectives: [{ directive: i1.CuiClickOutsideDirective }], ngImport: i0, template: "<button\n #button\n type=\"button\"\n [attr.id]=\"id\"\n [attr.data-size]=\"size\"\n [disabled]=\"isDisabled\"\n class=\"c-button\"\n [class.c-button_active]=\"isOpened\"\n [class.c-button_with-error]=\"isError\"\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<ng-template #optionsWrapper>\n <div\n class=\"c-options__wrapper\"\n [class.c-options__wrapper_top]=\"isOptionsListAbove\"\n >\n <ng-container *ngTemplateOutlet=\"optionsList\"/>\n </div>\n</ng-template>\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 <ng-container *ngIf=\"options.length; else empty\">\n <li *ngFor=\"let option of options; trackBy: trackByFn\">\n <button\n type=\"button\"\n class=\"c-option-button\"\n [class.c-option-button_selected]=\"selectedOption === option\"\n [disabled]=\"option.isDisabled\"\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 </ng-container>\n <ng-template #empty>\n <li *ngIf=\"defaultOptionText\">\n <button\n type=\"button\"\n class=\"c-option-button\"\n (click)=\"onClose()\"\n >\n {{ defaultOptionText }}\n </button>\n </li>\n </ng-template>\n </ul>\n</ng-template>\n", styles: [":host{display:block;font-family:var(--cui-main-font);position:relative}.c-button{border:0;flex-shrink: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-input);color:var(--cui-base-900);font-family:var(--cui-main-font)}.c-button:hover{border-color:var(--cui-base-300)}.c-button_active.c-button_active,.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;font-family:var(--cui-main-font);z-index:1}.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;overflow:auto;max-height:180px;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;flex-shrink: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:disabled{background:unset;opacity: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 });
|
|
138
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiSelectComponent, decorators: [{
|
|
139
|
-
type: Component,
|
|
140
|
-
args: [{ selector: 'cui-select[options]', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
141
|
-
CUI_TEXT_FILED_CONTROLLER_PROVIDER,
|
|
142
|
-
cuiProvide(NG_VALUE_ACCESSOR, CuiSelectComponent, true),
|
|
143
|
-
CuiDestroyService
|
|
144
|
-
], hostDirectives: [CuiClickOutsideDirective], template: "<button\n #button\n type=\"button\"\n [attr.id]=\"id\"\n [attr.data-size]=\"size\"\n [disabled]=\"isDisabled\"\n class=\"c-button\"\n [class.c-button_active]=\"isOpened\"\n [class.c-button_with-error]=\"isError\"\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<ng-template #optionsWrapper>\n <div\n class=\"c-options__wrapper\"\n [class.c-options__wrapper_top]=\"isOptionsListAbove\"\n >\n <ng-container *ngTemplateOutlet=\"optionsList\"/>\n </div>\n</ng-template>\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 <ng-container *ngIf=\"options.length; else empty\">\n <li *ngFor=\"let option of options; trackBy: trackByFn\">\n <button\n type=\"button\"\n class=\"c-option-button\"\n [class.c-option-button_selected]=\"selectedOption === option\"\n [disabled]=\"option.isDisabled\"\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 </ng-container>\n <ng-template #empty>\n <li *ngIf=\"defaultOptionText\">\n <button\n type=\"button\"\n class=\"c-option-button\"\n (click)=\"onClose()\"\n >\n {{ defaultOptionText }}\n </button>\n </li>\n </ng-template>\n </ul>\n</ng-template>\n", styles: [":host{display:block;font-family:var(--cui-main-font);position:relative}.c-button{border:0;flex-shrink: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-input);color:var(--cui-base-900);font-family:var(--cui-main-font)}.c-button:hover{border-color:var(--cui-base-300)}.c-button_active.c-button_active,.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;font-family:var(--cui-main-font);z-index:1}.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;overflow:auto;max-height:180px;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;flex-shrink: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:disabled{background:unset;opacity:50%}.c-option-button__icon{margin-left:auto}\n"] }]
|
|
145
|
-
}], propDecorators: { options: [{
|
|
146
|
-
type: Input
|
|
147
|
-
}], defaultOptionText: [{
|
|
148
|
-
type: Input
|
|
149
|
-
}], button: [{
|
|
150
|
-
type: ViewChild,
|
|
151
|
-
args: ['button']
|
|
152
|
-
}], getOptionsListHeightContainer: [{
|
|
153
|
-
type: ViewChild,
|
|
154
|
-
args: ['getOptionsListHeightContainer']
|
|
155
|
-
}], optionsWrapper: [{
|
|
156
|
-
type: ViewChild,
|
|
157
|
-
args: ['optionsWrapper']
|
|
158
|
-
}], gap: [{
|
|
159
|
-
type: HostBinding,
|
|
160
|
-
args: ['style.--c-gap']
|
|
161
|
-
}], onWindowResize: [{
|
|
162
|
-
type: HostListener,
|
|
163
|
-
args: ['window:resize']
|
|
164
|
-
}] } });
|
|
165
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9zZWxlY3Qvc2VsZWN0LnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBQ0wsVUFBVSxFQUNWLFNBQVMsRUFDVCxXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2hCLFlBQVksRUFDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLHdCQUF3QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJakMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLGtDQUFrQyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sU0FBUyxDQUFDOzs7OztBQWM1QyxNQUFNLE9BQU8sa0JBQWtCO0lBWi9CO1FBYW1CLFlBQU8sR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsYUFBYSxDQUFDO1FBQzNDLGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUIsc0JBQWlCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDOUMscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFn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QixtQkFHZCx1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNULGtDQUFrQzt3QkFDbEMsVUFBVSxDQUFDLGlCQUFpQixzQkFBc0IsSUFBSSxDQUFDO3dCQUN2RCxpQkFBaUI7cUJBQ2xCLGtCQUNlLENBQUMsd0JBQXdCLENBQUM7OEJBc0JuQyxPQUFPO3NCQURiLEtBQUs7Z0JBSUMsaUJBQWlCO3NCQUR2QixLQUFLO2dCQUlhLE1BQU07c0JBRHhCLFNBQVM7dUJBQUMsUUFBUTtnQkFJQSw2QkFBNkI7c0JBRC9DLFNBQVM7dUJBQUMsK0JBQStCO2dCQUl2QixjQUFjO3NCQURoQyxTQUFTO3VCQUFDLGdCQUFnQjtnQkFJakIsR0FBRztzQkFEWixXQUFXO3VCQUFDLGVBQWU7Z0JBcUZsQixjQUFjO3NCQUR2QixZQUFZO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IE9uRGVzdHJveSwgT25Jbml0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIEVsZW1lbnRSZWYsXG4gIFZpZXdDaGlsZCxcbiAgSG9zdEJpbmRpbmcsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIEhvc3RMaXN0ZW5lclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB0eXBlIHsgQ3VpT25DaGFuZ2UsIEN1aU9uVG91Y2hlZCwgQ3VpTnVsbGFibGUgfSBmcm9tICdAY3VieS11aS9jZGsnO1xuaW1wb3J0IHsgQ3VpRGVzdHJveVNlcnZpY2UgfSBmcm9tICdAY3VieS11aS9jZGsnO1xuaW1wb3J0IHsgY3VpUHJvdmlkZSwgQ3VpQ2xpY2tPdXRzaWRlRGlyZWN0aXZlIH0gZnJvbSAnQGN1YnktdWkvY2RrJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgdHlwZSB7IEN1aU9wdGlvbiB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHR5cGUgeyBDdWlTaXplTWQsIEN1aVNpemVTbSB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IENVSV9URVhUX0ZJRUxEX0NPTlRST0xMRVIsIENVSV9URVhUX0ZJTEVEX0NPTlRST0xMRVJfUFJPVklERVIgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IENVSV9ST09UX1NFTEVDVE9SIH0gZnJvbSAnLi4vcm9vdCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2N1aS1zZWxlY3Rbb3B0aW9uc10nLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LnRlbXBsYXRlLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWxlY3Quc3R5bGUuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAgQ1VJX1RFWFRfRklMRURfQ09OVFJPTExFUl9QUk9WSURFUixcbiAgICBjdWlQcm92aWRlKE5HX1ZBTFVFX0FDQ0VTU09SLCBDdWlTZWxlY3RDb21wb25lbnQsIHRydWUpLFxuICAgIEN1aURlc3Ryb3lTZXJ2aWNlXG4gIF0sXG4gIGhvc3REaXJlY3RpdmVzOiBbQ3VpQ2xpY2tPdXRzaWRlRGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBDdWlTZWxlY3RDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnQgPSBpbmplY3QoRWxlbWVudFJlZikubmF0aXZlRWxlbWVudDtcbiAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IHZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBpbmplY3QoQ3VpRGVzdHJveVNlcnZpY2UsIHtzZWxmOiB0cnVlfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY3VpVGV4dEZpZWxkQ29udHJvbGxlciA9IGluamVjdChDVUlfVEVYVF9GSUVMRF9DT05UUk9MTEVSKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjdWlDbGlja091dHNpZGVEaXJlY3RpdmUgPSBpbmplY3QoQ3VpQ2xpY2tPdXRzaWRlRGlyZWN0aXZlLCB7c2VsZjogdHJ1ZX0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBTUEFDRV9CRVRXRUVOX0JVVFRPTl9BTkRfT1BUSU9OUyA9IDM7XG5cbiAgcHJvdGVjdGVkIGlzT3BlbmVkID0gZmFsc2U7XG4gIHByb3RlY3RlZCBpc09wdGlvbnNMaXN0QWJvdmUgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIHZhbHVlITogQ3VpTnVsbGFibGU8dW5rbm93bj47XG4gIHByb3RlY3RlZCBvbkNoYW5nZSE6IEN1aU9uQ2hhbmdlPHVua25vd24+O1xuICBwcm90ZWN0ZWQgb25Ub3VjaGVkITogQ3VpT25Ub3VjaGVkO1xuICBwcm90ZWN0ZWQgaXNEaXNhYmxlZCE6IGJvb2xlYW47XG4gIHByb3RlY3RlZCBzZWxlY3RlZE9wdGlvbj86IEN1aU9wdGlvbjtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgb3B0aW9ucyE6IEN1aU9wdGlvbltdO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkZWZhdWx0T3B0aW9uVGV4dD86IHN0cmluZztcblxuICBAVmlld0NoaWxkKCdidXR0b24nKVxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYnV0dG9uITogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG5cbiAgQFZpZXdDaGlsZCgnZ2V0T3B0aW9uc0xpc3RIZWlnaHRDb250YWluZXInKVxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZ2V0T3B0aW9uc0xpc3RIZWlnaHRDb250YWluZXIhOiBFbGVtZW50UmVmPEhUTUxVTGlzdEVsZW1lbnQ+O1xuXG4gIEBWaWV3Q2hpbGQoJ29wdGlvbnNXcmFwcGVyJylcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG9wdGlvbnNXcmFwcGVyITogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS4tLWMtZ2FwJylcbiAgcHJvdGVjdGVkIGdhcCA9IGAke3RoaXMuU1BBQ0VfQkVUV0VFTl9CVVRUT05fQU5EX09QVElPTlN9cHhgO1xuXG4gIHByb3RlY3RlZCBnZXQgaWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5jdWlUZXh0RmllbGRDb250cm9sbGVyLmlkO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBzaXplKCk6IEN1aVNpemVTbSB8IEN1aVNpemVNZCB7XG4gICAgcmV0dXJuIHRoaXMuY3VpVGV4dEZpZWxkQ29udHJvbGxlci5zaXplO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBwbGFjZWhvbGRlcigpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmN1aVRleHRGaWVsZENvbnRyb2xsZXIucGxhY2Vob2xkZXI7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IGlzRXJyb3IoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY3VpVGV4dEZpZWxkQ29udHJvbGxlci5pc0Vycm9yO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRyYWNrQnlGbihfOiBudW1iZXIsIGl0ZW06IEN1aU9wdGlvbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGl0ZW0ubGFiZWw7XG4gIH1cblxuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogdW5rbm93bik6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAvLyBUT0RPOiDQndC10L/QvtC90Y/RgtC90L4sINC30LDRh9C10Lwg0L3Rg9C20L3QviDQsiBjb25zdHJ1Y3Rpb24g0LLRgtC+0YDQsNGPINGH0LDRgdGC0Ywg0LLRi9GA0LDQttC10L3QuNGPXG4gICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA9IHRoaXMub3B0aW9ucy5maW5kKG9wdGlvbiA9PiBvcHRpb24udmFsdWUgPT09IHZhbHVlKSA/PyB2YWx1ZSBhcyBDdWlPcHRpb247XG5cbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IEN1aU9uQ2hhbmdlPHVua25vd24+KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBDdWlPblRvdWNoZWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdENsaWNrT3V0c2lkZVN1YnNjcmlwdGlvbigpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXJWaWV3Q29udGFpbmVyUmVmKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5pc0Rpc2FibGVkID0gaXNEaXNhYmxlZDtcblxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25TZWxlY3Qob3B0aW9uOiBDdWlPcHRpb24pOiB2b2lkIHtcbiAgICBpZiAob3B0aW9uLmlzRGlzYWJsZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMudmFsdWUgPSBvcHRpb24udmFsdWU7XG4gICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA9IG9wdGlvbjtcblxuICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgdGhpcy5vblN3aXRjaCgpO1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25Td2l0Y2goKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLm9wdGlvbnMubGVuZ3RoICYmICF0aGlzLmRlZmF1bHRPcHRpb25UZXh0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmlzT3BlbmVkKSB7XG4gICAgICB0aGlzLm9wZW4oKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnKVxuICBwcm90ZWN0ZWQgb25XaW5kb3dSZXNpemUoKTogdm9pZCB7XG4gICAgdGhpcy5idXR0b24ubmF0aXZlRWxlbWVudC5ibHVyKCk7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0Q2xpY2tPdXRzaWRlU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuY3VpQ2xpY2tPdXRzaWRlRGlyZWN0aXZlLmN1aUNsaWNrT3V0c2lkZVxuICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmlzT3BlbmVkKSB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlbigpOiB2b2lkIHtcbiAgICB0aGlzLmlzT3BlbmVkID0gdHJ1ZTtcblxuICAgIGNvbnN0IHtcbiAgICAgIHRvcDogZWxlbWVudFJlY3RUb3AsXG4gICAgICBsZWZ0OiBlbGVtZW50UmVjdExlZnQsXG4gICAgICBib3R0b206IGVsZW1lbnRSZWN0Qm90dG9tXG4gICAgfSA9IHRoaXMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBkaXN0YW5jZVRvQm90dG9tID0gdGhpcy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0XG4gICAgICAtIChlbGVtZW50UmVjdEJvdHRvbSArIHRoaXMuU1BBQ0VfQkVUV0VFTl9CVVRUT05fQU5EX09QVElPTlMpO1xuICAgIGNvbnN0IGVtYmVkZGVkVmlld1JlZiA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5vcHRpb25zV3JhcHBlcik7XG4gICAgY29uc3Qgbm9kZSA9IGVtYmVkZGVkVmlld1JlZi5yb290Tm9kZXNbMF07XG4gICAgY29uc3Qgbm9kZVN0eWxlcyA9IG5vZGUuc3R5bGU7XG5cbiAgICB0aGlzLmlzT3B0aW9uc0xpc3RBYm92ZSA9IGRpc3RhbmNlVG9Cb3R0b20gPCB0aGlzLmdldE9wdGlvbnNMaXN0SGVpZ2h0Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuXG4gICAgZW1iZWRkZWRWaWV3UmVmLmRldGVjdENoYW5nZXMoKTtcblxuICAgIG5vZGVTdHlsZXMud2lkdGggPSB0aGlzLmVsZW1lbnQub2Zmc2V0V2lkdGggKyAncHgnO1xuICAgIG5vZGVTdHlsZXMubGVmdCA9IHdpbmRvdy5zY3JvbGxYICsgZWxlbWVudFJlY3RMZWZ0ICsgJ3B4JztcblxuICAgIGlmICh0aGlzLmlzT3B0aW9uc0xpc3RBYm92ZSkge1xuICAgICAgbm9kZVN0eWxlcy50b3AgPSB3aW5kb3cuc2Nyb2xsWSArIGVsZW1lbnRSZWN0VG9wXG4gICAgICAgIC0gdGhpcy5nZXRPcHRpb25zTGlzdEhlaWdodENvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodFxuICAgICAgICAtIHRoaXMuU1BBQ0VfQkVUV0VFTl9CVVRUT05fQU5EX09QVElPTlNcbiAgICAgICAgKyAncHgnO1xuICAgIH0gZWxzZSB7XG4gICAgICBub2RlU3R5bGVzLnRvcCA9IHdpbmRvdy5zY3JvbGxZICsgZWxlbWVudFJlY3RCb3R0b20gKyB0aGlzLlNQQUNFX0JFVFdFRU5fQlVUVE9OX0FORF9PUFRJT05TICsgJ3B4JztcbiAgICB9XG5cbiAgICB0aGlzLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoQ1VJX1JPT1RfU0VMRUNUT1IpIS5hcHBlbmRDaGlsZChlbWJlZGRlZFZpZXdSZWYucm9vdE5vZGVzWzBdKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5pc09wZW5lZCA9IGZhbHNlO1xuXG4gICAgdGhpcy5jbGVhclZpZXdDb250YWluZXJSZWYoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJWaWV3Q29udGFpbmVyUmVmKCk6IHZvaWQge1xuICAgIHRoaXMudmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xuICB9XG59XG4iLCI8YnV0dG9uXG4gICNidXR0b25cbiAgdHlwZT1cImJ1dHRvblwiXG4gIFthdHRyLmlkXT1cImlkXCJcbiAgW2F0dHIuZGF0YS1zaXplXT1cInNpemVcIlxuICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiXG4gIGNsYXNzPVwiYy1idXR0b25cIlxuICBbY2xhc3MuYy1idXR0b25fYWN0aXZlXT1cImlzT3BlbmVkXCJcbiAgW2NsYXNzLmMtYnV0dG9uX3dpdGgtZXJyb3JdPVwiaXNFcnJvclwiXG4gIChjbGljayk9XCJvblN3aXRjaCgpXCJcbj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkT3B0aW9uOyBlbHNlIHBsYWNlaG9sZGVyVGVtcGxhdGVcIj5cbiAgICB7eyBzZWxlY3RlZE9wdGlvbi5sYWJlbCB9fVxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLXRlbXBsYXRlICNwbGFjZWhvbGRlclRlbXBsYXRlPlxuICAgIDxzcGFuIGNsYXNzPVwiYy1wbGFjZWhvbGRlclwiPnt7IHBsYWNlaG9sZGVyIH19PC9zcGFuPlxuICA8L25nLXRlbXBsYXRlPlxuICA8Y3VpLXN2Z1xuICAgIGljb249XCJjdWlJY29uQ2hldnJvbkRvd25cIlxuICAgIGNvbG9yPVwidmFyKC0tY3VpLWJhc2UtNTAwKVwiXG4gIC8+XG48L2J1dHRvbj5cbjxuZy10ZW1wbGF0ZSAjb3B0aW9uc1dyYXBwZXI+XG4gIDxkaXZcbiAgICAgIGNsYXNzPVwiYy1vcHRpb25zX193cmFwcGVyXCJcbiAgICAgIFtjbGFzcy5jLW9wdGlvbnNfX3dyYXBwZXJfdG9wXT1cImlzT3B0aW9uc0xpc3RBYm92ZVwiXG4gID5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwib3B0aW9uc0xpc3RcIi8+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbjxkaXZcbiAgI2dldE9wdGlvbnNMaXN0SGVpZ2h0Q29udGFpbmVyXG4gIGNsYXNzPVwiYy1nZXQtb3B0aW9ucy1saXN0LWhlaWdodC1jb250YWluZXJcIlxuPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwib3B0aW9uc0xpc3RcIi8+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjb3B0aW9uc0xpc3Q+XG4gIDx1bFxuICAgIGNsYXNzPVwiYy1vcHRpb25zXCJcbiAgICBbY2xhc3MuYy1vcHRpb25zX3RvcF09XCJpc09wdGlvbnNMaXN0QWJvdmVcIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9wdGlvbnMubGVuZ3RoOyBlbHNlIGVtcHR5XCI+XG4gICAgICA8bGkgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvcHRpb25zOyB0cmFja0J5OiB0cmFja0J5Rm5cIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwiYy1vcHRpb24tYnV0dG9uXCJcbiAgICAgICAgICBbY2xhc3MuYy1vcHRpb24tYnV0dG9uX3NlbGVjdGVkXT1cInNlbGVjdGVkT3B0aW9uID09PSBvcHRpb25cIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJvcHRpb24uaXNEaXNhYmxlZFwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0KG9wdGlvbilcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW4+e3sgb3B0aW9uLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgIDxjdWktc3ZnXG4gICAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkT3B0aW9uID09PSBvcHRpb25cIlxuICAgICAgICAgICAgaWNvbj1cImN1aUljb25DaGVja1NtXCJcbiAgICAgICAgICAgIGNvbG9yPVwidmFyKC0tY3VpLWluZm8pXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYy1vcHRpb24tYnV0dG9uX19pY29uXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbGk+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNlbXB0eT5cbiAgICAgIDxsaSAqbmdJZj1cImRlZmF1bHRPcHRpb25UZXh0XCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cImMtb3B0aW9uLWJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uQ2xvc2UoKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBkZWZhdWx0T3B0aW9uVGV4dCB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbGk+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC91bD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
1
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, Input, ElementRef, ViewChild, HostBinding, ViewContainerRef, HostListener } 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 { CUI_ROOT_SELECTOR } from '../root';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "@cuby-ui/cdk";
|
|
11
|
+
import * as i2 from "@angular/common";
|
|
12
|
+
import * as i3 from "../svg/svg.component";
|
|
13
|
+
export class CuiSelectComponent {
|
|
14
|
+
constructor() {
|
|
15
|
+
this.element = inject(ElementRef).nativeElement;
|
|
16
|
+
this.document = inject(DOCUMENT);
|
|
17
|
+
this.changeDetectorRef = inject(ChangeDetectorRef);
|
|
18
|
+
this.viewContainerRef = inject(ViewContainerRef);
|
|
19
|
+
this.destroy$ = inject(CuiDestroyService, { self: true });
|
|
20
|
+
this.cuiTextFieldController = inject(CUI_TEXT_FIELD_CONTROLLER);
|
|
21
|
+
this.cuiClickOutsideDirective = inject(CuiClickOutsideDirective, { self: true });
|
|
22
|
+
this.SPACE_BETWEEN_BUTTON_AND_OPTIONS = 3;
|
|
23
|
+
this.isOpened = false;
|
|
24
|
+
this.isOptionsListAbove = false;
|
|
25
|
+
this.gap = `${this.SPACE_BETWEEN_BUTTON_AND_OPTIONS}px`;
|
|
26
|
+
}
|
|
27
|
+
get id() {
|
|
28
|
+
return this.cuiTextFieldController.id;
|
|
29
|
+
}
|
|
30
|
+
get size() {
|
|
31
|
+
return this.cuiTextFieldController.size;
|
|
32
|
+
}
|
|
33
|
+
get placeholder() {
|
|
34
|
+
return this.cuiTextFieldController.placeholder;
|
|
35
|
+
}
|
|
36
|
+
get isError() {
|
|
37
|
+
return this.cuiTextFieldController.isError;
|
|
38
|
+
}
|
|
39
|
+
trackByFn(_, item) {
|
|
40
|
+
return item.label;
|
|
41
|
+
}
|
|
42
|
+
writeValue(value) {
|
|
43
|
+
this.value = value;
|
|
44
|
+
// TODO: Непонятно, зачем нужно в construction вторая часть выражения
|
|
45
|
+
this.selectedOption = this.options.find(option => option.value === value) ?? value;
|
|
46
|
+
this.changeDetectorRef.markForCheck();
|
|
47
|
+
}
|
|
48
|
+
registerOnChange(fn) {
|
|
49
|
+
this.onChange = fn;
|
|
50
|
+
}
|
|
51
|
+
registerOnTouched(fn) {
|
|
52
|
+
this.onTouched = fn;
|
|
53
|
+
}
|
|
54
|
+
ngOnInit() {
|
|
55
|
+
this.initClickOutsideSubscription();
|
|
56
|
+
}
|
|
57
|
+
ngOnDestroy() {
|
|
58
|
+
this.clearViewContainerRef();
|
|
59
|
+
}
|
|
60
|
+
setDisabledState(isDisabled) {
|
|
61
|
+
this.isDisabled = isDisabled;
|
|
62
|
+
this.changeDetectorRef.markForCheck();
|
|
63
|
+
}
|
|
64
|
+
onSelect(option) {
|
|
65
|
+
if (option.isDisabled) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
this.value = option.value;
|
|
69
|
+
this.selectedOption = option;
|
|
70
|
+
this.onChange(this.value);
|
|
71
|
+
this.onSwitch();
|
|
72
|
+
this.onTouched();
|
|
73
|
+
}
|
|
74
|
+
onSwitch() {
|
|
75
|
+
if (!this.options.length && !this.defaultOptionText) {
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
if (!this.isOpened) {
|
|
79
|
+
this.open();
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
this.close();
|
|
83
|
+
}
|
|
84
|
+
onClose() {
|
|
85
|
+
this.close();
|
|
86
|
+
}
|
|
87
|
+
onWindowResize() {
|
|
88
|
+
this.button.nativeElement.blur();
|
|
89
|
+
this.close();
|
|
90
|
+
}
|
|
91
|
+
initClickOutsideSubscription() {
|
|
92
|
+
this.cuiClickOutsideDirective.cuiClickOutside
|
|
93
|
+
.pipe(takeUntil(this.destroy$))
|
|
94
|
+
.subscribe(() => {
|
|
95
|
+
if (this.isOpened) {
|
|
96
|
+
this.onTouched();
|
|
97
|
+
}
|
|
98
|
+
this.close();
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
open() {
|
|
102
|
+
this.isOpened = true;
|
|
103
|
+
const { top: elementRectTop, left: elementRectLeft, bottom: elementRectBottom } = this.element.getBoundingClientRect();
|
|
104
|
+
const distanceToBottom = this.document.documentElement.clientHeight
|
|
105
|
+
- (elementRectBottom + this.SPACE_BETWEEN_BUTTON_AND_OPTIONS);
|
|
106
|
+
const embeddedViewRef = this.viewContainerRef.createEmbeddedView(this.optionsWrapper);
|
|
107
|
+
const node = embeddedViewRef.rootNodes[0];
|
|
108
|
+
const nodeStyles = node.style;
|
|
109
|
+
this.isOptionsListAbove = distanceToBottom < this.getOptionsListHeightContainer.nativeElement.offsetHeight;
|
|
110
|
+
embeddedViewRef.detectChanges();
|
|
111
|
+
nodeStyles.width = this.element.offsetWidth + 'px';
|
|
112
|
+
nodeStyles.left = window.scrollX + elementRectLeft + 'px';
|
|
113
|
+
if (this.isOptionsListAbove) {
|
|
114
|
+
nodeStyles.top = window.scrollY + elementRectTop
|
|
115
|
+
- this.getOptionsListHeightContainer.nativeElement.offsetHeight
|
|
116
|
+
- this.SPACE_BETWEEN_BUTTON_AND_OPTIONS
|
|
117
|
+
+ 'px';
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
nodeStyles.top = window.scrollY + elementRectBottom + this.SPACE_BETWEEN_BUTTON_AND_OPTIONS + 'px';
|
|
121
|
+
}
|
|
122
|
+
this.document.querySelector(CUI_ROOT_SELECTOR).appendChild(embeddedViewRef.rootNodes[0]);
|
|
123
|
+
}
|
|
124
|
+
close() {
|
|
125
|
+
this.isOpened = false;
|
|
126
|
+
this.clearViewContainerRef();
|
|
127
|
+
}
|
|
128
|
+
clearViewContainerRef() {
|
|
129
|
+
this.viewContainerRef.clear();
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
CuiSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
133
|
+
CuiSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: CuiSelectComponent, selector: "cui-select[options]", inputs: { options: "options", defaultOptionText: "defaultOptionText" }, host: { listeners: { "window:resize": "onWindowResize()" }, properties: { "style.--c-gap": "this.gap" } }, providers: [
|
|
134
|
+
CUI_TEXT_FILED_CONTROLLER_PROVIDER,
|
|
135
|
+
cuiProvide(NG_VALUE_ACCESSOR, CuiSelectComponent, true),
|
|
136
|
+
CuiDestroyService
|
|
137
|
+
], viewQueries: [{ propertyName: "button", first: true, predicate: ["button"], descendants: true }, { propertyName: "getOptionsListHeightContainer", first: true, predicate: ["getOptionsListHeightContainer"], descendants: true }, { propertyName: "optionsWrapper", first: true, predicate: ["optionsWrapper"], descendants: true }], hostDirectives: [{ directive: i1.CuiClickOutsideDirective }], ngImport: i0, template: "<button\r\n #button\r\n type=\"button\"\r\n [attr.id]=\"id\"\r\n [attr.data-size]=\"size\"\r\n [disabled]=\"isDisabled\"\r\n class=\"c-button\"\r\n [class.c-button_active]=\"isOpened\"\r\n [class.c-button_with-error]=\"isError\"\r\n (click)=\"onSwitch()\"\r\n>\r\n <ng-container *ngIf=\"selectedOption; else placeholderTemplate\">\r\n {{ selectedOption.label }}\r\n </ng-container>\r\n <ng-template #placeholderTemplate>\r\n <span class=\"c-placeholder\">{{ placeholder }}</span>\r\n </ng-template>\r\n <cui-svg\r\n icon=\"cuiIconChevronDown\"\r\n color=\"var(--cui-base-500)\"\r\n />\r\n</button>\r\n<ng-template #optionsWrapper>\r\n <div\r\n class=\"c-options__wrapper\"\r\n [class.c-options__wrapper_top]=\"isOptionsListAbove\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"optionsList\"/>\r\n </div>\r\n</ng-template>\r\n<div\r\n #getOptionsListHeightContainer\r\n class=\"c-get-options-list-height-container\"\r\n>\r\n <ng-container *ngTemplateOutlet=\"optionsList\"/>\r\n</div>\r\n<ng-template #optionsList>\r\n <ul\r\n class=\"c-options\"\r\n [class.c-options_top]=\"isOptionsListAbove\"\r\n >\r\n <ng-container *ngIf=\"options.length; else empty\">\r\n <li *ngFor=\"let option of options; trackBy: trackByFn\">\r\n <button\r\n type=\"button\"\r\n class=\"c-option-button\"\r\n [class.c-option-button_selected]=\"selectedOption === option\"\r\n [disabled]=\"option.isDisabled\"\r\n (click)=\"onSelect(option)\"\r\n >\r\n <span>{{ option.label }}</span>\r\n <cui-svg\r\n *ngIf=\"selectedOption === option\"\r\n icon=\"cuiIconCheckSm\"\r\n color=\"var(--cui-info)\"\r\n class=\"c-option-button__icon\"\r\n />\r\n </button>\r\n </li>\r\n </ng-container>\r\n <ng-template #empty>\r\n <li *ngIf=\"defaultOptionText\">\r\n <button\r\n type=\"button\"\r\n class=\"c-option-button\"\r\n (click)=\"onClose()\"\r\n >\r\n {{ defaultOptionText }}\r\n </button>\r\n </li>\r\n </ng-template>\r\n </ul>\r\n</ng-template>\r\n", styles: [":host{display:block;font-family:var(--cui-main-font);position:relative}.c-button{border:0;flex-shrink: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-input);color:var(--cui-base-900);font-family:var(--cui-main-font)}.c-button:hover{border-color:var(--cui-base-300)}.c-button_active.c-button_active,.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;font-family:var(--cui-main-font);z-index:1}.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;overflow:auto;max-height:180px;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;flex-shrink: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:disabled{background:unset;opacity: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 });
|
|
138
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiSelectComponent, decorators: [{
|
|
139
|
+
type: Component,
|
|
140
|
+
args: [{ selector: 'cui-select[options]', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
141
|
+
CUI_TEXT_FILED_CONTROLLER_PROVIDER,
|
|
142
|
+
cuiProvide(NG_VALUE_ACCESSOR, CuiSelectComponent, true),
|
|
143
|
+
CuiDestroyService
|
|
144
|
+
], hostDirectives: [CuiClickOutsideDirective], template: "<button\r\n #button\r\n type=\"button\"\r\n [attr.id]=\"id\"\r\n [attr.data-size]=\"size\"\r\n [disabled]=\"isDisabled\"\r\n class=\"c-button\"\r\n [class.c-button_active]=\"isOpened\"\r\n [class.c-button_with-error]=\"isError\"\r\n (click)=\"onSwitch()\"\r\n>\r\n <ng-container *ngIf=\"selectedOption; else placeholderTemplate\">\r\n {{ selectedOption.label }}\r\n </ng-container>\r\n <ng-template #placeholderTemplate>\r\n <span class=\"c-placeholder\">{{ placeholder }}</span>\r\n </ng-template>\r\n <cui-svg\r\n icon=\"cuiIconChevronDown\"\r\n color=\"var(--cui-base-500)\"\r\n />\r\n</button>\r\n<ng-template #optionsWrapper>\r\n <div\r\n class=\"c-options__wrapper\"\r\n [class.c-options__wrapper_top]=\"isOptionsListAbove\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"optionsList\"/>\r\n </div>\r\n</ng-template>\r\n<div\r\n #getOptionsListHeightContainer\r\n class=\"c-get-options-list-height-container\"\r\n>\r\n <ng-container *ngTemplateOutlet=\"optionsList\"/>\r\n</div>\r\n<ng-template #optionsList>\r\n <ul\r\n class=\"c-options\"\r\n [class.c-options_top]=\"isOptionsListAbove\"\r\n >\r\n <ng-container *ngIf=\"options.length; else empty\">\r\n <li *ngFor=\"let option of options; trackBy: trackByFn\">\r\n <button\r\n type=\"button\"\r\n class=\"c-option-button\"\r\n [class.c-option-button_selected]=\"selectedOption === option\"\r\n [disabled]=\"option.isDisabled\"\r\n (click)=\"onSelect(option)\"\r\n >\r\n <span>{{ option.label }}</span>\r\n <cui-svg\r\n *ngIf=\"selectedOption === option\"\r\n icon=\"cuiIconCheckSm\"\r\n color=\"var(--cui-info)\"\r\n class=\"c-option-button__icon\"\r\n />\r\n </button>\r\n </li>\r\n </ng-container>\r\n <ng-template #empty>\r\n <li *ngIf=\"defaultOptionText\">\r\n <button\r\n type=\"button\"\r\n class=\"c-option-button\"\r\n (click)=\"onClose()\"\r\n >\r\n {{ defaultOptionText }}\r\n </button>\r\n </li>\r\n </ng-template>\r\n </ul>\r\n</ng-template>\r\n", styles: [":host{display:block;font-family:var(--cui-main-font);position:relative}.c-button{border:0;flex-shrink: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-input);color:var(--cui-base-900);font-family:var(--cui-main-font)}.c-button:hover{border-color:var(--cui-base-300)}.c-button_active.c-button_active,.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;font-family:var(--cui-main-font);z-index:1}.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;overflow:auto;max-height:180px;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;flex-shrink: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:disabled{background:unset;opacity:50%}.c-option-button__icon{margin-left:auto}\n"] }]
|
|
145
|
+
}], propDecorators: { options: [{
|
|
146
|
+
type: Input
|
|
147
|
+
}], defaultOptionText: [{
|
|
148
|
+
type: Input
|
|
149
|
+
}], button: [{
|
|
150
|
+
type: ViewChild,
|
|
151
|
+
args: ['button']
|
|
152
|
+
}], getOptionsListHeightContainer: [{
|
|
153
|
+
type: ViewChild,
|
|
154
|
+
args: ['getOptionsListHeightContainer']
|
|
155
|
+
}], optionsWrapper: [{
|
|
156
|
+
type: ViewChild,
|
|
157
|
+
args: ['optionsWrapper']
|
|
158
|
+
}], gap: [{
|
|
159
|
+
type: HostBinding,
|
|
160
|
+
args: ['style.--c-gap']
|
|
161
|
+
}], onWindowResize: [{
|
|
162
|
+
type: HostListener,
|
|
163
|
+
args: ['window:resize']
|
|
164
|
+
}] } });
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9zZWxlY3Qvc2VsZWN0LnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBQ0wsVUFBVSxFQUNWLFNBQVMsRUFDVCxXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2hCLFlBQVksRUFDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLHdCQUF3QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJakMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLGtDQUFrQyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sU0FBUyxDQUFDOzs7OztBQWM1QyxNQUFNLE9BQU8sa0JBQWtCO0lBWi9CO1FBYW1CLFlBQU8sR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsYUFBYSxDQUFDO1FBQzNDLGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUIsc0JBQWlCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDOUMscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFn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QixtQkFHZCx1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNULGtDQUFrQzt3QkFDbEMsVUFBVSxDQUFDLGlCQUFpQixzQkFBc0IsSUFBSSxDQUFDO3dCQUN2RCxpQkFBaUI7cUJBQ2xCLGtCQUNlLENBQUMsd0JBQXdCLENBQUM7OEJBc0JuQyxPQUFPO3NCQURiLEtBQUs7Z0JBSUMsaUJBQWlCO3NCQUR2QixLQUFLO2dCQUlhLE1BQU07c0JBRHhCLFNBQVM7dUJBQUMsUUFBUTtnQkFJQSw2QkFBNkI7c0JBRC9DLFNBQVM7dUJBQUMsK0JBQStCO2dCQUl2QixjQUFjO3NCQURoQyxTQUFTO3VCQUFDLGdCQUFnQjtnQkFJakIsR0FBRztzQkFEWixXQUFXO3VCQUFDLGVBQWU7Z0JBcUZsQixjQUFjO3NCQUR2QixZQUFZO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IE9uRGVzdHJveSwgT25Jbml0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBpbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgRWxlbWVudFJlZixcclxuICBWaWV3Q2hpbGQsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgVmlld0NvbnRhaW5lclJlZixcclxuICBIb3N0TGlzdGVuZXJcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB0eXBlIHsgQ3VpT25DaGFuZ2UsIEN1aU9uVG91Y2hlZCwgQ3VpTnVsbGFibGUgfSBmcm9tICdAY3VieS11aS9jZGsnO1xyXG5pbXBvcnQgeyBDdWlEZXN0cm95U2VydmljZSB9IGZyb20gJ0BjdWJ5LXVpL2Nkayc7XHJcbmltcG9ydCB7IGN1aVByb3ZpZGUsIEN1aUNsaWNrT3V0c2lkZURpcmVjdGl2ZSB9IGZyb20gJ0BjdWJ5LXVpL2Nkayc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHR5cGUgeyBDdWlPcHRpb24gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHR5cGUgeyBDdWlTaXplTWQsIEN1aVNpemVTbSB9IGZyb20gJy4uLy4uL3R5cGVzJztcclxuaW1wb3J0IHsgQ1VJX1RFWFRfRklFTERfQ09OVFJPTExFUiwgQ1VJX1RFWFRfRklMRURfQ09OVFJPTExFUl9QUk9WSURFUiB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMnO1xyXG5pbXBvcnQgeyBDVUlfUk9PVF9TRUxFQ1RPUiB9IGZyb20gJy4uL3Jvb3QnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjdWktc2VsZWN0W29wdGlvbnNdJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LnRlbXBsYXRlLmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NlbGVjdC5zdHlsZS5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBDVUlfVEVYVF9GSUxFRF9DT05UUk9MTEVSX1BST1ZJREVSLFxyXG4gICAgY3VpUHJvdmlkZShOR19WQUxVRV9BQ0NFU1NPUiwgQ3VpU2VsZWN0Q29tcG9uZW50LCB0cnVlKSxcclxuICAgIEN1aURlc3Ryb3lTZXJ2aWNlXHJcbiAgXSxcclxuICBob3N0RGlyZWN0aXZlczogW0N1aUNsaWNrT3V0c2lkZURpcmVjdGl2ZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIEN1aVNlbGVjdENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50ID0gaW5qZWN0KEVsZW1lbnRSZWYpLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBjaGFuZ2VEZXRlY3RvclJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgcHJpdmF0ZSByZWFkb25seSB2aWV3Q29udGFpbmVyUmVmID0gaW5qZWN0KFZpZXdDb250YWluZXJSZWYpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBpbmplY3QoQ3VpRGVzdHJveVNlcnZpY2UsIHtzZWxmOiB0cnVlfSk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBjdWlUZXh0RmllbGRDb250cm9sbGVyID0gaW5qZWN0KENVSV9URVhUX0ZJRUxEX0NPTlRST0xMRVIpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgY3VpQ2xpY2tPdXRzaWRlRGlyZWN0aXZlID0gaW5qZWN0KEN1aUNsaWNrT3V0c2lkZURpcmVjdGl2ZSwge3NlbGY6IHRydWV9KTtcclxuXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IFNQQUNFX0JFVFdFRU5fQlVUVE9OX0FORF9PUFRJT05TID0gMztcclxuXHJcbiAgcHJvdGVjdGVkIGlzT3BlbmVkID0gZmFsc2U7XHJcbiAgcHJvdGVjdGVkIGlzT3B0aW9uc0xpc3RBYm92ZSA9IGZhbHNlO1xyXG4gIHByb3RlY3RlZCB2YWx1ZSE6IEN1aU51bGxhYmxlPHVua25vd24+O1xyXG4gIHByb3RlY3RlZCBvbkNoYW5nZSE6IEN1aU9uQ2hhbmdlPHVua25vd24+O1xyXG4gIHByb3RlY3RlZCBvblRvdWNoZWQhOiBDdWlPblRvdWNoZWQ7XHJcbiAgcHJvdGVjdGVkIGlzRGlzYWJsZWQhOiBib29sZWFuO1xyXG4gIHByb3RlY3RlZCBzZWxlY3RlZE9wdGlvbj86IEN1aU9wdGlvbjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgb3B0aW9ucyE6IEN1aU9wdGlvbltdO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBkZWZhdWx0T3B0aW9uVGV4dD86IHN0cmluZztcclxuXHJcbiAgQFZpZXdDaGlsZCgnYnV0dG9uJylcclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYnV0dG9uITogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2dldE9wdGlvbnNMaXN0SGVpZ2h0Q29udGFpbmVyJylcclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZ2V0T3B0aW9uc0xpc3RIZWlnaHRDb250YWluZXIhOiBFbGVtZW50UmVmPEhUTUxVTGlzdEVsZW1lbnQ+O1xyXG5cclxuICBAVmlld0NoaWxkKCdvcHRpb25zV3JhcHBlcicpXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG9wdGlvbnNXcmFwcGVyITogVGVtcGxhdGVSZWY8dW5rbm93bj47XHJcblxyXG4gIEBIb3N0QmluZGluZygnc3R5bGUuLS1jLWdhcCcpXHJcbiAgcHJvdGVjdGVkIGdhcCA9IGAke3RoaXMuU1BBQ0VfQkVUV0VFTl9CVVRUT05fQU5EX09QVElPTlN9cHhgO1xyXG5cclxuICBwcm90ZWN0ZWQgZ2V0IGlkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5jdWlUZXh0RmllbGRDb250cm9sbGVyLmlkO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldCBzaXplKCk6IEN1aVNpemVTbSB8IEN1aVNpemVNZCB7XHJcbiAgICByZXR1cm4gdGhpcy5jdWlUZXh0RmllbGRDb250cm9sbGVyLnNpemU7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0IHBsYWNlaG9sZGVyKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5jdWlUZXh0RmllbGRDb250cm9sbGVyLnBsYWNlaG9sZGVyO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldCBpc0Vycm9yKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY3VpVGV4dEZpZWxkQ29udHJvbGxlci5pc0Vycm9yO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHRyYWNrQnlGbihfOiBudW1iZXIsIGl0ZW06IEN1aU9wdGlvbik6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gaXRlbS5sYWJlbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiB1bmtub3duKTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgICAvLyBUT0RPOiDQndC10L/QvtC90Y/RgtC90L4sINC30LDRh9C10Lwg0L3Rg9C20L3QviDQsiBjb25zdHJ1Y3Rpb24g0LLRgtC+0YDQsNGPINGH0LDRgdGC0Ywg0LLRi9GA0LDQttC10L3QuNGPXHJcbiAgICB0aGlzLnNlbGVjdGVkT3B0aW9uID0gdGhpcy5vcHRpb25zLmZpbmQob3B0aW9uID0+IG9wdGlvbi52YWx1ZSA9PT0gdmFsdWUpID8/IHZhbHVlIGFzIEN1aU9wdGlvbjtcclxuXHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IEN1aU9uQ2hhbmdlPHVua25vd24+KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IEN1aU9uVG91Y2hlZCk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5pdENsaWNrT3V0c2lkZVN1YnNjcmlwdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jbGVhclZpZXdDb250YWluZXJSZWYoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuaXNEaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcblxyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBvblNlbGVjdChvcHRpb246IEN1aU9wdGlvbik6IHZvaWQge1xyXG4gICAgaWYgKG9wdGlvbi5pc0Rpc2FibGVkKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudmFsdWUgPSBvcHRpb24udmFsdWU7XHJcbiAgICB0aGlzLnNlbGVjdGVkT3B0aW9uID0gb3B0aW9uO1xyXG5cclxuICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XHJcbiAgICB0aGlzLm9uU3dpdGNoKCk7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIG9uU3dpdGNoKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMubGVuZ3RoICYmICF0aGlzLmRlZmF1bHRPcHRpb25UZXh0KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMuaXNPcGVuZWQpIHtcclxuICAgICAgdGhpcy5vcGVuKCk7XHJcblxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIG9uQ2xvc2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcclxuICBwcm90ZWN0ZWQgb25XaW5kb3dSZXNpemUoKTogdm9pZCB7XHJcbiAgICB0aGlzLmJ1dHRvbi5uYXRpdmVFbGVtZW50LmJsdXIoKTtcclxuICAgIHRoaXMuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdENsaWNrT3V0c2lkZVN1YnNjcmlwdGlvbigpOiB2b2lkIHtcclxuICAgIHRoaXMuY3VpQ2xpY2tPdXRzaWRlRGlyZWN0aXZlLmN1aUNsaWNrT3V0c2lkZVxyXG4gICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmlzT3BlbmVkKSB7XHJcbiAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9wZW4oKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzT3BlbmVkID0gdHJ1ZTtcclxuXHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHRvcDogZWxlbWVudFJlY3RUb3AsXHJcbiAgICAgIGxlZnQ6IGVsZW1lbnRSZWN0TGVmdCxcclxuICAgICAgYm90dG9tOiBlbGVtZW50UmVjdEJvdHRvbVxyXG4gICAgfSA9IHRoaXMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIGNvbnN0IGRpc3RhbmNlVG9Cb3R0b20gPSB0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHRcclxuICAgICAgLSAoZWxlbWVudFJlY3RCb3R0b20gKyB0aGlzLlNQQUNFX0JFVFdFRU5fQlVUVE9OX0FORF9PUFRJT05TKTtcclxuICAgIGNvbnN0IGVtYmVkZGVkVmlld1JlZiA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5vcHRpb25zV3JhcHBlcik7XHJcbiAgICBjb25zdCBub2RlID0gZW1iZWRkZWRWaWV3UmVmLnJvb3ROb2Rlc1swXTtcclxuICAgIGNvbnN0IG5vZGVTdHlsZXMgPSBub2RlLnN0eWxlO1xyXG5cclxuICAgIHRoaXMuaXNPcHRpb25zTGlzdEFib3ZlID0gZGlzdGFuY2VUb0JvdHRvbSA8IHRoaXMuZ2V0T3B0aW9uc0xpc3RIZWlnaHRDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQ7XHJcblxyXG4gICAgZW1iZWRkZWRWaWV3UmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICBub2RlU3R5bGVzLndpZHRoID0gdGhpcy5lbGVtZW50Lm9mZnNldFdpZHRoICsgJ3B4JztcclxuICAgIG5vZGVTdHlsZXMubGVmdCA9IHdpbmRvdy5zY3JvbGxYICsgZWxlbWVudFJlY3RMZWZ0ICsgJ3B4JztcclxuXHJcbiAgICBpZiAodGhpcy5pc09wdGlvbnNMaXN0QWJvdmUpIHtcclxuICAgICAgbm9kZVN0eWxlcy50b3AgPSB3aW5kb3cuc2Nyb2xsWSArIGVsZW1lbnRSZWN0VG9wXHJcbiAgICAgICAgLSB0aGlzLmdldE9wdGlvbnNMaXN0SGVpZ2h0Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0XHJcbiAgICAgICAgLSB0aGlzLlNQQUNFX0JFVFdFRU5fQlVUVE9OX0FORF9PUFRJT05TXHJcbiAgICAgICAgKyAncHgnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbm9kZVN0eWxlcy50b3AgPSB3aW5kb3cuc2Nyb2xsWSArIGVsZW1lbnRSZWN0Qm90dG9tICsgdGhpcy5TUEFDRV9CRVRXRUVOX0JVVFRPTl9BTkRfT1BUSU9OUyArICdweCc7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKENVSV9ST09UX1NFTEVDVE9SKSEuYXBwZW5kQ2hpbGQoZW1iZWRkZWRWaWV3UmVmLnJvb3ROb2Rlc1swXSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNsb3NlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc09wZW5lZCA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMuY2xlYXJWaWV3Q29udGFpbmVyUmVmKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNsZWFyVmlld0NvbnRhaW5lclJlZigpOiB2b2lkIHtcclxuICAgIHRoaXMudmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xyXG4gIH1cclxufVxyXG4iLCI8YnV0dG9uXHJcbiAgI2J1dHRvblxyXG4gIHR5cGU9XCJidXR0b25cIlxyXG4gIFthdHRyLmlkXT1cImlkXCJcclxuICBbYXR0ci5kYXRhLXNpemVdPVwic2l6ZVwiXHJcbiAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxyXG4gIGNsYXNzPVwiYy1idXR0b25cIlxyXG4gIFtjbGFzcy5jLWJ1dHRvbl9hY3RpdmVdPVwiaXNPcGVuZWRcIlxyXG4gIFtjbGFzcy5jLWJ1dHRvbl93aXRoLWVycm9yXT1cImlzRXJyb3JcIlxyXG4gIChjbGljayk9XCJvblN3aXRjaCgpXCJcclxuPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZE9wdGlvbjsgZWxzZSBwbGFjZWhvbGRlclRlbXBsYXRlXCI+XHJcbiAgICB7eyBzZWxlY3RlZE9wdGlvbi5sYWJlbCB9fVxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxuZy10ZW1wbGF0ZSAjcGxhY2Vob2xkZXJUZW1wbGF0ZT5cclxuICAgIDxzcGFuIGNsYXNzPVwiYy1wbGFjZWhvbGRlclwiPnt7IHBsYWNlaG9sZGVyIH19PC9zcGFuPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbiAgPGN1aS1zdmdcclxuICAgIGljb249XCJjdWlJY29uQ2hldnJvbkRvd25cIlxyXG4gICAgY29sb3I9XCJ2YXIoLS1jdWktYmFzZS01MDApXCJcclxuICAvPlxyXG48L2J1dHRvbj5cclxuPG5nLXRlbXBsYXRlICNvcHRpb25zV3JhcHBlcj5cclxuICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiYy1vcHRpb25zX193cmFwcGVyXCJcclxuICAgICAgW2NsYXNzLmMtb3B0aW9uc19fd3JhcHBlcl90b3BdPVwiaXNPcHRpb25zTGlzdEFib3ZlXCJcclxuICA+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwib3B0aW9uc0xpc3RcIi8+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxkaXZcclxuICAjZ2V0T3B0aW9uc0xpc3RIZWlnaHRDb250YWluZXJcclxuICBjbGFzcz1cImMtZ2V0LW9wdGlvbnMtbGlzdC1oZWlnaHQtY29udGFpbmVyXCJcclxuPlxyXG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJvcHRpb25zTGlzdFwiLz5cclxuPC9kaXY+XHJcbjxuZy10ZW1wbGF0ZSAjb3B0aW9uc0xpc3Q+XHJcbiAgPHVsXHJcbiAgICBjbGFzcz1cImMtb3B0aW9uc1wiXHJcbiAgICBbY2xhc3MuYy1vcHRpb25zX3RvcF09XCJpc09wdGlvbnNMaXN0QWJvdmVcIlxyXG4gID5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcHRpb25zLmxlbmd0aDsgZWxzZSBlbXB0eVwiPlxyXG4gICAgICA8bGkgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvcHRpb25zOyB0cmFja0J5OiB0cmFja0J5Rm5cIj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgIGNsYXNzPVwiYy1vcHRpb24tYnV0dG9uXCJcclxuICAgICAgICAgIFtjbGFzcy5jLW9wdGlvbi1idXR0b25fc2VsZWN0ZWRdPVwic2VsZWN0ZWRPcHRpb24gPT09IG9wdGlvblwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwib3B0aW9uLmlzRGlzYWJsZWRcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0KG9wdGlvbilcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxzcGFuPnt7IG9wdGlvbi5sYWJlbCB9fTwvc3Bhbj5cclxuICAgICAgICAgIDxjdWktc3ZnXHJcbiAgICAgICAgICAgICpuZ0lmPVwic2VsZWN0ZWRPcHRpb24gPT09IG9wdGlvblwiXHJcbiAgICAgICAgICAgIGljb249XCJjdWlJY29uQ2hlY2tTbVwiXHJcbiAgICAgICAgICAgIGNvbG9yPVwidmFyKC0tY3VpLWluZm8pXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJjLW9wdGlvbi1idXR0b25fX2ljb25cIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9saT5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLXRlbXBsYXRlICNlbXB0eT5cclxuICAgICAgPGxpICpuZ0lmPVwiZGVmYXVsdE9wdGlvblRleHRcIj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgIGNsYXNzPVwiYy1vcHRpb24tYnV0dG9uXCJcclxuICAgICAgICAgIChjbGljayk9XCJvbkNsb3NlKClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IGRlZmF1bHRPcHRpb25UZXh0IH19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvbGk+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvdWw+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { CuiSelectComponent } from './select.component';
|
|
4
|
-
import { CuiSvgModule } from '../svg';
|
|
5
|
-
import { CuiTextFieldControllerModule } from '../../directives';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
export class CuiSelectModule {
|
|
8
|
-
}
|
|
9
|
-
CuiSelectModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
10
|
-
CuiSelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: CuiSelectModule, declarations: [CuiSelectComponent], imports: [CommonModule,
|
|
11
|
-
CuiSvgModule], exports: [CuiSelectComponent,
|
|
12
|
-
CuiTextFieldControllerModule] });
|
|
13
|
-
CuiSelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiSelectModule, imports: [CommonModule,
|
|
14
|
-
CuiSvgModule, CuiTextFieldControllerModule] });
|
|
15
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiSelectModule, decorators: [{
|
|
16
|
-
type: NgModule,
|
|
17
|
-
args: [{
|
|
18
|
-
imports: [
|
|
19
|
-
CommonModule,
|
|
20
|
-
CuiSvgModule
|
|
21
|
-
],
|
|
22
|
-
declarations: [CuiSelectComponent],
|
|
23
|
-
exports: [
|
|
24
|
-
CuiSelectComponent,
|
|
25
|
-
CuiTextFieldControllerModule
|
|
26
|
-
]
|
|
27
|
-
}]
|
|
28
|
-
}] });
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { CuiSelectComponent } from './select.component';
|
|
4
|
+
import { CuiSvgModule } from '../svg';
|
|
5
|
+
import { CuiTextFieldControllerModule } from '../../directives';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class CuiSelectModule {
|
|
8
|
+
}
|
|
9
|
+
CuiSelectModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
10
|
+
CuiSelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: CuiSelectModule, declarations: [CuiSelectComponent], imports: [CommonModule,
|
|
11
|
+
CuiSvgModule], exports: [CuiSelectComponent,
|
|
12
|
+
CuiTextFieldControllerModule] });
|
|
13
|
+
CuiSelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiSelectModule, imports: [CommonModule,
|
|
14
|
+
CuiSvgModule, CuiTextFieldControllerModule] });
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiSelectModule, decorators: [{
|
|
16
|
+
type: NgModule,
|
|
17
|
+
args: [{
|
|
18
|
+
imports: [
|
|
19
|
+
CommonModule,
|
|
20
|
+
CuiSvgModule
|
|
21
|
+
],
|
|
22
|
+
declarations: [CuiSelectComponent],
|
|
23
|
+
exports: [
|
|
24
|
+
CuiSelectComponent,
|
|
25
|
+
CuiTextFieldControllerModule
|
|
26
|
+
]
|
|
27
|
+
}]
|
|
28
|
+
}] });
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9zZWxlY3Qvc2VsZWN0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQWFoRSxNQUFNLE9BQU8sZUFBZTs7NkdBQWYsZUFBZTs4R0FBZixlQUFlLGlCQU5YLGtCQUFrQixhQUgvQixZQUFZO1FBQ1osWUFBWSxhQUlaLGtCQUFrQjtRQUNsQiw0QkFBNEI7OEdBR25CLGVBQWUsWUFUeEIsWUFBWTtRQUNaLFlBQVksRUFLWiw0QkFBNEI7NEZBR25CLGVBQWU7a0JBWDNCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osWUFBWTtxQkFDYjtvQkFDRCxZQUFZLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztvQkFDbEMsT0FBTyxFQUFFO3dCQUNQLGtCQUFrQjt3QkFDbEIsNEJBQTRCO3FCQUM3QjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5pbXBvcnQgeyBDdWlTZWxlY3RDb21wb25lbnQgfSBmcm9tICcuL3NlbGVjdC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDdWlTdmdNb2R1bGUgfSBmcm9tICcuLi9zdmcnO1xyXG5pbXBvcnQgeyBDdWlUZXh0RmllbGRDb250cm9sbGVyTW9kdWxlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcyc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEN1aVN2Z01vZHVsZVxyXG4gIF0sXHJcbiAgZGVjbGFyYXRpb25zOiBbQ3VpU2VsZWN0Q29tcG9uZW50XSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBDdWlTZWxlY3RDb21wb25lbnQsXHJcbiAgICBDdWlUZXh0RmllbGRDb250cm9sbGVyTW9kdWxlXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3VpU2VsZWN0TW9kdWxlIHtcclxufVxyXG4iXX0=
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from './svg.component';
|
|
2
|
-
export * from './svg.module';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export * from './svg.component';
|
|
2
|
+
export * from './svg.module';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvc3ZnL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3N2Zy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3N2Zy5tb2R1bGUnO1xyXG4iXX0=
|