cps-ui-kit 0.165.0 → 17.1.0
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/esm2022/lib/components/cps-autocomplete/cps-autocomplete.component.mjs +824 -0
- package/esm2022/lib/components/cps-button/cps-button.component.mjs +190 -0
- package/esm2022/lib/components/cps-button-toggle/cps-button-toggle.component.mjs +235 -0
- package/esm2022/lib/components/cps-checkbox/cps-checkbox.component.mjs +149 -0
- package/esm2022/lib/components/cps-chip/cps-chip.component.mjs +94 -0
- package/esm2022/lib/components/cps-datepicker/cps-datepicker.component.mjs +382 -0
- package/esm2022/lib/components/cps-expansion-panel/cps-expansion-panel.component.mjs +209 -0
- package/esm2022/lib/components/cps-file-upload/cps-file-upload.component.mjs +138 -0
- package/esm2022/lib/components/cps-icon/cps-icon.component.mjs +193 -0
- package/esm2022/lib/components/cps-info-circle/cps-info-circle.component.mjs +61 -0
- package/esm2022/lib/components/cps-input/cps-input.component.mjs +386 -0
- package/{esm2020 → esm2022}/lib/components/cps-loader/cps-loader.component.mjs +5 -5
- package/esm2022/lib/components/cps-menu/cps-menu.component.mjs +552 -0
- package/esm2022/lib/components/cps-paginator/cps-paginator.component.mjs +114 -0
- package/esm2022/lib/components/cps-paginator/pipes/cps-paginate.pipe.mjs +30 -0
- package/{esm2020 → esm2022}/lib/components/cps-progress-circular/cps-progress-circular.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/cps-progress-linear/cps-progress-linear.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/cps-radio-group/cps-radio/cps-radio.component.mjs +7 -7
- package/esm2022/lib/components/cps-radio-group/cps-radio-button/cps-radio-button.component.mjs +55 -0
- package/esm2022/lib/components/cps-radio-group/cps-radio-group.component.mjs +158 -0
- package/esm2022/lib/components/cps-select/cps-select.component.mjs +615 -0
- package/esm2022/lib/components/cps-sidebar-menu/cps-sidebar-menu.component.mjs +110 -0
- package/{esm2020 → esm2022}/lib/components/cps-tab-group/cps-tab/cps-tab.component.mjs +4 -4
- package/esm2022/lib/components/cps-tab-group/cps-tab-group.component.mjs +303 -0
- package/esm2022/lib/components/cps-table/components/internal/cps-sort-icon/cps-sort-icon.component.mjs +79 -0
- package/esm2022/lib/components/cps-table/components/internal/table-column-filter/table-column-filter.component.mjs +408 -0
- package/esm2022/lib/components/cps-table/components/internal/table-column-filter-constraint/table-column-filter-constraint.component.mjs +149 -0
- package/esm2022/lib/components/cps-table/components/internal/table-row-menu/table-row-menu.component.mjs +88 -0
- package/esm2022/lib/components/cps-table/cps-table.component.mjs +941 -0
- package/esm2022/lib/components/cps-table/directives/cps-table-column-filter.directive.mjs +181 -0
- package/{esm2020 → esm2022}/lib/components/cps-table/directives/cps-table-column-sortable.directive.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/cps-table/directives/cps-table-header-selectable.directive.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/cps-table/directives/cps-table-row-selectable.directive.mjs +5 -5
- package/esm2022/lib/components/cps-table/directives/internal/table-unsort.directive.mjs +220 -0
- package/esm2022/lib/components/cps-tag/cps-tag.component.mjs +136 -0
- package/esm2022/lib/components/cps-textarea/cps-textarea.component.mjs +291 -0
- package/esm2022/lib/components/cps-timepicker/cps-timepicker.component.mjs +351 -0
- package/esm2022/lib/components/cps-tree-autocomplete/cps-tree-autocomplete.component.mjs +251 -0
- package/esm2022/lib/components/cps-tree-select/cps-tree-select.component.mjs +87 -0
- package/esm2022/lib/components/cps-tree-table/cps-tree-table.component.mjs +1196 -0
- package/{esm2020 → esm2022}/lib/components/cps-tree-table/directives/cps-tree-table-column-filter.directive.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/cps-tree-table/directives/cps-tree-table-column-sortable.directive.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/cps-tree-table/directives/cps-tree-table-header-selectable.directive.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/cps-tree-table/directives/cps-tree-table-row-selectable.directive.mjs +5 -5
- package/esm2022/lib/components/cps-tree-table/directives/cps-tree-table-row-toggler.directive.mjs +43 -0
- package/esm2022/lib/components/cps-tree-table/directives/internal/tree-table-unsort.directive.mjs +354 -0
- package/esm2022/lib/components/internal/cps-base-tree-dropdown/cps-base-tree-dropdown.component.mjs +619 -0
- package/esm2022/lib/directives/cps-tooltip/cps-tooltip.directive.mjs +257 -0
- package/{esm2020 → esm2022}/lib/pipes/internal/check-option-selected.pipe.mjs +4 -4
- package/esm2022/lib/pipes/internal/combine-labels.pipe.mjs +25 -0
- package/{esm2020 → esm2022}/lib/pipes/internal/label-by-value.pipe.mjs +4 -4
- package/esm2022/lib/services/cps-dialog/cps-dialog.service.mjs +99 -0
- package/{esm2020 → esm2022}/lib/services/cps-dialog/internal/components/cps-confirmation/cps-confirmation.component.mjs +5 -5
- package/esm2022/lib/services/cps-dialog/internal/components/cps-dialog/cps-dialog.component.mjs +470 -0
- package/{esm2020 → esm2022}/lib/services/cps-dialog/internal/directives/cps-dialog-content.directive.mjs +5 -5
- package/esm2022/lib/services/cps-dialog/utils/cps-dialog-config.mjs +3 -0
- package/esm2022/lib/services/cps-notification/cps-notification.service.mjs +126 -0
- package/esm2022/lib/services/cps-notification/internal/components/cps-notification-container/cps-notification-container.component.mjs +91 -0
- package/{esm2020 → esm2022}/lib/services/cps-notification/internal/components/cps-toast/cps-toast.component.mjs +23 -23
- package/esm2022/lib/utils/colors-utils.mjs +57 -0
- package/esm2022/lib/utils/internal/size-utils.mjs +24 -0
- package/{esm2020 → esm2022}/public-api.mjs +2 -2
- package/{fesm2020 → fesm2022}/cps-ui-kit.mjs +481 -391
- package/fesm2022/cps-ui-kit.mjs.map +1 -0
- package/lib/components/cps-autocomplete/cps-autocomplete.component.d.ts +2 -2
- package/lib/components/cps-button/cps-button.component.d.ts +1 -1
- package/lib/components/cps-button-toggle/cps-button-toggle.component.d.ts +2 -2
- package/lib/components/cps-checkbox/cps-checkbox.component.d.ts +2 -2
- package/lib/components/cps-chip/cps-chip.component.d.ts +1 -1
- package/lib/components/cps-datepicker/cps-datepicker.component.d.ts +2 -2
- package/lib/components/cps-expansion-panel/cps-expansion-panel.component.d.ts +1 -1
- package/lib/components/cps-file-upload/cps-file-upload.component.d.ts +1 -1
- package/lib/components/cps-icon/cps-icon.component.d.ts +1 -1
- package/lib/components/cps-info-circle/cps-info-circle.component.d.ts +2 -2
- package/lib/components/cps-input/cps-input.component.d.ts +2 -2
- package/lib/components/cps-loader/cps-loader.component.d.ts +1 -1
- package/lib/components/cps-menu/cps-menu.component.d.ts +1 -1
- package/lib/components/cps-paginator/cps-paginator.component.d.ts +1 -1
- package/lib/components/cps-progress-circular/cps-progress-circular.component.d.ts +1 -1
- package/lib/components/cps-progress-linear/cps-progress-linear.component.d.ts +1 -1
- package/lib/components/cps-radio-group/cps-radio/cps-radio.component.d.ts +1 -1
- package/lib/components/cps-radio-group/cps-radio-button/cps-radio-button.component.d.ts +1 -1
- package/lib/components/cps-radio-group/cps-radio-group.component.d.ts +2 -2
- package/lib/components/cps-select/cps-select.component.d.ts +2 -2
- package/lib/components/cps-sidebar-menu/cps-sidebar-menu.component.d.ts +1 -1
- package/lib/components/cps-tab-group/cps-tab/cps-tab.component.d.ts +1 -1
- package/lib/components/cps-tab-group/cps-tab-group.component.d.ts +1 -1
- package/lib/components/cps-table/components/internal/cps-sort-icon/cps-sort-icon.component.d.ts +1 -1
- package/lib/components/cps-table/components/internal/table-column-filter/table-column-filter.component.d.ts +1 -1
- package/lib/components/cps-table/components/internal/table-column-filter-constraint/table-column-filter-constraint.component.d.ts +1 -1
- package/lib/components/cps-table/components/internal/table-row-menu/table-row-menu.component.d.ts +1 -1
- package/lib/components/cps-table/cps-table.component.d.ts +1 -1
- package/lib/components/cps-table/directives/cps-table-column-filter.directive.d.ts +1 -1
- package/lib/components/cps-table/directives/cps-table-column-sortable.directive.d.ts +1 -1
- package/lib/components/cps-table/directives/cps-table-row-selectable.directive.d.ts +1 -1
- package/lib/components/cps-tag/cps-tag.component.d.ts +1 -1
- package/lib/components/cps-textarea/cps-textarea.component.d.ts +2 -2
- package/lib/components/cps-timepicker/cps-timepicker.component.d.ts +2 -2
- package/lib/components/cps-tree-autocomplete/cps-tree-autocomplete.component.d.ts +1 -1
- package/lib/components/cps-tree-select/cps-tree-select.component.d.ts +1 -1
- package/lib/components/cps-tree-table/cps-tree-table.component.d.ts +4 -4
- package/lib/components/cps-tree-table/directives/cps-tree-table-column-filter.directive.d.ts +1 -1
- package/lib/components/cps-tree-table/directives/cps-tree-table-column-sortable.directive.d.ts +1 -1
- package/lib/components/cps-tree-table/directives/cps-tree-table-row-selectable.directive.d.ts +1 -1
- package/lib/components/cps-tree-table/directives/cps-tree-table-row-toggler.directive.d.ts +1 -1
- package/lib/components/internal/cps-base-tree-dropdown/cps-base-tree-dropdown.component.d.ts +2 -2
- package/lib/directives/{cps-tooltip.directive.d.ts → cps-tooltip/cps-tooltip.directive.d.ts} +2 -2
- package/lib/services/cps-dialog/cps-dialog.service.d.ts +13 -0
- package/lib/services/cps-dialog/utils/cps-dialog-config.d.ts +1 -1
- package/lib/services/cps-notification/cps-notification.service.d.ts +32 -0
- package/lib/services/cps-notification/internal/components/cps-notification-container/cps-notification-container.component.d.ts +1 -1
- package/lib/services/cps-notification/internal/components/cps-toast/cps-toast.component.d.ts +1 -1
- package/package.json +12 -18
- package/public-api.d.ts +1 -1
- package/esm2020/lib/components/cps-autocomplete/cps-autocomplete.component.mjs +0 -824
- package/esm2020/lib/components/cps-button/cps-button.component.mjs +0 -190
- package/esm2020/lib/components/cps-button-toggle/cps-button-toggle.component.mjs +0 -235
- package/esm2020/lib/components/cps-checkbox/cps-checkbox.component.mjs +0 -149
- package/esm2020/lib/components/cps-chip/cps-chip.component.mjs +0 -94
- package/esm2020/lib/components/cps-datepicker/cps-datepicker.component.mjs +0 -382
- package/esm2020/lib/components/cps-expansion-panel/cps-expansion-panel.component.mjs +0 -209
- package/esm2020/lib/components/cps-file-upload/cps-file-upload.component.mjs +0 -138
- package/esm2020/lib/components/cps-icon/cps-icon.component.mjs +0 -193
- package/esm2020/lib/components/cps-info-circle/cps-info-circle.component.mjs +0 -61
- package/esm2020/lib/components/cps-input/cps-input.component.mjs +0 -386
- package/esm2020/lib/components/cps-menu/cps-menu.component.mjs +0 -552
- package/esm2020/lib/components/cps-paginator/cps-paginator.component.mjs +0 -113
- package/esm2020/lib/components/cps-paginator/pipes/cps-paginate.pipe.mjs +0 -30
- package/esm2020/lib/components/cps-radio-group/cps-radio-button/cps-radio-button.component.mjs +0 -55
- package/esm2020/lib/components/cps-radio-group/cps-radio-group.component.mjs +0 -158
- package/esm2020/lib/components/cps-select/cps-select.component.mjs +0 -615
- package/esm2020/lib/components/cps-sidebar-menu/cps-sidebar-menu.component.mjs +0 -110
- package/esm2020/lib/components/cps-tab-group/cps-tab-group.component.mjs +0 -299
- package/esm2020/lib/components/cps-table/components/internal/cps-sort-icon/cps-sort-icon.component.mjs +0 -79
- package/esm2020/lib/components/cps-table/components/internal/table-column-filter/table-column-filter.component.mjs +0 -408
- package/esm2020/lib/components/cps-table/components/internal/table-column-filter-constraint/table-column-filter-constraint.component.mjs +0 -148
- package/esm2020/lib/components/cps-table/components/internal/table-row-menu/table-row-menu.component.mjs +0 -88
- package/esm2020/lib/components/cps-table/cps-table.component.mjs +0 -940
- package/esm2020/lib/components/cps-table/directives/cps-table-column-filter.directive.mjs +0 -181
- package/esm2020/lib/components/cps-table/directives/internal/table-unsort.directive.mjs +0 -210
- package/esm2020/lib/components/cps-tag/cps-tag.component.mjs +0 -136
- package/esm2020/lib/components/cps-textarea/cps-textarea.component.mjs +0 -291
- package/esm2020/lib/components/cps-timepicker/cps-timepicker.component.mjs +0 -351
- package/esm2020/lib/components/cps-tree-autocomplete/cps-tree-autocomplete.component.mjs +0 -250
- package/esm2020/lib/components/cps-tree-select/cps-tree-select.component.mjs +0 -87
- package/esm2020/lib/components/cps-tree-table/cps-tree-table.component.mjs +0 -1192
- package/esm2020/lib/components/cps-tree-table/directives/cps-tree-table-row-toggler.directive.mjs +0 -43
- package/esm2020/lib/components/cps-tree-table/directives/internal/tree-table-unsort.directive.mjs +0 -334
- package/esm2020/lib/components/internal/cps-base-tree-dropdown/cps-base-tree-dropdown.component.mjs +0 -616
- package/esm2020/lib/directives/cps-tooltip.directive.mjs +0 -257
- package/esm2020/lib/pipes/internal/combine-labels.pipe.mjs +0 -25
- package/esm2020/lib/services/cps-dialog/cps-dialog.service.mjs +0 -86
- package/esm2020/lib/services/cps-dialog/internal/components/cps-dialog/cps-dialog.component.mjs +0 -470
- package/esm2020/lib/services/cps-dialog/utils/cps-dialog-config.mjs +0 -3
- package/esm2020/lib/services/cps-notification/cps-notification.service.mjs +0 -94
- package/esm2020/lib/services/cps-notification/internal/components/cps-notification-container/cps-notification-container.component.mjs +0 -91
- package/esm2020/lib/utils/colors-utils.mjs +0 -57
- package/esm2020/lib/utils/internal/size-utils.mjs +0 -24
- package/fesm2015/cps-ui-kit.mjs +0 -12086
- package/fesm2015/cps-ui-kit.mjs.map +0 -1
- package/fesm2020/cps-ui-kit.mjs.map +0 -1
- /package/{esm2020 → esm2022}/cps-ui-kit.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/cps-table/cps-column-filter-types.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/cps-dialog/utils/cps-dialog-ref.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/cps-notification/utils/cps-notification-config.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/cps-notification/utils/internal/cps-notification-data.mjs +0 -0
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import { CpsIconComponent } from '../cps-icon/cps-icon.component';
|
|
3
|
-
import { CpsTooltipDirective } from '../../directives/cps-tooltip.directive';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
/**
|
|
6
|
-
* CpsInfoCircleComponent is a component that provides information by means of the info icon with the tooltip on hover.
|
|
7
|
-
* @group Components
|
|
8
|
-
*/
|
|
9
|
-
export class CpsInfoCircleComponent {
|
|
10
|
-
constructor() {
|
|
11
|
-
/**
|
|
12
|
-
* Size of the icon, it can be of type number denoting pixels, string or 'fill', 'xsmall', 'small', 'normal' or 'large'.
|
|
13
|
-
* @group Props
|
|
14
|
-
*/
|
|
15
|
-
this.size = 'small';
|
|
16
|
-
/**
|
|
17
|
-
* Tooltip text to provide more info.
|
|
18
|
-
* @group Props
|
|
19
|
-
*/
|
|
20
|
-
this.tooltipText = '';
|
|
21
|
-
/**
|
|
22
|
-
* Position of the tooltip, it can be 'top', 'bottom', 'left' or 'right'.
|
|
23
|
-
* @group Props
|
|
24
|
-
*/
|
|
25
|
-
this.tooltipPosition = 'top';
|
|
26
|
-
/**
|
|
27
|
-
* Info tooltip class for styling.
|
|
28
|
-
* @group Props
|
|
29
|
-
*/
|
|
30
|
-
this.tooltipContentClass = 'cps-tooltip-content';
|
|
31
|
-
/**
|
|
32
|
-
* Max width of the tooltip of type number denoting pixels or string.
|
|
33
|
-
* @group Props
|
|
34
|
-
*/
|
|
35
|
-
this.tooltipMaxWidth = '100%';
|
|
36
|
-
/**
|
|
37
|
-
* Determines whether the tooltip is persistent.
|
|
38
|
-
* @group Props
|
|
39
|
-
*/
|
|
40
|
-
this.tooltipPersistent = false;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
CpsInfoCircleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CpsInfoCircleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
44
|
-
CpsInfoCircleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: CpsInfoCircleComponent, isStandalone: true, selector: "cps-info-circle", inputs: { size: "size", tooltipText: "tooltipText", tooltipPosition: "tooltipPosition", tooltipContentClass: "tooltipContentClass", tooltipMaxWidth: "tooltipMaxWidth", tooltipPersistent: "tooltipPersistent" }, ngImport: i0, template: "<cps-icon\n icon=\"info-circle\"\n [size]=\"size\"\n color=\"info\"\n [cpsTooltip]=\"tooltipText\"\n tooltipOpenDelay=\"0\"\n tooltipCloseDelay=\"100\"\n [tooltipPosition]=\"tooltipPosition\"\n [tooltipMaxWidth]=\"tooltipMaxWidth\"\n [tooltipPersistent]=\"tooltipPersistent\"\n [tooltipContentClass]=\"tooltipContentClass\">\n</cps-icon>\n", styles: [":host{display:inline-flex}\n"], dependencies: [{ kind: "component", type: CpsIconComponent, selector: "cps-icon", inputs: ["icon", "size", "color"] }, { kind: "directive", type: CpsTooltipDirective, selector: "[cpsTooltip]", inputs: ["cpsTooltip", "tooltipOpenDelay", "tooltipCloseDelay", "tooltipOpenOn", "tooltipPosition", "tooltipPersistent", "tooltipDisabled", "tooltipMaxWidth", "tooltipContentClass"] }] });
|
|
45
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CpsInfoCircleComponent, decorators: [{
|
|
46
|
-
type: Component,
|
|
47
|
-
args: [{ selector: 'cps-info-circle', standalone: true, imports: [CpsIconComponent, CpsTooltipDirective], template: "<cps-icon\n icon=\"info-circle\"\n [size]=\"size\"\n color=\"info\"\n [cpsTooltip]=\"tooltipText\"\n tooltipOpenDelay=\"0\"\n tooltipCloseDelay=\"100\"\n [tooltipPosition]=\"tooltipPosition\"\n [tooltipMaxWidth]=\"tooltipMaxWidth\"\n [tooltipPersistent]=\"tooltipPersistent\"\n [tooltipContentClass]=\"tooltipContentClass\">\n</cps-icon>\n", styles: [":host{display:inline-flex}\n"] }]
|
|
48
|
-
}], propDecorators: { size: [{
|
|
49
|
-
type: Input
|
|
50
|
-
}], tooltipText: [{
|
|
51
|
-
type: Input
|
|
52
|
-
}], tooltipPosition: [{
|
|
53
|
-
type: Input
|
|
54
|
-
}], tooltipContentClass: [{
|
|
55
|
-
type: Input
|
|
56
|
-
}], tooltipMaxWidth: [{
|
|
57
|
-
type: Input
|
|
58
|
-
}], tooltipPersistent: [{
|
|
59
|
-
type: Input
|
|
60
|
-
}] } });
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BzLWluZm8tY2lyY2xlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nwcy11aS1raXQvc3JjL2xpYi9jb21wb25lbnRzL2Nwcy1pbmZvLWNpcmNsZS9jcHMtaW5mby1jaXJjbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY3BzLWluZm8tY2lyY2xlL2Nwcy1pbmZvLWNpcmNsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQWdCLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEYsT0FBTyxFQUNMLG1CQUFtQixFQUVwQixNQUFNLHdDQUF3QyxDQUFDOztBQUVoRDs7O0dBR0c7QUFRSCxNQUFNLE9BQU8sc0JBQXNCO0lBUG5DO1FBUUU7OztXQUdHO1FBQ00sU0FBSSxHQUFpQixPQUFPLENBQUM7UUFFdEM7OztXQUdHO1FBQ00sZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFFMUI7OztXQUdHO1FBQ00sb0JBQWUsR0FBdUIsS0FBSyxDQUFDO1FBRXJEOzs7V0FHRztRQUNNLHdCQUFtQixHQUFHLHFCQUFxQixDQUFDO1FBRXJEOzs7V0FHRztRQUNNLG9CQUFlLEdBQW9CLE1BQU0sQ0FBQztRQUVuRDs7O1dBR0c7UUFDTSxzQkFBaUIsR0FBRyxLQUFLLENBQUM7S0FDcEM7O21IQXBDWSxzQkFBc0I7dUdBQXRCLHNCQUFzQiw2UkNsQm5DLCtWQVlBLHNGREVZLGdCQUFnQix3RkFBRSxtQkFBbUI7MkZBSXBDLHNCQUFzQjtrQkFQbEMsU0FBUzsrQkFDRSxpQkFBaUIsY0FDZixJQUFJLFdBQ1AsQ0FBQyxnQkFBZ0IsRUFBRSxtQkFBbUIsQ0FBQzs4QkFTdkMsSUFBSTtzQkFBWixLQUFLO2dCQU1HLFdBQVc7c0JBQW5CLEtBQUs7Z0JBTUcsZUFBZTtzQkFBdkIsS0FBSztnQkFNRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBTUcsZUFBZTtzQkFBdkIsS0FBSztnQkFNRyxpQkFBaUI7c0JBQXpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDcHNJY29uQ29tcG9uZW50LCBpY29uU2l6ZVR5cGUgfSBmcm9tICcuLi9jcHMtaWNvbi9jcHMtaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgQ3BzVG9vbHRpcERpcmVjdGl2ZSxcbiAgQ3BzVG9vbHRpcFBvc2l0aW9uXG59IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvY3BzLXRvb2x0aXAuZGlyZWN0aXZlJztcblxuLyoqXG4gKiBDcHNJbmZvQ2lyY2xlQ29tcG9uZW50IGlzIGEgY29tcG9uZW50IHRoYXQgcHJvdmlkZXMgaW5mb3JtYXRpb24gYnkgbWVhbnMgb2YgdGhlIGluZm8gaWNvbiB3aXRoIHRoZSB0b29sdGlwIG9uIGhvdmVyLlxuICogQGdyb3VwIENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3BzLWluZm8tY2lyY2xlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0Nwc0ljb25Db21wb25lbnQsIENwc1Rvb2x0aXBEaXJlY3RpdmVdLFxuICB0ZW1wbGF0ZVVybDogJy4vY3BzLWluZm8tY2lyY2xlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3BzLWluZm8tY2lyY2xlLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ3BzSW5mb0NpcmNsZUNvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBTaXplIG9mIHRoZSBpY29uLCBpdCBjYW4gYmUgb2YgdHlwZSBudW1iZXIgZGVub3RpbmcgcGl4ZWxzLCBzdHJpbmcgb3IgJ2ZpbGwnLCAneHNtYWxsJywgJ3NtYWxsJywgJ25vcm1hbCcgb3IgJ2xhcmdlJy5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBzaXplOiBpY29uU2l6ZVR5cGUgPSAnc21hbGwnO1xuXG4gIC8qKlxuICAgKiBUb29sdGlwIHRleHQgdG8gcHJvdmlkZSBtb3JlIGluZm8uXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgdG9vbHRpcFRleHQgPSAnJztcblxuICAvKipcbiAgICogUG9zaXRpb24gb2YgdGhlIHRvb2x0aXAsIGl0IGNhbiBiZSAndG9wJywgJ2JvdHRvbScsICdsZWZ0JyBvciAncmlnaHQnLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHRvb2x0aXBQb3NpdGlvbjogQ3BzVG9vbHRpcFBvc2l0aW9uID0gJ3RvcCc7XG5cbiAgLyoqXG4gICAqIEluZm8gdG9vbHRpcCBjbGFzcyBmb3Igc3R5bGluZy5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSB0b29sdGlwQ29udGVudENsYXNzID0gJ2Nwcy10b29sdGlwLWNvbnRlbnQnO1xuXG4gIC8qKlxuICAgKiBNYXggd2lkdGggb2YgdGhlIHRvb2x0aXAgb2YgdHlwZSBudW1iZXIgZGVub3RpbmcgcGl4ZWxzIG9yIHN0cmluZy5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSB0b29sdGlwTWF4V2lkdGg6IG51bWJlciB8IHN0cmluZyA9ICcxMDAlJztcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSB0b29sdGlwIGlzIHBlcnNpc3RlbnQuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgdG9vbHRpcFBlcnNpc3RlbnQgPSBmYWxzZTtcbn1cbiIsIjxjcHMtaWNvblxuICBpY29uPVwiaW5mby1jaXJjbGVcIlxuICBbc2l6ZV09XCJzaXplXCJcbiAgY29sb3I9XCJpbmZvXCJcbiAgW2Nwc1Rvb2x0aXBdPVwidG9vbHRpcFRleHRcIlxuICB0b29sdGlwT3BlbkRlbGF5PVwiMFwiXG4gIHRvb2x0aXBDbG9zZURlbGF5PVwiMTAwXCJcbiAgW3Rvb2x0aXBQb3NpdGlvbl09XCJ0b29sdGlwUG9zaXRpb25cIlxuICBbdG9vbHRpcE1heFdpZHRoXT1cInRvb2x0aXBNYXhXaWR0aFwiXG4gIFt0b29sdGlwUGVyc2lzdGVudF09XCJ0b29sdGlwUGVyc2lzdGVudFwiXG4gIFt0b29sdGlwQ29udGVudENsYXNzXT1cInRvb2x0aXBDb250ZW50Q2xhc3NcIj5cbjwvY3BzLWljb24+XG4iXX0=
|
|
@@ -1,386 +0,0 @@
|
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { Component, EventEmitter, Input, Optional, Output, Self, ViewChild } from '@angular/core';
|
|
3
|
-
import { CpsIconComponent } from '../cps-icon/cps-icon.component';
|
|
4
|
-
import { Subscription } from 'rxjs';
|
|
5
|
-
import { convertSize } from '../../utils/internal/size-utils';
|
|
6
|
-
import { CpsProgressLinearComponent } from '../cps-progress-linear/cps-progress-linear.component';
|
|
7
|
-
import { CpsInfoCircleComponent } from '../cps-info-circle/cps-info-circle.component';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "@angular/forms";
|
|
10
|
-
import * as i2 from "@angular/common";
|
|
11
|
-
/**
|
|
12
|
-
* CpsInputComponent is used to enter values in a certain formats such as numeric, text or password.
|
|
13
|
-
* @group Components
|
|
14
|
-
*/
|
|
15
|
-
export class CpsInputComponent {
|
|
16
|
-
/**
|
|
17
|
-
* Value of the input.
|
|
18
|
-
* @group Props
|
|
19
|
-
*/
|
|
20
|
-
set value(value) {
|
|
21
|
-
if (!value)
|
|
22
|
-
value = '';
|
|
23
|
-
this._value = value;
|
|
24
|
-
this.onChange(value);
|
|
25
|
-
}
|
|
26
|
-
get value() {
|
|
27
|
-
return this._value;
|
|
28
|
-
}
|
|
29
|
-
constructor(_control, elementRef, cdRef) {
|
|
30
|
-
this._control = _control;
|
|
31
|
-
this.elementRef = elementRef;
|
|
32
|
-
this.cdRef = cdRef;
|
|
33
|
-
/**
|
|
34
|
-
* Label of the input element.
|
|
35
|
-
* @group Props
|
|
36
|
-
*/
|
|
37
|
-
this.label = '';
|
|
38
|
-
/**
|
|
39
|
-
* Bottom hint text for the input field.
|
|
40
|
-
* @group Props
|
|
41
|
-
*/
|
|
42
|
-
this.hint = '';
|
|
43
|
-
/**
|
|
44
|
-
* Placeholder text for the input field.
|
|
45
|
-
* @group Props
|
|
46
|
-
*/
|
|
47
|
-
this.placeholder = 'Please enter';
|
|
48
|
-
/**
|
|
49
|
-
* Determines whether input is disabled.
|
|
50
|
-
* @group Props
|
|
51
|
-
*/
|
|
52
|
-
this.disabled = false;
|
|
53
|
-
/**
|
|
54
|
-
* Determines whether input is readonly.
|
|
55
|
-
* @group Props
|
|
56
|
-
*/
|
|
57
|
-
this.readonly = false;
|
|
58
|
-
/**
|
|
59
|
-
* Width of the input field, of type number denoting pixels or string.
|
|
60
|
-
* @group Props
|
|
61
|
-
*/
|
|
62
|
-
this.width = '100%';
|
|
63
|
-
/**
|
|
64
|
-
* Type of the input of type 'text', 'number' or 'password'.
|
|
65
|
-
* @group Props
|
|
66
|
-
*/
|
|
67
|
-
this.type = 'text';
|
|
68
|
-
/**
|
|
69
|
-
* When enabled, a loading bar is displayed.
|
|
70
|
-
* @group Props
|
|
71
|
-
*/
|
|
72
|
-
this.loading = false;
|
|
73
|
-
/**
|
|
74
|
-
* When enabled, a clear icon is displayed to clear the value.
|
|
75
|
-
* @group Props
|
|
76
|
-
*/
|
|
77
|
-
this.clearable = false;
|
|
78
|
-
/**
|
|
79
|
-
* Icon before input value.
|
|
80
|
-
* @group Props
|
|
81
|
-
*/
|
|
82
|
-
this.prefixIcon = '';
|
|
83
|
-
/**
|
|
84
|
-
* When enabled, prefixIcon is clickable.
|
|
85
|
-
* @group Props
|
|
86
|
-
*/
|
|
87
|
-
this.prefixIconClickable = false;
|
|
88
|
-
/**
|
|
89
|
-
* Size of icon before input value, of type number or string or it can be a value 'fill', 'xsmall', 'small', 'normal' or 'large'.
|
|
90
|
-
* @group Props
|
|
91
|
-
*/
|
|
92
|
-
this.prefixIconSize = '18px';
|
|
93
|
-
/**
|
|
94
|
-
* Text before input value.
|
|
95
|
-
* @group Props
|
|
96
|
-
*/
|
|
97
|
-
this.prefixText = '';
|
|
98
|
-
/**
|
|
99
|
-
* Hides hint and validation errors.
|
|
100
|
-
* @group Props
|
|
101
|
-
*/
|
|
102
|
-
this.hideDetails = false;
|
|
103
|
-
/**
|
|
104
|
-
* Determines whether the component should have persistent clear icon.
|
|
105
|
-
* @group Props
|
|
106
|
-
*/
|
|
107
|
-
this.persistentClear = false;
|
|
108
|
-
/**
|
|
109
|
-
* Error message.
|
|
110
|
-
* @group Props
|
|
111
|
-
*/
|
|
112
|
-
this.error = '';
|
|
113
|
-
/**
|
|
114
|
-
* When it is not an empty string, an info icon is displayed to show text for more info.
|
|
115
|
-
* @group Props
|
|
116
|
-
*/
|
|
117
|
-
this.infoTooltip = '';
|
|
118
|
-
/**
|
|
119
|
-
* InfoTooltip class for styling.
|
|
120
|
-
* @group Props
|
|
121
|
-
*/
|
|
122
|
-
this.infoTooltipClass = 'cps-tooltip-content';
|
|
123
|
-
/**
|
|
124
|
-
* Max width of infoTooltip, of type number denoting pixels or string.
|
|
125
|
-
* @group Props
|
|
126
|
-
*/
|
|
127
|
-
this.infoTooltipMaxWidth = '100%';
|
|
128
|
-
/**
|
|
129
|
-
* Determines whether the infoTooltip is persistent.
|
|
130
|
-
* @group Props
|
|
131
|
-
*/
|
|
132
|
-
this.infoTooltipPersistent = false;
|
|
133
|
-
/**
|
|
134
|
-
* Position of infoTooltip, it can be 'top', 'bottom', 'left' or 'right'.
|
|
135
|
-
* @group Props
|
|
136
|
-
*/
|
|
137
|
-
this.infoTooltipPosition = 'top';
|
|
138
|
-
/**
|
|
139
|
-
* Styling appearance of input field, it can be "outlined" or "underlined" or "borderless".
|
|
140
|
-
* @group Props
|
|
141
|
-
*/
|
|
142
|
-
this.appearance = 'outlined';
|
|
143
|
-
/**
|
|
144
|
-
* Readonly value to display inside of input field.
|
|
145
|
-
* @group Props
|
|
146
|
-
*/
|
|
147
|
-
this.valueToDisplay = '';
|
|
148
|
-
/**
|
|
149
|
-
* Callback to invoke on value change.
|
|
150
|
-
* @param {string} string - value changed.
|
|
151
|
-
* @group Emits
|
|
152
|
-
*/
|
|
153
|
-
this.valueChanged = new EventEmitter();
|
|
154
|
-
/**
|
|
155
|
-
* Callback to invoke when the component receives focus.
|
|
156
|
-
* @param {any}
|
|
157
|
-
* @group Emits
|
|
158
|
-
*/
|
|
159
|
-
this.focused = new EventEmitter();
|
|
160
|
-
/**
|
|
161
|
-
* Callback to invoke when the prefix icon is clicked.
|
|
162
|
-
* @param {any}
|
|
163
|
-
* @group Emits
|
|
164
|
-
*/
|
|
165
|
-
this.prefixIconClicked = new EventEmitter();
|
|
166
|
-
/**
|
|
167
|
-
* Callback to invoke when the component loses focus.
|
|
168
|
-
* @param {any}
|
|
169
|
-
* @group Emits
|
|
170
|
-
*/
|
|
171
|
-
this.blurred = new EventEmitter();
|
|
172
|
-
/**
|
|
173
|
-
* Callback to invoke when x icon is clicked.
|
|
174
|
-
* @param {any}
|
|
175
|
-
* @group Emits
|
|
176
|
-
*/
|
|
177
|
-
this.cleared = new EventEmitter();
|
|
178
|
-
/**
|
|
179
|
-
* Callback to invoke when enter is clicked.
|
|
180
|
-
* @param {any}
|
|
181
|
-
* @group Emits
|
|
182
|
-
*/
|
|
183
|
-
this.enterClicked = new EventEmitter();
|
|
184
|
-
this.currentType = '';
|
|
185
|
-
this.prefixWidth = '';
|
|
186
|
-
this.cvtWidth = '';
|
|
187
|
-
this._statusChangesSubscription = new Subscription();
|
|
188
|
-
this._value = '';
|
|
189
|
-
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
190
|
-
this.onChange = (event) => { };
|
|
191
|
-
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
192
|
-
this.onTouched = () => { };
|
|
193
|
-
if (this._control) {
|
|
194
|
-
this._control.valueAccessor = this;
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
ngOnInit() {
|
|
198
|
-
this.currentType = this.type;
|
|
199
|
-
this.cvtWidth = convertSize(this.width);
|
|
200
|
-
this._statusChangesSubscription = this._control?.statusChanges?.subscribe(() => {
|
|
201
|
-
this._checkErrors();
|
|
202
|
-
});
|
|
203
|
-
}
|
|
204
|
-
ngAfterViewInit() {
|
|
205
|
-
let w = 0;
|
|
206
|
-
if (this.prefixText) {
|
|
207
|
-
w = this.prefixTextSpan?.nativeElement?.offsetWidth + 22;
|
|
208
|
-
}
|
|
209
|
-
if (this.prefixIcon) {
|
|
210
|
-
w += 38 - (this.prefixText ? 14 : 0);
|
|
211
|
-
}
|
|
212
|
-
this.prefixWidth = w > 0 ? `${w}px` : '';
|
|
213
|
-
this.cdRef.detectChanges();
|
|
214
|
-
}
|
|
215
|
-
ngOnDestroy() {
|
|
216
|
-
this._statusChangesSubscription?.unsubscribe();
|
|
217
|
-
}
|
|
218
|
-
_checkErrors() {
|
|
219
|
-
if (!this._control)
|
|
220
|
-
return;
|
|
221
|
-
const errors = this._control?.errors;
|
|
222
|
-
if (!this._control?.control?.touched || !errors) {
|
|
223
|
-
this.error = '';
|
|
224
|
-
return;
|
|
225
|
-
}
|
|
226
|
-
if ('required' in errors) {
|
|
227
|
-
this.error = 'Field is required';
|
|
228
|
-
return;
|
|
229
|
-
}
|
|
230
|
-
if ('pattern' in errors) {
|
|
231
|
-
this.error = 'Value is invalid';
|
|
232
|
-
return;
|
|
233
|
-
}
|
|
234
|
-
if ('email' in errors) {
|
|
235
|
-
this.error = 'Email format is invalid';
|
|
236
|
-
return;
|
|
237
|
-
}
|
|
238
|
-
if ('minlength' in errors) {
|
|
239
|
-
// eslint-disable-next-line dot-notation
|
|
240
|
-
this.error = `Field must contain at least ${errors['minlength'].requiredLength} characters`;
|
|
241
|
-
return;
|
|
242
|
-
}
|
|
243
|
-
if ('maxlength' in errors) {
|
|
244
|
-
// eslint-disable-next-line dot-notation
|
|
245
|
-
this.error = `Field must contain ${errors['maxlength'].requiredLength} characters maximum`;
|
|
246
|
-
return;
|
|
247
|
-
}
|
|
248
|
-
const errArr = Object.values(errors);
|
|
249
|
-
if (errArr.length < 1) {
|
|
250
|
-
this.error = '';
|
|
251
|
-
return;
|
|
252
|
-
}
|
|
253
|
-
const message = errArr.find((msg) => typeof msg === 'string');
|
|
254
|
-
this.error = message || 'Unknown error';
|
|
255
|
-
}
|
|
256
|
-
onInputEnterKeyDown() {
|
|
257
|
-
this.elementRef?.nativeElement?.querySelector('input')?.blur();
|
|
258
|
-
this.enterClicked.emit();
|
|
259
|
-
}
|
|
260
|
-
registerOnChange(fn) {
|
|
261
|
-
this.onChange = fn;
|
|
262
|
-
}
|
|
263
|
-
registerOnTouched(fn) {
|
|
264
|
-
this.onTouched = fn;
|
|
265
|
-
}
|
|
266
|
-
writeValue(value) {
|
|
267
|
-
this.value = value;
|
|
268
|
-
}
|
|
269
|
-
updateValueEvent(event) {
|
|
270
|
-
const value = event?.target?.value || '';
|
|
271
|
-
this._updateValue(value);
|
|
272
|
-
}
|
|
273
|
-
_updateValue(value) {
|
|
274
|
-
this.writeValue(value);
|
|
275
|
-
this.onChange(value);
|
|
276
|
-
this.valueChanged.emit(value);
|
|
277
|
-
}
|
|
278
|
-
onClear() {
|
|
279
|
-
this.clear();
|
|
280
|
-
this.cleared.emit();
|
|
281
|
-
}
|
|
282
|
-
clear() {
|
|
283
|
-
if (this.value !== '')
|
|
284
|
-
this._updateValue('');
|
|
285
|
-
}
|
|
286
|
-
togglePassword() {
|
|
287
|
-
this.currentType = this.currentType === 'password' ? 'text' : 'password';
|
|
288
|
-
}
|
|
289
|
-
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
290
|
-
setDisabledState(disabled) { }
|
|
291
|
-
onBlur() {
|
|
292
|
-
this._control?.control?.markAsTouched();
|
|
293
|
-
this._checkErrors();
|
|
294
|
-
this.blurred.emit();
|
|
295
|
-
}
|
|
296
|
-
onClickPrefixIcon() {
|
|
297
|
-
if (!this.prefixIconClickable || this.readonly || this.disabled)
|
|
298
|
-
return;
|
|
299
|
-
this.prefixIconClicked.emit();
|
|
300
|
-
}
|
|
301
|
-
onFocus() {
|
|
302
|
-
this.focused.emit();
|
|
303
|
-
}
|
|
304
|
-
focus() {
|
|
305
|
-
this.elementRef?.nativeElement?.querySelector('input')?.focus();
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
CpsInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CpsInputComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
309
|
-
CpsInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: CpsInputComponent, isStandalone: true, selector: "cps-input", inputs: { label: "label", hint: "hint", placeholder: "placeholder", disabled: "disabled", readonly: "readonly", width: "width", type: "type", loading: "loading", clearable: "clearable", prefixIcon: "prefixIcon", prefixIconClickable: "prefixIconClickable", prefixIconSize: "prefixIconSize", prefixText: "prefixText", hideDetails: "hideDetails", persistentClear: "persistentClear", error: "error", infoTooltip: "infoTooltip", infoTooltipClass: "infoTooltipClass", infoTooltipMaxWidth: "infoTooltipMaxWidth", infoTooltipPersistent: "infoTooltipPersistent", infoTooltipPosition: "infoTooltipPosition", appearance: "appearance", valueToDisplay: "valueToDisplay", value: "value" }, outputs: { valueChanged: "valueChanged", focused: "focused", prefixIconClicked: "prefixIconClicked", blurred: "blurred", cleared: "cleared", enterClicked: "enterClicked" }, viewQueries: [{ propertyName: "prefixTextSpan", first: true, predicate: ["prefixTextSpan"], descendants: true }], ngImport: i0, template: "<div class=\"cps-input-container\" [ngStyle]=\"{ width: cvtWidth }\">\n <div\n class=\"cps-input-label\"\n [ngClass]=\"{ 'cps-input-label-disabled': disabled && !readonly }\"\n *ngIf=\"label\">\n <label>{{ label }}</label>\n <cps-info-circle\n *ngIf=\"infoTooltip\"\n class=\"cps-input-label-info-circle\"\n size=\"xsmall\"\n [tooltipPosition]=\"infoTooltipPosition\"\n [tooltipContentClass]=\"infoTooltipClass\"\n [tooltipMaxWidth]=\"infoTooltipMaxWidth\"\n [tooltipPersistent]=\"infoTooltipPersistent\"\n [tooltipText]=\"infoTooltip\">\n </cps-info-circle>\n </div>\n\n <div\n class=\"cps-input-wrap\"\n [ngClass]=\"{\n password: type === 'password',\n 'cps-input-wrap-error': error,\n clearable: clearable,\n 'persistent-clear': persistentClear,\n borderless: appearance === 'borderless',\n underlined: appearance === 'underlined'\n }\">\n <input\n *ngIf=\"!valueToDisplay\"\n spellcheck=\"false\"\n [type]=\"currentType\"\n [value]=\"value\"\n (input)=\"updateValueEvent($event)\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n (keydown.enter)=\"onInputEnterKeyDown()\"\n [ngStyle]=\"{\n width: cvtWidth,\n 'padding-left': prefixWidth || 'none'\n }\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\" />\n\n <input\n *ngIf=\"valueToDisplay\"\n [value]=\"valueToDisplay\"\n [disabled]=\"true\"\n [readonly]=\"true\"\n [ngStyle]=\"{\n width: cvtWidth,\n 'padding-left': prefixWidth || 'none'\n }\" />\n\n <div class=\"cps-input-prefix\">\n <span *ngIf=\"prefixIcon\" class=\"cps-input-prefix-icon\">\n <cps-icon\n [icon]=\"prefixIcon\"\n [size]=\"prefixIconSize\"\n [style.color]=\"disabled ? '#9a9595' : null\"\n [style.cursor]=\"\n prefixIconClickable && !disabled && !readonly\n ? 'pointer'\n : 'default'\n \"\n (click)=\"onClickPrefixIcon()\">\n </cps-icon>\n </span>\n\n <span *ngIf=\"prefixText\" class=\"cps-input-prefix-text\" #prefixTextSpan>\n {{ prefixText }}\n </span>\n </div>\n\n <div class=\"cps-input-action-btns\" *ngIf=\"!disabled && !readonly\">\n <span\n *ngIf=\"clearable\"\n [style.visibility]=\"\n persistentClear || (!persistentClear && value) ? 'visible' : 'hidden'\n \"\n class=\"clear-btn\">\n <cps-icon icon=\"delete\" size=\"small\" (click)=\"onClear()\"></cps-icon>\n </span>\n\n <span\n *ngIf=\"type === 'password'\"\n class=\"password-show-btn\"\n [ngClass]=\"{ 'password-show-btn-active': currentType === 'text' }\">\n <cps-icon icon=\"eye\" size=\"18px\" (click)=\"togglePassword()\"></cps-icon>\n </span>\n </div>\n <cps-progress-linear\n *ngIf=\"loading\"\n height=\"3\"\n radius=\"4\"\n opacity=\"0.3\"\n class=\"cps-input-progress-bar\"\n bgColor=\"transparent\">\n </cps-progress-linear>\n </div>\n <div *ngIf=\"!error && !hideDetails\" class=\"cps-input-hint\">\n {{ hint }}\n </div>\n <div *ngIf=\"error && !hideDetails\" class=\"cps-input-error\">\n {{ error }}\n </div>\n</div>\n", styles: [":host{display:flex}:host .cps-input-container{width:100%;gap:.2rem!important;display:flex!important;flex-direction:column!important;font-family:Source Sans Pro,sans-serif}:host .cps-input-container .cps-input-wrap{position:relative;overflow:hidden}:host .cps-input-container .cps-input-wrap:hover input:enabled:not(:read-only){border:1px solid var(--cps-color-calm)}:host .cps-input-container .cps-input-wrap-error input{border-color:var(--cps-color-error)!important}:host .cps-input-container .cps-input-wrap-error input:not(:focus){background:#fef3f2!important}:host .cps-input-container .cps-input-wrap-error .cps-input-prefix-icon{color:var(--cps-color-error)!important}:host .cps-input-container .cps-input-wrap input{min-height:38px;font-family:Source Sans Pro,sans-serif;font-size:1rem;color:var(--cps-color-text-dark);background:#ffffff;padding:.375rem .75rem;line-height:1.5;border:1px solid var(--cps-color-line-light);transition-duration:.2s;-webkit-appearance:none;appearance:none;border-radius:4px;width:100%}:host .cps-input-container .cps-input-wrap input:focus{outline:0}:host .cps-input-container .cps-input-wrap input:focus:not(:read-only){border:1px solid var(--cps-color-calm)}:host .cps-input-container .cps-input-wrap input:read-only{cursor:default}:host .cps-input-container .cps-input-wrap input:disabled{opacity:1}:host .cps-input-container .cps-input-wrap input:disabled:not([readonly]){color:var(--cps-color-text-light);background-color:#f7f7f7;pointer-events:none}:host .cps-input-container .cps-input-wrap input[type=password]{font-family:Verdana}:host .cps-input-container .cps-input-wrap input:focus:not(:read-only)+.cps-input-prefix>.cps-input-prefix-icon,:host .cps-input-container .cps-input-wrap input:hover:not(:read-only)+.cps-input-prefix>.cps-input-prefix-icon{color:var(--cps-color-calm)}:host .cps-input-container .cps-input-wrap input:disabled+.cps-input-prefix>.cps-input-prefix-icon{color:var(--cps-color-text-dark)}:host .cps-input-container .cps-input-wrap input:focus+.cps-input-prefix+.cps-input-action-btns>.clear-btn cps-icon{opacity:.5}:host .cps-input-container .cps-input-wrap:hover .cps-input-action-btns .clear-btn cps-icon{opacity:.5}:host .cps-input-container .cps-input-wrap .cps-input-action-btns{display:flex;position:absolute;top:50%;right:.75rem;margin-top:-.5rem}:host .cps-input-container .cps-input-wrap .cps-input-action-btns .clear-btn{display:flex;cursor:pointer;color:var(--cps-color-calm)}:host .cps-input-container .cps-input-wrap .cps-input-action-btns .clear-btn cps-icon{opacity:0;transition-duration:.2s}:host .cps-input-container .cps-input-wrap .cps-input-action-btns .clear-btn cps-icon:hover{opacity:1!important}:host .cps-input-container .cps-input-wrap .cps-input-action-btns .password-show-btn{margin-left:.5rem;cursor:pointer;color:var(--cps-color-text-mild)}:host .cps-input-container .cps-input-wrap .cps-input-action-btns .password-show-btn-active{color:var(--cps-color-calm)}:host .cps-input-container .cps-input-wrap .cps-input-action-btns .password-show-btn cps-icon{transition-duration:.2s}:host .cps-input-container .cps-input-wrap .cps-input-action-btns .password-show-btn cps-icon:hover{color:var(--cps-color-calm)}:host .cps-input-container .cps-input-wrap input:not(:read-only)+.cps-input-prefix:hover>.cps-input-prefix-icon{color:var(--cps-color-calm)}:host .cps-input-container .cps-input-wrap .cps-input-prefix{display:flex;position:absolute;height:100%;top:50%;left:.8rem;transform:translateY(-50%)}:host .cps-input-container .cps-input-wrap .cps-input-prefix-icon{display:flex;flex-direction:column;justify-content:center;transition-duration:.2s;margin-right:.5rem;color:var(--cps-color-text-dark)}:host .cps-input-container .cps-input-wrap .cps-input-prefix-text{display:flex;flex-direction:column;justify-content:center;color:var(--cps-color-text-mild);cursor:default;line-height:1.2}:host .cps-input-container .cps-input-wrap .cps-input-progress-bar{position:absolute;bottom:1px;padding:0 1px;display:block}:host .cps-input-container .cps-input-wrap.borderless input,:host .cps-input-container .cps-input-wrap.underlined input{line-height:1;border:none!important;border-radius:0}:host .cps-input-container .cps-input-wrap.underlined input{border-bottom:1px solid var(--cps-color-line-light)!important}:host .cps-input-container .persistent-clear .cps-input-action-btns .clear-btn cps-icon{opacity:.5}:host .cps-input-container .password.clearable>input{padding-right:3.8rem}:host .cps-input-container .password>input,:host .cps-input-container .clearable>input{padding-right:2.2rem}:host .cps-input-container .cps-input-hint{color:var(--cps-color-text-mild);font-size:.75rem;min-height:1.125rem;line-height:1.125rem;cursor:default}:host .cps-input-container .cps-input-error{color:var(--cps-color-error);font-weight:700;font-size:.75rem;min-height:1.125rem;line-height:1.125rem;cursor:default}:host .cps-input-container .cps-input-label{color:var(--cps-color-text-dark);font-size:.875rem;align-items:center;display:inline-flex;font-weight:600}:host .cps-input-container .cps-input-label .cps-input-label-info-circle{margin-left:8px}:host .cps-input-container .cps-input-label-disabled{color:var(--cps-color-text-mild)}:host .cps-input-container ::placeholder{font-family:Source Sans Pro,sans-serif;color:var(--cps-color-text-lightest);font-style:italic;opacity:1}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: CpsIconComponent, selector: "cps-icon", inputs: ["icon", "size", "color"] }, { kind: "component", type: CpsInfoCircleComponent, selector: "cps-info-circle", inputs: ["size", "tooltipText", "tooltipPosition", "tooltipContentClass", "tooltipMaxWidth", "tooltipPersistent"] }, { kind: "component", type: CpsProgressLinearComponent, selector: "cps-progress-linear", inputs: ["width", "height", "color", "bgColor", "opacity", "radius"] }] });
|
|
310
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CpsInputComponent, decorators: [{
|
|
311
|
-
type: Component,
|
|
312
|
-
args: [{ standalone: true, imports: [
|
|
313
|
-
CommonModule,
|
|
314
|
-
CpsIconComponent,
|
|
315
|
-
CpsInfoCircleComponent,
|
|
316
|
-
CpsProgressLinearComponent
|
|
317
|
-
], selector: 'cps-input', template: "<div class=\"cps-input-container\" [ngStyle]=\"{ width: cvtWidth }\">\n <div\n class=\"cps-input-label\"\n [ngClass]=\"{ 'cps-input-label-disabled': disabled && !readonly }\"\n *ngIf=\"label\">\n <label>{{ label }}</label>\n <cps-info-circle\n *ngIf=\"infoTooltip\"\n class=\"cps-input-label-info-circle\"\n size=\"xsmall\"\n [tooltipPosition]=\"infoTooltipPosition\"\n [tooltipContentClass]=\"infoTooltipClass\"\n [tooltipMaxWidth]=\"infoTooltipMaxWidth\"\n [tooltipPersistent]=\"infoTooltipPersistent\"\n [tooltipText]=\"infoTooltip\">\n </cps-info-circle>\n </div>\n\n <div\n class=\"cps-input-wrap\"\n [ngClass]=\"{\n password: type === 'password',\n 'cps-input-wrap-error': error,\n clearable: clearable,\n 'persistent-clear': persistentClear,\n borderless: appearance === 'borderless',\n underlined: appearance === 'underlined'\n }\">\n <input\n *ngIf=\"!valueToDisplay\"\n spellcheck=\"false\"\n [type]=\"currentType\"\n [value]=\"value\"\n (input)=\"updateValueEvent($event)\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n (keydown.enter)=\"onInputEnterKeyDown()\"\n [ngStyle]=\"{\n width: cvtWidth,\n 'padding-left': prefixWidth || 'none'\n }\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\" />\n\n <input\n *ngIf=\"valueToDisplay\"\n [value]=\"valueToDisplay\"\n [disabled]=\"true\"\n [readonly]=\"true\"\n [ngStyle]=\"{\n width: cvtWidth,\n 'padding-left': prefixWidth || 'none'\n }\" />\n\n <div class=\"cps-input-prefix\">\n <span *ngIf=\"prefixIcon\" class=\"cps-input-prefix-icon\">\n <cps-icon\n [icon]=\"prefixIcon\"\n [size]=\"prefixIconSize\"\n [style.color]=\"disabled ? '#9a9595' : null\"\n [style.cursor]=\"\n prefixIconClickable && !disabled && !readonly\n ? 'pointer'\n : 'default'\n \"\n (click)=\"onClickPrefixIcon()\">\n </cps-icon>\n </span>\n\n <span *ngIf=\"prefixText\" class=\"cps-input-prefix-text\" #prefixTextSpan>\n {{ prefixText }}\n </span>\n </div>\n\n <div class=\"cps-input-action-btns\" *ngIf=\"!disabled && !readonly\">\n <span\n *ngIf=\"clearable\"\n [style.visibility]=\"\n persistentClear || (!persistentClear && value) ? 'visible' : 'hidden'\n \"\n class=\"clear-btn\">\n <cps-icon icon=\"delete\" size=\"small\" (click)=\"onClear()\"></cps-icon>\n </span>\n\n <span\n *ngIf=\"type === 'password'\"\n class=\"password-show-btn\"\n [ngClass]=\"{ 'password-show-btn-active': currentType === 'text' }\">\n <cps-icon icon=\"eye\" size=\"18px\" (click)=\"togglePassword()\"></cps-icon>\n </span>\n </div>\n <cps-progress-linear\n *ngIf=\"loading\"\n height=\"3\"\n radius=\"4\"\n opacity=\"0.3\"\n class=\"cps-input-progress-bar\"\n bgColor=\"transparent\">\n </cps-progress-linear>\n </div>\n <div *ngIf=\"!error && !hideDetails\" class=\"cps-input-hint\">\n {{ hint }}\n </div>\n <div *ngIf=\"error && !hideDetails\" class=\"cps-input-error\">\n {{ error }}\n </div>\n</div>\n", styles: [":host{display:flex}:host .cps-input-container{width:100%;gap:.2rem!important;display:flex!important;flex-direction:column!important;font-family:Source Sans Pro,sans-serif}:host .cps-input-container .cps-input-wrap{position:relative;overflow:hidden}:host .cps-input-container .cps-input-wrap:hover input:enabled:not(:read-only){border:1px solid var(--cps-color-calm)}:host .cps-input-container .cps-input-wrap-error input{border-color:var(--cps-color-error)!important}:host .cps-input-container .cps-input-wrap-error input:not(:focus){background:#fef3f2!important}:host .cps-input-container .cps-input-wrap-error .cps-input-prefix-icon{color:var(--cps-color-error)!important}:host .cps-input-container .cps-input-wrap input{min-height:38px;font-family:Source Sans Pro,sans-serif;font-size:1rem;color:var(--cps-color-text-dark);background:#ffffff;padding:.375rem .75rem;line-height:1.5;border:1px solid var(--cps-color-line-light);transition-duration:.2s;-webkit-appearance:none;appearance:none;border-radius:4px;width:100%}:host .cps-input-container .cps-input-wrap input:focus{outline:0}:host .cps-input-container .cps-input-wrap input:focus:not(:read-only){border:1px solid var(--cps-color-calm)}:host .cps-input-container .cps-input-wrap input:read-only{cursor:default}:host .cps-input-container .cps-input-wrap input:disabled{opacity:1}:host .cps-input-container .cps-input-wrap input:disabled:not([readonly]){color:var(--cps-color-text-light);background-color:#f7f7f7;pointer-events:none}:host .cps-input-container .cps-input-wrap input[type=password]{font-family:Verdana}:host .cps-input-container .cps-input-wrap input:focus:not(:read-only)+.cps-input-prefix>.cps-input-prefix-icon,:host .cps-input-container .cps-input-wrap input:hover:not(:read-only)+.cps-input-prefix>.cps-input-prefix-icon{color:var(--cps-color-calm)}:host .cps-input-container .cps-input-wrap input:disabled+.cps-input-prefix>.cps-input-prefix-icon{color:var(--cps-color-text-dark)}:host .cps-input-container .cps-input-wrap input:focus+.cps-input-prefix+.cps-input-action-btns>.clear-btn cps-icon{opacity:.5}:host .cps-input-container .cps-input-wrap:hover .cps-input-action-btns .clear-btn cps-icon{opacity:.5}:host .cps-input-container .cps-input-wrap .cps-input-action-btns{display:flex;position:absolute;top:50%;right:.75rem;margin-top:-.5rem}:host .cps-input-container .cps-input-wrap .cps-input-action-btns .clear-btn{display:flex;cursor:pointer;color:var(--cps-color-calm)}:host .cps-input-container .cps-input-wrap .cps-input-action-btns .clear-btn cps-icon{opacity:0;transition-duration:.2s}:host .cps-input-container .cps-input-wrap .cps-input-action-btns .clear-btn cps-icon:hover{opacity:1!important}:host .cps-input-container .cps-input-wrap .cps-input-action-btns .password-show-btn{margin-left:.5rem;cursor:pointer;color:var(--cps-color-text-mild)}:host .cps-input-container .cps-input-wrap .cps-input-action-btns .password-show-btn-active{color:var(--cps-color-calm)}:host .cps-input-container .cps-input-wrap .cps-input-action-btns .password-show-btn cps-icon{transition-duration:.2s}:host .cps-input-container .cps-input-wrap .cps-input-action-btns .password-show-btn cps-icon:hover{color:var(--cps-color-calm)}:host .cps-input-container .cps-input-wrap input:not(:read-only)+.cps-input-prefix:hover>.cps-input-prefix-icon{color:var(--cps-color-calm)}:host .cps-input-container .cps-input-wrap .cps-input-prefix{display:flex;position:absolute;height:100%;top:50%;left:.8rem;transform:translateY(-50%)}:host .cps-input-container .cps-input-wrap .cps-input-prefix-icon{display:flex;flex-direction:column;justify-content:center;transition-duration:.2s;margin-right:.5rem;color:var(--cps-color-text-dark)}:host .cps-input-container .cps-input-wrap .cps-input-prefix-text{display:flex;flex-direction:column;justify-content:center;color:var(--cps-color-text-mild);cursor:default;line-height:1.2}:host .cps-input-container .cps-input-wrap .cps-input-progress-bar{position:absolute;bottom:1px;padding:0 1px;display:block}:host .cps-input-container .cps-input-wrap.borderless input,:host .cps-input-container .cps-input-wrap.underlined input{line-height:1;border:none!important;border-radius:0}:host .cps-input-container .cps-input-wrap.underlined input{border-bottom:1px solid var(--cps-color-line-light)!important}:host .cps-input-container .persistent-clear .cps-input-action-btns .clear-btn cps-icon{opacity:.5}:host .cps-input-container .password.clearable>input{padding-right:3.8rem}:host .cps-input-container .password>input,:host .cps-input-container .clearable>input{padding-right:2.2rem}:host .cps-input-container .cps-input-hint{color:var(--cps-color-text-mild);font-size:.75rem;min-height:1.125rem;line-height:1.125rem;cursor:default}:host .cps-input-container .cps-input-error{color:var(--cps-color-error);font-weight:700;font-size:.75rem;min-height:1.125rem;line-height:1.125rem;cursor:default}:host .cps-input-container .cps-input-label{color:var(--cps-color-text-dark);font-size:.875rem;align-items:center;display:inline-flex;font-weight:600}:host .cps-input-container .cps-input-label .cps-input-label-info-circle{margin-left:8px}:host .cps-input-container .cps-input-label-disabled{color:var(--cps-color-text-mild)}:host .cps-input-container ::placeholder{font-family:Source Sans Pro,sans-serif;color:var(--cps-color-text-lightest);font-style:italic;opacity:1}\n"] }]
|
|
318
|
-
}], ctorParameters: function () { return [{ type: i1.NgControl, decorators: [{
|
|
319
|
-
type: Self
|
|
320
|
-
}, {
|
|
321
|
-
type: Optional
|
|
322
|
-
}] }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { label: [{
|
|
323
|
-
type: Input
|
|
324
|
-
}], hint: [{
|
|
325
|
-
type: Input
|
|
326
|
-
}], placeholder: [{
|
|
327
|
-
type: Input
|
|
328
|
-
}], disabled: [{
|
|
329
|
-
type: Input
|
|
330
|
-
}], readonly: [{
|
|
331
|
-
type: Input
|
|
332
|
-
}], width: [{
|
|
333
|
-
type: Input
|
|
334
|
-
}], type: [{
|
|
335
|
-
type: Input
|
|
336
|
-
}], loading: [{
|
|
337
|
-
type: Input
|
|
338
|
-
}], clearable: [{
|
|
339
|
-
type: Input
|
|
340
|
-
}], prefixIcon: [{
|
|
341
|
-
type: Input
|
|
342
|
-
}], prefixIconClickable: [{
|
|
343
|
-
type: Input
|
|
344
|
-
}], prefixIconSize: [{
|
|
345
|
-
type: Input
|
|
346
|
-
}], prefixText: [{
|
|
347
|
-
type: Input
|
|
348
|
-
}], hideDetails: [{
|
|
349
|
-
type: Input
|
|
350
|
-
}], persistentClear: [{
|
|
351
|
-
type: Input
|
|
352
|
-
}], error: [{
|
|
353
|
-
type: Input
|
|
354
|
-
}], infoTooltip: [{
|
|
355
|
-
type: Input
|
|
356
|
-
}], infoTooltipClass: [{
|
|
357
|
-
type: Input
|
|
358
|
-
}], infoTooltipMaxWidth: [{
|
|
359
|
-
type: Input
|
|
360
|
-
}], infoTooltipPersistent: [{
|
|
361
|
-
type: Input
|
|
362
|
-
}], infoTooltipPosition: [{
|
|
363
|
-
type: Input
|
|
364
|
-
}], appearance: [{
|
|
365
|
-
type: Input
|
|
366
|
-
}], valueToDisplay: [{
|
|
367
|
-
type: Input
|
|
368
|
-
}], value: [{
|
|
369
|
-
type: Input
|
|
370
|
-
}], valueChanged: [{
|
|
371
|
-
type: Output
|
|
372
|
-
}], focused: [{
|
|
373
|
-
type: Output
|
|
374
|
-
}], prefixIconClicked: [{
|
|
375
|
-
type: Output
|
|
376
|
-
}], blurred: [{
|
|
377
|
-
type: Output
|
|
378
|
-
}], cleared: [{
|
|
379
|
-
type: Output
|
|
380
|
-
}], enterClicked: [{
|
|
381
|
-
type: Output
|
|
382
|
-
}], prefixTextSpan: [{
|
|
383
|
-
type: ViewChild,
|
|
384
|
-
args: ['prefixTextSpan']
|
|
385
|
-
}] } });
|
|
386
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BzLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nwcy11aS1raXQvc3JjL2xpYi9jb21wb25lbnRzL2Nwcy1pbnB1dC9jcHMtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY3BzLWlucHV0L2Nwcy1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUdMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBQ04sSUFBSSxFQUNKLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsZ0JBQWdCLEVBR2pCLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDbEcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sOENBQThDLENBQUM7Ozs7QUFLdEY7OztHQUdHO0FBYUgsTUFBTSxPQUFPLGlCQUFpQjtJQTZJNUI7OztPQUdHO0lBQ0gsSUFBYSxLQUFLLENBQUMsS0FBYTtRQUM5QixJQUFJLENBQUMsS0FBSztZQUFFLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFD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SztnQkFNRyxjQUFjO3NCQUF0QixLQUFLO2dCQU1HLFVBQVU7c0JBQWxCLEtBQUs7Z0JBTUcsV0FBVztzQkFBbkIsS0FBSztnQkFNRyxlQUFlO3NCQUF2QixLQUFLO2dCQU1HLEtBQUs7c0JBQWIsS0FBSztnQkFNRyxXQUFXO3NCQUFuQixLQUFLO2dCQU1HLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFNRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBTUcscUJBQXFCO3NCQUE3QixLQUFLO2dCQU1HLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFNRyxVQUFVO3NCQUFsQixLQUFLO2dCQU1HLGNBQWM7c0JBQXRCLEtBQUs7Z0JBTU8sS0FBSztzQkFBakIsS0FBSztnQkFlSSxZQUFZO3NCQUFyQixNQUFNO2dCQU9HLE9BQU87c0JBQWhCLE1BQU07Z0JBT0csaUJBQWlCO3NCQUExQixNQUFNO2dCQU9HLE9BQU87c0JBQWhCLE1BQU07Z0JBT0csT0FBTztzQkFBaEIsTUFBTTtnQkFPRyxZQUFZO3NCQUFyQixNQUFNO2dCQUVzQixjQUFjO3NCQUExQyxTQUFTO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgU2VsZixcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIENwc0ljb25Db21wb25lbnQsXG4gIEljb25UeXBlLFxuICBpY29uU2l6ZVR5cGVcbn0gZnJvbSAnLi4vY3BzLWljb24vY3BzLWljb24uY29tcG9uZW50JztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY29udmVydFNpemUgfSBmcm9tICcuLi8uLi91dGlscy9pbnRlcm5hbC9zaXplLXV0aWxzJztcbmltcG9ydCB7IENwc1Byb2dyZXNzTGluZWFyQ29tcG9uZW50IH0gZnJvbSAnLi4vY3BzLXByb2dyZXNzLWxpbmVhci9jcHMtcHJvZ3Jlc3MtbGluZWFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDcHNJbmZvQ2lyY2xlQ29tcG9uZW50IH0gZnJvbSAnLi4vY3BzLWluZm8tY2lyY2xlL2Nwcy1pbmZvLWNpcmNsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3BzVG9vbHRpcFBvc2l0aW9uIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9jcHMtdG9vbHRpcC5kaXJlY3RpdmUnO1xuXG5leHBvcnQgdHlwZSBDcHNJbnB1dEFwcGVhcmFuY2VUeXBlID0gJ291dGxpbmVkJyB8ICd1bmRlcmxpbmVkJyB8ICdib3JkZXJsZXNzJztcblxuLyoqXG4gKiBDcHNJbnB1dENvbXBvbmVudCBpcyB1c2VkIHRvIGVudGVyIHZhbHVlcyBpbiBhIGNlcnRhaW4gZm9ybWF0cyBzdWNoIGFzIG51bWVyaWMsIHRleHQgb3IgcGFzc3dvcmQuXG4gKiBAZ3JvdXAgQ29tcG9uZW50c1xuICovXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBDcHNJY29uQ29tcG9uZW50LFxuICAgIENwc0luZm9DaXJjbGVDb21wb25lbnQsXG4gICAgQ3BzUHJvZ3Jlc3NMaW5lYXJDb21wb25lbnRcbiAgXSxcbiAgc2VsZWN0b3I6ICdjcHMtaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vY3BzLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3BzLWlucHV0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ3BzSW5wdXRDb21wb25lbnRcbiAgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3lcbntcbiAgLyoqXG4gICAqIExhYmVsIG9mIHRoZSBpbnB1dCBlbGVtZW50LlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGxhYmVsID0gJyc7XG5cbiAgLyoqXG4gICAqIEJvdHRvbSBoaW50IHRleHQgZm9yIHRoZSBpbnB1dCBmaWVsZC5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBoaW50ID0gJyc7XG5cbiAgLyoqXG4gICAqIFBsYWNlaG9sZGVyIHRleHQgZm9yIHRoZSBpbnB1dCBmaWVsZC5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICdQbGVhc2UgZW50ZXInO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgaW5wdXQgaXMgZGlzYWJsZWQuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIGlucHV0IGlzIHJlYWRvbmx5LlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHJlYWRvbmx5ID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFdpZHRoIG9mIHRoZSBpbnB1dCBmaWVsZCwgb2YgdHlwZSBudW1iZXIgZGVub3RpbmcgcGl4ZWxzIG9yIHN0cmluZy5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSB3aWR0aDogbnVtYmVyIHwgc3RyaW5nID0gJzEwMCUnO1xuXG4gIC8qKlxuICAgKiBUeXBlIG9mIHRoZSBpbnB1dCBvZiB0eXBlICd0ZXh0JywgJ251bWJlcicgb3IgJ3Bhc3N3b3JkJy5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSB0eXBlOiAndGV4dCcgfCAnbnVtYmVyJyB8ICdwYXNzd29yZCcgPSAndGV4dCc7XG5cbiAgLyoqXG4gICAqIFdoZW4gZW5hYmxlZCwgYSBsb2FkaW5nIGJhciBpcyBkaXNwbGF5ZWQuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgbG9hZGluZyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBXaGVuIGVuYWJsZWQsIGEgY2xlYXIgaWNvbiBpcyBkaXNwbGF5ZWQgdG8gY2xlYXIgdGhlIHZhbHVlLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGNsZWFyYWJsZSA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBJY29uIGJlZm9yZSBpbnB1dCB2YWx1ZS5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBwcmVmaXhJY29uOiBJY29uVHlwZSA9ICcnO1xuXG4gIC8qKlxuICAgKiBXaGVuIGVuYWJsZWQsIHByZWZpeEljb24gaXMgY2xpY2thYmxlLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHByZWZpeEljb25DbGlja2FibGUgPSBmYWxzZTtcblxuICAvKipcbiAgICogU2l6ZSBvZiBpY29uIGJlZm9yZSBpbnB1dCB2YWx1ZSwgb2YgdHlwZSBudW1iZXIgb3Igc3RyaW5nIG9yIGl0IGNhbiBiZSBhIHZhbHVlICdmaWxsJywgJ3hzbWFsbCcsICdzbWFsbCcsICdub3JtYWwnIG9yICdsYXJnZScuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgcHJlZml4SWNvblNpemU6IGljb25TaXplVHlwZSA9ICcxOHB4JztcblxuICAvKipcbiAgICogVGV4dCBiZWZvcmUgaW5wdXQgdmFsdWUuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgcHJlZml4VGV4dCA9ICcnO1xuXG4gIC8qKlxuICAgKiBIaWRlcyBoaW50IGFuZCB2YWxpZGF0aW9uIGVycm9ycy5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBoaWRlRGV0YWlscyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGNvbXBvbmVudCBzaG91bGQgaGF2ZSBwZXJzaXN0ZW50IGNsZWFyIGljb24uXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgcGVyc2lzdGVudENsZWFyID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEVycm9yIG1lc3NhZ2UuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgZXJyb3IgPSAnJztcblxuICAvKipcbiAgICogV2hlbiBpdCBpcyBub3QgYW4gZW1wdHkgc3RyaW5nLCBhbiBpbmZvIGljb24gaXMgZGlzcGxheWVkIHRvIHNob3cgdGV4dCBmb3IgbW9yZSBpbmZvLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGluZm9Ub29sdGlwID0gJyc7XG5cbiAgLyoqXG4gICAqIEluZm9Ub29sdGlwIGNsYXNzIGZvciBzdHlsaW5nLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGluZm9Ub29sdGlwQ2xhc3MgPSAnY3BzLXRvb2x0aXAtY29udGVudCc7XG5cbiAgLyoqXG4gICAqIE1heCB3aWR0aCBvZiBpbmZvVG9vbHRpcCwgb2YgdHlwZSBudW1iZXIgZGVub3RpbmcgcGl4ZWxzIG9yIHN0cmluZy5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBpbmZvVG9vbHRpcE1heFdpZHRoOiBudW1iZXIgfCBzdHJpbmcgPSAnMTAwJSc7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGUgaW5mb1Rvb2x0aXAgaXMgcGVyc2lzdGVudC5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBpbmZvVG9vbHRpcFBlcnNpc3RlbnQgPSBmYWxzZTtcblxuICAvKipcbiAgICogUG9zaXRpb24gb2YgaW5mb1Rvb2x0aXAsIGl0IGNhbiBiZSAndG9wJywgJ2JvdHRvbScsICdsZWZ0JyBvciAncmlnaHQnLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGluZm9Ub29sdGlwUG9zaXRpb246IENwc1Rvb2x0aXBQb3NpdGlvbiA9ICd0b3AnO1xuXG4gIC8qKlxuICAgKiBTdHlsaW5nIGFwcGVhcmFuY2Ugb2YgaW5wdXQgZmllbGQsIGl0IGNhbiBiZSBcIm91dGxpbmVkXCIgb3IgXCJ1bmRlcmxpbmVkXCIgb3IgXCJib3JkZXJsZXNzXCIuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgYXBwZWFyYW5jZTogQ3BzSW5wdXRBcHBlYXJhbmNlVHlwZSA9ICdvdXRsaW5lZCc7XG5cbiAgLyoqXG4gICAqIFJlYWRvbmx5IHZhbHVlIHRvIGRpc3BsYXkgaW5zaWRlIG9mIGlucHV0IGZpZWxkLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHZhbHVlVG9EaXNwbGF5ID0gJyc7XG5cbiAgLyoqXG4gICAqIFZhbHVlIG9mIHRoZSBpbnB1dC5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBzZXQgdmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgIGlmICghdmFsdWUpIHZhbHVlID0gJyc7XG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgfVxuXG4gIGdldCB2YWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB0byBpbnZva2Ugb24gdmFsdWUgY2hhbmdlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIC0gdmFsdWUgY2hhbmdlZC5cbiAgICogQGdyb3VwIEVtaXRzXG4gICAqL1xuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIHRoZSBjb21wb25lbnQgcmVjZWl2ZXMgZm9jdXMuXG4gICAqIEBwYXJhbSB7YW55fVxuICAgKiBAZ3JvdXAgRW1pdHNcbiAgICovXG4gIEBPdXRwdXQoKSBmb2N1c2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiB0aGUgcHJlZml4IGljb24gaXMgY2xpY2tlZC5cbiAgICogQHBhcmFtIHthbnl9XG4gICAqIEBncm91cCBFbWl0c1xuICAgKi9cbiAgQE91dHB1dCgpIHByZWZpeEljb25DbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiB0aGUgY29tcG9uZW50IGxvc2VzIGZvY3VzLlxuICAgKiBAcGFyYW0ge2FueX1cbiAgICogQGdyb3VwIEVtaXRzXG4gICAqL1xuICBAT3V0cHV0KCkgYmx1cnJlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4geCBpY29uIGlzIGNsaWNrZWQuXG4gICAqIEBwYXJhbSB7YW55fVxuICAgKiBAZ3JvdXAgRW1pdHNcbiAgICovXG4gIEBPdXRwdXQoKSBjbGVhcmVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiBlbnRlciBpcyBjbGlja2VkLlxuICAgKiBAcGFyYW0ge2FueX1cbiAgICogQGdyb3VwIEVtaXRzXG4gICAqL1xuICBAT3V0cHV0KCkgZW50ZXJDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBWaWV3Q2hpbGQoJ3ByZWZpeFRleHRTcGFuJykgcHJlZml4VGV4dFNwYW46IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG5cbiAgY3VycmVudFR5cGUgPSAnJztcbiAgcHJlZml4V2lkdGggPSAnJztcbiAgY3Z0V2lkdGggPSAnJztcblxuICBwcml2YXRlIF9zdGF0dXNDaGFuZ2VzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByaXZhdGUgX3ZhbHVlID0gJyc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQFNlbGYoKSBAT3B0aW9uYWwoKSBwcml2YXRlIF9jb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIGlmICh0aGlzLl9jb250cm9sKSB7XG4gICAgICB0aGlzLl9jb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudFR5cGUgPSB0aGlzLnR5cGU7XG4gICAgdGhpcy5jdnRXaWR0aCA9IGNvbnZlcnRTaXplKHRoaXMud2lkdGgpO1xuXG4gICAgdGhpcy5fc3RhdHVzQ2hhbmdlc1N1YnNjcmlwdGlvbiA9IHRoaXMuX2NvbnRyb2w/LnN0YXR1c0NoYW5nZXM/LnN1YnNjcmliZShcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy5fY2hlY2tFcnJvcnMoKTtcbiAgICAgIH1cbiAgICApIGFzIFN1YnNjcmlwdGlvbjtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBsZXQgdyA9IDA7XG4gICAgaWYgKHRoaXMucHJlZml4VGV4dCkge1xuICAgICAgdyA9IHRoaXMucHJlZml4VGV4dFNwYW4/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldFdpZHRoICsgMjI7XG4gICAgfVxuICAgIGlmICh0aGlzLnByZWZpeEljb24pIHtcbiAgICAgIHcgKz0gMzggLSAodGhpcy5wcmVmaXhUZXh0ID8gMTQgOiAwKTtcbiAgICB9XG4gICAgdGhpcy5wcmVmaXhXaWR0aCA9IHcgPiAwID8gYCR7d31weGAgOiAnJztcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX3N0YXR1c0NoYW5nZXNTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIF9jaGVja0Vycm9ycygpIHtcbiAgICBpZiAoIXRoaXMuX2NvbnRyb2wpIHJldHVybjtcbiAgICBjb25zdCBlcnJvcnMgPSB0aGlzLl9jb250cm9sPy5lcnJvcnM7XG5cbiAgICBpZiAoIXRoaXMuX2NvbnRyb2w/LmNvbnRyb2w/LnRvdWNoZWQgfHwgIWVycm9ycykge1xuICAgICAgdGhpcy5lcnJvciA9ICcnO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICgncmVxdWlyZWQnIGluIGVycm9ycykge1xuICAgICAgdGhpcy5lcnJvciA9ICdGaWVsZCBpcyByZXF1aXJlZCc7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCdwYXR0ZXJuJyBpbiBlcnJvcnMpIHtcbiAgICAgIHRoaXMuZXJyb3IgPSAnVmFsdWUgaXMgaW52YWxpZCc7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCdlbWFpbCcgaW4gZXJyb3JzKSB7XG4gICAgICB0aGlzLmVycm9yID0gJ0VtYWlsIGZvcm1hdCBpcyBpbnZhbGlkJztcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoJ21pbmxlbmd0aCcgaW4gZXJyb3JzKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZG90LW5vdGF0aW9uXG4gICAgICB0aGlzLmVycm9yID0gYEZpZWxkIG11c3QgY29udGFpbiBhdCBsZWFzdCAke2Vycm9yc1snbWlubGVuZ3RoJ10ucmVxdWlyZWRMZW5ndGh9IGNoYXJhY3RlcnNgO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICgnbWF4bGVuZ3RoJyBpbiBlcnJvcnMpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkb3Qtbm90YXRpb25cbiAgICAgIHRoaXMuZXJyb3IgPSBgRmllbGQgbXVzdCBjb250YWluICR7ZXJyb3JzWydtYXhsZW5ndGgnXS5yZXF1aXJlZExlbmd0aH0gY2hhcmFjdGVycyBtYXhpbXVtYDtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBlcnJBcnIgPSBPYmplY3QudmFsdWVzKGVycm9ycyk7XG4gICAgaWYgKGVyckFyci5sZW5ndGggPCAxKSB7XG4gICAgICB0aGlzLmVycm9yID0gJyc7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnJBcnIuZmluZCgobXNnKSA9PiB0eXBlb2YgbXNnID09PSAnc3RyaW5nJyk7XG5cbiAgICB0aGlzLmVycm9yID0gbWVzc2FnZSB8fCAnVW5rbm93biBlcnJvcic7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gIG9uQ2hhbmdlID0gKGV2ZW50OiBhbnkpID0+IHt9O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gIG9uVG91Y2hlZCA9ICgpID0+IHt9O1xuXG4gIG9uSW5wdXRFbnRlcktleURvd24oKSB7XG4gICAgdGhpcy5lbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50Py5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpPy5ibHVyKCk7XG4gICAgdGhpcy5lbnRlckNsaWNrZWQuZW1pdCgpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cblxuICB1cGRhdGVWYWx1ZUV2ZW50KGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCB2YWx1ZSA9IGV2ZW50Py50YXJnZXQ/LnZhbHVlIHx8ICcnO1xuICAgIHRoaXMuX3VwZGF0ZVZhbHVlKHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLndyaXRlVmFsdWUodmFsdWUpO1xuICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xuICAgIHRoaXMudmFsdWVDaGFuZ2VkLmVtaXQodmFsdWUpO1xuICB9XG5cbiAgb25DbGVhcigpIHtcbiAgICB0aGlzLmNsZWFyKCk7XG4gICAgdGhpcy5jbGVhcmVkLmVtaXQoKTtcbiAgfVxuXG4gIGNsZWFyKCkge1xuICAgIGlmICh0aGlzLnZhbHVlICE9PSAnJykgdGhpcy5fdXBkYXRlVmFsdWUoJycpO1xuICB9XG5cbiAgdG9nZ2xlUGFzc3dvcmQoKSB7XG4gICAgdGhpcy5jdXJyZW50VHlwZSA9IHRoaXMuY3VycmVudFR5cGUgPT09ICdwYXNzd29yZCcgPyAndGV4dCcgOiAncGFzc3dvcmQnO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICBzZXREaXNhYmxlZFN0YXRlKGRpc2FibGVkOiBib29sZWFuKSB7fVxuXG4gIG9uQmx1cigpIHtcbiAgICB0aGlzLl9jb250cm9sPy5jb250cm9sPy5tYXJrQXNUb3VjaGVkKCk7XG4gICAgdGhpcy5fY2hlY2tFcnJvcnMoKTtcbiAgICB0aGlzLmJsdXJyZWQuZW1pdCgpO1xuICB9XG5cbiAgb25DbGlja1ByZWZpeEljb24oKSB7XG4gICAgaWYgKCF0aGlzLnByZWZpeEljb25DbGlja2FibGUgfHwgdGhpcy5yZWFkb25seSB8fCB0aGlzLmRpc2FibGVkKSByZXR1cm47XG4gICAgdGhpcy5wcmVmaXhJY29uQ2xpY2tlZC5lbWl0KCk7XG4gIH1cblxuICBvbkZvY3VzKCkge1xuICAgIHRoaXMuZm9jdXNlZC5lbWl0KCk7XG4gIH1cblxuICBmb2N1cygpIHtcbiAgICB0aGlzLmVsZW1lbnRSZWY/Lm5hdGl2ZUVsZW1lbnQ/LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk/LmZvY3VzKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjcHMtaW5wdXQtY29udGFpbmVyXCIgW25nU3R5bGVdPVwieyB3aWR0aDogY3Z0V2lkdGggfVwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJjcHMtaW5wdXQtbGFiZWxcIlxuICAgIFtuZ0NsYXNzXT1cInsgJ2Nwcy1pbnB1dC1sYWJlbC1kaXNhYmxlZCc6IGRpc2FibGVkICYmICFyZWFkb25seSB9XCJcbiAgICAqbmdJZj1cImxhYmVsXCI+XG4gICAgPGxhYmVsPnt7IGxhYmVsIH19PC9sYWJlbD5cbiAgICA8Y3BzLWluZm8tY2lyY2xlXG4gICAgICAqbmdJZj1cImluZm9Ub29sdGlwXCJcbiAgICAgIGNsYXNzPVwiY3BzLWlucHV0LWxhYmVsLWluZm8tY2lyY2xlXCJcbiAgICAgIHNpemU9XCJ4c21hbGxcIlxuICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCJpbmZvVG9vbHRpcFBvc2l0aW9uXCJcbiAgICAgIFt0b29sdGlwQ29udGVudENsYXNzXT1cImluZm9Ub29sdGlwQ2xhc3NcIlxuICAgICAgW3Rvb2x0aXBNYXhXaWR0aF09XCJpbmZvVG9vbHRpcE1heFdpZHRoXCJcbiAgICAgIFt0b29sdGlwUGVyc2lzdGVudF09XCJpbmZvVG9vbHRpcFBlcnNpc3RlbnRcIlxuICAgICAgW3Rvb2x0aXBUZXh0XT1cImluZm9Ub29sdGlwXCI+XG4gICAgPC9jcHMtaW5mby1jaXJjbGU+XG4gIDwvZGl2PlxuXG4gIDxkaXZcbiAgICBjbGFzcz1cImNwcy1pbnB1dC13cmFwXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICBwYXNzd29yZDogdHlwZSA9PT0gJ3Bhc3N3b3JkJyxcbiAgICAgICdjcHMtaW5wdXQtd3JhcC1lcnJvcic6IGVycm9yLFxuICAgICAgY2xlYXJhYmxlOiBjbGVhcmFibGUsXG4gICAgICAncGVyc2lzdGVudC1jbGVhcic6IHBlcnNpc3RlbnRDbGVhcixcbiAgICAgIGJvcmRlcmxlc3M6IGFwcGVhcmFuY2UgPT09ICdib3JkZXJsZXNzJyxcbiAgICAgIHVuZGVybGluZWQ6IGFwcGVhcmFuY2UgPT09ICd1bmRlcmxpbmVkJ1xuICAgIH1cIj5cbiAgICA8aW5wdXRcbiAgICAgICpuZ0lmPVwiIXZhbHVlVG9EaXNwbGF5XCJcbiAgICAgIHNwZWxsY2hlY2s9XCJmYWxzZVwiXG4gICAgICBbdHlwZV09XCJjdXJyZW50VHlwZVwiXG4gICAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgICAgKGlucHV0KT1cInVwZGF0ZVZhbHVlRXZlbnQoJGV2ZW50KVwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAoa2V5ZG93bi5lbnRlcik9XCJvbklucHV0RW50ZXJLZXlEb3duKClcIlxuICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICB3aWR0aDogY3Z0V2lkdGgsXG4gICAgICAgICdwYWRkaW5nLWxlZnQnOiBwcmVmaXhXaWR0aCB8fCAnbm9uZSdcbiAgICAgIH1cIlxuICAgICAgKGJsdXIpPVwib25CbHVyKClcIlxuICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoKVwiIC8+XG5cbiAgICA8aW5wdXRcbiAgICAgICpuZ0lmPVwidmFsdWVUb0Rpc3BsYXlcIlxuICAgICAgW3ZhbHVlXT1cInZhbHVlVG9EaXNwbGF5XCJcbiAgICAgIFtkaXNhYmxlZF09XCJ0cnVlXCJcbiAgICAgIFtyZWFkb25seV09XCJ0cnVlXCJcbiAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgd2lkdGg6IGN2dFdpZHRoLFxuICAgICAgICAncGFkZGluZy1sZWZ0JzogcHJlZml4V2lkdGggfHwgJ25vbmUnXG4gICAgICB9XCIgLz5cblxuICAgIDxkaXYgY2xhc3M9XCJjcHMtaW5wdXQtcHJlZml4XCI+XG4gICAgICA8c3BhbiAqbmdJZj1cInByZWZpeEljb25cIiBjbGFzcz1cImNwcy1pbnB1dC1wcmVmaXgtaWNvblwiPlxuICAgICAgICA8Y3BzLWljb25cbiAgICAgICAgICBbaWNvbl09XCJwcmVmaXhJY29uXCJcbiAgICAgICAgICBbc2l6ZV09XCJwcmVmaXhJY29uU2l6ZVwiXG4gICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImRpc2FibGVkID8gJyM5YTk1OTUnIDogbnVsbFwiXG4gICAgICAgICAgW3N0eWxlLmN1cnNvcl09XCJcbiAgICAgICAgICAgIHByZWZpeEljb25DbGlja2FibGUgJiYgIWRpc2FibGVkICYmICFyZWFkb25seVxuICAgICAgICAgICAgICA/ICdwb2ludGVyJ1xuICAgICAgICAgICAgICA6ICdkZWZhdWx0J1xuICAgICAgICAgIFwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2tQcmVmaXhJY29uKClcIj5cbiAgICAgICAgPC9jcHMtaWNvbj5cbiAgICAgIDwvc3Bhbj5cblxuICAgICAgPHNwYW4gKm5nSWY9XCJwcmVmaXhUZXh0XCIgY2xhc3M9XCJjcHMtaW5wdXQtcHJlZml4LXRleHRcIiAjcHJlZml4VGV4dFNwYW4+XG4gICAgICAgIHt7IHByZWZpeFRleHQgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJjcHMtaW5wdXQtYWN0aW9uLWJ0bnNcIiAqbmdJZj1cIiFkaXNhYmxlZCAmJiAhcmVhZG9ubHlcIj5cbiAgICAgIDxzcGFuXG4gICAgICAgICpuZ0lmPVwiY2xlYXJhYmxlXCJcbiAgICAgICAgW3N0eWxlLnZpc2liaWxpdHldPVwiXG4gICAgICAgICAgcGVyc2lzdGVudENsZWFyIHx8ICghcGVyc2lzdGVudENsZWFyICYmIHZhbHVlKSA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nXG4gICAgICAgIFwiXG4gICAgICAgIGNsYXNzPVwiY2xlYXItYnRuXCI+XG4gICAgICAgIDxjcHMtaWNvbiBpY29uPVwiZGVsZXRlXCIgc2l6ZT1cInNtYWxsXCIgKGNsaWNrKT1cIm9uQ2xlYXIoKVwiPjwvY3BzLWljb24+XG4gICAgICA8L3NwYW4+XG5cbiAgICAgIDxzcGFuXG4gICAgICAgICpuZ0lmPVwidHlwZSA9PT0gJ3Bhc3N3b3JkJ1wiXG4gICAgICAgIGNsYXNzPVwicGFzc3dvcmQtc2hvdy1idG5cIlxuICAgICAgICBbbmdDbGFzc109XCJ7ICdwYXNzd29yZC1zaG93LWJ0bi1hY3RpdmUnOiBjdXJyZW50VHlwZSA9PT0gJ3RleHQnIH1cIj5cbiAgICAgICAgPGNwcy1pY29uIGljb249XCJleWVcIiBzaXplPVwiMThweFwiIChjbGljayk9XCJ0b2dnbGVQYXNzd29yZCgpXCI+PC9jcHMtaWNvbj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8Y3BzLXByb2dyZXNzLWxpbmVhclxuICAgICAgKm5nSWY9XCJsb2FkaW5nXCJcbiAgICAgIGhlaWdodD1cIjNcIlxuICAgICAgcmFkaXVzPVwiNFwiXG4gICAgICBvcGFjaXR5PVwiMC4zXCJcbiAgICAgIGNsYXNzPVwiY3BzLWlucHV0LXByb2dyZXNzLWJhclwiXG4gICAgICBiZ0NvbG9yPVwidHJhbnNwYXJlbnRcIj5cbiAgICA8L2Nwcy1wcm9ncmVzcy1saW5lYXI+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiIWVycm9yICYmICFoaWRlRGV0YWlsc1wiIGNsYXNzPVwiY3BzLWlucHV0LWhpbnRcIj5cbiAgICB7eyBoaW50IH19XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiZXJyb3IgJiYgIWhpZGVEZXRhaWxzXCIgY2xhc3M9XCJjcHMtaW5wdXQtZXJyb3JcIj5cbiAgICB7eyBlcnJvciB9fVxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|