@ti-tecnologico-de-monterrey-oficial/ds-ng 1.5.1020 → 1.5.1118

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 (435) hide show
  1. package/assets/images/gif/mitecLogoIntroMobile.gif +0 -0
  2. package/assets/images/gif/mitecLogoIntroWeb.gif +0 -0
  3. package/assets/images/lang-flags/mx.svg +392 -0
  4. package/assets/images/lang-flags/us.svg +13 -0
  5. package/assets/styles/main.min.css +1 -1
  6. package/assets/styles/main.min.css.map +1 -1
  7. package/assets/svg/neutral_fill.svg +1 -0
  8. package/assets/svg/primary_fill.svg +1 -0
  9. package/esm2022/lib/components/bmb-academic-progress/bmb-academic-progress.component.mjs +87 -0
  10. package/esm2022/lib/components/bmb-accordion/bmb-accordion.component.mjs +159 -0
  11. package/esm2022/lib/components/bmb-account-statement/bmb-account-statement.component.mjs +150 -0
  12. package/esm2022/lib/components/bmb-action-icon/bmb-action-icon.component.mjs +49 -0
  13. package/esm2022/lib/components/bmb-action-menu/bmb-action-menu.component.mjs +31 -0
  14. package/esm2022/lib/components/bmb-advertisement-card/bmb-advertisement-card.component.mjs +35 -0
  15. package/esm2022/lib/components/bmb-advertisement-card/types.mjs +2 -0
  16. package/esm2022/lib/components/bmb-alert-center/bmb-alert-center-ads/bmb-alert-center-ads.component.mjs +40 -0
  17. package/esm2022/lib/components/bmb-alert-center/bmb-alert-center-empty/bmb-alert-center-empty.component.mjs +18 -0
  18. package/esm2022/lib/components/bmb-alert-center/bmb-alert-center-form/bmb-alert-center-form.component.mjs +148 -0
  19. package/esm2022/lib/components/bmb-alert-center/bmb-alert-center-list/bmb-alert-center-list.component.mjs +52 -0
  20. package/esm2022/lib/components/bmb-alert-center/bmb-alert-center.component.mjs +196 -0
  21. package/esm2022/lib/components/bmb-alert-center/bmb-alert-center.service.mjs +62 -0
  22. package/esm2022/lib/components/bmb-alert-center/types.mjs +2 -0
  23. package/esm2022/lib/components/bmb-badge/bmb-badge.component.mjs +26 -0
  24. package/esm2022/lib/components/bmb-balance-overview/bmb-balance-overview.component.mjs +26 -0
  25. package/esm2022/lib/components/bmb-bookmark/bmb-bookmark.component.mjs +27 -0
  26. package/esm2022/lib/components/bmb-bottom-navigation-bar/bmb-bottom-navigation-bar.component.mjs +42 -0
  27. package/esm2022/lib/components/bmb-breadcrumb/bmb-breadcrumb.component.mjs +55 -0
  28. package/esm2022/lib/components/bmb-button-icon/bmb-button-icon.component.mjs +30 -0
  29. package/esm2022/lib/components/bmb-calendar/bmb-calendar.component.mjs +262 -0
  30. package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-header/bmb-calendar-header.component.mjs +95 -0
  31. package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-hour-view/bmb-calendar-hour-view.component.mjs +40 -0
  32. package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-schedule-cards/bmb-calendar-schedule-cards.component.mjs +68 -0
  33. package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-template-day/bmb-calendar-template-day.component.mjs +41 -0
  34. package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-template-event-list/bmb-calendar-template-event-list.component.mjs +63 -0
  35. package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-template-mobile/bmb-calendar-template-mobile.component.mjs +95 -0
  36. package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-template-month/bmb-calendar-template-month.component.mjs +45 -0
  37. package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-template-week/bmb-calendar-template-week.component.mjs +54 -0
  38. package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-time-indicator/bmb-calendar-time-indicator.component.mjs +24 -0
  39. package/esm2022/lib/components/bmb-calendar/types.mjs +2 -0
  40. package/esm2022/lib/components/bmb-calendar/utils.mjs +96 -0
  41. package/esm2022/lib/components/bmb-card/bmb-card.component.mjs +154 -0
  42. package/esm2022/lib/components/bmb-card-button/bmb-card-button.component.mjs +76 -0
  43. package/esm2022/lib/components/bmb-carousel/bmb-carousel.component.mjs +80 -0
  44. package/esm2022/lib/components/bmb-chat-bar/bmb-chat-bar.component.mjs +175 -0
  45. package/esm2022/lib/components/bmb-chat-bar/bot_list.mjs +57 -0
  46. package/esm2022/lib/components/bmb-chat-bar/types.mjs +2 -0
  47. package/esm2022/lib/components/bmb-chat-bubbles/bmb-chat-bubbles.component.mjs +56 -0
  48. package/esm2022/lib/components/bmb-chat-bubbles/types.mjs +2 -0
  49. package/esm2022/lib/components/bmb-check-external-link-button/bmb-check-external-link-button.component.mjs +46 -0
  50. package/esm2022/lib/components/bmb-checkbox/bmb-checkbox.component.mjs +80 -0
  51. package/esm2022/lib/components/bmb-chevron-title-selector/bmb-chevron-title-selector.component.mjs +36 -0
  52. package/esm2022/lib/components/bmb-container/bmb-container.component.mjs +27 -0
  53. package/esm2022/lib/components/bmb-container-button/bmb-container-button.component.mjs +83 -0
  54. package/esm2022/lib/components/bmb-date-range/bmb-date-range.component.mjs +69 -0
  55. package/esm2022/lib/components/bmb-datepicker/bmb-datepicker-modal/bmb-datepicker-modal.component.mjs +211 -0
  56. package/esm2022/lib/components/bmb-datepicker/bmb-datepicker.component.mjs +123 -0
  57. package/esm2022/lib/components/bmb-digital-id/bmb-digital-id.component.mjs +54 -0
  58. package/esm2022/lib/components/bmb-divider/bmb-divider.component.mjs +25 -0
  59. package/esm2022/lib/components/bmb-dot-paginator/bmb-dot-paginator.component.mjs +34 -0
  60. package/esm2022/lib/components/bmb-drawer-overlay/bmb-drawer-overlay.component.mjs +54 -0
  61. package/esm2022/lib/components/bmb-dropdown/bmb-dropdown.component.mjs +200 -0
  62. package/esm2022/lib/components/bmb-dropdown-menu/bmb-dropdown-menu.component.mjs +28 -0
  63. package/esm2022/lib/components/bmb-dropzone/bmb-dropzone.component.mjs +175 -0
  64. package/esm2022/lib/components/bmb-evaluation-rubric/bmb-evaluation-rubric.component.mjs +76 -0
  65. package/esm2022/lib/components/bmb-external-link/bmb-external-link.component.mjs +78 -0
  66. package/esm2022/lib/components/bmb-fab/bmb-fab-.interface.mjs +9 -0
  67. package/esm2022/lib/components/bmb-fab/bmb-fab.component.mjs +37 -0
  68. package/esm2022/lib/components/bmb-filter-card/bmb-filter-card.component.mjs +154 -0
  69. package/esm2022/lib/components/bmb-filter-card/bmb-filter-card.interface.mjs +2 -0
  70. package/esm2022/lib/components/bmb-focus-element/bmb-focus-element.component.mjs +36 -0
  71. package/esm2022/lib/components/bmb-form-validation/bmb-form-validation.component.mjs +159 -0
  72. package/esm2022/lib/components/bmb-form-validator/bmb-form-validator.component.mjs +159 -0
  73. package/esm2022/lib/components/bmb-frequent-apps-selector/bmb-frequent-apps-selector.component.mjs +29 -0
  74. package/esm2022/lib/components/bmb-grade-value/bmb-grade-value.component.mjs +22 -0
  75. package/esm2022/lib/components/bmb-grades/bmb-grades.component.mjs +181 -0
  76. package/esm2022/lib/components/bmb-grades/types.mjs +2 -0
  77. package/esm2022/lib/components/bmb-header-mitec/bmb-header-mitec.component.mjs +55 -0
  78. package/esm2022/lib/components/bmb-header-mobile/bmb-header-mobile.component.mjs +49 -0
  79. package/esm2022/lib/components/bmb-hito-card/bmb-hito-card.component.mjs +77 -0
  80. package/esm2022/lib/components/bmb-hito-list/bmb-hito-list.component.mjs +59 -0
  81. package/esm2022/lib/components/bmb-home-card/bmb-home-card-header/bmb-home-card-header.component.mjs +76 -0
  82. package/esm2022/lib/components/bmb-home-card/bmb-home-card.component.mjs +41 -0
  83. package/esm2022/lib/components/bmb-home-card-chat/bmb-home-card-chat.component.mjs +39 -0
  84. package/esm2022/lib/components/bmb-home-section/bmb-home-section.component.mjs +20 -0
  85. package/esm2022/lib/components/bmb-icon/bmb-icon.component.mjs +49 -0
  86. package/esm2022/lib/components/bmb-icon/types.mjs +2 -0
  87. package/esm2022/lib/components/bmb-icon-item/bmb-icon-item.component.mjs +23 -0
  88. package/esm2022/lib/components/bmb-icon-status/bmb-icon-status.component.mjs +24 -0
  89. package/esm2022/lib/components/bmb-iframe/bmb-iframe.component.mjs +19 -0
  90. package/esm2022/lib/components/bmb-iframe/bmb-iframe.pipe.mjs +21 -0
  91. package/esm2022/lib/components/bmb-image/bmb-image.component.mjs +33 -0
  92. package/esm2022/lib/components/bmb-inner-header/bmb-inner-header.component.mjs +77 -0
  93. package/esm2022/lib/components/bmb-input/bmb-input-content/bmb-input-content.component.mjs +147 -0
  94. package/esm2022/lib/components/bmb-input/bmb-input-validation/bmb-input-validation.component.mjs +162 -0
  95. package/esm2022/lib/components/bmb-input/bmb-input-validation/bmb-input-validation.service.mjs +116 -0
  96. package/esm2022/lib/components/bmb-input/bmb-input-validator/bmb-input-validator.component.mjs +178 -0
  97. package/esm2022/lib/components/bmb-input/bmb-input.component.mjs +85 -0
  98. package/esm2022/lib/components/bmb-input-phone-number/bmb-input-phone-number.component.mjs +219 -0
  99. package/esm2022/lib/components/bmb-input-tags/bmb-input-tags.component.mjs +191 -0
  100. package/esm2022/lib/components/bmb-interactive-icon/bmb-interactive-icon.component.mjs +54 -0
  101. package/esm2022/lib/components/bmb-invoice/bmb-invoice.component.mjs +34 -0
  102. package/esm2022/lib/components/bmb-item/bmb-item.component.mjs +28 -0
  103. package/esm2022/lib/components/bmb-legend/bmb-legend.component.mjs +23 -0
  104. package/esm2022/lib/components/bmb-list-group/bmb-list-group-item/bmb-list-group-item.component.mjs +83 -0
  105. package/esm2022/lib/components/bmb-list-group/bmb-list-group.component.mjs +60 -0
  106. package/esm2022/lib/components/bmb-list-group/bmb-list-group.service.mjs +55 -0
  107. package/esm2022/lib/components/bmb-list-group/types.mjs +2 -0
  108. package/esm2022/lib/components/bmb-list-items/bmb-list-items.component.mjs +83 -0
  109. package/esm2022/lib/components/bmb-loader/bmb-loader.component.mjs +77 -0
  110. package/esm2022/lib/components/bmb-login/bmb-login-content/bmb-login-content.component.mjs +55 -0
  111. package/esm2022/lib/components/bmb-login/bmb-login.component.mjs +66 -0
  112. package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-logged/bmb-login-onboarding-logged.component.mjs +40 -0
  113. package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-login/bmb-login-onboarding-login.component.mjs +20 -0
  114. package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-logout/bmb-login-onboarding-logout.component.mjs +33 -0
  115. package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper-steps/bmb-login-onboarding-stepper-step-four.component.mjs +87 -0
  116. package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper-steps/bmb-login-onboarding-stepper-step-one.component.mjs +88 -0
  117. package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper-steps/bmb-login-onboarding-stepper-step-three.component.mjs +57 -0
  118. package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper-steps/bmb-login-onboarding-stepper-step-two.component.mjs +99 -0
  119. package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper-steps/bmb-login-onboarding-stepper-step.component.mjs +39 -0
  120. package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper.component.mjs +44 -0
  121. package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding.component.mjs +52 -0
  122. package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding.service.mjs +70 -0
  123. package/esm2022/lib/components/bmb-login-onboarding/types.mjs +2 -0
  124. package/esm2022/lib/components/bmb-logo/bmb-logo.component.mjs +43 -0
  125. package/esm2022/lib/components/bmb-media-card/bmb-media-card.component.mjs +64 -0
  126. package/esm2022/lib/components/bmb-mitec-logo-animation/bmb-mitec-logo-animation.component.mjs +14 -0
  127. package/esm2022/lib/components/bmb-mobile-templates/bmb-mobile-templates.component.mjs +88 -0
  128. package/esm2022/lib/components/bmb-modal/bmb-modal.component.mjs +139 -0
  129. package/esm2022/lib/components/bmb-modal/bmb-modal.interface.mjs +2 -0
  130. package/esm2022/lib/components/bmb-modal/bmb-native-modal.component.mjs +84 -0
  131. package/esm2022/lib/components/bmb-multi-dot-paginator/bmb-multi-dot-paginator-item/bmb-multi-dot-paginator-item.component.mjs +15 -0
  132. package/esm2022/lib/components/bmb-multi-dot-paginator/bmb-multi-dot-paginator.component.mjs +59 -0
  133. package/esm2022/lib/components/bmb-navigation-bar/bmb-navigation-bar.component.mjs +30 -0
  134. package/esm2022/lib/components/bmb-notice-card/bmb-notice-card.component.mjs +43 -0
  135. package/esm2022/lib/components/bmb-notification-card/bmb-notification-card.component.mjs +86 -0
  136. package/esm2022/lib/components/bmb-overlay/bmb-overlay.component.mjs +22 -0
  137. package/esm2022/lib/components/bmb-paginator/bmb-paginator.component.mjs +52 -0
  138. package/esm2022/lib/components/bmb-portal/bmb-portal.component.mjs +52 -0
  139. package/esm2022/lib/components/bmb-profile/bmb-profile.component.mjs +153 -0
  140. package/esm2022/lib/components/bmb-progress-bar/bmb-progress-bar.component.mjs +39 -0
  141. package/esm2022/lib/components/bmb-progress-cirlce/bmb-progress-circle.component.mjs +196 -0
  142. package/esm2022/lib/components/bmb-progress-cirlce/bmb-progress-circle.interface.mjs +2 -0
  143. package/esm2022/lib/components/bmb-pull-wedge/bmb-pull-wedge.component.mjs +88 -0
  144. package/esm2022/lib/components/bmb-push-notification/bmb-push-notification-item/bmb-push-notification-item.component.mjs +75 -0
  145. package/esm2022/lib/components/bmb-push-notification/bmb-push-notification.component.mjs +24 -0
  146. package/esm2022/lib/components/bmb-push-notification/types.mjs +2 -0
  147. package/esm2022/lib/components/bmb-radial/bmb-radial.component.mjs +78 -0
  148. package/esm2022/lib/components/bmb-search-input/bmb-search-input.component.mjs +117 -0
  149. package/esm2022/lib/components/bmb-select/bmb-select-item/bmb-select-item.component.mjs +16 -0
  150. package/esm2022/lib/components/bmb-select/bmb-select.component.mjs +55 -0
  151. package/esm2022/lib/components/bmb-server-table/bmb-server-table.component.mjs +82 -0
  152. package/esm2022/lib/components/bmb-sidebar/bmb-sidebar.component.mjs +103 -0
  153. package/esm2022/lib/components/bmb-sidebar/bmb-sidebar.interface.mjs +2 -0
  154. package/esm2022/lib/components/bmb-simple-header/bmb-simple-header.component.mjs +64 -0
  155. package/esm2022/lib/components/bmb-skeleton/bmb-skeleton.component.mjs +16 -0
  156. package/esm2022/lib/components/bmb-sounds-card/bmb-sounds-card.component.mjs +64 -0
  157. package/esm2022/lib/components/bmb-stat-counter/bmb-stat-counter.component.mjs +32 -0
  158. package/esm2022/lib/components/bmb-step-progress-bar/bmb-step-progress-bar.component.mjs +53 -0
  159. package/esm2022/lib/components/bmb-student-activity-card/bmb-student-activity-card.component.mjs +53 -0
  160. package/esm2022/lib/components/bmb-student-activity-selector/bmb-student-activity-tab/bmb-student-activity-tab.component.mjs +27 -0
  161. package/esm2022/lib/components/bmb-switch/bmb-switch.component.mjs +88 -0
  162. package/esm2022/lib/components/bmb-tables/bmb-tables.component.mjs +545 -0
  163. package/esm2022/lib/components/bmb-tables/bmb-tables.interface.mjs +2 -0
  164. package/esm2022/lib/components/bmb-tabs/bmb-tabs.component.mjs +127 -0
  165. package/esm2022/lib/components/bmb-tags/bmb-tags.component.mjs +65 -0
  166. package/esm2022/lib/components/bmb-text-editor/bmb-text-editor.component.mjs +135 -0
  167. package/esm2022/lib/components/bmb-text-link/bmb-text-link.component.mjs +43 -0
  168. package/esm2022/lib/components/bmb-theme/bmb-theme.component.mjs +65 -0
  169. package/esm2022/lib/components/bmb-three-cols/bmb-three-cols.component.mjs +30 -0
  170. package/esm2022/lib/components/bmb-timestream/bmb-timestream-detail/bmb-timestream-detail.component.mjs +74 -0
  171. package/esm2022/lib/components/bmb-timestream/bmb-timestream-error/bmb-timestream-error.component.mjs +13 -0
  172. package/esm2022/lib/components/bmb-timestream/bmb-timestream.component.mjs +238 -0
  173. package/esm2022/lib/components/bmb-timestream/types.mjs +2 -0
  174. package/esm2022/lib/components/bmb-timestream-card/bmb-timestream-card.component.mjs +139 -0
  175. package/esm2022/lib/components/bmb-title-content/bmb-title-content.component.mjs +61 -0
  176. package/esm2022/lib/components/bmb-toast/bmb-toast.component.mjs +47 -0
  177. package/esm2022/lib/components/bmb-tooltip/bmb-tooltip.component.mjs +26 -0
  178. package/esm2022/lib/components/bmb-top-bar/bmb-top-bar-item/bmb-top-bar-item.component.mjs +31 -0
  179. package/esm2022/lib/components/bmb-top-bar/bmb-top-bar-user-section/bmb-top-bar-user-section.component.mjs +70 -0
  180. package/esm2022/lib/components/bmb-top-bar/bmb-top-bar.component.mjs +122 -0
  181. package/esm2022/lib/components/bmb-top-bar/types.mjs +2 -0
  182. package/esm2022/lib/components/bmb-totp/bmb-totp.component.mjs +138 -0
  183. package/esm2022/lib/components/bmb-user-image/bmb-user-image.component.mjs +44 -0
  184. package/esm2022/lib/components/bmb-user-profile/bmb-user-profile-content/bmb-user-profile-content.component.mjs +19 -0
  185. package/esm2022/lib/components/bmb-user-profile/bmb-user-profile.component.mjs +71 -0
  186. package/esm2022/lib/components/bmb-user-summary/bmb-user-summary-content/bmb-user-summary-content.component.mjs +51 -0
  187. package/esm2022/lib/components/bmb-user-summary/bmb-user-summary.component.mjs +28 -0
  188. package/esm2022/lib/components/bmb-value-counter/bmb-value-counter.component.mjs +23 -0
  189. package/esm2022/lib/components/bmb-web-templates/bmb-web-templates.component.mjs +85 -0
  190. package/esm2022/lib/components/bmb-wheel-menu/bmb-wheel-menu.component.mjs +128 -0
  191. package/esm2022/lib/components/utils/bmb-dropdown-content/bmb-dropdown-content.component.mjs +55 -0
  192. package/esm2022/lib/directives/bmb-accordion/bmb-accordion-control.directive.mjs +88 -0
  193. package/esm2022/lib/directives/bmb-button/button.directive.mjs +84 -0
  194. package/esm2022/lib/directives/bmb-button-group/bmb-button-group.directive.mjs +29 -0
  195. package/esm2022/lib/directives/bmb-layout/bmb-layout-item.directive.mjs +51 -0
  196. package/esm2022/lib/directives/bmb-layout/bmb-layout.directive.mjs +36 -0
  197. package/esm2022/lib/directives/bmb-layout/bmb-vertical-layout/bmb-vertical-layout-item.directive.mjs +34 -0
  198. package/esm2022/lib/directives/bmb-layout/bmb-vertical-layout/bmb-vertical-layout.directive.mjs +37 -0
  199. package/esm2022/lib/directives/bmb-layout-grid/bmb-layout-grid.directive.mjs +89 -0
  200. package/esm2022/lib/directives/utils/clickoutside.directive.mjs +41 -0
  201. package/esm2022/lib/ds-ng.component.mjs +11 -0
  202. package/esm2022/lib/ds-ng.service.mjs +14 -0
  203. package/esm2022/lib/services/calendar.service.mjs +51 -0
  204. package/esm2022/lib/services/index.mjs +3 -0
  205. package/esm2022/lib/services/native-modal.service.mjs +69 -0
  206. package/esm2022/lib/services/notification.service.mjs +77 -0
  207. package/esm2022/lib/services/tabs.service.mjs +30 -0
  208. package/esm2022/lib/services/theme.service.mjs +30 -0
  209. package/esm2022/lib/services/toast.service.mjs +24 -0
  210. package/esm2022/lib/services/user/profile.service.mjs +26 -0
  211. package/esm2022/lib/types/colors.mjs +2 -0
  212. package/esm2022/lib/types/index.mjs +11 -0
  213. package/esm2022/lib/utils/countryCodes.mjs +1089 -0
  214. package/esm2022/lib/utils/currencyFormat.mjs +7 -0
  215. package/esm2022/lib/utils/dropdown.mjs +85 -0
  216. package/esm2022/lib/utils/formControl.mjs +25 -0
  217. package/esm2022/lib/utils/timestreamFilters.mjs +32 -0
  218. package/esm2022/lib/utils/utils.mjs +66 -0
  219. package/esm2022/public-api.mjs +151 -0
  220. package/esm2022/ti-tecnologico-de-monterrey-oficial-ds-ng.mjs +5 -0
  221. package/fesm2022/ti-tecnologico-de-monterrey-oficial-ds-ng.mjs +3714 -3147
  222. package/fesm2022/ti-tecnologico-de-monterrey-oficial-ds-ng.mjs.map +1 -1
  223. package/index.d.ts +5 -3573
  224. package/lib/components/bmb-academic-progress/bmb-academic-progress.component.d.ts +21 -0
  225. package/lib/components/bmb-accordion/bmb-accordion.component.d.ts +37 -0
  226. package/lib/components/bmb-account-statement/bmb-account-statement.component.d.ts +54 -0
  227. package/lib/components/bmb-action-icon/bmb-action-icon.component.d.ts +23 -0
  228. package/lib/components/bmb-action-menu/bmb-action-menu.component.d.ts +17 -0
  229. package/lib/components/bmb-advertisement-card/bmb-advertisement-card.component.d.ts +13 -0
  230. package/lib/components/bmb-advertisement-card/types.d.ts +21 -0
  231. package/lib/components/bmb-alert-center/bmb-alert-center-ads/bmb-alert-center-ads.component.d.ts +10 -0
  232. package/lib/components/bmb-alert-center/bmb-alert-center-empty/bmb-alert-center-empty.component.d.ts +7 -0
  233. package/lib/components/bmb-alert-center/bmb-alert-center-form/bmb-alert-center-form.component.d.ts +31 -0
  234. package/lib/components/bmb-alert-center/bmb-alert-center-list/bmb-alert-center-list.component.d.ts +20 -0
  235. package/lib/components/bmb-alert-center/bmb-alert-center.component.d.ts +46 -0
  236. package/lib/components/bmb-alert-center/bmb-alert-center.service.d.ts +20 -0
  237. package/lib/components/bmb-alert-center/types.d.ts +64 -0
  238. package/lib/components/bmb-badge/bmb-badge.component.d.ts +11 -0
  239. package/lib/components/bmb-balance-overview/bmb-balance-overview.component.d.ts +15 -0
  240. package/lib/components/bmb-bookmark/bmb-bookmark.component.d.ts +8 -0
  241. package/lib/components/bmb-bottom-navigation-bar/bmb-bottom-navigation-bar.component.d.ts +25 -0
  242. package/lib/components/bmb-breadcrumb/bmb-breadcrumb.component.d.ts +27 -0
  243. package/lib/components/bmb-button-icon/bmb-button-icon.component.d.ts +16 -0
  244. package/lib/components/bmb-calendar/bmb-calendar.component.d.ts +65 -0
  245. package/lib/components/bmb-calendar/common/bmb-calendar-header/bmb-calendar-header.component.d.ts +20 -0
  246. package/lib/components/bmb-calendar/common/bmb-calendar-hour-view/bmb-calendar-hour-view.component.d.ts +13 -0
  247. package/lib/components/bmb-calendar/common/bmb-calendar-schedule-cards/bmb-calendar-schedule-cards.component.d.ts +16 -0
  248. package/lib/components/bmb-calendar/common/bmb-calendar-template-day/bmb-calendar-template-day.component.d.ts +18 -0
  249. package/lib/components/bmb-calendar/common/bmb-calendar-template-event-list/bmb-calendar-template-event-list.component.d.ts +17 -0
  250. package/lib/components/bmb-calendar/common/bmb-calendar-template-mobile/bmb-calendar-template-mobile.component.d.ts +31 -0
  251. package/lib/components/bmb-calendar/common/bmb-calendar-template-month/bmb-calendar-template-month.component.d.ts +18 -0
  252. package/lib/components/bmb-calendar/common/bmb-calendar-template-week/bmb-calendar-template-week.component.d.ts +23 -0
  253. package/lib/components/bmb-calendar/common/bmb-calendar-time-indicator/bmb-calendar-time-indicator.component.d.ts +9 -0
  254. package/lib/components/bmb-calendar/types.d.ts +43 -0
  255. package/lib/components/bmb-calendar/utils.d.ts +12 -0
  256. package/lib/components/bmb-card/bmb-card.component.d.ts +42 -0
  257. package/lib/components/bmb-card-button/bmb-card-button.component.d.ts +50 -0
  258. package/lib/components/bmb-carousel/bmb-carousel.component.d.ts +20 -0
  259. package/lib/components/bmb-chat-bar/bmb-chat-bar.component.d.ts +62 -0
  260. package/lib/components/bmb-chat-bar/bot_list.d.ts +6 -0
  261. package/lib/components/bmb-chat-bar/types.d.ts +9 -0
  262. package/lib/components/bmb-chat-bubbles/bmb-chat-bubbles.component.d.ts +23 -0
  263. package/lib/components/bmb-chat-bubbles/types.d.ts +23 -0
  264. package/lib/components/bmb-check-external-link-button/bmb-check-external-link-button.component.d.ts +21 -0
  265. package/lib/components/bmb-checkbox/bmb-checkbox.component.d.ts +33 -0
  266. package/lib/components/bmb-chevron-title-selector/bmb-chevron-title-selector.component.d.ts +17 -0
  267. package/lib/components/bmb-container/bmb-container.component.d.ts +9 -0
  268. package/lib/components/bmb-container-button/bmb-container-button.component.d.ts +30 -0
  269. package/lib/components/bmb-date-range/bmb-date-range.component.d.ts +35 -0
  270. package/lib/components/bmb-datepicker/bmb-datepicker-modal/bmb-datepicker-modal.component.d.ts +40 -0
  271. package/lib/components/bmb-datepicker/bmb-datepicker.component.d.ts +44 -0
  272. package/lib/components/bmb-digital-id/bmb-digital-id.component.d.ts +26 -0
  273. package/lib/components/bmb-divider/bmb-divider.component.d.ts +8 -0
  274. package/lib/components/bmb-dot-paginator/bmb-dot-paginator.component.d.ts +17 -0
  275. package/lib/components/bmb-drawer-overlay/bmb-drawer-overlay.component.d.ts +24 -0
  276. package/lib/components/bmb-dropdown/bmb-dropdown.component.d.ts +61 -0
  277. package/lib/components/bmb-dropdown-menu/bmb-dropdown-menu.component.d.ts +10 -0
  278. package/lib/components/bmb-dropzone/bmb-dropzone.component.d.ts +49 -0
  279. package/lib/components/bmb-evaluation-rubric/bmb-evaluation-rubric.component.d.ts +45 -0
  280. package/lib/components/bmb-external-link/bmb-external-link.component.d.ts +22 -0
  281. package/lib/components/bmb-fab/bmb-fab-.interface.d.ts +10 -0
  282. package/lib/components/bmb-fab/bmb-fab.component.d.ts +15 -0
  283. package/lib/components/bmb-filter-card/bmb-filter-card.component.d.ts +33 -0
  284. package/lib/components/bmb-filter-card/bmb-filter-card.interface.d.ts +10 -0
  285. package/lib/components/bmb-focus-element/bmb-focus-element.component.d.ts +14 -0
  286. package/lib/components/bmb-form-validation/bmb-form-validation.component.d.ts +34 -0
  287. package/lib/components/bmb-form-validator/bmb-form-validator.component.d.ts +34 -0
  288. package/lib/components/bmb-frequent-apps-selector/bmb-frequent-apps-selector.component.d.ts +13 -0
  289. package/lib/components/bmb-grade-value/bmb-grade-value.component.d.ts +11 -0
  290. package/lib/components/bmb-grades/bmb-grades.component.d.ts +43 -0
  291. package/lib/components/bmb-grades/types.d.ts +25 -0
  292. package/lib/components/bmb-header-mitec/bmb-header-mitec.component.d.ts +17 -0
  293. package/lib/components/bmb-header-mobile/bmb-header-mobile.component.d.ts +23 -0
  294. package/lib/components/bmb-hito-card/bmb-hito-card.component.d.ts +23 -0
  295. package/lib/components/bmb-hito-list/bmb-hito-list.component.d.ts +24 -0
  296. package/lib/components/bmb-home-card/bmb-home-card-header/bmb-home-card-header.component.d.ts +28 -0
  297. package/lib/components/bmb-home-card/bmb-home-card.component.d.ts +27 -0
  298. package/lib/components/bmb-home-card-chat/bmb-home-card-chat.component.d.ts +25 -0
  299. package/lib/components/bmb-home-section/bmb-home-section.component.d.ts +9 -0
  300. package/lib/components/bmb-icon/bmb-icon.component.d.ts +23 -0
  301. package/lib/components/bmb-icon/types.d.ts +1 -0
  302. package/lib/components/bmb-icon-item/bmb-icon-item.component.d.ts +13 -0
  303. package/lib/components/bmb-icon-status/bmb-icon-status.component.d.ts +10 -0
  304. package/lib/components/bmb-iframe/bmb-iframe.component.d.ts +11 -0
  305. package/lib/components/bmb-iframe/bmb-iframe.pipe.d.ts +10 -0
  306. package/lib/components/bmb-image/bmb-image.component.d.ts +19 -0
  307. package/lib/components/bmb-inner-header/bmb-inner-header.component.d.ts +29 -0
  308. package/lib/components/bmb-input/bmb-input-content/bmb-input-content.component.d.ts +53 -0
  309. package/lib/components/bmb-input/bmb-input-validation/bmb-input-validation.component.d.ts +46 -0
  310. package/lib/components/bmb-input/bmb-input-validation/bmb-input-validation.service.d.ts +16 -0
  311. package/lib/components/bmb-input/bmb-input-validator/bmb-input-validator.component.d.ts +45 -0
  312. package/lib/components/bmb-input/bmb-input.component.d.ts +68 -0
  313. package/lib/components/bmb-input-phone-number/bmb-input-phone-number.component.d.ts +52 -0
  314. package/lib/components/bmb-input-tags/bmb-input-tags.component.d.ts +55 -0
  315. package/lib/components/bmb-interactive-icon/bmb-interactive-icon.component.d.ts +23 -0
  316. package/lib/components/bmb-invoice/bmb-invoice.component.d.ts +31 -0
  317. package/lib/components/bmb-item/bmb-item.component.d.ts +16 -0
  318. package/lib/components/bmb-legend/bmb-legend.component.d.ts +9 -0
  319. package/lib/components/bmb-list-group/bmb-list-group-item/bmb-list-group-item.component.d.ts +33 -0
  320. package/lib/components/bmb-list-group/bmb-list-group.component.d.ts +27 -0
  321. package/lib/components/bmb-list-group/bmb-list-group.service.d.ts +18 -0
  322. package/lib/components/bmb-list-group/types.d.ts +1 -0
  323. package/lib/components/bmb-list-items/bmb-list-items.component.d.ts +33 -0
  324. package/lib/components/bmb-loader/bmb-loader.component.d.ts +31 -0
  325. package/lib/components/bmb-login/bmb-login-content/bmb-login-content.component.d.ts +27 -0
  326. package/lib/components/bmb-login/bmb-login.component.d.ts +33 -0
  327. package/lib/components/bmb-login-onboarding/bmb-login-onboarding-logged/bmb-login-onboarding-logged.component.d.ts +14 -0
  328. package/lib/components/bmb-login-onboarding/bmb-login-onboarding-login/bmb-login-onboarding-login.component.d.ts +8 -0
  329. package/lib/components/bmb-login-onboarding/bmb-login-onboarding-logout/bmb-login-onboarding-logout.component.d.ts +12 -0
  330. package/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper-steps/bmb-login-onboarding-stepper-step-four.component.d.ts +18 -0
  331. package/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper-steps/bmb-login-onboarding-stepper-step-one.component.d.ts +17 -0
  332. package/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper-steps/bmb-login-onboarding-stepper-step-three.component.d.ts +11 -0
  333. package/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper-steps/bmb-login-onboarding-stepper-step-two.component.d.ts +19 -0
  334. package/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper-steps/bmb-login-onboarding-stepper-step.component.d.ts +19 -0
  335. package/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper.component.d.ts +15 -0
  336. package/lib/components/bmb-login-onboarding/bmb-login-onboarding.component.d.ts +20 -0
  337. package/lib/components/bmb-login-onboarding/bmb-login-onboarding.service.d.ts +25 -0
  338. package/lib/components/bmb-login-onboarding/types.d.ts +15 -0
  339. package/lib/components/bmb-logo/bmb-logo.component.d.ts +19 -0
  340. package/lib/components/bmb-media-card/bmb-media-card.component.d.ts +34 -0
  341. package/lib/components/bmb-mitec-logo-animation/bmb-mitec-logo-animation.component.d.ts +6 -0
  342. package/lib/components/bmb-mobile-templates/bmb-mobile-templates.component.d.ts +47 -0
  343. package/lib/components/bmb-modal/bmb-modal.component.d.ts +31 -0
  344. package/lib/components/bmb-modal/bmb-modal.interface.d.ts +37 -0
  345. package/lib/components/bmb-modal/bmb-native-modal.component.d.ts +37 -0
  346. package/lib/components/bmb-multi-dot-paginator/bmb-multi-dot-paginator-item/bmb-multi-dot-paginator-item.component.d.ts +7 -0
  347. package/lib/components/bmb-multi-dot-paginator/bmb-multi-dot-paginator.component.d.ts +15 -0
  348. package/lib/components/bmb-navigation-bar/bmb-navigation-bar.component.d.ts +13 -0
  349. package/lib/components/bmb-notice-card/bmb-notice-card.component.d.ts +21 -0
  350. package/lib/components/bmb-notification-card/bmb-notification-card.component.d.ts +27 -0
  351. package/lib/components/bmb-overlay/bmb-overlay.component.d.ts +9 -0
  352. package/lib/components/bmb-paginator/bmb-paginator.component.d.ts +14 -0
  353. package/lib/components/bmb-portal/bmb-portal.component.d.ts +18 -0
  354. package/lib/components/bmb-profile/bmb-profile.component.d.ts +34 -0
  355. package/lib/components/bmb-progress-bar/bmb-progress-bar.component.d.ts +19 -0
  356. package/lib/components/bmb-progress-cirlce/bmb-progress-circle.component.d.ts +51 -0
  357. package/lib/components/bmb-progress-cirlce/bmb-progress-circle.interface.d.ts +12 -0
  358. package/lib/components/bmb-pull-wedge/bmb-pull-wedge.component.d.ts +23 -0
  359. package/lib/components/bmb-push-notification/bmb-push-notification-item/bmb-push-notification-item.component.d.ts +18 -0
  360. package/lib/components/bmb-push-notification/bmb-push-notification.component.d.ts +11 -0
  361. package/lib/components/bmb-push-notification/types.d.ts +46 -0
  362. package/lib/components/bmb-radial/bmb-radial.component.d.ts +33 -0
  363. package/lib/components/bmb-search-input/bmb-search-input.component.d.ts +33 -0
  364. package/lib/components/bmb-select/bmb-select-item/bmb-select-item.component.d.ts +6 -0
  365. package/lib/components/bmb-select/bmb-select.component.d.ts +17 -0
  366. package/lib/components/bmb-server-table/bmb-server-table.component.d.ts +26 -0
  367. package/lib/components/bmb-sidebar/bmb-sidebar.component.d.ts +27 -0
  368. package/lib/components/bmb-sidebar/bmb-sidebar.interface.d.ts +10 -0
  369. package/lib/components/bmb-simple-header/bmb-simple-header.component.d.ts +10 -0
  370. package/lib/components/bmb-skeleton/bmb-skeleton.component.d.ts +7 -0
  371. package/lib/components/bmb-sounds-card/bmb-sounds-card.component.d.ts +24 -0
  372. package/lib/components/bmb-stat-counter/bmb-stat-counter.component.d.ts +11 -0
  373. package/lib/components/bmb-step-progress-bar/bmb-step-progress-bar.component.d.ts +26 -0
  374. package/lib/components/bmb-student-activity-card/bmb-student-activity-card.component.d.ts +23 -0
  375. package/lib/components/bmb-student-activity-selector/bmb-student-activity-tab/bmb-student-activity-tab.component.d.ts +10 -0
  376. package/lib/components/bmb-switch/bmb-switch.component.d.ts +25 -0
  377. package/lib/components/bmb-tables/bmb-tables.component.d.ts +104 -0
  378. package/lib/components/bmb-tables/bmb-tables.interface.d.ts +21 -0
  379. package/lib/components/bmb-tabs/bmb-tabs.component.d.ts +41 -0
  380. package/lib/components/bmb-tags/bmb-tags.component.d.ts +25 -0
  381. package/lib/components/bmb-text-editor/bmb-text-editor.component.d.ts +34 -0
  382. package/lib/components/bmb-text-link/bmb-text-link.component.d.ts +17 -0
  383. package/lib/components/bmb-theme/bmb-theme.component.d.ts +19 -0
  384. package/lib/components/bmb-three-cols/bmb-three-cols.component.d.ts +15 -0
  385. package/lib/components/bmb-timestream/bmb-timestream-detail/bmb-timestream-detail.component.d.ts +25 -0
  386. package/lib/components/bmb-timestream/bmb-timestream-error/bmb-timestream-error.component.d.ts +5 -0
  387. package/lib/components/bmb-timestream/bmb-timestream.component.d.ts +67 -0
  388. package/lib/components/bmb-timestream/types.d.ts +54 -0
  389. package/lib/components/bmb-timestream-card/bmb-timestream-card.component.d.ts +29 -0
  390. package/lib/components/bmb-title-content/bmb-title-content.component.d.ts +26 -0
  391. package/lib/components/bmb-toast/bmb-toast.component.d.ts +16 -0
  392. package/lib/components/bmb-tooltip/bmb-tooltip.component.d.ts +15 -0
  393. package/lib/components/bmb-top-bar/bmb-top-bar-item/bmb-top-bar-item.component.d.ts +7 -0
  394. package/lib/components/bmb-top-bar/bmb-top-bar-user-section/bmb-top-bar-user-section.component.d.ts +30 -0
  395. package/lib/components/bmb-top-bar/bmb-top-bar.component.d.ts +45 -0
  396. package/lib/components/bmb-top-bar/types.d.ts +6 -0
  397. package/lib/components/bmb-totp/bmb-totp.component.d.ts +30 -0
  398. package/lib/components/bmb-user-image/bmb-user-image.component.d.ts +19 -0
  399. package/lib/components/bmb-user-profile/bmb-user-profile-content/bmb-user-profile-content.component.d.ts +10 -0
  400. package/lib/components/bmb-user-profile/bmb-user-profile.component.d.ts +19 -0
  401. package/lib/components/bmb-user-summary/bmb-user-summary-content/bmb-user-summary-content.component.d.ts +24 -0
  402. package/lib/components/bmb-user-summary/bmb-user-summary.component.d.ts +14 -0
  403. package/lib/components/bmb-value-counter/bmb-value-counter.component.d.ts +8 -0
  404. package/lib/components/bmb-web-templates/bmb-web-templates.component.d.ts +42 -0
  405. package/lib/components/bmb-wheel-menu/bmb-wheel-menu.component.d.ts +40 -0
  406. package/lib/components/utils/bmb-dropdown-content/bmb-dropdown-content.component.d.ts +16 -0
  407. package/lib/directives/bmb-accordion/bmb-accordion-control.directive.d.ts +22 -0
  408. package/lib/directives/bmb-button/button.directive.d.ts +29 -0
  409. package/lib/directives/bmb-button-group/bmb-button-group.directive.d.ts +10 -0
  410. package/lib/directives/bmb-layout/bmb-layout-item.directive.d.ts +20 -0
  411. package/lib/directives/bmb-layout/bmb-layout.directive.d.ts +15 -0
  412. package/lib/directives/bmb-layout/bmb-vertical-layout/bmb-vertical-layout-item.directive.d.ts +9 -0
  413. package/lib/directives/bmb-layout/bmb-vertical-layout/bmb-vertical-layout.directive.d.ts +14 -0
  414. package/lib/directives/bmb-layout-grid/bmb-layout-grid.directive.d.ts +29 -0
  415. package/lib/directives/utils/clickoutside.directive.d.ts +15 -0
  416. package/lib/ds-ng.component.d.ts +5 -0
  417. package/lib/ds-ng.service.d.ts +6 -0
  418. package/lib/services/calendar.service.d.ts +15 -0
  419. package/lib/services/index.d.ts +2 -0
  420. package/lib/services/native-modal.service.d.ts +18 -0
  421. package/lib/services/notification.service.d.ts +20 -0
  422. package/lib/services/tabs.service.d.ts +13 -0
  423. package/lib/services/theme.service.d.ts +11 -0
  424. package/lib/services/toast.service.d.ts +9 -0
  425. package/lib/services/user/profile.service.d.ts +9 -0
  426. package/lib/types/colors.d.ts +2 -0
  427. package/lib/types/index.d.ts +127 -0
  428. package/lib/utils/countryCodes.d.ts +7 -0
  429. package/lib/utils/currencyFormat.d.ts +1 -0
  430. package/lib/utils/dropdown.d.ts +6 -0
  431. package/lib/utils/formControl.d.ts +7 -0
  432. package/lib/utils/timestreamFilters.d.ts +2 -0
  433. package/lib/utils/utils.d.ts +12 -0
  434. package/package.json +4 -2
  435. package/public-api.d.ts +142 -0
