@dsivd/prestations-ng 15.5.13 → 16.0.0-beta1

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.
Files changed (590) hide show
  1. package/CHANGELOG.md +666 -1
  2. package/CONTRIBUTING.md +32 -1
  3. package/ESLINT_MIGRATION_GUIDE.md +1 -1
  4. package/README.md +6 -0
  5. package/UPGRADING_V12.md +0 -15
  6. package/UPGRADING_V13.md +0 -15
  7. package/UPGRADING_V14.md +8 -26
  8. package/UPGRADING_V15.md +113 -0
  9. package/UPGRADING_V16.md +63 -0
  10. package/abstract-page-component.d.ts +8 -8
  11. package/directives/currency-formatter.directive.d.ts +4 -1
  12. package/directives/iban-formatter.directive.d.ts +1 -1
  13. package/directives/ide-formatter.directive.d.ts +1 -1
  14. package/directives/ndc-formatter.directive.d.ts +1 -1
  15. package/dsivd-prestations-ng-v16.0.0-beta1.tgz +0 -0
  16. package/esm2020/abstract-page-component.mjs +223 -0
  17. package/esm2020/directives/currency-formatter.directive.mjs +143 -0
  18. package/{esm2015/directives/formatter.module.js → esm2020/directives/formatter.module.mjs} +8 -8
  19. package/{esm2015/directives/iban-formatter.directive.js → esm2020/directives/iban-formatter.directive.mjs} +4 -4
  20. package/{esm2015/directives/ide-formatter.directive.js → esm2020/directives/ide-formatter.directive.mjs} +4 -4
  21. package/{esm2015/directives/ndc-formatter.directive.js → esm2020/directives/ndc-formatter.directive.mjs} +4 -4
  22. package/{esm2015/dsivd-prestations-ng.js → esm2020/dsivd-prestations-ng.mjs} +0 -0
  23. package/{esm2015/foehn-address/address.type.js → esm2020/foehn-address/address.type.mjs} +1 -1
  24. package/esm2020/foehn-address/foehn-address.module.mjs +55 -0
  25. package/{esm2015/foehn-address/foehn-display-address.component.js → esm2020/foehn-address/foehn-display-address.component.mjs} +5 -9
  26. package/esm2020/foehn-address/foehn-input-address.component.mjs +406 -0
  27. package/esm2020/foehn-address/foehn-input-foreign-locality.component.mjs +66 -0
  28. package/esm2020/foehn-address/foehn-input-foreign-street.component.mjs +55 -0
  29. package/esm2020/foehn-agenda/calendar.type.mjs +3 -0
  30. package/esm2020/foehn-agenda/current-week.type.mjs +4 -0
  31. package/esm2020/foehn-agenda/day-slots.type.mjs +3 -0
  32. package/esm2020/foehn-agenda/foehn-agenda-navigation/foehn-agenda-navigation.component.mjs +74 -0
  33. package/esm2020/foehn-agenda/foehn-agenda-timeslot-panel/foehn-agenda-timeslot-panel.component.mjs +242 -0
  34. package/esm2020/foehn-agenda/foehn-agenda.component.mjs +95 -0
  35. package/esm2020/foehn-agenda/foehn-agenda.module.mjs +62 -0
  36. package/esm2020/foehn-agenda/pagination-week.type.mjs +3 -0
  37. package/esm2020/foehn-agenda/selected-slot.type.mjs +3 -0
  38. package/esm2020/foehn-autocomplete/foehn-autocomplete.component.mjs +608 -0
  39. package/esm2020/foehn-autocomplete/foehn-autocomplete.module.mjs +40 -0
  40. package/esm2020/foehn-boolean/foehn-boolean-checkbox.component.mjs +28 -0
  41. package/esm2020/foehn-boolean/foehn-boolean-radio.component.mjs +40 -0
  42. package/esm2020/foehn-boolean/foehn-boolean.module.mjs +33 -0
  43. package/esm2020/foehn-breadcrumb/breadcrumb-event.service.mjs +181 -0
  44. package/{esm2015/foehn-breadcrumb/breadcrumb.js → esm2020/foehn-breadcrumb/breadcrumb.mjs} +0 -0
  45. package/esm2020/foehn-breadcrumb/foehn-breadcrumb.component.mjs +80 -0
  46. package/esm2020/foehn-breadcrumb/foehn-breadcrumb.module.mjs +19 -0
  47. package/esm2020/foehn-checkables/foehn-checkable-group.component.mjs +298 -0
  48. package/esm2020/foehn-checkables/foehn-checkables.module.mjs +68 -0
  49. package/esm2020/foehn-checkables/foehn-checkbox.component.mjs +37 -0
  50. package/esm2020/foehn-checkables/foehn-radio.component.mjs +64 -0
  51. package/esm2020/foehn-checkables/foehn-select.component.mjs +53 -0
  52. package/{esm2015/foehn-checkables/form-select-option-group.js → esm2020/foehn-checkables/form-select-option-group.mjs} +0 -0
  53. package/{esm2015/foehn-checkables/form-select-option.js → esm2020/foehn-checkables/form-select-option.mjs} +0 -0
  54. package/{esm2015/foehn-confirm-modal/foehn-confirm-modal-content.js → esm2020/foehn-confirm-modal/foehn-confirm-modal-content.mjs} +1 -1
  55. package/esm2020/foehn-confirm-modal/foehn-confirm-modal.component.mjs +40 -0
  56. package/esm2020/foehn-confirm-modal/foehn-confirm-modal.module.mjs +19 -0
  57. package/{esm2015/foehn-confirm-modal/foehn-confirm-modal.service.js → esm2020/foehn-confirm-modal/foehn-confirm-modal.service.mjs} +4 -4
  58. package/esm2020/foehn-date-picker/date-picker-navigation.helper.mjs +167 -0
  59. package/esm2020/foehn-date-picker/date-picker.helper.mjs +132 -0
  60. package/{esm2015/foehn-date-picker/day-month.type.js → esm2020/foehn-date-picker/day-month.type.mjs} +0 -0
  61. package/{esm2015/foehn-date-picker/focused-day.type.js → esm2020/foehn-date-picker/focused-day.type.mjs} +0 -0
  62. package/esm2020/foehn-date-picker/foehn-date-picker.component.mjs +387 -0
  63. package/esm2020/foehn-date-picker/foehn-date-picker.module.mjs +40 -0
  64. package/{esm2015/foehn-date-picker/month-year.type.js → esm2020/foehn-date-picker/month-year.type.mjs} +0 -0
  65. package/esm2020/foehn-date-picker-button/foehn-date-picker-button.component.mjs +97 -0
  66. package/esm2020/foehn-date-picker-button/foehn-date-picker-button.module.mjs +36 -0
  67. package/esm2020/foehn-debug-summary/foehn-debug-summary.component.mjs +67 -0
  68. package/{esm2015/foehn-debug-summary/foehn-debug-summary.component.module.js → esm2020/foehn-debug-summary/foehn-debug-summary.component.module.mjs} +7 -7
  69. package/esm2020/foehn-decision-electronique/foehn-decision-electronique.component.mjs +37 -0
  70. package/esm2020/foehn-decision-electronique/foehn-decision-electronique.module.mjs +32 -0
  71. package/esm2020/foehn-footer/foehn-footer.component.mjs +130 -0
  72. package/{esm2015/foehn-footer/foehn-footer.module.js → esm2020/foehn-footer/foehn-footer.module.mjs} +6 -6
  73. package/{esm2015/foehn-footer/footer-link.type.js → esm2020/foehn-footer/footer-link.type.mjs} +0 -0
  74. package/esm2020/foehn-form/foehn-form.component.mjs +135 -0
  75. package/esm2020/foehn-form/foehn-form.module.mjs +32 -0
  76. package/esm2020/foehn-form/register-ng-model.service.mjs +23 -0
  77. package/esm2020/foehn-growl/foehn-growl.component.mjs +44 -0
  78. package/{esm2015/foehn-growl/foehn-growl.module.js → esm2020/foehn-growl/foehn-growl.module.mjs} +6 -6
  79. package/{esm2015/foehn-growl/growl-broker.service.js → esm2020/foehn-growl/growl-broker.service.mjs} +5 -5
  80. package/{esm2015/foehn-growl/growl-message.js → esm2020/foehn-growl/growl-message.mjs} +1 -1
  81. package/{esm2015/foehn-growl/growl-types.js → esm2020/foehn-growl/growl-types.mjs} +0 -0
  82. package/esm2020/foehn-header/foehn-header.component.mjs +68 -0
  83. package/esm2020/foehn-header/foehn-header.module.mjs +21 -0
  84. package/{esm2015/foehn-header/foehn-skip-link.component.js → esm2020/foehn-header/foehn-skip-link.component.mjs} +5 -8
  85. package/esm2020/foehn-help-modal/foehn-help-modal.component.mjs +44 -0
  86. package/esm2020/foehn-help-modal/foehn-help-modal.module.mjs +20 -0
  87. package/esm2020/foehn-help-modal/foehn-help-modal.type.mjs +2 -0
  88. package/{esm2015/foehn-icons/abstract-icon-component.js → esm2020/foehn-icons/abstract-icon-component.mjs} +5 -5
  89. package/esm2020/foehn-icons/foehn-icon-calendar.component.mjs +19 -0
  90. package/esm2020/foehn-icons/foehn-icon-check-square-o.component.mjs +19 -0
  91. package/esm2020/foehn-icons/foehn-icon-check.component.mjs +19 -0
  92. package/esm2020/foehn-icons/foehn-icon-chevron-down.component.mjs +19 -0
  93. package/esm2020/foehn-icons/foehn-icon-chevron-left.component.mjs +19 -0
  94. package/esm2020/foehn-icons/foehn-icon-chevron-right.component.mjs +19 -0
  95. package/esm2020/foehn-icons/foehn-icon-chevron-up.component.mjs +19 -0
  96. package/esm2020/foehn-icons/foehn-icon-clock.component.mjs +19 -0
  97. package/esm2020/foehn-icons/foehn-icon-comment-dots.component.mjs +19 -0
  98. package/esm2020/foehn-icons/foehn-icon-edit.component.mjs +19 -0
  99. package/esm2020/foehn-icons/foehn-icon-external-link-alt.component.mjs +19 -0
  100. package/esm2020/foehn-icons/foehn-icon-file-pdf.component.mjs +19 -0
  101. package/esm2020/foehn-icons/foehn-icon-info-circle.component.mjs +19 -0
  102. package/esm2020/foehn-icons/foehn-icon-lock.component.mjs +19 -0
  103. package/esm2020/foehn-icons/foehn-icon-map-marker.component.mjs +19 -0
  104. package/esm2020/foehn-icons/foehn-icon-minus-circle.component.mjs +19 -0
  105. package/esm2020/foehn-icons/foehn-icon-plus-circle.component.mjs +19 -0
  106. package/esm2020/foehn-icons/foehn-icon-plus-square.component.mjs +19 -0
  107. package/esm2020/foehn-icons/foehn-icon-search.component.mjs +19 -0
  108. package/esm2020/foehn-icons/foehn-icon-times.component.mjs +19 -0
  109. package/esm2020/foehn-icons/foehn-icon-trash-alt.component.mjs +19 -0
  110. package/esm2020/foehn-icons/foehn-icon-unlock-alt.component.mjs +19 -0
  111. package/{esm2015/foehn-icons/foehn-icons.module.js → esm2020/foehn-icons/foehn-icons.module.mjs} +20 -20
  112. package/esm2020/foehn-input/foehn-input-email.component.mjs +59 -0
  113. package/esm2020/foehn-input/foehn-input-hidden.component.mjs +55 -0
  114. package/esm2020/foehn-input/foehn-input-number.component.mjs +276 -0
  115. package/esm2020/foehn-input/foehn-input-password.component.mjs +52 -0
  116. package/esm2020/foehn-input/foehn-input-phone.component.mjs +92 -0
  117. package/{esm2015/foehn-input/foehn-input-string.component.js → esm2020/foehn-input/foehn-input-string.component.mjs} +5 -5
  118. package/esm2020/foehn-input/foehn-input-text.component.mjs +76 -0
  119. package/esm2020/foehn-input/foehn-input-textarea.component.mjs +109 -0
  120. package/esm2020/foehn-input/foehn-input.component.mjs +390 -0
  121. package/esm2020/foehn-input/foehn-input.module.mjs +93 -0
  122. package/{esm2015/foehn-input/pattern.const.js → esm2020/foehn-input/pattern.const.mjs} +0 -0
  123. package/esm2020/foehn-input-date/foehn-input-date.component.mjs +118 -0
  124. package/esm2020/foehn-input-date-time/foehn-input-date-time.component.mjs +143 -0
  125. package/esm2020/foehn-input-time/foehn-input-time.component.mjs +74 -0
  126. package/esm2020/foehn-list/foehn-list.component.mjs +128 -0
  127. package/esm2020/foehn-list/foehn-list.module.mjs +19 -0
  128. package/{esm2015/foehn-list/page-change-event.js → esm2020/foehn-list/page-change-event.mjs} +0 -0
  129. package/esm2020/foehn-menu-prestation/abstract-list-item-detail-page.component.mjs +122 -0
  130. package/{esm2015/foehn-menu-prestation/abstract-menu-page.component.js → esm2020/foehn-menu-prestation/abstract-menu-page.component.mjs} +4 -4
  131. package/{esm2015/foehn-menu-prestation/abstract-page-from-menu.component.js → esm2020/foehn-menu-prestation/abstract-page-from-menu.component.mjs} +4 -4
  132. package/esm2020/foehn-menu-prestation/foehn-error-pill/foehn-error-pill.component.mjs +23 -0
  133. package/{esm2015/foehn-menu-prestation/foehn-list-summary/foehn-list-item-description.js → esm2020/foehn-menu-prestation/foehn-list-summary/foehn-list-item-description.mjs} +0 -0
  134. package/{esm2015/foehn-menu-prestation/foehn-list-summary/foehn-list-item.js → esm2020/foehn-menu-prestation/foehn-list-summary/foehn-list-item.mjs} +0 -0
  135. package/esm2020/foehn-menu-prestation/foehn-list-summary/foehn-list-summary.component.mjs +71 -0
  136. package/esm2020/foehn-menu-prestation/foehn-menu-items/foehn-menu-item/foehn-menu-item.component.mjs +35 -0
  137. package/esm2020/foehn-menu-prestation/foehn-menu-items/foehn-menu-item-transmit/foehn-menu-item-transmit.component.mjs +51 -0
  138. package/esm2020/foehn-menu-prestation/foehn-menu-prestation.module.mjs +59 -0
  139. package/{esm2015/foehn-misc/foehn-abbr.component.js → esm2020/foehn-misc/foehn-abbr.component.mjs} +5 -9
  140. package/{esm2015/foehn-misc/foehn-misc.module.js → esm2020/foehn-misc/foehn-misc.module.mjs} +5 -5
  141. package/esm2020/foehn-modal/foehn-modal.component.mjs +94 -0
  142. package/esm2020/foehn-modal/foehn-modal.module.mjs +21 -0
  143. package/esm2020/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.component.mjs +268 -0
  144. package/esm2020/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.module.mjs +40 -0
  145. package/esm2020/foehn-nav13/foehn-input-nav13.component.mjs +114 -0
  146. package/esm2020/foehn-nav13/foehn-input-nav13.module.mjs +32 -0
  147. package/esm2020/foehn-navigation/foehn-navigation.component.mjs +94 -0
  148. package/esm2020/foehn-navigation/foehn-navigation.module.mjs +32 -0
  149. package/esm2020/foehn-navigation/foehn-navigation.service.mjs +303 -0
  150. package/{esm2015/foehn-notfound/foehn-notfound.component.js → esm2020/foehn-notfound/foehn-notfound.component.mjs} +7 -10
  151. package/esm2020/foehn-notfound/foehn-notfound.module.mjs +20 -0
  152. package/{esm2015/foehn-page/foehn-page-counter.component.js → esm2020/foehn-page/foehn-page-counter.component.mjs} +5 -8
  153. package/esm2020/foehn-page/foehn-page-modal.component.mjs +53 -0
  154. package/{esm2015/foehn-page/foehn-page-modal.service.js → esm2020/foehn-page/foehn-page-modal.service.mjs} +4 -4
  155. package/esm2020/foehn-page/foehn-page.component.mjs +218 -0
  156. package/esm2020/foehn-page/foehn-page.module.mjs +78 -0
  157. package/{esm2015/foehn-page/foehn-page.service.js → esm2020/foehn-page/foehn-page.service.mjs} +4 -4
  158. package/esm2020/foehn-recap-section/foehn-recap-section.component.mjs +88 -0
  159. package/esm2020/foehn-recap-section/foehn-recap-section.module.mjs +20 -0
  160. package/{esm2015/foehn-recap-section/foehn-recap-section.type.js → esm2020/foehn-recap-section/foehn-recap-section.type.mjs} +0 -0
  161. package/{esm2015/foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.component.js → esm2020/foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.component.mjs} +5 -9
  162. package/{esm2015/foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.module.js → esm2020/foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.module.mjs} +6 -6
  163. package/esm2020/foehn-status-progress-bar/foehn-status-progress-bar.component.mjs +56 -0
  164. package/esm2020/foehn-status-progress-bar/foehn-status-progress-bar.module.mjs +20 -0
  165. package/esm2020/foehn-table/foehn-table-column-configuration.mjs +3 -0
  166. package/esm2020/foehn-table/foehn-table-page-change-event.mjs +3 -0
  167. package/esm2020/foehn-table/foehn-table.component.mjs +148 -0
  168. package/esm2020/foehn-table/foehn-table.module.mjs +32 -0
  169. package/esm2020/foehn-table/tableSort.mjs +3 -0
  170. package/esm2020/foehn-upload/abstract-foehn-uploader.component.mjs +192 -0
  171. package/{esm2015/foehn-upload/document-reference.js → esm2020/foehn-upload/document-reference.mjs} +0 -0
  172. package/esm2020/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.service.mjs +71 -0
  173. package/{esm2015/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.type.js → esm2020/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.type.mjs} +0 -0
  174. package/esm2020/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.component.mjs +174 -0
  175. package/esm2020/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.module.mjs +40 -0
  176. package/esm2020/foehn-upload/foehn-multi-upload/foehn-multi-upload.component.mjs +224 -0
  177. package/esm2020/foehn-upload/foehn-multi-upload/foehn-multi-upload.module.mjs +40 -0
  178. package/esm2020/foehn-upload/foehn-multi-upload/multi-upload.service.mjs +83 -0
  179. package/{esm2015/foehn-upload/foehn-multi-upload/multi-upload.type.js → esm2020/foehn-upload/foehn-multi-upload/multi-upload.type.mjs} +0 -0
  180. package/esm2020/foehn-upload/foehn-multi-upload/pending-upload.service.mjs +158 -0
  181. package/esm2020/foehn-upload/foehn-picture-upload/foehn-picture-upload.component.mjs +202 -0
  182. package/esm2020/foehn-upload/foehn-picture-upload/foehn-picture-upload.module.mjs +44 -0
  183. package/esm2020/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.component.mjs +75 -0
  184. package/esm2020/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.module.mjs +21 -0
  185. package/esm2020/foehn-upload/foehn-upload-progress-bar/upload-progress.service.mjs +62 -0
  186. package/esm2020/foehn-upload/foehn-upload-progress-bar/upload-progress.type.mjs +3 -0
  187. package/{esm2015/foehn-upload/pending-upload.type.js → esm2020/foehn-upload/pending-upload.type.mjs} +1 -1
  188. package/esm2020/foehn-upload/uploader.helper.mjs +327 -0
  189. package/{esm2015/foehn-user-connected-as/foehn-user-connected-as.component.js → esm2020/foehn-user-connected-as/foehn-user-connected-as.component.mjs} +5 -8
  190. package/{esm2015/foehn-user-connected-as/foehn-user-connected-as.module.js → esm2020/foehn-user-connected-as/foehn-user-connected-as.module.mjs} +6 -6
  191. package/esm2020/foehn-validation-alert-summary/foehn-validation-alert-summary.component.mjs +96 -0
  192. package/esm2020/foehn-validation-alert-summary/foehn-validation-alert-summary.module.mjs +19 -0
  193. package/esm2020/foehn-validation-alerts/foehn-validation-alerts.component.mjs +29 -0
  194. package/{esm2015/foehn-validation-alerts/foehn-validation-alerts.module.js → esm2020/foehn-validation-alerts/foehn-validation-alerts.module.mjs} +6 -6
  195. package/esm2020/form-error.mjs +2 -0
  196. package/esm2020/form-post-response.mjs +10 -0
  197. package/{esm2015/gesdem/gesdem-error-handler.service.js → esm2020/gesdem/gesdem-error-handler.service.mjs} +4 -4
  198. package/esm2020/gesdem/gesdem-event.service.mjs +38 -0
  199. package/esm2020/gesdem/gesdem-handler.service.mjs +160 -0
  200. package/esm2020/gesdem/gesdem-loader.guard.mjs +41 -0
  201. package/{esm2015/gesdem/gesdem-statut-utils.js → esm2020/gesdem/gesdem-statut-utils.mjs} +0 -0
  202. package/esm2020/gesdem-action-recovery/gesdem-action-recovery-login/gesdem-action-recovery-login.component.mjs +101 -0
  203. package/esm2020/gesdem-action-recovery/gesdem-action-recovery-registration/gesdem-action-recovery-registration.component.mjs +130 -0
  204. package/esm2020/gesdem-action-recovery/gesdem-action-recovery.module.mjs +50 -0
  205. package/esm2020/gesdem-action-recovery/gesdem-action-recovery.service.mjs +82 -0
  206. package/{esm2015/gesdem-action-recovery/reprise-info.js → esm2020/gesdem-action-recovery/reprise-info.mjs} +0 -0
  207. package/esm2020/gesdem-confirmation/gesdem-confirmation.component.mjs +201 -0
  208. package/esm2020/gesdem-confirmation/gesdem-confirmation.module.mjs +32 -0
  209. package/esm2020/gesdem-error/gesdem-error.component.mjs +87 -0
  210. package/esm2020/gesdem-error/gesdem-error.module.mjs +36 -0
  211. package/esm2020/global.const.mjs +5 -0
  212. package/esm2020/helpers/object.helper.mjs +89 -0
  213. package/{esm2015/i18n-form.js → esm2020/i18n-form.mjs} +0 -0
  214. package/esm2020/index.mjs +263 -0
  215. package/{esm2015/pipes/currency.pipe.js → esm2020/pipes/currency.pipe.mjs} +4 -4
  216. package/{esm2015/pipes/date.pipe.js → esm2020/pipes/date.pipe.mjs} +4 -4
  217. package/{esm2015/pipes/formatIde.pipe.js → esm2020/pipes/formatIde.pipe.mjs} +3 -3
  218. package/{esm2015/pipes/pipes.module.js → esm2020/pipes/pipes.module.mjs} +7 -7
  219. package/{esm2015/prestations-ng-core.module.js → esm2020/prestations-ng-core.module.mjs} +7 -7
  220. package/esm2020/refinf/model/address-type-light.mjs +3 -0
  221. package/esm2020/refinf/model/canton.mjs +3 -0
  222. package/esm2020/refinf/model/district.mjs +3 -0
  223. package/esm2020/refinf/model/municipality.mjs +3 -0
  224. package/esm2020/refinf/model/place-of-origin.mjs +3 -0
  225. package/esm2020/refinf/model/postal-locality.mjs +3 -0
  226. package/esm2020/sdk-appinfo/application-info.mjs +14 -0
  227. package/esm2020/sdk-appinfo/application-info.service.mjs +104 -0
  228. package/{esm2015/sdk-currency/currency.helper.js → esm2020/sdk-currency/currency.helper.mjs} +3 -3
  229. package/esm2020/sdk-date/date.helper.mjs +100 -0
  230. package/esm2020/sdk-dictionary/default-dictionary.mjs +166 -0
  231. package/{esm2015/sdk-dictionary/sdk-dictionary.module.js → esm2020/sdk-dictionary/sdk-dictionary.module.mjs} +5 -5
  232. package/{esm2015/sdk-dictionary/sdk-dictionary.pipe.js → esm2020/sdk-dictionary/sdk-dictionary.pipe.mjs} +6 -6
  233. package/esm2020/sdk-dictionary/sdk-dictionary.service.mjs +111 -0
  234. package/{esm2015/sdk-epayment/model/EPaymentParameters.js → esm2020/sdk-epayment/model/EPaymentParameters.mjs} +0 -0
  235. package/esm2020/sdk-epayment/sdk-epayment.component.mjs +81 -0
  236. package/esm2020/sdk-epayment/sdk-epayment.module.mjs +21 -0
  237. package/esm2020/sdk-epayment/sdk-epayment.service.mjs +52 -0
  238. package/{esm2015/sdk-recaptcha/grecaptcha/grecaptcha.component.js → esm2020/sdk-recaptcha/grecaptcha/grecaptcha.component.mjs} +6 -10
  239. package/esm2020/sdk-recaptcha/recaptcha.service.mjs +162 -0
  240. package/esm2020/sdk-recaptcha/sdk-recaptcha.component.mjs +69 -0
  241. package/esm2020/sdk-recaptcha/sdk-recaptcha.module.mjs +19 -0
  242. package/esm2020/sdk-redirect/iam-expired-interceptor.service.mjs +58 -0
  243. package/esm2020/sdk-redirect/redirect.component.mjs +35 -0
  244. package/esm2020/sdk-redirect/sdk-redirect.module.mjs +19 -0
  245. package/{esm2015/sdk-session-info/session-info-data.js → esm2020/sdk-session-info/session-info-data.mjs} +1 -1
  246. package/{esm2015/sdk-session-info/session-info-with-application.service.js → esm2020/sdk-session-info/session-info-with-application.service.mjs} +5 -5
  247. package/esm2020/sdk-session-info/session-info.service.mjs +50 -0
  248. package/esm2020/sdk-statistics/sdk-statistics.service.mjs +70 -0
  249. package/esm2020/sdk-support-alert/support-alert-container.component.mjs +49 -0
  250. package/esm2020/sdk-support-alert/support-alert.component.mjs +34 -0
  251. package/{esm2015/sdk-support-alert/support-alert.model.js → esm2020/sdk-support-alert/support-alert.model.mjs} +0 -0
  252. package/esm2020/sdk-support-alert/support-alert.module.mjs +21 -0
  253. package/esm2020/sdk-support-alert/support-alert.service.mjs +117 -0
  254. package/{esm2015/service-locator.js → esm2020/service-locator.mjs} +0 -0
  255. package/esm2020/supported-browser.mjs +2 -0
  256. package/esm2020/validation/validation-handler.service.mjs +44 -0
  257. package/fesm2015/dsivd-prestations-ng.mjs +13397 -0
  258. package/fesm2015/dsivd-prestations-ng.mjs.map +1 -0
  259. package/fesm2020/dsivd-prestations-ng.mjs +13372 -0
  260. package/fesm2020/dsivd-prestations-ng.mjs.map +1 -0
  261. package/foehn-address/address.type.d.ts +3 -3
  262. package/foehn-address/foehn-display-address.component.d.ts +1 -1
  263. package/foehn-address/foehn-input-address.component.d.ts +18 -8
  264. package/foehn-address/foehn-input-foreign-locality.component.d.ts +1 -1
  265. package/foehn-address/foehn-input-foreign-street.component.d.ts +1 -1
  266. package/foehn-agenda/calendar.type.d.ts +9 -0
  267. package/foehn-agenda/current-week.type.d.ts +5 -0
  268. package/foehn-agenda/day-slots.type.d.ts +5 -0
  269. package/foehn-agenda/foehn-agenda-navigation/foehn-agenda-navigation.component.d.ts +21 -0
  270. package/foehn-agenda/foehn-agenda-timeslot-panel/foehn-agenda-timeslot-panel.component.d.ts +51 -0
  271. package/foehn-agenda/foehn-agenda.component.d.ts +29 -0
  272. package/foehn-agenda/foehn-agenda.module.d.ts +17 -0
  273. package/foehn-agenda/pagination-week.type.d.ts +5 -0
  274. package/foehn-agenda/selected-slot.type.d.ts +7 -0
  275. package/foehn-autocomplete/foehn-autocomplete.component.d.ts +22 -6
  276. package/foehn-boolean/foehn-boolean-checkbox.component.d.ts +1 -1
  277. package/foehn-boolean/foehn-boolean-radio.component.d.ts +2 -1
  278. package/foehn-breadcrumb/breadcrumb-event.service.d.ts +2 -2
  279. package/foehn-breadcrumb/foehn-breadcrumb.component.d.ts +6 -5
  280. package/foehn-checkables/foehn-checkable-group.component.d.ts +8 -8
  281. package/foehn-checkables/foehn-checkables.module.d.ts +3 -1
  282. package/foehn-checkables/foehn-checkbox.component.d.ts +1 -1
  283. package/foehn-checkables/foehn-radio.component.d.ts +1 -1
  284. package/foehn-checkables/foehn-select.component.d.ts +2 -10
  285. package/foehn-confirm-modal/foehn-confirm-modal-content.d.ts +1 -0
  286. package/foehn-confirm-modal/foehn-confirm-modal.component.d.ts +2 -2
  287. package/foehn-date-picker/date-picker-navigation.helper.d.ts +7 -1
  288. package/foehn-date-picker/date-picker.helper.d.ts +3 -2
  289. package/foehn-date-picker/foehn-date-picker.component.d.ts +21 -10
  290. package/foehn-date-picker-button/foehn-date-picker-button.component.d.ts +13 -5
  291. package/foehn-debug-summary/foehn-debug-summary.component.d.ts +7 -5
  292. package/foehn-decision-electronique/foehn-decision-electronique.component.d.ts +2 -2
  293. package/foehn-decision-electronique/foehn-decision-electronique.module.d.ts +2 -1
  294. package/foehn-footer/foehn-footer.component.d.ts +4 -4
  295. package/foehn-form/foehn-form.component.d.ts +7 -4
  296. package/foehn-form/register-ng-model.service.d.ts +9 -0
  297. package/foehn-growl/foehn-growl.component.d.ts +3 -3
  298. package/foehn-growl/growl-broker.service.d.ts +1 -1
  299. package/foehn-header/foehn-header.component.d.ts +7 -7
  300. package/foehn-header/foehn-skip-link.component.d.ts +2 -2
  301. package/foehn-help-modal/foehn-help-modal.component.d.ts +1 -1
  302. package/foehn-help-modal/foehn-help-modal.type.d.ts +4 -0
  303. package/foehn-icons/abstract-icon-component.d.ts +1 -1
  304. package/foehn-icons/foehn-icon-calendar.component.d.ts +1 -1
  305. package/foehn-icons/foehn-icon-check-square-o.component.d.ts +1 -1
  306. package/foehn-icons/foehn-icon-check.component.d.ts +1 -1
  307. package/foehn-icons/foehn-icon-chevron-down.component.d.ts +1 -1
  308. package/foehn-icons/foehn-icon-chevron-left.component.d.ts +1 -1
  309. package/foehn-icons/foehn-icon-chevron-right.component.d.ts +1 -1
  310. package/foehn-icons/foehn-icon-chevron-up.component.d.ts +1 -1
  311. package/foehn-icons/foehn-icon-clock.component.d.ts +1 -1
  312. package/foehn-icons/foehn-icon-comment-dots.component.d.ts +1 -1
  313. package/foehn-icons/foehn-icon-edit.component.d.ts +1 -1
  314. package/foehn-icons/foehn-icon-external-link-alt.component.d.ts +1 -1
  315. package/foehn-icons/foehn-icon-file-pdf.component.d.ts +1 -1
  316. package/foehn-icons/foehn-icon-info-circle.component.d.ts +1 -1
  317. package/foehn-icons/foehn-icon-lock.component.d.ts +1 -1
  318. package/foehn-icons/foehn-icon-map-marker.component.d.ts +1 -1
  319. package/foehn-icons/foehn-icon-minus-circle.component.d.ts +1 -1
  320. package/foehn-icons/foehn-icon-plus-circle.component.d.ts +1 -1
  321. package/foehn-icons/foehn-icon-plus-square.component.d.ts +1 -1
  322. package/foehn-icons/foehn-icon-search.component.d.ts +1 -1
  323. package/foehn-icons/foehn-icon-times.component.d.ts +1 -1
  324. package/foehn-icons/foehn-icon-trash-alt.component.d.ts +1 -1
  325. package/foehn-icons/foehn-icon-unlock-alt.component.d.ts +1 -1
  326. package/foehn-input/foehn-input-email.component.d.ts +4 -2
  327. package/foehn-input/foehn-input-hidden.component.d.ts +1 -1
  328. package/foehn-input/foehn-input-number.component.d.ts +16 -6
  329. package/foehn-input/foehn-input-password.component.d.ts +1 -1
  330. package/foehn-input/foehn-input-phone.component.d.ts +1 -1
  331. package/foehn-input/foehn-input-string.component.d.ts +1 -1
  332. package/foehn-input/foehn-input-text.component.d.ts +1 -1
  333. package/foehn-input/foehn-input-textarea.component.d.ts +5 -2
  334. package/foehn-input/foehn-input.component.d.ts +25 -9
  335. package/foehn-input/foehn-input.module.d.ts +9 -6
  336. package/foehn-input-date/foehn-input-date.component.d.ts +10 -3
  337. package/foehn-input-date-time/foehn-input-date-time.component.d.ts +29 -0
  338. package/foehn-input-time/foehn-input-time.component.d.ts +1 -1
  339. package/foehn-list/foehn-list.component.d.ts +2 -3
  340. package/foehn-menu-prestation/abstract-list-item-detail-page.component.d.ts +5 -5
  341. package/foehn-menu-prestation/abstract-menu-page.component.d.ts +1 -1
  342. package/foehn-menu-prestation/abstract-page-from-menu.component.d.ts +1 -1
  343. package/foehn-menu-prestation/foehn-error-pill/foehn-error-pill.component.d.ts +1 -1
  344. package/foehn-menu-prestation/foehn-list-summary/foehn-list-summary.component.d.ts +3 -3
  345. package/foehn-menu-prestation/foehn-menu-items/foehn-menu-item/foehn-menu-item.component.d.ts +1 -1
  346. package/foehn-menu-prestation/foehn-menu-items/foehn-menu-item-transmit/foehn-menu-item-transmit.component.d.ts +2 -2
  347. package/foehn-misc/foehn-abbr.component.d.ts +1 -1
  348. package/foehn-modal/foehn-modal.component.d.ts +2 -3
  349. package/foehn-modal/foehn-modal.module.d.ts +3 -1
  350. package/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.component.d.ts +51 -0
  351. package/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.module.d.ts +13 -0
  352. package/foehn-nav13/foehn-input-nav13.component.d.ts +2 -1
  353. package/foehn-navigation/foehn-navigation.component.d.ts +2 -2
  354. package/foehn-navigation/foehn-navigation.service.d.ts +4 -3
  355. package/foehn-notfound/foehn-notfound.component.d.ts +1 -1
  356. package/foehn-page/foehn-page-counter.component.d.ts +1 -1
  357. package/foehn-page/foehn-page-modal.component.d.ts +1 -1
  358. package/foehn-page/foehn-page-modal.service.d.ts +1 -1
  359. package/foehn-page/foehn-page.component.d.ts +15 -12
  360. package/foehn-page/foehn-page.module.d.ts +2 -1
  361. package/foehn-page/foehn-page.service.d.ts +2 -2
  362. package/foehn-recap-section/foehn-recap-section.component.d.ts +3 -1
  363. package/foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.component.d.ts +1 -1
  364. package/foehn-status-progress-bar/foehn-status-progress-bar.component.d.ts +23 -0
  365. package/foehn-status-progress-bar/foehn-status-progress-bar.module.d.ts +10 -0
  366. package/foehn-table/foehn-table-column-configuration.d.ts +18 -0
  367. package/foehn-table/foehn-table-page-change-event.d.ts +5 -0
  368. package/foehn-table/foehn-table.component.d.ts +33 -0
  369. package/foehn-table/foehn-table.module.d.ts +11 -0
  370. package/foehn-table/tableSort.d.ts +4 -0
  371. package/foehn-upload/abstract-foehn-uploader.component.d.ts +7 -7
  372. package/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.service.d.ts +6 -4
  373. package/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.component.d.ts +6 -5
  374. package/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.module.d.ts +2 -1
  375. package/foehn-upload/foehn-multi-upload/foehn-multi-upload.component.d.ts +9 -8
  376. package/foehn-upload/foehn-multi-upload/foehn-multi-upload.module.d.ts +2 -1
  377. package/foehn-upload/foehn-multi-upload/multi-upload.service.d.ts +6 -4
  378. package/foehn-upload/foehn-multi-upload/pending-upload.service.d.ts +3 -3
  379. package/foehn-upload/foehn-picture-upload/foehn-picture-upload.component.d.ts +7 -4
  380. package/foehn-upload/foehn-picture-upload/foehn-picture-upload.module.d.ts +2 -1
  381. package/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.component.d.ts +19 -0
  382. package/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.module.d.ts +11 -0
  383. package/foehn-upload/foehn-upload-progress-bar/upload-progress.service.d.ts +19 -0
  384. package/foehn-upload/foehn-upload-progress-bar/upload-progress.type.d.ts +4 -0
  385. package/foehn-upload/pending-upload.type.d.ts +1 -0
  386. package/foehn-upload/uploader.helper.d.ts +13 -13
  387. package/foehn-user-connected-as/foehn-user-connected-as.component.d.ts +2 -2
  388. package/foehn-validation-alert-summary/foehn-validation-alert-summary.component.d.ts +2 -2
  389. package/foehn-validation-alerts/foehn-validation-alerts.component.d.ts +4 -4
  390. package/{error-template.d.ts → form-error.d.ts} +1 -1
  391. package/form-post-response.d.ts +17 -0
  392. package/gesdem/gesdem-error-handler.service.d.ts +2 -2
  393. package/gesdem/gesdem-event.service.d.ts +7 -7
  394. package/gesdem/gesdem-handler.service.d.ts +8 -6
  395. package/gesdem/gesdem-loader.guard.d.ts +1 -1
  396. package/gesdem-action-recovery/gesdem-action-recovery-login/gesdem-action-recovery-login.component.d.ts +5 -5
  397. package/gesdem-action-recovery/gesdem-action-recovery-registration/gesdem-action-recovery-registration.component.d.ts +7 -7
  398. package/gesdem-action-recovery/gesdem-action-recovery.service.d.ts +3 -3
  399. package/gesdem-confirmation/gesdem-confirmation.component.d.ts +10 -9
  400. package/gesdem-error/gesdem-error.component.d.ts +10 -3
  401. package/gesdem-error/gesdem-error.module.d.ts +2 -1
  402. package/global.const.d.ts +1 -0
  403. package/index.d.ts +102 -70
  404. package/package.json +34 -21
  405. package/pipes/currency.pipe.d.ts +1 -1
  406. package/pipes/date.pipe.d.ts +1 -1
  407. package/pipes/formatIde.pipe.d.ts +1 -1
  408. package/refinf/model/address-type-light.d.ts +5 -0
  409. package/refinf/model/canton.d.ts +4 -0
  410. package/refinf/model/district.d.ts +7 -0
  411. package/refinf/model/municipality.d.ts +8 -0
  412. package/refinf/model/place-of-origin.d.ts +9 -0
  413. package/refinf/model/postal-locality.d.ts +11 -0
  414. package/schematics/ng-add/index.js +10 -10
  415. package/schematics/ng-update/migrations/update-13_1_0/index.js +2 -2
  416. package/schematics/ng-update/migrations/update-13_2_0/index.js +3 -3
  417. package/schematics/ng-update/migrations/update-13_5_1/index.js +3 -3
  418. package/schematics/ng-update/migrations/update-14_5_0/index.js +2 -2
  419. package/schematics/update-karma-config/index.js +2 -2
  420. package/schematics/utility/migrate-to-karma-coverage.js +3 -3
  421. package/sdk-appinfo/application-info.d.ts +1 -0
  422. package/sdk-appinfo/application-info.service.d.ts +4 -4
  423. package/sdk-dictionary/sdk-dictionary.pipe.d.ts +1 -1
  424. package/sdk-dictionary/sdk-dictionary.service.d.ts +9 -0
  425. package/sdk-epayment/sdk-epayment.component.d.ts +6 -16
  426. package/sdk-epayment/sdk-epayment.service.d.ts +3 -6
  427. package/sdk-recaptcha/grecaptcha/grecaptcha.component.d.ts +2 -2
  428. package/sdk-recaptcha/recaptcha.service.d.ts +5 -5
  429. package/sdk-recaptcha/sdk-recaptcha.component.d.ts +4 -4
  430. package/sdk-redirect/iam-expired-interceptor.service.d.ts +3 -3
  431. package/sdk-redirect/redirect.component.d.ts +3 -9
  432. package/sdk-session-info/session-info-data.d.ts +0 -1
  433. package/sdk-session-info/session-info.service.d.ts +4 -4
  434. package/sdk-statistics/sdk-statistics.service.d.ts +22 -0
  435. package/sdk-support-alert/support-alert-container.component.d.ts +3 -3
  436. package/sdk-support-alert/support-alert.component.d.ts +1 -1
  437. package/sdk-support-alert/support-alert.service.d.ts +5 -4
  438. package/validation/validation-handler.service.d.ts +4 -4
  439. package/backend-response.d.ts +0 -18
  440. package/bundles/dsivd-prestations-ng.umd.js +0 -13188
  441. package/bundles/dsivd-prestations-ng.umd.js.map +0 -1
  442. package/dsivd-prestations-ng-v15.5.13.tgz +0 -0
  443. package/dsivd-prestations-ng.d.ts +0 -5
  444. package/esm2015/abstract-page-component.js +0 -224
  445. package/esm2015/backend-response.js +0 -10
  446. package/esm2015/directives/currency-formatter.directive.js +0 -116
  447. package/esm2015/error-template.js +0 -2
  448. package/esm2015/foehn-address/foehn-address.module.js +0 -57
  449. package/esm2015/foehn-address/foehn-input-address.component.js +0 -365
  450. package/esm2015/foehn-address/foehn-input-foreign-locality.component.js +0 -71
  451. package/esm2015/foehn-address/foehn-input-foreign-street.component.js +0 -60
  452. package/esm2015/foehn-autocomplete/foehn-autocomplete.component.js +0 -556
  453. package/esm2015/foehn-autocomplete/foehn-autocomplete.module.js +0 -42
  454. package/esm2015/foehn-boolean/foehn-boolean-checkbox.component.js +0 -32
  455. package/esm2015/foehn-boolean/foehn-boolean-radio.component.js +0 -41
  456. package/esm2015/foehn-boolean/foehn-boolean.module.js +0 -35
  457. package/esm2015/foehn-breadcrumb/breadcrumb-event.service.js +0 -182
  458. package/esm2015/foehn-breadcrumb/foehn-breadcrumb.component.js +0 -85
  459. package/esm2015/foehn-breadcrumb/foehn-breadcrumb.module.js +0 -19
  460. package/esm2015/foehn-checkables/foehn-checkable-group.component.js +0 -294
  461. package/esm2015/foehn-checkables/foehn-checkables.module.js +0 -62
  462. package/esm2015/foehn-checkables/foehn-checkbox.component.js +0 -40
  463. package/esm2015/foehn-checkables/foehn-radio.component.js +0 -67
  464. package/esm2015/foehn-checkables/foehn-select.component.js +0 -66
  465. package/esm2015/foehn-confirm-modal/foehn-confirm-modal.component.js +0 -42
  466. package/esm2015/foehn-confirm-modal/foehn-confirm-modal.module.js +0 -19
  467. package/esm2015/foehn-date-picker/date-picker-navigation.helper.js +0 -117
  468. package/esm2015/foehn-date-picker/date-picker.helper.js +0 -126
  469. package/esm2015/foehn-date-picker/foehn-date-picker.component.js +0 -300
  470. package/esm2015/foehn-date-picker/foehn-date-picker.module.js +0 -42
  471. package/esm2015/foehn-date-picker-button/foehn-date-picker-button.component.js +0 -74
  472. package/esm2015/foehn-date-picker-button/foehn-date-picker-button.module.js +0 -38
  473. package/esm2015/foehn-debug-summary/foehn-debug-summary.component.js +0 -61
  474. package/esm2015/foehn-decision-electronique/foehn-decision-electronique.component.js +0 -40
  475. package/esm2015/foehn-decision-electronique/foehn-decision-electronique.module.js +0 -20
  476. package/esm2015/foehn-footer/foehn-footer.component.js +0 -132
  477. package/esm2015/foehn-form/foehn-form.component.js +0 -146
  478. package/esm2015/foehn-form/foehn-form.module.js +0 -20
  479. package/esm2015/foehn-growl/foehn-growl.component.js +0 -47
  480. package/esm2015/foehn-header/foehn-header.component.js +0 -73
  481. package/esm2015/foehn-header/foehn-header.module.js +0 -21
  482. package/esm2015/foehn-help-modal/foehn-help-modal.component.js +0 -48
  483. package/esm2015/foehn-help-modal/foehn-help-modal.module.js +0 -20
  484. package/esm2015/foehn-help-modal/foehn-help-modal.type.js +0 -2
  485. package/esm2015/foehn-icons/foehn-icon-calendar.component.js +0 -22
  486. package/esm2015/foehn-icons/foehn-icon-check-square-o.component.js +0 -22
  487. package/esm2015/foehn-icons/foehn-icon-check.component.js +0 -22
  488. package/esm2015/foehn-icons/foehn-icon-chevron-down.component.js +0 -22
  489. package/esm2015/foehn-icons/foehn-icon-chevron-left.component.js +0 -22
  490. package/esm2015/foehn-icons/foehn-icon-chevron-right.component.js +0 -22
  491. package/esm2015/foehn-icons/foehn-icon-chevron-up.component.js +0 -22
  492. package/esm2015/foehn-icons/foehn-icon-clock.component.js +0 -22
  493. package/esm2015/foehn-icons/foehn-icon-comment-dots.component.js +0 -22
  494. package/esm2015/foehn-icons/foehn-icon-edit.component.js +0 -22
  495. package/esm2015/foehn-icons/foehn-icon-external-link-alt.component.js +0 -22
  496. package/esm2015/foehn-icons/foehn-icon-file-pdf.component.js +0 -22
  497. package/esm2015/foehn-icons/foehn-icon-info-circle.component.js +0 -22
  498. package/esm2015/foehn-icons/foehn-icon-lock.component.js +0 -22
  499. package/esm2015/foehn-icons/foehn-icon-map-marker.component.js +0 -22
  500. package/esm2015/foehn-icons/foehn-icon-minus-circle.component.js +0 -22
  501. package/esm2015/foehn-icons/foehn-icon-plus-circle.component.js +0 -22
  502. package/esm2015/foehn-icons/foehn-icon-plus-square.component.js +0 -22
  503. package/esm2015/foehn-icons/foehn-icon-search.component.js +0 -22
  504. package/esm2015/foehn-icons/foehn-icon-times.component.js +0 -22
  505. package/esm2015/foehn-icons/foehn-icon-trash-alt.component.js +0 -22
  506. package/esm2015/foehn-icons/foehn-icon-unlock-alt.component.js +0 -22
  507. package/esm2015/foehn-input/foehn-input-email.component.js +0 -55
  508. package/esm2015/foehn-input/foehn-input-hidden.component.js +0 -57
  509. package/esm2015/foehn-input/foehn-input-number.component.js +0 -190
  510. package/esm2015/foehn-input/foehn-input-password.component.js +0 -55
  511. package/esm2015/foehn-input/foehn-input-phone.component.js +0 -96
  512. package/esm2015/foehn-input/foehn-input-text.component.js +0 -80
  513. package/esm2015/foehn-input/foehn-input-textarea.component.js +0 -104
  514. package/esm2015/foehn-input/foehn-input.component.js +0 -364
  515. package/esm2015/foehn-input/foehn-input.module.js +0 -82
  516. package/esm2015/foehn-input-date/foehn-input-date.component.js +0 -94
  517. package/esm2015/foehn-input-time/foehn-input-time.component.js +0 -79
  518. package/esm2015/foehn-list/foehn-list.component.js +0 -135
  519. package/esm2015/foehn-list/foehn-list.module.js +0 -19
  520. package/esm2015/foehn-menu-prestation/abstract-list-item-detail-page.component.js +0 -122
  521. package/esm2015/foehn-menu-prestation/foehn-error-pill/foehn-error-pill.component.js +0 -26
  522. package/esm2015/foehn-menu-prestation/foehn-list-summary/foehn-list-summary.component.js +0 -75
  523. package/esm2015/foehn-menu-prestation/foehn-menu-items/foehn-menu-item/foehn-menu-item.component.js +0 -38
  524. package/esm2015/foehn-menu-prestation/foehn-menu-items/foehn-menu-item-transmit/foehn-menu-item-transmit.component.js +0 -54
  525. package/esm2015/foehn-menu-prestation/foehn-menu-prestation.module.js +0 -61
  526. package/esm2015/foehn-modal/foehn-modal.component.js +0 -100
  527. package/esm2015/foehn-modal/foehn-modal.module.js +0 -19
  528. package/esm2015/foehn-nav13/foehn-input-nav13.component.js +0 -98
  529. package/esm2015/foehn-nav13/foehn-input-nav13.module.js +0 -34
  530. package/esm2015/foehn-navigation/foehn-navigation.component.js +0 -98
  531. package/esm2015/foehn-navigation/foehn-navigation.module.js +0 -34
  532. package/esm2015/foehn-navigation/foehn-navigation.service.js +0 -297
  533. package/esm2015/foehn-notfound/foehn-notfound.module.js +0 -20
  534. package/esm2015/foehn-page/foehn-page-modal.component.js +0 -55
  535. package/esm2015/foehn-page/foehn-page.component.js +0 -214
  536. package/esm2015/foehn-page/foehn-page.module.js +0 -76
  537. package/esm2015/foehn-recap-section/foehn-recap-section.component.js +0 -88
  538. package/esm2015/foehn-recap-section/foehn-recap-section.module.js +0 -20
  539. package/esm2015/foehn-upload/abstract-foehn-uploader.component.js +0 -192
  540. package/esm2015/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.service.js +0 -62
  541. package/esm2015/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.component.js +0 -168
  542. package/esm2015/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.module.js +0 -38
  543. package/esm2015/foehn-upload/foehn-multi-upload/foehn-multi-upload.component.js +0 -217
  544. package/esm2015/foehn-upload/foehn-multi-upload/foehn-multi-upload.module.js +0 -38
  545. package/esm2015/foehn-upload/foehn-multi-upload/multi-upload.service.js +0 -76
  546. package/esm2015/foehn-upload/foehn-multi-upload/pending-upload.service.js +0 -157
  547. package/esm2015/foehn-upload/foehn-picture-upload/foehn-picture-upload.component.js +0 -164
  548. package/esm2015/foehn-upload/foehn-picture-upload/foehn-picture-upload.module.js +0 -42
  549. package/esm2015/foehn-upload/uploader.helper.js +0 -322
  550. package/esm2015/foehn-validation-alert-summary/foehn-validation-alert-summary.component.js +0 -88
  551. package/esm2015/foehn-validation-alert-summary/foehn-validation-alert-summary.module.js +0 -19
  552. package/esm2015/foehn-validation-alerts/foehn-validation-alerts.component.js +0 -32
  553. package/esm2015/gesdem/gesdem-event.service.js +0 -38
  554. package/esm2015/gesdem/gesdem-handler.service.js +0 -151
  555. package/esm2015/gesdem/gesdem-loader.guard.js +0 -40
  556. package/esm2015/gesdem-action-recovery/gesdem-action-recovery-login/gesdem-action-recovery-login.component.js +0 -103
  557. package/esm2015/gesdem-action-recovery/gesdem-action-recovery-registration/gesdem-action-recovery-registration.component.js +0 -133
  558. package/esm2015/gesdem-action-recovery/gesdem-action-recovery.module.js +0 -52
  559. package/esm2015/gesdem-action-recovery/gesdem-action-recovery.service.js +0 -82
  560. package/esm2015/gesdem-confirmation/gesdem-confirmation.component.js +0 -194
  561. package/esm2015/gesdem-confirmation/gesdem-confirmation.module.js +0 -34
  562. package/esm2015/gesdem-error/gesdem-error.component.js +0 -70
  563. package/esm2015/gesdem-error/gesdem-error.module.js +0 -34
  564. package/esm2015/helpers/object.helper.js +0 -88
  565. package/esm2015/index.js +0 -224
  566. package/esm2015/sdk-appinfo/application-info.js +0 -14
  567. package/esm2015/sdk-appinfo/application-info.service.js +0 -111
  568. package/esm2015/sdk-date/date.helper.js +0 -90
  569. package/esm2015/sdk-dictionary/default-dictionary.js +0 -80
  570. package/esm2015/sdk-dictionary/sdk-dictionary.service.js +0 -96
  571. package/esm2015/sdk-epayment/model/EPaymentRequest.js +0 -3
  572. package/esm2015/sdk-epayment/sdk-epayment.component.js +0 -113
  573. package/esm2015/sdk-epayment/sdk-epayment.module.js +0 -21
  574. package/esm2015/sdk-epayment/sdk-epayment.service.js +0 -46
  575. package/esm2015/sdk-recaptcha/recaptcha.service.js +0 -162
  576. package/esm2015/sdk-recaptcha/sdk-recaptcha.component.js +0 -72
  577. package/esm2015/sdk-recaptcha/sdk-recaptcha.module.js +0 -19
  578. package/esm2015/sdk-redirect/iam-expired-interceptor.service.js +0 -48
  579. package/esm2015/sdk-redirect/redirect.component.js +0 -47
  580. package/esm2015/sdk-redirect/sdk-redirect.module.js +0 -19
  581. package/esm2015/sdk-session-info/session-info.service.js +0 -44
  582. package/esm2015/sdk-support-alert/support-alert-container.component.js +0 -53
  583. package/esm2015/sdk-support-alert/support-alert.component.js +0 -38
  584. package/esm2015/sdk-support-alert/support-alert.module.js +0 -21
  585. package/esm2015/sdk-support-alert/support-alert.service.js +0 -113
  586. package/esm2015/supported-browser.js +0 -2
  587. package/esm2015/validation/validation-handler.service.js +0 -44
  588. package/fesm2015/dsivd-prestations-ng.js +0 -11618
  589. package/fesm2015/dsivd-prestations-ng.js.map +0 -1
  590. package/sdk-epayment/model/EPaymentRequest.d.ts +0 -5
