cps-ui-kit 18.10.0 → 19.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/fesm2022/cps-ui-kit.mjs +281 -319
- package/fesm2022/cps-ui-kit.mjs.map +1 -1
- package/lib/components/cps-autocomplete/cps-autocomplete.component.d.ts +3 -3
- package/lib/components/cps-menu/cps-menu.component.d.ts +4 -3
- package/lib/components/cps-select/cps-select.component.d.ts +2 -2
- package/lib/services/cps-dialog/internal/components/cps-dialog/cps-dialog.component.d.ts +3 -3
- package/lib/services/cps-notification/internal/components/cps-notification-container/cps-notification-container.component.d.ts +3 -3
- package/package.json +6 -8
- package/styles/styles.scss +9 -0
- package/esm2022/cps-ui-kit.mjs +0 -5
- package/esm2022/lib/components/cps-autocomplete/cps-autocomplete.component.mjs +0 -948
- package/esm2022/lib/components/cps-button/cps-button.component.mjs +0 -205
- package/esm2022/lib/components/cps-button-toggle/cps-button-toggle.component.mjs +0 -239
- package/esm2022/lib/components/cps-checkbox/cps-checkbox.component.mjs +0 -154
- package/esm2022/lib/components/cps-chip/cps-chip.component.mjs +0 -94
- package/esm2022/lib/components/cps-datepicker/cps-datepicker.component.mjs +0 -382
- package/esm2022/lib/components/cps-divider/cps-divider.component.mjs +0 -60
- package/esm2022/lib/components/cps-expansion-panel/cps-expansion-panel.component.mjs +0 -213
- package/esm2022/lib/components/cps-file-upload/cps-file-upload.component.mjs +0 -182
- package/esm2022/lib/components/cps-icon/cps-icon.component.mjs +0 -203
- package/esm2022/lib/components/cps-info-circle/cps-info-circle.component.mjs +0 -61
- package/esm2022/lib/components/cps-input/cps-input.component.mjs +0 -385
- package/esm2022/lib/components/cps-loader/cps-loader.component.mjs +0 -58
- package/esm2022/lib/components/cps-menu/cps-menu.component.mjs +0 -572
- package/esm2022/lib/components/cps-paginator/cps-paginator.component.mjs +0 -118
- package/esm2022/lib/components/cps-paginator/pipes/cps-paginate.pipe.mjs +0 -30
- package/esm2022/lib/components/cps-progress-circular/cps-progress-circular.component.mjs +0 -51
- package/esm2022/lib/components/cps-progress-linear/cps-progress-linear.component.mjs +0 -75
- package/esm2022/lib/components/cps-radio-group/cps-radio/cps-radio.component.mjs +0 -42
- package/esm2022/lib/components/cps-radio-group/cps-radio-button/cps-radio-button.component.mjs +0 -77
- package/esm2022/lib/components/cps-radio-group/cps-radio-group.component.mjs +0 -225
- package/esm2022/lib/components/cps-scheduler/cps-scheduler.component.mjs +0 -682
- package/esm2022/lib/components/cps-scheduler/cps-scheduler.utils.mjs +0 -604
- package/esm2022/lib/components/cps-select/cps-select.component.mjs +0 -654
- package/esm2022/lib/components/cps-sidebar-menu/cps-sidebar-menu.component.mjs +0 -110
- package/esm2022/lib/components/cps-switch/cps-switch.component.mjs +0 -131
- package/esm2022/lib/components/cps-tab-group/cps-tab/cps-tab.component.mjs +0 -86
- package/esm2022/lib/components/cps-tab-group/cps-tab-group.component.mjs +0 -308
- package/esm2022/lib/components/cps-table/components/internal/cps-sort-icon/cps-sort-icon.component.mjs +0 -79
- package/esm2022/lib/components/cps-table/components/internal/table-column-filter/table-column-filter.component.mjs +0 -407
- package/esm2022/lib/components/cps-table/components/internal/table-column-filter-constraint/table-column-filter-constraint.component.mjs +0 -147
- package/esm2022/lib/components/cps-table/components/internal/table-row-menu/table-row-menu.component.mjs +0 -105
- package/esm2022/lib/components/cps-table/cps-column-filter-types.mjs +0 -29
- package/esm2022/lib/components/cps-table/cps-table.component.mjs +0 -1022
- package/esm2022/lib/components/cps-table/directives/cps-table-column-filter.directive.mjs +0 -181
- package/esm2022/lib/components/cps-table/directives/cps-table-column-resizable.directive.mjs +0 -22
- package/esm2022/lib/components/cps-table/directives/cps-table-column-sortable.directive.mjs +0 -47
- package/esm2022/lib/components/cps-table/directives/cps-table-header-selectable.directive.mjs +0 -32
- package/esm2022/lib/components/cps-table/directives/cps-table-row-selectable.directive.mjs +0 -35
- package/esm2022/lib/components/cps-table/directives/internal/table-unsort.directive.mjs +0 -212
- package/esm2022/lib/components/cps-table/pipes/cps-table-detect-filter-type.pipe.mjs +0 -29
- package/esm2022/lib/components/cps-tag/cps-tag.component.mjs +0 -121
- package/esm2022/lib/components/cps-textarea/cps-textarea.component.mjs +0 -290
- package/esm2022/lib/components/cps-timepicker/cps-timepicker.component.mjs +0 -370
- package/esm2022/lib/components/cps-tree-autocomplete/cps-tree-autocomplete.component.mjs +0 -273
- package/esm2022/lib/components/cps-tree-select/cps-tree-select.component.mjs +0 -87
- package/esm2022/lib/components/cps-tree-table/cps-tree-table.component.mjs +0 -1279
- package/esm2022/lib/components/cps-tree-table/directives/cps-tree-table-column-filter.directive.mjs +0 -174
- package/esm2022/lib/components/cps-tree-table/directives/cps-tree-table-column-resizable.directive.mjs +0 -22
- package/esm2022/lib/components/cps-tree-table/directives/cps-tree-table-column-sortable.directive.mjs +0 -47
- package/esm2022/lib/components/cps-tree-table/directives/cps-tree-table-header-selectable.directive.mjs +0 -33
- package/esm2022/lib/components/cps-tree-table/directives/cps-tree-table-row-selectable.directive.mjs +0 -36
- package/esm2022/lib/components/cps-tree-table/directives/cps-tree-table-row-toggler.directive.mjs +0 -48
- package/esm2022/lib/components/cps-tree-table/directives/internal/tree-table-unsort.directive.mjs +0 -352
- package/esm2022/lib/components/cps-tree-table/pipes/cps-tree-table-detect-filter-type.pipe.mjs +0 -30
- package/esm2022/lib/components/internal/cps-base-tree-dropdown/cps-base-tree-dropdown.component.mjs +0 -656
- package/esm2022/lib/directives/cps-tooltip/cps-tooltip.directive.mjs +0 -275
- package/esm2022/lib/pipes/internal/check-option-selected.pipe.mjs +0 -24
- package/esm2022/lib/pipes/internal/combine-labels.pipe.mjs +0 -25
- package/esm2022/lib/pipes/internal/label-by-value.pipe.mjs +0 -16
- package/esm2022/lib/services/cps-dialog/cps-dialog.service.mjs +0 -146
- package/esm2022/lib/services/cps-dialog/internal/components/cps-confirmation/cps-confirmation.component.mjs +0 -25
- package/esm2022/lib/services/cps-dialog/internal/components/cps-dialog/cps-dialog.component.mjs +0 -470
- package/esm2022/lib/services/cps-dialog/internal/directives/cps-dialog-content.directive.mjs +0 -18
- package/esm2022/lib/services/cps-dialog/utils/cps-dialog-config.mjs +0 -3
- package/esm2022/lib/services/cps-dialog/utils/cps-dialog-ref.mjs +0 -128
- package/esm2022/lib/services/cps-notification/cps-notification.service.mjs +0 -122
- package/esm2022/lib/services/cps-notification/internal/components/cps-notification-container/cps-notification-container.component.mjs +0 -95
- package/esm2022/lib/services/cps-notification/internal/components/cps-toast/cps-toast.component.mjs +0 -106
- package/esm2022/lib/services/cps-notification/utils/cps-notification-config.mjs +0 -27
- package/esm2022/lib/services/cps-notification/utils/internal/cps-notification-data.mjs +0 -12
- package/esm2022/lib/utils/colors-utils.mjs +0 -59
- package/esm2022/lib/utils/internal/size-utils.mjs +0 -24
- package/esm2022/public-api.mjs +0 -58
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { Pipe } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class CpsTableDetectFilterTypePipe {
|
|
4
|
-
transform(data, column) {
|
|
5
|
-
if (data.every((item) => typeof item[column] === 'boolean')) {
|
|
6
|
-
return 'boolean';
|
|
7
|
-
}
|
|
8
|
-
else if (data.every((item) => typeof item[column] === 'number')) {
|
|
9
|
-
return 'number';
|
|
10
|
-
}
|
|
11
|
-
else if (data.every((item) => item[column] instanceof Date)) {
|
|
12
|
-
return 'date';
|
|
13
|
-
}
|
|
14
|
-
else if (data.reduce((acc, item) => acc.add(item[column]), new Set()).size < 6) {
|
|
15
|
-
return 'category';
|
|
16
|
-
}
|
|
17
|
-
return 'text';
|
|
18
|
-
}
|
|
19
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: CpsTableDetectFilterTypePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
20
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.1.3", ngImport: i0, type: CpsTableDetectFilterTypePipe, isStandalone: true, name: "cpsTableDetectFilterType" }); }
|
|
21
|
-
}
|
|
22
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: CpsTableDetectFilterTypePipe, decorators: [{
|
|
23
|
-
type: Pipe,
|
|
24
|
-
args: [{
|
|
25
|
-
name: 'cpsTableDetectFilterType',
|
|
26
|
-
standalone: true
|
|
27
|
-
}]
|
|
28
|
-
}] });
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BzLXRhYmxlLWRldGVjdC1maWx0ZXItdHlwZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY3BzLXRhYmxlL3BpcGVzL2Nwcy10YWJsZS1kZXRlY3QtZmlsdGVyLXR5cGUucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7QUFPcEQsTUFBTSxPQUFPLDRCQUE0QjtJQUN2QyxTQUFTLENBQ1AsSUFBa0MsRUFDbEMsTUFBYztRQUVkLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUM1RCxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ2xFLE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzlELE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7YUFBTSxJQUNMLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUNyRSxDQUFDO1lBQ0QsT0FBTyxVQUFVLENBQUM7UUFDcEIsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7OEdBakJVLDRCQUE0Qjs0R0FBNUIsNEJBQTRCOzsyRkFBNUIsNEJBQTRCO2tCQUp4QyxJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSwwQkFBMEI7b0JBQ2hDLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENwc0NvbHVtbkZpbHRlclR5cGUgfSBmcm9tICcuLi9jcHMtY29sdW1uLWZpbHRlci10eXBlcyc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2Nwc1RhYmxlRGV0ZWN0RmlsdGVyVHlwZScsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgQ3BzVGFibGVEZXRlY3RGaWx0ZXJUeXBlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0oXG4gICAgZGF0YTogeyBba2V5OiBzdHJpbmddOiB1bmtub3duIH1bXSxcbiAgICBjb2x1bW46IHN0cmluZ1xuICApOiBDcHNDb2x1bW5GaWx0ZXJUeXBlIHtcbiAgICBpZiAoZGF0YS5ldmVyeSgoaXRlbSkgPT4gdHlwZW9mIGl0ZW1bY29sdW1uXSA9PT0gJ2Jvb2xlYW4nKSkge1xuICAgICAgcmV0dXJuICdib29sZWFuJztcbiAgICB9IGVsc2UgaWYgKGRhdGEuZXZlcnkoKGl0ZW0pID0+IHR5cGVvZiBpdGVtW2NvbHVtbl0gPT09ICdudW1iZXInKSkge1xuICAgICAgcmV0dXJuICdudW1iZXInO1xuICAgIH0gZWxzZSBpZiAoZGF0YS5ldmVyeSgoaXRlbSkgPT4gaXRlbVtjb2x1bW5dIGluc3RhbmNlb2YgRGF0ZSkpIHtcbiAgICAgIHJldHVybiAnZGF0ZSc7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIGRhdGEucmVkdWNlKChhY2MsIGl0ZW0pID0+IGFjYy5hZGQoaXRlbVtjb2x1bW5dKSwgbmV3IFNldCgpKS5zaXplIDwgNlxuICAgICkge1xuICAgICAgcmV0dXJuICdjYXRlZ29yeSc7XG4gICAgfVxuICAgIHJldHVybiAndGV4dCc7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
import { CommonModule, DOCUMENT } from '@angular/common';
|
|
2
|
-
import { Component, EventEmitter, Inject, Input, Optional, Output, Self } from '@angular/core';
|
|
3
|
-
import { getCSSColor } from '../../utils/colors-utils';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@angular/forms";
|
|
6
|
-
import * as i2 from "@angular/common";
|
|
7
|
-
/**
|
|
8
|
-
* CpsTagComponent is used to categorize content.
|
|
9
|
-
* @group Components
|
|
10
|
-
*/
|
|
11
|
-
export class CpsTagComponent {
|
|
12
|
-
/**
|
|
13
|
-
* Tag value.
|
|
14
|
-
* @default false
|
|
15
|
-
* @group Props
|
|
16
|
-
*/
|
|
17
|
-
set value(value) {
|
|
18
|
-
this._value = value;
|
|
19
|
-
this.onChange(value);
|
|
20
|
-
}
|
|
21
|
-
get value() {
|
|
22
|
-
return this._value;
|
|
23
|
-
}
|
|
24
|
-
constructor(_control, document) {
|
|
25
|
-
this._control = _control;
|
|
26
|
-
this.document = document;
|
|
27
|
-
/**
|
|
28
|
-
* Label of the tag.
|
|
29
|
-
* @group Props
|
|
30
|
-
*/
|
|
31
|
-
this.label = '';
|
|
32
|
-
/**
|
|
33
|
-
* Color of the tag.
|
|
34
|
-
* @group Props
|
|
35
|
-
*/
|
|
36
|
-
this.color = 'calm';
|
|
37
|
-
/**
|
|
38
|
-
* Determines whether the tag should be disabled.
|
|
39
|
-
* @group Props
|
|
40
|
-
*/
|
|
41
|
-
this.disabled = false;
|
|
42
|
-
/**
|
|
43
|
-
* Determines whether the tag should be selectable.
|
|
44
|
-
* @group Props
|
|
45
|
-
*/
|
|
46
|
-
this.selectable = false;
|
|
47
|
-
/**
|
|
48
|
-
* Callback to invoke on value change.
|
|
49
|
-
* @param {boolean} boolean - value change.
|
|
50
|
-
* @group Emits
|
|
51
|
-
*/
|
|
52
|
-
this.valueChanged = new EventEmitter();
|
|
53
|
-
this.classesList = [];
|
|
54
|
-
this._value = false;
|
|
55
|
-
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
56
|
-
this.onChange = (event) => { };
|
|
57
|
-
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
58
|
-
this.onTouched = () => { };
|
|
59
|
-
if (this._control) {
|
|
60
|
-
this._control.valueAccessor = this;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
ngOnChanges() {
|
|
64
|
-
this.color = getCSSColor(this.color, this.document);
|
|
65
|
-
this.setClasses();
|
|
66
|
-
}
|
|
67
|
-
setClasses() {
|
|
68
|
-
this.classesList = ['cps-tag'];
|
|
69
|
-
if (this.selectable) {
|
|
70
|
-
this.classesList.push('cps-tag--selectable');
|
|
71
|
-
}
|
|
72
|
-
if (this.disabled) {
|
|
73
|
-
this.classesList.push('cps-tag--disabled');
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
registerOnChange(fn) {
|
|
77
|
-
this.onChange = fn;
|
|
78
|
-
}
|
|
79
|
-
registerOnTouched(fn) {
|
|
80
|
-
this.onTouched = fn;
|
|
81
|
-
}
|
|
82
|
-
writeValue(value) {
|
|
83
|
-
this.value = value;
|
|
84
|
-
}
|
|
85
|
-
toggleSelected() {
|
|
86
|
-
if (this.disabled || !this.selectable)
|
|
87
|
-
return;
|
|
88
|
-
this._updateValue(!this.value);
|
|
89
|
-
}
|
|
90
|
-
_updateValue(value) {
|
|
91
|
-
this.writeValue(value);
|
|
92
|
-
this.onChange(value);
|
|
93
|
-
this.valueChanged.emit(value);
|
|
94
|
-
}
|
|
95
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: CpsTagComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
96
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.3", type: CpsTagComponent, isStandalone: true, selector: "cps-tag", inputs: { label: "label", color: "color", disabled: "disabled", selectable: "selectable", value: "value" }, outputs: { valueChanged: "valueChanged" }, usesOnChanges: true, ngImport: i0, template: "<div\n [ngClass]=\"classesList\"\n [class.unselected]=\"!value && selectable\"\n [ngStyle]=\"{ borderColor: color }\"\n (click)=\"toggleSelected()\">\n <p>{{ label }}</p>\n</div>\n", styles: [":host{width:fit-content;display:inline-block;-webkit-user-select:none;-ms-user-select:none;user-select:none}:host .cps-tag{font-family:Source Sans Pro,sans-serif;min-height:25px;align-items:center;padding:0 10px;background-color:#fff;display:inline-flex;cursor:default;border:solid 1px;border-left:solid 4px}:host .cps-tag.cps-tag--selectable{cursor:pointer}:host .cps-tag.cps-tag--selectable:not(:active):not(:disabled){box-shadow:1px 3px 4px #0000001a}:host .cps-tag.cps-tag--disabled{pointer-events:none;border-color:var(--cps-color-line-dark)!important}:host .cps-tag.cps-tag--disabled p{color:var(--cps-color-text-light)}:host .cps-tag.unselected{border-color:var(--cps-color-text-light)!important}:host .cps-tag p{margin:0;font-size:11px;color:var(--cps-color-text-dark)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
|
|
97
|
-
}
|
|
98
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: CpsTagComponent, decorators: [{
|
|
99
|
-
type: Component,
|
|
100
|
-
args: [{ standalone: true, imports: [CommonModule], selector: 'cps-tag', template: "<div\n [ngClass]=\"classesList\"\n [class.unselected]=\"!value && selectable\"\n [ngStyle]=\"{ borderColor: color }\"\n (click)=\"toggleSelected()\">\n <p>{{ label }}</p>\n</div>\n", styles: [":host{width:fit-content;display:inline-block;-webkit-user-select:none;-ms-user-select:none;user-select:none}:host .cps-tag{font-family:Source Sans Pro,sans-serif;min-height:25px;align-items:center;padding:0 10px;background-color:#fff;display:inline-flex;cursor:default;border:solid 1px;border-left:solid 4px}:host .cps-tag.cps-tag--selectable{cursor:pointer}:host .cps-tag.cps-tag--selectable:not(:active):not(:disabled){box-shadow:1px 3px 4px #0000001a}:host .cps-tag.cps-tag--disabled{pointer-events:none;border-color:var(--cps-color-line-dark)!important}:host .cps-tag.cps-tag--disabled p{color:var(--cps-color-text-light)}:host .cps-tag.unselected{border-color:var(--cps-color-text-light)!important}:host .cps-tag p{margin:0;font-size:11px;color:var(--cps-color-text-dark)}\n"] }]
|
|
101
|
-
}], ctorParameters: () => [{ type: i1.NgControl, decorators: [{
|
|
102
|
-
type: Self
|
|
103
|
-
}, {
|
|
104
|
-
type: Optional
|
|
105
|
-
}] }, { type: Document, decorators: [{
|
|
106
|
-
type: Inject,
|
|
107
|
-
args: [DOCUMENT]
|
|
108
|
-
}] }], propDecorators: { label: [{
|
|
109
|
-
type: Input
|
|
110
|
-
}], color: [{
|
|
111
|
-
type: Input
|
|
112
|
-
}], disabled: [{
|
|
113
|
-
type: Input
|
|
114
|
-
}], selectable: [{
|
|
115
|
-
type: Input
|
|
116
|
-
}], value: [{
|
|
117
|
-
type: Input
|
|
118
|
-
}], valueChanged: [{
|
|
119
|
-
type: Output
|
|
120
|
-
}] } });
|
|
121
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BzLXRhZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcHMtdWkta2l0L3NyYy9saWIvY29tcG9uZW50cy9jcHMtdGFnL2Nwcy10YWcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY3BzLXRhZy9jcHMtdGFnLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLElBQUksRUFDTCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7QUFHdkQ7OztHQUdHO0FBUUgsTUFBTSxPQUFPLGVBQWU7SUF5QjFCOzs7O09BSUc7SUFDSCxJQUFhLEtBQUssQ0FBQyxLQUFjO1FBQy9CLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBYUQsWUFDOEIsUUFBbUIsRUFDckIsUUFBa0I7UUFEaEIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNyQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBbkQ5Qzs7O1dBR0c7UUFDTSxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBRXBCOzs7V0FHRztRQUNNLFVBQUssR0FBRyxNQUFNLENBQUM7UUFFeEI7OztXQUdHO1FBQ00sYUFBUSxHQUFHLEtBQUssQ0FBQztRQUUxQjs7O1dBR0c7UUFDTSxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBZ0I1Qjs7OztXQUlHO1FBQ08saUJBQVksR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBRXJELGdCQUFXLEdBQWEsRUFBRSxDQUFDO1FBRW5CLFdBQU0sR0FBRyxLQUFLLENBQUM7UUEyQnZCLGdFQUFnRTtRQUNoRSxhQUFRLEdBQUcsQ0FBQyxLQUFVLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUU5QixnRUFBZ0U7UUFDaEUsY0FBUyxHQUFHLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztRQXpCbkIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQ3JDLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUUvQixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQy9DLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQzdDLENBQUM7SUFDSCxDQUFDO0lBUUQsZ0JBQWdCLENBQUMsRUFBTztRQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsRUFBTztRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQWM7UUFDdkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVTtZQUFFLE9BQU87UUFDOUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRU8sWUFBWSxDQUFDLEtBQWM7UUFDakMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7OEdBdEdVLGVBQWUsdUVBb0RoQixRQUFRO2tHQXBEUCxlQUFlLCtPQ3pCNUIsMkxBT0EsbzBCRGFZLFlBQVk7OzJGQUtYLGVBQWU7a0JBUDNCLFNBQVM7aUNBQ0ksSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDLFlBQ2IsU0FBUzs7MEJBdURoQixJQUFJOzswQkFBSSxRQUFROzswQkFDaEIsTUFBTTsyQkFBQyxRQUFRO3lDQS9DVCxLQUFLO3NCQUFiLEtBQUs7Z0JBTUcsS0FBSztzQkFBYixLQUFLO2dCQU1HLFFBQVE7c0JBQWhCLEtBQUs7Z0JBTUcsVUFBVTtzQkFBbEIsS0FBSztnQkFPTyxLQUFLO3NCQUFqQixLQUFLO2dCQWNJLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUsIERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFNlbGZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBnZXRDU1NDb2xvciB9IGZyb20gJy4uLy4uL3V0aWxzL2NvbG9ycy11dGlscyc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG4vKipcbiAqIENwc1RhZ0NvbXBvbmVudCBpcyB1c2VkIHRvIGNhdGVnb3JpemUgY29udGVudC5cbiAqIEBncm91cCBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgc2VsZWN0b3I6ICdjcHMtdGFnJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Nwcy10YWcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jcHMtdGFnLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ3BzVGFnQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uQ2hhbmdlcyB7XG4gIC8qKlxuICAgKiBMYWJlbCBvZiB0aGUgdGFnLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGxhYmVsID0gJyc7XG5cbiAgLyoqXG4gICAqIENvbG9yIG9mIHRoZSB0YWcuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgY29sb3IgPSAnY2FsbSc7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGUgdGFnIHNob3VsZCBiZSBkaXNhYmxlZC5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHRhZyBzaG91bGQgYmUgc2VsZWN0YWJsZS5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBzZWxlY3RhYmxlID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRhZyB2YWx1ZS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBzZXQgdmFsdWUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xuICB9XG5cbiAgZ2V0IHZhbHVlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB0byBpbnZva2Ugb24gdmFsdWUgY2hhbmdlLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGJvb2xlYW4gLSB2YWx1ZSBjaGFuZ2UuXG4gICAqIEBncm91cCBFbWl0c1xuICAgKi9cbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBjbGFzc2VzTGlzdDogc3RyaW5nW10gPSBbXTtcblxuICBwcml2YXRlIF92YWx1ZSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBTZWxmKCkgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfY29udHJvbDogTmdDb250cm9sLFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50XG4gICkge1xuICAgIGlmICh0aGlzLl9jb250cm9sKSB7XG4gICAgICB0aGlzLl9jb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuY29sb3IgPSBnZXRDU1NDb2xvcih0aGlzLmNvbG9yLCB0aGlzLmRvY3VtZW50KTtcbiAgICB0aGlzLnNldENsYXNzZXMoKTtcbiAgfVxuXG4gIHNldENsYXNzZXMoKTogdm9pZCB7XG4gICAgdGhpcy5jbGFzc2VzTGlzdCA9IFsnY3BzLXRhZyddO1xuXG4gICAgaWYgKHRoaXMuc2VsZWN0YWJsZSkge1xuICAgICAgdGhpcy5jbGFzc2VzTGlzdC5wdXNoKCdjcHMtdGFnLS1zZWxlY3RhYmxlJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmNsYXNzZXNMaXN0LnB1c2goJ2Nwcy10YWctLWRpc2FibGVkJyk7XG4gICAgfVxuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICBvbkNoYW5nZSA9IChldmVudDogYW55KSA9PiB7fTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gIG9uVG91Y2hlZCA9ICgpID0+IHt9O1xuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHRvZ2dsZVNlbGVjdGVkKCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkIHx8ICF0aGlzLnNlbGVjdGFibGUpIHJldHVybjtcbiAgICB0aGlzLl91cGRhdGVWYWx1ZSghdGhpcy52YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVWYWx1ZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMud3JpdGVWYWx1ZSh2YWx1ZSk7XG4gICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgdGhpcy52YWx1ZUNoYW5nZWQuZW1pdCh2YWx1ZSk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgW25nQ2xhc3NdPVwiY2xhc3Nlc0xpc3RcIlxuICBbY2xhc3MudW5zZWxlY3RlZF09XCIhdmFsdWUgJiYgc2VsZWN0YWJsZVwiXG4gIFtuZ1N0eWxlXT1cInsgYm9yZGVyQ29sb3I6IGNvbG9yIH1cIlxuICAoY2xpY2spPVwidG9nZ2xlU2VsZWN0ZWQoKVwiPlxuICA8cD57eyBsYWJlbCB9fTwvcD5cbjwvZGl2PlxuIl19
|
|
@@ -1,290 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Optional, Output, Self } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { convertSize } from '../../utils/internal/size-utils';
|
|
4
|
-
import { CpsIconComponent } from '../cps-icon/cps-icon.component';
|
|
5
|
-
import { CpsInfoCircleComponent } from '../cps-info-circle/cps-info-circle.component';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "@angular/forms";
|
|
8
|
-
import * as i2 from "@angular/common";
|
|
9
|
-
/**
|
|
10
|
-
* CpsTextareaComponent is a textarea component.
|
|
11
|
-
* @group Components
|
|
12
|
-
*/
|
|
13
|
-
export class CpsTextareaComponent {
|
|
14
|
-
/**
|
|
15
|
-
* Value of the textarea.
|
|
16
|
-
* @default ''
|
|
17
|
-
* @group Props
|
|
18
|
-
*/
|
|
19
|
-
set value(value) {
|
|
20
|
-
if (!value)
|
|
21
|
-
value = '';
|
|
22
|
-
this._value = value;
|
|
23
|
-
this.onChange(value);
|
|
24
|
-
}
|
|
25
|
-
get value() {
|
|
26
|
-
return this._value;
|
|
27
|
-
}
|
|
28
|
-
constructor(_control, _elementRef) {
|
|
29
|
-
this._control = _control;
|
|
30
|
-
this._elementRef = _elementRef;
|
|
31
|
-
/**
|
|
32
|
-
* Label of the textarea.
|
|
33
|
-
* @group Props
|
|
34
|
-
*/
|
|
35
|
-
this.label = '';
|
|
36
|
-
/**
|
|
37
|
-
* Placeholder text for the textarea.
|
|
38
|
-
* @group Props
|
|
39
|
-
*/
|
|
40
|
-
this.placeholder = 'Please enter';
|
|
41
|
-
/**
|
|
42
|
-
* Number of rows in the textarea.
|
|
43
|
-
* @group Props
|
|
44
|
-
*/
|
|
45
|
-
this.rows = 5;
|
|
46
|
-
/**
|
|
47
|
-
* The cols attribute specifies the visible width of a textarea.
|
|
48
|
-
* @group Props
|
|
49
|
-
*/
|
|
50
|
-
this.cols = 20;
|
|
51
|
-
/**
|
|
52
|
-
* Determines whether the textarea can auto focus.
|
|
53
|
-
* @group Props
|
|
54
|
-
*/
|
|
55
|
-
this.autofocus = false;
|
|
56
|
-
/**
|
|
57
|
-
* Bottom hint text for the textarea.
|
|
58
|
-
* @group Props
|
|
59
|
-
*/
|
|
60
|
-
this.hint = '';
|
|
61
|
-
/**
|
|
62
|
-
* Determines whether the textarea is disabled.
|
|
63
|
-
* @group Props
|
|
64
|
-
*/
|
|
65
|
-
this.disabled = false;
|
|
66
|
-
/**
|
|
67
|
-
* Width of the textarea, it can be of type number denoting pixels or string.
|
|
68
|
-
* @group Props
|
|
69
|
-
*/
|
|
70
|
-
this.width = '100%';
|
|
71
|
-
/**
|
|
72
|
-
* When enabled, a clear icon is displayed to clear the value.
|
|
73
|
-
* @group Props
|
|
74
|
-
*/
|
|
75
|
-
this.clearable = false;
|
|
76
|
-
/**
|
|
77
|
-
* Hides hint and validation errors.
|
|
78
|
-
* @group Props
|
|
79
|
-
*/
|
|
80
|
-
this.hideDetails = false;
|
|
81
|
-
/**
|
|
82
|
-
* Determines whether the textarea should have persistent clear icon.
|
|
83
|
-
* @group Props
|
|
84
|
-
*/
|
|
85
|
-
this.persistentClear = false;
|
|
86
|
-
/**
|
|
87
|
-
* Error message.
|
|
88
|
-
* @group Props
|
|
89
|
-
*/
|
|
90
|
-
this.error = '';
|
|
91
|
-
/**
|
|
92
|
-
* Determines whether the component can be resized vertically or not.
|
|
93
|
-
* @group Props
|
|
94
|
-
*/
|
|
95
|
-
this.resizable = 'vertical';
|
|
96
|
-
/**
|
|
97
|
-
* When it is not an empty string, an info icon is displayed to show text for more info.
|
|
98
|
-
* @group Props
|
|
99
|
-
*/
|
|
100
|
-
this.infoTooltip = '';
|
|
101
|
-
/**
|
|
102
|
-
* Info tooltip class for styling.
|
|
103
|
-
* @group Props
|
|
104
|
-
*/
|
|
105
|
-
this.infoTooltipClass = 'cps-tooltip-content';
|
|
106
|
-
/**
|
|
107
|
-
* Max width of infoTooltip, of type number denoting pixels or string.
|
|
108
|
-
* @group Props
|
|
109
|
-
*/
|
|
110
|
-
this.infoTooltipMaxWidth = '100%';
|
|
111
|
-
/**
|
|
112
|
-
* Determines whether the infoTooltip is persistent.
|
|
113
|
-
* @group Props
|
|
114
|
-
*/
|
|
115
|
-
this.infoTooltipPersistent = false;
|
|
116
|
-
/**
|
|
117
|
-
* Position of infoTooltip, it can be 'top', 'bottom', 'left' or 'right'.
|
|
118
|
-
* @group Props
|
|
119
|
-
*/
|
|
120
|
-
this.infoTooltipPosition = 'top';
|
|
121
|
-
/**
|
|
122
|
-
* Callback to invoke on value change.
|
|
123
|
-
* @param {string} string - value changed.
|
|
124
|
-
* @group Emits
|
|
125
|
-
*/
|
|
126
|
-
this.valueChanged = new EventEmitter();
|
|
127
|
-
/**
|
|
128
|
-
* Callback to invoke when the component receives focus.
|
|
129
|
-
* @param {any}
|
|
130
|
-
* @group Emits
|
|
131
|
-
*/
|
|
132
|
-
this.focused = new EventEmitter();
|
|
133
|
-
/**
|
|
134
|
-
* Callback to invoke when the prefixIcon is clicked.
|
|
135
|
-
* @param {any}
|
|
136
|
-
* @group Emits
|
|
137
|
-
*/
|
|
138
|
-
this.prefixIconClicked = new EventEmitter();
|
|
139
|
-
/**
|
|
140
|
-
* Callback to invoke when the component loses focus.
|
|
141
|
-
* @param {any}
|
|
142
|
-
* @group Emits
|
|
143
|
-
*/
|
|
144
|
-
this.blurred = new EventEmitter();
|
|
145
|
-
this._value = '';
|
|
146
|
-
this.cvtWidth = '';
|
|
147
|
-
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
148
|
-
this.onChange = (event) => { };
|
|
149
|
-
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
150
|
-
this.onTouched = () => { };
|
|
151
|
-
if (this._control) {
|
|
152
|
-
this._control.valueAccessor = this;
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
ngOnInit() {
|
|
156
|
-
this.cvtWidth = convertSize(this.width);
|
|
157
|
-
this._statusChangesSubscription = this._control?.statusChanges?.subscribe(() => {
|
|
158
|
-
this._checkErrors();
|
|
159
|
-
});
|
|
160
|
-
}
|
|
161
|
-
ngOnDestroy() {
|
|
162
|
-
this._statusChangesSubscription?.unsubscribe();
|
|
163
|
-
}
|
|
164
|
-
_checkErrors() {
|
|
165
|
-
if (!this._control)
|
|
166
|
-
return;
|
|
167
|
-
const errors = this._control?.errors;
|
|
168
|
-
if (!this._control?.control?.touched || !errors) {
|
|
169
|
-
this.error = '';
|
|
170
|
-
return;
|
|
171
|
-
}
|
|
172
|
-
if ('required' in errors) {
|
|
173
|
-
this.error = 'Field is required';
|
|
174
|
-
return;
|
|
175
|
-
}
|
|
176
|
-
if ('pattern' in errors) {
|
|
177
|
-
this.error = 'Value is invalid';
|
|
178
|
-
return;
|
|
179
|
-
}
|
|
180
|
-
if ('minlength' in errors) {
|
|
181
|
-
// eslint-disable-next-line dot-notation
|
|
182
|
-
this.error = `Field must contain at least ${errors['minlength'].requiredLength} characters`;
|
|
183
|
-
return;
|
|
184
|
-
}
|
|
185
|
-
if ('maxlength' in errors) {
|
|
186
|
-
// eslint-disable-next-line dot-notation
|
|
187
|
-
this.error = `Field must contain ${errors['maxlength'].requiredLength} characters maximum`;
|
|
188
|
-
return;
|
|
189
|
-
}
|
|
190
|
-
const errArr = Object.values(errors);
|
|
191
|
-
if (errArr.length < 1) {
|
|
192
|
-
this.error = '';
|
|
193
|
-
return;
|
|
194
|
-
}
|
|
195
|
-
const message = errArr.find((msg) => typeof msg === 'string');
|
|
196
|
-
this.error = message || 'Unknown error';
|
|
197
|
-
}
|
|
198
|
-
registerOnChange(fn) {
|
|
199
|
-
this.onChange = fn;
|
|
200
|
-
}
|
|
201
|
-
registerOnTouched(fn) {
|
|
202
|
-
this.onTouched = fn;
|
|
203
|
-
}
|
|
204
|
-
writeValue(value) {
|
|
205
|
-
this.value = value;
|
|
206
|
-
}
|
|
207
|
-
updateValueEvent(event) {
|
|
208
|
-
const value = event?.target?.value || '';
|
|
209
|
-
this._updateValue(value);
|
|
210
|
-
}
|
|
211
|
-
_updateValue(value) {
|
|
212
|
-
this.writeValue(value);
|
|
213
|
-
this.onChange(value);
|
|
214
|
-
this.valueChanged.emit(value);
|
|
215
|
-
}
|
|
216
|
-
clear() {
|
|
217
|
-
if (this.value !== '')
|
|
218
|
-
this._updateValue('');
|
|
219
|
-
}
|
|
220
|
-
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
221
|
-
setDisabledState(disabled) { }
|
|
222
|
-
onBlur() {
|
|
223
|
-
this._checkErrors();
|
|
224
|
-
this.blurred.emit();
|
|
225
|
-
}
|
|
226
|
-
onFocus() {
|
|
227
|
-
this._control?.control?.markAsTouched();
|
|
228
|
-
this.focused.emit();
|
|
229
|
-
}
|
|
230
|
-
focus() {
|
|
231
|
-
this._elementRef?.nativeElement?.querySelector('textarea')?.focus();
|
|
232
|
-
}
|
|
233
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: CpsTextareaComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
234
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.3", type: CpsTextareaComponent, isStandalone: true, selector: "cps-textarea", inputs: { label: "label", placeholder: "placeholder", rows: "rows", cols: "cols", autofocus: "autofocus", hint: "hint", disabled: "disabled", width: "width", clearable: "clearable", hideDetails: "hideDetails", persistentClear: "persistentClear", error: "error", resizable: "resizable", infoTooltip: "infoTooltip", infoTooltipClass: "infoTooltipClass", infoTooltipMaxWidth: "infoTooltipMaxWidth", infoTooltipPersistent: "infoTooltipPersistent", infoTooltipPosition: "infoTooltipPosition", value: "value" }, outputs: { valueChanged: "valueChanged", focused: "focused", prefixIconClicked: "prefixIconClicked", blurred: "blurred" }, ngImport: i0, template: "<div class=\"cps-textarea-container\" [ngStyle]=\"{ width: cvtWidth }\">\n <div\n class=\"cps-textarea-label\"\n [ngClass]=\"{ 'cps-textarea-label-disabled': disabled }\"\n *ngIf=\"label\">\n <label>{{ label }}</label>\n <cps-info-circle\n *ngIf=\"infoTooltip\"\n class=\"cps-textarea-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-textarea-wrap\"\n [ngClass]=\"{\n 'cps-textarea-wrap-error': error,\n clearable: clearable,\n 'persistent-clear': persistentClear\n }\">\n <textarea\n spellcheck=\"false\"\n [cols]=\"cols\"\n [rows]=\"rows\"\n [autofocus]=\"autofocus\"\n [disabled]=\"disabled\"\n [placeholder]=\"placeholder\"\n [value]=\"value\"\n [ngStyle]=\"{\n width: cvtWidth,\n resize: resizable\n }\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\"\n (input)=\"updateValueEvent($event)\"></textarea>\n\n <span\n *ngIf=\"clearable && !disabled\"\n [style.visibility]=\"\n persistentClear || (!persistentClear && value) ? 'visible' : 'hidden'\n \"\n class=\"clear-btn\">\n <cps-icon icon=\"delete\" size=\"small\" (click)=\"clear()\"></cps-icon>\n </span>\n </div>\n <div *ngIf=\"!error && !hideDetails\" class=\"cps-textarea-hint\">\n {{ hint }}\n </div>\n <div *ngIf=\"error && !hideDetails\" class=\"cps-textarea-error\">\n {{ error }}\n </div>\n</div>\n", styles: [":host{display:flex}:host .cps-textarea-container{width:100%;gap:.2rem!important;display:flex!important;flex-direction:column!important;font-family:Source Sans Pro,sans-serif}:host .cps-textarea-container .cps-textarea-wrap{position:relative;overflow:hidden}:host .cps-textarea-container .cps-textarea-wrap:hover textarea:enabled{border:1px solid var(--cps-color-calm)}:host .cps-textarea-container .cps-textarea-wrap-error textarea{border-color:var(--cps-color-error)!important}:host .cps-textarea-container .cps-textarea-wrap-error textarea:not(:focus){background:#fef3f2!important}:host .cps-textarea-container .cps-textarea-wrap textarea{display:block;font-family:Source Sans Pro,sans-serif;font-size:1rem;color:var(--cps-color-text-dark);background:#fff;padding:.375rem .75rem;line-height:1.5;min-height:38px;border:1px solid var(--cps-color-line-light);transition-property:border-color;transition-duration:.2s;appearance:none;border-radius:4px;width:100%}:host .cps-textarea-container .cps-textarea-wrap textarea:focus{border:1px solid var(--cps-color-calm);outline:0}:host .cps-textarea-container .cps-textarea-wrap textarea:disabled{color:var(--cps-color-text-light);background-color:#f7f7f7;opacity:1;pointer-events:none}:host .cps-textarea-container .cps-textarea-wrap textarea:focus+.clear-btn cps-icon{opacity:.5}:host .cps-textarea-container .cps-textarea-wrap:hover .clear-btn cps-icon{opacity:.5}:host .cps-textarea-container .cps-textarea-wrap .clear-btn{position:absolute;top:.75rem;right:.75rem;cursor:pointer;color:var(--cps-color-calm)}:host .cps-textarea-container .cps-textarea-wrap .clear-btn cps-icon{opacity:0;transition-duration:.2s}:host .cps-textarea-container .cps-textarea-wrap .clear-btn cps-icon:hover{opacity:1!important}:host .cps-textarea-container .persistent-clear .clear-btn cps-icon{opacity:.5}:host .cps-textarea-container .clearable>textarea{padding-right:2.2rem}:host .cps-textarea-container .cps-textarea-hint{color:var(--cps-color-text-mild);font-size:.75rem;min-height:1.125rem;line-height:1.125rem;cursor:default}:host .cps-textarea-container .cps-textarea-error{color:var(--cps-color-error);font-weight:700;font-size:.75rem;min-height:1.125rem;line-height:1.125rem;cursor:default}:host .cps-textarea-container .cps-textarea-label{color:var(--cps-color-text-dark);font-size:.875rem;align-items:center;display:inline-flex;font-weight:600}:host .cps-textarea-container .cps-textarea-label .cps-textarea-label-info-circle{margin-left:8px}:host .cps-textarea-container .cps-textarea-label-disabled{color:var(--cps-color-text-mild)}:host .cps-textarea-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"] }] }); }
|
|
235
|
-
}
|
|
236
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: CpsTextareaComponent, decorators: [{
|
|
237
|
-
type: Component,
|
|
238
|
-
args: [{ standalone: true, selector: 'cps-textarea', imports: [CommonModule, CpsIconComponent, CpsInfoCircleComponent], template: "<div class=\"cps-textarea-container\" [ngStyle]=\"{ width: cvtWidth }\">\n <div\n class=\"cps-textarea-label\"\n [ngClass]=\"{ 'cps-textarea-label-disabled': disabled }\"\n *ngIf=\"label\">\n <label>{{ label }}</label>\n <cps-info-circle\n *ngIf=\"infoTooltip\"\n class=\"cps-textarea-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-textarea-wrap\"\n [ngClass]=\"{\n 'cps-textarea-wrap-error': error,\n clearable: clearable,\n 'persistent-clear': persistentClear\n }\">\n <textarea\n spellcheck=\"false\"\n [cols]=\"cols\"\n [rows]=\"rows\"\n [autofocus]=\"autofocus\"\n [disabled]=\"disabled\"\n [placeholder]=\"placeholder\"\n [value]=\"value\"\n [ngStyle]=\"{\n width: cvtWidth,\n resize: resizable\n }\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\"\n (input)=\"updateValueEvent($event)\"></textarea>\n\n <span\n *ngIf=\"clearable && !disabled\"\n [style.visibility]=\"\n persistentClear || (!persistentClear && value) ? 'visible' : 'hidden'\n \"\n class=\"clear-btn\">\n <cps-icon icon=\"delete\" size=\"small\" (click)=\"clear()\"></cps-icon>\n </span>\n </div>\n <div *ngIf=\"!error && !hideDetails\" class=\"cps-textarea-hint\">\n {{ hint }}\n </div>\n <div *ngIf=\"error && !hideDetails\" class=\"cps-textarea-error\">\n {{ error }}\n </div>\n</div>\n", styles: [":host{display:flex}:host .cps-textarea-container{width:100%;gap:.2rem!important;display:flex!important;flex-direction:column!important;font-family:Source Sans Pro,sans-serif}:host .cps-textarea-container .cps-textarea-wrap{position:relative;overflow:hidden}:host .cps-textarea-container .cps-textarea-wrap:hover textarea:enabled{border:1px solid var(--cps-color-calm)}:host .cps-textarea-container .cps-textarea-wrap-error textarea{border-color:var(--cps-color-error)!important}:host .cps-textarea-container .cps-textarea-wrap-error textarea:not(:focus){background:#fef3f2!important}:host .cps-textarea-container .cps-textarea-wrap textarea{display:block;font-family:Source Sans Pro,sans-serif;font-size:1rem;color:var(--cps-color-text-dark);background:#fff;padding:.375rem .75rem;line-height:1.5;min-height:38px;border:1px solid var(--cps-color-line-light);transition-property:border-color;transition-duration:.2s;appearance:none;border-radius:4px;width:100%}:host .cps-textarea-container .cps-textarea-wrap textarea:focus{border:1px solid var(--cps-color-calm);outline:0}:host .cps-textarea-container .cps-textarea-wrap textarea:disabled{color:var(--cps-color-text-light);background-color:#f7f7f7;opacity:1;pointer-events:none}:host .cps-textarea-container .cps-textarea-wrap textarea:focus+.clear-btn cps-icon{opacity:.5}:host .cps-textarea-container .cps-textarea-wrap:hover .clear-btn cps-icon{opacity:.5}:host .cps-textarea-container .cps-textarea-wrap .clear-btn{position:absolute;top:.75rem;right:.75rem;cursor:pointer;color:var(--cps-color-calm)}:host .cps-textarea-container .cps-textarea-wrap .clear-btn cps-icon{opacity:0;transition-duration:.2s}:host .cps-textarea-container .cps-textarea-wrap .clear-btn cps-icon:hover{opacity:1!important}:host .cps-textarea-container .persistent-clear .clear-btn cps-icon{opacity:.5}:host .cps-textarea-container .clearable>textarea{padding-right:2.2rem}:host .cps-textarea-container .cps-textarea-hint{color:var(--cps-color-text-mild);font-size:.75rem;min-height:1.125rem;line-height:1.125rem;cursor:default}:host .cps-textarea-container .cps-textarea-error{color:var(--cps-color-error);font-weight:700;font-size:.75rem;min-height:1.125rem;line-height:1.125rem;cursor:default}:host .cps-textarea-container .cps-textarea-label{color:var(--cps-color-text-dark);font-size:.875rem;align-items:center;display:inline-flex;font-weight:600}:host .cps-textarea-container .cps-textarea-label .cps-textarea-label-info-circle{margin-left:8px}:host .cps-textarea-container .cps-textarea-label-disabled{color:var(--cps-color-text-mild)}:host .cps-textarea-container ::placeholder{font-family:Source Sans Pro,sans-serif;color:var(--cps-color-text-lightest);font-style:italic;opacity:1}\n"] }]
|
|
239
|
-
}], ctorParameters: () => [{ type: i1.NgControl, decorators: [{
|
|
240
|
-
type: Self
|
|
241
|
-
}, {
|
|
242
|
-
type: Optional
|
|
243
|
-
}] }, { type: i0.ElementRef }], propDecorators: { label: [{
|
|
244
|
-
type: Input
|
|
245
|
-
}], placeholder: [{
|
|
246
|
-
type: Input
|
|
247
|
-
}], rows: [{
|
|
248
|
-
type: Input
|
|
249
|
-
}], cols: [{
|
|
250
|
-
type: Input
|
|
251
|
-
}], autofocus: [{
|
|
252
|
-
type: Input
|
|
253
|
-
}], hint: [{
|
|
254
|
-
type: Input
|
|
255
|
-
}], disabled: [{
|
|
256
|
-
type: Input
|
|
257
|
-
}], width: [{
|
|
258
|
-
type: Input
|
|
259
|
-
}], clearable: [{
|
|
260
|
-
type: Input
|
|
261
|
-
}], hideDetails: [{
|
|
262
|
-
type: Input
|
|
263
|
-
}], persistentClear: [{
|
|
264
|
-
type: Input
|
|
265
|
-
}], error: [{
|
|
266
|
-
type: Input
|
|
267
|
-
}], resizable: [{
|
|
268
|
-
type: Input
|
|
269
|
-
}], infoTooltip: [{
|
|
270
|
-
type: Input
|
|
271
|
-
}], infoTooltipClass: [{
|
|
272
|
-
type: Input
|
|
273
|
-
}], infoTooltipMaxWidth: [{
|
|
274
|
-
type: Input
|
|
275
|
-
}], infoTooltipPersistent: [{
|
|
276
|
-
type: Input
|
|
277
|
-
}], infoTooltipPosition: [{
|
|
278
|
-
type: Input
|
|
279
|
-
}], value: [{
|
|
280
|
-
type: Input
|
|
281
|
-
}], valueChanged: [{
|
|
282
|
-
type: Output
|
|
283
|
-
}], focused: [{
|
|
284
|
-
type: Output
|
|
285
|
-
}], prefixIconClicked: [{
|
|
286
|
-
type: Output
|
|
287
|
-
}], blurred: [{
|
|
288
|
-
type: Output
|
|
289
|
-
}] } });
|
|
290
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BzLXRleHRhcmVhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nwcy11aS1raXQvc3JjL2xpYi9jb21wb25lbnRzL2Nwcy10ZXh0YXJlYS9jcHMtdGV4dGFyZWEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY3BzLXRleHRhcmVhL2Nwcy10ZXh0YXJlYS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBQ0wsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7OztBQUd0Rjs7O0dBR0c7QUFRSCxNQUFNLE9BQU8sb0JBQW9CO0lBK0cvQjs7OztPQUlHO0lBQ0gsSUFBYSxLQUFLLENBQUMsS0FBYTtRQUM5QixJQUFJLENBQUMsS0FBSztZQUFFLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFtQ0QsWUFDOEIsUUFBbUIsRUFDdkMsV0FBb0M7UUFEaEIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUN2QyxnQkFBVyxH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QixDQUFDOzswQkFvSzlELElBQUk7OzBCQUFJLFFBQVE7a0VBekpWLEtBQUs7c0JBQWIsS0FBSztnQkFNRyxXQUFXO3NCQUFuQixLQUFLO2dCQU1HLElBQUk7c0JBQVosS0FBSztnQkFNRyxJQUFJO3NCQUFaLEtBQUs7Z0JBTUcsU0FBUztzQkFBakIsS0FBSztnQkFNRyxJQUFJO3NCQUFaLEtBQUs7Z0JBTUcsUUFBUTtzQkFBaEIsS0FBSztnQkFNRyxLQUFLO3NCQUFiLEtBQUs7Z0JBTUcsU0FBUztzQkFBakIsS0FBSztnQkFNRyxXQUFXO3NCQUFuQixLQUFLO2dCQU1HLGVBQWU7c0JBQXZCLEtBQUs7Z0JBTUcsS0FBSztzQkFBYixLQUFLO2dCQU1HLFNBQVM7c0JBQWpCLEtBQUs7Z0JBTUcsV0FBVztzQkFBbkIsS0FBSztnQkFNRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBTUcsbUJBQW1CO3NCQUEzQixLQUFLO2dCQU1HLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFNRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBT08sS0FBSztzQkFBakIsS0FBSztnQkFlSSxZQUFZO3NCQUFyQixNQUFNO2dCQU9HLE9BQU87c0JBQWhCLE1BQU07Z0JBT0csaUJBQWlCO3NCQUExQixNQUFNO2dCQU9HLE9BQU87c0JBQWhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBTZWxmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNvbnZlcnRTaXplIH0gZnJvbSAnLi4vLi4vdXRpbHMvaW50ZXJuYWwvc2l6ZS11dGlscyc7XG5pbXBvcnQgeyBDcHNJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vY3BzLWljb24vY3BzLWljb24uY29tcG9uZW50JztcbmltcG9ydCB7IENwc0luZm9DaXJjbGVDb21wb25lbnQgfSBmcm9tICcuLi9jcHMtaW5mby1jaXJjbGUvY3BzLWluZm8tY2lyY2xlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDcHNUb29sdGlwUG9zaXRpb24gfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2Nwcy10b29sdGlwL2Nwcy10b29sdGlwLmRpcmVjdGl2ZSc7XG5cbi8qKlxuICogQ3BzVGV4dGFyZWFDb21wb25lbnQgaXMgYSB0ZXh0YXJlYSBjb21wb25lbnQuXG4gKiBAZ3JvdXAgQ29tcG9uZW50c1xuICovXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdjcHMtdGV4dGFyZWEnLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBDcHNJY29uQ29tcG9uZW50LCBDcHNJbmZvQ2lyY2xlQ29tcG9uZW50XSxcbiAgdGVtcGxhdGVVcmw6ICcuL2Nwcy10ZXh0YXJlYS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Nwcy10ZXh0YXJlYS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIENwc1RleHRhcmVhQ29tcG9uZW50XG4gIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgT25EZXN0cm95XG57XG4gIC8qKlxuICAgKiBMYWJlbCBvZiB0aGUgdGV4dGFyZWEuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgbGFiZWwgPSAnJztcblxuICAvKipcbiAgICogUGxhY2Vob2xkZXIgdGV4dCBmb3IgdGhlIHRleHRhcmVhLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJ1BsZWFzZSBlbnRlcic7XG5cbiAgLyoqXG4gICAqIE51bWJlciBvZiByb3dzIGluIHRoZSB0ZXh0YXJlYS5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSByb3dzID0gNTtcblxuICAvKipcbiAgICogVGhlIGNvbHMgYXR0cmlidXRlIHNwZWNpZmllcyB0aGUgdmlzaWJsZSB3aWR0aCBvZiBhIHRleHRhcmVhLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGNvbHMgPSAyMDtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSB0ZXh0YXJlYSBjYW4gYXV0byBmb2N1cy5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBhdXRvZm9jdXMgPSBmYWxzZTtcblxuICAvKipcbiAgICogQm90dG9tIGhpbnQgdGV4dCBmb3IgdGhlIHRleHRhcmVhLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGhpbnQgPSAnJztcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSB0ZXh0YXJlYSBpcyBkaXNhYmxlZC5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBXaWR0aCBvZiB0aGUgdGV4dGFyZWEsIGl0IGNhbiBiZSBvZiB0eXBlIG51bWJlciBkZW5vdGluZyBwaXhlbHMgb3Igc3RyaW5nLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHdpZHRoOiBudW1iZXIgfCBzdHJpbmcgPSAnMTAwJSc7XG5cbiAgLyoqXG4gICAqIFdoZW4gZW5hYmxlZCwgYSBjbGVhciBpY29uIGlzIGRpc3BsYXllZCB0byBjbGVhciB0aGUgdmFsdWUuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgY2xlYXJhYmxlID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEhpZGVzIGhpbnQgYW5kIHZhbGlkYXRpb24gZXJyb3JzLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGhpZGVEZXRhaWxzID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGUgdGV4dGFyZWEgc2hvdWxkIGhhdmUgcGVyc2lzdGVudCBjbGVhciBpY29uLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHBlcnNpc3RlbnRDbGVhciA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBFcnJvciBtZXNzYWdlLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGVycm9yID0gJyc7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGUgY29tcG9uZW50IGNhbiBiZSByZXNpemVkIHZlcnRpY2FsbHkgb3Igbm90LlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHJlc2l6YWJsZTogJ3ZlcnRpY2FsJyB8ICdub25lJyA9ICd2ZXJ0aWNhbCc7XG5cbiAgLyoqXG4gICAqIFdoZW4gaXQgaXMgbm90IGFuIGVtcHR5IHN0cmluZywgYW4gaW5mbyBpY29uIGlzIGRpc3BsYXllZCB0byBzaG93IHRleHQgZm9yIG1vcmUgaW5mby5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBpbmZvVG9vbHRpcCA9ICcnO1xuXG4gIC8qKlxuICAgKiBJbmZvIHRvb2x0aXAgY2xhc3MgZm9yIHN0eWxpbmcuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgaW5mb1Rvb2x0aXBDbGFzcyA9ICdjcHMtdG9vbHRpcC1jb250ZW50JztcblxuICAvKipcbiAgICogTWF4IHdpZHRoIG9mIGluZm9Ub29sdGlwLCBvZiB0eXBlIG51bWJlciBkZW5vdGluZyBwaXhlbHMgb3Igc3RyaW5nLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGluZm9Ub29sdGlwTWF4V2lkdGg6IG51bWJlciB8IHN0cmluZyA9ICcxMDAlJztcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBpbmZvVG9vbHRpcCBpcyBwZXJzaXN0ZW50LlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGluZm9Ub29sdGlwUGVyc2lzdGVudCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBQb3NpdGlvbiBvZiBpbmZvVG9vbHRpcCwgaXQgY2FuIGJlICd0b3AnLCAnYm90dG9tJywgJ2xlZnQnIG9yICdyaWdodCcuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgaW5mb1Rvb2x0aXBQb3NpdGlvbjogQ3BzVG9vbHRpcFBvc2l0aW9uID0gJ3RvcCc7XG5cbiAgLyoqXG4gICAqIFZhbHVlIG9mIHRoZSB0ZXh0YXJlYS5cbiAgICogQGRlZmF1bHQgJydcbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBzZXQgdmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgIGlmICghdmFsdWUpIHZhbHVlID0gJyc7XG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgfVxuXG4gIGdldCB2YWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB0byBpbnZva2Ugb24gdmFsdWUgY2hhbmdlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIC0gdmFsdWUgY2hhbmdlZC5cbiAgICogQGdyb3VwIEVtaXRzXG4gICAqL1xuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIHRoZSBjb21wb25lbnQgcmVjZWl2ZXMgZm9jdXMuXG4gICAqIEBwYXJhbSB7YW55fVxuICAgKiBAZ3JvdXAgRW1pdHNcbiAgICovXG4gIEBPdXRwdXQoKSBmb2N1c2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiB0aGUgcHJlZml4SWNvbiBpcyBjbGlja2VkLlxuICAgKiBAcGFyYW0ge2FueX1cbiAgICogQGdyb3VwIEVtaXRzXG4gICAqL1xuICBAT3V0cHV0KCkgcHJlZml4SWNvbkNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIHRoZSBjb21wb25lbnQgbG9zZXMgZm9jdXMuXG4gICAqIEBwYXJhbSB7YW55fVxuICAgKiBAZ3JvdXAgRW1pdHNcbiAgICovXG4gIEBPdXRwdXQoKSBibHVycmVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHByaXZhdGUgX3N0YXR1c0NoYW5nZXNTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgX3ZhbHVlID0gJyc7XG5cbiAgY3Z0V2lkdGggPSAnJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAU2VsZigpIEBPcHRpb25hbCgpIHByaXZhdGUgX2NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxuICApIHtcbiAgICBpZiAodGhpcy5fY29udHJvbCkge1xuICAgICAgdGhpcy5fY29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmN2dFdpZHRoID0gY29udmVydFNpemUodGhpcy53aWR0aCk7XG5cbiAgICB0aGlzLl9zdGF0dXNDaGFuZ2VzU3Vic2NyaXB0aW9uID0gdGhpcy5fY29udHJvbD8uc3RhdHVzQ2hhbmdlcz8uc3Vic2NyaWJlKFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLl9jaGVja0Vycm9ycygpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9zdGF0dXNDaGFuZ2VzU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2hlY2tFcnJvcnMoKSB7XG4gICAgaWYgKCF0aGlzLl9jb250cm9sKSByZXR1cm47XG4gICAgY29uc3QgZXJyb3JzID0gdGhpcy5fY29udHJvbD8uZXJyb3JzO1xuXG4gICAgaWYgKCF0aGlzLl9jb250cm9sPy5jb250cm9sPy50b3VjaGVkIHx8ICFlcnJvcnMpIHtcbiAgICAgIHRoaXMuZXJyb3IgPSAnJztcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoJ3JlcXVpcmVkJyBpbiBlcnJvcnMpIHtcbiAgICAgIHRoaXMuZXJyb3IgPSAnRmllbGQgaXMgcmVxdWlyZWQnO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICgncGF0dGVybicgaW4gZXJyb3JzKSB7XG4gICAgICB0aGlzLmVycm9yID0gJ1ZhbHVlIGlzIGludmFsaWQnO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICgnbWlubGVuZ3RoJyBpbiBlcnJvcnMpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkb3Qtbm90YXRpb25cbiAgICAgIHRoaXMuZXJyb3IgPSBgRmllbGQgbXVzdCBjb250YWluIGF0IGxlYXN0ICR7ZXJyb3JzWydtaW5sZW5ndGgnXS5yZXF1aXJlZExlbmd0aH0gY2hhcmFjdGVyc2A7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCdtYXhsZW5ndGgnIGluIGVycm9ycykge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRvdC1ub3RhdGlvblxuICAgICAgdGhpcy5lcnJvciA9IGBGaWVsZCBtdXN0IGNvbnRhaW4gJHtlcnJvcnNbJ21heGxlbmd0aCddLnJlcXVpcmVkTGVuZ3RofSBjaGFyYWN0ZXJzIG1heGltdW1gO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGVyckFyciA9IE9iamVjdC52YWx1ZXMoZXJyb3JzKTtcbiAgICBpZiAoZXJyQXJyLmxlbmd0aCA8IDEpIHtcbiAgICAgIHRoaXMuZXJyb3IgPSAnJztcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbWVzc2FnZSA9IGVyckFyci5maW5kKChtc2cpID0+IHR5cGVvZiBtc2cgPT09ICdzdHJpbmcnKTtcblxuICAgIHRoaXMuZXJyb3IgPSBtZXNzYWdlIHx8ICdVbmtub3duIGVycm9yJztcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgb25DaGFuZ2UgPSAoZXZlbnQ6IGFueSkgPT4ge307XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICBvblRvdWNoZWQgPSAoKSA9PiB7fTtcblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KSB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHVwZGF0ZVZhbHVlRXZlbnQoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IHZhbHVlID0gZXZlbnQ/LnRhcmdldD8udmFsdWUgfHwgJyc7XG4gICAgdGhpcy5fdXBkYXRlVmFsdWUodmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlVmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMud3JpdGVWYWx1ZSh2YWx1ZSk7XG4gICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgdGhpcy52YWx1ZUNoYW5nZWQuZW1pdCh2YWx1ZSk7XG4gIH1cblxuICBjbGVhcigpIHtcbiAgICBpZiAodGhpcy52YWx1ZSAhPT0gJycpIHRoaXMuX3VwZGF0ZVZhbHVlKCcnKTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbikge31cblxuICBvbkJsdXIoKSB7XG4gICAgdGhpcy5fY2hlY2tFcnJvcnMoKTtcbiAgICB0aGlzLmJsdXJyZWQuZW1pdCgpO1xuICB9XG5cbiAgb25Gb2N1cygpIHtcbiAgICB0aGlzLl9jb250cm9sPy5jb250cm9sPy5tYXJrQXNUb3VjaGVkKCk7XG4gICAgdGhpcy5mb2N1c2VkLmVtaXQoKTtcbiAgfVxuXG4gIGZvY3VzKCkge1xuICAgIHRoaXMuX2VsZW1lbnRSZWY/Lm5hdGl2ZUVsZW1lbnQ/LnF1ZXJ5U2VsZWN0b3IoJ3RleHRhcmVhJyk/LmZvY3VzKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjcHMtdGV4dGFyZWEtY29udGFpbmVyXCIgW25nU3R5bGVdPVwieyB3aWR0aDogY3Z0V2lkdGggfVwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJjcHMtdGV4dGFyZWEtbGFiZWxcIlxuICAgIFtuZ0NsYXNzXT1cInsgJ2Nwcy10ZXh0YXJlYS1sYWJlbC1kaXNhYmxlZCc6IGRpc2FibGVkIH1cIlxuICAgICpuZ0lmPVwibGFiZWxcIj5cbiAgICA8bGFiZWw+e3sgbGFiZWwgfX08L2xhYmVsPlxuICAgIDxjcHMtaW5mby1jaXJjbGVcbiAgICAgICpuZ0lmPVwiaW5mb1Rvb2x0aXBcIlxuICAgICAgY2xhc3M9XCJjcHMtdGV4dGFyZWEtbGFiZWwtaW5mby1jaXJjbGVcIlxuICAgICAgc2l6ZT1cInhzbWFsbFwiXG4gICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cImluZm9Ub29sdGlwUG9zaXRpb25cIlxuICAgICAgW3Rvb2x0aXBDb250ZW50Q2xhc3NdPVwiaW5mb1Rvb2x0aXBDbGFzc1wiXG4gICAgICBbdG9vbHRpcE1heFdpZHRoXT1cImluZm9Ub29sdGlwTWF4V2lkdGhcIlxuICAgICAgW3Rvb2x0aXBQZXJzaXN0ZW50XT1cImluZm9Ub29sdGlwUGVyc2lzdGVudFwiXG4gICAgICBbdG9vbHRpcFRleHRdPVwiaW5mb1Rvb2x0aXBcIj5cbiAgICA8L2Nwcy1pbmZvLWNpcmNsZT5cbiAgPC9kaXY+XG5cbiAgPGRpdlxuICAgIGNsYXNzPVwiY3BzLXRleHRhcmVhLXdyYXBcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdjcHMtdGV4dGFyZWEtd3JhcC1lcnJvcic6IGVycm9yLFxuICAgICAgY2xlYXJhYmxlOiBjbGVhcmFibGUsXG4gICAgICAncGVyc2lzdGVudC1jbGVhcic6IHBlcnNpc3RlbnRDbGVhclxuICAgIH1cIj5cbiAgICA8dGV4dGFyZWFcbiAgICAgIHNwZWxsY2hlY2s9XCJmYWxzZVwiXG4gICAgICBbY29sc109XCJjb2xzXCJcbiAgICAgIFtyb3dzXT1cInJvd3NcIlxuICAgICAgW2F1dG9mb2N1c109XCJhdXRvZm9jdXNcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICB3aWR0aDogY3Z0V2lkdGgsXG4gICAgICAgIHJlc2l6ZTogcmVzaXphYmxlXG4gICAgICB9XCJcbiAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcbiAgICAgIChmb2N1cyk9XCJvbkZvY3VzKClcIlxuICAgICAgKGlucHV0KT1cInVwZGF0ZVZhbHVlRXZlbnQoJGV2ZW50KVwiPjwvdGV4dGFyZWE+XG5cbiAgICA8c3BhblxuICAgICAgKm5nSWY9XCJjbGVhcmFibGUgJiYgIWRpc2FibGVkXCJcbiAgICAgIFtzdHlsZS52aXNpYmlsaXR5XT1cIlxuICAgICAgICBwZXJzaXN0ZW50Q2xlYXIgfHwgKCFwZXJzaXN0ZW50Q2xlYXIgJiYgdmFsdWUpID8gJ3Zpc2libGUnIDogJ2hpZGRlbidcbiAgICAgIFwiXG4gICAgICBjbGFzcz1cImNsZWFyLWJ0blwiPlxuICAgICAgPGNwcy1pY29uIGljb249XCJkZWxldGVcIiBzaXplPVwic21hbGxcIiAoY2xpY2spPVwiY2xlYXIoKVwiPjwvY3BzLWljb24+XG4gICAgPC9zcGFuPlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cIiFlcnJvciAmJiAhaGlkZURldGFpbHNcIiBjbGFzcz1cImNwcy10ZXh0YXJlYS1oaW50XCI+XG4gICAge3sgaGludCB9fVxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cImVycm9yICYmICFoaWRlRGV0YWlsc1wiIGNsYXNzPVwiY3BzLXRleHRhcmVhLWVycm9yXCI+XG4gICAge3sgZXJyb3IgfX1cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|