@@ -0,0 +1,200 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, ViewEncapsulation, input, output, model, } from '@angular/core';
3
+ import { FormControl, ReactiveFormsModule } from '@angular/forms';
4
+ import { BmbIconComponent } from '../bmb-icon/bmb-icon.component';
5
+ import { ClickOutsideDirective } from '../../directives/utils/clickoutside.directive';
6
+ import { convertListToSelectList, getSelectedValues, getValidInitialValues, } from '../../utils/dropdown';
7
+ import { BmbDropdownContentComponent } from '../utils/bmb-dropdown-content/bmb-dropdown-content.component';
8
+ import { BmbInputContentComponent } from '../bmb-input/bmb-input-content/bmb-input-content.component';
9
+ import { startWith } from 'rxjs';
10
+ import { getUUID } from '../../utils/utils';
11
+ import { assignNewFormControl, handleValidity, newFormControlByType, showError, } from '../../utils/formControl';
12
+ import { BmbInputValidatorComponent } from '../bmb-input/bmb-input-validator/bmb-input-validator.component';
13
+ import * as i0 from "@angular/core";
14
+ import * as i1 from "@angular/forms";
15
+ export class BmbDropdownComponent {
16
+ constructor() {
17
+ this.required = input(false);
18
+ this.showIcon = input(false);
19
+ this.placeholder = input('');
20
+ this.icon = input('');
21
+ this.options = input([]);
22
+ this.helperText = input('');
23
+ this.errorMessage = input('');
24
+ this.label = input('');
25
+ this.name = input(getUUID());
26
+ this.preferredOptions = input([]);
27
+ this.isMultiSelect = input(false);
28
+ this.tooltip = input('');
29
+ this.tooltipPosition = input({
30
+ align: 'above',
31
+ justify: 'before',
32
+ });
33
+ this.disabled = input(false);
34
+ this.value = input('');
35
+ this.isFilterable = input(false);
36
+ this.inputId = input(this.name());
37
+ this.customValidation = input();
38
+ this.control = model(newFormControlByType());
39
+ this.onValueChange = output();
40
+ this.onFocus = output();
41
+ this.uuid = getUUID();
42
+ this.isOpen = false;
43
+ this.items = [];
44
+ this.selectionControl = new FormControl(new FormControl());
45
+ this.selectedIcon = '';
46
+ this.isKeyboardEvent = false;
47
+ this.isControlNull = false;
48
+ this.filteredOptions = [];
49
+ this.selectedItem = null;
50
+ }
51
+ ngOnInit() {
52
+ if (!this.control()) {
53
+ this.control.set(assignNewFormControl(this.name(), this.control()));
54
+ this.isControlNull = true;
55
+ }
56
+ if (this.disabled())
57
+ this.selectionControl.disable();
58
+ else
59
+ this.selectionControl.enable();
60
+ if (!this.isMultiSelect() && Array.isArray(this.control()?.value)) {
61
+ this.control().setValue('');
62
+ }
63
+ this.control()
64
+ .valueChanges.pipe(startWith(this.getValidInitialValues()))
65
+ .subscribe((value) => {
66
+ this.setSelectionControl(value);
67
+ });
68
+ this.filteredOptions = [...this.items];
69
+ }
70
+ ngOnChanges(changes) {
71
+ if (changes['options']) {
72
+ this.initOptions(changes['options'].currentValue);
73
+ this.control().setValue(this.getValidInitialValues());
74
+ }
75
+ }
76
+ initOptions(list) {
77
+ const newItems = convertListToSelectList(list, this.icon(), this.showIcon());
78
+ this.items = newItems.map((element) => {
79
+ return {
80
+ ...element,
81
+ icon: !this.isMultiSelect() && this.showIcon() ? element.icon : '',
82
+ action: () => {
83
+ this.setSelectedValue(element);
84
+ },
85
+ };
86
+ });
87
+ if (!!this.preferredOptions().length) {
88
+ const preferredItems = this.items.filter((element) => this.preferredOptions().includes(element.value));
89
+ this.items = [...new Set([...preferredItems, ...this.items])];
90
+ }
91
+ this.filteredOptions = [...this.items];
92
+ }
93
+ handleFocus(value) {
94
+ this.onFocus.emit(value);
95
+ }
96
+ getUUID(name) {
97
+ return `${name}_${this.name()}_${this.uuid}`;
98
+ }
99
+ getIcon() {
100
+ if (!this.isMultiSelect() && this.showIcon())
101
+ return this.selectedIcon || this.icon();
102
+ return '';
103
+ }
104
+ getValidInitialValues() {
105
+ return getValidInitialValues(this.control().value, this.value(), this.options(), this.isMultiSelect());
106
+ }
107
+ setSelectionControl(controlValue) {
108
+ if (!!controlValue) {
109
+ if (this.isMultiSelect()) {
110
+ const selectedItems = this.items.filter(({ value }) => controlValue.includes(value));
111
+ this.selectionControl.setValue(selectedItems.map((element) => ` ${element.selectedText}`));
112
+ return;
113
+ }
114
+ const item = this.items.find(({ value }) => value === controlValue);
115
+ if (!!item) {
116
+ this.selectionControl.setValue(item?.selectedText);
117
+ if (this.showIcon())
118
+ this.selectedIcon = item.icon;
119
+ this.selectedItem = item;
120
+ }
121
+ return;
122
+ }
123
+ this.selectionControl.setValue('');
124
+ if (this.showIcon())
125
+ this.selectedIcon = this.icon();
126
+ }
127
+ selectOptionWithKey(value) {
128
+ if (!value)
129
+ return this.items;
130
+ return this.items.filter((item) => item?.selectedText?.toLowerCase().includes(value.toLowerCase()));
131
+ }
132
+ setSelectedValue(element) {
133
+ if (this.isMultiSelect()) {
134
+ this.control().setValue(getSelectedValues(this.control().value, element.value));
135
+ }
136
+ else
137
+ this.control().setValue(element.value);
138
+ this.onValueChange.emit(this.control().value);
139
+ }
140
+ openList() {
141
+ this.isOpen = !this.isOpen;
142
+ if (!this.isOpen)
143
+ this.isKeyboardEvent = false;
144
+ }
145
+ closeList() {
146
+ this.isOpen = false;
147
+ this.isKeyboardEvent = false;
148
+ if (this.isFilterable() && !this.isMultiSelect()) {
149
+ this.selectionControl.setValue(this.selectedItem?.selectedText || '');
150
+ }
151
+ }
152
+ // Keyboards events
153
+ onKeyDown(event) {
154
+ const keyboards = [' ', 'ArrowDown', 'Down'];
155
+ const regexCode = /^[a-zA-Z0-9\-\.\, ]{1}$/gm;
156
+ if (keyboards.includes(event.key)) {
157
+ if (!this.isOpen) {
158
+ this.isKeyboardEvent = true;
159
+ this.openList();
160
+ }
161
+ if (!this.options().length && !this.isFilterable()) {
162
+ event.preventDefault();
163
+ return;
164
+ }
165
+ }
166
+ if (this.isFilterable() && !this.isMultiSelect()) {
167
+ let value = this.selectionControl.value || '';
168
+ if (!this.isOpen)
169
+ this.openList();
170
+ if (regexCode.test(event.key)) {
171
+ value += event.key;
172
+ }
173
+ if (event.key === 'Backspace') {
174
+ value = value.slice(0, -1);
175
+ }
176
+ this.filteredOptions = this.selectOptionWithKey(value);
177
+ }
178
+ }
179
+ handleValidity() {
180
+ handleValidity(this.control());
181
+ }
182
+ get shouldShowError() {
183
+ return showError(this.control());
184
+ }
185
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BmbDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
186
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: BmbDropdownComponent, isStandalone: true, selector: "bmb-dropdown", inputs: { required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, showIcon: { classPropertyName: "showIcon", publicName: "showIcon", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, helperText: { classPropertyName: "helperText", publicName: "helperText", isSignal: true, isRequired: false, transformFunction: null }, errorMessage: { classPropertyName: "errorMessage", publicName: "errorMessage", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, preferredOptions: { classPropertyName: "preferredOptions", publicName: "preferredOptions", isSignal: true, isRequired: false, transformFunction: null }, isMultiSelect: { classPropertyName: "isMultiSelect", publicName: "isMultiSelect", isSignal: true, isRequired: false, transformFunction: null }, tooltip: { classPropertyName: "tooltip", publicName: "tooltip", isSignal: true, isRequired: false, transformFunction: null }, tooltipPosition: { classPropertyName: "tooltipPosition", publicName: "tooltipPosition", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, isFilterable: { classPropertyName: "isFilterable", publicName: "isFilterable", isSignal: true, isRequired: false, transformFunction: null }, inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: false, transformFunction: null }, customValidation: { classPropertyName: "customValidation", publicName: "customValidation", isSignal: true, isRequired: false, transformFunction: null }, control: { classPropertyName: "control", publicName: "control", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { control: "controlChange", onValueChange: "onValueChange", onFocus: "onFocus" }, usesOnChanges: true, ngImport: i0, template: "<bmb-input-validator\r\n class=\"bmb_dropdown\"\r\n [inputId]=\"inputId()\"\r\n [name]=\"name()\"\r\n [value]=\"getValidInitialValues()\"\r\n [label]=\"label()!\"\r\n [errorMessage]=\"errorMessage()\"\r\n [helperMessage]=\"helperText()\"\r\n [isRequired]=\"required()\"\r\n [isDisabled]=\"disabled()\"\r\n [control]=\"control()\"\r\n [showError]=\"shouldShowError\"\r\n [tooltip]=\"tooltip()\"\r\n [tooltipPosition]=\"tooltipPosition()\"\r\n [customValidation]=\"customValidation()\"\r\n clickOutside\r\n (clickOutside)=\"closeList()\"\r\n>\r\n <bmb-input-content\r\n class=\"bmb_dropdown-field\"\r\n type=\"text\"\r\n [inputId]=\"inputId()\"\r\n [name]=\"name()\"\r\n [icon]=\"getIcon()\"\r\n [control]=\"selectionControl\"\r\n [isReadOnly]=\"!isFilterable() || isMultiSelect()\"\r\n [placeholder]=\"placeholder()\"\r\n [isError]=\"shouldShowError\"\r\n [isDisabled]=\"disabled()\"\r\n (click)=\"openList()\"\r\n (onKeyDown)=\"onKeyDown($event)\"\r\n (onBlur)=\"handleValidity()\"\r\n (onFocus)=\"handleFocus($event)\"\r\n >\r\n <ng-template #customContent>\r\n <label [htmlFor]=\"inputId()\">\r\n <bmb-icon\r\n class=\"bmb_field-actions\"\r\n icon=\"keyboard_arrow_down\"\r\n (click)=\"openList()\"\r\n [size]=\"24\"\r\n />\r\n </label>\r\n </ng-template>\r\n </bmb-input-content>\r\n <bmb-dropdown-content\r\n class=\"bmb_dropdown-list\"\r\n [selectedOption]=\"control().value\"\r\n [isKeyboardEvent]=\"isKeyboardEvent\"\r\n [(items)]=\"filteredOptions\"\r\n [(isOpen)]=\"isOpen\"\r\n />\r\n <input\r\n hidden\r\n type=\"text\"\r\n [id]=\"getUUID('id')\"\r\n [name]=\"name()\"\r\n [formControl]=\"control()\"\r\n />\r\n</bmb-input-validator>\r\n", styles: [".bmb_dropdown{display:inline-block;position:relative;width:100%}.bmb_dropdown-field .bmb_field-input{padding-right:2.25rem}.bmb_dropdown-field .bmb_field-input-normal,.bmb_dropdown-field .bmb_field-actions{cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: BmbIconComponent, selector: "bmb-icon", inputs: ["icon", "materialIcon", "styleIcon", "isFill", "fontWeight", "size", "alt", "dotNotification"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: ClickOutsideDirective, selector: "[clickOutside]", outputs: ["clickOutside"] }, { kind: "component", type: BmbInputValidatorComponent, selector: "bmb-input-validator", inputs: ["inputId", "type", "appearance", "label", "labelPosition", "name", "value", "checked", "isRequired", "isDisabled", "max", "min", "maxLength", "minLength", "pattern", "jsonFormat", "tooltip", "rows", "tooltipPosition", "showMaxTextLength", "helperMessage", "errorMessage", "customValidation", "showError", "control"], outputs: ["showErrorChange", "controlChange"] }, { kind: "component", type: BmbInputContentComponent, selector: "bmb-input-content", inputs: ["type", "placeholder", "icon", "appearance", "isDisabled", "isRequired", "name", "spellcheck", "heightTextArea", "maxLength", "minLength", "pattern", "max", "min", "inputId", "autoComplete", "rows", "isReadOnly", "additionalAction", "isClearable", "isError", "isHidden", "showStates", "control"], outputs: ["controlChange", "onFocus", "onBlur", "onChange", "onKeyDown", "onKeyUp"] }, { kind: "component", type: BmbDropdownContentComponent, selector: "bmb-dropdown-content", inputs: ["selectedOption", "items", "isOpen", "isKeyboardEvent"], outputs: ["itemsChange", "isOpenChange", "isKeyboardEventChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
187
+ }
188
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BmbDropdownComponent, decorators: [{
189
+ type: Component,
190
+ args: [{ selector: 'bmb-dropdown', standalone: true, imports: [
191
+ CommonModule,
192
+ BmbIconComponent,
193
+ ReactiveFormsModule,
194
+ ClickOutsideDirective,
195
+ BmbInputValidatorComponent,
196
+ BmbInputContentComponent,
197
+ BmbDropdownContentComponent,
198
+ ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<bmb-input-validator\r\n class=\"bmb_dropdown\"\r\n [inputId]=\"inputId()\"\r\n [name]=\"name()\"\r\n [value]=\"getValidInitialValues()\"\r\n [label]=\"label()!\"\r\n [errorMessage]=\"errorMessage()\"\r\n [helperMessage]=\"helperText()\"\r\n [isRequired]=\"required()\"\r\n [isDisabled]=\"disabled()\"\r\n [control]=\"control()\"\r\n [showError]=\"shouldShowError\"\r\n [tooltip]=\"tooltip()\"\r\n [tooltipPosition]=\"tooltipPosition()\"\r\n [customValidation]=\"customValidation()\"\r\n clickOutside\r\n (clickOutside)=\"closeList()\"\r\n>\r\n <bmb-input-content\r\n class=\"bmb_dropdown-field\"\r\n type=\"text\"\r\n [inputId]=\"inputId()\"\r\n [name]=\"name()\"\r\n [icon]=\"getIcon()\"\r\n [control]=\"selectionControl\"\r\n [isReadOnly]=\"!isFilterable() || isMultiSelect()\"\r\n [placeholder]=\"placeholder()\"\r\n [isError]=\"shouldShowError\"\r\n [isDisabled]=\"disabled()\"\r\n (click)=\"openList()\"\r\n (onKeyDown)=\"onKeyDown($event)\"\r\n (onBlur)=\"handleValidity()\"\r\n (onFocus)=\"handleFocus($event)\"\r\n >\r\n <ng-template #customContent>\r\n <label [htmlFor]=\"inputId()\">\r\n <bmb-icon\r\n class=\"bmb_field-actions\"\r\n icon=\"keyboard_arrow_down\"\r\n (click)=\"openList()\"\r\n [size]=\"24\"\r\n />\r\n </label>\r\n </ng-template>\r\n </bmb-input-content>\r\n <bmb-dropdown-content\r\n class=\"bmb_dropdown-list\"\r\n [selectedOption]=\"control().value\"\r\n [isKeyboardEvent]=\"isKeyboardEvent\"\r\n [(items)]=\"filteredOptions\"\r\n [(isOpen)]=\"isOpen\"\r\n />\r\n <input\r\n hidden\r\n type=\"text\"\r\n [id]=\"getUUID('id')\"\r\n [name]=\"name()\"\r\n [formControl]=\"control()\"\r\n />\r\n</bmb-input-validator>\r\n", styles: [".bmb_dropdown{display:inline-block;position:relative;width:100%}.bmb_dropdown-field .bmb_field-input{padding-right:2.25rem}.bmb_dropdown-field .bmb_field-input-normal,.bmb_dropdown-field .bmb_field-actions{cursor:pointer}\n"] }]
199
+ }] });
200
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm1iLWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLW5nL3NyYy9saWIvY29tcG9uZW50cy9ibWItZHJvcGRvd24vYm1iLWRyb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLW5nL3NyYy9saWIvY29tcG9uZW50cy9ibWItZHJvcGRvd24vYm1iLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxpQkFBaUIsRUFDakIsS0FBSyxFQUNMLE1BQU0sRUFDTixLQUFLLEdBR04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBZSxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3RGLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLHFCQUFxQixHQUN0QixNQUFNLHNCQUFzQixDQUFDO0FBSzlCLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBRTNHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzVDLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsY0FBYyxFQUNkLG9CQUFvQixFQUNwQixTQUFTLEdBQ1YsTUFBTSx5QkFBeUIsQ0FBQztBQUNq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LENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdCLENBQUM7WUFFRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6RCxDQUFDO0lBQ0gsQ0FBQztJQUVELGNBQWM7UUFDWixjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNuQyxDQUFDOytHQXJOVSxvQkFBb0I7bUdBQXBCLG9CQUFvQiw0cEZDOURqQyxteERBNERBLHdSRFhJLFlBQVksK0JBQ1osZ0JBQWdCLDZKQUNoQixtQkFBbUIsMGtCQUNuQixxQkFBcUIsc0ZBQ3JCLDBCQUEwQixxYkFDMUIsd0JBQXdCLHFjQUN4QiwyQkFBMkI7OzRGQU9sQixvQkFBb0I7a0JBakJoQyxTQUFTOytCQUNFLGNBQWMsY0FDWixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIscUJBQXFCO3dCQUNyQiwwQkFBMEI7d0JBQzFCLHdCQUF3Qjt3QkFDeEIsMkJBQTJCO3FCQUM1QixtQkFHZ0IsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIE9uSW5pdCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBpbnB1dCxcclxuICBvdXRwdXQsXHJcbiAgbW9kZWwsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBPbkNoYW5nZXMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQm1iSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uL2JtYi1pY29uL2JtYi1pY29uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENsaWNrT3V0c2lkZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvdXRpbHMvY2xpY2tvdXRzaWRlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7XHJcbiAgY29udmVydExpc3RUb1NlbGVjdExpc3QsXHJcbiAgZ2V0U2VsZWN0ZWRWYWx1ZXMsXHJcbiAgZ2V0VmFsaWRJbml0aWFsVmFsdWVzLFxyXG59IGZyb20gJy4uLy4uL3V0aWxzL2Ryb3Bkb3duJztcclxuaW1wb3J0IHtcclxuICBJQm1iSW5wdXRFcnJvcixcclxuICBJQm1iSW5wdXRUb29sdGlwUG9zaXRpb24sXHJcbn0gZnJvbSAnLi4vYm1iLWlucHV0L2JtYi1pbnB1dC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCbWJEcm9wZG93bkNvbnRlbnRDb21wb25lbnQgfSBmcm9tICcuLi91dGlscy9ibWItZHJvcGRvd24tY29udGVudC9ibWItZHJvcGRvd24tY29udGVudC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJRHJvcGRvd25JdGVtIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xyXG5pbXBvcnQgeyBCbWJJbnB1dENvbnRlbnRDb21wb25lbnQgfSBmcm9tICcuLi9ibWItaW5wdXQvYm1iLWlucHV0LWNvbnRlbnQvYm1iLWlucHV0LWNvbnRlbnQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgc3RhcnRXaXRoIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGdldFVVSUQgfSBmcm9tICcuLi8uLi91dGlscy91dGlscyc7XHJcbmltcG9ydCB7XHJcbiAgYXNzaWduTmV3Rm9ybUNvbnRyb2wsXHJcbiAgaGFuZGxlVmFsaWRpdHksXHJcbiAgbmV3Rm9ybUNvbnRyb2xCeVR5cGUsXHJcbiAgc2hvd0Vycm9yLFxyXG59IGZyb20gJy4uLy4uL3V0aWxzL2Zvcm1Db250cm9sJztcclxuaW1wb3J0IHsgQm1iSW5wdXRWYWxpZGF0b3JDb21wb25lbnQgfSBmcm9tICcuLi9ibWItaW5wdXQvYm1iLWlucHV0LXZhbGlkYXRvci9ibWItaW5wdXQtdmFsaWRhdG9yLmNvbXBvbmVudCc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElCbWJEcm9wZG93bkl0ZW0ge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICB2YWx1ZTogc3RyaW5nO1xyXG4gIHNlbGVjdGVkVGV4dD86IHN0cmluZzsgLy9pbnRlcm5hbFxyXG4gIGljb24/OiBzdHJpbmc7XHJcbiAgaWQ/OiBzdHJpbmc7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYm1iLWRyb3Bkb3duJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEJtYkljb25Db21wb25lbnQsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgQ2xpY2tPdXRzaWRlRGlyZWN0aXZlLFxyXG4gICAgQm1iSW5wdXRWYWxpZGF0b3JDb21wb25lbnQsXHJcbiAgICBCbWJJbnB1dENvbnRlbnRDb21wb25lbnQsXHJcbiAgICBCbWJEcm9wZG93bkNvbnRlbnRDb21wb25lbnQsXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vYm1iLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vYm1iLWRyb3Bkb3duLmNvbXBvbmVudC5zY3NzJyxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQm1iRHJvcGRvd25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcbiAgcmVxdWlyZWQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcbiAgc2hvd0ljb24gPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcbiAgcGxhY2Vob2xkZXIgPSBpbnB1dDxzdHJpbmc+KCcnKTtcclxuICBpY29uID0gaW5wdXQ8c3RyaW5nPignJyk7XHJcbiAgb3B0aW9ucyA9IGlucHV0PHN0cmluZ1tdIHwgSUJtYkRyb3Bkb3duSXRlbVtdPihbXSk7XHJcbiAgaGVscGVyVGV4dCA9IGlucHV0PHN0cmluZz4oJycpO1xyXG4gIGVycm9yTWVzc2FnZSA9IGlucHV0PHN0cmluZyB8IElCbWJJbnB1dEVycm9yPignJyk7XHJcbiAgbGFiZWwgPSBpbnB1dDxzdHJpbmc+KCcnKTtcclxuICBuYW1lID0gaW5wdXQ8c3RyaW5nPihnZXRVVUlEKCkpO1xyXG4gIHByZWZlcnJlZE9wdGlvbnMgPSBpbnB1dDxzdHJpbmdbXT4oW10pO1xyXG4gIGlzTXVsdGlTZWxlY3QgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcbiAgdG9vbHRpcCA9IGlucHV0PHN0cmluZz4oJycpO1xyXG4gIHRvb2x0aXBQb3NpdGlvbiA9IGlucHV0PElCbWJJbnB1dFRvb2x0aXBQb3NpdGlvbj4oe1xyXG4gICAgYWxpZ246ICdhYm92ZScsXHJcbiAgICBqdXN0aWZ5OiAnYmVmb3JlJyxcclxuICB9KTtcclxuICBkaXNhYmxlZCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuICB2YWx1ZSA9IGlucHV0PHN0cmluZyB8IHN0cmluZ1tdPignJyk7XHJcbiAgaXNGaWx0ZXJhYmxlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIGlucHV0SWQgPSBpbnB1dDxzdHJpbmc+KHRoaXMubmFtZSgpKTtcclxuICBjdXN0b21WYWxpZGF0aW9uID0gaW5wdXQ8VmFsaWRhdG9yRm4+KCk7XHJcblxyXG4gIGNvbnRyb2wgPSBtb2RlbDxGb3JtQ29udHJvbD4obmV3Rm9ybUNvbnRyb2xCeVR5cGUoKSk7XHJcblxyXG4gIG9uVmFsdWVDaGFuZ2UgPSBvdXRwdXQ8YW55PigpO1xyXG4gIG9uRm9jdXMgPSBvdXRwdXQ8Ym9vbGVhbj4oKTtcclxuXHJcbiAgdXVpZDogc3RyaW5nID0gZ2V0VVVJRCgpO1xyXG4gIGlzT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGl0ZW1zOiBJRHJvcGRvd25JdGVtW10gPSBbXTtcclxuICBzZWxlY3Rpb25Db250cm9sOiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChuZXcgRm9ybUNvbnRyb2woKSk7XHJcbiAgc2VsZWN0ZWRJY29uOiBzdHJpbmcgPSAnJztcclxuICBpc0tleWJvYXJkRXZlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc0NvbnRyb2xOdWxsOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZmlsdGVyZWRPcHRpb25zOiBJRHJvcGRvd25JdGVtW10gPSBbXTtcclxuICBzZWxlY3RlZEl0ZW06IElEcm9wZG93bkl0ZW0gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAoIXRoaXMuY29udHJvbCgpKSB7XHJcbiAgICAgIHRoaXMuY29udHJvbC5zZXQoYXNzaWduTmV3Rm9ybUNvbnRyb2wodGhpcy5uYW1lKCksIHRoaXMuY29udHJvbCgpKSEpO1xyXG4gICAgICB0aGlzLmlzQ29udHJvbE51bGwgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmRpc2FibGVkKCkpIHRoaXMuc2VsZWN0aW9uQ29udHJvbC5kaXNhYmxlKCk7XHJcbiAgICBlbHNlIHRoaXMuc2VsZWN0aW9uQ29udHJvbC5lbmFibGUoKTtcclxuXHJcbiAgICBpZiAoIXRoaXMuaXNNdWx0aVNlbGVjdCgpICYmIEFycmF5LmlzQXJyYXkodGhpcy5jb250cm9sKCk/LnZhbHVlKSkge1xyXG4gICAgICB0aGlzLmNvbnRyb2woKS5zZXRWYWx1ZSgnJyk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jb250cm9sKClcclxuICAgICAgLnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aCh0aGlzLmdldFZhbGlkSW5pdGlhbFZhbHVlcygpKSlcclxuICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgICB0aGlzLnNldFNlbGVjdGlvbkNvbnRyb2wodmFsdWUpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IFsuLi50aGlzLml0ZW1zXTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzWydvcHRpb25zJ10pIHtcclxuICAgICAgdGhpcy5pbml0T3B0aW9ucyhjaGFuZ2VzWydvcHRpb25zJ10uY3VycmVudFZhbHVlKTtcclxuICAgICAgdGhpcy5jb250cm9sKCkuc2V0VmFsdWUodGhpcy5nZXRWYWxpZEluaXRpYWxWYWx1ZXMoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0T3B0aW9ucyhsaXN0OiBzdHJpbmdbXSB8IElCbWJEcm9wZG93bkl0ZW1bXSk6IHZvaWQge1xyXG4gICAgY29uc3QgbmV3SXRlbXMgPSBjb252ZXJ0TGlzdFRvU2VsZWN0TGlzdChcclxuICAgICAgbGlzdCxcclxuICAgICAgdGhpcy5pY29uKCksXHJcbiAgICAgIHRoaXMuc2hvd0ljb24oKSxcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5pdGVtcyA9IG5ld0l0ZW1zLm1hcCgoZWxlbWVudDogSURyb3Bkb3duSXRlbSkgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIC4uLmVsZW1lbnQsXHJcbiAgICAgICAgaWNvbjogIXRoaXMuaXNNdWx0aVNlbGVjdCgpICYmIHRoaXMuc2hvd0ljb24oKSA/IGVsZW1lbnQuaWNvbiEgOiAnJyxcclxuICAgICAgICBhY3Rpb246ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRWYWx1ZShlbGVtZW50KTtcclxuICAgICAgICB9LFxyXG4gICAgICB9IGFzIElEcm9wZG93bkl0ZW07XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoISF0aGlzLnByZWZlcnJlZE9wdGlvbnMoKS5sZW5ndGgpIHtcclxuICAgICAgY29uc3QgcHJlZmVycmVkSXRlbXM6IElEcm9wZG93bkl0ZW1bXSA9IHRoaXMuaXRlbXMuZmlsdGVyKChlbGVtZW50KSA9PlxyXG4gICAgICAgIHRoaXMucHJlZmVycmVkT3B0aW9ucygpLmluY2x1ZGVzKGVsZW1lbnQudmFsdWUhKSxcclxuICAgICAgKTtcclxuXHJcbiAgICAgIHRoaXMuaXRlbXMgPSBbLi4ubmV3IFNldChbLi4ucHJlZmVycmVkSXRlbXMsIC4uLnRoaXMuaXRlbXNdKV07XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSBbLi4udGhpcy5pdGVtc107XHJcbiAgfVxyXG5cclxuICBoYW5kbGVGb2N1cyh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5vbkZvY3VzLmVtaXQodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0VVVJRChuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGAke25hbWV9XyR7dGhpcy5uYW1lKCl9XyR7dGhpcy51dWlkfWA7XHJcbiAgfVxyXG5cclxuICBnZXRJY29uKCk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXRoaXMuaXNNdWx0aVNlbGVjdCgpICYmIHRoaXMuc2hvd0ljb24oKSlcclxuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJY29uIHx8IHRoaXMuaWNvbigpO1xyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgZ2V0VmFsaWRJbml0aWFsVmFsdWVzKCk6IHN0cmluZyB8IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiBnZXRWYWxpZEluaXRpYWxWYWx1ZXMoXHJcbiAgICAgIHRoaXMuY29udHJvbCgpLnZhbHVlLFxyXG4gICAgICB0aGlzLnZhbHVlKCksXHJcbiAgICAgIHRoaXMub3B0aW9ucygpLFxyXG4gICAgICB0aGlzLmlzTXVsdGlTZWxlY3QoKSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBzZXRTZWxlY3Rpb25Db250cm9sKGNvbnRyb2xWYWx1ZTogc3RyaW5nIHwgc3RyaW5nW10pOiB2b2lkIHtcclxuICAgIGlmICghIWNvbnRyb2xWYWx1ZSkge1xyXG4gICAgICBpZiAodGhpcy5pc011bHRpU2VsZWN0KCkpIHtcclxuICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW1zID0gdGhpcy5pdGVtcy5maWx0ZXIoKHsgdmFsdWUgfSkgPT5cclxuICAgICAgICAgIGNvbnRyb2xWYWx1ZS5pbmNsdWRlcyh2YWx1ZSEpLFxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ29udHJvbC5zZXRWYWx1ZShcclxuICAgICAgICAgIHNlbGVjdGVkSXRlbXMubWFwKChlbGVtZW50KSA9PiBgICR7ZWxlbWVudC5zZWxlY3RlZFRleHR9YCksXHJcbiAgICAgICAgKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLml0ZW1zLmZpbmQoKHsgdmFsdWUgfSkgPT4gdmFsdWUgPT09IGNvbnRyb2xWYWx1ZSk7XHJcbiAgICAgIGlmICghIWl0ZW0pIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGlvbkNvbnRyb2wuc2V0VmFsdWUoaXRlbT8uc2VsZWN0ZWRUZXh0KTtcclxuICAgICAgICBpZiAodGhpcy5zaG93SWNvbigpKSB0aGlzLnNlbGVjdGVkSWNvbiA9IGl0ZW0uaWNvbjtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IGl0ZW07XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2VsZWN0aW9uQ29udHJvbC5zZXRWYWx1ZSgnJyk7XHJcbiAgICBpZiAodGhpcy5zaG93SWNvbigpKSB0aGlzLnNlbGVjdGVkSWNvbiA9IHRoaXMuaWNvbigpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0T3B0aW9uV2l0aEtleSh2YWx1ZTogc3RyaW5nKTogSURyb3Bkb3duSXRlbVtdIHtcclxuICAgIGlmICghdmFsdWUpIHJldHVybiB0aGlzLml0ZW1zO1xyXG5cclxuICAgIHJldHVybiB0aGlzLml0ZW1zLmZpbHRlcigoaXRlbSkgPT5cclxuICAgICAgaXRlbT8uc2VsZWN0ZWRUZXh0Py50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHZhbHVlLnRvTG93ZXJDYXNlKCkpLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHNldFNlbGVjdGVkVmFsdWUoZWxlbWVudDogSURyb3Bkb3duSXRlbSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNNdWx0aVNlbGVjdCgpKSB7XHJcbiAgICAgIHRoaXMuY29udHJvbCgpLnNldFZhbHVlKFxyXG4gICAgICAgIGdldFNlbGVjdGVkVmFsdWVzKHRoaXMuY29udHJvbCgpLnZhbHVlLCBlbGVtZW50LnZhbHVlISksXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2UgdGhpcy5jb250cm9sKCkuc2V0VmFsdWUoZWxlbWVudC52YWx1ZSEpO1xyXG5cclxuICAgIHRoaXMub25WYWx1ZUNoYW5nZS5lbWl0KHRoaXMuY29udHJvbCgpLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIG9wZW5MaXN0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc09wZW4gPSAhdGhpcy5pc09wZW47XHJcbiAgICBpZiAoIXRoaXMuaXNPcGVuKSB0aGlzLmlzS2V5Ym9hcmRFdmVudCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VMaXN0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuaXNLZXlib2FyZEV2ZW50ID0gZmFsc2U7XHJcbiAgICBpZiAodGhpcy5pc0ZpbHRlcmFibGUoKSAmJiAhdGhpcy5pc011bHRpU2VsZWN0KCkpIHtcclxuICAgICAgdGhpcy5zZWxlY3Rpb25Db250cm9sLnNldFZhbHVlKHRoaXMuc2VsZWN0ZWRJdGVtPy5zZWxlY3RlZFRleHQgfHwgJycpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gS2V5Ym9hcmRzIGV2ZW50c1xyXG4gIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgY29uc3Qga2V5Ym9hcmRzID0gWycgJywgJ0Fycm93RG93bicsICdEb3duJ107XHJcbiAgICBjb25zdCByZWdleENvZGUgPSAvXlthLXpBLVowLTlcXC1cXC5cXCwgXXsxfSQvZ207XHJcblxyXG4gICAgaWYgKGtleWJvYXJkcy5pbmNsdWRlcyhldmVudC5rZXkpKSB7XHJcbiAgICAgIGlmICghdGhpcy5pc09wZW4pIHtcclxuICAgICAgICB0aGlzLmlzS2V5Ym9hcmRFdmVudCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5vcGVuTGlzdCgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoIXRoaXMub3B0aW9ucygpLmxlbmd0aCAmJiAhdGhpcy5pc0ZpbHRlcmFibGUoKSkge1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaXNGaWx0ZXJhYmxlKCkgJiYgIXRoaXMuaXNNdWx0aVNlbGVjdCgpKSB7XHJcbiAgICAgIGxldCB2YWx1ZSA9IHRoaXMuc2VsZWN0aW9uQ29udHJvbC52YWx1ZSB8fCAnJztcclxuXHJcbiAgICAgIGlmICghdGhpcy5pc09wZW4pIHRoaXMub3Blbkxpc3QoKTtcclxuICAgICAgaWYgKHJlZ2V4Q29kZS50ZXN0KGV2ZW50LmtleSkpIHtcclxuICAgICAgICB2YWx1ZSArPSBldmVudC5rZXk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0JhY2tzcGFjZScpIHtcclxuICAgICAgICB2YWx1ZSA9IHZhbHVlLnNsaWNlKDAsIC0xKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLnNlbGVjdE9wdGlvbldpdGhLZXkodmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlVmFsaWRpdHkoKTogdm9pZCB7XHJcbiAgICBoYW5kbGVWYWxpZGl0eSh0aGlzLmNvbnRyb2woKSk7XHJcbiAgfVxyXG5cclxuICBnZXQgc2hvdWxkU2hvd0Vycm9yKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHNob3dFcnJvcih0aGlzLmNvbnRyb2woKSk7XHJcbiAgfVxyXG59XHJcbiIsIjxibWItaW5wdXQtdmFsaWRhdG9yXHJcbiAgY2xhc3M9XCJibWJfZHJvcGRvd25cIlxyXG4gIFtpbnB1dElkXT1cImlucHV0SWQoKVwiXHJcbiAgW25hbWVdPVwibmFtZSgpXCJcclxuICBbdmFsdWVdPVwiZ2V0VmFsaWRJbml0aWFsVmFsdWVzKClcIlxyXG4gIFtsYWJlbF09XCJsYWJlbCgpIVwiXHJcbiAgW2Vycm9yTWVzc2FnZV09XCJlcnJvck1lc3NhZ2UoKVwiXHJcbiAgW2hlbHBlck1lc3NhZ2VdPVwiaGVscGVyVGV4dCgpXCJcclxuICBbaXNSZXF1aXJlZF09XCJyZXF1aXJlZCgpXCJcclxuICBbaXNEaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcclxuICBbY29udHJvbF09XCJjb250cm9sKClcIlxyXG4gIFtzaG93RXJyb3JdPVwic2hvdWxkU2hvd0Vycm9yXCJcclxuICBbdG9vbHRpcF09XCJ0b29sdGlwKClcIlxyXG4gIFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uKClcIlxyXG4gIFtjdXN0b21WYWxpZGF0aW9uXT1cImN1c3RvbVZhbGlkYXRpb24oKVwiXHJcbiAgY2xpY2tPdXRzaWRlXHJcbiAgKGNsaWNrT3V0c2lkZSk9XCJjbG9zZUxpc3QoKVwiXHJcbj5cclxuICA8Ym1iLWlucHV0LWNvbnRlbnRcclxuICAgIGNsYXNzPVwiYm1iX2Ryb3Bkb3duLWZpZWxkXCJcclxuICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgIFtpbnB1dElkXT1cImlucHV0SWQoKVwiXHJcbiAgICBbbmFtZV09XCJuYW1lKClcIlxyXG4gICAgW2ljb25dPVwiZ2V0SWNvbigpXCJcclxuICAgIFtjb250cm9sXT1cInNlbGVjdGlvbkNvbnRyb2xcIlxyXG4gICAgW2lzUmVhZE9ubHldPVwiIWlzRmlsdGVyYWJsZSgpIHx8IGlzTXVsdGlTZWxlY3QoKVwiXHJcbiAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIoKVwiXHJcbiAgICBbaXNFcnJvcl09XCJzaG91bGRTaG93RXJyb3JcIlxyXG4gICAgW2lzRGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiXHJcbiAgICAoY2xpY2spPVwib3Blbkxpc3QoKVwiXHJcbiAgICAob25LZXlEb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcclxuICAgIChvbkJsdXIpPVwiaGFuZGxlVmFsaWRpdHkoKVwiXHJcbiAgICAob25Gb2N1cyk9XCJoYW5kbGVGb2N1cygkZXZlbnQpXCJcclxuICA+XHJcbiAgICA8bmctdGVtcGxhdGUgI2N1c3RvbUNvbnRlbnQ+XHJcbiAgICAgIDxsYWJlbCBbaHRtbEZvcl09XCJpbnB1dElkKClcIj5cclxuICAgICAgICA8Ym1iLWljb25cclxuICAgICAgICAgIGNsYXNzPVwiYm1iX2ZpZWxkLWFjdGlvbnNcIlxyXG4gICAgICAgICAgaWNvbj1cImtleWJvYXJkX2Fycm93X2Rvd25cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9wZW5MaXN0KClcIlxyXG4gICAgICAgICAgW3NpemVdPVwiMjRcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvbGFiZWw+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvYm1iLWlucHV0LWNvbnRlbnQ+XHJcbiAgPGJtYi1kcm9wZG93bi1jb250ZW50XHJcbiAgICBjbGFzcz1cImJtYl9kcm9wZG93bi1saXN0XCJcclxuICAgIFtzZWxlY3RlZE9wdGlvbl09XCJjb250cm9sKCkudmFsdWVcIlxyXG4gICAgW2lzS2V5Ym9hcmRFdmVudF09XCJpc0tleWJvYXJkRXZlbnRcIlxyXG4gICAgWyhpdGVtcyldPVwiZmlsdGVyZWRPcHRpb25zXCJcclxuICAgIFsoaXNPcGVuKV09XCJpc09wZW5cIlxyXG4gIC8+XHJcbiAgPGlucHV0XHJcbiAgICBoaWRkZW5cclxuICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgIFtpZF09XCJnZXRVVUlEKCdpZCcpXCJcclxuICAgIFtuYW1lXT1cIm5hbWUoKVwiXHJcbiAgICBbZm9ybUNvbnRyb2xdPVwiY29udHJvbCgpXCJcclxuICAvPlxyXG48L2JtYi1pbnB1dC12YWxpZGF0b3I+XHJcbiJdfQ==
@@ -0,0 +1,28 @@
1
+ import { Component, input, signal, ChangeDetectionStrategy, ViewEncapsulation, } from '@angular/core';
2
+ import { BmbDropdownContentComponent } from '../utils/bmb-dropdown-content/bmb-dropdown-content.component';
3
+ import { BmbActionIconComponent } from '../bmb-action-icon/bmb-action-icon.component';
4
+ import { ClickOutsideDirective } from '../../directives/utils/clickoutside.directive';
5
+ import * as i0 from "@angular/core";
6
+ export class BmbDropdownMenuComponent {
7
+ constructor() {
8
+ this.items = input([]);
9
+ this.isOpen = signal(false);
10
+ }
11
+ openDropdown() {
12
+ this.isOpen.set(true);
13
+ }
14
+ closeDropdown() {
15
+ this.isOpen.set(false);
16
+ }
17
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BmbDropdownMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
18
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: BmbDropdownMenuComponent, isStandalone: true, selector: "bmb-dropdown-menu", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<section\n class=\"bmb_dropdown_menu\"\n clickOutside\n (clickOutside)=\"closeDropdown()\"\n>\n <bmb-action-icon\n class=\"bmb_dropdown_menu-button\"\n icon=\"more_vert\"\n [iconSize]=\"24\"\n (buttonClick)=\"openDropdown()\"\n />\n <bmb-dropdown-content\n class=\"bmb_dropdown_menu-list\"\n [items]=\"items()\"\n [(isOpen)]=\"isOpen\"\n />\n</section>\n", styles: [".bmb_dropdown_menu{position:relative}.bmb_dropdown_menu-button .bmb_check-external-link-button-element{color:var(--general_contrasts-50)}.bmb_dropdown_menu-list .bmb_dropdown-content-modal{left:var(--bmb-spacing-m);max-width:15.625rem}\n"], dependencies: [{ kind: "component", type: BmbDropdownContentComponent, selector: "bmb-dropdown-content", inputs: ["selectedOption", "items", "isOpen", "isKeyboardEvent"], outputs: ["itemsChange", "isOpenChange", "isKeyboardEventChange"] }, { kind: "component", type: BmbActionIconComponent, selector: "bmb-action-icon", inputs: ["idElement", "icon", "alt", "iconSize", "isFill", "toggleIconActive", "isToggleActive", "isAccentColor", "dotNotification", "target", "link", "disabled"], outputs: ["isToggleActiveChange", "isAccentColorChange", "buttonPress", "buttonClick"] }, { kind: "directive", type: ClickOutsideDirective, selector: "[clickOutside]", outputs: ["clickOutside"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
19
+ }
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BmbDropdownMenuComponent, decorators: [{
21
+ type: Component,
22
+ args: [{ selector: 'bmb-dropdown-menu', standalone: true, imports: [
23
+ BmbDropdownContentComponent,
24
+ BmbActionIconComponent,
25
+ ClickOutsideDirective,
26
+ ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<section\n class=\"bmb_dropdown_menu\"\n clickOutside\n (clickOutside)=\"closeDropdown()\"\n>\n <bmb-action-icon\n class=\"bmb_dropdown_menu-button\"\n icon=\"more_vert\"\n [iconSize]=\"24\"\n (buttonClick)=\"openDropdown()\"\n />\n <bmb-dropdown-content\n class=\"bmb_dropdown_menu-list\"\n [items]=\"items()\"\n [(isOpen)]=\"isOpen\"\n />\n</section>\n", styles: [".bmb_dropdown_menu{position:relative}.bmb_dropdown_menu-button .bmb_check-external-link-button-element{color:var(--general_contrasts-50)}.bmb_dropdown_menu-list .bmb_dropdown-content-modal{left:var(--bmb-spacing-m);max-width:15.625rem}\n"] }]
27
+ }] });
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm1iLWRyb3Bkb3duLW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHMtbmcvc3JjL2xpYi9jb21wb25lbnRzL2JtYi1kcm9wZG93bi1tZW51L2JtYi1kcm9wZG93bi1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLW5nL3NyYy9saWIvY29tcG9uZW50cy9ibWItZHJvcGRvd24tbWVudS9ibWItZHJvcGRvd24tbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sdUJBQXVCLEVBQ3ZCLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUMzRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN0RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQzs7QUFnQnRGLE1BQU0sT0FBTyx3QkFBd0I7SUFickM7UUFjRSxVQUFLLEdBQUcsS0FBSyxDQUFrQixFQUFFLENBQUMsQ0FBQztRQUVuQyxXQUFNLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO0tBU2pDO0lBUEMsWUFBWTtRQUNWLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsQ0FBQzsrR0FYVSx3QkFBd0I7bUdBQXhCLHdCQUF3QixpTkN6QnJDLGdZQWlCQSx1U0RDSSwyQkFBMkIsc01BQzNCLHNCQUFzQix3VEFDdEIscUJBQXFCOzs0RkFLWix3QkFBd0I7a0JBYnBDLFNBQVM7K0JBQ0UsbUJBQW1CLGNBQ2pCLElBQUksV0FHUDt3QkFDUCwyQkFBMkI7d0JBQzNCLHNCQUFzQjt3QkFDdEIscUJBQXFCO3FCQUN0QixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgaW5wdXQsXG4gIHNpZ25hbCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJtYkRyb3Bkb3duQ29udGVudENvbXBvbmVudCB9IGZyb20gJy4uL3V0aWxzL2JtYi1kcm9wZG93bi1jb250ZW50L2JtYi1kcm9wZG93bi1jb250ZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCbWJBY3Rpb25JY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vYm1iLWFjdGlvbi1pY29uL2JtYi1hY3Rpb24taWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2xpY2tPdXRzaWRlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy91dGlscy9jbGlja291dHNpZGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IElEcm9wZG93bkl0ZW0gfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JtYi1kcm9wZG93bi1tZW51JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGVVcmw6ICcuL2JtYi1kcm9wZG93bi1tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2JtYi1kcm9wZG93bi1tZW51LmNvbXBvbmVudC5zY3NzJyxcbiAgaW1wb3J0czogW1xuICAgIEJtYkRyb3Bkb3duQ29udGVudENvbXBvbmVudCxcbiAgICBCbWJBY3Rpb25JY29uQ29tcG9uZW50LFxuICAgIENsaWNrT3V0c2lkZURpcmVjdGl2ZSxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEJtYkRyb3Bkb3duTWVudUNvbXBvbmVudCB7XG4gIGl0ZW1zID0gaW5wdXQ8SURyb3Bkb3duSXRlbVtdPihbXSk7XG5cbiAgaXNPcGVuID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICBvcGVuRHJvcGRvd24oKSB7XG4gICAgdGhpcy5pc09wZW4uc2V0KHRydWUpO1xuICB9XG5cbiAgY2xvc2VEcm9wZG93bigpIHtcbiAgICB0aGlzLmlzT3Blbi5zZXQoZmFsc2UpO1xuICB9XG59XG4iLCI8c2VjdGlvblxuICBjbGFzcz1cImJtYl9kcm9wZG93bl9tZW51XCJcbiAgY2xpY2tPdXRzaWRlXG4gIChjbGlja091dHNpZGUpPVwiY2xvc2VEcm9wZG93bigpXCJcbj5cbiAgPGJtYi1hY3Rpb24taWNvblxuICAgIGNsYXNzPVwiYm1iX2Ryb3Bkb3duX21lbnUtYnV0dG9uXCJcbiAgICBpY29uPVwibW9yZV92ZXJ0XCJcbiAgICBbaWNvblNpemVdPVwiMjRcIlxuICAgIChidXR0b25DbGljayk9XCJvcGVuRHJvcGRvd24oKVwiXG4gIC8+XG4gIDxibWItZHJvcGRvd24tY29udGVudFxuICAgIGNsYXNzPVwiYm1iX2Ryb3Bkb3duX21lbnUtbGlzdFwiXG4gICAgW2l0ZW1zXT1cIml0ZW1zKClcIlxuICAgIFsoaXNPcGVuKV09XCJpc09wZW5cIlxuICAvPlxuPC9zZWN0aW9uPlxuIl19
@@ -0,0 +1,175 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, input, output, ViewEncapsulation, } from '@angular/core';
3
+ import { BmbIconComponent } from '../bmb-icon/bmb-icon.component';
4
+ import { BmbTextLinkComponent } from '../bmb-text-link/bmb-text-link.component';
5
+ import { BmbCardComponent, BmbCardContentComponent, } from '../bmb-card/bmb-card.component';
6
+ import { BmbProgressBarComponent } from '../bmb-progress-bar/bmb-progress-bar.component';
7
+ import { getUUID } from '../../utils/utils';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@angular/common";
10
+ export class BmbDropzoneComponent {
11
+ constructor(cdr) {
12
+ this.cdr = cdr;
13
+ this.appearanceContrast = input('default');
14
+ this.acceptedExtensions = input.required();
15
+ this.dropInstruction = input('Arrastra tus archivos aquí o');
16
+ this.dropLabel = input('selecciona tus archivos');
17
+ this.errorMessage = input('Archivo no compatible');
18
+ this.errorMessageFormat = input('Formato no soportado');
19
+ this.errorMessageSize = input('El archivo supera el tamaño permitido');
20
+ this.fileDataList = [];
21
+ this.fileSize = input(2);
22
+ this.formatFilesLabel = input('Especificación de formatos y peso');
23
+ this.linkFilesSupported = input('');
24
+ this.linkLabel = input('Ver más información de formatos de archivo aceptados.');
25
+ this.mainIcon = input('image');
26
+ this.multiple = input(false);
27
+ this.name = input(getUUID());
28
+ this.progress = input({});
29
+ this.newFile = output();
30
+ this.fileRemoved = output();
31
+ this.validFile = true;
32
+ }
33
+ ngOnChanges(changes) {
34
+ if (changes['progress'] ||
35
+ changes['acceptedExtensions'] ||
36
+ changes['fileSize']) {
37
+ this.cdr.detectChanges();
38
+ }
39
+ }
40
+ onFileSelected(event) {
41
+ this.input = event.target;
42
+ if (this.input.files?.[0]) {
43
+ const files = this.input.files;
44
+ if (files && files.length > 0) {
45
+ this.getFileAndValidate(this.multiple() ? Array.from(files) : files[0]);
46
+ }
47
+ }
48
+ }
49
+ getFileAndValidate(file) {
50
+ const filesArray = Array.isArray(file) ? file : [file];
51
+ const validFiles = [];
52
+ if (!this.multiple()) {
53
+ this.fileDataList = [];
54
+ }
55
+ for (const singleFile of filesArray) {
56
+ const fileExtension = singleFile.name.split('.').at(-1);
57
+ const isValidFileType = this.acceptedExtensions().includes(fileExtension ?? '');
58
+ const fileSizeInMB = singleFile.size / 1048576;
59
+ const isValidSize = fileSizeInMB <= this.fileSize();
60
+ const alreadyExists = this.fileDataList.some((existing) => existing.name === singleFile.name);
61
+ if (alreadyExists) {
62
+ continue;
63
+ }
64
+ if (isValidFileType && isValidSize) {
65
+ const fileData = {
66
+ name: singleFile.name,
67
+ size: fileSizeInMB,
68
+ error: false,
69
+ errorType: null,
70
+ };
71
+ this.fileDataList.push(fileData);
72
+ validFiles.push(singleFile);
73
+ }
74
+ else {
75
+ this.fileDataList.push({
76
+ name: singleFile.name,
77
+ size: fileSizeInMB,
78
+ error: true,
79
+ errorType: !isValidFileType ? 'format' : 'size',
80
+ });
81
+ }
82
+ }
83
+ this.validFile = validFiles.length > 0;
84
+ if (this.validFile) {
85
+ this.newFile.emit(this.multiple() ? validFiles : validFiles[0]);
86
+ }
87
+ else {
88
+ this.onErrorFile();
89
+ }
90
+ }
91
+ removeFile(fileName) {
92
+ this.fileDataList = this.fileDataList.filter((file) => file.name !== fileName);
93
+ const hasFormatErrorsOnly = this.fileDataList.some((file) => file.error && file.errorType === 'format');
94
+ this.validFile = this.fileDataList.length > 0 && !hasFormatErrorsOnly;
95
+ if (this.fileDataList.length === 0 && this.input) {
96
+ this.input.value = '';
97
+ }
98
+ this.fileRemoved.emit(fileName);
99
+ }
100
+ onErrorFile() {
101
+ this.input && (this.input.value = '');
102
+ this.validFile = false;
103
+ }
104
+ onDragOver(event) {
105
+ this.validFile = true;
106
+ event.preventDefault();
107
+ event.stopPropagation();
108
+ const dropzoneElement = event.currentTarget;
109
+ dropzoneElement.classList.add('bmb-drop-zone-drag-over');
110
+ }
111
+ onDragLeave(event) {
112
+ event.preventDefault();
113
+ event.stopPropagation();
114
+ const dropzoneElement = event.currentTarget;
115
+ dropzoneElement.classList.remove('bmb-drop-zone-drag-over');
116
+ }
117
+ onDrop(event) {
118
+ event.preventDefault();
119
+ event.stopPropagation();
120
+ const dropzoneElement = event.currentTarget;
121
+ dropzoneElement.classList.add('bmb-drop-zone');
122
+ dropzoneElement.classList.remove('bmb-drop-zone-drag-over');
123
+ const files = event.dataTransfer?.files;
124
+ if (files && files.length > 0) {
125
+ this.getFileAndValidate(this.multiple() ? Array.from(files) : files[0]);
126
+ }
127
+ }
128
+ getProgress(fileName) {
129
+ const progress = this.progress();
130
+ if (typeof progress === 'number')
131
+ return progress;
132
+ return progress?.[fileName] ?? 0;
133
+ }
134
+ isInvalidFileOnly() {
135
+ return this.fileDataList.some((file) => file.error && file.errorType === 'format');
136
+ }
137
+ reset() {
138
+ this.fileDataList = [];
139
+ this.validFile = true;
140
+ if (this.input) {
141
+ this.input.value = '';
142
+ }
143
+ this.cdr.detectChanges();
144
+ }
145
+ getDropZoneClass() {
146
+ const classList = [];
147
+ if (this.isInvalidFileOnly()) {
148
+ classList.push('bmb-drop-zone-error');
149
+ }
150
+ if (this.fileDataList.length > 0 && !!this.fileDataList[0].name) {
151
+ classList.push('bmb-drop-zone-drag-over');
152
+ }
153
+ if (this.appearanceContrast() === 'primary') {
154
+ classList.push('bmb-drop-zone-container-primary');
155
+ }
156
+ if (this.appearanceContrast() === 'alternative') {
157
+ classList.push('bmb-drop-zone-container-alternative');
158
+ }
159
+ return classList;
160
+ }
161
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BmbDropzoneComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
162
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BmbDropzoneComponent, isStandalone: true, selector: "bmb-dropzone", inputs: { appearanceContrast: { classPropertyName: "appearanceContrast", publicName: "appearanceContrast", isSignal: true, isRequired: false, transformFunction: null }, acceptedExtensions: { classPropertyName: "acceptedExtensions", publicName: "acceptedExtensions", isSignal: true, isRequired: true, transformFunction: null }, dropInstruction: { classPropertyName: "dropInstruction", publicName: "dropInstruction", isSignal: true, isRequired: false, transformFunction: null }, dropLabel: { classPropertyName: "dropLabel", publicName: "dropLabel", isSignal: true, isRequired: false, transformFunction: null }, errorMessage: { classPropertyName: "errorMessage", publicName: "errorMessage", isSignal: true, isRequired: false, transformFunction: null }, errorMessageFormat: { classPropertyName: "errorMessageFormat", publicName: "errorMessageFormat", isSignal: true, isRequired: false, transformFunction: null }, errorMessageSize: { classPropertyName: "errorMessageSize", publicName: "errorMessageSize", isSignal: true, isRequired: false, transformFunction: null }, fileSize: { classPropertyName: "fileSize", publicName: "fileSize", isSignal: true, isRequired: false, transformFunction: null }, formatFilesLabel: { classPropertyName: "formatFilesLabel", publicName: "formatFilesLabel", isSignal: true, isRequired: false, transformFunction: null }, linkFilesSupported: { classPropertyName: "linkFilesSupported", publicName: "linkFilesSupported", isSignal: true, isRequired: false, transformFunction: null }, linkLabel: { classPropertyName: "linkLabel", publicName: "linkLabel", isSignal: true, isRequired: false, transformFunction: null }, mainIcon: { classPropertyName: "mainIcon", publicName: "mainIcon", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, progress: { classPropertyName: "progress", publicName: "progress", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { newFile: "newFile", fileRemoved: "fileRemoved" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"bmb-drop-zone\">\n <section\n class=\"bmb-drop-zone-container\"\n [ngClass]=\"getDropZoneClass()\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (drop)=\"onDrop($event)\"\n >\n <div\n class=\"bmb-drop-zone-icon\"\n [ngClass]=\"{\n 'bmb-drop-zone-icon-valid':\n validFile && fileDataList.length > 0 && !!fileDataList[0].name,\n 'bmb-drop-zone-icon-error': isInvalidFileOnly(),\n }\"\n >\n <bmb-icon [icon]=\"mainIcon()\" [size]=\"48\" alt=\"Drop zone icon\" />\n </div>\n <p class=\"bmb-drop-zone-label-format\">{{ formatFilesLabel() }}</p>\n <p class=\"bmb-drop-zone-label-format-instruction\">\n {{ dropInstruction() }}\n <label class=\"bmb-drop-zone-link\" [htmlFor]=\"name()\">\n {{ dropLabel() }}\n </label>\n </p>\n @if (isInvalidFileOnly()) {\n <p class=\"bmb-drop-zone-label-format-error bmb-drop-zone-label-format\">\n {{ errorMessage() }}\n </p>\n @if (linkFilesSupported()) {\n <bmb-text-link\n textLinkStyle=\"underlined\"\n [link]=\"linkFilesSupported()\"\n [textLink]=\"linkLabel()\"\n />\n }\n }\n <input\n type=\"file\"\n [id]=\"name()\"\n [name]=\"name()\"\n [accept]=\"acceptedExtensions().toString()\"\n (change)=\"onFileSelected($event)\"\n [multiple]=\"multiple()\"\n style=\"display: none\"\n />\n </section>\n @if (fileDataList.length > 0) {\n @for (file of fileDataList; track file.name) {\n <bmb-card margin=\"none\" type=\"transparent\">\n <bmb-card-content>\n <div\n class=\"bmb-drop-zone-list-files\"\n [ngClass]=\"{\n 'bmb-drop-zone-list-files-loading':\n !file.error && getProgress(file.name) < 100,\n 'bmb-drop-zone-list-files-error': file.error,\n 'bmb-drop-zone-list-files-valid': getProgress(file.name) === 100,\n }\"\n >\n <span\n class=\"bmb-drop-zone-list-files-icon\"\n [ngClass]=\"{\n 'bmb-drop-zone-list-files-icon-spin':\n !file.error && getProgress(file.name) < 100,\n }\"\n >\n @if (!validFile) {\n <bmb-icon icon=\"upload_file\" [size]=\"24\" />\n } @else if (getProgress(file.name) < 100) {\n <bmb-icon icon=\"progress_activity\" [size]=\"24\" class=\"spin\" />\n } @else if (validFile) {\n <bmb-icon icon=\"task\" [size]=\"24\" />\n }\n </span>\n\n <div class=\"bmb-drop-zone-list-name\">\n <span>{{ file.name }}</span>\n\n <div\n class=\"bmb-drop-zone-list-status\"\n [ngClass]=\"{\n 'bmb-drop-zone-list-status-success':\n getProgress(file.name) === 100,\n }\"\n >\n @if (validFile && getProgress(file.name) < 100) {\n <span>{{ getProgress(file.name) }}% / 100%</span>\n }\n\n @if (getProgress(file.name) === 100) {\n {{ file.size.toFixed(2) }} MB\n <bmb-icon\n icon=\"check_circle\"\n [size]=\"24\"\n class=\"success-icon\"\n />\n <ng-container\n *ngTemplateOutlet=\"\n removeButton;\n context: { fileName: file.name }\n \"\n ></ng-container>\n }\n\n @if (file.error) {\n <span>\n @if (file.errorType === \"format\") {\n {{ errorMessageFormat() }}\n } @else if (file.errorType === \"size\") {\n {{ errorMessageSize() }} ({{ file.size.toFixed(2) }} MB)\n }\n </span>\n <ng-container\n *ngTemplateOutlet=\"\n removeButton;\n context: { fileName: file.name }\n \"\n ></ng-container>\n }\n </div>\n\n <ng-template #removeButton let-fileName=\"fileName\">\n <button\n class=\"bmb-drop-zone-list-remove\"\n (click)=\"removeFile(fileName)\"\n type=\"button\"\n >\n <bmb-icon icon=\"delete\" [size]=\"24\" class=\"delete-icon\" />\n </button>\n </ng-template>\n </div>\n\n @if (validFile && getProgress(file.name) < 100) {\n <span class=\"bmb-drop-zone-list-upload\">\n <bmb-progress-bar\n type=\"simple\"\n [counter]=\"getProgress(file.name)\"\n [totalCount]=\"100\"\n />\n </span>\n }\n </div>\n </bmb-card-content>\n </bmb-card>\n }\n }\n</div>\n", styles: ["@font-face{font-family:Poppins-Thin;font-style:normal;font-weight:100;src:url(/assets/fonts/Poppins/Poppins-Thin.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Light;font-style:normal;font-weight:300;src:url(/assets/fonts/Poppins/Poppins-ExtraLight.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Regular;font-style:normal;font-weight:400;src:url(/assets/fonts/Poppins/Poppins-Regular.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Medium;font-style:normal;font-weight:500;src:url(/assets/fonts/Poppins/Poppins-Medium.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Semibold;font-style:normal;font-weight:600;src:url(/assets/fonts/Poppins/Poppins-SemiBold.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Bold;font-style:normal;font-weight:700;src:url(/assets/fonts/Poppins/Poppins-Bold.ttf) format(\"truetype\")}:root,:host{--font-display: \"Poppins-Regular\", sans-serif}.font-thin-1{font-family:Poppins-Thin,sans-serif;font-size:.625rem}.font-light-1{font-family:Poppins-Light,sans-serif;font-size:.625rem}.font-regular-1{font-family:Poppins-Regular,sans-serif;font-size:.625rem}.font-medium-1{font-family:Poppins-Medium,sans-serif;font-size:.625rem}.font-semibold-1{font-family:Poppins-Semibold,sans-serif;font-size:.625rem}.font-bold-1{font-family:Poppins-Bold,sans-serif;font-size:.625rem}.font-thin-2{font-family:Poppins-Thin,sans-serif;font-size:.6875rem}.font-light-2{font-family:Poppins-Light,sans-serif;font-size:.6875rem}.font-regular-2{font-family:Poppins-Regular,sans-serif;font-size:.6875rem}.font-medium-2{font-family:Poppins-Medium,sans-serif;font-size:.6875rem}.font-semibold-2{font-family:Poppins-Semibold,sans-serif;font-size:.6875rem}.font-bold-2{font-family:Poppins-Bold,sans-serif;font-size:.6875rem}.font-thin-3{font-family:Poppins-Thin,sans-serif;font-size:.75rem}.font-light-3{font-family:Poppins-Light,sans-serif;font-size:.75rem}.font-regular-3{font-family:Poppins-Regular,sans-serif;font-size:.75rem}.font-medium-3{font-family:Poppins-Medium,sans-serif;font-size:.75rem}.font-semibold-3{font-family:Poppins-Semibold,sans-serif;font-size:.75rem}.font-bold-3{font-family:Poppins-Bold,sans-serif;font-size:.75rem}.font-thin-4{font-family:Poppins-Thin,sans-serif;font-size:.875rem}.font-light-4{font-family:Poppins-Light,sans-serif;font-size:.875rem}.font-regular-4{font-family:Poppins-Regular,sans-serif;font-size:.875rem}.font-medium-4{font-family:Poppins-Medium,sans-serif;font-size:.875rem}.font-semibold-4{font-family:Poppins-Semibold,sans-serif;font-size:.875rem}.font-bold-4{font-family:Poppins-Bold,sans-serif;font-size:.875rem}.font-thin-4_5{font-family:Poppins-Thin,sans-serif;font-size:.9375rem}.font-light-4_5{font-family:Poppins-Light,sans-serif;font-size:.9375rem}.font-regular-4_5{font-family:Poppins-Regular,sans-serif;font-size:.9375rem}.font-medium-4_5{font-family:Poppins-Medium,sans-serif;font-size:.9375rem}.font-semibold-4_5{font-family:Poppins-Semibold,sans-serif;font-size:.9375rem}.font-bold-4_5{font-family:Poppins-Bold,sans-serif;font-size:.9375rem}.font-thin-5{font-family:Poppins-Thin,sans-serif;font-size:1rem}.font-light-5{font-family:Poppins-Light,sans-serif;font-size:1rem}.font-regular-5{font-family:Poppins-Regular,sans-serif;font-size:1rem}.font-medium-5{font-family:Poppins-Medium,sans-serif;font-size:1rem}.font-semibold-5{font-family:Poppins-Semibold,sans-serif;font-size:1rem}.font-bold-5{font-family:Poppins-Bold,sans-serif;font-size:1rem}.font-thin-6{font-family:Poppins-Thin,sans-serif;font-size:1.125rem}.font-light-6{font-family:Poppins-Light,sans-serif;font-size:1.125rem}.font-regular-6{font-family:Poppins-Regular,sans-serif;font-size:1.125rem}.font-medium-6{font-family:Poppins-Medium,sans-serif;font-size:1.125rem}.font-semibold-6{font-family:Poppins-Semibold,sans-serif;font-size:1.125rem}.font-bold-6{font-family:Poppins-Bold,sans-serif;font-size:1.125rem}.font-thin-7{font-family:Poppins-Thin,sans-serif;font-size:1.25rem}.font-light-7{font-family:Poppins-Light,sans-serif;font-size:1.25rem}.font-regular-7{font-family:Poppins-Regular,sans-serif;font-size:1.25rem}.font-medium-7{font-family:Poppins-Medium,sans-serif;font-size:1.25rem}.font-semibold-7{font-family:Poppins-Semibold,sans-serif;font-size:1.25rem}.font-bold-7{font-family:Poppins-Bold,sans-serif;font-size:1.25rem}.font-thin-8{font-family:Poppins-Thin,sans-serif;font-size:1.375rem}.font-light-8{font-family:Poppins-Light,sans-serif;font-size:1.375rem}.font-regular-8{font-family:Poppins-Regular,sans-serif;font-size:1.375rem}.font-medium-8{font-family:Poppins-Medium,sans-serif;font-size:1.375rem}.font-semibold-8{font-family:Poppins-Semibold,sans-serif;font-size:1.375rem}.font-bold-8{font-family:Poppins-Bold,sans-serif;font-size:1.375rem}.font-thin-9{font-family:Poppins-Thin,sans-serif;font-size:1.5rem}.font-light-9{font-family:Poppins-Light,sans-serif;font-size:1.5rem}.font-regular-9{font-family:Poppins-Regular,sans-serif;font-size:1.5rem}.font-medium-9{font-family:Poppins-Medium,sans-serif;font-size:1.5rem}.font-semibold-9{font-family:Poppins-Semibold,sans-serif;font-size:1.5rem}.font-bold-9{font-family:Poppins-Bold,sans-serif;font-size:1.5rem}.font-thin-10{font-family:Poppins-Thin,sans-serif;font-size:1.625rem}.font-light-10{font-family:Poppins-Light,sans-serif;font-size:1.625rem}.font-regular-10{font-family:Poppins-Regular,sans-serif;font-size:1.625rem}.font-medium-10{font-family:Poppins-Medium,sans-serif;font-size:1.625rem}.font-semibold-10{font-family:Poppins-Semibold,sans-serif;font-size:1.625rem}.font-bold-10{font-family:Poppins-Bold,sans-serif;font-size:1.625rem}.font-thin-11{font-family:Poppins-Thin,sans-serif;font-size:2.25rem}.font-light-11{font-family:Poppins-Light,sans-serif;font-size:2.25rem}.font-regular-11{font-family:Poppins-Regular,sans-serif;font-size:2.25rem}.font-medium-11{font-family:Poppins-Medium,sans-serif;font-size:2.25rem}.font-semibold-11{font-family:Poppins-Semibold,sans-serif;font-size:2.25rem}.font-bold-11{font-family:Poppins-Bold,sans-serif;font-size:2.25rem}.font-thin-12{font-family:Poppins-Thin,sans-serif;font-size:3rem}.font-light-12{font-family:Poppins-Light,sans-serif;font-size:3rem}.font-regular-12{font-family:Poppins-Regular,sans-serif;font-size:3rem}.font-medium-12{font-family:Poppins-Medium,sans-serif;font-size:3rem}.font-semibold-12{font-family:Poppins-Semibold,sans-serif;font-size:3rem}.font-bold-12{font-family:Poppins-Bold,sans-serif;font-size:3rem}.bmb-drop-zone{color:RGBA(var(--color-charade-500));display:flex;flex-direction:column;gap:var(--bmb-spacing-m);font-family:Poppins-Regular,sans-serif;font-size:.875rem}.bmb-drop-zone-container{align-items:center;border:.125rem dashed var(--general_contrasts-container-outline);border-radius:var(--bmb-radius-s);box-sizing:border-box;display:flex;flex-direction:column;gap:var(--bmb-spacing-m);justify-content:center;padding:var(--bmb-spacing-m) var(--bmb-spacing-l)}.bmb-drop-zone-container-primary{background-color:var(--containers-background)}.bmb-drop-zone-container-alternative{background-color:var(--containers-main)}.bmb-drop-zone-drag-over{background-color:var(--menu_select-on-surface-hovered-w-checkbox);border-color:var(--general_contrasts-main-selection)}.bmb-drop-zone-error{border-color:var(--red-primary);background-color:transparent}.bmb-drop-zone-label-format{margin:0;color:var(--general_contrasts-50)}.bmb-drop-zone-label-format-instruction{color:var(--general_contrasts-100)}.bmb-drop-zone-link{font-family:Poppins-Medium,sans-serif;font-size:.875rem;color:var(--general_contrasts-main-selection);cursor:pointer;text-decoration-line:underline}.bmb-drop-zone-label-format-error{color:var(--red-primary)}.bmb-drop-zone-icon-valid{color:var(--general_contrasts-main-selection)}.bmb-drop-zone-icon-error{color:var(--red-primary)}.bmb-drop-zone-list-files{align-items:center;display:grid;gap:.5rem;grid-template-areas:\"icon name\" \"icon progress\";grid-template-columns:1.5rem 1fr;margin:0}.bmb-drop-zone-list-files-error{color:var(--red-primary);grid-template-areas:\"icon name\"}.bmb-drop-zone-list-files-loading .bmb-drop-zone-list-files-icon{color:var(--general_contrasts-main-selection)}.bmb-drop-zone-list-files-valid{grid-template-areas:\"icon name\"}.bmb-drop-zone-list-files-icon{grid-area:icon;height:1.5rem;width:1.5rem}.bmb-drop-zone-list-files-icon-spin{animation:spin 1s linear infinite}.bmb-drop-zone-list-upload{flex:1;grid-area:progress}.bmb-drop-zone-list-name{align-items:center;display:flex;grid-area:name;justify-content:space-between}.bmb-drop-zone-list-status{align-items:center;display:flex;gap:.5rem}.bmb-drop-zone-list-status-success .success-icon{color:var(--red-primary)}.bmb-drop-zone-list-status .delete-icon{color:var(--general_contrasts-50)}.bmb-drop-zone-list-remove{padding:0;margin:0;height:1.5rem}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(359deg)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: BmbIconComponent, selector: "bmb-icon", inputs: ["icon", "materialIcon", "styleIcon", "isFill", "fontWeight", "size", "alt", "dotNotification"] }, { kind: "component", type: BmbTextLinkComponent, selector: "bmb-text-link", inputs: ["textLink", "textLinkStyle", "target", "icon", "iconPosition", "link", "disabled"] }, { kind: "component", type: BmbCardComponent, selector: "bmb-card", inputs: ["borderRadius", "margin", "type", "state", "boxShadowStyle", "borderColor", "alternative"] }, { kind: "component", type: BmbCardContentComponent, selector: "bmb-card-content", inputs: ["padding", "colorBackground"] }, { kind: "component", type: BmbProgressBarComponent, selector: "bmb-progress-bar", inputs: ["type", "totalCount", "counter", "title", "appearance", "textLink", "href", "target", "textFormat"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
163
+ }
164
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BmbDropzoneComponent, decorators: [{
165
+ type: Component,
166
+ args: [{ selector: 'bmb-dropzone', standalone: true, imports: [
167
+ CommonModule,
168
+ BmbIconComponent,
169
+ BmbTextLinkComponent,
170
+ BmbCardComponent,
171
+ BmbCardContentComponent,
172
+ BmbProgressBarComponent,
173
+ ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"bmb-drop-zone\">\n <section\n class=\"bmb-drop-zone-container\"\n [ngClass]=\"getDropZoneClass()\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (drop)=\"onDrop($event)\"\n >\n <div\n class=\"bmb-drop-zone-icon\"\n [ngClass]=\"{\n 'bmb-drop-zone-icon-valid':\n validFile && fileDataList.length > 0 && !!fileDataList[0].name,\n 'bmb-drop-zone-icon-error': isInvalidFileOnly(),\n }\"\n >\n <bmb-icon [icon]=\"mainIcon()\" [size]=\"48\" alt=\"Drop zone icon\" />\n </div>\n <p class=\"bmb-drop-zone-label-format\">{{ formatFilesLabel() }}</p>\n <p class=\"bmb-drop-zone-label-format-instruction\">\n {{ dropInstruction() }}\n <label class=\"bmb-drop-zone-link\" [htmlFor]=\"name()\">\n {{ dropLabel() }}\n </label>\n </p>\n @if (isInvalidFileOnly()) {\n <p class=\"bmb-drop-zone-label-format-error bmb-drop-zone-label-format\">\n {{ errorMessage() }}\n </p>\n @if (linkFilesSupported()) {\n <bmb-text-link\n textLinkStyle=\"underlined\"\n [link]=\"linkFilesSupported()\"\n [textLink]=\"linkLabel()\"\n />\n }\n }\n <input\n type=\"file\"\n [id]=\"name()\"\n [name]=\"name()\"\n [accept]=\"acceptedExtensions().toString()\"\n (change)=\"onFileSelected($event)\"\n [multiple]=\"multiple()\"\n style=\"display: none\"\n />\n </section>\n @if (fileDataList.length > 0) {\n @for (file of fileDataList; track file.name) {\n <bmb-card margin=\"none\" type=\"transparent\">\n <bmb-card-content>\n <div\n class=\"bmb-drop-zone-list-files\"\n [ngClass]=\"{\n 'bmb-drop-zone-list-files-loading':\n !file.error && getProgress(file.name) < 100,\n 'bmb-drop-zone-list-files-error': file.error,\n 'bmb-drop-zone-list-files-valid': getProgress(file.name) === 100,\n }\"\n >\n <span\n class=\"bmb-drop-zone-list-files-icon\"\n [ngClass]=\"{\n 'bmb-drop-zone-list-files-icon-spin':\n !file.error && getProgress(file.name) < 100,\n }\"\n >\n @if (!validFile) {\n <bmb-icon icon=\"upload_file\" [size]=\"24\" />\n } @else if (getProgress(file.name) < 100) {\n <bmb-icon icon=\"progress_activity\" [size]=\"24\" class=\"spin\" />\n } @else if (validFile) {\n <bmb-icon icon=\"task\" [size]=\"24\" />\n }\n </span>\n\n <div class=\"bmb-drop-zone-list-name\">\n <span>{{ file.name }}</span>\n\n <div\n class=\"bmb-drop-zone-list-status\"\n [ngClass]=\"{\n 'bmb-drop-zone-list-status-success':\n getProgress(file.name) === 100,\n }\"\n >\n @if (validFile && getProgress(file.name) < 100) {\n <span>{{ getProgress(file.name) }}% / 100%</span>\n }\n\n @if (getProgress(file.name) === 100) {\n {{ file.size.toFixed(2) }} MB\n <bmb-icon\n icon=\"check_circle\"\n [size]=\"24\"\n class=\"success-icon\"\n />\n <ng-container\n *ngTemplateOutlet=\"\n removeButton;\n context: { fileName: file.name }\n \"\n ></ng-container>\n }\n\n @if (file.error) {\n <span>\n @if (file.errorType === \"format\") {\n {{ errorMessageFormat() }}\n } @else if (file.errorType === \"size\") {\n {{ errorMessageSize() }} ({{ file.size.toFixed(2) }} MB)\n }\n </span>\n <ng-container\n *ngTemplateOutlet=\"\n removeButton;\n context: { fileName: file.name }\n \"\n ></ng-container>\n }\n </div>\n\n <ng-template #removeButton let-fileName=\"fileName\">\n <button\n class=\"bmb-drop-zone-list-remove\"\n (click)=\"removeFile(fileName)\"\n type=\"button\"\n >\n <bmb-icon icon=\"delete\" [size]=\"24\" class=\"delete-icon\" />\n </button>\n </ng-template>\n </div>\n\n @if (validFile && getProgress(file.name) < 100) {\n <span class=\"bmb-drop-zone-list-upload\">\n <bmb-progress-bar\n type=\"simple\"\n [counter]=\"getProgress(file.name)\"\n [totalCount]=\"100\"\n />\n </span>\n }\n </div>\n </bmb-card-content>\n </bmb-card>\n }\n }\n</div>\n", styles: ["@font-face{font-family:Poppins-Thin;font-style:normal;font-weight:100;src:url(/assets/fonts/Poppins/Poppins-Thin.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Light;font-style:normal;font-weight:300;src:url(/assets/fonts/Poppins/Poppins-ExtraLight.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Regular;font-style:normal;font-weight:400;src:url(/assets/fonts/Poppins/Poppins-Regular.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Medium;font-style:normal;font-weight:500;src:url(/assets/fonts/Poppins/Poppins-Medium.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Semibold;font-style:normal;font-weight:600;src:url(/assets/fonts/Poppins/Poppins-SemiBold.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Bold;font-style:normal;font-weight:700;src:url(/assets/fonts/Poppins/Poppins-Bold.ttf) format(\"truetype\")}:root,:host{--font-display: \"Poppins-Regular\", sans-serif}.font-thin-1{font-family:Poppins-Thin,sans-serif;font-size:.625rem}.font-light-1{font-family:Poppins-Light,sans-serif;font-size:.625rem}.font-regular-1{font-family:Poppins-Regular,sans-serif;font-size:.625rem}.font-medium-1{font-family:Poppins-Medium,sans-serif;font-size:.625rem}.font-semibold-1{font-family:Poppins-Semibold,sans-serif;font-size:.625rem}.font-bold-1{font-family:Poppins-Bold,sans-serif;font-size:.625rem}.font-thin-2{font-family:Poppins-Thin,sans-serif;font-size:.6875rem}.font-light-2{font-family:Poppins-Light,sans-serif;font-size:.6875rem}.font-regular-2{font-family:Poppins-Regular,sans-serif;font-size:.6875rem}.font-medium-2{font-family:Poppins-Medium,sans-serif;font-size:.6875rem}.font-semibold-2{font-family:Poppins-Semibold,sans-serif;font-size:.6875rem}.font-bold-2{font-family:Poppins-Bold,sans-serif;font-size:.6875rem}.font-thin-3{font-family:Poppins-Thin,sans-serif;font-size:.75rem}.font-light-3{font-family:Poppins-Light,sans-serif;font-size:.75rem}.font-regular-3{font-family:Poppins-Regular,sans-serif;font-size:.75rem}.font-medium-3{font-family:Poppins-Medium,sans-serif;font-size:.75rem}.font-semibold-3{font-family:Poppins-Semibold,sans-serif;font-size:.75rem}.font-bold-3{font-family:Poppins-Bold,sans-serif;font-size:.75rem}.font-thin-4{font-family:Poppins-Thin,sans-serif;font-size:.875rem}.font-light-4{font-family:Poppins-Light,sans-serif;font-size:.875rem}.font-regular-4{font-family:Poppins-Regular,sans-serif;font-size:.875rem}.font-medium-4{font-family:Poppins-Medium,sans-serif;font-size:.875rem}.font-semibold-4{font-family:Poppins-Semibold,sans-serif;font-size:.875rem}.font-bold-4{font-family:Poppins-Bold,sans-serif;font-size:.875rem}.font-thin-4_5{font-family:Poppins-Thin,sans-serif;font-size:.9375rem}.font-light-4_5{font-family:Poppins-Light,sans-serif;font-size:.9375rem}.font-regular-4_5{font-family:Poppins-Regular,sans-serif;font-size:.9375rem}.font-medium-4_5{font-family:Poppins-Medium,sans-serif;font-size:.9375rem}.font-semibold-4_5{font-family:Poppins-Semibold,sans-serif;font-size:.9375rem}.font-bold-4_5{font-family:Poppins-Bold,sans-serif;font-size:.9375rem}.font-thin-5{font-family:Poppins-Thin,sans-serif;font-size:1rem}.font-light-5{font-family:Poppins-Light,sans-serif;font-size:1rem}.font-regular-5{font-family:Poppins-Regular,sans-serif;font-size:1rem}.font-medium-5{font-family:Poppins-Medium,sans-serif;font-size:1rem}.font-semibold-5{font-family:Poppins-Semibold,sans-serif;font-size:1rem}.font-bold-5{font-family:Poppins-Bold,sans-serif;font-size:1rem}.font-thin-6{font-family:Poppins-Thin,sans-serif;font-size:1.125rem}.font-light-6{font-family:Poppins-Light,sans-serif;font-size:1.125rem}.font-regular-6{font-family:Poppins-Regular,sans-serif;font-size:1.125rem}.font-medium-6{font-family:Poppins-Medium,sans-serif;font-size:1.125rem}.font-semibold-6{font-family:Poppins-Semibold,sans-serif;font-size:1.125rem}.font-bold-6{font-family:Poppins-Bold,sans-serif;font-size:1.125rem}.font-thin-7{font-family:Poppins-Thin,sans-serif;font-size:1.25rem}.font-light-7{font-family:Poppins-Light,sans-serif;font-size:1.25rem}.font-regular-7{font-family:Poppins-Regular,sans-serif;font-size:1.25rem}.font-medium-7{font-family:Poppins-Medium,sans-serif;font-size:1.25rem}.font-semibold-7{font-family:Poppins-Semibold,sans-serif;font-size:1.25rem}.font-bold-7{font-family:Poppins-Bold,sans-serif;font-size:1.25rem}.font-thin-8{font-family:Poppins-Thin,sans-serif;font-size:1.375rem}.font-light-8{font-family:Poppins-Light,sans-serif;font-size:1.375rem}.font-regular-8{font-family:Poppins-Regular,sans-serif;font-size:1.375rem}.font-medium-8{font-family:Poppins-Medium,sans-serif;font-size:1.375rem}.font-semibold-8{font-family:Poppins-Semibold,sans-serif;font-size:1.375rem}.font-bold-8{font-family:Poppins-Bold,sans-serif;font-size:1.375rem}.font-thin-9{font-family:Poppins-Thin,sans-serif;font-size:1.5rem}.font-light-9{font-family:Poppins-Light,sans-serif;font-size:1.5rem}.font-regular-9{font-family:Poppins-Regular,sans-serif;font-size:1.5rem}.font-medium-9{font-family:Poppins-Medium,sans-serif;font-size:1.5rem}.font-semibold-9{font-family:Poppins-Semibold,sans-serif;font-size:1.5rem}.font-bold-9{font-family:Poppins-Bold,sans-serif;font-size:1.5rem}.font-thin-10{font-family:Poppins-Thin,sans-serif;font-size:1.625rem}.font-light-10{font-family:Poppins-Light,sans-serif;font-size:1.625rem}.font-regular-10{font-family:Poppins-Regular,sans-serif;font-size:1.625rem}.font-medium-10{font-family:Poppins-Medium,sans-serif;font-size:1.625rem}.font-semibold-10{font-family:Poppins-Semibold,sans-serif;font-size:1.625rem}.font-bold-10{font-family:Poppins-Bold,sans-serif;font-size:1.625rem}.font-thin-11{font-family:Poppins-Thin,sans-serif;font-size:2.25rem}.font-light-11{font-family:Poppins-Light,sans-serif;font-size:2.25rem}.font-regular-11{font-family:Poppins-Regular,sans-serif;font-size:2.25rem}.font-medium-11{font-family:Poppins-Medium,sans-serif;font-size:2.25rem}.font-semibold-11{font-family:Poppins-Semibold,sans-serif;font-size:2.25rem}.font-bold-11{font-family:Poppins-Bold,sans-serif;font-size:2.25rem}.font-thin-12{font-family:Poppins-Thin,sans-serif;font-size:3rem}.font-light-12{font-family:Poppins-Light,sans-serif;font-size:3rem}.font-regular-12{font-family:Poppins-Regular,sans-serif;font-size:3rem}.font-medium-12{font-family:Poppins-Medium,sans-serif;font-size:3rem}.font-semibold-12{font-family:Poppins-Semibold,sans-serif;font-size:3rem}.font-bold-12{font-family:Poppins-Bold,sans-serif;font-size:3rem}.bmb-drop-zone{color:RGBA(var(--color-charade-500));display:flex;flex-direction:column;gap:var(--bmb-spacing-m);font-family:Poppins-Regular,sans-serif;font-size:.875rem}.bmb-drop-zone-container{align-items:center;border:.125rem dashed var(--general_contrasts-container-outline);border-radius:var(--bmb-radius-s);box-sizing:border-box;display:flex;flex-direction:column;gap:var(--bmb-spacing-m);justify-content:center;padding:var(--bmb-spacing-m) var(--bmb-spacing-l)}.bmb-drop-zone-container-primary{background-color:var(--containers-background)}.bmb-drop-zone-container-alternative{background-color:var(--containers-main)}.bmb-drop-zone-drag-over{background-color:var(--menu_select-on-surface-hovered-w-checkbox);border-color:var(--general_contrasts-main-selection)}.bmb-drop-zone-error{border-color:var(--red-primary);background-color:transparent}.bmb-drop-zone-label-format{margin:0;color:var(--general_contrasts-50)}.bmb-drop-zone-label-format-instruction{color:var(--general_contrasts-100)}.bmb-drop-zone-link{font-family:Poppins-Medium,sans-serif;font-size:.875rem;color:var(--general_contrasts-main-selection);cursor:pointer;text-decoration-line:underline}.bmb-drop-zone-label-format-error{color:var(--red-primary)}.bmb-drop-zone-icon-valid{color:var(--general_contrasts-main-selection)}.bmb-drop-zone-icon-error{color:var(--red-primary)}.bmb-drop-zone-list-files{align-items:center;display:grid;gap:.5rem;grid-template-areas:\"icon name\" \"icon progress\";grid-template-columns:1.5rem 1fr;margin:0}.bmb-drop-zone-list-files-error{color:var(--red-primary);grid-template-areas:\"icon name\"}.bmb-drop-zone-list-files-loading .bmb-drop-zone-list-files-icon{color:var(--general_contrasts-main-selection)}.bmb-drop-zone-list-files-valid{grid-template-areas:\"icon name\"}.bmb-drop-zone-list-files-icon{grid-area:icon;height:1.5rem;width:1.5rem}.bmb-drop-zone-list-files-icon-spin{animation:spin 1s linear infinite}.bmb-drop-zone-list-upload{flex:1;grid-area:progress}.bmb-drop-zone-list-name{align-items:center;display:flex;grid-area:name;justify-content:space-between}.bmb-drop-zone-list-status{align-items:center;display:flex;gap:.5rem}.bmb-drop-zone-list-status-success .success-icon{color:var(--red-primary)}.bmb-drop-zone-list-status .delete-icon{color:var(--general_contrasts-50)}.bmb-drop-zone-list-remove{padding:0;margin:0;height:1.5rem}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(359deg)}}\n"] }]
174
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }] });
175
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm1iLWRyb3B6b25lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLW5nL3NyYy9saWIvY29tcG9uZW50cy9ibWItZHJvcHpvbmUvYm1iLWRyb3B6b25lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLW5nL3NyYy9saWIvY29tcG9uZW50cy9ibWItZHJvcHpvbmUvYm1iLWRyb3B6b25lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUVOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNoRixPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLHVCQUF1QixHQUN4QixNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBMEI1QyxNQUFNLE9BQU8sb0JBQW9CO0lBMEIvQixZQUFvQixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQXpCMUMsdUJBQWtCLEdBQUcsS0FBSyxDQUFlLFNBQVMsQ0FBQyxDQUFDO1FBQ3BELHVCQUFrQixHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVksQ0FBQztRQUNoRCxvQkFBZSxHQUFHLEtBQUssQ0FBUyw4QkFBOEIsQ0FBQyxDQUFDO1FBQ2hFLGNBQVMsR0FBRyxLQUFLLENBQVMseUJBQXlCLENBQUMsQ0FBQztR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QixDQUFDOytHQWpNVSxvQkFBb0I7bUdBQXBCLG9CQUFvQix1dkVDM0NqQywya0tBb0pBLDhyUkRySEksWUFBWSxvU0FDWixnQkFBZ0IsOEpBQ2hCLG9CQUFvQix1SkFDcEIsZ0JBQWdCLDBKQUNoQix1QkFBdUIscUdBQ3ZCLHVCQUF1Qjs7NEZBT2Qsb0JBQW9CO2tCQWhCaEMsU0FBUzsrQkFDRSxjQUFjLGNBQ1osSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osZ0JBQWdCO3dCQUNoQixvQkFBb0I7d0JBQ3BCLGdCQUFnQjt3QkFDaEIsdUJBQXVCO3dCQUN2Qix1QkFBdUI7cUJBQ3hCLG1CQUdnQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCbWJJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vYm1iLWljb24vYm1iLWljb24uY29tcG9uZW50JztcbmltcG9ydCB7IEJtYlRleHRMaW5rQ29tcG9uZW50IH0gZnJvbSAnLi4vYm1iLXRleHQtbGluay9ibWItdGV4dC1saW5rLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBCbWJDYXJkQ29tcG9uZW50LFxuICBCbWJDYXJkQ29udGVudENvbXBvbmVudCxcbn0gZnJvbSAnLi4vYm1iLWNhcmQvYm1iLWNhcmQuY29tcG9uZW50JztcbmltcG9ydCB7IEJtYlByb2dyZXNzQmFyQ29tcG9uZW50IH0gZnJvbSAnLi4vYm1iLXByb2dyZXNzLWJhci9ibWItcHJvZ3Jlc3MtYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBnZXRVVUlEIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXRpbHMnO1xuaW1wb3J0IHsgSUJtYkNvbnRyYXN0IH0gZnJvbSAnLi4vLi4vdHlwZXMvY29sb3JzJztcbmludGVyZmFjZSBGaWxlRGF0YSB7XG4gIG5hbWU6IHN0cmluZztcbiAgc2l6ZTogbnVtYmVyO1xuICBiYXNlNjQ/OiBzdHJpbmc7XG4gIGVycm9yPzogYm9vbGVhbjtcbiAgZXJyb3JUeXBlPzogJ2Zvcm1hdCcgfCAnc2l6ZScgfCBudWxsO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdibWItZHJvcHpvbmUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEJtYkljb25Db21wb25lbnQsXG4gICAgQm1iVGV4dExpbmtDb21wb25lbnQsXG4gICAgQm1iQ2FyZENvbXBvbmVudCxcbiAgICBCbWJDYXJkQ29udGVudENvbXBvbmVudCxcbiAgICBCbWJQcm9ncmVzc0JhckNvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2JtYi1kcm9wem9uZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9ibWItZHJvcHpvbmUuY29tcG9uZW50LnNjc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgQm1iRHJvcHpvbmVDb21wb25lbnQge1xuICBhcHBlYXJhbmNlQ29udHJhc3QgPSBpbnB1dDxJQm1iQ29udHJhc3Q+KCdkZWZhdWx0Jyk7XG4gIGFjY2VwdGVkRXh0ZW5zaW9ucyA9IGlucHV0LnJlcXVpcmVkPHN0cmluZ1tdPigpO1xuICBkcm9wSW5zdHJ1Y3Rpb24gPSBpbnB1dDxzdHJpbmc+KCdBcnJhc3RyYSB0dXMgYXJjaGl2b3MgYXF1w60gbycpO1xuICBkcm9wTGFiZWwgPSBpbnB1dDxzdHJpbmc+KCdzZWxlY2Npb25hIHR1cyBhcmNoaXZvcycpO1xuICBlcnJvck1lc3NhZ2UgPSBpbnB1dDxzdHJpbmc+KCdBcmNoaXZvIG5vIGNvbXBhdGlibGUnKTtcbiAgZXJyb3JNZXNzYWdlRm9ybWF0ID0gaW5wdXQ8c3RyaW5nPignRm9ybWF0byBubyBzb3BvcnRhZG8nKTtcbiAgZXJyb3JNZXNzYWdlU2l6ZSA9IGlucHV0PHN0cmluZz4oJ0VsIGFyY2hpdm8gc3VwZXJhIGVsIHRhbWHDsW8gcGVybWl0aWRvJyk7XG4gIGZpbGVEYXRhTGlzdDogRmlsZURhdGFbXSA9IFtdO1xuICBmaWxlU2l6ZSA9IGlucHV0PG51bWJlcj4oMik7XG4gIGZvcm1hdEZpbGVzTGFiZWwgPSBpbnB1dDxzdHJpbmc+KCdFc3BlY2lmaWNhY2nDs24gZGUgZm9ybWF0b3MgeSBwZXNvJyk7XG4gIGxpbmtGaWxlc1N1cHBvcnRlZCA9IGlucHV0PHN0cmluZz4oJycpO1xuICBsaW5rTGFiZWwgPSBpbnB1dDxzdHJpbmc+KFxuICAgICdWZXIgbcOhcyBpbmZvcm1hY2nDs24gZGUgZm9ybWF0b3MgZGUgYXJjaGl2byBhY2VwdGFkb3MuJyxcbiAgKTtcbiAgbWFpbkljb24gPSBpbnB1dDxzdHJpbmc+KCdpbWFnZScpO1xuICBtdWx0aXBsZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgbmFtZSA9IGlucHV0PHN0cmluZz4oZ2V0VVVJRCgpKTtcbiAgcHJvZ3Jlc3MgPSBpbnB1dDxSZWNvcmQ8c3RyaW5nLCBudW1iZXI+IHwgbnVtYmVyPih7fSk7XG5cbiAgbmV3RmlsZSA9IG91dHB1dDxGaWxlIHwgRmlsZVtdPigpO1xuICBmaWxlUmVtb3ZlZCA9IG91dHB1dDxzdHJpbmc+KCk7XG5cbiAgdmFsaWRGaWxlOiBib29sZWFuID0gdHJ1ZTtcbiAgaW5wdXQ/OiBIVE1MSW5wdXRFbGVtZW50O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKFxuICAgICAgY2hhbmdlc1sncHJvZ3Jlc3MnXSB8fFxuICAgICAgY2hhbmdlc1snYWNjZXB0ZWRFeHRlbnNpb25zJ10gfHxcbiAgICAgIGNoYW5nZXNbJ2ZpbGVTaXplJ11cbiAgICApIHtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25GaWxlU2VsZWN0ZWQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgdGhpcy5pbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIGlmICh0aGlzLmlucHV0LmZpbGVzPy5bMF0pIHtcbiAgICAgIGNvbnN0IGZpbGVzID0gdGhpcy5pbnB1dC5maWxlcztcbiAgICAgIGlmIChmaWxlcyAmJiBmaWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuZ2V0RmlsZUFuZFZhbGlkYXRlKHRoaXMubXVsdGlwbGUoKSA/IEFycmF5LmZyb20oZmlsZXMpIDogZmlsZXNbMF0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmlsZUFuZFZhbGlkYXRlKGZpbGU6IEZpbGUgfCBGaWxlW10pOiB2b2lkIHtcbiAgICBjb25zdCBmaWxlc0FycmF5ID0gQXJyYXkuaXNBcnJheShmaWxlKSA/IGZpbGUgOiBbZmlsZV07XG4gICAgY29uc3QgdmFsaWRGaWxlczogRmlsZVtdID0gW107XG5cbiAgICBpZiAoIXRoaXMubXVsdGlwbGUoKSkge1xuICAgICAgdGhpcy5maWxlRGF0YUxpc3QgPSBbXTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHNpbmdsZUZpbGUgb2YgZmlsZXNBcnJheSkge1xuICAgICAgY29uc3QgZmlsZUV4dGVuc2lvbiA9IHNpbmdsZUZpbGUubmFtZS5zcGxpdCgnLicpLmF0KC0xKTtcbiAgICAgIGNvbnN0IGlzVmFsaWRGaWxlVHlwZSA9IHRoaXMuYWNjZXB0ZWRFeHRlbnNpb25zKCkuaW5jbHVkZXMoXG4gICAgICAgIGZpbGVFeHRlbnNpb24gPz8gJycsXG4gICAgICApO1xuICAgICAgY29uc3QgZmlsZVNpemVJbk1CID0gc2luZ2xlRmlsZS5zaXplIC8gMTA0ODU3NjtcbiAgICAgIGNvbnN0IGlzVmFsaWRTaXplID0gZmlsZVNpemVJbk1CIDw9IHRoaXMuZmlsZVNpemUoKTtcblxuICAgICAgY29uc3QgYWxyZWFkeUV4aXN0cyA9IHRoaXMuZmlsZURhdGFMaXN0LnNvbWUoXG4gICAgICAgIChleGlzdGluZykgPT4gZXhpc3RpbmcubmFtZSA9PT0gc2luZ2xlRmlsZS5uYW1lLFxuICAgICAgKTtcblxuICAgICAgaWYgKGFscmVhZHlFeGlzdHMpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc1ZhbGlkRmlsZVR5cGUgJiYgaXNWYWxpZFNpemUpIHtcbiAgICAgICAgY29uc3QgZmlsZURhdGE6IEZpbGVEYXRhID0ge1xuICAgICAgICAgIG5hbWU6IHNpbmdsZUZpbGUubmFtZSxcbiAgICAgICAgICBzaXplOiBmaWxlU2l6ZUluTUIsXG4gICAgICAgICAgZXJyb3I6IGZhbHNlLFxuICAgICAgICAgIGVycm9yVHlwZTogbnVsbCxcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmZpbGVEYXRhTGlzdC5wdXNoKGZpbGVEYXRhKTtcbiAgICAgICAgdmFsaWRGaWxlcy5wdXNoKHNpbmdsZUZpbGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5maWxlRGF0YUxpc3QucHVzaCh7XG4gICAgICAgICAgbmFtZTogc2luZ2xlRmlsZS5uYW1lLFxuICAgICAgICAgIHNpemU6IGZpbGVTaXplSW5NQixcbiAgICAgICAgICBlcnJvcjogdHJ1ZSxcbiAgICAgICAgICBlcnJvclR5cGU6ICFpc1ZhbGlkRmlsZVR5cGUgPyAnZm9ybWF0JyA6ICdzaXplJyxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy52YWxpZEZpbGUgPSB2YWxpZEZpbGVzLmxlbmd0aCA+IDA7XG5cbiAgICBpZiAodGhpcy52YWxpZEZpbGUpIHtcbiAgICAgIHRoaXMubmV3RmlsZS5lbWl0KHRoaXMubXVsdGlwbGUoKSA/IHZhbGlkRmlsZXMgOiB2YWxpZEZpbGVzWzBdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vbkVycm9yRmlsZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVGaWxlKGZpbGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmZpbGVEYXRhTGlzdCA9IHRoaXMuZmlsZURhdGFMaXN0LmZpbHRlcihcbiAgICAgIChmaWxlKSA9PiBmaWxlLm5hbWUgIT09IGZpbGVOYW1lLFxuICAgICk7XG5cbiAgICBjb25zdCBoYXNGb3JtYXRFcnJvcnNPbmx5ID0gdGhpcy5maWxlRGF0YUxpc3Quc29tZShcbiAgICAgIChmaWxlKSA9PiBmaWxlLmVycm9yICYmIGZpbGUuZXJyb3JUeXBlID09PSAnZm9ybWF0JyxcbiAgICApO1xuXG4gICAgdGhpcy52YWxpZEZpbGUgPSB0aGlzLmZpbGVEYXRhTGlzdC5sZW5ndGggPiAwICYmICFoYXNGb3JtYXRFcnJvcnNPbmx5O1xuXG4gICAgaWYgKHRoaXMuZmlsZURhdGFMaXN0Lmxlbmd0aCA9PT0gMCAmJiB0aGlzLmlucHV0KSB7XG4gICAgICB0aGlzLmlucHV0LnZhbHVlID0gJyc7XG4gICAgfVxuXG4gICAgdGhpcy5maWxlUmVtb3ZlZC5lbWl0KGZpbGVOYW1lKTtcbiAgfVxuXG4gIHByaXZhdGUgb25FcnJvckZpbGUoKTogdm9pZCB7XG4gICAgdGhpcy5pbnB1dCAmJiAodGhpcy5pbnB1dC52YWx1ZSA9ICcnKTtcbiAgICB0aGlzLnZhbGlkRmlsZSA9IGZhbHNlO1xuICB9XG5cbiAgb25EcmFnT3ZlcihldmVudDogRHJhZ0V2ZW50KSB7XG4gICAgdGhpcy52YWxpZEZpbGUgPSB0cnVlO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgY29uc3QgZHJvcHpvbmVFbGVtZW50ID0gZXZlbnQuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICBkcm9wem9uZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnYm1iLWRyb3Atem9uZS1kcmFnLW92ZXInKTtcbiAgfVxuXG4gIG9uRHJhZ0xlYXZlKGV2ZW50OiBEcmFnRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGNvbnN0IGRyb3B6b25lRWxlbWVudCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgZHJvcHpvbmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2JtYi1kcm9wLXpvbmUtZHJhZy1vdmVyJyk7XG4gIH1cblxuICBvbkRyb3AoZXZlbnQ6IERyYWdFdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgY29uc3QgZHJvcHpvbmVFbGVtZW50ID0gZXZlbnQuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICBkcm9wem9uZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnYm1iLWRyb3Atem9uZScpO1xuICAgIGRyb3B6b25lRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdibWItZHJvcC16b25lLWRyYWctb3ZlcicpO1xuXG4gICAgY29uc3QgZmlsZXMgPSBldmVudC5kYXRhVHJhbnNmZXI/LmZpbGVzO1xuICAgIGlmIChmaWxlcyAmJiBmaWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmdldEZpbGVBbmRWYWxpZGF0ZSh0aGlzLm11bHRpcGxlKCkgPyBBcnJheS5mcm9tKGZpbGVzKSA6IGZpbGVzWzBdKTtcbiAgICB9XG4gIH1cblxuICBnZXRQcm9ncmVzcyhmaWxlTmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBjb25zdCBwcm9ncmVzcyA9IHRoaXMucHJvZ3Jlc3MoKTtcbiAgICBpZiAodHlwZW9mIHByb2dyZXNzID09PSAnbnVtYmVyJykgcmV0dXJuIHByb2dyZXNzO1xuICAgIHJldHVybiBwcm9ncmVzcz8uW2ZpbGVOYW1lXSA/PyAwO1xuICB9XG5cbiAgaXNJbnZhbGlkRmlsZU9ubHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZmlsZURhdGFMaXN0LnNvbWUoXG4gICAgICAoZmlsZSkgPT4gZmlsZS5lcnJvciAmJiBmaWxlLmVycm9yVHlwZSA9PT0gJ2Zvcm1hdCcsXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLmZpbGVEYXRhTGlzdCA9IFtdO1xuICAgIHRoaXMudmFsaWRGaWxlID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5pbnB1dCkge1xuICAgICAgdGhpcy5pbnB1dC52YWx1ZSA9ICcnO1xuICAgIH1cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBnZXREcm9wWm9uZUNsYXNzKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBjbGFzc0xpc3QgPSBbXTtcblxuICAgIGlmICh0aGlzLmlzSW52YWxpZEZpbGVPbmx5KCkpIHtcbiAgICAgIGNsYXNzTGlzdC5wdXNoKCdibWItZHJvcC16b25lLWVycm9yJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZmlsZURhdGFMaXN0Lmxlbmd0aCA+IDAgJiYgISF0aGlzLmZpbGVEYXRhTGlzdFswXS5uYW1lKSB7XG4gICAgICBjbGFzc0xpc3QucHVzaCgnYm1iLWRyb3Atem9uZS1kcmFnLW92ZXInKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hcHBlYXJhbmNlQ29udHJhc3QoKSA9PT0gJ3ByaW1hcnknKSB7XG4gICAgICBjbGFzc0xpc3QucHVzaCgnYm1iLWRyb3Atem9uZS1jb250YWluZXItcHJpbWFyeScpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmFwcGVhcmFuY2VDb250cmFzdCgpID09PSAnYWx0ZXJuYXRpdmUnKSB7XG4gICAgICBjbGFzc0xpc3QucHVzaCgnYm1iLWRyb3Atem9uZS1jb250YWluZXItYWx0ZXJuYXRpdmUnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2xhc3NMaXN0O1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYm1iLWRyb3Atem9uZVwiPlxuICA8c2VjdGlvblxuICAgIGNsYXNzPVwiYm1iLWRyb3Atem9uZS1jb250YWluZXJcIlxuICAgIFtuZ0NsYXNzXT1cImdldERyb3Bab25lQ2xhc3MoKVwiXG4gICAgKGRyYWdvdmVyKT1cIm9uRHJhZ092ZXIoJGV2ZW50KVwiXG4gICAgKGRyYWdsZWF2ZSk9XCJvbkRyYWdMZWF2ZSgkZXZlbnQpXCJcbiAgICAoZHJvcCk9XCJvbkRyb3AoJGV2ZW50KVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImJtYi1kcm9wLXpvbmUtaWNvblwiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICdibWItZHJvcC16b25lLWljb24tdmFsaWQnOlxuICAgICAgICAgIHZhbGlkRmlsZSAmJiBmaWxlRGF0YUxpc3QubGVuZ3RoID4gMCAmJiAhIWZpbGVEYXRhTGlzdFswXS5uYW1lLFxuICAgICAgICAnYm1iLWRyb3Atem9uZS1pY29uLWVycm9yJzogaXNJbnZhbGlkRmlsZU9ubHkoKSxcbiAgICAgIH1cIlxuICAgID5cbiAgICAgIDxibWItaWNvbiBbaWNvbl09XCJtYWluSWNvbigpXCIgW3NpemVdPVwiNDhcIiBhbHQ9XCJEcm9wIHpvbmUgaWNvblwiIC8+XG4gICAgPC9kaXY+XG4gICAgPHAgY2xhc3M9XCJibWItZHJvcC16b25lLWxhYmVsLWZvcm1hdFwiPnt7IGZvcm1hdEZpbGVzTGFiZWwoKSB9fTwvcD5cbiAgICA8cCBjbGFzcz1cImJtYi1kcm9wLXpvbmUtbGFiZWwtZm9ybWF0LWluc3RydWN0aW9uXCI+XG4gICAgICB7eyBkcm9wSW5zdHJ1Y3Rpb24oKSB9fVxuICAgICAgPGxhYmVsIGNsYXNzPVwiYm1iLWRyb3Atem9uZS1saW5rXCIgW2h0bWxGb3JdPVwibmFtZSgpXCI+XG4gICAgICAgIHt7IGRyb3BMYWJlbCgpIH19XG4gICAgICA8L2xhYmVsPlxuICAgIDwvcD5cbiAgICBAaWYgKGlzSW52YWxpZEZpbGVPbmx5KCkpIHtcbiAgICAgIDxwIGNsYXNzPVwiYm1iLWRyb3Atem9uZS1sYWJlbC1mb3JtYXQtZXJyb3IgYm1iLWRyb3Atem9uZS1sYWJlbC1mb3JtYXRcIj5cbiAgICAgICAge3sgZXJyb3JNZXNzYWdlKCkgfX1cbiAgICAgIDwvcD5cbiAgICAgIEBpZiAobGlua0ZpbGVzU3VwcG9ydGVkKCkpIHtcbiAgICAgICAgPGJtYi10ZXh0LWxpbmtcbiAgICAgICAgICB0ZXh0TGlua1N0eWxlPVwidW5kZXJsaW5lZFwiXG4gICAgICAgICAgW2xpbmtdPVwibGlua0ZpbGVzU3VwcG9ydGVkKClcIlxuICAgICAgICAgIFt0ZXh0TGlua109XCJsaW5rTGFiZWwoKVwiXG4gICAgICAgIC8+XG4gICAgICB9XG4gICAgfVxuICAgIDxpbnB1dFxuICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgW2lkXT1cIm5hbWUoKVwiXG4gICAgICBbbmFtZV09XCJuYW1lKClcIlxuICAgICAgW2FjY2VwdF09XCJhY2NlcHRlZEV4dGVuc2lvbnMoKS50b1N0cmluZygpXCJcbiAgICAgIChjaGFuZ2UpPVwib25GaWxlU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICBbbXVsdGlwbGVdPVwibXVsdGlwbGUoKVwiXG4gICAgICBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIlxuICAgIC8+XG4gIDwvc2VjdGlvbj5cbiAgQGlmIChmaWxlRGF0YUxpc3QubGVuZ3RoID4gMCkge1xuICAgIEBmb3IgKGZpbGUgb2YgZmlsZURhdGFMaXN0OyB0cmFjayBmaWxlLm5hbWUpIHtcbiAgICAgIDxibWItY2FyZCBtYXJnaW49XCJub25lXCIgdHlwZT1cInRyYW5zcGFyZW50XCI+XG4gICAgICAgIDxibWItY2FyZC1jb250ZW50PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiYm1iLWRyb3Atem9uZS1saXN0LWZpbGVzXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ2JtYi1kcm9wLXpvbmUtbGlzdC1maWxlcy1sb2FkaW5nJzpcbiAgICAgICAgICAgICAgICAhZmlsZS5lcnJvciAmJiBnZXRQcm9ncmVzcyhmaWxlLm5hbWUpIDwgMTAwLFxuICAgICAgICAgICAgICAnYm1iLWRyb3Atem9uZS1saXN0LWZpbGVzLWVycm9yJzogZmlsZS5lcnJvcixcbiAgICAgICAgICAgICAgJ2JtYi1kcm9wLXpvbmUtbGlzdC1maWxlcy12YWxpZCc6IGdldFByb2dyZXNzKGZpbGUubmFtZSkgPT09IDEwMCxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwiYm1iLWRyb3Atem9uZS1saXN0LWZpbGVzLWljb25cIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgJ2JtYi1kcm9wLXpvbmUtbGlzdC1maWxlcy1pY29uLXNwaW4nOlxuICAgICAgICAgICAgICAgICAgIWZpbGUuZXJyb3IgJiYgZ2V0UHJvZ3Jlc3MoZmlsZS5uYW1lKSA8IDEwMCxcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIEBpZiAoIXZhbGlkRmlsZSkge1xuICAgICAgICAgICAgICAgIDxibWItaWNvbiBpY29uPVwidXBsb2FkX2ZpbGVcIiBbc2l6ZV09XCIyNFwiIC8+XG4gICAgICAgICAgICAgIH0gQGVsc2UgaWYgKGdldFByb2dyZXNzKGZpbGUubmFtZSkgPCAxMDApIHtcbiAgICAgICAgICAgICAgICA8Ym1iLWljb24gaWNvbj1cInByb2dyZXNzX2FjdGl2aXR5XCIgW3NpemVdPVwiMjRcIiBjbGFzcz1cInNwaW5cIiAvPlxuICAgICAgICAgICAgICB9IEBlbHNlIGlmICh2YWxpZEZpbGUpIHtcbiAgICAgICAgICAgICAgICA8Ym1iLWljb24gaWNvbj1cInRhc2tcIiBbc2l6ZV09XCIyNFwiIC8+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJtYi1kcm9wLXpvbmUtbGlzdC1uYW1lXCI+XG4gICAgICAgICAgICAgIDxzcGFuPnt7IGZpbGUubmFtZSB9fTwvc3Bhbj5cblxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJibWItZHJvcC16b25lLWxpc3Qtc3RhdHVzXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAnYm1iLWRyb3Atem9uZS1saXN0LXN0YXR1cy1zdWNjZXNzJzpcbiAgICAgICAgICAgICAgICAgICAgZ2V0UHJvZ3Jlc3MoZmlsZS5uYW1lKSA9PT0gMTAwLFxuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgQGlmICh2YWxpZEZpbGUgJiYgZ2V0UHJvZ3Jlc3MoZmlsZS5uYW1lKSA8IDEwMCkge1xuICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgZ2V0UHJvZ3Jlc3MoZmlsZS5uYW1lKSB9fSUgLyAxMDAlPC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIEBpZiAoZ2V0UHJvZ3Jlc3MoZmlsZS5uYW1lKSA9PT0gMTAwKSB7XG4gICAgICAgICAgICAgICAgICB7eyBmaWxlLnNpemUudG9GaXhlZCgyKSB9fSBNQlxuICAgICAgICAgICAgICAgICAgPGJtYi1pY29uXG4gICAgICAgICAgICAgICAgICAgIGljb249XCJjaGVja19jaXJjbGVcIlxuICAgICAgICAgICAgICAgICAgICBbc2l6ZV09XCIyNFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3VjY2Vzcy1pY29uXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQnV0dG9uO1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHsgZmlsZU5hbWU6IGZpbGUubmFtZSB9XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgQGlmIChmaWxlLmVycm9yKSB7XG4gICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChmaWxlLmVycm9yVHlwZSA9PT0gXCJmb3JtYXRcIikge1xuICAgICAgICAgICAgICAgICAgICAgIHt7IGVycm9yTWVzc2FnZUZvcm1hdCgpIH19XG4gICAgICAgICAgICAgICAgICAgIH0gQGVsc2UgaWYgKGZpbGUuZXJyb3JUeXBlID09PSBcInNpemVcIikge1xuICAgICAgICAgICAgICAgICAgICAgIHt7IGVycm9yTWVzc2FnZVNpemUoKSB9fSAoe3sgZmlsZS5zaXplLnRvRml4ZWQoMikgfX0gTUIpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICByZW1vdmVCdXR0b247XG4gICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogeyBmaWxlTmFtZTogZmlsZS5uYW1lIH1cbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcmVtb3ZlQnV0dG9uIGxldC1maWxlTmFtZT1cImZpbGVOYW1lXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJibWItZHJvcC16b25lLWxpc3QtcmVtb3ZlXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVGaWxlKGZpbGVOYW1lKVwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8Ym1iLWljb24gaWNvbj1cImRlbGV0ZVwiIFtzaXplXT1cIjI0XCIgY2xhc3M9XCJkZWxldGUtaWNvblwiIC8+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgQGlmICh2YWxpZEZpbGUgJiYgZ2V0UHJvZ3Jlc3MoZmlsZS5uYW1lKSA8IDEwMCkge1xuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJtYi1kcm9wLXpvbmUtbGlzdC11cGxvYWRcIj5cbiAgICAgICAgICAgICAgICA8Ym1iLXByb2dyZXNzLWJhclxuICAgICAgICAgICAgICAgICAgdHlwZT1cInNpbXBsZVwiXG4gICAgICAgICAgICAgICAgICBbY291bnRlcl09XCJnZXRQcm9ncmVzcyhmaWxlLm5hbWUpXCJcbiAgICAgICAgICAgICAgICAgIFt0b3RhbENvdW50XT1cIjEwMFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2JtYi1jYXJkLWNvbnRlbnQ+XG4gICAgICA8L2JtYi1jYXJkPlxuICAgIH1cbiAgfVxuPC9kaXY+XG4iXX0=