ngx-bimplus-components 0.0.160 → 0.0.161
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/assets/images/default/Attachment_18_gray.svg +1 -0
- package/assets/images/default/Attachment_18_maincolor.svg +3 -0
- package/assets/images/default/Attachmentlink_18_gray.svg +7 -0
- package/assets/images/default/Attachmentlink_18_maincolor.svg +7 -0
- package/assets/images/default/Calendar_18.svg +4 -0
- package/assets/images/default/Calendar_18_disabled.svg +1 -0
- package/assets/images/default/Calendar_18_gray.svg +1 -0
- package/assets/images/default/Comments_18_gray.svg +1 -0
- package/assets/images/default/Comments_18_maincolor.svg +4 -0
- package/assets/images/default/Links_18_gray.svg +1 -0
- package/assets/images/default/Links_18_maincolor.svg +4 -0
- package/assets/images/default/Refresh_18_gray.svg +1 -0
- package/assets/images/default/bimplus_WebIcons_Cross_Disabled.svg +1 -0
- package/assets/images/default/ic_models.svg +3 -0
- package/assets/images/default/ic_models_maincolor.svg +3 -0
- package/assets/images/default/icn_grid_attachments.png +0 -0
- package/assets/images/default/icn_grid_hyperlinks.png +0 -0
- package/assets/images/default/progress-spinner.svg +1 -0
- package/esm2022/lib/components/bimplus-attachments/bimplus-attachments.component.mjs +114 -0
- package/esm2022/lib/components/bimplus-attachments/bimplus-attachments.interface.mjs +38 -0
- package/esm2022/lib/components/bimplus-attachments/components/bimplus-attachment-item/bimplus-attachment-item.component.mjs +95 -0
- package/esm2022/lib/components/bimplus-attachments/services/bimplus-attachments.service.mjs +32 -0
- package/esm2022/lib/components/bimplus-buttons-row/bimplus-buttons-row.component.mjs +40 -5
- package/esm2022/lib/components/bimplus-buttons-row/bimplus-buttons-row.interface.mjs +5 -2
- package/esm2022/lib/components/bimplus-comment/IComment.mjs +2 -0
- package/esm2022/lib/components/bimplus-comment/bimplus-comment.component.mjs +118 -0
- package/esm2022/lib/components/bimplus-connection-designer/bimplus-connection-designer.component.mjs +5 -5
- package/esm2022/lib/components/bimplus-connection-designer-results/bimplus-connection-designer-results.component.mjs +3 -3
- package/esm2022/lib/components/bimplus-flat-tree/bimplus-flat-tree.component.mjs +115 -7
- package/esm2022/lib/components/bimplus-flat-tree/bimplus-flat-tree.interface.mjs +1 -1
- package/esm2022/lib/components/bimplus-floating-bar-header-logo/bimplus-floating-bar-header-logo.component.mjs +1 -1
- package/esm2022/lib/components/bimplus-general-overlay-dialog/bimplus-general-dialog-config-settings.mjs +1 -1
- package/esm2022/lib/components/bimplus-general-overlay-dialog/bimplus-general-overlay-dialog.component.mjs +3 -3
- package/esm2022/lib/components/bimplus-input-checkbox/bimplus-input-checkbox.component.mjs +64 -0
- package/esm2022/lib/components/bimplus-input-combobox/bimplus-input-combobox.component.mjs +161 -0
- package/esm2022/lib/components/bimplus-input-date/bimplus-input-date.component.mjs +271 -0
- package/esm2022/lib/components/bimplus-input-number/bimplus-input-number.component.mjs +85 -0
- package/esm2022/lib/components/bimplus-input-text-field/bimplus-input-text-field.component.mjs +92 -0
- package/esm2022/lib/components/bimplus-link-tooltip-message/bimplus-link-tooltip-message.component.mjs +78 -0
- package/esm2022/lib/components/bimplus-object-comments-list/bimplus-object-comments-list.component.mjs +385 -0
- package/esm2022/lib/components/bimplus-object-comments-list/bimplus-object-comments-list.interface.mjs +3 -0
- package/esm2022/lib/components/bimplus-object-comments-list/bimplus-object-comments-list.service.mjs +104 -0
- package/esm2022/lib/components/bimplus-object-comments-list/bimplusObjectCommentsI.mjs +2 -0
- package/esm2022/lib/components/bimplus-object-complex-properties/bimplus-object-complex-properties.component.mjs +3 -3
- package/esm2022/lib/components/bimplus-object-navigator/bimplus-object-navigator.component.mjs +6 -3
- package/esm2022/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.component.mjs +3 -3
- package/esm2022/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.interface.mjs +1 -1
- package/esm2022/lib/components/bimplus-object-navigator/object-filter-result/object-filter-result.component.mjs +3 -3
- package/esm2022/lib/components/bimplus-object-structure/bimplus-object-structure.component.mjs +42 -4
- package/esm2022/lib/components/bimplus-object-structure/bimplus-object-structure.interface.mjs +4 -2
- package/esm2022/lib/components/bimplus-overlay-dialog-confirm/bimplus-overlay-dialog-confirm.component.mjs +77 -0
- package/esm2022/lib/components/bimplus-overlay-dialog-delete/bimplus-overlay-dialog-delete.component.mjs +83 -0
- package/esm2022/lib/components/bimplus-overlay-dialog-error/bimplus-overlay-dialog-error.component.mjs +31 -8
- package/esm2022/lib/components/bimplus-overlay-dialog-warning/bimplus-overlay-dialog-warning.component.mjs +34 -8
- package/esm2022/lib/components/bimplus-scrollable-container/bimplus-scrollable-container.component.mjs +1 -1
- package/esm2022/lib/components/bimplus-status-bar/bimplus-status-bar.component.mjs +35 -0
- package/esm2022/lib/components/bimplus-status-bar/bimplus-status-bar.service.mjs +35 -0
- package/esm2022/lib/components/bimplus-status-bar/statusBar.mjs +2 -0
- package/esm2022/lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.component.mjs +38 -0
- package/esm2022/lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.interface.mjs +10 -0
- package/esm2022/lib/components/bimplus-tabs-switcher/components/bimplus-tab/bimplus-tab.component.mjs +89 -0
- package/esm2022/lib/components/bimplus-tabs-switcher/services/bimplus-tabs-switcher.service.mjs +33 -0
- package/esm2022/lib/components/bimplus-textarea/autoResizeTextarea.directive.mjs +83 -0
- package/esm2022/lib/components/bimplus-textarea/bimplus-textarea.component.mjs +128 -0
- package/esm2022/lib/components/links-to-documents/links-to-documents.component.mjs +373 -0
- package/esm2022/lib/components/object-hyperlinks/object-hyperlinks.component.mjs +145 -0
- package/esm2022/lib/components/object-hyperlinks-item/object-hyperlinks-item.component.mjs +36 -0
- package/esm2022/lib/components/object-preview/object-preview.component.mjs +284 -0
- package/esm2022/lib/components/object-preview/object-preview.interface.mjs +2 -0
- package/esm2022/lib/components/object-properties/object-properties.component.mjs +545 -0
- package/esm2022/lib/components/object-properties/object-properties.interface.mjs +2 -0
- package/esm2022/lib/components/object-properties/object-properties.service.mjs +26 -0
- package/esm2022/lib/components/object-properties-group/object-properties-group.component.mjs +129 -0
- package/esm2022/lib/components/object-properties-group/object-property-value/object-property-value.component.mjs +55 -0
- package/esm2022/lib/components/object-properties-header/object-properties-header.component.mjs +48 -6
- package/esm2022/lib/components/object-properties-header/object-properties-header.interface.mjs +1 -1
- package/esm2022/lib/components/resizable-panel/resizable-panel.component.mjs +54 -10
- package/esm2022/lib/pipes/bit-converter.pipe.mjs +46 -0
- package/esm2022/lib/pipes/get-attribute-value-as-string.pipe.mjs +173 -0
- package/esm2022/lib/pipes/get-attribute-value.pipe.mjs +156 -0
- package/esm2022/lib/pipes/round.pipe.mjs +20 -0
- package/esm2022/lib/services/decorators.service.mjs +65 -0
- package/esm2022/lib/utils/objectProperties.mjs +9 -0
- package/esm2022/lib/validators/double-enum.validator.mjs +20 -0
- package/esm2022/lib/validators/double.validator.mjs +23 -0
- package/esm2022/lib/validators/guid-enum.validator.mjs +20 -0
- package/esm2022/lib/validators/guid.validator.mjs +14 -0
- package/esm2022/lib/validators/integer.validator.mjs +23 -0
- package/esm2022/lib/validators/string-combobox.validator.mjs +20 -0
- package/esm2022/lib/validators/string-enum.validator.mjs +20 -0
- package/esm2022/public-api.mjs +22 -1
- package/fesm2022/ngx-bimplus-components.mjs +4612 -80
- package/fesm2022/ngx-bimplus-components.mjs.map +1 -1
- package/lib/components/bimplus-attachments/bimplus-attachments.component.d.ts +39 -0
- package/lib/components/bimplus-attachments/bimplus-attachments.interface.d.ts +33 -0
- package/lib/components/bimplus-attachments/components/bimplus-attachment-item/bimplus-attachment-item.component.d.ts +30 -0
- package/lib/components/bimplus-attachments/services/bimplus-attachments.service.d.ts +8 -0
- package/lib/components/bimplus-buttons-row/bimplus-buttons-row.component.d.ts +14 -3
- package/lib/components/bimplus-buttons-row/bimplus-buttons-row.interface.d.ts +7 -1
- package/lib/components/bimplus-comment/IComment.d.ts +4 -0
- package/lib/components/bimplus-comment/bimplus-comment.component.d.ts +39 -0
- package/lib/components/bimplus-flat-tree/bimplus-flat-tree.component.d.ts +16 -3
- package/lib/components/bimplus-flat-tree/bimplus-flat-tree.interface.d.ts +4 -0
- package/lib/components/bimplus-floating-bar-header-logo/bimplus-floating-bar-header-logo.component.d.ts +1 -1
- package/lib/components/bimplus-general-overlay-dialog/bimplus-general-dialog-config-settings.d.ts +3 -3
- package/lib/components/bimplus-input-checkbox/bimplus-input-checkbox.component.d.ts +18 -0
- package/lib/components/bimplus-input-combobox/bimplus-input-combobox.component.d.ts +41 -0
- package/lib/components/bimplus-input-date/bimplus-input-date.component.d.ts +46 -0
- package/lib/components/bimplus-input-number/bimplus-input-number.component.d.ts +26 -0
- package/lib/components/bimplus-input-text-field/bimplus-input-text-field.component.d.ts +28 -0
- package/lib/components/bimplus-link-tooltip-message/bimplus-link-tooltip-message.component.d.ts +22 -0
- package/lib/components/bimplus-object-comments-list/bimplus-object-comments-list.component.d.ts +87 -0
- package/lib/components/bimplus-object-comments-list/bimplus-object-comments-list.interface.d.ts +10 -0
- package/lib/components/bimplus-object-comments-list/bimplus-object-comments-list.service.d.ts +20 -0
- package/lib/components/bimplus-object-comments-list/bimplusObjectCommentsI.d.ts +11 -0
- package/lib/components/bimplus-object-navigator/bimplus-object-navigator.component.d.ts +2 -1
- package/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.component.d.ts +12 -12
- package/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.interface.d.ts +3 -3
- package/lib/components/bimplus-object-structure/bimplus-object-structure.component.d.ts +5 -1
- package/lib/components/bimplus-object-structure/bimplus-object-structure.interface.d.ts +2 -0
- package/lib/components/bimplus-overlay-dialog-confirm/bimplus-overlay-dialog-confirm.component.d.ts +29 -0
- package/lib/components/bimplus-overlay-dialog-delete/bimplus-overlay-dialog-delete.component.d.ts +24 -0
- package/lib/components/bimplus-overlay-dialog-error/bimplus-overlay-dialog-error.component.d.ts +8 -1
- package/lib/components/bimplus-overlay-dialog-warning/bimplus-overlay-dialog-warning.component.d.ts +11 -1
- package/lib/components/bimplus-scrollable-container/bimplus-scrollable-container.component.d.ts +1 -1
- package/lib/components/bimplus-status-bar/bimplus-status-bar.component.d.ts +14 -0
- package/lib/components/bimplus-status-bar/bimplus-status-bar.service.d.ts +14 -0
- package/lib/components/bimplus-status-bar/statusBar.d.ts +4 -0
- package/lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.component.d.ts +16 -0
- package/lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.interface.d.ts +18 -0
- package/lib/components/bimplus-tabs-switcher/components/bimplus-tab/bimplus-tab.component.d.ts +36 -0
- package/lib/components/bimplus-tabs-switcher/services/bimplus-tabs-switcher.service.d.ts +15 -0
- package/lib/components/bimplus-textarea/autoResizeTextarea.directive.d.ts +24 -0
- package/lib/components/bimplus-textarea/bimplus-textarea.component.d.ts +42 -0
- package/lib/components/links-to-documents/links-to-documents.component.d.ts +68 -0
- package/lib/components/object-hyperlinks/object-hyperlinks.component.d.ts +32 -0
- package/lib/components/object-hyperlinks-item/object-hyperlinks-item.component.d.ts +15 -0
- package/lib/components/object-preview/object-preview.component.d.ts +45 -0
- package/lib/components/object-preview/object-preview.interface.d.ts +5 -0
- package/lib/components/object-properties/object-properties.component.d.ts +79 -0
- package/lib/components/object-properties/object-properties.interface.d.ts +22 -0
- package/lib/components/object-properties/object-properties.service.d.ts +12 -0
- package/lib/components/object-properties-group/object-properties-group.component.d.ts +30 -0
- package/lib/components/object-properties-group/object-property-value/object-property-value.component.d.ts +14 -0
- package/lib/components/object-properties-header/object-properties-header.component.d.ts +13 -4
- package/lib/components/object-properties-header/object-properties-header.interface.d.ts +8 -0
- package/lib/components/resizable-panel/resizable-panel.component.d.ts +12 -3
- package/lib/pipes/bit-converter.pipe.d.ts +17 -0
- package/lib/pipes/get-attribute-value-as-string.pipe.d.ts +35 -0
- package/lib/pipes/get-attribute-value.pipe.d.ts +35 -0
- package/lib/pipes/round.pipe.d.ts +7 -0
- package/lib/services/decorators.service.d.ts +12 -0
- package/lib/utils/objectProperties.d.ts +2 -0
- package/lib/validators/double-enum.validator.d.ts +2 -0
- package/lib/validators/double.validator.d.ts +2 -0
- package/lib/validators/guid-enum.validator.d.ts +2 -0
- package/lib/validators/guid.validator.d.ts +2 -0
- package/lib/validators/integer.validator.d.ts +2 -0
- package/lib/validators/string-combobox.validator.d.ts +2 -0
- package/lib/validators/string-enum.validator.d.ts +2 -0
- package/package.json +14 -4
- package/public-api.d.ts +21 -0
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { Directive, HostListener, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class AutoResizeTextareaDirective {
|
|
4
|
+
set autoResizeMinRows(value) {
|
|
5
|
+
this._autoResizeMinRows = value > 0 ? value : 1;
|
|
6
|
+
this.currentRows = this.currentRows < value ? value : this.currentRows;
|
|
7
|
+
this.input.rows = value;
|
|
8
|
+
}
|
|
9
|
+
get autoResizeMinRows() {
|
|
10
|
+
return this._autoResizeMinRows;
|
|
11
|
+
}
|
|
12
|
+
set autoResizeMaxRows(value) {
|
|
13
|
+
this._autoResizeMaxRows = value < 1 ? 1 : value;
|
|
14
|
+
}
|
|
15
|
+
get autoResizeMaxRows() {
|
|
16
|
+
return this._autoResizeMaxRows;
|
|
17
|
+
}
|
|
18
|
+
set libAutoResizeTextarea(condition) {
|
|
19
|
+
this._libAutoResizeTextarea = condition;
|
|
20
|
+
}
|
|
21
|
+
get libAutoResizeTextarea() {
|
|
22
|
+
return this._libAutoResizeTextarea;
|
|
23
|
+
}
|
|
24
|
+
constructor(el) {
|
|
25
|
+
this.el = el;
|
|
26
|
+
this._libAutoResizeTextarea = false;
|
|
27
|
+
this._autoResizeMinRows = 1;
|
|
28
|
+
this._autoResizeMaxRows = 1;
|
|
29
|
+
this.currentRows = 1;
|
|
30
|
+
this.offsetHeight = 0;
|
|
31
|
+
this.avgLineHeight = 0;
|
|
32
|
+
this.input = this.el.nativeElement;
|
|
33
|
+
}
|
|
34
|
+
onInput() {
|
|
35
|
+
if (this.libAutoResizeTextarea) {
|
|
36
|
+
this.calculateLineHeight();
|
|
37
|
+
this.updateRows();
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
calculateLineHeight() {
|
|
41
|
+
const style = window.getComputedStyle(this.input, null);
|
|
42
|
+
const lineHeight = style.getPropertyValue('line-height');
|
|
43
|
+
let newLineHeight = 0;
|
|
44
|
+
if (lineHeight === 'normal') {
|
|
45
|
+
newLineHeight = (parseFloat(style.getPropertyValue('font-size')) || 16) * 1.14;
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
newLineHeight = parseFloat(lineHeight);
|
|
49
|
+
}
|
|
50
|
+
this.avgLineHeight = Math.trunc(newLineHeight);
|
|
51
|
+
}
|
|
52
|
+
updateRows() {
|
|
53
|
+
if (this.offsetHeight <= 0) {
|
|
54
|
+
this.offsetHeight = this.input.scrollHeight;
|
|
55
|
+
}
|
|
56
|
+
this.input.rows = this._autoResizeMinRows;
|
|
57
|
+
const rows = Math.floor((this.input.scrollHeight - this.offsetHeight) /
|
|
58
|
+
this.avgLineHeight);
|
|
59
|
+
const rowsCount = this._autoResizeMinRows + rows;
|
|
60
|
+
this.input.rows = rowsCount > this._autoResizeMaxRows
|
|
61
|
+
? this._autoResizeMaxRows
|
|
62
|
+
: rowsCount;
|
|
63
|
+
}
|
|
64
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: AutoResizeTextareaDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
65
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.12", type: AutoResizeTextareaDirective, isStandalone: true, selector: "[libAutoResizeTextarea]", inputs: { autoResizeMinRows: "autoResizeMinRows", autoResizeMaxRows: "autoResizeMaxRows", libAutoResizeTextarea: "libAutoResizeTextarea" }, host: { listeners: { "input": "onInput()" } }, ngImport: i0 }); }
|
|
66
|
+
}
|
|
67
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: AutoResizeTextareaDirective, decorators: [{
|
|
68
|
+
type: Directive,
|
|
69
|
+
args: [{
|
|
70
|
+
selector: '[libAutoResizeTextarea]',
|
|
71
|
+
standalone: true
|
|
72
|
+
}]
|
|
73
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { autoResizeMinRows: [{
|
|
74
|
+
type: Input
|
|
75
|
+
}], autoResizeMaxRows: [{
|
|
76
|
+
type: Input
|
|
77
|
+
}], libAutoResizeTextarea: [{
|
|
78
|
+
type: Input
|
|
79
|
+
}], onInput: [{
|
|
80
|
+
type: HostListener,
|
|
81
|
+
args: ['input']
|
|
82
|
+
}] } });
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b1Jlc2l6ZVRleHRhcmVhLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1iaW1wbHVzLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2JpbXBsdXMtdGV4dGFyZWEvYXV0b1Jlc2l6ZVRleHRhcmVhLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTTNFLE1BQU0sT0FBTywyQkFBMkI7SUFVdEMsSUFDSSxpQkFBaUIsQ0FBQyxLQUFhO1FBQ2pDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDdkUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO0lBQzFCLENBQUM7SUFDRCxJQUFJLGlCQUFpQjtRQUNuQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFDSSxpQkFBaUIsQ0FBQyxLQUFhO1FBQ2pDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNsRCxDQUFDO0lBQ0QsSUFBSSxpQkFBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDakMsQ0FBQztJQUVELElBQ0kscUJBQXFCLENBQUMsU0FBa0I7UUFDMUMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLFNBQVMsQ0FBQztJQUMxQyxDQUFDO0lBQ0QsSUFBSSxxQkFBcUI7UUFDdkIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUM7SUFDckMsQ0FBQztJQUVELFlBQW9CLEVBQWM7UUFBZCxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBbEMxQiwyQkFBc0IsR0FBRyxLQUFLLENBQUM7UUFDL0IsdUJBQWtCLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZCLHVCQUFrQixHQUFHLENBQUMsQ0FBQztRQUN2QixnQkFBVyxHQUFHLENBQUMsQ0FBQztRQUNoQixpQkFBWSxHQUFHLENBQUMsQ0FBQztRQUVqQixrQkFBYSxHQUFHLENBQUMsQ0FBQztRQTZCeEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQztJQUNyQyxDQUFDO0lBR0QsT0FBTztRQUNMLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3BCLENBQUM7SUFDSCxDQUFDO0lBRU8sbUJBQW1CO1FBQ3pCLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3hELE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN6RCxJQUFJLGFBQWEsR0FBRyxDQUFDLENBQUM7UUFDdEIsSUFBSSxVQUFVLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDNUIsYUFBYSxHQUFHLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUNqRixDQUFDO2FBQU0sQ0FBQztZQUNOLGFBQWEsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekMsQ0FBQztRQUNELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRU8sVUFBVTtRQUNoQixJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQztRQUM5QyxDQUFDO1FBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1FBRTFDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQ3JCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztZQUM3QyxJQUFJLENBQUMsYUFBYSxDQUNuQixDQUFDO1FBRUYsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztRQUVqRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxTQUFTLEdBQUcsSUFBSSxDQUFDLGtCQUFrQjtZQUNuRCxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQjtZQUN6QixDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ2hCLENBQUM7K0dBN0VVLDJCQUEyQjttR0FBM0IsMkJBQTJCOzs0RkFBM0IsMkJBQTJCO2tCQUp2QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx5QkFBeUI7b0JBQ25DLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjsrRUFZSyxpQkFBaUI7c0JBRHBCLEtBQUs7Z0JBV0YsaUJBQWlCO3NCQURwQixLQUFLO2dCQVNGLHFCQUFxQjtzQkFEeEIsS0FBSztnQkFhTixPQUFPO3NCQUROLFlBQVk7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbbGliQXV0b1Jlc2l6ZVRleHRhcmVhXScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXV0b1Jlc2l6ZVRleHRhcmVhRGlyZWN0aXZlIHtcclxuXHJcbiAgcHJpdmF0ZSBfbGliQXV0b1Jlc2l6ZVRleHRhcmVhID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfYXV0b1Jlc2l6ZU1pblJvd3MgPSAxO1xyXG4gIHByaXZhdGUgX2F1dG9SZXNpemVNYXhSb3dzID0gMTtcclxuICBwcml2YXRlIGN1cnJlbnRSb3dzID0gMTtcclxuICBwcml2YXRlIG9mZnNldEhlaWdodCA9IDA7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBpbnB1dDogSFRNTFRleHRBcmVhRWxlbWVudDtcclxuICBwcml2YXRlIGF2Z0xpbmVIZWlnaHQgPSAwO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBhdXRvUmVzaXplTWluUm93cyh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl9hdXRvUmVzaXplTWluUm93cyA9IHZhbHVlID4gMCA/IHZhbHVlIDogMTtcclxuICAgIHRoaXMuY3VycmVudFJvd3MgPSB0aGlzLmN1cnJlbnRSb3dzIDwgdmFsdWUgPyB2YWx1ZSA6IHRoaXMuY3VycmVudFJvd3M7XHJcbiAgICB0aGlzLmlucHV0LnJvd3MgPSB2YWx1ZTtcclxuICB9XHJcbiAgZ2V0IGF1dG9SZXNpemVNaW5Sb3dzKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fYXV0b1Jlc2l6ZU1pblJvd3M7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBhdXRvUmVzaXplTWF4Um93cyh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl9hdXRvUmVzaXplTWF4Um93cyA9IHZhbHVlIDwgMSA/IDEgOiB2YWx1ZTtcclxuICB9XHJcbiAgZ2V0IGF1dG9SZXNpemVNYXhSb3dzKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fYXV0b1Jlc2l6ZU1heFJvd3M7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBsaWJBdXRvUmVzaXplVGV4dGFyZWEoY29uZGl0aW9uOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9saWJBdXRvUmVzaXplVGV4dGFyZWEgPSBjb25kaXRpb247XHJcbiAgfVxyXG4gIGdldCBsaWJBdXRvUmVzaXplVGV4dGFyZWEoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fbGliQXV0b1Jlc2l6ZVRleHRhcmVhO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZikge1xyXG4gICAgdGhpcy5pbnB1dCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudDtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2lucHV0JylcclxuICBvbklucHV0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMubGliQXV0b1Jlc2l6ZVRleHRhcmVhKSB7XHJcbiAgICAgIHRoaXMuY2FsY3VsYXRlTGluZUhlaWdodCgpO1xyXG4gICAgICB0aGlzLnVwZGF0ZVJvd3MoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2FsY3VsYXRlTGluZUhlaWdodCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5pbnB1dCwgbnVsbCk7XHJcbiAgICBjb25zdCBsaW5lSGVpZ2h0ID0gc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnbGluZS1oZWlnaHQnKTtcclxuICAgIGxldCBuZXdMaW5lSGVpZ2h0ID0gMDtcclxuICAgIGlmIChsaW5lSGVpZ2h0ID09PSAnbm9ybWFsJykge1xyXG4gICAgICBuZXdMaW5lSGVpZ2h0ID0gKHBhcnNlRmxvYXQoc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnZm9udC1zaXplJykpIHx8IDE2KSAqIDEuMTQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBuZXdMaW5lSGVpZ2h0ID0gcGFyc2VGbG9hdChsaW5lSGVpZ2h0KTtcclxuICAgIH1cclxuICAgIHRoaXMuYXZnTGluZUhlaWdodCA9IE1hdGgudHJ1bmMobmV3TGluZUhlaWdodCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZVJvd3MoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5vZmZzZXRIZWlnaHQgPD0gMCkge1xyXG4gICAgICB0aGlzLm9mZnNldEhlaWdodCA9IHRoaXMuaW5wdXQuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaW5wdXQucm93cyA9IHRoaXMuX2F1dG9SZXNpemVNaW5Sb3dzO1xyXG5cclxuICAgIGNvbnN0IHJvd3MgPSBNYXRoLmZsb29yKFxyXG4gICAgICAodGhpcy5pbnB1dC5zY3JvbGxIZWlnaHQgLSB0aGlzLm9mZnNldEhlaWdodCkgL1xyXG4gICAgICB0aGlzLmF2Z0xpbmVIZWlnaHRcclxuICAgICk7XHJcblxyXG4gICAgY29uc3Qgcm93c0NvdW50ID0gdGhpcy5fYXV0b1Jlc2l6ZU1pblJvd3MgKyByb3dzO1xyXG5cclxuICAgIHRoaXMuaW5wdXQucm93cyA9IHJvd3NDb3VudCA+IHRoaXMuX2F1dG9SZXNpemVNYXhSb3dzXHJcbiAgICAgID8gdGhpcy5fYXV0b1Jlc2l6ZU1heFJvd3NcclxuICAgICAgOiByb3dzQ291bnQ7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { FormControl, ReactiveFormsModule } from '@angular/forms';
|
|
3
|
+
import { AutoResizeTextareaDirective } from './autoResizeTextarea.directive';
|
|
4
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/forms";
|
|
7
|
+
import * as i2 from "@ngx-translate/core";
|
|
8
|
+
export class BimplusTextareaComponent {
|
|
9
|
+
set name(value) {
|
|
10
|
+
this._name = value;
|
|
11
|
+
}
|
|
12
|
+
get name() {
|
|
13
|
+
return this._name;
|
|
14
|
+
}
|
|
15
|
+
set placeholder(value) {
|
|
16
|
+
this._placeholder = value;
|
|
17
|
+
}
|
|
18
|
+
get placeholder() {
|
|
19
|
+
return this._placeholder;
|
|
20
|
+
}
|
|
21
|
+
set readonly(value) {
|
|
22
|
+
this._readonly = value;
|
|
23
|
+
}
|
|
24
|
+
get readonly() {
|
|
25
|
+
return this._readonly;
|
|
26
|
+
}
|
|
27
|
+
set required(value) {
|
|
28
|
+
this._required = value;
|
|
29
|
+
}
|
|
30
|
+
get required() {
|
|
31
|
+
return this._required;
|
|
32
|
+
}
|
|
33
|
+
set minRows(value) {
|
|
34
|
+
this._minRows = value;
|
|
35
|
+
}
|
|
36
|
+
get minRows() {
|
|
37
|
+
return this._minRows;
|
|
38
|
+
}
|
|
39
|
+
set maxRows(value) {
|
|
40
|
+
this._maxRows = value;
|
|
41
|
+
}
|
|
42
|
+
get maxRows() {
|
|
43
|
+
return this._maxRows;
|
|
44
|
+
}
|
|
45
|
+
set activeAutoResizeTextarea(value) {
|
|
46
|
+
this._activeAutoResizeTextarea = value;
|
|
47
|
+
}
|
|
48
|
+
get activeAutoResizeTextarea() {
|
|
49
|
+
return this._activeAutoResizeTextarea;
|
|
50
|
+
}
|
|
51
|
+
set clearValue(clear) {
|
|
52
|
+
if (clear) {
|
|
53
|
+
this.textareaControl.reset();
|
|
54
|
+
this._clearValue = false;
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
this._clearValue = clear;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
get clearValue() {
|
|
61
|
+
return this._clearValue;
|
|
62
|
+
}
|
|
63
|
+
set rows(value) {
|
|
64
|
+
this._rows = value;
|
|
65
|
+
}
|
|
66
|
+
get rows() {
|
|
67
|
+
return this._rows;
|
|
68
|
+
}
|
|
69
|
+
constructor() {
|
|
70
|
+
this.textareaControl = new FormControl();
|
|
71
|
+
this.textAreaValueChange = new EventEmitter();
|
|
72
|
+
this._name = '';
|
|
73
|
+
this._placeholder = '';
|
|
74
|
+
this._readonly = false;
|
|
75
|
+
this._required = false;
|
|
76
|
+
this._rows = 1;
|
|
77
|
+
this._activeAutoResizeTextarea = false;
|
|
78
|
+
this._minRows = 1;
|
|
79
|
+
this._maxRows = 1;
|
|
80
|
+
this._clearValue = false;
|
|
81
|
+
}
|
|
82
|
+
ngOnInit() {
|
|
83
|
+
this._textareaSubscription = this.textareaControl.valueChanges.subscribe(value => {
|
|
84
|
+
this.textAreaValueChange.emit(value);
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
getTextareaValue() {
|
|
88
|
+
return this.textareaControl.value;
|
|
89
|
+
}
|
|
90
|
+
onKeydown(event) {
|
|
91
|
+
const forbiddenKeys = ['<', '>'];
|
|
92
|
+
if (forbiddenKeys.includes(event.key)) {
|
|
93
|
+
event.preventDefault();
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
return true;
|
|
97
|
+
}
|
|
98
|
+
ngOnDestroy() {
|
|
99
|
+
this._textareaSubscription?.unsubscribe();
|
|
100
|
+
}
|
|
101
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BimplusTextareaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
102
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.12", type: BimplusTextareaComponent, isStandalone: true, selector: "lib-bimplus-textarea", inputs: { name: "name", placeholder: "placeholder", readonly: "readonly", required: "required", minRows: "minRows", maxRows: "maxRows", activeAutoResizeTextarea: "activeAutoResizeTextarea", clearValue: "clearValue", rows: "rows" }, outputs: { textAreaValueChange: "textAreaValueChange" }, ngImport: i0, template: "@if(activeAutoResizeTextarea){\r\n <textarea\r\n [formControl]=\"textareaControl\"\r\n [placeholder]=\"placeholder | translate\"\r\n [name]=\"name\"\r\n [readonly]=\"readonly\"\r\n [required]=\"required\"\r\n (keydown)=\"onKeydown($event)\"\r\n [libAutoResizeTextarea]=\"activeAutoResizeTextarea\"\r\n [autoResizeMinRows]=\"minRows\"\r\n [autoResizeMaxRows]=\"maxRows\"\r\n ></textarea>\r\n } @else {\r\n <textarea\r\n [formControl]=\"textareaControl\"\r\n [placeholder]=\"placeholder\"\r\n [name]=\"name\"\r\n [readonly]=\"readonly\"\r\n [required]=\"required\"\r\n (keydown)=\"onKeydown($event)\"\r\n [rows]=\"rows\"\r\n ></textarea>\r\n }\r\n", styles: ["textarea{font-size:1.28rem;font-family:Source Sans Pro,Helvetica,Arial,tahoma,sans-serif;font-weight:400;padding:.4rem .4rem .4rem .3rem;border-radius:0;border:.1rem solid;border-color:var(--issue-details-view-select-border-color);background-color:var(--issue-details-view-select-background-color);resize:none;width:calc(100% - .8rem);margin-right:.8rem;box-sizing:border-box;white-space:normal;line-height:1.6rem}textarea:hover{background-color:var(--control-background-hover-color);border-radius:0;border:.1rem solid;border-color:var(--issue-details-view-select-border-color)}textarea:focus-visible{border-radius:0;border:.1rem solid;border-color:var(--issue-details-view-select-border-color);outline:none}textarea::placeholder{color:var(--dark-gray-color)}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: AutoResizeTextareaDirective, selector: "[libAutoResizeTextarea]", inputs: ["autoResizeMinRows", "autoResizeMaxRows", "libAutoResizeTextarea"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
|
|
103
|
+
}
|
|
104
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BimplusTextareaComponent, decorators: [{
|
|
105
|
+
type: Component,
|
|
106
|
+
args: [{ selector: 'lib-bimplus-textarea', standalone: true, imports: [ReactiveFormsModule, AutoResizeTextareaDirective, TranslateModule], template: "@if(activeAutoResizeTextarea){\r\n <textarea\r\n [formControl]=\"textareaControl\"\r\n [placeholder]=\"placeholder | translate\"\r\n [name]=\"name\"\r\n [readonly]=\"readonly\"\r\n [required]=\"required\"\r\n (keydown)=\"onKeydown($event)\"\r\n [libAutoResizeTextarea]=\"activeAutoResizeTextarea\"\r\n [autoResizeMinRows]=\"minRows\"\r\n [autoResizeMaxRows]=\"maxRows\"\r\n ></textarea>\r\n } @else {\r\n <textarea\r\n [formControl]=\"textareaControl\"\r\n [placeholder]=\"placeholder\"\r\n [name]=\"name\"\r\n [readonly]=\"readonly\"\r\n [required]=\"required\"\r\n (keydown)=\"onKeydown($event)\"\r\n [rows]=\"rows\"\r\n ></textarea>\r\n }\r\n", styles: ["textarea{font-size:1.28rem;font-family:Source Sans Pro,Helvetica,Arial,tahoma,sans-serif;font-weight:400;padding:.4rem .4rem .4rem .3rem;border-radius:0;border:.1rem solid;border-color:var(--issue-details-view-select-border-color);background-color:var(--issue-details-view-select-background-color);resize:none;width:calc(100% - .8rem);margin-right:.8rem;box-sizing:border-box;white-space:normal;line-height:1.6rem}textarea:hover{background-color:var(--control-background-hover-color);border-radius:0;border:.1rem solid;border-color:var(--issue-details-view-select-border-color)}textarea:focus-visible{border-radius:0;border:.1rem solid;border-color:var(--issue-details-view-select-border-color);outline:none}textarea::placeholder{color:var(--dark-gray-color)}\n"] }]
|
|
107
|
+
}], ctorParameters: () => [], propDecorators: { textAreaValueChange: [{
|
|
108
|
+
type: Output
|
|
109
|
+
}], name: [{
|
|
110
|
+
type: Input
|
|
111
|
+
}], placeholder: [{
|
|
112
|
+
type: Input
|
|
113
|
+
}], readonly: [{
|
|
114
|
+
type: Input
|
|
115
|
+
}], required: [{
|
|
116
|
+
type: Input
|
|
117
|
+
}], minRows: [{
|
|
118
|
+
type: Input
|
|
119
|
+
}], maxRows: [{
|
|
120
|
+
type: Input
|
|
121
|
+
}], activeAutoResizeTextarea: [{
|
|
122
|
+
type: Input
|
|
123
|
+
}], clearValue: [{
|
|
124
|
+
type: Input
|
|
125
|
+
}], rows: [{
|
|
126
|
+
type: Input
|
|
127
|
+
}] } });
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmltcGx1cy10ZXh0YXJlYS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtYmltcGx1cy1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9iaW1wbHVzLXRleHRhcmVhL2JpbXBsdXMtdGV4dGFyZWEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYmltcGx1cy10ZXh0YXJlYS9iaW1wbHVzLXRleHRhcmVhLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFTdEQsTUFBTSxPQUFPLHdCQUF3QjtJQWtCbkMsSUFDSSxJQUFJLENBQUMsS0FBYTtRQUNwQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0lBQ0QsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUNJLFdBQVcsQ0FBQyxLQUFhO1FBQzNCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQzVCLENBQUM7SUFDRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQ0ksUUFBUSxDQUFDLEtBQWM7UUFDekIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7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QUUsV0FBVyxFQUFFLENBQUM7SUFDNUMsQ0FBQzsrR0F0SFUsd0JBQXdCO21HQUF4Qix3QkFBd0IsaVhDYnJDLCtyQkF1QkEsa3pCRFpZLG1CQUFtQix1eUJBQUUsMkJBQTJCLGdKQUFFLGVBQWU7OzRGQUVoRSx3QkFBd0I7a0JBUHBDLFNBQVM7K0JBQ0Usc0JBQXNCLGNBR3BCLElBQUksV0FDUCxDQUFDLG1CQUFtQixFQUFFLDJCQUEyQixFQUFFLGVBQWUsQ0FBQzt3REFRbEUsbUJBQW1CO3NCQUE1QixNQUFNO2dCQWFILElBQUk7c0JBRFAsS0FBSztnQkFTRixXQUFXO3NCQURkLEtBQUs7Z0JBU0YsUUFBUTtzQkFEWCxLQUFLO2dCQVNGLFFBQVE7c0JBRFgsS0FBSztnQkFTRixPQUFPO3NCQURWLEtBQUs7Z0JBU0YsT0FBTztzQkFEVixLQUFLO2dCQVNGLHdCQUF3QjtzQkFEM0IsS0FBSztnQkFTRixVQUFVO3NCQURiLEtBQUs7Z0JBY0YsSUFBSTtzQkFEUCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQXV0b1Jlc2l6ZVRleHRhcmVhRGlyZWN0aXZlIH0gZnJvbSAnLi9hdXRvUmVzaXplVGV4dGFyZWEuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1iaW1wbHVzLXRleHRhcmVhJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYmltcGx1cy10ZXh0YXJlYS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYmltcGx1cy10ZXh0YXJlYS5jb21wb25lbnQubGVzcyddLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1JlYWN0aXZlRm9ybXNNb2R1bGUsIEF1dG9SZXNpemVUZXh0YXJlYURpcmVjdGl2ZSwgVHJhbnNsYXRlTW9kdWxlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmltcGx1c1RleHRhcmVhQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICB0ZXh0YXJlYUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuXHJcbiAgcHJpdmF0ZSBfdGV4dGFyZWFTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XHJcblxyXG4gIEBPdXRwdXQoKSB0ZXh0QXJlYVZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIHByaXZhdGUgX25hbWUgPSAnJztcclxuICBwcml2YXRlIF9wbGFjZWhvbGRlciA9ICcnO1xyXG4gIHByaXZhdGUgX3JlYWRvbmx5ID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfcmVxdWlyZWQgPSBmYWxzZTtcclxuICBwcml2YXRlIF9yb3dzID0gMTtcclxuICBwcml2YXRlIF9hY3RpdmVBdXRvUmVzaXplVGV4dGFyZWEgPSBmYWxzZTtcclxuICBwcml2YXRlIF9taW5Sb3dzID0gMTtcclxuICBwcml2YXRlIF9tYXhSb3dzID0gMTtcclxuICBwcml2YXRlIF9jbGVhclZhbHVlID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IG5hbWUodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5fbmFtZSA9IHZhbHVlO1xyXG4gIH1cclxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX25hbWU7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBwbGFjZWhvbGRlcih2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9wbGFjZWhvbGRlciA9IHZhbHVlO1xyXG4gIH1cclxuICBnZXQgcGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9wbGFjZWhvbGRlcjtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHJlYWRvbmx5KHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9yZWFkb25seSA9IHZhbHVlO1xyXG4gIH1cclxuICBnZXQgcmVhZG9ubHkoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fcmVhZG9ubHk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCByZXF1aXJlZCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fcmVxdWlyZWQgPSB2YWx1ZTtcclxuICB9XHJcbiAgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgbWluUm93cyh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl9taW5Sb3dzID0gdmFsdWU7XHJcbiAgfVxyXG4gIGdldCBtaW5Sb3dzKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fbWluUm93cztcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IG1heFJvd3ModmFsdWU6IG51bWJlcikge1xyXG4gICAgdGhpcy5fbWF4Um93cyA9IHZhbHVlO1xyXG4gIH1cclxuICBnZXQgbWF4Um93cygpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX21heFJvd3M7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBhY3RpdmVBdXRvUmVzaXplVGV4dGFyZWEodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2FjdGl2ZUF1dG9SZXNpemVUZXh0YXJlYSA9IHZhbHVlO1xyXG4gIH1cclxuICBnZXQgYWN0aXZlQXV0b1Jlc2l6ZVRleHRhcmVhKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZUF1dG9SZXNpemVUZXh0YXJlYTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGNsZWFyVmFsdWUoY2xlYXI6IGJvb2xlYW4pIHtcclxuICAgIGlmIChjbGVhcikge1xyXG4gICAgICB0aGlzLnRleHRhcmVhQ29udHJvbC5yZXNldCgpO1xyXG4gICAgICB0aGlzLl9jbGVhclZhbHVlID0gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9jbGVhclZhbHVlID0gY2xlYXI7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBjbGVhclZhbHVlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NsZWFyVmFsdWU7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCByb3dzKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMuX3Jvd3MgPSB2YWx1ZTtcclxuICB9XHJcbiAgZ2V0IHJvd3MoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9yb3dzO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuX3RleHRhcmVhU3Vic2NyaXB0aW9uID0gdGhpcy50ZXh0YXJlYUNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2YWx1ZSA9PiB7XHJcbiAgICAgIHRoaXMudGV4dEFyZWFWYWx1ZUNoYW5nZS5lbWl0KHZhbHVlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0VGV4dGFyZWFWYWx1ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnRleHRhcmVhQ29udHJvbC52YWx1ZTtcclxuICB9XHJcblxyXG4gIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgZm9yYmlkZGVuS2V5cyA9IFsnPCcsICc+J107XHJcbiAgICBpZiAoZm9yYmlkZGVuS2V5cy5pbmNsdWRlcyhldmVudC5rZXkpKSB7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLl90ZXh0YXJlYVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcbn1cclxuIiwiQGlmKGFjdGl2ZUF1dG9SZXNpemVUZXh0YXJlYSl7XHJcbiAgPHRleHRhcmVhXHJcbiAgICBbZm9ybUNvbnRyb2xdPVwidGV4dGFyZWFDb250cm9sXCJcclxuICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlciB8IHRyYW5zbGF0ZVwiXHJcbiAgICBbbmFtZV09XCJuYW1lXCJcclxuICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXHJcbiAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxyXG4gICAgKGtleWRvd24pPVwib25LZXlkb3duKCRldmVudClcIlxyXG4gICAgW2xpYkF1dG9SZXNpemVUZXh0YXJlYV09XCJhY3RpdmVBdXRvUmVzaXplVGV4dGFyZWFcIlxyXG4gICAgW2F1dG9SZXNpemVNaW5Sb3dzXT1cIm1pblJvd3NcIlxyXG4gICAgW2F1dG9SZXNpemVNYXhSb3dzXT1cIm1heFJvd3NcIlxyXG4gICAgPjwvdGV4dGFyZWE+XHJcbiAgfSBAZWxzZSB7XHJcbiAgPHRleHRhcmVhXHJcbiAgICBbZm9ybUNvbnRyb2xdPVwidGV4dGFyZWFDb250cm9sXCJcclxuICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgICBbbmFtZV09XCJuYW1lXCJcclxuICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXHJcbiAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxyXG4gICAgKGtleWRvd24pPVwib25LZXlkb3duKCRldmVudClcIlxyXG4gICAgW3Jvd3NdPVwicm93c1wiXHJcbiAgPjwvdGV4dGFyZWE+XHJcbiAgfVxyXG4iXX0=
|