@pega/angular-sdk-components 0.23.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -0
- package/_shared/styles.scss +28 -0
- package/esm2022/lib/_bridge/angular-pconnect.mjs +416 -0
- package/esm2022/lib/_bridge/component-mapper/component-mapper.component.mjs +114 -0
- package/esm2022/lib/_bridge/helpers/sdk-pega-component-map.mjs +228 -0
- package/esm2022/lib/_bridge/helpers/sdk_component_map.mjs +142 -0
- package/esm2022/lib/_components/designSystemExtension/alert/alert.component.mjs +50 -0
- package/esm2022/lib/_components/designSystemExtension/alert-banner/alert-banner.component.mjs +29 -0
- package/esm2022/lib/_components/designSystemExtension/banner/banner.component.mjs +31 -0
- package/esm2022/lib/_components/designSystemExtension/case-create-stage/case-create-stage.component.mjs +51 -0
- package/esm2022/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.mjs +80 -0
- package/esm2022/lib/_components/designSystemExtension/material-details/material-details.component.mjs +37 -0
- package/esm2022/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.mjs +31 -0
- package/esm2022/lib/_components/designSystemExtension/material-summary-item/material-summary-item.component.mjs +36 -0
- package/esm2022/lib/_components/designSystemExtension/material-summary-list/material-summary-list.component.mjs +25 -0
- package/esm2022/lib/_components/designSystemExtension/material-utility/material-utility.component.mjs +28 -0
- package/esm2022/lib/_components/designSystemExtension/material-vertical-tabs/material-vertical-tabs.component.mjs +42 -0
- package/esm2022/lib/_components/designSystemExtension/operator/operator.component.mjs +136 -0
- package/esm2022/lib/_components/designSystemExtension/pulse/pulse.component.mjs +33 -0
- package/esm2022/lib/_components/designSystemExtension/rich-text-editor/rich-text-editor.component.mjs +93 -0
- package/esm2022/lib/_components/designSystemExtension/wss-quick-create/wss-quick-create.component.mjs +18 -0
- package/esm2022/lib/_components/field/auto-complete/auto-complete.component.mjs +286 -0
- package/esm2022/lib/_components/field/cancel-alert/cancel-alert.component.mjs +98 -0
- package/esm2022/lib/_components/field/check-box/check-box.component.mjs +157 -0
- package/esm2022/lib/_components/field/currency/currency.component.mjs +160 -0
- package/esm2022/lib/_components/field/date/date.component.mjs +219 -0
- package/esm2022/lib/_components/field/date-time/date-time.component.mjs +200 -0
- package/esm2022/lib/_components/field/decimal/decimal.component.mjs +157 -0
- package/esm2022/lib/_components/field/dropdown/dropdown.component.mjs +197 -0
- package/esm2022/lib/_components/field/email/email.component.mjs +150 -0
- package/esm2022/lib/_components/field/integer/integer.component.mjs +155 -0
- package/esm2022/lib/_components/field/list-view-action-buttons/list-view-action-buttons.component.mjs +44 -0
- package/esm2022/lib/_components/field/percentage/percentage.component.mjs +155 -0
- package/esm2022/lib/_components/field/phone/phone.component.mjs +167 -0
- package/esm2022/lib/_components/field/radio-buttons/radio-buttons.component.mjs +189 -0
- package/esm2022/lib/_components/field/rich-text/rich-text.component.mjs +103 -0
- package/esm2022/lib/_components/field/scalar-list/scalar-list.component.mjs +95 -0
- package/esm2022/lib/_components/field/semantic-link/semantic-link.component.mjs +57 -0
- package/esm2022/lib/_components/field/text/text.component.mjs +138 -0
- package/esm2022/lib/_components/field/text-area/text-area.component.mjs +155 -0
- package/esm2022/lib/_components/field/text-content/text-content.component.mjs +69 -0
- package/esm2022/lib/_components/field/text-input/text-input.component.mjs +152 -0
- package/esm2022/lib/_components/field/time/time.component.mjs +151 -0
- package/esm2022/lib/_components/field/url/url.component.mjs +150 -0
- package/esm2022/lib/_components/field/user-reference/user-reference.component.mjs +175 -0
- package/esm2022/lib/_components/infra/Containers/flow-container/flow-container.component.mjs +491 -0
- package/esm2022/lib/_components/infra/Containers/flow-container/helpers.mjs +68 -0
- package/esm2022/lib/_components/infra/Containers/hybrid-view-container/hybrid-view-container.component.mjs +24 -0
- package/esm2022/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.mjs +314 -0
- package/esm2022/lib/_components/infra/Containers/preview-view-container/preview-view-container.component.mjs +32 -0
- package/esm2022/lib/_components/infra/Containers/view-container/view-container.component.mjs +219 -0
- package/esm2022/lib/_components/infra/action-buttons/action-buttons.component.mjs +31 -0
- package/esm2022/lib/_components/infra/assignment/assignment.component.mjs +387 -0
- package/esm2022/lib/_components/infra/assignment-card/assignment-card.component.mjs +47 -0
- package/esm2022/lib/_components/infra/dashboard-filter/dashboard-filter.component.mjs +88 -0
- package/esm2022/lib/_components/infra/defer-load/defer-load.component.mjs +144 -0
- package/esm2022/lib/_components/infra/error-boundary/error-boundary.component.mjs +18 -0
- package/esm2022/lib/_components/infra/multi-step/multi-step.component.mjs +80 -0
- package/esm2022/lib/_components/infra/navbar/navbar.component.mjs +132 -0
- package/esm2022/lib/_components/infra/reference/reference.component.mjs +133 -0
- package/esm2022/lib/_components/infra/region/region.component.mjs +33 -0
- package/esm2022/lib/_components/infra/root-container/root-container.component.mjs +228 -0
- package/esm2022/lib/_components/infra/stages/stages.component.mjs +62 -0
- package/esm2022/lib/_components/infra/view/view.component.mjs +173 -0
- package/esm2022/lib/_components/template/app-shell/app-shell.component.mjs +140 -0
- package/esm2022/lib/_components/template/banner-page/banner-page.component.mjs +43 -0
- package/esm2022/lib/_components/template/case-summary/case-summary.component.mjs +72 -0
- package/esm2022/lib/_components/template/case-view/case-view.component.mjs +196 -0
- package/esm2022/lib/_components/template/confirmation/confirmation.component.mjs +68 -0
- package/esm2022/lib/_components/template/data-reference/data-reference.component.mjs +239 -0
- package/esm2022/lib/_components/template/default-form/default-form.component.mjs +61 -0
- package/esm2022/lib/_components/template/details/details.component.mjs +102 -0
- package/esm2022/lib/_components/template/details-narrow-wide/details-narrow-wide.component.mjs +72 -0
- package/esm2022/lib/_components/template/details-one-column/details-one-column.component.mjs +71 -0
- package/esm2022/lib/_components/template/details-sub-tabs/details-sub-tabs.component.mjs +66 -0
- package/esm2022/lib/_components/template/details-three-column/details-three-column.component.mjs +80 -0
- package/esm2022/lib/_components/template/details-two-column/details-two-column.component.mjs +77 -0
- package/esm2022/lib/_components/template/details-wide-narrow/details-wide-narrow.component.mjs +77 -0
- package/esm2022/lib/_components/template/dynamic-tabs/dynamic-tabs.component.mjs +65 -0
- package/esm2022/lib/_components/template/field-group-list/field-group-list.component.mjs +23 -0
- package/esm2022/lib/_components/template/field-group-template/field-group-template.component.mjs +134 -0
- package/esm2022/lib/_components/template/field-value-list/field-value-list.component.mjs +19 -0
- package/esm2022/lib/_components/template/inline-dashboard/inline-dashboard.component.mjs +22 -0
- package/esm2022/lib/_components/template/inline-dashboard-page/inline-dashboard-page.component.mjs +40 -0
- package/esm2022/lib/_components/template/list-page/list-page.component.mjs +14 -0
- package/esm2022/lib/_components/template/list-view/DefaultViewMeta.mjs +208 -0
- package/esm2022/lib/_components/template/list-view/list-view.component.mjs +1198 -0
- package/esm2022/lib/_components/template/list-view/listViewHelpers.mjs +61 -0
- package/esm2022/lib/_components/template/list-view/utils.mjs +660 -0
- package/esm2022/lib/_components/template/multi-reference-readonly/multi-reference-readonly.component.mjs +44 -0
- package/esm2022/lib/_components/template/narrow-wide-form/narrow-wide-form.component.mjs +30 -0
- package/esm2022/lib/_components/template/one-column/one-column.component.mjs +30 -0
- package/esm2022/lib/_components/template/one-column-page/one-column-page.component.mjs +16 -0
- package/esm2022/lib/_components/template/one-column-tab/one-column-tab.component.mjs +30 -0
- package/esm2022/lib/_components/template/page/page.component.mjs +52 -0
- package/esm2022/lib/_components/template/promoted-filters/promoted-filters.component.mjs +149 -0
- package/esm2022/lib/_components/template/repeating-structures/repeating-structures.component.mjs +139 -0
- package/esm2022/lib/_components/template/simple-table/simple-table.component.mjs +106 -0
- package/esm2022/lib/_components/template/simple-table-manual/helpers.mjs +270 -0
- package/esm2022/lib/_components/template/simple-table-manual/simple-table-manual.component.mjs +760 -0
- package/esm2022/lib/_components/template/simple-table-select/simple-table-select.component.mjs +131 -0
- package/esm2022/lib/_components/template/single-reference-readonly/single-reference-readonly.component.mjs +16 -0
- package/esm2022/lib/_components/template/sub-tabs/sub-tabs.component.mjs +67 -0
- package/esm2022/lib/_components/template/three-column/three-column.component.mjs +30 -0
- package/esm2022/lib/_components/template/three-column-page/three-column-page.component.mjs +16 -0
- package/esm2022/lib/_components/template/two-column/two-column.component.mjs +30 -0
- package/esm2022/lib/_components/template/two-column-page/two-column-page.component.mjs +40 -0
- package/esm2022/lib/_components/template/two-column-tab/two-column-tab.component.mjs +30 -0
- package/esm2022/lib/_components/template/utils.mjs +22 -0
- package/esm2022/lib/_components/template/wide-narrow-form/wide-narrow-form.component.mjs +30 -0
- package/esm2022/lib/_components/template/wide-narrow-page/wide-narrow-page.component.mjs +53 -0
- package/esm2022/lib/_components/template/wss-nav-bar/wss-nav-bar.component.mjs +135 -0
- package/esm2022/lib/_components/widget/app-announcement/app-announcement.component.mjs +24 -0
- package/esm2022/lib/_components/widget/attachment/attachment.component.mjs +588 -0
- package/esm2022/lib/_components/widget/case-history/case-history.component.mjs +81 -0
- package/esm2022/lib/_components/widget/feed-container/feed-container.component.mjs +525 -0
- package/esm2022/lib/_components/widget/file-utility/file-utility.component.mjs +631 -0
- package/esm2022/lib/_components/widget/list-utility/list-utility.component.mjs +57 -0
- package/esm2022/lib/_components/widget/quick-create/quick-create.component.mjs +75 -0
- package/esm2022/lib/_components/widget/todo/todo.component.mjs +213 -0
- package/esm2022/lib/_components/widget/utility/utility.component.mjs +34 -0
- package/esm2022/lib/_directives/thousand-seperator.directive.mjs +28 -0
- package/esm2022/lib/_helpers/case-utils.mjs +71 -0
- package/esm2022/lib/_helpers/common.mjs +20 -0
- package/esm2022/lib/_helpers/currency-utils.mjs +57 -0
- package/esm2022/lib/_helpers/date-format-utils.mjs +68 -0
- package/esm2022/lib/_helpers/event-util.mjs +19 -0
- package/esm2022/lib/_helpers/field-group-utils.mjs +47 -0
- package/esm2022/lib/_helpers/filter-utils.mjs +106 -0
- package/esm2022/lib/_helpers/formatters/currency-map.mjs +903 -0
- package/esm2022/lib/_helpers/formatters/format-utils.mjs +68 -0
- package/esm2022/lib/_helpers/tab-utils.mjs +59 -0
- package/esm2022/lib/_helpers/template-utils.mjs +56 -0
- package/esm2022/lib/_helpers/utils.mjs +386 -0
- package/esm2022/lib/_helpers/versionHelpers.mjs +12 -0
- package/esm2022/lib/_messages/error-messages.service.mjs +31 -0
- package/esm2022/lib/_messages/get-login-status.service.mjs +26 -0
- package/esm2022/lib/_messages/oauth-response.service.mjs +30 -0
- package/esm2022/lib/_messages/progress-spinner.service.mjs +30 -0
- package/esm2022/lib/_messages/reset-pconnect.service.mjs +31 -0
- package/esm2022/lib/_messages/update-worklist.service.mjs +30 -0
- package/esm2022/lib/_services/case.service.mjs +32 -0
- package/esm2022/lib/_services/datapage.service.mjs +52 -0
- package/esm2022/lib/_services/endpoints.mjs +61 -0
- package/esm2022/lib/_services/server-config.service.mjs +52 -0
- package/esm2022/lib/_types/PConnProps.interface.mjs +2 -0
- package/esm2022/pega-angular-sdk-components.mjs +5 -0
- package/esm2022/public-api.mjs +138 -0
- package/esm2022/sdk-local-component-map.mjs +9 -0
- package/fesm2022/pega-angular-sdk-components.mjs +17380 -0
- package/fesm2022/pega-angular-sdk-components.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/_bridge/angular-pconnect.d.ts +140 -0
- package/lib/_bridge/component-mapper/component-mapper.component.d.ts +20 -0
- package/lib/_bridge/helpers/sdk-pega-component-map.d.ts +213 -0
- package/lib/_bridge/helpers/sdk_component_map.d.ts +3 -0
- package/lib/_components/designSystemExtension/alert/alert.component.d.ts +12 -0
- package/lib/_components/designSystemExtension/alert-banner/alert-banner.component.d.ts +13 -0
- package/lib/_components/designSystemExtension/banner/banner.component.d.ts +15 -0
- package/lib/_components/designSystemExtension/case-create-stage/case-create-stage.component.d.ts +20 -0
- package/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.d.ts +18 -0
- package/lib/_components/designSystemExtension/material-details/material-details.component.d.ts +15 -0
- package/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.d.ts +12 -0
- package/lib/_components/designSystemExtension/material-summary-item/material-summary-item.component.d.ts +15 -0
- package/lib/_components/designSystemExtension/material-summary-list/material-summary-list.component.d.ts +9 -0
- package/lib/_components/designSystemExtension/material-utility/material-utility.component.d.ts +16 -0
- package/lib/_components/designSystemExtension/material-vertical-tabs/material-vertical-tabs.component.d.ts +11 -0
- package/lib/_components/designSystemExtension/operator/operator.component.d.ts +25 -0
- package/lib/_components/designSystemExtension/pulse/pulse.component.d.ts +16 -0
- package/lib/_components/designSystemExtension/rich-text-editor/rich-text-editor.component.d.ts +23 -0
- package/lib/_components/designSystemExtension/wss-quick-create/wss-quick-create.component.d.ts +7 -0
- package/lib/_components/field/auto-complete/auto-complete.component.d.ts +74 -0
- package/lib/_components/field/cancel-alert/cancel-alert.component.d.ts +24 -0
- package/lib/_components/field/check-box/check-box.component.d.ts +48 -0
- package/lib/_components/field/currency/currency.component.d.ts +50 -0
- package/lib/_components/field/date/date.component.d.ts +65 -0
- package/lib/_components/field/date-time/date-time.component.d.ts +55 -0
- package/lib/_components/field/decimal/decimal.component.d.ts +46 -0
- package/lib/_components/field/dropdown/dropdown.component.d.ts +60 -0
- package/lib/_components/field/email/email.component.d.ts +44 -0
- package/lib/_components/field/integer/integer.component.d.ts +44 -0
- package/lib/_components/field/list-view-action-buttons/list-view-action-buttons.component.d.ts +15 -0
- package/lib/_components/field/percentage/percentage.component.d.ts +44 -0
- package/lib/_components/field/phone/phone.component.d.ts +48 -0
- package/lib/_components/field/radio-buttons/radio-buttons.component.d.ts +60 -0
- package/lib/_components/field/rich-text/rich-text.component.d.ts +42 -0
- package/lib/_components/field/scalar-list/scalar-list.component.d.ts +37 -0
- package/lib/_components/field/semantic-link/semantic-link.component.d.ts +30 -0
- package/lib/_components/field/text/text.component.d.ts +40 -0
- package/lib/_components/field/text-area/text-area.component.d.ts +45 -0
- package/lib/_components/field/text-content/text-content.component.d.ts +30 -0
- package/lib/_components/field/text-input/text-input.component.d.ts +45 -0
- package/lib/_components/field/time/time.component.d.ts +43 -0
- package/lib/_components/field/url/url.component.d.ts +43 -0
- package/lib/_components/field/user-reference/user-reference.component.d.ts +39 -0
- package/lib/_components/infra/Containers/flow-container/flow-container.component.d.ts +85 -0
- package/lib/_components/infra/Containers/flow-container/helpers.d.ts +2 -0
- package/lib/_components/infra/Containers/hybrid-view-container/hybrid-view-container.component.d.ts +15 -0
- package/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.d.ts +71 -0
- package/lib/_components/infra/Containers/preview-view-container/preview-view-container.component.d.ts +15 -0
- package/lib/_components/infra/Containers/view-container/view-container.component.d.ts +51 -0
- package/lib/_components/infra/action-buttons/action-buttons.component.d.ts +12 -0
- package/lib/_components/infra/assignment/assignment.component.d.ts +72 -0
- package/lib/_components/infra/assignment-card/assignment-card.component.d.ts +18 -0
- package/lib/_components/infra/dashboard-filter/dashboard-filter.component.d.ts +20 -0
- package/lib/_components/infra/defer-load/defer-load.component.d.ts +46 -0
- package/lib/_components/infra/error-boundary/error-boundary.component.d.ts +8 -0
- package/lib/_components/infra/multi-step/multi-step.component.d.ts +31 -0
- package/lib/_components/infra/navbar/navbar.component.d.ts +51 -0
- package/lib/_components/infra/reference/reference.component.d.ts +16 -0
- package/lib/_components/infra/region/region.component.d.ts +14 -0
- package/lib/_components/infra/root-container/root-container.component.d.ts +35 -0
- package/lib/_components/infra/stages/stages.component.d.ts +29 -0
- package/lib/_components/infra/view/view.component.d.ts +40 -0
- package/lib/_components/template/app-shell/app-shell.component.d.ts +55 -0
- package/lib/_components/template/banner-page/banner-page.component.d.ts +27 -0
- package/lib/_components/template/case-summary/case-summary.component.d.ts +34 -0
- package/lib/_components/template/case-view/case-view.component.d.ts +56 -0
- package/lib/_components/template/confirmation/confirmation.component.d.ts +38 -0
- package/lib/_components/template/data-reference/data-reference.component.d.ts +41 -0
- package/lib/_components/template/default-form/default-form.component.d.ts +21 -0
- package/lib/_components/template/details/details.component.d.ts +20 -0
- package/lib/_components/template/details-narrow-wide/details-narrow-wide.component.d.ts +21 -0
- package/lib/_components/template/details-one-column/details-one-column.component.d.ts +22 -0
- package/lib/_components/template/details-sub-tabs/details-sub-tabs.component.d.ts +24 -0
- package/lib/_components/template/details-three-column/details-three-column.component.d.ts +25 -0
- package/lib/_components/template/details-two-column/details-two-column.component.d.ts +25 -0
- package/lib/_components/template/details-wide-narrow/details-wide-narrow.component.d.ts +24 -0
- package/lib/_components/template/dynamic-tabs/dynamic-tabs.component.d.ts +20 -0
- package/lib/_components/template/field-group-list/field-group-list.component.d.ts +9 -0
- package/lib/_components/template/field-group-template/field-group-template.component.d.ts +52 -0
- package/lib/_components/template/field-value-list/field-value-list.component.d.ts +8 -0
- package/lib/_components/template/inline-dashboard/inline-dashboard.component.d.ts +16 -0
- package/lib/_components/template/inline-dashboard-page/inline-dashboard-page.component.d.ts +25 -0
- package/lib/_components/template/list-page/list-page.component.d.ts +7 -0
- package/lib/_components/template/list-view/DefaultViewMeta.d.ts +1 -0
- package/lib/_components/template/list-view/list-view.component.d.ts +157 -0
- package/lib/_components/template/list-view/listViewHelpers.d.ts +1 -0
- package/lib/_components/template/list-view/utils.d.ts +118 -0
- package/lib/_components/template/multi-reference-readonly/multi-reference-readonly.component.d.ts +25 -0
- package/lib/_components/template/narrow-wide-form/narrow-wide-form.component.d.ts +14 -0
- package/lib/_components/template/one-column/one-column.component.d.ts +14 -0
- package/lib/_components/template/one-column-page/one-column-page.component.d.ts +9 -0
- package/lib/_components/template/one-column-tab/one-column-tab.component.d.ts +14 -0
- package/lib/_components/template/page/page.component.d.ts +25 -0
- package/lib/_components/template/promoted-filters/promoted-filters.component.d.ts +35 -0
- package/lib/_components/template/repeating-structures/repeating-structures.component.d.ts +37 -0
- package/lib/_components/template/simple-table/simple-table.component.d.ts +43 -0
- package/lib/_components/template/simple-table-manual/helpers.d.ts +81 -0
- package/lib/_components/template/simple-table-manual/simple-table-manual.component.d.ts +159 -0
- package/lib/_components/template/simple-table-select/simple-table-select.component.d.ts +32 -0
- package/lib/_components/template/single-reference-readonly/single-reference-readonly.component.d.ts +9 -0
- package/lib/_components/template/sub-tabs/sub-tabs.component.d.ts +26 -0
- package/lib/_components/template/three-column/three-column.component.d.ts +14 -0
- package/lib/_components/template/three-column-page/three-column-page.component.d.ts +9 -0
- package/lib/_components/template/two-column/two-column.component.d.ts +14 -0
- package/lib/_components/template/two-column-page/two-column-page.component.d.ts +17 -0
- package/lib/_components/template/two-column-tab/two-column-tab.component.d.ts +14 -0
- package/lib/_components/template/utils.d.ts +2 -0
- package/lib/_components/template/wide-narrow-form/wide-narrow-form.component.d.ts +14 -0
- package/lib/_components/template/wide-narrow-page/wide-narrow-page.component.d.ts +20 -0
- package/lib/_components/template/wss-nav-bar/wss-nav-bar.component.d.ts +50 -0
- package/lib/_components/widget/app-announcement/app-announcement.component.d.ts +19 -0
- package/lib/_components/widget/attachment/attachment.component.d.ts +99 -0
- package/lib/_components/widget/case-history/case-history.component.d.ts +24 -0
- package/lib/_components/widget/feed-container/feed-container.component.d.ts +49 -0
- package/lib/_components/widget/file-utility/file-utility.component.d.ts +150 -0
- package/lib/_components/widget/list-utility/list-utility.component.d.ts +23 -0
- package/lib/_components/widget/quick-create/quick-create.component.d.ts +29 -0
- package/lib/_components/widget/todo/todo.component.d.ts +64 -0
- package/lib/_components/widget/utility/utility.component.d.ts +25 -0
- package/lib/_directives/thousand-seperator.directive.d.ts +9 -0
- package/lib/_helpers/case-utils.d.ts +19 -0
- package/lib/_helpers/common.d.ts +3 -0
- package/lib/_helpers/currency-utils.d.ts +10 -0
- package/lib/_helpers/date-format-utils.d.ts +12 -0
- package/lib/_helpers/event-util.d.ts +2 -0
- package/lib/_helpers/field-group-utils.d.ts +16 -0
- package/lib/_helpers/filter-utils.d.ts +46 -0
- package/lib/_helpers/formatters/currency-map.d.ts +1132 -0
- package/lib/_helpers/formatters/format-utils.d.ts +8 -0
- package/lib/_helpers/tab-utils.d.ts +4 -0
- package/lib/_helpers/template-utils.d.ts +16 -0
- package/lib/_helpers/utils.d.ts +32 -0
- package/lib/_helpers/versionHelpers.d.ts +8 -0
- package/lib/_messages/error-messages.service.d.ts +15 -0
- package/lib/_messages/get-login-status.service.d.ts +10 -0
- package/lib/_messages/oauth-response.service.d.ts +14 -0
- package/lib/_messages/progress-spinner.service.d.ts +14 -0
- package/lib/_messages/reset-pconnect.service.d.ts +15 -0
- package/lib/_messages/update-worklist.service.d.ts +14 -0
- package/lib/_services/case.service.d.ts +12 -0
- package/lib/_services/datapage.service.d.ts +14 -0
- package/lib/_services/endpoints.d.ts +39 -0
- package/lib/_services/server-config.service.d.ts +31 -0
- package/lib/_types/PConnProps.interface.d.ts +17 -0
- package/package.json +28 -0
- package/public-api.d.ts +133 -0
- package/sdk-local-component-map.d.ts +2 -0
- package/sdk-local-component-map.ts +12 -0
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { Component, Input, forwardRef } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { MatSnackBarModule } from '@angular/material/snack-bar';
|
|
4
|
+
import { ComponentMapperComponent } from '../../../_bridge/component-mapper/component-mapper.component';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "../../../_bridge/angular-pconnect";
|
|
7
|
+
import * as i2 from "../../../_messages/error-messages.service";
|
|
8
|
+
import * as i3 from "@angular/material/snack-bar";
|
|
9
|
+
import * as i4 from "@angular/common";
|
|
10
|
+
export class AppShellComponent {
|
|
11
|
+
constructor(angularPConnect, erService, snackBar, ngZone) {
|
|
12
|
+
this.angularPConnect = angularPConnect;
|
|
13
|
+
this.erService = erService;
|
|
14
|
+
this.snackBar = snackBar;
|
|
15
|
+
this.ngZone = ngZone;
|
|
16
|
+
// For interaction with AngularPConnect
|
|
17
|
+
this.angularPConnectData = {};
|
|
18
|
+
this.bShowAppShell$ = false;
|
|
19
|
+
this.appName$ = 'PEGA';
|
|
20
|
+
this.sErrorMessages = '';
|
|
21
|
+
this.bOkDisplayError = false;
|
|
22
|
+
this.links = [];
|
|
23
|
+
}
|
|
24
|
+
ngOnInit() {
|
|
25
|
+
// First thing in initialization is registering and subscribing to the AngularPConnect service
|
|
26
|
+
this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange);
|
|
27
|
+
// Then, continue on with other initialization
|
|
28
|
+
this.configProps$ = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps());
|
|
29
|
+
// making a copy, so can add info
|
|
30
|
+
this.pages$ = this.configProps$.pages;
|
|
31
|
+
this.links = this.pages$.filter((page, index) => {
|
|
32
|
+
return index !== 0;
|
|
33
|
+
});
|
|
34
|
+
if (this.pages$) {
|
|
35
|
+
this.bShowAppShell$ = true;
|
|
36
|
+
}
|
|
37
|
+
this.caseTypes$ = this.configProps$.caseTypes;
|
|
38
|
+
this.arChildren$ = this.pConn$.getChildren();
|
|
39
|
+
this.portalTemplate = this.configProps$.portalTemplate;
|
|
40
|
+
// handle showing and hiding the progress spinner
|
|
41
|
+
this.errorMessagesSubscription = this.erService.getMessage().subscribe(message => {
|
|
42
|
+
this.showDismissErrorMessages(message);
|
|
43
|
+
});
|
|
44
|
+
// cannot call checkAndUpdate becasue first time through, will call updateSelf and that is incorrect (causes issues).
|
|
45
|
+
// however, need angularPConnect to be initialized with currentProps for future updates, so calling shouldComponentUpdate directly
|
|
46
|
+
// without checking to update here in init, will initialize and this is correct
|
|
47
|
+
this.angularPConnect.shouldComponentUpdate(this);
|
|
48
|
+
}
|
|
49
|
+
ngOnDestroy() {
|
|
50
|
+
if (this.angularPConnectData.unsubscribeFn) {
|
|
51
|
+
this.angularPConnectData.unsubscribeFn();
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
// Callback passed when subscribing to store change
|
|
55
|
+
onStateChange() {
|
|
56
|
+
this.checkAndUpdate();
|
|
57
|
+
}
|
|
58
|
+
checkAndUpdate() {
|
|
59
|
+
// Should always check the bridge to see if the component should
|
|
60
|
+
// update itself (re-render)
|
|
61
|
+
const bUpdateSelf = this.angularPConnect.shouldComponentUpdate(this);
|
|
62
|
+
// ONLY call updateSelf when the component should update
|
|
63
|
+
if (bUpdateSelf) {
|
|
64
|
+
this.updateSelf();
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
updateSelf() {
|
|
68
|
+
this.configProps$ = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps());
|
|
69
|
+
this.ngZone.run(() => {
|
|
70
|
+
// making a copy, so can add info
|
|
71
|
+
this.pages$ = this.configProps$.pages;
|
|
72
|
+
if (this.pages$) {
|
|
73
|
+
this.bShowAppShell$ = true;
|
|
74
|
+
}
|
|
75
|
+
this.caseTypes$ = this.configProps$.caseTypes;
|
|
76
|
+
this.arChildren$ = this.pConn$.getChildren();
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
// fpr show/hiding error messages in the SnackBar component
|
|
80
|
+
showDismissErrorMessages(errorMessages) {
|
|
81
|
+
switch (errorMessages.action) {
|
|
82
|
+
case 'update':
|
|
83
|
+
// won't show unless publish is turned on
|
|
84
|
+
// eslint-disable-next-line @typescript-eslint/prefer-includes
|
|
85
|
+
if (this.sErrorMessages.indexOf(errorMessages.actionMessage) < 0) {
|
|
86
|
+
this.sErrorMessages = this.sErrorMessages.concat(errorMessages.actionMessage).concat('\n');
|
|
87
|
+
if (this.bOkDisplayError) {
|
|
88
|
+
const config = { panelClass: ['snackbar-newline'] };
|
|
89
|
+
this.snackBarRef = this.snackBar.open(this.sErrorMessages, 'Ok', config);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
break;
|
|
93
|
+
case 'show':
|
|
94
|
+
// add error message if not in the list
|
|
95
|
+
// won't show unless publish is turned on
|
|
96
|
+
// eslint-disable-next-line @typescript-eslint/prefer-includes
|
|
97
|
+
if (this.sErrorMessages.indexOf(errorMessages.actionMessage) < 0) {
|
|
98
|
+
this.sErrorMessages = this.sErrorMessages.concat(errorMessages.actionMessage).concat('\n');
|
|
99
|
+
}
|
|
100
|
+
this.bOkDisplayError = true;
|
|
101
|
+
if (this.bOkDisplayError) {
|
|
102
|
+
const config = { panelClass: ['snackbar-newline'] };
|
|
103
|
+
this.snackBarRef = this.snackBar.open(this.sErrorMessages, 'Ok', config);
|
|
104
|
+
}
|
|
105
|
+
// this.snackBarRef.afterDismissed().subscribe( info => {
|
|
106
|
+
// this.sErrorMessages = "";
|
|
107
|
+
// }
|
|
108
|
+
// )
|
|
109
|
+
break;
|
|
110
|
+
case 'dismiss':
|
|
111
|
+
// closes snack bar
|
|
112
|
+
// turns publish off
|
|
113
|
+
// clears out errors
|
|
114
|
+
// should be called to dimiss and at "cancel"
|
|
115
|
+
if (this.snackBarRef != null) {
|
|
116
|
+
this.snackBarRef.dismiss();
|
|
117
|
+
this.sErrorMessages = '';
|
|
118
|
+
this.bOkDisplayError = false;
|
|
119
|
+
}
|
|
120
|
+
break;
|
|
121
|
+
case 'publish':
|
|
122
|
+
// allows errors to be shown, clears out existing ones
|
|
123
|
+
// should be turned on at "submit" (finishAssignment, nextAssignment, etc.)
|
|
124
|
+
this.bOkDisplayError = true;
|
|
125
|
+
this.sErrorMessages = '';
|
|
126
|
+
break;
|
|
127
|
+
default:
|
|
128
|
+
break;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppShellComponent, deps: [{ token: i1.AngularPConnectService }, { token: i2.ErrorMessagesService }, { token: i3.MatSnackBar }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
132
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AppShellComponent, isStandalone: true, selector: "app-app-shell", inputs: { pConn$: "pConn$" }, ngImport: i0, template: "<div class=\"appshell-top\">\n <div *ngIf=\"bShowAppShell$ && portalTemplate !== 'wss'\">\n <component-mapper name=\"NavBar\" [props]=\"{ pConn$, appName$, pages$, caseTypes$ }\"></component-mapper>\n </div>\n <div *ngIf=\"bShowAppShell$ && portalTemplate === 'wss'\">\n <component-mapper name=\"WssNavBar\" [props]=\"{ pConn$, appName$, homePage: pages$[0], pages$: links, caseTypes$ }\"></component-mapper>\n </div>\n <div [ngClass]=\"{ 'appshell-main': portalTemplate !== 'wss', 'appshell-main-wss': portalTemplate === 'wss' }\">\n <div *ngFor=\"let kid of arChildren$\">\n <div *ngIf=\"kid.getPConnect().getComponentName() == 'ViewContainer'\">\n <component-mapper name=\"ViewContainer\" [props]=\"{ pConn$: kid.getPConnect() }\"></component-mapper>\n </div>\n </div>\n </div>\n</div>\n", styles: [".appshell-top,.appshell-top-wss{background-color:#f5f5f5}.appshell-main{position:relative;margin-left:5rem;min-height:100vh;display:block}.appshell-main-wss{position:relative;min-height:100vh;display:block;width:100%}.psdk-icon{padding:0rem .125rem;min-width:unset}.progress-box{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;width:100%;background-color:#f5f5f5;position:fixed;z-index:999;top:0rem;left:0rem;opacity:.5}.progress-spinner{text-align:center}::ng-deep snack-bar-container.snackbar-newline{white-space:pre-line}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(function () { return CommonModule; }) }, { kind: "directive", type: i0.forwardRef(function () { return i4.NgClass; }), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(function () { return i4.NgForOf; }), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(function () { return i4.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatSnackBarModule; }) }, { kind: "component", type: i0.forwardRef(function () { return ComponentMapperComponent; }), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
|
|
133
|
+
}
|
|
134
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppShellComponent, decorators: [{
|
|
135
|
+
type: Component,
|
|
136
|
+
args: [{ selector: 'app-app-shell', standalone: true, imports: [CommonModule, MatSnackBarModule, forwardRef(() => ComponentMapperComponent)], template: "<div class=\"appshell-top\">\n <div *ngIf=\"bShowAppShell$ && portalTemplate !== 'wss'\">\n <component-mapper name=\"NavBar\" [props]=\"{ pConn$, appName$, pages$, caseTypes$ }\"></component-mapper>\n </div>\n <div *ngIf=\"bShowAppShell$ && portalTemplate === 'wss'\">\n <component-mapper name=\"WssNavBar\" [props]=\"{ pConn$, appName$, homePage: pages$[0], pages$: links, caseTypes$ }\"></component-mapper>\n </div>\n <div [ngClass]=\"{ 'appshell-main': portalTemplate !== 'wss', 'appshell-main-wss': portalTemplate === 'wss' }\">\n <div *ngFor=\"let kid of arChildren$\">\n <div *ngIf=\"kid.getPConnect().getComponentName() == 'ViewContainer'\">\n <component-mapper name=\"ViewContainer\" [props]=\"{ pConn$: kid.getPConnect() }\"></component-mapper>\n </div>\n </div>\n </div>\n</div>\n", styles: [".appshell-top,.appshell-top-wss{background-color:#f5f5f5}.appshell-main{position:relative;margin-left:5rem;min-height:100vh;display:block}.appshell-main-wss{position:relative;min-height:100vh;display:block;width:100%}.psdk-icon{padding:0rem .125rem;min-width:unset}.progress-box{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;width:100%;background-color:#f5f5f5;position:fixed;z-index:999;top:0rem;left:0rem;opacity:.5}.progress-spinner{text-align:center}::ng-deep snack-bar-container.snackbar-newline{white-space:pre-line}\n"] }]
|
|
137
|
+
}], ctorParameters: function () { return [{ type: i1.AngularPConnectService }, { type: i2.ErrorMessagesService }, { type: i3.MatSnackBar }, { type: i0.NgZone }]; }, propDecorators: { pConn$: [{
|
|
138
|
+
type: Input
|
|
139
|
+
}] } });
|
|
140
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXNoZWxsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy90ZW1wbGF0ZS9hcHAtc2hlbGwvYXBwLXNoZWxsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy90ZW1wbGF0ZS9hcHAtc2hlbGwvYXBwLXNoZWxsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFVLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFlLE1BQU0sNkJBQTZCLENBQUM7QUFJN0UsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOERBQThELENBQUM7Ozs7OztBQThCeEcsTUFBTSxPQUFPLGlCQUFpQjtJQW1CNUIsWUFDVSxlQUF1QyxFQUN2QyxTQUErQixFQUMvQixRQUFxQixFQUNyQixNQUFjO1FBSGQsb0JBQWUsR0FBZixlQUFlLENBQXdCO1FBQ3ZDLGNBQVMsR0FBVCxTQUFTLENBQXNCO1FBQy9CLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDckIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQXBCeEIsdUNBQXVDO1FBQ3ZDLHdCQUFtQixHQUF3QixFQUFFLENBQUM7UUFNOUMsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIsYUFBUSxHQUFHLE1BQU0sQ0FBQztRQUVsQixtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUVwQixvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUV4QixVQUFLLEdBQVEsRUFBRSxDQUFDO0lBT2IsQ0FBQztJ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QUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2lCQUMxRTtnQkFDRCx5REFBeUQ7Z0JBQ3pELGdDQUFnQztnQkFDaEMsTUFBTTtnQkFDTixJQUFJO2dCQUNKLE1BQU07WUFDUixLQUFLLFNBQVM7Z0JBQ1osbUJBQW1CO2dCQUNuQixvQkFBb0I7Z0JBQ3BCLG9CQUFvQjtnQkFDcEIsNkNBQTZDO2dCQUM3QyxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxFQUFFO29CQUM1QixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUMzQixJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztvQkFDekIsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7aUJBQzlCO2dCQUNELE1BQU07WUFDUixLQUFLLFNBQVM7Z0JBQ1osc0RBQXNEO2dCQUN0RCwyRUFBMkU7Z0JBRTNFLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO2dCQUM1QixJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztnQkFDekIsTUFBTTtZQUNSO2dCQUNFLE1BQU07U0FDVDtJQUNILENBQUM7K0dBMUpVLGlCQUFpQjttR0FBakIsaUJBQWlCLHVHQ3BDOUIsMnpCQWVBLG1wQkRtQlksWUFBWSx5ZkFBRSxpQkFBaUIsc0VBQW1CLHdCQUF3Qjs7NEZBRXpFLGlCQUFpQjtrQkFQN0IsU0FBUzsrQkFDRSxlQUFlLGNBR2IsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGlCQUFpQixFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDOytMQUc3RSxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE5nWm9uZSwgZm9yd2FyZFJlZiwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0U25hY2tCYXJNb2R1bGUsIE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQW5ndWxhclBDb25uZWN0RGF0YSwgQW5ndWxhclBDb25uZWN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19icmlkZ2UvYW5ndWxhci1wY29ubmVjdCc7XG5pbXBvcnQgeyBFcnJvck1lc3NhZ2VzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19tZXNzYWdlcy9lcnJvci1tZXNzYWdlcy5zZXJ2aWNlJztcbmltcG9ydCB7IENvbXBvbmVudE1hcHBlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL19icmlkZ2UvY29tcG9uZW50LW1hcHBlci9jb21wb25lbnQtbWFwcGVyLmNvbXBvbmVudCc7XG5cbmludGVyZmFjZSBJUGFnZSB7XG4gIGNsYXNzSUQ6IHN0cmluZztcbiAgcHhQYWdlVmlld0ljb246IHN0cmluZztcbiAgcHlDbGFzc05hbWU6IHN0cmluZztcbiAgcHlMYWJlbDogc3RyaW5nO1xuICBweVJ1bGVOYW1lOiBzdHJpbmc7XG4gIHB5VVJMQ29udGVudDogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgQXBwU2hlbGxQcm9wcyB7XG4gIC8vIElmIGFueSwgZW50ZXIgYWRkaXRpb25hbCBwcm9wcyB0aGF0IG9ubHkgZXhpc3Qgb24gdGhpcyBjb21wb25lbnRcbiAgcGFnZXM6IElQYWdlW107XG4gIGNhc2VUeXBlcz86IG9iamVjdFtdO1xuICBwb3J0YWxMb2dvOiBzdHJpbmc7XG4gIHBvcnRhbE5hbWU6IHN0cmluZztcbiAgcG9ydGFsVGVtcGxhdGU6IHN0cmluZztcbiAgcmVhZE9ubHk/OiBib29sZWFuO1xuICBzaG93QXBwSGVhZGVyQmFyOiBib29sZWFuO1xuICBzaG93QXBwTmFtZTogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWFwcC1zaGVsbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9hcHAtc2hlbGwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hcHAtc2hlbGwuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0U25hY2tCYXJNb2R1bGUsIGZvcndhcmRSZWYoKCkgPT4gQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50KV1cbn0pXG5leHBvcnQgY2xhc3MgQXBwU2hlbGxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHBDb25uJDogdHlwZW9mIFBDb25uZWN0O1xuXG4gIC8vIEZvciBpbnRlcmFjdGlvbiB3aXRoIEFuZ3VsYXJQQ29ubmVjdFxuICBhbmd1bGFyUENvbm5lY3REYXRhOiBBbmd1bGFyUENvbm5lY3REYXRhID0ge307XG4gIGNvbmZpZ1Byb3BzJDogQXBwU2hlbGxQcm9wcztcblxuICBwYWdlcyQ6IElQYWdlW107XG4gIGNhc2VUeXBlcyQ/OiBvYmplY3RbXTtcbiAgYXJDaGlsZHJlbiQ6IGFueVtdO1xuICBiU2hvd0FwcFNoZWxsJCA9IGZhbHNlO1xuICBhcHBOYW1lJCA9ICdQRUdBJztcbiAgZXJyb3JNZXNzYWdlc1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBzRXJyb3JNZXNzYWdlcyA9ICcnO1xuICBzbmFja0JhclJlZjogYW55O1xuICBiT2tEaXNwbGF5RXJyb3IgPSBmYWxzZTtcbiAgcG9ydGFsVGVtcGxhdGU6IHN0cmluZztcbiAgbGlua3M6IGFueSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYW5ndWxhclBDb25uZWN0OiBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgZXJTZXJ2aWNlOiBFcnJvck1lc3NhZ2VzU2VydmljZSxcbiAgICBwcml2YXRlIHNuYWNrQmFyOiBNYXRTbmFja0JhcixcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICAvLyBGaXJzdCB0aGluZyBpbiBpbml0aWFsaXphdGlvbiBpcyByZWdpc3RlcmluZyBhbmQgc3Vic2NyaWJpbmcgdG8gdGhlIEFuZ3VsYXJQQ29ubmVjdCBzZXJ2aWNlXG4gICAgdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhID0gdGhpcy5hbmd1bGFyUENvbm5lY3QucmVnaXN0ZXJBbmRTdWJzY3JpYmVDb21wb25lbnQodGhpcywgdGhpcy5vblN0YXRlQ2hhbmdlKTtcblxuICAgIC8vIFRoZW4sIGNvbnRpbnVlIG9uIHdpdGggb3RoZXIgaW5pdGlhbGl6YXRpb25cblxuICAgIHRoaXMuY29uZmlnUHJvcHMkID0gdGhpcy5wQ29ubiQucmVzb2x2ZUNvbmZpZ1Byb3BzKHRoaXMucENvbm4kLmdldENvbmZpZ1Byb3BzKCkpIGFzIEFwcFNoZWxsUHJvcHM7XG5cbiAgICAvLyBtYWtpbmcgYSBjb3B5LCBzbyBjYW4gYWRkIGluZm9cbiAgICB0aGlzLnBhZ2VzJCA9IHRoaXMuY29uZmlnUHJvcHMkLnBhZ2VzO1xuXG4gICAgdGhpcy5saW5rcyA9IHRoaXMucGFnZXMkLmZpbHRlcigocGFnZSwgaW5kZXgpID0+IHtcbiAgICAgIHJldHVybiBpbmRleCAhPT0gMDtcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLnBhZ2VzJCkge1xuICAgICAgdGhpcy5iU2hvd0FwcFNoZWxsJCA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMuY2FzZVR5cGVzJCA9IHRoaXMuY29uZmlnUHJvcHMkLmNhc2VUeXBlcztcblxuICAgIHRoaXMuYXJDaGlsZHJlbiQgPSB0aGlzLnBDb25uJC5nZXRDaGlsZHJlbigpIGFzIGFueVtdO1xuXG4gICAgdGhpcy5wb3J0YWxUZW1wbGF0ZSA9IHRoaXMuY29uZmlnUHJvcHMkLnBvcnRhbFRlbXBsYXRlO1xuXG4gICAgLy8gaGFuZGxlIHNob3dpbmcgYW5kIGhpZGluZyB0aGUgcHJvZ3Jlc3Mgc3Bpbm5lclxuICAgIHRoaXMuZXJyb3JNZXNzYWdlc1N1YnNjcmlwdGlvbiA9IHRoaXMuZXJTZXJ2aWNlLmdldE1lc3NhZ2UoKS5zdWJzY3JpYmUobWVzc2FnZSA9PiB7XG4gICAgICB0aGlzLnNob3dEaXNtaXNzRXJyb3JNZXNzYWdlcyhtZXNzYWdlKTtcbiAgICB9KTtcblxuICAgIC8vIGNhbm5vdCBjYWxsIGNoZWNrQW5kVXBkYXRlIGJlY2FzdWUgZmlyc3QgdGltZSB0aHJvdWdoLCB3aWxsIGNhbGwgdXBkYXRlU2VsZiBhbmQgdGhhdCBpcyBpbmNvcnJlY3QgKGNhdXNlcyBpc3N1ZXMpLlxuICAgIC8vIGhvd2V2ZXIsIG5lZWQgYW5ndWxhclBDb25uZWN0IHRvIGJlIGluaXRpYWxpemVkIHdpdGggY3VycmVudFByb3BzIGZvciBmdXR1cmUgdXBkYXRlcywgc28gY2FsbGluZyBzaG91bGRDb21wb25lbnRVcGRhdGUgZGlyZWN0bHlcbiAgICAvLyB3aXRob3V0IGNoZWNraW5nIHRvIHVwZGF0ZSBoZXJlIGluIGluaXQsIHdpbGwgaW5pdGlhbGl6ZSBhbmQgdGhpcyBpcyBjb3JyZWN0XG4gICAgdGhpcy5hbmd1bGFyUENvbm5lY3Quc2hvdWxkQ29tcG9uZW50VXBkYXRlKHRoaXMpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS51bnN1YnNjcmliZUZuKSB7XG4gICAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbigpO1xuICAgIH1cbiAgfVxuXG4gIC8vIENhbGxiYWNrIHBhc3NlZCB3aGVuIHN1YnNjcmliaW5nIHRvIHN0b3JlIGNoYW5nZVxuICBvblN0YXRlQ2hhbmdlKCkge1xuICAgIHRoaXMuY2hlY2tBbmRVcGRhdGUoKTtcbiAgfVxuXG4gIGNoZWNrQW5kVXBkYXRlKCkge1xuICAgIC8vIFNob3VsZCBhbHdheXMgY2hlY2sgdGhlIGJyaWRnZSB0byBzZWUgaWYgdGhlIGNvbXBvbmVudCBzaG91bGRcbiAgICAvLyB1cGRhdGUgaXRzZWxmIChyZS1yZW5kZXIpXG4gICAgY29uc3QgYlVwZGF0ZVNlbGYgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5zaG91bGRDb21wb25lbnRVcGRhdGUodGhpcyk7XG5cbiAgICAvLyBPTkxZIGNhbGwgdXBkYXRlU2VsZiB3aGVuIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZVxuICAgIGlmIChiVXBkYXRlU2VsZikge1xuICAgICAgdGhpcy51cGRhdGVTZWxmKCk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlU2VsZigpIHtcbiAgICB0aGlzLmNvbmZpZ1Byb3BzJCA9IHRoaXMucENvbm4kLnJlc29sdmVDb25maWdQcm9wcyh0aGlzLnBDb25uJC5nZXRDb25maWdQcm9wcygpKSBhcyBBcHBTaGVsbFByb3BzO1xuXG4gICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgIC8vIG1ha2luZyBhIGNvcHksIHNvIGNhbiBhZGQgaW5mb1xuICAgICAgdGhpcy5wYWdlcyQgPSB0aGlzLmNvbmZpZ1Byb3BzJC5wYWdlcztcblxuICAgICAgaWYgKHRoaXMucGFnZXMkKSB7XG4gICAgICAgIHRoaXMuYlNob3dBcHBTaGVsbCQgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNhc2VUeXBlcyQgPSB0aGlzLmNvbmZpZ1Byb3BzJC5jYXNlVHlwZXM7XG4gICAgICB0aGlzLmFyQ2hpbGRyZW4kID0gdGhpcy5wQ29ubiQuZ2V0Q2hpbGRyZW4oKSBhcyBhbnlbXTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIGZwciBzaG93L2hpZGluZyBlcnJvciBtZXNzYWdlcyBpbiB0aGUgU25hY2tCYXIgY29tcG9uZW50XG4gIHNob3dEaXNtaXNzRXJyb3JNZXNzYWdlcyhlcnJvck1lc3NhZ2VzOiBhbnkpIHtcbiAgICBzd2l0Y2ggKGVycm9yTWVzc2FnZXMuYWN0aW9uKSB7XG4gICAgICBjYXNlICd1cGRhdGUnOlxuICAgICAgICAvLyB3b24ndCBzaG93IHVubGVzcyBwdWJsaXNoIGlzIHR1cm5lZCBvblxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3ByZWZlci1pbmNsdWRlc1xuICAgICAgICBpZiAodGhpcy5zRXJyb3JNZXNzYWdlcy5pbmRleE9mKGVycm9yTWVzc2FnZXMuYWN0aW9uTWVzc2FnZSkgPCAwKSB7XG4gICAgICAgICAgdGhpcy5zRXJyb3JNZXNzYWdlcyA9IHRoaXMuc0Vycm9yTWVzc2FnZXMuY29uY2F0KGVycm9yTWVzc2FnZXMuYWN0aW9uTWVzc2FnZSkuY29uY2F0KCdcXG4nKTtcblxuICAgICAgICAgIGlmICh0aGlzLmJPa0Rpc3BsYXlFcnJvcikge1xuICAgICAgICAgICAgY29uc3QgY29uZmlnID0geyBwYW5lbENsYXNzOiBbJ3NuYWNrYmFyLW5ld2xpbmUnXSB9O1xuICAgICAgICAgICAgdGhpcy5zbmFja0JhclJlZiA9IHRoaXMuc25hY2tCYXIub3Blbih0aGlzLnNFcnJvck1lc3NhZ2VzLCAnT2snLCBjb25maWcpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3Nob3cnOlxuICAgICAgICAvLyBhZGQgZXJyb3IgbWVzc2FnZSBpZiBub3QgaW4gdGhlIGxpc3RcbiAgICAgICAgLy8gd29uJ3Qgc2hvdyB1bmxlc3MgcHVibGlzaCBpcyB0dXJuZWQgb25cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9wcmVmZXItaW5jbHVkZXNcbiAgICAgICAgaWYgKHRoaXMuc0Vycm9yTWVzc2FnZXMuaW5kZXhPZihlcnJvck1lc3NhZ2VzLmFjdGlvbk1lc3NhZ2UpIDwgMCkge1xuICAgICAgICAgIHRoaXMuc0Vycm9yTWVzc2FnZXMgPSB0aGlzLnNFcnJvck1lc3NhZ2VzLmNvbmNhdChlcnJvck1lc3NhZ2VzLmFjdGlvbk1lc3NhZ2UpLmNvbmNhdCgnXFxuJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmJPa0Rpc3BsYXlFcnJvciA9IHRydWU7XG5cbiAgICAgICAgaWYgKHRoaXMuYk9rRGlzcGxheUVycm9yKSB7XG4gICAgICAgICAgY29uc3QgY29uZmlnID0geyBwYW5lbENsYXNzOiBbJ3NuYWNrYmFyLW5ld2xpbmUnXSB9O1xuICAgICAgICAgIHRoaXMuc25hY2tCYXJSZWYgPSB0aGlzLnNuYWNrQmFyLm9wZW4odGhpcy5zRXJyb3JNZXNzYWdlcywgJ09rJywgY29uZmlnKTtcbiAgICAgICAgfVxuICAgICAgICAvLyB0aGlzLnNuYWNrQmFyUmVmLmFmdGVyRGlzbWlzc2VkKCkuc3Vic2NyaWJlKCBpbmZvID0+IHtcbiAgICAgICAgLy8gICAgIHRoaXMuc0Vycm9yTWVzc2FnZXMgPSBcIlwiO1xuICAgICAgICAvLyAgIH1cbiAgICAgICAgLy8gKVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Rpc21pc3MnOlxuICAgICAgICAvLyBjbG9zZXMgc25hY2sgYmFyXG4gICAgICAgIC8vIHR1cm5zIHB1Ymxpc2ggb2ZmXG4gICAgICAgIC8vIGNsZWFycyBvdXQgZXJyb3JzXG4gICAgICAgIC8vIHNob3VsZCBiZSBjYWxsZWQgdG8gZGltaXNzIGFuZCBhdCBcImNhbmNlbFwiXG4gICAgICAgIGlmICh0aGlzLnNuYWNrQmFyUmVmICE9IG51bGwpIHtcbiAgICAgICAgICB0aGlzLnNuYWNrQmFyUmVmLmRpc21pc3MoKTtcbiAgICAgICAgICB0aGlzLnNFcnJvck1lc3NhZ2VzID0gJyc7XG4gICAgICAgICAgdGhpcy5iT2tEaXNwbGF5RXJyb3IgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3B1Ymxpc2gnOlxuICAgICAgICAvLyBhbGxvd3MgZXJyb3JzIHRvIGJlIHNob3duLCBjbGVhcnMgb3V0IGV4aXN0aW5nIG9uZXNcbiAgICAgICAgLy8gc2hvdWxkIGJlIHR1cm5lZCBvbiBhdCBcInN1Ym1pdFwiIChmaW5pc2hBc3NpZ25tZW50LCBuZXh0QXNzaWdubWVudCwgZXRjLilcblxuICAgICAgICB0aGlzLmJPa0Rpc3BsYXlFcnJvciA9IHRydWU7XG4gICAgICAgIHRoaXMuc0Vycm9yTWVzc2FnZXMgPSAnJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJhcHBzaGVsbC10b3BcIj5cbiAgPGRpdiAqbmdJZj1cImJTaG93QXBwU2hlbGwkICYmIHBvcnRhbFRlbXBsYXRlICE9PSAnd3NzJ1wiPlxuICAgIDxjb21wb25lbnQtbWFwcGVyIG5hbWU9XCJOYXZCYXJcIiBbcHJvcHNdPVwieyBwQ29ubiQsIGFwcE5hbWUkLCBwYWdlcyQsIGNhc2VUeXBlcyQgfVwiPjwvY29tcG9uZW50LW1hcHBlcj5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJiU2hvd0FwcFNoZWxsJCAmJiBwb3J0YWxUZW1wbGF0ZSA9PT0gJ3dzcydcIj5cbiAgICA8Y29tcG9uZW50LW1hcHBlciBuYW1lPVwiV3NzTmF2QmFyXCIgW3Byb3BzXT1cInsgcENvbm4kLCBhcHBOYW1lJCwgaG9tZVBhZ2U6IHBhZ2VzJFswXSwgcGFnZXMkOiBsaW5rcywgY2FzZVR5cGVzJCB9XCI+PC9jb21wb25lbnQtbWFwcGVyPlxuICA8L2Rpdj5cbiAgPGRpdiBbbmdDbGFzc109XCJ7ICdhcHBzaGVsbC1tYWluJzogcG9ydGFsVGVtcGxhdGUgIT09ICd3c3MnLCAnYXBwc2hlbGwtbWFpbi13c3MnOiBwb3J0YWxUZW1wbGF0ZSA9PT0gJ3dzcycgfVwiPlxuICAgIDxkaXYgKm5nRm9yPVwibGV0IGtpZCBvZiBhckNoaWxkcmVuJFwiPlxuICAgICAgPGRpdiAqbmdJZj1cImtpZC5nZXRQQ29ubmVjdCgpLmdldENvbXBvbmVudE5hbWUoKSA9PSAnVmlld0NvbnRhaW5lcidcIj5cbiAgICAgICAgPGNvbXBvbmVudC1tYXBwZXIgbmFtZT1cIlZpZXdDb250YWluZXJcIiBbcHJvcHNdPVwieyBwQ29ubiQ6IGtpZC5nZXRQQ29ubmVjdCgpIH1cIj48L2NvbXBvbmVudC1tYXBwZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Component, Input, forwardRef } from '@angular/core';
|
|
2
|
+
import { ReferenceComponent } from '../../infra/reference/reference.component';
|
|
3
|
+
import { CommonModule } from '@angular/common';
|
|
4
|
+
import { ComponentMapperComponent } from '../../../_bridge/component-mapper/component-mapper.component';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class BannerPageComponent {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.backgroundImage = this.configProps$?.backgroundImage;
|
|
9
|
+
}
|
|
10
|
+
ngOnInit() {
|
|
11
|
+
// console.log(`ngOnInit (no registerAndSubscribe!): Region`);
|
|
12
|
+
this.backgroundImage = this.configProps$?.backgroundImage;
|
|
13
|
+
this.updateSelf();
|
|
14
|
+
}
|
|
15
|
+
ngOnChanges(changes) {
|
|
16
|
+
const { pConn$ } = changes;
|
|
17
|
+
this.backgroundImage = this.configProps$?.backgroundImage;
|
|
18
|
+
if (pConn$.previousValue && pConn$.previousValue !== pConn$.currentValue) {
|
|
19
|
+
this.updateSelf();
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
updateSelf() {
|
|
23
|
+
this.configProps$ = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps());
|
|
24
|
+
console.log(`url(${this.backgroundImage})`);
|
|
25
|
+
this.layout$ = this.configProps$.layout;
|
|
26
|
+
this.title = this.configProps$.title;
|
|
27
|
+
this.message = this.configProps$.message;
|
|
28
|
+
this.backgroundImage = this.configProps$.backgroundImage;
|
|
29
|
+
// The children may contain 'reference' components, so normalize the children...
|
|
30
|
+
this.arChildren$ = ReferenceComponent.normalizePConnArray(this.pConn$.getChildren());
|
|
31
|
+
}
|
|
32
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BannerPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: BannerPageComponent, isStandalone: true, selector: "app-banner-page", inputs: { pConn$: "pConn$", formGroup$: "formGroup$" }, usesOnChanges: true, ngImport: i0, template: "<component-mapper\n name=\"Banner\"\n [props]=\"{\n configProps$,\n arChildren$,\n title,\n message,\n backgroundImage,\n layout$,\n divClass$\n }\"\n></component-mapper>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(function () { return CommonModule; }) }, { kind: "component", type: i0.forwardRef(function () { return ComponentMapperComponent; }), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
|
|
34
|
+
}
|
|
35
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BannerPageComponent, decorators: [{
|
|
36
|
+
type: Component,
|
|
37
|
+
args: [{ selector: 'app-banner-page', standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)], template: "<component-mapper\n name=\"Banner\"\n [props]=\"{\n configProps$,\n arChildren$,\n title,\n message,\n backgroundImage,\n layout$,\n divClass$\n }\"\n></component-mapper>\n" }]
|
|
38
|
+
}], ctorParameters: function () { return []; }, propDecorators: { pConn$: [{
|
|
39
|
+
type: Input
|
|
40
|
+
}], formGroup$: [{
|
|
41
|
+
type: Input
|
|
42
|
+
}] } });
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFubmVyLXBhZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL3RlbXBsYXRlL2Jhbm5lci1wYWdlL2Jhbm5lci1wYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy90ZW1wbGF0ZS9iYW5uZXItcGFnZS9iYW5uZXItcGFnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBb0MsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9GLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQzs7QUFpQnhHLE1BQU0sT0FBTyxtQkFBbUI7SUFZOUI7UUFDRSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsZUFBZSxDQUFDO0lBQzVELENBQUM7SUFFRCxRQUFRO1FBQ04sOERBQThEO1FBQzlELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxlQUFlLENBQUM7UUFDMUQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUMzQixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsZUFBZSxDQUFDO1FBRTFELElBQUksTUFBTSxDQUFDLGFBQWEsSUFBSSxNQUFNLENBQUMsYUFBYSxLQUFLLE1BQU0sQ0FBQyxZQUFZLEVBQUU7WUFDeEUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ25CO0lBQ0gsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBb0IsQ0FBQztRQUNwRyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUM7UUFFNUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztRQUN4QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUM7UUFDekMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQztRQUV6RCxnRkFBZ0Y7UUFDaEYsSUFBSSxDQUFDLFdBQVcsR0FBRyxrQkFBa0IsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDdkYsQ0FBQzsrR0ExQ1UsbUJBQW1CO21HQUFuQixtQkFBbUIsd0pDckJoQyxzTUFZQSw0RkRPWSxZQUFZLHNFQUFtQix3QkFBd0I7OzRGQUV0RCxtQkFBbUI7a0JBUC9CLFNBQVM7K0JBQ0UsaUJBQWlCLGNBR2YsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDOzBFQUcxRCxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBTaW1wbGVDaGFuZ2VzLCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFJlZmVyZW5jZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2luZnJhL3JlZmVyZW5jZS9yZWZlcmVuY2UuY29tcG9uZW50JztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnRNYXBwZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9fYnJpZGdlL2NvbXBvbmVudC1tYXBwZXIvY29tcG9uZW50LW1hcHBlci5jb21wb25lbnQnO1xuXG5pbnRlcmZhY2UgQmFubmVyUGFnZVByb3BzIHtcbiAgLy8gSWYgYW55LCBlbnRlciBhZGRpdGlvbmFsIHByb3BzIHRoYXQgb25seSBleGlzdCBvbiB0aGlzIGNvbXBvbmVudFxuICBsYXlvdXQ/OiBzdHJpbmc7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBtZXNzYWdlPzogc3RyaW5nO1xuICBiYWNrZ3JvdW5kSW1hZ2U/OiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1iYW5uZXItcGFnZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9iYW5uZXItcGFnZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Jhbm5lci1wYWdlLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIGZvcndhcmRSZWYoKCkgPT4gQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50KV1cbn0pXG5leHBvcnQgY2xhc3MgQmFubmVyUGFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgcENvbm4kOiB0eXBlb2YgUENvbm5lY3Q7XG4gIEBJbnB1dCgpIGZvcm1Hcm91cCQ6IGFueTtcblxuICBjb25maWdQcm9wcyQ6IEJhbm5lclBhZ2VQcm9wcztcbiAgYXJDaGlsZHJlbiQ6IGFueVtdO1xuICB0aXRsZT86IHN0cmluZztcbiAgbWVzc2FnZTogYW55O1xuICBiYWNrZ3JvdW5kSW1hZ2U/OiBzdHJpbmc7XG4gIGxheW91dCQ/OiBzdHJpbmc7XG4gIGRpdkNsYXNzJDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuYmFja2dyb3VuZEltYWdlID0gdGhpcy5jb25maWdQcm9wcyQ/LmJhY2tncm91bmRJbWFnZTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIC8vIGNvbnNvbGUubG9nKGBuZ09uSW5pdCAobm8gcmVnaXN0ZXJBbmRTdWJzY3JpYmUhKTogUmVnaW9uYCk7XG4gICAgdGhpcy5iYWNrZ3JvdW5kSW1hZ2UgPSB0aGlzLmNvbmZpZ1Byb3BzJD8uYmFja2dyb3VuZEltYWdlO1xuICAgIHRoaXMudXBkYXRlU2VsZigpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGNvbnN0IHsgcENvbm4kIH0gPSBjaGFuZ2VzO1xuICAgIHRoaXMuYmFja2dyb3VuZEltYWdlID0gdGhpcy5jb25maWdQcm9wcyQ/LmJhY2tncm91bmRJbWFnZTtcblxuICAgIGlmIChwQ29ubiQucHJldmlvdXNWYWx1ZSAmJiBwQ29ubiQucHJldmlvdXNWYWx1ZSAhPT0gcENvbm4kLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy51cGRhdGVTZWxmKCk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlU2VsZigpIHtcbiAgICB0aGlzLmNvbmZpZ1Byb3BzJCA9IHRoaXMucENvbm4kLnJlc29sdmVDb25maWdQcm9wcyh0aGlzLnBDb25uJC5nZXRDb25maWdQcm9wcygpKSBhcyBCYW5uZXJQYWdlUHJvcHM7XG4gICAgY29uc29sZS5sb2coYHVybCgke3RoaXMuYmFja2dyb3VuZEltYWdlfSlgKTtcblxuICAgIHRoaXMubGF5b3V0JCA9IHRoaXMuY29uZmlnUHJvcHMkLmxheW91dDtcbiAgICB0aGlzLnRpdGxlID0gdGhpcy5jb25maWdQcm9wcyQudGl0bGU7XG4gICAgdGhpcy5tZXNzYWdlID0gdGhpcy5jb25maWdQcm9wcyQubWVzc2FnZTtcbiAgICB0aGlzLmJhY2tncm91bmRJbWFnZSA9IHRoaXMuY29uZmlnUHJvcHMkLmJhY2tncm91bmRJbWFnZTtcblxuICAgIC8vIFRoZSBjaGlsZHJlbiBtYXkgY29udGFpbiAncmVmZXJlbmNlJyBjb21wb25lbnRzLCBzbyBub3JtYWxpemUgdGhlIGNoaWxkcmVuLi4uXG4gICAgdGhpcy5hckNoaWxkcmVuJCA9IFJlZmVyZW5jZUNvbXBvbmVudC5ub3JtYWxpemVQQ29ubkFycmF5KHRoaXMucENvbm4kLmdldENoaWxkcmVuKCkpO1xuICB9XG59XG4iLCI8Y29tcG9uZW50LW1hcHBlclxuICBuYW1lPVwiQmFubmVyXCJcbiAgW3Byb3BzXT1cIntcbiAgICBjb25maWdQcm9wcyQsXG4gICAgYXJDaGlsZHJlbiQsXG4gICAgdGl0bGUsXG4gICAgbWVzc2FnZSxcbiAgICBiYWNrZ3JvdW5kSW1hZ2UsXG4gICAgbGF5b3V0JCxcbiAgICBkaXZDbGFzcyRcbiAgfVwiXG4+PC9jb21wb25lbnQtbWFwcGVyPlxuIl19
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { Component, Input, forwardRef } from '@angular/core';
|
|
2
|
+
import { ReferenceComponent } from '../../infra/reference/reference.component';
|
|
3
|
+
import { ComponentMapperComponent } from '../../../_bridge/component-mapper/component-mapper.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../../../_bridge/angular-pconnect";
|
|
6
|
+
export class CaseSummaryComponent {
|
|
7
|
+
constructor(angularPConnect) {
|
|
8
|
+
this.angularPConnect = angularPConnect;
|
|
9
|
+
this.angularPConnectData = {};
|
|
10
|
+
this.primaryFields$ = [];
|
|
11
|
+
this.secondaryFields$ = [];
|
|
12
|
+
}
|
|
13
|
+
ngOnInit() {
|
|
14
|
+
// First thing in initialization is registering and subscribing to the AngularPConnect service
|
|
15
|
+
this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange);
|
|
16
|
+
this.initComponent();
|
|
17
|
+
}
|
|
18
|
+
ngOnDestroy() {
|
|
19
|
+
if (this.angularPConnectData.unsubscribeFn) {
|
|
20
|
+
this.angularPConnectData.unsubscribeFn();
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
initComponent() {
|
|
24
|
+
// dereference the View in case the incoming pConn$ is a 'reference'
|
|
25
|
+
this.pConn$ = ReferenceComponent.normalizePConn(this.pConn$);
|
|
26
|
+
// Then, continue on with other initialization
|
|
27
|
+
this.configProps$ = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps());
|
|
28
|
+
this.arChildren$ = this.pConn$.getChildren();
|
|
29
|
+
this.generatePrimaryAndSecondaryFields();
|
|
30
|
+
this.status$ = this.configProps$.status;
|
|
31
|
+
this.bShowStatus$ = this.configProps$.showStatus;
|
|
32
|
+
}
|
|
33
|
+
// Callback passed when subscribing to store change
|
|
34
|
+
onStateChange() {
|
|
35
|
+
// Should always check the bridge to see if the component should
|
|
36
|
+
// update itself (re-render)
|
|
37
|
+
const bUpdateSelf = this.angularPConnect.shouldComponentUpdate(this);
|
|
38
|
+
// ONLY call updateSelf when the component should update
|
|
39
|
+
if (bUpdateSelf) {
|
|
40
|
+
this.updateSelf();
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
updateSelf() {
|
|
44
|
+
this.generatePrimaryAndSecondaryFields();
|
|
45
|
+
}
|
|
46
|
+
ngOnChanges() {
|
|
47
|
+
this.initComponent();
|
|
48
|
+
}
|
|
49
|
+
generatePrimaryAndSecondaryFields() {
|
|
50
|
+
this.primaryFields$ = [];
|
|
51
|
+
this.secondaryFields$ = [];
|
|
52
|
+
for (const oField of this.arChildren$[0].getPConnect().getChildren()) {
|
|
53
|
+
const kid = oField.getPConnect();
|
|
54
|
+
this.primaryFields$.push(kid.resolveConfigProps(kid.getRawMetadata()));
|
|
55
|
+
}
|
|
56
|
+
for (const oField of this.arChildren$[1].getPConnect().getChildren()) {
|
|
57
|
+
const kid = oField.getPConnect();
|
|
58
|
+
this.secondaryFields$.push({ ...kid.resolveConfigProps(kid.getRawMetadata()), kid });
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CaseSummaryComponent, deps: [{ token: i1.AngularPConnectService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
62
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CaseSummaryComponent, isStandalone: true, selector: "app-case-summary", inputs: { pConn$: "pConn$", formGroup$: "formGroup$" }, usesOnChanges: true, ngImport: i0, template: "<component-mapper name=\"CaseSummaryFields\" [props]=\"{ status$, bShowStatus$, primaryFields$, secondaryFields$ }\"></component-mapper>\n", styles: [".psdk-case-summary-info-box{display:flex;flex-direction:row;justify-content:space-evenly}.psdk-case-summary-data{flex:1}.psdk-case-view-label{font-size:1rem;display:block;transform:translateY(.2em) scale(.75) perspective(100px) translateZ(.001px);-ms-transform:translateY(.2em) scale(.75);width:133.33333%}.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-status{background-color:#673ab7;color:#fff;padding:0;margin-top:.625rem;width:-moz-fit-content;width:fit-content}::ng-deep .mat-mdc-form-field-infix{width:auto}\n"], dependencies: [{ kind: "component", type: i0.forwardRef(function () { return ComponentMapperComponent; }), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
|
|
63
|
+
}
|
|
64
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CaseSummaryComponent, decorators: [{
|
|
65
|
+
type: Component,
|
|
66
|
+
args: [{ selector: 'app-case-summary', standalone: true, imports: [forwardRef(() => ComponentMapperComponent)], template: "<component-mapper name=\"CaseSummaryFields\" [props]=\"{ status$, bShowStatus$, primaryFields$, secondaryFields$ }\"></component-mapper>\n", styles: [".psdk-case-summary-info-box{display:flex;flex-direction:row;justify-content:space-evenly}.psdk-case-summary-data{flex:1}.psdk-case-view-label{font-size:1rem;display:block;transform:translateY(.2em) scale(.75) perspective(100px) translateZ(.001px);-ms-transform:translateY(.2em) scale(.75);width:133.33333%}.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-status{background-color:#673ab7;color:#fff;padding:0;margin-top:.625rem;width:-moz-fit-content;width:fit-content}::ng-deep .mat-mdc-form-field-infix{width:auto}\n"] }]
|
|
67
|
+
}], ctorParameters: function () { return [{ type: i1.AngularPConnectService }]; }, propDecorators: { pConn$: [{
|
|
68
|
+
type: Input
|
|
69
|
+
}], formGroup$: [{
|
|
70
|
+
type: Input
|
|
71
|
+
}] } });
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1zdW1tYXJ5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy90ZW1wbGF0ZS9jYXNlLXN1bW1hcnkvY2FzZS1zdW1tYXJ5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy90ZW1wbGF0ZS9jYXNlLXN1bW1hcnkvY2FzZS1zdW1tYXJ5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFVBQVUsRUFBd0IsTUFBTSxlQUFlLENBQUM7QUFHM0YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOERBQThELENBQUM7OztBQWlCeEcsTUFBTSxPQUFPLG9CQUFvQjtJQWMvQixZQUFvQixlQUF1QztRQUF2QyxvQkFBZSxHQUFmLGVBQWUsQ0FBd0I7UUFWM0Qsd0JBQW1CLEdBQXdCLEVBQUUsQ0FBQztRQU85QyxtQkFBYyxHQUFVLEVBQUUsQ0FBQztRQUMzQixxQkFBZ0IsR0FBVSxFQUFFLENBQUM7SUFFaUMsQ0FBQztJQUUvRCxRQUFRO1FBQ04sOEZBQThGO1FBQzlGLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLDZCQUE2QixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFeEcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxFQUFFO1lBQzFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUMxQztJQUNILENBQUM7SUFFRCxhQUFhO1FBQ1gsb0VBQW9FO1FBQ3BFLElBQUksQ0FBQyxNQUFNLEdBQUcsa0JBQWtCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUU3RCw4Q0FBOEM7UUFFOUMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLENBQXFCLENBQUM7UUFDckcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBVyxDQUFDO1FBRXRELElBQUksQ0FBQyxpQ0FBaUMsRUFBRSxDQUFDO1FBRXpDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7UUFDeEMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQztJQUNuRCxDQUFDO0lBRUQsbURBQW1EO0lBQ25ELGFBQWE7UUFDWCxnRUFBZ0U7UUFDaEUsNEJBQTRCO1FBQzVCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFckUsd0RBQXdEO1FBQ3hELElBQUksV0FBVyxFQUFFO1lBQ2YsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ25CO0lBQ0gsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsaUNBQWlDLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsaUNBQWlDO1FBQy9CLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFFM0IsS0FBSyxNQUFNLE1BQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQ3BFLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUN4RTtRQUVELEtBQUssTUFBTSxNQUFNLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUNwRSxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7U0FDdEY7SUFDSCxDQUFDOytHQTdFVSxvQkFBb0I7bUdBQXBCLG9CQUFvQix5SkNyQmpDLDRJQUNBLCt5QkRrQjZCLHdCQUF3Qjs7NEZBRXhDLG9CQUFvQjtrQkFQaEMsU0FBUzsrQkFDRSxrQkFBa0IsY0FHaEIsSUFBSSxXQUNQLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHdCQUF3QixDQUFDLENBQUM7NkdBRzVDLE1BQU07c0JBQWQsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBmb3J3YXJkUmVmLCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQW5ndWxhclBDb25uZWN0RGF0YSwgQW5ndWxhclBDb25uZWN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19icmlkZ2UvYW5ndWxhci1wY29ubmVjdCc7XG5pbXBvcnQgeyBSZWZlcmVuY2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9pbmZyYS9yZWZlcmVuY2UvcmVmZXJlbmNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21wb25lbnRNYXBwZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9fYnJpZGdlL2NvbXBvbmVudC1tYXBwZXIvY29tcG9uZW50LW1hcHBlci5jb21wb25lbnQnO1xuXG5pbnRlcmZhY2UgQ2FzZVN1bW1hcnlQcm9wcyB7XG4gIC8vIElmIGFueSwgZW50ZXIgYWRkaXRpb25hbCBwcm9wcyB0aGF0IG9ubHkgZXhpc3Qgb24gdGhpcyBjb21wb25lbnRcbiAgc3RhdHVzPzogc3RyaW5nO1xuICBzaG93U3RhdHVzPzogYm9vbGVhbjtcbiAgdGVtcGxhdGU/OiBzdHJpbmc7XG4gIHJlYWRPbmx5PzogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWNhc2Utc3VtbWFyeScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYXNlLXN1bW1hcnkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYXNlLXN1bW1hcnkuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW2ZvcndhcmRSZWYoKCkgPT4gQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50KV1cbn0pXG5leHBvcnQgY2xhc3MgQ2FzZVN1bW1hcnlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgcENvbm4kOiB0eXBlb2YgUENvbm5lY3Q7XG4gIEBJbnB1dCgpIGZvcm1Hcm91cCQ6IEZvcm1Hcm91cDtcblxuICBhbmd1bGFyUENvbm5lY3REYXRhOiBBbmd1bGFyUENvbm5lY3REYXRhID0ge307XG4gIGNvbmZpZ1Byb3BzJDogQ2FzZVN1bW1hcnlQcm9wcztcblxuICBhckNoaWxkcmVuJDogYW55W107XG5cbiAgc3RhdHVzJD86IHN0cmluZztcbiAgYlNob3dTdGF0dXMkPzogYm9vbGVhbjtcbiAgcHJpbWFyeUZpZWxkcyQ6IGFueVtdID0gW107XG4gIHNlY29uZGFyeUZpZWxkcyQ6IGFueVtdID0gW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhbmd1bGFyUENvbm5lY3Q6IEFuZ3VsYXJQQ29ubmVjdFNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gRmlyc3QgdGhpbmcgaW4gaW5pdGlhbGl6YXRpb24gaXMgcmVnaXN0ZXJpbmcgYW5kIHN1YnNjcmliaW5nIHRvIHRoZSBBbmd1bGFyUENvbm5lY3Qgc2VydmljZVxuICAgIHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YSA9IHRoaXMuYW5ndWxhclBDb25uZWN0LnJlZ2lzdGVyQW5kU3Vic2NyaWJlQ29tcG9uZW50KHRoaXMsIHRoaXMub25TdGF0ZUNoYW5nZSk7XG5cbiAgICB0aGlzLmluaXRDb21wb25lbnQoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbikge1xuICAgICAgdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnVuc3Vic2NyaWJlRm4oKTtcbiAgICB9XG4gIH1cblxuICBpbml0Q29tcG9uZW50KCkge1xuICAgIC8vIGRlcmVmZXJlbmNlIHRoZSBWaWV3IGluIGNhc2UgdGhlIGluY29taW5nIHBDb25uJCBpcyBhICdyZWZlcmVuY2UnXG4gICAgdGhpcy5wQ29ubiQgPSBSZWZlcmVuY2VDb21wb25lbnQubm9ybWFsaXplUENvbm4odGhpcy5wQ29ubiQpO1xuXG4gICAgLy8gVGhlbiwgY29udGludWUgb24gd2l0aCBvdGhlciBpbml0aWFsaXphdGlvblxuXG4gICAgdGhpcy5jb25maWdQcm9wcyQgPSB0aGlzLnBDb25uJC5yZXNvbHZlQ29uZmlnUHJvcHModGhpcy5wQ29ubiQuZ2V0Q29uZmlnUHJvcHMoKSkgYXMgQ2FzZVN1bW1hcnlQcm9wcztcbiAgICB0aGlzLmFyQ2hpbGRyZW4kID0gdGhpcy5wQ29ubiQuZ2V0Q2hpbGRyZW4oKSBhcyBhbnlbXTtcblxuICAgIHRoaXMuZ2VuZXJhdGVQcmltYXJ5QW5kU2Vjb25kYXJ5RmllbGRzKCk7XG5cbiAgICB0aGlzLnN0YXR1cyQgPSB0aGlzLmNvbmZpZ1Byb3BzJC5zdGF0dXM7XG4gICAgdGhpcy5iU2hvd1N0YXR1cyQgPSB0aGlzLmNvbmZpZ1Byb3BzJC5zaG93U3RhdHVzO1xuICB9XG5cbiAgLy8gQ2FsbGJhY2sgcGFzc2VkIHdoZW4gc3Vic2NyaWJpbmcgdG8gc3RvcmUgY2hhbmdlXG4gIG9uU3RhdGVDaGFuZ2UoKSB7XG4gICAgLy8gU2hvdWxkIGFsd2F5cyBjaGVjayB0aGUgYnJpZGdlIHRvIHNlZSBpZiB0aGUgY29tcG9uZW50IHNob3VsZFxuICAgIC8vIHVwZGF0ZSBpdHNlbGYgKHJlLXJlbmRlcilcbiAgICBjb25zdCBiVXBkYXRlU2VsZiA9IHRoaXMuYW5ndWxhclBDb25uZWN0LnNob3VsZENvbXBvbmVudFVwZGF0ZSh0aGlzKTtcblxuICAgIC8vIE9OTFkgY2FsbCB1cGRhdGVTZWxmIHdoZW4gdGhlIGNvbXBvbmVudCBzaG91bGQgdXBkYXRlXG4gICAgaWYgKGJVcGRhdGVTZWxmKSB7XG4gICAgICB0aGlzLnVwZGF0ZVNlbGYoKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVTZWxmKCkge1xuICAgIHRoaXMuZ2VuZXJhdGVQcmltYXJ5QW5kU2Vjb25kYXJ5RmllbGRzKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICB0aGlzLmluaXRDb21wb25lbnQoKTtcbiAgfVxuXG4gIGdlbmVyYXRlUHJpbWFyeUFuZFNlY29uZGFyeUZpZWxkcygpIHtcbiAgICB0aGlzLnByaW1hcnlGaWVsZHMkID0gW107XG4gICAgdGhpcy5zZWNvbmRhcnlGaWVsZHMkID0gW107XG5cbiAgICBmb3IgKGNvbnN0IG9GaWVsZCBvZiB0aGlzLmFyQ2hpbGRyZW4kWzBdLmdldFBDb25uZWN0KCkuZ2V0Q2hpbGRyZW4oKSkge1xuICAgICAgY29uc3Qga2lkID0gb0ZpZWxkLmdldFBDb25uZWN0KCk7XG4gICAgICB0aGlzLnByaW1hcnlGaWVsZHMkLnB1c2goa2lkLnJlc29sdmVDb25maWdQcm9wcyhraWQuZ2V0UmF3TWV0YWRhdGEoKSkpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3Qgb0ZpZWxkIG9mIHRoaXMuYXJDaGlsZHJlbiRbMV0uZ2V0UENvbm5lY3QoKS5nZXRDaGlsZHJlbigpKSB7XG4gICAgICBjb25zdCBraWQgPSBvRmllbGQuZ2V0UENvbm5lY3QoKTtcbiAgICAgIHRoaXMuc2Vjb25kYXJ5RmllbGRzJC5wdXNoKHsgLi4ua2lkLnJlc29sdmVDb25maWdQcm9wcyhraWQuZ2V0UmF3TWV0YWRhdGEoKSksIGtpZCB9KTtcbiAgICB9XG4gIH1cbn1cbiIsIjxjb21wb25lbnQtbWFwcGVyIG5hbWU9XCJDYXNlU3VtbWFyeUZpZWxkc1wiIFtwcm9wc109XCJ7IHN0YXR1cyQsIGJTaG93U3RhdHVzJCwgcHJpbWFyeUZpZWxkcyQsIHNlY29uZGFyeUZpZWxkcyQgfVwiPjwvY29tcG9uZW50LW1hcHBlcj5cbiJdfQ==
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import { Component, Input, forwardRef } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { MatToolbarModule } from '@angular/material/toolbar';
|
|
4
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
5
|
+
import { MatMenuModule } from '@angular/material/menu';
|
|
6
|
+
import { interval } from 'rxjs';
|
|
7
|
+
import { Utils } from '../../../_helpers/utils';
|
|
8
|
+
import { ComponentMapperComponent } from '../../../_bridge/component-mapper/component-mapper.component';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "../../../_bridge/angular-pconnect";
|
|
11
|
+
import * as i2 from "../../../_helpers/utils";
|
|
12
|
+
import * as i3 from "@angular/common";
|
|
13
|
+
import * as i4 from "@angular/material/toolbar";
|
|
14
|
+
import * as i5 from "@angular/material/button";
|
|
15
|
+
import * as i6 from "@angular/material/menu";
|
|
16
|
+
export class CaseViewComponent {
|
|
17
|
+
constructor(cdRef, angularPConnect, utils) {
|
|
18
|
+
this.cdRef = cdRef;
|
|
19
|
+
this.angularPConnect = angularPConnect;
|
|
20
|
+
this.utils = utils;
|
|
21
|
+
// Used with AngularPConnect
|
|
22
|
+
this.angularPConnectData = {};
|
|
23
|
+
this.heading$ = '';
|
|
24
|
+
this.id$ = '';
|
|
25
|
+
this.status$ = '';
|
|
26
|
+
this.caseTabs$ = [];
|
|
27
|
+
this.arAvailableActions$ = [];
|
|
28
|
+
this.arAvailabeProcesses$ = [];
|
|
29
|
+
this.currentCaseID = '';
|
|
30
|
+
this.bHasNewAttachments = false;
|
|
31
|
+
this.localeCategory = 'CaseView';
|
|
32
|
+
}
|
|
33
|
+
ngOnInit() {
|
|
34
|
+
// First thing in initialization is registering and subscribing to the AngularPConnect service
|
|
35
|
+
this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange);
|
|
36
|
+
// this.updateSelf();
|
|
37
|
+
this.checkAndUpdate();
|
|
38
|
+
this.localizedVal = PCore.getLocaleUtils().getLocaleValue;
|
|
39
|
+
}
|
|
40
|
+
ngOnDestroy() {
|
|
41
|
+
if (this.angularPConnectData.unsubscribeFn) {
|
|
42
|
+
this.angularPConnectData.unsubscribeFn();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
// Callback passed when subscribing to store change
|
|
46
|
+
onStateChange() {
|
|
47
|
+
this.checkAndUpdate();
|
|
48
|
+
}
|
|
49
|
+
checkAndUpdate() {
|
|
50
|
+
// Should always check the bridge to see if the component should update itself (re-render)
|
|
51
|
+
const bUpdateSelf = this.angularPConnect.shouldComponentUpdate(this);
|
|
52
|
+
// ONLY call updateSelf when the component should update
|
|
53
|
+
// AND removing the "gate" that was put there since shouldComponentUpdate
|
|
54
|
+
// should be the real "gate"
|
|
55
|
+
if (bUpdateSelf) {
|
|
56
|
+
// generally, don't want to refresh everything when data changes in caseView, it is usually the
|
|
57
|
+
// case summary. But check if the case ID changes, this means a different case and we should
|
|
58
|
+
// update all.
|
|
59
|
+
if (this.hasCaseIDChanged()) {
|
|
60
|
+
this.fullUpdate();
|
|
61
|
+
// update okToInitFlowContainer, because case view was drawn, flow container will need to be init
|
|
62
|
+
// to match Nebula/Constellation
|
|
63
|
+
sessionStorage.setItem('okToInitFlowContainer', 'true');
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
this.updateHeaderAndSummary();
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
hasCaseIDChanged() {
|
|
71
|
+
// @ts-ignore - parameter “contextName” for getDataObject method should be optional
|
|
72
|
+
if (this.currentCaseID !== this.pConn$.getDataObject().caseInfo.ID) {
|
|
73
|
+
// @ts-ignore - parameter “contextName” for getDataObject method should be optional
|
|
74
|
+
this.currentCaseID = this.pConn$.getDataObject().caseInfo.ID;
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
updateHeaderAndSummary() {
|
|
80
|
+
this.configProps$ = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps());
|
|
81
|
+
// @ts-ignore - parameter “contextName” for getDataObject method should be optional
|
|
82
|
+
const hasNewAttachments = this.pConn$.getDataObject().caseInfo?.hasNewAttachments;
|
|
83
|
+
if (hasNewAttachments !== this.bHasNewAttachments) {
|
|
84
|
+
this.bHasNewAttachments = hasNewAttachments;
|
|
85
|
+
if (this.bHasNewAttachments) {
|
|
86
|
+
// @ts-ignore - Argument of type 'boolean' is not assignable to parameter of type 'object'
|
|
87
|
+
PCore.getPubSubUtils().publish(PCore.getEvents().getCaseEvent().CASE_ATTACHMENTS_UPDATED_FROM_CASEVIEW, true);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
const kids = this.pConn$.getChildren();
|
|
91
|
+
for (const kid of kids) {
|
|
92
|
+
const meta = kid.getPConnect().getRawMetadata();
|
|
93
|
+
if (meta.type.toLowerCase() == 'region' && meta.name.toLowerCase() == 'summary') {
|
|
94
|
+
this.caseSummaryPConn$ = kid.getPConnect().getChildren()[0].getPConnect();
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
// have to put in a timeout, otherwise get an angular change event error
|
|
98
|
+
const timer = interval(100).subscribe(() => {
|
|
99
|
+
timer.unsubscribe();
|
|
100
|
+
this.heading$ = PCore.getLocaleUtils().getLocaleValue(this.configProps$.header, '', this.localeKey);
|
|
101
|
+
this.id$ = this.configProps$.subheader;
|
|
102
|
+
// @ts-ignore - second parameter pageReference for getValue method should be optional
|
|
103
|
+
this.status$ = this.pConn$.getValue('.pyStatusWork');
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
fullUpdate() {
|
|
107
|
+
this.caseTabs$ = [];
|
|
108
|
+
this.configProps$ = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps());
|
|
109
|
+
// let caseTypeID = this.configProps$.ruleClass;
|
|
110
|
+
// let caseTypeName = this.configProps$.header;
|
|
111
|
+
// this.localeKey = `${caseTypeID}!CASE!${caseTypeName}`.toUpperCase();
|
|
112
|
+
this.localeKey = `${this.pConn$.getCaseInfo().getClassName()}!CASE!${this.pConn$.getCaseInfo().getName()}`.toUpperCase();
|
|
113
|
+
this.updateHeaderAndSummary();
|
|
114
|
+
this.arChildren$ = this.pConn$.getChildren();
|
|
115
|
+
// @ts-ignore - parameter “contextName” for getDataObject method should be optional
|
|
116
|
+
const caseInfo = this.pConn$.getDataObject().caseInfo;
|
|
117
|
+
this.currentCaseID = caseInfo.ID;
|
|
118
|
+
this.arAvailableActions$ = caseInfo?.availableActions ? caseInfo.availableActions : [];
|
|
119
|
+
this.editAction = this.arAvailableActions$.find(action => action.ID === 'pyUpdateCaseDetails');
|
|
120
|
+
this.arAvailabeProcesses$ = caseInfo?.availableProcesses ? caseInfo.availableProcesses : [];
|
|
121
|
+
this.svgCase$ = this.utils.getImageSrc(this.configProps$.icon, this.utils.getSDKStaticContentUrl());
|
|
122
|
+
// this.utils.consoleKidDump(this.pConn$);
|
|
123
|
+
if (!this.displayOnlyFA$) {
|
|
124
|
+
for (const kid of this.arChildren$) {
|
|
125
|
+
const kidPConn = kid.getPConnect();
|
|
126
|
+
if (kidPConn.getRawMetadata().name == 'Tabs') {
|
|
127
|
+
this.mainTabs = kid;
|
|
128
|
+
this.mainTabData = this.mainTabs.getPConnect().getChildren();
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
this.generateTabsData();
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
generateTabsData() {
|
|
135
|
+
this.mainTabs
|
|
136
|
+
.getPConnect()
|
|
137
|
+
.getChildren()
|
|
138
|
+
?.forEach((child, i) => {
|
|
139
|
+
const config = child.getPConnect().resolveConfigProps(child.getPConnect().getRawMetadata()).config;
|
|
140
|
+
let { label } = config;
|
|
141
|
+
const { inheritedProps, visibility } = config;
|
|
142
|
+
// For some tabs, "label" property is not avaialable in theTabCompConfig, so will get them from inheritedProps
|
|
143
|
+
if (!label) {
|
|
144
|
+
inheritedProps.forEach((inheritedProp) => {
|
|
145
|
+
if (inheritedProp.prop === 'label') {
|
|
146
|
+
label = inheritedProp.value;
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
// We'll display the tabs when either visibility property doesn't exist or is true(if exists)
|
|
151
|
+
if (visibility === undefined || visibility === true) {
|
|
152
|
+
this.caseTabs$.push({ name: label, id: i });
|
|
153
|
+
// To make first visible tab display at the beginning
|
|
154
|
+
if (!this.tabData$) {
|
|
155
|
+
this.tabData$ = { type: 'DeferLoad', config: child.getPConnect().getRawMetadata().config };
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
updateSelf() {
|
|
161
|
+
this.fullUpdate();
|
|
162
|
+
}
|
|
163
|
+
onTabClick(tab) {
|
|
164
|
+
this.tabData$ = this.mainTabData[tab].getPConnect().getRawMetadata();
|
|
165
|
+
this.cdRef.detectChanges();
|
|
166
|
+
}
|
|
167
|
+
_editClick() {
|
|
168
|
+
const editAction = this.arAvailableActions$.find(action => action.ID === 'pyUpdateCaseDetails');
|
|
169
|
+
const actionsAPI = this.pConn$.getActionsApi();
|
|
170
|
+
const openLocalAction = actionsAPI.openLocalAction.bind(actionsAPI);
|
|
171
|
+
openLocalAction(editAction.ID, { ...editAction });
|
|
172
|
+
}
|
|
173
|
+
_menuActionClick(data) {
|
|
174
|
+
const actionsAPI = this.pConn$.getActionsApi();
|
|
175
|
+
const openLocalAction = actionsAPI.openLocalAction.bind(actionsAPI);
|
|
176
|
+
openLocalAction(data.ID, { ...data, containerName: 'modal', type: 'express' });
|
|
177
|
+
}
|
|
178
|
+
_menuProcessClick(data) {
|
|
179
|
+
const actionsAPI = this.pConn$.getActionsApi();
|
|
180
|
+
const openProcessAction = actionsAPI.openProcessAction.bind(actionsAPI);
|
|
181
|
+
openProcessAction(data.ID, { ...data });
|
|
182
|
+
}
|
|
183
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CaseViewComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.AngularPConnectService }, { token: i2.Utils }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
184
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CaseViewComponent, isStandalone: true, selector: "app-case-view", inputs: { pConn$: "pConn$", formGroup$: "formGroup$", displayOnlyFA$: "displayOnlyFA$" }, providers: [Utils], ngImport: i0, template: "<div class=\"psdk-case-view\" id=\"case-view\">\n <div *ngIf=\"!displayOnlyFA$\" class=\"psdk-case-view-info\">\n <mat-toolbar color=\"primary\" class=\"psdk-case-view-toolbar\">\n <mat-toolbar-row style=\"padding-left: 1rem\">\n <div class=\"psdk-case-icon-div\">\n <img class=\"psdk-case-svg-icon\" src=\"{{ svgCase$ }}\" />\n </div>\n <div class=\"psdk-case-view-heading\">\n <div id=\"current-caseID\" [hidden]=\"true\">{{ currentCaseID }}</div>\n <div class=\"psdk-case-view-heading-id\" id=\"caseId\">{{ id$ }}</div>\n <div>\n <h1>{{ heading$ }}</h1>\n </div>\n </div>\n </mat-toolbar-row>\n </mat-toolbar>\n\n <div class=\"psdk-case-view-buttons\">\n <button *ngIf=\"editAction\" mat-raised-button color=\"secondary\" (click)=\"_editClick()\">{{ localizedVal('Edit', localeCategory) }}</button>\n <button mat-raised-button color=\"secondary\" [matMenuTriggerFor]=\"actionMenu\">{{ localizedVal('Actions...', localeCategory) }}</button>\n <mat-menu #actionMenu=\"matMenu\" overlapTrigger=\"false\">\n <ng-container *ngFor=\"let action of arAvailableActions$\">\n <button mat-menu-item (click)=\"_menuActionClick(action)\">\n {{ localizedVal(action.name, '', localeKey) }}\n </button>\n </ng-container>\n <ng-container *ngFor=\"let process of arAvailabeProcesses$\">\n <button mat-menu-item (click)=\"_menuProcessClick(process)\">\n {{ process.name }}\n </button>\n </ng-container>\n </mat-menu>\n </div>\n\n <div class=\"psdk-case-view-divider\"></div>\n\n <div class=\"psdk-case-view-summary\">\n <component-mapper name=\"CaseSummary\" [props]=\"{ pConn$: caseSummaryPConn$ }\"></component-mapper>\n </div>\n\n <component-mapper\n *ngIf=\"caseTabs$.length > 1\"\n name=\"VerticalTabs\"\n [props]=\"{ tabConfig$: caseTabs$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ tabClick: onTabClick }\"\n ></component-mapper>\n </div>\n <div class=\"psdk-case-view-main\">\n <div *ngIf=\"!displayOnlyFA$\">\n <div *ngFor=\"let kid of arChildren$\">\n <div\n *ngIf=\"\n kid.getPConnect().getRawMetadata().type.toLowerCase() == 'region' && kid.getPConnect().getRawMetadata().name.toLowerCase() == 'stages'\n \"\n >\n <component-mapper name=\"Region\" [props]=\"{ pConn$: kid.getPConnect() }\"></component-mapper>\n </div>\n </div>\n </div>\n\n <div *ngFor=\"let kid of arChildren$\">\n <div\n *ngIf=\"kid.getPConnect().getRawMetadata().type.toLowerCase() == 'region' && kid.getPConnect().getRawMetadata().name.toLowerCase() == 'todo'\"\n >\n <component-mapper name=\"Region\" [props]=\"{ pConn$: kid.getPConnect(), formGroup$ }\"></component-mapper>\n </div>\n </div>\n\n <div *ngFor=\"let kid of arChildren$\">\n <div *ngIf=\"kid.getPConnect().getRawMetadata().type.toLowerCase() == 'region' && kid.getPConnect().getRawMetadata().name == 'Main'\">\n <component-mapper name=\"Region\" [props]=\"{ pConn$: kid.getPConnect(), formGroup$ }\"></component-mapper>\n </div>\n </div>\n\n <div *ngIf=\"!displayOnlyFA$\">\n <component-mapper name=\"DeferLoad\" [props]=\"{ pConn$, loadData$: tabData$, name: tabData$?.config?.name }\"></component-mapper>\n </div>\n </div>\n <div *ngIf=\"!displayOnlyFA$\">\n <div *ngIf=\"arChildren$\" class=\"psdk-case-view-utilities\">\n <div *ngFor=\"let kid of arChildren$\">\n <div *ngIf=\"kid.getPConnect().getRawMetadata()?.type.toLowerCase() == 'region' && kid.getPConnect().getRawMetadata()?.name == 'Utilities'\">\n <component-mapper name=\"Region\" [props]=\"{ pConn$: kid.getPConnect() }\"></component-mapper>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: ["h1{font-size:1.1rem;line-height:1.3rem}::ng-deep .mat-mdc-menu-panel{overflow:unset;max-width:unset}.psdk-case-view-label{font-size:1rem;display:block;transform:translateY(.2em) scale(.75) perspective(100px) translateZ(.001px);-ms-transform:translateY(.2em) scale(.75);width:133.33333%;border-radius:.6125rem}.psdk-case-view{box-sizing:border-box;display:flex}.ng-case-view-toolbar{padding:.625rem}.psdk-case-icon-div{background-color:#4527a0;border-radius:1rem;padding:.5rem .3rem .3rem}.psdk-case-svg-icon{width:2rem;padding:0rem .3125rem;filter:invert(100%) sepia(99%) saturate(0%) hue-rotate(144deg) brightness(109%) contrast(101%)}.psdk-case-view-info-box{display:flex;flex-direction:row;padding:0rem .3125rem 0rem 0rem}.psdk-case-view-info{flex:0 0 auto;width:25rem;float:left;padding:0rem .3125rem 0rem 0rem;height:100%;background-color:#fff}.psdk-case-view-main{flex-grow:2;float:left;padding:0rem .3125rem;height:100%}.psdk-case-view-summary{padding-left:.75rem}.psdk-case-view-heading{display:block;text-align:left;padding-left:.5rem;padding-bottom:0;padding-top:5px}.psdk-case-view-heading-id{font-size:.9rem;font-weight:400}.psdk-case-view-buttons{display:flex;justify-content:flex-start;padding:.3125rem}.psdk-case-view-utilities{width:21.875rem;float:left;padding:0rem .3125rem;height:100%}.psdk-case-view-divider{border-bottom:.0625rem solid lightgrey}.psdk-status{padding:.3125rem;background-color:#673ab7;color:#fff;width:-moz-fit-content;width:fit-content;margin:.625rem}button{margin:0rem .3125rem}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(function () { return CommonModule; }) }, { kind: "directive", type: i0.forwardRef(function () { return i3.NgForOf; }), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(function () { return i3.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatToolbarModule; }) }, { kind: "component", type: i0.forwardRef(function () { return i4.MatToolbar; }), selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: i0.forwardRef(function () { return i4.MatToolbarRow; }), selector: "mat-toolbar-row", exportAs: ["matToolbarRow"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatButtonModule; }) }, { kind: "component", type: i0.forwardRef(function () { return i5.MatButton; }), selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatMenuModule; }) }, { kind: "component", type: i0.forwardRef(function () { return i6.MatMenu; }), selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i0.forwardRef(function () { return i6.MatMenuItem; }), selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i0.forwardRef(function () { return i6.MatMenuTrigger; }), selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i0.forwardRef(function () { return ComponentMapperComponent; }), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
|
|
185
|
+
}
|
|
186
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CaseViewComponent, decorators: [{
|
|
187
|
+
type: Component,
|
|
188
|
+
args: [{ selector: 'app-case-view', providers: [Utils], standalone: true, imports: [CommonModule, MatToolbarModule, MatButtonModule, MatMenuModule, forwardRef(() => ComponentMapperComponent)], template: "<div class=\"psdk-case-view\" id=\"case-view\">\n <div *ngIf=\"!displayOnlyFA$\" class=\"psdk-case-view-info\">\n <mat-toolbar color=\"primary\" class=\"psdk-case-view-toolbar\">\n <mat-toolbar-row style=\"padding-left: 1rem\">\n <div class=\"psdk-case-icon-div\">\n <img class=\"psdk-case-svg-icon\" src=\"{{ svgCase$ }}\" />\n </div>\n <div class=\"psdk-case-view-heading\">\n <div id=\"current-caseID\" [hidden]=\"true\">{{ currentCaseID }}</div>\n <div class=\"psdk-case-view-heading-id\" id=\"caseId\">{{ id$ }}</div>\n <div>\n <h1>{{ heading$ }}</h1>\n </div>\n </div>\n </mat-toolbar-row>\n </mat-toolbar>\n\n <div class=\"psdk-case-view-buttons\">\n <button *ngIf=\"editAction\" mat-raised-button color=\"secondary\" (click)=\"_editClick()\">{{ localizedVal('Edit', localeCategory) }}</button>\n <button mat-raised-button color=\"secondary\" [matMenuTriggerFor]=\"actionMenu\">{{ localizedVal('Actions...', localeCategory) }}</button>\n <mat-menu #actionMenu=\"matMenu\" overlapTrigger=\"false\">\n <ng-container *ngFor=\"let action of arAvailableActions$\">\n <button mat-menu-item (click)=\"_menuActionClick(action)\">\n {{ localizedVal(action.name, '', localeKey) }}\n </button>\n </ng-container>\n <ng-container *ngFor=\"let process of arAvailabeProcesses$\">\n <button mat-menu-item (click)=\"_menuProcessClick(process)\">\n {{ process.name }}\n </button>\n </ng-container>\n </mat-menu>\n </div>\n\n <div class=\"psdk-case-view-divider\"></div>\n\n <div class=\"psdk-case-view-summary\">\n <component-mapper name=\"CaseSummary\" [props]=\"{ pConn$: caseSummaryPConn$ }\"></component-mapper>\n </div>\n\n <component-mapper\n *ngIf=\"caseTabs$.length > 1\"\n name=\"VerticalTabs\"\n [props]=\"{ tabConfig$: caseTabs$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ tabClick: onTabClick }\"\n ></component-mapper>\n </div>\n <div class=\"psdk-case-view-main\">\n <div *ngIf=\"!displayOnlyFA$\">\n <div *ngFor=\"let kid of arChildren$\">\n <div\n *ngIf=\"\n kid.getPConnect().getRawMetadata().type.toLowerCase() == 'region' && kid.getPConnect().getRawMetadata().name.toLowerCase() == 'stages'\n \"\n >\n <component-mapper name=\"Region\" [props]=\"{ pConn$: kid.getPConnect() }\"></component-mapper>\n </div>\n </div>\n </div>\n\n <div *ngFor=\"let kid of arChildren$\">\n <div\n *ngIf=\"kid.getPConnect().getRawMetadata().type.toLowerCase() == 'region' && kid.getPConnect().getRawMetadata().name.toLowerCase() == 'todo'\"\n >\n <component-mapper name=\"Region\" [props]=\"{ pConn$: kid.getPConnect(), formGroup$ }\"></component-mapper>\n </div>\n </div>\n\n <div *ngFor=\"let kid of arChildren$\">\n <div *ngIf=\"kid.getPConnect().getRawMetadata().type.toLowerCase() == 'region' && kid.getPConnect().getRawMetadata().name == 'Main'\">\n <component-mapper name=\"Region\" [props]=\"{ pConn$: kid.getPConnect(), formGroup$ }\"></component-mapper>\n </div>\n </div>\n\n <div *ngIf=\"!displayOnlyFA$\">\n <component-mapper name=\"DeferLoad\" [props]=\"{ pConn$, loadData$: tabData$, name: tabData$?.config?.name }\"></component-mapper>\n </div>\n </div>\n <div *ngIf=\"!displayOnlyFA$\">\n <div *ngIf=\"arChildren$\" class=\"psdk-case-view-utilities\">\n <div *ngFor=\"let kid of arChildren$\">\n <div *ngIf=\"kid.getPConnect().getRawMetadata()?.type.toLowerCase() == 'region' && kid.getPConnect().getRawMetadata()?.name == 'Utilities'\">\n <component-mapper name=\"Region\" [props]=\"{ pConn$: kid.getPConnect() }\"></component-mapper>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: ["h1{font-size:1.1rem;line-height:1.3rem}::ng-deep .mat-mdc-menu-panel{overflow:unset;max-width:unset}.psdk-case-view-label{font-size:1rem;display:block;transform:translateY(.2em) scale(.75) perspective(100px) translateZ(.001px);-ms-transform:translateY(.2em) scale(.75);width:133.33333%;border-radius:.6125rem}.psdk-case-view{box-sizing:border-box;display:flex}.ng-case-view-toolbar{padding:.625rem}.psdk-case-icon-div{background-color:#4527a0;border-radius:1rem;padding:.5rem .3rem .3rem}.psdk-case-svg-icon{width:2rem;padding:0rem .3125rem;filter:invert(100%) sepia(99%) saturate(0%) hue-rotate(144deg) brightness(109%) contrast(101%)}.psdk-case-view-info-box{display:flex;flex-direction:row;padding:0rem .3125rem 0rem 0rem}.psdk-case-view-info{flex:0 0 auto;width:25rem;float:left;padding:0rem .3125rem 0rem 0rem;height:100%;background-color:#fff}.psdk-case-view-main{flex-grow:2;float:left;padding:0rem .3125rem;height:100%}.psdk-case-view-summary{padding-left:.75rem}.psdk-case-view-heading{display:block;text-align:left;padding-left:.5rem;padding-bottom:0;padding-top:5px}.psdk-case-view-heading-id{font-size:.9rem;font-weight:400}.psdk-case-view-buttons{display:flex;justify-content:flex-start;padding:.3125rem}.psdk-case-view-utilities{width:21.875rem;float:left;padding:0rem .3125rem;height:100%}.psdk-case-view-divider{border-bottom:.0625rem solid lightgrey}.psdk-status{padding:.3125rem;background-color:#673ab7;color:#fff;width:-moz-fit-content;width:fit-content;margin:.625rem}button{margin:0rem .3125rem}\n"] }]
|
|
189
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.AngularPConnectService }, { type: i2.Utils }]; }, propDecorators: { pConn$: [{
|
|
190
|
+
type: Input
|
|
191
|
+
}], formGroup$: [{
|
|
192
|
+
type: Input
|
|
193
|
+
}], displayOnlyFA$: [{
|
|
194
|
+
type: Input
|
|
195
|
+
}] } });
|
|
196
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy90ZW1wbGF0ZS9jYXNlLXZpZXcvY2FzZS12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy90ZW1wbGF0ZS9jYXNlLXZpZXcvY2FzZS12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFxQixVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVoQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOERBQThELENBQUM7Ozs7Ozs7O0FBaUJ4RyxNQUFNLE9BQU8saUJBQWlCO0lBZ0M1QixZQUNVLEtBQXdCLEVBQ3hCLGVBQXVDLEVBQ3ZDLEtBQVk7UUFGWixVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUN4QixvQkFBZSxHQUFmLGVBQWUsQ0FBd0I7UUFDdkMsVUFBSyxHQUFMLEtBQUssQ0FBTztRQTlCdEIsNEJBQTRCO1FBQzVCLHdCQUFtQixHQUF3QixFQUFFLENBQUM7UUFLOUMsYUFB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UUFDL0MsTUFBTSxlQUFlLEdBQUcsVUFBVSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFcEUsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLElBQUksRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxJQUFJO1FBQ3BCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDL0MsTUFBTSxpQkFBaUIsR0FBRyxVQUFVLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXhFLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLENBQUM7SUFDMUMsQ0FBQzsrR0F0TlUsaUJBQWlCO21HQUFqQixpQkFBaUIsc0pBSmpCLENBQUMsS0FBSyxDQUFDLDBCQ3RCcEIsODFIQXlGQSwya0REakVZLFlBQVksb1hBQUUsZ0JBQWdCLDhXQUFFLGVBQWUseVZBQUUsYUFBYSw0aUJBQW1CLHdCQUF3Qjs7NEZBRXhHLGlCQUFpQjtrQkFSN0IsU0FBUzsrQkFDRSxlQUFlLGFBR2QsQ0FBQyxLQUFLLENBQUMsY0FDTixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsd0JBQXdCLENBQUMsQ0FBQztpS0FHNUcsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIGZvcndhcmRSZWYsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdFRvb2xiYXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sYmFyJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBpbnRlcnZhbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQW5ndWxhclBDb25uZWN0RGF0YSwgQW5ndWxhclBDb25uZWN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19icmlkZ2UvYW5ndWxhci1wY29ubmVjdCc7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uLy4uLy4uL19oZWxwZXJzL3V0aWxzJztcbmltcG9ydCB7IENvbXBvbmVudE1hcHBlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL19icmlkZ2UvY29tcG9uZW50LW1hcHBlci9jb21wb25lbnQtbWFwcGVyLmNvbXBvbmVudCc7XG5cbmludGVyZmFjZSBDYXNlVmlld1Byb3BzIHtcbiAgLy8gSWYgYW55LCBlbnRlciBhZGRpdGlvbmFsIHByb3BzIHRoYXQgb25seSBleGlzdCBvbiB0aGlzIGNvbXBvbmVudFxuICBpY29uOiBzdHJpbmc7XG4gIHN1YmhlYWRlcjogc3RyaW5nO1xuICBoZWFkZXI6IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWNhc2UtdmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYXNlLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYXNlLXZpZXcuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbVXRpbHNdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRUb29sYmFyTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGUsIE1hdE1lbnVNb2R1bGUsIGZvcndhcmRSZWYoKCkgPT4gQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50KV1cbn0pXG5leHBvcnQgY2xhc3MgQ2FzZVZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHBDb25uJDogdHlwZW9mIFBDb25uZWN0O1xuICBASW5wdXQoKSBmb3JtR3JvdXAkOiBGb3JtR3JvdXA7XG4gIEBJbnB1dCgpIGRpc3BsYXlPbmx5RkEkOiBib29sZWFuO1xuXG4gIC8vIFVzZWQgd2l0aCBBbmd1bGFyUENvbm5lY3RcbiAgYW5ndWxhclBDb25uZWN0RGF0YTogQW5ndWxhclBDb25uZWN0RGF0YSA9IHt9O1xuICBjb25maWdQcm9wcyQ6IENhc2VWaWV3UHJvcHM7XG5cbiAgYXJDaGlsZHJlbiQ6IGFueVtdO1xuXG4gIGhlYWRpbmckID0gJyc7XG4gIGlkJCA9ICcnO1xuICBzdGF0dXMkID0gJyc7XG4gIGNhc2VUYWJzJDogYW55W10gPSBbXTtcbiAgc3ZnQ2FzZSQ6IHN0cmluZztcbiAgdGFiRGF0YSQ6IGFueTtcblxuICBtYWluVGFiczogYW55O1xuICBtYWluVGFiRGF0YTogYW55O1xuXG4gIGFyQXZhaWxhYmxlQWN0aW9ucyQ6IGFueVtdID0gW107XG4gIGFyQXZhaWxhYmVQcm9jZXNzZXMkOiBhbnlbXSA9IFtdO1xuXG4gIGNhc2VTdW1tYXJ5UENvbm4kOiBhbnk7XG4gIGN1cnJlbnRDYXNlSUQgPSAnJztcbiAgZWRpdEFjdGlvbjogYm9vbGVhbjtcbiAgYkhhc05ld0F0dGFjaG1lbnRzID0gZmFsc2U7XG4gIGxvY2FsaXplZFZhbDogYW55O1xuICBsb2NhbGVDYXRlZ29yeSA9ICdDYXNlVmlldyc7XG4gIGxvY2FsZUtleTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgYW5ndWxhclBDb25uZWN0OiBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXRpbHM6IFV0aWxzXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBGaXJzdCB0aGluZyBpbiBpbml0aWFsaXphdGlvbiBpcyByZWdpc3RlcmluZyBhbmQgc3Vic2NyaWJpbmcgdG8gdGhlIEFuZ3VsYXJQQ29ubmVjdCBzZXJ2aWNlXG4gICAgdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhID0gdGhpcy5hbmd1bGFyUENvbm5lY3QucmVnaXN0ZXJBbmRTdWJzY3JpYmVDb21wb25lbnQodGhpcywgdGhpcy5vblN0YXRlQ2hhbmdlKTtcblxuICAgIC8vIHRoaXMudXBkYXRlU2VsZigpO1xuICAgIHRoaXMuY2hlY2tBbmRVcGRhdGUoKTtcbiAgICB0aGlzLmxvY2FsaXplZFZhbCA9IFBDb3JlLmdldExvY2FsZVV0aWxzKCkuZ2V0TG9jYWxlVmFsdWU7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnVuc3Vic2NyaWJlRm4pIHtcbiAgICAgIHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS51bnN1YnNjcmliZUZuKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gQ2FsbGJhY2sgcGFzc2VkIHdoZW4gc3Vic2NyaWJpbmcgdG8gc3RvcmUgY2hhbmdlXG4gIG9uU3RhdGVDaGFuZ2UoKSB7XG4gICAgdGhpcy5jaGVja0FuZFVwZGF0ZSgpO1xuICB9XG5cbiAgY2hlY2tBbmRVcGRhdGUoKSB7XG4gICAgLy8gU2hvdWxkIGFsd2F5cyBjaGVjayB0aGUgYnJpZGdlIHRvIHNlZSBpZiB0aGUgY29tcG9uZW50IHNob3VsZCB1cGRhdGUgaXRzZWxmIChyZS1yZW5kZXIpXG4gICAgY29uc3QgYlVwZGF0ZVNlbGYgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5zaG91bGRDb21wb25lbnRVcGRhdGUodGhpcyk7XG5cbiAgICAvLyBPTkxZIGNhbGwgdXBkYXRlU2VsZiB3aGVuIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZVxuICAgIC8vICAgIEFORCByZW1vdmluZyB0aGUgXCJnYXRlXCIgdGhhdCB3YXMgcHV0IHRoZXJlIHNpbmNlIHNob3VsZENvbXBvbmVudFVwZGF0ZVxuICAgIC8vICAgICAgc2hvdWxkIGJlIHRoZSByZWFsIFwiZ2F0ZVwiXG4gICAgaWYgKGJVcGRhdGVTZWxmKSB7XG4gICAgICAvLyBnZW5lcmFsbHksIGRvbid0IHdhbnQgdG8gcmVmcmVzaCBldmVyeXRoaW5nIHdoZW4gZGF0YSBjaGFuZ2VzIGluIGNhc2VWaWV3LCBpdCBpcyB1c3VhbGx5IHRoZVxuICAgICAgLy8gY2FzZSBzdW1tYXJ5LiAgQnV0IGNoZWNrIGlmIHRoZSBjYXNlIElEIGNoYW5nZXMsIHRoaXMgbWVhbnMgYSBkaWZmZXJlbnQgY2FzZSBhbmQgd2Ugc2hvdWxkXG4gICAgICAvLyB1cGRhdGUgYWxsLlxuICAgICAgaWYgKHRoaXMuaGFzQ2FzZUlEQ2hhbmdlZCgpKSB7XG4gICAgICAgIHRoaXMuZnVsbFVwZGF0ZSgpO1xuXG4gICAgICAgIC8vIHVwZGF0ZSBva1RvSW5pdEZsb3dDb250YWluZXIsIGJlY2F1c2UgY2FzZSB2aWV3IHdhcyBkcmF3biwgZmxvdyBjb250YWluZXIgd2lsbCBuZWVkIHRvIGJlIGluaXRcbiAgICAgICAgLy8gdG8gbWF0Y2ggTmVidWxhL0NvbnN0ZWxsYXRpb25cbiAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnb2tUb0luaXRGbG93Q29udGFpbmVyJywgJ3RydWUnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudXBkYXRlSGVhZGVyQW5kU3VtbWFyeSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhhc0Nhc2VJRENoYW5nZWQoKTogYm9vbGVhbiB7XG4gICAgLy8gQHRzLWlnbm9yZSAtIHBhcmFtZXRlciDigJxjb250ZXh0TmFtZeKAnSBmb3IgZ2V0RGF0YU9iamVjdCBtZXRob2Qgc2hvdWxkIGJlIG9wdGlvbmFsXG4gICAgaWYgKHRoaXMuY3VycmVudENhc2VJRCAhPT0gdGhpcy5wQ29ubiQuZ2V0RGF0YU9iamVjdCgpLmNhc2VJbmZvLklEKSB7XG4gICAgICAvLyBAdHMtaWdub3JlIC0gcGFyYW1ldGVyIOKAnGNvbnRleHROYW1l4oCdIGZvciBnZXREYXRhT2JqZWN0IG1ldGhvZCBzaG91bGQgYmUgb3B0aW9uYWxcbiAgICAgIHRoaXMuY3VycmVudENhc2VJRCA9IHRoaXMucENvbm4kLmdldERhdGFPYmplY3QoKS5jYXNlSW5mby5JRDtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB1cGRhdGVIZWFkZXJBbmRTdW1tYXJ5KCkge1xuICAgIHRoaXMuY29uZmlnUHJvcHMkID0gdGhpcy5wQ29ubiQucmVzb2x2ZUNvbmZpZ1Byb3BzKHRoaXMucENvbm4kLmdldENvbmZpZ1Byb3BzKCkpIGFzIENhc2VWaWV3UHJvcHM7XG4gICAgLy8gQHRzLWlnbm9yZSAtIHBhcmFtZXRlciDigJxjb250ZXh0TmFtZeKAnSBmb3IgZ2V0RGF0YU9iamVjdCBtZXRob2Qgc2hvdWxkIGJlIG9wdGlvbmFsXG4gICAgY29uc3QgaGFzTmV3QXR0YWNobWVudHMgPSB0aGlzLnBDb25uJC5nZXREYXRhT2JqZWN0KCkuY2FzZUluZm8/Lmhhc05ld0F0dGFjaG1lbnRzO1xuXG4gICAgaWYgKGhhc05ld0F0dGFjaG1lbnRzICE9PSB0aGlzLmJIYXNOZXdBdHRhY2htZW50cykge1xuICAgICAgdGhpcy5iSGFzTmV3QXR0YWNobWVudHMgPSBoYXNOZXdBdHRhY2htZW50cztcbiAgICAgIGlmICh0aGlzLmJIYXNOZXdBdHRhY2htZW50cykge1xuICAgICAgICAvLyBAdHMtaWdub3JlIC0gQXJndW1lbnQgb2YgdHlwZSAnYm9vbGVhbicgaXMgbm90IGFzc2lnbmFibGUgdG8gcGFyYW1ldGVyIG9mIHR5cGUgJ29iamVjdCdcbiAgICAgICAgUENvcmUuZ2V0UHViU3ViVXRpbHMoKS5wdWJsaXNoKChQQ29yZS5nZXRFdmVudHMoKS5nZXRDYXNlRXZlbnQoKSBhcyBhbnkpLkNBU0VfQVRUQUNITUVOVFNfVVBEQVRFRF9GUk9NX0NBU0VWSUVXLCB0cnVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBraWRzID0gdGhpcy5wQ29ubiQuZ2V0Q2hpbGRyZW4oKSBhcyBhbnlbXTtcbiAgICBmb3IgKGNvbnN0IGtpZCBvZiBraWRzKSB7XG4gICAgICBjb25zdCBtZXRhID0ga2lkLmdldFBDb25uZWN0KCkuZ2V0UmF3TWV0YWRhdGEoKTtcbiAgICAgIGlmIChtZXRhLnR5cGUudG9Mb3dlckNhc2UoKSA9PSAncmVnaW9uJyAmJiBtZXRhLm5hbWUudG9Mb3dlckNhc2UoKSA9PSAnc3VtbWFyeScpIHtcbiAgICAgICAgdGhpcy5jYXNlU3VtbWFyeVBDb25uJCA9IGtpZC5nZXRQQ29ubmVjdCgpLmdldENoaWxkcmVuKClbMF0uZ2V0UENvbm5lY3QoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBoYXZlIHRvIHB1dCBpbiBhIHRpbWVvdXQsIG90aGVyd2lzZSBnZXQgYW4gYW5ndWxhciBjaGFuZ2UgZXZlbnQgZXJyb3JcbiAgICBjb25zdCB0aW1lciA9IGludGVydmFsKDEwMCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRpbWVyLnVuc3Vic2NyaWJlKCk7XG5cbiAgICAgIHRoaXMuaGVhZGluZyQgPSBQQ29yZS5nZXRMb2NhbGVVdGlscygpLmdldExvY2FsZVZhbHVlKHRoaXMuY29uZmlnUHJvcHMkLmhlYWRlciwgJycsIHRoaXMubG9jYWxlS2V5KTtcbiAgICAgIHRoaXMuaWQkID0gdGhpcy5jb25maWdQcm9wcyQuc3ViaGVhZGVyO1xuICAgICAgLy8gQHRzLWlnbm9yZSAtIHNlY29uZCBwYXJhbWV0ZXIgcGFnZVJlZmVyZW5jZSBmb3IgZ2V0VmFsdWUgbWV0aG9kIHNob3VsZCBiZSBvcHRpb25hbFxuICAgICAgdGhpcy5zdGF0dXMkID0gdGhpcy5wQ29ubiQuZ2V0VmFsdWUoJy5weVN0YXR1c1dvcmsnKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bGxVcGRhdGUoKSB7XG4gICAgdGhpcy5jYXNlVGFicyQgPSBbXTtcbiAgICB0aGlzLmNvbmZpZ1Byb3BzJCA9IHRoaXMucENvbm4kLnJlc29sdmVDb25maWdQcm9wcyh0aGlzLnBDb25uJC5nZXRDb25maWdQcm9wcygpKSBhcyBDYXNlVmlld1Byb3BzO1xuICAgIC8vIGxldCBjYXNlVHlwZUlEID0gdGhpcy5jb25maWdQcm9wcyQucnVsZUNsYXNzO1xuICAgIC8vIGxldCBjYXNlVHlwZU5hbWUgPSB0aGlzLmNvbmZpZ1Byb3BzJC5oZWFkZXI7XG4gICAgLy8gdGhpcy5sb2NhbGVLZXkgPSBgJHtjYXNlVHlwZUlEfSFDQVNFISR7Y2FzZVR5cGVOYW1lfWAudG9VcHBlckNhc2UoKTtcbiAgICB0aGlzLmxvY2FsZUtleSA9IGAke3RoaXMucENvbm4kLmdldENhc2VJbmZvKCkuZ2V0Q2xhc3NOYW1lKCl9IUNBU0UhJHt0aGlzLnBDb25uJC5nZXRDYXNlSW5mbygpLmdldE5hbWUoKX1gLnRvVXBwZXJDYXNlKCk7XG4gICAgdGhpcy51cGRhdGVIZWFkZXJBbmRTdW1tYXJ5KCk7XG5cbiAgICB0aGlzLmFyQ2hpbGRyZW4kID0gdGhpcy5wQ29ubiQuZ2V0Q2hpbGRyZW4oKSBhcyBhbnlbXTtcblxuICAgIC8vIEB0cy1pZ25vcmUgLSBwYXJhbWV0ZXIg4oCcY29udGV4dE5hbWXigJ0gZm9yIGdldERhdGFPYmplY3QgbWV0aG9kIHNob3VsZCBiZSBvcHRpb25hbFxuICAgIGNvbnN0IGNhc2VJbmZvID0gdGhpcy5wQ29ubiQuZ2V0RGF0YU9iamVjdCgpLmNhc2VJbmZvO1xuICAgIHRoaXMuY3VycmVudENhc2VJRCA9IGNhc2VJbmZvLklEO1xuICAgIHRoaXMuYXJBdmFpbGFibGVBY3Rpb25zJCA9IGNhc2VJbmZvPy5hdmFpbGFibGVBY3Rpb25zID8gY2FzZUluZm8uYXZhaWxhYmxlQWN0aW9ucyA6IFtdO1xuICAgIHRoaXMuZWRpdEFjdGlvbiA9IHRoaXMuYXJBdmFpbGFibGVBY3Rpb25zJC5maW5kKGFjdGlvbiA9PiBhY3Rpb24uSUQgPT09ICdweVVwZGF0ZUNhc2VEZXRhaWxzJyk7XG4gICAgdGhpcy5hckF2YWlsYWJlUHJvY2Vzc2VzJCA9IGNhc2VJbmZvPy5hdmFpbGFibGVQcm9jZXNzZXMgPyBjYXNlSW5mby5hdmFpbGFibGVQcm9jZXNzZXMgOiBbXTtcblxuICAgIHRoaXMuc3ZnQ2FzZSQgPSB0aGlzLnV0aWxzLmdldEltYWdlU3JjKHRoaXMuY29uZmlnUHJvcHMkLmljb24sIHRoaXMudXRpbHMuZ2V0U0RLU3RhdGljQ29udGVudFVybCgpKTtcblxuICAgIC8vIHRoaXMudXRpbHMuY29uc29sZUtpZER1bXAodGhpcy5wQ29ubiQpO1xuXG4gICAgaWYgKCF0aGlzLmRpc3BsYXlPbmx5RkEkKSB7XG4gICAgICBmb3IgKGNvbnN0IGtpZCBvZiB0aGlzLmFyQ2hpbGRyZW4kKSB7XG4gICAgICAgIGNvbnN0IGtpZFBDb25uID0ga2lkLmdldFBDb25uZWN0KCk7XG4gICAgICAgIGlmIChraWRQQ29ubi5nZXRSYXdNZXRhZGF0YSgpLm5hbWUgPT0gJ1RhYnMnKSB7XG4gICAgICAgICAgdGhpcy5tYWluVGFicyA9IGtpZDtcbiAgICAgICAgICB0aGlzLm1haW5UYWJEYXRhID0gdGhpcy5tYWluVGFicy5nZXRQQ29ubmVjdCgpLmdldENoaWxkcmVuKCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5nZW5lcmF0ZVRhYnNEYXRhKCk7XG4gICAgfVxuICB9XG5cbiAgZ2VuZXJhdGVUYWJzRGF0YSgpIHtcbiAgICB0aGlzLm1haW5UYWJzXG4gICAgICAuZ2V0UENvbm5lY3QoKVxuICAgICAgLmdldENoaWxkcmVuKClcbiAgICAgID8uZm9yRWFjaCgoY2hpbGQsIGkpID0+IHtcbiAgICAgICAgY29uc3QgY29uZmlnID0gY2hpbGQuZ2V0UENvbm5lY3QoKS5yZXNvbHZlQ29uZmlnUHJvcHMoY2hpbGQuZ2V0UENvbm5lY3QoKS5nZXRSYXdNZXRhZGF0YSgpKS5jb25maWc7XG4gICAgICAgIGxldCB7IGxhYmVsIH0gPSBjb25maWc7XG4gICAgICAgIGNvbnN0IHsgaW5oZXJpdGVkUHJvcHMsIHZpc2liaWxpdHkgfSA9IGNvbmZpZztcbiAgICAgICAgLy8gRm9yIHNvbWUgdGFicywgXCJsYWJlbFwiIHByb3BlcnR5IGlzIG5vdCBhdmFpYWxhYmxlIGluIHRoZVRhYkNvbXBDb25maWcsIHNvIHdpbGwgZ2V0IHRoZW0gZnJvbSBpbmhlcml0ZWRQcm9wc1xuICAgICAgICBpZiAoIWxhYmVsKSB7XG4gICAgICAgICAgaW5oZXJpdGVkUHJvcHMuZm9yRWFjaCgoaW5oZXJpdGVkUHJvcDogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoaW5oZXJpdGVkUHJvcC5wcm9wID09PSAnbGFiZWwnKSB7XG4gICAgICAgICAgICAgIGxhYmVsID0gaW5oZXJpdGVkUHJvcC52YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBXZSdsbCBkaXNwbGF5IHRoZSB0YWJzIHdoZW4gZWl0aGVyIHZpc2liaWxpdHkgcHJvcGVydHkgZG9lc24ndCBleGlzdCBvciBpcyB0cnVlKGlmIGV4aXN0cylcbiAgICAgICAgaWYgKHZpc2liaWxpdHkgPT09IHVuZGVmaW5lZCB8fCB2aXNpYmlsaXR5ID09PSB0cnVlKSB7XG4gICAgICAgICAgdGhpcy5jYXNlVGFicyQucHVzaCh7IG5hbWU6IGxhYmVsLCBpZDogaSB9KTtcbiAgICAgICAgICAvLyBUbyBtYWtlIGZpcnN0IHZpc2libGUgdGFiIGRpc3BsYXkgYXQgdGhlIGJlZ2lubmluZ1xuICAgICAgICAgIGlmICghdGhpcy50YWJEYXRhJCkge1xuICAgICAgICAgICAgdGhpcy50YWJEYXRhJCA9IHsgdHlwZTogJ0RlZmVyTG9hZCcsIGNvbmZpZzogY2hpbGQuZ2V0UENvbm5lY3QoKS5nZXRSYXdNZXRhZGF0YSgpLmNvbmZpZyB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICB1cGRhdGVTZWxmKCkge1xuICAgIHRoaXMuZnVsbFVwZGF0ZSgpO1xuICB9XG5cbiAgb25UYWJDbGljayh0YWI6IGFueSkge1xuICAgIHRoaXMudGFiRGF0YSQgPSB0aGlzLm1haW5UYWJEYXRhW3RhYl0uZ2V0UENvbm5lY3QoKS5nZXRSYXdNZXRhZGF0YSgpO1xuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgX2VkaXRDbGljaygpIHtcbiAgICBjb25zdCBlZGl0QWN0aW9uID0gdGhpcy5hckF2YWlsYWJsZUFjdGlvbnMkLmZpbmQoYWN0aW9uID0+IGFjdGlvbi5JRCA9PT0gJ3B5VXBkYXRlQ2FzZURldGFpbHMnKTtcbiAgICBjb25zdCBhY3Rpb25zQVBJID0gdGhpcy5wQ29ubiQuZ2V0QWN0aW9uc0FwaSgpO1xuICAgIGNvbnN0IG9wZW5Mb2NhbEFjdGlvbiA9IGFjdGlvbnNBUEkub3BlbkxvY2FsQWN0aW9uLmJpbmQoYWN0aW9uc0FQSSk7XG5cbiAgICBvcGVuTG9jYWxBY3Rpb24oZWRpdEFjdGlvbi5JRCwgeyAuLi5lZGl0QWN0aW9uIH0pO1xuICB9XG5cbiAgX21lbnVBY3Rpb25DbGljayhkYXRhKSB7XG4gICAgY29uc3QgYWN0aW9uc0FQSSA9IHRoaXMucENvbm4kLmdldEFjdGlvbnNBcGkoKTtcbiAgICBjb25zdCBvcGVuTG9jYWxBY3Rpb24gPSBhY3Rpb25zQVBJLm9wZW5Mb2NhbEFjdGlvbi5iaW5kKGFjdGlvbnNBUEkpO1xuXG4gICAgb3BlbkxvY2FsQWN0aW9uKGRhdGEuSUQsIHsgLi4uZGF0YSwgY29udGFpbmVyTmFtZTogJ21vZGFsJywgdHlwZTogJ2V4cHJlc3MnIH0pO1xuICB9XG5cbiAgX21lbnVQcm9jZXNzQ2xpY2soZGF0YSkge1xuICAgIGNvbnN0IGFjdGlvbnNBUEkgPSB0aGlzLnBDb25uJC5nZXRBY3Rpb25zQXBpKCk7XG4gICAgY29uc3Qgb3BlblByb2Nlc3NBY3Rpb24gPSBhY3Rpb25zQVBJLm9wZW5Qcm9jZXNzQWN0aW9uLmJpbmQoYWN0aW9uc0FQSSk7XG5cbiAgICBvcGVuUHJvY2Vzc0FjdGlvbihkYXRhLklELCB7IC4uLmRhdGEgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJwc2RrLWNhc2Utdmlld1wiIGlkPVwiY2FzZS12aWV3XCI+XG4gIDxkaXYgKm5nSWY9XCIhZGlzcGxheU9ubHlGQSRcIiBjbGFzcz1cInBzZGstY2FzZS12aWV3LWluZm9cIj5cbiAgICA8bWF0LXRvb2xiYXIgY29sb3I9XCJwcmltYXJ5XCIgY2xhc3M9XCJwc2RrLWNhc2Utdmlldy10b29sYmFyXCI+XG4gICAgICA8bWF0LXRvb2xiYXItcm93IHN0eWxlPVwicGFkZGluZy1sZWZ0OiAxcmVtXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwc2RrLWNhc2UtaWNvbi1kaXZcIj5cbiAgICAgICAgICA8aW1nIGNsYXNzPVwicHNkay1jYXNlLXN2Zy1pY29uXCIgc3JjPVwie3sgc3ZnQ2FzZSQgfX1cIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBzZGstY2FzZS12aWV3LWhlYWRpbmdcIj5cbiAgICAgICAgICA8ZGl2IGlkPVwiY3VycmVudC1jYXNlSURcIiBbaGlkZGVuXT1cInRydWVcIj57eyBjdXJyZW50Q2FzZUlEIH19PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBzZGstY2FzZS12aWV3LWhlYWRpbmctaWRcIiBpZD1cImNhc2VJZFwiPnt7IGlkJCB9fTwvZGl2PlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8aDE+e3sgaGVhZGluZyQgfX08L2gxPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbWF0LXRvb2xiYXItcm93PlxuICAgIDwvbWF0LXRvb2xiYXI+XG5cbiAgICA8ZGl2IGNsYXNzPVwicHNkay1jYXNlLXZpZXctYnV0dG9uc1wiPlxuICAgICAgPGJ1dHRvbiAqbmdJZj1cImVkaXRBY3Rpb25cIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInNlY29uZGFyeVwiIChjbGljayk9XCJfZWRpdENsaWNrKClcIj57eyBsb2NhbGl6ZWRWYWwoJ0VkaXQnLCBsb2NhbGVDYXRlZ29yeSkgfX08L2J1dHRvbj5cbiAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJzZWNvbmRhcnlcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwiYWN0aW9uTWVudVwiPnt7IGxvY2FsaXplZFZhbCgnQWN0aW9ucy4uLicsIGxvY2FsZUNhdGVnb3J5KSB9fTwvYnV0dG9uPlxuICAgICAgPG1hdC1tZW51ICNhY3Rpb25NZW51PVwibWF0TWVudVwiIG92ZXJsYXBUcmlnZ2VyPVwiZmFsc2VcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGFyQXZhaWxhYmxlQWN0aW9ucyRcIj5cbiAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIl9tZW51QWN0aW9uQ2xpY2soYWN0aW9uKVwiPlxuICAgICAgICAgICAge3sgbG9jYWxpemVkVmFsKGFjdGlvbi5uYW1lLCAnJywgbG9jYWxlS2V5KSB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcHJvY2VzcyBvZiBhckF2YWlsYWJlUHJvY2Vzc2VzJFwiPlxuICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiX21lbnVQcm9jZXNzQ2xpY2socHJvY2VzcylcIj5cbiAgICAgICAgICAgIHt7IHByb2Nlc3MubmFtZSB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbWF0LW1lbnU+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwicHNkay1jYXNlLXZpZXctZGl2aWRlclwiPjwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cInBzZGstY2FzZS12aWV3LXN1bW1hcnlcIj5cbiAgICAgIDxjb21wb25lbnQtbWFwcGVyIG5hbWU9XCJDYXNlU3VtbWFyeVwiIFtwcm9wc109XCJ7IHBDb25uJDogY2FzZVN1bW1hcnlQQ29ubiQgfVwiPjwvY29tcG9uZW50LW1hcHBlcj5cbiAgICA8L2Rpdj5cblxuICAgIDxjb21wb25lbnQtbWFwcGVyXG4gICAgICAqbmdJZj1cImNhc2VUYWJzJC5sZW5ndGggPiAxXCJcbiAgICAgIG5hbWU9XCJWZXJ0aWNhbFRhYnNcIlxuICAgICAgW3Byb3BzXT1cInsgdGFiQ29uZmlnJDogY2FzZVRhYnMkIH1cIlxuICAgICAgW3BhcmVudF09XCJ0aGlzXCJcbiAgICAgIFtvdXRwdXRFdmVudHNdPVwieyB0YWJDbGljazogb25UYWJDbGljayB9XCJcbiAgICA+PC9jb21wb25lbnQtbWFwcGVyPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInBzZGstY2FzZS12aWV3LW1haW5cIj5cbiAgICA8ZGl2ICpuZ0lmPVwiIWRpc3BsYXlPbmx5RkEkXCI+XG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBraWQgb2YgYXJDaGlsZHJlbiRcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICBraWQuZ2V0UENvbm5lY3QoKS5nZXRSYXdNZXRhZGF0YSgpLnR5cGUudG9Mb3dlckNhc2UoKSA9PSAncmVnaW9uJyAmJiBraWQuZ2V0UENvbm5lY3QoKS5nZXRSYXdNZXRhZGF0YSgpLm5hbWUudG9Mb3dlckNhc2UoKSA9PSAnc3RhZ2VzJ1xuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8Y29tcG9uZW50LW1hcHBlciBuYW1lPVwiUmVnaW9uXCIgW3Byb3BzXT1cInsgcENvbm4kOiBraWQuZ2V0UENvbm5lY3QoKSB9XCI+PC9jb21wb25lbnQtbWFwcGVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdGb3I9XCJsZXQga2lkIG9mIGFyQ2hpbGRyZW4kXCI+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwia2lkLmdldFBDb25uZWN0KCkuZ2V0UmF3TWV0YWRhdGEoKS50eXBlLnRvTG93ZXJDYXNlKCkgPT0gJ3JlZ2lvbicgJiYga2lkLmdldFBDb25uZWN0KCkuZ2V0UmF3TWV0YWRhdGEoKS5uYW1lLnRvTG93ZXJDYXNlKCkgPT0gJ3RvZG8nXCJcbiAgICAgID5cbiAgICAgICAgPGNvbXBvbmVudC1tYXBwZXIgbmFtZT1cIlJlZ2lvblwiIFtwcm9wc109XCJ7IHBDb25uJDoga2lkLmdldFBDb25uZWN0KCksIGZvcm1Hcm91cCQgfVwiPjwvY29tcG9uZW50LW1hcHBlcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdGb3I9XCJsZXQga2lkIG9mIGFyQ2hpbGRyZW4kXCI+XG4gICAgICA8ZGl2ICpuZ0lmPVwia2lkLmdldFBDb25uZWN0KCkuZ2V0UmF3TWV0YWRhdGEoKS50eXBlLnRvTG93ZXJDYXNlKCkgPT0gJ3JlZ2lvbicgJiYga2lkLmdldFBDb25uZWN0KCkuZ2V0UmF3TWV0YWRhdGEoKS5uYW1lID09ICdNYWluJ1wiPlxuICAgICAgICA8Y29tcG9uZW50LW1hcHBlciBuYW1lPVwiUmVnaW9uXCIgW3Byb3BzXT1cInsgcENvbm4kOiBraWQuZ2V0UENvbm5lY3QoKSwgZm9ybUdyb3VwJCB9XCI+PC9jb21wb25lbnQtbWFwcGVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ0lmPVwiIWRpc3BsYXlPbmx5RkEkXCI+XG4gICAgICA8Y29tcG9uZW50LW1hcHBlciBuYW1lPVwiRGVmZXJMb2FkXCIgW3Byb3BzXT1cInsgcENvbm4kLCBsb2FkRGF0YSQ6IHRhYkRhdGEkLCBuYW1lOiB0YWJEYXRhJD8uY29uZmlnPy5uYW1lIH1cIj48L2NvbXBvbmVudC1tYXBwZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiIWRpc3BsYXlPbmx5RkEkXCI+XG4gICAgPGRpdiAqbmdJZj1cImFyQ2hpbGRyZW4kXCIgY2xhc3M9XCJwc2RrLWNhc2Utdmlldy11dGlsaXRpZXNcIj5cbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGtpZCBvZiBhckNoaWxkcmVuJFwiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwia2lkLmdldFBDb25uZWN0KCkuZ2V0UmF3TWV0YWRhdGEoKT8udHlwZS50b0xvd2VyQ2FzZSgpID09ICdyZWdpb24nICYmIGtpZC5nZXRQQ29ubmVjdCgpLmdldFJhd01ldGFkYXRhKCk/Lm5hbWUgPT0gJ1V0aWxpdGllcydcIj5cbiAgICAgICAgICA8Y29tcG9uZW50LW1hcHBlciBuYW1lPVwiUmVnaW9uXCIgW3Byb3BzXT1cInsgcENvbm4kOiBraWQuZ2V0UENvbm5lY3QoKSB9XCI+PC9jb21wb25lbnQtbWFwcGVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|