@pega/angular-sdk-components 23.1.10 → 24.2.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/_bridge/angular-pconnect.mjs +18 -6
- package/esm2022/lib/_bridge/component-mapper/component-mapper.component.mjs +6 -13
- package/esm2022/lib/_bridge/helpers/sdk-pega-component-map.mjs +3 -1
- package/esm2022/lib/_bridge/helpers/sdk_component_map.mjs +1 -1
- package/esm2022/lib/_components/designSystemExtension/alert/alert.component.mjs +4 -4
- package/esm2022/lib/_components/designSystemExtension/alert-banner/alert-banner.component.mjs +4 -4
- package/esm2022/lib/_components/designSystemExtension/banner/banner.component.mjs +4 -4
- package/esm2022/lib/_components/designSystemExtension/case-create-stage/case-create-stage.component.mjs +5 -5
- package/esm2022/lib/_components/designSystemExtension/field-group/field-group.component.mjs +3 -3
- package/esm2022/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.mjs +9 -6
- package/esm2022/lib/_components/designSystemExtension/material-details/material-details.component.mjs +5 -5
- package/esm2022/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.mjs +10 -7
- package/esm2022/lib/_components/designSystemExtension/material-summary-item/material-summary-item.component.mjs +5 -5
- package/esm2022/lib/_components/designSystemExtension/material-summary-list/material-summary-list.component.mjs +4 -4
- package/esm2022/lib/_components/designSystemExtension/material-utility/material-utility.component.mjs +5 -5
- package/esm2022/lib/_components/designSystemExtension/material-vertical-tabs/material-vertical-tabs.component.mjs +5 -5
- package/esm2022/lib/_components/designSystemExtension/operator/operator.component.mjs +16 -9
- package/esm2022/lib/_components/designSystemExtension/pulse/pulse.component.mjs +9 -9
- package/esm2022/lib/_components/designSystemExtension/rich-text-editor/rich-text-editor.component.mjs +4 -4
- package/esm2022/lib/_components/designSystemExtension/wss-quick-create/wss-quick-create.component.mjs +3 -3
- package/esm2022/lib/_components/field/auto-complete/auto-complete.component.mjs +14 -12
- package/esm2022/lib/_components/field/cancel-alert/cancel-alert.component.mjs +5 -7
- package/esm2022/lib/_components/field/check-box/check-box.component.mjs +111 -45
- package/esm2022/lib/_components/field/currency/currency.component.mjs +48 -18
- package/esm2022/lib/_components/field/date/date.component.mjs +21 -41
- package/esm2022/lib/_components/field/date-time/date-time.component.mjs +26 -45
- package/esm2022/lib/_components/field/decimal/decimal.component.mjs +41 -11
- package/esm2022/lib/_components/field/dropdown/dropdown.component.mjs +126 -31
- package/esm2022/lib/_components/field/email/email.component.mjs +15 -8
- package/esm2022/lib/_components/field/group/group.component.mjs +11 -8
- package/esm2022/lib/_components/field/integer/integer.component.mjs +15 -10
- package/esm2022/lib/_components/field/list-view-action-buttons/list-view-action-buttons.component.mjs +3 -3
- package/esm2022/lib/_components/field/multiselect/multiselect.component.mjs +314 -0
- package/esm2022/lib/_components/field/multiselect/utils.mjs +187 -0
- package/esm2022/lib/_components/field/percentage/percentage.component.mjs +41 -14
- package/esm2022/lib/_components/field/phone/phone.component.mjs +12 -19
- package/esm2022/lib/_components/field/radio-buttons/radio-buttons.component.mjs +12 -19
- package/esm2022/lib/_components/field/rich-text/rich-text.component.mjs +10 -11
- package/esm2022/lib/_components/field/scalar-list/scalar-list.component.mjs +9 -9
- package/esm2022/lib/_components/field/semantic-link/semantic-link.component.mjs +5 -5
- package/esm2022/lib/_components/field/text/text.component.mjs +7 -5
- package/esm2022/lib/_components/field/text-area/text-area.component.mjs +15 -13
- package/esm2022/lib/_components/field/text-content/text-content.component.mjs +5 -5
- package/esm2022/lib/_components/field/text-input/text-input.component.mjs +15 -10
- package/esm2022/lib/_components/field/time/time.component.mjs +23 -12
- package/esm2022/lib/_components/field/url/url.component.mjs +17 -10
- package/esm2022/lib/_components/field/user-reference/user-reference.component.mjs +69 -37
- package/esm2022/lib/_components/infra/Containers/base-components/flow-container-base.component.mjs +18 -0
- package/esm2022/lib/_components/infra/Containers/base-components/helper.mjs +71 -0
- package/esm2022/lib/_components/infra/Containers/flow-container/flow-container.component.mjs +40 -41
- package/esm2022/lib/_components/infra/Containers/flow-container/helpers.mjs +1 -1
- package/esm2022/lib/_components/infra/Containers/hybrid-view-container/hybrid-view-container.component.mjs +3 -3
- package/esm2022/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.mjs +41 -13
- package/esm2022/lib/_components/infra/Containers/preview-view-container/preview-view-container.component.mjs +4 -4
- package/esm2022/lib/_components/infra/Containers/view-container/helper.mjs +22 -0
- package/esm2022/lib/_components/infra/Containers/view-container/view-container.component.mjs +10 -18
- package/esm2022/lib/_components/infra/action-buttons/action-buttons.component.mjs +3 -3
- package/esm2022/lib/_components/infra/assignment/assignment.component.mjs +35 -40
- package/esm2022/lib/_components/infra/assignment-card/assignment-card.component.mjs +4 -4
- package/esm2022/lib/_components/infra/dashboard-filter/dashboard-filter.component.mjs +5 -6
- package/esm2022/lib/_components/infra/defer-load/defer-load.component.mjs +13 -16
- package/esm2022/lib/_components/infra/error-boundary/error-boundary.component.mjs +3 -3
- package/esm2022/lib/_components/infra/multi-step/multi-step.component.mjs +6 -6
- package/esm2022/lib/_components/infra/navbar/navbar.component.mjs +12 -8
- package/esm2022/lib/_components/infra/reference/reference.component.mjs +5 -5
- package/esm2022/lib/_components/infra/region/region.component.mjs +4 -4
- package/esm2022/lib/_components/infra/root-container/root-container.component.mjs +5 -5
- package/esm2022/lib/_components/infra/stages/stages.component.mjs +6 -6
- package/esm2022/lib/_components/infra/view/view.component.mjs +24 -9
- package/esm2022/lib/_components/template/app-shell/app-shell.component.mjs +21 -5
- package/esm2022/lib/_components/template/banner-page/banner-page.component.mjs +5 -5
- package/esm2022/lib/_components/template/base/details-template-base.mjs +56 -0
- package/esm2022/lib/_components/template/base/form-template-base.mjs +13 -0
- package/esm2022/lib/_components/template/case-summary/case-summary.component.mjs +38 -9
- package/esm2022/lib/_components/template/case-view/case-view.component.mjs +12 -23
- package/esm2022/lib/_components/template/confirmation/confirmation.component.mjs +6 -6
- package/esm2022/lib/_components/template/data-reference/data-reference.component.mjs +15 -12
- package/esm2022/lib/_components/template/default-form/default-form.component.mjs +9 -21
- package/esm2022/lib/_components/template/details/details.component.mjs +12 -39
- package/esm2022/lib/_components/template/details-narrow-wide/details-narrow-wide.component.mjs +11 -38
- package/esm2022/lib/_components/template/details-one-column/details-one-column.component.mjs +12 -41
- package/esm2022/lib/_components/template/details-sub-tabs/details-sub-tabs.component.mjs +13 -40
- package/esm2022/lib/_components/template/details-three-column/details-three-column.component.mjs +12 -41
- package/esm2022/lib/_components/template/details-two-column/details-two-column.component.mjs +13 -42
- package/esm2022/lib/_components/template/details-wide-narrow/details-wide-narrow.component.mjs +12 -41
- package/esm2022/lib/_components/template/dynamic-tabs/dynamic-tabs.component.mjs +9 -9
- package/esm2022/lib/_components/template/field-group-list/field-group-list.component.mjs +4 -4
- package/esm2022/lib/_components/template/field-group-template/field-group-template.component.mjs +9 -21
- package/esm2022/lib/_components/template/field-value-list/field-value-list.component.mjs +10 -5
- package/esm2022/lib/_components/template/inline-dashboard/inline-dashboard.component.mjs +4 -4
- package/esm2022/lib/_components/template/inline-dashboard-page/inline-dashboard-page.component.mjs +6 -6
- package/esm2022/lib/_components/template/list-page/list-page.component.mjs +4 -4
- package/esm2022/lib/_components/template/list-view/DefaultViewMeta.mjs +1 -1
- package/esm2022/lib/_components/template/list-view/list-view.component.mjs +54 -35
- package/esm2022/lib/_components/template/list-view/listViewHelpers.mjs +2 -3
- package/esm2022/lib/_components/template/list-view/utils.mjs +1 -1
- package/esm2022/lib/_components/template/multi-reference-readonly/multi-reference-readonly.component.mjs +5 -5
- package/esm2022/lib/_components/template/narrow-wide-form/narrow-wide-form.component.mjs +4 -4
- package/esm2022/lib/_components/template/one-column/one-column.component.mjs +6 -5
- package/esm2022/lib/_components/template/one-column-page/one-column-page.component.mjs +4 -4
- package/esm2022/lib/_components/template/one-column-tab/one-column-tab.component.mjs +4 -4
- package/esm2022/lib/_components/template/page/page.component.mjs +5 -5
- package/esm2022/lib/_components/template/promoted-filters/promoted-filters.component.mjs +5 -5
- package/esm2022/lib/_components/template/repeating-structures/repeating-structures.component.mjs +5 -6
- package/esm2022/lib/_components/template/simple-table/simple-table.component.mjs +5 -7
- package/esm2022/lib/_components/template/simple-table-manual/helpers.mjs +3 -3
- package/esm2022/lib/_components/template/simple-table-manual/simple-table-manual.component.mjs +51 -32
- package/esm2022/lib/_components/template/simple-table-select/simple-table-select.component.mjs +8 -10
- package/esm2022/lib/_components/template/single-reference-readonly/single-reference-readonly.component.mjs +4 -4
- package/esm2022/lib/_components/template/sub-tabs/sub-tabs.component.mjs +5 -5
- package/esm2022/lib/_components/template/three-column/three-column.component.mjs +6 -5
- package/esm2022/lib/_components/template/three-column-page/three-column-page.component.mjs +4 -4
- package/esm2022/lib/_components/template/two-column/two-column.component.mjs +6 -5
- package/esm2022/lib/_components/template/two-column-page/two-column-page.component.mjs +5 -5
- package/esm2022/lib/_components/template/two-column-tab/two-column-tab.component.mjs +4 -4
- package/esm2022/lib/_components/template/utils.mjs +1 -1
- package/esm2022/lib/_components/template/wide-narrow-form/wide-narrow-form.component.mjs +6 -5
- package/esm2022/lib/_components/template/wide-narrow-page/wide-narrow-page.component.mjs +5 -5
- package/esm2022/lib/_components/template/wss-nav-bar/wss-nav-bar.component.mjs +9 -7
- package/esm2022/lib/_components/widget/app-announcement/app-announcement.component.mjs +4 -4
- package/esm2022/lib/_components/widget/attachment/attachment.component.mjs +229 -424
- package/esm2022/lib/_components/widget/case-history/case-history.component.mjs +6 -7
- package/esm2022/lib/_components/widget/feed-container/feed-container.component.mjs +6 -10
- package/esm2022/lib/_components/widget/file-utility/file-utility.component.mjs +18 -22
- package/esm2022/lib/_components/widget/list-utility/list-utility.component.mjs +6 -6
- package/esm2022/lib/_components/widget/quick-create/quick-create.component.mjs +5 -5
- package/esm2022/lib/_components/widget/todo/todo.component.mjs +79 -64
- package/esm2022/lib/_components/widget/utility/utility.component.mjs +5 -5
- package/esm2022/lib/_directives/thousand-seperator.directive.mjs +5 -5
- package/esm2022/lib/_helpers/case-utils.mjs +1 -1
- package/esm2022/lib/_helpers/createstage-utils.mjs +15 -0
- package/esm2022/lib/_helpers/currency-utils.mjs +1 -1
- package/esm2022/lib/_helpers/event-util.mjs +1 -1
- package/esm2022/lib/_helpers/field-group-utils.mjs +3 -3
- package/esm2022/lib/_helpers/filter-utils.mjs +1 -2
- package/esm2022/lib/_helpers/formatters/boolean.mjs +1 -1
- package/esm2022/lib/_helpers/formatters/common.mjs +3 -5
- package/esm2022/lib/_helpers/formatters/currency.mjs +2 -2
- package/esm2022/lib/_helpers/formatters/date.mjs +4 -4
- package/esm2022/lib/_helpers/formatters/format-utils.mjs +3 -3
- package/esm2022/lib/_helpers/formatters/index.mjs +17 -3
- package/esm2022/lib/_helpers/instructions-utils.mjs +36 -0
- package/esm2022/lib/_helpers/tab-utils.mjs +1 -1
- package/esm2022/lib/_helpers/template-utils.mjs +4 -4
- package/esm2022/lib/_helpers/utils.mjs +6 -6
- package/esm2022/lib/_messages/error-messages.service.mjs +4 -4
- package/esm2022/lib/_messages/progress-spinner.service.mjs +3 -3
- package/esm2022/lib/_messages/update-worklist.service.mjs +3 -3
- package/esm2022/lib/_services/case.service.mjs +4 -4
- package/esm2022/lib/_services/datapage.service.mjs +5 -5
- package/esm2022/lib/_services/endpoints.mjs +1 -2
- package/esm2022/lib/_services/server-config.service.mjs +3 -3
- package/esm2022/public-api.mjs +6 -4
- package/fesm2022/pega-angular-sdk-components.mjs +2722 -2143
- package/fesm2022/pega-angular-sdk-components.mjs.map +1 -1
- package/lib/_bridge/angular-pconnect.d.ts +2 -0
- package/lib/_bridge/helpers/sdk-pega-component-map.d.ts +2 -0
- package/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.d.ts +2 -0
- package/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.d.ts +1 -1
- package/lib/_components/designSystemExtension/operator/operator.component.d.ts +2 -1
- package/lib/_components/designSystemExtension/pulse/pulse.component.d.ts +2 -2
- package/lib/_components/field/auto-complete/auto-complete.component.d.ts +3 -2
- package/lib/_components/field/check-box/check-box.component.d.ts +18 -0
- package/lib/_components/field/currency/currency.component.d.ts +10 -5
- package/lib/_components/field/date/date.component.d.ts +17 -6
- package/lib/_components/field/date-time/date-time.component.d.ts +10 -3
- package/lib/_components/field/decimal/decimal.component.d.ts +9 -1
- package/lib/_components/field/dropdown/dropdown.component.d.ts +13 -2
- package/lib/_components/field/email/email.component.d.ts +2 -0
- package/lib/_components/field/integer/integer.component.d.ts +3 -1
- package/lib/_components/field/list-view-action-buttons/list-view-action-buttons.component.d.ts +1 -1
- package/lib/_components/field/multiselect/multiselect.component.d.ts +65 -0
- package/lib/_components/field/multiselect/utils.d.ts +8 -0
- package/lib/_components/field/percentage/percentage.component.d.ts +11 -1
- package/lib/_components/field/phone/phone.component.d.ts +3 -1
- package/lib/_components/field/radio-buttons/radio-buttons.component.d.ts +2 -1
- package/lib/_components/field/rich-text/rich-text.component.d.ts +2 -0
- package/lib/_components/field/text/text.component.d.ts +3 -1
- package/lib/_components/field/text-area/text-area.component.d.ts +3 -1
- package/lib/_components/field/text-input/text-input.component.d.ts +3 -1
- package/lib/_components/field/time/time.component.d.ts +5 -1
- package/lib/_components/field/url/url.component.d.ts +4 -1
- package/lib/_components/field/user-reference/user-reference.component.d.ts +16 -4
- package/lib/_components/infra/Containers/base-components/flow-container-base.component.d.ts +8 -0
- package/lib/_components/infra/Containers/base-components/helper.d.ts +1 -0
- package/lib/_components/infra/Containers/flow-container/flow-container.component.d.ts +6 -7
- package/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.d.ts +3 -2
- package/lib/_components/infra/Containers/view-container/helper.d.ts +2 -0
- package/lib/_components/infra/action-buttons/action-buttons.component.d.ts +1 -1
- package/lib/_components/infra/assignment/assignment.component.d.ts +2 -2
- package/lib/_components/infra/defer-load/defer-load.component.d.ts +2 -2
- package/lib/_components/infra/error-boundary/error-boundary.component.d.ts +1 -1
- package/lib/_components/infra/navbar/navbar.component.d.ts +4 -2
- package/lib/_components/infra/view/view.component.d.ts +1 -0
- package/lib/_components/template/base/details-template-base.d.ts +22 -0
- package/lib/_components/template/base/form-template-base.d.ts +8 -0
- package/lib/_components/template/case-summary/case-summary.component.d.ts +2 -0
- package/lib/_components/template/case-view/case-view.component.d.ts +1 -2
- package/lib/_components/template/default-form/default-form.component.d.ts +2 -5
- package/lib/_components/template/details/details.component.d.ts +3 -11
- package/lib/_components/template/details-narrow-wide/details-narrow-wide.component.d.ts +3 -11
- package/lib/_components/template/details-one-column/details-one-column.component.d.ts +3 -13
- package/lib/_components/template/details-sub-tabs/details-sub-tabs.component.d.ts +3 -13
- package/lib/_components/template/details-three-column/details-three-column.component.d.ts +3 -13
- package/lib/_components/template/details-two-column/details-two-column.component.d.ts +3 -13
- package/lib/_components/template/details-wide-narrow/details-wide-narrow.component.d.ts +3 -13
- package/lib/_components/template/dynamic-tabs/dynamic-tabs.component.d.ts +1 -0
- package/lib/_components/template/field-value-list/field-value-list.component.d.ts +2 -1
- package/lib/_components/template/list-view/list-view.component.d.ts +12 -3
- package/lib/_components/template/list-view/listViewHelpers.d.ts +1 -1
- package/lib/_components/template/one-column/one-column.component.d.ts +2 -1
- package/lib/_components/template/simple-table-manual/helpers.d.ts +2 -2
- package/lib/_components/template/simple-table-manual/simple-table-manual.component.d.ts +4 -0
- package/lib/_components/template/three-column/three-column.component.d.ts +2 -1
- package/lib/_components/template/two-column/two-column.component.d.ts +2 -1
- package/lib/_components/template/wide-narrow-form/wide-narrow-form.component.d.ts +2 -1
- package/lib/_components/template/wide-narrow-page/wide-narrow-page.component.d.ts +1 -1
- package/lib/_components/template/wss-nav-bar/wss-nav-bar.component.d.ts +4 -2
- package/lib/_components/widget/attachment/attachment.component.d.ts +30 -54
- package/lib/_components/widget/feed-container/feed-container.component.d.ts +2 -2
- package/lib/_components/widget/file-utility/file-utility.component.d.ts +2 -2
- package/lib/_components/widget/todo/todo.component.d.ts +8 -10
- package/lib/_helpers/createstage-utils.d.ts +1 -0
- package/lib/_helpers/field-group-utils.d.ts +1 -1
- package/lib/_helpers/filter-utils.d.ts +1 -1
- package/lib/_helpers/formatters/common.d.ts +1 -1
- package/lib/_helpers/instructions-utils.d.ts +4 -0
- package/lib/_messages/error-messages.service.d.ts +1 -1
- package/lib/_services/endpoints.d.ts +0 -1
- package/lib/doc/KeyReleaseUpdates.md +35 -1
- package/package.json +3 -3
- package/public-api.d.ts +5 -3
- package/esm2022/lib/_messages/get-login-status.service.mjs +0 -26
- package/esm2022/lib/_messages/oauth-response.service.mjs +0 -30
- package/esm2022/lib/_messages/reset-pconnect.service.mjs +0 -31
- package/lib/_messages/get-login-status.service.d.ts +0 -10
- package/lib/_messages/oauth-response.service.d.ts +0 -14
- package/lib/_messages/reset-pconnect.service.d.ts +0 -15
|
@@ -3,9 +3,11 @@ import { CommonModule } from '@angular/common';
|
|
|
3
3
|
import { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
4
4
|
import { MatInputModule } from '@angular/material/input';
|
|
5
5
|
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
6
|
+
import { NgxCurrencyDirective, NgxCurrencyInputMode } from 'ngx-currency';
|
|
6
7
|
import { ComponentMapperComponent } from '../../../_bridge/component-mapper/component-mapper.component';
|
|
7
8
|
import { handleEvent } from '../../../_helpers/event-util';
|
|
8
|
-
import {
|
|
9
|
+
import { getCurrencyCharacters, getCurrencyOptions } from '../../../_helpers/currency-utils';
|
|
10
|
+
import { format } from '../../../_helpers/formatters';
|
|
9
11
|
import * as i0 from "@angular/core";
|
|
10
12
|
import * as i1 from "../../../_bridge/angular-pconnect";
|
|
11
13
|
import * as i2 from "../../../_helpers/utils";
|
|
@@ -29,6 +31,7 @@ export class DecimalComponent {
|
|
|
29
31
|
this.bHasForm$ = true;
|
|
30
32
|
this.componentReference = '';
|
|
31
33
|
this.fieldControl = new FormControl(null, null);
|
|
34
|
+
this.currencySymbol = '';
|
|
32
35
|
}
|
|
33
36
|
ngOnInit() {
|
|
34
37
|
// First thing in initialization is registering and subscribing to the AngularPConnect service
|
|
@@ -78,6 +81,7 @@ export class DecimalComponent {
|
|
|
78
81
|
this.testId = this.configProps$.testId;
|
|
79
82
|
this.label$ = this.configProps$.label;
|
|
80
83
|
this.displayMode$ = this.configProps$.displayMode;
|
|
84
|
+
this.inputMode = NgxCurrencyInputMode.Natural;
|
|
81
85
|
let nValue = this.configProps$.value;
|
|
82
86
|
if (nValue) {
|
|
83
87
|
if (typeof nValue === 'string') {
|
|
@@ -87,6 +91,19 @@ export class DecimalComponent {
|
|
|
87
91
|
}
|
|
88
92
|
this.helperText = this.configProps$.helperText;
|
|
89
93
|
this.placeholder = this.configProps$.placeholder || '';
|
|
94
|
+
const showGroupSeparators = this.configProps$.showGroupSeparators;
|
|
95
|
+
const currencyISOCode = this.configProps$?.currencyISOCode ?? '';
|
|
96
|
+
const theSymbols = getCurrencyCharacters(currencyISOCode);
|
|
97
|
+
this.decimalSeparator = theSymbols.theDecimalIndicator;
|
|
98
|
+
this.thousandSeparator = showGroupSeparators ? theSymbols.theDigitGroupSeparator : '';
|
|
99
|
+
const theCurrencyOptions = getCurrencyOptions(currencyISOCode);
|
|
100
|
+
this.formatter = this.configProps$.formatter;
|
|
101
|
+
if (this.formatter) {
|
|
102
|
+
this.formattedValue = format(this.value$, this.formatter.toLowerCase(), theCurrencyOptions);
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
this.formattedValue = format(this.value$, 'decimal', theCurrencyOptions);
|
|
106
|
+
}
|
|
90
107
|
// timeout and detectChanges to avoid ExpressionChangedAfterItHasBeenCheckedError
|
|
91
108
|
setTimeout(() => {
|
|
92
109
|
if (this.configProps$.required != null) {
|
|
@@ -110,14 +127,27 @@ export class DecimalComponent {
|
|
|
110
127
|
else {
|
|
111
128
|
this.fieldControl.enable();
|
|
112
129
|
}
|
|
130
|
+
if (this.bReadonly$ && this.formatter === 'Currency') {
|
|
131
|
+
this.currencySymbol = theSymbols.theCurrencySymbol;
|
|
132
|
+
}
|
|
133
|
+
this.decimalPrecision = this.configProps$?.decimalPrecision ?? 2;
|
|
113
134
|
this.componentReference = this.pConn$.getStateProps().value;
|
|
114
135
|
}
|
|
115
136
|
fieldOnBlur(event) {
|
|
116
137
|
const actionsApi = this.pConn$?.getActionsApi();
|
|
117
|
-
const propName =
|
|
138
|
+
const propName = this.pConn$?.getStateProps().value;
|
|
118
139
|
let value = event?.target?.value;
|
|
119
|
-
|
|
120
|
-
|
|
140
|
+
// replacing thousand separator with empty string as not required in api call
|
|
141
|
+
if (this.configProps$.showGroupSeparators) {
|
|
142
|
+
const thousandSep = this.thousandSeparator === '.' ? '\\.' : this.thousandSeparator;
|
|
143
|
+
const regExp = new RegExp(String.raw `${thousandSep}`, 'g');
|
|
144
|
+
value = value?.replace(regExp, '');
|
|
145
|
+
}
|
|
146
|
+
// replacing decimal separator with '.'
|
|
147
|
+
if (this.decimalSeparator !== '.') {
|
|
148
|
+
const regExp = new RegExp(String.raw `${this.decimalSeparator}`, 'g');
|
|
149
|
+
value = value.replace(regExp, '.');
|
|
150
|
+
}
|
|
121
151
|
handleEvent(actionsApi, 'changeNblur', propName, value);
|
|
122
152
|
}
|
|
123
153
|
getErrorMessage() {
|
|
@@ -135,10 +165,10 @@ export class DecimalComponent {
|
|
|
135
165
|
}
|
|
136
166
|
return errMessage;
|
|
137
167
|
}
|
|
138
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
139
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
168
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: DecimalComponent, deps: [{ token: i1.AngularPConnectService }, { token: i0.ChangeDetectorRef }, { token: i2.Utils }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
169
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: DecimalComponent, isStandalone: true, selector: "app-decimal", inputs: { pConn$: "pConn$", formGroup$: "formGroup$" }, ngImport: i0, template: "<div *ngIf=\"displayMode$; else noDisplayMode\">\n <component-mapper *ngIf=\"bVisible$ !== false\" name=\"FieldValueList\" [props]=\"{ label$, value$: formattedValue, displayMode$ }\"></component-mapper>\n</div>\n<ng-template #noDisplayMode>\n <div *ngIf=\"bHasForm$; else noEdit\">\n <div [formGroup]=\"formGroup$\" *ngIf=\"bVisible$\">\n <mat-form-field class=\"psdk-full-width\" subscriptSizing=\"dynamic\" [hintLabel]=\"helperText\">\n <mat-label>{{ label$ }}</mat-label>\n <input\n type=\"text\"\n matInput\n currencyMask\n [options]=\"{\n prefix: currencySymbol,\n thousands: thousandSeparator,\n decimal: decimalSeparator,\n align: 'left',\n nullable: true,\n precision: decimalPrecision,\n inputMode: inputMode\n }\"\n [placeholder]=\"placeholder\"\n step=\"0.01\"\n [formControlName]=\"controlName$\"\n [required]=\"bRequired$\"\n [formControl]=\"fieldControl\"\n [attr.data-test-id]=\"testId\"\n (blur)=\"fieldOnBlur($event)\"\n [readonly]=\"bReadonly$\"\n />\n <mat-error *ngIf=\"fieldControl.invalid\">{{ getErrorMessage() }}</mat-error>\n </mat-form-field>\n </div>\n </div>\n</ng-template>\n<ng-template #noEdit>\n <component-mapper *ngIf=\"bVisible$ !== false\" name=\"Text\" [props]=\"{ pConn$, formatAs$: 'text' }\"></component-mapper>\n</ng-template>\n", styles: [".psdk-full-width{width:100%}.psdk-label-readonly{font-size:1rem;display:block;transform:translateY(-1.28125em) scale(.75) perspective(100px) translateZ(.001px);-ms-transform:translateY(-1.28125em) scale(.75);width:133.33333%}.psdk-data-readonly{padding-top:.625rem;width:100%}::ng-deep .mat-mdc-form-field-infix{width:auto}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i3.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: i0.forwardRef(() => ReactiveFormsModule) }, { kind: "directive", type: i0.forwardRef(() => i4.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: i0.forwardRef(() => i4.NgControlStatus), selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i0.forwardRef(() => i4.NgControlStatusGroup), selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i0.forwardRef(() => i4.RequiredValidator), selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i0.forwardRef(() => i4.FormControlDirective), selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i0.forwardRef(() => i4.FormGroupDirective), selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i0.forwardRef(() => i4.FormControlName), selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: i0.forwardRef(() => FormsModule) }, { kind: "ngmodule", type: i0.forwardRef(() => MatFormFieldModule) }, { kind: "component", type: i0.forwardRef(() => i5.MatFormField), selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i0.forwardRef(() => i5.MatLabel), selector: "mat-label" }, { kind: "directive", type: i0.forwardRef(() => i5.MatError), selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatInputModule) }, { kind: "directive", type: i0.forwardRef(() => i6.MatInput), selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i0.forwardRef(() => NgxCurrencyDirective), selector: "input[currencyMask]", inputs: ["currencyMask", "options"] }, { kind: "component", type: i0.forwardRef(() => ComponentMapperComponent), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
|
|
140
170
|
}
|
|
141
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
171
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: DecimalComponent, decorators: [{
|
|
142
172
|
type: Component,
|
|
143
173
|
args: [{ selector: 'app-decimal', standalone: true, imports: [
|
|
144
174
|
CommonModule,
|
|
@@ -146,12 +176,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
146
176
|
FormsModule,
|
|
147
177
|
MatFormFieldModule,
|
|
148
178
|
MatInputModule,
|
|
149
|
-
|
|
179
|
+
NgxCurrencyDirective,
|
|
150
180
|
forwardRef(() => ComponentMapperComponent)
|
|
151
|
-
], template: "<div *ngIf=\"displayMode$; else noDisplayMode\">\n <component-mapper *ngIf=\"bVisible$ !== false\" name=\"FieldValueList\" [props]=\"{ label$, value
|
|
152
|
-
}], ctorParameters:
|
|
181
|
+
], template: "<div *ngIf=\"displayMode$; else noDisplayMode\">\n <component-mapper *ngIf=\"bVisible$ !== false\" name=\"FieldValueList\" [props]=\"{ label$, value$: formattedValue, displayMode$ }\"></component-mapper>\n</div>\n<ng-template #noDisplayMode>\n <div *ngIf=\"bHasForm$; else noEdit\">\n <div [formGroup]=\"formGroup$\" *ngIf=\"bVisible$\">\n <mat-form-field class=\"psdk-full-width\" subscriptSizing=\"dynamic\" [hintLabel]=\"helperText\">\n <mat-label>{{ label$ }}</mat-label>\n <input\n type=\"text\"\n matInput\n currencyMask\n [options]=\"{\n prefix: currencySymbol,\n thousands: thousandSeparator,\n decimal: decimalSeparator,\n align: 'left',\n nullable: true,\n precision: decimalPrecision,\n inputMode: inputMode\n }\"\n [placeholder]=\"placeholder\"\n step=\"0.01\"\n [formControlName]=\"controlName$\"\n [required]=\"bRequired$\"\n [formControl]=\"fieldControl\"\n [attr.data-test-id]=\"testId\"\n (blur)=\"fieldOnBlur($event)\"\n [readonly]=\"bReadonly$\"\n />\n <mat-error *ngIf=\"fieldControl.invalid\">{{ getErrorMessage() }}</mat-error>\n </mat-form-field>\n </div>\n </div>\n</ng-template>\n<ng-template #noEdit>\n <component-mapper *ngIf=\"bVisible$ !== false\" name=\"Text\" [props]=\"{ pConn$, formatAs$: 'text' }\"></component-mapper>\n</ng-template>\n", styles: [".psdk-full-width{width:100%}.psdk-label-readonly{font-size:1rem;display:block;transform:translateY(-1.28125em) scale(.75) perspective(100px) translateZ(.001px);-ms-transform:translateY(-1.28125em) scale(.75);width:133.33333%}.psdk-data-readonly{padding-top:.625rem;width:100%}::ng-deep .mat-mdc-form-field-infix{width:auto}\n"] }]
|
|
182
|
+
}], ctorParameters: () => [{ type: i1.AngularPConnectService }, { type: i0.ChangeDetectorRef }, { type: i2.Utils }], propDecorators: { pConn$: [{
|
|
153
183
|
type: Input
|
|
154
184
|
}], formGroup$: [{
|
|
155
185
|
type: Input
|
|
156
186
|
}] } });
|
|
157
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjaW1hbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvZmllbGQvZGVjaW1hbC9kZWNpbWFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy9maWVsZC9kZWNpbWFsL2RlY2ltYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQXFCLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBYSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHbEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDeEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDOzs7Ozs7OztBQXlCL0YsTUFBTSxPQUFPLGdCQUFnQjtJQXdCM0IsWUFDVSxlQUF1QyxFQUN2QyxLQUF3QixFQUN4QixLQUFZO1FBRlosb0JBQWUsR0FBZixlQUFlLENBQXdCO1FBQ3ZDLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBQ3hCLFVBQUssR0FBTCxLQUFLLENBQU87UUF2QnRCLDRCQUE0QjtRQUM1Qix3QkFBbUIsR0FBd0IsRUFBRSxDQUFD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RTtZQUNuQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDbEQ7UUFFRCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDOytHQXZKVSxnQkFBZ0I7bUdBQWhCLGdCQUFnQiwrSENsQzdCLHVwQ0E0QkEsaWFESEksWUFBWSxnTkFDWixtQkFBbUIsbzJDQUNuQixXQUFXLHFFQUNYLGtCQUFrQixtaUJBQ2xCLGNBQWMseWJBQ2QsMEJBQTBCLDBHQUNULHdCQUF3Qjs7NEZBR2hDLGdCQUFnQjtrQkFmNUIsU0FBUzsrQkFDRSxhQUFhLGNBR1gsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixXQUFXO3dCQUNYLGtCQUFrQjt3QkFDbEIsY0FBYzt3QkFDZCwwQkFBMEI7d0JBQzFCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztxQkFDM0M7aUtBR1EsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIENoYW5nZURldGVjdG9yUmVmLCBmb3J3YXJkUmVmLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBBbmd1bGFyUENvbm5lY3REYXRhLCBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9hbmd1bGFyLXBjb25uZWN0JztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vLi4vX2hlbHBlcnMvdXRpbHMnO1xuaW1wb3J0IHsgQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9jb21wb25lbnQtbWFwcGVyL2NvbXBvbmVudC1tYXBwZXIuY29tcG9uZW50JztcbmltcG9ydCB7IGhhbmRsZUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vX2hlbHBlcnMvZXZlbnQtdXRpbCc7XG5pbXBvcnQgeyBUaG91c2FuZFNlcGFyYXRvckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL19kaXJlY3RpdmVzL3Rob3VzYW5kLXNlcGVyYXRvci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUENvbm5GaWVsZFByb3BzIH0gZnJvbSAnLi4vLi4vLi4vX3R5cGVzL1BDb25uUHJvcHMuaW50ZXJmYWNlJztcblxuaW50ZXJmYWNlIERlY2ltYWxQcm9wcyBleHRlbmRzIFBDb25uRmllbGRQcm9wcyB7XG4gIC8vIElmIGFueSwgZW50ZXIgYWRkaXRpb25hbCBwcm9wcyB0aGF0IG9ubHkgZXhpc3Qgb24gRGVjaW1hbCBoZXJlXG4gIGN1cnJlbmN5SVNPQ29kZT86IHN0cmluZztcbiAgZGVjaW1hbFByZWNpc2lvbj86IG51bWJlcjtcbiAgc2hvd0dyb3VwU2VwYXJhdG9ycz86IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWRlY2ltYWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGVjaW1hbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RlY2ltYWwuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBUaG91c2FuZFNlcGFyYXRvckRpcmVjdGl2ZSxcbiAgICBmb3J3YXJkUmVmKCgpID0+IENvbXBvbmVudE1hcHBlckNvbXBvbmVudClcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBEZWNpbWFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwQ29ubiQ6IHR5cGVvZiBQQ29ubmVjdDtcbiAgQElucHV0KCkgZm9ybUdyb3VwJDogRm9ybUdyb3VwO1xuXG4gIC8vIFVzZWQgd2l0aCBBbmd1bGFyUENvbm5lY3RcbiAgYW5ndWxhclBDb25uZWN0RGF0YTogQW5ndWxhclBDb25uZWN0RGF0YSA9IHt9O1xuICBjb25maWdQcm9wcyQ6IERlY2ltYWxQcm9wcztcblxuICBsYWJlbCQgPSAnJztcbiAgdmFsdWUkOiBudW1iZXI7XG4gIGJSZXF1aXJlZCQgPSBmYWxzZTtcbiAgYlJlYWRvbmx5JCA9IGZhbHNlO1xuICBiRGlzYWJsZWQkID0gZmFsc2U7XG4gIGJWaXNpYmxlJCA9IHRydWU7XG4gIGRpc3BsYXlNb2RlJD86IHN0cmluZyA9ICcnO1xuICBjb250cm9sTmFtZSQ6IHN0cmluZztcbiAgYkhhc0Zvcm0kID0gdHJ1ZTtcbiAgY29tcG9uZW50UmVmZXJlbmNlID0gJyc7XG4gIHRlc3RJZDogc3RyaW5nO1xuICBoZWxwZXJUZXh0OiBzdHJpbmc7XG4gIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgZmllbGRDb250cm9sID0gbmV3IEZvcm1Db250cm9sPG51bWJlciB8IG51bGw+KG51bGwsIG51bGwpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYW5ndWxhclBDb25uZWN0OiBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgdXRpbHM6IFV0aWxzXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBGaXJzdCB0aGluZyBpbiBpbml0aWFsaXphdGlvbiBpcyByZWdpc3RlcmluZyBhbmQgc3Vic2NyaWJpbmcgdG8gdGhlIEFuZ3VsYXJQQ29ubmVjdCBzZXJ2aWNlXG4gICAgdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhID0gdGhpcy5hbmd1bGFyUENvbm5lY3QucmVnaXN0ZXJBbmRTdWJzY3JpYmVDb21wb25lbnQodGhpcywgdGhpcy5vblN0YXRlQ2hhbmdlKTtcbiAgICB0aGlzLmNvbnRyb2xOYW1lJCA9IHRoaXMuYW5ndWxhclBDb25uZWN0LmdldENvbXBvbmVudElEKHRoaXMpO1xuXG4gICAgLy8gVGhlbiwgY29udGludWUgb24gd2l0aCBvdGhlciBpbml0aWFsaXphdGlvblxuXG4gICAgLy8gY2FsbCB1cGRhdGVTZWxmIHdoZW4gaW5pdGlhbGl6aW5nXG4gICAgLy8gdGhpcy51cGRhdGVTZWxmKCk7XG4gICAgdGhpcy5jaGVja0FuZFVwZGF0ZSgpO1xuXG4gICAgaWYgKHRoaXMuZm9ybUdyb3VwJCkge1xuICAgICAgLy8gYWRkIGNvbnRyb2wgdG8gZm9ybUdyb3VwXG4gICAgICB0aGlzLmZvcm1Hcm91cCQuYWRkQ29udHJvbCh0aGlzLmNvbnRyb2xOYW1lJCwgdGhpcy5maWVsZENvbnRyb2wpO1xuICAgICAgdGhpcy5maWVsZENvbnRyb2wuc2V0VmFsdWUodGhpcy52YWx1ZSQpO1xuICAgICAgdGhpcy5iSGFzRm9ybSQgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmJSZWFkb25seSQgPSB0cnVlO1xuICAgICAgdGhpcy5iSGFzRm9ybSQgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mb3JtR3JvdXAkKSB7XG4gICAgICB0aGlzLmZvcm1Hcm91cCQucmVtb3ZlQ29udHJvbCh0aGlzLmNvbnRyb2xOYW1lJCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS51bnN1YnNjcmliZUZuKSB7XG4gICAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbigpO1xuICAgIH1cbiAgfVxuXG4gIC8vIENhbGxiYWNrIHBhc3NlZCB3aGVuIHN1YnNjcmliaW5nIHRvIHN0b3JlIGNoYW5nZVxuICBvblN0YXRlQ2hhbmdlKCkge1xuICAgIHRoaXMuY2hlY2tBbmRVcGRhdGUoKTtcbiAgfVxuXG4gIGNoZWNrQW5kVXBkYXRlKCkge1xuICAgIC8vIFNob3VsZCBhbHdheXMgY2hlY2sgdGhlIGJyaWRnZSB0byBzZWUgaWYgdGhlIGNvbXBvbmVudCBzaG91bGRcbiAgICAvLyB1cGRhdGUgaXRzZWxmIChyZS1yZW5kZXIpXG4gICAgY29uc3QgYlVwZGF0ZVNlbGYgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5zaG91bGRDb21wb25lbnRVcGRhdGUodGhpcyk7XG5cbiAgICAvLyBPTkxZIGNhbGwgdXBkYXRlU2VsZiB3aGVuIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZVxuICAgIGlmIChiVXBkYXRlU2VsZikge1xuICAgICAgdGhpcy51cGRhdGVTZWxmKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gdXBkYXRlU2VsZlxuICB1cGRhdGVTZWxmKCk6IHZvaWQge1xuICAgIC8vIHN0YXJ0aW5nIHZlcnkgc2ltcGxlLi4uXG5cbiAgICAvLyBtb3ZlZCB0aGlzIGZyb20gbmdPbkluaXQoKSBhbmQgY2FsbCB0aGlzIGZyb20gdGhlcmUgaW5zdGVhZC4uLlxuICAgIHRoaXMuY29uZmlnUHJvcHMkID0gdGhpcy5wQ29ubiQucmVzb2x2ZUNvbmZpZ1Byb3BzKHRoaXMucENvbm4kLmdldENvbmZpZ1Byb3BzKCkpIGFzIERlY2ltYWxQcm9wcztcbiAgICB0aGlzLnRlc3RJZCA9IHRoaXMuY29uZmlnUHJvcHMkLnRlc3RJZDtcbiAgICB0aGlzLmxhYmVsJCA9IHRoaXMuY29uZmlnUHJvcHMkLmxhYmVsO1xuICAgIHRoaXMuZGlzcGxheU1vZGUkID0gdGhpcy5jb25maWdQcm9wcyQuZGlzcGxheU1vZGU7XG4gICAgbGV0IG5WYWx1ZTogYW55ID0gdGhpcy5jb25maWdQcm9wcyQudmFsdWU7XG4gICAgaWYgKG5WYWx1ZSkge1xuICAgICAgaWYgKHR5cGVvZiBuVmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIG5WYWx1ZSA9IHBhcnNlRmxvYXQoblZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHRoaXMudmFsdWUkID0gblZhbHVlO1xuICAgIH1cbiAgICB0aGlzLmhlbHBlclRleHQgPSB0aGlzLmNvbmZpZ1Byb3BzJC5oZWxwZXJUZXh0O1xuICAgIHRoaXMucGxhY2Vob2xkZXIgPSB0aGlzLmNvbmZpZ1Byb3BzJC5wbGFjZWhvbGRlciB8fCAnJztcblxuICAgIC8vIHRpbWVvdXQgYW5kIGRldGVjdENoYW5nZXMgdG8gYXZvaWQgRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuY29uZmlnUHJvcHMkLnJlcXVpcmVkICE9IG51bGwpIHtcbiAgICAgICAgdGhpcy5iUmVxdWlyZWQkID0gdGhpcy51dGlscy5nZXRCb29sZWFuVmFsdWUodGhpcy5jb25maWdQcm9wcyQucmVxdWlyZWQpO1xuICAgICAgfVxuICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5jb25maWdQcm9wcyQudmlzaWJpbGl0eSAhPSBudWxsKSB7XG4gICAgICB0aGlzLmJWaXNpYmxlJCA9IHRoaXMudXRpbHMuZ2V0Qm9vbGVhblZhbHVlKHRoaXMuY29uZmlnUHJvcHMkLnZpc2liaWxpdHkpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZ1Byb3BzJC5yZWFkT25seSAhPSBudWxsKSB7XG4gICAgICB0aGlzLmJSZWFkb25seSQgPSB0aGlzLnV0aWxzLmdldEJvb2xlYW5WYWx1ZSh0aGlzLmNvbmZpZ1Byb3BzJC5yZWFkT25seSk7XG4gICAgfVxuXG4gICAgLy8gZGlzYWJsZWRcbiAgICBpZiAodGhpcy5jb25maWdQcm9wcyQuZGlzYWJsZWQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmJEaXNhYmxlZCQgPSB0aGlzLnV0aWxzLmdldEJvb2xlYW5WYWx1ZSh0aGlzLmNvbmZpZ1Byb3BzJC5kaXNhYmxlZCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYkRpc2FibGVkJCkge1xuICAgICAgdGhpcy5maWVsZENvbnRyb2wuZGlzYWJsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpZWxkQ29udHJvbC5lbmFibGUoKTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbXBvbmVudFJlZmVyZW5jZSA9ICh0aGlzLnBDb25uJC5nZXRTdGF0ZVByb3BzKCkgYXMgYW55KS52YWx1ZTtcbiAgfVxuXG4gIGZpZWxkT25CbHVyKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBhY3Rpb25zQXBpID0gdGhpcy5wQ29ubiQ/LmdldEFjdGlvbnNBcGkoKTtcbiAgICBjb25zdCBwcm9wTmFtZSA9ICh0aGlzLnBDb25uJD8uZ2V0U3RhdGVQcm9wcygpIGFzIGFueSkudmFsdWU7XG4gICAgbGV0IHZhbHVlID0gZXZlbnQ/LnRhcmdldD8udmFsdWU7XG4gICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC8sL2csICcnKTtcbiAgICB2YWx1ZSA9IHZhbHVlICE9PSAnJyA/IE51bWJlcih2YWx1ZSkgOiB2YWx1ZTtcbiAgICBoYW5kbGVFdmVudChhY3Rpb25zQXBpLCAnY2hhbmdlTmJsdXInLCBwcm9wTmFtZSwgdmFsdWUpO1xuICB9XG5cbiAgZ2V0RXJyb3JNZXNzYWdlKCkge1xuICAgIGxldCBlcnJNZXNzYWdlID0gJyc7XG5cbiAgICAvLyBsb29rIGZvciB2YWxpZGF0aW9uIG1lc3NhZ2VzIGZvciBqc29uLCBwcmUtZGVmaW5lZCBvciBqdXN0IGFuIGVycm9yIHB1c2hlZCBmcm9tIHdvcmtpdGVtICg0MDApXG4gICAgaWYgKHRoaXMuZmllbGRDb250cm9sLmhhc0Vycm9yKCdtZXNzYWdlJykpIHtcbiAgICAgIGVyck1lc3NhZ2UgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudmFsaWRhdGVNZXNzYWdlID8/ICcnO1xuICAgICAgcmV0dXJuIGVyck1lc3NhZ2U7XG4gICAgfVxuICAgIGlmICh0aGlzLmZpZWxkQ29udHJvbC5oYXNFcnJvcigncmVxdWlyZWQnKSkge1xuICAgICAgZXJyTWVzc2FnZSA9ICdZb3UgbXVzdCBlbnRlciBhIHZhbHVlJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuZmllbGRDb250cm9sLmVycm9ycykge1xuICAgICAgZXJyTWVzc2FnZSA9IHRoaXMuZmllbGRDb250cm9sLmVycm9ycy50b1N0cmluZygpO1xuICAgIH1cblxuICAgIHJldHVybiBlcnJNZXNzYWdlO1xuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwiZGlzcGxheU1vZGUkOyBlbHNlIG5vRGlzcGxheU1vZGVcIj5cbiAgPGNvbXBvbmVudC1tYXBwZXIgKm5nSWY9XCJiVmlzaWJsZSQgIT09IGZhbHNlXCIgbmFtZT1cIkZpZWxkVmFsdWVMaXN0XCIgW3Byb3BzXT1cInsgbGFiZWwkLCB2YWx1ZSQsIGRpc3BsYXlNb2RlJCB9XCI+PC9jb21wb25lbnQtbWFwcGVyPlxuPC9kaXY+XG48bmctdGVtcGxhdGUgI25vRGlzcGxheU1vZGU+XG4gIDxkaXYgKm5nSWY9XCIhYlJlYWRvbmx5JCAmJiBiSGFzRm9ybSQ7IGVsc2Ugbm9FZGl0XCI+XG4gICAgPGRpdiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cCRcIiAqbmdJZj1cImJWaXNpYmxlJFwiPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwicHNkay1mdWxsLXdpZHRoXCIgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiIFtoaW50TGFiZWxdPVwiaGVscGVyVGV4dFwiPlxuICAgICAgICA8bWF0LWxhYmVsPnt7IGxhYmVsJCB9fTwvbWF0LWxhYmVsPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICBhcHBUaG91c2FuZFNlcGFyYXRvclxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgc3RlcD1cIjAuMDFcIlxuICAgICAgICAgIFt2YWx1ZV09XCJ2YWx1ZSRcIlxuICAgICAgICAgIFtyZXF1aXJlZF09XCJiUmVxdWlyZWQkXCJcbiAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZmllbGRDb250cm9sXCJcbiAgICAgICAgICBbYXR0ci5kYXRhLXRlc3QtaWRdPVwidGVzdElkXCJcbiAgICAgICAgICAoYmx1cik9XCJmaWVsZE9uQmx1cigkZXZlbnQpXCJcbiAgICAgICAgLz5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImZpZWxkQ29udHJvbC5pbnZhbGlkXCI+e3sgZ2V0RXJyb3JNZXNzYWdlKCkgfX08L21hdC1lcnJvcj5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjbm9FZGl0PlxuICA8Y29tcG9uZW50LW1hcHBlciAqbmdJZj1cImJWaXNpYmxlJCAhPT0gZmFsc2VcIiBuYW1lPVwiVGV4dFwiIFtwcm9wc109XCJ7IHBDb25uJCwgZm9ybWF0QXMkOiAndGV4dCcgfVwiPjwvY29tcG9uZW50LW1hcHBlcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
187
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjaW1hbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvZmllbGQvZGVjaW1hbC9kZWNpbWFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy9maWVsZC9kZWNpbWFsL2RlY2ltYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQXFCLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBYSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRzFFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUU3RixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7Ozs7O0FBeUJ0RCxNQUFNLE9BQU8sZ0JBQWdCO0lBK0IzQixZQUNVLGVBQXVDLEVBQ3ZDLEtBQXdCLEVBQ3hCLEtBQVk7UUFGWixvQkFBZSxH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QWtCLDJkQUNsQixjQUFjLHFaQUNkLG9CQUFvQiwwSEFDSCx3QkFBd0I7OzRGQUdoQyxnQkFBZ0I7a0JBZjVCLFNBQVM7K0JBQ0UsYUFBYSxjQUdYLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsV0FBVzt3QkFDWCxrQkFBa0I7d0JBQ2xCLGNBQWM7d0JBQ2Qsb0JBQW9CO3dCQUNwQixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsd0JBQXdCLENBQUM7cUJBQzNDOytJQUdRLE1BQU07c0JBQWQsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBDaGFuZ2VEZXRlY3RvclJlZiwgZm9yd2FyZFJlZiwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTmd4Q3VycmVuY3lEaXJlY3RpdmUsIE5neEN1cnJlbmN5SW5wdXRNb2RlIH0gZnJvbSAnbmd4LWN1cnJlbmN5JztcbmltcG9ydCB7IEFuZ3VsYXJQQ29ubmVjdERhdGEsIEFuZ3VsYXJQQ29ubmVjdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fYnJpZGdlL2FuZ3VsYXItcGNvbm5lY3QnO1xuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi8uLi8uLi9faGVscGVycy91dGlscyc7XG5pbXBvcnQgeyBDb21wb25lbnRNYXBwZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9fYnJpZGdlL2NvbXBvbmVudC1tYXBwZXIvY29tcG9uZW50LW1hcHBlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgaGFuZGxlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9faGVscGVycy9ldmVudC11dGlsJztcbmltcG9ydCB7IGdldEN1cnJlbmN5Q2hhcmFjdGVycywgZ2V0Q3VycmVuY3lPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vX2hlbHBlcnMvY3VycmVuY3ktdXRpbHMnO1xuaW1wb3J0IHsgUENvbm5GaWVsZFByb3BzIH0gZnJvbSAnLi4vLi4vLi4vX3R5cGVzL1BDb25uUHJvcHMuaW50ZXJmYWNlJztcbmltcG9ydCB7IGZvcm1hdCB9IGZyb20gJy4uLy4uLy4uL19oZWxwZXJzL2Zvcm1hdHRlcnMnO1xuXG5pbnRlcmZhY2UgRGVjaW1hbFByb3BzIGV4dGVuZHMgUENvbm5GaWVsZFByb3BzIHtcbiAgLy8gSWYgYW55LCBlbnRlciBhZGRpdGlvbmFsIHByb3BzIHRoYXQgb25seSBleGlzdCBvbiBEZWNpbWFsIGhlcmVcbiAgY3VycmVuY3lJU09Db2RlPzogc3RyaW5nO1xuICBkZWNpbWFsUHJlY2lzaW9uPzogbnVtYmVyO1xuICBzaG93R3JvdXBTZXBhcmF0b3JzPzogc3RyaW5nO1xuICBmb3JtYXR0ZXI/OiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1kZWNpbWFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RlY2ltYWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kZWNpbWFsLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgTmd4Q3VycmVuY3lEaXJlY3RpdmUsXG4gICAgZm9yd2FyZFJlZigoKSA9PiBDb21wb25lbnRNYXBwZXJDb21wb25lbnQpXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRGVjaW1hbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcENvbm4kOiB0eXBlb2YgUENvbm5lY3Q7XG4gIEBJbnB1dCgpIGZvcm1Hcm91cCQ6IEZvcm1Hcm91cDtcblxuICAvLyBVc2VkIHdpdGggQW5ndWxhclBDb25uZWN0XG4gIGFuZ3VsYXJQQ29ubmVjdERhdGE6IEFuZ3VsYXJQQ29ubmVjdERhdGEgPSB7fTtcbiAgY29uZmlnUHJvcHMkOiBEZWNpbWFsUHJvcHM7XG5cbiAgbGFiZWwkID0gJyc7XG4gIHZhbHVlJDogYW55O1xuICBiUmVxdWlyZWQkID0gZmFsc2U7XG4gIGJSZWFkb25seSQgPSBmYWxzZTtcbiAgYkRpc2FibGVkJCA9IGZhbHNlO1xuICBiVmlzaWJsZSQgPSB0cnVlO1xuICBkaXNwbGF5TW9kZSQ/OiBzdHJpbmcgPSAnJztcbiAgY29udHJvbE5hbWUkOiBzdHJpbmc7XG4gIGJIYXNGb3JtJCA9IHRydWU7XG4gIGNvbXBvbmVudFJlZmVyZW5jZSA9ICcnO1xuICB0ZXN0SWQ6IHN0cmluZztcbiAgaGVscGVyVGV4dDogc3RyaW5nO1xuICBwbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gIGZpZWxkQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxudW1iZXIgfCBudWxsPihudWxsLCBudWxsKTtcbiAgZGVjaW1hbFNlcGFyYXRvcjogc3RyaW5nO1xuICB0aG91c2FuZFNlcGFyYXRvcjogc3RyaW5nO1xuICBjdXJyZW5jeVN5bWJvbCA9ICcnO1xuICBkZWNpbWFsUHJlY2lzaW9uOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIGZvcm1hdHRlcjtcbiAgZm9ybWF0dGVkVmFsdWU6IGFueTtcbiAgaW5wdXRNb2RlOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhbmd1bGFyUENvbm5lY3Q6IEFuZ3VsYXJQQ29ubmVjdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB1dGlsczogVXRpbHNcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIEZpcnN0IHRoaW5nIGluIGluaXRpYWxpemF0aW9uIGlzIHJlZ2lzdGVyaW5nIGFuZCBzdWJzY3JpYmluZyB0byB0aGUgQW5ndWxhclBDb25uZWN0IHNlcnZpY2VcbiAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5yZWdpc3RlckFuZFN1YnNjcmliZUNvbXBvbmVudCh0aGlzLCB0aGlzLm9uU3RhdGVDaGFuZ2UpO1xuICAgIHRoaXMuY29udHJvbE5hbWUkID0gdGhpcy5hbmd1bGFyUENvbm5lY3QuZ2V0Q29tcG9uZW50SUQodGhpcyk7XG5cbiAgICAvLyBUaGVuLCBjb250aW51ZSBvbiB3aXRoIG90aGVyIGluaXRpYWxpemF0aW9uXG5cbiAgICAvLyBjYWxsIHVwZGF0ZVNlbGYgd2hlbiBpbml0aWFsaXppbmdcbiAgICAvLyB0aGlzLnVwZGF0ZVNlbGYoKTtcbiAgICB0aGlzLmNoZWNrQW5kVXBkYXRlKCk7XG5cbiAgICBpZiAodGhpcy5mb3JtR3JvdXAkKSB7XG4gICAgICAvLyBhZGQgY29udHJvbCB0byBmb3JtR3JvdXBcbiAgICAgIHRoaXMuZm9ybUdyb3VwJC5hZGRDb250cm9sKHRoaXMuY29udHJvbE5hbWUkLCB0aGlzLmZpZWxkQ29udHJvbCk7XG4gICAgICB0aGlzLmZpZWxkQ29udHJvbC5zZXRWYWx1ZSh0aGlzLnZhbHVlJCk7XG4gICAgICB0aGlzLmJIYXNGb3JtJCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYlJlYWRvbmx5JCA9IHRydWU7XG4gICAgICB0aGlzLmJIYXNGb3JtJCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZvcm1Hcm91cCQpIHtcbiAgICAgIHRoaXMuZm9ybUdyb3VwJC5yZW1vdmVDb250cm9sKHRoaXMuY29udHJvbE5hbWUkKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnVuc3Vic2NyaWJlRm4pIHtcbiAgICAgIHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS51bnN1YnNjcmliZUZuKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gQ2FsbGJhY2sgcGFzc2VkIHdoZW4gc3Vic2NyaWJpbmcgdG8gc3RvcmUgY2hhbmdlXG4gIG9uU3RhdGVDaGFuZ2UoKSB7XG4gICAgdGhpcy5jaGVja0FuZFVwZGF0ZSgpO1xuICB9XG5cbiAgY2hlY2tBbmRVcGRhdGUoKSB7XG4gICAgLy8gU2hvdWxkIGFsd2F5cyBjaGVjayB0aGUgYnJpZGdlIHRvIHNlZSBpZiB0aGUgY29tcG9uZW50IHNob3VsZFxuICAgIC8vIHVwZGF0ZSBpdHNlbGYgKHJlLXJlbmRlcilcbiAgICBjb25zdCBiVXBkYXRlU2VsZiA9IHRoaXMuYW5ndWxhclBDb25uZWN0LnNob3VsZENvbXBvbmVudFVwZGF0ZSh0aGlzKTtcblxuICAgIC8vIE9OTFkgY2FsbCB1cGRhdGVTZWxmIHdoZW4gdGhlIGNvbXBvbmVudCBzaG91bGQgdXBkYXRlXG4gICAgaWYgKGJVcGRhdGVTZWxmKSB7XG4gICAgICB0aGlzLnVwZGF0ZVNlbGYoKTtcbiAgICB9XG4gIH1cblxuICAvLyB1cGRhdGVTZWxmXG4gIHVwZGF0ZVNlbGYoKTogdm9pZCB7XG4gICAgLy8gc3RhcnRpbmcgdmVyeSBzaW1wbGUuLi5cblxuICAgIC8vIG1vdmVkIHRoaXMgZnJvbSBuZ09uSW5pdCgpIGFuZCBjYWxsIHRoaXMgZnJvbSB0aGVyZSBpbnN0ZWFkLi4uXG4gICAgdGhpcy5jb25maWdQcm9wcyQgPSB0aGlzLnBDb25uJC5yZXNvbHZlQ29uZmlnUHJvcHModGhpcy5wQ29ubiQuZ2V0Q29uZmlnUHJvcHMoKSkgYXMgRGVjaW1hbFByb3BzO1xuICAgIHRoaXMudGVzdElkID0gdGhpcy5jb25maWdQcm9wcyQudGVzdElkO1xuICAgIHRoaXMubGFiZWwkID0gdGhpcy5jb25maWdQcm9wcyQubGFiZWw7XG4gICAgdGhpcy5kaXNwbGF5TW9kZSQgPSB0aGlzLmNvbmZpZ1Byb3BzJC5kaXNwbGF5TW9kZTtcbiAgICB0aGlzLmlucHV0TW9kZSA9IE5neEN1cnJlbmN5SW5wdXRNb2RlLk5hdHVyYWw7XG4gICAgbGV0IG5WYWx1ZTogYW55ID0gdGhpcy5jb25maWdQcm9wcyQudmFsdWU7XG4gICAgaWYgKG5WYWx1ZSkge1xuICAgICAgaWYgKHR5cGVvZiBuVmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIG5WYWx1ZSA9IHBhcnNlRmxvYXQoblZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHRoaXMudmFsdWUkID0gblZhbHVlO1xuICAgIH1cbiAgICB0aGlzLmhlbHBlclRleHQgPSB0aGlzLmNvbmZpZ1Byb3BzJC5oZWxwZXJUZXh0O1xuICAgIHRoaXMucGxhY2Vob2xkZXIgPSB0aGlzLmNvbmZpZ1Byb3BzJC5wbGFjZWhvbGRlciB8fCAnJztcbiAgICBjb25zdCBzaG93R3JvdXBTZXBhcmF0b3JzID0gdGhpcy5jb25maWdQcm9wcyQuc2hvd0dyb3VwU2VwYXJhdG9ycztcbiAgICBjb25zdCBjdXJyZW5jeUlTT0NvZGUgPSB0aGlzLmNvbmZpZ1Byb3BzJD8uY3VycmVuY3lJU09Db2RlID8/ICcnO1xuXG4gICAgY29uc3QgdGhlU3ltYm9scyA9IGdldEN1cnJlbmN5Q2hhcmFjdGVycyhjdXJyZW5jeUlTT0NvZGUpO1xuICAgIHRoaXMuZGVjaW1hbFNlcGFyYXRvciA9IHRoZVN5bWJvbHMudGhlRGVjaW1hbEluZGljYXRvcjtcbiAgICB0aGlzLnRob3VzYW5kU2VwYXJhdG9yID0gc2hvd0dyb3VwU2VwYXJhdG9ycyA/IHRoZVN5bWJvbHMudGhlRGlnaXRHcm91cFNlcGFyYXRvciA6ICcnO1xuXG4gICAgY29uc3QgdGhlQ3VycmVuY3lPcHRpb25zID0gZ2V0Q3VycmVuY3lPcHRpb25zKGN1cnJlbmN5SVNPQ29kZSk7XG4gICAgdGhpcy5mb3JtYXR0ZXIgPSB0aGlzLmNvbmZpZ1Byb3BzJC5mb3JtYXR0ZXI7XG5cbiAgICBpZiAodGhpcy5mb3JtYXR0ZXIpIHtcbiAgICAgIHRoaXMuZm9ybWF0dGVkVmFsdWUgPSBmb3JtYXQodGhpcy52YWx1ZSQsIHRoaXMuZm9ybWF0dGVyLnRvTG93ZXJDYXNlKCksIHRoZUN1cnJlbmN5T3B0aW9ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9ybWF0dGVkVmFsdWUgPSBmb3JtYXQodGhpcy52YWx1ZSQsICdkZWNpbWFsJywgdGhlQ3VycmVuY3lPcHRpb25zKTtcbiAgICB9XG5cbiAgICAvLyB0aW1lb3V0IGFuZCBkZXRlY3RDaGFuZ2VzIHRvIGF2b2lkIEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3JcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmNvbmZpZ1Byb3BzJC5yZXF1aXJlZCAhPSBudWxsKSB7XG4gICAgICAgIHRoaXMuYlJlcXVpcmVkJCA9IHRoaXMudXRpbHMuZ2V0Qm9vbGVhblZhbHVlKHRoaXMuY29uZmlnUHJvcHMkLnJlcXVpcmVkKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuY29uZmlnUHJvcHMkLnZpc2liaWxpdHkgIT0gbnVsbCkge1xuICAgICAgdGhpcy5iVmlzaWJsZSQgPSB0aGlzLnV0aWxzLmdldEJvb2xlYW5WYWx1ZSh0aGlzLmNvbmZpZ1Byb3BzJC52aXNpYmlsaXR5KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWdQcm9wcyQucmVhZE9ubHkgIT0gbnVsbCkge1xuICAgICAgdGhpcy5iUmVhZG9ubHkkID0gdGhpcy51dGlscy5nZXRCb29sZWFuVmFsdWUodGhpcy5jb25maWdQcm9wcyQucmVhZE9ubHkpO1xuICAgIH1cblxuICAgIC8vIGRpc2FibGVkXG4gICAgaWYgKHRoaXMuY29uZmlnUHJvcHMkLmRpc2FibGVkICE9IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5iRGlzYWJsZWQkID0gdGhpcy51dGlscy5nZXRCb29sZWFuVmFsdWUodGhpcy5jb25maWdQcm9wcyQuZGlzYWJsZWQpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmJEaXNhYmxlZCQpIHtcbiAgICAgIHRoaXMuZmllbGRDb250cm9sLmRpc2FibGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWVsZENvbnRyb2wuZW5hYmxlKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYlJlYWRvbmx5JCAmJiB0aGlzLmZvcm1hdHRlciA9PT0gJ0N1cnJlbmN5Jykge1xuICAgICAgdGhpcy5jdXJyZW5jeVN5bWJvbCA9IHRoZVN5bWJvbHMudGhlQ3VycmVuY3lTeW1ib2w7XG4gICAgfVxuICAgIHRoaXMuZGVjaW1hbFByZWNpc2lvbiA9IHRoaXMuY29uZmlnUHJvcHMkPy5kZWNpbWFsUHJlY2lzaW9uID8/IDI7XG5cbiAgICB0aGlzLmNvbXBvbmVudFJlZmVyZW5jZSA9IHRoaXMucENvbm4kLmdldFN0YXRlUHJvcHMoKS52YWx1ZTtcbiAgfVxuXG4gIGZpZWxkT25CbHVyKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBhY3Rpb25zQXBpID0gdGhpcy5wQ29ubiQ/LmdldEFjdGlvbnNBcGkoKTtcbiAgICBjb25zdCBwcm9wTmFtZSA9IHRoaXMucENvbm4kPy5nZXRTdGF0ZVByb3BzKCkudmFsdWU7XG4gICAgbGV0IHZhbHVlID0gZXZlbnQ/LnRhcmdldD8udmFsdWU7XG4gICAgLy8gcmVwbGFjaW5nIHRob3VzYW5kIHNlcGFyYXRvciB3aXRoIGVtcHR5IHN0cmluZyBhcyBub3QgcmVxdWlyZWQgaW4gYXBpIGNhbGxcbiAgICBpZiAodGhpcy5jb25maWdQcm9wcyQuc2hvd0dyb3VwU2VwYXJhdG9ycykge1xuICAgICAgY29uc3QgdGhvdXNhbmRTZXAgPSB0aGlzLnRob3VzYW5kU2VwYXJhdG9yID09PSAnLicgPyAnXFxcXC4nIDogdGhpcy50aG91c2FuZFNlcGFyYXRvcjtcbiAgICAgIGNvbnN0IHJlZ0V4cCA9IG5ldyBSZWdFeHAoU3RyaW5nLnJhd2Ake3Rob3VzYW5kU2VwfWAsICdnJyk7XG4gICAgICB2YWx1ZSA9IHZhbHVlPy5yZXBsYWNlKHJlZ0V4cCwgJycpO1xuICAgIH1cbiAgICAvLyByZXBsYWNpbmcgZGVjaW1hbCBzZXBhcmF0b3Igd2l0aCAnLidcbiAgICBpZiAodGhpcy5kZWNpbWFsU2VwYXJhdG9yICE9PSAnLicpIHtcbiAgICAgIGNvbnN0IHJlZ0V4cCA9IG5ldyBSZWdFeHAoU3RyaW5nLnJhd2Ake3RoaXMuZGVjaW1hbFNlcGFyYXRvcn1gLCAnZycpO1xuICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKHJlZ0V4cCwgJy4nKTtcbiAgICB9XG4gICAgaGFuZGxlRXZlbnQoYWN0aW9uc0FwaSwgJ2NoYW5nZU5ibHVyJywgcHJvcE5hbWUsIHZhbHVlKTtcbiAgfVxuXG4gIGdldEVycm9yTWVzc2FnZSgpIHtcbiAgICBsZXQgZXJyTWVzc2FnZSA9ICcnO1xuXG4gICAgLy8gbG9vayBmb3IgdmFsaWRhdGlvbiBtZXNzYWdlcyBmb3IganNvbiwgcHJlLWRlZmluZWQgb3IganVzdCBhbiBlcnJvciBwdXNoZWQgZnJvbSB3b3JraXRlbSAoNDAwKVxuICAgIGlmICh0aGlzLmZpZWxkQ29udHJvbC5oYXNFcnJvcignbWVzc2FnZScpKSB7XG4gICAgICBlcnJNZXNzYWdlID0gdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnZhbGlkYXRlTWVzc2FnZSA/PyAnJztcbiAgICAgIHJldHVybiBlcnJNZXNzYWdlO1xuICAgIH1cbiAgICBpZiAodGhpcy5maWVsZENvbnRyb2wuaGFzRXJyb3IoJ3JlcXVpcmVkJykpIHtcbiAgICAgIGVyck1lc3NhZ2UgPSAnWW91IG11c3QgZW50ZXIgYSB2YWx1ZSc7XG4gICAgfSBlbHNlIGlmICh0aGlzLmZpZWxkQ29udHJvbC5lcnJvcnMpIHtcbiAgICAgIGVyck1lc3NhZ2UgPSB0aGlzLmZpZWxkQ29udHJvbC5lcnJvcnMudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXJyTWVzc2FnZTtcbiAgfVxufVxuIiwiPGRpdiAqbmdJZj1cImRpc3BsYXlNb2RlJDsgZWxzZSBub0Rpc3BsYXlNb2RlXCI+XG4gIDxjb21wb25lbnQtbWFwcGVyICpuZ0lmPVwiYlZpc2libGUkICE9PSBmYWxzZVwiIG5hbWU9XCJGaWVsZFZhbHVlTGlzdFwiIFtwcm9wc109XCJ7IGxhYmVsJCwgdmFsdWUkOiBmb3JtYXR0ZWRWYWx1ZSwgZGlzcGxheU1vZGUkIH1cIj48L2NvbXBvbmVudC1tYXBwZXI+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjbm9EaXNwbGF5TW9kZT5cbiAgPGRpdiAqbmdJZj1cImJIYXNGb3JtJDsgZWxzZSBub0VkaXRcIj5cbiAgICA8ZGl2IFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwJFwiICpuZ0lmPVwiYlZpc2libGUkXCI+XG4gICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJwc2RrLWZ1bGwtd2lkdGhcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCIgW2hpbnRMYWJlbF09XCJoZWxwZXJUZXh0XCI+XG4gICAgICAgIDxtYXQtbGFiZWw+e3sgbGFiZWwkIH19PC9tYXQtbGFiZWw+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgIGN1cnJlbmN5TWFza1xuICAgICAgICAgIFtvcHRpb25zXT1cIntcbiAgICAgICAgICAgIHByZWZpeDogY3VycmVuY3lTeW1ib2wsXG4gICAgICAgICAgICB0aG91c2FuZHM6IHRob3VzYW5kU2VwYXJhdG9yLFxuICAgICAgICAgICAgZGVjaW1hbDogZGVjaW1hbFNlcGFyYXRvcixcbiAgICAgICAgICAgIGFsaWduOiAnbGVmdCcsXG4gICAgICAgICAgICBudWxsYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHByZWNpc2lvbjogZGVjaW1hbFByZWNpc2lvbixcbiAgICAgICAgICAgIGlucHV0TW9kZTogaW5wdXRNb2RlXG4gICAgICAgICAgfVwiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgICBzdGVwPVwiMC4wMVwiXG4gICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sTmFtZSRcIlxuICAgICAgICAgIFtyZXF1aXJlZF09XCJiUmVxdWlyZWQkXCJcbiAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZmllbGRDb250cm9sXCJcbiAgICAgICAgICBbYXR0ci5kYXRhLXRlc3QtaWRdPVwidGVzdElkXCJcbiAgICAgICAgICAoYmx1cik9XCJmaWVsZE9uQmx1cigkZXZlbnQpXCJcbiAgICAgICAgICBbcmVhZG9ubHldPVwiYlJlYWRvbmx5JFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmaWVsZENvbnRyb2wuaW52YWxpZFwiPnt7IGdldEVycm9yTWVzc2FnZSgpIH19PC9tYXQtZXJyb3I+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI25vRWRpdD5cbiAgPGNvbXBvbmVudC1tYXBwZXIgKm5nSWY9XCJiVmlzaWJsZSQgIT09IGZhbHNlXCIgbmFtZT1cIlRleHRcIiBbcHJvcHNdPVwieyBwQ29ubiQsIGZvcm1hdEFzJDogJ3RleHQnIH1cIj48L2NvbXBvbmVudC1tYXBwZXI+XG48L25nLXRlbXBsYXRlPlxuIl19
|