@dsivd/prestations-ng 17.10.9 → 18.0.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2478 -2466
- package/CONTRIBUTING.md +66 -66
- package/ESLINT_MIGRATION_GUIDE.md +19 -33
- package/MODULES.md +88 -88
- package/MULTI_ETAPES.md +9 -9
- package/README.md +25 -24
- package/README_COMMON.md +10 -10
- package/UPGRADING_V12.md +36 -36
- package/UPGRADING_V13.md +3 -3
- package/UPGRADING_V14.md +2 -2
- package/UPGRADING_V15.md +4 -4
- package/UPGRADING_V16.md +38 -38
- package/UPGRADING_V17.md +51 -51
- package/UPGRADING_V18.md +596 -8
- package/UPGRADING_V8.md +5 -5
- package/abstract-page-component.d.ts +1 -1
- package/dsivd-prestations-ng-18.0.0-beta.10.tgz +0 -0
- package/fesm2022/dsivd-prestations-ng.mjs +903 -868
- package/fesm2022/dsivd-prestations-ng.mjs.map +1 -1
- package/foehn-checkables/foehn-checkable-group.component.d.ts +1 -1
- package/foehn-checkables/foehn-checkables.module.d.ts +6 -7
- package/foehn-date-picker/date-picker.helper.d.ts +1 -1
- package/foehn-icons/abstract-icon-component.d.ts +1 -1
- package/foehn-input/foehn-input-string.component.d.ts +1 -1
- package/foehn-input/foehn-input.component.d.ts +1 -1
- package/foehn-menu-prestation/abstract-list-item-detail-page.component.d.ts +1 -1
- package/foehn-menu-prestation/abstract-menu-page.component.d.ts +1 -1
- package/foehn-menu-prestation/abstract-page-from-menu.component.d.ts +1 -1
- package/foehn-navigation/abstract-foehn-navigation.component.d.ts +1 -1
- package/foehn-table/foehn-table.component.d.ts +1 -6
- package/foehn-upload/abstract-foehn-uploader.component.d.ts +1 -2
- package/foehn-upload/foehn-picture-upload/foehn-picture-upload.component.d.ts +1 -3
- package/foehn-upload/foehn-picture-upload/foehn-picture-upload.module.d.ts +1 -1
- package/index.d.ts +1 -1
- package/index.html +1 -1
- package/package.json +15 -17
- package/prestations-ng-core.module.d.ts +5 -4
- package/sdk-appinfo/application-info.service.d.ts +1 -0
- package/sdk-drafts/drafts.module.d.ts +7 -8
- package/sdk-support-alert/support-alert.module.d.ts +2 -3
- package/dsivd-prestations-ng-17.10.9.tgz +0 -0
- package/esm2022/abstract-page-component.mjs +0 -232
- package/esm2022/directives/currency-formatter.directive.mjs +0 -143
- package/esm2022/directives/formatter.module.mjs +0 -37
- package/esm2022/directives/iban-formatter.directive.mjs +0 -29
- package/esm2022/directives/ide-formatter.directive.mjs +0 -37
- package/esm2022/directives/ndc-formatter.directive.mjs +0 -75
- package/esm2022/dsivd-prestations-ng.mjs +0 -5
- package/esm2022/foehn-address/address.type.mjs +0 -10
- package/esm2022/foehn-address/foehn-address.module.mjs +0 -55
- package/esm2022/foehn-address/foehn-display-address.component.mjs +0 -69
- package/esm2022/foehn-address/foehn-input-address.component.mjs +0 -498
- package/esm2022/foehn-address/foehn-input-foreign-locality.component.mjs +0 -66
- package/esm2022/foehn-address/foehn-input-foreign-street.component.mjs +0 -56
- package/esm2022/foehn-agenda/calendar.type.mjs +0 -3
- package/esm2022/foehn-agenda/current-week.type.mjs +0 -4
- package/esm2022/foehn-agenda/day-slots.type.mjs +0 -3
- package/esm2022/foehn-agenda/foehn-agenda-navigation/foehn-agenda-navigation.component.mjs +0 -75
- package/esm2022/foehn-agenda/foehn-agenda-timeslot-panel/foehn-agenda-timeslot-panel.component.mjs +0 -242
- package/esm2022/foehn-agenda/foehn-agenda.component.mjs +0 -95
- package/esm2022/foehn-agenda/foehn-agenda.module.mjs +0 -62
- package/esm2022/foehn-agenda/pagination-week.type.mjs +0 -3
- package/esm2022/foehn-agenda/selected-slot.type.mjs +0 -3
- package/esm2022/foehn-autocomplete/foehn-autocomplete.component.mjs +0 -684
- package/esm2022/foehn-autocomplete/foehn-autocomplete.module.mjs +0 -40
- package/esm2022/foehn-boolean/foehn-boolean-checkbox.component.mjs +0 -28
- package/esm2022/foehn-boolean/foehn-boolean-radio.component.mjs +0 -40
- package/esm2022/foehn-boolean/foehn-boolean.module.mjs +0 -33
- package/esm2022/foehn-breadcrumb/breadcrumb-event.service.mjs +0 -177
- package/esm2022/foehn-breadcrumb/breadcrumb.mjs +0 -5
- package/esm2022/foehn-breadcrumb/foehn-breadcrumb.component.mjs +0 -106
- package/esm2022/foehn-breadcrumb/foehn-breadcrumb.module.mjs +0 -20
- package/esm2022/foehn-checkables/foehn-checkable-group.component.mjs +0 -291
- package/esm2022/foehn-checkables/foehn-checkables.module.mjs +0 -68
- package/esm2022/foehn-checkables/foehn-checkbox.component.mjs +0 -37
- package/esm2022/foehn-checkables/foehn-radio.component.mjs +0 -64
- package/esm2022/foehn-checkables/foehn-select.component.mjs +0 -55
- package/esm2022/foehn-checkables/form-select-option-group.mjs +0 -3
- package/esm2022/foehn-checkables/form-select-option.mjs +0 -3
- package/esm2022/foehn-confirm-modal/foehn-confirm-modal-content.mjs +0 -7
- package/esm2022/foehn-confirm-modal/foehn-confirm-modal.component.mjs +0 -40
- package/esm2022/foehn-confirm-modal/foehn-confirm-modal.module.mjs +0 -19
- package/esm2022/foehn-confirm-modal/foehn-confirm-modal.service.mjs +0 -53
- package/esm2022/foehn-date-picker/date-picker-navigation.helper.mjs +0 -168
- package/esm2022/foehn-date-picker/date-picker.helper.mjs +0 -132
- package/esm2022/foehn-date-picker/day-month.type.mjs +0 -3
- package/esm2022/foehn-date-picker/focused-day.type.mjs +0 -3
- package/esm2022/foehn-date-picker/foehn-date-picker.component.mjs +0 -392
- package/esm2022/foehn-date-picker/foehn-date-picker.module.mjs +0 -40
- package/esm2022/foehn-date-picker/month-year.type.mjs +0 -3
- package/esm2022/foehn-date-picker-button/foehn-date-picker-button.component.mjs +0 -97
- package/esm2022/foehn-date-picker-button/foehn-date-picker-button.module.mjs +0 -36
- package/esm2022/foehn-debug-summary/foehn-debug-summary.component.mjs +0 -84
- package/esm2022/foehn-debug-summary/foehn-debug-summary.component.module.mjs +0 -20
- package/esm2022/foehn-decision-electronique/foehn-decision-electronique.component.mjs +0 -37
- package/esm2022/foehn-decision-electronique/foehn-decision-electronique.module.mjs +0 -32
- package/esm2022/foehn-dropdown-menu/dropdown-menu-group.type.mjs +0 -3
- package/esm2022/foehn-dropdown-menu/dropdown-menu-item.type.mjs +0 -6
- package/esm2022/foehn-dropdown-menu/foehn-dropdown-menu.component.mjs +0 -212
- package/esm2022/foehn-dropdown-menu/foehn-dropdown-menu.module.mjs +0 -21
- package/esm2022/foehn-feedback-notification/foehn-feedback-notification.component.mjs +0 -113
- package/esm2022/foehn-feedback-notification/foehn-feedback-notification.module.mjs +0 -32
- package/esm2022/foehn-feedback-notification/foehn-feedback-notification.type.mjs +0 -3
- package/esm2022/foehn-footer/foehn-footer.component.mjs +0 -130
- package/esm2022/foehn-footer/foehn-footer.module.mjs +0 -19
- package/esm2022/foehn-footer/footer-link.type.mjs +0 -3
- package/esm2022/foehn-form/foehn-form.component.mjs +0 -136
- package/esm2022/foehn-form/foehn-form.module.mjs +0 -32
- package/esm2022/foehn-form/register-ng-model.service.mjs +0 -23
- package/esm2022/foehn-growl/foehn-growl.component.mjs +0 -45
- package/esm2022/foehn-growl/foehn-growl.module.mjs +0 -18
- package/esm2022/foehn-growl/growl-broker.service.mjs +0 -37
- package/esm2022/foehn-growl/growl-message.mjs +0 -9
- package/esm2022/foehn-growl/growl-types.mjs +0 -7
- package/esm2022/foehn-header/foehn-header.component.mjs +0 -159
- package/esm2022/foehn-header/foehn-header.module.mjs +0 -40
- package/esm2022/foehn-header/foehn-skip-link.component.mjs +0 -51
- package/esm2022/foehn-help-modal/foehn-help-modal.component.mjs +0 -44
- package/esm2022/foehn-help-modal/foehn-help-modal.module.mjs +0 -20
- package/esm2022/foehn-help-modal/foehn-help-modal.type.mjs +0 -2
- package/esm2022/foehn-icons/abstract-icon-component.mjs +0 -12
- package/esm2022/foehn-icons/foehn-icon-calendar.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-check-square-o.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-check.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-chevron-down.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-chevron-left.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-chevron-right.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-chevron-up.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-clock.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-comment-dots.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-edit.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-external-link-alt.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-file-pdf.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-info-circle.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-lock.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-map-marker.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-minus-circle.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-pencil.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-plus-circle.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-plus-square.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-search.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-times.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-trash-alt.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-unlock-alt.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-user.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icons.module.mjs +0 -139
- package/esm2022/foehn-input/foehn-input-email.component.mjs +0 -74
- package/esm2022/foehn-input/foehn-input-hidden.component.mjs +0 -54
- package/esm2022/foehn-input/foehn-input-number.component.mjs +0 -319
- package/esm2022/foehn-input/foehn-input-password.component.mjs +0 -51
- package/esm2022/foehn-input/foehn-input-phone.component.mjs +0 -99
- package/esm2022/foehn-input/foehn-input-prefixed-text.component.mjs +0 -116
- package/esm2022/foehn-input/foehn-input-string.component.mjs +0 -27
- package/esm2022/foehn-input/foehn-input-text.component.mjs +0 -69
- package/esm2022/foehn-input/foehn-input-textarea.component.mjs +0 -97
- package/esm2022/foehn-input/foehn-input.component.mjs +0 -418
- package/esm2022/foehn-input/foehn-input.module.mjs +0 -98
- package/esm2022/foehn-input/pattern.const.mjs +0 -16
- package/esm2022/foehn-input-date/foehn-input-date.component.mjs +0 -163
- package/esm2022/foehn-input-date-time/foehn-input-date-time.component.mjs +0 -201
- package/esm2022/foehn-input-time/foehn-input-time.component.mjs +0 -89
- package/esm2022/foehn-list/foehn-list.component.mjs +0 -127
- package/esm2022/foehn-list/foehn-list.module.mjs +0 -19
- package/esm2022/foehn-list/page-change-event.mjs +0 -3
- package/esm2022/foehn-menu-prestation/abstract-list-item-detail-page.component.mjs +0 -122
- package/esm2022/foehn-menu-prestation/abstract-menu-page.component.mjs +0 -31
- package/esm2022/foehn-menu-prestation/abstract-page-from-menu.component.mjs +0 -87
- package/esm2022/foehn-menu-prestation/foehn-error-pill/foehn-error-pill.component.mjs +0 -25
- package/esm2022/foehn-menu-prestation/foehn-list-summary/foehn-list-item-description.mjs +0 -2
- package/esm2022/foehn-menu-prestation/foehn-list-summary/foehn-list-item.mjs +0 -3
- package/esm2022/foehn-menu-prestation/foehn-list-summary/foehn-list-summary.component.mjs +0 -161
- package/esm2022/foehn-menu-prestation/foehn-menu-items/foehn-menu-item/foehn-menu-item.component.mjs +0 -38
- package/esm2022/foehn-menu-prestation/foehn-menu-items/foehn-menu-item-transmit/foehn-menu-item-transmit.component.mjs +0 -58
- package/esm2022/foehn-menu-prestation/foehn-menu-prestation.module.mjs +0 -67
- package/esm2022/foehn-misc/foehn-abbr.component.mjs +0 -15
- package/esm2022/foehn-misc/foehn-misc.module.mjs +0 -17
- package/esm2022/foehn-modal/foehn-modal.component.mjs +0 -94
- package/esm2022/foehn-modal/foehn-modal.module.mjs +0 -21
- package/esm2022/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.component.mjs +0 -287
- package/esm2022/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.module.mjs +0 -40
- package/esm2022/foehn-nav13/foehn-input-nav13.component.mjs +0 -114
- package/esm2022/foehn-nav13/foehn-input-nav13.module.mjs +0 -32
- package/esm2022/foehn-navigation/abstract-foehn-navigation.component.mjs +0 -55
- package/esm2022/foehn-navigation/foehn-navigation/foehn-navigation.component.mjs +0 -67
- package/esm2022/foehn-navigation/foehn-navigation.module.mjs +0 -37
- package/esm2022/foehn-navigation/foehn-navigation.service.mjs +0 -322
- package/esm2022/foehn-navigation/foehn-simple-navigation/foehn-simple-navigation.component.mjs +0 -26
- package/esm2022/foehn-notfound/foehn-notfound.component.mjs +0 -61
- package/esm2022/foehn-notfound/foehn-notfound.module.mjs +0 -20
- package/esm2022/foehn-page/foehn-page-counter.component.mjs +0 -31
- package/esm2022/foehn-page/foehn-page-expiration-timer/current-session-expiration.mjs +0 -3
- package/esm2022/foehn-page/foehn-page-expiration-timer/demande-expiration-interceptor.mjs +0 -68
- package/esm2022/foehn-page/foehn-page-expiration-timer/demande-expiration.service.mjs +0 -53
- package/esm2022/foehn-page/foehn-page-expiration-timer/foehn-page-expiration-timer.component.mjs +0 -175
- package/esm2022/foehn-page/foehn-page-expiration-timer/interval.helper.mjs +0 -29
- package/esm2022/foehn-page/foehn-page-modal.component.mjs +0 -54
- package/esm2022/foehn-page/foehn-page-modal.service.mjs +0 -38
- package/esm2022/foehn-page/foehn-page.component.mjs +0 -223
- package/esm2022/foehn-page/foehn-page.module.mjs +0 -101
- package/esm2022/foehn-page/foehn-page.service.mjs +0 -54
- package/esm2022/foehn-page/foehn-transmit-waiting-modal/demande-transmit-interceptor.mjs +0 -52
- package/esm2022/foehn-page/foehn-transmit-waiting-modal/foehn-transmit-waiting-modal.component.mjs +0 -23
- package/esm2022/foehn-page/foehn-transmit-waiting-modal/foehn-transmit-waiting-modal.service.mjs +0 -32
- package/esm2022/foehn-recap-section/foehn-recap-section.component.mjs +0 -98
- package/esm2022/foehn-recap-section/foehn-recap-section.module.mjs +0 -20
- package/esm2022/foehn-recap-section/foehn-recap-section.type.mjs +0 -2
- package/esm2022/foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.component.mjs +0 -50
- package/esm2022/foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.module.mjs +0 -18
- package/esm2022/foehn-status-progress-bar/foehn-status-progress-bar.component.mjs +0 -56
- package/esm2022/foehn-status-progress-bar/foehn-status-progress-bar.module.mjs +0 -20
- package/esm2022/foehn-table/foehn-table-column-configuration.mjs +0 -3
- package/esm2022/foehn-table/foehn-table-page-change-event.mjs +0 -3
- package/esm2022/foehn-table/foehn-table.component.mjs +0 -190
- package/esm2022/foehn-table/foehn-table.module.mjs +0 -40
- package/esm2022/foehn-table/row-element.type.mjs +0 -3
- package/esm2022/foehn-table/tableSort.mjs +0 -3
- package/esm2022/foehn-upload/abstract-foehn-uploader.component.mjs +0 -242
- package/esm2022/foehn-upload/document-reference.mjs +0 -6
- package/esm2022/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.service.mjs +0 -116
- package/esm2022/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.type.mjs +0 -6
- package/esm2022/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.component.mjs +0 -199
- package/esm2022/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.module.mjs +0 -40
- package/esm2022/foehn-upload/foehn-multi-upload/foehn-multi-upload.component.mjs +0 -250
- package/esm2022/foehn-upload/foehn-multi-upload/foehn-multi-upload.module.mjs +0 -40
- package/esm2022/foehn-upload/foehn-multi-upload/multi-upload.service.mjs +0 -125
- package/esm2022/foehn-upload/foehn-multi-upload/multi-upload.type.mjs +0 -6
- package/esm2022/foehn-upload/foehn-multi-upload/pending-upload.service.mjs +0 -163
- package/esm2022/foehn-upload/foehn-picture-upload/foehn-picture-upload.component.mjs +0 -178
- package/esm2022/foehn-upload/foehn-picture-upload/foehn-picture-upload.module.mjs +0 -44
- package/esm2022/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.component.mjs +0 -83
- package/esm2022/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.module.mjs +0 -21
- package/esm2022/foehn-upload/foehn-upload-progress-bar/upload-progress.service.mjs +0 -66
- package/esm2022/foehn-upload/foehn-upload-progress-bar/upload-progress.type.mjs +0 -7
- package/esm2022/foehn-upload/page-upload-limit.service.mjs +0 -80
- package/esm2022/foehn-upload/pending-upload.type.mjs +0 -3
- package/esm2022/foehn-upload/uploader.helper.mjs +0 -329
- package/esm2022/foehn-user-connected-as/foehn-user-connected-as.component.mjs +0 -21
- package/esm2022/foehn-user-connected-as/foehn-user-connected-as.module.mjs +0 -19
- package/esm2022/foehn-validation-alert-summary/foehn-validation-alert-summary.component.mjs +0 -96
- package/esm2022/foehn-validation-alert-summary/foehn-validation-alert-summary.module.mjs +0 -19
- package/esm2022/foehn-validation-alerts/foehn-validation-alerts.component.mjs +0 -29
- package/esm2022/foehn-validation-alerts/foehn-validation-alerts.module.mjs +0 -18
- package/esm2022/form-error.mjs +0 -2
- package/esm2022/form-post-response.mjs +0 -10
- package/esm2022/gesdem/gesdem-error-handler.service.mjs +0 -85
- package/esm2022/gesdem/gesdem-event.service.mjs +0 -38
- package/esm2022/gesdem/gesdem-handler.service.mjs +0 -201
- package/esm2022/gesdem/gesdem-loader.guard.mjs +0 -25
- package/esm2022/gesdem/gesdem-statut-utils.mjs +0 -25
- package/esm2022/gesdem-action-recovery/gesdem-action-recovery-login/gesdem-action-recovery-login.component.mjs +0 -170
- package/esm2022/gesdem-action-recovery/gesdem-action-recovery-registration/gesdem-action-recovery-registration.component.mjs +0 -227
- package/esm2022/gesdem-action-recovery/gesdem-action-recovery.module.mjs +0 -62
- package/esm2022/gesdem-action-recovery/gesdem-action-recovery.service.mjs +0 -97
- package/esm2022/gesdem-action-recovery/reprise-info.mjs +0 -4
- package/esm2022/gesdem-confirmation/gesdem-confirmation.component.mjs +0 -241
- package/esm2022/gesdem-confirmation/gesdem-confirmation.module.mjs +0 -36
- package/esm2022/gesdem-error/gesdem-error.component.mjs +0 -96
- package/esm2022/gesdem-error/gesdem-error.module.mjs +0 -36
- package/esm2022/global.const.mjs +0 -5
- package/esm2022/helpers/demande.helper.mjs +0 -19
- package/esm2022/helpers/object.helper.mjs +0 -124
- package/esm2022/i18n-form.mjs +0 -7
- package/esm2022/pipes/currency.pipe.mjs +0 -18
- package/esm2022/pipes/date.pipe.mjs +0 -43
- package/esm2022/pipes/formatIde.pipe.mjs +0 -22
- package/esm2022/pipes/pipes.module.mjs +0 -18
- package/esm2022/prestations-ng-core.module.mjs +0 -31
- package/esm2022/public_api.mjs +0 -288
- package/esm2022/refinf/model/address-type-light.mjs +0 -3
- package/esm2022/refinf/model/canton.mjs +0 -3
- package/esm2022/refinf/model/district.mjs +0 -3
- package/esm2022/refinf/model/municipality.mjs +0 -3
- package/esm2022/refinf/model/place-of-origin.mjs +0 -3
- package/esm2022/refinf/model/postal-locality.mjs +0 -3
- package/esm2022/sdk-appinfo/application-info.mjs +0 -22
- package/esm2022/sdk-appinfo/application-info.service.mjs +0 -146
- package/esm2022/sdk-currency/currency.helper.mjs +0 -34
- package/esm2022/sdk-date/date.helper.mjs +0 -109
- package/esm2022/sdk-dictionary/default-dictionary.mjs +0 -312
- package/esm2022/sdk-dictionary/sdk-dictionary.module.mjs +0 -16
- package/esm2022/sdk-dictionary/sdk-dictionary.pipe.mjs +0 -28
- package/esm2022/sdk-dictionary/sdk-dictionary.service.mjs +0 -122
- package/esm2022/sdk-drafts/draft.model.mjs +0 -2
- package/esm2022/sdk-drafts/drafts-container.component.mjs +0 -99
- package/esm2022/sdk-drafts/drafts.module.mjs +0 -47
- package/esm2022/sdk-drafts/drafts.service.mjs +0 -51
- package/esm2022/sdk-epayment/model/EPaymentParameters.mjs +0 -2
- package/esm2022/sdk-epayment/pending-payment/pending-payment.component.mjs +0 -24
- package/esm2022/sdk-epayment/sdk-epayment.component.mjs +0 -76
- package/esm2022/sdk-epayment/sdk-epayment.module.mjs +0 -23
- package/esm2022/sdk-epayment/sdk-epayment.service.mjs +0 -51
- package/esm2022/sdk-events-logger/sdk-event-type.mjs +0 -14
- package/esm2022/sdk-events-logger/sdk-event.mjs +0 -3
- package/esm2022/sdk-events-logger/sdk-events-logger.service.mjs +0 -43
- package/esm2022/sdk-recaptcha/grecaptcha/grecaptcha.component.mjs +0 -113
- package/esm2022/sdk-recaptcha/recaptcha.service.mjs +0 -180
- package/esm2022/sdk-recaptcha/sdk-recaptcha.component.mjs +0 -75
- package/esm2022/sdk-recaptcha/sdk-recaptcha.module.mjs +0 -19
- package/esm2022/sdk-redirect/iam-expired-interceptor.service.mjs +0 -62
- package/esm2022/sdk-redirect/redirect.component.mjs +0 -55
- package/esm2022/sdk-redirect/sdk-redirect.module.mjs +0 -19
- package/esm2022/sdk-session-info/session-info-data.mjs +0 -6
- package/esm2022/sdk-session-info/session-info-with-application.service.mjs +0 -68
- package/esm2022/sdk-session-info/session-info.service.mjs +0 -50
- package/esm2022/sdk-statistics/sdk-statistics.service.mjs +0 -74
- package/esm2022/sdk-support-alert/support-alert-container.component.mjs +0 -49
- package/esm2022/sdk-support-alert/support-alert.component.mjs +0 -32
- package/esm2022/sdk-support-alert/support-alert.model.mjs +0 -7
- package/esm2022/sdk-support-alert/support-alert.module.mjs +0 -21
- package/esm2022/sdk-support-alert/support-alert.service.mjs +0 -139
- package/esm2022/service-locator.mjs +0 -4
- package/esm2022/supported-browser.mjs +0 -2
- package/esm2022/validation/validation-handler.service.mjs +0 -44
- /package/{public_api.d.ts → public-api.d.ts} +0 -0
|
@@ -1,250 +0,0 @@
|
|
|
1
|
-
import { Component, forwardRef, Input } from '@angular/core';
|
|
2
|
-
import { EMPTY } from 'rxjs';
|
|
3
|
-
import { catchError, filter, mergeMap, tap, throttleTime } from 'rxjs/operators';
|
|
4
|
-
import { FoehnInputComponent } from '../../foehn-input/foehn-input.component';
|
|
5
|
-
import { AbstractFoehnUploaderComponent } from '../abstract-foehn-uploader.component';
|
|
6
|
-
import { UploadProgressService } from '../foehn-upload-progress-bar/upload-progress.service';
|
|
7
|
-
import { MultiUploadService } from './multi-upload.service';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "./multi-upload.service";
|
|
10
|
-
import * as i2 from "./pending-upload.service";
|
|
11
|
-
import * as i3 from "../../sdk-appinfo/application-info.service";
|
|
12
|
-
import * as i4 from "../../foehn-confirm-modal/foehn-confirm-modal.service";
|
|
13
|
-
import * as i5 from "../../sdk-dictionary/sdk-dictionary.service";
|
|
14
|
-
import * as i6 from "../../foehn-growl/growl-broker.service";
|
|
15
|
-
import * as i7 from "../page-upload-limit.service";
|
|
16
|
-
import * as i8 from "@angular/common";
|
|
17
|
-
import * as i9 from "../../foehn-icons/foehn-icon-times.component";
|
|
18
|
-
import * as i10 from "../../foehn-validation-alerts/foehn-validation-alerts.component";
|
|
19
|
-
import * as i11 from "@angular/forms";
|
|
20
|
-
import * as i12 from "../foehn-upload-progress-bar/foehn-upload-progress-bar.component";
|
|
21
|
-
import * as i13 from "../../sdk-dictionary/sdk-dictionary.pipe";
|
|
22
|
-
export class FoehnMultiUploadComponent extends AbstractFoehnUploaderComponent {
|
|
23
|
-
constructor(multiUploadService, pendingUploadService, applicationInfoService, confirmModalService, dictionaryService, growlService, pageUploadLimitService) {
|
|
24
|
-
super(applicationInfoService, confirmModalService, dictionaryService, growlService);
|
|
25
|
-
this.applicationInfoService = applicationInfoService;
|
|
26
|
-
this.confirmModalService = confirmModalService;
|
|
27
|
-
this.dictionaryService = dictionaryService;
|
|
28
|
-
this.growlService = growlService;
|
|
29
|
-
this.pageUploadLimitService = pageUploadLimitService;
|
|
30
|
-
this.url = 'api/document';
|
|
31
|
-
this.pendingUploadService = pendingUploadService;
|
|
32
|
-
this.multiUploadService = multiUploadService;
|
|
33
|
-
}
|
|
34
|
-
get pendingFiles() {
|
|
35
|
-
return this.pendingUploadService.getPendingFiles(this.name);
|
|
36
|
-
}
|
|
37
|
-
get addedFiles() {
|
|
38
|
-
if (this.pendingUploadService.hasPendingFiles(this.name)) {
|
|
39
|
-
return this.pendingFiles;
|
|
40
|
-
}
|
|
41
|
-
return !!this.model ? this.model.filter(e => !e.readonly) : [];
|
|
42
|
-
}
|
|
43
|
-
ngOnInit() {
|
|
44
|
-
super.ngOnInit();
|
|
45
|
-
this.pageUploadLimitService.registerUploader(this);
|
|
46
|
-
this.pendingUploadedErrorsSubscription =
|
|
47
|
-
// eslint-disable-next-line rxjs-angular/prefer-async-pipe
|
|
48
|
-
this.pendingUploadService.pendingUploadedErrors.subscribe((response) => {
|
|
49
|
-
this.displayPendingUploadedErrorsFromServerByFormKey(response.errors, this.name);
|
|
50
|
-
});
|
|
51
|
-
// Add files logic
|
|
52
|
-
this.uploadFilesSubscription = this.uploadFilesSubject
|
|
53
|
-
.pipe(filter(files => !!files &&
|
|
54
|
-
!this.isMaxSelectionReached(files) &&
|
|
55
|
-
this.pageUploadLimitService.canUploadMoreFiles(files)),
|
|
56
|
-
// Only one call every 300ms to stop concurrent access
|
|
57
|
-
throttleTime(300),
|
|
58
|
-
// Only one concurrent call at the time
|
|
59
|
-
mergeMap(files => this.multiUploadService.uploadDocuments(this.url, this.name, this.label, files, this.key, this.multiple, this.currentLanguage, this.shouldDisplayFileSavedConfirmation), 1), catchError((error) => {
|
|
60
|
-
const errors = [];
|
|
61
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
62
|
-
const { status } = error;
|
|
63
|
-
this.uploaderHelper.addCustomErrorOrDefault(this.name, errors, `${status}`, '', this.customErrors, this.overrideAcceptedExtensions, this.overrideMaxFileNameLength, this.overrideIllegalCharacters);
|
|
64
|
-
this.refreshErrors([errors, true]);
|
|
65
|
-
return EMPTY;
|
|
66
|
-
}))
|
|
67
|
-
// eslint-disable-next-line rxjs-angular/prefer-async-pipe
|
|
68
|
-
.subscribe(({ documents, errors }) => {
|
|
69
|
-
this.displayResultFromServer(documents, errors);
|
|
70
|
-
});
|
|
71
|
-
// Delete document logic
|
|
72
|
-
this.deleteDocumentSubscription = this.deleteDocumentSubject
|
|
73
|
-
.pipe(filter(document => !!document),
|
|
74
|
-
// Only one call every 300 ms to stop concurrent access
|
|
75
|
-
throttleTime(300),
|
|
76
|
-
// Only one concurrent call at the time
|
|
77
|
-
mergeMap(document => this.multiUploadService.deleteDocument(this.url, document), 1),
|
|
78
|
-
// Side effect once the document has been deleted.
|
|
79
|
-
tap(document => this.removeDocumentFromModel(document)))
|
|
80
|
-
// eslint-disable-next-line rxjs-angular/prefer-async-pipe
|
|
81
|
-
.subscribe();
|
|
82
|
-
}
|
|
83
|
-
ngOnDestroy() {
|
|
84
|
-
super.ngOnDestroy();
|
|
85
|
-
if (!!this.pendingUploadedErrorsSubscription) {
|
|
86
|
-
this.pendingUploadedErrorsSubscription.unsubscribe();
|
|
87
|
-
}
|
|
88
|
-
this.pageUploadLimitService.unregisterUploader(this);
|
|
89
|
-
}
|
|
90
|
-
trackByPending(index, pending) {
|
|
91
|
-
return pending.lastModified;
|
|
92
|
-
}
|
|
93
|
-
getTotalFilesSize() {
|
|
94
|
-
return this.model
|
|
95
|
-
.filter(e => !e.readonly)
|
|
96
|
-
.map(e => e.fileSize)
|
|
97
|
-
.reduce((partialSum, a) => partialSum + a, 0);
|
|
98
|
-
}
|
|
99
|
-
canAddMoreFiles() {
|
|
100
|
-
if (this.readonly) {
|
|
101
|
-
return false;
|
|
102
|
-
}
|
|
103
|
-
if (this.multiple) {
|
|
104
|
-
return true;
|
|
105
|
-
}
|
|
106
|
-
if (this.model && !!this.model.filter(e => !e.readonly).length) {
|
|
107
|
-
return false;
|
|
108
|
-
}
|
|
109
|
-
return !this.pendingUploadService.hasPendingFiles(this.name);
|
|
110
|
-
}
|
|
111
|
-
onFileChange(event) {
|
|
112
|
-
// PRESTAKIT-309: Mark as pristine so errors can be shown directly to user when uploading file
|
|
113
|
-
this.markAsPristine();
|
|
114
|
-
const target = event.target;
|
|
115
|
-
this.populateFileItemList(target.files);
|
|
116
|
-
target.value = null; // reset hidden file input values
|
|
117
|
-
}
|
|
118
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
119
|
-
onDrop(event) {
|
|
120
|
-
this.uploaderHelper.preventAndStop(event);
|
|
121
|
-
if (this.dragAndDrop) {
|
|
122
|
-
const fileList = this.uploaderHelper.getTransfer(event);
|
|
123
|
-
if (fileList) {
|
|
124
|
-
this.populateFileItemList(fileList);
|
|
125
|
-
}
|
|
126
|
-
this.showDropZone = false;
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
130
|
-
removeFileOnConfirmation(document) {
|
|
131
|
-
if (!!this.reference) {
|
|
132
|
-
super.removeFileOnConfirmation(document);
|
|
133
|
-
}
|
|
134
|
-
else {
|
|
135
|
-
// The document hasn't been uploaded.
|
|
136
|
-
this.pendingUploadService.removePendingFile(document, this.name);
|
|
137
|
-
this.markAsDirty();
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
populateFileItemList(fileList) {
|
|
141
|
-
let files = Array.from(fileList);
|
|
142
|
-
if (!files.length ||
|
|
143
|
-
this.isMaxFilesCountReached(files) ||
|
|
144
|
-
this.isMaxFilesSizeReached(files)) {
|
|
145
|
-
return;
|
|
146
|
-
}
|
|
147
|
-
// When drag/drop and asked for single upload, we ensure we store only one file for upload
|
|
148
|
-
if (this.dragAndDrop && !this.multiple) {
|
|
149
|
-
files = this.manageSingleFile(files);
|
|
150
|
-
}
|
|
151
|
-
// Display local errors and stop processing
|
|
152
|
-
const filesErrors = this.displayLocalErrors(files);
|
|
153
|
-
if (filesErrors.length) {
|
|
154
|
-
return;
|
|
155
|
-
}
|
|
156
|
-
// Initialize model if empty
|
|
157
|
-
if (!this.model || !this.model.length) {
|
|
158
|
-
this.model = [];
|
|
159
|
-
}
|
|
160
|
-
if (!!this.reference) {
|
|
161
|
-
// When we have a reference, we send files to server
|
|
162
|
-
this.uploadFilesSubject.next(files);
|
|
163
|
-
}
|
|
164
|
-
else {
|
|
165
|
-
// PRESTAKIT-309: Simulate user interaction with component
|
|
166
|
-
// only when no error so isPristine is set to false for validation purpose
|
|
167
|
-
this.markAsDirty();
|
|
168
|
-
// Otherwise, we store files in pending storage
|
|
169
|
-
this.pendingUploadService.addPendingFiles(this.url, this.name, this.label, files, this.key, this.multiple, this.shouldDisplayFileSavedConfirmation);
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
displayPendingUploadedErrorsFromServerByFormKey(errors, formKey) {
|
|
173
|
-
const errorsByFormKey = errors.filter((error) => error.formKey === formKey);
|
|
174
|
-
this.displayErrorsFromServer(errorsByFormKey);
|
|
175
|
-
}
|
|
176
|
-
displayResultFromServer(documents, errors) {
|
|
177
|
-
this.displayErrorsFromServer(errors);
|
|
178
|
-
this.model = [...this.model, ...(documents || [])];
|
|
179
|
-
this.triggerUserInput(this.model);
|
|
180
|
-
}
|
|
181
|
-
removeDocumentFromModel(document) {
|
|
182
|
-
const index = this.model.indexOf(document);
|
|
183
|
-
if (index > -1) {
|
|
184
|
-
this.model.splice(index, 1);
|
|
185
|
-
this.model = [...this.model];
|
|
186
|
-
this.triggerUserInput(this.model);
|
|
187
|
-
this.markAsDirty();
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
displayErrorsFromServer(errors) {
|
|
191
|
-
if (!errors || !errors.length) {
|
|
192
|
-
// PRESTAKIT-309: Simulate user interaction with component
|
|
193
|
-
// only when no error so isPristine is set to false for validation purpose
|
|
194
|
-
this.markAsDirty();
|
|
195
|
-
return;
|
|
196
|
-
}
|
|
197
|
-
const newErrors = [];
|
|
198
|
-
errors.forEach(error => this.uploaderHelper.addCustomErrorOrDefault(this.name, newErrors, `${error.errorCode}`, error.label, this.customErrors, this.overrideAcceptedExtensions, this.overrideMaxFileNameLength, this.overrideIllegalCharacters));
|
|
199
|
-
this.refreshErrors([newErrors, true]);
|
|
200
|
-
}
|
|
201
|
-
manageSingleFile(files) {
|
|
202
|
-
// Edge browser lets you drop files from dialog box when selecting a file.
|
|
203
|
-
// We need to make sure we only keep last selected file from user
|
|
204
|
-
if (!!this.reference) {
|
|
205
|
-
if (this.model && this.model.length > 0) {
|
|
206
|
-
const currentModelFiles = [
|
|
207
|
-
...this.model.filter(e => !e.readonly)
|
|
208
|
-
];
|
|
209
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
210
|
-
currentModelFiles.forEach((doc) => this.removeFileOnConfirmation(doc));
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
else {
|
|
214
|
-
const currentPendingFiles = [...this.pendingFiles];
|
|
215
|
-
if (currentPendingFiles.length > 0) {
|
|
216
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
217
|
-
currentPendingFiles.forEach((doc) => this.removeFileOnConfirmation(doc));
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
// Then we ensure we take only one file from current selection
|
|
221
|
-
return files.slice(0, 1);
|
|
222
|
-
}
|
|
223
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FoehnMultiUploadComponent, deps: [{ token: i1.MultiUploadService }, { token: i2.PendingUploadService }, { token: i3.ApplicationInfoService }, { token: i4.FoehnConfirmModalService }, { token: i5.SdkDictionaryService }, { token: i6.GrowlBrokerService }, { token: i7.PageUploadLimitService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
224
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FoehnMultiUploadComponent, selector: "foehn-multi-upload", inputs: { url: "url", reference: "reference" }, providers: [
|
|
225
|
-
{
|
|
226
|
-
provide: FoehnInputComponent,
|
|
227
|
-
useExisting: forwardRef(() => FoehnMultiUploadComponent),
|
|
228
|
-
multi: true
|
|
229
|
-
},
|
|
230
|
-
{ provide: MultiUploadService, useClass: MultiUploadService },
|
|
231
|
-
{ provide: UploadProgressService, useClass: UploadProgressService }
|
|
232
|
-
], usesInheritance: true, ngImport: i0, template: "<div\n class=\"form-group container-box\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [class.drop-zone-highlight]=\"showDropZone\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n (drop)=\"onDrop($event)\"\n (dragenter)=\"onDragenter($event)\"\n (dragleave)=\"onDragleave($event)\"\n (dragover)=\"onDragover($event)\"\n #fallBackTrigger\n>\n <label\n class=\"form-label\"\n [attr.for]=\"buildChildId()\"\n *ngIf=\"!!label\"\n [ngClass]=\"isLabelSrOnly ? 'visually-hidden' : labelStyleModifier\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </label>\n\n <foehn-validation-alerts\n [component]=\"this\"\n [shouldErrorsBeLive]=\"hasLiveUploadErrors()\"\n ></foehn-validation-alerts>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <!-- PRESTAKIT-309: Fake input with NgModel to be registered into Form controls -->\n <input type=\"hidden\" [name]=\"name || label\" [ngModel]=\"model\" />\n\n <ng-content></ng-content>\n\n <ng-container *ngIf=\"reference\">\n <div\n *ngFor=\"let document of model; trackBy: trackByDocument\"\n class=\"file file-uploaded\"\n >\n <!-- prettier-ignore -->\n <a [href]=\"multiUploadService.getDownloadUrl(url, document)\">{{ document.filename }}</a>\n <span class=\"ms-1 me-1\">\n ({{ toMegaOctets(document.fileSize) }}\n <abbr\n [title]=\"\n 'foehn-uploader.abbr-megaoctet-title' | fromDictionary\n \"\n >\n {{ 'foehn-uploader.abbr-megaoctet' | fromDictionary }}\n </abbr>\n )\n </span>\n <button\n *ngIf=\"!readonly && !document.readonly\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n type=\"button\"\n class=\"btn btn-link icon-button delete-uploaded\"\n (click)=\"removeFile(document)\"\n >\n <foehn-icon-times\n [title]=\"\n 'foehn-uploader.delete-icon-title'\n | fromDictionary: { docName: document.filename }\n \"\n ></foehn-icon-times>\n </button>\n </div>\n\n <small\n class=\"form-text text-secondary uploaded-global-info\"\n *ngIf=\"showGlobalInfos(model)\"\n [innerHTML]=\"getGlobalInfos(model)\"\n ></small>\n </ng-container>\n\n <ng-container *ngIf=\"!reference\">\n <div\n *ngFor=\"let pending of pendingFiles; trackBy: trackByPending\"\n class=\"file file-pending\"\n >\n <span>{{ pending.name }}</span>\n <span class=\"ms-1 me-1\">\n ({{ toMegaOctets(pending.size) }}\n <abbr\n [title]=\"\n 'foehn-uploader.abbr-megaoctet-title' | fromDictionary\n \"\n >\n {{ 'foehn-uploader.abbr-megaoctet' | fromDictionary }}\n </abbr>\n )\n </span>\n <button\n *ngIf=\"!readonly\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n type=\"button\"\n class=\"btn btn-link icon-button delete-pending\"\n (click)=\"removeFile(pending)\"\n >\n <foehn-icon-times\n [title]=\"\n 'foehn-uploader.delete-icon-title'\n | fromDictionary: { docName: pending.name }\n \"\n ></foehn-icon-times>\n </button>\n </div>\n\n <small\n class=\"form-text text-secondary pending-global-info\"\n *ngIf=\"showGlobalInfos(pendingFiles)\"\n [innerHTML]=\"getGlobalInfos(pendingFiles)\"\n ></small>\n </ng-container>\n\n <ng-container *ngIf=\"canAddMoreFiles()\">\n <input\n class=\"form-control actual-input\"\n type=\"file\"\n [name]=\"name || label\"\n [multiple]=\"multiple\"\n [attr.accept]=\"\n overrideAcceptedExtensions\n ? overrideAcceptedExtensions\n : uploaderHelper.accept\n ? uploaderHelper.accept\n : null\n \"\n (change)=\"onFileChange($event)\"\n #inputFile\n />\n\n <button\n type=\"button\"\n class=\"btn btn-primary\"\n [ngClass]=\"{ 'visually-hidden': !showUploadButton }\"\n [attr.id]=\"buildChildId()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-describedby]=\"buildId('ErrorsContainer')\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n (click)=\"inputFile.click()\"\n #entryComponent\n >\n {{ multiple ? chooseButtonLabelMultiple : chooseButtonLabel }}\n </button>\n\n <div\n *ngIf=\"dragAndDrop && !disabled\"\n aria-hidden=\"true\"\n class=\"dropfile\"\n [class.dropfile-border-transparent]=\"showDropZone\"\n (click)=\"inputFile.click()\"\n >\n {{ multiple ? dropZoneLabelMultiple : dropZoneLabel }}\n </div>\n </ng-container>\n\n <foehn-upload-progress-bar\n *ngIf=\"reference\"\n [progressBarTriggerHtmlElement]=\"\n inputElement?.nativeElement || fallBackTrigger\n \"\n ></foehn-upload-progress-bar>\n</div>\n", styles: [".dropfile{width:300px;border:3px dashed #bbb;text-align:center;margin-top:10px;cursor:pointer;padding:15px 3px}.dropfile-border-transparent{border-color:#fff}.actual-input{display:none}.file-list{margin-top:20px}.icon-button{border:0}.icon-button:hover{cursor:pointer}:host ::ng-deep .svg-inline--fa{color:#000!important}.drop-zone-highlight{outline:3px dashed #bbb}.container-box{border:1px solid #ededed;background-color:#fbfbfb;padding:.5rem}.container-box.vd-form-group-danger{border-left:5px solid var(--vd-danger);padding-left:1rem}\n"], dependencies: [{ kind: "directive", type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i9.FoehnIconTimesComponent, selector: "foehn-icon-times" }, { kind: "component", type: i10.FoehnValidationAlertsComponent, selector: "foehn-validation-alerts", inputs: ["component", "shouldErrorsBeLive"] }, { kind: "directive", type: i11.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i11.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i11.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i12.FoehnUploadProgressBarComponent, selector: "foehn-upload-progress-bar", inputs: ["progressBarTriggerHtmlElement"] }, { kind: "pipe", type: i13.SdkDictionaryPipe, name: "fromDictionary" }] }); }
|
|
233
|
-
}
|
|
234
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FoehnMultiUploadComponent, decorators: [{
|
|
235
|
-
type: Component,
|
|
236
|
-
args: [{ selector: 'foehn-multi-upload', providers: [
|
|
237
|
-
{
|
|
238
|
-
provide: FoehnInputComponent,
|
|
239
|
-
useExisting: forwardRef(() => FoehnMultiUploadComponent),
|
|
240
|
-
multi: true
|
|
241
|
-
},
|
|
242
|
-
{ provide: MultiUploadService, useClass: MultiUploadService },
|
|
243
|
-
{ provide: UploadProgressService, useClass: UploadProgressService }
|
|
244
|
-
], template: "<div\n class=\"form-group container-box\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [class.drop-zone-highlight]=\"showDropZone\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n (drop)=\"onDrop($event)\"\n (dragenter)=\"onDragenter($event)\"\n (dragleave)=\"onDragleave($event)\"\n (dragover)=\"onDragover($event)\"\n #fallBackTrigger\n>\n <label\n class=\"form-label\"\n [attr.for]=\"buildChildId()\"\n *ngIf=\"!!label\"\n [ngClass]=\"isLabelSrOnly ? 'visually-hidden' : labelStyleModifier\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </label>\n\n <foehn-validation-alerts\n [component]=\"this\"\n [shouldErrorsBeLive]=\"hasLiveUploadErrors()\"\n ></foehn-validation-alerts>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <!-- PRESTAKIT-309: Fake input with NgModel to be registered into Form controls -->\n <input type=\"hidden\" [name]=\"name || label\" [ngModel]=\"model\" />\n\n <ng-content></ng-content>\n\n <ng-container *ngIf=\"reference\">\n <div\n *ngFor=\"let document of model; trackBy: trackByDocument\"\n class=\"file file-uploaded\"\n >\n <!-- prettier-ignore -->\n <a [href]=\"multiUploadService.getDownloadUrl(url, document)\">{{ document.filename }}</a>\n <span class=\"ms-1 me-1\">\n ({{ toMegaOctets(document.fileSize) }}\n <abbr\n [title]=\"\n 'foehn-uploader.abbr-megaoctet-title' | fromDictionary\n \"\n >\n {{ 'foehn-uploader.abbr-megaoctet' | fromDictionary }}\n </abbr>\n )\n </span>\n <button\n *ngIf=\"!readonly && !document.readonly\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n type=\"button\"\n class=\"btn btn-link icon-button delete-uploaded\"\n (click)=\"removeFile(document)\"\n >\n <foehn-icon-times\n [title]=\"\n 'foehn-uploader.delete-icon-title'\n | fromDictionary: { docName: document.filename }\n \"\n ></foehn-icon-times>\n </button>\n </div>\n\n <small\n class=\"form-text text-secondary uploaded-global-info\"\n *ngIf=\"showGlobalInfos(model)\"\n [innerHTML]=\"getGlobalInfos(model)\"\n ></small>\n </ng-container>\n\n <ng-container *ngIf=\"!reference\">\n <div\n *ngFor=\"let pending of pendingFiles; trackBy: trackByPending\"\n class=\"file file-pending\"\n >\n <span>{{ pending.name }}</span>\n <span class=\"ms-1 me-1\">\n ({{ toMegaOctets(pending.size) }}\n <abbr\n [title]=\"\n 'foehn-uploader.abbr-megaoctet-title' | fromDictionary\n \"\n >\n {{ 'foehn-uploader.abbr-megaoctet' | fromDictionary }}\n </abbr>\n )\n </span>\n <button\n *ngIf=\"!readonly\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n type=\"button\"\n class=\"btn btn-link icon-button delete-pending\"\n (click)=\"removeFile(pending)\"\n >\n <foehn-icon-times\n [title]=\"\n 'foehn-uploader.delete-icon-title'\n | fromDictionary: { docName: pending.name }\n \"\n ></foehn-icon-times>\n </button>\n </div>\n\n <small\n class=\"form-text text-secondary pending-global-info\"\n *ngIf=\"showGlobalInfos(pendingFiles)\"\n [innerHTML]=\"getGlobalInfos(pendingFiles)\"\n ></small>\n </ng-container>\n\n <ng-container *ngIf=\"canAddMoreFiles()\">\n <input\n class=\"form-control actual-input\"\n type=\"file\"\n [name]=\"name || label\"\n [multiple]=\"multiple\"\n [attr.accept]=\"\n overrideAcceptedExtensions\n ? overrideAcceptedExtensions\n : uploaderHelper.accept\n ? uploaderHelper.accept\n : null\n \"\n (change)=\"onFileChange($event)\"\n #inputFile\n />\n\n <button\n type=\"button\"\n class=\"btn btn-primary\"\n [ngClass]=\"{ 'visually-hidden': !showUploadButton }\"\n [attr.id]=\"buildChildId()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-describedby]=\"buildId('ErrorsContainer')\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n (click)=\"inputFile.click()\"\n #entryComponent\n >\n {{ multiple ? chooseButtonLabelMultiple : chooseButtonLabel }}\n </button>\n\n <div\n *ngIf=\"dragAndDrop && !disabled\"\n aria-hidden=\"true\"\n class=\"dropfile\"\n [class.dropfile-border-transparent]=\"showDropZone\"\n (click)=\"inputFile.click()\"\n >\n {{ multiple ? dropZoneLabelMultiple : dropZoneLabel }}\n </div>\n </ng-container>\n\n <foehn-upload-progress-bar\n *ngIf=\"reference\"\n [progressBarTriggerHtmlElement]=\"\n inputElement?.nativeElement || fallBackTrigger\n \"\n ></foehn-upload-progress-bar>\n</div>\n", styles: [".dropfile{width:300px;border:3px dashed #bbb;text-align:center;margin-top:10px;cursor:pointer;padding:15px 3px}.dropfile-border-transparent{border-color:#fff}.actual-input{display:none}.file-list{margin-top:20px}.icon-button{border:0}.icon-button:hover{cursor:pointer}:host ::ng-deep .svg-inline--fa{color:#000!important}.drop-zone-highlight{outline:3px dashed #bbb}.container-box{border:1px solid #ededed;background-color:#fbfbfb;padding:.5rem}.container-box.vd-form-group-danger{border-left:5px solid var(--vd-danger);padding-left:1rem}\n"] }]
|
|
245
|
-
}], ctorParameters: () => [{ type: i1.MultiUploadService }, { type: i2.PendingUploadService }, { type: i3.ApplicationInfoService }, { type: i4.FoehnConfirmModalService }, { type: i5.SdkDictionaryService }, { type: i6.GrowlBrokerService }, { type: i7.PageUploadLimitService }], propDecorators: { url: [{
|
|
246
|
-
type: Input
|
|
247
|
-
}], reference: [{
|
|
248
|
-
type: Input
|
|
249
|
-
}] } });
|
|
250
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tbXVsdGktdXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi11cGxvYWQvZm9laG4tbXVsdGktdXBsb2FkL2ZvZWhuLW11bHRpLXVwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tdXBsb2FkL2ZvZWhuLW11bHRpLXVwbG9hZC9mb2Vobi1tdWx0aS11cGxvYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQUUsS0FBSyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQ0gsVUFBVSxFQUNWLE1BQU0sRUFDTixRQUFRLEVBQ1IsR0FBRyxFQUNILFlBQVksRUFDZixNQUFNLGdCQUFnQixDQUFDO0FBSXhCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBSTlFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRXRGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBRTdGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFrQjVELE1BQU0sT0FBTyx5QkFDVCxTQUFRLDhCQUFtRDtJQWMzRCxZQUNJLGtCQUFzQyxFQUN0QyxvQkFBMEMsRUFDaEMsc0JBQThDLEVBQzlDLG1CQUE2QyxFQUM3QyxpQkFBdUMsRUFDdkMsWUFBZ0MsRUFDaEMsc0JBQThDO1FBRXhELEtBQUssQ0FDRCxzQkFBc0IsRUFDdEIsbUJBQW1CLEVBQ25CLGlCQUFpQixFQUNqQixZQUFZLENBQ2Ys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OUQsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM3QixDQUFDOytHQXZVUSx5QkFBeUI7bUdBQXpCLHlCQUF5Qiw2RkFWdkI7WUFDUDtnQkFDSSxPQUFPLEVBQUUsbUJBQW1CO2dCQUM1QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHlCQUF5QixDQUFDO2dCQUN4RCxLQUFLLEVBQUUsSUFBSTthQUNkO1lBQ0QsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFO1lBQzdELEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFFBQVEsRUFBRSxxQkFBcUIsRUFBRTtTQUN0RSxpRENwQ0wseWlNQStLQTs7NEZEeklhLHlCQUF5QjtrQkFkckMsU0FBUzsrQkFDSSxvQkFBb0IsYUFHbkI7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLG1CQUFtQjs0QkFDNUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsMEJBQTBCLENBQUM7NEJBQ3hELEtBQUssRUFBRSxJQUFJO3lCQUNkO3dCQUNELEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxrQkFBa0IsRUFBRTt3QkFDN0QsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixFQUFFO3FCQUN0RTsrU0FPRCxHQUFHO3NCQURGLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEVNUFRZLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gICAgY2F0Y2hFcnJvcixcbiAgICBmaWx0ZXIsXG4gICAgbWVyZ2VNYXAsXG4gICAgdGFwLFxuICAgIHRocm90dGxlVGltZVxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEZvZWhuQ29uZmlybU1vZGFsU2VydmljZSB9IGZyb20gJy4uLy4uL2ZvZWhuLWNvbmZpcm0tbW9kYWwvZm9laG4tY29uZmlybS1tb2RhbC5zZXJ2aWNlJztcbmltcG9ydCB7IEdyb3dsQnJva2VyU2VydmljZSB9IGZyb20gJy4uLy4uL2ZvZWhuLWdyb3dsL2dyb3dsLWJyb2tlci5zZXJ2aWNlJztcbmltcG9ydCB7IEZvZWhuSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9mb2Vobi1pbnB1dC9mb2Vobi1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9ybUVycm9yIH0gZnJvbSAnLi4vLi4vZm9ybS1lcnJvcic7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkluZm9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2RrLWFwcGluZm8vYXBwbGljYXRpb24taW5mby5zZXJ2aWNlJztcbmltcG9ydCB7IFNka0RpY3Rpb25hcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2RrLWRpY3Rpb25hcnkvc2RrLWRpY3Rpb25hcnkuc2VydmljZSc7XG5pbXBvcnQgeyBBYnN0cmFjdEZvZWhuVXBsb2FkZXJDb21wb25lbnQgfSBmcm9tICcuLi9hYnN0cmFjdC1mb2Vobi11cGxvYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRG9jdW1lbnRSZWZlcmVuY2UgfSBmcm9tICcuLi9kb2N1bWVudC1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgVXBsb2FkUHJvZ3Jlc3NTZXJ2aWNlIH0gZnJvbSAnLi4vZm9laG4tdXBsb2FkLXByb2dyZXNzLWJhci91cGxvYWQtcHJvZ3Jlc3Muc2VydmljZSc7XG5pbXBvcnQgeyBQYWdlVXBsb2FkTGltaXRTZXJ2aWNlIH0gZnJvbSAnLi4vcGFnZS11cGxvYWQtbGltaXQuc2VydmljZSc7XG5pbXBvcnQgeyBNdWx0aVVwbG9hZFNlcnZpY2UgfSBmcm9tICcuL211bHRpLXVwbG9hZC5zZXJ2aWNlJztcbmltcG9ydCB7IERvY3VtZW50RXJyb3IsIERvY3VtZW50c1dpdGhFcnJvcnMgfSBmcm9tICcuL211bHRpLXVwbG9hZC50eXBlJztcbmltcG9ydCB7IFBlbmRpbmdVcGxvYWRTZXJ2aWNlIH0gZnJvbSAnLi9wZW5kaW5nLXVwbG9hZC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmb2Vobi1tdWx0aS11cGxvYWQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9mb2Vobi1tdWx0aS11cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuLi9mb2Vobi11cGxvYWQuY29tcG9uZW50LmNzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGb2VobklucHV0Q29tcG9uZW50LFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRm9laG5NdWx0aVVwbG9hZENvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB7IHByb3ZpZGU6IE11bHRpVXBsb2FkU2VydmljZSwgdXNlQ2xhc3M6IE11bHRpVXBsb2FkU2VydmljZSB9LFxuICAgICAgICB7IHByb3ZpZGU6IFVwbG9hZFByb2dyZXNzU2VydmljZSwgdXNlQ2xhc3M6IFVwbG9hZFByb2dyZXNzU2VydmljZSB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBGb2Vobk11bHRpVXBsb2FkQ29tcG9uZW50XG4gICAgZXh0ZW5kcyBBYnN0cmFjdEZvZWhuVXBsb2FkZXJDb21wb25lbnQ8RG9jdW1lbnRSZWZlcmVuY2VbXT5cbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95XG57XG4gICAgQElucHV0KClcbiAgICB1cmwgPSAnYXBpL2RvY3VtZW50JztcblxuICAgIEBJbnB1dCgpXG4gICAgcmVmZXJlbmNlOiBzdHJpbmc7XG5cbiAgICBtdWx0aVVwbG9hZFNlcnZpY2U6IE11bHRpVXBsb2FkU2VydmljZTtcbiAgICBwZW5kaW5nVXBsb2FkU2VydmljZTogUGVuZGluZ1VwbG9hZFNlcnZpY2U7XG5cbiAgICBwcml2YXRlIHBlbmRpbmdVcGxvYWRlZEVycm9yc1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIG11bHRpVXBsb2FkU2VydmljZTogTXVsdGlVcGxvYWRTZXJ2aWNlLFxuICAgICAgICBwZW5kaW5nVXBsb2FkU2VydmljZTogUGVuZGluZ1VwbG9hZFNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBhcHBsaWNhdGlvbkluZm9TZXJ2aWNlOiBBcHBsaWNhdGlvbkluZm9TZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgY29uZmlybU1vZGFsU2VydmljZTogRm9laG5Db25maXJtTW9kYWxTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgZGljdGlvbmFyeVNlcnZpY2U6IFNka0RpY3Rpb25hcnlTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgZ3Jvd2xTZXJ2aWNlOiBHcm93bEJyb2tlclNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBwYWdlVXBsb2FkTGltaXRTZXJ2aWNlOiBQYWdlVXBsb2FkTGltaXRTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKFxuICAgICAgICAgICAgYXBwbGljYXRpb25JbmZvU2VydmljZSxcbiAgICAgICAgICAgIGNvbmZpcm1Nb2RhbFNlcnZpY2UsXG4gICAgICAgICAgICBkaWN0aW9uYXJ5U2VydmljZSxcbiAgICAgICAgICAgIGdyb3dsU2VydmljZVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnBlbmRpbmdVcGxvYWRTZXJ2aWNlID0gcGVuZGluZ1VwbG9hZFNlcnZpY2U7XG4gICAgICAgIHRoaXMubXVsdGlVcGxvYWRTZXJ2aWNlID0gbXVsdGlVcGxvYWRTZXJ2aWNlO1xuICAgIH1cblxuICAgIGdldCBwZW5kaW5nRmlsZXMoKTogRmlsZVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGVuZGluZ1VwbG9hZFNlcnZpY2UuZ2V0UGVuZGluZ0ZpbGVzKHRoaXMubmFtZSk7XG4gICAgfVxuXG4gICAgZ2V0IGFkZGVkRmlsZXMoKTogRmlsZVtdIHwgRG9jdW1lbnRSZWZlcmVuY2VbXSB7XG4gICAgICAgIGlmICh0aGlzLnBlbmRpbmdVcGxvYWRTZXJ2aWNlLmhhc1BlbmRpbmdGaWxlcyh0aGlzLm5hbWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wZW5kaW5nRmlsZXM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICEhdGhpcy5tb2RlbCA/IHRoaXMubW9kZWwuZmlsdGVyKGUgPT4gIWUucmVhZG9ubHkpIDogW107XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICAgICAgdGhpcy5wYWdlVXBsb2FkTGltaXRTZXJ2aWNlLnJlZ2lzdGVyVXBsb2FkZXIodGhpcyk7XG5cbiAgICAgICAgdGhpcy5wZW5kaW5nVXBsb2FkZWRFcnJvcnNTdWJzY3JpcHRpb24gPVxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJ4anMtYW5ndWxhci9wcmVmZXItYXN5bmMtcGlwZVxuICAgICAgICAgICAgdGhpcy5wZW5kaW5nVXBsb2FkU2VydmljZS5wZW5kaW5nVXBsb2FkZWRFcnJvcnMuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgIChyZXNwb25zZTogRG9jdW1lbnRzV2l0aEVycm9ycykgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc3BsYXlQZW5kaW5nVXBsb2FkZWRFcnJvcnNGcm9tU2VydmVyQnlGb3JtS2V5KFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZXJyb3JzLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uYW1lXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAvLyBBZGQgZmlsZXMgbG9naWNcbiAgICAgICAgdGhpcy51cGxvYWRGaWxlc1N1YnNjcmlwdGlvbiA9IHRoaXMudXBsb2FkRmlsZXNTdWJqZWN0XG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgIGZpbGVzID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAhIWZpbGVzICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAhdGhpcy5pc01heFNlbGVjdGlvblJlYWNoZWQoZmlsZXMpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2VVcGxvYWRMaW1pdFNlcnZpY2UuY2FuVXBsb2FkTW9yZUZpbGVzKGZpbGVzKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgLy8gT25seSBvbmUgY2FsbCBldmVyeSAzMDBtcyB0byBzdG9wIGNvbmN1cnJlbnQgYWNjZXNzXG4gICAgICAgICAgICAgICAgdGhyb3R0bGVUaW1lKDMwMCksXG4gICAgICAgICAgICAgICAgLy8gT25seSBvbmUgY29uY3VycmVudCBjYWxsIGF0IHRoZSB0aW1lXG4gICAgICAgICAgICAgICAgbWVyZ2VNYXAoXG4gICAgICAgICAgICAgICAgICAgIGZpbGVzID0+XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm11bHRpVXBsb2FkU2VydmljZS51cGxvYWREb2N1bWVudHMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5rZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tdWx0aXBsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRMYW5ndWFnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3VsZERpc3BsYXlGaWxlU2F2ZWRDb25maXJtYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiB1bmtub3duKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yczogRm9ybUVycm9yW10gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBzdGF0dXMgfTogYW55ID0gZXJyb3I7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkZXJIZWxwZXIuYWRkQ3VzdG9tRXJyb3JPckRlZmF1bHQoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBgJHtzdGF0dXN9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXN0b21FcnJvcnMsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm92ZXJyaWRlQWNjZXB0ZWRFeHRlbnNpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vdmVycmlkZU1heEZpbGVOYW1lTGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vdmVycmlkZUlsbGVnYWxDaGFyYWN0ZXJzXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaEVycm9ycyhbZXJyb3JzLCB0cnVlXSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBFTVBUWTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJ4anMtYW5ndWxhci9wcmVmZXItYXN5bmMtcGlwZVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoeyBkb2N1bWVudHMsIGVycm9ycyB9KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5UmVzdWx0RnJvbVNlcnZlcihkb2N1bWVudHMsIGVycm9ycyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAvLyBEZWxldGUgZG9jdW1lbnQgbG9naWNcbiAgICAgICAgdGhpcy5kZWxldGVEb2N1bWVudFN1YnNjcmlwdGlvbiA9IHRoaXMuZGVsZXRlRG9jdW1lbnRTdWJqZWN0XG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoZG9jdW1lbnQgPT4gISFkb2N1bWVudCksXG4gICAgICAgICAgICAgICAgLy8gT25seSBvbmUgY2FsbCBldmVyeSAzMDAgbXMgdG8gc3RvcCBjb25jdXJyZW50IGFjY2Vzc1xuICAgICAgICAgICAgICAgIHRocm90dGxlVGltZSgzMDApLFxuICAgICAgICAgICAgICAgIC8vIE9ubHkgb25lIGNvbmN1cnJlbnQgY2FsbCBhdCB0aGUgdGltZVxuICAgICAgICAgICAgICAgIG1lcmdlTWFwKFxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tdWx0aVVwbG9hZFNlcnZpY2UuZGVsZXRlRG9jdW1lbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIC8vIFNpZGUgZWZmZWN0IG9uY2UgdGhlIGRvY3VtZW50IGhhcyBiZWVuIGRlbGV0ZWQuXG4gICAgICAgICAgICAgICAgdGFwKGRvY3VtZW50ID0+IHRoaXMucmVtb3ZlRG9jdW1lbnRGcm9tTW9kZWwoZG9jdW1lbnQpKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJ4anMtYW5ndWxhci9wcmVmZXItYXN5bmMtcGlwZVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuXG4gICAgICAgIGlmICghIXRoaXMucGVuZGluZ1VwbG9hZGVkRXJyb3JzU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnBlbmRpbmdVcGxvYWRlZEVycm9yc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wYWdlVXBsb2FkTGltaXRTZXJ2aWNlLnVucmVnaXN0ZXJVcGxvYWRlcih0aGlzKTtcbiAgICB9XG5cbiAgICB0cmFja0J5UGVuZGluZyhpbmRleDogbnVtYmVyLCBwZW5kaW5nOiBGaWxlKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHBlbmRpbmcubGFzdE1vZGlmaWVkO1xuICAgIH1cblxuICAgIGdldFRvdGFsRmlsZXNTaXplKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vZGVsXG4gICAgICAgICAgICAuZmlsdGVyKGUgPT4gIWUucmVhZG9ubHkpXG4gICAgICAgICAgICAubWFwKGUgPT4gZS5maWxlU2l6ZSlcbiAgICAgICAgICAgIC5yZWR1Y2UoKHBhcnRpYWxTdW0sIGEpID0+IHBhcnRpYWxTdW0gKyBhLCAwKTtcbiAgICB9XG5cbiAgICBjYW5BZGRNb3JlRmlsZXMoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5tb2RlbCAmJiAhIXRoaXMubW9kZWwuZmlsdGVyKGUgPT4gIWUucmVhZG9ubHkpLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICF0aGlzLnBlbmRpbmdVcGxvYWRTZXJ2aWNlLmhhc1BlbmRpbmdGaWxlcyh0aGlzLm5hbWUpO1xuICAgIH1cblxuICAgIG9uRmlsZUNoYW5nZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgLy8gUFJFU1RBS0lULTMwOTogTWFyayBhcyBwcmlzdGluZSBzbyBlcnJvcnMgY2FuIGJlIHNob3duIGRpcmVjdGx5IHRvIHVzZXIgd2hlbiB1cGxvYWRpbmcgZmlsZVxuICAgICAgICB0aGlzLm1hcmtBc1ByaXN0aW5lKCk7XG5cbiAgICAgICAgY29uc3QgdGFyZ2V0OiBIVE1MSW5wdXRFbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgIHRoaXMucG9wdWxhdGVGaWxlSXRlbUxpc3QodGFyZ2V0LmZpbGVzKTtcbiAgICAgICAgdGFyZ2V0LnZhbHVlID0gbnVsbDsgLy8gcmVzZXQgaGlkZGVuIGZpbGUgaW5wdXQgdmFsdWVzXG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBvbkRyb3AoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLnVwbG9hZGVySGVscGVyLnByZXZlbnRBbmRTdG9wKGV2ZW50KTtcbiAgICAgICAgaWYgKHRoaXMuZHJhZ0FuZERyb3ApIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVMaXN0OiBGaWxlTGlzdCA9IHRoaXMudXBsb2FkZXJIZWxwZXIuZ2V0VHJhbnNmZXIoZXZlbnQpO1xuICAgICAgICAgICAgaWYgKGZpbGVMaXN0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3B1bGF0ZUZpbGVJdGVtTGlzdChmaWxlTGlzdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNob3dEcm9wWm9uZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwcm90ZWN0ZWQgcmVtb3ZlRmlsZU9uQ29uZmlybWF0aW9uKGRvY3VtZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKCEhdGhpcy5yZWZlcmVuY2UpIHtcbiAgICAgICAgICAgIHN1cGVyLnJlbW92ZUZpbGVPbkNvbmZpcm1hdGlvbihkb2N1bWVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBUaGUgZG9jdW1lbnQgaGFzbid0IGJlZW4gdXBsb2FkZWQuXG4gICAgICAgICAgICB0aGlzLnBlbmRpbmdVcGxvYWRTZXJ2aWNlLnJlbW92ZVBlbmRpbmdGaWxlKGRvY3VtZW50LCB0aGlzLm5hbWUpO1xuICAgICAgICAgICAgdGhpcy5tYXJrQXNEaXJ0eSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwb3B1bGF0ZUZpbGVJdGVtTGlzdChmaWxlTGlzdDogRmlsZUxpc3QpOiB2b2lkIHtcbiAgICAgICAgbGV0IGZpbGVzID0gQXJyYXkuZnJvbShmaWxlTGlzdCk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIWZpbGVzLmxlbmd0aCB8fFxuICAgICAgICAgICAgdGhpcy5pc01heEZpbGVzQ291bnRSZWFjaGVkKGZpbGVzKSB8fFxuICAgICAgICAgICAgdGhpcy5pc01heEZpbGVzU2l6ZVJlYWNoZWQoZmlsZXMpXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gV2hlbiBkcmFnL2Ryb3AgYW5kIGFza2VkIGZvciBzaW5nbGUgdXBsb2FkLCB3ZSBlbnN1cmUgd2Ugc3RvcmUgb25seSBvbmUgZmlsZSBmb3IgdXBsb2FkXG4gICAgICAgIGlmICh0aGlzLmRyYWdBbmREcm9wICYmICF0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICBmaWxlcyA9IHRoaXMubWFuYWdlU2luZ2xlRmlsZShmaWxlcyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEaXNwbGF5IGxvY2FsIGVycm9ycyBhbmQgc3RvcCBwcm9jZXNzaW5nXG4gICAgICAgIGNvbnN0IGZpbGVzRXJyb3JzID0gdGhpcy5kaXNwbGF5TG9jYWxFcnJvcnMoZmlsZXMpO1xuICAgICAgICBpZiAoZmlsZXNFcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJbml0aWFsaXplIG1vZGVsIGlmIGVtcHR5XG4gICAgICAgIGlmICghdGhpcy5tb2RlbCB8fCAhdGhpcy5tb2RlbC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMubW9kZWwgPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghIXRoaXMucmVmZXJlbmNlKSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGhhdmUgYSByZWZlcmVuY2UsIHdlIHNlbmQgZmlsZXMgdG8gc2VydmVyXG4gICAgICAgICAgICB0aGlzLnVwbG9hZEZpbGVzU3ViamVjdC5uZXh0KGZpbGVzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFBSRVNUQUtJVC0zMDk6IFNpbXVsYXRlIHVzZXIgaW50ZXJhY3Rpb24gd2l0aCBjb21wb25lbnRcbiAgICAgICAgICAgIC8vIG9ubHkgd2hlbiBubyBlcnJvciBzbyBpc1ByaXN0aW5lIGlzIHNldCB0byBmYWxzZSBmb3IgdmFsaWRhdGlvbiBwdXJwb3NlXG4gICAgICAgICAgICB0aGlzLm1hcmtBc0RpcnR5KCk7XG5cbiAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgd2Ugc3RvcmUgZmlsZXMgaW4gcGVuZGluZyBzdG9yYWdlXG4gICAgICAgICAgICB0aGlzLnBlbmRpbmdVcGxvYWRTZXJ2aWNlLmFkZFBlbmRpbmdGaWxlcyhcbiAgICAgICAgICAgICAgICB0aGlzLnVybCxcbiAgICAgICAgICAgICAgICB0aGlzLm5hbWUsXG4gICAgICAgICAgICAgICAgdGhpcy5sYWJlbCxcbiAgICAgICAgICAgICAgICBmaWxlcyxcbiAgICAgICAgICAgICAgICB0aGlzLmtleSxcbiAgICAgICAgICAgICAgICB0aGlzLm11bHRpcGxlLFxuICAgICAgICAgICAgICAgIHRoaXMuc2hvdWxkRGlzcGxheUZpbGVTYXZlZENvbmZpcm1hdGlvblxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZGlzcGxheVBlbmRpbmdVcGxvYWRlZEVycm9yc0Zyb21TZXJ2ZXJCeUZvcm1LZXkoXG4gICAgICAgIGVycm9yczogRG9jdW1lbnRFcnJvcltdLFxuICAgICAgICBmb3JtS2V5OiBzdHJpbmdcbiAgICApOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZXJyb3JzQnlGb3JtS2V5ID0gZXJyb3JzLmZpbHRlcihcbiAgICAgICAgICAgIChlcnJvcjogRG9jdW1lbnRFcnJvcikgPT4gZXJyb3IuZm9ybUtleSA9PT0gZm9ybUtleVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmRpc3BsYXlFcnJvcnNGcm9tU2VydmVyKGVycm9yc0J5Rm9ybUtleSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkaXNwbGF5UmVzdWx0RnJvbVNlcnZlcihcbiAgICAgICAgZG9jdW1lbnRzOiBEb2N1bWVudFJlZmVyZW5jZVtdLFxuICAgICAgICBlcnJvcnM6IERvY3VtZW50RXJyb3JbXVxuICAgICk6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc3BsYXlFcnJvcnNGcm9tU2VydmVyKGVycm9ycyk7XG4gICAgICAgIHRoaXMubW9kZWwgPSBbLi4udGhpcy5tb2RlbCwgLi4uKGRvY3VtZW50cyB8fCBbXSldO1xuICAgICAgICB0aGlzLnRyaWdnZXJVc2VySW5wdXQodGhpcy5tb2RlbCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW1vdmVEb2N1bWVudEZyb21Nb2RlbChkb2N1bWVudDogRG9jdW1lbnRSZWZlcmVuY2UpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLm1vZGVsLmluZGV4T2YoZG9jdW1lbnQpO1xuICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgdGhpcy5tb2RlbC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgdGhpcy5tb2RlbCA9IFsuLi50aGlzLm1vZGVsXTtcbiAgICAgICAgICAgIHRoaXMudHJpZ2dlclVzZXJJbnB1dCh0aGlzLm1vZGVsKTtcbiAgICAgICAgICAgIHRoaXMubWFya0FzRGlydHkoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZGlzcGxheUVycm9yc0Zyb21TZXJ2ZXIoZXJyb3JzOiBEb2N1bWVudEVycm9yW10pOiB2b2lkIHtcbiAgICAgICAgaWYgKCFlcnJvcnMgfHwgIWVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICAgIC8vIFBSRVNUQUtJVC0zMDk6IFNpbXVsYXRlIHVzZXIgaW50ZXJhY3Rpb24gd2l0aCBjb21wb25lbnRcbiAgICAgICAgICAgIC8vIG9ubHkgd2hlbiBubyBlcnJvciBzbyBpc1ByaXN0aW5lIGlzIHNldCB0byBmYWxzZSBmb3IgdmFsaWRhdGlvbiBwdXJwb3NlXG4gICAgICAgICAgICB0aGlzLm1hcmtBc0RpcnR5KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuZXdFcnJvcnM6IEZvcm1FcnJvcltdID0gW107XG4gICAgICAgIGVycm9ycy5mb3JFYWNoKGVycm9yID0+XG4gICAgICAgICAgICB0aGlzLnVwbG9hZGVySGVscGVyLmFkZEN1c3RvbUVycm9yT3JEZWZhdWx0KFxuICAgICAgICAgICAgICAgIHRoaXMubmFtZSxcbiAgICAgICAgICAgICAgICBuZXdFcnJvcnMsXG4gICAgICAgICAgICAgICAgYCR7ZXJyb3IuZXJyb3JDb2RlfWAsXG4gICAgICAgICAgICAgICAgZXJyb3IubGFiZWwsXG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b21FcnJvcnMsXG4gICAgICAgICAgICAgICAgdGhpcy5vdmVycmlkZUFjY2VwdGVkRXh0ZW5zaW9ucyxcbiAgICAgICAgICAgICAgICB0aGlzLm92ZXJyaWRlTWF4RmlsZU5hbWVMZW5ndGgsXG4gICAgICAgICAgICAgICAgdGhpcy5vdmVycmlkZUlsbGVnYWxDaGFyYWN0ZXJzXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5yZWZyZXNoRXJyb3JzKFtuZXdFcnJvcnMsIHRydWVdKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1hbmFnZVNpbmdsZUZpbGUoZmlsZXM6IEZpbGVbXSk6IEZpbGVbXSB7XG4gICAgICAgIC8vIEVkZ2UgYnJvd3NlciBsZXRzIHlvdSBkcm9wIGZpbGVzIGZyb20gZGlhbG9nIGJveCB3aGVuIHNlbGVjdGluZyBhIGZpbGUuXG4gICAgICAgIC8vIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIG9ubHkga2VlcCBsYXN0IHNlbGVjdGVkIGZpbGUgZnJvbSB1c2VyXG4gICAgICAgIGlmICghIXRoaXMucmVmZXJlbmNlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5tb2RlbCAmJiB0aGlzLm1vZGVsLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50TW9kZWxGaWxlcyA9IFtcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb2RlbC5maWx0ZXIoZSA9PiAhZS5yZWFkb25seSlcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICAgICAgY3VycmVudE1vZGVsRmlsZXMuZm9yRWFjaCgoZG9jOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlRmlsZU9uQ29uZmlybWF0aW9uKGRvYylcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFBlbmRpbmdGaWxlcyA9IFsuLi50aGlzLnBlbmRpbmdGaWxlc107XG4gICAgICAgICAgICBpZiAoY3VycmVudFBlbmRpbmdGaWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgICAgICAgICBjdXJyZW50UGVuZGluZ0ZpbGVzLmZvckVhY2goKGRvYzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUZpbGVPbkNvbmZpcm1hdGlvbihkb2MpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBUaGVuIHdlIGVuc3VyZSB3ZSB0YWtlIG9ubHkgb25lIGZpbGUgZnJvbSBjdXJyZW50IHNlbGVjdGlvblxuICAgICAgICByZXR1cm4gZmlsZXMuc2xpY2UoMCwgMSk7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIGNsYXNzPVwiZm9ybS1ncm91cCBjb250YWluZXItYm94XCJcbiAgICBbY2xhc3MuaGFzLWRhbmdlcl09XCJoYXNFcnJvcnNUb0Rpc3BsYXkoKVwiXG4gICAgW2NsYXNzLnZkLWZvcm0tZ3JvdXAtZGFuZ2VyXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpXCJcbiAgICBbY2xhc3MuZHJvcC16b25lLWhpZ2hsaWdodF09XCJzaG93RHJvcFpvbmVcIlxuICAgIFthdHRyLmlkXT1cImJ1aWxkSWQoJ0NvbnRhaW5lcicpXCJcbiAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAoZHJvcCk9XCJvbkRyb3AoJGV2ZW50KVwiXG4gICAgKGRyYWdlbnRlcik9XCJvbkRyYWdlbnRlcigkZXZlbnQpXCJcbiAgICAoZHJhZ2xlYXZlKT1cIm9uRHJhZ2xlYXZlKCRldmVudClcIlxuICAgIChkcmFnb3Zlcik9XCJvbkRyYWdvdmVyKCRldmVudClcIlxuICAgICNmYWxsQmFja1RyaWdnZXJcbj5cbiAgICA8bGFiZWxcbiAgICAgICAgY2xhc3M9XCJmb3JtLWxhYmVsXCJcbiAgICAgICAgW2F0dHIuZm9yXT1cImJ1aWxkQ2hpbGRJZCgpXCJcbiAgICAgICAgKm5nSWY9XCIhIWxhYmVsXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiaXNMYWJlbFNyT25seSA/ICd2aXN1YWxseS1oaWRkZW4nIDogbGFiZWxTdHlsZU1vZGlmaWVyXCJcbiAgICA+XG4gICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwibGFiZWxcIj48L3NwYW4+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgICAqbmdJZj1cIiFyZXF1aXJlZCAmJiAhaGlkZU5vdFJlcXVpcmVkRXh0cmFMYWJlbFwiXG4gICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyAnZm9laG4taW5wdXQub3B0aW9uYWwnIHwgZnJvbURpY3Rpb25hcnkgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgIDwvbGFiZWw+XG5cbiAgICA8Zm9laG4tdmFsaWRhdGlvbi1hbGVydHNcbiAgICAgICAgW2NvbXBvbmVudF09XCJ0aGlzXCJcbiAgICAgICAgW3Nob3VsZEVycm9yc0JlTGl2ZV09XCJoYXNMaXZlVXBsb2FkRXJyb3JzKClcIlxuICAgID48L2ZvZWhuLXZhbGlkYXRpb24tYWxlcnRzPlxuXG4gICAgPHNtYWxsXG4gICAgICAgICpuZ0lmPVwiaGVscFRleHRcIlxuICAgICAgICBbYXR0ci5pZF09XCJidWlsZENoaWxkSWQoKSArICdIZWxwJ1wiXG4gICAgICAgIGNsYXNzPVwiZm9ybS10ZXh0IHRleHQtc2Vjb25kYXJ5XCJcbiAgICAgICAgW2lubmVySFRNTF09XCJoZWxwVGV4dFwiXG4gICAgPjwvc21hbGw+XG5cbiAgICA8IS0tIFBSRVNUQUtJVC0zMDk6IEZha2UgaW5wdXQgd2l0aCBOZ01vZGVsIHRvIGJlIHJlZ2lzdGVyZWQgaW50byBGb3JtIGNvbnRyb2xzIC0tPlxuICAgIDxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgW25hbWVdPVwibmFtZSB8fCBsYWJlbFwiIFtuZ01vZGVsXT1cIm1vZGVsXCIgLz5cblxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZWZlcmVuY2VcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRvY3VtZW50IG9mIG1vZGVsOyB0cmFja0J5OiB0cmFja0J5RG9jdW1lbnRcIlxuICAgICAgICAgICAgY2xhc3M9XCJmaWxlIGZpbGUtdXBsb2FkZWRcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8IS0tIHByZXR0aWVyLWlnbm9yZSAtLT5cbiAgICAgICAgICAgIDxhIFtocmVmXT1cIm11bHRpVXBsb2FkU2VydmljZS5nZXREb3dubG9hZFVybCh1cmwsIGRvY3VtZW50KVwiPnt7IGRvY3VtZW50LmZpbGVuYW1lIH19PC9hPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0xIG1lLTFcIj5cbiAgICAgICAgICAgICAgICAoe3sgdG9NZWdhT2N0ZXRzKGRvY3VtZW50LmZpbGVTaXplKSB9fVxuICAgICAgICAgICAgICAgIDxhYmJyXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICdmb2Vobi11cGxvYWRlci5hYmJyLW1lZ2FvY3RldC10aXRsZScgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgJ2ZvZWhuLXVwbG9hZGVyLmFiYnItbWVnYW9jdGV0JyB8IGZyb21EaWN0aW9uYXJ5IH19XG4gICAgICAgICAgICAgICAgPC9hYmJyPlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFyZWFkb25seSAmJiAhZG9jdW1lbnQucmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJ2Rpc2FibGVkJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rIGljb24tYnV0dG9uIGRlbGV0ZS11cGxvYWRlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUZpbGUoZG9jdW1lbnQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Zm9laG4taWNvbi10aW1lc1xuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAnZm9laG4tdXBsb2FkZXIuZGVsZXRlLWljb24tdGl0bGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeTogeyBkb2NOYW1lOiBkb2N1bWVudC5maWxlbmFtZSB9XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPjwvZm9laG4taWNvbi10aW1lcz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8c21hbGxcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS10ZXh0IHRleHQtc2Vjb25kYXJ5IHVwbG9hZGVkLWdsb2JhbC1pbmZvXCJcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd0dsb2JhbEluZm9zKG1vZGVsKVwiXG4gICAgICAgICAgICBbaW5uZXJIVE1MXT1cImdldEdsb2JhbEluZm9zKG1vZGVsKVwiXG4gICAgICAgID48L3NtYWxsPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFyZWZlcmVuY2VcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHBlbmRpbmcgb2YgcGVuZGluZ0ZpbGVzOyB0cmFja0J5OiB0cmFja0J5UGVuZGluZ1wiXG4gICAgICAgICAgICBjbGFzcz1cImZpbGUgZmlsZS1wZW5kaW5nXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4+e3sgcGVuZGluZy5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0xIG1lLTFcIj5cbiAgICAgICAgICAgICAgICAoe3sgdG9NZWdhT2N0ZXRzKHBlbmRpbmcuc2l6ZSkgfX1cbiAgICAgICAgICAgICAgICA8YWJiclxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAnZm9laG4tdXBsb2FkZXIuYWJici1tZWdhb2N0ZXQtdGl0bGUnIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdmb2Vobi11cGxvYWRlci5hYmJyLW1lZ2FvY3RldCcgfCBmcm9tRGljdGlvbmFyeSB9fVxuICAgICAgICAgICAgICAgIDwvYWJicj5cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhcmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJ2Rpc2FibGVkJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rIGljb24tYnV0dG9uIGRlbGV0ZS1wZW5kaW5nXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlRmlsZShwZW5kaW5nKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGZvZWhuLWljb24tdGltZXNcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLXVwbG9hZGVyLmRlbGV0ZS1pY29uLXRpdGxlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnk6IHsgZG9jTmFtZTogcGVuZGluZy5uYW1lIH1cbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+PC9mb2Vobi1pY29uLXRpbWVzPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxzbWFsbFxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLXRleHQgdGV4dC1zZWNvbmRhcnkgcGVuZGluZy1nbG9iYWwtaW5mb1wiXG4gICAgICAgICAgICAqbmdJZj1cInNob3dHbG9iYWxJbmZvcyhwZW5kaW5nRmlsZXMpXCJcbiAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiZ2V0R2xvYmFsSW5mb3MocGVuZGluZ0ZpbGVzKVwiXG4gICAgICAgID48L3NtYWxsPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhbkFkZE1vcmVGaWxlcygpXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgYWN0dWFsLWlucHV0XCJcbiAgICAgICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICAgIFtuYW1lXT1cIm5hbWUgfHwgbGFiZWxcIlxuICAgICAgICAgICAgW211bHRpcGxlXT1cIm11bHRpcGxlXCJcbiAgICAgICAgICAgIFthdHRyLmFjY2VwdF09XCJcbiAgICAgICAgICAgICAgICBvdmVycmlkZUFjY2VwdGVkRXh0ZW5zaW9uc1xuICAgICAgICAgICAgICAgICAgICA/IG92ZXJyaWRlQWNjZXB0ZWRFeHRlbnNpb25zXG4gICAgICAgICAgICAgICAgICAgIDogdXBsb2FkZXJIZWxwZXIuYWNjZXB0XG4gICAgICAgICAgICAgICAgICAgICAgPyB1cGxvYWRlckhlbHBlci5hY2NlcHRcbiAgICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cIm9uRmlsZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICNpbnB1dEZpbGVcbiAgICAgICAgLz5cblxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3Zpc3VhbGx5LWhpZGRlbic6ICFzaG93VXBsb2FkQnV0dG9uIH1cIlxuICAgICAgICAgICAgW2F0dHIuaWRdPVwiYnVpbGRDaGlsZElkKClcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpIHx8IG51bGxcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJidWlsZElkKCdFcnJvcnNDb250YWluZXInKVwiXG4gICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICdkaXNhYmxlZCcgOiBudWxsXCJcbiAgICAgICAgICAgIChjbGljayk9XCJpbnB1dEZpbGUuY2xpY2soKVwiXG4gICAgICAgICAgICAjZW50cnlDb21wb25lbnRcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgbXVsdGlwbGUgPyBjaG9vc2VCdXR0b25MYWJlbE11bHRpcGxlIDogY2hvb3NlQnV0dG9uTGFiZWwgfX1cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJkcmFnQW5kRHJvcCAmJiAhZGlzYWJsZWRcIlxuICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcGZpbGVcIlxuICAgICAgICAgICAgW2NsYXNzLmRyb3BmaWxlLWJvcmRlci10cmFuc3BhcmVudF09XCJzaG93RHJvcFpvbmVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImlucHV0RmlsZS5jbGljaygpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgbXVsdGlwbGUgPyBkcm9wWm9uZUxhYmVsTXVsdGlwbGUgOiBkcm9wWm9uZUxhYmVsIH19XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPGZvZWhuLXVwbG9hZC1wcm9ncmVzcy1iYXJcbiAgICAgICAgKm5nSWY9XCJyZWZlcmVuY2VcIlxuICAgICAgICBbcHJvZ3Jlc3NCYXJUcmlnZ2VySHRtbEVsZW1lbnRdPVwiXG4gICAgICAgICAgICBpbnB1dEVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQgfHwgZmFsbEJhY2tUcmlnZ2VyXG4gICAgICAgIFwiXG4gICAgPjwvZm9laG4tdXBsb2FkLXByb2dyZXNzLWJhcj5cbjwvZGl2PlxuIl19
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { NgModule } from '@angular/core';
|
|
3
|
-
import { FormsModule } from '@angular/forms';
|
|
4
|
-
import { FoehnIconsModule } from '../../foehn-icons/foehn-icons.module';
|
|
5
|
-
import { FoehnValidationAlertsModule } from '../../foehn-validation-alerts/foehn-validation-alerts.module';
|
|
6
|
-
import { SdkDictionaryModule } from '../../sdk-dictionary/sdk-dictionary.module';
|
|
7
|
-
import { FoehnUploadProgressBarModule } from '../foehn-upload-progress-bar/foehn-upload-progress-bar.module';
|
|
8
|
-
import { FoehnMultiUploadComponent } from './foehn-multi-upload.component';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
export class FoehnMultiUploadModule {
|
|
11
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FoehnMultiUploadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
12
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: FoehnMultiUploadModule, declarations: [FoehnMultiUploadComponent], imports: [CommonModule,
|
|
13
|
-
FoehnIconsModule,
|
|
14
|
-
FoehnValidationAlertsModule,
|
|
15
|
-
SdkDictionaryModule,
|
|
16
|
-
FormsModule,
|
|
17
|
-
FoehnUploadProgressBarModule], exports: [FoehnMultiUploadComponent] }); }
|
|
18
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FoehnMultiUploadModule, imports: [CommonModule,
|
|
19
|
-
FoehnIconsModule,
|
|
20
|
-
FoehnValidationAlertsModule,
|
|
21
|
-
SdkDictionaryModule,
|
|
22
|
-
FormsModule,
|
|
23
|
-
FoehnUploadProgressBarModule] }); }
|
|
24
|
-
}
|
|
25
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FoehnMultiUploadModule, decorators: [{
|
|
26
|
-
type: NgModule,
|
|
27
|
-
args: [{
|
|
28
|
-
imports: [
|
|
29
|
-
CommonModule,
|
|
30
|
-
FoehnIconsModule,
|
|
31
|
-
FoehnValidationAlertsModule,
|
|
32
|
-
SdkDictionaryModule,
|
|
33
|
-
FormsModule,
|
|
34
|
-
FoehnUploadProgressBarModule
|
|
35
|
-
],
|
|
36
|
-
declarations: [FoehnMultiUploadComponent],
|
|
37
|
-
exports: [FoehnMultiUploadComponent]
|
|
38
|
-
}]
|
|
39
|
-
}] });
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tbXVsdGktdXBsb2FkLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi11cGxvYWQvZm9laG4tbXVsdGktdXBsb2FkL2ZvZWhuLW11bHRpLXVwbG9hZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQzNHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBQzdHLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOztBQWMzRSxNQUFNLE9BQU8sc0JBQXNCOytHQUF0QixzQkFBc0I7Z0hBQXRCLHNCQUFzQixpQkFIaEIseUJBQXlCLGFBUHBDLFlBQVk7WUFDWixnQkFBZ0I7WUFDaEIsMkJBQTJCO1lBQzNCLG1CQUFtQjtZQUNuQixXQUFXO1lBQ1gsNEJBQTRCLGFBR3RCLHlCQUF5QjtnSEFFMUIsc0JBQXNCLFlBVjNCLFlBQVk7WUFDWixnQkFBZ0I7WUFDaEIsMkJBQTJCO1lBQzNCLG1CQUFtQjtZQUNuQixXQUFXO1lBQ1gsNEJBQTRCOzs0RkFLdkIsc0JBQXNCO2tCQVpsQyxRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRTt3QkFDTCxZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsMkJBQTJCO3dCQUMzQixtQkFBbUI7d0JBQ25CLFdBQVc7d0JBQ1gsNEJBQTRCO3FCQUMvQjtvQkFDRCxZQUFZLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztvQkFDekMsT0FBTyxFQUFFLENBQUMseUJBQXlCLENBQUM7aUJBQ3ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgRm9laG5JY29uc01vZHVsZSB9IGZyb20gJy4uLy4uL2ZvZWhuLWljb25zL2ZvZWhuLWljb25zLm1vZHVsZSc7XG5pbXBvcnQgeyBGb2VoblZhbGlkYXRpb25BbGVydHNNb2R1bGUgfSBmcm9tICcuLi8uLi9mb2Vobi12YWxpZGF0aW9uLWFsZXJ0cy9mb2Vobi12YWxpZGF0aW9uLWFsZXJ0cy5tb2R1bGUnO1xuaW1wb3J0IHsgU2RrRGljdGlvbmFyeU1vZHVsZSB9IGZyb20gJy4uLy4uL3Nkay1kaWN0aW9uYXJ5L3Nkay1kaWN0aW9uYXJ5Lm1vZHVsZSc7XG5pbXBvcnQgeyBGb2VoblVwbG9hZFByb2dyZXNzQmFyTW9kdWxlIH0gZnJvbSAnLi4vZm9laG4tdXBsb2FkLXByb2dyZXNzLWJhci9mb2Vobi11cGxvYWQtcHJvZ3Jlc3MtYmFyLm1vZHVsZSc7XG5pbXBvcnQgeyBGb2Vobk11bHRpVXBsb2FkQ29tcG9uZW50IH0gZnJvbSAnLi9mb2Vobi1tdWx0aS11cGxvYWQuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgRm9laG5JY29uc01vZHVsZSxcbiAgICAgICAgRm9laG5WYWxpZGF0aW9uQWxlcnRzTW9kdWxlLFxuICAgICAgICBTZGtEaWN0aW9uYXJ5TW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgRm9laG5VcGxvYWRQcm9ncmVzc0Jhck1vZHVsZVxuICAgIF0sXG4gICAgZGVjbGFyYXRpb25zOiBbRm9laG5NdWx0aVVwbG9hZENvbXBvbmVudF0sXG4gICAgZXhwb3J0czogW0ZvZWhuTXVsdGlVcGxvYWRDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIEZvZWhuTXVsdGlVcGxvYWRNb2R1bGUge31cbiJdfQ==
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { concat, EMPTY, throwError, toArray } from 'rxjs';
|
|
3
|
-
import { catchError, filter, map, tap } from 'rxjs/operators';
|
|
4
|
-
import { GrowlType } from '../../foehn-growl/growl-types';
|
|
5
|
-
import { UploaderHelper } from '../uploader.helper';
|
|
6
|
-
import { DocumentsWithErrors } from './multi-upload.type';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@angular/common/http";
|
|
9
|
-
import * as i2 from "../../foehn-growl/growl-broker.service";
|
|
10
|
-
import * as i3 from "../../gesdem/gesdem-handler.service";
|
|
11
|
-
import * as i4 from "../../sdk-appinfo/application-info.service";
|
|
12
|
-
import * as i5 from "../../sdk-dictionary/sdk-dictionary.service";
|
|
13
|
-
import * as i6 from "../foehn-upload-progress-bar/upload-progress.service";
|
|
14
|
-
export class MultiUploadService {
|
|
15
|
-
constructor(httpClient, growlService, gesdemHandlerService, applicationInfoService, dictionaryService, uploadProgressService) {
|
|
16
|
-
this.httpClient = httpClient;
|
|
17
|
-
this.growlService = growlService;
|
|
18
|
-
this.gesdemHandlerService = gesdemHandlerService;
|
|
19
|
-
this.applicationInfoService = applicationInfoService;
|
|
20
|
-
this.dictionaryService = dictionaryService;
|
|
21
|
-
this.uploadProgressService = uploadProgressService;
|
|
22
|
-
// A way to have a unique Id per file
|
|
23
|
-
this.globalSequence = 0;
|
|
24
|
-
this.NB_CONCURRENT_FILES_TO_UPLOAD = 3;
|
|
25
|
-
this.mergeDocumentsWithErrors = (arrayOfDocumentsWithErrors) => {
|
|
26
|
-
const mergedResponse = new DocumentsWithErrors();
|
|
27
|
-
arrayOfDocumentsWithErrors.forEach(item => {
|
|
28
|
-
if (!!item.documents?.length) {
|
|
29
|
-
if (!mergedResponse.documents) {
|
|
30
|
-
mergedResponse.documents = [];
|
|
31
|
-
}
|
|
32
|
-
mergedResponse.documents = mergedResponse.documents.concat(item.documents);
|
|
33
|
-
}
|
|
34
|
-
if (!!item.errors?.length) {
|
|
35
|
-
if (!mergedResponse.errors) {
|
|
36
|
-
mergedResponse.errors = [];
|
|
37
|
-
}
|
|
38
|
-
mergedResponse.errors = mergedResponse.errors.concat(item.errors);
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
return mergedResponse;
|
|
42
|
-
};
|
|
43
|
-
this.uploaderHelper = new UploaderHelper(this.dictionaryService, this.applicationInfoService);
|
|
44
|
-
}
|
|
45
|
-
uploadDocuments(baseUrl, formKey, label, files, key, isMultiple, language, shouldDisplayFileSavedConfirmation) {
|
|
46
|
-
const reference = this.gesdemHandlerService.lastResponse.meta.reference;
|
|
47
|
-
if (!!reference?.length) {
|
|
48
|
-
const url = `${baseUrl}/upload/${reference}`;
|
|
49
|
-
const filesToGroup = [...files];
|
|
50
|
-
const groupsOfFiles = [];
|
|
51
|
-
while (!!filesToGroup.length) {
|
|
52
|
-
groupsOfFiles.push(filesToGroup.splice(0, this.NB_CONCURRENT_FILES_TO_UPLOAD));
|
|
53
|
-
}
|
|
54
|
-
const arrayOfDocumentsWithErrorsObservable = groupsOfFiles.map((groupOfFile, index) => {
|
|
55
|
-
const documents = groupOfFile.map(file => this.uploaderHelper.mapToDocumentReference(file, label, key, isMultiple, new Date().getTime(), this.globalSequence++));
|
|
56
|
-
const formData = this.uploaderHelper.mapToFormData(documents, formKey, language);
|
|
57
|
-
return this.getDocumentsWithErrorsObservable(url, formData, shouldDisplayFileSavedConfirmation, index, groupsOfFiles.length);
|
|
58
|
-
});
|
|
59
|
-
if (arrayOfDocumentsWithErrorsObservable.length === 1) {
|
|
60
|
-
return arrayOfDocumentsWithErrorsObservable[0];
|
|
61
|
-
}
|
|
62
|
-
// concat() operator sequentially emits all values from the given Observable and then proceed to the next one.
|
|
63
|
-
return concat(...arrayOfDocumentsWithErrorsObservable).pipe(
|
|
64
|
-
// toArray() operator collects all the values emitted by the source observable into an array and sends it to the observer
|
|
65
|
-
toArray(), map(this.mergeDocumentsWithErrors.bind(this)));
|
|
66
|
-
}
|
|
67
|
-
return EMPTY;
|
|
68
|
-
}
|
|
69
|
-
deleteDocument(baseUrl, document) {
|
|
70
|
-
if (document.readonly) {
|
|
71
|
-
const message = this.dictionaryService.getKeySync('foehn-uploader.delete-readonly-error-message');
|
|
72
|
-
this.growlService.addWithType(GrowlType.DANGER, message);
|
|
73
|
-
return throwError(() => new Error('Readonly document cannot be deleted'));
|
|
74
|
-
}
|
|
75
|
-
const reference = this.gesdemHandlerService.lastResponse.meta.reference;
|
|
76
|
-
const url = `${baseUrl}/delete/${reference}/doc/${document.reference}`;
|
|
77
|
-
return this.httpClient.delete(url).pipe(
|
|
78
|
-
// Reflect the document once the update is done to ease chaining observables.
|
|
79
|
-
map(() => document), tap(() => {
|
|
80
|
-
const message = this.dictionaryService.getKeySync('foehn-uploader.files-deleted-success-message', { filename: document.filename });
|
|
81
|
-
this.growlService.addWithType(GrowlType.SUCCESS, message);
|
|
82
|
-
}), catchError((e) => {
|
|
83
|
-
const message = this.dictionaryService.getKeySync('foehn-uploader.delete-error-message');
|
|
84
|
-
this.growlService.addWithType(GrowlType.DANGER, message);
|
|
85
|
-
return throwError(() => e);
|
|
86
|
-
}));
|
|
87
|
-
}
|
|
88
|
-
getDownloadUrl(baseUrl, document) {
|
|
89
|
-
const reference = this.gesdemHandlerService.lastResponse.meta.reference;
|
|
90
|
-
return `${baseUrl}/download/${reference}/doc/${document.reference}`;
|
|
91
|
-
}
|
|
92
|
-
getDocumentsWithErrorsObservable(url, formData, shouldDisplayFileSavedConfirmation, packageIndex = 0, nbPackages = 1) {
|
|
93
|
-
return this.httpClient
|
|
94
|
-
.post(url, formData, {
|
|
95
|
-
reportProgress: true,
|
|
96
|
-
observe: 'events',
|
|
97
|
-
responseType: 'json'
|
|
98
|
-
})
|
|
99
|
-
.pipe(filter((e) => this.uploadProgressService.manageUploadEventFilter(e, packageIndex, nbPackages)), map((e) => e.body), tap(result => {
|
|
100
|
-
const successfulDocumentsCount = result.documents && result.documents.length;
|
|
101
|
-
if (successfulDocumentsCount &&
|
|
102
|
-
shouldDisplayFileSavedConfirmation) {
|
|
103
|
-
const message = this.dictionaryService.getKeySync('foehn-uploader.files-saved-success-message', {
|
|
104
|
-
successfulDocumentsCount: successfulDocumentsCount.toString()
|
|
105
|
-
});
|
|
106
|
-
this.growlService.addWithType(GrowlType.SUCCESS, message);
|
|
107
|
-
}
|
|
108
|
-
}), catchError((e) => {
|
|
109
|
-
this.uploadProgressService.analysisProgress.next(false);
|
|
110
|
-
this.uploadProgressService.showProgress.next(false);
|
|
111
|
-
const message = this.dictionaryService.getKeySync('foehn-uploader.transmission-error-message');
|
|
112
|
-
this.growlService.addWithType(GrowlType.DANGER, message);
|
|
113
|
-
return throwError(() => e);
|
|
114
|
-
}));
|
|
115
|
-
}
|
|
116
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MultiUploadService, deps: [{ token: i1.HttpClient }, { token: i2.GrowlBrokerService }, { token: i3.GesdemHandlerService }, { token: i4.ApplicationInfoService }, { token: i5.SdkDictionaryService }, { token: i6.UploadProgressService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
117
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MultiUploadService, providedIn: 'root' }); }
|
|
118
|
-
}
|
|
119
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MultiUploadService, decorators: [{
|
|
120
|
-
type: Injectable,
|
|
121
|
-
args: [{
|
|
122
|
-
providedIn: 'root'
|
|
123
|
-
}]
|
|
124
|
-
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.GrowlBrokerService }, { type: i3.GesdemHandlerService }, { type: i4.ApplicationInfoService }, { type: i5.SdkDictionaryService }, { type: i6.UploadProgressService }] });
|
|
125
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktdXBsb2FkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tdXBsb2FkL2ZvZWhuLW11bHRpLXVwbG9hZC9tdWx0aS11cGxvYWQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFjLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzlELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQU0xRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7O0FBSzFELE1BQU0sT0FBTyxrQkFBa0I7SUFNM0IsWUFDWSxVQUFzQixFQUN0QixZQUFnQyxFQUNoQyxvQkFBMEMsRUFDMUMsc0JBQThDLEVBQzlDLGlCQUF1QyxFQUN2QyxxQkFBNEM7UUFMNUMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixpQkFBWSxHQUFaLFlBQVksQ0FBb0I7UUFDaEMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUMxQywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQzlDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBc0I7UUFDdkMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQVh4RCxxQ0FBcUM7UUFDN0IsbUJBQWMsR0FBRyxDQUFDLENBQUM7UUFFVixrQ0FBNkIsR0FBRyxDQUFDLENBQUM7UUFtTDNDLDZCQUF3QixHQUFHLENBQy9CLDBC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QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFdmVudCwgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY29uY2F0LCBFTVBUWSwgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciwgdG9BcnJheSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmlsdGVyLCBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgR3Jvd2xCcm9rZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZm9laG4tZ3Jvd2wvZ3Jvd2wtYnJva2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgR3Jvd2xUeXBlIH0gZnJvbSAnLi4vLi4vZm9laG4tZ3Jvd2wvZ3Jvd2wtdHlwZXMnO1xuaW1wb3J0IHsgR2VzZGVtSGFuZGxlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9nZXNkZW0vZ2VzZGVtLWhhbmRsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkluZm9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2RrLWFwcGluZm8vYXBwbGljYXRpb24taW5mby5zZXJ2aWNlJztcbmltcG9ydCB7IFNka0RpY3Rpb25hcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2RrLWRpY3Rpb25hcnkvc2RrLWRpY3Rpb25hcnkuc2VydmljZSc7XG5pbXBvcnQgeyBEb2N1bWVudFJlZmVyZW5jZSB9IGZyb20gJy4uL2RvY3VtZW50LXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBVcGxvYWRQcm9ncmVzc1NlcnZpY2UgfSBmcm9tICcuLi9mb2Vobi11cGxvYWQtcHJvZ3Jlc3MtYmFyL3VwbG9hZC1wcm9ncmVzcy5zZXJ2aWNlJztcbmltcG9ydCB7IFVwbG9hZGVySGVscGVyIH0gZnJvbSAnLi4vdXBsb2FkZXIuaGVscGVyJztcbmltcG9ydCB7IERvY3VtZW50c1dpdGhFcnJvcnMgfSBmcm9tICcuL211bHRpLXVwbG9hZC50eXBlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBNdWx0aVVwbG9hZFNlcnZpY2Uge1xuICAgIC8vIEEgd2F5IHRvIGhhdmUgYSB1bmlxdWUgSWQgcGVyIGZpbGVcbiAgICBwcml2YXRlIGdsb2JhbFNlcXVlbmNlID0gMDtcbiAgICBwcml2YXRlIHVwbG9hZGVySGVscGVyOiBVcGxvYWRlckhlbHBlcjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IE5CX0NPTkNVUlJFTlRfRklMRVNfVE9fVVBMT0FEID0gMztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXG4gICAgICAgIHByaXZhdGUgZ3Jvd2xTZXJ2aWNlOiBHcm93bEJyb2tlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZ2VzZGVtSGFuZGxlclNlcnZpY2U6IEdlc2RlbUhhbmRsZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGFwcGxpY2F0aW9uSW5mb1NlcnZpY2U6IEFwcGxpY2F0aW9uSW5mb1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZGljdGlvbmFyeVNlcnZpY2U6IFNka0RpY3Rpb25hcnlTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHVwbG9hZFByb2dyZXNzU2VydmljZTogVXBsb2FkUHJvZ3Jlc3NTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHRoaXMudXBsb2FkZXJIZWxwZXIgPSBuZXcgVXBsb2FkZXJIZWxwZXIoXG4gICAgICAgICAgICB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLFxuICAgICAgICAgICAgdGhpcy5hcHBsaWNhdGlvbkluZm9TZXJ2aWNlXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgdXBsb2FkRG9jdW1lbnRzKFxuICAgICAgICBiYXNlVXJsOiBzdHJpbmcsXG4gICAgICAgIGZvcm1LZXk6IHN0cmluZyxcbiAgICAgICAgbGFiZWw6IHN0cmluZyxcbiAgICAgICAgZmlsZXM6IEZpbGVbXSxcbiAgICAgICAga2V5OiBzdHJpbmcsXG4gICAgICAgIGlzTXVsdGlwbGU6IGJvb2xlYW4sXG4gICAgICAgIGxhbmd1YWdlOiBzdHJpbmcsXG4gICAgICAgIHNob3VsZERpc3BsYXlGaWxlU2F2ZWRDb25maXJtYXRpb246IGJvb2xlYW5cbiAgICApOiBPYnNlcnZhYmxlPERvY3VtZW50c1dpdGhFcnJvcnM+IHtcbiAgICAgICAgY29uc3QgcmVmZXJlbmNlID0gdGhpcy5nZXNkZW1IYW5kbGVyU2VydmljZS5sYXN0UmVzcG9uc2UubWV0YS5yZWZlcmVuY2U7XG4gICAgICAgIGlmICghIXJlZmVyZW5jZT8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCB1cmwgPSBgJHtiYXNlVXJsfS91cGxvYWQvJHtyZWZlcmVuY2V9YDtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVzVG9Hcm91cCA9IFsuLi5maWxlc107XG4gICAgICAgICAgICBjb25zdCBncm91cHNPZkZpbGVzOiBGaWxlW11bXSA9IFtdO1xuXG4gICAgICAgICAgICB3aGlsZSAoISFmaWxlc1RvR3JvdXAubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgZ3JvdXBzT2ZGaWxlcy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBmaWxlc1RvR3JvdXAuc3BsaWNlKDAsIHRoaXMuTkJfQ09OQ1VSUkVOVF9GSUxFU19UT19VUExPQUQpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgYXJyYXlPZkRvY3VtZW50c1dpdGhFcnJvcnNPYnNlcnZhYmxlOiBPYnNlcnZhYmxlPERvY3VtZW50c1dpdGhFcnJvcnM+W10gPVxuICAgICAgICAgICAgICAgIGdyb3Vwc09mRmlsZXMubWFwKChncm91cE9mRmlsZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZG9jdW1lbnRzID0gZ3JvdXBPZkZpbGUubWFwKGZpbGUgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkZXJIZWxwZXIubWFwVG9Eb2N1bWVudFJlZmVyZW5jZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc011bHRpcGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEYXRlKCkuZ2V0VGltZSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2xvYmFsU2VxdWVuY2UrK1xuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmb3JtRGF0YSA9IHRoaXMudXBsb2FkZXJIZWxwZXIubWFwVG9Gb3JtRGF0YShcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50cyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1LZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXREb2N1bWVudHNXaXRoRXJyb3JzT2JzZXJ2YWJsZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkRGlzcGxheUZpbGVTYXZlZENvbmZpcm1hdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBzT2ZGaWxlcy5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKGFycmF5T2ZEb2N1bWVudHNXaXRoRXJyb3JzT2JzZXJ2YWJsZS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYXJyYXlPZkRvY3VtZW50c1dpdGhFcnJvcnNPYnNlcnZhYmxlWzBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyAgY29uY2F0KCkgb3BlcmF0b3Igc2VxdWVudGlhbGx5IGVtaXRzIGFsbCB2YWx1ZXMgZnJvbSB0aGUgZ2l2ZW4gT2JzZXJ2YWJsZSBhbmQgdGhlbiBwcm9jZWVkIHRvIHRoZSBuZXh0IG9uZS5cbiAgICAgICAgICAgIHJldHVybiBjb25jYXQoLi4uYXJyYXlPZkRvY3VtZW50c1dpdGhFcnJvcnNPYnNlcnZhYmxlKS5waXBlKFxuICAgICAgICAgICAgICAgIC8vICB0b0FycmF5KCkgb3BlcmF0b3IgY29sbGVjdHMgYWxsIHRoZSB2YWx1ZXMgZW1pdHRlZCBieSB0aGUgc291cmNlIG9ic2VydmFibGUgaW50byBhbiBhcnJheSBhbmQgc2VuZHMgaXQgdG8gdGhlIG9ic2VydmVyXG4gICAgICAgICAgICAgICAgdG9BcnJheSgpLFxuICAgICAgICAgICAgICAgIG1hcCh0aGlzLm1lcmdlRG9jdW1lbnRzV2l0aEVycm9ycy5iaW5kKHRoaXMpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBFTVBUWTtcbiAgICB9XG5cbiAgICBkZWxldGVEb2N1bWVudChcbiAgICAgICAgYmFzZVVybDogc3RyaW5nLFxuICAgICAgICBkb2N1bWVudDogRG9jdW1lbnRSZWZlcmVuY2VcbiAgICApOiBPYnNlcnZhYmxlPERvY3VtZW50UmVmZXJlbmNlPiB7XG4gICAgICAgIGlmIChkb2N1bWVudC5yZWFkb25seSkge1xuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYyhcbiAgICAgICAgICAgICAgICAnZm9laG4tdXBsb2FkZXIuZGVsZXRlLXJlYWRvbmx5LWVycm9yLW1lc3NhZ2UnXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5ncm93bFNlcnZpY2UuYWRkV2l0aFR5cGUoR3Jvd2xUeXBlLkRBTkdFUiwgbWVzc2FnZSk7XG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihcbiAgICAgICAgICAgICAgICAoKSA9PiBuZXcgRXJyb3IoJ1JlYWRvbmx5IGRvY3VtZW50IGNhbm5vdCBiZSBkZWxldGVkJylcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZWZlcmVuY2UgPSB0aGlzLmdlc2RlbUhhbmRsZXJTZXJ2aWNlLmxhc3RSZXNwb25zZS5tZXRhLnJlZmVyZW5jZTtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7YmFzZVVybH0vZGVsZXRlLyR7cmVmZXJlbmNlfS9kb2MvJHtkb2N1bWVudC5yZWZlcmVuY2V9YDtcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmRlbGV0ZSh1cmwpLnBpcGUoXG4gICAgICAgICAgICAvLyBSZWZsZWN0IHRoZSBkb2N1bWVudCBvbmNlIHRoZSB1cGRhdGUgaXMgZG9uZSB0byBlYXNlIGNoYWluaW5nIG9ic2VydmFibGVzLlxuICAgICAgICAgICAgbWFwKCgpID0+IGRvY3VtZW50KSxcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYyhcbiAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLXVwbG9hZGVyLmZpbGVzLWRlbGV0ZWQtc3VjY2Vzcy1tZXNzYWdlJyxcbiAgICAgICAgICAgICAgICAgICAgeyBmaWxlbmFtZTogZG9jdW1lbnQuZmlsZW5hbWUgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgdGhpcy5ncm93bFNlcnZpY2UuYWRkV2l0aFR5cGUoR3Jvd2xUeXBlLlNVQ0NFU1MsIG1lc3NhZ2UpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlOiB1bmtub3duKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYyhcbiAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLXVwbG9hZGVyLmRlbGV0ZS1lcnJvci1tZXNzYWdlJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgdGhpcy5ncm93bFNlcnZpY2UuYWRkV2l0aFR5cGUoR3Jvd2xUeXBlLkRBTkdFUiwgbWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldERvd25sb2FkVXJsKGJhc2VVcmw6IHN0cmluZywgZG9jdW1lbnQ6IERvY3VtZW50UmVmZXJlbmNlKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgcmVmZXJlbmNlID0gdGhpcy5nZXNkZW1IYW5kbGVyU2VydmljZS5sYXN0UmVzcG9uc2UubWV0YS5yZWZlcmVuY2U7XG4gICAgICAgIHJldHVybiBgJHtiYXNlVXJsfS9kb3dubG9hZC8ke3JlZmVyZW5jZX0vZG9jLyR7ZG9jdW1lbnQucmVmZXJlbmNlfWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREb2N1bWVudHNXaXRoRXJyb3JzT2JzZXJ2YWJsZShcbiAgICAgICAgdXJsOiBzdHJpbmcsXG4gICAgICAgIGZvcm1EYXRhOiBGb3JtRGF0YSxcbiAgICAgICAgc2hvdWxkRGlzcGxheUZpbGVTYXZlZENvbmZpcm1hdGlvbjogYm9vbGVhbixcbiAgICAgICAgcGFja2FnZUluZGV4OiBudW1iZXIgPSAwLFxuICAgICAgICBuYlBhY2thZ2VzOiBudW1iZXIgPSAxXG4gICAgKTogT2JzZXJ2YWJsZTxEb2N1bWVudHNXaXRoRXJyb3JzPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0PERvY3VtZW50c1dpdGhFcnJvcnM+KHVybCwgZm9ybURhdGEsIHtcbiAgICAgICAgICAgICAgICByZXBvcnRQcm9ncmVzczogdHJ1ZSxcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiAnZXZlbnRzJyxcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJ1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcigoZTogSHR0cEV2ZW50PERvY3VtZW50c1dpdGhFcnJvcnM+KSA9PlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZFByb2dyZXNzU2VydmljZS5tYW5hZ2VVcGxvYWRFdmVudEZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgIGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlSW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYlBhY2thZ2VzXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIG1hcChcbiAgICAgICAgICAgICAgICAgICAgKGU6IEh0dHBFdmVudDxEb2N1bWVudHNXaXRoRXJyb3JzPikgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChlIGFzIEh0dHBSZXNwb25zZTxEb2N1bWVudHNXaXRoRXJyb3JzPikuYm9keVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgdGFwKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1Y2Nlc3NmdWxEb2N1bWVudHNDb3VudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuZG9jdW1lbnRzICYmIHJlc3VsdC5kb2N1bWVudHMubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzZnVsRG9jdW1lbnRzQ291bnQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZERpc3BsYXlGaWxlU2F2ZWRDb25maXJtYXRpb25cbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb2Vobi11cGxvYWRlci5maWxlcy1zYXZlZC1zdWNjZXNzLW1lc3NhZ2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2Vzc2Z1bERvY3VtZW50c0NvdW50OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2Vzc2Z1bERvY3VtZW50c0NvdW50LnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ncm93bFNlcnZpY2UuYWRkV2l0aFR5cGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgR3Jvd2xUeXBlLlNVQ0NFU1MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGU6IHVua25vd24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRQcm9ncmVzc1NlcnZpY2UuYW5hbHlzaXNQcm9ncmVzcy5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRQcm9ncmVzc1NlcnZpY2Uuc2hvd1Byb2dyZXNzLm5leHQoZmFsc2UpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoXG4gICAgICAgICAgICAgICAgICAgICAgICAnZm9laG4tdXBsb2FkZXIudHJhbnNtaXNzaW9uLWVycm9yLW1lc3NhZ2UnXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ3Jvd2xTZXJ2aWNlLmFkZFdpdGhUeXBlKEdyb3dsVHlwZS5EQU5HRVIsIG1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1lcmdlRG9jdW1lbnRzV2l0aEVycm9ycyA9IChcbiAgICAgICAgYXJyYXlPZkRvY3VtZW50c1dpdGhFcnJvcnM6IERvY3VtZW50c1dpdGhFcnJvcnNbXVxuICAgICk6IERvY3VtZW50c1dpdGhFcnJvcnMgPT4ge1xuICAgICAgICBjb25zdCBtZXJnZWRSZXNwb25zZTogRG9jdW1lbnRzV2l0aEVycm9ycyA9IG5ldyBEb2N1bWVudHNXaXRoRXJyb3JzKCk7XG4gICAgICAgIGFycmF5T2ZEb2N1bWVudHNXaXRoRXJyb3JzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBpZiAoISFpdGVtLmRvY3VtZW50cz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFtZXJnZWRSZXNwb25zZS5kb2N1bWVudHMpIHtcbiAgICAgICAgICAgICAgICAgICAgbWVyZ2VkUmVzcG9uc2UuZG9jdW1lbnRzID0gW107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1lcmdlZFJlc3BvbnNlLmRvY3VtZW50cyA9IG1lcmdlZFJlc3BvbnNlLmRvY3VtZW50cy5jb25jYXQoXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uZG9jdW1lbnRzXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghIWl0ZW0uZXJyb3JzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBpZiAoIW1lcmdlZFJlc3BvbnNlLmVycm9ycykge1xuICAgICAgICAgICAgICAgICAgICBtZXJnZWRSZXNwb25zZS5lcnJvcnMgPSBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbWVyZ2VkUmVzcG9uc2UuZXJyb3JzID0gbWVyZ2VkUmVzcG9uc2UuZXJyb3JzLmNvbmNhdChcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5lcnJvcnNcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG1lcmdlZFJlc3BvbnNlO1xuICAgIH07XG59XG4iXX0=
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
// eslint-disable max-classes-per-file
|
|
2
|
-
export class DocumentError {
|
|
3
|
-
}
|
|
4
|
-
export class DocumentsWithErrors {
|
|
5
|
-
}
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktdXBsb2FkLnR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tdXBsb2FkL2ZvZWhuLW11bHRpLXVwbG9hZC9tdWx0aS11cGxvYWQudHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxzQ0FBc0M7QUFDdEMsTUFBTSxPQUFPLGFBQWE7Q0FLekI7QUFFRCxNQUFNLE9BQU8sbUJBQW1CO0NBRy9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRG9jdW1lbnRSZWZlcmVuY2UgfSBmcm9tICcuLi9kb2N1bWVudC1yZWZlcmVuY2UnO1xuXG4vLyBlc2xpbnQtZGlzYWJsZSBtYXgtY2xhc3Nlcy1wZXItZmlsZVxuZXhwb3J0IGNsYXNzIERvY3VtZW50RXJyb3Ige1xuICAgIGtleTogc3RyaW5nO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgZm9ybUtleTogc3RyaW5nO1xuICAgIGVycm9yQ29kZTogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgRG9jdW1lbnRzV2l0aEVycm9ycyB7XG4gICAgZG9jdW1lbnRzOiBEb2N1bWVudFJlZmVyZW5jZVtdO1xuICAgIGVycm9yczogRG9jdW1lbnRFcnJvcltdO1xufVxuIl19
|