@mediusinc/mng-commons 5.1.0-rc.0 → 5.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/README.md +7 -6
- package/core/helpers/coercion.d.ts +1 -0
- package/core/index.d.ts +0 -1
- package/esm2022/core/components/notification/notification-wrapper.component.mjs +5 -6
- package/esm2022/core/components/pages/error/error.page.component.mjs +4 -4
- package/esm2022/core/components/pages/not-found/not-found.page.component.mjs +4 -4
- package/esm2022/core/directives/component.directive.mjs +3 -3
- package/esm2022/core/directives/template.directive.mjs +3 -3
- package/esm2022/core/helpers/coercion.mjs +4 -1
- package/esm2022/core/index.mjs +1 -2
- package/esm2022/core/pipes/boolean.pipe.mjs +3 -3
- package/esm2022/core/pipes/class-map.pipe.mjs +3 -3
- package/esm2022/core/pipes/enum.pipe.mjs +5 -5
- package/esm2022/core/pipes/enumerate-async.pipe.mjs +3 -3
- package/esm2022/core/pipes/enumerate.pipe.mjs +3 -3
- package/esm2022/core/pipes/getter.pipe.mjs +3 -3
- package/esm2022/core/pipes/i18n-property.pipe.mjs +3 -3
- package/esm2022/core/pipes/json-path.pipe.mjs +3 -3
- package/esm2022/core/pipes/parametrize.pipe.mjs +3 -3
- package/esm2022/core/pipes/template.pipe.mjs +3 -3
- package/esm2022/core/security/permission.service.mjs +3 -3
- package/esm2022/core/services/commons-init.service.mjs +3 -3
- package/esm2022/core/services/commons-router.service.mjs +3 -3
- package/esm2022/core/services/commons.service.mjs +3 -3
- package/esm2022/core/services/local-storage-config.service.mjs +3 -3
- package/esm2022/form/components/autocomplete/autocomplete.component.mjs +4 -4
- package/esm2022/form/components/date-range/date-range.component.mjs +4 -4
- package/esm2022/form/components/dropdown/dropdown.component.mjs +4 -4
- package/esm2022/form/directives/input-trim.directive.mjs +14 -19
- package/esm2022/table/api/models/table.model.mjs +1 -1
- package/esm2022/table/components/column-filter-full/column-filter-full.component.mjs +4 -4
- package/esm2022/table/components/column-value/column-value.component.mjs +43 -53
- package/esm2022/table/components/table/table.component.mjs +300 -365
- package/esm2022/table/pipes/locale-default-row-class.pipe.mjs +3 -3
- package/esm2022/table/pipes/table-column-filter-class.pipe.mjs +3 -3
- package/esm2022/table/services/data-list.service.mjs +3 -3
- package/esm2022/tableview/action/components/action/action.component.mjs +5 -5
- package/esm2022/tableview/action/components/editor/action-editor.component.mjs +6 -7
- package/esm2022/tableview/action/components/editor/injector-context/action-editor-injector-context.component.mjs +5 -4
- package/esm2022/tableview/action/components/localization/data-language-dropdown.component.mjs +3 -3
- package/esm2022/tableview/action/components/route/action-route.component.mjs +3 -3
- package/esm2022/tableview/action/components/table/action-table.component.mjs +43 -92
- package/esm2022/tableview/action/services/component-action-executor.service.mjs +3 -3
- package/esm2022/tableview/action/services/data-provider-executor.service.mjs +3 -3
- package/esm2022/tableview/action/services/navigation.service.mjs +3 -3
- package/esm2022/tableview/action/services/root-action-executor.service.mjs +3 -3
- package/esm2022/tableview/action/services/view-container.service.mjs +3 -3
- package/esm2022/tableview/api/editor/descriptors/field-base.descriptor.mjs +1 -1
- package/esm2022/tableview/api/editor/descriptors/field-lookup.descriptor.mjs +1 -1
- package/esm2022/tableview/api/editor/descriptors/field-many.descriptor.mjs +4 -1
- package/esm2022/tableview/api/editor/descriptors/field.descriptor.mjs +6 -14
- package/esm2022/tableview/api/editor/models/field-action-context.model.mjs +1 -1
- package/esm2022/tableview/api/editor/models/form-editor.interface.mjs +1 -1
- package/esm2022/tableview/api/editor/models/formly-custom-field.model.mjs +5 -5
- package/esm2022/tableview/api/editor/models/formly-field.model.mjs +1 -1
- package/esm2022/tableview/api/index.mjs +1 -2
- package/esm2022/tableview/editor/components/editor/form-editor.component.mjs +17 -17
- package/esm2022/tableview/editor/components/formly/fields/formly-field-action/formly-field-action.component.mjs +4 -4
- package/esm2022/tableview/editor/components/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +3 -3
- package/esm2022/tableview/editor/components/formly/fields/formly-field-custom/formly-field-custom.component.mjs +3 -3
- package/esm2022/tableview/editor/components/formly/fields/formly-field-datepicker/formly-field-datepicker.component.mjs +47 -6
- package/esm2022/tableview/editor/components/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +3 -3
- package/esm2022/tableview/editor/components/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +3 -3
- package/esm2022/tableview/editor/components/formly/fields/formly-field-input/formly-field-input.component.mjs +4 -4
- package/esm2022/tableview/editor/components/formly/fields/formly-field-label/formly-field-label.component.mjs +3 -3
- package/esm2022/tableview/editor/components/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +15 -29
- package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +10 -11
- package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +18 -22
- package/esm2022/tableview/editor/components/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +3 -3
- package/esm2022/tableview/editor/components/formly/fields/formly-field-type.abstract.component.mjs +4 -4
- package/esm2022/tableview/editor/components/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.mjs +3 -3
- package/esm2022/tableview/editor/components/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +3 -3
- package/esm2022/tableview/editor/helpers/editor-formly.mjs +14 -2
- package/esm2022/tableview/editor/helpers/editor-validators.mjs +25 -0
- package/esm2022/tableview/editor/helpers/formly-config.mjs +7 -5
- package/esm2022/tableview/editor/services/form-editor.service.mjs +3 -3
- package/esm2022/tableview/index.mjs +2 -1
- package/esm2022/tableview/tableview/components/route/tableview-route.component.mjs +3 -3
- package/esm2022/tableview/tableview/components/tableview/tableview.component.mjs +4 -4
- package/fesm2022/mediusinc-mng-commons-core.mjs +69 -111
- package/fesm2022/mediusinc-mng-commons-core.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-form.mjs +23 -27
- package/fesm2022/mediusinc-mng-commons-form.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-table-api.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-table.mjs +357 -431
- package/fesm2022/mediusinc-mng-commons-table.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-tableview-api.mjs +13 -39
- package/fesm2022/mediusinc-mng-commons-tableview-api.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-tableview.mjs +252 -240
- package/fesm2022/mediusinc-mng-commons-tableview.mjs.map +1 -1
- package/form/directives/input-trim.directive.d.ts +5 -8
- package/package.json +9 -9
- package/table/api/models/table.model.d.ts +1 -1
- package/table/components/column-value/column-value.component.d.ts +11 -17
- package/table/components/table/table.component.d.ts +43 -47
- package/tableview/action/components/editor/action-editor.component.d.ts +1 -2
- package/tableview/action/components/table/action-table.component.d.ts +26 -29
- package/tableview/api/editor/descriptors/field-base.descriptor.d.ts +3 -3
- package/tableview/api/editor/descriptors/field-lookup.descriptor.d.ts +3 -3
- package/tableview/api/editor/descriptors/field-many.descriptor.d.ts +2 -1
- package/tableview/api/editor/descriptors/field.descriptor.d.ts +13 -9
- package/tableview/api/editor/models/field-action-context.model.d.ts +1 -1
- package/tableview/api/editor/models/form-editor.interface.d.ts +23 -6
- package/tableview/api/editor/models/formly-custom-field.model.d.ts +22 -19
- package/tableview/api/editor/models/formly-field.model.d.ts +20 -0
- package/tableview/api/index.d.ts +0 -1
- package/tableview/editor/components/editor/form-editor.component.d.ts +7 -7
- package/tableview/editor/components/formly/fields/formly-field-action/formly-field-action.component.d.ts +1 -1
- package/tableview/editor/components/formly/fields/formly-field-datepicker/formly-field-datepicker.component.d.ts +3 -0
- package/tableview/editor/components/formly/fields/formly-field-input/formly-field-input.component.d.ts +2 -3
- package/tableview/editor/components/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.d.ts +3 -6
- package/tableview/editor/components/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.d.ts +2 -4
- package/tableview/editor/components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.d.ts +4 -8
- package/tableview/editor/components/formly/fields/formly-field-type.abstract.component.d.ts +3 -3
- package/tableview/editor/helpers/editor-validators.d.ts +7 -0
- package/tableview/index.d.ts +1 -0
- package/version-info.json +6 -6
- package/core/directives/dialog-keydown-handler.directive.d.ts +0 -12
- package/esm2022/core/directives/dialog-keydown-handler.directive.mjs +0 -49
- package/esm2022/tableview/api/editor/helpers/field-validators.mjs +0 -23
- package/tableview/api/editor/helpers/field-validators.d.ts +0 -7
|
@@ -1,23 +1,19 @@
|
|
|
1
1
|
import { CurrencyPipe, DatePipe, DecimalPipe } from '@angular/common';
|
|
2
|
-
import { ChangeDetectionStrategy, Component, ElementRef,
|
|
2
|
+
import { ChangeDetectionStrategy, Component, ElementRef, computed, inject, input } from '@angular/core';
|
|
3
3
|
import { TranslateModule, TranslateService } from '@ngx-translate/core';
|
|
4
4
|
import { MessageService } from 'primeng/api';
|
|
5
5
|
import { ButtonModule } from 'primeng/button';
|
|
6
6
|
import { RippleModule } from 'primeng/ripple';
|
|
7
7
|
import { TooltipModule } from 'primeng/tooltip';
|
|
8
8
|
import { BooleanPipe, ComponentDirective, EnumPipe, GetterPipe, TemplatePipe } from '@mediusinc/mng-commons/core';
|
|
9
|
-
import {
|
|
9
|
+
import { ColumnDisplayTypeEnum } from '@mediusinc/mng-commons/table/api';
|
|
10
10
|
import * as i0 from "@angular/core";
|
|
11
|
-
import * as i1 from "primeng/
|
|
11
|
+
import * as i1 from "primeng/tooltip";
|
|
12
12
|
import * as i2 from "@ngx-translate/core";
|
|
13
|
-
import * as i3 from "primeng/
|
|
14
|
-
import * as i4 from "primeng/
|
|
15
|
-
import * as i5 from "primeng/ripple";
|
|
13
|
+
import * as i3 from "primeng/button";
|
|
14
|
+
import * as i4 from "primeng/ripple";
|
|
16
15
|
export class TableColumnValueComponent {
|
|
17
|
-
constructor(
|
|
18
|
-
this.elementRef = elementRef;
|
|
19
|
-
this.messageService = messageService;
|
|
20
|
-
this.translate = translate;
|
|
16
|
+
constructor() {
|
|
21
17
|
this.columnDisplayTypeString = ColumnDisplayTypeEnum.String;
|
|
22
18
|
this.columnDisplayTypeNumber = ColumnDisplayTypeEnum.Number;
|
|
23
19
|
this.columnDisplayTypeCurrency = ColumnDisplayTypeEnum.Currency;
|
|
@@ -26,61 +22,55 @@ export class TableColumnValueComponent {
|
|
|
26
22
|
this.columnDisplayTypeEnum = ColumnDisplayTypeEnum.Enum;
|
|
27
23
|
this.columnDisplayTypeComponent = ColumnDisplayTypeEnum.Component;
|
|
28
24
|
this.columnDisplayTypeHtml = ColumnDisplayTypeEnum.Html;
|
|
25
|
+
this.elementRef = inject(ElementRef);
|
|
26
|
+
this.messageService = inject(MessageService);
|
|
27
|
+
this.translate = inject(TranslateService);
|
|
29
28
|
this.getterPipe = new GetterPipe();
|
|
30
29
|
this.templatePipe = new TemplatePipe();
|
|
31
|
-
this.
|
|
32
|
-
this.
|
|
33
|
-
this.
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
else if (this.descriptor.columnDisplayType === ColumnDisplayTypeEnum.String) {
|
|
40
|
-
if (this.descriptor.isMultiline) {
|
|
41
|
-
this.className += ' multiline';
|
|
30
|
+
this.descriptor = input.required();
|
|
31
|
+
this.item = input.required();
|
|
32
|
+
this.styleMaxWidth = computed(() => this.descriptor().maxWidth ?? null);
|
|
33
|
+
this.className = computed(() => {
|
|
34
|
+
let className = 'nowrap';
|
|
35
|
+
if (this.descriptor().columnDisplayType === ColumnDisplayTypeEnum.String && this.descriptor().isMultiline) {
|
|
36
|
+
className += ' multiline';
|
|
42
37
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
38
|
+
return className;
|
|
39
|
+
});
|
|
40
|
+
this.value = computed(() => {
|
|
41
|
+
let value = this.item()?.[this.descriptor().property];
|
|
42
|
+
if (typeof this.descriptor().getter === 'function') {
|
|
43
|
+
value = this.getterPipe.transform(this.item(), this.descriptor().getter, value);
|
|
44
|
+
}
|
|
45
|
+
if (this.descriptor().template) {
|
|
46
|
+
value = this.templatePipe.transform(value, this.descriptor().template);
|
|
47
|
+
}
|
|
48
|
+
return value;
|
|
49
|
+
});
|
|
50
|
+
this.currency = computed(() => {
|
|
51
|
+
if (this.descriptor().columnDisplayType === ColumnDisplayTypeEnum.Currency) {
|
|
52
|
+
return this.descriptor().currencyProperty ? this.item()[this.descriptor().currencyProperty] : this.descriptor().currencyCode ?? 'EUR';
|
|
53
|
+
}
|
|
54
|
+
return;
|
|
55
|
+
});
|
|
55
56
|
}
|
|
56
57
|
copyToClipboard(event) {
|
|
57
58
|
event.stopPropagation();
|
|
58
59
|
let value = this.elementRef.nativeElement.innerText.trim();
|
|
59
|
-
|
|
60
|
-
|
|
60
|
+
const clipboardValueGetter = this.descriptor().clipboardValueGetter;
|
|
61
|
+
if (clipboardValueGetter) {
|
|
62
|
+
value = clipboardValueGetter(this.value(), this.item());
|
|
61
63
|
}
|
|
62
64
|
navigator.clipboard.writeText(value);
|
|
63
65
|
const title = this.translate.instant('mngTable.copyNotificationTitle');
|
|
64
66
|
const message = this.translate.instant('mngTable.copyNotificationMessage', { value });
|
|
65
67
|
this.messageService.add({ severity: 'info', summary: title, detail: message });
|
|
66
68
|
}
|
|
67
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
68
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
69
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: TableColumnValueComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
70
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.5", type: TableColumnValueComponent, isStandalone: true, selector: "mng-table-column-value", inputs: { descriptor: { classPropertyName: "descriptor", publicName: "descriptor", isSignal: true, isRequired: true, transformFunction: null }, item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "class": "className()", "style.max-width.px": "styleMaxWidth()" } }, ngImport: i0, template: "@if (descriptor().localizationExistsProperty && !item()[descriptor().localizationExistsProperty!]) {\n <i class=\"pi pi-exclamation-circle\" [pTooltip]=\"'mngTable.translationMissing' | translate\"></i>\n}\n@switch (descriptor().columnDisplayType) {\n @case (columnDisplayTypeString) {\n @if (descriptor().hasValueAsTooltip) {\n <span [pTooltip]=\"value()\" tooltipPosition=\"left\">{{ value() }}</span>\n } @else {\n {{ value() }}\n }\n }\n @case (columnDisplayTypeHtml) {\n <span [innerHTML]=\"value()\"></span>\n }\n @case (columnDisplayTypeNumber) {\n {{ value() | number: descriptor().displayFormat : descriptor().locale }}\n }\n @case (columnDisplayTypeCurrency) {\n {{ value() | currency: currency() : descriptor().currencyDisplay : descriptor().displayFormat : descriptor().locale }}\n }\n @case (columnDisplayTypeDate) {\n {{ value() | date: descriptor().displayFormat }}\n }\n @case (columnDisplayTypeBoolean) {\n @if (descriptor().booleanAsIcon) {\n <i [class]=\"value() | mngBoolean: descriptor().booleanYes : descriptor().booleanNo : true\"></i>\n } @else {\n {{ value() | mngBoolean: descriptor().booleanYes : descriptor().booleanNo | translate }}\n }\n }\n @case (columnDisplayTypeEnum) {\n {{ value() | mngEnum: descriptor().enum | translate }}\n }\n @case (columnDisplayTypeComponent) {\n <ng-container\n [mngComponent]=\"descriptor().customComponentType!\"\n [inputs]=\"{\n value: value(),\n item: item(),\n descriptor: descriptor()\n }\"></ng-container>\n }\n}\n@if (descriptor().hasCopyToClipboard) {\n <div class=\"help-buttons\">\n <button pButton pRipple type=\"button\" icon=\"pi pi-copy\" class=\"p-button-rounded p-button-info p-button-sm\" (click)=\"copyToClipboard($event)\"></button>\n </div>\n}\n", styles: [":host{display:inline-block;overflow:hidden}:host.nowrap{white-space:nowrap;text-overflow:ellipsis}:host.multiline{white-space:pre-wrap;word-wrap:break-word}.help-buttons{display:none;position:absolute;right:0;top:50%;transform:translateY(-50%)}.help-buttons .p-button{height:1.9rem;width:1.9rem;padding:0}\n"], dependencies: [{ kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i1.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "pipe", type: BooleanPipe, name: "mngBoolean" }, { kind: "pipe", type: EnumPipe, name: "mngEnum" }, { kind: "directive", type: ComponentDirective, selector: "[mngComponent]", inputs: ["mngComponent", "injectionToken", "inputs", "attachToHost", "parentInjector"], outputs: ["instanceCreated"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i3.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "ngmodule", type: RippleModule }, { kind: "directive", type: i4.Ripple, selector: "[pRipple]" }, { kind: "pipe", type: DecimalPipe, name: "number" }, { kind: "pipe", type: CurrencyPipe, name: "currency" }, { kind: "pipe", type: DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
69
71
|
}
|
|
70
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
72
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: TableColumnValueComponent, decorators: [{
|
|
71
73
|
type: Component,
|
|
72
|
-
args: [{ standalone: true, selector: 'mng-table-column-value', imports: [TooltipModule, TranslateModule, BooleanPipe, EnumPipe, ComponentDirective, ButtonModule, RippleModule, DecimalPipe, CurrencyPipe, DatePipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (descriptor.localizationExistsProperty && !item[descriptor.localizationExistsProperty]) {\n <i class=\"pi pi-exclamation-circle\" [pTooltip]=\"'mngTable.translationMissing' | translate\"></i>\n}\n@switch (descriptor.columnDisplayType) {\n @case (columnDisplayTypeString) {\n @if (descriptor.hasValueAsTooltip) {\n <span [pTooltip]=\"value\" tooltipPosition=\"left\">{{ value }}</span>\n } @else {\n {{ value }}\n }\n }\n @case (columnDisplayTypeHtml) {\n <span [innerHTML]=\"value\"></span>\n }\n @case (columnDisplayTypeNumber) {\n {{ value | number: descriptor.displayFormat : descriptor.locale }}\n }\n @case (columnDisplayTypeCurrency) {\n {{ value | currency: currency
|
|
73
|
-
}]
|
|
74
|
-
type: Input,
|
|
75
|
-
args: [{ required: true }]
|
|
76
|
-
}], item: [{
|
|
77
|
-
type: Input,
|
|
78
|
-
args: [{ required: true }]
|
|
79
|
-
}], styleMaxWidth: [{
|
|
80
|
-
type: HostBinding,
|
|
81
|
-
args: ['style.max-width.px']
|
|
82
|
-
}], className: [{
|
|
83
|
-
type: HostBinding,
|
|
84
|
-
args: ['class']
|
|
85
|
-
}] } });
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXZhbHVlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3RhYmxlL3NyYy9jb21wb25lbnRzL2NvbHVtbi12YWx1ZS9jb2x1bW4tdmFsdWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vdGFibGUvc3JjL2NvbXBvbmVudHMvY29sdW1uLXZhbHVlL2NvbHVtbi12YWx1ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsWUFBWSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRSxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBRXpHLE9BQU8sRUFBQyxlQUFlLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQzNDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRTlDLE9BQU8sRUFBQyxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUNoSCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUUscUJBQXFCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7OztBQVV6RixNQUFNLE9BQU8seUJBQXlCO0lBeUJsQyxZQUNZLFVBQXNCLEVBQ3RCLGNBQThCLEVBQzlCLFNBQTJCO1FBRjNCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLGNB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IERlY2ltYWxQaXBlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSW5wdXQsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7TWVzc2FnZVNlcnZpY2V9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7QnV0dG9uTW9kdWxlfSBmcm9tICdwcmltZW5nL2J1dHRvbic7XG5pbXBvcnQge1JpcHBsZU1vZHVsZX0gZnJvbSAncHJpbWVuZy9yaXBwbGUnO1xuaW1wb3J0IHtUb29sdGlwTW9kdWxlfSBmcm9tICdwcmltZW5nL3Rvb2x0aXAnO1xuXG5pbXBvcnQge0Jvb2xlYW5QaXBlLCBDb21wb25lbnREaXJlY3RpdmUsIEVudW1QaXBlLCBHZXR0ZXJQaXBlLCBUZW1wbGF0ZVBpcGV9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5pbXBvcnQge0NvbHVtbkRlc2NyaXB0b3IsIENvbHVtbkRpc3BsYXlUeXBlRW51bX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy90YWJsZS9hcGknO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnbW5nLXRhYmxlLWNvbHVtbi12YWx1ZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvbHVtbi12YWx1ZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY29sdW1uLXZhbHVlLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgaW1wb3J0czogW1Rvb2x0aXBNb2R1bGUsIFRyYW5zbGF0ZU1vZHVsZSwgQm9vbGVhblBpcGUsIEVudW1QaXBlLCBDb21wb25lbnREaXJlY3RpdmUsIEJ1dHRvbk1vZHVsZSwgUmlwcGxlTW9kdWxlLCBEZWNpbWFsUGlwZSwgQ3VycmVuY3lQaXBlLCBEYXRlUGlwZV0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVDb2x1bW5WYWx1ZUNvbXBvbmVudDxULCBUVD4gaW1wbGVtZW50cyBPbkluaXQge1xuICAgIHB1YmxpYyByZWFkb25seSBjb2x1bW5EaXNwbGF5VHlwZVN0cmluZzogQ29sdW1uRGlzcGxheVR5cGVFbnVtID0gQ29sdW1uRGlzcGxheVR5cGVFbnVtLlN0cmluZztcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29sdW1uRGlzcGxheVR5cGVOdW1iZXI6IENvbHVtbkRpc3BsYXlUeXBlRW51bSA9IENvbHVtbkRpc3BsYXlUeXBlRW51bS5OdW1iZXI7XG4gICAgcHVibGljIHJlYWRvbmx5IGNvbHVtbkRpc3BsYXlUeXBlQ3VycmVuY3k6IENvbHVtbkRpc3BsYXlUeXBlRW51bSA9IENvbHVtbkRpc3BsYXlUeXBlRW51bS5DdXJyZW5jeTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29sdW1uRGlzcGxheVR5cGVCb29sZWFuOiBDb2x1bW5EaXNwbGF5VHlwZUVudW0gPSBDb2x1bW5EaXNwbGF5VHlwZUVudW0uQm9vbGVhbjtcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29sdW1uRGlzcGxheVR5cGVEYXRlOiBDb2x1bW5EaXNwbGF5VHlwZUVudW0gPSBDb2x1bW5EaXNwbGF5VHlwZUVudW0uRGF0ZTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29sdW1uRGlzcGxheVR5cGVFbnVtOiBDb2x1bW5EaXNwbGF5VHlwZUVudW0gPSBDb2x1bW5EaXNwbGF5VHlwZUVudW0uRW51bTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29sdW1uRGlzcGxheVR5cGVDb21wb25lbnQ6IENvbHVtbkRpc3BsYXlUeXBlRW51bSA9IENvbHVtbkRpc3BsYXlUeXBlRW51bS5Db21wb25lbnQ7XG4gICAgcHVibGljIHJlYWRvbmx5IGNvbHVtbkRpc3BsYXlUeXBlSHRtbDogQ29sdW1uRGlzcGxheVR5cGVFbnVtID0gQ29sdW1uRGlzcGxheVR5cGVFbnVtLkh0bWw7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGdldHRlclBpcGUgPSBuZXcgR2V0dGVyUGlwZSgpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdGVtcGxhdGVQaXBlID0gbmV3IFRlbXBsYXRlUGlwZSgpO1xuXG4gICAgQElucHV0KHtyZXF1aXJlZDogdHJ1ZX0pIGRlc2NyaXB0b3IhOiBDb2x1bW5EZXNjcmlwdG9yPFQsIFRUPjtcbiAgICBASW5wdXQoe3JlcXVpcmVkOiB0cnVlfSkgaXRlbSE6IGFueTtcblxuICAgIEBIb3N0QmluZGluZygnc3R5bGUubWF4LXdpZHRoLnB4JykgcHVibGljIHN0eWxlTWF4V2lkdGg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSBwdWJsaWMgY2xhc3NOYW1lID0gJ25vd3JhcCc7XG5cbiAgICBwdWJsaWMgY3VycmVuY3k/OiBzdHJpbmc7XG5cbiAgICBwdWJsaWMganNvblBhdGggPSAnJCc7XG5cbiAgICBwdWJsaWMgdmFsdWU6IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZVxuICAgICkge31cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuZGVzY3JpcHRvci5jb2x1bW5EaXNwbGF5VHlwZSA9PT0gQ29sdW1uRGlzcGxheVR5cGVFbnVtLkN1cnJlbmN5KSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbmN5ID0gdGhpcy5kZXNjcmlwdG9yLmN1cnJlbmN5UHJvcGVydHkgPyB0aGlzLml0ZW1bdGhpcy5kZXNjcmlwdG9yLmN1cnJlbmN5UHJvcGVydHldIDogdGhpcy5kZXNjcmlwdG9yLmN1cnJlbmN5Q29kZSA/PyAnRVVSJztcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRlc2NyaXB0b3IuY29sdW1uRGlzcGxheVR5cGUgPT09IENvbHVtbkRpc3BsYXlUeXBlRW51bS5TdHJpbmcpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRlc2NyaXB0b3IuaXNNdWx0aWxpbmUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsYXNzTmFtZSArPSAnIG11bHRpbGluZSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5kZXNjcmlwdG9yLm1heFdpZHRoKSB7XG4gICAgICAgICAgICB0aGlzLnN0eWxlTWF4V2lkdGggPSB0aGlzLmRlc2NyaXB0b3IubWF4V2lkdGg7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLml0ZW0/Llt0aGlzLmRlc2NyaXB0b3IucHJvcGVydHkgYXMga2V5b2Ygb2JqZWN0XTtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmRlc2NyaXB0b3IuZ2V0dGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHRoaXMuZ2V0dGVyUGlwZS50cmFuc2Zvcm0odGhpcy5pdGVtLCB0aGlzLmRlc2NyaXB0b3IuZ2V0dGVyLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZGVzY3JpcHRvci50ZW1wbGF0ZSkge1xuICAgICAgICAgICAgdmFsdWUgPSB0aGlzLnRlbXBsYXRlUGlwZS50cmFuc2Zvcm0odmFsdWUsIHRoaXMuZGVzY3JpcHRvci50ZW1wbGF0ZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGNvcHlUb0NsaXBib2FyZChldmVudDogRXZlbnQpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmlubmVyVGV4dC50cmltKCk7XG4gICAgICAgIGlmICh0aGlzLmRlc2NyaXB0b3IuY2xpcGJvYXJkVmFsdWVHZXR0ZXIpIHtcbiAgICAgICAgICAgIHZhbHVlID0gdGhpcy5kZXNjcmlwdG9yLmNsaXBib2FyZFZhbHVlR2V0dGVyKHRoaXMudmFsdWUsIHRoaXMuaXRlbSk7XG4gICAgICAgIH1cbiAgICAgICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodmFsdWUpO1xuICAgICAgICBjb25zdCB0aXRsZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ21uZ1RhYmxlLmNvcHlOb3RpZmljYXRpb25UaXRsZScpO1xuICAgICAgICBjb25zdCBtZXNzYWdlID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnbW5nVGFibGUuY29weU5vdGlmaWNhdGlvbk1lc3NhZ2UnLCB7dmFsdWV9KTtcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe3NldmVyaXR5OiAnaW5mbycsIHN1bW1hcnk6IHRpdGxlLCBkZXRhaWw6IG1lc3NhZ2V9KTtcbiAgICB9XG59XG4iLCJAaWYgKGRlc2NyaXB0b3IubG9jYWxpemF0aW9uRXhpc3RzUHJvcGVydHkgJiYgIWl0ZW1bZGVzY3JpcHRvci5sb2NhbGl6YXRpb25FeGlzdHNQcm9wZXJ0eV0pIHtcbiAgICA8aSBjbGFzcz1cInBpIHBpLWV4Y2xhbWF0aW9uLWNpcmNsZVwiIFtwVG9vbHRpcF09XCInbW5nVGFibGUudHJhbnNsYXRpb25NaXNzaW5nJyB8IHRyYW5zbGF0ZVwiPjwvaT5cbn1cbkBzd2l0Y2ggKGRlc2NyaXB0b3IuY29sdW1uRGlzcGxheVR5cGUpIHtcbiAgICBAY2FzZSAoY29sdW1uRGlzcGxheVR5cGVTdHJpbmcpIHtcbiAgICAgICAgQGlmIChkZXNjcmlwdG9yLmhhc1ZhbHVlQXNUb29sdGlwKSB7XG4gICAgICAgICAgICA8c3BhbiBbcFRvb2x0aXBdPVwidmFsdWVcIiB0b29sdGlwUG9zaXRpb249XCJsZWZ0XCI+e3sgdmFsdWUgfX08L3NwYW4+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAge3sgdmFsdWUgfX1cbiAgICAgICAgfVxuICAgIH1cbiAgICBAY2FzZSAoY29sdW1uRGlzcGxheVR5cGVIdG1sKSB7XG4gICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwidmFsdWVcIj48L3NwYW4+XG4gICAgfVxuICAgIEBjYXNlIChjb2x1bW5EaXNwbGF5VHlwZU51bWJlcikge1xuICAgICAgICB7eyB2YWx1ZSB8IG51bWJlcjogZGVzY3JpcHRvci5kaXNwbGF5Rm9ybWF0IDogZGVzY3JpcHRvci5sb2NhbGUgfX1cbiAgICB9XG4gICAgQGNhc2UgKGNvbHVtbkRpc3BsYXlUeXBlQ3VycmVuY3kpIHtcbiAgICAgICAge3sgdmFsdWUgfCBjdXJyZW5jeTogY3VycmVuY3kgOiBkZXNjcmlwdG9yLmN1cnJlbmN5RGlzcGxheSA6IGRlc2NyaXB0b3IuZGlzcGxheUZvcm1hdCA6IGRlc2NyaXB0b3IubG9jYWxlIH19XG4gICAgfVxuICAgIEBjYXNlIChjb2x1bW5EaXNwbGF5VHlwZURhdGUpIHtcbiAgICAgICAge3sgdmFsdWUgfCBkYXRlOiBkZXNjcmlwdG9yLmRpc3BsYXlGb3JtYXQgfX1cbiAgICB9XG4gICAgQGNhc2UgKGNvbHVtbkRpc3BsYXlUeXBlQm9vbGVhbikge1xuICAgICAgICBAaWYgKGRlc2NyaXB0b3IuYm9vbGVhbkFzSWNvbikge1xuICAgICAgICAgICAgPGkgW2NsYXNzXT1cInZhbHVlIHwgbW5nQm9vbGVhbjogZGVzY3JpcHRvci5ib29sZWFuWWVzIDogZGVzY3JpcHRvci5ib29sZWFuTm8gOiB0cnVlXCI+PC9pPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIHt7IHZhbHVlIHwgbW5nQm9vbGVhbjogZGVzY3JpcHRvci5ib29sZWFuWWVzIDogZGVzY3JpcHRvci5ib29sZWFuTm8gfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgfVxuICAgIH1cbiAgICBAY2FzZSAoY29sdW1uRGlzcGxheVR5cGVFbnVtKSB7XG4gICAgICAgIHt7IHZhbHVlIHwgbW5nRW51bTogZGVzY3JpcHRvci5lbnVtIHwgdHJhbnNsYXRlIH19XG4gICAgfVxuICAgIEBjYXNlIChjb2x1bW5EaXNwbGF5VHlwZUNvbXBvbmVudCkge1xuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICBbbW5nQ29tcG9uZW50XT1cImRlc2NyaXB0b3IuY3VzdG9tQ29tcG9uZW50VHlwZSFcIlxuICAgICAgICAgICAgW2lucHV0c109XCJ7XG4gICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgICAgIGl0ZW06IGl0ZW0sXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRvcjogZGVzY3JpcHRvclxuICAgICAgICAgICAgfVwiPjwvbmctY29udGFpbmVyPlxuICAgIH1cbn1cbkBpZiAoZGVzY3JpcHRvci5oYXNDb3B5VG9DbGlwYm9hcmQpIHtcbiAgICA8ZGl2IGNsYXNzPVwiaGVscC1idXR0b25zXCI+XG4gICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIHR5cGU9XCJidXR0b25cIiBpY29uPVwicGkgcGktY29weVwiIGNsYXNzPVwicC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi1pbmZvIHAtYnV0dG9uLXNtXCIgKGNsaWNrKT1cImNvcHlUb0NsaXBib2FyZCgkZXZlbnQpXCI+PC9idXR0b24+XG4gICAgPC9kaXY+XG59XG4iXX0=
|
|
74
|
+
args: [{ standalone: true, selector: 'mng-table-column-value', imports: [TooltipModule, TranslateModule, BooleanPipe, EnumPipe, ComponentDirective, ButtonModule, RippleModule, DecimalPipe, CurrencyPipe, DatePipe], changeDetection: ChangeDetectionStrategy.OnPush, host: { '[class]': 'className()', '[style.max-width.px]': 'styleMaxWidth()' }, template: "@if (descriptor().localizationExistsProperty && !item()[descriptor().localizationExistsProperty!]) {\n <i class=\"pi pi-exclamation-circle\" [pTooltip]=\"'mngTable.translationMissing' | translate\"></i>\n}\n@switch (descriptor().columnDisplayType) {\n @case (columnDisplayTypeString) {\n @if (descriptor().hasValueAsTooltip) {\n <span [pTooltip]=\"value()\" tooltipPosition=\"left\">{{ value() }}</span>\n } @else {\n {{ value() }}\n }\n }\n @case (columnDisplayTypeHtml) {\n <span [innerHTML]=\"value()\"></span>\n }\n @case (columnDisplayTypeNumber) {\n {{ value() | number: descriptor().displayFormat : descriptor().locale }}\n }\n @case (columnDisplayTypeCurrency) {\n {{ value() | currency: currency() : descriptor().currencyDisplay : descriptor().displayFormat : descriptor().locale }}\n }\n @case (columnDisplayTypeDate) {\n {{ value() | date: descriptor().displayFormat }}\n }\n @case (columnDisplayTypeBoolean) {\n @if (descriptor().booleanAsIcon) {\n <i [class]=\"value() | mngBoolean: descriptor().booleanYes : descriptor().booleanNo : true\"></i>\n } @else {\n {{ value() | mngBoolean: descriptor().booleanYes : descriptor().booleanNo | translate }}\n }\n }\n @case (columnDisplayTypeEnum) {\n {{ value() | mngEnum: descriptor().enum | translate }}\n }\n @case (columnDisplayTypeComponent) {\n <ng-container\n [mngComponent]=\"descriptor().customComponentType!\"\n [inputs]=\"{\n value: value(),\n item: item(),\n descriptor: descriptor()\n }\"></ng-container>\n }\n}\n@if (descriptor().hasCopyToClipboard) {\n <div class=\"help-buttons\">\n <button pButton pRipple type=\"button\" icon=\"pi pi-copy\" class=\"p-button-rounded p-button-info p-button-sm\" (click)=\"copyToClipboard($event)\"></button>\n </div>\n}\n", styles: [":host{display:inline-block;overflow:hidden}:host.nowrap{white-space:nowrap;text-overflow:ellipsis}:host.multiline{white-space:pre-wrap;word-wrap:break-word}.help-buttons{display:none;position:absolute;right:0;top:50%;transform:translateY(-50%)}.help-buttons .p-button{height:1.9rem;width:1.9rem;padding:0}\n"] }]
|
|
75
|
+
}] });
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXZhbHVlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3RhYmxlL3NyYy9jb21wb25lbnRzL2NvbHVtbi12YWx1ZS9jb2x1bW4tdmFsdWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vdGFibGUvc3JjL2NvbXBvbmVudHMvY29sdW1uLXZhbHVlL2NvbHVtbi12YWx1ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsWUFBWSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRSxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV0RyxPQUFPLEVBQUMsZUFBZSxFQUFFLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDdEUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUMzQyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUU5QyxPQUFPLEVBQUMsV0FBVyxFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDaEgsT0FBTyxFQUFtQixxQkFBcUIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7QUFZekYsTUFBTSxPQUFPLHlCQUF5QjtJQVZ0QztRQVdvQiw0QkFBdUIsR0FBMEIscUJBQXFCLENBQUMsTUFBTSxDQUFDO1FBQzlFLDRCQUF1QixHQUEwQixxQkFBcUIsQ0FBQyxNQUFNLENBQUM7UUFDOUUsOEJBQXlCLEdBQTBC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TSxRQUV6QyxFQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUUsc0JBQXNCLEVBQUUsaUJBQWlCLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0N1cnJlbmN5UGlwZSwgRGF0ZVBpcGUsIERlY2ltYWxQaXBlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBjb21wdXRlZCwgaW5qZWN0LCBpbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7TWVzc2FnZVNlcnZpY2V9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7QnV0dG9uTW9kdWxlfSBmcm9tICdwcmltZW5nL2J1dHRvbic7XG5pbXBvcnQge1JpcHBsZU1vZHVsZX0gZnJvbSAncHJpbWVuZy9yaXBwbGUnO1xuaW1wb3J0IHtUb29sdGlwTW9kdWxlfSBmcm9tICdwcmltZW5nL3Rvb2x0aXAnO1xuXG5pbXBvcnQge0Jvb2xlYW5QaXBlLCBDb21wb25lbnREaXJlY3RpdmUsIEVudW1QaXBlLCBHZXR0ZXJQaXBlLCBUZW1wbGF0ZVBpcGV9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5pbXBvcnQge0NvbHVtbkRlc2NyaXB0b3IsIENvbHVtbkRpc3BsYXlUeXBlRW51bX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy90YWJsZS9hcGknO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnbW5nLXRhYmxlLWNvbHVtbi12YWx1ZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvbHVtbi12YWx1ZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY29sdW1uLXZhbHVlLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgaW1wb3J0czogW1Rvb2x0aXBNb2R1bGUsIFRyYW5zbGF0ZU1vZHVsZSwgQm9vbGVhblBpcGUsIEVudW1QaXBlLCBDb21wb25lbnREaXJlY3RpdmUsIEJ1dHRvbk1vZHVsZSwgUmlwcGxlTW9kdWxlLCBEZWNpbWFsUGlwZSwgQ3VycmVuY3lQaXBlLCBEYXRlUGlwZV0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1ob3N0LW1ldGFkYXRhLXByb3BlcnR5XG4gICAgaG9zdDogeydbY2xhc3NdJzogJ2NsYXNzTmFtZSgpJywgJ1tzdHlsZS5tYXgtd2lkdGgucHhdJzogJ3N0eWxlTWF4V2lkdGgoKSd9XG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ29sdW1uVmFsdWVDb21wb25lbnQ8VCwgVFQ+IHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29sdW1uRGlzcGxheVR5cGVTdHJpbmc6IENvbHVtbkRpc3BsYXlUeXBlRW51bSA9IENvbHVtbkRpc3BsYXlUeXBlRW51bS5TdHJpbmc7XG4gICAgcHVibGljIHJlYWRvbmx5IGNvbHVtbkRpc3BsYXlUeXBlTnVtYmVyOiBDb2x1bW5EaXNwbGF5VHlwZUVudW0gPSBDb2x1bW5EaXNwbGF5VHlwZUVudW0uTnVtYmVyO1xuICAgIHB1YmxpYyByZWFkb25seSBjb2x1bW5EaXNwbGF5VHlwZUN1cnJlbmN5OiBDb2x1bW5EaXNwbGF5VHlwZUVudW0gPSBDb2x1bW5EaXNwbGF5VHlwZUVudW0uQ3VycmVuY3k7XG4gICAgcHVibGljIHJlYWRvbmx5IGNvbHVtbkRpc3BsYXlUeXBlQm9vbGVhbjogQ29sdW1uRGlzcGxheVR5cGVFbnVtID0gQ29sdW1uRGlzcGxheVR5cGVFbnVtLkJvb2xlYW47XG4gICAgcHVibGljIHJlYWRvbmx5IGNvbHVtbkRpc3BsYXlUeXBlRGF0ZTogQ29sdW1uRGlzcGxheVR5cGVFbnVtID0gQ29sdW1uRGlzcGxheVR5cGVFbnVtLkRhdGU7XG4gICAgcHVibGljIHJlYWRvbmx5IGNvbHVtbkRpc3BsYXlUeXBlRW51bTogQ29sdW1uRGlzcGxheVR5cGVFbnVtID0gQ29sdW1uRGlzcGxheVR5cGVFbnVtLkVudW07XG4gICAgcHVibGljIHJlYWRvbmx5IGNvbHVtbkRpc3BsYXlUeXBlQ29tcG9uZW50OiBDb2x1bW5EaXNwbGF5VHlwZUVudW0gPSBDb2x1bW5EaXNwbGF5VHlwZUVudW0uQ29tcG9uZW50O1xuICAgIHB1YmxpYyByZWFkb25seSBjb2x1bW5EaXNwbGF5VHlwZUh0bWw6IENvbHVtbkRpc3BsYXlUeXBlRW51bSA9IENvbHVtbkRpc3BsYXlUeXBlRW51bS5IdG1sO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbWVzc2FnZVNlcnZpY2UgPSBpbmplY3QoTWVzc2FnZVNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlID0gaW5qZWN0KFRyYW5zbGF0ZVNlcnZpY2UpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBnZXR0ZXJQaXBlID0gbmV3IEdldHRlclBpcGUoKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRlbXBsYXRlUGlwZSA9IG5ldyBUZW1wbGF0ZVBpcGUoKTtcblxuICAgIHB1YmxpYyBkZXNjcmlwdG9yID0gaW5wdXQucmVxdWlyZWQ8Q29sdW1uRGVzY3JpcHRvcjxULCBUVD4+KCk7XG4gICAgcHVibGljIGl0ZW0gPSBpbnB1dC5yZXF1aXJlZDxhbnk+KCk7XG5cbiAgICBwdWJsaWMgc3R5bGVNYXhXaWR0aCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZGVzY3JpcHRvcigpLm1heFdpZHRoID8/IG51bGwpO1xuICAgIHB1YmxpYyBjbGFzc05hbWUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGxldCBjbGFzc05hbWUgPSAnbm93cmFwJztcbiAgICAgICAgaWYgKHRoaXMuZGVzY3JpcHRvcigpLmNvbHVtbkRpc3BsYXlUeXBlID09PSBDb2x1bW5EaXNwbGF5VHlwZUVudW0uU3RyaW5nICYmIHRoaXMuZGVzY3JpcHRvcigpLmlzTXVsdGlsaW5lKSB7XG4gICAgICAgICAgICBjbGFzc05hbWUgKz0gJyBtdWx0aWxpbmUnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjbGFzc05hbWU7XG4gICAgfSk7XG5cbiAgICBwdWJsaWMgdmFsdWUgPSBjb21wdXRlZDxhbnk+KCgpID0+IHtcbiAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5pdGVtKCk/Llt0aGlzLmRlc2NyaXB0b3IoKS5wcm9wZXJ0eSBhcyBrZXlvZiBvYmplY3RdO1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZGVzY3JpcHRvcigpLmdldHRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdmFsdWUgPSB0aGlzLmdldHRlclBpcGUudHJhbnNmb3JtKHRoaXMuaXRlbSgpLCB0aGlzLmRlc2NyaXB0b3IoKS5nZXR0ZXIsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5kZXNjcmlwdG9yKCkudGVtcGxhdGUpIHtcbiAgICAgICAgICAgIHZhbHVlID0gdGhpcy50ZW1wbGF0ZVBpcGUudHJhbnNmb3JtKHZhbHVlLCB0aGlzLmRlc2NyaXB0b3IoKS50ZW1wbGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0pO1xuXG4gICAgcHVibGljIGN1cnJlbmN5ID0gY29tcHV0ZWQ8c3RyaW5nIHwgdW5kZWZpbmVkPigoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmRlc2NyaXB0b3IoKS5jb2x1bW5EaXNwbGF5VHlwZSA9PT0gQ29sdW1uRGlzcGxheVR5cGVFbnVtLkN1cnJlbmN5KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kZXNjcmlwdG9yKCkuY3VycmVuY3lQcm9wZXJ0eSA/IHRoaXMuaXRlbSgpW3RoaXMuZGVzY3JpcHRvcigpLmN1cnJlbmN5UHJvcGVydHkhXSA6IHRoaXMuZGVzY3JpcHRvcigpLmN1cnJlbmN5Q29kZSA/PyAnRVVSJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgfSk7XG5cbiAgICBwdWJsaWMgY29weVRvQ2xpcGJvYXJkKGV2ZW50OiBFdmVudCkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuaW5uZXJUZXh0LnRyaW0oKTtcbiAgICAgICAgY29uc3QgY2xpcGJvYXJkVmFsdWVHZXR0ZXIgPSB0aGlzLmRlc2NyaXB0b3IoKS5jbGlwYm9hcmRWYWx1ZUdldHRlcjtcbiAgICAgICAgaWYgKGNsaXBib2FyZFZhbHVlR2V0dGVyKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IGNsaXBib2FyZFZhbHVlR2V0dGVyKHRoaXMudmFsdWUoKSwgdGhpcy5pdGVtKCkpO1xuICAgICAgICB9XG4gICAgICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHZhbHVlKTtcbiAgICAgICAgY29uc3QgdGl0bGUgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdtbmdUYWJsZS5jb3B5Tm90aWZpY2F0aW9uVGl0bGUnKTtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ21uZ1RhYmxlLmNvcHlOb3RpZmljYXRpb25NZXNzYWdlJywge3ZhbHVlfSk7XG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtzZXZlcml0eTogJ2luZm8nLCBzdW1tYXJ5OiB0aXRsZSwgZGV0YWlsOiBtZXNzYWdlfSk7XG4gICAgfVxufVxuIiwiQGlmIChkZXNjcmlwdG9yKCkubG9jYWxpemF0aW9uRXhpc3RzUHJvcGVydHkgJiYgIWl0ZW0oKVtkZXNjcmlwdG9yKCkubG9jYWxpemF0aW9uRXhpc3RzUHJvcGVydHkhXSkge1xuICAgIDxpIGNsYXNzPVwicGkgcGktZXhjbGFtYXRpb24tY2lyY2xlXCIgW3BUb29sdGlwXT1cIidtbmdUYWJsZS50cmFuc2xhdGlvbk1pc3NpbmcnIHwgdHJhbnNsYXRlXCI+PC9pPlxufVxuQHN3aXRjaCAoZGVzY3JpcHRvcigpLmNvbHVtbkRpc3BsYXlUeXBlKSB7XG4gICAgQGNhc2UgKGNvbHVtbkRpc3BsYXlUeXBlU3RyaW5nKSB7XG4gICAgICAgIEBpZiAoZGVzY3JpcHRvcigpLmhhc1ZhbHVlQXNUb29sdGlwKSB7XG4gICAgICAgICAgICA8c3BhbiBbcFRvb2x0aXBdPVwidmFsdWUoKVwiIHRvb2x0aXBQb3NpdGlvbj1cImxlZnRcIj57eyB2YWx1ZSgpIH19PC9zcGFuPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIHt7IHZhbHVlKCkgfX1cbiAgICAgICAgfVxuICAgIH1cbiAgICBAY2FzZSAoY29sdW1uRGlzcGxheVR5cGVIdG1sKSB7XG4gICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwidmFsdWUoKVwiPjwvc3Bhbj5cbiAgICB9XG4gICAgQGNhc2UgKGNvbHVtbkRpc3BsYXlUeXBlTnVtYmVyKSB7XG4gICAgICAgIHt7IHZhbHVlKCkgfCBudW1iZXI6IGRlc2NyaXB0b3IoKS5kaXNwbGF5Rm9ybWF0IDogZGVzY3JpcHRvcigpLmxvY2FsZSB9fVxuICAgIH1cbiAgICBAY2FzZSAoY29sdW1uRGlzcGxheVR5cGVDdXJyZW5jeSkge1xuICAgICAgICB7eyB2YWx1ZSgpIHwgY3VycmVuY3k6IGN1cnJlbmN5KCkgIDogZGVzY3JpcHRvcigpLmN1cnJlbmN5RGlzcGxheSA6IGRlc2NyaXB0b3IoKS5kaXNwbGF5Rm9ybWF0IDogZGVzY3JpcHRvcigpLmxvY2FsZSB9fVxuICAgIH1cbiAgICBAY2FzZSAoY29sdW1uRGlzcGxheVR5cGVEYXRlKSB7XG4gICAgICAgIHt7IHZhbHVlKCkgfCBkYXRlOiBkZXNjcmlwdG9yKCkuZGlzcGxheUZvcm1hdCB9fVxuICAgIH1cbiAgICBAY2FzZSAoY29sdW1uRGlzcGxheVR5cGVCb29sZWFuKSB7XG4gICAgICAgIEBpZiAoZGVzY3JpcHRvcigpLmJvb2xlYW5Bc0ljb24pIHtcbiAgICAgICAgICAgIDxpIFtjbGFzc109XCJ2YWx1ZSgpIHwgbW5nQm9vbGVhbjogZGVzY3JpcHRvcigpLmJvb2xlYW5ZZXMgOiBkZXNjcmlwdG9yKCkuYm9vbGVhbk5vIDogdHJ1ZVwiPjwvaT5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICB7eyB2YWx1ZSgpIHwgbW5nQm9vbGVhbjogZGVzY3JpcHRvcigpLmJvb2xlYW5ZZXMgOiBkZXNjcmlwdG9yKCkuYm9vbGVhbk5vIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIH1cbiAgICB9XG4gICAgQGNhc2UgKGNvbHVtbkRpc3BsYXlUeXBlRW51bSkge1xuICAgICAgICB7eyB2YWx1ZSgpIHwgbW5nRW51bTogZGVzY3JpcHRvcigpLmVudW0gfCB0cmFuc2xhdGUgfX1cbiAgICB9XG4gICAgQGNhc2UgKGNvbHVtbkRpc3BsYXlUeXBlQ29tcG9uZW50KSB7XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgIFttbmdDb21wb25lbnRdPVwiZGVzY3JpcHRvcigpLmN1c3RvbUNvbXBvbmVudFR5cGUhXCJcbiAgICAgICAgICAgIFtpbnB1dHNdPVwie1xuICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSgpLFxuICAgICAgICAgICAgICAgIGl0ZW06IGl0ZW0oKSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdG9yOiBkZXNjcmlwdG9yKClcbiAgICAgICAgICAgIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICB9XG59XG5AaWYgKGRlc2NyaXB0b3IoKS5oYXNDb3B5VG9DbGlwYm9hcmQpIHtcbiAgICA8ZGl2IGNsYXNzPVwiaGVscC1idXR0b25zXCI+XG4gICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIHR5cGU9XCJidXR0b25cIiBpY29uPVwicGkgcGktY29weVwiIGNsYXNzPVwicC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi1pbmZvIHAtYnV0dG9uLXNtXCIgKGNsaWNrKT1cImNvcHlUb0NsaXBib2FyZCgkZXZlbnQpXCI+PC9idXR0b24+XG4gICAgPC9kaXY+XG59XG4iXX0=
|