@ti-tecnologico-de-monterrey-oficial/ds-ng 1.5.1318 → 1.5.1319

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 (229) hide show
  1. package/assets/styles/main.min.css +1 -1
  2. package/fesm2022/ti-tecnologico-de-monterrey-oficial-ds-ng.mjs +565 -565
  3. package/fesm2022/ti-tecnologico-de-monterrey-oficial-ds-ng.mjs.map +1 -1
  4. package/lib/ds-ng.component.d.ts +1 -1
  5. package/package.json +1 -3
  6. package/esm2022/assets/i18n/en.json +0 -122
  7. package/esm2022/assets/i18n/es.json +0 -122
  8. package/esm2022/lib/components/bmb-academic-progress/bmb-academic-progress.component.mjs +0 -87
  9. package/esm2022/lib/components/bmb-accordion/bmb-accordion.component.mjs +0 -159
  10. package/esm2022/lib/components/bmb-account-statement/bmb-account-statement.component.mjs +0 -174
  11. package/esm2022/lib/components/bmb-action-icon/bmb-action-icon.component.mjs +0 -49
  12. package/esm2022/lib/components/bmb-action-menu/bmb-action-menu.component.mjs +0 -31
  13. package/esm2022/lib/components/bmb-advertisement-card/bmb-advertisement-card.component.mjs +0 -37
  14. package/esm2022/lib/components/bmb-advertisement-card/types.mjs +0 -2
  15. package/esm2022/lib/components/bmb-alert-center/bmb-alert-center-ads/bmb-alert-center-ads.component.mjs +0 -71
  16. package/esm2022/lib/components/bmb-alert-center/bmb-alert-center-empty/bmb-alert-center-empty.component.mjs +0 -19
  17. package/esm2022/lib/components/bmb-alert-center/bmb-alert-center-form/bmb-alert-center-form.component.mjs +0 -148
  18. package/esm2022/lib/components/bmb-alert-center/bmb-alert-center-list/bmb-alert-center-list.component.mjs +0 -47
  19. package/esm2022/lib/components/bmb-alert-center/bmb-alert-center.component.mjs +0 -204
  20. package/esm2022/lib/components/bmb-alert-center/bmb-alert-center.service.mjs +0 -62
  21. package/esm2022/lib/components/bmb-alert-center/types.mjs +0 -2
  22. package/esm2022/lib/components/bmb-badge/bmb-badge.component.mjs +0 -26
  23. package/esm2022/lib/components/bmb-balance-overview/bmb-balance-overview.component.mjs +0 -32
  24. package/esm2022/lib/components/bmb-bookmark/bmb-bookmark.component.mjs +0 -27
  25. package/esm2022/lib/components/bmb-bottom-navigation-bar/bmb-bottom-navigation-bar.component.mjs +0 -42
  26. package/esm2022/lib/components/bmb-breadcrumb/bmb-breadcrumb.component.mjs +0 -55
  27. package/esm2022/lib/components/bmb-button-icon/bmb-button-icon.component.mjs +0 -30
  28. package/esm2022/lib/components/bmb-calendar/bmb-calendar.component.mjs +0 -288
  29. package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-header/bmb-calendar-header.component.mjs +0 -101
  30. package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-hour-view/bmb-calendar-hour-view.component.mjs +0 -40
  31. package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-schedule-cards/bmb-calendar-schedule-cards.component.mjs +0 -68
  32. package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-template-day/bmb-calendar-template-day.component.mjs +0 -43
  33. package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-template-mobile/bmb-calendar-template-mobile.component.mjs +0 -100
  34. package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-template-month/bmb-calendar-template-month.component.mjs +0 -47
  35. package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-template-week/bmb-calendar-template-week.component.mjs +0 -56
  36. package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-time-indicator/bmb-calendar-time-indicator.component.mjs +0 -24
  37. package/esm2022/lib/components/bmb-calendar/types.mjs +0 -2
  38. package/esm2022/lib/components/bmb-calendar/utils.mjs +0 -96
  39. package/esm2022/lib/components/bmb-card/bmb-card.component.mjs +0 -159
  40. package/esm2022/lib/components/bmb-card-button/bmb-card-button.component.mjs +0 -76
  41. package/esm2022/lib/components/bmb-carousel/bmb-carousel.component.mjs +0 -80
  42. package/esm2022/lib/components/bmb-chat-bar/bmb-chat-bar.component.mjs +0 -200
  43. package/esm2022/lib/components/bmb-chat-bar/bot_list.mjs +0 -57
  44. package/esm2022/lib/components/bmb-chat-bar/types.mjs +0 -2
  45. package/esm2022/lib/components/bmb-chat-bubbles/bmb-chat-bubbles.component.mjs +0 -56
  46. package/esm2022/lib/components/bmb-chat-bubbles/types.mjs +0 -2
  47. package/esm2022/lib/components/bmb-check-external-link-button/bmb-check-external-link-button.component.mjs +0 -46
  48. package/esm2022/lib/components/bmb-checkbox/bmb-checkbox.component.mjs +0 -80
  49. package/esm2022/lib/components/bmb-chevron-title-selector/bmb-chevron-title-selector.component.mjs +0 -36
  50. package/esm2022/lib/components/bmb-container/bmb-container.component.mjs +0 -27
  51. package/esm2022/lib/components/bmb-container-button/bmb-container-button.component.mjs +0 -92
  52. package/esm2022/lib/components/bmb-date-range/bmb-date-range.component.mjs +0 -69
  53. package/esm2022/lib/components/bmb-datepicker/bmb-datepicker-modal/bmb-datepicker-modal.component.mjs +0 -208
  54. package/esm2022/lib/components/bmb-datepicker/bmb-datepicker.component.mjs +0 -144
  55. package/esm2022/lib/components/bmb-digital-id/bmb-digital-id.component.mjs +0 -58
  56. package/esm2022/lib/components/bmb-divider/bmb-divider.component.mjs +0 -25
  57. package/esm2022/lib/components/bmb-dot-paginator/bmb-dot-paginator.component.mjs +0 -34
  58. package/esm2022/lib/components/bmb-drawer-overlay/bmb-drawer-overlay.component.mjs +0 -65
  59. package/esm2022/lib/components/bmb-dropdown/bmb-dropdown.component.mjs +0 -177
  60. package/esm2022/lib/components/bmb-dropdown-menu/bmb-dropdown-menu.component.mjs +0 -31
  61. package/esm2022/lib/components/bmb-dropzone/bmb-dropzone.component.mjs +0 -192
  62. package/esm2022/lib/components/bmb-evaluation-rubric/bmb-evaluation-rubric.component.mjs +0 -76
  63. package/esm2022/lib/components/bmb-external-link/bmb-external-link.component.mjs +0 -80
  64. package/esm2022/lib/components/bmb-fab/bmb-fab-.interface.mjs +0 -9
  65. package/esm2022/lib/components/bmb-fab/bmb-fab.component.mjs +0 -37
  66. package/esm2022/lib/components/bmb-filter-card/bmb-filter-card.component.mjs +0 -166
  67. package/esm2022/lib/components/bmb-filter-card/bmb-filter-card.interface.mjs +0 -2
  68. package/esm2022/lib/components/bmb-focus-element/bmb-focus-element.component.mjs +0 -36
  69. package/esm2022/lib/components/bmb-form-validator/bmb-form-validator.component.mjs +0 -159
  70. package/esm2022/lib/components/bmb-frequent-apps-selector/bmb-frequent-apps-selector.component.mjs +0 -29
  71. package/esm2022/lib/components/bmb-grade-value/bmb-grade-value.component.mjs +0 -22
  72. package/esm2022/lib/components/bmb-grades/bmb-grades.component.mjs +0 -178
  73. package/esm2022/lib/components/bmb-grades/types.mjs +0 -2
  74. package/esm2022/lib/components/bmb-header-mitec/bmb-header-mitec.component.mjs +0 -60
  75. package/esm2022/lib/components/bmb-header-mobile/bmb-header-mobile.component.mjs +0 -49
  76. package/esm2022/lib/components/bmb-hito-card/bmb-hito-card.component.mjs +0 -86
  77. package/esm2022/lib/components/bmb-hito-list/bmb-hito-list.component.mjs +0 -59
  78. package/esm2022/lib/components/bmb-home-card/bmb-home-card-header/bmb-home-card-header.component.mjs +0 -76
  79. package/esm2022/lib/components/bmb-home-card/bmb-home-card.component.mjs +0 -41
  80. package/esm2022/lib/components/bmb-home-card-chat/bmb-home-card-chat.component.mjs +0 -45
  81. package/esm2022/lib/components/bmb-home-section/bmb-home-section.component.mjs +0 -20
  82. package/esm2022/lib/components/bmb-icon/bmb-icon.component.mjs +0 -50
  83. package/esm2022/lib/components/bmb-icon/types.mjs +0 -2
  84. package/esm2022/lib/components/bmb-icon-item/bmb-icon-item.component.mjs +0 -32
  85. package/esm2022/lib/components/bmb-icon-status/bmb-icon-status.component.mjs +0 -24
  86. package/esm2022/lib/components/bmb-iframe/bmb-iframe.component.mjs +0 -19
  87. package/esm2022/lib/components/bmb-iframe/bmb-iframe.pipe.mjs +0 -21
  88. package/esm2022/lib/components/bmb-image/bmb-image.component.mjs +0 -33
  89. package/esm2022/lib/components/bmb-inner-header/bmb-inner-header.component.mjs +0 -79
  90. package/esm2022/lib/components/bmb-input/bmb-input-content/bmb-input-content.component.mjs +0 -147
  91. package/esm2022/lib/components/bmb-input/bmb-input-validator/bmb-input-validator.component.mjs +0 -178
  92. package/esm2022/lib/components/bmb-input/bmb-input.component.mjs +0 -85
  93. package/esm2022/lib/components/bmb-input-phone-number/bmb-input-phone-number.component.mjs +0 -219
  94. package/esm2022/lib/components/bmb-input-tags/bmb-input-tags.component.mjs +0 -191
  95. package/esm2022/lib/components/bmb-interactive-icon/bmb-interactive-icon.component.mjs +0 -54
  96. package/esm2022/lib/components/bmb-invoice/bmb-invoice.component.mjs +0 -34
  97. package/esm2022/lib/components/bmb-item/bmb-item.component.mjs +0 -28
  98. package/esm2022/lib/components/bmb-legend/bmb-legend.component.mjs +0 -23
  99. package/esm2022/lib/components/bmb-list-group/bmb-list-group-item/bmb-list-group-item.component.mjs +0 -83
  100. package/esm2022/lib/components/bmb-list-group/bmb-list-group.component.mjs +0 -60
  101. package/esm2022/lib/components/bmb-list-group/bmb-list-group.service.mjs +0 -55
  102. package/esm2022/lib/components/bmb-list-group/types.mjs +0 -2
  103. package/esm2022/lib/components/bmb-list-items/bmb-list-items.component.mjs +0 -83
  104. package/esm2022/lib/components/bmb-loader/bmb-loader.component.mjs +0 -77
  105. package/esm2022/lib/components/bmb-login/bmb-login-content/bmb-login-content.component.mjs +0 -55
  106. package/esm2022/lib/components/bmb-login/bmb-login.component.mjs +0 -68
  107. package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-logged/bmb-login-onboarding-logged.component.mjs +0 -40
  108. package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-login/bmb-login-onboarding-login.component.mjs +0 -20
  109. package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-logout/bmb-login-onboarding-logout.component.mjs +0 -33
  110. package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper-steps/bmb-login-onboarding-stepper-step-four.component.mjs +0 -91
  111. package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper-steps/bmb-login-onboarding-stepper-step-one.component.mjs +0 -88
  112. package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper-steps/bmb-login-onboarding-stepper-step-three.component.mjs +0 -57
  113. package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper-steps/bmb-login-onboarding-stepper-step-two.component.mjs +0 -99
  114. package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper-steps/bmb-login-onboarding-stepper-step.component.mjs +0 -39
  115. package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper.component.mjs +0 -44
  116. package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding.component.mjs +0 -67
  117. package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding.service.mjs +0 -70
  118. package/esm2022/lib/components/bmb-login-onboarding/types.mjs +0 -2
  119. package/esm2022/lib/components/bmb-logo/bmb-logo.component.mjs +0 -43
  120. package/esm2022/lib/components/bmb-media-card/bmb-media-card.component.mjs +0 -65
  121. package/esm2022/lib/components/bmb-mitec-logo-animation/bmb-mitec-logo-animation.component.mjs +0 -14
  122. package/esm2022/lib/components/bmb-mobile-templates/bmb-mobile-templates.component.mjs +0 -88
  123. package/esm2022/lib/components/bmb-modal/bmb-modal.component.mjs +0 -139
  124. package/esm2022/lib/components/bmb-modal/bmb-modal.interface.mjs +0 -2
  125. package/esm2022/lib/components/bmb-modal/bmb-native-modal.component.mjs +0 -121
  126. package/esm2022/lib/components/bmb-multi-dot-paginator/bmb-multi-dot-paginator-item/bmb-multi-dot-paginator-item.component.mjs +0 -15
  127. package/esm2022/lib/components/bmb-multi-dot-paginator/bmb-multi-dot-paginator.component.mjs +0 -59
  128. package/esm2022/lib/components/bmb-navigation-bar/bmb-navigation-bar.component.mjs +0 -30
  129. package/esm2022/lib/components/bmb-notice-card/bmb-notice-card.component.mjs +0 -45
  130. package/esm2022/lib/components/bmb-notification-card/bmb-notification-card-modal/bmb-notification-card-modal.component.mjs +0 -21
  131. package/esm2022/lib/components/bmb-notification-card/bmb-notification-card.component.mjs +0 -114
  132. package/esm2022/lib/components/bmb-notification-counter/bmb-notification-counter.component.mjs +0 -23
  133. package/esm2022/lib/components/bmb-overlay/bmb-overlay.component.mjs +0 -22
  134. package/esm2022/lib/components/bmb-paginator/bmb-paginator.component.mjs +0 -52
  135. package/esm2022/lib/components/bmb-portal/bmb-portal.component.mjs +0 -58
  136. package/esm2022/lib/components/bmb-portal/bmb-projected-content/bmb-projected-content.component.mjs +0 -123
  137. package/esm2022/lib/components/bmb-profile/bmb-profile.component.mjs +0 -153
  138. package/esm2022/lib/components/bmb-progress-bar/bmb-progress-bar.component.mjs +0 -39
  139. package/esm2022/lib/components/bmb-progress-cirlce/bmb-progress-circle.component.mjs +0 -180
  140. package/esm2022/lib/components/bmb-progress-cirlce/bmb-progress-circle.interface.mjs +0 -2
  141. package/esm2022/lib/components/bmb-pull-wedge/bmb-pull-wedge.component.mjs +0 -88
  142. package/esm2022/lib/components/bmb-push-notification/bmb-push-notification-item/bmb-push-notification-item.component.mjs +0 -75
  143. package/esm2022/lib/components/bmb-push-notification/bmb-push-notification.component.mjs +0 -24
  144. package/esm2022/lib/components/bmb-push-notification/types.mjs +0 -2
  145. package/esm2022/lib/components/bmb-radial/bmb-radial.component.mjs +0 -78
  146. package/esm2022/lib/components/bmb-search-input/bmb-search-input.component.mjs +0 -122
  147. package/esm2022/lib/components/bmb-server-table/bmb-server-table.component.mjs +0 -82
  148. package/esm2022/lib/components/bmb-sidebar/bmb-sidebar.component.mjs +0 -101
  149. package/esm2022/lib/components/bmb-sidebar/bmb-sidebar.interface.mjs +0 -2
  150. package/esm2022/lib/components/bmb-simple-header/bmb-simple-header.component.mjs +0 -64
  151. package/esm2022/lib/components/bmb-skeleton/bmb-skeleton.component.mjs +0 -16
  152. package/esm2022/lib/components/bmb-sounds-card/bmb-sounds-card.component.mjs +0 -64
  153. package/esm2022/lib/components/bmb-stat-counter/bmb-stat-counter.component.mjs +0 -32
  154. package/esm2022/lib/components/bmb-step-progress-bar/bmb-step-progress-bar.component.mjs +0 -59
  155. package/esm2022/lib/components/bmb-student-activity-card/bmb-student-activity-card.component.mjs +0 -53
  156. package/esm2022/lib/components/bmb-student-activity-selector/bmb-student-activity-tab/bmb-student-activity-tab.component.mjs +0 -27
  157. package/esm2022/lib/components/bmb-switch/bmb-switch.component.mjs +0 -90
  158. package/esm2022/lib/components/bmb-table-lite/bmb-table-lite.component.mjs +0 -564
  159. package/esm2022/lib/components/bmb-table-lite/bmb-table-lite.interface.mjs +0 -2
  160. package/esm2022/lib/components/bmb-tables/bmb-tables.component.mjs +0 -541
  161. package/esm2022/lib/components/bmb-tables/bmb-tables.interface.mjs +0 -2
  162. package/esm2022/lib/components/bmb-tabs/bmb-tabs.component.mjs +0 -132
  163. package/esm2022/lib/components/bmb-tags/bmb-tags.component.mjs +0 -66
  164. package/esm2022/lib/components/bmb-text-editor/bmb-text-editor.component.mjs +0 -135
  165. package/esm2022/lib/components/bmb-text-link/bmb-text-link.component.mjs +0 -43
  166. package/esm2022/lib/components/bmb-theme/bmb-theme.component.mjs +0 -65
  167. package/esm2022/lib/components/bmb-three-cols/bmb-three-cols.component.mjs +0 -30
  168. package/esm2022/lib/components/bmb-timestream/bmb-timestream-detail/bmb-timestream-detail.component.mjs +0 -74
  169. package/esm2022/lib/components/bmb-timestream/bmb-timestream-error/bmb-timestream-error.component.mjs +0 -13
  170. package/esm2022/lib/components/bmb-timestream/bmb-timestream.component.mjs +0 -236
  171. package/esm2022/lib/components/bmb-timestream/types.mjs +0 -2
  172. package/esm2022/lib/components/bmb-timestream-card/bmb-timestream-card.component.mjs +0 -139
  173. package/esm2022/lib/components/bmb-title-content/bmb-title-content.component.mjs +0 -61
  174. package/esm2022/lib/components/bmb-toast/bmb-toast.component.mjs +0 -47
  175. package/esm2022/lib/components/bmb-tooltip/bmb-tooltip.component.mjs +0 -39
  176. package/esm2022/lib/components/bmb-top-bar/bmb-top-bar-item/bmb-top-bar-item.component.mjs +0 -31
  177. package/esm2022/lib/components/bmb-top-bar/bmb-top-bar-user-section/bmb-top-bar-user-section.component.mjs +0 -94
  178. package/esm2022/lib/components/bmb-top-bar/bmb-top-bar.component.mjs +0 -86
  179. package/esm2022/lib/components/bmb-top-bar/types.mjs +0 -2
  180. package/esm2022/lib/components/bmb-totp/bmb-totp.component.mjs +0 -141
  181. package/esm2022/lib/components/bmb-user-image/bmb-user-image.component.mjs +0 -44
  182. package/esm2022/lib/components/bmb-user-profile/bmb-user-profile-content/bmb-user-profile-content.component.mjs +0 -19
  183. package/esm2022/lib/components/bmb-user-profile/bmb-user-profile.component.mjs +0 -77
  184. package/esm2022/lib/components/bmb-user-summary/bmb-user-summary-content/bmb-user-summary-content.component.mjs +0 -64
  185. package/esm2022/lib/components/bmb-user-summary/bmb-user-summary.component.mjs +0 -34
  186. package/esm2022/lib/components/bmb-value-counter/bmb-value-counter.component.mjs +0 -23
  187. package/esm2022/lib/components/bmb-web-templates/bmb-web-templates.component.mjs +0 -85
  188. package/esm2022/lib/components/bmb-wheel-menu/bmb-wheel-menu.component.mjs +0 -128
  189. package/esm2022/lib/components/utils/bmb-dropdown-content/bmb-dropdown-content.component.mjs +0 -51
  190. package/esm2022/lib/directives/bmb-accordion/bmb-accordion-control.directive.mjs +0 -88
  191. package/esm2022/lib/directives/bmb-button/button.directive.mjs +0 -84
  192. package/esm2022/lib/directives/bmb-button-group/bmb-button-group.directive.mjs +0 -29
  193. package/esm2022/lib/directives/bmb-layout/bmb-layout-item.directive.mjs +0 -64
  194. package/esm2022/lib/directives/bmb-layout/bmb-layout.directive.mjs +0 -41
  195. package/esm2022/lib/directives/bmb-layout/bmb-vertical-layout/bmb-vertical-layout-item.directive.mjs +0 -34
  196. package/esm2022/lib/directives/bmb-layout/bmb-vertical-layout/bmb-vertical-layout.directive.mjs +0 -37
  197. package/esm2022/lib/directives/bmb-layout-grid/bmb-layout-grid.directive.mjs +0 -89
  198. package/esm2022/lib/directives/bmb-selector/bmb-selector.directive.mjs +0 -28
  199. package/esm2022/lib/directives/utils/clickoutside.directive.mjs +0 -41
  200. package/esm2022/lib/ds-ng.component.mjs +0 -11
  201. package/esm2022/lib/ds-ng.service.mjs +0 -14
  202. package/esm2022/lib/pipes/translations.mjs +0 -22
  203. package/esm2022/lib/services/calendar/calendar.service.mjs +0 -51
  204. package/esm2022/lib/services/calendar.service.mjs +0 -51
  205. package/esm2022/lib/services/index.mjs +0 -3
  206. package/esm2022/lib/services/modal/native-modal.service.mjs +0 -60
  207. package/esm2022/lib/services/native-modal.service.mjs +0 -60
  208. package/esm2022/lib/services/notification/notification.service.mjs +0 -84
  209. package/esm2022/lib/services/notification.service.mjs +0 -84
  210. package/esm2022/lib/services/projection/projection.service.mjs +0 -49
  211. package/esm2022/lib/services/projection.service.mjs +0 -49
  212. package/esm2022/lib/services/tabs/tabs.service.mjs +0 -30
  213. package/esm2022/lib/services/tabs.service.mjs +0 -30
  214. package/esm2022/lib/services/theme/theme.service.mjs +0 -30
  215. package/esm2022/lib/services/theme.service.mjs +0 -30
  216. package/esm2022/lib/services/toast/toast.service.mjs +0 -24
  217. package/esm2022/lib/services/toast.service.mjs +0 -24
  218. package/esm2022/lib/services/translations/translations.service.mjs +0 -53
  219. package/esm2022/lib/services/user/profile.service.mjs +0 -26
  220. package/esm2022/lib/types/colors.mjs +0 -2
  221. package/esm2022/lib/types/index.mjs +0 -11
  222. package/esm2022/lib/utils/countryCodes.mjs +0 -1089
  223. package/esm2022/lib/utils/currencyFormat.mjs +0 -7
  224. package/esm2022/lib/utils/dropdown.mjs +0 -85
  225. package/esm2022/lib/utils/formControl.mjs +0 -25
  226. package/esm2022/lib/utils/timestreamFilters.mjs +0 -32
  227. package/esm2022/lib/utils/utils.mjs +0 -71
  228. package/esm2022/public-api.mjs +0 -160
  229. package/esm2022/ti-tecnologico-de-monterrey-oficial-ds-ng.mjs +0 -5
