@pega/angular-sdk-components 24.2.12 → 25.1.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/fesm2022/pega-angular-sdk-components.mjs +4828 -3717
- package/fesm2022/pega-angular-sdk-components.mjs.map +1 -1
- package/lib/_bridge/angular-pconnect.d.ts +1 -1
- package/lib/_bridge/component-mapper/component-mapper.component.d.ts +1 -1
- package/lib/_bridge/helpers/sdk-pega-component-map.d.ts +18 -0
- package/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.d.ts +1 -1
- package/lib/_components/designSystemExtension/rich-text-editor/rich-text-editor.component.d.ts +1 -0
- package/lib/_components/field/auto-complete/auto-complete.component.d.ts +9 -37
- package/lib/_components/field/cancel-alert/cancel-alert.component.d.ts +7 -5
- package/lib/_components/field/check-box/check-box.component.d.ts +10 -32
- package/lib/_components/field/currency/currency.component.d.ts +19 -34
- package/lib/_components/field/date/date.component.d.ts +7 -57
- package/lib/_components/field/date-time/date-time.component.d.ts +12 -40
- package/lib/_components/field/decimal/decimal.component.d.ts +16 -31
- package/lib/_components/field/dropdown/dropdown.component.d.ts +13 -37
- package/lib/_components/field/email/email.component.d.ts +7 -34
- package/lib/_components/field/field.base.d.ts +57 -0
- package/lib/_components/field/group/group.component.d.ts +5 -2
- package/lib/_components/field/integer/integer.component.d.ts +7 -33
- package/lib/_components/field/list-view-action-buttons/list-view-action-buttons.component.d.ts +1 -1
- package/lib/_components/field/location/location.component.d.ts +47 -0
- package/lib/_components/field/multiselect/multiselect.component.d.ts +7 -38
- package/lib/_components/field/object-reference/object-reference.component.d.ts +45 -0
- package/lib/_components/field/percentage/percentage.component.d.ts +18 -35
- package/lib/_components/field/phone/phone.component.d.ts +8 -31
- package/lib/_components/field/radio-buttons/radio-buttons.component.d.ts +13 -33
- package/lib/_components/field/rich-text/rich-text.component.d.ts +6 -29
- package/lib/_components/field/scalar-list/scalar-list.component.d.ts +6 -21
- package/lib/_components/field/selectable-card/selectable-card.component.d.ts +62 -0
- package/lib/_components/field/semantic-link/semantic-link.component.d.ts +21 -0
- package/lib/_components/field/text-area/text-area.component.d.ts +6 -33
- package/lib/_components/field/text-input/text-input.component.d.ts +6 -34
- package/lib/_components/field/time/time.component.d.ts +6 -34
- package/lib/_components/field/url/url.component.d.ts +6 -34
- package/lib/_components/field/user-reference/user-reference.component.d.ts +1 -1
- package/lib/_components/infra/Containers/flow-container/flow-container.component.d.ts +1 -0
- package/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.d.ts +4 -6
- package/lib/_components/infra/action-buttons/action-buttons.component.d.ts +1 -1
- package/lib/_components/infra/assignment/assignment.component.d.ts +3 -3
- package/lib/_components/infra/assignment-card/assignment-card.component.d.ts +3 -2
- package/lib/_components/infra/defer-load/defer-load.component.d.ts +6 -6
- package/lib/_components/infra/error-boundary/error-boundary.component.d.ts +1 -1
- package/lib/_components/infra/navbar/navbar.component.d.ts +0 -1
- package/lib/_components/infra/stages/stages.component.d.ts +2 -1
- package/lib/_components/template/advanced-search/advanced-search.component.d.ts +21 -0
- package/lib/_components/template/advanced-search/search-group/persist-utils.d.ts +23 -0
- package/lib/_components/template/advanced-search/search-groups/search-groups.component.d.ts +47 -0
- package/lib/_components/template/advanced-search/search-groups/utils.d.ts +15 -0
- package/lib/_components/template/app-shell/app-shell.component.d.ts +6 -2
- package/lib/_components/template/base/details-template-base.d.ts +1 -1
- package/lib/_components/template/base/form-template-base.d.ts +1 -1
- package/lib/_components/template/case-summary/case-summary.component.d.ts +3 -2
- package/lib/_components/template/case-view/case-view.component.d.ts +0 -1
- package/lib/_components/template/data-reference/data-reference.component.d.ts +27 -2
- package/lib/_components/template/data-reference/search-form/search-form.component.d.ts +39 -0
- package/lib/_components/template/data-reference/search-form/tabsData.d.ts +2 -0
- package/lib/_components/template/data-reference/utils.d.ts +14 -0
- package/lib/_components/template/default-form/default-form.component.d.ts +3 -2
- package/lib/_components/template/default-page/default-page.component.d.ts +29 -0
- package/lib/_components/template/field-group-template/field-group-template.component.d.ts +3 -5
- package/lib/_components/template/list-view/list-view.component.d.ts +21 -5
- package/lib/_components/template/object-page/object-page.component.d.ts +8 -0
- package/lib/_components/template/self-service-case-view/self-service-case-view.component.d.ts +58 -0
- package/lib/_components/template/simple-table-manual/helpers.d.ts +15 -1
- package/lib/_components/template/simple-table-manual/simple-table-manual.component.d.ts +2 -2
- package/lib/_components/template/single-reference-readonly/single-reference-readonly.component.d.ts +18 -2
- package/lib/_components/template/utils.d.ts +4 -0
- package/lib/_components/template/wss-nav-bar/wss-nav-bar.component.d.ts +3 -5
- package/lib/_components/widget/attachment/Attachment.types.d.ts +87 -0
- package/lib/_components/widget/attachment/AttachmentUtils.d.ts +17 -0
- package/lib/_components/widget/attachment/attachment.component.d.ts +18 -33
- package/lib/_components/widget/feed-container/feed-container.component.d.ts +2 -2
- package/lib/_components/widget/file-utility/file-utility.component.d.ts +3 -1
- package/lib/_components/widget/todo/todo.component.d.ts +4 -2
- package/lib/_helpers/field-group-utils.d.ts +1 -3
- package/lib/_helpers/filter-utils.d.ts +1 -3
- package/lib/_helpers/object-utils.d.ts +8 -0
- package/lib/_helpers/objectReference-utils.d.ts +6 -0
- package/lib/_helpers/semanticLink-utils.d.ts +9 -0
- package/lib/_helpers/tab-utils.d.ts +4 -0
- package/lib/_helpers/utils.d.ts +5 -1
- package/lib/_services/case.service.d.ts +1 -1
- package/lib/_services/data-reference-advanced-search.service.d.ts +9 -0
- package/lib/_services/datapage.service.d.ts +1 -1
- package/lib/_services/google-maps-loader.service.d.ts +7 -0
- package/package.json +20 -6
- package/public-api.d.ts +14 -1
- package/esm2022/lib/_bridge/angular-pconnect.mjs +0 -428
- package/esm2022/lib/_bridge/component-mapper/component-mapper.component.mjs +0 -107
- package/esm2022/lib/_bridge/helpers/sdk-pega-component-map.mjs +0 -239
- package/esm2022/lib/_bridge/helpers/sdk_component_map.mjs +0 -142
- package/esm2022/lib/_components/designSystemExtension/alert/alert.component.mjs +0 -50
- package/esm2022/lib/_components/designSystemExtension/alert-banner/alert-banner.component.mjs +0 -29
- package/esm2022/lib/_components/designSystemExtension/banner/banner.component.mjs +0 -31
- package/esm2022/lib/_components/designSystemExtension/case-create-stage/case-create-stage.component.mjs +0 -51
- package/esm2022/lib/_components/designSystemExtension/field-group/field-group.component.mjs +0 -31
- package/esm2022/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.mjs +0 -82
- package/esm2022/lib/_components/designSystemExtension/material-details/material-details.component.mjs +0 -37
- package/esm2022/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.mjs +0 -38
- package/esm2022/lib/_components/designSystemExtension/material-summary-item/material-summary-item.component.mjs +0 -36
- package/esm2022/lib/_components/designSystemExtension/material-summary-list/material-summary-list.component.mjs +0 -25
- package/esm2022/lib/_components/designSystemExtension/material-utility/material-utility.component.mjs +0 -28
- package/esm2022/lib/_components/designSystemExtension/material-vertical-tabs/material-vertical-tabs.component.mjs +0 -42
- package/esm2022/lib/_components/designSystemExtension/operator/operator.component.mjs +0 -145
- package/esm2022/lib/_components/designSystemExtension/pulse/pulse.component.mjs +0 -33
- package/esm2022/lib/_components/designSystemExtension/rich-text-editor/rich-text-editor.component.mjs +0 -93
- package/esm2022/lib/_components/designSystemExtension/wss-quick-create/wss-quick-create.component.mjs +0 -18
- package/esm2022/lib/_components/field/auto-complete/auto-complete.component.mjs +0 -296
- package/esm2022/lib/_components/field/cancel-alert/cancel-alert.component.mjs +0 -96
- package/esm2022/lib/_components/field/check-box/check-box.component.mjs +0 -225
- package/esm2022/lib/_components/field/currency/currency.component.mjs +0 -195
- package/esm2022/lib/_components/field/date/date.component.mjs +0 -205
- package/esm2022/lib/_components/field/date-time/date-time.component.mjs +0 -196
- package/esm2022/lib/_components/field/decimal/decimal.component.mjs +0 -205
- package/esm2022/lib/_components/field/dropdown/dropdown.component.mjs +0 -300
- package/esm2022/lib/_components/field/email/email.component.mjs +0 -165
- package/esm2022/lib/_components/field/group/group.component.mjs +0 -64
- package/esm2022/lib/_components/field/integer/integer.component.mjs +0 -168
- package/esm2022/lib/_components/field/list-view-action-buttons/list-view-action-buttons.component.mjs +0 -45
- package/esm2022/lib/_components/field/multiselect/multiselect.component.mjs +0 -314
- package/esm2022/lib/_components/field/multiselect/utils.mjs +0 -187
- package/esm2022/lib/_components/field/percentage/percentage.component.mjs +0 -190
- package/esm2022/lib/_components/field/phone/phone.component.mjs +0 -155
- package/esm2022/lib/_components/field/radio-buttons/radio-buttons.component.mjs +0 -182
- package/esm2022/lib/_components/field/rich-text/rich-text.component.mjs +0 -109
- package/esm2022/lib/_components/field/scalar-list/scalar-list.component.mjs +0 -95
- package/esm2022/lib/_components/field/semantic-link/semantic-link.component.mjs +0 -57
- package/esm2022/lib/_components/field/text/text.component.mjs +0 -142
- package/esm2022/lib/_components/field/text-area/text-area.component.mjs +0 -165
- package/esm2022/lib/_components/field/text-content/text-content.component.mjs +0 -69
- package/esm2022/lib/_components/field/text-input/text-input.component.mjs +0 -165
- package/esm2022/lib/_components/field/time/time.component.mjs +0 -174
- package/esm2022/lib/_components/field/url/url.component.mjs +0 -165
- package/esm2022/lib/_components/field/user-reference/user-reference.component.mjs +0 -266
- package/esm2022/lib/_components/infra/Containers/base-components/flow-container-base.component.mjs +0 -18
- package/esm2022/lib/_components/infra/Containers/base-components/helper.mjs +0 -71
- package/esm2022/lib/_components/infra/Containers/flow-container/flow-container.component.mjs +0 -461
- package/esm2022/lib/_components/infra/Containers/flow-container/helpers.mjs +0 -68
- package/esm2022/lib/_components/infra/Containers/hybrid-view-container/hybrid-view-container.component.mjs +0 -24
- package/esm2022/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.mjs +0 -335
- package/esm2022/lib/_components/infra/Containers/preview-view-container/preview-view-container.component.mjs +0 -32
- package/esm2022/lib/_components/infra/Containers/view-container/helper.mjs +0 -22
- package/esm2022/lib/_components/infra/Containers/view-container/view-container.component.mjs +0 -211
- package/esm2022/lib/_components/infra/action-buttons/action-buttons.component.mjs +0 -31
- package/esm2022/lib/_components/infra/assignment/assignment.component.mjs +0 -407
- package/esm2022/lib/_components/infra/assignment-card/assignment-card.component.mjs +0 -47
- package/esm2022/lib/_components/infra/dashboard-filter/dashboard-filter.component.mjs +0 -87
- package/esm2022/lib/_components/infra/defer-load/defer-load.component.mjs +0 -143
- package/esm2022/lib/_components/infra/error-boundary/error-boundary.component.mjs +0 -18
- package/esm2022/lib/_components/infra/multi-step/multi-step.component.mjs +0 -80
- package/esm2022/lib/_components/infra/navbar/navbar.component.mjs +0 -136
- package/esm2022/lib/_components/infra/reference/reference.component.mjs +0 -126
- package/esm2022/lib/_components/infra/region/region.component.mjs +0 -33
- package/esm2022/lib/_components/infra/root-container/root-container.component.mjs +0 -223
- package/esm2022/lib/_components/infra/stages/stages.component.mjs +0 -62
- package/esm2022/lib/_components/infra/view/view.component.mjs +0 -188
- package/esm2022/lib/_components/template/app-shell/app-shell.component.mjs +0 -156
- package/esm2022/lib/_components/template/banner-page/banner-page.component.mjs +0 -43
- package/esm2022/lib/_components/template/base/details-template-base.mjs +0 -56
- package/esm2022/lib/_components/template/base/form-template-base.mjs +0 -16
- package/esm2022/lib/_components/template/case-summary/case-summary.component.mjs +0 -101
- package/esm2022/lib/_components/template/case-view/case-view.component.mjs +0 -185
- package/esm2022/lib/_components/template/confirmation/confirmation.component.mjs +0 -68
- package/esm2022/lib/_components/template/data-reference/data-reference.component.mjs +0 -242
- package/esm2022/lib/_components/template/default-form/default-form.component.mjs +0 -73
- package/esm2022/lib/_components/template/details/details.component.mjs +0 -76
- package/esm2022/lib/_components/template/details-narrow-wide/details-narrow-wide.component.mjs +0 -45
- package/esm2022/lib/_components/template/details-one-column/details-one-column.component.mjs +0 -42
- package/esm2022/lib/_components/template/details-sub-tabs/details-sub-tabs.component.mjs +0 -39
- package/esm2022/lib/_components/template/details-three-column/details-three-column.component.mjs +0 -51
- package/esm2022/lib/_components/template/details-two-column/details-two-column.component.mjs +0 -48
- package/esm2022/lib/_components/template/details-wide-narrow/details-wide-narrow.component.mjs +0 -48
- package/esm2022/lib/_components/template/dynamic-tabs/dynamic-tabs.component.mjs +0 -65
- package/esm2022/lib/_components/template/field-group-list/field-group-list.component.mjs +0 -23
- package/esm2022/lib/_components/template/field-group-template/field-group-template.component.mjs +0 -131
- package/esm2022/lib/_components/template/field-value-list/field-value-list.component.mjs +0 -24
- package/esm2022/lib/_components/template/inline-dashboard/inline-dashboard.component.mjs +0 -22
- package/esm2022/lib/_components/template/inline-dashboard-page/inline-dashboard-page.component.mjs +0 -40
- package/esm2022/lib/_components/template/list-page/list-page.component.mjs +0 -14
- package/esm2022/lib/_components/template/list-view/DefaultViewMeta.mjs +0 -208
- package/esm2022/lib/_components/template/list-view/list-view.component.mjs +0 -1217
- package/esm2022/lib/_components/template/list-view/listViewHelpers.mjs +0 -60
- package/esm2022/lib/_components/template/list-view/utils.mjs +0 -662
- package/esm2022/lib/_components/template/multi-reference-readonly/multi-reference-readonly.component.mjs +0 -44
- package/esm2022/lib/_components/template/narrow-wide-form/narrow-wide-form.component.mjs +0 -30
- package/esm2022/lib/_components/template/one-column/one-column.component.mjs +0 -31
- package/esm2022/lib/_components/template/one-column-page/one-column-page.component.mjs +0 -16
- package/esm2022/lib/_components/template/one-column-tab/one-column-tab.component.mjs +0 -30
- package/esm2022/lib/_components/template/page/page.component.mjs +0 -52
- package/esm2022/lib/_components/template/promoted-filters/promoted-filters.component.mjs +0 -149
- package/esm2022/lib/_components/template/repeating-structures/repeating-structures.component.mjs +0 -138
- package/esm2022/lib/_components/template/simple-table/simple-table.component.mjs +0 -104
- package/esm2022/lib/_components/template/simple-table-manual/helpers.mjs +0 -271
- package/esm2022/lib/_components/template/simple-table-manual/simple-table-manual.component.mjs +0 -813
- package/esm2022/lib/_components/template/simple-table-select/simple-table-select.component.mjs +0 -129
- package/esm2022/lib/_components/template/single-reference-readonly/single-reference-readonly.component.mjs +0 -16
- package/esm2022/lib/_components/template/sub-tabs/sub-tabs.component.mjs +0 -67
- package/esm2022/lib/_components/template/three-column/three-column.component.mjs +0 -31
- package/esm2022/lib/_components/template/three-column-page/three-column-page.component.mjs +0 -16
- package/esm2022/lib/_components/template/two-column/two-column.component.mjs +0 -31
- package/esm2022/lib/_components/template/two-column-page/two-column-page.component.mjs +0 -40
- package/esm2022/lib/_components/template/two-column-tab/two-column-tab.component.mjs +0 -30
- package/esm2022/lib/_components/template/utils.mjs +0 -38
- package/esm2022/lib/_components/template/wide-narrow-form/wide-narrow-form.component.mjs +0 -31
- package/esm2022/lib/_components/template/wide-narrow-page/wide-narrow-page.component.mjs +0 -53
- package/esm2022/lib/_components/template/wss-nav-bar/wss-nav-bar.component.mjs +0 -137
- package/esm2022/lib/_components/widget/app-announcement/app-announcement.component.mjs +0 -24
- package/esm2022/lib/_components/widget/attachment/attachment.component.mjs +0 -393
- package/esm2022/lib/_components/widget/case-history/case-history.component.mjs +0 -80
- package/esm2022/lib/_components/widget/feed-container/feed-container.component.mjs +0 -521
- package/esm2022/lib/_components/widget/file-utility/file-utility.component.mjs +0 -638
- package/esm2022/lib/_components/widget/list-utility/list-utility.component.mjs +0 -57
- package/esm2022/lib/_components/widget/quick-create/quick-create.component.mjs +0 -75
- package/esm2022/lib/_components/widget/todo/todo.component.mjs +0 -230
- package/esm2022/lib/_components/widget/utility/utility.component.mjs +0 -34
- package/esm2022/lib/_directives/thousand-seperator.directive.mjs +0 -28
- package/esm2022/lib/_helpers/case-utils.mjs +0 -71
- package/esm2022/lib/_helpers/common.mjs +0 -20
- package/esm2022/lib/_helpers/createstage-utils.mjs +0 -15
- package/esm2022/lib/_helpers/currency-utils.mjs +0 -57
- package/esm2022/lib/_helpers/date-format-utils.mjs +0 -68
- package/esm2022/lib/_helpers/event-util.mjs +0 -18
- package/esm2022/lib/_helpers/field-group-utils.mjs +0 -47
- package/esm2022/lib/_helpers/filter-utils.mjs +0 -105
- package/esm2022/lib/_helpers/formatters/boolean.mjs +0 -20
- package/esm2022/lib/_helpers/formatters/common.mjs +0 -17
- package/esm2022/lib/_helpers/formatters/currency-map.mjs +0 -903
- package/esm2022/lib/_helpers/formatters/currency.mjs +0 -68
- package/esm2022/lib/_helpers/formatters/date.mjs +0 -69
- package/esm2022/lib/_helpers/formatters/format-utils.mjs +0 -76
- package/esm2022/lib/_helpers/formatters/index.mjs +0 -124
- package/esm2022/lib/_helpers/instructions-utils.mjs +0 -36
- package/esm2022/lib/_helpers/tab-utils.mjs +0 -59
- package/esm2022/lib/_helpers/template-utils.mjs +0 -56
- package/esm2022/lib/_helpers/utils.mjs +0 -412
- package/esm2022/lib/_helpers/versionHelpers.mjs +0 -12
- package/esm2022/lib/_messages/error-messages.service.mjs +0 -31
- package/esm2022/lib/_messages/progress-spinner.service.mjs +0 -30
- package/esm2022/lib/_messages/update-worklist.service.mjs +0 -30
- package/esm2022/lib/_services/banner.service.mjs +0 -35
- package/esm2022/lib/_services/case.service.mjs +0 -32
- package/esm2022/lib/_services/datapage.service.mjs +0 -52
- package/esm2022/lib/_services/endpoints.mjs +0 -60
- package/esm2022/lib/_services/server-config.service.mjs +0 -52
- package/esm2022/lib/_types/PConnProps.interface.mjs +0 -2
- package/esm2022/pega-angular-sdk-components.mjs +0 -5
- package/esm2022/public-api.mjs +0 -145
- package/esm2022/sdk-local-component-map.mjs +0 -9
|
@@ -1,225 +0,0 @@
|
|
|
1
|
-
import { Component, Input, forwardRef } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { FormControl, ReactiveFormsModule } from '@angular/forms';
|
|
4
|
-
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
5
|
-
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
6
|
-
import { MatOptionModule } from '@angular/material/core';
|
|
7
|
-
import { interval } from 'rxjs';
|
|
8
|
-
import { ComponentMapperComponent } from '../../../_bridge/component-mapper/component-mapper.component';
|
|
9
|
-
import { deleteInstruction, insertInstruction, updateNewInstructions } from '../../../_helpers/instructions-utils';
|
|
10
|
-
import { handleEvent } from '../../../_helpers/event-util';
|
|
11
|
-
import * as i0 from "@angular/core";
|
|
12
|
-
import * as i1 from "../../../_bridge/angular-pconnect";
|
|
13
|
-
import * as i2 from "../../../_helpers/utils";
|
|
14
|
-
import * as i3 from "@angular/common";
|
|
15
|
-
import * as i4 from "@angular/forms";
|
|
16
|
-
import * as i5 from "@angular/material/checkbox";
|
|
17
|
-
import * as i6 from "@angular/material/form-field";
|
|
18
|
-
import * as i7 from "@angular/material/core";
|
|
19
|
-
export class CheckBoxComponent {
|
|
20
|
-
constructor(angularPConnect, cdRef, utils) {
|
|
21
|
-
this.angularPConnect = angularPConnect;
|
|
22
|
-
this.cdRef = cdRef;
|
|
23
|
-
this.utils = utils;
|
|
24
|
-
// Used with AngularPConnect
|
|
25
|
-
this.angularPConnectData = {};
|
|
26
|
-
this.label$ = '';
|
|
27
|
-
this.value$ = '';
|
|
28
|
-
this.caption$ = '';
|
|
29
|
-
this.testId = '';
|
|
30
|
-
this.showLabel$ = false;
|
|
31
|
-
this.isChecked$ = false;
|
|
32
|
-
this.bRequired$ = false;
|
|
33
|
-
this.bReadonly$ = false;
|
|
34
|
-
this.bDisabled$ = false;
|
|
35
|
-
this.bVisible$ = true;
|
|
36
|
-
this.displayMode$ = '';
|
|
37
|
-
this.bHasForm$ = true;
|
|
38
|
-
this.componentReference = '';
|
|
39
|
-
this.listOfCheckboxes = [];
|
|
40
|
-
this.fieldControl = new FormControl('', null);
|
|
41
|
-
}
|
|
42
|
-
ngOnInit() {
|
|
43
|
-
// First thing in initialization is registering and subscribing to the AngularPConnect service
|
|
44
|
-
this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange);
|
|
45
|
-
this.controlName$ = this.angularPConnect.getComponentID(this);
|
|
46
|
-
// Then, continue on with other initialization
|
|
47
|
-
// call updateSelf when initializing
|
|
48
|
-
// this.updateSelf();
|
|
49
|
-
this.checkAndUpdate();
|
|
50
|
-
if (this.selectionMode === 'multi' && this.referenceList?.length > 0) {
|
|
51
|
-
this.pConn$.setReferenceList(this.selectionList);
|
|
52
|
-
updateNewInstructions(this.pConn$, this.selectionList);
|
|
53
|
-
}
|
|
54
|
-
if (this.formGroup$) {
|
|
55
|
-
// add control to formGroup
|
|
56
|
-
this.formGroup$.addControl(this.controlName$, this.fieldControl);
|
|
57
|
-
this.fieldControl.setValue(this.value$);
|
|
58
|
-
this.bHasForm$ = true;
|
|
59
|
-
}
|
|
60
|
-
else {
|
|
61
|
-
this.bReadonly$ = true;
|
|
62
|
-
this.bHasForm$ = false;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
ngOnDestroy() {
|
|
66
|
-
if (this.formGroup$) {
|
|
67
|
-
this.formGroup$.removeControl(this.controlName$);
|
|
68
|
-
}
|
|
69
|
-
if (this.angularPConnectData.unsubscribeFn) {
|
|
70
|
-
this.angularPConnectData.unsubscribeFn();
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
// Callback passed when subscribing to store change
|
|
74
|
-
onStateChange() {
|
|
75
|
-
this.checkAndUpdate();
|
|
76
|
-
}
|
|
77
|
-
checkAndUpdate() {
|
|
78
|
-
// Should always check the bridge to see if the component should
|
|
79
|
-
// update itself (re-render)
|
|
80
|
-
const bUpdateSelf = this.angularPConnect.shouldComponentUpdate(this);
|
|
81
|
-
// ONLY call updateSelf when the component should update
|
|
82
|
-
if (bUpdateSelf) {
|
|
83
|
-
this.updateSelf();
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
// updateSelf
|
|
87
|
-
updateSelf() {
|
|
88
|
-
// moved this from ngOnInit() and call this from there instead...
|
|
89
|
-
this.configProps$ = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps());
|
|
90
|
-
this.testId = this.configProps$.testId;
|
|
91
|
-
this.displayMode$ = this.configProps$.displayMode;
|
|
92
|
-
this.label$ = this.configProps$.label;
|
|
93
|
-
if (this.label$ != '') {
|
|
94
|
-
this.showLabel$ = true;
|
|
95
|
-
}
|
|
96
|
-
this.actionsApi = this.pConn$.getActionsApi();
|
|
97
|
-
this.propName = this.pConn$.getStateProps().value;
|
|
98
|
-
// multi case
|
|
99
|
-
this.selectionMode = this.configProps$.selectionMode;
|
|
100
|
-
if (this.selectionMode === 'multi') {
|
|
101
|
-
this.referenceList = this.configProps$.referenceList;
|
|
102
|
-
this.selectionList = this.configProps$.selectionList;
|
|
103
|
-
this.selectedvalues = this.configProps$.readonlyContextList;
|
|
104
|
-
this.primaryField = this.configProps$.primaryField;
|
|
105
|
-
this.datasource = this.configProps$.datasource;
|
|
106
|
-
this.selectionKey = this.configProps$.selectionKey;
|
|
107
|
-
const listSourceItems = this.datasource?.source ?? [];
|
|
108
|
-
const dataField = this.selectionKey?.split?.('.')[1] ?? '';
|
|
109
|
-
const listToDisplay = [];
|
|
110
|
-
listSourceItems.forEach(element => {
|
|
111
|
-
element.selected = this.selectedvalues?.some?.(data => data[dataField] === element.key);
|
|
112
|
-
listToDisplay.push(element);
|
|
113
|
-
});
|
|
114
|
-
this.listOfCheckboxes = listToDisplay;
|
|
115
|
-
}
|
|
116
|
-
else {
|
|
117
|
-
if (this.configProps$.value != undefined) {
|
|
118
|
-
this.value$ = this.configProps$.value;
|
|
119
|
-
}
|
|
120
|
-
this.caption$ = this.configProps$.caption;
|
|
121
|
-
this.helperText = this.configProps$.helperText;
|
|
122
|
-
this.trueLabel$ = this.configProps$.trueLabel || 'Yes';
|
|
123
|
-
this.falseLabel$ = this.configProps$.falseLabel || 'No';
|
|
124
|
-
// timeout and detectChanges to avoid ExpressionChangedAfterItHasBeenCheckedError
|
|
125
|
-
setTimeout(() => {
|
|
126
|
-
if (this.configProps$.required != null) {
|
|
127
|
-
this.bRequired$ = this.utils.getBooleanValue(this.configProps$.required);
|
|
128
|
-
}
|
|
129
|
-
this.cdRef.detectChanges();
|
|
130
|
-
});
|
|
131
|
-
if (this.configProps$.visibility != null) {
|
|
132
|
-
this.bVisible$ = this.utils.getBooleanValue(this.configProps$.visibility);
|
|
133
|
-
}
|
|
134
|
-
// disabled
|
|
135
|
-
if (this.configProps$.disabled != undefined) {
|
|
136
|
-
this.bDisabled$ = this.utils.getBooleanValue(this.configProps$.disabled);
|
|
137
|
-
}
|
|
138
|
-
if (this.configProps$.readOnly != null) {
|
|
139
|
-
this.bReadonly$ = this.utils.getBooleanValue(this.configProps$.readOnly);
|
|
140
|
-
}
|
|
141
|
-
if (this.bDisabled$ || this.bReadonly$) {
|
|
142
|
-
this.fieldControl.disable();
|
|
143
|
-
}
|
|
144
|
-
else {
|
|
145
|
-
this.fieldControl.enable();
|
|
146
|
-
}
|
|
147
|
-
this.componentReference = this.pConn$.getStateProps().value;
|
|
148
|
-
// eslint-disable-next-line sonarjs/no-redundant-boolean
|
|
149
|
-
if (this.value$ === 'true' || this.value$ == true) {
|
|
150
|
-
this.isChecked$ = true;
|
|
151
|
-
}
|
|
152
|
-
else {
|
|
153
|
-
this.isChecked$ = false;
|
|
154
|
-
}
|
|
155
|
-
// trigger display of error message with field control
|
|
156
|
-
if (this.angularPConnectData.validateMessage != null && this.angularPConnectData.validateMessage != '') {
|
|
157
|
-
const timer = interval(100).subscribe(() => {
|
|
158
|
-
this.fieldControl.setErrors({ message: true });
|
|
159
|
-
this.fieldControl.markAsTouched();
|
|
160
|
-
timer.unsubscribe();
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
fieldOnChange(event) {
|
|
166
|
-
event.value = event.checked;
|
|
167
|
-
handleEvent(this.actionsApi, 'changeNblur', this.propName, event.checked);
|
|
168
|
-
this.pConn$.clearErrorMessages({
|
|
169
|
-
property: this.propName
|
|
170
|
-
});
|
|
171
|
-
}
|
|
172
|
-
fieldOnBlur(event) {
|
|
173
|
-
if (this.selectionMode === 'multi') {
|
|
174
|
-
this.pConn$.getValidationApi().validate(this.selectedvalues, this.selectionList);
|
|
175
|
-
}
|
|
176
|
-
else {
|
|
177
|
-
this.pConn$.getValidationApi().validate(event.target.checked);
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
handleChangeMultiMode(event, element) {
|
|
181
|
-
if (!element.selected) {
|
|
182
|
-
insertInstruction(this.pConn$, this.selectionList, this.selectionKey, this.primaryField, {
|
|
183
|
-
id: element.key,
|
|
184
|
-
primary: element.text ?? element.value
|
|
185
|
-
});
|
|
186
|
-
}
|
|
187
|
-
else {
|
|
188
|
-
deleteInstruction(this.pConn$, this.selectionList, this.selectionKey, {
|
|
189
|
-
id: element.key,
|
|
190
|
-
primary: element.text ?? element.value
|
|
191
|
-
});
|
|
192
|
-
}
|
|
193
|
-
this.pConn$.clearErrorMessages({
|
|
194
|
-
property: this.selectionList,
|
|
195
|
-
category: '',
|
|
196
|
-
context: ''
|
|
197
|
-
});
|
|
198
|
-
}
|
|
199
|
-
getErrorMessage() {
|
|
200
|
-
let errMessage = '';
|
|
201
|
-
// look for validation messages for json, pre-defined or just an error pushed from workitem (400)
|
|
202
|
-
if (this.fieldControl.hasError('message')) {
|
|
203
|
-
errMessage = this.angularPConnectData.validateMessage ?? '';
|
|
204
|
-
return errMessage;
|
|
205
|
-
}
|
|
206
|
-
if (this.fieldControl.hasError('required')) {
|
|
207
|
-
errMessage = 'You must enter a value';
|
|
208
|
-
}
|
|
209
|
-
else if (this.fieldControl.errors) {
|
|
210
|
-
errMessage = this.fieldControl.errors.toString();
|
|
211
|
-
}
|
|
212
|
-
return errMessage;
|
|
213
|
-
}
|
|
214
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CheckBoxComponent, deps: [{ token: i1.AngularPConnectService }, { token: i0.ChangeDetectorRef }, { token: i2.Utils }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
215
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CheckBoxComponent, isStandalone: true, selector: "app-check-box", inputs: { pConn$: "pConn$", formGroup$: "formGroup$" }, ngImport: i0, template: "<div *ngIf=\"displayMode$; else noDisplayMode\">\n <component-mapper\n *ngIf=\"bVisible$ !== false\"\n name=\"FieldValueList\"\n [props]=\"{ label$: caption$, value$: value$ ? trueLabel$ : falseLabel$, displayMode$ }\"\n ></component-mapper>\n</div>\n<ng-template #noDisplayMode>\n <div *ngIf=\"bHasForm$; else noEdit\">\n <div [formGroup]=\"formGroup$\" *ngIf=\"bVisible$\">\n <div class=\"mat-form-field-infix\" *ngIf=\"showLabel$\">\n <span>\n <label class=\"mat-form-field-label psdk-label-readonly\">{{ label$ }}</label>\n </span>\n </div>\n <div *ngIf=\"selectionMode === 'multi'; else single\">\n <mat-option *ngFor=\"let item of listOfCheckboxes\" (click)=\"handleChangeMultiMode($event, item)\">\n <mat-checkbox\n [labelPosition]=\"'after'\"\n [checked]=\"item.selected\"\n [disabled]=\"bDisabled$ || bReadonly$\"\n [required]=\"bRequired$\"\n [attr.data-test-id]=\"testId + ':' + item.value\"\n (change)=\"handleChangeMultiMode($event, item)\"\n (blur)=\"fieldOnBlur($event)\"\n >{{ item.text ?? item.value }}\n </mat-checkbox>\n </mat-option>\n </div>\n <ng-template #single>\n <mat-checkbox\n [labelPosition]=\"'after'\"\n [checked]=\"isChecked$\"\n [disabled]=\"bDisabled$ || bReadonly$\"\n [required]=\"bRequired$\"\n [attr.data-test-id]=\"testId\"\n [formControl]=\"fieldControl\"\n (change)=\"fieldOnChange($event)\"\n (blur)=\"fieldOnBlur($event)\"\n >{{ caption$ }}</mat-checkbox\n >\n <p *ngIf=\"helperText\">{{ helperText }}</p>\n </ng-template>\n <mat-error *ngIf=\"fieldControl.invalid\">{{ getErrorMessage() }}</mat-error>\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{min-width:9.375rem;width:100%;text-align:left}.psdk-label-readonly{top:0rem;margin-top:.625rem;font-size:.875rem;transform:translateY(-1.28125em) scale(.75) perspective(100px) translateZ(.001px);-ms-transform:translateY(-1.28125em) scale(.75);width:133.33333%;color:#0009}.psdk-data-readonly{padding-top:.625rem;width:100%}::ng-deep .mat-mdc-form-field-infix{width:auto}p{font-size:.75rem;color:#00000094}mat-checkbox{margin-left:-11px}.mat-mdc-option{margin-left:-16px}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i3.NgForOf), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { 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.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: "ngmodule", type: i0.forwardRef(() => MatCheckboxModule) }, { kind: "component", type: i0.forwardRef(() => i5.MatCheckbox), selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatFormFieldModule) }, { kind: "directive", type: i0.forwardRef(() => i6.MatError), selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatOptionModule) }, { kind: "component", type: i0.forwardRef(() => i7.MatOption), selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i0.forwardRef(() => ComponentMapperComponent), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
|
|
216
|
-
}
|
|
217
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CheckBoxComponent, decorators: [{
|
|
218
|
-
type: Component,
|
|
219
|
-
args: [{ selector: 'app-check-box', standalone: true, imports: [CommonModule, ReactiveFormsModule, MatCheckboxModule, MatFormFieldModule, MatOptionModule, forwardRef(() => ComponentMapperComponent)], template: "<div *ngIf=\"displayMode$; else noDisplayMode\">\n <component-mapper\n *ngIf=\"bVisible$ !== false\"\n name=\"FieldValueList\"\n [props]=\"{ label$: caption$, value$: value$ ? trueLabel$ : falseLabel$, displayMode$ }\"\n ></component-mapper>\n</div>\n<ng-template #noDisplayMode>\n <div *ngIf=\"bHasForm$; else noEdit\">\n <div [formGroup]=\"formGroup$\" *ngIf=\"bVisible$\">\n <div class=\"mat-form-field-infix\" *ngIf=\"showLabel$\">\n <span>\n <label class=\"mat-form-field-label psdk-label-readonly\">{{ label$ }}</label>\n </span>\n </div>\n <div *ngIf=\"selectionMode === 'multi'; else single\">\n <mat-option *ngFor=\"let item of listOfCheckboxes\" (click)=\"handleChangeMultiMode($event, item)\">\n <mat-checkbox\n [labelPosition]=\"'after'\"\n [checked]=\"item.selected\"\n [disabled]=\"bDisabled$ || bReadonly$\"\n [required]=\"bRequired$\"\n [attr.data-test-id]=\"testId + ':' + item.value\"\n (change)=\"handleChangeMultiMode($event, item)\"\n (blur)=\"fieldOnBlur($event)\"\n >{{ item.text ?? item.value }}\n </mat-checkbox>\n </mat-option>\n </div>\n <ng-template #single>\n <mat-checkbox\n [labelPosition]=\"'after'\"\n [checked]=\"isChecked$\"\n [disabled]=\"bDisabled$ || bReadonly$\"\n [required]=\"bRequired$\"\n [attr.data-test-id]=\"testId\"\n [formControl]=\"fieldControl\"\n (change)=\"fieldOnChange($event)\"\n (blur)=\"fieldOnBlur($event)\"\n >{{ caption$ }}</mat-checkbox\n >\n <p *ngIf=\"helperText\">{{ helperText }}</p>\n </ng-template>\n <mat-error *ngIf=\"fieldControl.invalid\">{{ getErrorMessage() }}</mat-error>\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{min-width:9.375rem;width:100%;text-align:left}.psdk-label-readonly{top:0rem;margin-top:.625rem;font-size:.875rem;transform:translateY(-1.28125em) scale(.75) perspective(100px) translateZ(.001px);-ms-transform:translateY(-1.28125em) scale(.75);width:133.33333%;color:#0009}.psdk-data-readonly{padding-top:.625rem;width:100%}::ng-deep .mat-mdc-form-field-infix{width:auto}p{font-size:.75rem;color:#00000094}mat-checkbox{margin-left:-11px}.mat-mdc-option{margin-left:-16px}\n"] }]
|
|
220
|
-
}], ctorParameters: () => [{ type: i1.AngularPConnectService }, { type: i0.ChangeDetectorRef }, { type: i2.Utils }], propDecorators: { pConn$: [{
|
|
221
|
-
type: Input
|
|
222
|
-
}], formGroup$: [{
|
|
223
|
-
type: Input
|
|
224
|
-
}] } });
|
|
225
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy9maWVsZC9jaGVjay1ib3gvY2hlY2stYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy9maWVsZC9jaGVjay1ib3gvY2hlY2stYm94LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFxQixVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQWEsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUdoQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUV4RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNuSCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7Ozs7OztBQXlCM0QsTUFBTSxPQUFPLGlCQUFpQjtJQXVDNUIsWUFDVSxlQUF1QyxFQUN2QyxLQUF3QixFQUN4QixLQUFZO1FBRlosb0JBQWUs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dCwgT25Jbml0LCBJbnB1dCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIGZvcndhcmRSZWYsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0T3B0aW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBpbnRlcnZhbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQW5ndWxhclBDb25uZWN0RGF0YSwgQW5ndWxhclBDb25uZWN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19icmlkZ2UvYW5ndWxhci1wY29ubmVjdCc7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uLy4uLy4uL19oZWxwZXJzL3V0aWxzJztcbmltcG9ydCB7IENvbXBvbmVudE1hcHBlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL19icmlkZ2UvY29tcG9uZW50LW1hcHBlci9jb21wb25lbnQtbWFwcGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQQ29ubkZpZWxkUHJvcHMgfSBmcm9tICcuLi8uLi8uLi9fdHlwZXMvUENvbm5Qcm9wcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgZGVsZXRlSW5zdHJ1Y3Rpb24sIGluc2VydEluc3RydWN0aW9uLCB1cGRhdGVOZXdJbnN0cnVjdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9faGVscGVycy9pbnN0cnVjdGlvbnMtdXRpbHMnO1xuaW1wb3J0IHsgaGFuZGxlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9faGVscGVycy9ldmVudC11dGlsJztcblxuaW50ZXJmYWNlIENoZWNrYm94UHJvcHMgZXh0ZW5kcyBPbWl0PFBDb25uRmllbGRQcm9wcywgJ3ZhbHVlJz4ge1xuICAvLyBJZiBhbnksIGVudGVyIGFkZGl0aW9uYWwgcHJvcHMgdGhhdCBvbmx5IGV4aXN0IG9uIENoZWNrYm94IGhlcmVcbiAgLy8gRXZlcnl0aGluZyBmcm9tIFBDb25uRmllbGRQcm9wcyBleGNlcHQgdmFsdWUgYW5kIGNoYW5nZSB0eXBlIG9mIHZhbHVlIHRvIGJvb2xlYW5cbiAgdmFsdWU6IGJvb2xlYW47XG4gIGNhcHRpb24/OiBzdHJpbmc7XG4gIHRydWVMYWJlbD86IHN0cmluZztcbiAgZmFsc2VMYWJlbD86IHN0cmluZztcbiAgc2VsZWN0aW9uTW9kZT86IHN0cmluZztcbiAgZGF0YXNvdXJjZT86IGFueTtcbiAgc2VsZWN0aW9uS2V5Pzogc3RyaW5nO1xuICBzZWxlY3Rpb25MaXN0PzogYW55O1xuICBwcmltYXJ5RmllbGQ6IHN0cmluZztcbiAgcmVhZG9ubHlDb250ZXh0TGlzdDogYW55O1xuICByZWZlcmVuY2VMaXN0OiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1jaGVjay1ib3gnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hlY2stYm94LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2hlY2stYm94LmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIE1hdENoZWNrYm94TW9kdWxlLCBNYXRGb3JtRmllbGRNb2R1bGUsIE1hdE9wdGlvbk1vZHVsZSwgZm9yd2FyZFJlZigoKSA9PiBDb21wb25lbnRNYXBwZXJDb21wb25lbnQpXVxufSlcbmV4cG9ydCBjbGFzcyBDaGVja0JveENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcENvbm4kOiB0eXBlb2YgUENvbm5lY3Q7XG4gIEBJbnB1dCgpIGZvcm1Hcm91cCQ6IEZvcm1Hcm91cDtcblxuICAvLyBVc2VkIHdpdGggQW5ndWxhclBDb25uZWN0XG4gIGFuZ3VsYXJQQ29ubmVjdERhdGE6IEFuZ3VsYXJQQ29ubmVjdERhdGEgPSB7fTtcbiAgY29uZmlnUHJvcHMkOiBDaGVja2JveFByb3BzO1xuXG4gIGxhYmVsJCA9ICcnO1xuICB2YWx1ZSQ6IGFueSA9ICcnO1xuICBjYXB0aW9uJD86IHN0cmluZyA9ICcnO1xuICB0ZXN0SWQgPSAnJztcbiAgc2hvd0xhYmVsJCA9IGZhbHNlO1xuICBpc0NoZWNrZWQkID0gZmFsc2U7XG4gIGJSZXF1aXJlZCQgPSBmYWxzZTtcbiAgYlJlYWRvbmx5JCA9IGZhbHNlO1xuICBiRGlzYWJsZWQkID0gZmFsc2U7XG4gIGJWaXNpYmxlJCA9IHRydWU7XG4gIGRpc3BsYXlNb2RlJD86IHN0cmluZyA9ICcnO1xuICBjb250cm9sTmFtZSQ6IHN0cmluZztcbiAgYkhhc0Zvcm0kID0gdHJ1ZTtcbiAgY29tcG9uZW50UmVmZXJlbmNlID0gJyc7XG4gIGhlbHBlclRleHQ6IHN0cmluZztcbiAgdHJ1ZUxhYmVsJD86IHN0cmluZztcbiAgZmFsc2VMYWJlbCQ/OiBzdHJpbmc7XG5cbiAgc2VsZWN0aW9uTW9kZT86IHN0cmluZztcbiAgZGF0YXNvdXJjZT86IGFueTtcbiAgc2VsZWN0aW9uS2V5Pzogc3RyaW5nO1xuICBzZWxlY3Rpb25MaXN0PzogYW55O1xuICBwcmltYXJ5RmllbGQ6IHN0cmluZztcbiAgc2VsZWN0ZWR2YWx1ZXM6IGFueTtcbiAgcmVmZXJlbmNlTGlzdDogc3RyaW5nO1xuICBsaXN0T2ZDaGVja2JveGVzOiBhbnlbXSA9IFtdO1xuICBhY3Rpb25zQXBpOiBPYmplY3Q7XG4gIHByb3BOYW1lOiBzdHJpbmc7XG5cbiAgZmllbGRDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCcnLCBudWxsKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFuZ3VsYXJQQ29ubmVjdDogQW5ndWxhclBDb25uZWN0U2VydmljZSxcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHV0aWxzOiBVdGlsc1xuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gRmlyc3QgdGhpbmcgaW4gaW5pdGlhbGl6YXRpb24gaXMgcmVnaXN0ZXJpbmcgYW5kIHN1YnNjcmliaW5nIHRvIHRoZSBBbmd1bGFyUENvbm5lY3Qgc2VydmljZVxuICAgIHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YSA9IHRoaXMuYW5ndWxhclBDb25uZWN0LnJlZ2lzdGVyQW5kU3Vic2NyaWJlQ29tcG9uZW50KHRoaXMsIHRoaXMub25TdGF0ZUNoYW5nZSk7XG4gICAgdGhpcy5jb250cm9sTmFtZSQgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5nZXRDb21wb25lbnRJRCh0aGlzKTtcblxuICAgIC8vIFRoZW4sIGNvbnRpbnVlIG9uIHdpdGggb3RoZXIgaW5pdGlhbGl6YXRpb25cblxuICAgIC8vIGNhbGwgdXBkYXRlU2VsZiB3aGVuIGluaXRpYWxpemluZ1xuICAgIC8vIHRoaXMudXBkYXRlU2VsZigpO1xuICAgIHRoaXMuY2hlY2tBbmRVcGRhdGUoKTtcblxuICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdtdWx0aScgJiYgdGhpcy5yZWZlcmVuY2VMaXN0Py5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnBDb25uJC5zZXRSZWZlcmVuY2VMaXN0KHRoaXMuc2VsZWN0aW9uTGlzdCk7XG4gICAgICB1cGRhdGVOZXdJbnN0cnVjdGlvbnModGhpcy5wQ29ubiQsIHRoaXMuc2VsZWN0aW9uTGlzdCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZm9ybUdyb3VwJCkge1xuICAgICAgLy8gYWRkIGNvbnRyb2wgdG8gZm9ybUdyb3VwXG4gICAgICB0aGlzLmZvcm1Hcm91cCQuYWRkQ29udHJvbCh0aGlzLmNvbnRyb2xOYW1lJCwgdGhpcy5maWVsZENvbnRyb2wpO1xuICAgICAgdGhpcy5maWVsZENvbnRyb2wuc2V0VmFsdWUodGhpcy52YWx1ZSQpO1xuICAgICAgdGhpcy5iSGFzRm9ybSQgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmJSZWFkb25seSQgPSB0cnVlO1xuICAgICAgdGhpcy5iSGFzRm9ybSQgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mb3JtR3JvdXAkKSB7XG4gICAgICB0aGlzLmZvcm1Hcm91cCQucmVtb3ZlQ29udHJvbCh0aGlzLmNvbnRyb2xOYW1lJCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS51bnN1YnNjcmliZUZuKSB7XG4gICAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbigpO1xuICAgIH1cbiAgfVxuXG4gIC8vIENhbGxiYWNrIHBhc3NlZCB3aGVuIHN1YnNjcmliaW5nIHRvIHN0b3JlIGNoYW5nZVxuICBvblN0YXRlQ2hhbmdlKCkge1xuICAgIHRoaXMuY2hlY2tBbmRVcGRhdGUoKTtcbiAgfVxuXG4gIGNoZWNrQW5kVXBkYXRlKCkge1xuICAgIC8vIFNob3VsZCBhbHdheXMgY2hlY2sgdGhlIGJyaWRnZSB0byBzZWUgaWYgdGhlIGNvbXBvbmVudCBzaG91bGRcbiAgICAvLyB1cGRhdGUgaXRzZWxmIChyZS1yZW5kZXIpXG4gICAgY29uc3QgYlVwZGF0ZVNlbGYgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5zaG91bGRDb21wb25lbnRVcGRhdGUodGhpcyk7XG5cbiAgICAvLyBPTkxZIGNhbGwgdXBkYXRlU2VsZiB3aGVuIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZVxuICAgIGlmIChiVXBkYXRlU2VsZikge1xuICAgICAgdGhpcy51cGRhdGVTZWxmKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gdXBkYXRlU2VsZlxuICB1cGRhdGVTZWxmKCk6IHZvaWQge1xuICAgIC8vIG1vdmVkIHRoaXMgZnJvbSBuZ09uSW5pdCgpIGFuZCBjYWxsIHRoaXMgZnJvbSB0aGVyZSBpbnN0ZWFkLi4uXG4gICAgdGhpcy5jb25maWdQcm9wcyQgPSB0aGlzLnBDb25uJC5yZXNvbHZlQ29uZmlnUHJvcHModGhpcy5wQ29ubiQuZ2V0Q29uZmlnUHJvcHMoKSkgYXMgQ2hlY2tib3hQcm9wcztcblxuICAgIHRoaXMudGVzdElkID0gdGhpcy5jb25maWdQcm9wcyQudGVzdElkO1xuICAgIHRoaXMuZGlzcGxheU1vZGUkID0gdGhpcy5jb25maWdQcm9wcyQuZGlzcGxheU1vZGU7XG4gICAgdGhpcy5sYWJlbCQgPSB0aGlzLmNvbmZpZ1Byb3BzJC5sYWJlbDtcbiAgICBpZiAodGhpcy5sYWJlbCQgIT0gJycpIHtcbiAgICAgIHRoaXMuc2hvd0xhYmVsJCA9IHRydWU7XG4gICAgfVxuXG4gICAgdGhpcy5hY3Rpb25zQXBpID0gdGhpcy5wQ29ubiQuZ2V0QWN0aW9uc0FwaSgpO1xuICAgIHRoaXMucHJvcE5hbWUgPSB0aGlzLnBDb25uJC5nZXRTdGF0ZVByb3BzKCkudmFsdWU7XG5cbiAgICAvLyBtdWx0aSBjYXNlXG4gICAgdGhpcy5zZWxlY3Rpb25Nb2RlID0gdGhpcy5jb25maWdQcm9wcyQuc2VsZWN0aW9uTW9kZTtcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnbXVsdGknKSB7XG4gICAgICB0aGlzLnJlZmVyZW5jZUxpc3QgPSB0aGlzLmNvbmZpZ1Byb3BzJC5yZWZlcmVuY2VMaXN0O1xuICAgICAgdGhpcy5zZWxlY3Rpb25MaXN0ID0gdGhpcy5jb25maWdQcm9wcyQuc2VsZWN0aW9uTGlzdDtcbiAgICAgIHRoaXMuc2VsZWN0ZWR2YWx1ZXMgPSB0aGlzLmNvbmZpZ1Byb3BzJC5yZWFkb25seUNvbnRleHRMaXN0O1xuICAgICAgdGhpcy5wcmltYXJ5RmllbGQgPSB0aGlzLmNvbmZpZ1Byb3BzJC5wcmltYXJ5RmllbGQ7XG5cbiAgICAgIHRoaXMuZGF0YXNvdXJjZSA9IHRoaXMuY29uZmlnUHJvcHMkLmRhdGFzb3VyY2U7XG4gICAgICB0aGlzLnNlbGVjdGlvbktleSA9IHRoaXMuY29uZmlnUHJvcHMkLnNlbGVjdGlvbktleTtcbiAgICAgIGNvbnN0IGxpc3RTb3VyY2VJdGVtcyA9IHRoaXMuZGF0YXNvdXJjZT8uc291cmNlID8/IFtdO1xuICAgICAgY29uc3QgZGF0YUZpZWxkID0gdGhpcy5zZWxlY3Rpb25LZXk/LnNwbGl0Py4oJy4nKVsxXSA/PyAnJztcbiAgICAgIGNvbnN0IGxpc3RUb0Rpc3BsYXk6IGFueVtdID0gW107XG4gICAgICBsaXN0U291cmNlSXRlbXMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgZWxlbWVudC5zZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWR2YWx1ZXM/LnNvbWU/LihkYXRhID0+IGRhdGFbZGF0YUZpZWxkXSA9PT0gZWxlbWVudC5rZXkpO1xuICAgICAgICBsaXN0VG9EaXNwbGF5LnB1c2goZWxlbWVudCk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMubGlzdE9mQ2hlY2tib3hlcyA9IGxpc3RUb0Rpc3BsYXk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmNvbmZpZ1Byb3BzJC52YWx1ZSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy52YWx1ZSQgPSB0aGlzLmNvbmZpZ1Byb3BzJC52YWx1ZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jYXB0aW9uJCA9IHRoaXMuY29uZmlnUHJvcHMkLmNhcHRpb247XG4gICAgICB0aGlzLmhlbHBlclRleHQgPSB0aGlzLmNvbmZpZ1Byb3BzJC5oZWxwZXJUZXh0O1xuICAgICAgdGhpcy50cnVlTGFiZWwkID0gdGhpcy5jb25maWdQcm9wcyQudHJ1ZUxhYmVsIHx8ICdZZXMnO1xuICAgICAgdGhpcy5mYWxzZUxhYmVsJCA9IHRoaXMuY29uZmlnUHJvcHMkLmZhbHNlTGFiZWwgfHwgJ05vJztcblxuICAgICAgLy8gdGltZW91dCBhbmQgZGV0ZWN0Q2hhbmdlcyB0byBhdm9pZCBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnUHJvcHMkLnJlcXVpcmVkICE9IG51bGwpIHtcbiAgICAgICAgICB0aGlzLmJSZXF1aXJlZCQgPSB0aGlzLnV0aWxzLmdldEJvb2xlYW5WYWx1ZSh0aGlzLmNvbmZpZ1Byb3BzJC5yZXF1aXJlZCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KTtcblxuICAgICAgaWYgKHRoaXMuY29uZmlnUHJvcHMkLnZpc2liaWxpdHkgIT0gbnVsbCkge1xuICAgICAgICB0aGlzLmJWaXNpYmxlJCA9IHRoaXMudXRpbHMuZ2V0Qm9vbGVhblZhbHVlKHRoaXMuY29uZmlnUHJvcHMkLnZpc2liaWxpdHkpO1xuICAgICAgfVxuXG4gICAgICAvLyBkaXNhYmxlZFxuICAgICAgaWYgKHRoaXMuY29uZmlnUHJvcHMkLmRpc2FibGVkICE9IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLmJEaXNhYmxlZCQgPSB0aGlzLnV0aWxzLmdldEJvb2xlYW5WYWx1ZSh0aGlzLmNvbmZpZ1Byb3BzJC5kaXNhYmxlZCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmNvbmZpZ1Byb3BzJC5yZWFkT25seSAhPSBudWxsKSB7XG4gICAgICAgIHRoaXMuYlJlYWRvbmx5JCA9IHRoaXMudXRpbHMuZ2V0Qm9vbGVhblZhbHVlKHRoaXMuY29uZmlnUHJvcHMkLnJlYWRPbmx5KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuYkRpc2FibGVkJCB8fCB0aGlzLmJSZWFkb25seSQpIHtcbiAgICAgICAgdGhpcy5maWVsZENvbnRyb2wuZGlzYWJsZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5maWVsZENvbnRyb2wuZW5hYmxlKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY29tcG9uZW50UmVmZXJlbmNlID0gdGhpcy5wQ29ubiQuZ2V0U3RhdGVQcm9wcygpLnZhbHVlO1xuXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc29uYXJqcy9uby1yZWR1bmRhbnQtYm9vbGVhblxuICAgICAgaWYgKHRoaXMudmFsdWUkID09PSAndHJ1ZScgfHwgdGhpcy52YWx1ZSQgPT0gdHJ1ZSkge1xuICAgICAgICB0aGlzLmlzQ2hlY2tlZCQgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pc0NoZWNrZWQkID0gZmFsc2U7XG4gICAgICB9XG4gICAgICAvLyB0cmlnZ2VyIGRpc3BsYXkgb2YgZXJyb3IgbWVzc2FnZSB3aXRoIGZpZWxkIGNvbnRyb2xcbiAgICAgIGlmICh0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudmFsaWRhdGVNZXNzYWdlICE9IG51bGwgJiYgdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnZhbGlkYXRlTWVzc2FnZSAhPSAnJykge1xuICAgICAgICBjb25zdCB0aW1lciA9IGludGVydmFsKDEwMCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmZpZWxkQ29udHJvbC5zZXRFcnJvcnMoeyBtZXNzYWdlOiB0cnVlIH0pO1xuICAgICAgICAgIHRoaXMuZmllbGRDb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcblxuICAgICAgICAgIHRpbWVyLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZpZWxkT25DaGFuZ2UoZXZlbnQ6IGFueSkge1xuICAgIGV2ZW50LnZhbHVlID0gZXZlbnQuY2hlY2tlZDtcbiAgICBoYW5kbGVFdmVudCh0aGlzLmFjdGlvbnNBcGksICdjaGFuZ2VOYmx1cicsIHRoaXMucHJvcE5hbWUsIGV2ZW50LmNoZWNrZWQpO1xuICAgIHRoaXMucENvbm4kLmNsZWFyRXJyb3JNZXNzYWdlcyh7XG4gICAgICBwcm9wZXJ0eTogdGhpcy5wcm9wTmFtZVxuICAgIH0pO1xuICB9XG5cbiAgZmllbGRPbkJsdXIoZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdtdWx0aScpIHtcbiAgICAgIHRoaXMucENvbm4kLmdldFZhbGlkYXRpb25BcGkoKS52YWxpZGF0ZSh0aGlzLnNlbGVjdGVkdmFsdWVzLCB0aGlzLnNlbGVjdGlvbkxpc3QpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnBDb25uJC5nZXRWYWxpZGF0aW9uQXBpKCkudmFsaWRhdGUoZXZlbnQudGFyZ2V0LmNoZWNrZWQpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUNoYW5nZU11bHRpTW9kZShldmVudCwgZWxlbWVudCkge1xuICAgIGlmICghZWxlbWVudC5zZWxlY3RlZCkge1xuICAgICAgaW5zZXJ0SW5zdHJ1Y3Rpb24odGhpcy5wQ29ubiQsIHRoaXMuc2VsZWN0aW9uTGlzdCwgdGhpcy5zZWxlY3Rpb25LZXksIHRoaXMucHJpbWFyeUZpZWxkLCB7XG4gICAgICAgIGlkOiBlbGVtZW50LmtleSxcbiAgICAgICAgcHJpbWFyeTogZWxlbWVudC50ZXh0ID8/IGVsZW1lbnQudmFsdWVcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWxldGVJbnN0cnVjdGlvbih0aGlzLnBDb25uJCwgdGhpcy5zZWxlY3Rpb25MaXN0LCB0aGlzLnNlbGVjdGlvbktleSwge1xuICAgICAgICBpZDogZWxlbWVudC5rZXksXG4gICAgICAgIHByaW1hcnk6IGVsZW1lbnQudGV4dCA/PyBlbGVtZW50LnZhbHVlXG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5wQ29ubiQuY2xlYXJFcnJvck1lc3NhZ2VzKHtcbiAgICAgIHByb3BlcnR5OiB0aGlzLnNlbGVjdGlvbkxpc3QsXG4gICAgICBjYXRlZ29yeTogJycsXG4gICAgICBjb250ZXh0OiAnJ1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0RXJyb3JNZXNzYWdlKCkge1xuICAgIGxldCBlcnJNZXNzYWdlID0gJyc7XG5cbiAgICAvLyBsb29rIGZvciB2YWxpZGF0aW9uIG1lc3NhZ2VzIGZvciBqc29uLCBwcmUtZGVmaW5lZCBvciBqdXN0IGFuIGVycm9yIHB1c2hlZCBmcm9tIHdvcmtpdGVtICg0MDApXG4gICAgaWYgKHRoaXMuZmllbGRDb250cm9sLmhhc0Vycm9yKCdtZXNzYWdlJykpIHtcbiAgICAgIGVyck1lc3NhZ2UgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudmFsaWRhdGVNZXNzYWdlID8/ICcnO1xuICAgICAgcmV0dXJuIGVyck1lc3NhZ2U7XG4gICAgfVxuICAgIGlmICh0aGlzLmZpZWxkQ29udHJvbC5oYXNFcnJvcigncmVxdWlyZWQnKSkge1xuICAgICAgZXJyTWVzc2FnZSA9ICdZb3UgbXVzdCBlbnRlciBhIHZhbHVlJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuZmllbGRDb250cm9sLmVycm9ycykge1xuICAgICAgZXJyTWVzc2FnZSA9IHRoaXMuZmllbGRDb250cm9sLmVycm9ycy50b1N0cmluZygpO1xuICAgIH1cblxuICAgIHJldHVybiBlcnJNZXNzYWdlO1xuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwiZGlzcGxheU1vZGUkOyBlbHNlIG5vRGlzcGxheU1vZGVcIj5cbiAgPGNvbXBvbmVudC1tYXBwZXJcbiAgICAqbmdJZj1cImJWaXNpYmxlJCAhPT0gZmFsc2VcIlxuICAgIG5hbWU9XCJGaWVsZFZhbHVlTGlzdFwiXG4gICAgW3Byb3BzXT1cInsgbGFiZWwkOiBjYXB0aW9uJCwgdmFsdWUkOiB2YWx1ZSQgPyB0cnVlTGFiZWwkIDogZmFsc2VMYWJlbCQsIGRpc3BsYXlNb2RlJCB9XCJcbiAgPjwvY29tcG9uZW50LW1hcHBlcj5cbjwvZGl2PlxuPG5nLXRlbXBsYXRlICNub0Rpc3BsYXlNb2RlPlxuICA8ZGl2ICpuZ0lmPVwiYkhhc0Zvcm0kOyBlbHNlIG5vRWRpdFwiPlxuICAgIDxkaXYgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXAkXCIgKm5nSWY9XCJiVmlzaWJsZSRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYXQtZm9ybS1maWVsZC1pbmZpeFwiICpuZ0lmPVwic2hvd0xhYmVsJFwiPlxuICAgICAgICA8c3Bhbj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtYXQtZm9ybS1maWVsZC1sYWJlbCBwc2RrLWxhYmVsLXJlYWRvbmx5XCI+e3sgbGFiZWwkIH19PC9sYWJlbD5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0aW9uTW9kZSA9PT0gJ211bHRpJzsgZWxzZSBzaW5nbGVcIj5cbiAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgbGlzdE9mQ2hlY2tib3hlc1wiIChjbGljayk9XCJoYW5kbGVDaGFuZ2VNdWx0aU1vZGUoJGV2ZW50LCBpdGVtKVwiPlxuICAgICAgICAgIDxtYXQtY2hlY2tib3hcbiAgICAgICAgICAgIFtsYWJlbFBvc2l0aW9uXT1cIidhZnRlcidcIlxuICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXRlbS5zZWxlY3RlZFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiYkRpc2FibGVkJCB8fCBiUmVhZG9ubHkkXCJcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJiUmVxdWlyZWQkXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtdGVzdC1pZF09XCJ0ZXN0SWQgKyAnOicgKyBpdGVtLnZhbHVlXCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwiaGFuZGxlQ2hhbmdlTXVsdGlNb2RlKCRldmVudCwgaXRlbSlcIlxuICAgICAgICAgICAgKGJsdXIpPVwiZmllbGRPbkJsdXIoJGV2ZW50KVwiXG4gICAgICAgICAgICA+e3sgaXRlbS50ZXh0ID8/IGl0ZW0udmFsdWUgfX1cbiAgICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8bmctdGVtcGxhdGUgI3NpbmdsZT5cbiAgICAgICAgPG1hdC1jaGVja2JveFxuICAgICAgICAgIFtsYWJlbFBvc2l0aW9uXT1cIidhZnRlcidcIlxuICAgICAgICAgIFtjaGVja2VkXT1cImlzQ2hlY2tlZCRcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJiRGlzYWJsZWQkIHx8IGJSZWFkb25seSRcIlxuICAgICAgICAgIFtyZXF1aXJlZF09XCJiUmVxdWlyZWQkXCJcbiAgICAgICAgICBbYXR0ci5kYXRhLXRlc3QtaWRdPVwidGVzdElkXCJcbiAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZmllbGRDb250cm9sXCJcbiAgICAgICAgICAoY2hhbmdlKT1cImZpZWxkT25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgKGJsdXIpPVwiZmllbGRPbkJsdXIoJGV2ZW50KVwiXG4gICAgICAgICAgPnt7IGNhcHRpb24kIH19PC9tYXQtY2hlY2tib3hcbiAgICAgICAgPlxuICAgICAgICA8cCAqbmdJZj1cImhlbHBlclRleHRcIj57eyBoZWxwZXJUZXh0IH19PC9wPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmaWVsZENvbnRyb2wuaW52YWxpZFwiPnt7IGdldEVycm9yTWVzc2FnZSgpIH19PC9tYXQtZXJyb3I+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjbm9FZGl0PlxuICA8Y29tcG9uZW50LW1hcHBlciAqbmdJZj1cImJWaXNpYmxlJCAhPT0gZmFsc2VcIiBuYW1lPVwiVGV4dFwiIFtwcm9wc109XCJ7IHBDb25uJCwgZm9ybWF0QXMkOiAndGV4dCcgfVwiPjwvY29tcG9uZW50LW1hcHBlcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -1,195 +0,0 @@
|
|
|
1
|
-
import { Component, Input, forwardRef } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { FormControl, ReactiveFormsModule } from '@angular/forms';
|
|
4
|
-
import { MatInputModule } from '@angular/material/input';
|
|
5
|
-
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
6
|
-
import { interval } from 'rxjs';
|
|
7
|
-
import { NgxCurrencyDirective, NgxCurrencyInputMode } from 'ngx-currency';
|
|
8
|
-
import { ComponentMapperComponent } from '../../../_bridge/component-mapper/component-mapper.component';
|
|
9
|
-
import { handleEvent } from '../../../_helpers/event-util';
|
|
10
|
-
import { getCurrencyCharacters, getCurrencyOptions } from '../../../_helpers/currency-utils';
|
|
11
|
-
import { format } from '../../../_helpers/formatters';
|
|
12
|
-
import * as i0 from "@angular/core";
|
|
13
|
-
import * as i1 from "../../../_bridge/angular-pconnect";
|
|
14
|
-
import * as i2 from "../../../_helpers/utils";
|
|
15
|
-
import * as i3 from "@angular/common";
|
|
16
|
-
import * as i4 from "@angular/forms";
|
|
17
|
-
import * as i5 from "@angular/material/form-field";
|
|
18
|
-
import * as i6 from "@angular/material/input";
|
|
19
|
-
export class CurrencyComponent {
|
|
20
|
-
constructor(angularPConnect, cdRef, utils) {
|
|
21
|
-
this.angularPConnect = angularPConnect;
|
|
22
|
-
this.cdRef = cdRef;
|
|
23
|
-
this.utils = utils;
|
|
24
|
-
// Used with AngularPConnect
|
|
25
|
-
this.angularPConnectData = {};
|
|
26
|
-
this.label$ = '';
|
|
27
|
-
this.bRequired$ = false;
|
|
28
|
-
this.bReadonly$ = false;
|
|
29
|
-
this.bDisabled$ = false;
|
|
30
|
-
this.bVisible$ = true;
|
|
31
|
-
this.displayMode$ = '';
|
|
32
|
-
this.bHasForm$ = true;
|
|
33
|
-
this.componentReference = '';
|
|
34
|
-
this.currencyISOCode = 'USD';
|
|
35
|
-
this.currencyOptions = {};
|
|
36
|
-
this.fieldControl = new FormControl(null, { updateOn: 'blur' });
|
|
37
|
-
}
|
|
38
|
-
ngOnInit() {
|
|
39
|
-
// First thing in initialization is registering and subscribing to the AngularPConnect service
|
|
40
|
-
this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange);
|
|
41
|
-
this.controlName$ = this.angularPConnect.getComponentID(this);
|
|
42
|
-
// Then, continue on with other initialization
|
|
43
|
-
// call updateSelf when initializing
|
|
44
|
-
// this.updateSelf();
|
|
45
|
-
this.checkAndUpdate();
|
|
46
|
-
if (this.formGroup$) {
|
|
47
|
-
// add control to formGroup
|
|
48
|
-
this.formGroup$.addControl(this.controlName$, this.fieldControl);
|
|
49
|
-
this.fieldControl.setValue(this.value$);
|
|
50
|
-
this.bHasForm$ = true;
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
this.bReadonly$ = true;
|
|
54
|
-
this.bHasForm$ = false;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
ngOnDestroy() {
|
|
58
|
-
if (this.formGroup$) {
|
|
59
|
-
this.formGroup$.removeControl(this.controlName$);
|
|
60
|
-
}
|
|
61
|
-
if (this.angularPConnectData.unsubscribeFn) {
|
|
62
|
-
this.angularPConnectData.unsubscribeFn();
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
// Callback passed when subscribing to store change
|
|
66
|
-
onStateChange() {
|
|
67
|
-
this.checkAndUpdate();
|
|
68
|
-
}
|
|
69
|
-
checkAndUpdate() {
|
|
70
|
-
// Should always check the bridge to see if the component should
|
|
71
|
-
// update itself (re-render)
|
|
72
|
-
const bUpdateSelf = this.angularPConnect.shouldComponentUpdate(this);
|
|
73
|
-
// ONLY call updateSelf when the component should update
|
|
74
|
-
if (bUpdateSelf) {
|
|
75
|
-
this.updateSelf();
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
// updateSelf
|
|
79
|
-
updateSelf() {
|
|
80
|
-
// starting very simple...
|
|
81
|
-
// moved this from ngOnInit() and call this from there instead...
|
|
82
|
-
this.configProps$ = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps());
|
|
83
|
-
this.testId = this.configProps$.testId;
|
|
84
|
-
this.label$ = this.configProps$.label;
|
|
85
|
-
this.displayMode$ = this.configProps$.displayMode;
|
|
86
|
-
this.inputMode = NgxCurrencyInputMode.Natural;
|
|
87
|
-
let nValue = this.configProps$.value;
|
|
88
|
-
if (nValue) {
|
|
89
|
-
if (typeof nValue === 'string') {
|
|
90
|
-
nValue = parseFloat(nValue);
|
|
91
|
-
}
|
|
92
|
-
this.value$ = nValue;
|
|
93
|
-
this.fieldControl.setValue(this.value$);
|
|
94
|
-
}
|
|
95
|
-
this.helperText = this.configProps$.helperText;
|
|
96
|
-
this.placeholder = this.configProps$.placeholder || '';
|
|
97
|
-
const currencyISOCode = this.configProps$?.currencyISOCode ?? '';
|
|
98
|
-
const theSymbols = getCurrencyCharacters(currencyISOCode);
|
|
99
|
-
this.currencySymbol = theSymbols.theCurrencySymbol;
|
|
100
|
-
this.thousandSeparator = theSymbols.theDigitGroupSeparator;
|
|
101
|
-
this.decimalSeparator = theSymbols.theDecimalIndicator;
|
|
102
|
-
this.formatter = this.configProps$.formatter;
|
|
103
|
-
if (this.displayMode$ === 'DISPLAY_ONLY' || this.displayMode$ === 'STACKED_LARGE_VAL') {
|
|
104
|
-
const theCurrencyOptions = getCurrencyOptions(currencyISOCode);
|
|
105
|
-
if (this.formatter) {
|
|
106
|
-
this.formattedValue = format(this.value$, this.formatter.toLowerCase(), theCurrencyOptions);
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
this.formattedValue = format(this.value$, 'currency', theCurrencyOptions);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
// timeout and detectChanges to avoid ExpressionChangedAfterItHasBeenCheckedError
|
|
113
|
-
setTimeout(() => {
|
|
114
|
-
if (this.configProps$.required != null) {
|
|
115
|
-
this.bRequired$ = this.utils.getBooleanValue(this.configProps$.required);
|
|
116
|
-
}
|
|
117
|
-
this.cdRef.detectChanges();
|
|
118
|
-
});
|
|
119
|
-
if (this.configProps$.visibility != null) {
|
|
120
|
-
this.bVisible$ = this.utils.getBooleanValue(this.configProps$.visibility);
|
|
121
|
-
}
|
|
122
|
-
// disabled
|
|
123
|
-
if (this.configProps$.disabled != undefined) {
|
|
124
|
-
this.bDisabled$ = this.utils.getBooleanValue(this.configProps$.disabled);
|
|
125
|
-
}
|
|
126
|
-
if (this.bDisabled$) {
|
|
127
|
-
this.fieldControl.disable();
|
|
128
|
-
}
|
|
129
|
-
else {
|
|
130
|
-
this.fieldControl.enable();
|
|
131
|
-
}
|
|
132
|
-
if (this.configProps$.readOnly != null) {
|
|
133
|
-
this.bReadonly$ = this.utils.getBooleanValue(this.configProps$.readOnly);
|
|
134
|
-
}
|
|
135
|
-
if (this.configProps$.currencyISOCode != null) {
|
|
136
|
-
this.currencyISOCode = this.configProps$.currencyISOCode;
|
|
137
|
-
}
|
|
138
|
-
this.decimalPrecision = this.configProps$?.allowDecimals ? 2 : 0;
|
|
139
|
-
this.componentReference = this.pConn$.getStateProps().value;
|
|
140
|
-
// trigger display of error message with field control
|
|
141
|
-
if (this.angularPConnectData.validateMessage != null && this.angularPConnectData.validateMessage != '') {
|
|
142
|
-
const timer = interval(100).subscribe(() => {
|
|
143
|
-
this.fieldControl.setErrors({ message: true });
|
|
144
|
-
this.fieldControl.markAsTouched();
|
|
145
|
-
timer.unsubscribe();
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
fieldOnBlur(event) {
|
|
150
|
-
const oldVal = this.value$ ?? '';
|
|
151
|
-
const isValueChanged = event.target.value.toString() !== oldVal.toString();
|
|
152
|
-
if (isValueChanged) {
|
|
153
|
-
const actionsApi = this.pConn$?.getActionsApi();
|
|
154
|
-
const propName = this.pConn$?.getStateProps().value;
|
|
155
|
-
let value = event?.target?.value;
|
|
156
|
-
value = value?.substring(1);
|
|
157
|
-
// replacing thousand separator with empty string as not required in api call
|
|
158
|
-
const thousandSep = this.thousandSeparator === '.' ? '\\.' : this.thousandSeparator;
|
|
159
|
-
let regExp = new RegExp(String.raw `${thousandSep}`, 'g');
|
|
160
|
-
value = value?.replace(regExp, '');
|
|
161
|
-
// replacing decimal separator with '.'
|
|
162
|
-
if (this.decimalSeparator !== '.') {
|
|
163
|
-
regExp = new RegExp(String.raw `${this.decimalSeparator}`, 'g');
|
|
164
|
-
value = value.replace(regExp, '.');
|
|
165
|
-
}
|
|
166
|
-
handleEvent(actionsApi, 'changeNblur', propName, value);
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
getErrorMessage() {
|
|
170
|
-
let errMessage = '';
|
|
171
|
-
// look for validation messages for json, pre-defined or just an error pushed from workitem (400)
|
|
172
|
-
if (this.fieldControl.hasError('message')) {
|
|
173
|
-
errMessage = this.angularPConnectData.validateMessage ?? '';
|
|
174
|
-
return errMessage;
|
|
175
|
-
}
|
|
176
|
-
if (this.fieldControl.hasError('required')) {
|
|
177
|
-
errMessage = 'You must enter a value';
|
|
178
|
-
}
|
|
179
|
-
else if (this.fieldControl.errors) {
|
|
180
|
-
errMessage = this.fieldControl.errors.toString();
|
|
181
|
-
}
|
|
182
|
-
return errMessage;
|
|
183
|
-
}
|
|
184
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CurrencyComponent, deps: [{ token: i1.AngularPConnectService }, { token: i0.ChangeDetectorRef }, { token: i2.Utils }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
185
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CurrencyComponent, isStandalone: true, selector: "app-currency", 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$\" class=\"psdk-currency-field\">\n <mat-form-field class=\"psdk-full-width\" subscriptSizing=\"dynamic\" [hintLabel]=\"helperText\">\n <mat-label>{{ label$ }}</mat-label>\n <div class=\"psdk-currency-input\">\n <input\n style=\"margin-left: 5px; margin-top: -1rem\"\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 [formControlName]=\"controlName$\"\n [required]=\"bRequired$\"\n [formControl]=\"fieldControl\"\n [attr.data-test-id]=\"testId\"\n (blur)=\"fieldOnBlur($event)\"\n [readonly]=\"bReadonly$\"\n />\n </div>\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%}.psdk-currency-input{display:flex}.psdk-currency-field ::ng-deep .mdc-floating-label{position:initial!important}::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(() => 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"] }] }); }
|
|
186
|
-
}
|
|
187
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CurrencyComponent, decorators: [{
|
|
188
|
-
type: Component,
|
|
189
|
-
args: [{ selector: 'app-currency', standalone: true, imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, NgxCurrencyDirective, forwardRef(() => ComponentMapperComponent)], 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$\" class=\"psdk-currency-field\">\n <mat-form-field class=\"psdk-full-width\" subscriptSizing=\"dynamic\" [hintLabel]=\"helperText\">\n <mat-label>{{ label$ }}</mat-label>\n <div class=\"psdk-currency-input\">\n <input\n style=\"margin-left: 5px; margin-top: -1rem\"\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 [formControlName]=\"controlName$\"\n [required]=\"bRequired$\"\n [formControl]=\"fieldControl\"\n [attr.data-test-id]=\"testId\"\n (blur)=\"fieldOnBlur($event)\"\n [readonly]=\"bReadonly$\"\n />\n </div>\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%}.psdk-currency-input{display:flex}.psdk-currency-field ::ng-deep .mdc-floating-label{position:initial!important}::ng-deep .mat-mdc-form-field-infix{width:auto}\n"] }]
|
|
190
|
-
}], ctorParameters: () => [{ type: i1.AngularPConnectService }, { type: i0.ChangeDetectorRef }, { type: i2.Utils }], propDecorators: { pConn$: [{
|
|
191
|
-
type: Input
|
|
192
|
-
}], formGroup$: [{
|
|
193
|
-
type: Input
|
|
194
|
-
}] } });
|
|
195
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVuY3kuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL2ZpZWxkL2N1cnJlbmN5L2N1cnJlbmN5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy9maWVsZC9jdXJyZW5jeS9jdXJyZW5jeS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBcUIsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ25HLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFhLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRzFFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUU3RixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7Ozs7O0FBZ0J0RCxNQUFNLE9BQU8saUJBQWlCO0lBaUM1QixZQUNVLGVBQXVD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Q0FBQyx3QkFBd0IsQ0FBQyxDQUFDOytJQUd6SSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIGZvcndhcmRSZWYsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgaW50ZXJ2YWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE5neEN1cnJlbmN5RGlyZWN0aXZlLCBOZ3hDdXJyZW5jeUlucHV0TW9kZSB9IGZyb20gJ25neC1jdXJyZW5jeSc7XG5pbXBvcnQgeyBBbmd1bGFyUENvbm5lY3REYXRhLCBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9hbmd1bGFyLXBjb25uZWN0JztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vLi4vX2hlbHBlcnMvdXRpbHMnO1xuaW1wb3J0IHsgQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9jb21wb25lbnQtbWFwcGVyL2NvbXBvbmVudC1tYXBwZXIuY29tcG9uZW50JztcbmltcG9ydCB7IGhhbmRsZUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vX2hlbHBlcnMvZXZlbnQtdXRpbCc7XG5pbXBvcnQgeyBnZXRDdXJyZW5jeUNoYXJhY3RlcnMsIGdldEN1cnJlbmN5T3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL19oZWxwZXJzL2N1cnJlbmN5LXV0aWxzJztcbmltcG9ydCB7IFBDb25uRmllbGRQcm9wcyB9IGZyb20gJy4uLy4uLy4uL190eXBlcy9QQ29ublByb3BzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBmb3JtYXQgfSBmcm9tICcuLi8uLi8uLi9faGVscGVycy9mb3JtYXR0ZXJzJztcblxuaW50ZXJmYWNlIEN1cnJyZW5jeVByb3BzIGV4dGVuZHMgUENvbm5GaWVsZFByb3BzIHtcbiAgLy8gSWYgYW55LCBlbnRlciBhZGRpdGlvbmFsIHByb3BzIHRoYXQgb25seSBleGlzdCBvbiBDdXJyZW5jeSBoZXJlXG4gIGN1cnJlbmN5SVNPQ29kZT86IHN0cmluZztcbiAgYWxsb3dEZWNpbWFsczogYm9vbGVhbjtcbiAgZm9ybWF0dGVyPzogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtY3VycmVuY3knLFxuICB0ZW1wbGF0ZVVybDogJy4vY3VycmVuY3kuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jdXJyZW5jeS5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBNYXRGb3JtRmllbGRNb2R1bGUsIE1hdElucHV0TW9kdWxlLCBOZ3hDdXJyZW5jeURpcmVjdGl2ZSwgZm9yd2FyZFJlZigoKSA9PiBDb21wb25lbnRNYXBwZXJDb21wb25lbnQpXVxufSlcbmV4cG9ydCBjbGFzcyBDdXJyZW5jeUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcENvbm4kOiB0eXBlb2YgUENvbm5lY3Q7XG4gIEBJbnB1dCgpIGZvcm1Hcm91cCQ6IEZvcm1Hcm91cDtcblxuICAvLyBVc2VkIHdpdGggQW5ndWxhclBDb25uZWN0XG4gIGFuZ3VsYXJQQ29ubmVjdERhdGE6IEFuZ3VsYXJQQ29ubmVjdERhdGEgPSB7fTtcbiAgY29uZmlnUHJvcHMkOiBDdXJycmVuY3lQcm9wcztcblxuICBsYWJlbCQgPSAnJztcbiAgdmFsdWUkOiBhbnk7XG4gIGJSZXF1aXJlZCQgPSBmYWxzZTtcbiAgYlJlYWRvbmx5JCA9IGZhbHNlO1xuICBiRGlzYWJsZWQkID0gZmFsc2U7XG4gIGJWaXNpYmxlJCA9IHRydWU7XG4gIGRpc3BsYXlNb2RlJD86IHN0cmluZyA9ICcnO1xuICBjb250cm9sTmFtZSQ6IHN0cmluZztcbiAgYkhhc0Zvcm0kID0gdHJ1ZTtcbiAgY29tcG9uZW50UmVmZXJlbmNlID0gJyc7XG4gIHRlc3RJZDogc3RyaW5nO1xuICBoZWxwZXJUZXh0OiBzdHJpbmc7XG4gIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIGN1cnJlbmN5SVNPQ29kZSA9ICdVU0QnO1xuICBjdXJyZW5jeU9wdGlvbnM6IE9iamVjdCA9IHt9O1xuXG4gIGZpZWxkQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxudW1iZXIgfCBudWxsPihudWxsLCB7IHVwZGF0ZU9uOiAnYmx1cicgfSk7XG4gIGN1cnJlbmN5U3ltYm9sOiBzdHJpbmc7XG4gIHRob3VzYW5kU2VwYXJhdG9yOiBzdHJpbmc7XG4gIGRlY2ltYWxTZXBhcmF0b3I6IHN0cmluZztcbiAgaW5wdXRNb2RlOiBhbnk7XG4gIGRlY2ltYWxQcmVjaXNpb246IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgZm9ybWF0dGVkVmFsdWU6IHN0cmluZztcbiAgZm9ybWF0dGVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYW5ndWxhclBDb25uZWN0OiBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgdXRpbHM6IFV0aWxzXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBGaXJzdCB0aGluZyBpbiBpbml0aWFsaXphdGlvbiBpcyByZWdpc3RlcmluZyBhbmQgc3Vic2NyaWJpbmcgdG8gdGhlIEFuZ3VsYXJQQ29ubmVjdCBzZXJ2aWNlXG4gICAgdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhID0gdGhpcy5hbmd1bGFyUENvbm5lY3QucmVnaXN0ZXJBbmRTdWJzY3JpYmVDb21wb25lbnQodGhpcywgdGhpcy5vblN0YXRlQ2hhbmdlKTtcbiAgICB0aGlzLmNvbnRyb2xOYW1lJCA9IHRoaXMuYW5ndWxhclBDb25uZWN0LmdldENvbXBvbmVudElEKHRoaXMpO1xuXG4gICAgLy8gVGhlbiwgY29udGludWUgb24gd2l0aCBvdGhlciBpbml0aWFsaXphdGlvblxuXG4gICAgLy8gY2FsbCB1cGRhdGVTZWxmIHdoZW4gaW5pdGlhbGl6aW5nXG4gICAgLy8gdGhpcy51cGRhdGVTZWxmKCk7XG4gICAgdGhpcy5jaGVja0FuZFVwZGF0ZSgpO1xuXG4gICAgaWYgKHRoaXMuZm9ybUdyb3VwJCkge1xuICAgICAgLy8gYWRkIGNvbnRyb2wgdG8gZm9ybUdyb3VwXG4gICAgICB0aGlzLmZvcm1Hcm91cCQuYWRkQ29udHJvbCh0aGlzLmNvbnRyb2xOYW1lJCwgdGhpcy5maWVsZENvbnRyb2wpO1xuICAgICAgdGhpcy5maWVsZENvbnRyb2wuc2V0VmFsdWUodGhpcy52YWx1ZSQpO1xuICAgICAgdGhpcy5iSGFzRm9ybSQgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmJSZWFkb25seSQgPSB0cnVlO1xuICAgICAgdGhpcy5iSGFzRm9ybSQgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mb3JtR3JvdXAkKSB7XG4gICAgICB0aGlzLmZvcm1Hcm91cCQucmVtb3ZlQ29udHJvbCh0aGlzLmNvbnRyb2xOYW1lJCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS51bnN1YnNjcmliZUZuKSB7XG4gICAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbigpO1xuICAgIH1cbiAgfVxuXG4gIC8vIENhbGxiYWNrIHBhc3NlZCB3aGVuIHN1YnNjcmliaW5nIHRvIHN0b3JlIGNoYW5nZVxuICBvblN0YXRlQ2hhbmdlKCkge1xuICAgIHRoaXMuY2hlY2tBbmRVcGRhdGUoKTtcbiAgfVxuXG4gIGNoZWNrQW5kVXBkYXRlKCkge1xuICAgIC8vIFNob3VsZCBhbHdheXMgY2hlY2sgdGhlIGJyaWRnZSB0byBzZWUgaWYgdGhlIGNvbXBvbmVudCBzaG91bGRcbiAgICAvLyB1cGRhdGUgaXRzZWxmIChyZS1yZW5kZXIpXG4gICAgY29uc3QgYlVwZGF0ZVNlbGYgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5zaG91bGRDb21wb25lbnRVcGRhdGUodGhpcyk7XG5cbiAgICAvLyBPTkxZIGNhbGwgdXBkYXRlU2VsZiB3aGVuIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZVxuICAgIGlmIChiVXBkYXRlU2VsZikge1xuICAgICAgdGhpcy51cGRhdGVTZWxmKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gdXBkYXRlU2VsZlxuICB1cGRhdGVTZWxmKCk6IHZvaWQge1xuICAgIC8vIHN0YXJ0aW5nIHZlcnkgc2ltcGxlLi4uXG5cbiAgICAvLyBtb3ZlZCB0aGlzIGZyb20gbmdPbkluaXQoKSBhbmQgY2FsbCB0aGlzIGZyb20gdGhlcmUgaW5zdGVhZC4uLlxuICAgIHRoaXMuY29uZmlnUHJvcHMkID0gdGhpcy5wQ29ubiQucmVzb2x2ZUNvbmZpZ1Byb3BzKHRoaXMucENvbm4kLmdldENvbmZpZ1Byb3BzKCkpIGFzIEN1cnJyZW5jeVByb3BzO1xuICAgIHRoaXMudGVzdElkID0gdGhpcy5jb25maWdQcm9wcyQudGVzdElkO1xuICAgIHRoaXMubGFiZWwkID0gdGhpcy5jb25maWdQcm9wcyQubGFiZWw7XG4gICAgdGhpcy5kaXNwbGF5TW9kZSQgPSB0aGlzLmNvbmZpZ1Byb3BzJC5kaXNwbGF5TW9kZTtcbiAgICB0aGlzLmlucHV0TW9kZSA9IE5neEN1cnJlbmN5SW5wdXRNb2RlLk5hdHVyYWw7XG4gICAgbGV0IG5WYWx1ZTogYW55ID0gdGhpcy5jb25maWdQcm9wcyQudmFsdWU7XG4gICAgaWYgKG5WYWx1ZSkge1xuICAgICAgaWYgKHR5cGVvZiBuVmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIG5WYWx1ZSA9IHBhcnNlRmxvYXQoblZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHRoaXMudmFsdWUkID0gblZhbHVlO1xuICAgICAgdGhpcy5maWVsZENvbnRyb2wuc2V0VmFsdWUodGhpcy52YWx1ZSQpO1xuICAgIH1cbiAgICB0aGlzLmhlbHBlclRleHQgPSB0aGlzLmNvbmZpZ1Byb3BzJC5oZWxwZXJUZXh0O1xuICAgIHRoaXMucGxhY2Vob2xkZXIgPSB0aGlzLmNvbmZpZ1Byb3BzJC5wbGFjZWhvbGRlciB8fCAnJztcbiAgICBjb25zdCBjdXJyZW5jeUlTT0NvZGUgPSB0aGlzLmNvbmZpZ1Byb3BzJD8uY3VycmVuY3lJU09Db2RlID8/ICcnO1xuXG4gICAgY29uc3QgdGhlU3ltYm9scyA9IGdldEN1cnJlbmN5Q2hhcmFjdGVycyhjdXJyZW5jeUlTT0NvZGUpO1xuICAgIHRoaXMuY3VycmVuY3lTeW1ib2wgPSB0aGVTeW1ib2xzLnRoZUN1cnJlbmN5U3ltYm9sO1xuICAgIHRoaXMudGhvdXNhbmRTZXBhcmF0b3IgPSB0aGVTeW1ib2xzLnRoZURpZ2l0R3JvdXBTZXBhcmF0b3I7XG4gICAgdGhpcy5kZWNpbWFsU2VwYXJhdG9yID0gdGhlU3ltYm9scy50aGVEZWNpbWFsSW5kaWNhdG9yO1xuICAgIHRoaXMuZm9ybWF0dGVyID0gdGhpcy5jb25maWdQcm9wcyQuZm9ybWF0dGVyO1xuXG4gICAgaWYgKHRoaXMuZGlzcGxheU1vZGUkID09PSAnRElTUExBWV9PTkxZJyB8fCB0aGlzLmRpc3BsYXlNb2RlJCA9PT0gJ1NUQUNLRURfTEFSR0VfVkFMJykge1xuICAgICAgY29uc3QgdGhlQ3VycmVuY3lPcHRpb25zID0gZ2V0Q3VycmVuY3lPcHRpb25zKGN1cnJlbmN5SVNPQ29kZSk7XG4gICAgICBpZiAodGhpcy5mb3JtYXR0ZXIpIHtcbiAgICAgICAgdGhpcy5mb3JtYXR0ZWRWYWx1ZSA9IGZvcm1hdCh0aGlzLnZhbHVlJCwgdGhpcy5mb3JtYXR0ZXIudG9Mb3dlckNhc2UoKSwgdGhlQ3VycmVuY3lPcHRpb25zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZm9ybWF0dGVkVmFsdWUgPSBmb3JtYXQodGhpcy52YWx1ZSQsICdjdXJyZW5jeScsIHRoZUN1cnJlbmN5T3B0aW9ucyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gdGltZW91dCBhbmQgZGV0ZWN0Q2hhbmdlcyB0byBhdm9pZCBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5jb25maWdQcm9wcyQucmVxdWlyZWQgIT0gbnVsbCkge1xuICAgICAgICB0aGlzLmJSZXF1aXJlZCQgPSB0aGlzLnV0aWxzLmdldEJvb2xlYW5WYWx1ZSh0aGlzLmNvbmZpZ1Byb3BzJC5yZXF1aXJlZCk7XG4gICAgICB9XG4gICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmNvbmZpZ1Byb3BzJC52aXNpYmlsaXR5ICE9IG51bGwpIHtcbiAgICAgIHRoaXMuYlZpc2libGUkID0gdGhpcy51dGlscy5nZXRCb29sZWFuVmFsdWUodGhpcy5jb25maWdQcm9wcyQudmlzaWJpbGl0eSk7XG4gICAgfVxuXG4gICAgLy8gZGlzYWJsZWRcbiAgICBpZiAodGhpcy5jb25maWdQcm9wcyQuZGlzYWJsZWQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmJEaXNhYmxlZCQgPSB0aGlzLnV0aWxzLmdldEJvb2xlYW5WYWx1ZSh0aGlzLmNvbmZpZ1Byb3BzJC5kaXNhYmxlZCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYkRpc2FibGVkJCkge1xuICAgICAgdGhpcy5maWVsZENvbnRyb2wuZGlzYWJsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpZWxkQ29udHJvbC5lbmFibGUoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWdQcm9wcyQucmVhZE9ubHkgIT0gbnVsbCkge1xuICAgICAgdGhpcy5iUmVhZG9ubHkkID0gdGhpcy51dGlscy5nZXRCb29sZWFuVmFsdWUodGhpcy5jb25maWdQcm9wcyQucmVhZE9ubHkpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZ1Byb3BzJC5jdXJyZW5jeUlTT0NvZGUgIT0gbnVsbCkge1xuICAgICAgdGhpcy5jdXJyZW5jeUlTT0NvZGUgPSB0aGlzLmNvbmZpZ1Byb3BzJC5jdXJyZW5jeUlTT0NvZGU7XG4gICAgfVxuXG4gICAgdGhpcy5kZWNpbWFsUHJlY2lzaW9uID0gdGhpcy5jb25maWdQcm9wcyQ/LmFsbG93RGVjaW1hbHMgPyAyIDogMDtcblxuICAgIHRoaXMuY29tcG9uZW50UmVmZXJlbmNlID0gdGhpcy5wQ29ubiQuZ2V0U3RhdGVQcm9wcygpLnZhbHVlO1xuXG4gICAgLy8gdHJpZ2dlciBkaXNwbGF5IG9mIGVycm9yIG1lc3NhZ2Ugd2l0aCBmaWVsZCBjb250cm9sXG4gICAgaWYgKHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS52YWxpZGF0ZU1lc3NhZ2UgIT0gbnVsbCAmJiB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudmFsaWRhdGVNZXNzYWdlICE9ICcnKSB7XG4gICAgICBjb25zdCB0aW1lciA9IGludGVydmFsKDEwMCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5maWVsZENvbnRyb2wuc2V0RXJyb3JzKHsgbWVzc2FnZTogdHJ1ZSB9KTtcbiAgICAgICAgdGhpcy5maWVsZENvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuXG4gICAgICAgIHRpbWVyLnVuc3Vic2NyaWJlKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBmaWVsZE9uQmx1cihldmVudDogYW55KSB7XG4gICAgY29uc3Qgb2xkVmFsID0gdGhpcy52YWx1ZSQgPz8gJyc7XG4gICAgY29uc3QgaXNWYWx1ZUNoYW5nZWQgPSBldmVudC50YXJnZXQudmFsdWUudG9TdHJpbmcoKSAhPT0gb2xkVmFsLnRvU3RyaW5nKCk7XG5cbiAgICBpZiAoaXNWYWx1ZUNoYW5nZWQpIHtcbiAgICAgIGNvbnN0IGFjdGlvbnNBcGkgPSB0aGlzLnBDb25uJD8uZ2V0QWN0aW9uc0FwaSgpO1xuICAgICAgY29uc3QgcHJvcE5hbWUgPSB0aGlzLnBDb25uJD8uZ2V0U3RhdGVQcm9wcygpLnZhbHVlO1xuICAgICAgbGV0IHZhbHVlID0gZXZlbnQ/LnRhcmdldD8udmFsdWU7XG4gICAgICB2YWx1ZSA9IHZhbHVlPy5zdWJzdHJpbmcoMSk7XG4gICAgICAvLyByZXBsYWNpbmcgdGhvdXNhbmQgc2VwYXJhdG9yIHdpdGggZW1wdHkgc3RyaW5nIGFzIG5vdCByZXF1aXJlZCBpbiBhcGkgY2FsbFxuICAgICAgY29uc3QgdGhvdXNhbmRTZXAgPSB0aGlzLnRob3VzYW5kU2VwYXJhdG9yID09PSAnLicgPyAnXFxcXC4nIDogdGhpcy50aG91c2FuZFNlcGFyYXRvcjtcbiAgICAgIGxldCByZWdFeHAgPSBuZXcgUmVnRXhwKFN0cmluZy5yYXdgJHt0aG91c2FuZFNlcH1gLCAnZycpO1xuICAgICAgdmFsdWUgPSB2YWx1ZT8ucmVwbGFjZShyZWdFeHAsICcnKTtcbiAgICAgIC8vIHJlcGxhY2luZyBkZWNpbWFsIHNlcGFyYXRvciB3aXRoICcuJ1xuICAgICAgaWYgKHRoaXMuZGVjaW1hbFNlcGFyYXRvciAhPT0gJy4nKSB7XG4gICAgICAgIHJlZ0V4cCA9IG5ldyBSZWdFeHAoU3RyaW5nLnJhd2Ake3RoaXMuZGVjaW1hbFNlcGFyYXRvcn1gLCAnZycpO1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UocmVnRXhwLCAnLicpO1xuICAgICAgfVxuICAgICAgaGFuZGxlRXZlbnQoYWN0aW9uc0FwaSwgJ2NoYW5nZU5ibHVyJywgcHJvcE5hbWUsIHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBnZXRFcnJvck1lc3NhZ2UoKSB7XG4gICAgbGV0IGVyck1lc3NhZ2UgPSAnJztcblxuICAgIC8vIGxvb2sgZm9yIHZhbGlkYXRpb24gbWVzc2FnZXMgZm9yIGpzb24sIHByZS1kZWZpbmVkIG9yIGp1c3QgYW4gZXJyb3IgcHVzaGVkIGZyb20gd29ya2l0ZW0gKDQwMClcbiAgICBpZiAodGhpcy5maWVsZENvbnRyb2wuaGFzRXJyb3IoJ21lc3NhZ2UnKSkge1xuICAgICAgZXJyTWVzc2FnZSA9IHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS52YWxpZGF0ZU1lc3NhZ2UgPz8gJyc7XG4gICAgICByZXR1cm4gZXJyTWVzc2FnZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZmllbGRDb250cm9sLmhhc0Vycm9yKCdyZXF1aXJlZCcpKSB7XG4gICAgICBlcnJNZXNzYWdlID0gJ1lvdSBtdXN0IGVudGVyIGEgdmFsdWUnO1xuICAgIH0gZWxzZSBpZiAodGhpcy5maWVsZENvbnRyb2wuZXJyb3JzKSB7XG4gICAgICBlcnJNZXNzYWdlID0gdGhpcy5maWVsZENvbnRyb2wuZXJyb3JzLnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVyck1lc3NhZ2U7XG4gIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCJkaXNwbGF5TW9kZSQ7IGVsc2Ugbm9EaXNwbGF5TW9kZVwiPlxuICA8Y29tcG9uZW50LW1hcHBlciAqbmdJZj1cImJWaXNpYmxlJCAhPT0gZmFsc2VcIiBuYW1lPVwiRmllbGRWYWx1ZUxpc3RcIiBbcHJvcHNdPVwieyBsYWJlbCQsIHZhbHVlJDogZm9ybWF0dGVkVmFsdWUsIGRpc3BsYXlNb2RlJCB9XCI+PC9jb21wb25lbnQtbWFwcGVyPlxuPC9kaXY+XG48bmctdGVtcGxhdGUgI25vRGlzcGxheU1vZGU+XG4gIDxkaXYgKm5nSWY9XCJiSGFzRm9ybSQ7IGVsc2Ugbm9FZGl0XCI+XG4gICAgPGRpdiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cCRcIiAqbmdJZj1cImJWaXNpYmxlJFwiIGNsYXNzPVwicHNkay1jdXJyZW5jeS1maWVsZFwiPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwicHNkay1mdWxsLXdpZHRoXCIgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiIFtoaW50TGFiZWxdPVwiaGVscGVyVGV4dFwiPlxuICAgICAgICA8bWF0LWxhYmVsPnt7IGxhYmVsJCB9fTwvbWF0LWxhYmVsPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHNkay1jdXJyZW5jeS1pbnB1dFwiPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tbGVmdDogNXB4OyBtYXJnaW4tdG9wOiAtMXJlbVwiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgY3VycmVuY3lNYXNrXG4gICAgICAgICAgICBbb3B0aW9uc109XCJ7XG4gICAgICAgICAgICAgIHByZWZpeDogY3VycmVuY3lTeW1ib2wsXG4gICAgICAgICAgICAgIHRob3VzYW5kczogdGhvdXNhbmRTZXBhcmF0b3IsXG4gICAgICAgICAgICAgIGRlY2ltYWw6IGRlY2ltYWxTZXBhcmF0b3IsXG4gICAgICAgICAgICAgIGFsaWduOiAnbGVmdCcsXG4gICAgICAgICAgICAgIG51bGxhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICBwcmVjaXNpb246IGRlY2ltYWxQcmVjaXNpb24sXG4gICAgICAgICAgICAgIGlucHV0TW9kZTogaW5wdXRNb2RlXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2xOYW1lJFwiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwiYlJlcXVpcmVkJFwiXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZmllbGRDb250cm9sXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtdGVzdC1pZF09XCJ0ZXN0SWRcIlxuICAgICAgICAgICAgKGJsdXIpPVwiZmllbGRPbkJsdXIoJGV2ZW50KVwiXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwiYlJlYWRvbmx5JFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmaWVsZENvbnRyb2wuaW52YWxpZFwiPnt7IGdldEVycm9yTWVzc2FnZSgpIH19PC9tYXQtZXJyb3I+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI25vRWRpdD5cbiAgPGNvbXBvbmVudC1tYXBwZXIgKm5nSWY9XCJiVmlzaWJsZSQgIT09IGZhbHNlXCIgbmFtZT1cIlRleHRcIiBbcHJvcHNdPVwieyBwQ29ubiQsIGZvcm1hdEFzJDogJ3RleHQnIH1cIj48L2NvbXBvbmVudC1tYXBwZXI+XG48L25nLXRlbXBsYXRlPlxuIl19
|