@mtna/web-form-angular 1.0.1 → 1.0.2-SNAPSHOT.2
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/_index.scss +18 -16
- package/bundles/mtna-web-form-angular.umd.js +6683 -4919
- package/bundles/mtna-web-form-angular.umd.js.map +1 -1
- package/esm2015/lib/components/acknowledge-dialog/acknowledge-dialog.component.js +30 -0
- package/esm2015/lib/components/acknowledge-dialog/acknowledge-dialog.module.js +21 -0
- package/esm2015/lib/components/acknowledge-dialog/index.js +3 -0
- package/esm2015/lib/components/base-items/base-form-item-control.component.js +42 -0
- package/esm2015/lib/components/base-items/base-form-item.component.js +53 -0
- package/esm2015/lib/components/base-items/base-group-item.component.js +30 -0
- package/esm2015/lib/components/base-items/base-parent-value-item.component.js +43 -0
- package/esm2015/lib/components/base-items/base-section-item.component.js +29 -0
- package/esm2015/lib/components/base-items/base-single-selection-parent-value-item.component.js +62 -0
- package/esm2015/lib/components/base-items/base-value-item.component.js +41 -0
- package/esm2015/lib/components/base-items/index.js +7 -0
- package/esm2015/lib/components/form/form.component.js +250 -0
- package/esm2015/lib/components/form/form.module.js +60 -0
- package/esm2015/lib/components/form/index.js +3 -0
- package/esm2015/lib/{form → components/form-disabler}/form-disabler.component.js +1 -1
- package/esm2015/lib/components/form-disabler/form-disabler.module.js +18 -0
- package/esm2015/lib/components/form-disabler/index.js +3 -0
- package/esm2015/lib/components/form-item/form-item.component.js +128 -0
- package/esm2015/lib/components/form-item/form-item.module.js +42 -0
- package/esm2015/lib/components/form-item/index.js +3 -0
- package/esm2015/lib/components/form-item-component-provider/form-item-component-provider.js +8 -0
- package/esm2015/lib/components/form-item-component-provider/form-item-injected-components.js +120 -0
- package/esm2015/lib/components/form-item-component-provider/index.js +3 -0
- package/esm2015/lib/components/form-item-dialog/form-item-dialog.component.js +29 -0
- package/esm2015/lib/components/form-item-dialog/form-item-dialog.module.js +20 -0
- package/esm2015/lib/components/form-item-dialog/index.js +3 -0
- package/esm2015/lib/components/form-item-impl/boolean/boolean.component.js +34 -0
- package/esm2015/lib/components/form-item-impl/boolean/boolean.module.js +45 -0
- package/esm2015/lib/components/form-item-impl/boolean/index.js +3 -0
- package/esm2015/lib/components/form-item-impl/checkbox/checkbox.component.js +91 -0
- package/esm2015/lib/components/form-item-impl/checkbox/checkbox.module.js +65 -0
- package/esm2015/lib/components/form-item-impl/checkbox/index.js +3 -0
- package/esm2015/lib/components/form-item-impl/date/date.component.js +92 -0
- package/esm2015/lib/components/form-item-impl/date/date.module.js +53 -0
- package/esm2015/lib/components/form-item-impl/date/index.js +3 -0
- package/esm2015/lib/components/form-item-impl/date-range/date-range.component.js +31 -0
- package/esm2015/lib/components/form-item-impl/date-range/date-range.module.js +45 -0
- package/esm2015/lib/components/form-item-impl/date-range/index.js +3 -0
- package/esm2015/lib/components/form-item-impl/dropdown/dropdown.component.js +29 -0
- package/esm2015/lib/components/form-item-impl/dropdown/dropdown.module.js +59 -0
- package/esm2015/lib/components/form-item-impl/dropdown/index.js +3 -0
- package/esm2015/lib/components/form-item-impl/file-upload/file-upload.component.js +56 -0
- package/esm2015/lib/components/form-item-impl/file-upload/file-upload.module.js +49 -0
- package/esm2015/lib/components/form-item-impl/file-upload/index.js +3 -0
- package/esm2015/lib/components/form-item-impl/form-group/form-group.component.js +50 -0
- package/esm2015/lib/components/form-item-impl/form-group/form-group.module.js +49 -0
- package/esm2015/lib/components/form-item-impl/form-group/index.js +3 -0
- package/esm2015/lib/components/form-item-impl/form-section/form-section.component.js +23 -0
- package/esm2015/lib/components/form-item-impl/form-section/form-section.module.js +23 -0
- package/esm2015/lib/components/form-item-impl/form-section/index.js +3 -0
- package/esm2015/lib/components/form-item-impl/i18n-input/i18n-input.component.js +56 -0
- package/esm2015/lib/components/form-item-impl/i18n-input/i18n-input.module.js +52 -0
- package/esm2015/lib/components/form-item-impl/i18n-input/index.js +3 -0
- package/esm2015/lib/components/form-item-impl/index.js +23 -0
- package/esm2015/lib/components/form-item-impl/input/index.js +3 -0
- package/esm2015/lib/components/form-item-impl/input/input.component.js +45 -0
- package/esm2015/lib/components/form-item-impl/input/input.module.js +52 -0
- package/esm2015/lib/components/form-item-impl/multiple-choice/index.js +3 -0
- package/esm2015/lib/components/form-item-impl/multiple-choice/multiple-choice.component.js +25 -0
- package/esm2015/lib/components/form-item-impl/multiple-choice/multiple-choice.module.js +49 -0
- package/esm2015/lib/components/form-item-impl/ordered-list/index.js +3 -0
- package/esm2015/lib/components/form-item-impl/ordered-list/ordered-list-item.component.js +21 -0
- package/esm2015/lib/components/form-item-impl/ordered-list/ordered-list-item.module.js +20 -0
- package/esm2015/lib/components/form-item-impl/repeatable-item/index.js +3 -0
- package/esm2015/lib/components/form-item-impl/repeatable-item/repeatable-item.component.js +23 -0
- package/esm2015/lib/components/form-item-impl/repeatable-item/repeatable-item.module.js +18 -0
- package/esm2015/lib/components/form-item-impl/repeatable-item-container/index.js +3 -0
- package/esm2015/lib/components/form-item-impl/repeatable-item-container/repeatable-item-container.component.js +57 -0
- package/esm2015/lib/components/form-item-impl/repeatable-item-container/repeatable-item-container.module.js +57 -0
- package/esm2015/lib/components/form-item-impl/search/index.js +3 -0
- package/esm2015/lib/components/form-item-impl/search/resource-search.component.js +56 -0
- package/esm2015/lib/components/form-item-impl/search/resource-search.module.js +22 -0
- package/esm2015/lib/components/form-item-impl/table-item/index.js +3 -0
- package/esm2015/lib/components/form-item-impl/table-item/table-item.component.js +27 -0
- package/esm2015/lib/components/form-item-impl/table-item/table-item.module.js +20 -0
- package/esm2015/lib/components/form-item-impl/text/index.js +3 -0
- package/esm2015/lib/components/form-item-impl/text/text.component.js +20 -0
- package/esm2015/lib/components/form-item-impl/text/text.module.js +20 -0
- package/esm2015/lib/components/form-item-impl/title/index.js +3 -0
- package/esm2015/lib/components/form-item-impl/title/title.component.js +19 -0
- package/esm2015/lib/components/form-item-impl/title/title.module.js +20 -0
- package/esm2015/lib/components/form-item-impl/unordered-list/index.js +3 -0
- package/esm2015/lib/components/form-item-impl/unordered-list/unordered-list-item.component.js +21 -0
- package/esm2015/lib/components/form-item-impl/unordered-list/unordered-list-item.module.js +20 -0
- package/esm2015/lib/components/form-item-impl/year-quarter/index.js +3 -0
- package/esm2015/lib/components/form-item-impl/year-quarter/year-quarter.component.js +166 -0
- package/esm2015/lib/components/form-item-impl/year-quarter/year-quarter.module.js +55 -0
- package/esm2015/lib/components/form-item-impl/year-quarter-range/index.js +3 -0
- package/esm2015/lib/components/form-item-impl/year-quarter-range/year-quarter-range.component.js +39 -0
- package/esm2015/lib/components/form-item-impl/year-quarter-range/year-quarter-range.module.js +22 -0
- package/esm2015/lib/components/form-item-injector/form-item-injector.component.js +163 -0
- package/esm2015/lib/components/form-item-injector/form-item-injector.module.js +18 -0
- package/esm2015/lib/components/form-item-injector/index.js +3 -0
- package/esm2015/lib/components/form-stepper/form-step/form-step.component.js +68 -0
- package/esm2015/lib/components/form-stepper/form-step/index.js +2 -0
- package/esm2015/lib/components/form-stepper/form-step-group/form-step-group.component.js +53 -0
- package/esm2015/lib/components/form-stepper/form-step-group/index.js +2 -0
- package/esm2015/lib/components/form-stepper/form-stepper/form-stepper.component.js +59 -0
- package/esm2015/lib/components/form-stepper/form-stepper/index.js +2 -0
- package/esm2015/lib/components/form-stepper/form-stepper.module.js +56 -0
- package/esm2015/lib/components/form-stepper/index.js +5 -0
- package/esm2015/lib/components/index.js +13 -0
- package/esm2015/lib/components/item-header/index.js +3 -0
- package/esm2015/lib/components/item-header/item-header.component.js +71 -0
- package/esm2015/lib/components/item-header/item-header.module.js +19 -0
- package/esm2015/lib/components/step-card/index.js +3 -0
- package/esm2015/lib/{step-card → components/step-card}/step-card.component.js +2 -2
- package/esm2015/lib/components/step-card/step-card.module.js +23 -0
- package/esm2015/lib/directives/base-form-item-control.directive.js +58 -0
- package/esm2015/lib/directives/base-parent-item-control.directive.js +42 -0
- package/esm2015/lib/directives/base-single-selection-parent.directive.js +53 -0
- package/esm2015/lib/{form → directives}/form-item.directive.js +1 -1
- package/esm2015/lib/directives/index.js +5 -0
- package/esm2015/lib/models/api-config.js +3 -0
- package/esm2015/lib/models/base-form-item.model.js +2 -0
- package/esm2015/lib/{groups → models}/form-item-dialog-data.model.js +1 -1
- package/esm2015/lib/{form-stepper/models → models/form-stepper}/base-form-step.model.js +1 -1
- package/esm2015/lib/{form-stepper/models → models/form-stepper}/form-step-group.model.js +1 -1
- package/esm2015/lib/{form-stepper/models → models/form-stepper}/form-step.model.js +1 -1
- package/esm2015/lib/{form-stepper/models → models/form-stepper}/index.js +1 -1
- package/esm2015/lib/models/index.js +7 -0
- package/esm2015/lib/models/toggle-form-item-data.model.js +2 -0
- package/esm2015/lib/models/white-list.model.js +11 -0
- package/esm2015/lib/pipes/coerce-date-item.pipe.js +37 -0
- package/esm2015/lib/pipes/coerce-form-control.pipe.js +36 -0
- package/esm2015/lib/pipes/coerce-form-group.pipe.js +47 -0
- package/esm2015/lib/pipes/coerce-form-item.pipe.js +36 -0
- package/esm2015/lib/pipes/date-quarter.pipe.js +55 -0
- package/esm2015/lib/pipes/form-step-group.pipe.js +32 -0
- package/esm2015/lib/pipes/get-auto-complete.pipe.js +54 -0
- package/esm2015/lib/pipes/get-available-quarters.pipe.js +41 -0
- package/esm2015/lib/pipes/get-form-control-error.pipe.js +32 -0
- package/esm2015/lib/pipes/get-list-icon.pipe.js +65 -0
- package/esm2015/lib/pipes/get-object-type.pipe.js +29 -0
- package/esm2015/lib/pipes/get-selected-option.pipe.js +32 -0
- package/esm2015/lib/pipes/index.js +15 -0
- package/esm2015/lib/pipes/items-with-value.pipe.js +42 -0
- package/esm2015/lib/pipes/sanitize-html.pipe.js +35 -0
- package/esm2015/lib/services/api.service.js +67 -0
- package/esm2015/lib/services/dialog.service.js +47 -0
- package/esm2015/lib/services/form-manager.service.js +465 -0
- package/esm2015/lib/services/index.js +7 -0
- package/esm2015/lib/services/ng-form.service.js +150 -0
- package/esm2015/lib/services/resource-search-selection.service.js +24 -0
- package/esm2015/lib/services/ui.service.js +333 -0
- package/esm2015/lib/utilities/animations.js +8 -0
- package/esm2015/lib/utilities/find-form-control.js +29 -0
- package/esm2015/lib/utilities/find-form-item.js +25 -0
- package/esm2015/lib/utilities/flatten-steps.js +10 -0
- package/esm2015/lib/utilities/form-step.util.js +28 -0
- package/esm2015/lib/utilities/generate-form-steps.js +38 -0
- package/esm2015/lib/utilities/get-item-class-suffix.js +17 -0
- package/esm2015/lib/utilities/index.js +13 -0
- package/esm2015/lib/utilities/is-form-control.js +5 -0
- package/esm2015/lib/utilities/is-form-group.js +6 -0
- package/esm2015/lib/utilities/serializer-util.js +396 -0
- package/esm2015/lib/utilities/update-step-status.js +38 -0
- package/esm2015/lib/validators/index.js +3 -0
- package/esm2015/lib/validators/instant-validation-result-error-state-matcher.js +23 -0
- package/esm2015/lib/validators/validation-result-validator.js +19 -0
- package/esm2015/public-api.js +8 -10
- package/fesm2015/mtna-web-form-angular.js +4180 -3443
- package/fesm2015/mtna-web-form-angular.js.map +1 -1
- package/lib/components/acknowledge-dialog/acknowledge-dialog.component.d.ts +13 -0
- package/lib/components/acknowledge-dialog/acknowledge-dialog.module.d.ts +11 -0
- package/lib/components/acknowledge-dialog/index.d.ts +2 -0
- package/lib/components/base-items/base-form-item-control.component.d.ts +19 -0
- package/lib/components/base-items/base-form-item.component.d.ts +27 -0
- package/lib/components/base-items/base-group-item.component.d.ts +12 -0
- package/lib/components/base-items/base-parent-value-item.component.d.ts +17 -0
- package/lib/components/base-items/base-section-item.component.d.ts +13 -0
- package/lib/components/base-items/base-single-selection-parent-value-item.component.d.ts +19 -0
- package/lib/components/base-items/base-value-item.component.d.ts +17 -0
- package/lib/components/base-items/index.d.ts +6 -0
- package/lib/{form → components/form}/form.component.d.ts +2 -2
- package/lib/components/form/form.module.d.ts +16 -0
- package/lib/components/form/index.d.ts +2 -0
- package/lib/components/form-disabler/form-disabler.module.d.ts +8 -0
- package/lib/components/form-disabler/index.d.ts +2 -0
- package/lib/components/form-item/form-item.component.d.ts +54 -0
- package/lib/components/form-item/form-item.module.d.ts +13 -0
- package/lib/components/form-item/index.d.ts +2 -0
- package/lib/components/form-item-component-provider/form-item-component-provider.d.ts +4 -0
- package/lib/components/form-item-component-provider/form-item-injected-components.d.ts +2 -0
- package/lib/components/form-item-component-provider/index.d.ts +2 -0
- package/lib/components/form-item-dialog/form-item-dialog.component.d.ts +13 -0
- package/lib/components/form-item-dialog/form-item-dialog.module.d.ts +10 -0
- package/lib/components/form-item-dialog/index.d.ts +2 -0
- package/lib/components/form-item-impl/boolean/boolean.component.d.ts +18 -0
- package/lib/components/form-item-impl/boolean/boolean.module.d.ts +13 -0
- package/lib/components/form-item-impl/boolean/index.d.ts +2 -0
- package/lib/components/form-item-impl/checkbox/checkbox.component.d.ts +29 -0
- package/lib/components/form-item-impl/checkbox/checkbox.module.d.ts +18 -0
- package/lib/components/form-item-impl/checkbox/index.d.ts +2 -0
- package/lib/{form-item-controls → components/form-item-impl/date}/date.component.d.ts +8 -8
- package/lib/components/form-item-impl/date/date.module.d.ts +15 -0
- package/lib/components/form-item-impl/date/index.d.ts +2 -0
- package/lib/{form-item-controls → components/form-item-impl/date-range}/date-range.component.d.ts +2 -2
- package/lib/components/form-item-impl/date-range/date-range.module.d.ts +13 -0
- package/lib/components/form-item-impl/date-range/index.d.ts +2 -0
- package/lib/{form-item-controls → components/form-item-impl/dropdown}/dropdown.component.d.ts +2 -4
- package/lib/components/form-item-impl/dropdown/dropdown.module.d.ts +17 -0
- package/lib/components/form-item-impl/dropdown/index.d.ts +2 -0
- package/lib/components/form-item-impl/file-upload/file-upload.component.d.ts +19 -0
- package/lib/components/form-item-impl/file-upload/file-upload.module.d.ts +14 -0
- package/lib/{file-upload → components/form-item-impl/file-upload}/index.d.ts +1 -0
- package/lib/components/form-item-impl/form-group/form-group.component.d.ts +17 -0
- package/lib/components/form-item-impl/form-group/form-group.module.d.ts +14 -0
- package/lib/components/form-item-impl/form-group/index.d.ts +2 -0
- package/lib/components/form-item-impl/form-section/form-section.component.d.ts +7 -0
- package/lib/components/form-item-impl/form-section/form-section.module.d.ts +13 -0
- package/lib/components/form-item-impl/form-section/index.d.ts +2 -0
- package/lib/components/form-item-impl/i18n-input/i18n-input.component.d.ts +13 -0
- package/lib/components/form-item-impl/i18n-input/i18n-input.module.d.ts +15 -0
- package/lib/components/form-item-impl/i18n-input/index.d.ts +2 -0
- package/lib/components/form-item-impl/index.d.ts +21 -0
- package/lib/components/form-item-impl/input/index.d.ts +2 -0
- package/lib/components/form-item-impl/input/input.component.d.ts +12 -0
- package/lib/components/form-item-impl/input/input.module.d.ts +15 -0
- package/lib/components/form-item-impl/multiple-choice/index.d.ts +2 -0
- package/lib/components/form-item-impl/multiple-choice/multiple-choice.component.d.ts +7 -0
- package/lib/components/form-item-impl/multiple-choice/multiple-choice.module.d.ts +14 -0
- package/lib/components/form-item-impl/ordered-list/index.d.ts +2 -0
- package/lib/components/form-item-impl/ordered-list/ordered-list-item.component.d.ts +7 -0
- package/lib/components/form-item-impl/ordered-list/ordered-list-item.module.d.ts +10 -0
- package/lib/{groups → components/form-item-impl/repeatable-item}/index.d.ts +1 -1
- package/lib/components/form-item-impl/repeatable-item/repeatable-item.component.d.ts +5 -0
- package/lib/components/form-item-impl/repeatable-item/repeatable-item.module.d.ts +8 -0
- package/lib/components/form-item-impl/repeatable-item-container/index.d.ts +2 -0
- package/lib/components/form-item-impl/repeatable-item-container/repeatable-item-container.component.d.ts +14 -0
- package/lib/components/form-item-impl/repeatable-item-container/repeatable-item-container.module.d.ts +16 -0
- package/lib/components/form-item-impl/search/index.d.ts +2 -0
- package/lib/components/form-item-impl/search/resource-search.component.d.ts +16 -0
- package/lib/components/form-item-impl/search/resource-search.module.d.ts +12 -0
- package/lib/components/form-item-impl/table-item/index.d.ts +2 -0
- package/lib/components/form-item-impl/table-item/table-item.component.d.ts +9 -0
- package/lib/components/form-item-impl/table-item/table-item.module.d.ts +10 -0
- package/lib/components/form-item-impl/text/index.d.ts +2 -0
- package/lib/components/form-item-impl/text/text.component.d.ts +7 -0
- package/lib/components/form-item-impl/text/text.module.d.ts +10 -0
- package/lib/components/form-item-impl/title/_title-theme.scss +28 -0
- package/lib/components/form-item-impl/title/index.d.ts +2 -0
- package/lib/components/form-item-impl/title/title.component.d.ts +7 -0
- package/lib/components/form-item-impl/title/title.module.d.ts +10 -0
- package/lib/components/form-item-impl/unordered-list/index.d.ts +2 -0
- package/lib/components/form-item-impl/unordered-list/unordered-list-item.component.d.ts +7 -0
- package/lib/components/form-item-impl/unordered-list/unordered-list-item.module.d.ts +10 -0
- package/lib/components/form-item-impl/year-quarter/index.d.ts +2 -0
- package/lib/{form-item-controls → components/form-item-impl/year-quarter}/year-quarter.component.d.ts +9 -7
- package/lib/components/form-item-impl/year-quarter/year-quarter.module.d.ts +16 -0
- package/lib/components/form-item-impl/year-quarter-range/index.d.ts +2 -0
- package/lib/{form-item-controls → components/form-item-impl/year-quarter-range}/year-quarter-range.component.d.ts +6 -2
- package/lib/components/form-item-impl/year-quarter-range/year-quarter-range.module.d.ts +12 -0
- package/lib/components/form-item-injector/form-item-injector.component.d.ts +52 -0
- package/lib/components/form-item-injector/form-item-injector.module.d.ts +8 -0
- package/lib/components/form-item-injector/index.d.ts +2 -0
- package/lib/{form-stepper → components/form-stepper/form-step}/form-step.component.d.ts +1 -1
- package/lib/components/form-stepper/form-step/index.d.ts +1 -0
- package/lib/{form-stepper → components/form-stepper/form-step-group}/form-step-group.component.d.ts +1 -1
- package/lib/components/form-stepper/form-step-group/index.d.ts +1 -0
- package/lib/{form-stepper → components/form-stepper/form-stepper}/form-stepper.component.d.ts +1 -2
- package/lib/components/form-stepper/form-stepper/index.d.ts +1 -0
- package/lib/components/form-stepper/form-stepper.module.d.ts +18 -0
- package/lib/components/form-stepper/index.d.ts +4 -0
- package/lib/components/index.d.ts +12 -0
- package/lib/{item-header → components/item-header}/index.d.ts +1 -0
- package/lib/{item-header → components/item-header}/item-header.component.d.ts +3 -3
- package/lib/components/item-header/item-header.module.d.ts +9 -0
- package/lib/{step-card → components/step-card}/index.d.ts +1 -0
- package/lib/{step-card → components/step-card}/step-card.component.d.ts +1 -1
- package/lib/components/step-card/step-card.module.d.ts +13 -0
- package/lib/core/_all-color.scss +15 -15
- package/lib/core/_all-theme.scss +15 -18
- package/lib/core/_all-typography.scss +15 -15
- package/lib/core/_core-theme.scss +0 -18
- package/lib/{form-item-controls → directives}/base-single-selection-parent.directive.d.ts +1 -1
- package/lib/directives/index.d.ts +4 -0
- package/lib/models/index.d.ts +6 -0
- package/lib/models/toggle-form-item-data.model.d.ts +7 -0
- package/lib/pipes/coerce-date-item.pipe.d.ts +17 -0
- package/lib/pipes/coerce-form-control.pipe.d.ts +13 -0
- package/lib/{core/pipes → pipes}/coerce-form-group.pipe.d.ts +5 -0
- package/lib/pipes/coerce-form-item.pipe.d.ts +14 -0
- package/lib/pipes/date-quarter.pipe.d.ts +12 -0
- package/lib/{form-stepper → pipes}/form-step-group.pipe.d.ts +6 -1
- package/lib/pipes/get-auto-complete.pipe.d.ts +12 -0
- package/lib/{core/pipes → pipes}/get-available-quarters.pipe.d.ts +5 -0
- package/lib/pipes/get-form-control-error.pipe.d.ts +19 -0
- package/lib/pipes/get-list-icon.pipe.d.ts +12 -0
- package/lib/pipes/get-object-type.pipe.d.ts +12 -0
- package/lib/{core/pipes → pipes}/get-selected-option.pipe.d.ts +5 -0
- package/lib/pipes/index.d.ts +14 -0
- package/lib/{core/pipes → pipes}/items-with-value.pipe.d.ts +5 -0
- package/lib/{core/pipes → pipes}/sanitize-html.pipe.d.ts +5 -0
- package/lib/{core/services → services}/api.service.d.ts +1 -1
- package/lib/services/dialog.service.d.ts +21 -0
- package/lib/{core/services → services}/form-manager.service.d.ts +1 -1
- package/lib/{core/services → services}/index.d.ts +2 -0
- package/lib/services/resource-search-selection.service.d.ts +10 -0
- package/lib/{core/services → services}/ui.service.d.ts +1 -1
- package/lib/{core/utilities → utilities}/flatten-steps.d.ts +1 -1
- package/lib/{form-stepper → utilities}/form-step.util.d.ts +1 -1
- package/lib/{core/utilities → utilities}/generate-form-steps.d.ts +1 -1
- package/lib/utilities/get-item-class-suffix.d.ts +1 -0
- package/lib/{core/utilities → utilities}/index.d.ts +4 -0
- package/lib/utilities/is-form-control.d.ts +2 -0
- package/lib/{core/utilities → utilities}/update-step-status.d.ts +1 -1
- package/package.json +3 -1
- package/public-api.d.ts +7 -9
- package/esm2015/lib/core/animations.js +0 -8
- package/esm2015/lib/core/api-config.js +0 -3
- package/esm2015/lib/core/index.js +0 -7
- package/esm2015/lib/core/pipes/coerce-date-item.pipe.js +0 -23
- package/esm2015/lib/core/pipes/coerce-form-group.pipe.js +0 -35
- package/esm2015/lib/core/pipes/date-quarter.pipe.js +0 -43
- package/esm2015/lib/core/pipes/get-auto-complete.pipe.js +0 -42
- package/esm2015/lib/core/pipes/get-available-quarters.pipe.js +0 -29
- package/esm2015/lib/core/pipes/get-form-control-error.pipe.js +0 -20
- package/esm2015/lib/core/pipes/get-list-icon.pipe.js +0 -53
- package/esm2015/lib/core/pipes/get-object-type.pipe.js +0 -17
- package/esm2015/lib/core/pipes/get-selected-option.pipe.js +0 -20
- package/esm2015/lib/core/pipes/index.js +0 -71
- package/esm2015/lib/core/pipes/items-with-value.pipe.js +0 -30
- package/esm2015/lib/core/pipes/sanitize-html.pipe.js +0 -23
- package/esm2015/lib/core/services/api.service.js +0 -67
- package/esm2015/lib/core/services/form-manager.service.js +0 -465
- package/esm2015/lib/core/services/index.js +0 -5
- package/esm2015/lib/core/services/ng-form.service.js +0 -150
- package/esm2015/lib/core/services/ui.service.js +0 -333
- package/esm2015/lib/core/utilities/find-form-control.js +0 -29
- package/esm2015/lib/core/utilities/find-form-item.js +0 -25
- package/esm2015/lib/core/utilities/flatten-steps.js +0 -10
- package/esm2015/lib/core/utilities/generate-form-steps.js +0 -38
- package/esm2015/lib/core/utilities/index.js +0 -9
- package/esm2015/lib/core/utilities/is-form-group.js +0 -6
- package/esm2015/lib/core/utilities/serializer-util.js +0 -358
- package/esm2015/lib/core/utilities/update-step-status.js +0 -38
- package/esm2015/lib/core/validators/index.js +0 -3
- package/esm2015/lib/core/validators/instant-validation-result-error-state-matcher.js +0 -23
- package/esm2015/lib/core/validators/validation-result-validator.js +0 -19
- package/esm2015/lib/file-upload/file-upload.component.js +0 -66
- package/esm2015/lib/file-upload/index.js +0 -2
- package/esm2015/lib/form/base-form-item.model.js +0 -2
- package/esm2015/lib/form/form.component.js +0 -250
- package/esm2015/lib/form/form.module.js +0 -214
- package/esm2015/lib/form/index.js +0 -5
- package/esm2015/lib/form/white-list.model.js +0 -11
- package/esm2015/lib/form-item-controls/base-form-item-control.directive.js +0 -58
- package/esm2015/lib/form-item-controls/base-parent-item-control.directive.js +0 -42
- package/esm2015/lib/form-item-controls/base-single-selection-parent.directive.js +0 -53
- package/esm2015/lib/form-item-controls/date-range.component.js +0 -84
- package/esm2015/lib/form-item-controls/date.component.js +0 -134
- package/esm2015/lib/form-item-controls/dropdown.component.js +0 -109
- package/esm2015/lib/form-item-controls/index.js +0 -8
- package/esm2015/lib/form-item-controls/input.component.js +0 -149
- package/esm2015/lib/form-item-controls/year-quarter-range.component.js +0 -75
- package/esm2015/lib/form-item-controls/year-quarter.component.js +0 -228
- package/esm2015/lib/form-stepper/form-step-group.component.js +0 -95
- package/esm2015/lib/form-stepper/form-step-group.pipe.js +0 -20
- package/esm2015/lib/form-stepper/form-step.component.js +0 -110
- package/esm2015/lib/form-stepper/form-step.util.js +0 -28
- package/esm2015/lib/form-stepper/form-stepper.component.js +0 -115
- package/esm2015/lib/form-stepper/form-stepper.module.js +0 -53
- package/esm2015/lib/form-stepper/index.js +0 -8
- package/esm2015/lib/groups/group-components.js +0 -646
- package/esm2015/lib/groups/index.js +0 -3
- package/esm2015/lib/groups/repeatable-item.component.js +0 -23
- package/esm2015/lib/item-header/index.js +0 -2
- package/esm2015/lib/item-header/item-header.component.js +0 -108
- package/esm2015/lib/static-form-items/index.js +0 -3
- package/esm2015/lib/static-form-items/ordered-list-item.js +0 -50
- package/esm2015/lib/static-form-items/unordered-list-item.js +0 -52
- package/esm2015/lib/step-card/index.js +0 -2
- package/lib/_index.scss +0 -24
- package/lib/core/index.d.ts +0 -6
- package/lib/core/pipes/coerce-date-item.pipe.d.ts +0 -11
- package/lib/core/pipes/date-quarter.pipe.d.ts +0 -7
- package/lib/core/pipes/get-auto-complete.pipe.d.ts +0 -7
- package/lib/core/pipes/get-form-control-error.pipe.d.ts +0 -14
- package/lib/core/pipes/get-list-icon.pipe.d.ts +0 -7
- package/lib/core/pipes/get-object-type.pipe.d.ts +0 -7
- package/lib/core/pipes/index.d.ts +0 -28
- package/lib/file-upload/file-upload.component.d.ts +0 -23
- package/lib/form/form.module.d.ts +0 -52
- package/lib/form/index.d.ts +0 -4
- package/lib/form-item-controls/index.d.ts +0 -7
- package/lib/form-item-controls/input.component.d.ts +0 -14
- package/lib/form-stepper/form-stepper.module.d.ts +0 -18
- package/lib/form-stepper/index.d.ts +0 -7
- package/lib/groups/group-components.d.ts +0 -221
- package/lib/groups/repeatable-item.component.d.ts +0 -5
- package/lib/static-form-items/index.d.ts +0 -2
- package/lib/static-form-items/ordered-list-item.d.ts +0 -11
- package/lib/static-form-items/unordered-list-item.d.ts +0 -11
- /package/lib/{form → components/form-disabler}/form-disabler.component.d.ts +0 -0
- /package/lib/{groups → components/form-item-impl/checkbox}/_checkbox-theme.scss +0 -0
- /package/lib/{form-item-controls → components/form-item-impl/date}/_date-item-theme.scss +0 -0
- /package/lib/{groups → components/form-item-impl/form-group}/_form-group-theme.scss +0 -0
- /package/lib/{groups → components/form-item-impl/multiple-choice}/_multiple-choice-theme.scss +0 -0
- /package/lib/{groups/_repeatable-item-theme.scss → components/form-item-impl/repeatable-item-container/_repeatable-item-container-theme.scss} +0 -0
- /package/lib/{form-item-controls → components/form-item-impl/year-quarter}/_year-quarter-item-theme.scss +0 -0
- /package/lib/{form-stepper → components/form-stepper/form-step-group}/_form-step-group-theme.scss +0 -0
- /package/lib/{form-stepper → components/form-stepper/form-stepper}/_form-stepper-theme.scss +0 -0
- /package/lib/{item-header → components/item-header}/_item-header-theme.scss +0 -0
- /package/lib/{step-card → components/step-card}/_step-card-theme.scss +0 -0
- /package/lib/{form-item-controls → core}/_form-control-theme.scss +0 -0
- /package/lib/{form-item-controls → directives}/base-form-item-control.directive.d.ts +0 -0
- /package/lib/{form-item-controls → directives}/base-parent-item-control.directive.d.ts +0 -0
- /package/lib/{form → directives}/form-item.directive.d.ts +0 -0
- /package/lib/{core → models}/api-config.d.ts +0 -0
- /package/lib/{form → models}/base-form-item.model.d.ts +0 -0
- /package/lib/{groups → models}/form-item-dialog-data.model.d.ts +0 -0
- /package/lib/{form-stepper/models → models/form-stepper}/base-form-step.model.d.ts +0 -0
- /package/lib/{form-stepper/models → models/form-stepper}/form-step-group.model.d.ts +0 -0
- /package/lib/{form-stepper/models → models/form-stepper}/form-step.model.d.ts +0 -0
- /package/lib/{form-stepper/models → models/form-stepper}/index.d.ts +0 -0
- /package/lib/{form → models}/white-list.model.d.ts +0 -0
- /package/lib/{core/services → services}/ng-form.service.d.ts +0 -0
- /package/lib/{core → utilities}/animations.d.ts +0 -0
- /package/lib/{core/utilities → utilities}/find-form-control.d.ts +0 -0
- /package/lib/{core/utilities → utilities}/find-form-item.d.ts +0 -0
- /package/lib/{core/utilities → utilities}/is-form-group.d.ts +0 -0
- /package/lib/{core/utilities → utilities}/serializer-util.d.ts +0 -0
- /package/lib/{core/validators → validators}/index.d.ts +0 -0
- /package/lib/{core/validators → validators}/instant-validation-result-error-state-matcher.d.ts +0 -0
- /package/lib/{core/validators → validators}/validation-result-validator.d.ts +0 -0
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
export const MTNA_WF_FORM_ITEM_VALIDATION_RESULT_ERROR_NAME = 'formItemValidationResult';
|
|
2
|
-
/**
|
|
3
|
-
* Valitator function that will check the root level {@link FormValidationResult} on
|
|
4
|
-
* the MTNA {@link Form} and see if there are any errors for a particular control.
|
|
5
|
-
*
|
|
6
|
-
* @param instanceId The instanceId of the form item for a particular control
|
|
7
|
-
* @param managerService The manager service that holds a reference to the MTNA {@link Form} and it's {@link FormValidationResult}
|
|
8
|
-
* @returns A validator function that will throw an error if there is a matching {@link FormItemValidationResult} for the specified item.
|
|
9
|
-
*/
|
|
10
|
-
export function validationResultValidator(instanceId, managerService) {
|
|
11
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
12
|
-
return (control) => {
|
|
13
|
-
const formItemValidationResult = managerService.getFormItemValidationResults()[instanceId];
|
|
14
|
-
return formItemValidationResult
|
|
15
|
-
? { [MTNA_WF_FORM_ITEM_VALIDATION_RESULT_ERROR_NAME]: formItemValidationResult.validationMessage }
|
|
16
|
-
: null;
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi1yZXN1bHQtdmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2ViLWZvcm0tYW5ndWxhci9zcmMvbGliL2NvcmUvdmFsaWRhdG9ycy92YWxpZGF0aW9uLXJlc3VsdC12YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsTUFBTSxDQUFDLE1BQU0sOENBQThDLEdBQUcsMEJBQTBCLENBQUM7QUFFekY7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxVQUFrQixFQUFFLGNBQW9DO0lBQ2hHLDZEQUE2RDtJQUM3RCxPQUFPLENBQUMsT0FBd0IsRUFBMkIsRUFBRTtRQUMzRCxNQUFNLHdCQUF3QixHQUF5QyxjQUFjLENBQUMsNEJBQTRCLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqSSxPQUFPLHdCQUF3QjtZQUM3QixDQUFDLENBQUMsRUFBRSxDQUFDLDhDQUE4QyxDQUFDLEVBQUUsd0JBQXdCLENBQUMsaUJBQWlCLEVBQUU7WUFDbEcsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNYLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBGb3JtSXRlbVZhbGlkYXRpb25SZXN1bHQgfSBmcm9tICdAbXRuYS93ZWItZm9ybS10cyc7XG5cbmltcG9ydCB7IE10bmFXZk1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZm9ybS1tYW5hZ2VyLnNlcnZpY2UnO1xuXG5leHBvcnQgY29uc3QgTVROQV9XRl9GT1JNX0lURU1fVkFMSURBVElPTl9SRVNVTFRfRVJST1JfTkFNRSA9ICdmb3JtSXRlbVZhbGlkYXRpb25SZXN1bHQnO1xuXG4vKipcbiAqIFZhbGl0YXRvciBmdW5jdGlvbiB0aGF0IHdpbGwgY2hlY2sgdGhlIHJvb3QgbGV2ZWwge0BsaW5rIEZvcm1WYWxpZGF0aW9uUmVzdWx0fSBvblxuICogdGhlIE1UTkEge0BsaW5rIEZvcm19IGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBlcnJvcnMgZm9yIGEgcGFydGljdWxhciBjb250cm9sLlxuICpcbiAqIEBwYXJhbSBpbnN0YW5jZUlkIFRoZSBpbnN0YW5jZUlkIG9mIHRoZSBmb3JtIGl0ZW0gZm9yIGEgcGFydGljdWxhciBjb250cm9sXG4gKiBAcGFyYW0gbWFuYWdlclNlcnZpY2UgVGhlIG1hbmFnZXIgc2VydmljZSB0aGF0IGhvbGRzIGEgcmVmZXJlbmNlIHRvIHRoZSBNVE5BIHtAbGluayBGb3JtfSBhbmQgaXQncyB7QGxpbmsgRm9ybVZhbGlkYXRpb25SZXN1bHR9XG4gKiBAcmV0dXJucyBBIHZhbGlkYXRvciBmdW5jdGlvbiB0aGF0IHdpbGwgdGhyb3cgYW4gZXJyb3IgaWYgdGhlcmUgaXMgYSBtYXRjaGluZyB7QGxpbmsgRm9ybUl0ZW1WYWxpZGF0aW9uUmVzdWx0fSBmb3IgdGhlIHNwZWNpZmllZCBpdGVtLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGlvblJlc3VsdFZhbGlkYXRvcihpbnN0YW5jZUlkOiBzdHJpbmcsIG1hbmFnZXJTZXJ2aWNlOiBNdG5hV2ZNYW5hZ2VyU2VydmljZSk6IFZhbGlkYXRvckZuIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICBjb25zdCBmb3JtSXRlbVZhbGlkYXRpb25SZXN1bHQ6IEZvcm1JdGVtVmFsaWRhdGlvblJlc3VsdCB8IHVuZGVmaW5lZCA9IG1hbmFnZXJTZXJ2aWNlLmdldEZvcm1JdGVtVmFsaWRhdGlvblJlc3VsdHMoKVtpbnN0YW5jZUlkXTtcbiAgICByZXR1cm4gZm9ybUl0ZW1WYWxpZGF0aW9uUmVzdWx0XG4gICAgICA/IHsgW01UTkFfV0ZfRk9STV9JVEVNX1ZBTElEQVRJT05fUkVTVUxUX0VSUk9SX05BTUVdOiBmb3JtSXRlbVZhbGlkYXRpb25SZXN1bHQudmFsaWRhdGlvbk1lc3NhZ2UgfVxuICAgICAgOiBudWxsO1xuICB9O1xufVxuIl19
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@mtna/file-manager-angular";
|
|
4
|
-
import * as i2 from "@angular/material/button";
|
|
5
|
-
import * as i3 from "@angular/material/icon";
|
|
6
|
-
import * as i4 from "@angular/material/progress-spinner";
|
|
7
|
-
import * as i5 from "@angular/common";
|
|
8
|
-
import * as i6 from "@mtna/core-angular";
|
|
9
|
-
export class MtnaWfFileUploadComponent {
|
|
10
|
-
constructor(fileService) {
|
|
11
|
-
this.fileService = fileService;
|
|
12
|
-
this.header = null;
|
|
13
|
-
this.indicatorStatus = 'INACTIVE';
|
|
14
|
-
this.readonly = false;
|
|
15
|
-
this.file = new EventEmitter();
|
|
16
|
-
this.loading = false;
|
|
17
|
-
}
|
|
18
|
-
fileToUpload(file) {
|
|
19
|
-
this.loading = true;
|
|
20
|
-
this.fileService.uploadFile(file).subscribe((fileInfo) => {
|
|
21
|
-
this.loading = false;
|
|
22
|
-
this.fileInfo = fileInfo;
|
|
23
|
-
this.file.emit(fileInfo);
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
handleDownload(template) {
|
|
27
|
-
this.fileService.downloadFileGET(template.key, template.fileName, template.contentType);
|
|
28
|
-
}
|
|
29
|
-
ngOnInit() {
|
|
30
|
-
var _a;
|
|
31
|
-
if ((_a = this.item) === null || _a === void 0 ? void 0 : _a.value) {
|
|
32
|
-
this.fileInfo = this.item.value;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
removeFile() {
|
|
36
|
-
if (this.fileInfo) {
|
|
37
|
-
this.loading = true;
|
|
38
|
-
this.fileService.deleteFile(this.fileInfo).subscribe(() => {
|
|
39
|
-
this.loading = false;
|
|
40
|
-
this.fileInfo = undefined;
|
|
41
|
-
this.file.emit(undefined);
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
MtnaWfFileUploadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MtnaWfFileUploadComponent, deps: [{ token: i1.FileService }], target: i0.ɵɵFactoryTarget.Component });
|
|
47
|
-
MtnaWfFileUploadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: MtnaWfFileUploadComponent, selector: "mtna-wf-file-upload-item", inputs: { header: "header", indicatorStatus: "indicatorStatus", item: "item", readonly: "readonly" }, outputs: { file: "file" }, ngImport: i0, template: "<ng-container *ngTemplateOutlet=\"header\"></ng-container>\n\n<div class=\"content\" [mtnaHighlight]=\"indicatorStatus === 'ACTIVE' && !item?.questionText && !item?.descriptiveText\">\n <ng-container *ngIf=\"!readonly; else readOnly\">\n <ng-container *ngIf=\"!loading; else loader\">\n <mtna-file-download\n *ngIf=\"!!fileInfo; else fileUpload\"\n [fileInfo]=\"fileInfo\"\n [canRemove]=\"true\"\n color=\"primary\"\n [canDownload]=\"true\"\n (download)=\"handleDownload($event)\"\n (remove)=\"removeFile()\"\n ></mtna-file-download>\n\n <ng-template #fileUpload>\n <mtna-file-upload\n [automaticUpload]=\"false\"\n color=\"primary\"\n [buttonText]=\"'CHOOSE A FILE'\"\n (fileToUpload)=\"fileToUpload($event)\"\n ></mtna-file-upload>\n </ng-template>\n </ng-container>\n </ng-container>\n\n <!-- READONLY -->\n <ng-template #readOnly>\n <!-- anchor being used, due to <fieldset disabled> blocking a <button>'s click event -->\n <a\n *ngIf=\"!!item && !!item.value\"\n class=\"single-icon-button\"\n color=\"primary\"\n mat-stroked-button\n role=\"button\"\n (click)=\"handleDownload(item.value)\"\n >\n <mat-icon color=\"primary\">file_download</mat-icon>\n {{ (item!.value!.fileName ? item!.value!.fileName : '') | uppercase }}\n </a>\n </ng-template>\n</div>\n\n<!-- PROGRESS SPINNER -->\n<ng-template #loader>\n <mat-spinner diameter=\"125\" strokeWidth=\"10\" mode=\"indeterminate\"></mat-spinner>\n</ng-template>\n", styles: [":host{display:block;margin:1rem 0}mtna-file-download{margin:37px 0}mat-spinner{margin:0 87.5px}\n"], components: [{ type: i1.MtnaFileDownloadComponent, selector: "mtna-file-download", inputs: ["color", "canDownload", "canRemove", "fileInfo", "loading"], outputs: ["download", "remove"] }, { type: i1.MtnaFileUploadComponent, selector: "mtna-file-upload", inputs: ["automaticUpload", "buttonText", "buttonColor", "disabled", "fileUploadUrl", "isProd", "maxUploadSize", "uploading"], outputs: ["uploaded", "fileToUpload", "uploadStatus"] }, { type: i2.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab], a[mat-mini-fab], a[mat-stroked-button], a[mat-flat-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4.MatSpinner, selector: "mat-spinner", inputs: ["color"] }], directives: [{ type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i6.MtnaHighlightDirective, selector: "[mtnaHighlight]", inputs: ["mtnaHighlight", "mtnaHighlightColor"], exportAs: ["mtnaHighlight"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "uppercase": i5.UpperCasePipe } });
|
|
48
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MtnaWfFileUploadComponent, decorators: [{
|
|
49
|
-
type: Component,
|
|
50
|
-
args: [{
|
|
51
|
-
selector: 'mtna-wf-file-upload-item',
|
|
52
|
-
templateUrl: './file-upload.component.html',
|
|
53
|
-
styleUrls: ['./file-upload.component.scss'],
|
|
54
|
-
}]
|
|
55
|
-
}], ctorParameters: function () { return [{ type: i1.FileService }]; }, propDecorators: { header: [{
|
|
56
|
-
type: Input
|
|
57
|
-
}], indicatorStatus: [{
|
|
58
|
-
type: Input
|
|
59
|
-
}], item: [{
|
|
60
|
-
type: Input
|
|
61
|
-
}], readonly: [{
|
|
62
|
-
type: Input
|
|
63
|
-
}], file: [{
|
|
64
|
-
type: Output
|
|
65
|
-
}] } });
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2ViLWZvcm0tYW5ndWxhci9zcmMvbGliL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dlYi1mb3JtLWFuZ3VsYXIvc3JjL2xpYi9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFlLE1BQU0sZUFBZSxDQUFDOzs7Ozs7OztBQVk1RixNQUFNLE9BQU8seUJBQXlCO0lBV3BDLFlBQW9CLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBVm5DLFdBQU0sR0FBZ0MsSUFBSSxDQUFDO1FBQzNDLG9CQUFlLEdBQThCLFVBQVUsQ0FBQztRQUV4RCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWhCLFNBQUksR0FBRyxJQUFJLFlBQVksRUFBK0IsQ0FBQztRQUdqRSxZQUFPLEdBQUcsS0FBSyxDQUFDO0lBRStCLENBQUM7SUFFaEQsWUFBWSxDQUFDLElBQWM7UUFDekIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBeUIsRUFBRSxFQUFFO1lBQ3hFLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3JCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGNBQWMsQ0FBQyxRQUF5QjtRQUN0QyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzFGLENBQUM7SUFFRCxRQUFROztRQUNOLElBQUksTUFBQSxJQUFJLENBQUMsSUFBSSwwQ0FBRSxLQUFLLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztTQUNqQztJQUNILENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUN4RCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztnQkFDckIsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzVCLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDOzt1SEF6Q1UseUJBQXlCOzJHQUF6Qix5QkFBeUIsaU1DWnRDLG9rREErQ0E7NEZEbkNhLHlCQUF5QjtrQkFMckMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsMEJBQTBCO29CQUNwQyxXQUFXLEVBQUUsOEJBQThCO29CQUMzQyxTQUFTLEVBQUUsQ0FBQyw4QkFBOEIsQ0FBQztpQkFDNUM7a0dBRVUsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUksSUFBSTtzQkFBYixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRmlsZUluZm9ybWF0aW9uIH0gZnJvbSAnQG10bmEvZmlsZS1tYW5hZ2VyLXRzJztcbmltcG9ydCB7IEZpbGVTZXJ2aWNlIH0gZnJvbSAnQG10bmEvZmlsZS1tYW5hZ2VyLWFuZ3VsYXInO1xuaW1wb3J0IHsgQW5ub3RhdGlvbkluZGljYXRvclN0YXR1cywgSW5kaWNhdG9yU3RhdHVzUmVwZWF0ZXIgfSBmcm9tICdAbXRuYS9wb2pvLXNvY2lhbC1hbmd1bGFyJztcbmltcG9ydCB7IEZpbGVVcGxvYWRJdGVtIH0gZnJvbSAnQG10bmEvd2ViLWZvcm0tdHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtdG5hLXdmLWZpbGUtdXBsb2FkLWl0ZW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWxlLXVwbG9hZC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBNdG5hV2ZGaWxlVXBsb2FkQ29tcG9uZW50IGltcGxlbWVudHMgSW5kaWNhdG9yU3RhdHVzUmVwZWF0ZXIsIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGhlYWRlcjogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgaW5kaWNhdG9yU3RhdHVzOiBBbm5vdGF0aW9uSW5kaWNhdG9yU3RhdHVzID0gJ0lOQUNUSVZFJztcbiAgQElucHV0KCkgaXRlbTogRmlsZVVwbG9hZEl0ZW0gfCB1bmRlZmluZWQgfCBudWxsO1xuICBASW5wdXQoKSByZWFkb25seSA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBmaWxlID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlSW5mb3JtYXRpb24gfCB1bmRlZmluZWQ+KCk7XG5cbiAgZmlsZUluZm8/OiBGaWxlSW5mb3JtYXRpb247XG4gIGxvYWRpbmcgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZpbGVTZXJ2aWNlOiBGaWxlU2VydmljZSkge31cblxuICBmaWxlVG9VcGxvYWQoZmlsZTogRmlsZUxpc3QpIHtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMuZmlsZVNlcnZpY2UudXBsb2FkRmlsZShmaWxlKS5zdWJzY3JpYmUoKGZpbGVJbmZvOiBGaWxlSW5mb3JtYXRpb24pID0+IHtcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5maWxlSW5mbyA9IGZpbGVJbmZvO1xuICAgICAgdGhpcy5maWxlLmVtaXQoZmlsZUluZm8pO1xuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlRG93bmxvYWQodGVtcGxhdGU6IEZpbGVJbmZvcm1hdGlvbikge1xuICAgIHRoaXMuZmlsZVNlcnZpY2UuZG93bmxvYWRGaWxlR0VUKHRlbXBsYXRlLmtleSwgdGVtcGxhdGUuZmlsZU5hbWUsIHRlbXBsYXRlLmNvbnRlbnRUeXBlKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLml0ZW0/LnZhbHVlKSB7XG4gICAgICB0aGlzLmZpbGVJbmZvID0gdGhpcy5pdGVtLnZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZUZpbGUoKSB7XG4gICAgaWYgKHRoaXMuZmlsZUluZm8pIHtcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICB0aGlzLmZpbGVTZXJ2aWNlLmRlbGV0ZUZpbGUodGhpcy5maWxlSW5mbykuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZmlsZUluZm8gPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuZmlsZS5lbWl0KHVuZGVmaW5lZCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoZWFkZXJcIj48L25nLWNvbnRhaW5lcj5cblxuPGRpdiBjbGFzcz1cImNvbnRlbnRcIiBbbXRuYUhpZ2hsaWdodF09XCJpbmRpY2F0b3JTdGF0dXMgPT09ICdBQ1RJVkUnICYmICFpdGVtPy5xdWVzdGlvblRleHQgJiYgIWl0ZW0/LmRlc2NyaXB0aXZlVGV4dFwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXJlYWRvbmx5OyBlbHNlIHJlYWRPbmx5XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFsb2FkaW5nOyBlbHNlIGxvYWRlclwiPlxuICAgICAgPG10bmEtZmlsZS1kb3dubG9hZFxuICAgICAgICAqbmdJZj1cIiEhZmlsZUluZm87IGVsc2UgZmlsZVVwbG9hZFwiXG4gICAgICAgIFtmaWxlSW5mb109XCJmaWxlSW5mb1wiXG4gICAgICAgIFtjYW5SZW1vdmVdPVwidHJ1ZVwiXG4gICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgIFtjYW5Eb3dubG9hZF09XCJ0cnVlXCJcbiAgICAgICAgKGRvd25sb2FkKT1cImhhbmRsZURvd25sb2FkKCRldmVudClcIlxuICAgICAgICAocmVtb3ZlKT1cInJlbW92ZUZpbGUoKVwiXG4gICAgICA+PC9tdG5hLWZpbGUtZG93bmxvYWQ+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZmlsZVVwbG9hZD5cbiAgICAgICAgPG10bmEtZmlsZS11cGxvYWRcbiAgICAgICAgICBbYXV0b21hdGljVXBsb2FkXT1cImZhbHNlXCJcbiAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgIFtidXR0b25UZXh0XT1cIidDSE9PU0UgQSBGSUxFJ1wiXG4gICAgICAgICAgKGZpbGVUb1VwbG9hZCk9XCJmaWxlVG9VcGxvYWQoJGV2ZW50KVwiXG4gICAgICAgID48L210bmEtZmlsZS11cGxvYWQ+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIFJFQURPTkxZIC0tPlxuICA8bmctdGVtcGxhdGUgI3JlYWRPbmx5PlxuICAgIDwhLS0gYW5jaG9yIGJlaW5nIHVzZWQsIGR1ZSB0byA8ZmllbGRzZXQgZGlzYWJsZWQ+IGJsb2NraW5nIGEgPGJ1dHRvbj4ncyBjbGljayBldmVudCAtLT5cbiAgICA8YVxuICAgICAgKm5nSWY9XCIhIWl0ZW0gJiYgISFpdGVtLnZhbHVlXCJcbiAgICAgIGNsYXNzPVwic2luZ2xlLWljb24tYnV0dG9uXCJcbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICBtYXQtc3Ryb2tlZC1idXR0b25cbiAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgKGNsaWNrKT1cImhhbmRsZURvd25sb2FkKGl0ZW0udmFsdWUpXCJcbiAgICA+XG4gICAgICA8bWF0LWljb24gY29sb3I9XCJwcmltYXJ5XCI+ZmlsZV9kb3dubG9hZDwvbWF0LWljb24+XG4gICAgICB7eyAoaXRlbSEudmFsdWUhLmZpbGVOYW1lID8gaXRlbSEudmFsdWUhLmZpbGVOYW1lIDogJycpIHwgdXBwZXJjYXNlIH19XG4gICAgPC9hPlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG5cbjwhLS0gUFJPR1JFU1MgU1BJTk5FUiAtLT5cbjxuZy10ZW1wbGF0ZSAjbG9hZGVyPlxuICA8bWF0LXNwaW5uZXIgZGlhbWV0ZXI9XCIxMjVcIiBzdHJva2VXaWR0aD1cIjEwXCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj48L21hdC1zcGlubmVyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export * from './file-upload.component';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93ZWItZm9ybS1hbmd1bGFyL3NyYy9saWIvZmlsZS11cGxvYWQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZmlsZS11cGxvYWQuY29tcG9uZW50JztcbiJdfQ==
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1mb3JtLWl0ZW0ubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93ZWItZm9ybS1hbmd1bGFyL3NyYy9saWIvZm9ybS9iYXNlLWZvcm0taXRlbS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBGb3JtSXRlbSB9IGZyb20gJ0BtdG5hL3dlYi1mb3JtLXRzJztcblxuLyoqXG4gKiBUaGUgQmFzaWMgc2V0dXAgZm9yIGEgRm9ybUl0ZW0uIEFueSBkeW5hbWljIGNvbXBvbmVudHMgdG8gYmUgcmVuZGVyZWQgc2hvdWxkXG4gKiBpbXBsZW1lbnQgdGhpcyBpbnRlcmZhY2UgdG8gZW5zdXJlIHRoZXkgY29udGFpbiB0aGUgbmVjZXNzYXJ5IGlucHV0cy5cbiAqXG4gKiBAcHJvcCBjb250cm9sIC0gQWJzdHJhY3RDb250cm9sIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAqIEBwcm9wIGl0ZW0gLSBGb3JtSXRlbVxuICogQHByb3AgcmVhZG9ubHkgLSBib29sZWFuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUZvcm1JdGVtIHtcbiAgY29udHJvbDogQWJzdHJhY3RDb250cm9sIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgaXRlbTogRm9ybUl0ZW07XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufVxuIl19
|
|
@@ -1,250 +0,0 @@
|
|
|
1
|
-
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
2
|
-
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation, } from '@angular/core';
|
|
3
|
-
import { mixinDestroyNotifier } from '@mtna/core-angular';
|
|
4
|
-
import { BehaviorSubject, Subscription } from 'rxjs';
|
|
5
|
-
import { distinctUntilChanged, skipWhile, takeUntil } from 'rxjs/operators';
|
|
6
|
-
import { findFormControl } from '../core/utilities/find-form-control';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "../core/services";
|
|
9
|
-
import * as i2 from "./form-disabler.component";
|
|
10
|
-
import * as i3 from "../groups/group-components";
|
|
11
|
-
import * as i4 from "@angular/common";
|
|
12
|
-
import * as i5 from "@angular/forms";
|
|
13
|
-
export class MtnaWfFormComponent extends mixinDestroyNotifier(class {
|
|
14
|
-
}) {
|
|
15
|
-
constructor(mtnaFormManager, ngFormService, uiService) {
|
|
16
|
-
super();
|
|
17
|
-
this.mtnaFormManager = mtnaFormManager;
|
|
18
|
-
this.ngFormService = ngFormService;
|
|
19
|
-
this.uiService = uiService;
|
|
20
|
-
this._emitStatusOnMtnaFormChange = false;
|
|
21
|
-
this.readonly$ = new BehaviorSubject(true);
|
|
22
|
-
/**
|
|
23
|
-
* Emitted every time a form control's validation status changes.
|
|
24
|
-
* The `id` is the form control's name and the `status` is the new validation status for the control.
|
|
25
|
-
*/
|
|
26
|
-
this.status = new EventEmitter();
|
|
27
|
-
this.focusedSection = new EventEmitter();
|
|
28
|
-
this.mtnaFormChange = new EventEmitter();
|
|
29
|
-
this.componentIds = [];
|
|
30
|
-
this._hasPreviousForm = false;
|
|
31
|
-
this._initialStatusEmitted = false;
|
|
32
|
-
this._constructionDate = new Date();
|
|
33
|
-
// Initialize the subscription to observe input changes
|
|
34
|
-
this._subscribeAndEmitMtnaFormChanges();
|
|
35
|
-
}
|
|
36
|
-
set annotations(map) {
|
|
37
|
-
this.uiService.registerAnnotations(map);
|
|
38
|
-
}
|
|
39
|
-
/** Whether to emit the status of each step each time the {@link mtnaForm} is set to a new value. Defaults to false.*/
|
|
40
|
-
get emitStatusOnMtnaFormChange() {
|
|
41
|
-
return this._emitStatusOnMtnaFormChange;
|
|
42
|
-
}
|
|
43
|
-
set emitStatusOnMtnaFormChange(emitStatusOnMtnaFormChange) {
|
|
44
|
-
this._emitStatusOnMtnaFormChange = coerceBooleanProperty(emitStatusOnMtnaFormChange);
|
|
45
|
-
}
|
|
46
|
-
get mtnaForm() {
|
|
47
|
-
return this._mtnaForm;
|
|
48
|
-
}
|
|
49
|
-
set mtnaForm(form) {
|
|
50
|
-
if (!!form && !this.ngForm) {
|
|
51
|
-
// serialize the form when input is set the first time
|
|
52
|
-
this._handleFormSerialization(form);
|
|
53
|
-
this._checkAndSubscribeToFormStatus();
|
|
54
|
-
}
|
|
55
|
-
this._mtnaForm = form;
|
|
56
|
-
if (form) {
|
|
57
|
-
this.mtnaFormManager.setMtnaForm(form);
|
|
58
|
-
// If indicated, re-emit the status of each step when there is a new form
|
|
59
|
-
if (this.emitStatusOnMtnaFormChange && this.ngForm) {
|
|
60
|
-
for (const key in this._steps) {
|
|
61
|
-
if (Object.prototype.hasOwnProperty.call(this._steps, key)) {
|
|
62
|
-
this._emitFormControlStatus(key);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* The form can contain sections not included in the steps.
|
|
70
|
-
* To avoid misalignment of steps-to-sections, we map each step to
|
|
71
|
-
* its instanceId
|
|
72
|
-
*/
|
|
73
|
-
set steps(newSteps) {
|
|
74
|
-
if (!!newSteps && !!newSteps.length) {
|
|
75
|
-
if (!this._steps) {
|
|
76
|
-
this._steps = {};
|
|
77
|
-
}
|
|
78
|
-
for (const step of newSteps) {
|
|
79
|
-
this._steps[step.instanceId] = step;
|
|
80
|
-
}
|
|
81
|
-
this._checkAndSubscribeToFormStatus();
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
get readonly() {
|
|
85
|
-
return this.readonly$.value;
|
|
86
|
-
}
|
|
87
|
-
set readonly(r) {
|
|
88
|
-
const newValue = coerceBooleanProperty(r);
|
|
89
|
-
if (newValue !== this.readonly$.value) {
|
|
90
|
-
this.readonly$.next(r);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
ngAfterViewInit() {
|
|
94
|
-
const afterViewInitDate = new Date();
|
|
95
|
-
const secondsToRender = (afterViewInitDate.getTime() - this._constructionDate.getTime()) / 1000;
|
|
96
|
-
console.warn('[MtnaFormComponent] afterViewInit - took ', secondsToRender, ' to render');
|
|
97
|
-
}
|
|
98
|
-
ngOnDestroy() {
|
|
99
|
-
super.ngOnDestroy();
|
|
100
|
-
this.uiService.resetComponentMap();
|
|
101
|
-
}
|
|
102
|
-
_trackByInstanceId(index, formItem) {
|
|
103
|
-
return formItem.instanceId;
|
|
104
|
-
}
|
|
105
|
-
/** Subscribe and emit form status changes for the steps. */
|
|
106
|
-
_checkAndSubscribeToFormStatus() {
|
|
107
|
-
// Only subscribe once both the steps and the angular have been initialized
|
|
108
|
-
if (this.ngForm && this._steps) {
|
|
109
|
-
// Update form status subscriptions anytime the readonly input changes
|
|
110
|
-
this.readonly$.pipe(takeUntil(this.destroyed$), distinctUntilChanged()).subscribe((readonly) => {
|
|
111
|
-
if (readonly) {
|
|
112
|
-
// Don't emit statuses while form is in readonly
|
|
113
|
-
this._unsubscribeFromNgFormChanges();
|
|
114
|
-
}
|
|
115
|
-
else if (!this._ngFormStatusChangeSub || this._ngFormStatusChangeSub.closed) {
|
|
116
|
-
// For performance, subscribe should only trigger again if the subscription didn't previously exist
|
|
117
|
-
this._emitInitialStepsStatusAndSubscribeToChanges(!this._initialStatusEmitted);
|
|
118
|
-
this._initialStatusEmitted = true;
|
|
119
|
-
}
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* Find a form control with the given name, then emit it's status.
|
|
125
|
-
*
|
|
126
|
-
* @param name — The unique name of the form cotrol to find and emit the status for.
|
|
127
|
-
*/
|
|
128
|
-
_emitFormControlStatus(name) {
|
|
129
|
-
if (this.ngForm) {
|
|
130
|
-
const control = findFormControl(name, this.ngForm);
|
|
131
|
-
if (control) {
|
|
132
|
-
this.status.emit({
|
|
133
|
-
id: name,
|
|
134
|
-
status: control.status,
|
|
135
|
-
});
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* @param emitInitialValues Whether to emit initial step values or just listen for future changes
|
|
141
|
-
*/
|
|
142
|
-
_emitInitialStepsStatusAndSubscribeToChanges(emitInitialValues) {
|
|
143
|
-
if (this._steps && this.ngForm) {
|
|
144
|
-
this._unsubscribeFromNgFormChanges();
|
|
145
|
-
this._ngFormStatusChangeSub = new Subscription();
|
|
146
|
-
// Find the form control for each step and only subscribe to those.
|
|
147
|
-
for (const key in this._steps) {
|
|
148
|
-
if (Object.prototype.hasOwnProperty.call(this._steps, key)) {
|
|
149
|
-
const control = findFormControl(key, this.ngForm);
|
|
150
|
-
if (control) {
|
|
151
|
-
if (emitInitialValues) {
|
|
152
|
-
this.status.emit({
|
|
153
|
-
id: key,
|
|
154
|
-
// Angular introduced this status in v13, once we update, this type cast can be removed.
|
|
155
|
-
status: control.status,
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
// Subscribe to status changes of each step & emit on change
|
|
159
|
-
this._ngFormStatusChangeSub.add(control.statusChanges
|
|
160
|
-
.pipe(takeUntil(this.destroyed$), distinctUntilChanged())
|
|
161
|
-
.subscribe((status) => this.status.emit({ id: key, status })));
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
/**
|
|
168
|
-
* Observes input changes for readOnly, in order to handle internal change subscriptions.
|
|
169
|
-
* When the form is not readonly, we subscribe to form status & form item changes, so we can emit them.
|
|
170
|
-
* When the form is readonly, we do not want to emit any changes, so we unsubscribe.
|
|
171
|
-
*/
|
|
172
|
-
_subscribeAndEmitMtnaFormChanges() {
|
|
173
|
-
this.readonly$
|
|
174
|
-
.pipe(takeUntil(this.destroyed$),
|
|
175
|
-
// we don't want to create subscriptions until we have a form to subscribe to
|
|
176
|
-
skipWhile(() => !this.mtnaForm), distinctUntilChanged())
|
|
177
|
-
.subscribe((readonly) => {
|
|
178
|
-
if (readonly) {
|
|
179
|
-
this._unsubscribeFromMtnaFormChanges();
|
|
180
|
-
}
|
|
181
|
-
else if (!this._mtnaFormItemChangeSub || this._mtnaFormItemChangeSub.closed) {
|
|
182
|
-
// For performance, subscribe should only trigger again if one of the subscriptions didn't previously exist
|
|
183
|
-
this._subscribeToMtnaFormItemChanges();
|
|
184
|
-
}
|
|
185
|
-
});
|
|
186
|
-
}
|
|
187
|
-
_handleFormSerialization(form) {
|
|
188
|
-
// Get the registered form from the service if it exists
|
|
189
|
-
this._hasPreviousForm = this.ngFormService.hasForm();
|
|
190
|
-
if (this._hasPreviousForm) {
|
|
191
|
-
this.ngForm = this.ngFormService.getForm();
|
|
192
|
-
// FIXME this is necessary because the initial visiblity is based on the mtnaForm item's disable property
|
|
193
|
-
// If the user changes a value, goes to another tab (destroying form) and comes back, the initial values are incorrect
|
|
194
|
-
this.mtnaForm = this.mtnaFormManager.insertNewValues(form, this.ngFormService.getFormValue());
|
|
195
|
-
}
|
|
196
|
-
else {
|
|
197
|
-
this.ngForm = this.mtnaFormManager.serializeMtnaFormItem(form);
|
|
198
|
-
this.ngFormService.setForm(this.ngForm);
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
/**
|
|
202
|
-
* Adds or removes a FormItem whenever a new MtnaWfFormItemChange occurs,
|
|
203
|
-
* and emits a new MtnaForm.
|
|
204
|
-
*/
|
|
205
|
-
_subscribeToMtnaFormItemChanges() {
|
|
206
|
-
this._unsubscribeFromMtnaFormChanges();
|
|
207
|
-
this._mtnaFormItemChangeSub = this.mtnaFormManager.formChanges
|
|
208
|
-
.pipe(takeUntil(this.destroyed$), skipWhile((change) => !change))
|
|
209
|
-
.subscribe((newForm) => this.mtnaFormChange.emit(newForm));
|
|
210
|
-
}
|
|
211
|
-
_unsubscribeFromNgFormChanges() {
|
|
212
|
-
if (!!this._ngFormStatusChangeSub && !this._ngFormStatusChangeSub.closed) {
|
|
213
|
-
this._ngFormStatusChangeSub.unsubscribe();
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
_unsubscribeFromMtnaFormChanges() {
|
|
217
|
-
if (!!this._mtnaFormItemChangeSub && !this._mtnaFormItemChangeSub.closed) {
|
|
218
|
-
this._mtnaFormItemChangeSub.unsubscribe();
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
MtnaWfFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MtnaWfFormComponent, deps: [{ token: i1.MtnaWfManagerService }, { token: i1.MtnaWfNgFormService }, { token: i1.MtnaWfUIService }], target: i0.ɵɵFactoryTarget.Component });
|
|
223
|
-
MtnaWfFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: MtnaWfFormComponent, selector: "mtna-form", inputs: { annotations: "annotations", emitStatusOnMtnaFormChange: "emitStatusOnMtnaFormChange", mtnaForm: "mtnaForm", steps: "steps", readonly: "readonly" }, outputs: { status: "status", focusedSection: "focusedSection", mtnaFormChange: "mtnaFormChange" }, usesInheritance: true, ngImport: i0, template: "<form *ngIf=\"ngForm\" [formGroup]=\"ngForm\" [formDisabled]=\"readonly\">\n <mtna-wf-item\n *ngFor=\"let item of mtnaForm?.items; let index = index; trackBy: _trackByInstanceId\"\n [item]=\"item\"\n [control]=\"ngForm.controls[item.instanceId]\"\n [readonly]=\"readonly\"\n [parentIds]=\"componentIds\"\n [step]=\"_steps?.[item.instanceId]\"\n (focusedSection)=\"focusedSection.emit($event)\"\n ></mtna-wf-item>\n</form>\n", styles: ["mtna-form form{display:block}mtna-form form .mtna-wf-section{display:block;margin:32px 0}mtna-form form fieldset[disabled] .mtna-wf-item .mtna-wf-date-item .mat-form-field.mat-form-field-appearance-outline .mat-form-field-flex:hover .mat-form-field-outline{opacity:0}mtna-form form fieldset[disabled] .mtna-wf-item .mtna-wf-date-item .mat-form-field.mat-form-field-appearance-outline .mat-form-field-flex:hover .mat-form-field-outline-thick{opacity:1}mtna-form form fieldset[disabled] .mtna-wf-item .mtna-wf-date-item .mat-form-field.mat-form-field-appearance-outline .mat-form-field-flex:hover .mat-form-field-outline-thick .mat-form-field-outline-end,mtna-form form fieldset[disabled] .mtna-wf-item .mtna-wf-date-item .mat-form-field.mat-form-field-appearance-outline .mat-form-field-flex:hover .mat-form-field-outline-thick .mat-form-field-outline-gap,mtna-form form fieldset[disabled] .mtna-wf-item .mtna-wf-date-item .mat-form-field.mat-form-field-appearance-outline .mat-form-field-flex:hover .mat-form-field-outline-thick .mat-form-field-outline-start{border-width:1px}mtna-form form fieldset[disabled] .mtna-wf-item .mtna-wf-date-item .mat-form-field.mat-form-field-appearance-outline .mat-form-field-suffix .mat-datepicker-toggle .mat-icon-button{cursor:default}mtna-form .mtna-wf-item,mtna-form .mtna-wf-title{margin-top:1rem}mtna-form .mtna-wf-text{margin:.5rem 0;font-size:.9rem}mtna-form .mtna-wf-title-item,mtna-form .mtna-wf-text-item{margin:0}mtna-form mtna-annotations-indicator+mtna-wf-value-item .mtna-wf-title-item,mtna-form mtna-annotations-indicator+mtna-wf-value-item .mtna-wf-text-item{padding-right:24px}\n"], components: [{ type: i2.MtnaWfFormDisablerComponent, selector: "[formDisabled]", inputs: ["formDisabled"] }, { type: i3.MtnaWfFormItemComponent, selector: "mtna-wf-item", inputs: ["item", "readonly", "control", "parentIds", "step"], outputs: ["focusedSection"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
224
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MtnaWfFormComponent, decorators: [{
|
|
225
|
-
type: Component,
|
|
226
|
-
args: [{
|
|
227
|
-
selector: 'mtna-form',
|
|
228
|
-
templateUrl: './form.component.html',
|
|
229
|
-
styleUrls: ['./form.component.scss'],
|
|
230
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
231
|
-
encapsulation: ViewEncapsulation.None,
|
|
232
|
-
}]
|
|
233
|
-
}], ctorParameters: function () { return [{ type: i1.MtnaWfManagerService }, { type: i1.MtnaWfNgFormService }, { type: i1.MtnaWfUIService }]; }, propDecorators: { annotations: [{
|
|
234
|
-
type: Input
|
|
235
|
-
}], emitStatusOnMtnaFormChange: [{
|
|
236
|
-
type: Input
|
|
237
|
-
}], mtnaForm: [{
|
|
238
|
-
type: Input
|
|
239
|
-
}], steps: [{
|
|
240
|
-
type: Input
|
|
241
|
-
}], readonly: [{
|
|
242
|
-
type: Input
|
|
243
|
-
}], status: [{
|
|
244
|
-
type: Output
|
|
245
|
-
}], focusedSection: [{
|
|
246
|
-
type: Output
|
|
247
|
-
}], mtnaFormChange: [{
|
|
248
|
-
type: Output
|
|
249
|
-
}] } });
|
|
250
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93ZWItZm9ybS1hbmd1bGFyL3NyYy9saWIvZm9ybS9mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dlYi1mb3JtLWFuZ3VsYXIvc3JjL2xpYi9mb3JtL2Zvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVFLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQW9CLG9CQUFvQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFJNUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7Ozs7Ozs7QUFXdEUsTUFBTSxPQUFPLG1CQUFvQixTQUFRLG9CQUFvQixDQUFDO0NBQVEsQ0FBQztJQTZGckUsWUFDVSxlQUFxQyxFQUNyQyxhQUFrQyxFQUNsQyxTQUEwQjtRQUVsQyxLQUFLLEVBQUUsQ0FBQztRQUpBLG9CQUFlLEdBQWYsZUFBZSxDQUFzQjtRQUNyQyxrQkFBYSxHQUFiLGFBQWEsQ0FBcUI7UUFDbEMsY0FBUyxHQUFULFNBQVMsQ0FBaUI7UUEvRTVCLGdDQUEyQixHQUFHLEtBQUssQ0FBQztRQXdEcEMsY0FBUyxHQUFHLElBQUksZUFBZSxDQUFVLElBQUksQ0FBQyxDQUFDO1FBRXZEOzs7V0FHRztRQUNPLFdBQU0sR0FBRyxJ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L0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsV0FBVztvQkFDckIsV0FBVyxFQUFFLHVCQUF1QjtvQkFDcEMsU0FBUyxFQUFFLENBQUMsdUJBQXVCLENBQUM7b0JBQ3BDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtpQkFDdEM7MktBTUssV0FBVztzQkFEZCxLQUFLO2dCQU9GLDBCQUEwQjtzQkFEN0IsS0FBSztnQkFVRixRQUFRO3NCQURYLEtBQUs7Z0JBZ0NGLEtBQUs7c0JBRFIsS0FBSztnQkFjRixRQUFRO3NCQURYLEtBQUs7Z0JBZ0JJLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBDYW5EZXN0cm95Tm90aWZ5LCBtaXhpbkRlc3Ryb3lOb3RpZmllciB9IGZyb20gJ0BtdG5hL2NvcmUtYW5ndWxhcic7XG5pbXBvcnQgeyBBbm5vdGF0YWJsZU51bWJlck1hcCB9IGZyb20gJ0BtdG5hL3Bvam8tc29jaWFsLWFuZ3VsYXInO1xuaW1wb3J0IHsgRm9ybSwgRm9ybUNvbnRyb2xTdGF0dXMsIEZvcm1JdGVtIH0gZnJvbSAnQG10bmEvd2ViLWZvcm0tdHMnO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIHNraXBXaGlsZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBmaW5kRm9ybUNvbnRyb2wgfSBmcm9tICcuLi9jb3JlL3V0aWxpdGllcy9maW5kLWZvcm0tY29udHJvbCc7XG5pbXBvcnQgeyBNdG5hV2ZNYW5hZ2VyU2VydmljZSwgTXRuYVdmTmdGb3JtU2VydmljZSwgTXRuYVdmVUlTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBGb3JtU3RlcCB9IGZyb20gJy4uL2Zvcm0tc3RlcHBlci9tb2RlbHMvZm9ybS1zdGVwLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbXRuYS1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mb3JtLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBNdG5hV2ZGb3JtQ29tcG9uZW50IGV4dGVuZHMgbWl4aW5EZXN0cm95Tm90aWZpZXIoY2xhc3Mge30pIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgQ2FuRGVzdHJveU5vdGlmeSwgT25EZXN0cm95IHtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2VtaXRTdGF0dXNPbk10bmFGb3JtQ2hhbmdlOiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZXNfcmVhZG9ubHk6IEJvb2xlYW5JbnB1dDtcblxuICBASW5wdXQoKVxuICBzZXQgYW5ub3RhdGlvbnMobWFwOiBBbm5vdGF0YWJsZU51bWJlck1hcCkge1xuICAgIHRoaXMudWlTZXJ2aWNlLnJlZ2lzdGVyQW5ub3RhdGlvbnMobWFwKTtcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRvIGVtaXQgdGhlIHN0YXR1cyBvZiBlYWNoIHN0ZXAgZWFjaCB0aW1lIHRoZSB7QGxpbmsgbXRuYUZvcm19IGlzIHNldCB0byBhIG5ldyB2YWx1ZS4gRGVmYXVsdHMgdG8gZmFsc2UuKi9cbiAgQElucHV0KClcbiAgZ2V0IGVtaXRTdGF0dXNPbk10bmFGb3JtQ2hhbmdlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9lbWl0U3RhdHVzT25NdG5hRm9ybUNoYW5nZTtcbiAgfVxuICBzZXQgZW1pdFN0YXR1c09uTXRuYUZvcm1DaGFuZ2UoZW1pdFN0YXR1c09uTXRuYUZvcm1DaGFuZ2U6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9lbWl0U3RhdHVzT25NdG5hRm9ybUNoYW5nZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShlbWl0U3RhdHVzT25NdG5hRm9ybUNoYW5nZSk7XG4gIH1cbiAgcHJpdmF0ZSBfZW1pdFN0YXR1c09uTXRuYUZvcm1DaGFuZ2UgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBnZXQgbXRuYUZvcm0oKTogRm9ybSB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9tdG5hRm9ybTtcbiAgfVxuICBzZXQgbXRuYUZvcm0oZm9ybTogRm9ybSB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAoISFmb3JtICYmICF0aGlzLm5nRm9ybSkge1xuICAgICAgLy8gc2VyaWFsaXplIHRoZSBmb3JtIHdoZW4gaW5wdXQgaXMgc2V0IHRoZSBmaXJzdCB0aW1lXG4gICAgICB0aGlzLl9oYW5kbGVGb3JtU2VyaWFsaXphdGlvbihmb3JtKTtcbiAgICAgIHRoaXMuX2NoZWNrQW5kU3Vic2NyaWJlVG9Gb3JtU3RhdHVzKCk7XG4gICAgfVxuICAgIHRoaXMuX210bmFGb3JtID0gZm9ybTtcbiAgICBpZiAoZm9ybSkge1xuICAgICAgdGhpcy5tdG5hRm9ybU1hbmFnZXIuc2V0TXRuYUZvcm0oZm9ybSk7XG5cbiAgICAgIC8vIElmIGluZGljYXRlZCwgcmUtZW1pdCB0aGUgc3RhdHVzIG9mIGVhY2ggc3RlcCB3aGVuIHRoZXJlIGlzIGEgbmV3IGZvcm1cbiAgICAgIGlmICh0aGlzLmVtaXRTdGF0dXNPbk10bmFGb3JtQ2hhbmdlICYmIHRoaXMubmdGb3JtKSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuX3N0ZXBzKSB7XG4gICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLl9zdGVwcywga2V5KSkge1xuICAgICAgICAgICAgdGhpcy5fZW1pdEZvcm1Db250cm9sU3RhdHVzKGtleSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHByaXZhdGUgX210bmFGb3JtOiBGb3JtIHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIGZvcm0gY2FuIGNvbnRhaW4gc2VjdGlvbnMgbm90IGluY2x1ZGVkIGluIHRoZSBzdGVwcy5cbiAgICogVG8gYXZvaWQgbWlzYWxpZ25tZW50IG9mIHN0ZXBzLXRvLXNlY3Rpb25zLCB3ZSBtYXAgZWFjaCBzdGVwIHRvXG4gICAqIGl0cyBpbnN0YW5jZUlkXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgc3RlcHMobmV3U3RlcHM6IEFycmF5PEZvcm1TdGVwPiB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAoISFuZXdTdGVwcyAmJiAhIW5ld1N0ZXBzLmxlbmd0aCkge1xuICAgICAgaWYgKCF0aGlzLl9zdGVwcykge1xuICAgICAgICB0aGlzLl9zdGVwcyA9IHt9O1xuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBzdGVwIG9mIG5ld1N0ZXBzKSB7XG4gICAgICAgIHRoaXMuX3N0ZXBzW3N0ZXAuaW5zdGFuY2VJZF0gPSBzdGVwO1xuICAgICAgfVxuICAgICAgdGhpcy5fY2hlY2tBbmRTdWJzY3JpYmVUb0Zvcm1TdGF0dXMoKTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKVxuICBnZXQgcmVhZG9ubHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucmVhZG9ubHkkLnZhbHVlO1xuICB9XG4gIHNldCByZWFkb25seShyOiBib29sZWFuKSB7XG4gICAgY29uc3QgbmV3VmFsdWUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkocik7XG4gICAgaWYgKG5ld1ZhbHVlICE9PSB0aGlzLnJlYWRvbmx5JC52YWx1ZSkge1xuICAgICAgdGhpcy5yZWFkb25seSQubmV4dChyKTtcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSByZWFkb25seSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuXG4gIC8qKlxuICAgKiBFbWl0dGVkIGV2ZXJ5IHRpbWUgYSBmb3JtIGNvbnRyb2wncyB2YWxpZGF0aW9uIHN0YXR1cyBjaGFuZ2VzLlxuICAgKiBUaGUgYGlkYCBpcyB0aGUgZm9ybSBjb250cm9sJ3MgbmFtZSBhbmQgdGhlIGBzdGF0dXNgIGlzIHRoZSBuZXcgdmFsaWRhdGlvbiBzdGF0dXMgZm9yIHRoZSBjb250cm9sLlxuICAgKi9cbiAgQE91dHB1dCgpIHN0YXR1cyA9IG5ldyBFdmVudEVtaXR0ZXI8eyBpZDogc3RyaW5nOyBzdGF0dXM6IEZvcm1Db250cm9sU3RhdHVzIH0+KCk7XG4gIEBPdXRwdXQoKSBmb2N1c2VkU2VjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9ybVN0ZXA+KCk7XG4gIEBPdXRwdXQoKSBtdG5hRm9ybUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9ybT4oKTtcblxuICBuZ0Zvcm06IEZvcm1Hcm91cCB8IHVuZGVmaW5lZDtcbiAgY29tcG9uZW50SWRzID0gW107XG4gIF9zdGVwczogeyBbaWQ6IHN0cmluZ106IEZvcm1TdGVwIH0gfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBfY29uc3RydWN0aW9uRGF0ZTogRGF0ZTtcbiAgcHJpdmF0ZSBfaGFzUHJldmlvdXNGb3JtID0gZmFsc2U7XG4gIHByaXZhdGUgX25nRm9ybVN0YXR1c0NoYW5nZVN1Yj86IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBfbXRuYUZvcm1JdGVtQ2hhbmdlU3ViPzogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIF9pbml0aWFsU3RhdHVzRW1pdHRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbXRuYUZvcm1NYW5hZ2VyOiBNdG5hV2ZNYW5hZ2VyU2VydmljZSxcbiAgICBwcml2YXRlIG5nRm9ybVNlcnZpY2U6IE10bmFXZk5nRm9ybVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1aVNlcnZpY2U6IE10bmFXZlVJU2VydmljZVxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuX2NvbnN0cnVjdGlvbkRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIC8vIEluaXRpYWxpemUgdGhlIHN1YnNjcmlwdGlvbiB0byBvYnNlcnZlIGlucHV0IGNoYW5nZXNcbiAgICB0aGlzLl9zdWJzY3JpYmVBbmRFbWl0TXRuYUZvcm1DaGFuZ2VzKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgY29uc3QgYWZ0ZXJWaWV3SW5pdERhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IHNlY29uZHNUb1JlbmRlciA9IChhZnRlclZpZXdJbml0RGF0ZS5nZXRUaW1lKCkgLSB0aGlzLl9jb25zdHJ1Y3Rpb25EYXRlLmdldFRpbWUoKSkgLyAxMDAwO1xuICAgIGNvbnNvbGUud2FybignW010bmFGb3JtQ29tcG9uZW50XSBhZnRlclZpZXdJbml0IC0gdG9vayAnLCBzZWNvbmRzVG9SZW5kZXIsICcgdG8gcmVuZGVyJyk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIHRoaXMudWlTZXJ2aWNlLnJlc2V0Q29tcG9uZW50TWFwKCk7XG4gIH1cblxuICBfdHJhY2tCeUluc3RhbmNlSWQoaW5kZXg6IG51bWJlciwgZm9ybUl0ZW06IEZvcm1JdGVtKSB7XG4gICAgcmV0dXJuIGZvcm1JdGVtLmluc3RhbmNlSWQ7XG4gIH1cblxuICAvKiogU3Vic2NyaWJlIGFuZCBlbWl0IGZvcm0gc3RhdHVzIGNoYW5nZXMgZm9yIHRoZSBzdGVwcy4gKi9cbiAgcHJpdmF0ZSBfY2hlY2tBbmRTdWJzY3JpYmVUb0Zvcm1TdGF0dXMoKSB7XG4gICAgLy8gT25seSBzdWJzY3JpYmUgb25jZSBib3RoIHRoZSBzdGVwcyBhbmQgdGhlIGFuZ3VsYXIgaGF2ZSBiZWVuIGluaXRpYWxpemVkXG4gICAgaWYgKHRoaXMubmdGb3JtICYmIHRoaXMuX3N0ZXBzKSB7XG4gICAgICAvLyBVcGRhdGUgZm9ybSBzdGF0dXMgc3Vic2NyaXB0aW9ucyBhbnl0aW1lIHRoZSByZWFkb25seSBpbnB1dCBjaGFuZ2VzXG4gICAgICB0aGlzLnJlYWRvbmx5JC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKS5zdWJzY3JpYmUoKHJlYWRvbmx5KSA9PiB7XG4gICAgICAgIGlmIChyZWFkb25seSkge1xuICAgICAgICAgIC8vIERvbid0IGVtaXQgc3RhdHVzZXMgd2hpbGUgZm9ybSBpcyBpbiByZWFkb25seVxuICAgICAgICAgIHRoaXMuX3Vuc3Vic2NyaWJlRnJvbU5nRm9ybUNoYW5nZXMoKTtcbiAgICAgICAgfSBlbHNlIGlmICghdGhpcy5fbmdGb3JtU3RhdHVzQ2hhbmdlU3ViIHx8IHRoaXMuX25nRm9ybVN0YXR1c0NoYW5nZVN1Yi5jbG9zZWQpIHtcbiAgICAgICAgICAvLyBGb3IgcGVyZm9ybWFuY2UsIHN1YnNjcmliZSBzaG91bGQgb25seSB0cmlnZ2VyIGFnYWluIGlmIHRoZSBzdWJzY3JpcHRpb24gZGlkbid0IHByZXZpb3VzbHkgZXhpc3RcbiAgICAgICAgICB0aGlzLl9lbWl0SW5pdGlhbFN0ZXBzU3RhdHVzQW5kU3Vic2NyaWJlVG9DaGFuZ2VzKCF0aGlzLl9pbml0aWFsU3RhdHVzRW1pdHRlZCk7XG4gICAgICAgICAgdGhpcy5faW5pdGlhbFN0YXR1c0VtaXR0ZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRmluZCBhIGZvcm0gY29udHJvbCB3aXRoIHRoZSBnaXZlbiBuYW1lLCB0aGVuIGVtaXQgaXQncyBzdGF0dXMuXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIOKAlCBUaGUgdW5pcXVlIG5hbWUgb2YgdGhlIGZvcm0gY290cm9sIHRvIGZpbmQgYW5kIGVtaXQgdGhlIHN0YXR1cyBmb3IuXG4gICAqL1xuICBwcml2YXRlIF9lbWl0Rm9ybUNvbnRyb2xTdGF0dXMobmFtZTogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMubmdGb3JtKSB7XG4gICAgICBjb25zdCBjb250cm9sID0gZmluZEZvcm1Db250cm9sKG5hbWUsIHRoaXMubmdGb3JtKTtcbiAgICAgIGlmIChjb250cm9sKSB7XG4gICAgICAgIHRoaXMuc3RhdHVzLmVtaXQoe1xuICAgICAgICAgIGlkOiBuYW1lLFxuICAgICAgICAgIHN0YXR1czogY29udHJvbC5zdGF0dXMgYXMgRm9ybUNvbnRyb2xTdGF0dXMsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gZW1pdEluaXRpYWxWYWx1ZXMgV2hldGhlciB0byBlbWl0IGluaXRpYWwgc3RlcCB2YWx1ZXMgb3IganVzdCBsaXN0ZW4gZm9yIGZ1dHVyZSBjaGFuZ2VzXG4gICAqL1xuICBwcml2YXRlIF9lbWl0SW5pdGlhbFN0ZXBzU3RhdHVzQW5kU3Vic2NyaWJlVG9DaGFuZ2VzKGVtaXRJbml0aWFsVmFsdWVzOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMuX3N0ZXBzICYmIHRoaXMubmdGb3JtKSB7XG4gICAgICB0aGlzLl91bnN1YnNjcmliZUZyb21OZ0Zvcm1DaGFuZ2VzKCk7XG4gICAgICB0aGlzLl9uZ0Zvcm1TdGF0dXNDaGFuZ2VTdWIgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAgIC8vIEZpbmQgdGhlIGZvcm0gY29udHJvbCBmb3IgZWFjaCBzdGVwIGFuZCBvbmx5IHN1YnNjcmliZSB0byB0aG9zZS5cbiAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuX3N0ZXBzKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5fc3RlcHMsIGtleSkpIHtcbiAgICAgICAgICBjb25zdCBjb250cm9sID0gZmluZEZvcm1Db250cm9sKGtleSwgdGhpcy5uZ0Zvcm0pO1xuICAgICAgICAgIGlmIChjb250cm9sKSB7XG4gICAgICAgICAgICBpZiAoZW1pdEluaXRpYWxWYWx1ZXMpIHtcbiAgICAgICAgICAgICAgdGhpcy5zdGF0dXMuZW1pdCh7XG4gICAgICAgICAgICAgICAgaWQ6IGtleSxcbiAgICAgICAgICAgICAgICAvLyBBbmd1bGFyIGludHJvZHVjZWQgdGhpcyBzdGF0dXMgaW4gdjEzLCBvbmNlIHdlIHVwZGF0ZSwgdGhpcyB0eXBlIGNhc3QgY2FuIGJlIHJlbW92ZWQuXG4gICAgICAgICAgICAgICAgc3RhdHVzOiBjb250cm9sLnN0YXR1cyBhcyBGb3JtQ29udHJvbFN0YXR1cyxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBTdWJzY3JpYmUgdG8gc3RhdHVzIGNoYW5nZXMgb2YgZWFjaCBzdGVwICYgZW1pdCBvbiBjaGFuZ2VcbiAgICAgICAgICAgIHRoaXMuX25nRm9ybVN0YXR1c0NoYW5nZVN1Yi5hZGQoXG4gICAgICAgICAgICAgIGNvbnRyb2wuc3RhdHVzQ2hhbmdlc1xuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHN0YXR1cykgPT4gdGhpcy5zdGF0dXMuZW1pdCh7IGlkOiBrZXksIHN0YXR1cyB9KSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE9ic2VydmVzIGlucHV0IGNoYW5nZXMgZm9yIHJlYWRPbmx5LCBpbiBvcmRlciB0byBoYW5kbGUgaW50ZXJuYWwgY2hhbmdlIHN1YnNjcmlwdGlvbnMuXG4gICAqIFdoZW4gdGhlIGZvcm0gaXMgbm90IHJlYWRvbmx5LCB3ZSBzdWJzY3JpYmUgdG8gZm9ybSBzdGF0dXMgJiBmb3JtIGl0ZW0gY2hhbmdlcywgc28gd2UgY2FuIGVtaXQgdGhlbS5cbiAgICogV2hlbiB0aGUgZm9ybSBpcyByZWFkb25seSwgd2UgZG8gbm90IHdhbnQgdG8gZW1pdCBhbnkgY2hhbmdlcywgc28gd2UgdW5zdWJzY3JpYmUuXG4gICAqL1xuICBwcml2YXRlIF9zdWJzY3JpYmVBbmRFbWl0TXRuYUZvcm1DaGFuZ2VzKCkge1xuICAgIHRoaXMucmVhZG9ubHkkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCksXG4gICAgICAgIC8vIHdlIGRvbid0IHdhbnQgdG8gY3JlYXRlIHN1YnNjcmlwdGlvbnMgdW50aWwgd2UgaGF2ZSBhIGZvcm0gdG8gc3Vic2NyaWJlIHRvXG4gICAgICAgIHNraXBXaGlsZSgoKSA9PiAhdGhpcy5tdG5hRm9ybSksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHJlYWRvbmx5KSA9PiB7XG4gICAgICAgIGlmIChyZWFkb25seSkge1xuICAgICAgICAgIHRoaXMuX3Vuc3Vic2NyaWJlRnJvbU10bmFGb3JtQ2hhbmdlcygpO1xuICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLl9tdG5hRm9ybUl0ZW1DaGFuZ2VTdWIgfHwgdGhpcy5fbXRuYUZvcm1JdGVtQ2hhbmdlU3ViLmNsb3NlZCkge1xuICAgICAgICAgIC8vIEZvciBwZXJmb3JtYW5jZSwgc3Vic2NyaWJlIHNob3VsZCBvbmx5IHRyaWdnZXIgYWdhaW4gaWYgb25lIG9mIHRoZSBzdWJzY3JpcHRpb25zIGRpZG4ndCBwcmV2aW91c2x5IGV4aXN0XG4gICAgICAgICAgdGhpcy5fc3Vic2NyaWJlVG9NdG5hRm9ybUl0ZW1DaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlRm9ybVNlcmlhbGl6YXRpb24oZm9ybTogRm9ybSkge1xuICAgIC8vIEdldCB0aGUgcmVnaXN0ZXJlZCBmb3JtIGZyb20gdGhlIHNlcnZpY2UgaWYgaXQgZXhpc3RzXG4gICAgdGhpcy5faGFzUHJldmlvdXNGb3JtID0gdGhpcy5uZ0Zvcm1TZXJ2aWNlLmhhc0Zvcm0oKTtcbiAgICBpZiAodGhpcy5faGFzUHJldmlvdXNGb3JtKSB7XG4gICAgICB0aGlzLm5nRm9ybSA9IHRoaXMubmdGb3JtU2VydmljZS5nZXRGb3JtKCk7XG4gICAgICAvLyBGSVhNRSB0aGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHRoZSBpbml0aWFsIHZpc2libGl0eSBpcyBiYXNlZCBvbiB0aGUgbXRuYUZvcm0gaXRlbSdzIGRpc2FibGUgcHJvcGVydHlcbiAgICAgIC8vIElmIHRoZSB1c2VyIGNoYW5nZXMgYSB2YWx1ZSwgZ29lcyB0byBhbm90aGVyIHRhYiAoZGVzdHJveWluZyBmb3JtKSBhbmQgY29tZXMgYmFjaywgdGhlIGluaXRpYWwgdmFsdWVzIGFyZSBpbmNvcnJlY3RcbiAgICAgIHRoaXMubXRuYUZvcm0gPSB0aGlzLm10bmFGb3JtTWFuYWdlci5pbnNlcnROZXdWYWx1ZXMoZm9ybSwgdGhpcy5uZ0Zvcm1TZXJ2aWNlLmdldEZvcm1WYWx1ZSgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5uZ0Zvcm0gPSB0aGlzLm10bmFGb3JtTWFuYWdlci5zZXJpYWxpemVNdG5hRm9ybUl0ZW0oZm9ybSkgYXMgRm9ybUdyb3VwO1xuICAgICAgdGhpcy5uZ0Zvcm1TZXJ2aWNlLnNldEZvcm0odGhpcy5uZ0Zvcm0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIG9yIHJlbW92ZXMgYSBGb3JtSXRlbSB3aGVuZXZlciBhIG5ldyBNdG5hV2ZGb3JtSXRlbUNoYW5nZSBvY2N1cnMsXG4gICAqIGFuZCBlbWl0cyBhIG5ldyBNdG5hRm9ybS5cbiAgICovXG4gIHByaXZhdGUgX3N1YnNjcmliZVRvTXRuYUZvcm1JdGVtQ2hhbmdlcygpIHtcbiAgICB0aGlzLl91bnN1YnNjcmliZUZyb21NdG5hRm9ybUNoYW5nZXMoKTtcbiAgICB0aGlzLl9tdG5hRm9ybUl0ZW1DaGFuZ2VTdWIgPSB0aGlzLm10bmFGb3JtTWFuYWdlci5mb3JtQ2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpLFxuICAgICAgICBza2lwV2hpbGUoKGNoYW5nZSkgPT4gIWNoYW5nZSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKG5ld0Zvcm06IEZvcm0pID0+IHRoaXMubXRuYUZvcm1DaGFuZ2UuZW1pdChuZXdGb3JtKSk7XG4gIH1cblxuICBwcml2YXRlIF91bnN1YnNjcmliZUZyb21OZ0Zvcm1DaGFuZ2VzKCkge1xuICAgIGlmICghIXRoaXMuX25nRm9ybVN0YXR1c0NoYW5nZVN1YiAmJiAhdGhpcy5fbmdGb3JtU3RhdHVzQ2hhbmdlU3ViLmNsb3NlZCkge1xuICAgICAgdGhpcy5fbmdGb3JtU3RhdHVzQ2hhbmdlU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfdW5zdWJzY3JpYmVGcm9tTXRuYUZvcm1DaGFuZ2VzKCkge1xuICAgIGlmICghIXRoaXMuX210bmFGb3JtSXRlbUNoYW5nZVN1YiAmJiAhdGhpcy5fbXRuYUZvcm1JdGVtQ2hhbmdlU3ViLmNsb3NlZCkge1xuICAgICAgdGhpcy5fbXRuYUZvcm1JdGVtQ2hhbmdlU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG59XG4iLCI8Zm9ybSAqbmdJZj1cIm5nRm9ybVwiIFtmb3JtR3JvdXBdPVwibmdGb3JtXCIgW2Zvcm1EaXNhYmxlZF09XCJyZWFkb25seVwiPlxuICA8bXRuYS13Zi1pdGVtXG4gICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbXRuYUZvcm0/Lml0ZW1zOyBsZXQgaW5kZXggPSBpbmRleDsgdHJhY2tCeTogX3RyYWNrQnlJbnN0YW5jZUlkXCJcbiAgICBbaXRlbV09XCJpdGVtXCJcbiAgICBbY29udHJvbF09XCJuZ0Zvcm0uY29udHJvbHNbaXRlbS5pbnN0YW5jZUlkXVwiXG4gICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICBbcGFyZW50SWRzXT1cImNvbXBvbmVudElkc1wiXG4gICAgW3N0ZXBdPVwiX3N0ZXBzPy5baXRlbS5pbnN0YW5jZUlkXVwiXG4gICAgKGZvY3VzZWRTZWN0aW9uKT1cImZvY3VzZWRTZWN0aW9uLmVtaXQoJGV2ZW50KVwiXG4gID48L210bmEtd2YtaXRlbT5cbjwvZm9ybT5cbiJdfQ==
|