@@ -0,0 +1,158 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import { filter, map } from 'rxjs/operators';
4
+ import { PendingFiles } from '../pending-upload.type';
5
+ import { DocumentsWithErrors } from './multi-upload.type';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "./multi-upload.service";
8
+ import * as i2 from "../../gesdem/gesdem-handler.service";
9
+ import * as i3 from "../../gesdem/gesdem-event.service";
10
+ export class PendingUploadService {
11
+ constructor(multiUploadService, gesdemService, gesdemEventService) {
12
+ this.multiUploadService = multiUploadService;
13
+ this.gesdemService = gesdemService;
14
+ this.gesdemEventService = gesdemEventService;
15
+ this.pendingFilesByFormKey = new Map();
16
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
17
+ this.attachmentsUploadedSubject = new Subject();
18
+ this.pendingUploadedErrorsSubject = new Subject();
19
+ this.gesdemEventService.formInitializationSubject
20
+ .pipe(
21
+ // Get the current reference
22
+ map(form => [
23
+ form,
24
+ this.gesdemService.lastResponse.meta.reference
25
+ ]),
26
+ // We only want to upload the documents if there is now a reference
27
+ filter(reference => !!reference),
28
+ // It only makes sense to upload the document if there are pending documents.
29
+ filter(() => !!this.pendingFilesByFormKey.size))
30
+ .subscribe(([form]) => {
31
+ this.uploadPendingFilesAndSaveForm(form);
32
+ });
33
+ }
34
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
35
+ get attachmentsUploaded() {
36
+ return this.attachmentsUploadedSubject.asObservable();
37
+ }
38
+ get pendingUploadedErrors() {
39
+ return this.pendingUploadedErrorsSubject.asObservable();
40
+ }
41
+ getPendingFiles(formKey) {
42
+ if (this.pendingFilesByFormKey.get(formKey)) {
43
+ return this.pendingFilesByFormKey.get(formKey).files;
44
+ }
45
+ return [];
46
+ }
47
+ hasPendingFiles(formKey = null) {
48
+ // No formKey, we return global size of pending files
49
+ if (!formKey) {
50
+ return !!this.pendingFilesByFormKey.size;
51
+ }
52
+ // Check if we have something on formKey and associated files
53
+ if (!this.pendingFilesByFormKey.get(formKey) ||
54
+ !this.pendingFilesByFormKey.get(formKey).files) {
55
+ return false;
56
+ }
57
+ // Return true if at least one files for a given formKey exist
58
+ return !!this.pendingFilesByFormKey.get(formKey).files.length;
59
+ }
60
+ addPendingFiles(baseUrl, formKey, label, files, key, isMultiple, shouldDisplayFileSavedConfirmation) {
61
+ // Initialize pending files by formKey
62
+ if (!this.hasPendingFiles(formKey)) {
63
+ this.pendingFilesByFormKey.set(formKey, new PendingFiles());
64
+ this.pendingFilesByFormKey.get(formKey).files = [];
65
+ }
66
+ // Set pending informations
67
+ this.pendingFilesByFormKey.get(formKey).url = baseUrl;
68
+ this.pendingFilesByFormKey.get(formKey).formKey = formKey;
69
+ this.pendingFilesByFormKey.get(formKey).label = label;
70
+ this.pendingFilesByFormKey.get(formKey).files = [
71
+ ...this.pendingFilesByFormKey.get(formKey).files,
72
+ ...files
73
+ ];
74
+ this.pendingFilesByFormKey.get(formKey).key = key;
75
+ this.pendingFilesByFormKey.get(formKey).isMultiple = isMultiple;
76
+ this.pendingFilesByFormKey.get(formKey).shouldDisplayFileSavedConfirmation = shouldDisplayFileSavedConfirmation;
77
+ }
78
+ removePendingFile(file, formKey) {
79
+ if (this.hasPendingFiles(formKey)) {
80
+ const index = this.pendingFilesByFormKey
81
+ .get(formKey)
82
+ .files.indexOf(file);
83
+ this.pendingFilesByFormKey.get(formKey).files.splice(index, 1);
84
+ }
85
+ }
86
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
87
+ uploadPendingFilesAndSaveForm(form) {
88
+ const filesToUpload = new Map(this.pendingFilesByFormKey);
89
+ const mergedResponse = new DocumentsWithErrors();
90
+ filesToUpload.forEach((pendingFiles, formKey) => {
91
+ this.multiUploadService
92
+ .uploadDocuments(pendingFiles.url, formKey, pendingFiles.label, pendingFiles.files, pendingFiles.key, pendingFiles.isMultiple, form.language, pendingFiles.shouldDisplayFileSavedConfirmation)
93
+ .subscribe((response) => {
94
+ // Merge all uploads response
95
+ this.mergePendingUploadedServerResult(mergedResponse, response);
96
+ // set the document in the form
97
+ this.setNestedValue(form, pendingFiles.formKey, response.documents);
98
+ this.pendingFilesByFormKey.delete(formKey);
99
+ // save the form when every document has been uploaded
100
+ if (this.pendingFilesByFormKey.size === 0) {
101
+ // eslint-disable-next-line rxjs/no-nested-subscribe
102
+ this.gesdemService.save(form).subscribe(() => {
103
+ this.attachmentsUploadedSubject.next(form);
104
+ // Dispatch errors coming from server
105
+ if (!!mergedResponse.errors.length) {
106
+ this.pendingUploadedErrorsSubject.next(mergedResponse);
107
+ }
108
+ });
109
+ }
110
+ }, () => {
111
+ this.pendingFilesByFormKey.delete(formKey);
112
+ });
113
+ });
114
+ }
115
+ mergePendingUploadedServerResult(mergedResponse, serverResponse) {
116
+ // Initialize arrays when needed
117
+ if (!mergedResponse.documents) {
118
+ mergedResponse.documents = [];
119
+ }
120
+ // Initialize arrays when needed
121
+ if (!mergedResponse.errors) {
122
+ mergedResponse.errors = [];
123
+ }
124
+ // Merge all uploads response
125
+ mergedResponse.documents = [
126
+ ...mergedResponse.documents,
127
+ ...(serverResponse.documents || [])
128
+ ];
129
+ mergedResponse.errors = [
130
+ ...mergedResponse.errors,
131
+ ...(serverResponse.errors || [])
132
+ ];
133
+ }
134
+ setNestedValue(
135
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
136
+ obj, path,
137
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
138
+ value) {
139
+ if (typeof path === 'string') {
140
+ path = path.split('.');
141
+ }
142
+ if (path.length > 1) {
143
+ this.setNestedValue(obj[path.shift()], path, value);
144
+ }
145
+ else {
146
+ obj[path[0]] = value;
147
+ }
148
+ }
149
+ }
150
+ PendingUploadService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: PendingUploadService, deps: [{ token: i1.MultiUploadService }, { token: i2.GesdemHandlerService }, { token: i3.GesdemEventService }], target: i0.ɵɵFactoryTarget.Injectable });
151
+ PendingUploadService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: PendingUploadService, providedIn: 'root' });
152
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: PendingUploadService, decorators: [{
153
+ type: Injectable,
154
+ args: [{
155
+ providedIn: 'root'
156
+ }]
157
+ }], ctorParameters: function () { return [{ type: i1.MultiUploadService }, { type: i2.GesdemHandlerService }, { type: i3.GesdemEventService }]; } });
158
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVuZGluZy11cGxvYWQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi11cGxvYWQvZm9laG4tbXVsdGktdXBsb2FkL3BlbmRpbmctdXBsb2FkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXRELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7OztBQUsxRCxNQUFNLE9BQU8sb0JBQW9CO0lBTTdCLFlBQ1ksa0JBQXNDLEVBQ3RDLGFBQW1DLEVBQ25DLGtCQUFzQztRQUZ0Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLGtCQUFhLEdBQWIsYUFBYSxDQUFzQjtRQUNuQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBUjFDLDBCQUFxQixHQUFHLElBQUksR0FBRyxFQUF3QixDQUFDO1FBQ2hFLDhEQUE4RDtRQUN0RCwrQkFBMEIsR0FBRyxJQUFJLE9BQU8sRUFBTyxDQUFDO1FBQ2hELGlDQUE0QixHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO1FBT3RFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyx5QkFBeUI7YUFDNUMsSUFBSTtRQUNELDRCQUE0QjtRQUM1QixHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNSLElBQUk7WUFDSixJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUztTQUNqRCxDQUFDO1FBQ0YsbUVBQW1FO1FBQ25FLE1B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QUFjLENBQUMsU0FBUyxHQUFHO1lBQ3ZCLEdBQUcsY0FBYyxDQUFDLFNBQVM7WUFDM0IsR0FBRyxDQUFDLGNBQWMsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDO1NBQ3RDLENBQUM7UUFDRixjQUFjLENBQUMsTUFBTSxHQUFHO1lBQ3BCLEdBQUcsY0FBYyxDQUFDLE1BQU07WUFDeEIsR0FBRyxDQUFDLGNBQWMsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO1NBQ25DLENBQUM7SUFDTixDQUFDO0lBRU8sY0FBYztJQUNsQiw4REFBOEQ7SUFDOUQsR0FBUSxFQUNSLElBQXVCO0lBQ3ZCLDhEQUE4RDtJQUM5RCxLQUFVO1FBRVYsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUU7WUFDMUIsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDMUI7UUFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztTQUN2RDthQUFNO1lBQ0gsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztTQUN4QjtJQUNMLENBQUM7O2lIQTdMUSxvQkFBb0I7cUhBQXBCLG9CQUFvQixjQUZqQixNQUFNOzJGQUVULG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgR2VzZGVtRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZ2VzZGVtL2dlc2RlbS1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEdlc2RlbUhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZ2VzZGVtL2dlc2RlbS1oYW5kbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGVuZGluZ0ZpbGVzIH0gZnJvbSAnLi4vcGVuZGluZy11cGxvYWQudHlwZSc7XG5pbXBvcnQgeyBNdWx0aVVwbG9hZFNlcnZpY2UgfSBmcm9tICcuL211bHRpLXVwbG9hZC5zZXJ2aWNlJztcbmltcG9ydCB7IERvY3VtZW50c1dpdGhFcnJvcnMgfSBmcm9tICcuL211bHRpLXVwbG9hZC50eXBlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBQZW5kaW5nVXBsb2FkU2VydmljZSB7XG4gICAgcHJpdmF0ZSBwZW5kaW5nRmlsZXNCeUZvcm1LZXkgPSBuZXcgTWFwPHN0cmluZywgUGVuZGluZ0ZpbGVzPigpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHJpdmF0ZSBhdHRhY2htZW50c1VwbG9hZGVkU3ViamVjdCA9IG5ldyBTdWJqZWN0PGFueT4oKTtcbiAgICBwcml2YXRlIHBlbmRpbmdVcGxvYWRlZEVycm9yc1N1YmplY3QgPSBuZXcgU3ViamVjdDxEb2N1bWVudHNXaXRoRXJyb3JzPigpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgbXVsdGlVcGxvYWRTZXJ2aWNlOiBNdWx0aVVwbG9hZFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZ2VzZGVtU2VydmljZTogR2VzZGVtSGFuZGxlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZ2VzZGVtRXZlbnRTZXJ2aWNlOiBHZXNkZW1FdmVudFNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgdGhpcy5nZXNkZW1FdmVudFNlcnZpY2UuZm9ybUluaXRpYWxpemF0aW9uU3ViamVjdFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgLy8gR2V0IHRoZSBjdXJyZW50IHJlZmVyZW5jZVxuICAgICAgICAgICAgICAgIG1hcChmb3JtID0+IFtcbiAgICAgICAgICAgICAgICAgICAgZm9ybSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXNkZW1TZXJ2aWNlLmxhc3RSZXNwb25zZS5tZXRhLnJlZmVyZW5jZVxuICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgIC8vIFdlIG9ubHkgd2FudCB0byB1cGxvYWQgdGhlIGRvY3VtZW50cyBpZiB0aGVyZSBpcyBub3cgYSByZWZlcmVuY2VcbiAgICAgICAgICAgICAgICBmaWx0ZXIocmVmZXJlbmNlID0+ICEhcmVmZXJlbmNlKSxcbiAgICAgICAgICAgICAgICAvLyBJdCBvbmx5IG1ha2VzIHNlbnNlIHRvIHVwbG9hZCB0aGUgZG9jdW1lbnQgaWYgdGhlcmUgYXJlIHBlbmRpbmcgZG9jdW1lbnRzLlxuICAgICAgICAgICAgICAgIGZpbHRlcigoKSA9PiAhIXRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LnNpemUpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChbZm9ybV0pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZFBlbmRpbmdGaWxlc0FuZFNhdmVGb3JtKGZvcm0pO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBnZXQgYXR0YWNobWVudHNVcGxvYWRlZCgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hdHRhY2htZW50c1VwbG9hZGVkU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBnZXQgcGVuZGluZ1VwbG9hZGVkRXJyb3JzKCk6IE9ic2VydmFibGU8RG9jdW1lbnRzV2l0aEVycm9ycz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wZW5kaW5nVXBsb2FkZWRFcnJvcnNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIGdldFBlbmRpbmdGaWxlcyhmb3JtS2V5OiBzdHJpbmcpOiBGaWxlW10ge1xuICAgICAgICBpZiAodGhpcy5wZW5kaW5nRmlsZXNCeUZvcm1LZXkuZ2V0KGZvcm1LZXkpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wZW5kaW5nRmlsZXNCeUZvcm1LZXkuZ2V0KGZvcm1LZXkpLmZpbGVzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBoYXNQZW5kaW5nRmlsZXMoZm9ybUtleTogc3RyaW5nID0gbnVsbCk6IGJvb2xlYW4ge1xuICAgICAgICAvLyBObyBmb3JtS2V5LCB3ZSByZXR1cm4gZ2xvYmFsIHNpemUgb2YgcGVuZGluZyBmaWxlc1xuICAgICAgICBpZiAoIWZvcm1LZXkpIHtcbiAgICAgICAgICAgIHJldHVybiAhIXRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LnNpemU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gQ2hlY2sgaWYgd2UgaGF2ZSBzb21ldGhpbmcgb24gZm9ybUtleSBhbmQgYXNzb2NpYXRlZCBmaWxlc1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhdGhpcy5wZW5kaW5nRmlsZXNCeUZvcm1LZXkuZ2V0KGZvcm1LZXkpIHx8XG4gICAgICAgICAgICAhdGhpcy5wZW5kaW5nRmlsZXNCeUZvcm1LZXkuZ2V0KGZvcm1LZXkpLmZpbGVzXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJldHVybiB0cnVlIGlmIGF0IGxlYXN0IG9uZSBmaWxlcyBmb3IgYSBnaXZlbiBmb3JtS2V5IGV4aXN0XG4gICAgICAgIHJldHVybiAhIXRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmdldChmb3JtS2V5KS5maWxlcy5sZW5ndGg7XG4gICAgfVxuXG4gICAgYWRkUGVuZGluZ0ZpbGVzKFxuICAgICAgICBiYXNlVXJsOiBzdHJpbmcsXG4gICAgICAgIGZvcm1LZXk6IHN0cmluZyxcbiAgICAgICAgbGFiZWw6IHN0cmluZyxcbiAgICAgICAgZmlsZXM6IEZpbGVbXSxcbiAgICAgICAga2V5OiBzdHJpbmcsXG4gICAgICAgIGlzTXVsdGlwbGU6IGJvb2xlYW4sXG4gICAgICAgIHNob3VsZERpc3BsYXlGaWxlU2F2ZWRDb25maXJtYXRpb246IGJvb2xlYW5cbiAgICApOiB2b2lkIHtcbiAgICAgICAgLy8gSW5pdGlhbGl6ZSBwZW5kaW5nIGZpbGVzIGJ5IGZvcm1LZXlcbiAgICAgICAgaWYgKCF0aGlzLmhhc1BlbmRpbmdGaWxlcyhmb3JtS2V5KSkge1xuICAgICAgICAgICAgdGhpcy5wZW5kaW5nRmlsZXNCeUZvcm1LZXkuc2V0KGZvcm1LZXksIG5ldyBQZW5kaW5nRmlsZXMoKSk7XG4gICAgICAgICAgICB0aGlzLnBlbmRpbmdGaWxlc0J5Rm9ybUtleS5nZXQoZm9ybUtleSkuZmlsZXMgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICAvLyBTZXQgcGVuZGluZyBpbmZvcm1hdGlvbnNcbiAgICAgICAgdGhpcy5wZW5kaW5nRmlsZXNCeUZvcm1LZXkuZ2V0KGZvcm1LZXkpLnVybCA9IGJhc2VVcmw7XG4gICAgICAgIHRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmdldChmb3JtS2V5KS5mb3JtS2V5ID0gZm9ybUtleTtcbiAgICAgICAgdGhpcy5wZW5kaW5nRmlsZXNCeUZvcm1LZXkuZ2V0KGZvcm1LZXkpLmxhYmVsID0gbGFiZWw7XG4gICAgICAgIHRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmdldChmb3JtS2V5KS5maWxlcyA9IFtcbiAgICAgICAgICAgIC4uLnRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmdldChmb3JtS2V5KS5maWxlcyxcbiAgICAgICAgICAgIC4uLmZpbGVzXG4gICAgICAgIF07XG4gICAgICAgIHRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmdldChmb3JtS2V5KS5rZXkgPSBrZXk7XG4gICAgICAgIHRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmdldChmb3JtS2V5KS5pc011bHRpcGxlID0gaXNNdWx0aXBsZTtcbiAgICAgICAgdGhpcy5wZW5kaW5nRmlsZXNCeUZvcm1LZXkuZ2V0KFxuICAgICAgICAgICAgZm9ybUtleVxuICAgICAgICApLnNob3VsZERpc3BsYXlGaWxlU2F2ZWRDb25maXJtYXRpb24gPSBzaG91bGREaXNwbGF5RmlsZVNhdmVkQ29uZmlybWF0aW9uO1xuICAgIH1cblxuICAgIHJlbW92ZVBlbmRpbmdGaWxlKGZpbGU6IEZpbGUsIGZvcm1LZXk6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5oYXNQZW5kaW5nRmlsZXMoZm9ybUtleSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5wZW5kaW5nRmlsZXNCeUZvcm1LZXlcbiAgICAgICAgICAgICAgICAuZ2V0KGZvcm1LZXkpXG4gICAgICAgICAgICAgICAgLmZpbGVzLmluZGV4T2YoZmlsZSk7XG4gICAgICAgICAgICB0aGlzLnBlbmRpbmdGaWxlc0J5Rm9ybUtleS5nZXQoZm9ybUtleSkuZmlsZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHJpdmF0ZSB1cGxvYWRQZW5kaW5nRmlsZXNBbmRTYXZlRm9ybShmb3JtOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZmlsZXNUb1VwbG9hZCA9IG5ldyBNYXAodGhpcy5wZW5kaW5nRmlsZXNCeUZvcm1LZXkpO1xuICAgICAgICBjb25zdCBtZXJnZWRSZXNwb25zZTogRG9jdW1lbnRzV2l0aEVycm9ycyA9IG5ldyBEb2N1bWVudHNXaXRoRXJyb3JzKCk7XG5cbiAgICAgICAgZmlsZXNUb1VwbG9hZC5mb3JFYWNoKChwZW5kaW5nRmlsZXMsIGZvcm1LZXkpID0+IHtcbiAgICAgICAgICAgIHRoaXMubXVsdGlVcGxvYWRTZXJ2aWNlXG4gICAgICAgICAgICAgICAgLnVwbG9hZERvY3VtZW50cyhcbiAgICAgICAgICAgICAgICAgICAgcGVuZGluZ0ZpbGVzLnVybCxcbiAgICAgICAgICAgICAgICAgICAgZm9ybUtleSxcbiAgICAgICAgICAgICAgICAgICAgcGVuZGluZ0ZpbGVzLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICBwZW5kaW5nRmlsZXMuZmlsZXMsXG4gICAgICAgICAgICAgICAgICAgIHBlbmRpbmdGaWxlcy5rZXksXG4gICAgICAgICAgICAgICAgICAgIHBlbmRpbmdGaWxlcy5pc011bHRpcGxlLFxuICAgICAgICAgICAgICAgICAgICBmb3JtLmxhbmd1YWdlLFxuICAgICAgICAgICAgICAgICAgICBwZW5kaW5nRmlsZXMuc2hvdWxkRGlzcGxheUZpbGVTYXZlZENvbmZpcm1hdGlvblxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2U6IERvY3VtZW50c1dpdGhFcnJvcnMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1lcmdlIGFsbCB1cGxvYWRzIHJlc3BvbnNlXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1lcmdlUGVuZGluZ1VwbG9hZGVkU2VydmVyUmVzdWx0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZFJlc3BvbnNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRoZSBkb2N1bWVudCBpbiB0aGUgZm9ybVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXROZXN0ZWRWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlbmRpbmdGaWxlcy5mb3JtS2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmRvY3VtZW50c1xuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmRlbGV0ZShmb3JtS2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNhdmUgdGhlIGZvcm0gd2hlbiBldmVyeSBkb2N1bWVudCBoYXMgYmVlbiB1cGxvYWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LnNpemUgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcnhqcy9uby1uZXN0ZWQtc3Vic2NyaWJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXNkZW1TZXJ2aWNlLnNhdmUoZm9ybSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hdHRhY2htZW50c1VwbG9hZGVkU3ViamVjdC5uZXh0KGZvcm0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEaXNwYXRjaCBlcnJvcnMgY29taW5nIGZyb20gc2VydmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIW1lcmdlZFJlc3BvbnNlLmVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGVuZGluZ1VwbG9hZGVkRXJyb3JzU3ViamVjdC5uZXh0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZFJlc3BvbnNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmRlbGV0ZShmb3JtS2V5KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgbWVyZ2VQZW5kaW5nVXBsb2FkZWRTZXJ2ZXJSZXN1bHQoXG4gICAgICAgIG1lcmdlZFJlc3BvbnNlOiBEb2N1bWVudHNXaXRoRXJyb3JzLFxuICAgICAgICBzZXJ2ZXJSZXNwb25zZTogRG9jdW1lbnRzV2l0aEVycm9yc1xuICAgICk6IHZvaWQge1xuICAgICAgICAvLyBJbml0aWFsaXplIGFycmF5cyB3aGVuIG5lZWRlZFxuICAgICAgICBpZiAoIW1lcmdlZFJlc3BvbnNlLmRvY3VtZW50cykge1xuICAgICAgICAgICAgbWVyZ2VkUmVzcG9uc2UuZG9jdW1lbnRzID0gW107XG4gICAgICAgIH1cbiAgICAgICAgLy8gSW5pdGlhbGl6ZSBhcnJheXMgd2hlbiBuZWVkZWRcbiAgICAgICAgaWYgKCFtZXJnZWRSZXNwb25zZS5lcnJvcnMpIHtcbiAgICAgICAgICAgIG1lcmdlZFJlc3BvbnNlLmVycm9ycyA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTWVyZ2UgYWxsIHVwbG9hZHMgcmVzcG9uc2VcbiAgICAgICAgbWVyZ2VkUmVzcG9uc2UuZG9jdW1lbnRzID0gW1xuICAgICAgICAgICAgLi4ubWVyZ2VkUmVzcG9uc2UuZG9jdW1lbnRzLFxuICAgICAgICAgICAgLi4uKHNlcnZlclJlc3BvbnNlLmRvY3VtZW50cyB8fCBbXSlcbiAgICAgICAgXTtcbiAgICAgICAgbWVyZ2VkUmVzcG9uc2UuZXJyb3JzID0gW1xuICAgICAgICAgICAgLi4ubWVyZ2VkUmVzcG9uc2UuZXJyb3JzLFxuICAgICAgICAgICAgLi4uKHNlcnZlclJlc3BvbnNlLmVycm9ycyB8fCBbXSlcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldE5lc3RlZFZhbHVlKFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICBvYmo6IGFueSxcbiAgICAgICAgcGF0aDogc3RyaW5nIHwgc3RyaW5nW10sXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIHZhbHVlOiBhbnlcbiAgICApOiB2b2lkIHtcbiAgICAgICAgaWYgKHR5cGVvZiBwYXRoID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcGF0aCA9IHBhdGguc3BsaXQoJy4nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGF0aC5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICB0aGlzLnNldE5lc3RlZFZhbHVlKG9ialtwYXRoLnNoaWZ0KCldLCBwYXRoLCB2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvYmpbcGF0aFswXV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,202 @@
1
+ import { Component, forwardRef, Input } from '@angular/core';
2
+ import { distinctUntilChanged, filter } from 'rxjs/operators';
3
+ import { FoehnInputComponent } from '../../foehn-input/foehn-input.component';
4
+ import { MultiUploadService } from '../../foehn-upload/foehn-multi-upload/multi-upload.service';
5
+ import { UploadProgressService } from '../foehn-upload-progress-bar/upload-progress.service';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../../foehn-growl/growl-broker.service";
8
+ import * as i2 from "../../foehn-upload/foehn-multi-upload/multi-upload.service";
9
+ import * as i3 from "../../sdk-dictionary/sdk-dictionary.service";
10
+ import * as i4 from "@angular/common";
11
+ import * as i5 from "../../foehn-validation-alerts/foehn-validation-alerts.component";
12
+ import * as i6 from "@angular/forms";
13
+ import * as i7 from "ngx-image-cropper";
14
+ import * as i8 from "../foehn-upload-progress-bar/foehn-upload-progress-bar.component";
15
+ import * as i9 from "../../sdk-dictionary/sdk-dictionary.pipe";
16
+ const blobToFile = (blobData, fileName) => {
17
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
18
+ const blob = blobData;
19
+ blob.name = fileName;
20
+ return blob;
21
+ };
22
+ const convertBase64UrlToFile = (croppedImageasBase64Url, filename) => {
23
+ const arr = croppedImageasBase64Url.split(',');
24
+ const mime = arr[0].match(/:(.*?);/)[1];
25
+ const bstr = atob(arr[1]);
26
+ let n = bstr.length;
27
+ const u8arr = new Uint8Array(n);
28
+ while (n--) {
29
+ u8arr[n] = bstr.charCodeAt(n);
30
+ }
31
+ if (!navigator.userAgent.includes('Edge')) {
32
+ // detect if not Edge
33
+ return new File([u8arr], filename, { type: mime });
34
+ }
35
+ else {
36
+ // Edge support the FileAPI but not the File constructor.
37
+ return blobToFile(new Blob([u8arr], { type: mime }), filename);
38
+ }
39
+ };
40
+ export class FoehnPictureUploadComponent extends FoehnInputComponent {
41
+ constructor(growlService, uploadService, dictionaryService) {
42
+ super();
43
+ this.growlService = growlService;
44
+ this.uploadService = uploadService;
45
+ this.dictionaryService = dictionaryService;
46
+ this.baseUrl = 'api/document';
47
+ this.croppedPictureFilename = 'photo.png';
48
+ this.resizeToWidth = 300;
49
+ this.resizeToHeight = 0;
50
+ this.shouldDisplayFileSavedConfirmation = true;
51
+ this.acceptFormats = '.jpeg,.jpg,.png';
52
+ this.loading = false;
53
+ }
54
+ get hasPicture() {
55
+ return this.model && this.model.length && !!this.model[0].reference;
56
+ }
57
+ ngOnInit() {
58
+ super.ngOnInit();
59
+ this.currentLanguageSubscription = this.dictionaryService
60
+ .getCurrentLanguageCode()
61
+ .pipe(distinctUntilChanged())
62
+ // eslint-disable-next-line rxjs-angular/prefer-async-pipe
63
+ .subscribe(language => {
64
+ this.currentLanguage = language;
65
+ });
66
+ }
67
+ onPictureSelection(imgEvent) {
68
+ const targetInput = imgEvent.target;
69
+ if (!targetInput?.files?.length || !targetInput.files[0]) {
70
+ return;
71
+ }
72
+ const file = targetInput.files[0];
73
+ if (this.isValidFileType(file.name)) {
74
+ this.refreshErrors([[], true]);
75
+ this.pictureToCrop = imgEvent;
76
+ this.loading = true;
77
+ }
78
+ else {
79
+ const errors = [
80
+ {
81
+ name: this.name,
82
+ code: 'InvalidFileType',
83
+ message: this.dictionaryService.getKeySync('foehn-picture-upload.invalid-file-type', {
84
+ filename: file.name,
85
+ acceptFormats: this.acceptFormats
86
+ })
87
+ }
88
+ ];
89
+ this.refreshErrors([errors, true]);
90
+ this.resetPictureSelection();
91
+ }
92
+ }
93
+ onPictureSelectionFailed() {
94
+ const errors = [
95
+ {
96
+ name: this.name,
97
+ code: 'LoadingFailure',
98
+ message: this.dictionaryService.getKeySync('foehn-picture-upload.loading-failure-label')
99
+ }
100
+ ];
101
+ this.refreshErrors([errors, true]);
102
+ this.resetPictureSelection();
103
+ }
104
+ onImageCropped(croppedEvent) {
105
+ this.croppedPictureAsBase64Url = croppedEvent.base64;
106
+ }
107
+ resetPictureSelection() {
108
+ this.croppedPictureAsBase64Url = null;
109
+ this.pictureToCrop = null;
110
+ this.loading = false;
111
+ }
112
+ savePicture() {
113
+ this.markAsPristine();
114
+ const photo = convertBase64UrlToFile(this.croppedPictureAsBase64Url, this.croppedPictureFilename);
115
+ this.uploadService
116
+ .uploadDocuments(this.baseUrl, this.name, this.label, [photo], this.key, false, this.currentLanguage, this.shouldDisplayFileSavedConfirmation)
117
+ .pipe(filter(result => !!result))
118
+ // eslint-disable-next-line rxjs-angular/prefer-async-pipe
119
+ .subscribe(({ documents, errors }) => {
120
+ this.resetPictureSelection();
121
+ if (!!documents.length) {
122
+ this.markAsDirty();
123
+ this.model = documents;
124
+ this.refreshErrors([[], true]);
125
+ }
126
+ else {
127
+ this.model = [];
128
+ this.refreshErrors([errors, true]);
129
+ }
130
+ });
131
+ }
132
+ deleteFile() {
133
+ this.uploadService
134
+ .deleteDocument(this.baseUrl, this.model[0])
135
+ // eslint-disable-next-line rxjs-angular/prefer-async-pipe
136
+ .subscribe(() => {
137
+ this.model = [];
138
+ this.resetPictureSelection();
139
+ });
140
+ }
141
+ getDownloadUrl() {
142
+ return this.uploadService.getDownloadUrl(this.baseUrl, this.model[0]);
143
+ }
144
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
145
+ refreshErrors(results) {
146
+ const errors = results[0];
147
+ const isInSelectionMode = !this.hasPicture && !!this.croppedPictureAsBase64Url;
148
+ if (isInSelectionMode) {
149
+ const notNullError = errors.find(e => e.name === this.name && e.code === 'NotEmpty');
150
+ if (notNullError) {
151
+ notNullError.message = this.dictionaryService.getKeySync('foehn-picture-upload.selection-not-validated-label');
152
+ }
153
+ }
154
+ super.refreshErrors(results);
155
+ }
156
+ isValidFileType(filename) {
157
+ const acceptedFormats = this.acceptFormats
158
+ .split(',')
159
+ .map(ext => ext.toLowerCase());
160
+ const fileExtension = `.${filename.split('.').pop()}`.toLowerCase();
161
+ return acceptedFormats.includes(fileExtension);
162
+ }
163
+ }
164
+ FoehnPictureUploadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: FoehnPictureUploadComponent, deps: [{ token: i1.GrowlBrokerService }, { token: i2.MultiUploadService }, { token: i3.SdkDictionaryService }], target: i0.ɵɵFactoryTarget.Component });
165
+ FoehnPictureUploadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.2", type: FoehnPictureUploadComponent, selector: "foehn-picture-upload", inputs: { name: "name", key: "key", label: "label", baseUrl: "baseUrl", croppedPictureFilename: "croppedPictureFilename", resizeToWidth: "resizeToWidth", resizeToHeight: "resizeToHeight", shouldDisplayFileSavedConfirmation: "shouldDisplayFileSavedConfirmation" }, providers: [
166
+ {
167
+ provide: FoehnInputComponent,
168
+ useExisting: forwardRef(() => FoehnPictureUploadComponent),
169
+ multi: true
170
+ },
171
+ { provide: MultiUploadService, useClass: MultiUploadService },
172
+ { provide: UploadProgressService, useClass: UploadProgressService }
173
+ ], usesInheritance: true, ngImport: i0, template: "<div\n [attr.id]=\"buildId('Container')\"\n [class.has-danger]=\"hasErrors()\"\n [class.vd-form-group-danger]=\"hasErrors()\"\n class=\"form-group clearable-input-form-group\"\n tabindex=\"-1\"\n #fallBackTrigger\n>\n <label\n [attr.for]=\"buildChildId()\"\n *ngIf=\"!!label\"\n [ngClass]=\"isLabelSrOnly ? 'sr-only' : 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 [component]=\"this\"></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 <input type=\"hidden\" [name]=\"name || label\" [ngModel]=\"model\" />\n\n <ng-content></ng-content>\n\n <div *ngIf=\"hasPicture\" class=\"row\">\n <div class=\"col-md-6\">\n <img\n [id]=\"buildChildId('Picture')\"\n [attr.alt]=\"label\"\n [src]=\"getDownloadUrl()\"\n />\n </div>\n <div class=\"col-md-4\">\n <button\n type=\"button\"\n class=\"btn btn-danger w-100\"\n [attr.id]=\"buildChildId('DeleteButton')\"\n (click)=\"deleteFile()\"\n >\n {{\n 'foehn-picture-upload.delete-picture-label' | fromDictionary\n }}\n </button>\n </div>\n </div>\n\n <div *ngIf=\"!hasPicture && !croppedPictureAsBase64Url\">\n <input\n #inputFile\n type=\"file\"\n class=\"form-control-file d-none\"\n [attr.id]=\"name\"\n [attr.accept]=\"acceptFormats\"\n [multiple]=\"false\"\n [name]=\"name\"\n (change)=\"onPictureSelection($event)\"\n />\n\n <button\n type=\"button\"\n class=\"btn btn-primary my-2\"\n [attr.id]=\"buildChildId('ChooseButton')\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-describedby]=\"buildId('ErrorsContainer')\"\n (click)=\"inputFile.click()\"\n [attr.disabled]=\"loading ? 'disabled' : null\"\n >\n {{ 'foehn-picture-upload.choose-button-label' | fromDictionary }}\n </button>\n </div>\n\n <div *ngIf=\"loading\">\n {{ 'foehn-picture-upload.loading-label' | fromDictionary }}\n </div>\n\n <div *ngIf=\"!hasPicture\" class=\"row\">\n <div class=\"col-md-6\">\n <image-cropper\n [id]=\"buildChildId('Cropper')\"\n (cropperReady)=\"loading = false\"\n (imageCropped)=\"onImageCropped($event)\"\n (loadImageFailed)=\"onPictureSelectionFailed()\"\n [aspectRatio]=\"3 / 4\"\n [imageChangedEvent]=\"pictureToCrop\"\n [maintainAspectRatio]=\"true\"\n [resizeToWidth]=\"resizeToWidth\"\n [resizeToHeight]=\"resizeToHeight\"\n [onlyScaleDown]=\"true\"\n format=\"png\"\n ></image-cropper>\n </div>\n\n <div *ngIf=\"!hasPicture\" class=\"col-md-4\">\n <div class=\"row mb-3\">\n <button\n *ngIf=\"croppedPictureAsBase64Url\"\n type=\"button\"\n class=\"btn btn-primary w-100\"\n [attr.id]=\"buildChildId('SaveButton')\"\n (click)=\"savePicture()\"\n >\n {{\n 'foehn-picture-upload.validate-selection-label'\n | fromDictionary\n }}\n </button>\n </div>\n <div class=\"row\">\n <button\n *ngIf=\"croppedPictureAsBase64Url\"\n type=\"button\"\n class=\"btn btn-secondary w-100\"\n [attr.id]=\"buildChildId('CancelButton')\"\n (click)=\"resetPictureSelection()\"\n >\n {{\n 'foehn-picture-upload.cancel-selection-label'\n | fromDictionary\n }}\n </button>\n </div>\n </div>\n </div>\n\n <foehn-upload-progress-bar\n [progressBarTriggerHtmlElement]=\"\n inputElement?.nativeElement || fallBackTrigger\n \"\n ></foehn-upload-progress-bar>\n</div>\n", dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.FoehnValidationAlertsComponent, selector: "foehn-validation-alerts", inputs: ["component", "shouldErrorsBeLive"] }, { kind: "directive", type: i6.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: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.ImageCropperComponent, selector: "image-cropper", inputs: ["imageChangedEvent", "imageURL", "imageBase64", "imageFile", "imageAltText", "format", "transform", "maintainAspectRatio", "aspectRatio", "resetCropOnAspectRatioChange", "resizeToWidth", "resizeToHeight", "cropperMinWidth", "cropperMinHeight", "cropperMaxHeight", "cropperMaxWidth", "cropperStaticWidth", "cropperStaticHeight", "canvasRotation", "initialStepSize", "roundCropper", "onlyScaleDown", "imageQuality", "autoCrop", "backgroundColor", "containWithinAspectRatio", "hideResizeSquares", "allowMoveImage", "cropper", "alignImage", "disabled", "hidden"], outputs: ["imageCropped", "startCropImage", "imageLoaded", "cropperReady", "loadImageFailed", "transformChange"] }, { kind: "component", type: i8.FoehnUploadProgressBarComponent, selector: "foehn-upload-progress-bar", inputs: ["progressBarTriggerHtmlElement"] }, { kind: "pipe", type: i9.SdkDictionaryPipe, name: "fromDictionary" }] });
174
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: FoehnPictureUploadComponent, decorators: [{
175
+ type: Component,
176
+ args: [{ selector: 'foehn-picture-upload', providers: [
177
+ {
178
+ provide: FoehnInputComponent,
179
+ useExisting: forwardRef(() => FoehnPictureUploadComponent),
180
+ multi: true
181
+ },
182
+ { provide: MultiUploadService, useClass: MultiUploadService },
183
+ { provide: UploadProgressService, useClass: UploadProgressService }
184
+ ], template: "<div\n [attr.id]=\"buildId('Container')\"\n [class.has-danger]=\"hasErrors()\"\n [class.vd-form-group-danger]=\"hasErrors()\"\n class=\"form-group clearable-input-form-group\"\n tabindex=\"-1\"\n #fallBackTrigger\n>\n <label\n [attr.for]=\"buildChildId()\"\n *ngIf=\"!!label\"\n [ngClass]=\"isLabelSrOnly ? 'sr-only' : 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 [component]=\"this\"></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 <input type=\"hidden\" [name]=\"name || label\" [ngModel]=\"model\" />\n\n <ng-content></ng-content>\n\n <div *ngIf=\"hasPicture\" class=\"row\">\n <div class=\"col-md-6\">\n <img\n [id]=\"buildChildId('Picture')\"\n [attr.alt]=\"label\"\n [src]=\"getDownloadUrl()\"\n />\n </div>\n <div class=\"col-md-4\">\n <button\n type=\"button\"\n class=\"btn btn-danger w-100\"\n [attr.id]=\"buildChildId('DeleteButton')\"\n (click)=\"deleteFile()\"\n >\n {{\n 'foehn-picture-upload.delete-picture-label' | fromDictionary\n }}\n </button>\n </div>\n </div>\n\n <div *ngIf=\"!hasPicture && !croppedPictureAsBase64Url\">\n <input\n #inputFile\n type=\"file\"\n class=\"form-control-file d-none\"\n [attr.id]=\"name\"\n [attr.accept]=\"acceptFormats\"\n [multiple]=\"false\"\n [name]=\"name\"\n (change)=\"onPictureSelection($event)\"\n />\n\n <button\n type=\"button\"\n class=\"btn btn-primary my-2\"\n [attr.id]=\"buildChildId('ChooseButton')\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-describedby]=\"buildId('ErrorsContainer')\"\n (click)=\"inputFile.click()\"\n [attr.disabled]=\"loading ? 'disabled' : null\"\n >\n {{ 'foehn-picture-upload.choose-button-label' | fromDictionary }}\n </button>\n </div>\n\n <div *ngIf=\"loading\">\n {{ 'foehn-picture-upload.loading-label' | fromDictionary }}\n </div>\n\n <div *ngIf=\"!hasPicture\" class=\"row\">\n <div class=\"col-md-6\">\n <image-cropper\n [id]=\"buildChildId('Cropper')\"\n (cropperReady)=\"loading = false\"\n (imageCropped)=\"onImageCropped($event)\"\n (loadImageFailed)=\"onPictureSelectionFailed()\"\n [aspectRatio]=\"3 / 4\"\n [imageChangedEvent]=\"pictureToCrop\"\n [maintainAspectRatio]=\"true\"\n [resizeToWidth]=\"resizeToWidth\"\n [resizeToHeight]=\"resizeToHeight\"\n [onlyScaleDown]=\"true\"\n format=\"png\"\n ></image-cropper>\n </div>\n\n <div *ngIf=\"!hasPicture\" class=\"col-md-4\">\n <div class=\"row mb-3\">\n <button\n *ngIf=\"croppedPictureAsBase64Url\"\n type=\"button\"\n class=\"btn btn-primary w-100\"\n [attr.id]=\"buildChildId('SaveButton')\"\n (click)=\"savePicture()\"\n >\n {{\n 'foehn-picture-upload.validate-selection-label'\n | fromDictionary\n }}\n </button>\n </div>\n <div class=\"row\">\n <button\n *ngIf=\"croppedPictureAsBase64Url\"\n type=\"button\"\n class=\"btn btn-secondary w-100\"\n [attr.id]=\"buildChildId('CancelButton')\"\n (click)=\"resetPictureSelection()\"\n >\n {{\n 'foehn-picture-upload.cancel-selection-label'\n | fromDictionary\n }}\n </button>\n </div>\n </div>\n </div>\n\n <foehn-upload-progress-bar\n [progressBarTriggerHtmlElement]=\"\n inputElement?.nativeElement || fallBackTrigger\n \"\n ></foehn-upload-progress-bar>\n</div>\n" }]
185
+ }], ctorParameters: function () { return [{ type: i1.GrowlBrokerService }, { type: i2.MultiUploadService }, { type: i3.SdkDictionaryService }]; }, propDecorators: { name: [{
186
+ type: Input
187
+ }], key: [{
188
+ type: Input
189
+ }], label: [{
190
+ type: Input
191
+ }], baseUrl: [{
192
+ type: Input
193
+ }], croppedPictureFilename: [{
194
+ type: Input
195
+ }], resizeToWidth: [{
196
+ type: Input
197
+ }], resizeToHeight: [{
198
+ type: Input
199
+ }], shouldDisplayFileSavedConfirmation: [{
200
+ type: Input
201
+ }] } });
202
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tcGljdHVyZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLXVwbG9hZC9mb2Vobi1waWN0dXJlLXVwbG9hZC9mb2Vobi1waWN0dXJlLXVwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tdXBsb2FkL2ZvZWhuLXBpY3R1cmUtdXBsb2FkL2ZvZWhuLXBpY3R1cmUtdXBsb2FkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUdyRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHOUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFFOUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFHaEcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0RBQXNELENBQUM7Ozs7Ozs7Ozs7O0FBRTdGLE1BQU0sVUFBVSxHQUFHLENBQUMsUUFBYyxFQUFFLFFBQWdCLEVBQVEsRUFBRTtJQUMxRCw4REFBOEQ7SUFDOUQsTUFBTSxJQUFJLEdBQVEsUUFBUSxDQUFDO0lBQzNCLElBQUksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDO0lBQ3JCLE9BQU8sSUFBWSxDQUFDO0FBQ3hCLENBQUMsQ0FBQztBQUVGLE1BQU0sc0JBQXNCLEdBQUcsQ0FDM0IsdUJBQStCLEVBQy9CLFFBQWdCLEVBQ1osRUFBRTtJQUNOLE1BQU0sR0FBRyxHQUFHLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvQyxNQUFNLElBQUksR0FBRyxH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LENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwRSxPQUFPLGVBQWUsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDbkQsQ0FBQzs7d0hBMUxRLDJCQUEyQjs0R0FBM0IsMkJBQTJCLHVUQVZ6QjtRQUNQO1lBQ0ksT0FBTyxFQUFFLG1CQUFtQjtZQUM1QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLDJCQUEyQixDQUFDO1lBQzFELEtBQUssRUFBRSxJQUFJO1NBQ2Q7UUFDRCxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUU7UUFDN0QsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixFQUFFO0tBQ3RFLGlEQ3JETCw4c0pBNklBOzJGRHRGYSwyQkFBMkI7a0JBYnZDLFNBQVM7K0JBQ0ksc0JBQXNCLGFBRXJCO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxtQkFBbUI7NEJBQzVCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDRCQUE0QixDQUFDOzRCQUMxRCxLQUFLLEVBQUUsSUFBSTt5QkFDZDt3QkFDRCxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUU7d0JBQzdELEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFFBQVEsRUFBRSxxQkFBcUIsRUFBRTtxQkFDdEU7NktBTUQsSUFBSTtzQkFESCxLQUFLO2dCQUlOLEdBQUc7c0JBREYsS0FBSztnQkFJTixLQUFLO3NCQURKLEtBQUs7Z0JBSU4sT0FBTztzQkFETixLQUFLO2dCQUlOLHNCQUFzQjtzQkFEckIsS0FBSztnQkFJTixhQUFhO3NCQURaLEtBQUs7Z0JBSU4sY0FBYztzQkFEYixLQUFLO2dCQUlOLGtDQUFrQztzQkFEakMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW1hZ2VDcm9wcGVkRXZlbnQgfSBmcm9tICduZ3gtaW1hZ2UtY3JvcHBlcic7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEdyb3dsQnJva2VyU2VydmljZSB9IGZyb20gJy4uLy4uL2ZvZWhuLWdyb3dsL2dyb3dsLWJyb2tlci5zZXJ2aWNlJztcbmltcG9ydCB7IEZvZWhuSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9mb2Vobi1pbnB1dC9mb2Vobi1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRG9jdW1lbnRSZWZlcmVuY2UgfSBmcm9tICcuLi8uLi9mb2Vobi11cGxvYWQvZG9jdW1lbnQtcmVmZXJlbmNlJztcbmltcG9ydCB7IE11bHRpVXBsb2FkU2VydmljZSB9IGZyb20gJy4uLy4uL2ZvZWhuLXVwbG9hZC9mb2Vobi1tdWx0aS11cGxvYWQvbXVsdGktdXBsb2FkLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9ybUVycm9yIH0gZnJvbSAnLi4vLi4vZm9ybS1lcnJvcic7XG5pbXBvcnQgeyBTZGtEaWN0aW9uYXJ5U2VydmljZSB9IGZyb20gJy4uLy4uL3Nkay1kaWN0aW9uYXJ5L3Nkay1kaWN0aW9uYXJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgVXBsb2FkUHJvZ3Jlc3NTZXJ2aWNlIH0gZnJvbSAnLi4vZm9laG4tdXBsb2FkLXByb2dyZXNzLWJhci91cGxvYWQtcHJvZ3Jlc3Muc2VydmljZSc7XG5cbmNvbnN0IGJsb2JUb0ZpbGUgPSAoYmxvYkRhdGE6IEJsb2IsIGZpbGVOYW1lOiBzdHJpbmcpOiBGaWxlID0+IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGNvbnN0IGJsb2I6IGFueSA9IGJsb2JEYXRhO1xuICAgIGJsb2IubmFtZSA9IGZpbGVOYW1lO1xuICAgIHJldHVybiBibG9iIGFzIEZpbGU7XG59O1xuXG5jb25zdCBjb252ZXJ0QmFzZTY0VXJsVG9GaWxlID0gKFxuICAgIGNyb3BwZWRJbWFnZWFzQmFzZTY0VXJsOiBzdHJpbmcsXG4gICAgZmlsZW5hbWU6IHN0cmluZ1xuKTogRmlsZSA9PiB7XG4gICAgY29uc3QgYXJyID0gY3JvcHBlZEltYWdlYXNCYXNlNjRVcmwuc3BsaXQoJywnKTtcbiAgICBjb25zdCBtaW1lID0gYXJyWzBdLm1hdGNoKC86KC4qPyk7LylbMV07XG4gICAgY29uc3QgYnN0ciA9IGF0b2IoYXJyWzFdKTtcbiAgICBsZXQgbiA9IGJzdHIubGVuZ3RoO1xuICAgIGNvbnN0IHU4YXJyID0gbmV3IFVpbnQ4QXJyYXkobik7XG4gICAgd2hpbGUgKG4tLSkge1xuICAgICAgICB1OGFycltuXSA9IGJzdHIuY2hhckNvZGVBdChuKTtcbiAgICB9XG5cbiAgICBpZiAoIW5hdmlnYXRvci51c2VyQWdlbnQuaW5jbHVkZXMoJ0VkZ2UnKSkge1xuICAgICAgICAvLyBkZXRlY3QgaWYgbm90IEVkZ2VcbiAgICAgICAgcmV0dXJuIG5ldyBGaWxlKFt1OGFycl0sIGZpbGVuYW1lLCB7IHR5cGU6IG1pbWUgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgLy8gRWRnZSBzdXBwb3J0IHRoZSBGaWxlQVBJIGJ1dCBub3QgdGhlIEZpbGUgY29uc3RydWN0b3IuXG4gICAgICAgIHJldHVybiBibG9iVG9GaWxlKG5ldyBCbG9iKFt1OGFycl0sIHsgdHlwZTogbWltZSB9KSwgZmlsZW5hbWUpO1xuICAgIH1cbn07XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZm9laG4tcGljdHVyZS11cGxvYWQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9mb2Vobi1waWN0dXJlLXVwbG9hZC5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZvZWhuSW5wdXRDb21wb25lbnQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGb2VoblBpY3R1cmVVcGxvYWRDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgeyBwcm92aWRlOiBNdWx0aVVwbG9hZFNlcnZpY2UsIHVzZUNsYXNzOiBNdWx0aVVwbG9hZFNlcnZpY2UgfSxcbiAgICAgICAgeyBwcm92aWRlOiBVcGxvYWRQcm9ncmVzc1NlcnZpY2UsIHVzZUNsYXNzOiBVcGxvYWRQcm9ncmVzc1NlcnZpY2UgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgRm9laG5QaWN0dXJlVXBsb2FkQ29tcG9uZW50XG4gICAgZXh0ZW5kcyBGb2VobklucHV0Q29tcG9uZW50PERvY3VtZW50UmVmZXJlbmNlW10+XG4gICAgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpXG4gICAgbmFtZTogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBrZXk6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgbGFiZWw6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgYmFzZVVybCA9ICdhcGkvZG9jdW1lbnQnO1xuXG4gICAgQElucHV0KClcbiAgICBjcm9wcGVkUGljdHVyZUZpbGVuYW1lID0gJ3Bob3RvLnBuZyc7XG5cbiAgICBASW5wdXQoKVxuICAgIHJlc2l6ZVRvV2lkdGggPSAzMDA7XG5cbiAgICBASW5wdXQoKVxuICAgIHJlc2l6ZVRvSGVpZ2h0ID0gMDtcblxuICAgIEBJbnB1dCgpXG4gICAgc2hvdWxkRGlzcGxheUZpbGVTYXZlZENvbmZpcm1hdGlvbiA9IHRydWU7XG5cbiAgICByZWFkb25seSBhY2NlcHRGb3JtYXRzID0gJy5qcGVnLC5qcGcsLnBuZyc7XG5cbiAgICBwaWN0dXJlVG9Dcm9wOiBFdmVudDtcbiAgICBjcm9wcGVkUGljdHVyZUFzQmFzZTY0VXJsOiBzdHJpbmc7XG4gICAgbG9hZGluZyA9IGZhbHNlO1xuXG4gICAgcHJvdGVjdGVkIGN1cnJlbnRMYW5ndWFnZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICAgIHByb3RlY3RlZCBjdXJyZW50TGFuZ3VhZ2U6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGdyb3dsU2VydmljZTogR3Jvd2xCcm9rZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHVwbG9hZFNlcnZpY2U6IE11bHRpVXBsb2FkU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBkaWN0aW9uYXJ5U2VydmljZTogU2RrRGljdGlvbmFyeVNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBnZXQgaGFzUGljdHVyZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kZWwgJiYgdGhpcy5tb2RlbC5sZW5ndGggJiYgISF0aGlzLm1vZGVsWzBdLnJlZmVyZW5jZTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5jdXJyZW50TGFuZ3VhZ2VTdWJzY3JpcHRpb24gPSB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0Q3VycmVudExhbmd1YWdlQ29kZSgpXG4gICAgICAgICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJ4anMtYW5ndWxhci9wcmVmZXItYXN5bmMtcGlwZVxuICAgICAgICAgICAgLnN1YnNjcmliZShsYW5ndWFnZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50TGFuZ3VhZ2UgPSBsYW5ndWFnZTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uUGljdHVyZVNlbGVjdGlvbihpbWdFdmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0SW5wdXQgPSBpbWdFdmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgICAgaWYgKCF0YXJnZXRJbnB1dD8uZmlsZXM/Lmxlbmd0aCB8fCAhdGFyZ2V0SW5wdXQuZmlsZXNbMF0pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmaWxlID0gdGFyZ2V0SW5wdXQuZmlsZXNbMF07XG5cbiAgICAgICAgaWYgKHRoaXMuaXNWYWxpZEZpbGVUeXBlKGZpbGUubmFtZSkpIHtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaEVycm9ycyhbW10sIHRydWVdKTtcbiAgICAgICAgICAgIHRoaXMucGljdHVyZVRvQ3JvcCA9IGltZ0V2ZW50O1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGVycm9ycyA9IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgY29kZTogJ0ludmFsaWRGaWxlVHlwZScsXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICdmb2Vobi1waWN0dXJlLXVwbG9hZC5pbnZhbGlkLWZpbGUtdHlwZScsXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWU6IGZpbGUubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NlcHRGb3JtYXRzOiB0aGlzLmFjY2VwdEZvcm1hdHNcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hFcnJvcnMoW2Vycm9ycywgdHJ1ZV0pO1xuICAgICAgICAgICAgdGhpcy5yZXNldFBpY3R1cmVTZWxlY3Rpb24oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uUGljdHVyZVNlbGVjdGlvbkZhaWxlZCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZXJyb3JzID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgICAgICAgICAgICBjb2RlOiAnTG9hZGluZ0ZhaWx1cmUnLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYyhcbiAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLXBpY3R1cmUtdXBsb2FkLmxvYWRpbmctZmFpbHVyZS1sYWJlbCdcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgIF07XG4gICAgICAgIHRoaXMucmVmcmVzaEVycm9ycyhbZXJyb3JzLCB0cnVlXSk7XG4gICAgICAgIHRoaXMucmVzZXRQaWN0dXJlU2VsZWN0aW9uKCk7XG4gICAgfVxuXG4gICAgb25JbWFnZUNyb3BwZWQoY3JvcHBlZEV2ZW50OiBJbWFnZUNyb3BwZWRFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNyb3BwZWRQaWN0dXJlQXNCYXNlNjRVcmwgPSBjcm9wcGVkRXZlbnQuYmFzZTY0O1xuICAgIH1cblxuICAgIHJlc2V0UGljdHVyZVNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jcm9wcGVkUGljdHVyZUFzQmFzZTY0VXJsID0gbnVsbDtcbiAgICAgICAgdGhpcy5waWN0dXJlVG9Dcm9wID0gbnVsbDtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgfVxuXG4gICAgc2F2ZVBpY3R1cmUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubWFya0FzUHJpc3RpbmUoKTtcblxuICAgICAgICBjb25zdCBwaG90byA9IGNvbnZlcnRCYXNlNjRVcmxUb0ZpbGUoXG4gICAgICAgICAgICB0aGlzLmNyb3BwZWRQaWN0dXJlQXNCYXNlNjRVcmwsXG4gICAgICAgICAgICB0aGlzLmNyb3BwZWRQaWN0dXJlRmlsZW5hbWVcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2VcbiAgICAgICAgICAgIC51cGxvYWREb2N1bWVudHMoXG4gICAgICAgICAgICAgICAgdGhpcy5iYXNlVXJsLFxuICAgICAgICAgICAgICAgIHRoaXMubmFtZSxcbiAgICAgICAgICAgICAgICB0aGlzLmxhYmVsLFxuICAgICAgICAgICAgICAgIFtwaG90b10sXG4gICAgICAgICAgICAgICAgdGhpcy5rZXksXG4gICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50TGFuZ3VhZ2UsXG4gICAgICAgICAgICAgICAgdGhpcy5zaG91bGREaXNwbGF5RmlsZVNhdmVkQ29uZmlybWF0aW9uXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAucGlwZShmaWx0ZXIocmVzdWx0ID0+ICEhcmVzdWx0KSlcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByeGpzLWFuZ3VsYXIvcHJlZmVyLWFzeW5jLXBpcGVcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHsgZG9jdW1lbnRzLCBlcnJvcnMgfSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVzZXRQaWN0dXJlU2VsZWN0aW9uKCk7XG4gICAgICAgICAgICAgICAgaWYgKCEhZG9jdW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcmtBc0RpcnR5KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9kZWwgPSBkb2N1bWVudHM7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaEVycm9ycyhbW10sIHRydWVdKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vZGVsID0gW107XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaEVycm9ycyhbZXJyb3JzLCB0cnVlXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZGVsZXRlRmlsZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlXG4gICAgICAgICAgICAuZGVsZXRlRG9jdW1lbnQodGhpcy5iYXNlVXJsLCB0aGlzLm1vZGVsWzBdKVxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJ4anMtYW5ndWxhci9wcmVmZXItYXN5bmMtcGlwZVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5tb2RlbCA9IFtdO1xuICAgICAgICAgICAgICAgIHRoaXMucmVzZXRQaWN0dXJlU2VsZWN0aW9uKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXREb3dubG9hZFVybCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy51cGxvYWRTZXJ2aWNlLmdldERvd25sb2FkVXJsKHRoaXMuYmFzZVVybCwgdGhpcy5tb2RlbFswXSk7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICByZWZyZXNoRXJyb3JzKHJlc3VsdHM6IGFueVtdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGVycm9yczogRm9ybUVycm9yW10gPSByZXN1bHRzWzBdO1xuICAgICAgICBjb25zdCBpc0luU2VsZWN0aW9uTW9kZSA9XG4gICAgICAgICAgICAhdGhpcy5oYXNQaWN0dXJlICYmICEhdGhpcy5jcm9wcGVkUGljdHVyZUFzQmFzZTY0VXJsO1xuICAgICAgICBpZiAoaXNJblNlbGVjdGlvbk1vZGUpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vdE51bGxFcnJvciA9IGVycm9ycy5maW5kKFxuICAgICAgICAgICAgICAgIGUgPT4gZS5uYW1lID09PSB0aGlzLm5hbWUgJiYgZS5jb2RlID09PSAnTm90RW1wdHknXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKG5vdE51bGxFcnJvcikge1xuICAgICAgICAgICAgICAgIG5vdE51bGxFcnJvci5tZXNzYWdlID0gdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKFxuICAgICAgICAgICAgICAgICAgICAnZm9laG4tcGljdHVyZS11cGxvYWQuc2VsZWN0aW9uLW5vdC12YWxpZGF0ZWQtbGFiZWwnXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHN1cGVyLnJlZnJlc2hFcnJvcnMocmVzdWx0cyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1ZhbGlkRmlsZVR5cGUoZmlsZW5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBhY2NlcHRlZEZvcm1hdHMgPSB0aGlzLmFjY2VwdEZvcm1hdHNcbiAgICAgICAgICAgIC5zcGxpdCgnLCcpXG4gICAgICAgICAgICAubWFwKGV4dCA9PiBleHQudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgIGNvbnN0IGZpbGVFeHRlbnNpb24gPSBgLiR7ZmlsZW5hbWUuc3BsaXQoJy4nKS5wb3AoKX1gLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIHJldHVybiBhY2NlcHRlZEZvcm1hdHMuaW5jbHVkZXMoZmlsZUV4dGVuc2lvbik7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIFthdHRyLmlkXT1cImJ1aWxkSWQoJ0NvbnRhaW5lcicpXCJcbiAgICBbY2xhc3MuaGFzLWRhbmdlcl09XCJoYXNFcnJvcnMoKVwiXG4gICAgW2NsYXNzLnZkLWZvcm0tZ3JvdXAtZGFuZ2VyXT1cImhhc0Vycm9ycygpXCJcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAgY2xlYXJhYmxlLWlucHV0LWZvcm0tZ3JvdXBcIlxuICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICNmYWxsQmFja1RyaWdnZXJcbj5cbiAgICA8bGFiZWxcbiAgICAgICAgW2F0dHIuZm9yXT1cImJ1aWxkQ2hpbGRJZCgpXCJcbiAgICAgICAgKm5nSWY9XCIhIWxhYmVsXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiaXNMYWJlbFNyT25seSA/ICdzci1vbmx5JyA6IGxhYmVsU3R5bGVNb2RpZmllclwiXG4gICAgPlxuICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImxhYmVsXCI+PC9zcGFuPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgKm5nSWY9XCIhcmVxdWlyZWQgJiYgIWhpZGVOb3RSZXF1aXJlZEV4dHJhTGFiZWxcIlxuICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgJ2ZvZWhuLWlucHV0Lm9wdGlvbmFsJyB8IGZyb21EaWN0aW9uYXJ5IH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICA8L2xhYmVsPlxuXG4gICAgPGZvZWhuLXZhbGlkYXRpb24tYWxlcnRzIFtjb21wb25lbnRdPVwidGhpc1wiPjwvZm9laG4tdmFsaWRhdGlvbi1hbGVydHM+XG5cbiAgICA8c21hbGxcbiAgICAgICAgKm5nSWY9XCJoZWxwVGV4dFwiXG4gICAgICAgIFthdHRyLmlkXT1cImJ1aWxkQ2hpbGRJZCgpICsgJ0hlbHAnXCJcbiAgICAgICAgY2xhc3M9XCJmb3JtLXRleHQgdGV4dC1zZWNvbmRhcnlcIlxuICAgICAgICBbaW5uZXJIVE1MXT1cImhlbHBUZXh0XCJcbiAgICA+PC9zbWFsbD5cblxuICAgIDxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgW25hbWVdPVwibmFtZSB8fCBsYWJlbFwiIFtuZ01vZGVsXT1cIm1vZGVsXCIgLz5cblxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cblxuICAgIDxkaXYgKm5nSWY9XCJoYXNQaWN0dXJlXCIgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgW2lkXT1cImJ1aWxkQ2hpbGRJZCgnUGljdHVyZScpXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hbHRdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgIFtzcmNdPVwiZ2V0RG93bmxvYWRVcmwoKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRhbmdlciB3LTEwMFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiYnVpbGRDaGlsZElkKCdEZWxldGVCdXR0b24nKVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZUZpbGUoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLXBpY3R1cmUtdXBsb2FkLmRlbGV0ZS1waWN0dXJlLWxhYmVsJyB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9XCIhaGFzUGljdHVyZSAmJiAhY3JvcHBlZFBpY3R1cmVBc0Jhc2U2NFVybFwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICNpbnB1dEZpbGVcbiAgICAgICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sLWZpbGUgZC1ub25lXCJcbiAgICAgICAgICAgIFthdHRyLmlkXT1cIm5hbWVcIlxuICAgICAgICAgICAgW2F0dHIuYWNjZXB0XT1cImFjY2VwdEZvcm1hdHNcIlxuICAgICAgICAgICAgW211bHRpcGxlXT1cImZhbHNlXCJcbiAgICAgICAgICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJvblBpY3R1cmVTZWxlY3Rpb24oJGV2ZW50KVwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBteS0yXCJcbiAgICAgICAgICAgIFthdHRyLmlkXT1cImJ1aWxkQ2hpbGRJZCgnQ2hvb3NlQnV0dG9uJylcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpIHx8IG51bGxcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJidWlsZElkKCdFcnJvcnNDb250YWluZXInKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiaW5wdXRGaWxlLmNsaWNrKClcIlxuICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwibG9hZGluZyA/ICdkaXNhYmxlZCcgOiBudWxsXCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgJ2ZvZWhuLXBpY3R1cmUtdXBsb2FkLmNob29zZS1idXR0b24tbGFiZWwnIHwgZnJvbURpY3Rpb25hcnkgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ0lmPVwibG9hZGluZ1wiPlxuICAgICAgICB7eyAnZm9laG4tcGljdHVyZS11cGxvYWQubG9hZGluZy1sYWJlbCcgfCBmcm9tRGljdGlvbmFyeSB9fVxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdJZj1cIiFoYXNQaWN0dXJlXCIgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgICAgICA8aW1hZ2UtY3JvcHBlclxuICAgICAgICAgICAgICAgIFtpZF09XCJidWlsZENoaWxkSWQoJ0Nyb3BwZXInKVwiXG4gICAgICAgICAgICAgICAgKGNyb3BwZXJSZWFkeSk9XCJsb2FkaW5nID0gZmFsc2VcIlxuICAgICAgICAgICAgICAgIChpbWFnZUNyb3BwZWQpPVwib25JbWFnZUNyb3BwZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGxvYWRJbWFnZUZhaWxlZCk9XCJvblBpY3R1cmVTZWxlY3Rpb25GYWlsZWQoKVwiXG4gICAgICAgICAgICAgICAgW2FzcGVjdFJhdGlvXT1cIjMgLyA0XCJcbiAgICAgICAgICAgICAgICBbaW1hZ2VDaGFuZ2VkRXZlbnRdPVwicGljdHVyZVRvQ3JvcFwiXG4gICAgICAgICAgICAgICAgW21haW50YWluQXNwZWN0UmF0aW9dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW3Jlc2l6ZVRvV2lkdGhdPVwicmVzaXplVG9XaWR0aFwiXG4gICAgICAgICAgICAgICAgW3Jlc2l6ZVRvSGVpZ2h0XT1cInJlc2l6ZVRvSGVpZ2h0XCJcbiAgICAgICAgICAgICAgICBbb25seVNjYWxlRG93bl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBmb3JtYXQ9XCJwbmdcIlxuICAgICAgICAgICAgPjwvaW1hZ2UtY3JvcHBlcj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiFoYXNQaWN0dXJlXCIgY2xhc3M9XCJjb2wtbWQtNFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi0zXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNyb3BwZWRQaWN0dXJlQXNCYXNlNjRVcmxcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgdy0xMDBcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCJidWlsZENoaWxkSWQoJ1NhdmVCdXR0b24nKVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzYXZlUGljdHVyZSgpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAnZm9laG4tcGljdHVyZS11cGxvYWQudmFsaWRhdGUtc2VsZWN0aW9uLWxhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjcm9wcGVkUGljdHVyZUFzQmFzZTY0VXJsXCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnkgdy0xMDBcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCJidWlsZENoaWxkSWQoJ0NhbmNlbEJ1dHRvbicpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlc2V0UGljdHVyZVNlbGVjdGlvbigpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAnZm9laG4tcGljdHVyZS11cGxvYWQuY2FuY2VsLXNlbGVjdGlvbi1sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8Zm9laG4tdXBsb2FkLXByb2dyZXNzLWJhclxuICAgICAgICBbcHJvZ3Jlc3NCYXJUcmlnZ2VySHRtbEVsZW1lbnRdPVwiXG4gICAgICAgICAgICBpbnB1dEVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQgfHwgZmFsbEJhY2tUcmlnZ2VyXG4gICAgICAgIFwiXG4gICAgPjwvZm9laG4tdXBsb2FkLXByb2dyZXNzLWJhcj5cbjwvZGl2PlxuIl19
@@ -0,0 +1,44 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { NgModule } from '@angular/core';
3
+ import { FormsModule } from '@angular/forms';
4
+ import { ImageCropperModule } from 'ngx-image-cropper';
5
+ import { FoehnIconsModule } from '../../foehn-icons/foehn-icons.module';
6
+ import { FoehnValidationAlertsModule } from '../../foehn-validation-alerts/foehn-validation-alerts.module';
7
+ import { SdkDictionaryModule } from '../../sdk-dictionary/sdk-dictionary.module';
8
+ import { FoehnUploadProgressBarModule } from '../foehn-upload-progress-bar/foehn-upload-progress-bar.module';
9
+ import { FoehnPictureUploadComponent } from './foehn-picture-upload.component';
10
+ import * as i0 from "@angular/core";
11
+ export class FoehnPictureUploadModule {
12
+ }
13
+ FoehnPictureUploadModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: FoehnPictureUploadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
14
+ FoehnPictureUploadModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.2", ngImport: i0, type: FoehnPictureUploadModule, declarations: [FoehnPictureUploadComponent], imports: [CommonModule,
15
+ FoehnIconsModule,
16
+ FoehnValidationAlertsModule,
17
+ SdkDictionaryModule,
18
+ FormsModule,
19
+ ImageCropperModule,
20
+ FoehnUploadProgressBarModule], exports: [FoehnPictureUploadComponent] });
21
+ FoehnPictureUploadModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: FoehnPictureUploadModule, imports: [CommonModule,
22
+ FoehnIconsModule,
23
+ FoehnValidationAlertsModule,
24
+ SdkDictionaryModule,
25
+ FormsModule,
26
+ ImageCropperModule,
27
+ FoehnUploadProgressBarModule] });
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: FoehnPictureUploadModule, decorators: [{
29
+ type: NgModule,
30
+ args: [{
31
+ imports: [
32
+ CommonModule,
33
+ FoehnIconsModule,
34
+ FoehnValidationAlertsModule,
35
+ SdkDictionaryModule,
36
+ FormsModule,
37
+ ImageCropperModule,
38
+ FoehnUploadProgressBarModule
39
+ ],
40
+ declarations: [FoehnPictureUploadComponent],
41
+ exports: [FoehnPictureUploadComponent]
42
+ }]
43
+ }] });
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tcGljdHVyZS11cGxvYWQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLXVwbG9hZC9mb2Vobi1waWN0dXJlLXVwbG9hZC9mb2Vobi1waWN0dXJlLXVwbG9hZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQzNHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBQzdHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOztBQWUvRSxNQUFNLE9BQU8sd0JBQXdCOztxSEFBeEIsd0JBQXdCO3NIQUF4Qix3QkFBd0IsaUJBSGxCLDJCQUEyQixhQVJ0QyxZQUFZO1FBQ1osZ0JBQWdCO1FBQ2hCLDJCQUEyQjtRQUMzQixtQkFBbUI7UUFDbkIsV0FBVztRQUNYLGtCQUFrQjtRQUNsQiw0QkFBNEIsYUFHdEIsMkJBQTJCO3NIQUU1Qix3QkFBd0IsWUFYN0IsWUFBWTtRQUNaLGdCQUFnQjtRQUNoQiwyQkFBMkI7UUFDM0IsbUJBQW1CO1FBQ25CLFdBQVc7UUFDWCxrQkFBa0I7UUFDbEIsNEJBQTRCOzJGQUt2Qix3QkFBd0I7a0JBYnBDLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFO3dCQUNMLFlBQVk7d0JBQ1osZ0JBQWdCO3dCQUNoQiwyQkFBMkI7d0JBQzNCLG1CQUFtQjt3QkFDbkIsV0FBVzt3QkFDWCxrQkFBa0I7d0JBQ2xCLDRCQUE0QjtxQkFDL0I7b0JBQ0QsWUFBWSxFQUFFLENBQUMsMkJBQTJCLENBQUM7b0JBQzNDLE9BQU8sRUFBRSxDQUFDLDJCQUEyQixDQUFDO2lCQUN6QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJbWFnZUNyb3BwZXJNb2R1bGUgfSBmcm9tICduZ3gtaW1hZ2UtY3JvcHBlcic7XG5cbmltcG9ydCB7IEZvZWhuSWNvbnNNb2R1bGUgfSBmcm9tICcuLi8uLi9mb2Vobi1pY29ucy9mb2Vobi1pY29ucy5tb2R1bGUnO1xuaW1wb3J0IHsgRm9laG5WYWxpZGF0aW9uQWxlcnRzTW9kdWxlIH0gZnJvbSAnLi4vLi4vZm9laG4tdmFsaWRhdGlvbi1hbGVydHMvZm9laG4tdmFsaWRhdGlvbi1hbGVydHMubW9kdWxlJztcbmltcG9ydCB7IFNka0RpY3Rpb25hcnlNb2R1bGUgfSBmcm9tICcuLi8uLi9zZGstZGljdGlvbmFyeS9zZGstZGljdGlvbmFyeS5tb2R1bGUnO1xuaW1wb3J0IHsgRm9laG5VcGxvYWRQcm9ncmVzc0Jhck1vZHVsZSB9IGZyb20gJy4uL2ZvZWhuLXVwbG9hZC1wcm9ncmVzcy1iYXIvZm9laG4tdXBsb2FkLXByb2dyZXNzLWJhci5tb2R1bGUnO1xuaW1wb3J0IHsgRm9laG5QaWN0dXJlVXBsb2FkQ29tcG9uZW50IH0gZnJvbSAnLi9mb2Vobi1waWN0dXJlLXVwbG9hZC5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBGb2Vobkljb25zTW9kdWxlLFxuICAgICAgICBGb2VoblZhbGlkYXRpb25BbGVydHNNb2R1bGUsXG4gICAgICAgIFNka0RpY3Rpb25hcnlNb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBJbWFnZUNyb3BwZXJNb2R1bGUsXG4gICAgICAgIEZvZWhuVXBsb2FkUHJvZ3Jlc3NCYXJNb2R1bGVcbiAgICBdLFxuICAgIGRlY2xhcmF0aW9uczogW0ZvZWhuUGljdHVyZVVwbG9hZENvbXBvbmVudF0sXG4gICAgZXhwb3J0czogW0ZvZWhuUGljdHVyZVVwbG9hZENvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgRm9laG5QaWN0dXJlVXBsb2FkTW9kdWxlIHt9XG4iXX0=