@@ -1,288 +0,0 @@
1
- import { Component, ChangeDetectionStrategy, ViewEncapsulation, HostListener, model, input, ViewChild, TemplateRef, output, computed, signal, effect, } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { DateTime, Interval } from 'luxon';
4
- import { BmbCalendarTemplateWeekComponent } from './common/bmb-calendar-template-week/bmb-calendar-template-week.component';
5
- import { BmbCalendarTemplateDayComponent } from './common/bmb-calendar-template-day/bmb-calendar-template-day.component';
6
- import { BmbCalendarTemplateMonthComponent } from './common/bmb-calendar-template-month/bmb-calendar-template-month.component';
7
- import { BmbCalendarHeaderComponent } from './common/bmb-calendar-header/bmb-calendar-header.component';
8
- import { BmbCalendarTemplateMobileComponent } from './common/bmb-calendar-template-mobile/bmb-calendar-template-mobile.component';
9
- import { BmbLoaderComponent } from '../bmb-loader/bmb-loader.component';
10
- import { getWeekDays, getMonthDays, DEFAULT_DATE_FORMAT } from './utils';
11
- import { BmbBadgeComponent } from '../bmb-badge/bmb-badge.component';
12
- import { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';
13
- import { BmbCheckboxComponent } from '../bmb-checkbox/bmb-checkbox.component';
14
- import { BmbDividerComponent } from '../bmb-divider/bmb-divider.component';
15
- import { BmbLayoutDirective } from '../../directives/bmb-layout/bmb-layout.directive';
16
- import { BmbLayoutItemDirective } from '../../directives/bmb-layout/bmb-layout-item.directive';
17
- import * as i0 from "@angular/core";
18
- import * as i1 from "../../services/calendar/calendar.service";
19
- import * as i2 from "../../services/modal/native-modal.service";
20
- import * as i3 from "../../services/translations/translations.service";
21
- import * as i4 from "@angular/common";
22
- import * as i5 from "@angular/forms";
23
- const parseFromFormat = (dateString, format) => {
24
- if (format.toLowerCase() === 'iso')
25
- return DateTime.fromISO(dateString);
26
- return DateTime.fromFormat(dateString, format);
27
- };
28
- export class BmbCalendarComponent {
29
- resize() {
30
- if (window.innerWidth < 1000) {
31
- this.view.set('day');
32
- this.isMobileHeader = true;
33
- }
34
- else {
35
- this.isMobileHeader = false;
36
- }
37
- }
38
- constructor(eventsSignal, modalService, translationsService) {
39
- this.eventsSignal = eventsSignal;
40
- this.modalService = modalService;
41
- this.translationsService = translationsService;
42
- this.view = model('week'); // internal
43
- this.filters = model({});
44
- this.calendarTimezone = input(Intl.DateTimeFormat().resolvedOptions().timeZone);
45
- this.clientTimezone = input(Intl.DateTimeFormat().resolvedOptions().timeZone);
46
- // lang = input<string>('es-MX'); // deprecated
47
- this.height = input('100%');
48
- this.startBusinessHour = input(8);
49
- this.calendarTitle = input();
50
- this.dateFormat = input(DEFAULT_DATE_FORMAT);
51
- this.events = computed(() => this.eventsSignal.getEventList());
52
- this.showFilterButton = input(false);
53
- this.disableMobileFilter = input(false);
54
- this.visibleDate = model(DateTime.now()); // internal
55
- this.currentDate = input(''); // Deprecated
56
- this.onDateChange = output();
57
- this.onClose = output();
58
- this.selectedWeek = computed(() => this.visibleDate().weekNumber);
59
- this.weekNumber = computed(() => this.visibleDate().weekNumber);
60
- this.renderWeekDays = computed(() => getWeekDays(this.visibleDate()));
61
- this.isLoading = computed(() => this.eventsSignal.getIsLoading());
62
- this.selectedEvent = null;
63
- this.isMobileHeader = false;
64
- this.orderedEvents = computed(() => {
65
- const weeks = this.events().reduce((acc, event) => {
66
- const startDate = parseFromFormat(event.start, this.dateFormat());
67
- const endDate = parseFromFormat(event.end, this.dateFormat());
68
- const interval = Interval.fromDateTimes(startDate, endDate);
69
- const week = startDate.weekNumber;
70
- const stringDate = startDate.toFormat('yyyy-MM-dd');
71
- if (!acc[week])
72
- acc[week] = {};
73
- if (!acc[week][stringDate])
74
- acc[week][stringDate] = [];
75
- acc[week][stringDate].push({ ...event, startDate, endDate, interval });
76
- if (event.calendar &&
77
- !acc.calendars?.some((cal) => cal === event.calendar)) {
78
- acc.calendars?.push(event.calendar);
79
- }
80
- return acc;
81
- }, { calendars: [] });
82
- const orderedDates = {};
83
- for (const week in weeks) {
84
- if (week === 'calendars') {
85
- orderedDates[week] = weeks[week];
86
- }
87
- else {
88
- orderedDates[week] = {};
89
- for (const date in weeks[week]) {
90
- orderedDates[week][date] = weeks[week][date].sort((a, b) => {
91
- const aDate = a.startDate ?? DateTime.invalid('Invalid Date');
92
- const bDate = b.startDate ?? DateTime.invalid('Invalid Date');
93
- return aDate <= bDate ? -1 : 1;
94
- });
95
- }
96
- }
97
- }
98
- return orderedDates;
99
- });
100
- this.filteredEvents = computed(() => {
101
- const newEvents = {};
102
- for (const week in this.orderedEvents()) {
103
- if (week !== 'calendars') {
104
- newEvents[week] = {};
105
- for (const date in this.orderedEvents()[week]) {
106
- newEvents[week][date] = this.orderedEvents()[week][date].map((event) => ({
107
- ...event,
108
- isVisible: Object.keys(this.filters()).length === 0 ||
109
- this.filters()[event.calendar || 'Default'] !== false,
110
- }));
111
- }
112
- }
113
- }
114
- newEvents.calendars = this.orderedEvents().calendars;
115
- return newEvents;
116
- });
117
- this.filterModalId = signal(null);
118
- this.calendarForm = new FormGroup({});
119
- this.currentTime = signal(DateTime.now());
120
- effect(() => {
121
- const calendars = this.filteredEvents().calendars || [];
122
- calendars.forEach((calendar) => {
123
- this.calendarForm.addControl(calendar, new FormControl(this.filters()[calendar] || true));
124
- });
125
- });
126
- }
127
- ngOnDestroy() {
128
- if (this.timerId) {
129
- clearInterval(this.timerId);
130
- }
131
- }
132
- ngAfterViewInit() {
133
- if (window.innerWidth < 1000) {
134
- this.view.set('day');
135
- this.isMobileHeader = true;
136
- }
137
- }
138
- ngOnInit() {
139
- this.view.update((value) => (window.innerWidth < 1000 ? 'day' : value));
140
- this.timerId = setInterval(() => {
141
- this.updateTime();
142
- }, 60000); // Actualiza cada 60000 milisegundos (1 minuto)
143
- }
144
- updateTime() {
145
- this.currentTime.set(DateTime.now());
146
- }
147
- handleDateChange(range, now) {
148
- this.view.set(range);
149
- let visibleDates = [];
150
- switch (range) {
151
- case 'day':
152
- visibleDates = getMonthDays(now).map((date) => date.toISO());
153
- break;
154
- case 'week':
155
- visibleDates = getWeekDays(now).map((date) => date.toISO());
156
- break;
157
- case 'month':
158
- visibleDates = getMonthDays(now).map((date) => date.toISO());
159
- break;
160
- default:
161
- break;
162
- }
163
- this.onDateChange.emit({
164
- range,
165
- now: now.toISO(),
166
- visibleDates,
167
- });
168
- }
169
- handleCurrentDateChange(newDate) {
170
- this.visibleDate.set(newDate);
171
- }
172
- getDayEvents() {
173
- const visibleDateStr = this.visibleDate().toFormat('yyyy-MM-dd');
174
- const events = this.filteredEvents()[this.selectedWeek()]?.[visibleDateStr] ?? [];
175
- return events;
176
- }
177
- handleSelectEvent(newEvent) {
178
- const { event } = newEvent;
179
- const title = event.modalTitle ?? event.title;
180
- const modalTitle = event.status === 'disabled' ? `(Cancelado) ${title}` : title;
181
- this.selectedEvent = event;
182
- const data = {
183
- title: modalTitle,
184
- subtitle: event.subtitle,
185
- content: this.detailContent,
186
- size: 'small',
187
- };
188
- this.modalService.openModal(data);
189
- }
190
- isAnEventSelected(event) {
191
- return !!event;
192
- }
193
- getHeight(height) {
194
- if (typeof height === 'number')
195
- return `${height}px`;
196
- return height;
197
- }
198
- getDuration() {
199
- if (!this.selectedEvent)
200
- return '';
201
- return `${DateTime.fromISO(this.selectedEvent.start).toFormat('hh:mm a')} - ${DateTime.fromISO(this.selectedEvent.end).toFormat('hh:mm a')}`;
202
- }
203
- handleClose() {
204
- this.onClose.emit('close');
205
- }
206
- handleShowModalFilter() {
207
- this.filterModalId.set(this.modalService.openModal({
208
- title: this.translationsService.translate('calendar.title'),
209
- subtitle: this.translationsService.translate('calendar.subtitle'),
210
- content: this.modalTemplate,
211
- size: 'x-small',
212
- closeModalClicked: (event) => this.handleFormReset(event),
213
- actions: [
214
- {
215
- buttonName: 'save',
216
- appearance: 'primary',
217
- label: this.translationsService.translate('calendar.filter_save'),
218
- action: () => this.handleApplyFilters(),
219
- },
220
- ],
221
- }));
222
- }
223
- handleFormReset(_) {
224
- for (const calendar in this.calendarForm.controls) {
225
- const value = Object.keys(this.filters()).length === 0 || !!this.filters()[calendar];
226
- this.calendarForm.controls[calendar].setValue(value);
227
- }
228
- }
229
- handleApplyFilters() {
230
- const selectedCalendars = Object.keys(this.calendarForm.controls).reduce((acc, calendar) => {
231
- acc[calendar] = this.calendarForm.controls[calendar].value;
232
- return acc;
233
- }, {});
234
- this.filters.set(selectedCalendars);
235
- this.modalService.closeModal(this.filterModalId());
236
- this.filterModalId.set(null);
237
- }
238
- getFormControl(name) {
239
- return this.calendarForm.get(name);
240
- }
241
- getCalendarName(name) {
242
- switch (name) {
243
- case 'academic':
244
- return 'Horario de clases';
245
- case 'life':
246
- return 'Vida';
247
- case 'events':
248
- return 'Eventos';
249
- case 'save_the_date':
250
- return 'Save the date';
251
- default:
252
- return name;
253
- }
254
- }
255
- getBulletClass(name) {
256
- return ['bmb_calendar-event-bullet', `bmb_calendar-event-bullet-${name}`];
257
- }
258
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BmbCalendarComponent, deps: [{ token: i1.BmbCalendarService }, { token: i2.BmbNativeModalService }, { token: i3.BmbTranslationsService }], target: i0.ɵɵFactoryTarget.Component }); }
259
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: BmbCalendarComponent, isStandalone: true, selector: "bmb-calendar", inputs: { view: { classPropertyName: "view", publicName: "view", isSignal: true, isRequired: false, transformFunction: null }, filters: { classPropertyName: "filters", publicName: "filters", isSignal: true, isRequired: false, transformFunction: null }, calendarTimezone: { classPropertyName: "calendarTimezone", publicName: "calendarTimezone", isSignal: true, isRequired: false, transformFunction: null }, clientTimezone: { classPropertyName: "clientTimezone", publicName: "clientTimezone", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, startBusinessHour: { classPropertyName: "startBusinessHour", publicName: "startBusinessHour", isSignal: true, isRequired: false, transformFunction: null }, calendarTitle: { classPropertyName: "calendarTitle", publicName: "calendarTitle", isSignal: true, isRequired: false, transformFunction: null }, dateFormat: { classPropertyName: "dateFormat", publicName: "dateFormat", isSignal: true, isRequired: false, transformFunction: null }, showFilterButton: { classPropertyName: "showFilterButton", publicName: "showFilterButton", isSignal: true, isRequired: false, transformFunction: null }, disableMobileFilter: { classPropertyName: "disableMobileFilter", publicName: "disableMobileFilter", isSignal: true, isRequired: false, transformFunction: null }, visibleDate: { classPropertyName: "visibleDate", publicName: "visibleDate", isSignal: true, isRequired: false, transformFunction: null }, currentDate: { classPropertyName: "currentDate", publicName: "currentDate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { view: "viewChange", filters: "filtersChange", visibleDate: "visibleDateChange", onDateChange: "onDateChange", onClose: "onClose" }, host: { listeners: { "window:resize": "resize($event)" } }, viewQueries: [{ propertyName: "detailContent", first: true, predicate: ["detailContent"], descendants: true, read: TemplateRef }, { propertyName: "modalTemplate", first: true, predicate: ["modalTemplate"], descendants: true }], ngImport: i0, template: "<div class=\"bmb_calendar\" [ngStyle]=\"{ height: getHeight(height()) }\">\n @if (isMobileHeader) {\n <bmb-calendar-template-mobile\n [now]=\"visibleDate()\"\n [events]=\"filteredEvents()\"\n (onCurrentDateChange)=\"handleCurrentDateChange($event)\"\n [weekDays]=\"renderWeekDays()\"\n [calendarTitle]=\"calendarTitle()\"\n [disableMobileFilter]=\"disableMobileFilter()\"\n (onClose)=\"handleClose()\"\n (showFilters)=\"handleShowModalFilter()\"\n />\n } @else {\n <bmb-calendar-header\n [weekDays]=\"renderWeekDays()\"\n [view]=\"view()\"\n [currentDate]=\"visibleDate()\"\n (onRangeChange)=\"handleDateChange($event, visibleDate())\"\n (onCurrentDateChange)=\"handleCurrentDateChange($event)\"\n [showFilterButton]=\"showFilterButton()\"\n (showFilters)=\"handleShowModalFilter()\"\n />\n }\n @switch (view()) {\n @case ('day') {\n <bmb-calendar-template-day\n [now]=\"visibleDate()\"\n [events]=\"getDayEvents()\"\n (onSelectEvent)=\"handleSelectEvent($event)\"\n [currentTime]=\"currentTime()\"\n [startBusinessHour]=\"startBusinessHour()\"\n [dateFormat]=\"dateFormat()\"\n class=\"bmb_calendar-content\"\n />\n }\n @case ('week') {\n <bmb-calendar-template-week\n [weekDays]=\"renderWeekDays()\"\n [now]=\"visibleDate()\"\n [events]=\"filteredEvents()\"\n (onSelectEvent)=\"handleSelectEvent($event)\"\n [currentTime]=\"currentTime()\"\n [startBusinessHour]=\"startBusinessHour()\"\n [selectedWeek]=\"selectedWeek()\"\n class=\"bmb_calendar-content\"\n />\n }\n @case ('month') {\n <bmb-calendar-template-month\n [now]=\"visibleDate()\"\n [events]=\"filteredEvents()\"\n (onSelectEvent)=\"handleSelectEvent($event)\"\n class=\"bmb_calendar-content\"\n />\n }\n @default {\n <bmb-calendar-template-week\n [weekDays]=\"renderWeekDays()\"\n [now]=\"visibleDate()\"\n [events]=\"filteredEvents()\"\n class=\"bmb_calendar-content\"\n />\n }\n }\n\n @if (isLoading()) {\n <div class=\"bmb_calendar-loader\">\n <bmb-loader [showInline]=\"true\" />\n </div>\n }\n</div>\n\n<ng-template #detailContent>\n @if (selectedEvent) {\n <section>\n @if (selectedEvent.tags?.length) {\n <p style=\"display: flex; flex-wrap: wrap; gap: 0.5rem\">\n @for (item of selectedEvent.tags; track $index) {\n <bmb-badge [text]=\"item.text\" [appearance]=\"item.appearance\" />\n }\n </p>\n }\n @if (selectedEvent.title) {\n <p class=\"bmb_calendar-event-modal-title\">{{ selectedEvent.title }}</p>\n }\n @if (selectedEvent.place) {\n <p class=\"bmb_calendar-event-modal-place\">{{ selectedEvent.place }}</p>\n }\n <div class=\"bmb_calendar-event-modal-duration\">{{ getDuration() }}</div>\n </section>\n }\n</ng-template>\n\n<ng-template #modalTemplate>\n <form [formGroup]=\"calendarForm\">\n @for (item of filteredEvents().calendars; track $index) {\n <div bmbLayout gapSize=\"s\" alignItems=\"center\">\n <bmb-checkbox\n bmbLayoutItem\n [isDynamicItem]=\"true\"\n [inputId]=\"'checkbox_' + item\"\n [name]=\"'checkbox_' + item\"\n [control]=\"getFormControl(item)\"\n />\n <div\n bmbLayoutItem\n [isDynamicItem]=\"true\"\n [ngClass]=\"getBulletClass(item)\"\n ></div>\n <label\n bmbLayoutItem\n [isDynamicItem]=\"true\"\n [colGrow]=\"1\"\n [htmlFor]=\"'checkbox_' + item\"\n >{{ getCalendarName(item) }}</label\n >\n </div>\n <bmb-divider type=\"dashed\"></bmb-divider>\n }\n </form>\n</ng-template>\n", styles: ["@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-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_calendar{background-color:var(--containers-background);position:relative;overflow:hidden;display:flex;flex-flow:column}@media (min-width: 62.5625rem){.bmb_calendar{padding:var(--bmb-spacing-xl);background-color:var(--containers-main)}}.bmb_calendar-event-bullet{width:.5rem;height:.5rem;border-radius:50%;margin-left:.5rem;background-color:var(--general_contrasts-50)}.bmb_calendar-event-bullet-academic{background-color:var(--general_contrasts-main-selection)}.bmb_calendar-event-bullet-life{background-color:rgb(var(--color-green-light))}.bmb_calendar-event-bullet-events{background-color:rgb(var(--color-purple-light))}.bmb_calendar-event-bullet-save_the_date{background-color:rgb(var(--color-yellow-primary))}.bmb_calendar-detail-header{display:flex;align-items:center;gap:.5rem;justify-content:center;padding:var(--bmb-spacing-n) var(--bmb-spacing-none);border-bottom:.0625rem solid var(--general_contrasts-25);position:sticky;top:0;z-index:1;background-color:var(--containers-main)}@media (max-width: 62.5rem){.bmb_calendar-detail-header{display:none}}.bmb_calendar-detail-header h2{font-family:Poppins-Regular,sans-serif;font-size:.75rem;font-weight:400}.bmb_calendar-detail-header h2:first-letter .bmb-first-letter{text-transform:capitalize}.bmb_calendar-detail-header span{font-family:Poppins-Regular,sans-serif;font-size:.75rem}.bmb_calendar-body{position:relative}.bmb_calendar-col{flex:1;height:fit-content;border-left:.0625rem solid var(--containers-main)}@media (min-width: 62.5625rem){.bmb_calendar-col{border-left:.0625rem solid var(--general_contrasts-25)}}.bmb_calendar-col-today{background-color:var(--general_contrasts-25)}.bmb_calendar-row-body{min-height:7.5rem;border-bottom:.0625rem solid var(--containers-main);position:relative}@media (min-width: 62.5625rem){.bmb_calendar-row-body{border-bottom:.0625rem solid var(--general_contrasts-25)}}.bmb_calendar-row-body:before{content:\"\";position:absolute;top:50%;left:0;width:100%;border-bottom:.0625rem dashed var(--containers-main)}@media (min-width: 62.5625rem){.bmb_calendar-row-body:before{display:none}}.bmb_calendar-week-view,.bmb_calendar-day-view{display:flex;justify-content:space-between}.bmb_calendar-loader{display:flex;height:100%;position:absolute;top:0;width:100%;left:0;justify-content:center;align-items:center}.bmb_calendar-content{flex:1 0 0%;overflow:hidden}.bmb_calendar-event-modal-title{overflow:hidden;text-overflow:ellipsis;white-space:wrap;font-family:Poppins-Regular,sans-serif;font-size:1rem}.bmb_calendar-event-modal-detail,.bmb_calendar-event-modal-place,.bmb_calendar-event-modal-duration{font-family:Poppins-Regular,sans-serif;font-size:.875rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: BmbCalendarTemplateDayComponent, selector: "bmb-calendar-template-day", inputs: ["now", "events", "currentTime", "startBusinessHour", "dateFormat"], outputs: ["onSelectEvent"] }, { kind: "component", type: BmbCalendarTemplateWeekComponent, selector: "bmb-calendar-template-week", inputs: ["weekDays", "now", "dateFormat", "events", "currentTime", "startBusinessHour", "selectedWeek"], outputs: ["onSelectEvent"] }, { kind: "component", type: BmbCalendarTemplateMonthComponent, selector: "bmb-calendar-template-month", inputs: ["now", "events"], outputs: ["onSelectEvent"] }, { kind: "component", type: BmbCalendarHeaderComponent, selector: "bmb-calendar-header", inputs: ["weekDays", "view", "currentDate", "showFilterButton"], outputs: ["onRangeChange", "onCurrentDateChange", "showFilters"] }, { kind: "component", type: BmbCalendarTemplateMobileComponent, selector: "bmb-calendar-template-mobile", inputs: ["weekDays", "now", "events", "calendarTitle", "disableMobileFilter"], outputs: ["onClose", "onCurrentDateChange", "showFilters"] }, { kind: "component", type: BmbBadgeComponent, selector: "bmb-badge", inputs: ["appearance", "text", "container"] }, { kind: "component", type: BmbLoaderComponent, selector: "bmb-loader", inputs: ["appearance", "title", "icon", "subtitle", "overlay", "isVisible", "errorState", "actions", "buttonPrimary", "buttonSecondary", "showInline"], outputs: ["onButtonPrimary", "onButtonSecondary"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: BmbCheckboxComponent, selector: "bmb-checkbox", inputs: ["name", "id", "disabled", "required", "value", "label", "labelPosition", "ariaDescribedby", "ariaLabel", "ariaLabelledby", "errorMessage", "helperMessage", "customValidation", "control", "checked", "showError", "indeterminate", "inputId"], outputs: ["controlChange", "checkedChange", "showErrorChange", "indeterminateChange", "inputIdChange", "change"] }, { kind: "component", type: BmbDividerComponent, selector: "bmb-divider", inputs: ["type"] }, { kind: "directive", type: BmbLayoutDirective, selector: "[bmbLayout]", inputs: ["gapSize", "margin", "dynamicCols", "justify", "alignItems", "isContainerQuery"] }, { kind: "directive", type: BmbLayoutItemDirective, selector: "[bmbLayoutItem]", inputs: ["colSm", "colLg", "marginLeft", "marginRight", "colGrow", "isDynamicItem"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
260
- }
261
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BmbCalendarComponent, decorators: [{
262
- type: Component,
263
- args: [{ selector: 'bmb-calendar', standalone: true, imports: [
264
- CommonModule,
265
- BmbCalendarTemplateDayComponent,
266
- BmbCalendarTemplateWeekComponent,
267
- BmbCalendarTemplateMonthComponent,
268
- BmbCalendarHeaderComponent,
269
- BmbCalendarTemplateMobileComponent,
270
- BmbBadgeComponent,
271
- BmbLoaderComponent,
272
- ReactiveFormsModule,
273
- BmbCheckboxComponent,
274
- BmbDividerComponent,
275
- BmbLayoutDirective,
276
- BmbLayoutItemDirective,
277
- ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"bmb_calendar\" [ngStyle]=\"{ height: getHeight(height()) }\">\n @if (isMobileHeader) {\n <bmb-calendar-template-mobile\n [now]=\"visibleDate()\"\n [events]=\"filteredEvents()\"\n (onCurrentDateChange)=\"handleCurrentDateChange($event)\"\n [weekDays]=\"renderWeekDays()\"\n [calendarTitle]=\"calendarTitle()\"\n [disableMobileFilter]=\"disableMobileFilter()\"\n (onClose)=\"handleClose()\"\n (showFilters)=\"handleShowModalFilter()\"\n />\n } @else {\n <bmb-calendar-header\n [weekDays]=\"renderWeekDays()\"\n [view]=\"view()\"\n [currentDate]=\"visibleDate()\"\n (onRangeChange)=\"handleDateChange($event, visibleDate())\"\n (onCurrentDateChange)=\"handleCurrentDateChange($event)\"\n [showFilterButton]=\"showFilterButton()\"\n (showFilters)=\"handleShowModalFilter()\"\n />\n }\n @switch (view()) {\n @case ('day') {\n <bmb-calendar-template-day\n [now]=\"visibleDate()\"\n [events]=\"getDayEvents()\"\n (onSelectEvent)=\"handleSelectEvent($event)\"\n [currentTime]=\"currentTime()\"\n [startBusinessHour]=\"startBusinessHour()\"\n [dateFormat]=\"dateFormat()\"\n class=\"bmb_calendar-content\"\n />\n }\n @case ('week') {\n <bmb-calendar-template-week\n [weekDays]=\"renderWeekDays()\"\n [now]=\"visibleDate()\"\n [events]=\"filteredEvents()\"\n (onSelectEvent)=\"handleSelectEvent($event)\"\n [currentTime]=\"currentTime()\"\n [startBusinessHour]=\"startBusinessHour()\"\n [selectedWeek]=\"selectedWeek()\"\n class=\"bmb_calendar-content\"\n />\n }\n @case ('month') {\n <bmb-calendar-template-month\n [now]=\"visibleDate()\"\n [events]=\"filteredEvents()\"\n (onSelectEvent)=\"handleSelectEvent($event)\"\n class=\"bmb_calendar-content\"\n />\n }\n @default {\n <bmb-calendar-template-week\n [weekDays]=\"renderWeekDays()\"\n [now]=\"visibleDate()\"\n [events]=\"filteredEvents()\"\n class=\"bmb_calendar-content\"\n />\n }\n }\n\n @if (isLoading()) {\n <div class=\"bmb_calendar-loader\">\n <bmb-loader [showInline]=\"true\" />\n </div>\n }\n</div>\n\n<ng-template #detailContent>\n @if (selectedEvent) {\n <section>\n @if (selectedEvent.tags?.length) {\n <p style=\"display: flex; flex-wrap: wrap; gap: 0.5rem\">\n @for (item of selectedEvent.tags; track $index) {\n <bmb-badge [text]=\"item.text\" [appearance]=\"item.appearance\" />\n }\n </p>\n }\n @if (selectedEvent.title) {\n <p class=\"bmb_calendar-event-modal-title\">{{ selectedEvent.title }}</p>\n }\n @if (selectedEvent.place) {\n <p class=\"bmb_calendar-event-modal-place\">{{ selectedEvent.place }}</p>\n }\n <div class=\"bmb_calendar-event-modal-duration\">{{ getDuration() }}</div>\n </section>\n }\n</ng-template>\n\n<ng-template #modalTemplate>\n <form [formGroup]=\"calendarForm\">\n @for (item of filteredEvents().calendars; track $index) {\n <div bmbLayout gapSize=\"s\" alignItems=\"center\">\n <bmb-checkbox\n bmbLayoutItem\n [isDynamicItem]=\"true\"\n [inputId]=\"'checkbox_' + item\"\n [name]=\"'checkbox_' + item\"\n [control]=\"getFormControl(item)\"\n />\n <div\n bmbLayoutItem\n [isDynamicItem]=\"true\"\n [ngClass]=\"getBulletClass(item)\"\n ></div>\n <label\n bmbLayoutItem\n [isDynamicItem]=\"true\"\n [colGrow]=\"1\"\n [htmlFor]=\"'checkbox_' + item\"\n >{{ getCalendarName(item) }}</label\n >\n </div>\n <bmb-divider type=\"dashed\"></bmb-divider>\n }\n </form>\n</ng-template>\n", styles: ["@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-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_calendar{background-color:var(--containers-background);position:relative;overflow:hidden;display:flex;flex-flow:column}@media (min-width: 62.5625rem){.bmb_calendar{padding:var(--bmb-spacing-xl);background-color:var(--containers-main)}}.bmb_calendar-event-bullet{width:.5rem;height:.5rem;border-radius:50%;margin-left:.5rem;background-color:var(--general_contrasts-50)}.bmb_calendar-event-bullet-academic{background-color:var(--general_contrasts-main-selection)}.bmb_calendar-event-bullet-life{background-color:rgb(var(--color-green-light))}.bmb_calendar-event-bullet-events{background-color:rgb(var(--color-purple-light))}.bmb_calendar-event-bullet-save_the_date{background-color:rgb(var(--color-yellow-primary))}.bmb_calendar-detail-header{display:flex;align-items:center;gap:.5rem;justify-content:center;padding:var(--bmb-spacing-n) var(--bmb-spacing-none);border-bottom:.0625rem solid var(--general_contrasts-25);position:sticky;top:0;z-index:1;background-color:var(--containers-main)}@media (max-width: 62.5rem){.bmb_calendar-detail-header{display:none}}.bmb_calendar-detail-header h2{font-family:Poppins-Regular,sans-serif;font-size:.75rem;font-weight:400}.bmb_calendar-detail-header h2:first-letter .bmb-first-letter{text-transform:capitalize}.bmb_calendar-detail-header span{font-family:Poppins-Regular,sans-serif;font-size:.75rem}.bmb_calendar-body{position:relative}.bmb_calendar-col{flex:1;height:fit-content;border-left:.0625rem solid var(--containers-main)}@media (min-width: 62.5625rem){.bmb_calendar-col{border-left:.0625rem solid var(--general_contrasts-25)}}.bmb_calendar-col-today{background-color:var(--general_contrasts-25)}.bmb_calendar-row-body{min-height:7.5rem;border-bottom:.0625rem solid var(--containers-main);position:relative}@media (min-width: 62.5625rem){.bmb_calendar-row-body{border-bottom:.0625rem solid var(--general_contrasts-25)}}.bmb_calendar-row-body:before{content:\"\";position:absolute;top:50%;left:0;width:100%;border-bottom:.0625rem dashed var(--containers-main)}@media (min-width: 62.5625rem){.bmb_calendar-row-body:before{display:none}}.bmb_calendar-week-view,.bmb_calendar-day-view{display:flex;justify-content:space-between}.bmb_calendar-loader{display:flex;height:100%;position:absolute;top:0;width:100%;left:0;justify-content:center;align-items:center}.bmb_calendar-content{flex:1 0 0%;overflow:hidden}.bmb_calendar-event-modal-title{overflow:hidden;text-overflow:ellipsis;white-space:wrap;font-family:Poppins-Regular,sans-serif;font-size:1rem}.bmb_calendar-event-modal-detail,.bmb_calendar-event-modal-place,.bmb_calendar-event-modal-duration{font-family:Poppins-Regular,sans-serif;font-size:.875rem}\n"] }]
278
- }], ctorParameters: () => [{ type: i1.BmbCalendarService }, { type: i2.BmbNativeModalService }, { type: i3.BmbTranslationsService }], propDecorators: { detailContent: [{
279
- type: ViewChild,
280
- args: ['detailContent', { read: TemplateRef }]
281
- }], modalTemplate: [{
282
- type: ViewChild,
283
- args: ['modalTemplate']
284
- }], resize: [{
285
- type: HostListener,
286
- args: ['window:resize', ['$event']]
287
- }] } });
288
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm1iLWNhbGVuZGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLW5nL3NyYy9saWIvY29tcG9uZW50cy9ibWItY2FsZW5kYXIvYm1iLWNhbGVuZGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLW5nL3NyYy9saWIvY29tcG9uZW50cy9ibWItY2FsZW5kYXIvYm1iLWNhbGVuZGFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixZQUFZLEVBQ1osS0FBSyxFQUNMLEtBQUssRUFDTCxTQUFTLEVBQ1QsV0FBVyxFQUNYLE1BQU0sRUFDTixRQUFRLEVBQ1IsTUFBTSxFQUdOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sMEVBQTBFLENBQUM7QUFDNUgsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sd0VBQXdFLENBQUM7QUFDekgsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sNEVBQTRFLENBQUM7QUFDL0gsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDeEcsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sOEVBQThFLENBQUM7QUFDbEksT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFPeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFHekUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1B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LFdBQVcsRUFBRTtnQkFFckIsYUFBYTtzQkFBeEMsU0FBUzt1QkFBQyxlQUFlO2dCQUdsQixNQUFNO3NCQURiLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIEhvc3RMaXN0ZW5lcixcbiAgbW9kZWwsXG4gIGlucHV0LFxuICBWaWV3Q2hpbGQsXG4gIFRlbXBsYXRlUmVmLFxuICBvdXRwdXQsXG4gIGNvbXB1dGVkLFxuICBzaWduYWwsXG4gIE9uSW5pdCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgZWZmZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEYXRlVGltZSwgSW50ZXJ2YWwgfSBmcm9tICdsdXhvbic7XG5pbXBvcnQgeyBCbWJDYWxlbmRhclRlbXBsYXRlV2Vla0NvbXBvbmVudCB9IGZyb20gJy4vY29tbW9uL2JtYi1jYWxlbmRhci10ZW1wbGF0ZS13ZWVrL2JtYi1jYWxlbmRhci10ZW1wbGF0ZS13ZWVrLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCbWJDYWxlbmRhclRlbXBsYXRlRGF5Q29tcG9uZW50IH0gZnJvbSAnLi9jb21tb24vYm1iLWNhbGVuZGFyLXRlbXBsYXRlLWRheS9ibWItY2FsZW5kYXItdGVtcGxhdGUtZGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCbWJDYWxlbmRhclRlbXBsYXRlTW9udGhDb21wb25lbnQgfSBmcm9tICcuL2NvbW1vbi9ibWItY2FsZW5kYXItdGVtcGxhdGUtbW9udGgvYm1iLWNhbGVuZGFyLXRlbXBsYXRlLW1vbnRoLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCbWJDYWxlbmRhckhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vY29tbW9uL2JtYi1jYWxlbmRhci1oZWFkZXIvYm1iLWNhbGVuZGFyLWhlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQm1iQ2FsZW5kYXJUZW1wbGF0ZU1vYmlsZUNvbXBvbmVudCB9IGZyb20gJy4vY29tbW9uL2JtYi1jYWxlbmRhci10ZW1wbGF0ZS1tb2JpbGUvYm1iLWNhbGVuZGFyLXRlbXBsYXRlLW1vYmlsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQm1iTG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vYm1iLWxvYWRlci9ibWItbG9hZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBJQm1iQ2FsZW5kYXJFdmVudCxcbiAgSUJtYkNhbGVuZGFyRXZlbnRDbGljayxcbiAgSUJtYkNhbGVuZGFyVmlldyxcbiAgSUJtYlBhcnNlZERhdGVzLFxufSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGdldFdlZWtEYXlzLCBnZXRNb250aERheXMsIERFRkFVTFRfREFURV9GT1JNQVQgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IEJtYkNhbGVuZGFyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NhbGVuZGFyL2NhbGVuZGFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQm1iTmF0aXZlTW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbW9kYWwvbmF0aXZlLW1vZGFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgQm1iQmFkZ2VDb21wb25lbnQgfSBmcm9tICcuLi9ibWItYmFkZ2UvYm1iLWJhZGdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQm1iQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuLi9ibWItY2hlY2tib3gvYm1iLWNoZWNrYm94LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCbWJEaXZpZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vYm1iLWRpdmlkZXIvYm1iLWRpdmlkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEJtYkxheW91dERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvYm1iLWxheW91dC9ibWItbGF5b3V0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBCbWJMYXlvdXRJdGVtRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9ibWItbGF5b3V0L2JtYi1sYXlvdXQtaXRlbS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSUJtYk5hdGl2ZU1vZGFsIH0gZnJvbSAnLi4vYm1iLW1vZGFsL2JtYi1tb2RhbC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQm1iVHJhbnNsYXRpb25zU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0aW9ucy90cmFuc2xhdGlvbnMuc2VydmljZSc7XG5cbmNvbnN0IHBhcnNlRnJvbUZvcm1hdCA9IChkYXRlU3RyaW5nOiBzdHJpbmcsIGZvcm1hdDogc3RyaW5nKTogRGF0ZVRpbWUgPT4ge1xuICBpZiAoZm9ybWF0LnRvTG93ZXJDYXNlKCkgPT09ICdpc28nKSByZXR1cm4gRGF0ZVRpbWUuZnJvbUlTTyhkYXRlU3RyaW5nKTtcblxuICByZXR1cm4gRGF0ZVRpbWUuZnJvbUZvcm1hdChkYXRlU3RyaW5nLCBmb3JtYXQpO1xufTtcblxuZXhwb3J0IHtcbiAgSUJtYkNhbGVuZGFyRXZlbnQsXG4gIElCbWJDYWxlbmRhckV2ZW50Q2xpY2ssXG4gIElCbWJFdmVudFR5cGUsXG59IGZyb20gJy4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdibWItY2FsZW5kYXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEJtYkNhbGVuZGFyVGVtcGxhdGVEYXlDb21wb25lbnQsXG4gICAgQm1iQ2FsZW5kYXJUZW1wbGF0ZVdlZWtDb21wb25lbnQsXG4gICAgQm1iQ2FsZW5kYXJUZW1wbGF0ZU1vbnRoQ29tcG9uZW50LFxuICAgIEJtYkNhbGVuZGFySGVhZGVyQ29tcG9uZW50LFxuICAgIEJtYkNhbGVuZGFyVGVtcGxhdGVNb2JpbGVDb21wb25lbnQsXG4gICAgQm1iQmFkZ2VDb21wb25lbnQsXG4gICAgQm1iTG9hZGVyQ29tcG9uZW50LFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgQm1iQ2hlY2tib3hDb21wb25lbnQsXG4gICAgQm1iRGl2aWRlckNvbXBvbmVudCxcbiAgICBCbWJMYXlvdXREaXJlY3RpdmUsXG4gICAgQm1iTGF5b3V0SXRlbURpcmVjdGl2ZSxcbiAgXSxcbiAgc3R5bGVVcmw6ICcuL2JtYi1jYWxlbmRhci5jb21wb25lbnQuc2NzcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9ibWItY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgQm1iQ2FsZW5kYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICB2aWV3ID0gbW9kZWw8SUJtYkNhbGVuZGFyVmlldz4oJ3dlZWsnKTsgLy8gaW50ZXJuYWxcbiAgZmlsdGVycyA9IG1vZGVsPHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9Pih7fSk7XG4gIGNhbGVuZGFyVGltZXpvbmUgPSBpbnB1dDxzdHJpbmc+KFxuICAgIEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS50aW1lWm9uZSxcbiAgKTtcbiAgY2xpZW50VGltZXpvbmUgPSBpbnB1dDxzdHJpbmc+KFxuICAgIEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS50aW1lWm9uZSxcbiAgKTtcbiAgLy8gbGFuZyA9IGlucHV0PHN0cmluZz4oJ2VzLU1YJyk7IC8vIGRlcHJlY2F0ZWRcbiAgaGVpZ2h0ID0gaW5wdXQ8bnVtYmVyIHwgc3RyaW5nPignMTAwJScpO1xuICBzdGFydEJ1c2luZXNzSG91ciA9IGlucHV0PG51bWJlcj4oOCk7XG4gIGNhbGVuZGFyVGl0bGUgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIGRhdGVGb3JtYXQgPSBpbnB1dDxzdHJpbmc+KERFRkFVTFRfREFURV9GT1JNQVQpO1xuICBldmVudHMgPSBjb21wdXRlZDxJQm1iQ2FsZW5kYXJFdmVudFtdPigoKSA9PlxuICAgIHRoaXMuZXZlbnRzU2lnbmFsLmdldEV2ZW50TGlzdCgpLFxuICApO1xuICBzaG93RmlsdGVyQnV0dG9uID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICBkaXNhYmxlTW9iaWxlRmlsdGVyID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICB2aXNpYmxlRGF0ZSA9IG1vZGVsPERhdGVUaW1lPihEYXRlVGltZS5ub3coKSk7IC8vIGludGVybmFsXG5cbiAgY3VycmVudERhdGUgPSBpbnB1dDxzdHJpbmc+KCcnKTsgLy8gRGVwcmVjYXRlZFxuXG4gIG9uRGF0ZUNoYW5nZSA9IG91dHB1dDxhbnk+KCk7XG4gIG9uQ2xvc2UgPSBvdXRwdXQ8YW55PigpO1xuXG4gIHNlbGVjdGVkV2VlayA9IGNvbXB1dGVkKCgpID0+IHRoaXMudmlzaWJsZURhdGUoKS53ZWVrTnVtYmVyKTtcbiAgd2Vla051bWJlciA9IGNvbXB1dGVkKCgpID0+IHRoaXMudmlzaWJsZURhdGUoKS53ZWVrTnVtYmVyKTtcbiAgcmVuZGVyV2Vla0RheXMgPSBjb21wdXRlZCgoKSA9PiBnZXRXZWVrRGF5cyh0aGlzLnZpc2libGVEYXRlKCkpKTtcbiAgaXNMb2FkaW5nID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5ldmVudHNTaWduYWwuZ2V0SXNMb2FkaW5nKCkpO1xuICBzZWxlY3RlZEV2ZW50OiBJQm1iQ2FsZW5kYXJFdmVudCB8IG51bGwgPSBudWxsO1xuICBpc01vYmlsZUhlYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBvcmRlcmVkRXZlbnRzID0gY29tcHV0ZWQ8SUJtYlBhcnNlZERhdGVzPigoKSA9PiB7XG4gICAgY29uc3Qgd2Vla3MgPSB0aGlzLmV2ZW50cygpLnJlZHVjZShcbiAgICAgIChhY2M6IElCbWJQYXJzZWREYXRlcywgZXZlbnQpID0+IHtcbiAgICAgICAgY29uc3Qgc3RhcnREYXRlID0gcGFyc2VGcm9tRm9ybWF0KGV2ZW50LnN0YXJ0LCB0aGlzLmRhdGVGb3JtYXQoKSk7XG4gICAgICAgIGNvbnN0IGVuZERhdGUgPSBwYXJzZUZyb21Gb3JtYXQoZXZlbnQuZW5kLCB0aGlzLmRhdGVGb3JtYXQoKSk7XG4gICAgICAgIGNvbnN0IGludGVydmFsID0gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhzdGFydERhdGUsIGVuZERhdGUpO1xuICAgICAgICBjb25zdCB3ZWVrID0gc3RhcnREYXRlLndlZWtOdW1iZXI7XG4gICAgICAgIGNvbnN0IHN0cmluZ0RhdGUgPSBzdGFydERhdGUudG9Gb3JtYXQoJ3l5eXktTU0tZGQnKTtcblxuICAgICAgICBpZiAoIWFjY1t3ZWVrXSkgYWNjW3dlZWtdID0ge307XG4gICAgICAgIGlmICghYWNjW3dlZWtdW3N0cmluZ0RhdGVdKSBhY2Nbd2Vla11bc3RyaW5nRGF0ZV0gPSBbXTtcbiAgICAgICAgYWNjW3dlZWtdW3N0cmluZ0RhdGVdLnB1c2goeyAuLi5ldmVudCwgc3RhcnREYXRlLCBlbmREYXRlLCBpbnRlcnZhbCB9KTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgZXZlbnQuY2FsZW5kYXIgJiZcbiAgICAgICAgICAhYWNjLmNhbGVuZGFycz8uc29tZSgoY2FsKSA9PiBjYWwgPT09IGV2ZW50LmNhbGVuZGFyKVxuICAgICAgICApIHtcbiAgICAgICAgICBhY2MuY2FsZW5kYXJzPy5wdXNoKGV2ZW50LmNhbGVuZGFyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LFxuICAgICAgeyBjYWxlbmRhcnM6IFtdIH0gYXMgSUJtYlBhcnNlZERhdGVzLFxuICAgICk7XG5cbiAgICBjb25zdCBvcmRlcmVkRGF0ZXMgPSB7fSBhcyBJQm1iUGFyc2VkRGF0ZXM7XG5cbiAgICBmb3IgKGNvbnN0IHdlZWsgaW4gd2Vla3MpIHtcbiAgICAgIGlmICh3ZWVrID09PSAnY2FsZW5kYXJzJykge1xuICAgICAgICBvcmRlcmVkRGF0ZXNbd2Vla10gPSB3ZWVrc1t3ZWVrXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9yZGVyZWREYXRlc1t3ZWVrXSA9IHt9O1xuXG4gICAgICAgIGZvciAoY29uc3QgZGF0ZSBpbiB3ZWVrc1t3ZWVrXSkge1xuICAgICAgICAgIG9yZGVyZWREYXRlc1t3ZWVrXVtkYXRlXSA9IHdlZWtzW3dlZWtdW2RhdGVdLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFEYXRlID0gYS5zdGFydERhdGUgPz8gRGF0ZVRpbWUuaW52YWxpZCgnSW52YWxpZCBEYXRlJyk7XG4gICAgICAgICAgICBjb25zdCBiRGF0ZSA9IGIuc3RhcnREYXRlID8/IERhdGVUaW1lLmludmFsaWQoJ0ludmFsaWQgRGF0ZScpO1xuICAgICAgICAgICAgcmV0dXJuIGFEYXRlIDw9IGJEYXRlID8gLTEgOiAxO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG9yZGVyZWREYXRlcztcbiAgfSk7XG4gIGZpbHRlcmVkRXZlbnRzID0gY29tcHV0ZWQ8SUJtYlBhcnNlZERhdGVzPigoKSA9PiB7XG4gICAgY29uc3QgbmV3RXZlbnRzID0ge30gYXMgSUJtYlBhcnNlZERhdGVzO1xuICAgIGZvciAoY29uc3Qgd2VlayBpbiB0aGlzLm9yZGVyZWRFdmVudHMoKSkge1xuICAgICAgaWYgKHdlZWsgIT09ICdjYWxlbmRhcnMnKSB7XG4gICAgICAgIG5ld0V2ZW50c1t3ZWVrXSA9IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IGRhdGUgaW4gdGhpcy5vcmRlcmVkRXZlbnRzKClbd2Vla10pIHtcbiAgICAgICAgICBuZXdFdmVudHNbd2Vla11bZGF0ZV0gPSB0aGlzLm9yZGVyZWRFdmVudHMoKVt3ZWVrXVtkYXRlXS5tYXAoXG4gICAgICAgICAgICAoZXZlbnQpID0+ICh7XG4gICAgICAgICAgICAgIC4uLmV2ZW50LFxuICAgICAgICAgICAgICBpc1Zpc2libGU6XG4gICAgICAgICAgICAgICAgT2JqZWN0LmtleXModGhpcy5maWx0ZXJzKCkpLmxlbmd0aCA9PT0gMCB8fFxuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVycygpW2V2ZW50LmNhbGVuZGFyIHx8ICdEZWZhdWx0J10gIT09IGZhbHNlLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIG5ld0V2ZW50cy5jYWxlbmRhcnMgPSB0aGlzLm9yZGVyZWRFdmVudHMoKS5jYWxlbmRhcnM7XG5cbiAgICByZXR1cm4gbmV3RXZlbnRzO1xuICB9KTtcbiAgZmlsdGVyTW9kYWxJZCA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAgY2FsZW5kYXJGb3JtOiBGb3JtR3JvdXA8eyBba2V5OiBzdHJpbmddOiBGb3JtQ29udHJvbDxhbnk+IH0+ID0gbmV3IEZvcm1Hcm91cChcbiAgICB7fSxcbiAgKTtcblxuICBAVmlld0NoaWxkKCdkZXRhaWxDb250ZW50JywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBkZXRhaWxDb250ZW50PzogVGVtcGxhdGVSZWY8YW55PjtcbiAgQFZpZXdDaGlsZCgnbW9kYWxUZW1wbGF0ZScpIG1vZGFsVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxuICBwcml2YXRlIHJlc2l6ZSgpIHtcbiAgICBpZiAod2luZG93LmlubmVyV2lkdGggPCAxMDAwKSB7XG4gICAgICB0aGlzLnZpZXcuc2V0KCdkYXknKTtcbiAgICAgIHRoaXMuaXNNb2JpbGVIZWFkZXIgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzTW9iaWxlSGVhZGVyID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBldmVudHNTaWduYWw6IEJtYkNhbGVuZGFyU2VydmljZSxcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogQm1iTmF0aXZlTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRpb25zU2VydmljZTogQm1iVHJhbnNsYXRpb25zU2VydmljZSxcbiAgKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGNhbGVuZGFycyA9IHRoaXMuZmlsdGVyZWRFdmVudHMoKS5jYWxlbmRhcnMgfHwgW107XG4gICAgICBjYWxlbmRhcnMuZm9yRWFjaCgoY2FsZW5kYXIpID0+IHtcbiAgICAgICAgdGhpcy5jYWxlbmRhckZvcm0uYWRkQ29udHJvbChcbiAgICAgICAgICBjYWxlbmRhcixcbiAgICAgICAgICBuZXcgRm9ybUNvbnRyb2wodGhpcy5maWx0ZXJzKClbY2FsZW5kYXJdIHx8IHRydWUpLFxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBjdXJyZW50VGltZSA9IHNpZ25hbDxEYXRlVGltZT4oRGF0ZVRpbWUubm93KCkpO1xuICBwcml2YXRlIHRpbWVySWQ6IGFueTtcblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy50aW1lcklkKSB7XG4gICAgICBjbGVhckludGVydmFsKHRoaXMudGltZXJJZCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8IDEwMDApIHtcbiAgICAgIHRoaXMudmlldy5zZXQoJ2RheScpO1xuICAgICAgdGhpcy5pc01vYmlsZUhlYWRlciA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy52aWV3LnVwZGF0ZSgodmFsdWUpID0+ICh3aW5kb3cuaW5uZXJXaWR0aCA8IDEwMDAgPyAnZGF5JyA6IHZhbHVlKSk7XG5cbiAgICB0aGlzLnRpbWVySWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZVRpbWUoKTtcbiAgICB9LCA2MDAwMCk7IC8vIEFjdHVhbGl6YSBjYWRhIDYwMDAwIG1pbGlzZWd1bmRvcyAoMSBtaW51dG8pXG4gIH1cblxuICB1cGRhdGVUaW1lKCkge1xuICAgIHRoaXMuY3VycmVudFRpbWUuc2V0KERhdGVUaW1lLm5vdygpKTtcbiAgfVxuXG4gIGhhbmRsZURhdGVDaGFuZ2UocmFuZ2U6IElCbWJDYWxlbmRhclZpZXcsIG5vdzogRGF0ZVRpbWUpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXcuc2V0KHJhbmdlKTtcbiAgICBsZXQgdmlzaWJsZURhdGVzOiAoc3RyaW5nIHwgbnVsbClbXSA9IFtdO1xuXG4gICAgc3dpdGNoIChyYW5nZSkge1xuICAgICAgY2FzZSAnZGF5JzpcbiAgICAgICAgdmlzaWJsZURhdGVzID0gZ2V0TW9udGhEYXlzKG5vdykubWFwKChkYXRlKSA9PiBkYXRlLnRvSVNPKCkpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnd2Vlayc6XG4gICAgICAgIHZpc2libGVEYXRlcyA9IGdldFdlZWtEYXlzKG5vdykubWFwKChkYXRlKSA9PiBkYXRlLnRvSVNPKCkpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICB2aXNpYmxlRGF0ZXMgPSBnZXRNb250aERheXMobm93KS5tYXAoKGRhdGUpID0+IGRhdGUudG9JU08oKSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICB0aGlzLm9uRGF0ZUNoYW5nZS5lbWl0KHtcbiAgICAgIHJhbmdlLFxuICAgICAgbm93OiBub3cudG9JU08oKSxcbiAgICAgIHZpc2libGVEYXRlcyxcbiAgICB9KTtcbiAgfVxuXG4gIGhhbmRsZUN1cnJlbnREYXRlQ2hhbmdlKG5ld0RhdGU6IERhdGVUaW1lKTogdm9pZCB7XG4gICAgdGhpcy52aXNpYmxlRGF0ZS5zZXQobmV3RGF0ZSk7XG4gIH1cblxuICBnZXREYXlFdmVudHMoKTogSUJtYkNhbGVuZGFyRXZlbnRbXSB7XG4gICAgY29uc3QgdmlzaWJsZURhdGVTdHIgPSB0aGlzLnZpc2libGVEYXRlKCkudG9Gb3JtYXQoJ3l5eXktTU0tZGQnKTtcbiAgICBjb25zdCBldmVudHMgPVxuICAgICAgdGhpcy5maWx0ZXJlZEV2ZW50cygpW3RoaXMuc2VsZWN0ZWRXZWVrKCldPy5bdmlzaWJsZURhdGVTdHJdID8/IFtdO1xuICAgIHJldHVybiBldmVudHM7XG4gIH1cblxuICBoYW5kbGVTZWxlY3RFdmVudChuZXdFdmVudDogSUJtYkNhbGVuZGFyRXZlbnRDbGljayk6IHZvaWQge1xuICAgIGNvbnN0IHsgZXZlbnQgfSA9IG5ld0V2ZW50O1xuICAgIGNvbnN0IHRpdGxlID0gZXZlbnQubW9kYWxUaXRsZSA/PyBldmVudC50aXRsZTtcbiAgICBjb25zdCBtb2RhbFRpdGxlID1cbiAgICAgIGV2ZW50LnN0YXR1cyA9PT0gJ2Rpc2FibGVkJyA/IGAoQ2FuY2VsYWRvKSAke3RpdGxlfWAgOiB0aXRsZTtcblxuICAgIHRoaXMuc2VsZWN0ZWRFdmVudCA9IGV2ZW50O1xuXG4gICAgY29uc3QgZGF0YTogSUJtYk5hdGl2ZU1vZGFsID0ge1xuICAgICAgdGl0bGU6IG1vZGFsVGl0bGUsXG4gICAgICBzdWJ0aXRsZTogZXZlbnQuc3VidGl0bGUsXG4gICAgICBjb250ZW50OiB0aGlzLmRldGFpbENvbnRlbnQsXG4gICAgICBzaXplOiAnc21hbGwnLFxuICAgIH07XG4gICAgdGhpcy5tb2RhbFNlcnZpY2Uub3Blbk1vZGFsKGRhdGEpO1xuICB9XG5cbiAgaXNBbkV2ZW50U2VsZWN0ZWQoZXZlbnQ6IElCbWJDYWxlbmRhckV2ZW50Q2xpY2sgfCBudWxsKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhZXZlbnQ7XG4gIH1cblxuICBnZXRIZWlnaHQoaGVpZ2h0OiBzdHJpbmcgfCBudW1iZXIpOiBzdHJpbmcge1xuICAgIGlmICh0eXBlb2YgaGVpZ2h0ID09PSAnbnVtYmVyJykgcmV0dXJuIGAke2hlaWdodH1weGA7XG5cbiAgICByZXR1cm4gaGVpZ2h0O1xuICB9XG5cbiAgZ2V0RHVyYXRpb24oKSB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkRXZlbnQpIHJldHVybiAnJztcbiAgICByZXR1cm4gYCR7RGF0ZVRpbWUuZnJvbUlTTyh0aGlzLnNlbGVjdGVkRXZlbnQuc3RhcnQpLnRvRm9ybWF0KCdoaDptbSBhJyl9IC0gJHtEYXRlVGltZS5mcm9tSVNPKHRoaXMuc2VsZWN0ZWRFdmVudC5lbmQpLnRvRm9ybWF0KCdoaDptbSBhJyl9YDtcbiAgfVxuXG4gIGhhbmRsZUNsb3NlKCkge1xuICAgIHRoaXMub25DbG9zZS5lbWl0KCdjbG9zZScpO1xuICB9XG5cbiAgaGFuZGxlU2hvd01vZGFsRmlsdGVyKCkge1xuICAgIHRoaXMuZmlsdGVyTW9kYWxJZC5zZXQoXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuTW9kYWwoe1xuICAgICAgICB0aXRsZTogdGhpcy50cmFuc2xhdGlvbnNTZXJ2aWNlLnRyYW5zbGF0ZSgnY2FsZW5kYXIudGl0bGUnKSxcbiAgICAgICAgc3VidGl0bGU6IHRoaXMudHJhbnNsYXRpb25zU2VydmljZS50cmFuc2xhdGUoJ2NhbGVuZGFyLnN1YnRpdGxlJyksXG4gICAgICAgIGNvbnRlbnQ6IHRoaXMubW9kYWxUZW1wbGF0ZSxcbiAgICAgICAgc2l6ZTogJ3gtc21hbGwnLFxuICAgICAgICBjbG9zZU1vZGFsQ2xpY2tlZDogKGV2ZW50OiB1bmtub3duKSA9PiB0aGlzLmhhbmRsZUZvcm1SZXNldChldmVudCksXG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBidXR0b25OYW1lOiAnc2F2ZScsXG4gICAgICAgICAgICBhcHBlYXJhbmNlOiAncHJpbWFyeScsXG4gICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGlvbnNTZXJ2aWNlLnRyYW5zbGF0ZSgnY2FsZW5kYXIuZmlsdGVyX3NhdmUnKSxcbiAgICAgICAgICAgIGFjdGlvbjogKCkgPT4gdGhpcy5oYW5kbGVBcHBseUZpbHRlcnMoKSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIGhhbmRsZUZvcm1SZXNldChfOiBhbnkpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGNhbGVuZGFyIGluIHRoaXMuY2FsZW5kYXJGb3JtLmNvbnRyb2xzKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9XG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuZmlsdGVycygpKS5sZW5ndGggPT09IDAgfHwgISF0aGlzLmZpbHRlcnMoKVtjYWxlbmRhcl07XG4gICAgICB0aGlzLmNhbGVuZGFyRm9ybS5jb250cm9sc1tjYWxlbmRhcl0uc2V0VmFsdWUodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUFwcGx5RmlsdGVycygpOiB2b2lkIHtcbiAgICBjb25zdCBzZWxlY3RlZENhbGVuZGFycyA9IE9iamVjdC5rZXlzKHRoaXMuY2FsZW5kYXJGb3JtLmNvbnRyb2xzKS5yZWR1Y2U8e1xuICAgICAgW2tleTogc3RyaW5nXTogYm9vbGVhbjtcbiAgICB9PigoYWNjLCBjYWxlbmRhcikgPT4ge1xuICAgICAgYWNjW2NhbGVuZGFyXSA9IHRoaXMuY2FsZW5kYXJGb3JtLmNvbnRyb2xzW2NhbGVuZGFyXS52YWx1ZTtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30pO1xuICAgIHRoaXMuZmlsdGVycy5zZXQoc2VsZWN0ZWRDYWxlbmRhcnMpO1xuICAgIHRoaXMubW9kYWxTZXJ2aWNlLmNsb3NlTW9kYWwodGhpcy5maWx0ZXJNb2RhbElkKCkgYXMgc3RyaW5nKTtcbiAgICB0aGlzLmZpbHRlck1vZGFsSWQuc2V0KG51bGwpO1xuICB9XG5cbiAgZ2V0Rm9ybUNvbnRyb2wobmFtZTogc3RyaW5nKTogRm9ybUNvbnRyb2wge1xuICAgIHJldHVybiB0aGlzLmNhbGVuZGFyRm9ybS5nZXQobmFtZSkgYXMgRm9ybUNvbnRyb2w7XG4gIH1cblxuICBnZXRDYWxlbmRhck5hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKG5hbWUpIHtcbiAgICAgIGNhc2UgJ2FjYWRlbWljJzpcbiAgICAgICAgcmV0dXJuICdIb3JhcmlvIGRlIGNsYXNlcyc7XG4gICAgICBjYXNlICdsaWZlJzpcbiAgICAgICAgcmV0dXJuICdWaWRhJztcbiAgICAgIGNhc2UgJ2V2ZW50cyc6XG4gICAgICAgIHJldHVybiAnRXZlbnRvcyc7XG4gICAgICBjYXNlICdzYXZlX3RoZV9kYXRlJzpcbiAgICAgICAgcmV0dXJuICdTYXZlIHRoZSBkYXRlJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBuYW1lO1xuICAgIH1cbiAgfVxuXG4gIGdldEJ1bGxldENsYXNzKG5hbWU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gWydibWJfY2FsZW5kYXItZXZlbnQtYnVsbGV0JywgYGJtYl9jYWxlbmRhci1ldmVudC1idWxsZXQtJHtuYW1lfWBdO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYm1iX2NhbGVuZGFyXCIgW25nU3R5bGVdPVwieyBoZWlnaHQ6IGdldEhlaWdodChoZWlnaHQoKSkgfVwiPlxuICBAaWYgKGlzTW9iaWxlSGVhZGVyKSB7XG4gICAgPGJtYi1jYWxlbmRhci10ZW1wbGF0ZS1tb2JpbGVcbiAgICAgIFtub3ddPVwidmlzaWJsZURhdGUoKVwiXG4gICAgICBbZXZlbnRzXT1cImZpbHRlcmVkRXZlbnRzKClcIlxuICAgICAgKG9uQ3VycmVudERhdGVDaGFuZ2UpPVwiaGFuZGxlQ3VycmVudERhdGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICBbd2Vla0RheXNdPVwicmVuZGVyV2Vla0RheXMoKVwiXG4gICAgICBbY2FsZW5kYXJUaXRsZV09XCJjYWxlbmRhclRpdGxlKClcIlxuICAgICAgW2Rpc2FibGVNb2JpbGVGaWx0ZXJdPVwiZGlzYWJsZU1vYmlsZUZpbHRlcigpXCJcbiAgICAgIChvbkNsb3NlKT1cImhhbmRsZUNsb3NlKClcIlxuICAgICAgKHNob3dGaWx0ZXJzKT1cImhhbmRsZVNob3dNb2RhbEZpbHRlcigpXCJcbiAgICAvPlxuICB9IEBlbHNlIHtcbiAgICA8Ym1iLWNhbGVuZGFyLWhlYWRlclxuICAgICAgW3dlZWtEYXlzXT1cInJlbmRlcldlZWtEYXlzKClcIlxuICAgICAgW3ZpZXddPVwidmlldygpXCJcbiAgICAgIFtjdXJyZW50RGF0ZV09XCJ2aXNpYmxlRGF0ZSgpXCJcbiAgICAgIChvblJhbmdlQ2hhbmdlKT1cImhhbmRsZURhdGVDaGFuZ2UoJGV2ZW50LCB2aXNpYmxlRGF0ZSgpKVwiXG4gICAgICAob25DdXJyZW50RGF0ZUNoYW5nZSk9XCJoYW5kbGVDdXJyZW50RGF0ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgIFtzaG93RmlsdGVyQnV0dG9uXT1cInNob3dGaWx0ZXJCdXR0b24oKVwiXG4gICAgICAoc2hvd0ZpbHRlcnMpPVwiaGFuZGxlU2hvd01vZGFsRmlsdGVyKClcIlxuICAgIC8+XG4gIH1cbiAgQHN3aXRjaCAodmlldygpKSB7XG4gICAgQGNhc2UgKCdkYXknKSB7XG4gICAgICA8Ym1iLWNhbGVuZGFyLXRlbXBsYXRlLWRheVxuICAgICAgICBbbm93XT1cInZpc2libGVEYXRlKClcIlxuICAgICAgICBbZXZlbnRzXT1cImdldERheUV2ZW50cygpXCJcbiAgICAgICAgKG9uU2VsZWN0RXZlbnQpPVwiaGFuZGxlU2VsZWN0RXZlbnQoJGV2ZW50KVwiXG4gICAgICAgIFtjdXJyZW50VGltZV09XCJjdXJyZW50VGltZSgpXCJcbiAgICAgICAgW3N0YXJ0QnVzaW5lc3NIb3VyXT1cInN0YXJ0QnVzaW5lc3NIb3VyKClcIlxuICAgICAgICBbZGF0ZUZvcm1hdF09XCJkYXRlRm9ybWF0KClcIlxuICAgICAgICBjbGFzcz1cImJtYl9jYWxlbmRhci1jb250ZW50XCJcbiAgICAgIC8+XG4gICAgfVxuICAgIEBjYXNlICgnd2VlaycpIHtcbiAgICAgIDxibWItY2FsZW5kYXItdGVtcGxhdGUtd2Vla1xuICAgICAgICBbd2Vla0RheXNdPVwicmVuZGVyV2Vla0RheXMoKVwiXG4gICAgICAgIFtub3ddPVwidmlzaWJsZURhdGUoKVwiXG4gICAgICAgIFtldmVudHNdPVwiZmlsdGVyZWRFdmVudHMoKVwiXG4gICAgICAgIChvblNlbGVjdEV2ZW50KT1cImhhbmRsZVNlbGVjdEV2ZW50KCRldmVudClcIlxuICAgICAgICBbY3VycmVudFRpbWVdPVwiY3VycmVudFRpbWUoKVwiXG4gICAgICAgIFtzdGFydEJ1c2luZXNzSG91cl09XCJzdGFydEJ1c2luZXNzSG91cigpXCJcbiAgICAgICAgW3NlbGVjdGVkV2Vla109XCJzZWxlY3RlZFdlZWsoKVwiXG4gICAgICAgIGNsYXNzPVwiYm1iX2NhbGVuZGFyLWNvbnRlbnRcIlxuICAgICAgLz5cbiAgICB9XG4gICAgQGNhc2UgKCdtb250aCcpIHtcbiAgICAgIDxibWItY2FsZW5kYXItdGVtcGxhdGUtbW9udGhcbiAgICAgICAgW25vd109XCJ2aXNpYmxlRGF0ZSgpXCJcbiAgICAgICAgW2V2ZW50c109XCJmaWx0ZXJlZEV2ZW50cygpXCJcbiAgICAgICAgKG9uU2VsZWN0RXZlbnQpPVwiaGFuZGxlU2VsZWN0RXZlbnQoJGV2ZW50KVwiXG4gICAgICAgIGNsYXNzPVwiYm1iX2NhbGVuZGFyLWNvbnRlbnRcIlxuICAgICAgLz5cbiAgICB9XG4gICAgQGRlZmF1bHQge1xuICAgICAgPGJtYi1jYWxlbmRhci10ZW1wbGF0ZS13ZWVrXG4gICAgICAgIFt3ZWVrRGF5c109XCJyZW5kZXJXZWVrRGF5cygpXCJcbiAgICAgICAgW25vd109XCJ2aXNpYmxlRGF0ZSgpXCJcbiAgICAgICAgW2V2ZW50c109XCJmaWx0ZXJlZEV2ZW50cygpXCJcbiAgICAgICAgY2xhc3M9XCJibWJfY2FsZW5kYXItY29udGVudFwiXG4gICAgICAvPlxuICAgIH1cbiAgfVxuXG4gIEBpZiAoaXNMb2FkaW5nKCkpIHtcbiAgICA8ZGl2IGNsYXNzPVwiYm1iX2NhbGVuZGFyLWxvYWRlclwiPlxuICAgICAgPGJtYi1sb2FkZXIgW3Nob3dJbmxpbmVdPVwidHJ1ZVwiIC8+XG4gICAgPC9kaXY+XG4gIH1cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2RldGFpbENvbnRlbnQ+XG4gIEBpZiAoc2VsZWN0ZWRFdmVudCkge1xuICAgIDxzZWN0aW9uPlxuICAgICAgQGlmIChzZWxlY3RlZEV2ZW50LnRhZ3M/Lmxlbmd0aCkge1xuICAgICAgICA8cCBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGZsZXgtd3JhcDogd3JhcDsgZ2FwOiAwLjVyZW1cIj5cbiAgICAgICAgICBAZm9yIChpdGVtIG9mIHNlbGVjdGVkRXZlbnQudGFnczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICA8Ym1iLWJhZGdlIFt0ZXh0XT1cIml0ZW0udGV4dFwiIFthcHBlYXJhbmNlXT1cIml0ZW0uYXBwZWFyYW5jZVwiIC8+XG4gICAgICAgICAgfVxuICAgICAgICA8L3A+XG4gICAgICB9XG4gICAgICBAaWYgKHNlbGVjdGVkRXZlbnQudGl0bGUpIHtcbiAgICAgICAgPHAgY2xhc3M9XCJibWJfY2FsZW5kYXItZXZlbnQtbW9kYWwtdGl0bGVcIj57eyBzZWxlY3RlZEV2ZW50LnRpdGxlIH19PC9wPlxuICAgICAgfVxuICAgICAgQGlmIChzZWxlY3RlZEV2ZW50LnBsYWNlKSB7XG4gICAgICAgIDxwIGNsYXNzPVwiYm1iX2NhbGVuZGFyLWV2ZW50LW1vZGFsLXBsYWNlXCI+e3sgc2VsZWN0ZWRFdmVudC5wbGFjZSB9fTwvcD5cbiAgICAgIH1cbiAgICAgIDxkaXYgY2xhc3M9XCJibWJfY2FsZW5kYXItZXZlbnQtbW9kYWwtZHVyYXRpb25cIj57eyBnZXREdXJhdGlvbigpIH19PC9kaXY+XG4gICAgPC9zZWN0aW9uPlxuICB9XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI21vZGFsVGVtcGxhdGU+XG4gIDxmb3JtIFtmb3JtR3JvdXBdPVwiY2FsZW5kYXJGb3JtXCI+XG4gICAgQGZvciAoaXRlbSBvZiBmaWx0ZXJlZEV2ZW50cygpLmNhbGVuZGFyczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICA8ZGl2IGJtYkxheW91dCBnYXBTaXplPVwic1wiIGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAgPGJtYi1jaGVja2JveFxuICAgICAgICAgIGJtYkxheW91dEl0ZW1cbiAgICAgICAgICBbaXNEeW5hbWljSXRlbV09XCJ0cnVlXCJcbiAgICAgICAgICBbaW5wdXRJZF09XCInY2hlY2tib3hfJyArIGl0ZW1cIlxuICAgICAgICAgIFtuYW1lXT1cIidjaGVja2JveF8nICsgaXRlbVwiXG4gICAgICAgICAgW2NvbnRyb2xdPVwiZ2V0Rm9ybUNvbnRyb2woaXRlbSlcIlxuICAgICAgICAvPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgYm1iTGF5b3V0SXRlbVxuICAgICAgICAgIFtpc0R5bmFtaWNJdGVtXT1cInRydWVcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cImdldEJ1bGxldENsYXNzKGl0ZW0pXCJcbiAgICAgICAgPjwvZGl2PlxuICAgICAgICA8bGFiZWxcbiAgICAgICAgICBibWJMYXlvdXRJdGVtXG4gICAgICAgICAgW2lzRHluYW1pY0l0ZW1dPVwidHJ1ZVwiXG4gICAgICAgICAgW2NvbEdyb3ddPVwiMVwiXG4gICAgICAgICAgW2h0bWxGb3JdPVwiJ2NoZWNrYm94XycgKyBpdGVtXCJcbiAgICAgICAgICA+e3sgZ2V0Q2FsZW5kYXJOYW1lKGl0ZW0pIH19PC9sYWJlbFxuICAgICAgICA+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxibWItZGl2aWRlciB0eXBlPVwiZGFzaGVkXCI+PC9ibWItZGl2aWRlcj5cbiAgICB9XG4gIDwvZm9ybT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -1,101 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { Component, ChangeDetectionStrategy, ViewEncapsulation, input, output, computed, } from '@angular/core';
3
- import { BmbIconComponent } from '../../../bmb-icon/bmb-icon.component';
4
- import { DateTime } from 'luxon';
5
- import { BmbButtonGroupDirective } from '../../../../directives/bmb-button-group/bmb-button-group.directive';
6
- import { BmbLayoutDirective } from '../../../../directives/bmb-layout/bmb-layout.directive';
7
- import { BmbLayoutItemDirective } from '../../../../directives/bmb-layout/bmb-layout-item.directive';
8
- import { BmbActionIconComponent } from '../../../bmb-action-icon/bmb-action-icon.component';
9
- import { TranslatePipe } from '../../../../pipes/translations';
10
- import * as i0 from "@angular/core";
11
- import * as i1 from "../../../../services/translations/translations.service";
12
- import * as i2 from "@angular/common";
13
- export class BmbCalendarHeaderComponent {
14
- constructor(translationsService) {
15
- this.translationsService = translationsService;
16
- this.weekDays = input([]);
17
- this.view = input('week');
18
- this.currentDate = input(DateTime.now());
19
- this.showFilterButton = input(false);
20
- this.onRangeChange = output();
21
- this.onCurrentDateChange = output();
22
- this.showFilters = output();
23
- this.locale = computed(() => this.translationsService.getCurrentLanguage());
24
- }
25
- getTitle() {
26
- if (this.view() === 'week') {
27
- return `${this.weekDays()[0].setLocale(this.locale()).toFormat('LLL dd')} -
28
- ${this.weekDays()[6].setLocale(this.locale()).toFormat('LLL dd')}`;
29
- }
30
- if (this.view() === 'day') {
31
- return this.currentDate().setLocale(this.locale()).toLocaleString({
32
- month: 'long',
33
- day: 'numeric',
34
- year: 'numeric',
35
- });
36
- }
37
- return this.currentDate()
38
- .setLocale(this.locale())
39
- .toLocaleString({ month: 'long' });
40
- }
41
- handleRangeChange(event) {
42
- if (event === 'month') {
43
- const newDate = DateTime.fromObject({
44
- month: this.currentDate().month,
45
- year: this.currentDate().year,
46
- day: 1,
47
- });
48
- this.onCurrentDateChange.emit(newDate);
49
- }
50
- this.onRangeChange.emit(event);
51
- }
52
- handleChangeDate(event) {
53
- const modifyDate = ({ config, date }) => {
54
- if (event === '+') {
55
- this.onCurrentDateChange.emit(date.plus(config));
56
- }
57
- else {
58
- this.onCurrentDateChange.emit(date.minus(config));
59
- }
60
- };
61
- switch (this.view()) {
62
- case 'day':
63
- modifyDate({ config: { days: 1 }, date: this.currentDate() });
64
- break;
65
- case 'week':
66
- modifyDate({ config: { days: 7 }, date: this.currentDate() });
67
- break;
68
- case 'month':
69
- const newDate = DateTime.fromObject({
70
- month: this.currentDate().month,
71
- year: this.currentDate().year,
72
- day: 1,
73
- });
74
- modifyDate({ config: { month: 1 }, date: newDate });
75
- break;
76
- default:
77
- break;
78
- }
79
- }
80
- goToToday() {
81
- this.onCurrentDateChange.emit(DateTime.now());
82
- }
83
- handleShowFilters() {
84
- this.showFilters.emit();
85
- }
86
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BmbCalendarHeaderComponent, deps: [{ token: i1.BmbTranslationsService }], target: i0.ɵɵFactoryTarget.Component }); }
87
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: BmbCalendarHeaderComponent, isStandalone: true, selector: "bmb-calendar-header", inputs: { weekDays: { classPropertyName: "weekDays", publicName: "weekDays", isSignal: true, isRequired: false, transformFunction: null }, view: { classPropertyName: "view", publicName: "view", isSignal: true, isRequired: false, transformFunction: null }, currentDate: { classPropertyName: "currentDate", publicName: "currentDate", isSignal: true, isRequired: false, transformFunction: null }, showFilterButton: { classPropertyName: "showFilterButton", publicName: "showFilterButton", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onRangeChange: "onRangeChange", onCurrentDateChange: "onCurrentDateChange", showFilters: "showFilters" }, ngImport: i0, template: "<section\n class=\"bmb_calendar-header\"\n bmbLayout\n [dynamicCols]=\"true\"\n margin=\"none\"\n alignItems=\"center\"\n>\n <div\n bmbLayoutItem\n [isDynamicItem]=\"true\"\n bmbButtonGroup\n appearance=\"transparent\"\n size=\"large\"\n >\n <button type=\"button\" (click)=\"goToToday()\">\n {{ 'calendar.today' | translate }}\n </button>\n <button type=\"button\" (click)=\"handleChangeDate('-')\">\n <bmb-icon [icon]=\"'arrow_back_ios'\" />\n </button>\n <button type=\"button\" (click)=\"handleChangeDate('+')\">\n <bmb-icon [icon]=\"'arrow_forward_ios'\" />\n </button>\n </div>\n <h1\n bmbLayoutItem\n [isDynamicItem]=\"true\"\n [colGrow]=\"1\"\n class=\"bmb_calendar-header-title\"\n >\n {{ getTitle() }}\n </h1>\n <div bmbButtonGroup appearance=\"secondary-outlined\" size=\"large\">\n <button\n type=\"button\"\n (click)=\"handleRangeChange('day')\"\n [ngClass]=\"{ 'bmb_button-selected': view() === 'day' }\"\n >\n {{ 'calendar.day' | translate }}\n </button>\n <button\n type=\"button\"\n (click)=\"handleRangeChange('week')\"\n [ngClass]=\"{ 'bmb_button-selected': view() === 'week' }\"\n >\n {{ 'calendar.week' | translate }}\n </button>\n <button\n type=\"button\"\n (click)=\"handleRangeChange('month')\"\n [ngClass]=\"{ 'bmb_button-selected': view() === 'month' }\"\n >\n {{ 'calendar.month' | translate }}\n </button>\n </div>\n @if (showFilterButton()) {\n <bmb-action-icon\n [icon]=\"'tune'\"\n (buttonClick)=\"handleShowFilters()\"\n [iconSize]=\"24\"\n ></bmb-action-icon>\n }\n</section>\n", styles: ["@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-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_calendar-header{padding-bottom:1rem}@media (max-width: 62.5rem){.bmb_calendar-header{display:none}}.bmb_calendar-header .bmb_button-group-transparent>*{color:var(--general_contrasts-100)}.bmb_calendar-header-title{font-family:Poppins-Bold,sans-serif;font-size:1.25rem;text-align:center;text-transform:capitalize}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: BmbIconComponent, selector: "bmb-icon", inputs: ["icon", "materialIcon", "styleIcon", "isFill", "fontWeight", "size", "alt", "dotNotification"] }, { kind: "directive", type: BmbButtonGroupDirective, selector: "[bmbButtonGroup]", inputs: ["appearance", "size"] }, { kind: "directive", type: BmbLayoutDirective, selector: "[bmbLayout]", inputs: ["gapSize", "margin", "dynamicCols", "justify", "alignItems", "isContainerQuery"] }, { kind: "directive", type: BmbLayoutItemDirective, selector: "[bmbLayoutItem]", inputs: ["colSm", "colLg", "marginLeft", "marginRight", "colGrow", "isDynamicItem"] }, { 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: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
88
- }
89
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BmbCalendarHeaderComponent, decorators: [{
90
- type: Component,
91
- args: [{ selector: 'bmb-calendar-header', standalone: true, imports: [
92
- CommonModule,
93
- BmbIconComponent,
94
- BmbButtonGroupDirective,
95
- BmbLayoutDirective,
96
- BmbLayoutItemDirective,
97
- BmbActionIconComponent,
98
- TranslatePipe,
99
- ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<section\n class=\"bmb_calendar-header\"\n bmbLayout\n [dynamicCols]=\"true\"\n margin=\"none\"\n alignItems=\"center\"\n>\n <div\n bmbLayoutItem\n [isDynamicItem]=\"true\"\n bmbButtonGroup\n appearance=\"transparent\"\n size=\"large\"\n >\n <button type=\"button\" (click)=\"goToToday()\">\n {{ 'calendar.today' | translate }}\n </button>\n <button type=\"button\" (click)=\"handleChangeDate('-')\">\n <bmb-icon [icon]=\"'arrow_back_ios'\" />\n </button>\n <button type=\"button\" (click)=\"handleChangeDate('+')\">\n <bmb-icon [icon]=\"'arrow_forward_ios'\" />\n </button>\n </div>\n <h1\n bmbLayoutItem\n [isDynamicItem]=\"true\"\n [colGrow]=\"1\"\n class=\"bmb_calendar-header-title\"\n >\n {{ getTitle() }}\n </h1>\n <div bmbButtonGroup appearance=\"secondary-outlined\" size=\"large\">\n <button\n type=\"button\"\n (click)=\"handleRangeChange('day')\"\n [ngClass]=\"{ 'bmb_button-selected': view() === 'day' }\"\n >\n {{ 'calendar.day' | translate }}\n </button>\n <button\n type=\"button\"\n (click)=\"handleRangeChange('week')\"\n [ngClass]=\"{ 'bmb_button-selected': view() === 'week' }\"\n >\n {{ 'calendar.week' | translate }}\n </button>\n <button\n type=\"button\"\n (click)=\"handleRangeChange('month')\"\n [ngClass]=\"{ 'bmb_button-selected': view() === 'month' }\"\n >\n {{ 'calendar.month' | translate }}\n </button>\n </div>\n @if (showFilterButton()) {\n <bmb-action-icon\n [icon]=\"'tune'\"\n (buttonClick)=\"handleShowFilters()\"\n [iconSize]=\"24\"\n ></bmb-action-icon>\n }\n</section>\n", styles: ["@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-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_calendar-header{padding-bottom:1rem}@media (max-width: 62.5rem){.bmb_calendar-header{display:none}}.bmb_calendar-header .bmb_button-group-transparent>*{color:var(--general_contrasts-100)}.bmb_calendar-header-title{font-family:Poppins-Bold,sans-serif;font-size:1.25rem;text-align:center;text-transform:capitalize}\n"] }]
100
- }], ctorParameters: () => [{ type: i1.BmbTranslationsService }] });
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm1iLWNhbGVuZGFyLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kcy1uZy9zcmMvbGliL2NvbXBvbmVudHMvYm1iLWNhbGVuZGFyL2NvbW1vbi9ibWItY2FsZW5kYXItaGVhZGVyL2JtYi1jYWxlbmRhci1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHMtbmcvc3JjL2xpYi9jb21wb25lbnRzL2JtYi1jYWxlbmRhci9jb21tb24vYm1iLWNhbGVuZGFyLWhlYWRlci9ibWItY2FsZW5kYXItaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsU0FBUyxFQUNULHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsS0FBSyxFQUNMLE1BQU0sRUFDTixRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDeEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUVqQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztBQUM3RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUM1RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUNyRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUM1RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7QUFvQi9ELE1BQU0sT0FBTywwQkFBMEI7SUFVckMsWUFBb0IsbUJBQTJDO1FBQTNDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBd0I7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Q1AsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLHVCQUF1Qjt3QkFDdkIsa0JBQWtCO3dCQUNsQixzQkFBc0I7d0JBQ3RCLHNCQUFzQjt3QkFDdEIsYUFBYTtxQkFDZCxtQkFHZ0IsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgY29tcHV0ZWQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQm1iSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2JtYi1pY29uL2JtYi1pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXRlVGltZSB9IGZyb20gJ2x1eG9uJztcbmltcG9ydCB7IElCbWJDYWxlbmRhclZpZXcgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBCbWJCdXR0b25Hcm91cERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uLy4uL2RpcmVjdGl2ZXMvYm1iLWJ1dHRvbi1ncm91cC9ibWItYnV0dG9uLWdyb3VwLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBCbWJMYXlvdXREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi8uLi9kaXJlY3RpdmVzL2JtYi1sYXlvdXQvYm1iLWxheW91dC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQm1iTGF5b3V0SXRlbURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uLy4uL2RpcmVjdGl2ZXMvYm1iLWxheW91dC9ibWItbGF5b3V0LWl0ZW0uZGlyZWN0aXZlJztcbmltcG9ydCB7IEJtYkFjdGlvbkljb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9ibWItYWN0aW9uLWljb24vYm1iLWFjdGlvbi1pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vcGlwZXMvdHJhbnNsYXRpb25zJztcbmltcG9ydCB7IEJtYlRyYW5zbGF0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGlvbnMvdHJhbnNsYXRpb25zLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdibWItY2FsZW5kYXItaGVhZGVyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBCbWJJY29uQ29tcG9uZW50LFxuICAgIEJtYkJ1dHRvbkdyb3VwRGlyZWN0aXZlLFxuICAgIEJtYkxheW91dERpcmVjdGl2ZSxcbiAgICBCbWJMYXlvdXRJdGVtRGlyZWN0aXZlLFxuICAgIEJtYkFjdGlvbkljb25Db21wb25lbnQsXG4gICAgVHJhbnNsYXRlUGlwZSxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2JtYi1jYWxlbmRhci1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vYm1iLWNhbGVuZGFyLWhlYWRlci5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBCbWJDYWxlbmRhckhlYWRlckNvbXBvbmVudCB7XG4gIHdlZWtEYXlzID0gaW5wdXQ8RGF0ZVRpbWVbXT4oW10pO1xuICB2aWV3ID0gaW5wdXQ8SUJtYkNhbGVuZGFyVmlldz4oJ3dlZWsnKTtcbiAgY3VycmVudERhdGUgPSBpbnB1dDxEYXRlVGltZT4oRGF0ZVRpbWUubm93KCkpO1xuICBzaG93RmlsdGVyQnV0dG9uID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIG9uUmFuZ2VDaGFuZ2UgPSBvdXRwdXQ8YW55PigpO1xuICBvbkN1cnJlbnREYXRlQ2hhbmdlID0gb3V0cHV0PERhdGVUaW1lPigpO1xuICBzaG93RmlsdGVycyA9IG91dHB1dDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdHJhbnNsYXRpb25zU2VydmljZTogQm1iVHJhbnNsYXRpb25zU2VydmljZSkge31cblxuICBsb2NhbGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnRyYW5zbGF0aW9uc1NlcnZpY2UuZ2V0Q3VycmVudExhbmd1YWdlKCkpO1xuXG4gIGdldFRpdGxlKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMudmlldygpID09PSAnd2VlaycpIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLndlZWtEYXlzKClbMF0uc2V0TG9jYWxlKHRoaXMubG9jYWxlKCkpLnRvRm9ybWF0KCdMTEwgZGQnKX0gLVxuICAgICAgICAke3RoaXMud2Vla0RheXMoKVs2XS5zZXRMb2NhbGUodGhpcy5sb2NhbGUoKSkudG9Gb3JtYXQoJ0xMTCBkZCcpfWA7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudmlldygpID09PSAnZGF5Jykge1xuICAgICAgcmV0dXJuIHRoaXMuY3VycmVudERhdGUoKS5zZXRMb2NhbGUodGhpcy5sb2NhbGUoKSkudG9Mb2NhbGVTdHJpbmcoe1xuICAgICAgICBtb250aDogJ2xvbmcnLFxuICAgICAgICBkYXk6ICdudW1lcmljJyxcbiAgICAgICAgeWVhcjogJ251bWVyaWMnLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY3VycmVudERhdGUoKVxuICAgICAgLnNldExvY2FsZSh0aGlzLmxvY2FsZSgpKVxuICAgICAgLnRvTG9jYWxlU3RyaW5nKHsgbW9udGg6ICdsb25nJyB9KTtcbiAgfVxuXG4gIGhhbmRsZVJhbmdlQ2hhbmdlKGV2ZW50OiBJQm1iQ2FsZW5kYXJWaWV3KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50ID09PSAnbW9udGgnKSB7XG4gICAgICBjb25zdCBuZXdEYXRlID0gRGF0ZVRpbWUuZnJvbU9iamVjdCh7XG4gICAgICAgIG1vbnRoOiB0aGlzLmN1cnJlbnREYXRlKCkubW9udGgsXG4gICAgICAgIHllYXI6IHRoaXMuY3VycmVudERhdGUoKS55ZWFyLFxuICAgICAgICBkYXk6IDEsXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5vbkN1cnJlbnREYXRlQ2hhbmdlLmVtaXQobmV3RGF0ZSk7XG4gICAgfVxuICAgIHRoaXMub25SYW5nZUNoYW5nZS5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIGhhbmRsZUNoYW5nZURhdGUoZXZlbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IG1vZGlmeURhdGUgPSAoeyBjb25maWcsIGRhdGUgfTogYW55KSA9PiB7XG4gICAgICBpZiAoZXZlbnQgPT09ICcrJykge1xuICAgICAgICB0aGlzLm9uQ3VycmVudERhdGVDaGFuZ2UuZW1pdChkYXRlLnBsdXMoY29uZmlnKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9uQ3VycmVudERhdGVDaGFuZ2UuZW1pdChkYXRlLm1pbnVzKGNvbmZpZykpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBzd2l0Y2ggKHRoaXMudmlldygpKSB7XG4gICAgICBjYXNlICdkYXknOlxuICAgICAgICBtb2RpZnlEYXRlKHsgY29uZmlnOiB7IGRheXM6IDEgfSwgZGF0ZTogdGhpcy5jdXJyZW50RGF0ZSgpIH0pO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnd2Vlayc6XG4gICAgICAgIG1vZGlmeURhdGUoeyBjb25maWc6IHsgZGF5czogNyB9LCBkYXRlOiB0aGlzLmN1cnJlbnREYXRlKCkgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICBjb25zdCBuZXdEYXRlID0gRGF0ZVRpbWUuZnJvbU9iamVjdCh7XG4gICAgICAgICAgbW9udGg6IHRoaXMuY3VycmVudERhdGUoKS5tb250aCxcbiAgICAgICAgICB5ZWFyOiB0aGlzLmN1cnJlbnREYXRlKCkueWVhcixcbiAgICAgICAgICBkYXk6IDEsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIG1vZGlmeURhdGUoeyBjb25maWc6IHsgbW9udGg6IDEgfSwgZGF0ZTogbmV3RGF0ZSB9KTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGdvVG9Ub2RheSgpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ3VycmVudERhdGVDaGFuZ2UuZW1pdChEYXRlVGltZS5ub3coKSk7XG4gIH1cblxuICBoYW5kbGVTaG93RmlsdGVycygpIHtcbiAgICB0aGlzLnNob3dGaWx0ZXJzLmVtaXQoKTtcbiAgfVxufVxuIiwiPHNlY3Rpb25cbiAgY2xhc3M9XCJibWJfY2FsZW5kYXItaGVhZGVyXCJcbiAgYm1iTGF5b3V0XG4gIFtkeW5hbWljQ29sc109XCJ0cnVlXCJcbiAgbWFyZ2luPVwibm9uZVwiXG4gIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuPlxuICA8ZGl2XG4gICAgYm1iTGF5b3V0SXRlbVxuICAgIFtpc0R5bmFtaWNJdGVtXT1cInRydWVcIlxuICAgIGJtYkJ1dHRvbkdyb3VwXG4gICAgYXBwZWFyYW5jZT1cInRyYW5zcGFyZW50XCJcbiAgICBzaXplPVwibGFyZ2VcIlxuICA+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImdvVG9Ub2RheSgpXCI+XG4gICAgICB7eyAnY2FsZW5kYXIudG9kYXknIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImhhbmRsZUNoYW5nZURhdGUoJy0nKVwiPlxuICAgICAgPGJtYi1pY29uIFtpY29uXT1cIidhcnJvd19iYWNrX2lvcydcIiAvPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJoYW5kbGVDaGFuZ2VEYXRlKCcrJylcIj5cbiAgICAgIDxibWItaWNvbiBbaWNvbl09XCInYXJyb3dfZm9yd2FyZF9pb3MnXCIgLz5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxoMVxuICAgIGJtYkxheW91dEl0ZW1cbiAgICBbaXNEeW5hbWljSXRlbV09XCJ0cnVlXCJcbiAgICBbY29sR3Jvd109XCIxXCJcbiAgICBjbGFzcz1cImJtYl9jYWxlbmRhci1oZWFkZXItdGl0bGVcIlxuICA+XG4gICAge3sgZ2V0VGl0bGUoKSB9fVxuICA8L2gxPlxuICA8ZGl2IGJtYkJ1dHRvbkdyb3VwIGFwcGVhcmFuY2U9XCJzZWNvbmRhcnktb3V0bGluZWRcIiBzaXplPVwibGFyZ2VcIj5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIChjbGljayk9XCJoYW5kbGVSYW5nZUNoYW5nZSgnZGF5JylcIlxuICAgICAgW25nQ2xhc3NdPVwieyAnYm1iX2J1dHRvbi1zZWxlY3RlZCc6IHZpZXcoKSA9PT0gJ2RheScgfVwiXG4gICAgPlxuICAgICAge3sgJ2NhbGVuZGFyLmRheScgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIChjbGljayk9XCJoYW5kbGVSYW5nZUNoYW5nZSgnd2VlaycpXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgJ2JtYl9idXR0b24tc2VsZWN0ZWQnOiB2aWV3KCkgPT09ICd3ZWVrJyB9XCJcbiAgICA+XG4gICAgICB7eyAnY2FsZW5kYXIud2VlaycgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIChjbGljayk9XCJoYW5kbGVSYW5nZUNoYW5nZSgnbW9udGgnKVwiXG4gICAgICBbbmdDbGFzc109XCJ7ICdibWJfYnV0dG9uLXNlbGVjdGVkJzogdmlldygpID09PSAnbW9udGgnIH1cIlxuICAgID5cbiAgICAgIHt7ICdjYWxlbmRhci5tb250aCcgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIEBpZiAoc2hvd0ZpbHRlckJ1dHRvbigpKSB7XG4gICAgPGJtYi1hY3Rpb24taWNvblxuICAgICAgW2ljb25dPVwiJ3R1bmUnXCJcbiAgICAgIChidXR0b25DbGljayk9XCJoYW5kbGVTaG93RmlsdGVycygpXCJcbiAgICAgIFtpY29uU2l6ZV09XCIyNFwiXG4gICAgPjwvYm1iLWFjdGlvbi1pY29uPlxuICB9XG48L3NlY3Rpb24+XG4iXX0=